@onetype/framework 2.0.42 → 2.0.44

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 (351) hide show
  1. package/addons/ai/addon.js +78 -0
  2. package/addons/ai/addons/agents/item/functions/describe.js +28 -0
  3. package/addons/ai/addons/agents/item/functions/execute.js +41 -0
  4. package/addons/ai/addons/agents/item/functions/messages.js +38 -0
  5. package/addons/ai/addons/agents/item/functions/run.js +49 -0
  6. package/addons/ai/addons/agents/item/functions/schema.js +45 -0
  7. package/addons/ai/addons/agents/load.js +9 -0
  8. package/addons/ai/addons/orchestrators/item/functions/agents/execute.js +14 -0
  9. package/addons/ai/addons/orchestrators/item/functions/agents/steps.js +23 -0
  10. package/addons/ai/addons/orchestrators/item/functions/modes/action.js +131 -0
  11. package/addons/ai/addons/orchestrators/item/functions/run.js +28 -0
  12. package/addons/ai/addons/orchestrators/item/functions/utils/emit.js +11 -0
  13. package/addons/ai/addons/orchestrators/item/functions/utils/history.js +8 -0
  14. package/addons/ai/addons/orchestrators/item/functions/utils/state.js +29 -0
  15. package/addons/ai/addons/orchestrators/load.js +15 -0
  16. package/addons/ai/addons/pipelines/functions/execute.js +56 -0
  17. package/addons/ai/addons/pipelines/functions/run.js +72 -0
  18. package/addons/ai/addons/pipelines/load.js +6 -0
  19. package/addons/ai/addons/providers/functions/default.js +8 -0
  20. package/addons/ai/addons/providers/item/functions/request.js +108 -0
  21. package/addons/ai/addons/providers/items/nue.js +69 -0
  22. package/addons/ai/addons/providers/items/ollama.js +79 -0
  23. package/addons/ai/addons/providers/load.js +8 -0
  24. package/addons/ai/items/agents/steps.js +159 -0
  25. package/addons/ai/items/agents/summary.js +29 -0
  26. package/addons/ai/items/orchestrators/general.js +7 -0
  27. package/addons/ai/load.js +13 -0
  28. package/addons/ai/test/agents.js +149 -0
  29. package/addons/ai/test/index.js +63 -0
  30. package/addons/core/assets/back/functions/utils/transform.js +21 -23
  31. package/addons/core/assets/back/items/html/css.js +2 -2
  32. package/addons/core/assets/back/items/html/js.js +2 -2
  33. package/addons/core/clients/back/http/item/functions/gRPC/create.js +3 -3
  34. package/addons/core/clients/back/http/item/functions/http/create.js +3 -3
  35. package/addons/core/commands/back/functions/grpc/client.js +3 -3
  36. package/addons/core/commands/back/functions/grpc/server.js +2 -2
  37. package/addons/core/commands/core/addon.js +2 -1
  38. package/addons/core/commands/core/functions/run.js +1 -1
  39. package/addons/core/commands/core/item/functions/run.js +1 -1
  40. package/addons/core/commands/core/load.js +27 -9
  41. package/addons/core/database/back/events/addon.add.js +1 -1
  42. package/addons/core/database/back/events/middleware/addon.items.find.js +2 -2
  43. package/addons/core/database/back/events/middleware/item.crud.create.js +2 -2
  44. package/addons/core/database/back/events/middleware/item.crud.delete.js +2 -2
  45. package/addons/core/database/back/events/middleware/item.crud.update.js +2 -2
  46. package/addons/core/database/back/item/functions/create.js +4 -3
  47. package/addons/core/database/back/item/functions/delete.js +1 -1
  48. package/addons/core/database/back/item/functions/find.js +1 -1
  49. package/addons/core/database/back/item/functions/update.js +3 -3
  50. package/addons/core/database/front/events/addon.add.js +1 -1
  51. package/addons/core/servers/back/grpc/item/functions/start.js +1 -1
  52. package/addons/core/servers/back/http/item/functions/start.js +6 -6
  53. package/addons/float/overlays/css/overlay.css +35 -0
  54. package/addons/float/overlays/js/addon.js +18 -0
  55. package/addons/float/overlays/js/events/click.js +27 -0
  56. package/addons/float/overlays/js/events/escape.js +18 -0
  57. package/addons/float/overlays/js/functions/flip.js +51 -0
  58. package/addons/float/overlays/js/functions/index.js +17 -0
  59. package/addons/float/overlays/js/functions/position.js +62 -0
  60. package/addons/float/overlays/js/functions/reposition.js +29 -0
  61. package/addons/float/overlays/js/item/catch/add.js +123 -0
  62. package/addons/float/overlays/js/item/catch/remove.js +29 -0
  63. package/addons/float/popup/css/popup.css +93 -0
  64. package/addons/float/popup/js/addon.js +34 -0
  65. package/addons/float/popup/js/functions/close.js +25 -0
  66. package/addons/float/popup/js/functions/modal.js +31 -0
  67. package/addons/float/popup/js/functions/popup.js +21 -0
  68. package/addons/float/popup/js/functions/toast.js +55 -0
  69. package/addons/float/popup/js/functions/tooltip.js +34 -0
  70. package/addons/float/popup/js/items/directives/popup.js +58 -0
  71. package/addons/float/popup/js/items/directives/tooltip.js +72 -0
  72. package/addons/render/directives/front/{js/#register/addon.js → addon.js} +8 -8
  73. package/addons/render/directives/front/{js/functions → functions}/process/attributes.js +7 -2
  74. package/addons/render/directives/front/{js/functions → functions}/process/match.js +14 -9
  75. package/addons/render/directives/front/functions/process.js +88 -0
  76. package/{lib/items/directives → addons/render/directives/front/items/self}/1000-render.js +1 -0
  77. package/{lib/items/directives → addons/render/directives/front/items/self}/110-show.js +3 -5
  78. package/{lib/items/directives → addons/render/directives/front/items/self}/160-slot.js +1 -0
  79. package/{lib/items/directives → addons/render/directives/front/items/self}/200-for.js +3 -3
  80. package/addons/render/directives/front/items/self/2000-base.js +45 -0
  81. package/addons/render/directives/front/items/self/500-click-outside.js +45 -0
  82. package/addons/render/directives/front/items/self/500-events.js +68 -0
  83. package/addons/render/directives/front/items/self/500-mouse-enter.js +62 -0
  84. package/addons/render/directives/front/items/self/500-mouse-leave.js +62 -0
  85. package/{lib/items/directives → addons/render/directives/front/items/self}/650-fetch.js +2 -3
  86. package/{lib/items/directives → addons/render/directives/front/items/self}/660-form.js +5 -6
  87. package/addons/render/directives/front/items/self/750-node.js +43 -0
  88. package/addons/render/elements/front/items/directives/element.js +7 -1
  89. package/{lib/items/elements → addons/render/elements/front/items/self}/cards/pricing/pricing.js +2 -2
  90. package/addons/render/elements/front/items/self/core/builder/builder.css +180 -0
  91. package/addons/render/elements/front/items/self/core/builder/builder.js +257 -0
  92. package/addons/render/elements/front/items/self/core/repeater/repeater.css +197 -0
  93. package/addons/render/elements/front/items/self/core/repeater/repeater.js +224 -0
  94. package/{lib/items/elements → addons/render/elements/front/items/self}/form/button/button.js +2 -2
  95. package/{lib/items/elements → addons/render/elements/front/items/self}/form/checkbox/checkbox.js +21 -8
  96. package/{lib/items/elements → addons/render/elements/front/items/self}/form/color/color.css +28 -0
  97. package/{lib/items/elements → addons/render/elements/front/items/self}/form/color/color.js +35 -13
  98. package/{lib/items/elements → addons/render/elements/front/items/self}/form/date/date.js +3 -4
  99. package/{lib/items/elements → addons/render/elements/front/items/self}/form/input/input.js +40 -4
  100. package/{lib/items/elements → addons/render/elements/front/items/self}/form/radio/radio.js +24 -6
  101. package/{lib/items/elements → addons/render/elements/front/items/self}/form/rating/rating.js +2 -1
  102. package/{lib/items/elements → addons/render/elements/front/items/self}/form/select/select.js +3 -7
  103. package/{lib/items/elements → addons/render/elements/front/items/self}/form/slider/slider.js +89 -74
  104. package/{lib/items/elements → addons/render/elements/front/items/self}/form/tags/tags.js +5 -5
  105. package/{lib/items/elements → addons/render/elements/front/items/self}/form/textarea/textarea.js +41 -6
  106. package/{lib/items/elements → addons/render/elements/front/items/self}/form/toggle/toggle.css +4 -0
  107. package/{lib/items/elements → addons/render/elements/front/items/self}/form/toggle/toggle.js +7 -8
  108. package/{lib/items/elements → addons/render/elements/front/items/self}/global/code/code.js +3 -4
  109. package/{lib/items/elements → addons/render/elements/front/items/self}/global/faq/faq.js +2 -2
  110. package/{lib/items/elements → addons/render/elements/front/items/self}/global/heading/heading.js +6 -17
  111. package/addons/render/elements/front/items/self/global/markdown/markdown.js +26 -0
  112. package/{lib/items/elements → addons/render/elements/front/items/self}/global/menu/menu.js +1 -1
  113. package/{lib/items/elements → addons/render/elements/front/items/self}/global/tags/tags.js +1 -1
  114. package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/navbar/navbar.js +5 -1
  115. package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/sidebar/sidebar.js +1 -1
  116. package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/tabs/tabs.js +1 -1
  117. package/{lib/items/elements → addons/render/elements/front/items/self}/status/code/code.css +1 -1
  118. package/{lib/items/elements → addons/render/elements/front/items/self}/status/empty/empty.css +1 -1
  119. package/{lib/items/elements → addons/render/elements/front/items/self}/status/empty/empty.js +4 -0
  120. package/{lib/items/elements → addons/render/elements/front/items/self}/status/error/error.css +1 -1
  121. package/{lib/items/elements → addons/render/elements/front/items/self}/status/error/error.js +1 -1
  122. package/{lib/items/elements → addons/render/elements/front/items/self}/status/loading/loading.css +8 -1
  123. package/addons/render/html/load.js +0 -1
  124. package/addons/render/pages/core/addon.js +16 -1
  125. package/addons/render/pages/core/load.js +1 -1
  126. package/addons/render/pages/front/events/click.js +2 -2
  127. package/addons/render/pages/front/events/load.js +6 -16
  128. package/addons/render/pages/front/functions/change.js +21 -110
  129. package/addons/render/pages/front/functions/match.js +2 -3
  130. package/addons/render/pages/front/functions/open.js +3 -35
  131. package/addons/render/pages/front/functions/resolve.js +30 -0
  132. package/addons/render/pages/front/item/catch/add.js +12 -10
  133. package/addons/render/pages/front/item/catch/remove.js +5 -7
  134. package/addons/render/pages/front/item/functions/enter.js +15 -28
  135. package/addons/render/pages/front/item/functions/leave.js +6 -8
  136. package/addons/render/pages/front/items/commands/change.js +60 -0
  137. package/addons/render/pages/front/items/commands/list.js +38 -0
  138. package/addons/render/pages/front/items/directives/change.js +1 -1
  139. package/addons/render/transforms/css/transforms.css +4 -0
  140. package/addons/render/transforms/{addon.js → js/addon.js} +7 -0
  141. package/addons/render/transforms/js/item/functions/run.js +87 -0
  142. package/addons/services/cloudflare/images/back/addon.js +23 -0
  143. package/addons/services/cloudflare/images/back/expose.js +22 -0
  144. package/addons/services/cloudflare/images/back/functions/api.js +47 -0
  145. package/addons/services/cloudflare/images/back/functions/meta/detect.js +28 -0
  146. package/addons/services/cloudflare/images/back/functions/meta/dimensions/gif.js +11 -0
  147. package/addons/services/cloudflare/images/back/functions/meta/dimensions/jpeg.js +31 -0
  148. package/addons/services/cloudflare/images/back/functions/meta/dimensions/png.js +11 -0
  149. package/addons/services/cloudflare/images/back/functions/meta/dimensions/webp.js +36 -0
  150. package/addons/services/cloudflare/images/back/functions/meta.js +16 -0
  151. package/addons/services/cloudflare/images/back/items/commands/delete.js +38 -0
  152. package/addons/services/cloudflare/images/back/items/commands/get.js +56 -0
  153. package/addons/services/cloudflare/images/back/items/commands/list.js +49 -0
  154. package/addons/services/cloudflare/images/back/items/commands/upload.js +79 -0
  155. package/addons/services/cloudflare/images/back/load.js +21 -0
  156. package/addons/services/cloudflare/images/front/items/elements/browse/browse.css +235 -0
  157. package/addons/services/cloudflare/images/front/items/elements/browse/browse.js +193 -0
  158. package/addons/services/cloudflare/images/front/items/elements/input/input.css +154 -0
  159. package/addons/services/cloudflare/images/front/items/elements/input/input.js +147 -0
  160. package/addons/services/cloudflare/images/sql.txt +43 -0
  161. package/lib/browser.js +16 -1
  162. package/lib/events.js +12 -12
  163. package/lib/load.js +11 -49
  164. package/lib/src/classes/addon/class.js +1 -2
  165. package/lib/src/classes/addon/classes/item/mixins/get.js +3 -3
  166. package/lib/src/classes/addon/classes/item/mixins/set.js +3 -5
  167. package/lib/src/classes/addon/classes/item/mixins/store.js +1 -1
  168. package/lib/src/classes/addon/classes/render/class.js +8 -22
  169. package/lib/src/classes/addon/classes/render/mixins/compile.js +6 -4
  170. package/lib/src/classes/addon/classes/render/mixins/dom.js +3 -1
  171. package/lib/src/classes/addon/classes/render/mixins/events.js +30 -43
  172. package/lib/src/classes/addon/classes/render/mixins/get.js +0 -5
  173. package/lib/src/classes/addon/classes/render/mixins/methods.js +105 -40
  174. package/lib/src/classes/addon/classes/render/mixins/process.js +7 -3
  175. package/lib/src/classes/addon/classes/render/mixins/set.js +3 -1
  176. package/lib/src/classes/addon/mixins/fields.js +4 -6
  177. package/lib/src/classes/addon/mixins/functions.js +11 -11
  178. package/lib/src/classes/addon/mixins/items.js +17 -9
  179. package/lib/src/classes/addon/mixins/render.js +1 -1
  180. package/lib/src/classes/addon/mixins/table.js +1 -1
  181. package/lib/src/classes/error/class.js +10 -0
  182. package/lib/src/mixins/addons.js +7 -20
  183. package/lib/src/mixins/assets.js +1 -1
  184. package/lib/src/mixins/base.js +14 -0
  185. package/lib/src/mixins/data.js +14 -14
  186. package/lib/src/mixins/dependencies.js +5 -5
  187. package/lib/src/mixins/dom.js +204 -201
  188. package/lib/src/mixins/emitter.js +13 -14
  189. package/lib/src/mixins/error.js +14 -1
  190. package/lib/src/mixins/function.js +1 -0
  191. package/lib/src/mixins/generate.js +1 -1
  192. package/lib/src/mixins/helper.js +3 -31
  193. package/lib/{items/elements/global/markdown → src/mixins}/markdown.js +90 -139
  194. package/lib/src/mixins/middleware.js +2 -2
  195. package/lib/src/mixins/observer.js +337 -0
  196. package/lib/src/mixins/request.js +2 -2
  197. package/lib/src/mixins/state.js +17 -3
  198. package/lib/src/onetype.js +13 -18
  199. package/lib/styles/classes/layout.css +1 -3
  200. package/lib/styles/variables.css +2 -1
  201. package/package.json +5 -7
  202. package/README.md +0 -86
  203. package/addons/ai/agents/addon.js +0 -23
  204. package/addons/ai/agents/functions/parse.js +0 -129
  205. package/addons/ai/agents/item/functions/run.js +0 -218
  206. package/addons/ai/agents/load.js +0 -8
  207. package/addons/ai/orchestrator/addon.js +0 -25
  208. package/addons/ai/orchestrator/item/functions/run.js +0 -277
  209. package/addons/ai/orchestrator/item/functions/state/agent.js +0 -41
  210. package/addons/ai/orchestrator/item/functions/state/conclusion.js +0 -27
  211. package/addons/ai/orchestrator/item/functions/state/done.js +0 -40
  212. package/addons/ai/orchestrator/item/functions/state/execute.js +0 -16
  213. package/addons/ai/orchestrator/item/functions/state/goal.js +0 -34
  214. package/addons/ai/orchestrator/item/functions/state/input.js +0 -55
  215. package/addons/ai/orchestrator/item/functions/state/summary.js +0 -26
  216. package/addons/ai/orchestrator/items/agents/achievable.js +0 -37
  217. package/addons/ai/orchestrator/items/agents/agent.js +0 -46
  218. package/addons/ai/orchestrator/items/agents/conclusion.js +0 -41
  219. package/addons/ai/orchestrator/items/agents/done.js +0 -40
  220. package/addons/ai/orchestrator/items/agents/goal.js +0 -58
  221. package/addons/ai/orchestrator/items/agents/input.js +0 -34
  222. package/addons/ai/orchestrator/items/agents/planner.js +0 -30
  223. package/addons/ai/orchestrator/items/agents/summary.js +0 -29
  224. package/addons/ai/orchestrator/items/chat.js +0 -10
  225. package/addons/ai/orchestrator/load.js +0 -25
  226. package/addons/ai/providers/addon.js +0 -16
  227. package/addons/ai/providers/functions/default.js +0 -14
  228. package/addons/ai/providers/item/functions/request.js +0 -62
  229. package/addons/ai/providers/items/nue.js +0 -98
  230. package/addons/ai/providers/load.js +0 -10
  231. package/addons/core/queue/index.js +0 -66
  232. package/addons/float/modals/front/css/modals.css +0 -26
  233. package/addons/float/modals/front/js/addon.js +0 -10
  234. package/addons/float/modals/front/js/item/catch/add.js +0 -48
  235. package/addons/float/modals/front/js/item/catch/remove.js +0 -9
  236. package/addons/float/overlays/front/css/overlays.css +0 -29
  237. package/addons/float/overlays/front/js/addon.js +0 -17
  238. package/addons/float/overlays/front/js/events/click.js +0 -27
  239. package/addons/float/overlays/front/js/events/escape.js +0 -18
  240. package/addons/float/overlays/front/js/functions/flip.js +0 -74
  241. package/addons/float/overlays/front/js/functions/index.js +0 -17
  242. package/addons/float/overlays/front/js/functions/position.js +0 -63
  243. package/addons/float/overlays/front/js/item/catch/add.js +0 -121
  244. package/addons/float/overlays/front/js/item/catch/remove.js +0 -16
  245. package/addons/float/popups/css/popups.css +0 -4
  246. package/addons/float/popups/js/addon.js +0 -18
  247. package/addons/float/popups/js/item/catch/add.js +0 -7
  248. package/addons/float/popups/js/item/catch/remove.js +0 -7
  249. package/addons/float/popups/js/item/catch/set.js +0 -73
  250. package/addons/float/popups/js/items/directives/popup.js +0 -54
  251. package/addons/float/toasts/addon.js +0 -17
  252. package/addons/float/toasts/item/catch/add.js +0 -7
  253. package/addons/float/toasts/item/catch/remove.js +0 -7
  254. package/addons/float/toasts/item/catch/set.js +0 -86
  255. package/addons/float/toasts/items/elements/toast/toast.css +0 -84
  256. package/addons/float/toasts/items/elements/toast/toast.js +0 -61
  257. package/addons/float/tooltips/addon.js +0 -15
  258. package/addons/float/tooltips/item/catch/add.js +0 -7
  259. package/addons/float/tooltips/item/catch/remove.js +0 -26
  260. package/addons/float/tooltips/item/catch/set.js +0 -65
  261. package/addons/float/tooltips/items/directives/tooltip.js +0 -74
  262. package/addons/float/tooltips/items/elements/tooltip.css +0 -64
  263. package/addons/float/tooltips/items/elements/tooltip.js +0 -42
  264. package/addons/render/directives/front/js/functions/process.js +0 -57
  265. package/addons/render/html/items/seo/theme-color.js +0 -12
  266. package/addons/render/transforms/item/functions/run.js +0 -18
  267. package/docs/addons.md +0 -281
  268. package/docs/architecture.md +0 -238
  269. package/docs/commands.md +0 -308
  270. package/docs/database.md +0 -171
  271. package/docs/frontend.md +0 -396
  272. package/docs/servers.md +0 -187
  273. package/examples/basic-api/README.md +0 -34
  274. package/examples/basic-api/addons/tasks/addon.js +0 -10
  275. package/examples/basic-api/addons/tasks/items/commands/create.js +0 -22
  276. package/examples/basic-api/addons/tasks/items/commands/delete.js +0 -26
  277. package/examples/basic-api/addons/tasks/items/commands/list.js +0 -17
  278. package/examples/basic-api/addons/tasks/items/commands/toggle.js +0 -26
  279. package/examples/basic-api/addons/tasks/load.js +0 -8
  280. package/examples/basic-api/index.js +0 -15
  281. package/examples/basic-api/package.json +0 -7
  282. package/examples/basic-front/back/assets.js +0 -12
  283. package/examples/basic-front/back/index.js +0 -13
  284. package/examples/basic-front/back/items/commands/html.js +0 -14
  285. package/examples/basic-front/back/items/commands/test.js +0 -19
  286. package/examples/basic-front/back/items/html/fonts.js +0 -12
  287. package/examples/basic-front/front/pages/home.js +0 -16
  288. package/examples/basic-front/front/styles/main.css +0 -31
  289. package/examples/basic-front/front/test.js +0 -7
  290. package/examples/basic-front/package.json +0 -7
  291. package/lib/items/directives/500-blur.js +0 -46
  292. package/lib/items/directives/500-change.js +0 -53
  293. package/lib/items/directives/500-click-outside.js +0 -50
  294. package/lib/items/directives/500-click.js +0 -52
  295. package/lib/items/directives/500-double-click.js +0 -52
  296. package/lib/items/directives/500-focus.js +0 -46
  297. package/lib/items/directives/500-input.js +0 -46
  298. package/lib/items/directives/500-keydown.js +0 -53
  299. package/lib/items/directives/500-keyup.js +0 -53
  300. package/lib/items/directives/500-mouse-enter.js +0 -61
  301. package/lib/items/directives/500-mouse-leave.js +0 -61
  302. package/lib/items/directives/500-mouse-move.js +0 -45
  303. package/lib/items/directives/500-scroll.js +0 -45
  304. package/lib/items/directives/500-submit.js +0 -52
  305. package/lib/items/elements/ai/chat/chat.css +0 -710
  306. package/lib/items/elements/ai/chat/chat.js +0 -429
  307. package/lib/src/mixins/logger.js +0 -83
  308. package/lib/styles/queries.css +0 -6
  309. package/lists.md +0 -586
  310. package/orchestrator.md +0 -288
  311. /package/addons/modules/shortcuts/front/{#register/addon.js → addon.js} +0 -0
  312. /package/addons/render/directives/front/{js/functions → functions}/process/data.js +0 -0
  313. /package/{lib/items/directives → addons/render/directives/front/items/self}/100-if.js +0 -0
  314. /package/{lib/items/directives → addons/render/directives/front/items/self}/700-text.js +0 -0
  315. /package/{lib/items/directives → addons/render/directives/front/items/self}/750-html.js +0 -0
  316. /package/addons/render/elements/front/{#register/addon.js → addon.js} +0 -0
  317. /package/{lib/items/elements → addons/render/elements/front/items/self}/cards/pricing/pricing.css +0 -0
  318. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/button/button.css +0 -0
  319. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/checkbox/checkbox.css +0 -0
  320. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/date/date.css +0 -0
  321. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/field/field.css +0 -0
  322. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/field/field.js +0 -0
  323. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/input/input.css +0 -0
  324. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/radio/radio.css +0 -0
  325. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/rating/rating.css +0 -0
  326. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/section/section.css +0 -0
  327. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/section/section.js +0 -0
  328. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/select/select.css +0 -0
  329. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/slider/slider.css +0 -0
  330. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/tags/tags.css +0 -0
  331. /package/{lib/items/elements → addons/render/elements/front/items/self}/form/textarea/textarea.css +0 -0
  332. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/code/code.css +0 -0
  333. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/faq/faq.css +0 -0
  334. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/heading/heading.css +0 -0
  335. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/markdown/markdown.css +0 -0
  336. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/menu/menu.css +0 -0
  337. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/notice/notice.css +0 -0
  338. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/notice/notice.js +0 -0
  339. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/parameters/parameters.css +0 -0
  340. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/parameters/parameters.js +0 -0
  341. /package/{lib/items/elements → addons/render/elements/front/items/self}/global/tags/tags.css +0 -0
  342. /package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/navbar/navbar.css +0 -0
  343. /package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/sidebar/sidebar.css +0 -0
  344. /package/{lib/items/elements → addons/render/elements/front/items/self}/navigation/tabs/tabs.css +0 -0
  345. /package/{lib/items/elements → addons/render/elements/front/items/self}/status/code/code.js +0 -0
  346. /package/{lib/items/elements → addons/render/elements/front/items/self}/status/loading/loading.js +0 -0
  347. /package/addons/render/transforms/{functions → js/functions}/data.js +0 -0
  348. /package/addons/render/transforms/{functions → js/functions}/run.js +0 -0
  349. /package/addons/render/transforms/{functions → js/functions}/runtime.js +0 -0
  350. /package/addons/render/transforms/{item → js/item}/functions/load.js +0 -0
  351. /package/addons/render/transforms/{items/directives → js/items/self}/transform.js +0 -0
package/lib/load.js CHANGED
@@ -3,7 +3,7 @@ import OneType from './src/onetype.js';
3
3
  const onetype = new OneType();
4
4
 
5
5
  /* Framework */
6
- onetype.Assets('framework', import.meta.url, { js: { path: '.', exclude: ['load.js', 'items', 'styles'] } });
6
+ onetype.Assets('framework', import.meta.url, { js: { path: '.', exclude: ['load.js', 'styles'] } });
7
7
  onetype.Assets('styles', import.meta.url, { css: 'styles' });
8
8
 
9
9
  /* Core */
@@ -20,60 +20,22 @@ onetype.Assets('shortcuts', import.meta.url, { js: '../addons/modules/shortcuts/
20
20
  onetype.Assets('sources', import.meta.url, { js: '../addons/modules/sources/front' });
21
21
 
22
22
  /* Render */
23
- onetype.Assets('directives', import.meta.url, { js: '../addons/render/directives/front' });
24
- onetype.Assets('directives/items', import.meta.url, { js: 'items/directives' });
25
- onetype.Assets('transforms', import.meta.url, { js: '../addons/render/transforms' });
23
+ onetype.Assets('directives', import.meta.url, { js: { path: '../addons/render/directives/front', exclude: ['../addons/render/directives/front/items/self'] } });
24
+ onetype.Assets('directives/items', import.meta.url, { js: '../addons/render/directives/front/items/self' });
25
+ onetype.Assets('transforms', import.meta.url, { js: { path: '../addons/render/transforms/js', exclude: ['../addons/render/transforms/js/items/self'] }, css: '../addons/render/transforms/css' });
26
+ onetype.Assets('transforms/items', import.meta.url, { js: '../addons/render/transforms/js/items/self' });
26
27
  onetype.Assets('pages', import.meta.url, { js: '../addons/render/pages', css: '../addons/render/pages/front' });
27
- onetype.Assets('elements', import.meta.url, { js: '../addons/render/elements/front', css: '../addons/render/elements/front' });
28
+ onetype.Assets('elements', import.meta.url, { js: { path: '../addons/render/elements/front', exclude: ['../addons/render/elements/front/items/self'] }, css: { path: '../addons/render/elements/front', exclude: ['../addons/render/elements/front/items/self'] } });
29
+ onetype.Assets('elements/items', import.meta.url, { js: '../addons/render/elements/front/items/self', css: '../addons/render/elements/front/items/self' });
28
30
 
29
31
  /* Float */
30
32
  onetype.Assets('float', import.meta.url, { js: '../addons/float', css: '../addons/float' });
31
33
 
32
34
  /* AI */
33
- onetype.Assets('ai', import.meta.url, { js: '../addons/ai' });
34
-
35
- /* Elements — Form */
36
- onetype.Assets('elements/form/button', import.meta.url, { js: 'items/elements/form/button', css: 'items/elements/form/button' });
37
- onetype.Assets('elements/form/checkbox', import.meta.url, { js: 'items/elements/form/checkbox', css: 'items/elements/form/checkbox' });
38
- onetype.Assets('elements/form/color', import.meta.url, { js: 'items/elements/form/color', css: 'items/elements/form/color' });
39
- onetype.Assets('elements/form/date', import.meta.url, { js: 'items/elements/form/date', css: 'items/elements/form/date' });
40
- onetype.Assets('elements/form/field', import.meta.url, { js: 'items/elements/form/field', css: 'items/elements/form/field' });
41
- onetype.Assets('elements/form/input', import.meta.url, { js: 'items/elements/form/input', css: 'items/elements/form/input' });
42
- onetype.Assets('elements/form/radio', import.meta.url, { js: 'items/elements/form/radio', css: 'items/elements/form/radio' });
43
- onetype.Assets('elements/form/rating', import.meta.url, { js: 'items/elements/form/rating', css: 'items/elements/form/rating' });
44
- onetype.Assets('elements/form/section', import.meta.url, { js: 'items/elements/form/section', css: 'items/elements/form/section' });
45
- onetype.Assets('elements/form/select', import.meta.url, { js: 'items/elements/form/select', css: 'items/elements/form/select' });
46
- onetype.Assets('elements/form/slider', import.meta.url, { js: 'items/elements/form/slider', css: 'items/elements/form/slider' });
47
- onetype.Assets('elements/form/tags', import.meta.url, { js: 'items/elements/form/tags', css: 'items/elements/form/tags' });
48
- onetype.Assets('elements/form/textarea', import.meta.url, { js: 'items/elements/form/textarea', css: 'items/elements/form/textarea' });
49
- onetype.Assets('elements/form/toggle', import.meta.url, { js: 'items/elements/form/toggle', css: 'items/elements/form/toggle' });
50
-
51
- /* Elements — Global */
52
- onetype.Assets('elements/global/code', import.meta.url, { js: 'items/elements/global/code', css: 'items/elements/global/code' });
53
- onetype.Assets('elements/global/faq', import.meta.url, { js: 'items/elements/global/faq', css: 'items/elements/global/faq' });
54
- onetype.Assets('elements/global/heading', import.meta.url, { js: 'items/elements/global/heading', css: 'items/elements/global/heading' });
55
- onetype.Assets('elements/global/markdown', import.meta.url, { js: 'items/elements/global/markdown', css: 'items/elements/global/markdown' });
56
- onetype.Assets('elements/global/menu', import.meta.url, { js: 'items/elements/global/menu', css: 'items/elements/global/menu' });
57
- onetype.Assets('elements/global/notice', import.meta.url, { js: 'items/elements/global/notice', css: 'items/elements/global/notice' });
58
- onetype.Assets('elements/global/parameters', import.meta.url, { js: 'items/elements/global/parameters', css: 'items/elements/global/parameters' });
59
- onetype.Assets('elements/global/tags', import.meta.url, { js: 'items/elements/global/tags', css: 'items/elements/global/tags' });
60
-
61
- /* Elements — Cards */
62
- onetype.Assets('elements/cards/pricing', import.meta.url, { js: 'items/elements/cards/pricing', css: 'items/elements/cards/pricing' });
63
-
64
- /* Elements — Navigation */
65
- onetype.Assets('elements/navigation/navbar', import.meta.url, { js: 'items/elements/navigation/navbar', css: 'items/elements/navigation/navbar' });
66
- onetype.Assets('elements/navigation/sidebar', import.meta.url, { js: 'items/elements/navigation/sidebar', css: 'items/elements/navigation/sidebar' });
67
- onetype.Assets('elements/navigation/tabs', import.meta.url, { js: 'items/elements/navigation/tabs', css: 'items/elements/navigation/tabs' });
68
-
69
- /* Elements — AI */
70
- onetype.Assets('elements/ai/chat', import.meta.url, { js: 'items/elements/ai/chat', css: 'items/elements/ai/chat' });
71
-
72
- /* Elements — Status */
73
- onetype.Assets('elements/status/loading', import.meta.url, { js: 'items/elements/status/loading', css: 'items/elements/status/loading' });
74
- onetype.Assets('elements/status/empty', import.meta.url, { js: 'items/elements/status/empty', css: 'items/elements/status/empty' });
75
- onetype.Assets('elements/status/error', import.meta.url, { js: 'items/elements/status/error', css: 'items/elements/status/error' });
76
- onetype.Assets('elements/status/code', import.meta.url, { js: 'items/elements/status/code', css: 'items/elements/status/code' });
35
+ onetype.Assets('ai', import.meta.url, { js: '../addons/ai', css: '../addons/ai' });
36
+
37
+ /* Services */
38
+ onetype.Assets('cloudflare/images', import.meta.url, { js: '../addons/services/cloudflare/images/front', css: '../addons/services/cloudflare/images/front' });
77
39
 
78
40
  global.$ot = onetype.$ot;
79
41
 
@@ -64,8 +64,7 @@ class OneTypeAddon
64
64
  removed: [],
65
65
  modify: [],
66
66
  modified: [],
67
- get: [],
68
- set: []
67
+ get: []
69
68
  }
70
69
  };
71
70
  }
@@ -48,13 +48,13 @@ const AddonItemGet =
48
48
  }
49
49
  catch(error)
50
50
  {
51
- throw new Error('Error getting value on field ' + key + '. ' + error.message)
51
+ throw this.addon.onetype.Error(500, 'Error getting value on field :field:.', {field: key});
52
52
  }
53
53
 
54
54
  if(callback)
55
55
  {
56
56
  this.addon.items.callbacks.get.forEach(callback => callback(this, key, value));
57
- this.addon.onetype.Emit('addon.item.get', this, key, value);
57
+ this.addon.onetype.Emit('@addon.item.get', this, key, value);
58
58
  }
59
59
 
60
60
  return value;
@@ -64,7 +64,7 @@ const AddonItemGet =
64
64
  {
65
65
  let data = {};
66
66
 
67
- Object.entries(data).forEach(([key, value]) =>
67
+ Object.keys(this.data).forEach((key) =>
68
68
  {
69
69
  data[key] = this.Get(key, callback);
70
70
  })
@@ -35,15 +35,13 @@ const AddonItemSet =
35
35
  }
36
36
  catch(error)
37
37
  {
38
- throw new Error('Error setting value on field ' + key + '. ' + error.message)
38
+ throw this.addon.onetype.Error(500, 'Error setting value on field :field:.', {field: key});
39
39
  }
40
40
 
41
41
  if(callback)
42
42
  {
43
43
  this.addon.items.callbacks.modify.forEach(callback => callback(this, key, value, prevValue));
44
- this.addon.items.callbacks.set.forEach(callback => callback(this, key, value));
45
- this.addon.onetype.Emit('addon.item.modify', this, key, value, prevValue);
46
- this.addon.onetype.Emit('addon.item.set', this, key, value, prevValue);
44
+ this.addon.onetype.Emit('@addon.item.modify', this, key, value, prevValue);
47
45
  }
48
46
 
49
47
  this.data[key] = value;
@@ -51,7 +49,7 @@ const AddonItemSet =
51
49
  if(callback)
52
50
  {
53
51
  this.addon.items.callbacks.modified.forEach(callback => callback(this, key, value, prevValue));
54
- this.addon.onetype.Emit('addon.item.modified', this, key, value, prevValue);
52
+ this.addon.onetype.Emit('@addon.item.modified', this, key, value, prevValue);
55
53
  }
56
54
  },
57
55
 
@@ -9,7 +9,7 @@ const AddonItemStore =
9
9
 
10
10
  if(value !== undefined)
11
11
  {
12
- return onetype.DataDefineOne(this.store[key], [typeof value]);
12
+ return this.addon.onetype.DataDefineOne(this.store[key], [typeof value]);
13
13
  }
14
14
 
15
15
  return this.store[key];
@@ -14,7 +14,7 @@ class OneTypeAddonRender
14
14
  this.Name = name;
15
15
  this.Callback = callback;
16
16
 
17
- this._updateTimeout = null;
17
+ this.UpdateFrame = null;
18
18
  this.Data = { state: addon.onetype.StateGet() };
19
19
  this.Attributes = {};
20
20
  this.Item = null;
@@ -35,8 +35,6 @@ class OneTypeAddonRender
35
35
  destroy: [],
36
36
  error: [],
37
37
  ready: [],
38
- visible: [],
39
- resize: [],
40
38
  compile: []
41
39
  };
42
40
 
@@ -49,10 +47,7 @@ class OneTypeAddonRender
49
47
  rendering: false
50
48
  };
51
49
 
52
- this.Observer = {
53
- visibility: undefined,
54
- resize: undefined
55
- };
50
+ this.Emitters = [];
56
51
 
57
52
  const proxy = new Proxy(this, {
58
53
  get(target, prop)
@@ -76,9 +71,13 @@ class OneTypeAddonRender
76
71
  const changed = target.Data[prop] !== value;
77
72
  target.Data[prop] = value;
78
73
 
79
- if(changed && target.State.ready && !target.State.rendering)
74
+ if(changed && target.State.ready && !target.State.rendering && !target.UpdateFrame)
80
75
  {
81
- target._scheduleUpdate();
76
+ target.UpdateFrame = requestAnimationFrame(() =>
77
+ {
78
+ target.UpdateFrame = null;
79
+ target.Update();
80
+ });
82
81
  }
83
82
  }
84
83
 
@@ -89,19 +88,6 @@ class OneTypeAddonRender
89
88
  return proxy;
90
89
  }
91
90
 
92
- _scheduleUpdate()
93
- {
94
- if(this._updateTimeout)
95
- {
96
- clearTimeout(this._updateTimeout);
97
- }
98
-
99
- this._updateTimeout = setTimeout(() =>
100
- {
101
- this._updateTimeout = null;
102
- this.Update();
103
- }, 16);
104
- }
105
91
  }
106
92
 
107
93
  Object.assign(OneTypeAddonRender.prototype, RenderGet);
@@ -1,3 +1,5 @@
1
+ import onetype from '#framework/load.js';
2
+
1
3
  const RenderCompile =
2
4
  {
3
5
  Compile(html, data = null)
@@ -13,7 +15,7 @@ const RenderCompile =
13
15
 
14
16
  const prefix = this.GetAddon().GetName().charAt(0).toLowerCase();
15
17
 
16
- element.classList.add(prefix + '-' + this.GetOneType().GenerateHash(this.GetAddon().GetName() + '-' + this.GetName()));
18
+ element.classList.add(prefix + '-' + onetype.GenerateHash(this.GetAddon().GetName() + '-' + this.GetName()));
17
19
  }
18
20
 
19
21
  const compile = {
@@ -32,11 +34,11 @@ const RenderCompile =
32
34
 
33
35
  const start = performance.now();
34
36
 
35
- this.GetOneType().Emit('addon.render.compile.before', this, compile, element, '0');
37
+ onetype.Emit('@addon.render.compile.before', this, compile, element, '0');
36
38
 
37
39
  this.CompileWalkNodes(element, '0', compile);
38
40
 
39
- this.GetOneType().Emit('addon.render.compile.after', this, compile, element, '0');
41
+ onetype.Emit('@addon.render.compile.after', this, compile, element, '0');
40
42
 
41
43
  compile.time = performance.now() - start;
42
44
 
@@ -54,7 +56,7 @@ const RenderCompile =
54
56
 
55
57
  const parent = node.parentNode;
56
58
 
57
- this.GetOneType().Emit('addon.render.compile.node', this, compile, node, identifier);
59
+ onetype.Emit('@addon.render.compile.node', this, compile, node, identifier);
58
60
 
59
61
  if(node.parentNode !== parent)
60
62
  {
@@ -1,3 +1,5 @@
1
+ import onetype from '#framework/load.js';
2
+
1
3
  const RenderDOM =
2
4
  {
3
5
  DOMCreateElement(html)
@@ -9,7 +11,7 @@ const RenderDOM =
9
11
 
10
12
  DOMPatchElement(current, target)
11
13
  {
12
- return this.Addon.onetype.DOMPatch(current, target);
14
+ return onetype.DOMPatch(current, target);
13
15
  },
14
16
  };
15
17
 
@@ -1,10 +1,12 @@
1
+ import onetype from '#framework/load.js';
2
+
1
3
  const RenderEvents =
2
4
  {
3
5
  EventOn(event, callback)
4
6
  {
5
7
  if(!(event in this.Events))
6
8
  {
7
- throw new Error('Event ' + event + ' doesn\'t exist.');
9
+ throw onetype.Error(400, 'Event :event: doesn\'t exist.', {event});
8
10
  }
9
11
 
10
12
  const run = {
@@ -22,7 +24,7 @@ const RenderEvents =
22
24
  {
23
25
  this.Events[event].push(callback);
24
26
  }
25
-
27
+
26
28
  return this;
27
29
  },
28
30
 
@@ -30,7 +32,7 @@ const RenderEvents =
30
32
  {
31
33
  if(!(event in this.Events))
32
34
  {
33
- throw new Error('Event ' + event + ' doesn\'t exist.');
35
+ throw onetype.Error(400, 'Event :event: doesn\'t exist.', {event});
34
36
  }
35
37
 
36
38
  const skip = {
@@ -71,7 +73,7 @@ const RenderEvents =
71
73
  {
72
74
  if(!(event in this.Events))
73
75
  {
74
- throw new Error('Event ' + event + ' doesn\'t exist.');
76
+ throw onetype.Error(400, 'Event :event: doesn\'t exist.', {event});
75
77
  }
76
78
 
77
79
  if(!callback)
@@ -100,51 +102,36 @@ const RenderEvents =
100
102
  return this.EventOn(event, onceWrapper);
101
103
  },
102
104
 
103
- EventInitObserver(type)
105
+ EventCleanup()
104
106
  {
105
- if(this.Observer[type])
107
+ /* Global emitters */
108
+ for(const emitter of this.Emitters)
106
109
  {
107
- return;
110
+ onetype.EmitOff(emitter.name, emitter.id);
108
111
  }
109
112
 
110
- this.EventOn('mount', () =>
113
+ this.Emitters = [];
114
+
115
+ /* Visibility / Resize observers */
116
+ if(this.Element)
111
117
  {
112
- if(type === 'visibility')
113
- {
114
- this.Observer[type] = new IntersectionObserver(entries =>
115
- {
116
- entries.forEach(entry =>
117
- {
118
- if(entry.isIntersecting)
119
- {
120
- this.EventEmit('visible', entry);
121
- }
122
- });
123
- }, {threshold: 0.1});
124
- }
125
- else if(type === 'resize')
126
- {
127
- this.Observer[type] = new ResizeObserver(entries =>
128
- {
129
- entries.forEach(entry => this.EventEmit('resize', entry));
130
- });
131
- }
132
-
133
- this.Observer[type].observe(this.Element);
134
- });
135
- },
136
-
137
- EventCleanup()
138
- {
139
- Object.keys(this.Observer).forEach(key =>
118
+ onetype.ObserverUnvisible(this.Element);
119
+ onetype.ObserverUnresize(this.Element);
120
+ }
121
+
122
+ /* Update frame */
123
+ if(this.UpdateFrame)
140
124
  {
141
- if(this.Observer[key])
142
- {
143
- this.Observer[key].disconnect();
144
- this.Observer[key] = undefined;
145
- }
146
- });
125
+ cancelAnimationFrame(this.UpdateFrame);
126
+ this.UpdateFrame = null;
127
+ }
128
+
129
+ /* Local events */
130
+ for(const event in this.Events)
131
+ {
132
+ this.Events[event] = [];
133
+ }
147
134
  }
148
135
  };
149
136
 
150
- export default RenderEvents;
137
+ export default RenderEvents;
@@ -15,11 +15,6 @@ const RenderGet =
15
15
  return this.Addon;
16
16
  },
17
17
 
18
- GetOneType()
19
- {
20
- return this.Addon.onetype;
21
- },
22
-
23
18
  GetData()
24
19
  {
25
20
  return this.Data;
@@ -1,3 +1,5 @@
1
+ import onetype from '#framework/load.js';
2
+
1
3
  const RenderMethods =
2
4
  {
3
5
  Mount(target)
@@ -6,40 +8,39 @@ const RenderMethods =
6
8
  {
7
9
  if(!this.Element)
8
10
  {
9
- throw new Error('Cannot mount - render not processed');
11
+ throw onetype.Error(400,'Cannot mount - render not processed');
10
12
  }
11
-
13
+
12
14
  if(this.State.mounted)
13
15
  {
14
- throw new Error('Already mounted');
16
+ throw onetype.Error(400,'Already mounted');
15
17
  }
16
-
18
+
17
19
  /* Before mount */
18
20
  this.EventEmit('mount');
19
-
21
+
20
22
  /* Insert into DOM */
21
23
  target = typeof target === 'string' ? document.querySelector(target) : target;
22
24
 
23
25
  if(!target)
24
26
  {
25
- throw new Error('Target element not found');
27
+ throw onetype.Error(400,'Target element not found');
26
28
  }
27
29
 
28
30
  target.appendChild(this.Element);
29
-
31
+
30
32
  /* After mount */
31
33
  this.EventEmit('mounted');
32
-
34
+
33
35
  return this;
34
36
  }
35
37
  catch(error)
36
38
  {
37
- console.log(error);
38
39
  this.EventEmit('error', error);
39
40
  return this;
40
41
  }
41
42
  },
42
-
43
+
43
44
  Unmount()
44
45
  {
45
46
  try
@@ -48,19 +49,19 @@ const RenderMethods =
48
49
  {
49
50
  return this;
50
51
  }
51
-
52
+
52
53
  /* Before unmount */
53
54
  this.EventEmit('unmount');
54
-
55
+
55
56
  /* Remove from DOM */
56
57
  if(this.Element && this.Element.parentNode)
57
58
  {
58
59
  this.Element.parentNode.removeChild(this.Element);
59
60
  }
60
-
61
+
61
62
  /* After unmount */
62
63
  this.EventEmit('unmounted');
63
-
64
+
64
65
  return this;
65
66
  }
66
67
  catch(error)
@@ -69,17 +70,17 @@ const RenderMethods =
69
70
  return this;
70
71
  }
71
72
  },
72
-
73
+
73
74
  Destroy()
74
75
  {
75
76
  try
76
77
  {
77
78
  /* Unmount first */
78
79
  this.Unmount();
79
-
80
+
80
81
  /* Emit destroy */
81
82
  this.EventEmit('destroy');
82
-
83
+
83
84
  /* Clear references */
84
85
  this.Element = null;
85
86
  this.Nodes = {};
@@ -94,10 +95,10 @@ const RenderMethods =
94
95
  },
95
96
 
96
97
  /* State Management */
97
-
98
+
98
99
  Define(config)
99
100
  {
100
- const data = this.GetOneType().DataDefine(this, config);
101
+ const data = onetype.DataDefine(this, config);
101
102
 
102
103
  for(const key in data)
103
104
  {
@@ -105,18 +106,54 @@ const RenderMethods =
105
106
  }
106
107
  },
107
108
 
109
+ UpdateData(data)
110
+ {
111
+ let changed = false;
112
+
113
+ for(const key in data)
114
+ {
115
+ if(key === 'state')
116
+ {
117
+ continue;
118
+ }
119
+
120
+ const value = data[key];
121
+
122
+ if(typeof value === 'function')
123
+ {
124
+ this.Data[key] = value;
125
+ continue;
126
+ }
127
+
128
+ if(this.Data[key] !== value)
129
+ {
130
+ this.Data[key] = value;
131
+ changed = true;
132
+ }
133
+ }
134
+
135
+ if(changed && this.State.ready && !this.State.rendering && !this.UpdateFrame)
136
+ {
137
+ this.UpdateFrame = requestAnimationFrame(() =>
138
+ {
139
+ this.UpdateFrame = null;
140
+ this.Update();
141
+ });
142
+ }
143
+ },
144
+
108
145
  Update()
109
146
  {
110
147
  try
111
148
  {
112
149
  if(!this.Element)
113
150
  {
114
- throw new Error('Cannot update - element not rendered');
151
+ throw onetype.Error(400,'Cannot update - element not rendered');
115
152
  }
116
153
 
117
154
  const compiled = this.Compile(this.Html);
118
155
 
119
- this.GetOneType().DOMPatch(this.Element, compiled.element);
156
+ onetype.DOMPatch(this.Element, compiled.element);
120
157
 
121
158
  this.Nodes = compiled.nodes;
122
159
  this.Time = compiled.time;
@@ -131,58 +168,86 @@ const RenderMethods =
131
168
  },
132
169
 
133
170
  /* Lifecycle Hooks */
134
-
171
+
135
172
  OnInit(callback)
136
173
  {
137
174
  return this.EventOn('init', callback);
138
175
  },
139
-
176
+
140
177
  OnMount(callback)
141
178
  {
142
179
  return this.EventOn('mount', callback);
143
180
  },
144
-
181
+
145
182
  OnMounted(callback)
146
183
  {
147
184
  return this.EventOn('mounted', callback);
148
185
  },
149
-
150
-
151
- OnBeforeUnmount(callback)
152
- {
153
- return this.EventOn('unmount', callback);
154
- },
155
-
186
+
156
187
  OnUnmount(callback)
157
188
  {
158
189
  return this.EventOn('unmount', callback);
159
190
  },
160
-
191
+
161
192
  OnDestroy(callback)
162
193
  {
163
194
  return this.EventOn('destroy', callback);
164
195
  },
165
-
196
+
166
197
  OnReady(callback)
167
198
  {
168
199
  return this.EventOn('ready', callback);
169
200
  },
170
-
201
+
171
202
  OnVisible(callback)
172
203
  {
173
- return this.EventOn('visible', callback);
204
+ const render = this;
205
+
206
+ this.EventOn('ready', () =>
207
+ {
208
+ onetype.ObserverVisible(render.Element, (entry) =>
209
+ {
210
+ callback.call(render, entry);
211
+ });
212
+ });
174
213
  },
175
-
214
+
176
215
  OnResize(callback)
177
216
  {
178
- return this.EventOn('resize', callback);
217
+ const render = this;
218
+
219
+ this.EventOn('ready', () =>
220
+ {
221
+ onetype.ObserverResize(render.Element, (entry) =>
222
+ {
223
+ callback.call(render, entry);
224
+ });
225
+ });
179
226
  },
180
-
227
+
181
228
  OnError(callback)
182
229
  {
183
230
  return this.EventOn('error', callback);
184
231
  },
185
-
232
+
233
+ /* Global Emitter */
234
+
235
+ Emit(name, ...args)
236
+ {
237
+ onetype.Emit(name, ...args);
238
+ },
239
+
240
+ On(name, callback)
241
+ {
242
+ const render = this;
243
+
244
+ const id = onetype.EmitOn(name, function(...args)
245
+ {
246
+ callback.call(render, ...args);
247
+ });
248
+
249
+ this.Emitters.push({ name, id });
250
+ },
186
251
  };
187
252
 
188
- export default RenderMethods;
253
+ export default RenderMethods;