rumious 1.0.13 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/app/app.d.ts +10 -8
  2. package/dist/app/index.d.ts +0 -1
  3. package/dist/component/component.d.ts +15 -24
  4. package/dist/component/element.d.ts +10 -15
  5. package/dist/global.d.ts +15 -0
  6. package/dist/index.d.ts +7 -27
  7. package/dist/index.js +1042 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/jsx/component.d.ts +3 -0
  10. package/dist/jsx/dynamic.d.ts +2 -0
  11. package/dist/jsx/element.d.ts +9 -0
  12. package/dist/jsx/index.d.ts +4 -4
  13. package/dist/jsx/template.d.ts +25 -0
  14. package/dist/{app/module.d.ts → module/index.d.ts} +1 -1
  15. package/dist/ref/index.d.ts +1 -2
  16. package/dist/ref/ref.d.ts +37 -0
  17. package/dist/render/context.d.ts +7 -9
  18. package/dist/render/index.d.ts +4 -3
  19. package/dist/render/list.d.ts +16 -0
  20. package/dist/render/render.d.ts +3 -2
  21. package/dist/render/view.d.ts +19 -0
  22. package/dist/state/index.d.ts +1 -2
  23. package/dist/state/list.d.ts +14 -0
  24. package/dist/state/reactor.d.ts +15 -16
  25. package/dist/state/state.d.ts +11 -8
  26. package/dist/types/component.d.ts +5 -0
  27. package/dist/types/index.d.ts +3 -0
  28. package/dist/types/jsx.d.ts +16 -8
  29. package/dist/types/state.d.ts +8 -0
  30. package/dist/types/template.d.ts +5 -0
  31. package/dist/utils/checker.d.ts +2 -0
  32. package/package.json +34 -53
  33. package/rollup.config.js +21 -0
  34. package/src/app/app.ts +45 -0
  35. package/src/app/index.ts +1 -0
  36. package/src/component/component.ts +69 -0
  37. package/src/component/element.ts +76 -0
  38. package/src/component/index.ts +2 -0
  39. package/src/global.ts +20 -0
  40. package/src/index.ts +13 -0
  41. package/src/jsx/component.ts +17 -0
  42. package/src/jsx/dynamic.ts +87 -0
  43. package/src/jsx/element.ts +77 -0
  44. package/src/jsx/index.ts +7 -0
  45. package/src/jsx/template.ts +377 -0
  46. package/src/module/index.ts +7 -0
  47. package/src/ref/index.ts +1 -0
  48. package/src/ref/ref.ts +178 -0
  49. package/src/render/context.ts +11 -0
  50. package/src/render/index.ts +4 -0
  51. package/src/render/list.ts +115 -0
  52. package/src/render/render.ts +31 -0
  53. package/src/render/view.ts +101 -0
  54. package/src/state/index.ts +2 -0
  55. package/src/state/list.ts +96 -0
  56. package/src/state/reactor.ts +65 -0
  57. package/src/state/state.ts +68 -0
  58. package/src/types/component.ts +6 -0
  59. package/src/types/index.ts +3 -0
  60. package/src/types/state.ts +16 -0
  61. package/src/types/template.ts +7 -0
  62. package/src/utils/checker.ts +5 -0
  63. package/tsconfig.json +20 -0
  64. package/README.md +0 -7
  65. package/dist/context/context.d.ts +0 -12
  66. package/dist/context/index.d.ts +0 -1
  67. package/dist/index.cjs +0 -1
  68. package/dist/index.esm.js +0 -1
  69. package/dist/index.global.d.ts +0 -46
  70. package/dist/index.min.js +0 -1
  71. package/dist/performance/index.d.ts +0 -5
  72. package/dist/ref/children.d.ts +0 -23
  73. package/dist/ref/element.d.ts +0 -49
  74. package/dist/render/array.d.ts +0 -21
  75. package/dist/render/directives.d.ts +0 -1
  76. package/dist/render/dynamic.d.ts +0 -2
  77. package/dist/render/injector.d.ts +0 -15
  78. package/dist/render/struct.d.ts +0 -85
  79. package/dist/render/template.d.ts +0 -5
  80. package/dist/state/array.d.ts +0 -22
  81. package/dist/state/object.d.ts +0 -31
  82. package/dist/types/render.d.ts +0 -5
  83. package/dist/types/utils.d.ts +0 -1
  84. package/dist/types/warp.d.ts +0 -5
  85. package/dist/utils/checkers.d.ts +0 -1
  86. package/dist/utils/name.d.ts +0 -2
  87. package/dist/utils/oberve.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/render/context.ts","../src/render/render.ts","../src/render/view.ts","../src/app/app.ts","../src/state/reactor.ts","../src/state/state.ts","../src/state/list.ts","../src/component/component.ts","../src/component/element.ts","../src/ref/ref.ts","../src/jsx/element.ts","../src/utils/checker.ts","../src/jsx/dynamic.ts","../src/jsx/template.ts","../src/jsx/component.ts","../src/module/index.ts","../src/index.ts"],"sourcesContent":["export class RumiousRenderContext {\n app;\n target;\n onRendered = [];\n constructor(app, target) {\n this.app = app;\n this.target = target;\n }\n}\n","export function render(content, container, context) {\n context.onRendered = [];\n let result = content(container, context);\n for (var i = 0; i < context.onRendered.length; i++) {\n context.onRendered[i]();\n }\n return result;\n}\n","import { render } from './render.js';\nexport class RumiousViewControl {\n targets = [];\n constructor() { }\n addTarget(target) {\n this.targets.push(target);\n }\n setView(template) {\n const targets = this.targets;\n if (targets.length === 0) {\n throw new Error(`RumiousRenderError: No target assigned to ViewControl`);\n }\n for (let i = 0; i < targets.length; i++) {\n render(template, targets[i].element, targets[i].context);\n }\n }\n each(callback) {\n for (let target of this.targets) {\n callback(target);\n }\n }\n emptyAll() {\n const targets = this.targets;\n for (let i = 0; i < targets.length; i++) {\n targets[i].element.textContent = '';\n }\n }\n empty(target) {\n const targets = this.targets;\n for (let i = 0; i < targets.length; i++) {\n if (targets[i].element === target) {\n target.textContent = '';\n return;\n }\n }\n }\n}\nexport function createViewControl() {\n return new RumiousViewControl();\n}\n","import { RumiousRenderContext, render } from '../render/index.js';\nexport class RumiousApp {\n config;\n modules = [];\n context = new RumiousRenderContext(this, this);\n constructor(config) {\n this.config = config;\n }\n addModule(ModuleClass, options) {\n const instance = ModuleClass.init(this, options);\n this.modules.push(instance);\n return instance;\n }\n render(content) {\n render(content, this.config.root, this.context);\n }\n}\nexport function createApp(config) {\n return new RumiousApp(config);\n}\n","export class RumiousReactor {\n target;\n bindings = [];\n internal = [];\n isUIBatch = true;\n scheduled = false;\n queuedCommits = [];\n constructor(target) {\n this.target = target;\n }\n addBinding(binding) {\n this.bindings.push(binding);\n }\n removeBinding(binding) {\n this.bindings = this.bindings.filter(b => b !== binding);\n }\n addInternalBinding(binding) {\n this.internal.push(binding);\n }\n removeInternalBinding(binding) {\n this.internal = this.internal.filter(b => b !== binding);\n }\n notify(commit) {\n for (const binding of this.bindings) {\n binding(commit);\n }\n if (this.isUIBatch) {\n this.scheduleInternalUpdate(commit);\n }\n else {\n for (const binding of this.internal) {\n binding(commit);\n }\n }\n }\n scheduleInternalUpdate(commit) {\n this.queuedCommits.push(commit);\n if (!this.scheduled) {\n this.scheduled = true;\n queueMicrotask(() => {\n this.flushInternal();\n });\n }\n }\n flushInternal() {\n const lastCommit = this.queuedCommits[this.queuedCommits.length - 1];\n for (const binding of this.internal) {\n binding(lastCommit); // chỉ gửi commit cuối cùng\n }\n this.queuedCommits = [];\n this.scheduled = false;\n }\n}\n","import { RumiousReactor } from './reactor.js';\nexport class RumiousState {\n value;\n reactor;\n constructor(value, reactor) {\n this.value = value;\n this.reactor = reactor;\n if (!this.reactor) {\n this.reactor = new RumiousReactor(this);\n }\n }\n set(value) {\n this.value = value;\n this.reactor?.notify({\n type: 'set',\n value: value,\n state: this\n });\n }\n get() {\n return this.value;\n }\n slientUpdate(value) {\n this.value = value;\n }\n update(updater) {\n this.set(updater(this.value));\n }\n toJSON() {\n return JSON.stringify(this.value);\n }\n trigger() {\n this.reactor?.notify({\n type: 'set',\n value: this.value,\n state: this\n });\n }\n}\nexport function createState(value) {\n return new RumiousState(value);\n}\nexport function watch(state, callback) {\n if (state.reactor)\n state.reactor.addBinding(callback);\n}\nexport function unwatch(state, callback) {\n if (state.reactor)\n state.reactor.removeBinding(callback);\n}\n","import { RumiousState } from './state.js';\nexport class RumiousListState extends RumiousState {\n value;\n reactor;\n constructor(value = [], reactor) {\n super(value, reactor);\n this.value = value;\n this.reactor = reactor;\n }\n append(value) {\n this.value.push(value);\n this.reactor?.notify({\n type: 'append',\n state: this,\n value\n });\n }\n prepend(value) {\n this.value.unshift(value);\n this.reactor?.notify({\n type: 'prepend',\n state: this,\n value\n });\n }\n insert(pos, value) {\n this.value.splice(pos, 0, value);\n this.reactor?.notify({\n type: 'insert',\n state: this,\n value,\n key: pos\n });\n }\n updateAt(pos, value) {\n this.value[pos] = value;\n this.reactor?.notify({\n type: 'update',\n state: this,\n value,\n key: pos\n });\n }\n remove(pos) {\n this.value.splice(pos, 1);\n this.reactor?.notify({\n type: 'remove',\n state: this,\n value: null,\n key: pos\n });\n }\n clear() {\n this.value.length = 0;\n this.reactor?.notify({\n type: 'set',\n state: this,\n value: []\n });\n }\n reverse() {\n this.value.reverse();\n this.reactor?.notify({\n type: 'set',\n state: this,\n value: this.value\n });\n }\n filter(predicate) {\n this.value = this.value.filter(predicate);\n this.reactor?.notify({\n type: 'set',\n state: this,\n value: this.value\n });\n }\n}\n","import { RumiousRenderContext, render } from '../render/index.js';\nexport class RumiousComponent {\n props;\n app;\n element;\n context;\n static tagName = 'rumious-component';\n constructor() { }\n mountTo(template, target) {\n return render(template, target, this.context);\n }\n prepare(props, context, element) {\n this.app = context.app;\n this.element = element;\n this.props = props;\n this.context = new RumiousRenderContext(context.app, this);\n }\n template() {\n throw new Error(`RumiousRenderError: Cannot render empty component !`);\n }\n requestRender() {\n let template = this.template();\n render(template, this.element, this.context);\n }\n remove() {\n this.element.remove();\n }\n onCreate() { }\n onRender() { }\n onDestroy() { }\n beforeRender() { }\n}\n","export class RumiousComponentElement extends HTMLElement {\n component;\n props;\n context;\n instance;\n constructor() {\n super();\n }\n setContext(context) {\n this.context = context;\n }\n async connectedCallback() {\n let instance = new this.component();\n this.instance = instance;\n instance.prepare(this.props, this.context, this);\n instance.onCreate();\n await instance.beforeRender();\n instance.requestRender();\n instance.onRender();\n }\n disconnectedCallback() {\n this.instance.onDestroy();\n }\n}\nexport function createComponentElement(context, component, props) {\n if (!window.customElements.get(component.tagName)) {\n window.customElements.define(component.tagName, class extends RumiousComponentElement {\n constructor() {\n super();\n this.component = component;\n this.props = props;\n this.context = context;\n }\n });\n }\n let element = document.createElement(component.tagName);\n return element;\n}\nexport function renderComponent(component, props) {\n if (!window.customElements.get(component.tagName)) {\n window.customElements.define(component.tagName, class extends RumiousComponentElement {\n constructor() {\n super();\n this.component = component;\n this.props = props;\n }\n });\n }\n let element = document.createElement(component.tagName);\n return element;\n}\n","import { RumiousComponentElement } from '../component/index.js';\nexport class RumiousRef {\n element;\n _mounted = false;\n _onMountCallbacks = [];\n _onUnmountCallbacks = [];\n constructor() { }\n setTarget(element) {\n this.element = element;\n this._mounted = true;\n for (const cb of this._onMountCallbacks) {\n cb(element);\n }\n }\n reset() {\n if (this._mounted) {\n for (const cb of this._onUnmountCallbacks) {\n cb();\n }\n }\n this.element = undefined;\n this._mounted = false;\n }\n get() {\n return this._mounted ? this.element : undefined;\n }\n isMounted() {\n return this._mounted;\n }\n has() {\n return this.isMounted();\n }\n onMount(cb) {\n this._onMountCallbacks.push(cb);\n if (this._mounted)\n cb(this.element);\n }\n onUnmount(cb) {\n this._onUnmountCallbacks.push(cb);\n }\n toString() {\n return `[RumiousRef ${this._mounted ? \"mounted\" : \"not mounted\"}]`;\n }\n focus() {\n this.assertMounted();\n this.element.focus();\n }\n addClass(className) {\n this.assertMounted();\n this.element.classList.add(className);\n }\n removeClass(className) {\n this.assertMounted();\n this.element.classList.remove(className);\n }\n toggleClass(className) {\n this.assertMounted();\n this.element.classList.toggle(className);\n }\n setAttr(key, value) {\n this.assertMounted();\n this.element.setAttribute(key, value);\n }\n removeAttr(key) {\n this.assertMounted();\n this.element.removeAttribute(key);\n }\n query(selector) {\n this.assertMounted();\n return this.element.querySelector(selector);\n }\n queryAll(selector) {\n this.assertMounted();\n return this.element.querySelectorAll(selector);\n }\n get value() {\n this.assertMounted();\n return 'value' in this.element ? this.element.value : undefined;\n }\n set value(val) {\n this.assertMounted();\n if ('value' in this.element) {\n this.element.value = val;\n }\n else {\n throw new Error(\"RumiousRefError: Element has no 'value' property.\");\n }\n }\n get text() {\n this.assertMounted();\n return this.element.textContent;\n }\n set text(val) {\n this.assertMounted();\n this.element.textContent = val;\n }\n get html() {\n this.assertMounted();\n return this.element.innerHTML;\n }\n set html(val) {\n this.assertMounted();\n this.element.innerHTML = val;\n }\n get checked() {\n this.assertMounted();\n return 'checked' in this.element ? Boolean(this.element.checked) : false;\n }\n set checked(val) {\n this.assertMounted();\n if ('checked' in this.element) {\n this.element.checked = val;\n }\n else {\n throw new Error(\"RumiousRefError: Element has no 'checked' property.\");\n }\n }\n get disabled() {\n this.assertMounted();\n return 'disabled' in this.element ? Boolean(this.element.disabled) : false;\n }\n set disabled(val) {\n this.assertMounted();\n if ('disabled' in this.element) {\n this.element.disabled = val;\n }\n else {\n throw new Error(\"RumiousRefError: Element has no 'disabled' property.\");\n }\n }\n get component() {\n if (this.element instanceof RumiousComponentElement) {\n return this.element.instance;\n }\n else {\n return null;\n }\n }\n assertMounted() {\n if (!this._mounted) {\n throw new Error(\"RumiousRefError: Element is not mounted.\");\n }\n }\n}\nexport function createRef() {\n return new RumiousRef();\n}\n","const nodeCache = new WeakMap();\nexport function resolveNode(root, path) {\n const key = path.join('.');\n let rootCache = nodeCache.get(root);\n if (!rootCache) {\n rootCache = new Map();\n nodeCache.set(root, rootCache);\n }\n if (rootCache.has(key)) {\n return rootCache.get(key);\n }\n let node;\n if (root instanceof DocumentFragment) {\n node = root.childNodes[0];\n }\n else {\n node = root;\n }\n for (let idx of path) {\n node = node.childNodes[idx];\n }\n rootCache.set(key, node);\n return node;\n}\nexport function replaceNode(oldNode, newNode) {\n const parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n else {\n console.warn('replaceNode: oldNode has no parent. Cannot replace.');\n }\n}\nexport function createEvent(target, name, callback) {\n if (!target.__rumiousEvents) {\n target.__rumiousEvents = {};\n }\n target.__rumiousEvents[name] = callback;\n}\nfunction triggerEvent(name, event) {\n const path = (event.composedPath?.() ?? [event.target]);\n for (const target of path) {\n if (target instanceof HTMLElement &&\n '__rumiousEvents' in target) {\n const element = target;\n const handler = element.__rumiousEvents?.[name];\n if (handler) {\n handler(event);\n break;\n }\n }\n }\n}\nexport function delegateEvents(events) {\n for (const name of events) {\n window.addEventListener(name, (e) => triggerEvent(name, e));\n }\n}\n","export function isTemplate(fn) {\n return typeof fn === 'function' && fn.__isTemplate === true;\n}\n","import { isTemplate } from '../utils/checker.js';\nimport { RumiousState } from '../state/index.js';\nimport { RumiousComponentElement } from '../component/index.js';\nfunction handleReactiveNode(node, value, context) {\n let currentNode = node;\n const update = () => {\n if (!document.contains(currentNode) && value.reactor) {\n value.reactor.removeBinding(update);\n return;\n }\n const newNode = value.value;\n if (newNode instanceof RumiousComponentElement) {\n newNode.setContext(context);\n }\n currentNode.parentNode?.replaceChild(newNode, currentNode);\n currentNode = newNode;\n };\n context.onRendered.push(() => {\n update();\n if (!value.reactor)\n return;\n value.reactor.addBinding(update);\n });\n return node;\n}\nfunction isPrimitive(value) {\n return value === null || (typeof value !== 'object' && typeof value !== 'function');\n}\nexport function createDynamicValue(context, value) {\n if (Array.isArray(value)) {\n const fragment = document.createDocumentFragment();\n for (const item of value) {\n if (isTemplate(item)) {\n const rendered = item(document.createDocumentFragment(), context);\n fragment.appendChild(rendered);\n }\n else if (isPrimitive(item)) {\n if (item !== null && item !== undefined && item !== false) {\n fragment.appendChild(document.createTextNode(String(item)));\n }\n }\n }\n return fragment;\n }\n if (isTemplate(value)) {\n return value(document.createDocumentFragment(), context);\n }\n if (value instanceof RumiousState && value.value instanceof Node) {\n return handleReactiveNode(document.createTextNode(''), value, context);\n }\n if (value instanceof RumiousState && value.reactor) {\n let node = document.createTextNode('');\n context.onRendered.push(() => {\n node.textContent = String(value.get());\n if (!value.reactor)\n return;\n value.reactor.addBinding((commit) => node.textContent = String(commit.state.get()));\n });\n return node;\n }\n if (isPrimitive(value) && value !== null && value !== undefined && value !== false) {\n return document.createTextNode(String(value));\n }\n return document.createTextNode('');\n}\n","import { RumiousRef } from '../ref/index.js';\nimport { createEvent } from './element.js';\nexport function createTemplate(fn) {\n return Object.assign(fn, {\n __isTemplate: true\n });\n}\nexport function html(h) {\n let template = document.createElement('template');\n template.innerHTML = h;\n return template.content.cloneNode(true);\n}\nexport const directives = {\n ref(context, modifier, target, value) {\n if (value instanceof RumiousRef) {\n value.setTarget(target);\n }\n else {\n throw new Error(\"Cannot setup element reference for non-RumiousRef object !\");\n }\n },\n model(context, modifier, element, state) {\n const tag = element.tagName, type = element.type;\n if (tag === \"TEXTAREA\") {\n element.addEventListener(\"input\", () => state.set(element.value));\n }\n else if (tag === \"SELECT\") {\n element.addEventListener(\"change\", () => {\n const s = element;\n state.set(s.multiple ? Array.from(s.selectedOptions).map(o => o.value) : s.value);\n });\n }\n else if (tag === \"INPUT\") {\n if (type === \"checkbox\") {\n element.addEventListener(\"change\", () => state.set(element.checked));\n }\n else if (type === \"radio\") {\n element.addEventListener(\"change\", () => {\n const i = element;\n if (i.checked)\n state.set(i.value);\n });\n }\n else if (type === \"file\") {\n element.addEventListener(\"change\", () => {\n const f = element.files;\n state.set(element.hasAttribute(\"multiple\") ? f : f?.[0] ?? null);\n });\n }\n else {\n element.addEventListener(\"input\", () => {\n const val = element.value;\n state.set(type === \"number\" ? (val === \"\" ? null : +val) : val);\n });\n }\n }\n },\n on(context, event, element, callback) {\n createEvent(element, event, callback);\n },\n bind(context, modifier, element, state) {\n let reactive = () => { };\n switch (modifier) {\n case 'text':\n reactive = () => { element.textContent = String(state.get()); };\n break;\n case 'html':\n reactive = () => { element.innerHTML = String(state.get()); };\n break;\n case 'style':\n reactive = () => {\n const styles = state.get();\n if (typeof styles === 'string') {\n element.setAttribute('style', styles);\n }\n else if (typeof styles === 'object') {\n Object.assign(element.style, styles);\n }\n };\n break;\n case 'class':\n reactive = () => {\n const cls = state.get();\n if (typeof cls === 'string')\n element.className = cls;\n else if (Array.isArray(cls))\n element.className = cls.join(' ');\n else if (typeof cls === 'object') {\n element.className = Object.entries(cls)\n .filter(([_, active]) => active)\n .map(([name]) => name)\n .join(' ');\n }\n };\n break;\n case 'disabled':\n reactive = () => {\n if ('disabled' in element)\n element.disabled = Boolean(state.get());\n };\n break;\n case 'checked':\n reactive = () => {\n if (element instanceof HTMLInputElement || element instanceof HTMLInputElement) {\n element.checked = Boolean(state.get());\n }\n };\n break;\n case 'value':\n reactive = () => {\n if ('value' in element)\n element.value = String(state.get());\n };\n break;\n default:\n throw new Error(`Unknown bind directive modifier: ${modifier}`);\n }\n function onStateChange(commit) {\n if (!document.contains(element) && state.reactor) {\n state.reactor.removeInternalBinding(onStateChange);\n return;\n }\n reactive();\n }\n context.onRendered.push(() => {\n reactive();\n if (!state.reactor)\n return;\n state.reactor.addInternalBinding(onStateChange);\n });\n },\n attr(context, attrName, element, state) {\n function onStateChange(commit) {\n if (!document.contains(element) && state.reactor) {\n state.reactor.removeInternalBinding(onStateChange);\n return;\n }\n element.setAttribute(attrName, String(state.get()));\n }\n context.onRendered.push(() => {\n onStateChange();\n if (!state.reactor)\n return;\n state.reactor.addInternalBinding(onStateChange);\n });\n },\n prop(context, name, element, state) {\n function onStateChange(commit) {\n if (!document.contains(element) && state.reactor) {\n state.reactor.removeInternalBinding(onStateChange);\n return;\n }\n element[name] = state.get();\n }\n context.onRendered.push(() => {\n onStateChange();\n if (!state.reactor)\n return;\n state.reactor.addInternalBinding(onStateChange);\n });\n },\n html(context, modifier, element, state) {\n function onStateChange(commit) {\n if (!document.contains(element) && state.reactor) {\n state.reactor.removeInternalBinding(onStateChange);\n return;\n }\n element.innerHTML = String(state.get());\n }\n context.onRendered.push(() => {\n onStateChange();\n if (!state.reactor)\n return;\n state.reactor.addInternalBinding(onStateChange);\n });\n },\n show(context, modifier, element, state) {\n function onStateChange(commit) {\n if (!document.contains(element) && state.reactor) {\n state.reactor.removeInternalBinding(onStateChange);\n return;\n }\n element.style.display = Boolean(state.get()) ? 'block' : 'none';\n }\n context.onRendered.push(() => {\n onStateChange();\n if (!state.reactor)\n return;\n state.reactor.addInternalBinding(onStateChange);\n });\n },\n hide(context, modifier, element, state) {\n function onStateChange(commit) {\n if (!document.contains(element) && state.reactor) {\n state.reactor.removeInternalBinding(onStateChange);\n return;\n }\n element.style.display = !Boolean(state.get()) ? 'block' : 'none';\n }\n context.onRendered.push(() => {\n onStateChange();\n if (!state.reactor)\n return;\n state.reactor.addInternalBinding(onStateChange);\n });\n }\n};\n// This is just to satisfy TypeScript's JSX requirement.\n// Rumious doesn't use createElement — we do things differently.\nfunction createElement(...args) {\n console.log(args);\n throw Error(`Rumious doesn't use createElement !`);\n}\n","import { createComponentElement } from '../component/index.js';\nexport function createComponent(context, component, props) {\n let element = createComponentElement(context, component, props);\n return element;\n}\n","export class RumiousModule {\n}\n","import './global.js';\nexport const __version__ = \"2.x\";\nexport * from './app/index.js';\nexport * from './types/index.js';\nexport * from './render/index.js';\nexport * from './state/index.js';\nexport * from './component/index.js';\nexport * from './ref/index.js';\nexport * from './jsx/index.js';\nexport * from './module/index.js';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { RumiousRenderContext } from '../render/index.js';
2
+ import { RumiousComponentConstructor } from '../types/index.js';
3
+ export declare function createComponent<T>(context: RumiousRenderContext, component: RumiousComponentConstructor<T>, props: T): HTMLElement;
@@ -0,0 +1,2 @@
1
+ import { RumiousRenderContext } from '../render/index.js';
2
+ export declare function createDynamicValue(context: RumiousRenderContext, value: unknown): Node;
@@ -0,0 +1,9 @@
1
+ export declare function appendChild(parent: HTMLElement, node: Node | string): void;
2
+ export declare function element(parent: HTMLElement, tagName: string, attrs?: Record<string, any>): HTMLElement;
3
+ export declare function replaceNode(oldNode: Node, newNode: Node): void;
4
+ interface RumiousEventTarget extends HTMLElement {
5
+ __rumiousEvents?: Record<string, (e: Event) => void>;
6
+ }
7
+ export declare function createEvent(target: RumiousEventTarget, name: string, callback: (e: Event) => void): void;
8
+ export declare function delegateEvents(events: string[]): void;
9
+ export {};
@@ -1,4 +1,4 @@
1
- import { RumiousTemplateGenerator } from '../types/render.js';
2
- import { RumiousRenderTemplate } from '../render/template.js';
3
- export declare function template(generator: RumiousTemplateGenerator): RumiousRenderTemplate;
4
- export declare const Fragment: (...args: any[]) => any;
1
+ export * from './element.js';
2
+ export * from './dynamic.js';
3
+ export * from './template.js';
4
+ export * from './component.js';
@@ -0,0 +1,25 @@
1
+ import { RumiousRenderContext, RumiousViewControl } from '../render/index.js';
2
+ import { RumiousTemplate } from '../types/index.js';
3
+ import { RumiousRef } from '../ref/index.js';
4
+ import { RumiousState, RumiousListState } from '../state/index.js';
5
+ export declare function createTemplate(fn: (root: HTMLElement | DocumentFragment, context: RumiousRenderContext) => HTMLElement): RumiousTemplate;
6
+ export declare function html(h: string): Node;
7
+ export declare const directives: {
8
+ ref(context: RumiousRenderContext, modifier: string, target: HTMLElement, value: RumiousRef): void;
9
+ model(context: RumiousRenderContext, modifier: string, element: HTMLElement, state: RumiousState<any>): void;
10
+ on(context: RumiousRenderContext, event: string, element: HTMLElement, callback: (e: Event) => void): void;
11
+ bind(context: RumiousRenderContext, modifier: string, element: HTMLElement, state: RumiousState<any>): void;
12
+ attr(context: RumiousRenderContext, attrName: string, element: HTMLElement, state: RumiousState<any>): void;
13
+ prop(context: RumiousRenderContext, name: string, element: HTMLElement, state: RumiousState<any>): void;
14
+ html(context: RumiousRenderContext, modifier: string, element: HTMLElement, state: RumiousState<any>): void;
15
+ show(context: RumiousRenderContext, modifier: string, element: HTMLElement, state: RumiousState<any>): void;
16
+ hide(context: RumiousRenderContext, modifier: string, element: HTMLElement, state: RumiousState<any>): void;
17
+ each<T>(context: RumiousRenderContext, modifier: string, element: HTMLElement, configs: EachDirectiveConfig<T>): void;
18
+ view(context: RumiousRenderContext, modifier: string, element: HTMLElement, configs: RumiousViewControl): void;
19
+ };
20
+ interface EachDirectiveConfig<T> {
21
+ value: RumiousListState<T>;
22
+ key: (item: T) => string;
23
+ templ: (item: T, key: string) => RumiousTemplate;
24
+ }
25
+ export {};
@@ -1,4 +1,4 @@
1
- import type { RumiousApp } from './app.js';
1
+ import type { RumiousApp } from '../app/index.js';
2
2
  export declare abstract class RumiousModule {
3
3
  }
4
4
  export type RumiousModuleClass<T extends RumiousModule = any, O = any> = {
@@ -1,2 +1 @@
1
- export * from './element.js';
2
- export * from './children.js';
1
+ export * from './ref.js';
@@ -0,0 +1,37 @@
1
+ import { RumiousComponent } from '../component/index.js';
2
+ export declare class RumiousRef {
3
+ element: HTMLElement;
4
+ private _mounted;
5
+ private _onMountCallbacks;
6
+ private _onUnmountCallbacks;
7
+ constructor();
8
+ setTarget(element: HTMLElement): void;
9
+ reset(): void;
10
+ get(): HTMLElement | undefined;
11
+ isMounted(): boolean;
12
+ has(): boolean;
13
+ onMount(cb: (el: HTMLElement) => void): void;
14
+ onUnmount(cb: () => void): void;
15
+ toString(): string;
16
+ focus(): void;
17
+ addClass(className: string): void;
18
+ removeClass(className: string): void;
19
+ toggleClass(className: string): void;
20
+ setAttr(key: string, value: string): void;
21
+ removeAttr(key: string): void;
22
+ query<T extends Element = Element>(selector: string): T | null;
23
+ queryAll<T extends Element = Element>(selector: string): NodeListOf<T>;
24
+ get value(): string | undefined;
25
+ set value(val: string | undefined);
26
+ get text(): string | null;
27
+ set text(val: string | null);
28
+ get html(): string;
29
+ set html(val: string);
30
+ get checked(): boolean;
31
+ set checked(val: boolean);
32
+ get disabled(): boolean;
33
+ set disabled(val: boolean);
34
+ get component(): RumiousComponent | null;
35
+ private assertMounted;
36
+ }
37
+ export declare function createRef(): RumiousRef;
@@ -1,11 +1,9 @@
1
- import { RumiousRenderable } from '../types/render.js';
2
- import type { RumiousApp } from '../app/app.js';
3
- import type { RumiousRenderTemplate } from './template.js';
1
+ import type { RumiousApp } from '../app/index.js';
2
+ type Callback = () => any;
4
3
  export declare class RumiousRenderContext {
5
- target: RumiousRenderable;
6
- app?: RumiousApp;
7
- renderHelper: (context: RumiousRenderContext, template: RumiousRenderTemplate, target: HTMLElement | HTMLDocument | DocumentFragment) => void;
8
- onRenderFinished: Array<Function>;
9
- constructor(target: RumiousRenderable, app?: RumiousApp);
10
- findName(name: string): unknown;
4
+ app: RumiousApp;
5
+ target: any;
6
+ onRendered: Callback[];
7
+ constructor(app: RumiousApp, target: any);
11
8
  }
9
+ export {};
@@ -1,3 +1,4 @@
1
- export * from './template.js';
2
- export * from './injector.js';
3
- export { renderList, createInfinityScroll, createPagination, } from './struct.js';
1
+ export * from './context.js';
2
+ export * from './render.js';
3
+ export * from './view.js';
4
+ export * from './list.js';
@@ -0,0 +1,16 @@
1
+ import { RumiousViewControl } from './view.js';
2
+ import { RumiousListState, RumiousState } from '../state/index.js';
3
+ import { RumiousTemplate, RumiousChangeCommit } from '../types/index.js';
4
+ export declare class RumiousPagination<T> {
5
+ view: RumiousViewControl;
6
+ data: RumiousListState<T>;
7
+ templFn: (data: T) => RumiousTemplate;
8
+ keyFn: (data: T) => string;
9
+ currentPage: number;
10
+ limit: number;
11
+ pos: number[];
12
+ constructor(view: RumiousViewControl, data: RumiousListState<T>, templFn: (data: T) => RumiousTemplate, keyFn: (data: T) => string);
13
+ show(): void;
14
+ calcPos(): [number, number];
15
+ onDataChange(commit: RumiousChangeCommit<RumiousState<T[]>>): void;
16
+ }
@@ -1,3 +1,4 @@
1
1
  import { RumiousRenderContext } from './context.js';
2
- import { RumiousRenderTemplate } from './template.js';
3
- export declare function render(context: RumiousRenderContext, template: RumiousRenderTemplate, target: HTMLElement | HTMLDocument | DocumentFragment): void;
2
+ import { RumiousTemplate } from '../types/index.js';
3
+ export declare function render(content: RumiousTemplate, container: HTMLElement, context: RumiousRenderContext): HTMLElement;
4
+ export declare function renderFrag(content: RumiousTemplate, context: RumiousRenderContext): HTMLElement;
@@ -0,0 +1,19 @@
1
+ import { RumiousTemplate } from '../types/index.js';
2
+ import { RumiousRenderContext } from './context.js';
3
+ export interface RumiousViewControlTarget {
4
+ element: HTMLElement;
5
+ context: RumiousRenderContext;
6
+ }
7
+ export declare class RumiousViewControl {
8
+ private targets;
9
+ constructor();
10
+ addTarget(target: RumiousViewControlTarget): void;
11
+ setView(template: RumiousTemplate): void;
12
+ removeChild(index: number): void;
13
+ addChild(template: RumiousTemplate, prepend?: boolean): void;
14
+ each(callback: (target: RumiousViewControlTarget) => any): void;
15
+ emptyAll(): void;
16
+ empty(target: HTMLElement): void;
17
+ updateChild(index: number, template: RumiousTemplate): void;
18
+ }
19
+ export declare function createViewControl(): RumiousViewControl;
@@ -1,3 +1,2 @@
1
1
  export * from './state.js';
2
- export * from './array.js';
3
- export * from './object.js';
2
+ export * from './list.js';
@@ -0,0 +1,14 @@
1
+ import { RumiousState } from './state.js';
2
+ import { RumiousReactor } from './reactor.js';
3
+ export declare class RumiousListState<T> extends RumiousState<T[]> {
4
+ constructor(value?: T[], reactor?: RumiousReactor<RumiousState<T[]>>);
5
+ append(value: T): void;
6
+ prepend(value: T): void;
7
+ insert(pos: number, value: T): void;
8
+ updateAt(pos: number, value: T): void;
9
+ remove(pos: number): void;
10
+ clear(): void;
11
+ reverse(): void;
12
+ filter(predicate: (item: T, index: number, array: T[]) => boolean): void;
13
+ }
14
+ export declare function createListState<T>(values: T[]): RumiousListState<T>;
@@ -1,18 +1,17 @@
1
- import type { RumiousState } from './state.js';
2
- type RumiousStateCommitTypes = 'SET' | 'SET_BY_KEY' | 'REMOVE_BY_KEY' | 'APPEND' | 'INSERT_BY_KEY' | 'PREPEND';
3
- export interface RumiousStateCommit<T> {
4
- type: RumiousStateCommitTypes;
5
- target: RumiousState<T>;
6
- value: unknown;
7
- key?: string | number;
8
- }
9
- export type RumiousBinding<T> = (commit: RumiousStateCommit<T>) => void;
10
- export declare class RumiousReactor<T> {
11
- target: RumiousState<T>;
1
+ import { RumiousStateBind, RumiousChangeCommit } from '../types/index.js';
2
+ export declare class RumiousReactor<T = any> {
3
+ target: T;
12
4
  private bindings;
13
- constructor(target: RumiousState<T>);
14
- addBinding(bind: RumiousBinding<T>): void;
15
- removeBinding(bind: RumiousBinding<T>): void;
16
- emit(commit: RumiousStateCommit<T>): Promise<void>;
5
+ private internal;
6
+ isUIBatch: boolean;
7
+ private scheduled;
8
+ private queuedCommits;
9
+ constructor(target: T);
10
+ addBinding(binding: RumiousStateBind<T>): void;
11
+ removeBinding(binding: RumiousStateBind<T>): void;
12
+ addInternalBinding(binding: RumiousStateBind<T>): void;
13
+ removeInternalBinding(binding: RumiousStateBind<T>): void;
14
+ notify(commit: RumiousChangeCommit<T>): void;
15
+ private scheduleInternalUpdate;
16
+ private flushInternal;
17
17
  }
18
- export {};
@@ -1,15 +1,18 @@
1
- import { RumiousReactor, RumiousBinding } from './reactor.js';
2
- type RumiousStateProduceCallback<T> = (draft: T) => void;
1
+ import { RumiousReactor } from './reactor.js';
2
+ import { RumiousStateBind } from '../types/index.js';
3
3
  export declare class RumiousState<T> {
4
4
  value: T;
5
- reactor: RumiousReactor<T>;
6
- constructor(value: T, reactor?: RumiousReactor<T>);
5
+ reactor?: RumiousReactor<RumiousState<T>> | undefined;
6
+ constructor(value: T, reactor?: RumiousReactor<RumiousState<T>> | undefined);
7
7
  set(value: T): void;
8
8
  get(): T;
9
- increase(count?: number): void;
10
- produce(callback: RumiousStateProduceCallback<T>): void;
9
+ slientUpdate(value: T): void;
10
+ update(updater: (value: T) => T): void;
11
+ toJSON(): string;
12
+ trigger(): void;
11
13
  }
12
- export declare function watch<T>(state: RumiousState<T>, fn: RumiousBinding<T>): void;
13
- export declare function unwatch<T>(state: RumiousState<T>, fn: RumiousBinding<T>): void;
14
14
  export declare function createState<T>(value: T): RumiousState<T>;
15
+ type StateBindFor<M> = RumiousStateBind<RumiousState<M>>;
16
+ export declare function watch<M>(state: RumiousState<M>, callback: StateBindFor<M>): void;
17
+ export declare function unwatch<M>(state: RumiousState<M>, callback: StateBindFor<M>): void;
15
18
  export {};
@@ -0,0 +1,5 @@
1
+ import type { RumiousComponent } from '../component/index.js';
2
+ export interface RumiousComponentConstructor<T = any> {
3
+ new (): RumiousComponent<T>;
4
+ tagName: string | 'rumious-component';
5
+ }
@@ -0,0 +1,3 @@
1
+ export * from './template.js';
2
+ export * from './component.js';
3
+ export * from './state.js';
@@ -1,9 +1,17 @@
1
- import type { RumiousRenderTemplate } from '../render/template.js';
2
- import type { RumiousComponentElement } from '../component/element.js';
3
- export interface RumiousJSXFactory {
4
- template(...args: any[]): RumiousRenderTemplate;
5
- createElement(...args: any[]): RumiousRenderTemplate;
6
- addDirective(...args: any[]): void;
7
- dynamicValue(...args: any[]): void;
8
- createComponent(...args: any[]): RumiousComponentElement;
1
+ import type { RumiousRenderContext } from '../render/index.js';
2
+ export interface RumiousTemplate {
3
+ (root: HTMLElement | DocumentFragment, context: RumiousRenderContext): HTMLElement;
4
+ __isTemplate: true;
9
5
  }
6
+
7
+ declare global {
8
+ namespace JSX {
9
+ type Element = RumiousTemplate;
10
+ interface IntrinsicElements {
11
+ [tagName: string]: any;
12
+ }
13
+ interface ElementChildrenAttribute {
14
+ children: {};
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,8 @@
1
+ export type RumiousChangeCommitType = 'set' | 'append' | 'prepend' | 'insert' | 'update' | 'remove';
2
+ export interface RumiousChangeCommit<T> {
3
+ state: T;
4
+ type: RumiousChangeCommitType;
5
+ value: any;
6
+ key?: number;
7
+ }
8
+ export type RumiousStateBind<T = any> = (commit: RumiousChangeCommit<T>) => void;
@@ -0,0 +1,5 @@
1
+ import type { RumiousRenderContext } from '../render/index.js';
2
+ export interface RumiousTemplate {
3
+ (root: HTMLElement | DocumentFragment, context: RumiousRenderContext): HTMLElement;
4
+ __isTemplate: true;
5
+ }
@@ -0,0 +1,2 @@
1
+ import { RumiousTemplate } from '../types/index.js';
2
+ export declare function isTemplate(fn: unknown): fn is RumiousTemplate;
package/package.json CHANGED
@@ -1,55 +1,36 @@
1
1
  {
2
- "name": "rumious",
3
- "version": "1.0.13",
4
- "description": "Simple framework for building UI ",
5
- "main": "./dist/index.cjs",
6
- "module": "./dist/index.esm.js",
7
- "exports": {
8
- ".": {
9
- "import": "./dist/index.esm.js",
10
- "require": "./dist/index.cjs",
11
- "types": "./dist/index.d.ts"
12
- }
13
- },
14
- "types": "./dist/index.d.ts",
15
- "keywords": [
16
- "rumious",
17
- "core",
18
- "framework",
19
- "typescript",
20
- "webcomponents",
21
- "ui",
22
- "smtdfc"
23
- ],
24
- "scripts": {
25
- "dec": "tsc --declaration --allowJs --emitDeclarationOnly",
26
- "type": "tsc --noEmit",
27
- "build": "rollup -c --environment MINIFY:true",
28
- "build:dev": "rollup -c ",
29
- "start": "node dist/index.js",
30
- "test": "echo \"No tests yet\"",
31
- "prepublishOnly": "npm run dec && npm run build"
32
- },
33
- "author": "smtdfc",
34
- "license": "MIT",
35
- "repository": {
36
- "type": "git",
37
- "url": "https://github.com/smtdfc/rumious"
38
- },
39
- "bugs": {
40
- "url": "https://github.com/smtdfc/rumious/issues"
41
- },
42
- "homepage": "https://github.com/smtdfc/rumious#readme",
43
- "files": [
44
- "dist/**",
45
- "README.md",
46
- "index.js",
47
- "index.d.ts"
48
- ],
49
- "engines": {
50
- "node": ">=16"
51
- },
52
- "dependencies": {
53
- "mutative": "^1.1.0"
54
- }
2
+ "name": "rumious",
3
+ "version": "2.0.1",
4
+ "description": "",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.js",
10
+ "default": "./dist/index.js"
11
+ }
12
+ },
13
+ "scripts": {
14
+ "dec": "tsc --declaration --allowJs --emitDeclarationOnly",
15
+ "type": "tsc --noEmit",
16
+ "build": "NODE_ENV=production rollup -c --environment MINIFY:true",
17
+ "build:dev": "NODE_ENV=development rollup -c",
18
+ "start": "NODE_ENV=production node dist/index.js",
19
+ "dev": "NODE_ENV=development node dist/index.js",
20
+ "test": "echo \"No tests yet\"",
21
+ "prepublishOnly": "npm run dec && npm run build"
22
+ },
23
+ "keywords": [
24
+ "rumious",
25
+ "frontend",
26
+ "framework"
27
+ ],
28
+ "author": "smtdfc",
29
+ "license": "MIT",
30
+ "devDependencies": {},
31
+ "dependencies": {},
32
+ "bugs": {
33
+ "url": "https://github.com/smtdfc/rumious/issues"
34
+ },
35
+ "homepage": "https://github.com/smtdfc/rumious#readme"
55
36
  }
@@ -0,0 +1,21 @@
1
+ import typescript from '@rollup/plugin-typescript';
2
+
3
+ const isProduction = process.env.NODE_ENV === 'production';
4
+
5
+ export default {
6
+ input: 'src/index.ts',
7
+ external: ['rumious-compiler'],
8
+ output: {
9
+ file: './dist/index.js',
10
+ format: 'esm',
11
+ sourcemap: false,
12
+ paths: {
13
+ 'rumious-compiler': !isProduction
14
+ ? '../compiler/dist/index.js'
15
+ : 'rumious-compiler'
16
+ }
17
+ },
18
+ plugins: [
19
+ typescript({ tsconfig: './tsconfig.json' })
20
+ ]
21
+ };
package/src/app/app.ts ADDED
@@ -0,0 +1,45 @@
1
+ import { RumiousRenderContext, render } from '../render/index.js';
2
+ import { RumiousTemplate } from '../types/index.js';
3
+ import { RumiousModule, RumiousModuleClass } from '../module/index.js';
4
+
5
+ export interface RumiousAppConfig {
6
+ root: HTMLElement;
7
+ }
8
+
9
+ export class RumiousApp {
10
+ public modules: any[] = [];
11
+
12
+ public context: RumiousRenderContext = new RumiousRenderContext(
13
+ this,
14
+ this
15
+ );
16
+
17
+ constructor(
18
+ public config: RumiousAppConfig
19
+ ) {}
20
+
21
+ addModule < T extends RumiousModule, O > (
22
+ ModuleClass: RumiousModuleClass < T, O > ,
23
+ options ? : O
24
+ ): T {
25
+ const instance = ModuleClass.init(this, options);
26
+ this.modules.push(instance);
27
+ return instance;
28
+ }
29
+
30
+ render(
31
+ content: RumiousTemplate
32
+ ): void {
33
+ render(
34
+ content,
35
+ this.config.root,
36
+ this.context
37
+ );
38
+ }
39
+ }
40
+
41
+ export function createApp(
42
+ config: RumiousAppConfig
43
+ ): RumiousApp {
44
+ return new RumiousApp(config);
45
+ }
@@ -0,0 +1 @@
1
+ export * from './app.js';