@adaas/are-html 0.0.5 → 0.0.8

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 (31) hide show
  1. package/dist/browser/index.d.mts +11 -2
  2. package/dist/browser/index.mjs +31 -4
  3. package/dist/browser/index.mjs.map +1 -1
  4. package/dist/node/directives/AreDirectiveFor.directive.js +7 -0
  5. package/dist/node/directives/AreDirectiveFor.directive.js.map +1 -1
  6. package/dist/node/directives/AreDirectiveFor.directive.mjs +7 -0
  7. package/dist/node/directives/AreDirectiveFor.directive.mjs.map +1 -1
  8. package/dist/node/engine/AreHTML.engine.d.mts +2 -2
  9. package/dist/node/engine/AreHTML.engine.d.ts +2 -2
  10. package/dist/node/engine/AreHTML.engine.js +7 -2
  11. package/dist/node/engine/AreHTML.engine.js.map +1 -1
  12. package/dist/node/engine/AreHTML.engine.mjs +8 -3
  13. package/dist/node/engine/AreHTML.engine.mjs.map +1 -1
  14. package/dist/node/engine/AreHTML.interpreter.js +0 -2
  15. package/dist/node/engine/AreHTML.interpreter.js.map +1 -1
  16. package/dist/node/engine/AreHTML.interpreter.mjs +0 -2
  17. package/dist/node/engine/AreHTML.interpreter.mjs.map +1 -1
  18. package/dist/node/engine/AreHTML.lifecycle.d.mts +10 -1
  19. package/dist/node/engine/AreHTML.lifecycle.d.ts +10 -1
  20. package/dist/node/engine/AreHTML.lifecycle.js +18 -0
  21. package/dist/node/engine/AreHTML.lifecycle.js.map +1 -1
  22. package/dist/node/engine/AreHTML.lifecycle.mjs +19 -1
  23. package/dist/node/engine/AreHTML.lifecycle.mjs.map +1 -1
  24. package/examples/dashboard/dist/index.html +1 -1
  25. package/examples/dashboard/dist/{mpm5e2oi-ghokyu.js → mpmt0gys-1r9rcu.js} +72 -14
  26. package/examples/dashboard/src/components/DashboardLogo.component.ts +9 -0
  27. package/package.json +7 -7
  28. package/src/directives/AreDirectiveFor.directive.ts +8 -0
  29. package/src/engine/AreHTML.engine.ts +7 -1
  30. package/src/engine/AreHTML.interpreter.ts +2 -2
  31. package/src/engine/AreHTML.lifecycle.ts +31 -1
@@ -1,6 +1,6 @@
1
1
  import { __decorateClass, __decorateParam } from '../chunk-EQQGB2QZ.mjs';
2
2
  import { A_Inject, A_Caller, A_Scope, A_Feature, A_FormatterHelper } from '@adaas/a-concept';
3
- import { AreLifecycle, AreSignalsContext, AreAttributeFeatures, AreScene } from '@adaas/are';
3
+ import { AreLifecycle, AreSignalsContext, AreNodeFeatures, AreScene, AreAttributeFeatures } from '@adaas/are';
4
4
  import { A_Logger } from '@adaas/a-utils/a-logger';
5
5
  import { AreComponentNode } from '@adaas/are-html/nodes/AreComponent';
6
6
  import { AreRootNode } from '@adaas/are-html/nodes/AreRoot';
@@ -9,6 +9,7 @@ import { AreText } from '@adaas/are-html/nodes/AreText';
9
9
  import { AreDirectiveAttribute } from '@adaas/are-html/attributes/AreDirective.attribute';
10
10
  import { AreDirectiveFeatures } from '@adaas/are-html/directive/AreDirective.constants';
11
11
  import { AreHTMLEngineContext } from './AreHTML.context';
12
+ import { AreHTMLNode } from '../lib/AreHTMLNode/AreHTMLNode';
12
13
  import { A_Frame } from '@adaas/a-frame/core';
13
14
 
14
15
  let AreHTMLLifecycle = class extends AreLifecycle {
@@ -24,6 +25,14 @@ let AreHTMLLifecycle = class extends AreLifecycle {
24
25
  const scene = new AreScene(node.aseid);
25
26
  scope.register(scene);
26
27
  }
28
+ mount(node, scene, logger, ...args) {
29
+ logger?.debug(`[Mount] Component Trigger for <${node.aseid.entity}> with aseid :{${node.aseid.toString()}}`);
30
+ node.interpret();
31
+ for (let i = 0; i < node.children.length; i++) {
32
+ const child = node.children[i];
33
+ child.mount();
34
+ }
35
+ }
27
36
  updateDirectiveAttribute(directive, scope, feature, logger, ...args) {
28
37
  if (directive.component) {
29
38
  feature.chain(directive.component, AreDirectiveFeatures.Update, directive.owner.scope);
@@ -55,6 +64,15 @@ __decorateClass([
55
64
  __decorateParam(2, A_Inject(AreHTMLEngineContext)),
56
65
  __decorateParam(3, A_Inject(A_Logger))
57
66
  ], AreHTMLLifecycle.prototype, "initInterpolation", 1);
67
+ __decorateClass([
68
+ A_Feature.Extend({
69
+ name: AreNodeFeatures.onMount,
70
+ scope: [AreHTMLNode]
71
+ }),
72
+ __decorateParam(0, A_Inject(A_Caller)),
73
+ __decorateParam(1, A_Inject(AreScene)),
74
+ __decorateParam(2, A_Inject(A_Logger))
75
+ ], AreHTMLLifecycle.prototype, "mount", 1);
58
76
  __decorateClass([
59
77
  A_Feature.Extend({
60
78
  name: AreAttributeFeatures.Update,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/engine/AreHTML.lifecycle.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAkBO,IAAM,gBAAA,GAAN,cAA+B,YAAA,CAAa;AAAA,EAI/C,cACwB,IAAA,EACD,KAAA,EACa,OAAA,EACH,cAAA,EACT,WACjB,IAAA,EACC;AACJ,IAAA,cAAA,EAAgB,UAAU,IAAI,CAAA;AAC9B,IAAA,KAAA,CAAM,KAAK,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,GAAG,IAAI,CAAA;AAAA,EACpD;AAAA,EAgBA,QAAA,CACwB,IAAA,EACD,KAAA,EACa,OAAA,EACZ,WACjB,IAAA,EACC;AACJ,IAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAErC,IAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,EACxB;AAAA,EAIA,iBAAA,CACwB,IAAA,EACD,KAAA,EACa,OAAA,EACZ,WACjB,IAAA,EACC;AACJ,IAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAErC,IAAA,KAAA,CAAM,SAAS,KAAK,CAAA;AAAA,EACxB;AAAA,EASA,wBAAA,CACwB,SAAA,EACD,KAAA,EACE,OAAA,EACD,WACjB,IAAA,EACL;AAOE,IAAA,IAAI,UAAU,SAAA,EAAW;AACrB,MAAA,OAAA,CAAQ,MAAM,SAAA,CAAU,SAAA,EAAW,qBAAqB,MAAA,EAAQ,SAAA,CAAU,MAAM,KAAK,CAAA;AAAA,IACzF,CAAA,MAAO;AACH,MAAA,MAAA,EAAQ,OAAA,CAAQ,CAAA,qDAAA,EAAwD,SAAA,CAAU,IAAI,CAAA,qDAAA,EAAwD,kBAAkB,YAAA,CAAa,SAAA,CAAU,IAAI,CAAC,CAAA,2BAAA,CAA6B,CAAA;AAAA,IAC7N;AAAA,EACJ;AAEJ;AA/EI,eAAA,CAAA;AAAA,EAFC,YAAA,CAAa,KAAK,gBAAgB,CAAA;AAAA,EAClC,YAAA,CAAa,KAAK,WAAW,CAAA;AAAA,EAEzB,4BAAS,QAAQ,CAAA,CAAA;AAAA,EACjB,4BAAS,OAAO,CAAA,CAAA;AAAA,EAChB,4BAAS,oBAAoB,CAAA,CAAA;AAAA,EAC7B,4BAAS,iBAAiB,CAAA,CAAA;AAAA,EAC1B,4BAAS,QAAQ,CAAA;AAAA,CAAA,EATb,gBAAA,CAIT,SAAA,EAAA,eAAA,EAAA,CAAA,CAAA;AA0BA,eAAA,CAAA;AAAA,EADC,YAAA,CAAa,KAAK,OAAO,CAAA;AAAA,EAErB,4BAAS,QAAQ,CAAA,CAAA;AAAA,EACjB,4BAAS,OAAO,CAAA,CAAA;AAAA,EAChB,4BAAS,oBAAoB,CAAA,CAAA;AAAA,EAC7B,4BAAS,QAAQ,CAAA;AAAA,CAAA,EAlCb,gBAAA,CA8BT,SAAA,EAAA,UAAA,EAAA,CAAA,CAAA;AAcA,eAAA,CAAA;AAAA,EADC,YAAA,CAAa,KAAK,gBAAgB,CAAA;AAAA,EAE9B,4BAAS,QAAQ,CAAA,CAAA;AAAA,EACjB,4BAAS,OAAO,CAAA,CAAA;AAAA,EAChB,4BAAS,oBAAoB,CAAA,CAAA;AAAA,EAC7B,4BAAS,QAAQ,CAAA;AAAA,CAAA,EAhDb,gBAAA,CA4CT,SAAA,EAAA,mBAAA,EAAA,CAAA,CAAA;AAmBA,eAAA,CAAA;AAAA,EAJC,UAAU,MAAA,CAAO;AAAA,IACd,MAAM,oBAAA,CAAqB,MAAA;AAAA,IAC3B,KAAA,EAAO,CAAC,qBAAqB;AAAA,GAChC,CAAA;AAAA,EAEI,4BAAS,QAAQ,CAAA,CAAA;AAAA,EACjB,4BAAS,OAAO,CAAA,CAAA;AAAA,EAChB,4BAAS,SAAS,CAAA,CAAA;AAAA,EAClB,4BAAS,QAAQ,CAAA;AAAA,CAAA,EAnEb,gBAAA,CA+DT,SAAA,EAAA,0BAAA,EAAA,CAAA,CAAA;AA/DS,gBAAA,GAAN,eAAA,CAAA;AAAA,EAJN,QAAQ,MAAA,CAAO;AAAA,IACZ,SAAA,EAAW,YAAA;AAAA,IACX,WAAA,EAAa;AAAA,GAChB;AAAA,CAAA,EACY,gBAAA,CAAA","file":"AreHTML.lifecycle.mjs","sourcesContent":["import { A_Caller, A_Feature, A_FormatterHelper, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { AreLifecycle, AreScene, AreAttributeFeatures, AreSignalsContext } from \"@adaas/are\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { AreComponentNode } from \"@adaas/are-html/nodes/AreComponent\";\nimport { AreRootNode } from \"@adaas/are-html/nodes/AreRoot\";\nimport { AreInterpolation } from \"@adaas/are-html/nodes/AreInterpolation\";\nimport { AreText } from \"@adaas/are-html/nodes/AreText\";\nimport { AreDirectiveAttribute } from \"@adaas/are-html/attributes/AreDirective.attribute\";\nimport { AreDirectiveFeatures } from \"@adaas/are-html/directive/AreDirective.constants\";\nimport { AreHTMLEngineContext } from \"./AreHTML.context\";\nimport { AreHTMLNode } from \"../lib/AreHTMLNode/AreHTMLNode\";\nimport { A_Frame } from \"@adaas/a-frame/core\";\n\n\n@A_Frame.Define({\n namespace: 'a-are-html',\n description: 'HTML-specific lifecycle handler extending AreLifecycle. Wires DOM-aware init hooks for component nodes, root nodes, interpolations, text nodes, and directive attributes to the ARE rendering pipeline, connecting each entity to its HTML engine context and priming the scene for subsequent compilation and interpretation.'\n})\nexport class AreHTMLLifecycle extends AreLifecycle {\n\n @AreLifecycle.Init(AreComponentNode)\n @AreLifecycle.Init(AreRootNode)\n initComponent(\n @A_Inject(A_Caller) node: AreHTMLNode,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(AreHTMLEngineContext) context: AreHTMLEngineContext,\n @A_Inject(AreSignalsContext) signalsContext?: AreSignalsContext,\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ): void {\n signalsContext?.subscribe(node);\n super.init(node, scope, context, logger, ...args);\n }\n\n\n // initRoot(\n // @A_Inject(A_Caller) node: AreHTMLNode,\n // @A_Inject(A_Scope) scope: A_Scope,\n // @A_Inject(AreHTMLEngineContext) context: AreHTMLEngineContext,\n // @A_Inject(AreSignalsContext) signalsContext?: AreSignalsContext,\n // @A_Inject(A_Logger) logger?: A_Logger,\n // ...args: any[]\n // ): void {\n // super.init(node, scope, context, logger, ...args);\n // }\n\n\n @AreLifecycle.Init(AreText)\n initText(\n @A_Inject(A_Caller) node: AreHTMLNode,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(AreHTMLEngineContext) context: AreHTMLEngineContext,\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ): void {\n const scene = new AreScene(node.aseid);\n\n scope.register(scene);\n }\n\n\n @AreLifecycle.Init(AreInterpolation)\n initInterpolation(\n @A_Inject(A_Caller) node: AreHTMLNode,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(AreHTMLEngineContext) context: AreHTMLEngineContext,\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ): void {\n const scene = new AreScene(node.aseid);\n\n scope.register(scene);\n }\n\n\n\n\n @A_Feature.Extend({\n name: AreAttributeFeatures.Update,\n scope: [AreDirectiveAttribute],\n })\n updateDirectiveAttribute(\n @A_Inject(A_Caller) directive: AreDirectiveAttribute,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(A_Feature) feature: A_Feature,\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ) {\n /**\n * 3. If the attribute is a directive, then we should find a component that is responsible for\n * the directive compiling logic, and call it. \n * In case component is not found we just want to log a warning, \n * since the directive may be handled by some parent component or simply is a mistake in the template.\n */\n if (directive.component) {\n feature.chain(directive.component, AreDirectiveFeatures.Update, directive.owner.scope);\n } else {\n logger?.warning(`Directive handler component not found for directive: ${directive.name}. Make sure to create a component named \"AreDirective${A_FormatterHelper.toPascalCase(directive.name)}\" to handle this directive.`);\n }\n }\n\n}"]}
1
+ {"version":3,"sources":["../../../src/engine/AreHTML.lifecycle.ts"],"names":[],"mappings":"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","file":"AreHTML.lifecycle.mjs","sourcesContent":["import { A_Caller, A_Feature, A_FormatterHelper, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { AreLifecycle, AreScene, AreAttributeFeatures, AreSignalsContext, AreNodeFeatures, AreFeatures } from \"@adaas/are\";\nimport { A_Logger } from \"@adaas/a-utils/a-logger\";\nimport { AreComponentNode } from \"@adaas/are-html/nodes/AreComponent\";\nimport { AreRootNode } from \"@adaas/are-html/nodes/AreRoot\";\nimport { AreInterpolation } from \"@adaas/are-html/nodes/AreInterpolation\";\nimport { AreText } from \"@adaas/are-html/nodes/AreText\";\nimport { AreDirectiveAttribute } from \"@adaas/are-html/attributes/AreDirective.attribute\";\nimport { AreDirectiveFeatures } from \"@adaas/are-html/directive/AreDirective.constants\";\nimport { AreHTMLEngineContext } from \"./AreHTML.context\";\nimport { AreHTMLNode } from \"../lib/AreHTMLNode/AreHTMLNode\";\nimport { A_Frame } from \"@adaas/a-frame/core\";\n\n\n@A_Frame.Define({\n namespace: 'a-are-html',\n description: 'HTML-specific lifecycle handler extending AreLifecycle. Wires DOM-aware init hooks for component nodes, root nodes, interpolations, text nodes, and directive attributes to the ARE rendering pipeline, connecting each entity to its HTML engine context and priming the scene for subsequent compilation and interpretation.'\n})\nexport class AreHTMLLifecycle extends AreLifecycle {\n\n @AreLifecycle.Init(AreComponentNode)\n @AreLifecycle.Init(AreRootNode)\n initComponent(\n @A_Inject(A_Caller) node: AreHTMLNode,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(AreHTMLEngineContext) context: AreHTMLEngineContext,\n @A_Inject(AreSignalsContext) signalsContext?: AreSignalsContext,\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ): void {\n signalsContext?.subscribe(node);\n super.init(node, scope, context, logger, ...args);\n }\n\n\n // initRoot(\n // @A_Inject(A_Caller) node: AreHTMLNode,\n // @A_Inject(A_Scope) scope: A_Scope,\n // @A_Inject(AreHTMLEngineContext) context: AreHTMLEngineContext,\n // @A_Inject(AreSignalsContext) signalsContext?: AreSignalsContext,\n // @A_Inject(A_Logger) logger?: A_Logger,\n // ...args: any[]\n // ): void {\n // super.init(node, scope, context, logger, ...args);\n // }\n\n\n @AreLifecycle.Init(AreText)\n initText(\n @A_Inject(A_Caller) node: AreHTMLNode,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(AreHTMLEngineContext) context: AreHTMLEngineContext,\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ): void {\n const scene = new AreScene(node.aseid);\n\n scope.register(scene);\n }\n\n\n @AreLifecycle.Init(AreInterpolation)\n initInterpolation(\n @A_Inject(A_Caller) node: AreHTMLNode,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(AreHTMLEngineContext) context: AreHTMLEngineContext,\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ): void {\n const scene = new AreScene(node.aseid);\n\n scope.register(scene);\n }\n\n @A_Feature.Extend({\n name: AreNodeFeatures.onMount,\n scope: [AreHTMLNode]\n })\n mount(\n /**\n * Node to be mounted\n */\n @A_Inject(A_Caller) node: AreHTMLNode,\n /**\n * Node Content\n */\n @A_Inject(AreScene) scene: AreScene,\n\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ) {\n\n logger?.debug(`[Mount] Component Trigger for <${node.aseid.entity}> with aseid :{${node.aseid.toString()}}`);\n\n /**\n * 1. We should simply run and render node itself.\n */\n node.interpret();\n /**\n * 2. Then go through all children of the node and mount the.\n */\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n child.mount();\n }\n }\n\n @A_Feature.Extend({\n name: AreAttributeFeatures.Update,\n scope: [AreDirectiveAttribute],\n })\n updateDirectiveAttribute(\n @A_Inject(A_Caller) directive: AreDirectiveAttribute,\n @A_Inject(A_Scope) scope: A_Scope,\n @A_Inject(A_Feature) feature: A_Feature,\n @A_Inject(A_Logger) logger?: A_Logger,\n ...args: any[]\n ) {\n /**\n * 3. If the attribute is a directive, then we should find a component that is responsible for\n * the directive compiling logic, and call it. \n * In case component is not found we just want to log a warning, \n * since the directive may be handled by some parent component or simply is a mistake in the template.\n */\n if (directive.component) {\n feature.chain(directive.component, AreDirectiveFeatures.Update, directive.owner.scope);\n } else {\n logger?.warning(`Directive handler component not found for directive: ${directive.name}. Make sure to create a component named \"AreDirective${A_FormatterHelper.toPascalCase(directive.name)}\" to handle this directive.`);\n }\n }\n\n}"]}
@@ -16,7 +16,7 @@
16
16
  <dashboard-app></dashboard-app>
17
17
  </are-root>
18
18
 
19
- <script type="module" src="./mpm5e2oi-ghokyu.js"></script>
19
+ <script type="module" src="./mpmt0gys-1r9rcu.js"></script>
20
20
  </body>
21
21
 
22
22
  </html>
@@ -11032,6 +11032,9 @@ var _DashboardLogo = class _DashboardLogo extends Are {
11032
11032
  brandName: "ARE Platform"
11033
11033
  });
11034
11034
  }
11035
+ async onMount(node, store) {
11036
+ console.log("!!!!!!!!!!!!!!!!!!!!!!!!!DashboardLogo mounted");
11037
+ }
11035
11038
  };
11036
11039
  __name(_DashboardLogo, "DashboardLogo");
11037
11040
  __decorateClass([
@@ -11042,6 +11045,11 @@ __decorateClass([
11042
11045
  Are.Data,
11043
11046
  __decorateParam(0, ke(AreStore))
11044
11047
  ], _DashboardLogo.prototype, "data", 1);
11048
+ __decorateClass([
11049
+ Are.onAfterMount,
11050
+ __decorateParam(0, ke(G)),
11051
+ __decorateParam(1, ke(AreStore))
11052
+ ], _DashboardLogo.prototype, "onMount", 1);
11045
11053
  var DashboardLogo = _DashboardLogo;
11046
11054
 
11047
11055
  // examples/dashboard/src/components/DashboardNav.component.ts
@@ -12318,6 +12326,26 @@ AreText = __decorateClass([
12318
12326
  ], AreText);
12319
12327
 
12320
12328
  // src/engine/AreHTML.constants.ts
12329
+ var VOID_ELEMENTS = /* @__PURE__ */ new Set([
12330
+ "area",
12331
+ "base",
12332
+ "br",
12333
+ "col",
12334
+ "embed",
12335
+ "hr",
12336
+ "img",
12337
+ "input",
12338
+ "link",
12339
+ "meta",
12340
+ "param",
12341
+ "source",
12342
+ "track",
12343
+ "wbr"
12344
+ ]);
12345
+ function isVoidElement(tagName) {
12346
+ return VOID_ELEMENTS.has(tagName.toLowerCase());
12347
+ }
12348
+ __name(isVoidElement, "isVoidElement");
12321
12349
  var BOOLEAN_ATTRIBUTES = /* @__PURE__ */ new Set([
12322
12350
  "allowfullscreen",
12323
12351
  "async",
@@ -12609,6 +12637,16 @@ var AreHTMLCompiler = class extends AreCompiler {
12609
12637
  title: "Scene Host Not Found",
12610
12638
  description: `No host found for the scene with id: ${scene.id}. Please ensure that the scene is properly initialized and has a host before compiling binding attributes.`
12611
12639
  });
12640
+ const content = attribute.content;
12641
+ if (content.includes("{{")) {
12642
+ const transformed = '"' + content.replace(/\{\{([^}]+)\}\}/g, '"+($1)+"') + '"';
12643
+ scene.plan(new AddAttributeInstruction(scene.host, {
12644
+ name: attribute.name,
12645
+ content: transformed,
12646
+ evaluate: true
12647
+ }));
12648
+ return;
12649
+ }
12612
12650
  scene.plan(new AddAttributeInstruction(scene.host, {
12613
12651
  name: attribute.name,
12614
12652
  content: attribute.content
@@ -12919,6 +12957,7 @@ var AreHTMLInterpreter = class extends AreInterpreter {
12919
12957
  event.set("args", effectiveArgs);
12920
12958
  event.set("element", element);
12921
12959
  event.set("instruction", mutation);
12960
+ if (liveEvent) event.set("native", liveEvent);
12922
12961
  mutation.owner.emit(event);
12923
12962
  }, "handlerFn");
12924
12963
  handlerScope[`$${handler}`] = handlerFn;
@@ -13241,10 +13280,7 @@ AreHTMLTokenizer = __decorateClass([
13241
13280
 
13242
13281
  // src/engine/AreHTML.lifecycle.ts
13243
13282
  var AreHTMLLifecycle = class extends AreLifecycle {
13244
- initComponent(node, scope, context, logger, ...args) {
13245
- super.init(node, scope, context, logger, ...args);
13246
- }
13247
- initRoot(node, scope, context, signalsContext, logger, ...args) {
13283
+ initComponent(node, scope, context, signalsContext, logger, ...args) {
13248
13284
  signalsContext?.subscribe(node);
13249
13285
  super.init(node, scope, context, logger, ...args);
13250
13286
  }
@@ -13256,6 +13292,14 @@ var AreHTMLLifecycle = class extends AreLifecycle {
13256
13292
  const scene = new AreScene(node.aseid);
13257
13293
  scope.register(scene);
13258
13294
  }
13295
+ mount(node, scene, logger, ...args) {
13296
+ logger?.debug(`[Mount] Component Trigger for <${node.aseid.entity}> with aseid :{${node.aseid.toString()}}`);
13297
+ node.interpret();
13298
+ for (let i4 = 0; i4 < node.children.length; i4++) {
13299
+ const child = node.children[i4];
13300
+ child.mount();
13301
+ }
13302
+ }
13259
13303
  updateDirectiveAttribute(directive, scope, feature, logger, ...args) {
13260
13304
  if (directive.component) {
13261
13305
  feature.chain(directive.component, AreDirectiveFeatures.Update, directive.owner.scope);
@@ -13267,19 +13311,13 @@ var AreHTMLLifecycle = class extends AreLifecycle {
13267
13311
  __name(AreHTMLLifecycle, "AreHTMLLifecycle");
13268
13312
  __decorateClass([
13269
13313
  AreLifecycle.Init(AreComponentNode),
13270
- __decorateParam(0, ke(G)),
13271
- __decorateParam(1, ke(D)),
13272
- __decorateParam(2, ke(AreHTMLEngineContext)),
13273
- __decorateParam(3, ke(A_Logger))
13274
- ], AreHTMLLifecycle.prototype, "initComponent", 1);
13275
- __decorateClass([
13276
13314
  AreLifecycle.Init(AreRootNode),
13277
13315
  __decorateParam(0, ke(G)),
13278
13316
  __decorateParam(1, ke(D)),
13279
13317
  __decorateParam(2, ke(AreHTMLEngineContext)),
13280
13318
  __decorateParam(3, ke(AreSignalsContext)),
13281
13319
  __decorateParam(4, ke(A_Logger))
13282
- ], AreHTMLLifecycle.prototype, "initRoot", 1);
13320
+ ], AreHTMLLifecycle.prototype, "initComponent", 1);
13283
13321
  __decorateClass([
13284
13322
  AreLifecycle.Init(AreText),
13285
13323
  __decorateParam(0, ke(G)),
@@ -13294,6 +13332,15 @@ __decorateClass([
13294
13332
  __decorateParam(2, ke(AreHTMLEngineContext)),
13295
13333
  __decorateParam(3, ke(A_Logger))
13296
13334
  ], AreHTMLLifecycle.prototype, "initInterpolation", 1);
13335
+ __decorateClass([
13336
+ w.Extend({
13337
+ name: AreNodeFeatures.onMount,
13338
+ scope: [AreHTMLNode]
13339
+ }),
13340
+ __decorateParam(0, ke(G)),
13341
+ __decorateParam(1, ke(AreScene)),
13342
+ __decorateParam(2, ke(A_Logger))
13343
+ ], AreHTMLLifecycle.prototype, "mount", 1);
13297
13344
  __decorateClass([
13298
13345
  w.Extend({
13299
13346
  name: AreAttributeFeatures.Update,
@@ -13386,7 +13433,7 @@ var AreHTMLEngine = class extends AreEngine {
13386
13433
  ]
13387
13434
  });
13388
13435
  }
13389
- async init(scope) {
13436
+ async init(scope, signalContext) {
13390
13437
  this.package(scope, {
13391
13438
  context: new AreHTMLEngineContext({}),
13392
13439
  syntax: this.DefaultSyntax,
@@ -13396,6 +13443,10 @@ var AreHTMLEngine = class extends AreEngine {
13396
13443
  lifecycle: AreHTMLLifecycle,
13397
13444
  transformer: AreHTMLTransformer
13398
13445
  });
13446
+ if (!signalContext) {
13447
+ signalContext = new AreSignalsContext();
13448
+ scope.register(signalContext);
13449
+ }
13399
13450
  }
13400
13451
  rootElementMatcher(source, from, to, build) {
13401
13452
  const rootTag = "are-root";
@@ -13440,6 +13491,13 @@ var AreHTMLEngine = class extends AreEngine {
13440
13491
  match2.payload = { entity: tagName, selfClose: true, id };
13441
13492
  return match2;
13442
13493
  }
13494
+ if (isVoidElement(tagName)) {
13495
+ const raw = source.slice(tagStart, openingTagEnd + 1);
13496
+ const content2 = source.slice(tagStart + tagNameMatch[0].length, openingTagEnd);
13497
+ const match2 = build(raw, content2, tagStart, ">");
13498
+ match2.payload = { entity: tagName, selfClose: true, id };
13499
+ return match2;
13500
+ }
13443
13501
  const closingTag = `</${tagName}>`;
13444
13502
  let level = 0;
13445
13503
  let searchIndex = openingTagEnd + 1;
@@ -13498,7 +13556,8 @@ __decorateClass([
13498
13556
  name: A_ServiceFeatures.onBeforeLoad,
13499
13557
  before: /.*/
13500
13558
  }),
13501
- __decorateParam(0, ke(D))
13559
+ __decorateParam(0, ke(D)),
13560
+ __decorateParam(1, ke(AreSignalsContext))
13502
13561
  ], AreHTMLEngine.prototype, "init", 1);
13503
13562
  AreHTMLEngine = __decorateClass([
13504
13563
  A3.Define({
@@ -13547,7 +13606,6 @@ var AreRoot = class extends Are {
13547
13606
  root.setContent(`<${componentName}></${componentName}>`);
13548
13607
  }
13549
13608
  async onSignal(root, vector, store, logger, signalsContext) {
13550
- console.log("Received signal vector in AreRoot:", root, vector);
13551
13609
  const rootId = root.id;
13552
13610
  if (signalsContext && !signalsContext.hasRoot(rootId)) {
13553
13611
  return;
@@ -26,4 +26,13 @@ export class DashboardLogo extends Are {
26
26
  brandName: 'ARE Platform',
27
27
  });
28
28
  }
29
+
30
+
31
+ @Are.onAfterMount
32
+ async onMount(
33
+ @A_Inject(A_Caller) node: AreNode,
34
+ @A_Inject(AreStore) store: AreStore,
35
+ ) {
36
+ console.log('!!!!!!!!!!!!!!!!!!!!!!!!!DashboardLogo mounted');
37
+ }
29
38
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaas/are-html",
3
- "version": "0.0.5",
3
+ "version": "0.0.8",
4
4
  "description": "A-Concept Rendering Engine (ARE) is a powerful rendering engine designed to work seamlessly with the A-Concept framework. This library provides an HTML engine implementation of ARE, enabling developers to create dynamic and interactive user interfaces for web applications using standard HTML syntax.",
5
5
  "keywords": [
6
6
  "a-concept",
@@ -80,16 +80,16 @@
80
80
  "build": "tsup --config tsup.config.ts"
81
81
  },
82
82
  "peerDependencies": {
83
- "@adaas/a-concept": "^0.3.16",
83
+ "@adaas/a-concept": "^0.3.17",
84
84
  "@adaas/a-frame": "^0.1.2",
85
- "@adaas/a-utils": "^0.3.20",
86
- "@adaas/are": "^0.0.10"
85
+ "@adaas/a-utils": "^0.3.23",
86
+ "@adaas/are": "^0.0.13"
87
87
  },
88
88
  "devDependencies": {
89
- "@adaas/a-concept": "^0.3.16",
89
+ "@adaas/a-concept": "^0.3.17",
90
90
  "@adaas/a-frame": "^0.1.2",
91
- "@adaas/a-utils": "^0.3.20",
92
- "@adaas/are": "^0.0.10",
91
+ "@adaas/a-utils": "^0.3.23",
92
+ "@adaas/are": "^0.0.13",
93
93
  "@types/chai": "^4.3.14",
94
94
  "@types/jest": "^29.5.12",
95
95
  "@types/mocha": "^10.0.6",
@@ -292,6 +292,14 @@ export class AreDirectiveFor extends AreDirective {
292
292
  });
293
293
 
294
294
  result = (fn as Function)(...resolvedArgs);
295
+ } else if (arrayExpr.includes('.')) {
296
+ // dotted-path lookup: e.g. "list.items" → store.get('list').items
297
+ const parts = arrayExpr.split('.');
298
+ result = store.get(parts[0] as any);
299
+ for (let i = 1; i < parts.length; i++) {
300
+ if (result == null) break;
301
+ result = result[parts[i]];
302
+ }
295
303
  } else {
296
304
  result = store.get(arrayExpr as any);
297
305
  }
@@ -1,7 +1,7 @@
1
1
  import { A_Feature, A_Inject, A_Scope } from "@adaas/a-concept";
2
2
  import { A_Frame } from "@adaas/a-frame/core"
3
3
  import { A_ServiceFeatures } from "@adaas/a-utils/a-service";
4
- import { AreEngine, AreSyntaxTokenMatch, AreSyntax } from "@adaas/are";
4
+ import { AreEngine, AreSyntaxTokenMatch, AreSyntax, AreSignalsContext } from "@adaas/are";
5
5
  import { AreHTMLInterpreter } from "@adaas/are-html/interpreter";
6
6
  import { AreHTMLEngineContext } from "./AreHTML.context";
7
7
  import { AreInterpolation } from "@adaas/are-html/nodes/AreInterpolation";
@@ -81,6 +81,7 @@ export class AreHTMLEngine extends AreEngine {
81
81
  })
82
82
  async init(
83
83
  @A_Inject(A_Scope) scope: A_Scope,
84
+ @A_Inject(AreSignalsContext) signalContext?: AreSignalsContext
84
85
  ) {
85
86
  this.package(scope, {
86
87
  context: new AreHTMLEngineContext({}),
@@ -91,6 +92,11 @@ export class AreHTMLEngine extends AreEngine {
91
92
  lifecycle: AreHTMLLifecycle,
92
93
  transformer: AreHTMLTransformer,
93
94
  });
95
+
96
+ if(!signalContext) {
97
+ signalContext = new AreSignalsContext();
98
+ scope.register(signalContext);
99
+ }
94
100
  }
95
101
 
96
102
 
@@ -75,7 +75,7 @@ export class AreHTMLInterpreter extends AreInterpreter {
75
75
  }
76
76
 
77
77
  const element = context.container.createElement(tag);
78
- element.setAttribute('data-aseid', node.aseid.toString());
78
+ // element.setAttribute('data-aseid', node.aseid.toString());
79
79
 
80
80
  if (mountPoint.nodeType === Node.ELEMENT_NODE) {
81
81
  // parent is a real element — just append
@@ -99,7 +99,7 @@ export class AreHTMLInterpreter extends AreInterpreter {
99
99
 
100
100
  const element = context.container.createElement(tag);
101
101
 
102
- element.setAttribute('data-aseid', node.aseid.toString());
102
+ // element.setAttribute('data-aseid', node.aseid.toString());
103
103
 
104
104
  mountPoint.parentNode?.replaceChild(element, mountPoint);
105
105
 
@@ -1,5 +1,5 @@
1
1
  import { A_Caller, A_Feature, A_FormatterHelper, A_Inject, A_Scope } from "@adaas/a-concept";
2
- import { AreLifecycle, AreScene, AreAttributeFeatures, AreSignalsContext } from "@adaas/are";
2
+ import { AreLifecycle, AreScene, AreAttributeFeatures, AreSignalsContext, AreNodeFeatures, AreFeatures } from "@adaas/are";
3
3
  import { A_Logger } from "@adaas/a-utils/a-logger";
4
4
  import { AreComponentNode } from "@adaas/are-html/nodes/AreComponent";
5
5
  import { AreRootNode } from "@adaas/are-html/nodes/AreRoot";
@@ -72,8 +72,38 @@ export class AreHTMLLifecycle extends AreLifecycle {
72
72
  scope.register(scene);
73
73
  }
74
74
 
75
+ @A_Feature.Extend({
76
+ name: AreNodeFeatures.onMount,
77
+ scope: [AreHTMLNode]
78
+ })
79
+ mount(
80
+ /**
81
+ * Node to be mounted
82
+ */
83
+ @A_Inject(A_Caller) node: AreHTMLNode,
84
+ /**
85
+ * Node Content
86
+ */
87
+ @A_Inject(AreScene) scene: AreScene,
75
88
 
89
+ @A_Inject(A_Logger) logger?: A_Logger,
90
+ ...args: any[]
91
+ ) {
92
+
93
+ logger?.debug(`[Mount] Component Trigger for <${node.aseid.entity}> with aseid :{${node.aseid.toString()}}`);
76
94
 
95
+ /**
96
+ * 1. We should simply run and render node itself.
97
+ */
98
+ node.interpret();
99
+ /**
100
+ * 2. Then go through all children of the node and mount the.
101
+ */
102
+ for (let i = 0; i < node.children.length; i++) {
103
+ const child = node.children[i];
104
+ child.mount();
105
+ }
106
+ }
77
107
 
78
108
  @A_Feature.Extend({
79
109
  name: AreAttributeFeatures.Update,