@adaas/are-html 0.0.4 → 0.0.6

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 (45) hide show
  1. package/dist/browser/index.d.mts +22 -5
  2. package/dist/browser/index.mjs +66 -17
  3. package/dist/browser/index.mjs.map +1 -1
  4. package/dist/node/engine/AreHTML.compiler.js +10 -0
  5. package/dist/node/engine/AreHTML.compiler.js.map +1 -1
  6. package/dist/node/engine/AreHTML.compiler.mjs +10 -0
  7. package/dist/node/engine/AreHTML.compiler.mjs.map +1 -1
  8. package/dist/node/engine/AreHTML.constants.d.mts +10 -1
  9. package/dist/node/engine/AreHTML.constants.d.ts +10 -1
  10. package/dist/node/engine/AreHTML.constants.js +21 -0
  11. package/dist/node/engine/AreHTML.constants.js.map +1 -1
  12. package/dist/node/engine/AreHTML.constants.mjs +20 -1
  13. package/dist/node/engine/AreHTML.constants.mjs.map +1 -1
  14. package/dist/node/engine/AreHTML.engine.d.mts +2 -2
  15. package/dist/node/engine/AreHTML.engine.d.ts +2 -2
  16. package/dist/node/engine/AreHTML.engine.js +15 -2
  17. package/dist/node/engine/AreHTML.engine.js.map +1 -1
  18. package/dist/node/engine/AreHTML.engine.mjs +16 -3
  19. package/dist/node/engine/AreHTML.engine.mjs.map +1 -1
  20. package/dist/node/engine/AreHTML.interpreter.js +1 -0
  21. package/dist/node/engine/AreHTML.interpreter.js.map +1 -1
  22. package/dist/node/engine/AreHTML.interpreter.mjs +1 -0
  23. package/dist/node/engine/AreHTML.interpreter.mjs.map +1 -1
  24. package/dist/node/engine/AreHTML.lifecycle.d.mts +11 -3
  25. package/dist/node/engine/AreHTML.lifecycle.d.ts +11 -3
  26. package/dist/node/engine/AreHTML.lifecycle.js +20 -11
  27. package/dist/node/engine/AreHTML.lifecycle.js.map +1 -1
  28. package/dist/node/engine/AreHTML.lifecycle.mjs +21 -12
  29. package/dist/node/engine/AreHTML.lifecycle.mjs.map +1 -1
  30. package/dist/node/index.d.mts +1 -1
  31. package/dist/node/index.d.ts +1 -1
  32. package/dist/node/lib/AreRoot/AreRoot.component.js +2 -3
  33. package/dist/node/lib/AreRoot/AreRoot.component.js.map +1 -1
  34. package/dist/node/lib/AreRoot/AreRoot.component.mjs +2 -3
  35. package/dist/node/lib/AreRoot/AreRoot.component.mjs.map +1 -1
  36. package/examples/dashboard/dist/index.html +1 -1
  37. package/examples/dashboard/dist/{mpioi5ab-8c3oa9.js → mpmt0gys-1r9rcu.js} +80 -22
  38. package/examples/dashboard/src/components/DashboardLogo.component.ts +9 -0
  39. package/package.json +1 -1
  40. package/src/engine/AreHTML.compiler.ts +19 -1
  41. package/src/engine/AreHTML.constants.ts +16 -0
  42. package/src/engine/AreHTML.engine.ts +17 -1
  43. package/src/engine/AreHTML.interpreter.ts +3 -0
  44. package/src/engine/AreHTML.lifecycle.ts +44 -13
  45. package/src/lib/AreRoot/AreRoot.component.ts +5 -6
@@ -1,4 +1,4 @@
1
- import { AreStoreWatchingEntity, AreNode, AreAttribute, AreStore, AreScene, AreSyntax, AreMutation, AreDeclaration, AreInstructionSerialized, AreNodeNewProps, Are, AreSignal, AreContext, AreInstruction, AreCompiler, AreEngine, AreSyntaxTokenMatch, AreInterpreter, AreLifecycle, AreSignalsContext, AreTokenizer, AreTransformer, ArePropDefinition } from '@adaas/are';
1
+ import { AreStoreWatchingEntity, AreNode, AreAttribute, AreStore, AreScene, AreSyntax, AreMutation, AreDeclaration, AreInstructionSerialized, AreNodeNewProps, Are, AreSignal, AreContext, AreInstruction, AreCompiler, AreEngine, AreSignalsContext, AreSyntaxTokenMatch, AreInterpreter, AreLifecycle, AreTokenizer, AreTransformer, ArePropDefinition } from '@adaas/are';
2
2
  import { A_Component, A_TYPES__Ctor, A_Fragment, ASEID, A_Scope, A_Feature, A_ComponentMeta } from '@adaas/a-concept';
3
3
  import { A_Logger } from '@adaas/a-utils/a-logger';
4
4
  import { A_ExecutionContext } from '@adaas/a-utils/a-execution';
@@ -311,6 +311,15 @@ declare class AreRoute extends AreSignal<A_Route> {
311
311
  compare(other: A_Signal<A_Route>): boolean;
312
312
  }
313
313
 
314
+ /**
315
+ * Void HTML elements that cannot have children and must not have a closing tag.
316
+ * Per the HTML5 spec these are treated as self-closing even when written as
317
+ * `<input>` (without the trailing slash `/>`).
318
+ *
319
+ * Reference: https://html.spec.whatwg.org/multipage/syntax.html#void-elements
320
+ */
321
+ declare const VOID_ELEMENTS: Set<string>;
322
+ declare function isVoidElement(tagName: string): boolean;
314
323
  /**
315
324
  * Boolean HTML attributes whose presence (regardless of value) implies "true",
316
325
  * and whose absence implies "false". Setting these via `setAttribute(name, value)`
@@ -502,7 +511,7 @@ declare class AreHTMLEngine extends AreEngine {
502
511
  *
503
512
  * @param container
504
513
  */
505
- init(scope: A_Scope): Promise<void>;
514
+ init(scope: A_Scope, signalContext?: AreSignalsContext): Promise<void>;
506
515
  protected rootElementMatcher(source: string, from: number, to: number, build: (raw: string, content: string, position: number, closing: string) => AreSyntaxTokenMatch): AreSyntaxTokenMatch | null;
507
516
  protected htmlElementMatcher(source: string, from: number, to: number, build: (raw: string, content: string, position: number, closing: string) => AreSyntaxTokenMatch): AreSyntaxTokenMatch | null;
508
517
  /**
@@ -531,10 +540,18 @@ declare class AreHTMLInterpreter extends AreInterpreter {
531
540
  }
532
541
 
533
542
  declare class AreHTMLLifecycle extends AreLifecycle {
534
- initComponent(node: AreHTMLNode, scope: A_Scope, context: AreHTMLEngineContext, logger?: A_Logger, ...args: any[]): void;
535
- initRoot(node: AreHTMLNode, scope: A_Scope, context: AreHTMLEngineContext, signalsContext?: AreSignalsContext, logger?: A_Logger, ...args: any[]): void;
543
+ initComponent(node: AreHTMLNode, scope: A_Scope, context: AreHTMLEngineContext, signalsContext?: AreSignalsContext, logger?: A_Logger, ...args: any[]): void;
536
544
  initText(node: AreHTMLNode, scope: A_Scope, context: AreHTMLEngineContext, logger?: A_Logger, ...args: any[]): void;
537
545
  initInterpolation(node: AreHTMLNode, scope: A_Scope, context: AreHTMLEngineContext, logger?: A_Logger, ...args: any[]): void;
546
+ mount(
547
+ /**
548
+ * Node to be mounted
549
+ */
550
+ node: AreHTMLNode,
551
+ /**
552
+ * Node Content
553
+ */
554
+ scene: AreScene, logger?: A_Logger, ...args: any[]): void;
538
555
  updateDirectiveAttribute(directive: AreDirectiveAttribute, scope: A_Scope, feature: A_Feature, logger?: A_Logger, ...args: any[]): void;
539
556
  }
540
557
 
@@ -601,4 +618,4 @@ declare class AreRouteWatcher extends A_Component {
601
618
  private notify;
602
619
  }
603
620
 
604
- export { AddAttributeInstruction, AddElementInstruction, AddInterpolationInstruction, AddListenerInstruction, AddStyleInstruction, AddTextInstruction, AreBindingAttribute, AreComment, AreComponentNode, AreDirective, AreDirectiveAttribute, AreDirectiveContext, AreDirectiveFeatures, AreDirectiveFor, AreDirectiveIf, AreDirectiveMeta, type AreDirectiveOrderDecoratorParameters, AreEventAttribute, AreHTMLAttribute, AreHTMLCompiler, type AreHTMLContextConstructor, AreHTMLEngine, AreHTMLEngineContext, AreHTMLInstructions, AreHTMLInterpreter, AreHTMLLifecycle, AreHTMLNode, AreHTMLTokenizer, AreHTMLTransformer, type AreHtmlAddAttributeInstructionPayload, type AreHtmlAddCommentInstructionPayload, type AreHtmlAddElementInstructionPayload, type AreHtmlAddInterpolationInstructionPayload, type AreHtmlAddListenerInstructionPayload, type AreHtmlAddStyleInstructionPayload, type AreHtmlAddTextInstructionPayload, AreInterpolation, AreRoot, AreRootNode, AreRoute, AreRouteWatcher, AreStaticAttribute, AreStyle, AreText, BOOLEAN_ATTRIBUTES, IDL_FORM_PROPERTIES, LISTENER_OPTION_MODIFIERS, type ParsedEventName, isBooleanAttribute, isIDLFormProperty, normalizeClassValue, normalizeStyleValue, parseEventName, toDOMString };
621
+ export { AddAttributeInstruction, AddElementInstruction, AddInterpolationInstruction, AddListenerInstruction, AddStyleInstruction, AddTextInstruction, AreBindingAttribute, AreComment, AreComponentNode, AreDirective, AreDirectiveAttribute, AreDirectiveContext, AreDirectiveFeatures, AreDirectiveFor, AreDirectiveIf, AreDirectiveMeta, type AreDirectiveOrderDecoratorParameters, AreEventAttribute, AreHTMLAttribute, AreHTMLCompiler, type AreHTMLContextConstructor, AreHTMLEngine, AreHTMLEngineContext, AreHTMLInstructions, AreHTMLInterpreter, AreHTMLLifecycle, AreHTMLNode, AreHTMLTokenizer, AreHTMLTransformer, type AreHtmlAddAttributeInstructionPayload, type AreHtmlAddCommentInstructionPayload, type AreHtmlAddElementInstructionPayload, type AreHtmlAddInterpolationInstructionPayload, type AreHtmlAddListenerInstructionPayload, type AreHtmlAddStyleInstructionPayload, type AreHtmlAddTextInstructionPayload, AreInterpolation, AreRoot, AreRootNode, AreRoute, AreRouteWatcher, AreStaticAttribute, AreStyle, AreText, BOOLEAN_ATTRIBUTES, IDL_FORM_PROPERTIES, LISTENER_OPTION_MODIFIERS, type ParsedEventName, VOID_ELEMENTS, isBooleanAttribute, isIDLFormProperty, isVoidElement, normalizeClassValue, normalizeStyleValue, parseEventName, toDOMString };
@@ -821,6 +821,25 @@ AreRoute = __decorateClass([
821
821
  ], AreRoute);
822
822
 
823
823
  // src/engine/AreHTML.constants.ts
824
+ var VOID_ELEMENTS = /* @__PURE__ */ new Set([
825
+ "area",
826
+ "base",
827
+ "br",
828
+ "col",
829
+ "embed",
830
+ "hr",
831
+ "img",
832
+ "input",
833
+ "link",
834
+ "meta",
835
+ "param",
836
+ "source",
837
+ "track",
838
+ "wbr"
839
+ ]);
840
+ function isVoidElement(tagName) {
841
+ return VOID_ELEMENTS.has(tagName.toLowerCase());
842
+ }
824
843
  var BOOLEAN_ATTRIBUTES = /* @__PURE__ */ new Set([
825
844
  "allowfullscreen",
826
845
  "async",
@@ -1102,6 +1121,16 @@ var AreHTMLCompiler = class extends AreCompiler {
1102
1121
  title: "Scene Host Not Found",
1103
1122
  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.`
1104
1123
  });
1124
+ const content = attribute.content;
1125
+ if (content.includes("{{")) {
1126
+ const transformed = '"' + content.replace(/\{\{([^}]+)\}\}/g, '"+($1)+"') + '"';
1127
+ scene.plan(new AddAttributeInstruction(scene.host, {
1128
+ name: attribute.name,
1129
+ content: transformed,
1130
+ evaluate: true
1131
+ }));
1132
+ return;
1133
+ }
1105
1134
  scene.plan(new AddAttributeInstruction(scene.host, {
1106
1135
  name: attribute.name,
1107
1136
  content: attribute.content
@@ -1409,6 +1438,7 @@ var AreHTMLInterpreter = class extends AreInterpreter {
1409
1438
  event.set("args", effectiveArgs);
1410
1439
  event.set("element", element);
1411
1440
  event.set("instruction", mutation);
1441
+ if (liveEvent) event.set("native", liveEvent);
1412
1442
  mutation.owner.emit(event);
1413
1443
  };
1414
1444
  handlerScope[`$${handler}`] = handlerFn;
@@ -1725,10 +1755,7 @@ AreHTMLTokenizer = __decorateClass([
1725
1755
  })
1726
1756
  ], AreHTMLTokenizer);
1727
1757
  var AreHTMLLifecycle = class extends AreLifecycle {
1728
- initComponent(node, scope, context, logger, ...args) {
1729
- super.init(node, scope, context, logger, ...args);
1730
- }
1731
- initRoot(node, scope, context, signalsContext, logger, ...args) {
1758
+ initComponent(node, scope, context, signalsContext, logger, ...args) {
1732
1759
  signalsContext?.subscribe(node);
1733
1760
  super.init(node, scope, context, logger, ...args);
1734
1761
  }
@@ -1740,6 +1767,14 @@ var AreHTMLLifecycle = class extends AreLifecycle {
1740
1767
  const scene = new AreScene(node.aseid);
1741
1768
  scope.register(scene);
1742
1769
  }
1770
+ mount(node, scene, logger, ...args) {
1771
+ logger?.debug(`[Mount] Component Trigger for <${node.aseid.entity}> with aseid :{${node.aseid.toString()}}`);
1772
+ node.interpret();
1773
+ for (let i = 0; i < node.children.length; i++) {
1774
+ const child = node.children[i];
1775
+ child.mount();
1776
+ }
1777
+ }
1743
1778
  updateDirectiveAttribute(directive, scope, feature, logger, ...args) {
1744
1779
  if (directive.component) {
1745
1780
  feature.chain(directive.component, AreDirectiveFeatures.Update, directive.owner.scope);
@@ -1750,19 +1785,13 @@ var AreHTMLLifecycle = class extends AreLifecycle {
1750
1785
  };
1751
1786
  __decorateClass([
1752
1787
  AreLifecycle.Init(AreComponentNode),
1753
- __decorateParam(0, A_Inject(A_Caller)),
1754
- __decorateParam(1, A_Inject(A_Scope)),
1755
- __decorateParam(2, A_Inject(AreHTMLEngineContext)),
1756
- __decorateParam(3, A_Inject(A_Logger))
1757
- ], AreHTMLLifecycle.prototype, "initComponent", 1);
1758
- __decorateClass([
1759
1788
  AreLifecycle.Init(AreRootNode),
1760
1789
  __decorateParam(0, A_Inject(A_Caller)),
1761
1790
  __decorateParam(1, A_Inject(A_Scope)),
1762
1791
  __decorateParam(2, A_Inject(AreHTMLEngineContext)),
1763
1792
  __decorateParam(3, A_Inject(AreSignalsContext)),
1764
1793
  __decorateParam(4, A_Inject(A_Logger))
1765
- ], AreHTMLLifecycle.prototype, "initRoot", 1);
1794
+ ], AreHTMLLifecycle.prototype, "initComponent", 1);
1766
1795
  __decorateClass([
1767
1796
  AreLifecycle.Init(AreText),
1768
1797
  __decorateParam(0, A_Inject(A_Caller)),
@@ -1777,6 +1806,15 @@ __decorateClass([
1777
1806
  __decorateParam(2, A_Inject(AreHTMLEngineContext)),
1778
1807
  __decorateParam(3, A_Inject(A_Logger))
1779
1808
  ], AreHTMLLifecycle.prototype, "initInterpolation", 1);
1809
+ __decorateClass([
1810
+ A_Feature.Extend({
1811
+ name: AreNodeFeatures.onMount,
1812
+ scope: [AreHTMLNode]
1813
+ }),
1814
+ __decorateParam(0, A_Inject(A_Caller)),
1815
+ __decorateParam(1, A_Inject(AreScene)),
1816
+ __decorateParam(2, A_Inject(A_Logger))
1817
+ ], AreHTMLLifecycle.prototype, "mount", 1);
1780
1818
  __decorateClass([
1781
1819
  A_Feature.Extend({
1782
1820
  name: AreAttributeFeatures.Update,
@@ -1866,7 +1904,7 @@ var AreHTMLEngine = class extends AreEngine {
1866
1904
  ]
1867
1905
  });
1868
1906
  }
1869
- async init(scope) {
1907
+ async init(scope, signalContext) {
1870
1908
  this.package(scope, {
1871
1909
  context: new AreHTMLEngineContext({}),
1872
1910
  syntax: this.DefaultSyntax,
@@ -1876,6 +1914,10 @@ var AreHTMLEngine = class extends AreEngine {
1876
1914
  lifecycle: AreHTMLLifecycle,
1877
1915
  transformer: AreHTMLTransformer
1878
1916
  });
1917
+ if (!signalContext) {
1918
+ signalContext = new AreSignalsContext();
1919
+ scope.register(signalContext);
1920
+ }
1879
1921
  }
1880
1922
  rootElementMatcher(source, from, to, build) {
1881
1923
  const rootTag = "are-root";
@@ -1920,6 +1962,13 @@ var AreHTMLEngine = class extends AreEngine {
1920
1962
  match2.payload = { entity: tagName, selfClose: true, id };
1921
1963
  return match2;
1922
1964
  }
1965
+ if (isVoidElement(tagName)) {
1966
+ const raw = source.slice(tagStart, openingTagEnd + 1);
1967
+ const content2 = source.slice(tagStart + tagNameMatch[0].length, openingTagEnd);
1968
+ const match2 = build(raw, content2, tagStart, ">");
1969
+ match2.payload = { entity: tagName, selfClose: true, id };
1970
+ return match2;
1971
+ }
1923
1972
  const closingTag = `</${tagName}>`;
1924
1973
  let level = 0;
1925
1974
  let searchIndex = openingTagEnd + 1;
@@ -1977,7 +2026,8 @@ __decorateClass([
1977
2026
  name: A_ServiceFeatures.onBeforeLoad,
1978
2027
  before: /.*/
1979
2028
  }),
1980
- __decorateParam(0, A_Inject(A_Scope))
2029
+ __decorateParam(0, A_Inject(A_Scope)),
2030
+ __decorateParam(1, A_Inject(AreSignalsContext))
1981
2031
  ], AreHTMLEngine.prototype, "init", 1);
1982
2032
  AreHTMLEngine = __decorateClass([
1983
2033
  A_Frame.Define({
@@ -2014,8 +2064,8 @@ var AreRoot = class extends Are {
2014
2064
  }
2015
2065
  }
2016
2066
  if (!componentName) {
2017
- const defaultAttr = root.attributes.find((attr) => attr.name === "default");
2018
- componentName = defaultAttr?.content;
2067
+ const defaultMatch = root.markup?.match(/\bdefault=["']([^"']*)["']/);
2068
+ componentName = defaultMatch?.[1];
2019
2069
  }
2020
2070
  if (!componentName) {
2021
2071
  logger.warning('AreRoot: No component found for initial render. Please ensure a route condition or "default" attribute is set.');
@@ -2024,7 +2074,6 @@ var AreRoot = class extends Are {
2024
2074
  root.setContent(`<${componentName}></${componentName}>`);
2025
2075
  }
2026
2076
  async onSignal(root, vector, store, logger, signalsContext) {
2027
- console.log("Received signal vector in AreRoot:", root, vector);
2028
2077
  const rootId = root.id;
2029
2078
  if (signalsContext && !signalsContext.hasRoot(rootId)) {
2030
2079
  return;
@@ -2143,6 +2192,6 @@ AreRouteWatcher = __decorateClass([
2143
2192
  })
2144
2193
  ], AreRouteWatcher);
2145
2194
 
2146
- export { AddAttributeInstruction, AddElementInstruction, AddInterpolationInstruction, AddListenerInstruction, AddStyleInstruction, AddTextInstruction, AreBindingAttribute, AreComment, AreComponentNode, AreDirective, AreDirectiveAttribute, AreDirectiveContext, AreDirectiveFeatures, AreDirectiveFor, AreDirectiveIf, AreDirectiveMeta, AreEventAttribute, AreHTMLAttribute, AreHTMLCompiler, AreHTMLEngine, AreHTMLEngineContext, AreHTMLInstructions, AreHTMLInterpreter, AreHTMLLifecycle, AreHTMLNode, AreHTMLTokenizer, AreHTMLTransformer, AreInterpolation, AreRoot, AreRootNode, AreRoute, AreRouteWatcher, AreStaticAttribute, AreStyle, AreText, BOOLEAN_ATTRIBUTES, IDL_FORM_PROPERTIES, LISTENER_OPTION_MODIFIERS, isBooleanAttribute, isIDLFormProperty, normalizeClassValue, normalizeStyleValue, parseEventName, toDOMString };
2195
+ export { AddAttributeInstruction, AddElementInstruction, AddInterpolationInstruction, AddListenerInstruction, AddStyleInstruction, AddTextInstruction, AreBindingAttribute, AreComment, AreComponentNode, AreDirective, AreDirectiveAttribute, AreDirectiveContext, AreDirectiveFeatures, AreDirectiveFor, AreDirectiveIf, AreDirectiveMeta, AreEventAttribute, AreHTMLAttribute, AreHTMLCompiler, AreHTMLEngine, AreHTMLEngineContext, AreHTMLInstructions, AreHTMLInterpreter, AreHTMLLifecycle, AreHTMLNode, AreHTMLTokenizer, AreHTMLTransformer, AreInterpolation, AreRoot, AreRootNode, AreRoute, AreRouteWatcher, AreStaticAttribute, AreStyle, AreText, BOOLEAN_ATTRIBUTES, IDL_FORM_PROPERTIES, LISTENER_OPTION_MODIFIERS, VOID_ELEMENTS, isBooleanAttribute, isIDLFormProperty, isVoidElement, normalizeClassValue, normalizeStyleValue, parseEventName, toDOMString };
2147
2196
  //# sourceMappingURL=index.mjs.map
2148
2197
  //# sourceMappingURL=index.mjs.map