{"id":16769010,"url":"https://github.com/unix4ever/imvue","last_synced_at":"2025-04-10T19:33:05.336Z","repository":{"id":88314796,"uuid":"193399128","full_name":"Unix4ever/imvue","owner":"Unix4ever","description":"Declarative reactive ImGui bindings inspired by Vue.js","archived":false,"fork":false,"pushed_at":"2020-05-11T17:28:43.000Z","size":1439,"stargazers_count":13,"open_issues_count":6,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T17:11:26.537Z","etag":null,"topics":["c-plus-plus","dear-imgui","lua","ui","xml"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Unix4ever.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-23T21:56:15.000Z","updated_at":"2024-12-06T15:12:30.000Z","dependencies_parsed_at":"2023-07-05T06:30:40.619Z","dependency_job_id":null,"html_url":"https://github.com/Unix4ever/imvue","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Unix4ever%2Fimvue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Unix4ever%2Fimvue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Unix4ever%2Fimvue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Unix4ever%2Fimvue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Unix4ever","download_url":"https://codeload.github.com/Unix4ever/imvue/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248281416,"owners_count":21077423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","dear-imgui","lua","ui","xml"],"created_at":"2024-10-13T06:13:06.393Z","updated_at":"2025-04-10T19:33:05.321Z","avatar_url":"https://github.com/Unix4ever.png","language":"C++","readme":"# ImVue\n\nDeclarative reactive ImGui bindings inspired by Vue.js.\nAlmost no overhead, but relies on stl and c++11.\n\n[![Build Status](https://travis-ci.org/Unix4ever/imvue.svg?branch=master)](https://travis-ci.org/Unix4ever/imvue)\n\nSimple component template may look like that:\n\n```\n\u003ctemplate\u003e\n  \u003cwindow name=\"test\"\u003e\n    \u003ccolor-button desc-id=\"testing\" size=\"20,20\" col=\"0.6,0.9,0.6,1.0\"/\u003e\n    \u003ctext-unformatted\u003eButton was clicked {{self.counter}} times.\u003c/text-unformatted\u003e\n    \u003cbutton v-on:click=\"self:testing()\"\u003eclick me\u003c/button\u003e\n  \u003c/window\u003e\n\u003c/template\u003e\n\n\u003cscript\u003e\n  return ImVue.new({\n    testing = function(self)\n      self.counter = self.counter + 1\n    end,\n    data = function(self)\n      return {\n        counter = 0\n      }\n    end\n  })\n\u003c/script\u003e\n```\n\nDespite being similar to Vue.js, this project does not aim to be 100%\ncompatible with Vue templates.\n\nIt's possible to load components in the same way as it's implemented in Vue.js.\nYou can either define them using `lua` syntax or `imv` xml file.\n\n`imv` files search path is configured using `package.imvpath` variable.\n\nCSS Styles Support\n------------------\n\nImVue supports CSS styling and HTML syntax to some extent.\n\n[Styled document example](samples/simple/styled.xml) in action:\n\n![demo](demo.gif)\n\nVue Special Syntax\n------------------\n\n### Supported\n\n- `v-if/v-else-if/v-else`.\n- `v-for` (does not support int index e.g.: `value, key, index`).\n- `v-on`.\n  - `v-on:(click|mousedown|mouseup|mouseover|mouseout)[.[ctrl|alt|meta|shift|exact]]`.\n  - `v-on:(keyup|keydown|keypress)[.][\u003ckey_code\u003e]`.\n  - `v-on:change`.\n- Attributes starting with `:` are treated as `v-bind:...`.\n- Defining components and using custom tag names. Props validation is\n  also supported.\n- Component `\u003cslot\u003e` (limitations: no named slots, no default value,\n  always using parent context).\n- `ref` and `key` fields.\n\n### Not Supported Yet\n\n- Custom events: `v-on:yadda-yadda` \u0026 `this.$emit('yadda-yadda')`.\n- `sync`.\n- Defining events using `@` sign.\n- Long definition using `v-bind`.\n- Getting `event.target` in event handlers.\n- Changing element properties using refs (RO access only).\n- `${}` eval syntax in attributes.\n- V8 JS integration.\n\n### Lua Implementation Specifics\n\nEach scripted attribute or evaluation is actual Lua code string, thus\nthere is no limitation on what you can do. Globals are also available.\n\nBesides, it will create reactive listeners for each field that was used in the\nevaluation.\n\nDependencies\n------------\n\n- ImGui without any modifications.\n- NanoSVG is used for image rendering. Using customized rasterizer.\n- RapidXML is used for XML parsing.\n- customized version of [LibCSS](https://github.com/Unix4ever/libcss).\n\nOptional Core Dependecies\n-------------------------\n\n- Lua 5.1+/LuaJIT 2.0.5+ - adds script interpreter.\n\nSamples Dependencies\n--------------------\n\n- SDL2 \u003e= 2.0.5\n- libglew\n\nBuild\n-----\n\n### Simple Build\n\n1. Install dependencies.\n1. Run:\n\n`make build`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funix4ever%2Fimvue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funix4ever%2Fimvue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funix4ever%2Fimvue/lists"}