@craft-ts/component 0.7.0-beta.13 → 0.7.0-beta.15

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 (195) hide show
  1. package/package.json +7 -2
  2. package/src/index.d.ts +40 -40
  3. package/src/index.js +35 -35
  4. package/src/lib/a11y-control.d.ts +0 -1
  5. package/src/lib/a11y-control.js +0 -1
  6. package/src/lib/a11y.d.ts +4 -5
  7. package/src/lib/a11y.js +3 -4
  8. package/src/lib/ai/ai-context-menu.d.ts +24 -25
  9. package/src/lib/ai/ai-context-menu.js +2 -3
  10. package/src/lib/ai/ai-send-dialog.d.ts +277 -278
  11. package/src/lib/ai/ai-send-dialog.js +4 -5
  12. package/src/lib/ai/send-context-to-ai.d.ts +1 -2
  13. package/src/lib/ai/send-context-to-ai.js +4 -5
  14. package/src/lib/assert-defined-input.d.ts +1 -2
  15. package/src/lib/assert-defined-input.js +0 -1
  16. package/src/lib/bootstrap.d.ts +4 -3
  17. package/src/lib/bootstrap.js +6 -8
  18. package/src/lib/bridge.d.ts +9 -10
  19. package/src/lib/bridge.js +3 -4
  20. package/src/lib/catch-node.d.ts +35 -0
  21. package/src/lib/{block.js → catch-node.js} +9 -10
  22. package/src/lib/component.d.ts +23 -10
  23. package/src/lib/component.js +5 -6
  24. package/src/lib/composition.d.ts +1 -2
  25. package/src/lib/composition.js +2 -3
  26. package/src/lib/craft-defaults.d.ts +0 -1
  27. package/src/lib/craft-defaults.js +4 -5
  28. package/src/lib/craft-host-tokens.d.ts +0 -1
  29. package/src/lib/craft-host-tokens.js +0 -1
  30. package/src/lib/craft-router-outlet.d.ts +1 -2
  31. package/src/lib/craft-router-outlet.js +1 -2
  32. package/src/lib/css-vars.d.ts +0 -1
  33. package/src/lib/css-vars.js +0 -1
  34. package/src/lib/css-vars.type.d.ts +1 -2
  35. package/src/lib/css-vars.type.js +0 -1
  36. package/src/lib/{defer.d.ts → defer-node.d.ts} +4 -5
  37. package/src/lib/{defer.js → defer-node.js} +1 -2
  38. package/src/lib/directive.d.ts +1 -2
  39. package/src/lib/directive.js +1 -2
  40. package/src/lib/factory-runtime.d.ts +1 -2
  41. package/src/lib/factory-runtime.js +0 -1
  42. package/src/lib/{field-exception-block.d.ts → field-error-node.d.ts} +22 -23
  43. package/src/lib/{field-exception-block.js → field-error-node.js} +8 -9
  44. package/src/lib/for-node.d.ts +28 -0
  45. package/src/lib/{each.js → for-node.js} +4 -5
  46. package/src/lib/for-scheduling.d.ts +58 -0
  47. package/src/lib/{each-scheduling.js → for-scheduling.js} +14 -15
  48. package/src/lib/host-runtime.d.ts +0 -1
  49. package/src/lib/host-runtime.js +0 -1
  50. package/src/lib/hydrate.d.ts +2 -3
  51. package/src/lib/hydrate.js +57 -18
  52. package/src/lib/hyperscript.d.ts +1 -2
  53. package/src/lib/hyperscript.js +1 -2
  54. package/src/lib/if-node.d.ts +7 -0
  55. package/src/lib/{if-block.js → if-node.js} +2 -3
  56. package/src/lib/locator.d.ts +5 -6
  57. package/src/lib/locator.js +1 -2
  58. package/src/lib/{match-block.d.ts → match-node.d.ts} +8 -9
  59. package/src/lib/{match-block.js → match-node.js} +3 -4
  60. package/src/lib/{pending-block.d.ts → pending-node.d.ts} +28 -29
  61. package/src/lib/{pending-block.js → pending-node.js} +12 -13
  62. package/src/lib/project.d.ts +2 -3
  63. package/src/lib/project.js +2 -3
  64. package/src/lib/render/hydration-metadata.d.ts +0 -1
  65. package/src/lib/render/hydration-metadata.js +0 -1
  66. package/src/lib/render/hydration.d.ts +0 -1
  67. package/src/lib/render/hydration.js +0 -1
  68. package/src/lib/render/interpreter.d.ts +9 -8
  69. package/src/lib/render/interpreter.js +156 -81
  70. package/src/lib/render/server-style-collector.d.ts +0 -1
  71. package/src/lib/render/server-style-collector.js +0 -1
  72. package/src/lib/render/ssr-coordinator.d.ts +4 -2
  73. package/src/lib/render/ssr-coordinator.js +14 -3
  74. package/src/lib/render/string-dom.d.ts +0 -1
  75. package/src/lib/render/string-dom.js +48 -7
  76. package/src/lib/render/style-registry.d.ts +3 -2
  77. package/src/lib/render/style-registry.js +3 -2
  78. package/src/lib/render/style-scope.d.ts +0 -1
  79. package/src/lib/render/style-scope.js +0 -1
  80. package/src/lib/render/vnode.d.ts +117 -54
  81. package/src/lib/render/vnode.js +26 -27
  82. package/src/lib/security.d.ts +54 -0
  83. package/src/lib/security.js +502 -0
  84. package/src/lib/server-render.d.ts +12 -3
  85. package/src/lib/server-render.js +76 -17
  86. package/src/lib/start.d.ts +2 -3
  87. package/src/lib/start.js +3 -3
  88. package/src/lib/template-contract.d.ts +22 -23
  89. package/src/lib/template-contract.js +0 -1
  90. package/src/lib/template.d.ts +2 -3
  91. package/src/lib/template.js +2 -3
  92. package/src/lib/testing.d.ts +3 -4
  93. package/src/lib/testing.js +5 -6
  94. package/src/lib/types.d.ts +40 -28
  95. package/src/lib/types.js +3 -4
  96. package/testing/public-api.d.ts +0 -1
  97. package/testing/public-api.js +0 -1
  98. package/src/index.d.ts.map +0 -1
  99. package/src/index.js.map +0 -1
  100. package/src/lib/a11y-control.d.ts.map +0 -1
  101. package/src/lib/a11y-control.js.map +0 -1
  102. package/src/lib/a11y.d.ts.map +0 -1
  103. package/src/lib/a11y.js.map +0 -1
  104. package/src/lib/ai/ai-context-menu.d.ts.map +0 -1
  105. package/src/lib/ai/ai-context-menu.js.map +0 -1
  106. package/src/lib/ai/ai-send-dialog.d.ts.map +0 -1
  107. package/src/lib/ai/ai-send-dialog.js.map +0 -1
  108. package/src/lib/ai/send-context-to-ai.d.ts.map +0 -1
  109. package/src/lib/ai/send-context-to-ai.js.map +0 -1
  110. package/src/lib/assert-defined-input.d.ts.map +0 -1
  111. package/src/lib/assert-defined-input.js.map +0 -1
  112. package/src/lib/block.d.ts +0 -36
  113. package/src/lib/block.d.ts.map +0 -1
  114. package/src/lib/block.js.map +0 -1
  115. package/src/lib/bootstrap.d.ts.map +0 -1
  116. package/src/lib/bootstrap.js.map +0 -1
  117. package/src/lib/bridge.d.ts.map +0 -1
  118. package/src/lib/bridge.js.map +0 -1
  119. package/src/lib/component.d.ts.map +0 -1
  120. package/src/lib/component.js.map +0 -1
  121. package/src/lib/composition.d.ts.map +0 -1
  122. package/src/lib/composition.js.map +0 -1
  123. package/src/lib/craft-defaults.d.ts.map +0 -1
  124. package/src/lib/craft-defaults.js.map +0 -1
  125. package/src/lib/craft-host-tokens.d.ts.map +0 -1
  126. package/src/lib/craft-host-tokens.js.map +0 -1
  127. package/src/lib/craft-router-outlet.d.ts.map +0 -1
  128. package/src/lib/craft-router-outlet.js.map +0 -1
  129. package/src/lib/css-vars.d.ts.map +0 -1
  130. package/src/lib/css-vars.js.map +0 -1
  131. package/src/lib/css-vars.type.d.ts.map +0 -1
  132. package/src/lib/css-vars.type.js.map +0 -1
  133. package/src/lib/defer.d.ts.map +0 -1
  134. package/src/lib/defer.js.map +0 -1
  135. package/src/lib/directive.d.ts.map +0 -1
  136. package/src/lib/directive.js.map +0 -1
  137. package/src/lib/each-scheduling.d.ts +0 -59
  138. package/src/lib/each-scheduling.d.ts.map +0 -1
  139. package/src/lib/each-scheduling.js.map +0 -1
  140. package/src/lib/each.d.ts +0 -29
  141. package/src/lib/each.d.ts.map +0 -1
  142. package/src/lib/each.js.map +0 -1
  143. package/src/lib/factory-runtime.d.ts.map +0 -1
  144. package/src/lib/factory-runtime.js.map +0 -1
  145. package/src/lib/field-exception-block.d.ts.map +0 -1
  146. package/src/lib/field-exception-block.js.map +0 -1
  147. package/src/lib/host-runtime.d.ts.map +0 -1
  148. package/src/lib/host-runtime.js.map +0 -1
  149. package/src/lib/hydrate.d.ts.map +0 -1
  150. package/src/lib/hydrate.js.map +0 -1
  151. package/src/lib/hyperscript.d.ts.map +0 -1
  152. package/src/lib/hyperscript.js.map +0 -1
  153. package/src/lib/if-block.d.ts +0 -8
  154. package/src/lib/if-block.d.ts.map +0 -1
  155. package/src/lib/if-block.js.map +0 -1
  156. package/src/lib/locator.d.ts.map +0 -1
  157. package/src/lib/locator.js.map +0 -1
  158. package/src/lib/match-block.d.ts.map +0 -1
  159. package/src/lib/match-block.js.map +0 -1
  160. package/src/lib/pending-block.d.ts.map +0 -1
  161. package/src/lib/pending-block.js.map +0 -1
  162. package/src/lib/project.d.ts.map +0 -1
  163. package/src/lib/project.js.map +0 -1
  164. package/src/lib/render/hydration-metadata.d.ts.map +0 -1
  165. package/src/lib/render/hydration-metadata.js.map +0 -1
  166. package/src/lib/render/hydration.d.ts.map +0 -1
  167. package/src/lib/render/hydration.js.map +0 -1
  168. package/src/lib/render/interpreter.d.ts.map +0 -1
  169. package/src/lib/render/interpreter.js.map +0 -1
  170. package/src/lib/render/server-style-collector.d.ts.map +0 -1
  171. package/src/lib/render/server-style-collector.js.map +0 -1
  172. package/src/lib/render/ssr-coordinator.d.ts.map +0 -1
  173. package/src/lib/render/ssr-coordinator.js.map +0 -1
  174. package/src/lib/render/string-dom.d.ts.map +0 -1
  175. package/src/lib/render/string-dom.js.map +0 -1
  176. package/src/lib/render/style-registry.d.ts.map +0 -1
  177. package/src/lib/render/style-registry.js.map +0 -1
  178. package/src/lib/render/style-scope.d.ts.map +0 -1
  179. package/src/lib/render/style-scope.js.map +0 -1
  180. package/src/lib/render/vnode.d.ts.map +0 -1
  181. package/src/lib/render/vnode.js.map +0 -1
  182. package/src/lib/server-render.d.ts.map +0 -1
  183. package/src/lib/server-render.js.map +0 -1
  184. package/src/lib/start.d.ts.map +0 -1
  185. package/src/lib/start.js.map +0 -1
  186. package/src/lib/template-contract.d.ts.map +0 -1
  187. package/src/lib/template-contract.js.map +0 -1
  188. package/src/lib/template.d.ts.map +0 -1
  189. package/src/lib/template.js.map +0 -1
  190. package/src/lib/testing.d.ts.map +0 -1
  191. package/src/lib/testing.js.map +0 -1
  192. package/src/lib/types.d.ts.map +0 -1
  193. package/src/lib/types.js.map +0 -1
  194. package/testing/public-api.d.ts.map +0 -1
  195. package/testing/public-api.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"locator.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/locator.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CraftComponent,\n ComponentTemplateOf,\n} from './types';\nimport { YIELDABLE_VALUE } from '@craft-ts/core';\nimport type {\n CraftDirectiveNode,\n ElementNodeBase,\n CraftNode,\n CraftNodeChild,\n CraftNodeChildren,\n} from './render/vnode';\n\ntype IsAny<Value> = 0 extends 1 & Value ? true : false;\n\ntype LiteralString<Value> = Value extends string\n ? string extends Value\n ? never\n : Value\n : never;\n\ntype ClassTokens<Value> = [Value] extends [string]\n ? LiteralString<Value> extends infer Text extends string\n ? Text extends ''\n ? never\n : Text extends `${infer Head} ${infer Tail}`\n ? Head extends ''\n ? ClassTokens<Tail>\n : Head | ClassTokens<Tail>\n : Text\n : never\n : [Value] extends [readonly unknown[]]\n ? ClassTokens<Value[number]>\n : [Value] extends [Readonly<Record<string, boolean | null | undefined>>]\n ? string extends keyof Value\n ? never\n : Extract<keyof Value, string>\n : never;\n\ntype StaticAttributeValue<Value> = [Value] extends [string]\n ? string extends Value\n ? never\n : Value\n : [Value] extends [number]\n ? number extends Value\n ? never\n : Value\n : [Value] extends [boolean]\n ? boolean extends Value\n ? never\n : Value\n : never;\n\ntype StaticDirectAttributes<Props> = {\n [Key in keyof Props & string as Key extends `data-${string}` | `aria-${string}`\n ? StaticAttributeValue<Props[Key]> extends never\n ? never\n : Key\n : never]: StaticAttributeValue<Props[Key]>;\n};\n\ntype StaticNestedAttributes<Props> = Props extends {\n readonly attrs?: infer Attributes;\n}\n ? Attributes extends object\n ? {\n [Key in keyof Attributes & string as StaticAttributeValue<\n Attributes[Key]\n > extends never\n ? never\n : Key]: StaticAttributeValue<Attributes[Key]>;\n }\n : {}\n : {};\n\nexport type StaticLocatorCriteria<Props> = (Props extends {\n readonly class?: infer Class;\n}\n ? [ClassTokens<Class>] extends [never]\n ? {}\n : { readonly class: ClassTokens<Class> }\n : {}) &\n StaticDirectAttributes<Props> &\n StaticNestedAttributes<Props>;\n\ntype LocatorCandidate<\n Tag extends keyof HTMLElementTagNameMap,\n Criteria extends object,\n Optional extends boolean,\n Repeated extends boolean,\n> = {\n readonly tag: Tag;\n readonly criteria: Criteria;\n readonly optional: Optional;\n readonly repeated: Repeated;\n};\n\ntype DirectContentNames<Value> = Value extends unknown\n ? Value extends { readonly [YIELDABLE_VALUE]: infer Name extends string }\n ? LiteralString<Name>\n : Value extends readonly (infer Item)[]\n ? DirectContentNames<Item>\n : never\n : never;\n\ntype ContentLocatorCandidates<\n Tag extends keyof HTMLElementTagNameMap,\n Props,\n Children,\n Optional extends boolean,\n Repeated extends boolean,\n> = DirectContentNames<Children> extends infer Name extends string\n ? LocatorCandidate<\n Tag,\n StaticLocatorCriteria<Props> & { readonly content: Name },\n Optional,\n Repeated\n >\n : never;\n\ntype VisitContentNode<\n Node,\n Optional extends boolean,\n Repeated extends boolean,\n Seen extends readonly unknown[] = [],\n Depth extends readonly unknown[] = [],\n> = Depth['length'] extends 8\n ? never\n : IsAny<Node> extends true\n ? never\n : Node extends readonly (infer Child)[]\n ? VisitContentNode<Child, Optional, Repeated, Seen, [...Depth, unknown]>\n : Node extends ElementNodeBase<\n any,\n infer Tag extends keyof HTMLElementTagNameMap,\n infer Props,\n infer Children\n >\n ?\n | ContentLocatorCandidates<\n Tag,\n Props,\n Children,\n Optional,\n Repeated\n >\n | VisitContentNode<\n Children,\n Optional,\n Repeated,\n Seen,\n [...Depth, unknown]\n >\n : Node extends {\n readonly kind: 'component';\n readonly component: infer Component;\n }\n ? Component extends CraftComponent<any, any>\n ? Component extends Seen[number]\n ? never\n : VisitContentNode<\n ReturnType<ComponentTemplateOf<Component>>,\n Optional,\n Repeated,\n [...Seen, Component],\n [...Depth, unknown]\n >\n : never\n : Node extends CraftDirectiveNode<any>\n ? VisitContentNode<\n Node['node'],\n Optional,\n Repeated,\n Seen,\n [...Depth, unknown]\n >\n : Node extends {\n readonly kind: 'if';\n readonly whenTrue: () => infer TrueChildren;\n readonly whenFalse?: () => infer FalseChildren;\n }\n ? VisitContentNode<\n TrueChildren | FalseChildren,\n true,\n Repeated,\n Seen,\n [...Depth, unknown]\n >\n : Node extends {\n readonly kind: 'each';\n readonly itemTemplate: (...args: any[]) => infer ItemChildren;\n readonly empty?: () => infer EmptyChildren;\n }\n ? VisitContentNode<\n ItemChildren | EmptyChildren,\n true,\n true,\n Seen,\n [...Depth, unknown]\n >\n : Node extends {\n readonly kind: 'defer';\n readonly resolve: (...args: any[]) => infer Resolved;\n }\n ? VisitContentNode<\n Resolved,\n true,\n Repeated,\n Seen,\n [...Depth, unknown]\n >\n : never;\n\ntype ContentLocatorCandidatesOfTemplate<Template> = VisitContentNode<\n Template extends (...args: any[]) => infer Output ? Output : never,\n false,\n false\n>;\n\ntype ContentLocatorNames<Template, Tag> =\n ContentLocatorCandidatesOfTemplate<Template> extends infer Candidate\n ? Candidate extends LocatorCandidate<any, infer Criteria, any, any>\n ? Candidate['tag'] extends Tag\n ? Criteria extends { readonly content: infer Name extends string }\n ? Name\n : never\n : never\n : never\n : never;\n\nexport type LocatorContentNamesFor<\n Component extends CraftComponent<any, any>,\n Tag extends keyof HTMLElementTagNameMap,\n> = ContentLocatorNames<ComponentTemplateOf<Component>, Tag>;\n\ntype VisitOptionalTag<\n Node,\n Tag extends keyof HTMLElementTagNameMap,\n Optional extends boolean = false,\n Seen extends readonly unknown[] = [],\n Depth extends readonly unknown[] = [],\n> = Depth['length'] extends 8\n ? false\n : IsAny<Node> extends true\n ? false\n : Node extends readonly (infer Child)[]\n ? VisitOptionalTag<Child, Tag, Optional, Seen, [...Depth, unknown]>\n : Node extends ElementNodeBase<\n any,\n infer ActualTag extends keyof HTMLElementTagNameMap,\n any,\n infer Children\n >\n ? (ActualTag extends Tag ? Optional : false) |\n VisitOptionalTag<Children, Tag, Optional, Seen, [...Depth, unknown]>\n : Node extends {\n readonly kind: 'component';\n readonly component: infer Component;\n }\n ? Component extends CraftComponent<any, any>\n ? Component extends Seen[number]\n ? false\n : VisitOptionalTag<\n ReturnType<ComponentTemplateOf<Component>>,\n Tag,\n Optional,\n [...Seen, Component],\n [...Depth, unknown]\n >\n : false\n : Node extends CraftDirectiveNode<any>\n ? VisitOptionalTag<\n Node['node'],\n Tag,\n Optional,\n Seen,\n [...Depth, unknown]\n >\n : Node extends {\n readonly kind: 'if';\n readonly whenTrue: () => infer TrueChildren;\n readonly whenFalse?: () => infer FalseChildren;\n }\n ? VisitOptionalTag<\n TrueChildren | FalseChildren,\n Tag,\n true,\n Seen,\n [...Depth, unknown]\n >\n : Node extends {\n readonly kind: 'each';\n readonly itemTemplate: (...args: any[]) => infer ItemChildren;\n readonly empty?: () => infer EmptyChildren;\n }\n ? VisitOptionalTag<\n ItemChildren | EmptyChildren,\n Tag,\n true,\n Seen,\n [...Depth, unknown]\n >\n : Node extends {\n readonly kind: 'defer';\n readonly resolve: (...args: any[]) => infer Resolved;\n }\n ? VisitOptionalTag<\n Resolved,\n Tag,\n true,\n Seen,\n [...Depth, unknown]\n >\n : false;\n\ntype TemplateHasOptionalTag<Template, Tag extends keyof HTMLElementTagNameMap> =\n true extends VisitOptionalTag<\n Template extends (...args: any[]) => infer Output ? Output : never,\n Tag\n >\n ? true\n : false;\n\ntype NextDepth<Depth extends readonly unknown[]> = [...Depth, unknown];\n\ntype VisitChildren<\n Children,\n Depth extends readonly unknown[],\n Optional extends boolean,\n Repeated extends boolean,\n Seen extends readonly unknown[],\n> = Children extends readonly (infer Child)[]\n ? VisitNode<Child, NextDepth<Depth>, Optional, Repeated, Seen>\n : VisitNode<Children, Depth, Optional, Repeated, Seen>;\n\ntype VisitComponent<\n Component,\n Depth extends readonly unknown[],\n Optional extends boolean,\n Repeated extends boolean,\n Seen extends readonly unknown[],\n> = IsAny<Component> extends true\n ? never\n : Component extends CraftComponent<any, any>\n ? VisitChildren<\n ReturnType<ComponentTemplateOf<Component>>,\n NextDepth<Depth>,\n Optional,\n Repeated,\n Seen\n >\n : never;\n\ntype VisitNode<\n Node,\n Depth extends readonly unknown[],\n Optional extends boolean,\n Repeated extends boolean,\n Seen extends readonly unknown[],\n> = Depth['length'] extends 2\n ? never\n : IsAny<Node> extends true\n ? never\n : Node extends ElementNodeBase<\n any,\n infer Tag extends keyof HTMLElementTagNameMap,\n infer Props,\n infer Children\n >\n ?\n | LocatorCandidate<\n Tag,\n StaticLocatorCriteria<Props>,\n Optional,\n Repeated\n >\n | VisitChildren<Children, NextDepth<Depth>, Optional, Repeated, Seen>\n : Node extends {\n readonly kind: 'component';\n readonly component: infer Component;\n }\n ? VisitComponent<Component, Depth, Optional, Repeated, Seen>\n : Node extends CraftDirectiveNode<any>\n ? VisitNode<Node['node'], NextDepth<Depth>, Optional, Repeated, Seen>\n : Node extends {\n readonly kind: 'if';\n readonly whenTrue: () => infer TrueChildren;\n readonly whenFalse?: () => infer FalseChildren;\n }\n ? VisitChildren<\n TrueChildren | FalseChildren,\n NextDepth<Depth>,\n true,\n Repeated,\n Seen\n >\n : Node extends {\n readonly kind: 'each';\n readonly itemTemplate: (...args: any[]) => infer ItemChildren;\n readonly empty?: () => infer EmptyChildren;\n }\n ? VisitChildren<\n ItemChildren | EmptyChildren,\n NextDepth<Depth>,\n true,\n true,\n Seen\n >\n : Node extends {\n readonly kind: 'defer';\n readonly resolve: (...args: any[]) => infer Resolved;\n }\n ? VisitChildren<\n Resolved,\n NextDepth<Depth>,\n true,\n Repeated,\n Seen\n >\n : never;\n\nexport type TemplateLocatorCandidates<\n Component extends CraftComponent<any, any>,\n> = VisitNode<\n ReturnType<ComponentTemplateOf<Component>>,\n [],\n false,\n false,\n []\n>;\n\nexport type LocatorCriteriaFor<\n Component extends CraftComponent<any, any>,\n Tag extends keyof HTMLElementTagNameMap,\n> = LocatorCriteria & {\n readonly content?: ContentLocatorNames<ComponentTemplateOf<Component>, Tag>;\n};\n\ntype CriteriaMatches<Available, Wanted> = Wanted extends Partial<Available>\n ? true\n : false;\n\ntype MatchingCandidates<\n Candidates,\n Tag,\n Criteria,\n> = Candidates extends LocatorCandidate<\n infer CandidateTag,\n infer Available,\n any,\n any\n>\n ? CandidateTag extends Tag\n ? CriteriaMatches<Available, Criteria> extends true\n ? Candidates\n : never\n : never\n : never;\n\ntype IsUnion<Value, Whole = Value> = Value extends any\n ? [Whole] extends [Value]\n ? false\n : true\n : never;\n\ntype HasRepeated<Candidates> = Extract<\n Candidates,\n { readonly repeated: true }\n> extends never\n ? false\n : true;\n\ntype HasMultiple<Candidates> = IsUnion<Candidates> extends true ? true : false;\n\ntype LocatorIsValid<Candidates> = [Candidates] extends [never]\n ? false\n : HasRepeated<Candidates> extends true\n ? false\n : HasMultiple<Candidates> extends true\n ? false\n : true;\n\ntype LocatorOptional<Candidates> = Extract<\n Candidates,\n { readonly optional: true }\n> extends never\n ? false\n : true;\n\nexport type CraftLocatorResult<\n Tag extends keyof HTMLElementTagNameMap,\n Candidates,\n> = MaybeDefined<\n HTMLElementTagNameMap[Tag],\n LocatorOptional<Candidates>\n>;\n\nexport type MaybeDefined<Value, Optional extends boolean = true> = Optional extends true\n ? Value | undefined\n : Value;\n\nexport type LocatorCriteriaValidation<\n Component extends CraftComponent<any, any>,\n Tag extends keyof HTMLElementTagNameMap,\n Criteria,\n> = MatchingCandidates<\n TemplateLocatorCandidates<Component> |\n ContentLocatorCandidatesOfTemplate<ComponentTemplateOf<Component>>,\n Tag,\n Criteria\n> extends infer Candidates\n ? LocatorIsValid<Candidates> extends true\n ? unknown\n : {\n readonly 'locator must identify exactly one static element': never;\n }\n : never;\n\nexport type LocatorCriteria = {\n readonly class?: string;\n readonly [dataAttribute: `data-${string}`]: string | undefined;\n readonly [ariaAttribute: `aria-${string}`]: string | undefined;\n};\n\ntype CraftTemplateLocatorApiForTemplate<\n Template,\n> = {\n locator<\n const Tag extends keyof HTMLElementTagNameMap,\n const Criteria extends LocatorCriteria,\n >(\n tag: Tag,\n criteria: Criteria extends { readonly content: unknown } ? never : Criteria,\n ): MaybeDefined<\n HTMLElementTagNameMap[Tag],\n TemplateHasOptionalTag<Template, Tag>\n >;\n locator<\n const Tag extends keyof HTMLElementTagNameMap,\n const Content extends string,\n >(\n tag: Tag,\n criteria: LocatorCriteria &\n { readonly content: Content } &\n (Content extends ContentLocatorNames<Template, Tag>\n ? unknown\n : {\n readonly 'content brand is not rendered by this template': never;\n }),\n ): MaybeDefined<\n HTMLElementTagNameMap[Tag],\n TemplateHasOptionalTag<Template, Tag>\n >;\n};\n\nexport type CraftTemplateLocatorApi<\n Component extends CraftComponent<any, any>,\n> = CraftTemplateLocatorApiForTemplate<ComponentTemplateOf<Component>>;\n\nexport type RuntimeLocatorCriteria = Readonly<Record<string, unknown>>;\n\n/** Runtime marker for branded values rendered directly as element children. */\nexport const CRAFT_LOCATOR_CONTENT_NAMES = Symbol(\n 'craft-locator-content-names',\n);\n\ntype LocatorContentMarkedElement = Element & {\n readonly [CRAFT_LOCATOR_CONTENT_NAMES]?: readonly string[];\n};\n\nexport function directCraftContentNames(\n children: CraftNodeChildren,\n): readonly string[] {\n const names = new Set<string>();\n const visit = (child: CraftNodeChild): void => {\n if (Array.isArray(child)) {\n child.forEach(visit);\n return;\n }\n if (\n (typeof child === 'function' ||\n (typeof child === 'object' && child !== null)) &&\n YIELDABLE_VALUE in child\n ) {\n const name = (child as { readonly [YIELDABLE_VALUE]?: unknown })[\n YIELDABLE_VALUE\n ];\n if (typeof name === 'string') names.add(name);\n }\n };\n visit(children);\n return [...names];\n}\n\ntype RuntimeLocatorMatch = {\n readonly optional: boolean;\n readonly repeated: boolean;\n};\n\nfunction runtimeChildren(children: CraftNodeChildren): readonly CraftNode[] {\n const result: CraftNode[] = [];\n const visit = (child: CraftNodeChild): void => {\n if (Array.isArray(child)) {\n child.forEach(visit);\n } else if (\n child !== null &&\n child !== undefined &&\n typeof child === 'object' &&\n 'kind' in child\n ) {\n result.push(child as CraftNode);\n }\n };\n visit(children);\n return result;\n}\n\nfunction runtimeClassTokens(value: unknown): readonly string[] {\n if (typeof value === 'string') return value.split(/\\s+/).filter(Boolean);\n if (Array.isArray(value)) return value.flatMap(runtimeClassTokens);\n if (typeof value === 'object' && value !== null) {\n return Object.entries(value)\n .filter(([, enabled]) => enabled)\n .map(([name]) => name);\n }\n return [];\n}\n\nfunction runtimeAttributeValue(\n props: Readonly<Record<string, unknown>>,\n key: string,\n): unknown {\n if (key in props && key !== 'attrs') return props[key];\n const attrs = props['attrs'];\n return typeof attrs === 'object' && attrs !== null\n ? (attrs as Record<string, unknown>)[key]\n : undefined;\n}\n\nfunction runtimeCriteriaMatch(\n props: Readonly<Record<string, unknown>>,\n criteria: RuntimeLocatorCriteria,\n children?: CraftNodeChildren,\n): boolean {\n return Object.entries(criteria).every(([key, expected]) => {\n if (key === 'class') {\n return runtimeClassTokens(props[key]).includes(String(expected));\n }\n if (key === 'content') {\n return directCraftContentNames(children ?? []).includes(String(expected));\n }\n const actual = runtimeAttributeValue(props, key);\n if (actual === null || actual === undefined || actual === false) {\n return false;\n }\n return (actual === true ? '' : String(actual)) === String(expected);\n });\n}\n\nfunction runtimeTemplateMatches(\n children: CraftNodeChildren,\n tag: string,\n criteria: RuntimeLocatorCriteria,\n optional = false,\n repeated = false,\n seen = new Set<unknown>(),\n): RuntimeLocatorMatch[] {\n const matches: RuntimeLocatorMatch[] = [];\n for (const node of runtimeChildren(children)) {\n if (seen.has(node)) continue;\n seen.add(node);\n\n switch (node.kind) {\n case 'element':\n if (\n node.tag === tag &&\n runtimeCriteriaMatch(node.props, criteria, node.children)\n ) {\n matches.push({ optional, repeated });\n }\n matches.push(\n ...runtimeTemplateMatches(\n node.children,\n tag,\n criteria,\n optional,\n repeated,\n seen,\n ),\n );\n break;\n case 'component':\n // Child component DOM is searched by the caller. Its internal VNode\n // contract is available to the type-level walker, while a runtime\n // absence is handled conservatively by the DOM query below.\n break;\n case 'directive':\n matches.push(\n ...runtimeTemplateMatches(\n node.node as CraftNodeChildren,\n tag,\n criteria,\n optional,\n repeated,\n seen,\n ),\n );\n break;\n case 'if':\n matches.push(\n ...runtimeTemplateMatches(\n node.whenTrue(),\n tag,\n criteria,\n true,\n repeated,\n seen,\n ),\n ...(node.whenFalse\n ? runtimeTemplateMatches(\n node.whenFalse(),\n tag,\n criteria,\n true,\n repeated,\n seen,\n )\n : []),\n );\n break;\n case 'each':\n matches.push(\n ...runtimeTemplateMatches(\n node.itemTemplate(undefined as never, 0),\n tag,\n criteria,\n true,\n true,\n seen,\n ),\n );\n if (node.empty) {\n matches.push(\n ...runtimeTemplateMatches(\n node.empty(),\n tag,\n criteria,\n true,\n true,\n seen,\n ),\n );\n }\n break;\n case 'defer':\n if (node.placeholder) {\n matches.push(\n ...runtimeTemplateMatches(\n node.placeholder(),\n tag,\n criteria,\n true,\n repeated,\n seen,\n ),\n );\n }\n if (node.loading) {\n matches.push(\n ...runtimeTemplateMatches(\n node.loading(),\n tag,\n criteria,\n true,\n repeated,\n seen,\n ),\n );\n }\n if (node.error) {\n matches.push(\n ...runtimeTemplateMatches(\n node.error(undefined),\n tag,\n criteria,\n true,\n repeated,\n seen,\n ),\n );\n }\n break;\n }\n }\n return matches;\n}\n\nexport function findCraftTemplateLocator(\n host: Element,\n template: CraftNodeChildren,\n tag: string,\n criteria: RuntimeLocatorCriteria,\n): Element | undefined {\n const matches = Array.from(host.querySelectorAll(tag)).filter((element) => {\n if (criteria['content'] !== undefined) {\n const names = (element as LocatorContentMarkedElement)[\n CRAFT_LOCATOR_CONTENT_NAMES\n ];\n if (!names?.includes(String(criteria['content']))) return false;\n }\n if (criteria['class'] !== undefined) {\n if (!element.classList.contains(String(criteria['class']))) return false;\n }\n return Object.entries(criteria)\n .filter(([key]) => key !== 'class' && key !== 'content')\n .every(([key, expected]) => {\n const actual = element.getAttribute(key);\n return actual !== null && actual === (expected === true ? '' : String(expected));\n });\n });\n const runtimeMatches = runtimeTemplateMatches(template, tag, criteria);\n const optional = runtimeMatches.some((match) => match.optional);\n if (matches.length === 0) {\n if (optional) return undefined;\n throw new Error(\n `Craft locator \"${tag}\" found no matching element for ${JSON.stringify(criteria)}.`,\n );\n }\n if (matches.length !== 1) {\n throw new Error(\n `Craft locator \"${tag}\" expected exactly one matching element, found ${matches.length}.`,\n );\n }\n return matches[0];\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"match-block.d.ts","sourceRoot":"","sources":["../../../../../libs/component/src/lib/match-block.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"match-block.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/match-block.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAsH1C,SAAS,UAAU,CACjB,MAAe,EACf,aAAoE,EACpE,aAGC;IAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,aAGhB,CAAC;QACF,MAAM,YAAY,GAChB,OAAO,MAAM,KAAK,UAAU;YAC1B,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBACL,KAAK,EAAE,QAAQ,CAAE,MAAwB,EAAE,CAAgB;aAC5D,CAAC;YACJ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAExB,OAAO;YACL,IAAI,EAAE,aAAsB;YAC5B,MAAM,EAAE,YAAY;YACpB,GAAG,EAAE,OAAO;YACZ,QAAQ,EAAE,MAAM,CAAC,WAAW,CAC1B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChD,IAAI;gBACJ,GAAG,EAAE,CAAC,OAAO,EAAE;aAChB,CAAC,CACH;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,aAAsB;QAC5B,MAAM;QACN,GAAG,EAAE,aAAa;QAClB,QAAQ,EAAE,aAAa;KACxB,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,UAAU,EAAE,CAAC","sourcesContent":["import type {\n AnyCraftException,\n YieldableReactiveValue,\n} from '@craft-ts/core';\nimport { craftUse } from '@craft-ts/core';\nimport type {\n CraftNodeChildren,\n CraftNodeChildrenDependencies,\n MatchBlockNode,\n} from './render/vnode';\n\ntype ExceptionCode<Value extends object, Key extends keyof Value> = Extract<\n Value[Key],\n string | number\n>;\n\ntype ExceptionHandlerMap<Value extends object, Key extends keyof Value> = {\n [Code in ExceptionCode<Value, Key>]: (\n exception: Extract<Value, Record<Key, Code>>,\n ) => CraftNodeChildren;\n};\n\ntype MatchBlockDependencies<Handlers> =\n Handlers extends Record<string, (...args: any[]) => infer Output>\n ? CraftNodeChildrenDependencies<Output>\n : Record<never, never>;\n\ntype ExceptionKey<Value extends object> = {\n [K in keyof Value]-?: Value[K] extends string | number ? K : never;\n}[keyof Value];\n\ntype ScalarValue = string | number;\n\ntype ScalarHandlerMap<Value extends ScalarValue> = {\n [Code in Extract<Value, string | number>]: () => CraftNodeChildren;\n};\n\ntype GeneratorSourceValue<Source> = Source extends (\n ...args: any[]\n) => Generator<any, infer Value, any>\n ? Exclude<Value, undefined> extends infer ObjectValue extends object\n ? ObjectValue\n : never\n : never;\n\n/**\n * Template-projected deep readers are generator callbacks rather than the\n * original `YieldableReactiveValue` type. Keep their result type available to\n * discriminated-union matching without importing the component template\n * layer into core's component primitives.\n */\nfunction exhaustive<\n Source extends ((...args: any[]) => Generator<any, any, any>) | undefined,\n Value extends object = GeneratorSourceValue<Source>,\n Key extends ExceptionKey<Value> = ExceptionKey<Value>,\n Handlers extends ExceptionHandlerMap<Value, Key> = ExceptionHandlerMap<\n Value,\n Key\n >,\n>(\n source: Source,\n key: Key,\n handlers: Handlers,\n): MatchBlockNode<\n MatchBlockDependencies<Handlers>,\n NonNullable<Source>,\n ReturnType<Handlers[ExceptionCode<Value, Key>]>,\n Extract<ExceptionCode<Value, Key>, string>\n>;\n\nfunction exhaustive<\n Value extends object,\n Key extends ExceptionKey<Value>,\n Handlers extends ExceptionHandlerMap<Value, Key>,\n>(\n source: YieldableReactiveValue<Value>,\n key: Key,\n handlers: Handlers,\n): MatchBlockNode<\n MatchBlockDependencies<Handlers>,\n YieldableReactiveValue<Value>,\n ReturnType<Handlers[ExceptionCode<Value, Key>]>,\n Extract<ExceptionCode<Value, Key>, string>\n>;\nfunction exhaustive<\n Value extends object,\n Key extends ExceptionKey<Value>,\n Handlers extends ExceptionHandlerMap<Value, Key>,\n>(\n source: (() => Value | undefined) | Value,\n key: Key,\n handlers: Handlers,\n): MatchBlockNode<\n MatchBlockDependencies<Handlers>,\n (() => Value | undefined) | Value,\n ReturnType<Handlers[ExceptionCode<Value, Key>]>,\n Extract<ExceptionCode<Value, Key>, string>\n>;\nfunction exhaustive<\n Value extends ScalarValue,\n Handlers extends ScalarHandlerMap<Value>,\n>(\n source: YieldableReactiveValue<Value>,\n handlers: Handlers,\n): MatchBlockNode<\n MatchBlockDependencies<Handlers>,\n YieldableReactiveValue<{ value: Value }>,\n ReturnType<Handlers[Extract<Value, string | number>]>,\n Extract<Value, string>\n>;\nfunction exhaustive<\n Value extends ScalarValue,\n Handlers extends ScalarHandlerMap<Value>,\n>(\n source: (() => Value | Generator<unknown, Value, unknown>) | Value,\n handlers: Handlers,\n): MatchBlockNode<\n MatchBlockDependencies<Handlers>,\n (() => { value: Value }) | { value: Value },\n ReturnType<Handlers[Extract<Value, string | number>]>,\n Extract<Value, string>\n>;\nfunction exhaustive(\n source: unknown,\n keyOrHandlers: PropertyKey | Record<string, () => CraftNodeChildren>,\n maybeHandlers?: Record<\n string,\n (exception: AnyCraftException) => CraftNodeChildren\n >,\n) {\n if (maybeHandlers === undefined) {\n const handlers = keyOrHandlers as Record<\n string,\n () => CraftNodeChildren\n >;\n const scalarSource =\n typeof source === 'function'\n ? () => ({\n value: craftUse((source as () => unknown)()) as ScalarValue,\n })\n : { value: source };\n\n return {\n kind: 'match-block' as const,\n source: scalarSource,\n key: 'value',\n handlers: Object.fromEntries(\n Object.entries(handlers).map(([code, handler]) => [\n code,\n () => handler(),\n ]),\n ),\n };\n }\n\n return {\n kind: 'match-block' as const,\n source,\n key: keyOrHandlers,\n handlers: maybeHandlers,\n };\n}\n\n/** Reactive template counterpart of discriminated-union matching. */\nexport const matchBlock = { exhaustive };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pending-block.d.ts","sourceRoot":"","sources":["../../../../../libs/component/src/lib/pending-block.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"pending-block.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/pending-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAuB,MAAM,SAAS,CAAC;AAI/D,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAyC/E,yEAAyE;AACzE,MAAM,UAAU,0BAA0B,CACxC,OAA4B,EAC5B,KAA8B;IAE9B,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;QACnB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAC1C,MAAM,CAAS;IAExB,YAAY,MAAc;QACxB,KAAK,CACH,uBAAuB,MAAM,wDAAwD,CACtF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAiDD,SAAS,2BAA2B,CAGlC,QAAkB,EAClB,QAAqC,EACrC,SAAsC,EACtC,QAA8B,EAC9B,GAAwB;IAExB,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,CACtB,SAAS,CAA+C,CAAC;IAE3D,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE;QAChD,KAAK,EAAE;YACL,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,cAAc;YAC3D,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,SAAkC,EAAE,EAAE,CAAC,SAAS;YACxD,QAAQ,EAAE,CAAC,YAAmC,EAAE,EAAE,CAAC,YAAY;SAChE;QACD,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,uBAAuB,EAAE;QACxD,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE;QACvD,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AAyFD,MAAM,CAAC,MAAM,YAAY,GAAwB,MAAM,CAAC,MAAM,CAC5D,CAAC,UAA+B,EAAE,EAAE,EAAE,CACpC,2BAA2B,CACzB,SAAS,EACT,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAC5B,OAAO,CAAC,GAAG,CACZ,EACH;IACE,UAAU,EAAE,CACV,QAA8B,EAC9B,UAA+D,EAAE,EACjE,EAAE,CACF,2BAA2B,CACzB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAC5B,OAAO,CAAC,GAAG,CACZ;CACJ,CACqB,CAAC;AAEzB,MAAM,UAAU,uBAAuB,CACrC,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,UAAU,IAAI,uBAAuB,IAAK,KAAgB,CAC5E,CAAC;AACJ,CAAC","sourcesContent":["import { CRAFT_DIRECTIVE, type CraftDirective } from './types';\nimport type { CraftNodeChildren } from './render/vnode';\nimport type { SsrMode } from '@craft-ts/core';\n\nexport const PENDING_BLOCK_DIRECTIVE = Symbol('craft-pending-block-directive');\n\n/**\n * Where the fallback is inserted relative to the suspended subtree. The subtree\n * itself is kept mounted but **detached from the document** while it is\n * pending (its nodes live in a DocumentFragment — they are not `hidden` via\n * CSS), so its state survives the wait. Assistive tech is told via\n * `aria-busy` / `aria-live` on the fallback, not via the detached source.\n */\nexport type PendingBlockPosition = 'before' | 'after';\n\nexport type PendingFallback = () => CraftNodeChildren;\n\n/**\n * What to render for one source. A bare function covers the suspended case; the\n * object form adds `reloading`, rendered **next to the still-visible subtree**\n * when the source already has a value and is refetching.\n */\nexport type PendingBlockHandler =\n | PendingFallback\n | {\n readonly pending: PendingFallback;\n readonly reloading?: PendingFallback;\n };\n\n/** One handler per async source name, for the `.exhaustive` form. */\nexport type PendingBlockHandlers = Readonly<\n Record<string, PendingBlockHandler>\n>;\n\ntype HandlerChildrenOf<Handler> = Handler extends () => infer Children\n ? Children\n : Handler extends {\n readonly pending: () => infer Pending;\n readonly reloading?: () => infer Reloading;\n }\n ? Pending | Reloading\n : never;\n\nexport type PendingBlockHandlerChildren<Handler> = HandlerChildrenOf<Handler>;\n\n/** Resolves the children a handler renders for one of its two states. */\nexport function resolvePendingBlockHandler(\n handler: PendingBlockHandler,\n state: 'pending' | 'reloading',\n): CraftNodeChildren {\n if (typeof handler === 'function') {\n return state === 'pending' ? handler() : [];\n }\n\n return state === 'pending'\n ? handler.pending()\n : (handler.reloading?.() ?? []);\n}\n\n/**\n * Thrown when a `CraftNotSettled` escapes every `pendingBlock` boundary — the\n * runtime counterpart of the compile-time check, for the cases the types cannot\n * see (a settled read hidden inside a lambda, a dynamically built subtree).\n */\nexport class CraftUnhandledPendingError extends Error {\n readonly source: string;\n\n constructor(source: string) {\n super(\n `Craft async source \"${source}\" suspended outside of any pendingBlock(...) boundary.`,\n );\n this.name = 'CraftUnhandledPendingError';\n this.source = source;\n }\n}\n\nexport type PendingBlockDirective<\n Handlers extends PendingBlockHandlers | undefined = undefined,\n FallbackChildren extends CraftNodeChildren = CraftNodeChildren,\n> = CraftDirective & {\n readonly [PENDING_BLOCK_DIRECTIVE]: {\n /** `undefined` for the catch-all form: every source below is covered. */\n readonly handlers: Handlers;\n readonly fallback: PendingFallback | undefined;\n readonly reloading: PendingFallback | undefined;\n readonly position: PendingBlockPosition;\n readonly ssr: SsrMode | undefined;\n /** Phantom carrier — the fallback's own nodes, never read at runtime. */\n readonly fallbackChildren?: FallbackChildren;\n };\n};\n\n/**\n * The sources a `pendingBlock` leaves uncovered. The catch-all form covers\n * everything below it; the `.exhaustive` form covers only the sources it names.\n */\nexport type PendingBlockResidualSources<\n Sources extends string,\n Handlers extends PendingBlockHandlers | undefined,\n> = Handlers extends PendingBlockHandlers\n ? Exclude<Sources, Extract<keyof Handlers, string>>\n : never;\n\n/** Exhaustiveness check for `pendingBlock.exhaustive({...})`. */\nexport type PendingBlockExhaustiveCheck<\n Sources extends string,\n Handlers extends PendingBlockHandlers,\n> = [Exclude<Sources, Extract<keyof Handlers, string>>] extends [never]\n ? [Exclude<Extract<keyof Handlers, string>, Sources>] extends [never]\n ? unknown\n : {\n 'pendingBlock.exhaustive has fallbacks for sources that never suspend here': Exclude<\n Extract<keyof Handlers, string>,\n Sources\n >;\n }\n : {\n 'pendingBlock.exhaustive is missing a fallback for async sources': Exclude<\n Sources,\n Extract<keyof Handlers, string>\n >;\n };\n\nfunction createPendingBlockDirective<\n Handlers extends PendingBlockHandlers | undefined,\n>(\n handlers: Handlers,\n fallback: PendingFallback | undefined,\n reloading: PendingFallback | undefined,\n position: PendingBlockPosition,\n ssr: SsrMode | undefined,\n): PendingBlockDirective<Handlers> {\n const directive = (() =>\n undefined) as unknown as PendingBlockDirective<Handlers>;\n\n Object.defineProperty(directive, CRAFT_DIRECTIVE, {\n value: {\n name: handlers ? 'pendingBlock.exhaustive' : 'pendingBlock',\n meta: {},\n logic: (baseLogic: (...args: any[]) => any) => baseLogic,\n template: (baseTemplate: (context: any) => any) => baseTemplate,\n },\n enumerable: false,\n });\n Object.defineProperty(directive, PENDING_BLOCK_DIRECTIVE, {\n value: { handlers, fallback, reloading, position, ssr },\n enumerable: false,\n });\n\n return directive;\n}\n\ntype PendingBlockBaseOptions<\n Fallback extends PendingFallback = PendingFallback,\n> = Readonly<{\n /**\n * Rendered next to the still-visible subtree while a source that already has\n * a value is refetching. A refetch does not suspend — the stale value stays\n * on screen — so this is how the boundary reports it.\n */\n readonly reloading?: Fallback;\n /** Where the fallback goes relative to the (hidden) subtree. Defaults to `'before'`. */\n readonly position?: PendingBlockPosition;\n}>;\n\n/**\n * A client-only SSR boundary must name the shell that replaces the skipped\n * subtree. Other modes may omit it when an exhaustive handler or an outer\n * boundary owns the pending UI.\n */\nexport type PendingBlockOptions<\n Fallback extends PendingFallback = PendingFallback,\n> = PendingBlockBaseOptions<Fallback> &\n (\n | Readonly<{\n readonly ssr: 'client';\n readonly fallback: Fallback;\n }>\n | Readonly<{\n readonly ssr?: Exclude<SsrMode, 'client'>;\n /** Rendered while the subtree has an async source with no value yet. */\n readonly fallback?: Fallback;\n }>\n );\n\ninterface PendingBlockFactory {\n /**\n * A boundary that renders `fallback` while **any** async source read below it\n * has no value yet — the template equivalent of Solid's `Suspense`.\n *\n * ```ts\n * div([span(users.settledValue)]).pipe(\n * pendingBlock({ fallback: () => span('Chargement…') }),\n * )\n * ```\n *\n * The suspended subtree stays mounted (detached from the document, not\n * CSS-hidden) so nothing below it is torn down and rebuilt when the data\n * arrives. The fallback is announced with `aria-live=\"polite\"`.\n */\n <Fallback extends PendingFallback>(\n options?: PendingBlockOptions<Fallback>,\n ): PendingBlockDirective<\n undefined,\n ReturnType<Fallback> extends CraftNodeChildren\n ? ReturnType<Fallback>\n : CraftNodeChildren\n >;\n\n /**\n * A boundary with one fallback per async source, checked exhaustively against\n * the sources actually read below it — an unlisted source is a compile error,\n * and so is a fallback for a source that never suspends here.\n *\n * ```ts\n * div([...]).pipe(\n * pendingBlock.exhaustive({\n * users: () => SkeletonList(),\n * orders: () => SkeletonRows(),\n * }),\n * )\n * ```\n *\n * When several listed sources are pending at once, the fallback of the first\n * one to suspend is rendered.\n */\n exhaustive<const Handlers extends PendingBlockHandlers>(\n handlers: Handlers,\n options?: Omit<PendingBlockOptions, 'fallback' | 'reloading'>,\n ): PendingBlockDirective<\n Handlers,\n PendingBlockHandlerChildren<\n Handlers[keyof Handlers]\n > extends CraftNodeChildren\n ? PendingBlockHandlerChildren<Handlers[keyof Handlers]>\n : CraftNodeChildren\n >;\n}\n\nexport const pendingBlock: PendingBlockFactory = Object.assign(\n (options: PendingBlockOptions = {}) =>\n createPendingBlockDirective(\n undefined,\n options.fallback,\n options.reloading,\n options.position ?? 'before',\n options.ssr,\n ),\n {\n exhaustive: (\n handlers: PendingBlockHandlers,\n options: Omit<PendingBlockOptions, 'fallback' | 'reloading'> = {},\n ) =>\n createPendingBlockDirective(\n handlers,\n undefined,\n undefined,\n options.position ?? 'before',\n options.ssr,\n ),\n },\n) as PendingBlockFactory;\n\nexport function isPendingBlockDirective(\n value: unknown,\n): value is PendingBlockDirective<PendingBlockHandlers | undefined> {\n return (\n typeof value === 'function' && PENDING_BLOCK_DIRECTIVE in (value as object)\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../../../libs/component/src/lib/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,6BAA6B,EAC7B,cAAc,EACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,SAAS,CAAC;AAEjB,KAAK,aAAa,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,MAAM,GACtE,MAAM,GACN,KAAK,CAAC;AAEV,KAAK,uBAAuB,CAAC,KAAK,IAChC,aAAa,CAAC,KAAK,CAAC,SAAS,iBAAiB,GAC1C,aAAa,CAAC,KAAK,CAAC,GACpB,iBAAiB,CAAC;AAsBxB,yEAAyE;AACzE,wBAAgB,OAAO,CACrB,MAAM,SAAS,iBAAiB,EAChC,KAAK,CAAC,OAAO,SAAS,cAAc,GAAG,SAAS,GAAG,SAAS,EAE5D,QAAQ,EAAE,MAAM,MAAM,EACtB,OAAO,CAAC,EAAE,OAAO,GAChB,iBAAiB,CAAC,MAAM,CAAC,GAAG;IAC7B,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC;IACpC,QAAQ,CAAC,CAAC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAChD,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,OAAO,SAAS;QAC/C,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC;KACrC,GACG,wBAAwB,GACxB,UAAU,CAAC;IACf,QAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACnC,CAuBA;AAUD,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,KAAK,SAAS,iBAAiB,EAC3D,KAAK,EAAE,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAC/B,cAAc,CACf,6BAA6B,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAC7D,uBAAuB,CAAC,KAAK,CAAC,CAC/B,CAAC;AACF,wBAAgB,aAAa,CAAC,KAAK,SAAS,cAAc,CAAC,GAAG,CAAC,EAC7D,KAAK,EAAE,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAC/B,cAAc,CAAC,6BAA6B,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D,wBAAgB,aAAa,CAC3B,QAAQ,SAAS,MAAM,EACvB,KAAK,SAAS,iBAAiB,EAE/B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAC/B,cAAc,CACf,6BAA6B,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAC7D,uBAAuB,CAAC,KAAK,CAAC,CAC/B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/project.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EACL,2BAA2B,EAC3B,cAAc,EACd,kBAAkB,EAClB,oBAAoB,GAMrB,MAAM,SAAS,CAAC;AAWjB,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAQ,KAA+D,CACrE,oBAAoB,CACrB,KAAK,wBAAwB;QAC5B,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAqC,EACrC,MAA0B;IAE1B,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,oBAAoB,EAAE;QACpD,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;AACL,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,OAAO,CAIrB,QAAsB,EACtB,OAAiB;IAWjB,mBAAmB,CACjB,QAAQ,EACR,OAAO,EAAE,oBAAoB,KAAK,IAAI;QACpC,CAAC,CAAC,wBAAwB;QAC1B,CAAC,CAAC,UAAU,CACf,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,2BAA2B,EAAE;QAC3D,KAAK,EAAE,yBAAyB,EAAE;QAClC,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,OAAO,QASN,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAAqC,CAAC,IAAI,KAAK,WAAW,CAC5D,CAAC;AACJ,CAAC;AAsBD,MAAM,UAAU,aAAa,CAC3B,eAIkD,EAClD,UAGkD;IAElD,MAAM,KAAK,GAAG,OAAO,eAAe,KAAK,QAAQ,CAAC;IAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAGD,CAAC;IACnD,MAAM,iBAAiB,GACrB,mBAAmB,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,kBAAkB,GAAG,eAAe,CAAC,KAAK,CAAC;QAC/C,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,IAAI,yBAAyB,EAAE,CAAC;QAC3D,CAAC,CAAC,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC,iBAAiB;YACjD,CAAC,CAAC,CACE,KACD,CAAC,2BAA2B,CAAC,IAAI,yBAAyB,EAAE,CAAC;YAChE,CAAC,CAAC,yBAAyB,EAAE,CAAC;IAClC,MAAM,MAAM,GACV,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC,iBAAiB;QAC/C,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,UAAU,CAAC;IAEjB,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,GAAG,EAAE,CACX,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAEzC;QACvB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,WAAW,EAAE,MAAM;QACnB,kBAAkB;KACnB,CAAC;AACJ,CAAC","sourcesContent":["import type {\n CraftNodeChildren,\n CraftNodeChildrenDependencies,\n ProjectionNode,\n} from './render/vnode';\nimport { isGeneratorFunction, isYieldableValue } from '@craft-ts/core';\nimport { currentCraftRenderContext } from './render/vnode';\nimport {\n CONTENT_DECLARATION_CONTEXT,\n CONTENT_OUTPUT,\n CONTENT_RENDERABLE,\n CONTENT_STYLE_POLICY,\n type ContentOptions,\n type ContentStylePolicy,\n type InputValue,\n type ProjectionUnit,\n type RenderableContent,\n} from './types';\n\ntype ContentOutput<Value> = Value extends (...args: any[]) => infer Output\n ? Output\n : never;\n\ntype RenderableContentOutput<Value> =\n ContentOutput<Value> extends CraftNodeChildren\n ? ContentOutput<Value>\n : CraftNodeChildren;\n\nfunction contentStylePolicy(value: unknown): ContentStylePolicy {\n return (value as Partial<Record<typeof CONTENT_STYLE_POLICY, unknown>>)[\n CONTENT_STYLE_POLICY\n ] === 'allow-container-styles'\n ? 'allow-container-styles'\n : 'isolated';\n}\n\nfunction defineContentPolicy(\n renderer: (...args: any[]) => unknown,\n policy: ContentStylePolicy,\n): void {\n Object.defineProperty(renderer, CONTENT_STYLE_POLICY, {\n value: policy,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n}\n\n/** Brands deferred DOM content and records the caller's style opt-in. */\nexport function content<\n Output extends CraftNodeChildren,\n const Options extends ContentOptions | undefined = undefined,\n>(\n renderer: () => Output,\n options?: Options,\n): RenderableContent<Output> & {\n readonly [CONTENT_RENDERABLE]: true;\n readonly [CONTENT_DECLARATION_CONTEXT]: unknown;\n readonly [CONTENT_STYLE_POLICY]: Options extends {\n readonly allowContainerStyles: true;\n }\n ? 'allow-container-styles'\n : 'isolated';\n readonly [CONTENT_OUTPUT]: Output;\n} {\n defineContentPolicy(\n renderer,\n options?.allowContainerStyles === true\n ? 'allow-container-styles'\n : 'isolated',\n );\n Object.defineProperty(renderer, CONTENT_DECLARATION_CONTEXT, {\n value: currentCraftRenderContext(),\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return renderer as RenderableContent<Output> & {\n readonly [CONTENT_RENDERABLE]: true;\n readonly [CONTENT_DECLARATION_CONTEXT]: unknown;\n readonly [CONTENT_STYLE_POLICY]: Options extends {\n readonly allowContainerStyles: true;\n }\n ? 'allow-container-styles'\n : 'isolated';\n readonly [CONTENT_OUTPUT]: Output;\n };\n}\n\nfunction isComponentUnit(value: unknown): value is ProjectionUnit {\n return (\n typeof value === 'object' &&\n value !== null &&\n (value as { readonly kind?: unknown }).kind === 'component'\n );\n}\n\n/** Renders either deferred DOM content or a component with a projection contract. */\nexport function renderContent<Value extends RenderableContent>(\n value: Value | InputValue<Value>,\n): ProjectionNode<\n CraftNodeChildrenDependencies<RenderableContentOutput<Value>>,\n RenderableContentOutput<Value>\n>;\nexport function renderContent<Value extends ProjectionUnit<any>>(\n value: Value | InputValue<Value>,\n): ProjectionNode<CraftNodeChildrenDependencies<Value>, Value>;\nexport function renderContent<\n SlotName extends string,\n Value extends RenderableContent,\n>(\n slotName: SlotName,\n value: Value | InputValue<Value>,\n): ProjectionNode<\n CraftNodeChildrenDependencies<RenderableContentOutput<Value>>,\n RenderableContentOutput<Value>\n>;\nexport function renderContent(\n slotNameOrValue:\n | string\n | RenderableContent\n | ProjectionUnit\n | InputValue<RenderableContent | ProjectionUnit>,\n maybeValue?:\n | RenderableContent\n | ProjectionUnit\n | InputValue<RenderableContent | ProjectionUnit>,\n): ProjectionNode {\n const named = typeof slotNameOrValue === 'string';\n const slotName = named ? slotNameOrValue : undefined;\n const value = (named ? maybeValue : slotNameOrValue) as\n | RenderableContent\n | ProjectionUnit\n | InputValue<RenderableContent | ProjectionUnit>;\n const isYieldableReader =\n isGeneratorFunction(value) || isYieldableValue(value);\n const declarationContext = isComponentUnit(value)\n ? (value.declarationContext ?? currentCraftRenderContext())\n : typeof value === 'function' && !isYieldableReader\n ? ((\n value as Partial<Record<typeof CONTENT_DECLARATION_CONTEXT, unknown>>\n )[CONTENT_DECLARATION_CONTEXT] ?? currentCraftRenderContext())\n : currentCraftRenderContext();\n const policy =\n typeof value === 'function' && !isYieldableReader\n ? contentStylePolicy(value)\n : 'isolated';\n\n return {\n kind: 'projection',\n render: () =>\n (isComponentUnit(value) || isYieldableReader ? value : value()) as\n | ProjectionUnit\n | CraftNodeChildren,\n ...(slotName ? { slotName } : {}),\n stylePolicy: policy,\n declarationContext,\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hydration-metadata.d.ts","sourceRoot":"","sources":["../../../../../../libs/component/src/lib/render/hydration-metadata.ts"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAEnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hydration-metadata.js","sourceRoot":"","sources":["../../../../../../libs/component/src/lib/render/hydration-metadata.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,OAAO,EAAkB,CAAC;AAEpD,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,GAAW;IAC3D,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC","sourcesContent":["const hydrationKeys = new WeakMap<object, string>();\n\nexport function setNodeHydrationKey(node: object, key: string): void {\n hydrationKeys.set(node, key);\n}\n\nexport function hydrationKeyOf(node: object): string | undefined {\n return hydrationKeys.get(node);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../../../../../libs/component/src/lib/render/hydration.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAC/B,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,eAAe,GACf,iBAAiB,CAAC;AAEtB,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;gBAG/B,OAAO,EAAE,QAAQ,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,uBAAuB,CAAC;QAChC,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;KAC1B,CAAC;CAYL;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAChD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACnD,cAAc,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACpD,MAAM,IAAI,IAAI,CAAC;CAChB,CAAC,CAAC;AAQH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,OAAO,EACb,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GACnD,eAAe,CAoIjB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hydration.js","sourceRoot":"","sources":["../../../../../../libs/component/src/lib/render/hydration.ts"],"names":[],"mappings":"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","sourcesContent":["export type HydrationMismatchReason =\n | 'element-absent'\n | 'tag-mismatch'\n | 'text-absent'\n | 'text-mismatch'\n | 'boundary-absent';\n\nexport class HydrationMismatchError extends Error {\n readonly key: string;\n readonly expected: string;\n readonly actual: string | null;\n readonly reason: HydrationMismatchReason;\n readonly actualNode: Node | null;\n\n constructor(\n options: Readonly<{\n key: string;\n expected: string;\n actual: string | null;\n reason: HydrationMismatchReason;\n actualNode?: Node | null;\n }>,\n ) {\n super(\n `Craft hydration mismatch at \"${options.key}\": expected ${options.expected}, received ${options.actual ?? 'nothing'} (${options.reason}).`,\n );\n this.name = 'HydrationMismatchError';\n this.key = options.key;\n this.expected = options.expected;\n this.actual = options.actual;\n this.reason = options.reason;\n this.actualNode = options.actualNode ?? null;\n }\n}\n\nexport type HydrationCursor = Readonly<{\n claimElement(key: string, tag: string): Element;\n claimText(key: string, expected?: string): Text;\n claimBoundary(key: string, label: string): Comment;\n recordMismatch(error: HydrationMismatchError): void;\n finish(): void;\n}>;\n\ntype TextClaim = Readonly<{\n text: Text;\n start: Comment;\n end: Comment;\n}>;\n\nexport function createHydrationCursor(\n host: Element,\n onMismatch?: (error: HydrationMismatchError) => void,\n): HydrationCursor {\n const elements = new Map<string, Element>();\n const boundaries = new Map<string, Comment>();\n const text = new Map<string, TextClaim>();\n const claimed = new Set<Node>();\n const mismatches: HydrationMismatchError[] = [];\n\n for (const element of host.querySelectorAll<Element>('[data-craft-hk]')) {\n const key = element.getAttribute('data-craft-hk');\n if (key) elements.set(key, element);\n }\n\n walkComments(host, (comment) => {\n const marker = parseMarker(comment.data);\n if (!marker) return;\n if (marker.label === 'craft-text:start') {\n const end = nextComment(\n comment.nextSibling,\n 'craft-text:end',\n marker.key,\n );\n if (!end) return;\n let value = comment.nextSibling;\n if (value === end) {\n value = host.ownerDocument.createTextNode('');\n end.parentNode?.insertBefore(value, end);\n }\n if (value?.nodeType === Node.TEXT_NODE) {\n text.set(marker.key, {\n text: value as Text,\n start: comment,\n end,\n });\n }\n return;\n }\n if (marker.label !== 'craft-text:end') {\n boundaries.set(boundaryAddress(marker.key, marker.label), comment);\n }\n });\n\n const cursor: HydrationCursor = {\n claimElement(key, tag) {\n const element = elements.get(key);\n if (!element) {\n throw new HydrationMismatchError({\n key,\n expected: `<${tag}>`,\n actual: null,\n reason: 'element-absent',\n });\n }\n if (element.tagName.toLowerCase() !== tag.toLowerCase()) {\n throw new HydrationMismatchError({\n key,\n expected: `<${tag}>`,\n actual: `<${element.tagName.toLowerCase()}>`,\n reason: 'tag-mismatch',\n actualNode: element,\n });\n }\n claimed.add(element);\n return element;\n },\n claimText(key, expected) {\n const entry = text.get(key);\n if (!entry) {\n throw new HydrationMismatchError({\n key,\n expected: expected === undefined ? 'text' : JSON.stringify(expected),\n actual: null,\n reason: 'text-absent',\n });\n }\n if (expected !== undefined && entry.text.nodeValue !== expected) {\n throw new HydrationMismatchError({\n key,\n expected: JSON.stringify(expected),\n actual: JSON.stringify(entry.text.nodeValue),\n reason: 'text-mismatch',\n actualNode: entry.text,\n });\n }\n claimed.add(entry.text);\n claimed.add(entry.start);\n claimed.add(entry.end);\n return entry.text;\n },\n claimBoundary(key, label) {\n const comment = boundaries.get(boundaryAddress(key, label));\n if (!comment) {\n throw new HydrationMismatchError({\n key,\n expected: `<!--${label}-->`,\n actual: null,\n reason: 'boundary-absent',\n });\n }\n claimed.add(comment);\n return comment;\n },\n recordMismatch(error) {\n mismatches.push(error);\n onMismatch?.(error);\n },\n finish() {\n for (const entry of text.values()) {\n if (claimed.has(entry.text)) {\n entry.start.remove();\n entry.end.remove();\n } else {\n entry.start.remove();\n entry.text.remove();\n entry.end.remove();\n }\n }\n for (const element of elements.values()) {\n if (!claimed.has(element) && element.parentNode) element.remove();\n }\n for (const comment of boundaries.values()) {\n if (!claimed.has(comment) && comment.parentNode) comment.remove();\n }\n if (mismatches.length > 0 && isDevelopment()) {\n console.warn(\n `Craft hydrated with ${mismatches.length} local remount${mismatches.length === 1 ? '' : 's'}.`,\n mismatches,\n );\n }\n },\n };\n\n return cursor;\n}\n\nfunction walkComments(parent: Node, visit: (comment: Comment) => void): void {\n for (const child of [...parent.childNodes]) {\n if (child.nodeType === Node.COMMENT_NODE) visit(child as Comment);\n walkComments(child, visit);\n }\n}\n\nfunction nextComment(\n node: Node | null,\n label: string,\n key: string,\n): Comment | null {\n let current = node;\n while (current) {\n if (current.nodeType === Node.COMMENT_NODE) {\n const marker = parseMarker((current as Comment).data);\n if (marker?.label === label && marker.key === key) {\n return current as Comment;\n }\n }\n current = current.nextSibling;\n }\n return null;\n}\n\nfunction parseMarker(value: string): { label: string; key: string } | null {\n const separator = value.lastIndexOf('|hk:');\n if (separator === -1) return null;\n return {\n label: value.slice(0, separator),\n key: value.slice(separator + 4),\n };\n}\n\nfunction boundaryAddress(key: string, label: string): string {\n return `${key}\\u0000${label}`;\n}\n\nfunction isDevelopment(): boolean {\n const processRef = (\n globalThis as { process?: { env?: Record<string, string | undefined> } }\n ).process;\n return (\n processRef === undefined || processRef.env?.['NODE_ENV'] !== 'production'\n );\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../../../../../libs/component/src/lib/render/interpreter.ts"],"names":[],"mappings":"AAAA,OAAO,EAwCL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EAepB,KAAK,mBAAmB,EAIzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAKL,QAAQ,EAQT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAgDlB,OAAO,EAEL,kBAAkB,EAEnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AA8lK1E,MAAM,WAAW,qBAAqB,CAAC,KAAK,SAAS,MAAM;IACzD,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAChC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB,CAAC,OAAO;IAC3C,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,sBAAsB,GAAG,OAAO,GAAG,SAAS,CAAC;IAC5E,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAClC,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C,CAAC,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,SAAS,MAAM,EAC5D,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,EAChC,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAC3B,KAAK,EAAE,KAAK,GACX,qBAAqB,CAAC,KAAK,CAAC,CAoB9B;AAED,wBAAgB,oCAAoC,CAAC,KAAK,SAAS,MAAM,EACvE,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,EAChC,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAC3B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,wBAAwB,GAChC,qBAAqB,CAAC,KAAK,CAAC,CAyC9B;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EACvD,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,EAC9B,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,QAAQ,GAAG,MAAM,EAC3B,OAAO,EAAE,OAAO,EAChB,mBAAmB,GAAE,SAAS,oBAAoB,EAAO,GACxD,oBAAoB,CAAC,OAAO,CAAC,CAqD/B"}