@craft-ts/component 0.7.0-beta.13

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 (190) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +36 -0
  3. package/src/index.d.ts +40 -0
  4. package/src/index.d.ts.map +1 -0
  5. package/src/index.js +38 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/a11y-control.d.ts +58 -0
  8. package/src/lib/a11y-control.d.ts.map +1 -0
  9. package/src/lib/a11y-control.js +74 -0
  10. package/src/lib/a11y-control.js.map +1 -0
  11. package/src/lib/a11y.d.ts +87 -0
  12. package/src/lib/a11y.d.ts.map +1 -0
  13. package/src/lib/a11y.js +96 -0
  14. package/src/lib/a11y.js.map +1 -0
  15. package/src/lib/ai/ai-context-menu.d.ts +140 -0
  16. package/src/lib/ai/ai-context-menu.d.ts.map +1 -0
  17. package/src/lib/ai/ai-context-menu.js +66 -0
  18. package/src/lib/ai/ai-context-menu.js.map +1 -0
  19. package/src/lib/ai/ai-send-dialog.d.ts +1263 -0
  20. package/src/lib/ai/ai-send-dialog.d.ts.map +1 -0
  21. package/src/lib/ai/ai-send-dialog.js +288 -0
  22. package/src/lib/ai/ai-send-dialog.js.map +1 -0
  23. package/src/lib/ai/send-context-to-ai.d.ts +29 -0
  24. package/src/lib/ai/send-context-to-ai.d.ts.map +1 -0
  25. package/src/lib/ai/send-context-to-ai.js +127 -0
  26. package/src/lib/ai/send-context-to-ai.js.map +1 -0
  27. package/src/lib/assert-defined-input.d.ts +26 -0
  28. package/src/lib/assert-defined-input.d.ts.map +1 -0
  29. package/src/lib/assert-defined-input.js +47 -0
  30. package/src/lib/assert-defined-input.js.map +1 -0
  31. package/src/lib/block.d.ts +36 -0
  32. package/src/lib/block.d.ts.map +1 -0
  33. package/src/lib/block.js +55 -0
  34. package/src/lib/block.js.map +1 -0
  35. package/src/lib/bootstrap.d.ts +32 -0
  36. package/src/lib/bootstrap.d.ts.map +1 -0
  37. package/src/lib/bootstrap.js +60 -0
  38. package/src/lib/bootstrap.js.map +1 -0
  39. package/src/lib/bridge.d.ts +56 -0
  40. package/src/lib/bridge.d.ts.map +1 -0
  41. package/src/lib/bridge.js +81 -0
  42. package/src/lib/bridge.js.map +1 -0
  43. package/src/lib/component.d.ts +46 -0
  44. package/src/lib/component.d.ts.map +1 -0
  45. package/src/lib/component.js +118 -0
  46. package/src/lib/component.js.map +1 -0
  47. package/src/lib/composition.d.ts +17 -0
  48. package/src/lib/composition.d.ts.map +1 -0
  49. package/src/lib/composition.js +28 -0
  50. package/src/lib/composition.js.map +1 -0
  51. package/src/lib/craft-defaults.d.ts +2 -0
  52. package/src/lib/craft-defaults.d.ts.map +1 -0
  53. package/src/lib/craft-defaults.js +41 -0
  54. package/src/lib/craft-defaults.js.map +1 -0
  55. package/src/lib/craft-host-tokens.d.ts +6 -0
  56. package/src/lib/craft-host-tokens.d.ts.map +1 -0
  57. package/src/lib/craft-host-tokens.js +7 -0
  58. package/src/lib/craft-host-tokens.js.map +1 -0
  59. package/src/lib/craft-router-outlet.d.ts +15 -0
  60. package/src/lib/craft-router-outlet.d.ts.map +1 -0
  61. package/src/lib/craft-router-outlet.js +10 -0
  62. package/src/lib/craft-router-outlet.js.map +1 -0
  63. package/src/lib/css-vars.d.ts +31 -0
  64. package/src/lib/css-vars.d.ts.map +1 -0
  65. package/src/lib/css-vars.js +43 -0
  66. package/src/lib/css-vars.js.map +1 -0
  67. package/src/lib/css-vars.type.d.ts +151 -0
  68. package/src/lib/css-vars.type.d.ts.map +1 -0
  69. package/src/lib/css-vars.type.js +1 -0
  70. package/src/lib/css-vars.type.js.map +1 -0
  71. package/src/lib/defer.d.ts +31 -0
  72. package/src/lib/defer.d.ts.map +1 -0
  73. package/src/lib/defer.js +19 -0
  74. package/src/lib/defer.js.map +1 -0
  75. package/src/lib/directive.d.ts +9 -0
  76. package/src/lib/directive.d.ts.map +1 -0
  77. package/src/lib/directive.js +31 -0
  78. package/src/lib/directive.js.map +1 -0
  79. package/src/lib/each-scheduling.d.ts +59 -0
  80. package/src/lib/each-scheduling.d.ts.map +1 -0
  81. package/src/lib/each-scheduling.js +120 -0
  82. package/src/lib/each-scheduling.js.map +1 -0
  83. package/src/lib/each.d.ts +29 -0
  84. package/src/lib/each.d.ts.map +1 -0
  85. package/src/lib/each.js +23 -0
  86. package/src/lib/each.js.map +1 -0
  87. package/src/lib/factory-runtime.d.ts +5 -0
  88. package/src/lib/factory-runtime.d.ts.map +1 -0
  89. package/src/lib/factory-runtime.js +26 -0
  90. package/src/lib/factory-runtime.js.map +1 -0
  91. package/src/lib/field-exception-block.d.ts +96 -0
  92. package/src/lib/field-exception-block.d.ts.map +1 -0
  93. package/src/lib/field-exception-block.js +44 -0
  94. package/src/lib/field-exception-block.js.map +1 -0
  95. package/src/lib/host-runtime.d.ts +60 -0
  96. package/src/lib/host-runtime.d.ts.map +1 -0
  97. package/src/lib/host-runtime.js +16 -0
  98. package/src/lib/host-runtime.js.map +1 -0
  99. package/src/lib/hydrate.d.ts +15 -0
  100. package/src/lib/hydrate.d.ts.map +1 -0
  101. package/src/lib/hydrate.js +79 -0
  102. package/src/lib/hydrate.js.map +1 -0
  103. package/src/lib/hyperscript.d.ts +148 -0
  104. package/src/lib/hyperscript.d.ts.map +1 -0
  105. package/src/lib/hyperscript.js +96 -0
  106. package/src/lib/hyperscript.js.map +1 -0
  107. package/src/lib/if-block.d.ts +8 -0
  108. package/src/lib/if-block.d.ts.map +1 -0
  109. package/src/lib/if-block.js +16 -0
  110. package/src/lib/if-block.js.map +1 -0
  111. package/src/lib/locator.d.ts +170 -0
  112. package/src/lib/locator.d.ts.map +1 -0
  113. package/src/lib/locator.js +151 -0
  114. package/src/lib/locator.js.map +1 -0
  115. package/src/lib/match-block.d.ts +38 -0
  116. package/src/lib/match-block.d.ts.map +1 -0
  117. package/src/lib/match-block.js +29 -0
  118. package/src/lib/match-block.js.map +1 -0
  119. package/src/lib/pending-block.d.ts +125 -0
  120. package/src/lib/pending-block.d.ts.map +1 -0
  121. package/src/lib/pending-block.js +48 -0
  122. package/src/lib/pending-block.js.map +1 -0
  123. package/src/lib/project.d.ts +19 -0
  124. package/src/lib/project.d.ts.map +1 -0
  125. package/src/lib/project.js +56 -0
  126. package/src/lib/project.js.map +1 -0
  127. package/src/lib/render/hydration-metadata.d.ts +3 -0
  128. package/src/lib/render/hydration-metadata.d.ts.map +1 -0
  129. package/src/lib/render/hydration-metadata.js +8 -0
  130. package/src/lib/render/hydration-metadata.js.map +1 -0
  131. package/src/lib/render/hydration.d.ts +24 -0
  132. package/src/lib/render/hydration.d.ts.map +1 -0
  133. package/src/lib/render/hydration.js +181 -0
  134. package/src/lib/render/hydration.js.map +1 -0
  135. package/src/lib/render/interpreter.d.ts +32 -0
  136. package/src/lib/render/interpreter.d.ts.map +1 -0
  137. package/src/lib/render/interpreter.js +3588 -0
  138. package/src/lib/render/interpreter.js.map +1 -0
  139. package/src/lib/render/server-style-collector.d.ts +6 -0
  140. package/src/lib/render/server-style-collector.d.ts.map +1 -0
  141. package/src/lib/render/server-style-collector.js +23 -0
  142. package/src/lib/render/server-style-collector.js.map +1 -0
  143. package/src/lib/render/ssr-coordinator.d.ts +20 -0
  144. package/src/lib/render/ssr-coordinator.d.ts.map +1 -0
  145. package/src/lib/render/ssr-coordinator.js +99 -0
  146. package/src/lib/render/ssr-coordinator.js.map +1 -0
  147. package/src/lib/render/string-dom.d.ts +9 -0
  148. package/src/lib/render/string-dom.d.ts.map +1 -0
  149. package/src/lib/render/string-dom.js +377 -0
  150. package/src/lib/render/string-dom.js.map +1 -0
  151. package/src/lib/render/style-registry.d.ts +14 -0
  152. package/src/lib/render/style-registry.d.ts.map +1 -0
  153. package/src/lib/render/style-registry.js +79 -0
  154. package/src/lib/render/style-registry.js.map +1 -0
  155. package/src/lib/render/style-scope.d.ts +30 -0
  156. package/src/lib/render/style-scope.d.ts.map +1 -0
  157. package/src/lib/render/style-scope.js +261 -0
  158. package/src/lib/render/style-scope.js.map +1 -0
  159. package/src/lib/render/vnode.d.ts +330 -0
  160. package/src/lib/render/vnode.d.ts.map +1 -0
  161. package/src/lib/render/vnode.js +293 -0
  162. package/src/lib/render/vnode.js.map +1 -0
  163. package/src/lib/server-render.d.ts +34 -0
  164. package/src/lib/server-render.d.ts.map +1 -0
  165. package/src/lib/server-render.js +84 -0
  166. package/src/lib/server-render.js.map +1 -0
  167. package/src/lib/start.d.ts +13 -0
  168. package/src/lib/start.d.ts.map +1 -0
  169. package/src/lib/start.js +20 -0
  170. package/src/lib/start.js.map +1 -0
  171. package/src/lib/template-contract.d.ts +347 -0
  172. package/src/lib/template-contract.d.ts.map +1 -0
  173. package/src/lib/template-contract.js +1 -0
  174. package/src/lib/template-contract.js.map +1 -0
  175. package/src/lib/template.d.ts +11 -0
  176. package/src/lib/template.d.ts.map +1 -0
  177. package/src/lib/template.js +21 -0
  178. package/src/lib/template.js.map +1 -0
  179. package/src/lib/testing.d.ts +157 -0
  180. package/src/lib/testing.d.ts.map +1 -0
  181. package/src/lib/testing.js +416 -0
  182. package/src/lib/testing.js.map +1 -0
  183. package/src/lib/types.d.ts +442 -0
  184. package/src/lib/types.d.ts.map +1 -0
  185. package/src/lib/types.js +22 -0
  186. package/src/lib/types.js.map +1 -0
  187. package/testing/public-api.d.ts +3 -0
  188. package/testing/public-api.d.ts.map +1 -0
  189. package/testing/public-api.js +3 -0
  190. package/testing/public-api.js.map +1 -0
@@ -0,0 +1,28 @@
1
+ import { craftDirective } from './directive';
2
+ import { COMPONENT_OPERATOR, } from './types';
3
+ /** Adds a component-local provider scope to the component invocation. */
4
+ export function withProviders(providers) {
5
+ const operator = craftDirective('withProviders', {}, (baseLogic) => baseLogic, (baseTemplate) => baseTemplate, { providers });
6
+ Object.defineProperty(operator, COMPONENT_OPERATOR, {
7
+ value: { kind: 'providers', providers },
8
+ enumerable: false,
9
+ });
10
+ return operator;
11
+ }
12
+ function exhaustiveCatchTag(componentOrHandlers, maybeHandlers) {
13
+ return createCatchTagOperator(maybeHandlers ?? componentOrHandlers);
14
+ }
15
+ export const catchTag = {
16
+ exhaustive: exhaustiveCatchTag,
17
+ };
18
+ function createCatchTagOperator(handlers) {
19
+ const operator = craftDirective('catchTag.exhaustive', {}, (baseLogic) => baseLogic, (baseTemplate) => baseTemplate, {
20
+ catchTagHandlers: handlers,
21
+ });
22
+ Object.defineProperty(operator, COMPONENT_OPERATOR, {
23
+ value: { kind: 'catchTag', catchTagHandlers: handlers },
24
+ enumerable: false,
25
+ });
26
+ return operator;
27
+ }
28
+ //# sourceMappingURL=composition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/composition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,kBAAkB,GAKnB,MAAM,SAAS,CAAC;AAEjB,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAE3B,SAAoB;IACpB,MAAM,QAAQ,GAAG,cAAc,CAC7B,eAAe,EACf,EAAE,EACF,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EACxB,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,EAC9B,EAAE,SAAS,EAAE,CAC6B,CAAC;IAE7C,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,kBAAkB,EAAE;QAClD,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE;QACvC,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAgDD,SAAS,kBAAkB,CACzB,mBAAmE,EACnE,aAAwC;IAExC,OAAO,sBAAsB,CAC3B,aAAa,IAAK,mBAAgD,CACnE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,UAAU,EAAE,kBAAkB;CAC/B,CAAC;AAEF,SAAS,sBAAsB,CAG7B,QAA4C;IAC5C,MAAM,QAAQ,GAAG,cAAc,CAC7B,qBAAqB,EACrB,EAAE,EACF,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EACxB,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,EAC9B;QACE,gBAAgB,EAAE,QAGjB;KACF,CAIF,CAAC;IAEF,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,kBAAkB,EAAE;QAClD,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE;QACvD,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import type { AnyCraftException, CraftServiceProvider } from '@craft-ts/core';\nimport { craftDirective } from './directive';\nimport {\n COMPONENT_OPERATOR,\n type ComponentExceptionGenerator,\n type ComponentOperator,\n type ComponentInitializationExceptionsOf,\n type CraftComponent,\n} from './types';\n\n/** Adds a component-local provider scope to the component invocation. */\nexport function withProviders<\n const Providers extends readonly CraftServiceProvider[],\n>(providers: Providers): ComponentOperator<Providers> {\n const operator = craftDirective(\n 'withProviders',\n {},\n (baseLogic) => baseLogic,\n (baseTemplate) => baseTemplate,\n { providers },\n ) as unknown as ComponentOperator<Providers>;\n\n Object.defineProperty(operator, COMPONENT_OPERATOR, {\n value: { kind: 'providers', providers },\n enumerable: false,\n });\n\n return operator;\n}\n\nexport type CatchTagHandlers<Codes extends string> = {\n readonly [Code in Codes]: (\n exception: AnyCraftException & { readonly _tag: Code },\n ) => Generator<unknown, void, unknown>;\n};\n\n/** Component-logic adapter for the core catchTag exhaustive algorithm. */\ninterface CatchTag {\n exhaustive<\n Codes extends string,\n const Handlers extends CatchTagHandlers<Codes> = CatchTagHandlers<Codes>,\n >(\n handlers: CatchTagHandlers<Codes> & Handlers,\n ): ComponentOperator<readonly [], Extract<keyof Handlers, string>>;\n exhaustive<\n Component extends CraftComponent<any>,\n const Handlers extends CatchTagHandlers<\n ComponentInitializationExceptionsOf<NoInfer<Component>>\n > = CatchTagHandlers<ComponentInitializationExceptionsOf<Component>>,\n >(\n component: Component,\n handlers: CatchTagHandlers<\n ComponentInitializationExceptionsOf<NoInfer<Component>>\n > &\n Handlers,\n ): ComponentOperator<readonly [], Extract<keyof Handlers, string>>;\n}\n\nfunction exhaustiveCatchTag<\n Codes extends string,\n const Handlers extends CatchTagHandlers<Codes>,\n>(\n handlers: CatchTagHandlers<Codes> & Handlers,\n): ComponentOperator<readonly [], Extract<keyof Handlers, string>>;\nfunction exhaustiveCatchTag<\n Component extends CraftComponent<any>,\n const Handlers extends CatchTagHandlers<\n ComponentInitializationExceptionsOf<NoInfer<Component>>\n >,\n>(\n component: Component,\n handlers: CatchTagHandlers<\n ComponentInitializationExceptionsOf<NoInfer<Component>>\n > &\n Handlers,\n): ComponentOperator<readonly [], Extract<keyof Handlers, string>>;\nfunction exhaustiveCatchTag(\n componentOrHandlers: CraftComponent<any> | CatchTagHandlers<string>,\n maybeHandlers?: CatchTagHandlers<string>,\n) {\n return createCatchTagOperator(\n maybeHandlers ?? (componentOrHandlers as CatchTagHandlers<string>),\n );\n}\n\nexport const catchTag: CatchTag = {\n exhaustive: exhaustiveCatchTag,\n};\n\nfunction createCatchTagOperator<\n Codes extends string,\n const Handlers extends CatchTagHandlers<Codes>,\n>(handlers: CatchTagHandlers<Codes> & Handlers) {\n const operator = craftDirective(\n 'catchTag.exhaustive',\n {},\n (baseLogic) => baseLogic,\n (baseTemplate) => baseTemplate,\n {\n catchTagHandlers: handlers as unknown as Record<\n string,\n ComponentExceptionGenerator\n >,\n },\n ) as unknown as ComponentOperator<\n readonly [],\n Extract<keyof Handlers, string>\n >;\n\n Object.defineProperty(operator, COMPONENT_OPERATOR, {\n value: { kind: 'catchTag', catchTagHandlers: handlers },\n enumerable: false,\n });\n\n return operator;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=craft-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-defaults.d.ts","sourceRoot":"","sources":["../../../../../libs/component/src/lib/craft-defaults.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import { CRAFT_LOADING_TEXT, craftRouteTarget, ɵregisterDefaultCraftPendingComponent, ɵsetCraftTestMounter, } from '@craft-ts/core';
2
+ import { mountCraftComponent } from './bridge';
3
+ import { inject } from './host-runtime';
4
+ import { craftComponent } from './component';
5
+ import { div } from './hyperscript';
6
+ /**
7
+ * The loader shown once a route's guard/resolve chain outruns both
8
+ * `CRAFT_STAY_MS` and `CRAFT_BLANK_MS`. Override it globally with
9
+ * `withPendingComponent`, or per route via the route's `pendingComponent`.
10
+ *
11
+ * This used to be an Angular component shipped by `@craft-ts/angular`, which
12
+ * made a plain loading indicator drag the whole framework in. It is a Craft
13
+ * component now, and `@craft-ts/component` — the package that owns the
14
+ * renderer — is where it belongs.
15
+ */
16
+ const DefaultCraftPendingComponent = craftComponent('craftPending', {
17
+ styles: `
18
+ .craft-pending {
19
+ padding: 1rem;
20
+ font-family: system-ui, -apple-system, sans-serif;
21
+ color: #6b7280;
22
+ }
23
+ `,
24
+ }, () => ({ loading: inject(CRAFT_LOADING_TEXT) }), ({ loading }) => div({ class: 'craft-pending' }, loading));
25
+ ɵregisterDefaultCraftPendingComponent(craftRouteTarget(DefaultCraftPendingComponent));
26
+ // TODO(sortie-angular): the lazy-route recovery host has no Craft replacement
27
+ // yet. The Angular one mounted CRAFT_ROUTE_LOAD_ERROR_COMPONENT through
28
+ // NgComponentOutlet, using the failing route's own injector; the Craft DSL has
29
+ // no equivalent dynamic mount, so writing one is its own piece of work.
30
+ // Until then core's fallback is null: a failed lazy load reports through
31
+ // CRAFT_ROUTE_LOAD_ERROR and renders nothing, rather than throwing.
32
+ // Lets TestBed.createComponent(...) mount a Craft component: only this package
33
+ // owns the renderer.
34
+ ɵsetCraftTestMounter((component, host, injector) => {
35
+ const mounted = mountCraftComponent(component, host, injector);
36
+ return {
37
+ instance: mounted,
38
+ destroy: () => mounted.destroy(),
39
+ };
40
+ });
41
+ //# sourceMappingURL=craft-defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-defaults.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/craft-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,qCAAqC,EACrC,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC;;;;;;;;;GASG;AACH,MAAM,4BAA4B,GAAG,cAAc,CACjD,cAAc,EACd;IACE,MAAM,EAAE;;;;;;KAMP;CACF,EACD,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAC/C,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,CAC1D,CAAC;AAEF,qCAAqC,CACnC,gBAAgB,CAAC,4BAA4B,CAAC,CAC/C,CAAC;AAEF,8EAA8E;AAC9E,wEAAwE;AACxE,+EAA+E;AAC/E,wEAAwE;AACxE,yEAAyE;AACzE,oEAAoE;AAEpE,+EAA+E;AAC/E,qBAAqB;AACrB,oBAAoB,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IACjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAkB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;KACjC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import {\n CRAFT_LOADING_TEXT,\n craftRouteTarget,\n ɵregisterDefaultCraftPendingComponent,\n ɵsetCraftTestMounter,\n} from '@craft-ts/core';\nimport { mountCraftComponent } from './bridge';\nimport { inject } from './host-runtime';\nimport { craftComponent } from './component';\nimport { div } from './hyperscript';\n\n/**\n * The loader shown once a route's guard/resolve chain outruns both\n * `CRAFT_STAY_MS` and `CRAFT_BLANK_MS`. Override it globally with\n * `withPendingComponent`, or per route via the route's `pendingComponent`.\n *\n * This used to be an Angular component shipped by `@craft-ts/angular`, which\n * made a plain loading indicator drag the whole framework in. It is a Craft\n * component now, and `@craft-ts/component` — the package that owns the\n * renderer — is where it belongs.\n */\nconst DefaultCraftPendingComponent = craftComponent(\n 'craftPending',\n {\n styles: `\n .craft-pending {\n padding: 1rem;\n font-family: system-ui, -apple-system, sans-serif;\n color: #6b7280;\n }\n `,\n },\n () => ({ loading: inject(CRAFT_LOADING_TEXT) }),\n ({ loading }) => div({ class: 'craft-pending' }, loading),\n);\n\nɵregisterDefaultCraftPendingComponent(\n craftRouteTarget(DefaultCraftPendingComponent),\n);\n\n// TODO(sortie-angular): the lazy-route recovery host has no Craft replacement\n// yet. The Angular one mounted CRAFT_ROUTE_LOAD_ERROR_COMPONENT through\n// NgComponentOutlet, using the failing route's own injector; the Craft DSL has\n// no equivalent dynamic mount, so writing one is its own piece of work.\n// Until then core's fallback is null: a failed lazy load reports through\n// CRAFT_ROUTE_LOAD_ERROR and renders nothing, rather than throwing.\n\n// Lets TestBed.createComponent(...) mount a Craft component: only this package\n// owns the renderer.\nɵsetCraftTestMounter((component, host, injector) => {\n const mounted = mountCraftComponent(component as never, host, injector);\n return {\n instance: mounted,\n destroy: () => mounted.destroy(),\n };\n});\n"]}
@@ -0,0 +1,6 @@
1
+ export declare const CRAFT_ROUTED_COMPONENT: import("@craft-ts/core").CraftToken<unknown>;
2
+ export declare const CRAFT_ROOT_COMPONENT: import("@craft-ts/core").CraftToken<unknown>;
3
+ export declare const CRAFT_GLOBAL_ERROR_COMPONENT: import("@craft-ts/core").CraftToken<unknown>;
4
+ export declare const CRAFT_ROUTE_LOAD_ERROR_COMPONENT: import("@craft-ts/core").CraftToken<unknown>;
5
+ export declare const CRAFT_PENDING_COMPONENT: import("@craft-ts/core").CraftToken<unknown>;
6
+ //# sourceMappingURL=craft-host-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-host-tokens.d.ts","sourceRoot":"","sources":["../../../../../libs/component/src/lib/craft-host-tokens.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,8CAElC,CAAC;AACF,eAAO,MAAM,oBAAoB,8CAA8C,CAAC;AAChF,eAAO,MAAM,4BAA4B,8CAExC,CAAC;AACF,eAAO,MAAM,gCAAgC,8CAE5C,CAAC;AACF,eAAO,MAAM,uBAAuB,8CAEnC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { craftToken } from '@craft-ts/core';
2
+ export const CRAFT_ROUTED_COMPONENT = craftToken('CRAFT_ROUTED_COMPONENT');
3
+ export const CRAFT_ROOT_COMPONENT = craftToken('CRAFT_ROOT_COMPONENT');
4
+ export const CRAFT_GLOBAL_ERROR_COMPONENT = craftToken('CRAFT_GLOBAL_ERROR_COMPONENT');
5
+ export const CRAFT_ROUTE_LOAD_ERROR_COMPONENT = craftToken('CRAFT_ROUTE_LOAD_ERROR_COMPONENT');
6
+ export const CRAFT_PENDING_COMPONENT = craftToken('CRAFT_PENDING_COMPONENT');
7
+ //# sourceMappingURL=craft-host-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-host-tokens.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/craft-host-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAC9C,wBAAwB,CACzB,CAAC;AACF,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAU,sBAAsB,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CACpD,8BAA8B,CAC/B,CAAC;AACF,MAAM,CAAC,MAAM,gCAAgC,GAAG,UAAU,CACxD,kCAAkC,CACnC,CAAC;AACF,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAC/C,yBAAyB,CAC1B,CAAC","sourcesContent":["import { craftToken } from '@craft-ts/core';\n\nexport const CRAFT_ROUTED_COMPONENT = craftToken<unknown>(\n 'CRAFT_ROUTED_COMPONENT',\n);\nexport const CRAFT_ROOT_COMPONENT = craftToken<unknown>('CRAFT_ROOT_COMPONENT');\nexport const CRAFT_GLOBAL_ERROR_COMPONENT = craftToken<unknown>(\n 'CRAFT_GLOBAL_ERROR_COMPONENT',\n);\nexport const CRAFT_ROUTE_LOAD_ERROR_COMPONENT = craftToken<unknown>(\n 'CRAFT_ROUTE_LOAD_ERROR_COMPONENT',\n);\nexport const CRAFT_PENDING_COMPONENT = craftToken<unknown>(\n 'CRAFT_PENDING_COMPONENT',\n);\n"]}
@@ -0,0 +1,15 @@
1
+ import { type CraftRouterOutletController } from '@craft-ts/core';
2
+ import type { CraftComponent } from './types';
3
+ /**
4
+ * Functional non-blocking router outlet.
5
+ *
6
+ * The routing state machine lives in `@craft-ts/core`; this component owns its
7
+ * render lifetime and mounts the active Angular route target with the
8
+ * route-scoped injector supplied by the controller.
9
+ */
10
+ type CraftRouterOutletFactory = () => {
11
+ readonly outlet: CraftRouterOutletController;
12
+ };
13
+ export declare const CraftRouterOutlet: CraftComponent<Record<never, never>, Record<never, never>, CraftRouterOutletFactory>;
14
+ export {};
15
+ //# sourceMappingURL=craft-router-outlet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-router-outlet.d.ts","sourceRoot":"","sources":["../../../../../libs/component/src/lib/craft-router-outlet.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;GAMG;AACH,KAAK,wBAAwB,GAAG,MAAM;IACpC,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;CAC9C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAYzB,cAAc,CACjB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACpB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACpB,wBAAwB,CACzB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { createCraftRouterOutletController, } from '@craft-ts/core';
2
+ import { craftComponent } from './component';
3
+ export const CraftRouterOutlet = craftComponent('CraftRouterOutlet', {}, () => ({ outlet: createCraftRouterOutletController() }), ({ outlet }) => {
4
+ const target = outlet.displayedTarget();
5
+ if (!target)
6
+ return [];
7
+ const node = target.component(outlet.displayedProps());
8
+ return Object.assign(node, { injector: outlet.displayedInjector() });
9
+ });
10
+ //# sourceMappingURL=craft-router-outlet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-router-outlet.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/craft-router-outlet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,GAElC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAe7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAC7C,mBAAmB,EACnB,EAAE,EACF,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,iCAAiC,EAAE,EAAE,CAAC,EACvD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IACb,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,IAAI,GAAI,MAAM,CAAC,SAAiC,CACpD,MAAM,CAAC,cAAc,EAAW,CAChB,CAAC;IACnB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC,CAKF,CAAC","sourcesContent":["import {\n createCraftRouterOutletController,\n type CraftRouterOutletController,\n} from '@craft-ts/core';\nimport { craftComponent } from './component';\nimport type { CraftComponent } from './types';\nimport type { ComponentNode } from './render/vnode';\n\n/**\n * Functional non-blocking router outlet.\n *\n * The routing state machine lives in `@craft-ts/core`; this component owns its\n * render lifetime and mounts the active Angular route target with the\n * route-scoped injector supplied by the controller.\n */\ntype CraftRouterOutletFactory = () => {\n readonly outlet: CraftRouterOutletController;\n};\n\nexport const CraftRouterOutlet = craftComponent(\n 'CraftRouterOutlet',\n {},\n () => ({ outlet: createCraftRouterOutletController() }),\n ({ outlet }) => {\n const target = outlet.displayedTarget();\n if (!target) return [];\n const node = (target.component as CraftComponent<any>)(\n outlet.displayedProps() as never,\n ) as ComponentNode;\n return Object.assign(node, { injector: outlet.displayedInjector() });\n },\n) as CraftComponent<\n Record<never, never>,\n Record<never, never>,\n CraftRouterOutletFactory\n>;\n"]}
@@ -0,0 +1,31 @@
1
+ /** A value accepted by a CSS custom property. */
2
+ export type CssVarValue = string | number;
3
+ declare const REQUIRED_CSS_VAR: unique symbol;
4
+ declare const INHERIT_CSS_VAR: unique symbol;
5
+ declare const OMIT_CSS_VAR: unique symbol;
6
+ declare const FORWARD_CSS_VAR: unique symbol;
7
+ /** Metadata marker used by `ComponentMeta.cssVars` for a required variable. */
8
+ export type RequiredCssVar<Value extends CssVarValue = CssVarValue> = {
9
+ readonly [REQUIRED_CSS_VAR]: Value;
10
+ };
11
+ export type InheritCssVar = {
12
+ readonly [INHERIT_CSS_VAR]: true;
13
+ };
14
+ export type OmitCssVar = {
15
+ readonly [OMIT_CSS_VAR]: true;
16
+ };
17
+ export type ForwardCssVar<Value extends CssVarValue | undefined = CssVarValue | undefined> = {
18
+ readonly [FORWARD_CSS_VAR]: true;
19
+ readonly value: Value;
20
+ };
21
+ export declare function required<Value extends CssVarValue = CssVarValue>(): RequiredCssVar<Value>;
22
+ export declare const inherit: InheritCssVar;
23
+ export declare const omit: OmitCssVar;
24
+ export declare function forward(): ForwardCssVar<undefined>;
25
+ export declare function forward<const Value extends CssVarValue>(value: Value): ForwardCssVar<Value>;
26
+ export type CssVarDisposition = CssVarValue | InheritCssVar | OmitCssVar | ForwardCssVar;
27
+ export declare function isForwardCssVar(value: unknown): value is ForwardCssVar;
28
+ export declare function cssVarStyles(cssVars: Readonly<Record<`--${string}`, CssVarDisposition>> | undefined): Readonly<Record<`--${string}`, CssVarValue>>;
29
+ export declare function forwardedCssVarStyles(value: unknown, seen?: Set<object>): Readonly<Record<`--${string}`, CssVarValue>>;
30
+ export {};
31
+ //# sourceMappingURL=css-vars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-vars.d.ts","sourceRoot":"","sources":["../../../../../libs/component/src/lib/css-vars.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAC;AAC9C,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAC7C,OAAO,CAAC,MAAM,YAAY,EAAE,OAAO,MAAM,CAAC;AAC1C,OAAO,CAAC,MAAM,eAAe,EAAE,OAAO,MAAM,CAAC;AAE7C,+EAA+E;AAC/E,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,WAAW,GAAG,WAAW,IAAI;IACpE,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,KAAK,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AACjE,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAC3D,MAAM,MAAM,aAAa,CACvB,KAAK,SAAS,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,IAC7D;IACF,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB,CAAC;AAOF,wBAAgB,QAAQ,CACtB,KAAK,SAAS,WAAW,GAAG,WAAW,KACpC,cAAc,CAAC,KAAK,CAAC,CAEzB;AAED,eAAO,MAAM,OAAO,EAAqC,aAAa,CAAC;AACvE,eAAO,MAAM,IAAI,EAAkC,UAAU,CAAC;AAE9D,wBAAgB,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACpD,wBAAgB,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,WAAW,EACrD,KAAK,EAAE,KAAK,GACX,aAAa,CAAC,KAAK,CAAC,CAAC;AAKxB,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,aAAa,GACb,UAAU,GACV,aAAa,CAAC;AAElB,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,GAAG,SAAS,GACtE,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CAU9C;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,IAAI,cAAoB,GACvB,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,CA8B9C"}
@@ -0,0 +1,43 @@
1
+ const REQUIRED = Symbol('craft-required-css-var');
2
+ const INHERIT = Symbol('craft-inherit-css-var');
3
+ const OMIT = Symbol('craft-omit-css-var');
4
+ const FORWARD = Symbol('craft-forward-css-var');
5
+ export function required() {
6
+ return { [REQUIRED]: true };
7
+ }
8
+ export const inherit = { [INHERIT]: true };
9
+ export const omit = { [OMIT]: true };
10
+ export function forward(value) {
11
+ return { [FORWARD]: true, value };
12
+ }
13
+ export function isForwardCssVar(value) {
14
+ return typeof value === 'object' && value !== null && FORWARD in value;
15
+ }
16
+ export function cssVarStyles(cssVars) {
17
+ if (!cssVars)
18
+ return {};
19
+ return Object.fromEntries(Object.entries(cssVars).flatMap(([name, value]) => {
20
+ if (typeof value === 'string' || typeof value === 'number') {
21
+ return [[name, value]];
22
+ }
23
+ return [];
24
+ }));
25
+ }
26
+ export function forwardedCssVarStyles(value, seen = new Set()) {
27
+ if (typeof value !== 'object' || value === null || seen.has(value))
28
+ return {};
29
+ seen.add(value);
30
+ if (Array.isArray(value)) {
31
+ return Object.assign({}, ...value.map((item) => forwardedCssVarStyles(item, seen)));
32
+ }
33
+ const candidate = value;
34
+ const own = Object.fromEntries(Object.entries(candidate.props?.cssVars ?? {}).flatMap(([name, disposition]) => isForwardCssVar(disposition) && disposition.value !== undefined
35
+ ? [[name, disposition.value]]
36
+ : []));
37
+ return {
38
+ ...forwardedCssVarStyles(candidate.children, seen),
39
+ ...forwardedCssVarStyles(candidate.node, seen),
40
+ ...own,
41
+ };
42
+ }
43
+ //# sourceMappingURL=css-vars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-vars.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/css-vars.ts"],"names":[],"mappings":"AAsBA,MAAM,QAAQ,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAClD,MAAM,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAEhD,MAAM,UAAU,QAAQ;IAGtB,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAsC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAA8B,CAAC;AACvE,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAA2B,CAAC;AAM9D,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAA8B,CAAC;AAChE,CAAC;AAQD,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,OAAuE;IAEvE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAC6C,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAc,EACd,OAAO,IAAI,GAAG,EAAU;IAExB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,MAAM,CAClB,EAAE,EACF,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAC1D,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,KAOjB,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAC5B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CACpD,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CACtB,eAAe,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS;QAC7D,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CACT,CACF,CAAC;IACF,OAAO;QACL,GAAG,qBAAqB,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;QAClD,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;QAC9C,GAAG,GAAG;KACyC,CAAC;AACpD,CAAC","sourcesContent":["/** A value accepted by a CSS custom property. */\nexport type CssVarValue = string | number;\n\ndeclare const REQUIRED_CSS_VAR: unique symbol;\ndeclare const INHERIT_CSS_VAR: unique symbol;\ndeclare const OMIT_CSS_VAR: unique symbol;\ndeclare const FORWARD_CSS_VAR: unique symbol;\n\n/** Metadata marker used by `ComponentMeta.cssVars` for a required variable. */\nexport type RequiredCssVar<Value extends CssVarValue = CssVarValue> = {\n readonly [REQUIRED_CSS_VAR]: Value;\n};\n\nexport type InheritCssVar = { readonly [INHERIT_CSS_VAR]: true };\nexport type OmitCssVar = { readonly [OMIT_CSS_VAR]: true };\nexport type ForwardCssVar<\n Value extends CssVarValue | undefined = CssVarValue | undefined,\n> = {\n readonly [FORWARD_CSS_VAR]: true;\n readonly value: Value;\n};\n\nconst REQUIRED = Symbol('craft-required-css-var');\nconst INHERIT = Symbol('craft-inherit-css-var');\nconst OMIT = Symbol('craft-omit-css-var');\nconst FORWARD = Symbol('craft-forward-css-var');\n\nexport function required<\n Value extends CssVarValue = CssVarValue,\n>(): RequiredCssVar<Value> {\n return { [REQUIRED]: true } as unknown as RequiredCssVar<Value>;\n}\n\nexport const inherit = { [INHERIT]: true } as unknown as InheritCssVar;\nexport const omit = { [OMIT]: true } as unknown as OmitCssVar;\n\nexport function forward(): ForwardCssVar<undefined>;\nexport function forward<const Value extends CssVarValue>(\n value: Value,\n): ForwardCssVar<Value>;\nexport function forward(value?: CssVarValue): ForwardCssVar {\n return { [FORWARD]: true, value } as unknown as ForwardCssVar;\n}\n\nexport type CssVarDisposition =\n | CssVarValue\n | InheritCssVar\n | OmitCssVar\n | ForwardCssVar;\n\nexport function isForwardCssVar(value: unknown): value is ForwardCssVar {\n return typeof value === 'object' && value !== null && FORWARD in value;\n}\n\nexport function cssVarStyles(\n cssVars: Readonly<Record<`--${string}`, CssVarDisposition>> | undefined,\n): Readonly<Record<`--${string}`, CssVarValue>> {\n if (!cssVars) return {};\n return Object.fromEntries(\n Object.entries(cssVars).flatMap(([name, value]) => {\n if (typeof value === 'string' || typeof value === 'number') {\n return [[name, value]];\n }\n return [];\n }),\n ) as Readonly<Record<`--${string}`, CssVarValue>>;\n}\n\nexport function forwardedCssVarStyles(\n value: unknown,\n seen = new Set<object>(),\n): Readonly<Record<`--${string}`, CssVarValue>> {\n if (typeof value !== 'object' || value === null || seen.has(value)) return {};\n seen.add(value);\n if (Array.isArray(value)) {\n return Object.assign(\n {},\n ...value.map((item) => forwardedCssVarStyles(item, seen)),\n );\n }\n const candidate = value as {\n readonly kind?: string;\n readonly props?: {\n readonly cssVars?: Readonly<Record<`--${string}`, unknown>>;\n };\n readonly children?: unknown;\n readonly node?: unknown;\n };\n const own = Object.fromEntries(\n Object.entries(candidate.props?.cssVars ?? {}).flatMap(\n ([name, disposition]) =>\n isForwardCssVar(disposition) && disposition.value !== undefined\n ? [[name, disposition.value]]\n : [],\n ),\n );\n return {\n ...forwardedCssVarStyles(candidate.children, seen),\n ...forwardedCssVarStyles(candidate.node, seen),\n ...own,\n } as Readonly<Record<`--${string}`, CssVarValue>>;\n}\n"]}
@@ -0,0 +1,151 @@
1
+ import type { CssVarDisposition, CssVarValue, ForwardCssVar, InheritCssVar, RequiredCssVar } from './css-vars';
2
+ export type CssVarContract = {
3
+ readonly required: string;
4
+ readonly optional: string;
5
+ readonly declared: string;
6
+ readonly inherited: string;
7
+ readonly nonInherited: string;
8
+ readonly unknownCss: boolean;
9
+ };
10
+ export type EmptyCssVarContract = {
11
+ readonly required: never;
12
+ readonly optional: never;
13
+ readonly declared: never;
14
+ readonly inherited: never;
15
+ readonly nonInherited: never;
16
+ readonly unknownCss: false;
17
+ };
18
+ type Ws = ' ' | '\n' | '\r' | '\t' | '\f';
19
+ type TrimLeft<Value extends string> = Value extends `${Ws}${infer Rest}` ? TrimLeft<Rest> : Value;
20
+ type NameStop = Ws | ':' | ')' | ',' | '{' | '}' | ';' | '(' | '[' | ']';
21
+ type ReadName<Value extends string, Acc extends string = '', Depth extends unknown[] = []> = Depth['length'] extends 64 ? readonly [Acc, Value] : Value extends `${infer Char}${infer Rest}` ? Char extends NameStop ? readonly [Acc, Value] : ReadName<Rest, `${Acc}${Char}`, [...Depth, unknown]> : readonly [Acc, ''];
22
+ type VarScan<Css extends string, Used extends string = never, Fallback extends string = never> = Css extends `${string}var(${infer Rest}` ? TrimLeft<Rest> extends `--${infer AfterPrefix}` ? ReadName<AfterPrefix> extends readonly [
23
+ infer Name extends string,
24
+ infer Tail extends string
25
+ ] ? TrimLeft<Tail> extends `,${infer After}` ? VarScan<After, Used | `--${Name}`, Fallback | `--${Name}`> : VarScan<Tail, Used | `--${Name}`, Fallback> : {
26
+ readonly used: Used;
27
+ readonly fallback: Fallback;
28
+ } : VarScan<Rest, Used, Fallback> : {
29
+ readonly used: Used;
30
+ readonly fallback: Fallback;
31
+ };
32
+ type DeclarationScan<Css extends string, Declared extends string = never> = Css extends `${string}--${infer Rest}` ? ReadName<Rest> extends readonly [
33
+ infer Name extends string,
34
+ infer Tail extends string
35
+ ] ? TrimLeft<Tail> extends `:${infer After}` ? DeclarationScan<After, Declared | `--${Name}`> : DeclarationScan<Tail, Declared> : Declared : Declared;
36
+ type PropertyScan<Css extends string, Registered extends string = never, NonInherited extends string = never> = Css extends `${string}@property${Ws}${infer Rest}` ? TrimLeft<Rest> extends `--${infer AfterPrefix}` ? ReadName<AfterPrefix> extends readonly [
37
+ infer Name extends string,
38
+ infer Tail extends string
39
+ ] ? Tail extends `${string}{${infer Body}}${infer After}` ? PropertyScan<After, Body extends `${string}initial-value${Ws | ''}:${string}` ? Registered | `--${Name}` : Registered, Body extends `${string}inherits${Ws | ''}:${Ws | ''}false${string}` ? NonInherited | `--${Name}` : NonInherited> : {
40
+ readonly registered: Registered;
41
+ readonly nonInherited: NonInherited;
42
+ } : {
43
+ readonly registered: Registered;
44
+ readonly nonInherited: NonInherited;
45
+ } : PropertyScan<Rest, Registered, NonInherited> : {
46
+ readonly registered: Registered;
47
+ readonly nonInherited: NonInherited;
48
+ };
49
+ type LiteralCss<Value> = Value extends string ? string extends Value ? never : Value : never;
50
+ type CssVarsOfString<Css extends string> = VarScan<Css> extends infer Vars extends {
51
+ readonly used: string;
52
+ readonly fallback: string;
53
+ } ? PropertyScan<Css> extends infer Properties extends {
54
+ readonly registered: string;
55
+ readonly nonInherited: string;
56
+ } ? {
57
+ readonly declared: DeclarationScan<Css> | Properties['registered'];
58
+ readonly used: Vars['used'];
59
+ readonly fallback: Vars['fallback'];
60
+ readonly nonInherited: Properties['nonInherited'];
61
+ } : never : never;
62
+ type CssVarsOfArray<Styles extends readonly unknown[]> = Styles[number] extends infer Style ? LiteralCss<Style> extends infer Css extends string ? CssVarsOfString<Css> : never : never;
63
+ export type CssVarsOf<Styles> = Styles extends readonly unknown[] ? CssVarsOfArray<Styles> : LiteralCss<Styles> extends infer Css extends string ? CssVarsOfString<Css> : {
64
+ readonly declared: never;
65
+ readonly used: never;
66
+ readonly fallback: never;
67
+ readonly nonInherited: never;
68
+ };
69
+ type ParsedContract<Styles> = CssVarsOf<Styles> extends infer Parsed extends {
70
+ readonly declared: string;
71
+ readonly used: string;
72
+ readonly fallback: string;
73
+ readonly nonInherited: string;
74
+ } ? {
75
+ readonly required: Exclude<Parsed['used'], Parsed['declared'] | Parsed['fallback'] | Parsed['nonInherited']>;
76
+ readonly optional: Exclude<Parsed['declared'] | Parsed['fallback'], Parsed['nonInherited']>;
77
+ readonly declared: Parsed['declared'];
78
+ readonly inherited: never;
79
+ readonly nonInherited: Parsed['nonInherited'];
80
+ readonly unknownCss: false;
81
+ } : EmptyCssVarContract;
82
+ type ExplicitRequired<Vars> = {
83
+ [Key in keyof Vars]: Vars[Key] extends RequiredCssVar<any> ? Key : never;
84
+ }[keyof Vars] & string;
85
+ type ExplicitOptional<Vars> = Exclude<keyof Vars & string, ExplicitRequired<Vars>>;
86
+ type ExplicitContract<Vars> = {
87
+ readonly required: ExplicitRequired<Vars>;
88
+ readonly optional: ExplicitOptional<Vars>;
89
+ readonly declared: ExplicitOptional<Vars>;
90
+ readonly inherited: never;
91
+ readonly nonInherited: never;
92
+ readonly unknownCss: false;
93
+ };
94
+ export type CssVarsContractOfMeta<Meta> = Meta extends {
95
+ readonly cssVars: infer Vars;
96
+ } ? ExplicitContract<Vars> : Meta extends {
97
+ readonly styles: infer Styles;
98
+ } ? ParsedContract<Styles> : Meta extends {
99
+ readonly stylesUrl: infer Styles;
100
+ } ? string extends Styles ? Omit<EmptyCssVarContract, 'unknownCss'> & {
101
+ readonly unknownCss: true;
102
+ } : ParsedContract<Styles> : EmptyCssVarContract;
103
+ export type MergeCssVarContracts<Left extends CssVarContract, Right extends CssVarContract> = {
104
+ readonly required: Exclude<Left['required'] | Right['required'], Left['declared']>;
105
+ readonly optional: Left['optional'] | Right['optional'];
106
+ readonly declared: Left['declared'];
107
+ readonly inherited: Right['inherited'];
108
+ readonly nonInherited: Left['nonInherited'] | Right['nonInherited'];
109
+ readonly unknownCss: Left['unknownCss'] extends true ? true : Right['unknownCss'];
110
+ };
111
+ type DispositionAt<Props, Key extends string> = Props extends {
112
+ readonly cssVars?: infer Vars;
113
+ } ? Key extends keyof NonNullable<Vars> ? NonNullable<Vars>[Key] : never : never;
114
+ type SuppliedKeys<Props> = Props extends {
115
+ readonly cssVars?: infer Vars;
116
+ } ? keyof NonNullable<Vars> & string : never;
117
+ type ForwardedWithoutDefault<Contract extends CssVarContract, Props> = {
118
+ [Key in Contract['required']]: [DispositionAt<Props, Key>] extends [never] ? never : DispositionAt<Props, Key> extends ForwardCssVar<undefined> ? Key : never;
119
+ }[Contract['required']];
120
+ type ForwardedOptional<Contract extends CssVarContract, Props> = {
121
+ [Key in Contract['required'] | Contract['optional']]: [
122
+ DispositionAt<Props, Key>
123
+ ] extends [never] ? never : DispositionAt<Props, Key> extends ForwardCssVar<any> ? Key : never;
124
+ }[Contract['required'] | Contract['optional']];
125
+ type InheritedKeys<Contract extends CssVarContract, Props> = {
126
+ [Key in Contract['required'] | Contract['optional']]: [
127
+ DispositionAt<Props, Key>
128
+ ] extends [never] ? never : DispositionAt<Props, Key> extends InheritCssVar ? Key : never;
129
+ }[Contract['required'] | Contract['optional']];
130
+ export type CssVarsAfterCall<Contract extends CssVarContract, Props> = {
131
+ readonly required: Exclude<Contract['required'], SuppliedKeys<Props>> | ForwardedWithoutDefault<Contract, Props>;
132
+ readonly optional: ForwardedOptional<Contract, Props>;
133
+ readonly declared: never;
134
+ readonly inherited: InheritedKeys<Contract, Props>;
135
+ readonly nonInherited: Contract['nonInherited'];
136
+ readonly unknownCss: Contract['unknownCss'];
137
+ };
138
+ export type CssVarsCallProps<Contract extends CssVarContract> = [
139
+ Contract['required'] | Contract['optional']
140
+ ] extends [never] ? {
141
+ readonly cssVars?: never;
142
+ } : {
143
+ readonly cssVars?: {
144
+ readonly [Key in Contract['required']]: CssVarDisposition;
145
+ } & {
146
+ readonly [Key in Contract['optional']]?: CssVarDisposition;
147
+ };
148
+ };
149
+ export type CssVarsMetaDeclaration = Readonly<Record<`--${string}`, CssVarValue | RequiredCssVar>>;
150
+ export {};
151
+ //# sourceMappingURL=css-vars.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-vars.type.d.ts","sourceRoot":"","sources":["../../../../../libs/component/src/lib/css-vars.type.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=css-vars.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-vars.type.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/css-vars.type.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n CssVarDisposition,\n CssVarValue,\n ForwardCssVar,\n InheritCssVar,\n RequiredCssVar,\n} from './css-vars';\n\nexport type CssVarContract = {\n readonly required: string;\n readonly optional: string;\n readonly declared: string;\n readonly inherited: string;\n readonly nonInherited: string;\n readonly unknownCss: boolean;\n};\n\nexport type EmptyCssVarContract = {\n readonly required: never;\n readonly optional: never;\n readonly declared: never;\n readonly inherited: never;\n readonly nonInherited: never;\n readonly unknownCss: false;\n};\n\ntype Ws = ' ' | '\\n' | '\\r' | '\\t' | '\\f';\ntype TrimLeft<Value extends string> = Value extends `${Ws}${infer Rest}`\n ? TrimLeft<Rest>\n : Value;\ntype NameStop = Ws | ':' | ')' | ',' | '{' | '}' | ';' | '(' | '[' | ']';\n\ntype ReadName<\n Value extends string,\n Acc extends string = '',\n Depth extends unknown[] = [],\n> = Depth['length'] extends 64\n ? readonly [Acc, Value]\n : Value extends `${infer Char}${infer Rest}`\n ? Char extends NameStop\n ? readonly [Acc, Value]\n : ReadName<Rest, `${Acc}${Char}`, [...Depth, unknown]>\n : readonly [Acc, ''];\n\ntype VarScan<\n Css extends string,\n Used extends string = never,\n Fallback extends string = never,\n> = Css extends `${string}var(${infer Rest}`\n ? TrimLeft<Rest> extends `--${infer AfterPrefix}`\n ? ReadName<AfterPrefix> extends readonly [\n infer Name extends string,\n infer Tail extends string,\n ]\n ? TrimLeft<Tail> extends `,${infer After}`\n ? VarScan<After, Used | `--${Name}`, Fallback | `--${Name}`>\n : VarScan<Tail, Used | `--${Name}`, Fallback>\n : { readonly used: Used; readonly fallback: Fallback }\n : VarScan<Rest, Used, Fallback>\n : { readonly used: Used; readonly fallback: Fallback };\n\ntype DeclarationScan<\n Css extends string,\n Declared extends string = never,\n> = Css extends `${string}--${infer Rest}`\n ? ReadName<Rest> extends readonly [\n infer Name extends string,\n infer Tail extends string,\n ]\n ? TrimLeft<Tail> extends `:${infer After}`\n ? DeclarationScan<After, Declared | `--${Name}`>\n : DeclarationScan<Tail, Declared>\n : Declared\n : Declared;\n\ntype PropertyScan<\n Css extends string,\n Registered extends string = never,\n NonInherited extends string = never,\n> = Css extends `${string}@property${Ws}${infer Rest}`\n ? TrimLeft<Rest> extends `--${infer AfterPrefix}`\n ? ReadName<AfterPrefix> extends readonly [\n infer Name extends string,\n infer Tail extends string,\n ]\n ? Tail extends `${string}{${infer Body}}${infer After}`\n ? PropertyScan<\n After,\n Body extends `${string}initial-value${Ws | ''}:${string}`\n ? Registered | `--${Name}`\n : Registered,\n Body extends `${string}inherits${Ws | ''}:${Ws | ''}false${string}`\n ? NonInherited | `--${Name}`\n : NonInherited\n >\n : {\n readonly registered: Registered;\n readonly nonInherited: NonInherited;\n }\n : { readonly registered: Registered; readonly nonInherited: NonInherited }\n : PropertyScan<Rest, Registered, NonInherited>\n : { readonly registered: Registered; readonly nonInherited: NonInherited };\n\ntype LiteralCss<Value> = Value extends string\n ? string extends Value\n ? never\n : Value\n : never;\n\ntype CssVarsOfString<Css extends string> =\n VarScan<Css> extends infer Vars extends {\n readonly used: string;\n readonly fallback: string;\n }\n ? PropertyScan<Css> extends infer Properties extends {\n readonly registered: string;\n readonly nonInherited: string;\n }\n ? {\n readonly declared: DeclarationScan<Css> | Properties['registered'];\n readonly used: Vars['used'];\n readonly fallback: Vars['fallback'];\n readonly nonInherited: Properties['nonInherited'];\n }\n : never\n : never;\n\ntype CssVarsOfArray<Styles extends readonly unknown[]> =\n Styles[number] extends infer Style\n ? LiteralCss<Style> extends infer Css extends string\n ? CssVarsOfString<Css>\n : never\n : never;\n\nexport type CssVarsOf<Styles> = Styles extends readonly unknown[]\n ? CssVarsOfArray<Styles>\n : LiteralCss<Styles> extends infer Css extends string\n ? CssVarsOfString<Css>\n : {\n readonly declared: never;\n readonly used: never;\n readonly fallback: never;\n readonly nonInherited: never;\n };\n\ntype ParsedContract<Styles> =\n CssVarsOf<Styles> extends infer Parsed extends {\n readonly declared: string;\n readonly used: string;\n readonly fallback: string;\n readonly nonInherited: string;\n }\n ? {\n readonly required: Exclude<\n Parsed['used'],\n Parsed['declared'] | Parsed['fallback'] | Parsed['nonInherited']\n >;\n readonly optional: Exclude<\n Parsed['declared'] | Parsed['fallback'],\n Parsed['nonInherited']\n >;\n readonly declared: Parsed['declared'];\n readonly inherited: never;\n readonly nonInherited: Parsed['nonInherited'];\n readonly unknownCss: false;\n }\n : EmptyCssVarContract;\n\ntype ExplicitRequired<Vars> = {\n [Key in keyof Vars]: Vars[Key] extends RequiredCssVar<any> ? Key : never;\n}[keyof Vars] &\n string;\ntype ExplicitOptional<Vars> = Exclude<\n keyof Vars & string,\n ExplicitRequired<Vars>\n>;\n\ntype ExplicitContract<Vars> = {\n readonly required: ExplicitRequired<Vars>;\n readonly optional: ExplicitOptional<Vars>;\n readonly declared: ExplicitOptional<Vars>;\n readonly inherited: never;\n readonly nonInherited: never;\n readonly unknownCss: false;\n};\n\nexport type CssVarsContractOfMeta<Meta> = Meta extends {\n readonly cssVars: infer Vars;\n}\n ? ExplicitContract<Vars>\n : Meta extends { readonly styles: infer Styles }\n ? ParsedContract<Styles>\n : Meta extends { readonly stylesUrl: infer Styles }\n ? string extends Styles\n ? Omit<EmptyCssVarContract, 'unknownCss'> & {\n readonly unknownCss: true;\n }\n : ParsedContract<Styles>\n : EmptyCssVarContract;\n\nexport type MergeCssVarContracts<\n Left extends CssVarContract,\n Right extends CssVarContract,\n> = {\n readonly required: Exclude<\n Left['required'] | Right['required'],\n Left['declared']\n >;\n readonly optional: Left['optional'] | Right['optional'];\n readonly declared: Left['declared'];\n readonly inherited: Right['inherited'];\n readonly nonInherited: Left['nonInherited'] | Right['nonInherited'];\n readonly unknownCss: Left['unknownCss'] extends true\n ? true\n : Right['unknownCss'];\n};\n\ntype DispositionAt<Props, Key extends string> = Props extends {\n readonly cssVars?: infer Vars;\n}\n ? Key extends keyof NonNullable<Vars>\n ? NonNullable<Vars>[Key]\n : never\n : never;\ntype SuppliedKeys<Props> = Props extends { readonly cssVars?: infer Vars }\n ? keyof NonNullable<Vars> & string\n : never;\ntype ForwardedWithoutDefault<Contract extends CssVarContract, Props> = {\n [Key in Contract['required']]: [DispositionAt<Props, Key>] extends [never]\n ? never\n : DispositionAt<Props, Key> extends ForwardCssVar<undefined>\n ? Key\n : never;\n}[Contract['required']];\ntype ForwardedOptional<Contract extends CssVarContract, Props> = {\n [Key in Contract['required'] | Contract['optional']]: [\n DispositionAt<Props, Key>,\n ] extends [never]\n ? never\n : DispositionAt<Props, Key> extends ForwardCssVar<any>\n ? Key\n : never;\n}[Contract['required'] | Contract['optional']];\ntype InheritedKeys<Contract extends CssVarContract, Props> = {\n [Key in Contract['required'] | Contract['optional']]: [\n DispositionAt<Props, Key>,\n ] extends [never]\n ? never\n : DispositionAt<Props, Key> extends InheritCssVar\n ? Key\n : never;\n}[Contract['required'] | Contract['optional']];\n\nexport type CssVarsAfterCall<Contract extends CssVarContract, Props> = {\n readonly required:\n | Exclude<Contract['required'], SuppliedKeys<Props>>\n | ForwardedWithoutDefault<Contract, Props>;\n readonly optional: ForwardedOptional<Contract, Props>;\n readonly declared: never;\n readonly inherited: InheritedKeys<Contract, Props>;\n readonly nonInherited: Contract['nonInherited'];\n readonly unknownCss: Contract['unknownCss'];\n};\n\nexport type CssVarsCallProps<Contract extends CssVarContract> = [\n Contract['required'] | Contract['optional'],\n] extends [never]\n ? { readonly cssVars?: never }\n : {\n readonly cssVars?: {\n readonly [Key in Contract['required']]: CssVarDisposition;\n } & {\n readonly [Key in Contract['optional']]?: CssVarDisposition;\n };\n };\n\nexport type CssVarsMetaDeclaration = Readonly<\n Record<`--${string}`, CssVarValue | RequiredCssVar>\n>;\n"]}
@@ -0,0 +1,31 @@
1
+ import type { CraftComponent, PropsOf } from './types';
2
+ import type { ComponentDepsOf, CraftLazyLoadHelpers } from '@craft-ts/core';
3
+ import type { CraftNodeChildrenDependencies, CraftNodeChildren, DeferNode, DeferTrigger } from './render/vnode';
4
+ export interface DeferOptions<Loaded> {
5
+ readonly trigger?: DeferTrigger;
6
+ readonly resolve?: (loaded: Loaded) => CraftNodeChildren;
7
+ readonly placeholder?: () => CraftNodeChildren;
8
+ readonly loading?: () => CraftNodeChildren;
9
+ readonly error?: (error: unknown) => CraftNodeChildren;
10
+ }
11
+ export type DeferLoader<Loaded> = (helpers: CraftLazyLoadHelpers) => Promise<Loaded>;
12
+ type CallbackDependencies<Callback> = Callback extends (...args: any[]) => infer Output ? CraftNodeChildrenDependencies<Output> : {};
13
+ type DeferOptionsDependencies<Options> = Options extends object ? CallbackDependencies<Options extends {
14
+ resolve?: infer Resolve;
15
+ } ? Resolve : never> | CallbackDependencies<Options extends {
16
+ placeholder?: infer Placeholder;
17
+ } ? Placeholder : never> | CallbackDependencies<Options extends {
18
+ loading?: infer Loading;
19
+ } ? Loading : never> | CallbackDependencies<Options extends {
20
+ error?: infer Error;
21
+ } ? Error : never> : {};
22
+ export declare function defer<Loaded, Options extends DeferOptions<Loaded> & {
23
+ readonly resolve: (loaded: Loaded) => CraftNodeChildren;
24
+ }>(loader: DeferLoader<Loaded>, options: Options): DeferNode<Loaded, DeferOptionsDependencies<Options>>;
25
+ export declare function defer<Component extends CraftComponent<any>, Options extends Omit<DeferOptions<Component>, 'resolve'> & {
26
+ readonly props?: PropsOf<Component>;
27
+ } = Omit<DeferOptions<Component>, 'resolve'> & {
28
+ readonly props?: PropsOf<Component>;
29
+ }>(loader: DeferLoader<Component>, options?: Options): DeferNode<Component, ComponentDepsOf<Component> | DeferOptionsDependencies<Options>>;
30
+ export {};
31
+ //# sourceMappingURL=defer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defer.d.ts","sourceRoot":"","sources":["../../../../../libs/component/src/lib/defer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,6BAA6B,EAC7B,iBAAiB,EACjB,SAAS,EACT,YAAY,EACb,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,YAAY,CAAC,MAAM;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,iBAAiB,CAAC;IACzD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,iBAAiB,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,iBAAiB,CAAC;CACxD;AAED,MAAM,MAAM,WAAW,CAAC,MAAM,IAAI,CAChC,OAAO,EAAE,oBAAoB,KAC1B,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,KAAK,oBAAoB,CAAC,QAAQ,IAAI,QAAQ,SAAS,CACrD,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,MAAM,MAAM,GACb,6BAA6B,CAAC,MAAM,CAAC,GACrC,EAAE,CAAC;AAEP,KAAK,wBAAwB,CAAC,OAAO,IAAI,OAAO,SAAS,MAAM,GAEvD,oBAAoB,CAClB,OAAO,SAAS;IAAE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;CAAE,GAAG,OAAO,GAAG,KAAK,CAC9D,GACD,oBAAoB,CAClB,OAAO,SAAS;IAAE,WAAW,CAAC,EAAE,MAAM,WAAW,CAAA;CAAE,GAC/C,WAAW,GACX,KAAK,CACV,GACD,oBAAoB,CAClB,OAAO,SAAS;IAAE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAA;CAAE,GAAG,OAAO,GAAG,KAAK,CAC9D,GACD,oBAAoB,CAClB,OAAO,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAA;CAAE,GAAG,KAAK,GAAG,KAAK,CACxD,GACL,EAAE,CAAC;AAEP,wBAAgB,KAAK,CACnB,MAAM,EACN,OAAO,SAAS,YAAY,CAAC,MAAM,CAAC,GAAG;IACrC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,iBAAiB,CAAC;CACzD,EAED,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAC3B,OAAO,EAAE,OAAO,GACf,SAAS,CAAC,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,wBAAgB,KAAK,CACnB,SAAS,SAAS,cAAc,CAAC,GAAG,CAAC,EACrC,OAAO,SAAS,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CACrC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,GAAG;IAC7C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CACrC,EAED,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,EAC9B,OAAO,CAAC,EAAE,OAAO,GAChB,SAAS,CACV,SAAS,EACT,eAAe,CAAC,SAAS,CAAC,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAC/D,CAAC"}
@@ -0,0 +1,19 @@
1
+ export function defer(loader, options = {}) {
2
+ const resolve = options.resolve ??
3
+ ((loaded) => {
4
+ if (typeof loaded !== 'function') {
5
+ return loaded;
6
+ }
7
+ return loaded(options.props);
8
+ });
9
+ return {
10
+ kind: 'defer',
11
+ loader,
12
+ resolve,
13
+ trigger: options.trigger ?? 'idle',
14
+ placeholder: options.placeholder,
15
+ loading: options.loading,
16
+ error: options.error,
17
+ };
18
+ }
19
+ //# sourceMappingURL=defer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defer.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/defer.ts"],"names":[],"mappings":"AAuEA,MAAM,UAAU,KAAK,CACnB,MAA2B,EAC3B,UAA8D,EAAE;IAEhE,MAAM,OAAO,GACX,OAAO,CAAC,OAAO;QACf,CAAC,CAAC,MAAc,EAAE,EAAE;YAClB,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,OAAO,MAA2B,CAAC;YACrC,CAAC;YAED,OAAQ,MAA2D,CACjE,OAAO,CAAC,KAAK,CACd,CAAC;QACJ,CAAC,CAAC,CAAC;IAEL,OAAO;QACL,IAAI,EAAE,OAAO;QACb,MAAM;QACN,OAAO;QACP,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM;QAClC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC","sourcesContent":["import type { CraftComponent, PropsOf } from './types';\nimport type {\n ComponentDepsOf,\n CraftLazyLoadHelpers,\n} from '@craft-ts/core';\nimport type {\n CraftNodeChildrenDependencies,\n CraftNodeChildren,\n DeferNode,\n DeferTrigger,\n} from './render/vnode';\n\nexport interface DeferOptions<Loaded> {\n readonly trigger?: DeferTrigger;\n readonly resolve?: (loaded: Loaded) => CraftNodeChildren;\n readonly placeholder?: () => CraftNodeChildren;\n readonly loading?: () => CraftNodeChildren;\n readonly error?: (error: unknown) => CraftNodeChildren;\n}\n\nexport type DeferLoader<Loaded> = (\n helpers: CraftLazyLoadHelpers,\n) => Promise<Loaded>;\n\ntype CallbackDependencies<Callback> = Callback extends (\n ...args: any[]\n) => infer Output\n ? CraftNodeChildrenDependencies<Output>\n : {};\n\ntype DeferOptionsDependencies<Options> = Options extends object\n ?\n | CallbackDependencies<\n Options extends { resolve?: infer Resolve } ? Resolve : never\n >\n | CallbackDependencies<\n Options extends { placeholder?: infer Placeholder }\n ? Placeholder\n : never\n >\n | CallbackDependencies<\n Options extends { loading?: infer Loading } ? Loading : never\n >\n | CallbackDependencies<\n Options extends { error?: infer Error } ? Error : never\n >\n : {};\n\nexport function defer<\n Loaded,\n Options extends DeferOptions<Loaded> & {\n readonly resolve: (loaded: Loaded) => CraftNodeChildren;\n },\n>(\n loader: DeferLoader<Loaded>,\n options: Options,\n): DeferNode<Loaded, DeferOptionsDependencies<Options>>;\nexport function defer<\n Component extends CraftComponent<any>,\n Options extends Omit<DeferOptions<Component>, 'resolve'> & {\n readonly props?: PropsOf<Component>;\n } = Omit<DeferOptions<Component>, 'resolve'> & {\n readonly props?: PropsOf<Component>;\n },\n>(\n loader: DeferLoader<Component>,\n options?: Options,\n): DeferNode<\n Component,\n ComponentDepsOf<Component> | DeferOptionsDependencies<Options>\n>;\nexport function defer<Loaded>(\n loader: DeferLoader<Loaded>,\n options: DeferOptions<Loaded> & { readonly props?: object } = {},\n): DeferNode<Loaded> {\n const resolve =\n options.resolve ??\n ((loaded: Loaded) => {\n if (typeof loaded !== 'function') {\n return loaded as CraftNodeChildren;\n }\n\n return (loaded as unknown as (props?: object) => CraftNodeChildren)(\n options.props,\n );\n });\n\n return {\n kind: 'defer',\n loader,\n resolve,\n trigger: options.trigger ?? 'idle',\n placeholder: options.placeholder,\n loading: options.loading,\n error: options.error,\n };\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { type CraftDirective, type ComponentOperatorDefinition, type DirectiveMeta, type LogicDecorator, type TemplateDependencies, type TemplateDecorator } from './types';
2
+ type DirectiveTemplateDependencies<Template> = Template extends (...args: any[]) => infer DecoratedTemplate ? TemplateDependencies<DecoratedTemplate> : {};
3
+ /**
4
+ * Decorates a Craft component's factory and template as one reusable unit.
5
+ * Directives are applied from left to right by a component's `.pipe(...)`.
6
+ */
7
+ export declare function craftDirective<const Name extends string, const Meta extends DirectiveMeta, Logic extends LogicDecorator, const Template extends TemplateDecorator>(name: Name, meta: Meta, logic: Logic, template: Template, componentOperator?: ComponentOperatorDefinition): CraftDirective<Logic, Template, DirectiveTemplateDependencies<Template>>;
8
+ export {};
9
+ //# sourceMappingURL=directive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directive.d.ts","sourceRoot":"","sources":["../../../../../libs/component/src/lib/directive.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,2BAA2B,EAChC,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,SAAS,CAAC;AAIjB,KAAK,6BAA6B,CAAC,QAAQ,IAAI,QAAQ,SAAS,CAC9D,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,MAAM,iBAAiB,GACxB,oBAAoB,CAAC,iBAAiB,CAAC,GACvC,EAAE,CAAC;AAEP;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,CAAC,IAAI,SAAS,MAAM,EACzB,KAAK,CAAC,IAAI,SAAS,aAAa,EAChC,KAAK,SAAS,cAAc,EAC5B,KAAK,CAAC,QAAQ,SAAS,iBAAiB,EAExC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,CAAC,EAAE,2BAA2B,GAC9C,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,6BAA6B,CAAC,QAAQ,CAAC,CAAC,CA8B1E"}
@@ -0,0 +1,31 @@
1
+ import { CRAFT_DIRECTIVE, } from './types';
2
+ import { CRAFT_REGISTRATION_TARGET } from '@craft-ts/core';
3
+ import { CRAFT_NODE_DIRECTIVE } from '@craft-ts/core';
4
+ /**
5
+ * Decorates a Craft component's factory and template as one reusable unit.
6
+ * Directives are applied from left to right by a component's `.pipe(...)`.
7
+ */
8
+ export function craftDirective(name, meta, logic, template, componentOperator) {
9
+ const directive = (() => undefined);
10
+ const definition = { name, meta, logic, template, componentOperator };
11
+ Object.defineProperty(directive, CRAFT_DIRECTIVE, {
12
+ value: definition,
13
+ enumerable: false,
14
+ });
15
+ Object.defineProperty(directive, CRAFT_REGISTRATION_TARGET, {
16
+ value: { kind: 'directive', name },
17
+ enumerable: false,
18
+ });
19
+ if (meta.node) {
20
+ Object.defineProperty(directive, CRAFT_NODE_DIRECTIVE, {
21
+ value: {
22
+ name,
23
+ inputs: meta.node.inputs ?? [],
24
+ mount: meta.node.mount,
25
+ },
26
+ enumerable: false,
27
+ });
28
+ }
29
+ return directive;
30
+ }
31
+ //# sourceMappingURL=directive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directive.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/directive.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAOhB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAQtD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAM5B,IAAU,EACV,IAAU,EACV,KAAY,EACZ,QAAkB,EAClB,iBAA+C;IAE/C,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAIjC,CAAC;IAEF,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IACtE,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE;QAChD,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,yBAAyB,EAAE;QAC1D,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;QAClC,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,oBAAoB,EAAE;YACrD,KAAK,EAAE;gBACL,IAAI;gBACJ,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;gBAC9B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;aACvB;YACD,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import {\n CRAFT_DIRECTIVE,\n type CraftDirective,\n type ComponentOperatorDefinition,\n type DirectiveMeta,\n type LogicDecorator,\n type TemplateDependencies,\n type TemplateDecorator,\n} from './types';\nimport { CRAFT_REGISTRATION_TARGET } from '@craft-ts/core';\nimport { CRAFT_NODE_DIRECTIVE } from '@craft-ts/core';\n\ntype DirectiveTemplateDependencies<Template> = Template extends (\n ...args: any[]\n) => infer DecoratedTemplate\n ? TemplateDependencies<DecoratedTemplate>\n : {};\n\n/**\n * Decorates a Craft component's factory and template as one reusable unit.\n * Directives are applied from left to right by a component's `.pipe(...)`.\n */\nexport function craftDirective<\n const Name extends string,\n const Meta extends DirectiveMeta,\n Logic extends LogicDecorator,\n const Template extends TemplateDecorator,\n>(\n name: Name,\n meta: Meta,\n logic: Logic,\n template: Template,\n componentOperator?: ComponentOperatorDefinition,\n): CraftDirective<Logic, Template, DirectiveTemplateDependencies<Template>> {\n const directive = (() => undefined) as unknown as CraftDirective<\n Logic,\n Template,\n DirectiveTemplateDependencies<Template>\n >;\n\n const definition = { name, meta, logic, template, componentOperator };\n Object.defineProperty(directive, CRAFT_DIRECTIVE, {\n value: definition,\n enumerable: false,\n });\n\n Object.defineProperty(directive, CRAFT_REGISTRATION_TARGET, {\n value: { kind: 'directive', name },\n enumerable: false,\n });\n\n if (meta.node) {\n Object.defineProperty(directive, CRAFT_NODE_DIRECTIVE, {\n value: {\n name,\n inputs: meta.node.inputs ?? [],\n mount: meta.node.mount,\n },\n enumerable: false,\n });\n }\n\n return directive;\n}\n"]}