@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.
- package/LICENSE +21 -0
- package/package.json +36 -0
- package/src/index.d.ts +40 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +38 -0
- package/src/index.js.map +1 -0
- package/src/lib/a11y-control.d.ts +58 -0
- package/src/lib/a11y-control.d.ts.map +1 -0
- package/src/lib/a11y-control.js +74 -0
- package/src/lib/a11y-control.js.map +1 -0
- package/src/lib/a11y.d.ts +87 -0
- package/src/lib/a11y.d.ts.map +1 -0
- package/src/lib/a11y.js +96 -0
- package/src/lib/a11y.js.map +1 -0
- package/src/lib/ai/ai-context-menu.d.ts +140 -0
- package/src/lib/ai/ai-context-menu.d.ts.map +1 -0
- package/src/lib/ai/ai-context-menu.js +66 -0
- package/src/lib/ai/ai-context-menu.js.map +1 -0
- package/src/lib/ai/ai-send-dialog.d.ts +1263 -0
- package/src/lib/ai/ai-send-dialog.d.ts.map +1 -0
- package/src/lib/ai/ai-send-dialog.js +288 -0
- package/src/lib/ai/ai-send-dialog.js.map +1 -0
- package/src/lib/ai/send-context-to-ai.d.ts +29 -0
- package/src/lib/ai/send-context-to-ai.d.ts.map +1 -0
- package/src/lib/ai/send-context-to-ai.js +127 -0
- package/src/lib/ai/send-context-to-ai.js.map +1 -0
- package/src/lib/assert-defined-input.d.ts +26 -0
- package/src/lib/assert-defined-input.d.ts.map +1 -0
- package/src/lib/assert-defined-input.js +47 -0
- package/src/lib/assert-defined-input.js.map +1 -0
- package/src/lib/block.d.ts +36 -0
- package/src/lib/block.d.ts.map +1 -0
- package/src/lib/block.js +55 -0
- package/src/lib/block.js.map +1 -0
- package/src/lib/bootstrap.d.ts +32 -0
- package/src/lib/bootstrap.d.ts.map +1 -0
- package/src/lib/bootstrap.js +60 -0
- package/src/lib/bootstrap.js.map +1 -0
- package/src/lib/bridge.d.ts +56 -0
- package/src/lib/bridge.d.ts.map +1 -0
- package/src/lib/bridge.js +81 -0
- package/src/lib/bridge.js.map +1 -0
- package/src/lib/component.d.ts +46 -0
- package/src/lib/component.d.ts.map +1 -0
- package/src/lib/component.js +118 -0
- package/src/lib/component.js.map +1 -0
- package/src/lib/composition.d.ts +17 -0
- package/src/lib/composition.d.ts.map +1 -0
- package/src/lib/composition.js +28 -0
- package/src/lib/composition.js.map +1 -0
- package/src/lib/craft-defaults.d.ts +2 -0
- package/src/lib/craft-defaults.d.ts.map +1 -0
- package/src/lib/craft-defaults.js +41 -0
- package/src/lib/craft-defaults.js.map +1 -0
- package/src/lib/craft-host-tokens.d.ts +6 -0
- package/src/lib/craft-host-tokens.d.ts.map +1 -0
- package/src/lib/craft-host-tokens.js +7 -0
- package/src/lib/craft-host-tokens.js.map +1 -0
- package/src/lib/craft-router-outlet.d.ts +15 -0
- package/src/lib/craft-router-outlet.d.ts.map +1 -0
- package/src/lib/craft-router-outlet.js +10 -0
- package/src/lib/craft-router-outlet.js.map +1 -0
- package/src/lib/css-vars.d.ts +31 -0
- package/src/lib/css-vars.d.ts.map +1 -0
- package/src/lib/css-vars.js +43 -0
- package/src/lib/css-vars.js.map +1 -0
- package/src/lib/css-vars.type.d.ts +151 -0
- package/src/lib/css-vars.type.d.ts.map +1 -0
- package/src/lib/css-vars.type.js +1 -0
- package/src/lib/css-vars.type.js.map +1 -0
- package/src/lib/defer.d.ts +31 -0
- package/src/lib/defer.d.ts.map +1 -0
- package/src/lib/defer.js +19 -0
- package/src/lib/defer.js.map +1 -0
- package/src/lib/directive.d.ts +9 -0
- package/src/lib/directive.d.ts.map +1 -0
- package/src/lib/directive.js +31 -0
- package/src/lib/directive.js.map +1 -0
- package/src/lib/each-scheduling.d.ts +59 -0
- package/src/lib/each-scheduling.d.ts.map +1 -0
- package/src/lib/each-scheduling.js +120 -0
- package/src/lib/each-scheduling.js.map +1 -0
- package/src/lib/each.d.ts +29 -0
- package/src/lib/each.d.ts.map +1 -0
- package/src/lib/each.js +23 -0
- package/src/lib/each.js.map +1 -0
- package/src/lib/factory-runtime.d.ts +5 -0
- package/src/lib/factory-runtime.d.ts.map +1 -0
- package/src/lib/factory-runtime.js +26 -0
- package/src/lib/factory-runtime.js.map +1 -0
- package/src/lib/field-exception-block.d.ts +96 -0
- package/src/lib/field-exception-block.d.ts.map +1 -0
- package/src/lib/field-exception-block.js +44 -0
- package/src/lib/field-exception-block.js.map +1 -0
- package/src/lib/host-runtime.d.ts +60 -0
- package/src/lib/host-runtime.d.ts.map +1 -0
- package/src/lib/host-runtime.js +16 -0
- package/src/lib/host-runtime.js.map +1 -0
- package/src/lib/hydrate.d.ts +15 -0
- package/src/lib/hydrate.d.ts.map +1 -0
- package/src/lib/hydrate.js +79 -0
- package/src/lib/hydrate.js.map +1 -0
- package/src/lib/hyperscript.d.ts +148 -0
- package/src/lib/hyperscript.d.ts.map +1 -0
- package/src/lib/hyperscript.js +96 -0
- package/src/lib/hyperscript.js.map +1 -0
- package/src/lib/if-block.d.ts +8 -0
- package/src/lib/if-block.d.ts.map +1 -0
- package/src/lib/if-block.js +16 -0
- package/src/lib/if-block.js.map +1 -0
- package/src/lib/locator.d.ts +170 -0
- package/src/lib/locator.d.ts.map +1 -0
- package/src/lib/locator.js +151 -0
- package/src/lib/locator.js.map +1 -0
- package/src/lib/match-block.d.ts +38 -0
- package/src/lib/match-block.d.ts.map +1 -0
- package/src/lib/match-block.js +29 -0
- package/src/lib/match-block.js.map +1 -0
- package/src/lib/pending-block.d.ts +125 -0
- package/src/lib/pending-block.d.ts.map +1 -0
- package/src/lib/pending-block.js +48 -0
- package/src/lib/pending-block.js.map +1 -0
- package/src/lib/project.d.ts +19 -0
- package/src/lib/project.d.ts.map +1 -0
- package/src/lib/project.js +56 -0
- package/src/lib/project.js.map +1 -0
- package/src/lib/render/hydration-metadata.d.ts +3 -0
- package/src/lib/render/hydration-metadata.d.ts.map +1 -0
- package/src/lib/render/hydration-metadata.js +8 -0
- package/src/lib/render/hydration-metadata.js.map +1 -0
- package/src/lib/render/hydration.d.ts +24 -0
- package/src/lib/render/hydration.d.ts.map +1 -0
- package/src/lib/render/hydration.js +181 -0
- package/src/lib/render/hydration.js.map +1 -0
- package/src/lib/render/interpreter.d.ts +32 -0
- package/src/lib/render/interpreter.d.ts.map +1 -0
- package/src/lib/render/interpreter.js +3588 -0
- package/src/lib/render/interpreter.js.map +1 -0
- package/src/lib/render/server-style-collector.d.ts +6 -0
- package/src/lib/render/server-style-collector.d.ts.map +1 -0
- package/src/lib/render/server-style-collector.js +23 -0
- package/src/lib/render/server-style-collector.js.map +1 -0
- package/src/lib/render/ssr-coordinator.d.ts +20 -0
- package/src/lib/render/ssr-coordinator.d.ts.map +1 -0
- package/src/lib/render/ssr-coordinator.js +99 -0
- package/src/lib/render/ssr-coordinator.js.map +1 -0
- package/src/lib/render/string-dom.d.ts +9 -0
- package/src/lib/render/string-dom.d.ts.map +1 -0
- package/src/lib/render/string-dom.js +377 -0
- package/src/lib/render/string-dom.js.map +1 -0
- package/src/lib/render/style-registry.d.ts +14 -0
- package/src/lib/render/style-registry.d.ts.map +1 -0
- package/src/lib/render/style-registry.js +79 -0
- package/src/lib/render/style-registry.js.map +1 -0
- package/src/lib/render/style-scope.d.ts +30 -0
- package/src/lib/render/style-scope.d.ts.map +1 -0
- package/src/lib/render/style-scope.js +261 -0
- package/src/lib/render/style-scope.js.map +1 -0
- package/src/lib/render/vnode.d.ts +330 -0
- package/src/lib/render/vnode.d.ts.map +1 -0
- package/src/lib/render/vnode.js +293 -0
- package/src/lib/render/vnode.js.map +1 -0
- package/src/lib/server-render.d.ts +34 -0
- package/src/lib/server-render.d.ts.map +1 -0
- package/src/lib/server-render.js +84 -0
- package/src/lib/server-render.js.map +1 -0
- package/src/lib/start.d.ts +13 -0
- package/src/lib/start.d.ts.map +1 -0
- package/src/lib/start.js +20 -0
- package/src/lib/start.js.map +1 -0
- package/src/lib/template-contract.d.ts +347 -0
- package/src/lib/template-contract.d.ts.map +1 -0
- package/src/lib/template-contract.js +1 -0
- package/src/lib/template-contract.js.map +1 -0
- package/src/lib/template.d.ts +11 -0
- package/src/lib/template.d.ts.map +1 -0
- package/src/lib/template.js +21 -0
- package/src/lib/template.js.map +1 -0
- package/src/lib/testing.d.ts +157 -0
- package/src/lib/testing.d.ts.map +1 -0
- package/src/lib/testing.js +416 -0
- package/src/lib/testing.js.map +1 -0
- package/src/lib/types.d.ts +442 -0
- package/src/lib/types.d.ts.map +1 -0
- package/src/lib/types.js +22 -0
- package/src/lib/types.js.map +1 -0
- package/testing/public-api.d.ts +3 -0
- package/testing/public-api.d.ts.map +1 -0
- package/testing/public-api.js +3 -0
- package/testing/public-api.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../libs/component/src/lib/types.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAiE9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAC/C,mCAAmC,CACpC,CAAC;AACF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AA+ZvD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AA6BzD,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,eAAe,IAAI,KAAK,CAAC;AACjE,CAAC;AAqCD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAiGzD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CACnD,uCAAuC,CACxC,CAAC;AACF,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CACnD,uCAAuC,CACxC,CAAC;AAquBF,MAAM,UAAU,gBAAgB,CAC9B,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,eAAe,IAAI,KAAK,CAAC;AACjE,CAAC","sourcesContent":["import type {\n AnyCraftException,\n ComponentDepsCarrier,\n CraftComponentDependencies,\n CraftServiceProvider,\n ExtractCraftGenExceptions,\n ResolveGeneratorResult,\n Yieldable,\n YieldableMethod,\n NamedYieldableValue,\n CatchTagExhaustiveCodesCheck,\n CraftRegistrationTarget,\n CraftNodeDirectiveMount,\n CRAFT_FIELD_VALIDATION_CASES,\n CraftFieldValidationCasesCarrier,\n ReactiveReadRequest,\n DEEP_YIELDABLE,\n YIELDABLE_DEPENDENCY,\n YieldableReactiveValue,\n} from '@craft-ts/core';\nimport { CRAFT_SERVICE_PROVIDER_BRAND } from '@craft-ts/core';\nimport type {\n ɵRAW_REACTIVE_VALUE as RAW_REACTIVE_VALUE,\n REACTIVE_VALUE_TYPE,\n YIELDABLE_VALUE,\n} from '@craft-ts/core';\nimport type { HostProps } from './hyperscript';\nimport type { StaticLocatorCriteria } from './locator';\nimport type {\n CraftNodeChildren,\n CraftNodeChildrenDependencies,\n CraftNodeChildrenCssVars,\n CraftNodeChildrenPendingSources,\n CraftNodeChildrenHeadingNeed,\n CraftNodeChildrenSettledExceptions,\n CraftNodeChildrenExceptions,\n CraftNodeChildrenFieldExceptions,\n CraftNodeChildrenRawFieldExceptions,\n CraftNodeChildrenHandledExceptionCodes,\n CraftNodeDepsCarrier,\n ComponentNode,\n ContentDependenciesFromProps,\n ElementNodeBase,\n} from './render/vnode';\nimport type {\n CssVarContract,\n CssVarsAfterCall,\n CssVarsCallProps,\n CssVarsContractOfMeta,\n CssVarsMetaDeclaration,\n MergeCssVarContracts,\n} from './css-vars.type';\nimport type {\n FieldExceptionBlockDirective,\n FieldExceptionBlockExhaustiveCheck,\n FieldExceptionBlockPartialCheck,\n FieldExceptionBlockOptions,\n FieldExceptionHandlerFieldExceptions,\n FieldExceptionHandlerChildren,\n FieldExceptionHandlers,\n ResidualFieldValidationCases,\n ResidualFieldValidationCasesByIdentity,\n FieldValidationHandledIdentitiesOf,\n UnhandledFieldValidationCases,\n} from './field-exception-block';\n\nexport type CraftProvider = unknown;\ntype HostReader<T> = () => T;\ntype HostSignal<T> = HostReader<T> &\n Omit<\n YieldableReactiveValue<T, string>,\n | typeof RAW_REACTIVE_VALUE\n | typeof REACTIVE_VALUE_TYPE\n | typeof YIELDABLE_VALUE\n >;\n\ndeclare const INPUT_BRAND: unique symbol;\ndeclare const OUTPUT_BRAND: unique symbol;\ndeclare const TEMPLATE_METHOD_USE: unique symbol;\ndeclare const COMPONENT_TEMPLATE_NAME: unique symbol;\ndeclare const COMPONENT_INITIALIZATION_EXCEPTIONS: unique symbol;\ndeclare const COMPONENT_FIELD_EXCEPTIONS: unique symbol;\ndeclare const COMPONENT_LOGIC_OUTPUT: unique symbol;\ndeclare const COMPONENT_OPERATOR_PROVIDERS: unique symbol;\ndeclare const COMPONENT_OPERATOR_CODES: unique symbol;\nexport const CONTENT_STYLE_POLICY = Symbol('craft-content-style-policy');\nexport const CONTENT_OUTPUT = Symbol('craft-content-output');\nexport const CONTENT_REQUIREMENT = Symbol('craft-content-requirement');\nexport const CONTENT_RENDERABLE = Symbol('craft-content-renderable');\nexport const CONTENT_DECLARATION_CONTEXT = Symbol(\n 'craft-content-declaration-context',\n);\nexport const PROJECTION_CONTRACT = Symbol('craft-projection-contract');\nexport const CRAFT_TEMPLATE = Symbol('craft-template');\n\n/** Type-only carrier for exceptions raised while evaluating a component input. */\nexport declare const CRAFT_INPUT_EXCEPTIONS: unique symbol;\n\nexport type CraftInputExceptionsCarrier<Exceptions extends string = string> = {\n readonly [CRAFT_INPUT_EXCEPTIONS]?: Exceptions;\n};\n\n/**\n * A component input is a yieldable reader.\n *\n * Inputs deliberately use the same read contract as Craft primitives: callers\n * can pass a primitive reader directly and component logic/templates consume\n * it with `yield* input()`.\n */\nexport type Input<T> = Yieldable<[], T> & {\n readonly [INPUT_BRAND]?: T;\n};\n\nexport type Output<Handler extends (...args: any[]) => unknown> = Handler & {\n readonly [OUTPUT_BRAND]: Handler;\n};\n\n/** A callback that a Craft template may delegate with `yield*`. */\nexport type YieldableTemplateCallback<\n Args extends unknown[] = unknown[],\n Result = unknown,\n Yielded = unknown,\n ContextMethod extends string = never,\n> = (\n ...args: Args\n) => Generator<Yielded | TemplateMethodUse<ContextMethod>, Result, unknown>;\n\nexport type TemplateMethodUse<ContextMethod extends string> = {\n readonly [TEMPLATE_METHOD_USE]: ContextMethod;\n};\n\n/**\n * Projects branded Craft methods and outputs to generator callbacks only while\n * a template is type-checked. Inputs already use the generator reader\n * contract, while ordinary render-time functions stay unchanged.\n */\ntype ContextPathKey<\n Prefix extends string,\n Key extends PropertyKey,\n> = Key extends string | number\n ? Prefix extends ''\n ? `${Key}`\n : `${Prefix}.${Key}`\n : Prefix;\n\ntype ProjectTemplateObject<\n Value extends object,\n ContextMethod extends string,\n> = {\n [Key in keyof Value as Key extends typeof YIELDABLE_VALUE\n ? never\n : Key extends typeof RAW_REACTIVE_VALUE\n ? never\n : Key extends typeof REACTIVE_VALUE_TYPE\n ? never\n : Key extends typeof YIELDABLE_DEPENDENCY\n ? never\n : Key extends typeof DEEP_YIELDABLE\n ? never\n : Key extends '__craftDeepYieldable'\n ? never\n : Key]: Key extends typeof CRAFT_FIELD_VALIDATION_CASES\n ? Value[Key]\n : ProjectTemplateValue<Value[Key], ContextPathKey<ContextMethod, Key>>;\n};\n\ntype ProjectTemplateSignalProperties<\n Value extends object,\n ContextMethod extends string,\n> = {\n [Key in keyof Value as Key extends typeof YIELDABLE_VALUE\n ? never\n : Key extends typeof REACTIVE_VALUE_TYPE\n ? never\n : Key extends keyof HostSignal<any>\n ? never\n : Key]: ProjectTemplateValue<\n Value[Key],\n ContextPathKey<ContextMethod, Key>\n >;\n};\n\n// Brand-only check: `Value extends RenderableContent` expands CraftNodeChildren\n// and cycles back here through component nodes (TS2456).\ntype ProjectTemplateValue<Value, ContextMethod extends string> = Value extends {\n readonly [CONTENT_RENDERABLE]: true;\n}\n ? Value\n : Value extends ProjectionUnit<any>\n ? Value\n : Value extends { readonly __craftDeepYieldable: true }\n ? ProjectTemplateDeepYieldableValue<Value, ContextMethod>\n : Value extends {\n readonly [REACTIVE_VALUE_TYPE]: infer ReactiveState;\n }\n ? YieldableTemplateCallback<\n [],\n ReactiveState,\n ReactiveReadRequest<ReactiveState>,\n ContextMethod\n > & {\n readonly [YIELDABLE_VALUE]: ContextMethod;\n } & ProjectTemplateObject<Value & object, ContextMethod>\n : Value extends YieldableMethod<infer Args, infer Result, infer Yielded>\n ? Value extends NamedYieldableValue<\n infer _Name extends string,\n infer _Value\n >\n ? NamedYieldableValue<\n ContextMethod,\n YieldableTemplateCallback<Args, Result, Yielded, ContextMethod>\n >\n : YieldableTemplateCallback<Args, Result, Yielded, ContextMethod>\n : Value extends NamedYieldableValue<\n infer _Name extends string,\n infer _Value\n >\n ? Value extends HostSignal<infer State>\n ? NamedYieldableValue<\n ContextMethod,\n () => State & TemplateMethodUse<ContextMethod>\n > &\n ProjectTemplateSignalProperties<Value & object, ContextMethod>\n : Value extends object\n ? ProjectTemplateObject<Value & object, ContextMethod>\n : Value\n : Value extends {\n readonly [OUTPUT_BRAND]: infer Handler extends (\n ...args: any[]\n ) => unknown;\n }\n ? YieldableTemplateCallback<\n Parameters<Handler>,\n ReturnType<Handler>,\n unknown,\n ContextMethod\n >\n : Value extends HostSignal<infer State>\n ? NamedYieldableValue<\n ContextMethod,\n () => State & TemplateMethodUse<ContextMethod>\n > &\n ProjectTemplateObject<Value, ContextMethod>\n : Value extends readonly (infer Item)[]\n ? readonly ProjectTemplateValue<Item, ContextMethod>[]\n : Value extends (\n ...args: infer Args\n ) => Generator<infer Yielded, infer Result, any>\n ? (\n ...args: Args\n ) => Generator<\n Yielded | TemplateMethodUse<ContextMethod>,\n Result,\n unknown\n >\n : Value extends (...args: infer Args) => infer Result\n ? ((\n ...args: Args\n ) => ProjectTemplateValue<Result, ContextMethod>) &\n ProjectTemplateObject<Value & object, ContextMethod>\n : Value extends object\n ? ProjectTemplateObject<Value, ContextMethod>\n : Value;\n\ntype ProjectTemplateDeepYieldableValue<\n Value,\n ContextMethod extends string,\n> = Value extends (\n ...args: infer Args\n) => Generator<infer Yielded, infer Result, any>\n ? ((\n ...args: Args\n ) => Generator<\n Yielded | TemplateMethodUse<ContextMethod>,\n Result,\n unknown\n >) &\n ProjectTemplateObject<Value & object, ContextMethod>\n : ProjectTemplateObject<Value & object, ContextMethod>;\n\ntype DirectTemplateContextMethod<Context> =\n Context extends NamedYieldableValue<infer Name extends string, any>\n ? Name\n : '';\n\nexport type YieldableTemplateContext<Context> = Context extends {\n readonly [REACTIVE_VALUE_TYPE]: unknown;\n}\n ? ProjectTemplateValue<Context, DirectTemplateContextMethod<Context>>\n : {\n [Key in keyof Context]: ProjectTemplateValue<\n Context[Key],\n ContextPathKey<'', Key>\n >;\n };\n\n/** Public call-site shape of an {@link Input}. */\nexport type InputValue<T> = Yieldable<[], T>;\n\nexport type ContentStylePolicy = 'isolated' | 'allow-container-styles';\n\n/** A lazily evaluated, declaration-context-preserving piece of Craft content. */\nexport type RenderableContent<\n Output extends CraftNodeChildren = CraftNodeChildren,\n> = (() => Output) &\n CraftNodeDepsCarrier<CraftNodeChildrenDependencies<Output>> & {\n readonly [CONTENT_RENDERABLE]: true;\n };\n\nexport type ContentSlot<Output extends CraftNodeChildren = CraftNodeChildren> =\n RenderableContent<Output>;\n\nexport type ContentOptions = {\n readonly allowContainerStyles?: boolean;\n};\n\nexport type ContentRequirement = {\n readonly selector: ContentSelector;\n};\n\n/** A content slot whose DOM shape is checked at each component call site. */\nexport type RequiredContent<Requirement extends ContentRequirement> =\n RenderableContent & { readonly [CONTENT_REQUIREMENT]: Requirement };\n\n/**\n * Styles explicitement exposés par un composant à son contenu projeté.\n *\n * `styles` s'applique au template propre du composant. `contentStyles` ne\n * s'applique qu'à un contenu rendu via `renderContent(slotName, content)` lorsque\n * le parent a activé `allowContainerStyles` sur ce fragment.\n *\n * Le contenu projeté conserve l'injecteur de son lieu de déclaration. Ces\n * styles peuvent affecter les nœuds DOM ordinaires du fragment, mais ne\n * traversent pas les frontières des composants Craft ou Angular imbriqués.\n */\nexport type ContentStyles<SlotName extends string> = Partial<\n Record<SlotName, string>\n>;\n\n/** Contraintes DOM statiques qu'un fragment projeté doit satisfaire. */\nexport type ContentSelector = {\n readonly tag?: keyof HTMLElementTagNameMap;\n readonly class?: string;\n readonly [dataAttribute: `data-${string}`]: string | undefined;\n readonly [ariaAttribute: `aria-${string}`]: string | undefined;\n};\n\nexport type ContentSelectorCondition = ContentRequirement;\n\n/** A reusable, parameterized Craft fragment. */\nexport interface CraftTemplate<\n Context,\n Output extends CraftNodeChildren = CraftNodeChildren,\n> extends CraftNodeDepsCarrier<CraftNodeChildrenDependencies<Output>> {\n (context: Context): Output;\n readonly [CRAFT_TEMPLATE]: true;\n}\n\n/**\n * Contrats DOM vérifiés statiquement chez l'appelant. Le type est volontairement\n * structurel : `content(...)` ne connaît pas le slot consommateur.\n */\nexport type ContentRequirementOf<Value> = Value extends {\n readonly [CONTENT_REQUIREMENT]: infer Requirement extends ContentRequirement;\n}\n ? Requirement\n : never;\n\ntype SlotOutput<Value> = Value extends (...args: any[]) => infer Output\n ? Output\n : never;\n\n/** Dependencies declared by the renderers stored in a slot map. */\nexport type ContentDependencies<Slots extends object> =\n CraftNodeChildrenDependencies<SlotOutput<NonNullable<Slots[keyof Slots]>>>;\n\nexport type ComponentFactory = (...args: any[]) => any;\n\nexport type FactoryContext<Factory extends ComponentFactory> = Awaited<\n ResolveGeneratorResult<ReturnType<Factory>>\n>;\n\ntype DirectComponentLogicFieldExceptions<Value> = 0 extends 1 & Value\n ? never\n : Value extends CraftFieldValidationCasesCarrier<infer Cases>\n ? unknown extends Cases\n ? never\n : Cases\n : never;\n\n/** Typed field-validation cases exposed by a component logic factory. */\nexport type ComponentLogicFieldExceptions<Context> =\n | DirectComponentLogicFieldExceptions<Context>\n | (Context extends (...args: any[]) => any\n ? never\n : Context extends object\n ? {\n [Key in keyof Context]: DirectComponentLogicFieldExceptions<\n Context[Key]\n >;\n }[keyof Context]\n : never);\n\ntype ComponentTemplateFieldExceptions<Template> = Template extends (\n ...args: any[]\n) => any\n ? CraftNodeChildrenRawFieldExceptions<ReturnType<Template>>\n : never;\n\nexport type ComponentResidualFieldExceptions<Factory, Template> = 0 extends 1 &\n Factory\n ? any\n : 0 extends 1 & Template\n ? any\n : Factory extends ComponentFactory\n ? Template extends (...args: any[]) => any\n ?\n | ResidualFieldValidationCasesByIdentity<\n ComponentLogicFieldExceptions<FactoryContext<Factory>>,\n FieldValidationHandledIdentitiesOf<\n ComponentTemplateFieldExceptions<Template>\n >\n >\n | UnhandledFieldValidationCases<\n ComponentTemplateFieldExceptions<Template>\n >\n : never\n : never;\n\nexport type FactoryYielded<Factory extends ComponentFactory> =\n ReturnType<Factory> extends Generator<infer Yielded, any, any>\n ? Yielded\n : never;\n\nexport type ComponentTemplate<\n Context = unknown,\n Output extends CraftNodeChildren = CraftNodeChildren,\n> = (\n context: YieldableTemplateContext<Context>,\n hostProps?: HostProps,\n) => Output;\n\ntype NamedComponentTemplate<Template, Name extends string> = Template & {\n readonly [COMPONENT_TEMPLATE_NAME]?: Name;\n};\n\nexport type ComponentTemplateNameOf<Template> = Template extends {\n readonly [COMPONENT_TEMPLATE_NAME]?: infer Name extends string;\n}\n ? Name\n : string;\n\nexport type TemplateDependencies<Template> = Template extends (\n ...args: any[]\n) => infer Output\n ? CraftNodeChildrenDependencies<Output>\n : {};\n\nexport type TemplateCssVars<Template> = Template extends (\n ...args: any[]\n) => infer Output\n ? CraftNodeChildrenCssVars<Output>\n : import('./css-vars.type').EmptyCssVarContract;\n\n/** Async sources a template renders without covering them with a `pendingBlock`. */\nexport type TemplatePendingSources<Template> = Template extends (\n ...args: any[]\n) => infer Output\n ? CraftNodeChildrenPendingSources<Output>\n : never;\n\n/**\n * Heading outline a template still exposes. Local `heading()` is `'heading'`.\n * A child component with an uncovered `heading()` is `'heading-from-child'`.\n */\nexport type TemplateHeadingNeed<Template> = Template extends (\n ...args: any[]\n) => infer Output\n ? CraftNodeChildrenHeadingNeed<Output>\n : never;\n\n/**\n * Exception codes a template can reach through a settled read without covering\n * them with a `catchBlock`.\n */\nexport type TemplateSettledExceptions<Template> = Template extends (\n ...args: any[]\n) => infer Output\n ? CraftNodeChildrenSettledExceptions<Output>\n : never;\n\nexport type HostRequiredLogic<Context extends object> = (\n ...args: any[]\n) => Context;\n\nexport type HostTemplate<Context extends object> = ComponentTemplate<Context>;\n\nexport type LogicDecorator = (baseLogic: ComponentFactory) => ComponentFactory;\n\nexport type TemplateDecorator = (\n baseTemplate: ComponentTemplate<any>,\n) => ComponentTemplate<any>;\n\ntype DirectiveInstance<Logic extends LogicDecorator> =\n ReturnType<Logic> extends ComponentFactory\n ? FactoryContext<ReturnType<Logic>>\n : unknown;\n\nexport const CRAFT_DIRECTIVE = Symbol('craft-directive');\ndeclare const CRAFT_DIRECTIVE_DEPS: unique symbol;\n\nexport interface CraftDirective<\n Logic extends LogicDecorator = LogicDecorator,\n Template extends (\n baseTemplate: ComponentTemplate<any>,\n ) => any = TemplateDecorator,\n TemplateDependencies extends object = {},\n> extends CraftRegistrationTarget<\n string,\n 'directive',\n DirectiveInstance<Logic>\n > {\n readonly [CRAFT_DIRECTIVE]: {\n readonly name: string;\n readonly meta: DirectiveMeta;\n readonly logic: Logic;\n readonly template: Template;\n readonly componentOperator?: ComponentOperatorDefinition;\n };\n readonly [CRAFT_DIRECTIVE_DEPS]?: TemplateDependencies;\n}\n\nexport type CraftDirectiveTemplateDependencies<Directive> =\n Directive extends CraftDirective<any, any, infer Dependencies extends object>\n ? Dependencies\n : {};\n\nexport function isCraftDirective(value: unknown): value is CraftDirective {\n return typeof value === 'function' && CRAFT_DIRECTIVE in value;\n}\n\ntype Simplify<T> = { [K in keyof T]: T[K] } & {};\n\ntype IsInputContextValue<Value> = Value extends object\n ? typeof INPUT_BRAND extends keyof Value\n ? true\n : false\n : false;\n\ntype InputValueOfContextValue<Value> =\n IsInputContextValue<Value> extends true\n ? Value extends Yieldable<[], infer Result>\n ? Result\n : never\n : never;\n\nexport type PropsFromContext<Context> = Simplify<{\n [Key in keyof Context as IsInputContextValue<Context[Key]> extends true\n ? Key\n : Context[Key] extends RenderableContent\n ? Key\n : ContentRequirementOf<Context[Key]> extends never\n ? Context[Key] extends Output<(...args: any[]) => unknown>\n ? Key\n : never\n : Key]: IsInputContextValue<Context[Key]> extends true\n ? InputValue<InputValueOfContextValue<Context[Key]>>\n : Context[Key] extends RenderableContent\n ? Context[Key]\n : ContentRequirementOf<Context[Key]> extends never\n ? Context[Key] extends Output<infer Handler>\n ? Handler\n : never\n : Context[Key];\n}>;\n\nexport const CRAFT_COMPONENT = Symbol('craft-component');\n\ntype ComponentProvider = (CraftProvider & any) | (CraftProvider & any)[];\n\nexport interface ComponentMeta<\n Providers extends readonly ComponentProvider[] = readonly ComponentProvider[],\n SlotName extends string = string,\n> {\n readonly providers?: Providers;\n readonly host?: Readonly<Record<string, unknown>>;\n readonly styles?: string | readonly string[];\n /** CSS text imported from an external stylesheet with the build text loader. */\n readonly stylesUrl?: string | readonly string[];\n /** Explicit contract for opaque external styles. */\n readonly cssVars?: CssVarsMetaDeclaration;\n /** Styles exposed explicitly to opted-in projected fragments, by slot. */\n readonly contentStyles?: ContentStyles<SlotName>;\n}\n\nexport interface DirectiveMeta {\n readonly styles?: string | readonly string[];\n /** CSS text imported from an external stylesheet with the build text loader. */\n readonly stylesUrl?: string | readonly string[];\n /** Optional behavior mounted against the concrete DOM node being decorated. */\n readonly node?: {\n readonly inputs?: readonly string[];\n readonly mount: CraftNodeDirectiveMount<any>;\n };\n}\n\nexport interface StyleOwner {\n readonly name: string;\n readonly styles?: string | readonly string[];\n readonly definition?: object;\n readonly registrationTarget?: unknown;\n}\n\nexport interface ComponentDefinition<Context = unknown> {\n readonly name: string;\n readonly meta: ComponentMeta;\n readonly factory: ComponentFactory;\n readonly template: ComponentTemplate<Context>;\n readonly styleOwners: readonly StyleOwner[];\n readonly scopeDefinition: object;\n readonly composition?: ComponentCompositionDefinition;\n}\n\nexport type ComponentExceptionHandler = (\n exception: AnyCraftException,\n) => CraftNodeChildren;\n\nexport type ComponentExceptionHandlerOptions = {\n /** Keep the component template visible while rendering the fallback. */\n readonly showSource?: boolean;\n /** Place the fallback before or after the source block. */\n readonly position?: 'before' | 'after';\n};\n\nexport type ComponentExceptionHandlerDefinition =\n ComponentExceptionHandlerOptions & {\n readonly render: ComponentExceptionHandler;\n };\n\nexport type ComponentExceptionHandlerEntry =\n | ComponentExceptionHandler\n | ComponentExceptionHandlerDefinition;\n\nexport type ComponentExceptionHandlerChildren<Handler> = Handler extends (\n ...args: any[]\n) => infer Children\n ? Children\n : Handler extends { readonly render: (...args: any[]) => infer Children }\n ? Children\n : never;\n\nexport type ComponentExceptionGenerator = (\n exception: AnyCraftException,\n) => Generator<unknown, void, unknown>;\n\nexport type ComponentCompositionDefinition = {\n readonly providers?: readonly CraftServiceProvider[];\n readonly catchHandlers?: Readonly<\n Record<string, ComponentExceptionHandlerEntry>\n >;\n readonly catchTagHandlers?: Readonly<\n Record<string, ComponentExceptionGenerator>\n >;\n readonly catchBlockPosition?: 'before' | 'after';\n readonly fieldExceptionHandlers?: FieldExceptionHandlers;\n readonly fieldExceptionOptions?: Required<\n Pick<FieldExceptionBlockOptions, 'mode' | 'position'>\n > &\n Pick<FieldExceptionBlockOptions, 'visibility'>;\n};\n\nexport type ComponentOperatorDefinition = ComponentCompositionDefinition;\n\n/** Internal marker carried by operators that alter component composition. */\nexport const COMPONENT_OPERATOR = Symbol('craft-component-operator');\nexport const COMPONENT_CATCH_BLOCK = Symbol('craft-component-catch-block');\nexport const COMPONENT_FIELD_EXCEPTION_BLOCK = Symbol(\n 'craft-component-field-exception-block',\n);\nexport const FIELD_EXCEPTION_BLOCK_DIRECTIVE = Symbol(\n 'craft-field-exception-block-directive',\n);\n\nexport type ComponentOperator<\n Providers extends\n readonly CraftServiceProvider[] = readonly CraftServiceProvider[],\n Codes extends string = never,\n> = CraftDirective & {\n readonly [COMPONENT_OPERATOR_PROVIDERS]: Providers;\n readonly [COMPONENT_OPERATOR_CODES]: Codes;\n readonly [COMPONENT_OPERATOR]: ComponentCompositionDefinition &\n (Codes extends never\n ? { readonly kind: 'providers'; readonly providers: Providers }\n :\n | {\n readonly kind: 'catchTag';\n readonly catchTagHandlers: Record<\n Codes,\n ComponentExceptionGenerator\n >;\n }\n | {\n readonly kind: 'catchBlock';\n readonly catchHandlers: Record<\n Codes,\n ComponentExceptionHandlerEntry\n >;\n readonly catchBlockPosition?: 'before' | 'after';\n });\n};\n\ntype PublicComponentProps<Props extends object> = {\n [Key in keyof Props]: NonNullable<Props[Key]> extends RenderableContent\n ? () => CraftNodeChildren\n : Props[Key];\n};\n\ntype ComponentCallProps<\n Props extends object,\n Contract extends CssVarContract,\n> = PublicComponentProps<Props> & HostProps & CssVarsCallProps<Contract>;\n\nexport type ComponentCssVars<Meta, Template> = MergeCssVarContracts<\n CssVarsContractOfMeta<Meta>,\n TemplateCssVars<Template>\n>;\n\ntype CraftInputExceptionsOf<Value> =\n Value extends CraftInputExceptionsCarrier<infer Exceptions extends string>\n ? Exceptions\n : never;\n\nexport type ComponentInputExceptionsOf<Props extends object> =\n CraftInputExceptionsOf<Props[keyof Props]>;\n\ntype ProvidersFromMeta<Meta extends ComponentMeta> = Meta extends {\n readonly providers: infer Providers;\n}\n ? Providers\n : readonly [];\n\nexport type ProviderExceptions<Providers> =\n Providers extends readonly (infer Provider)[]\n ? ProviderExceptions<Provider>\n : Providers extends {\n readonly [CRAFT_SERVICE_PROVIDER_BRAND]?: infer Metadata;\n }\n ? Metadata extends {\n readonly yielded: infer Yielded;\n readonly output: infer Output;\n }\n ?\n | ExtractCraftGenExceptions<Yielded>\n | Extract<Output, { readonly _tag: string }>\n : never\n : never;\n\ntype ComponentFactoryExceptions<Factory extends ComponentFactory> =\n | ExtractCraftGenExceptions<FactoryYielded<Factory>>\n | Extract<FactoryContext<Factory>, { readonly _tag: string }>;\n\nexport type ComponentInitializationExceptions<\n Factory extends ComponentFactory,\n Providers,\n> = ComponentFactoryExceptions<Factory> | ProviderExceptions<Providers>;\n\ntype ComponentExceptionCodes<Exceptions> = Exceptions extends {\n readonly _tag: infer Code extends string;\n}\n ? Code\n : never;\n\nexport type ComponentInitializationExceptionCodes<\n Factory extends ComponentFactory,\n Providers,\n> = ComponentExceptionCodes<\n ComponentInitializationExceptions<Factory, Providers>\n>;\n\nexport type ComponentInitializationExceptionCodesForTemplate<\n Factory extends ComponentFactory,\n Providers,\n Template extends ComponentTemplate<FactoryContext<Factory>>,\n> = Exclude<\n ComponentInitializationExceptionCodes<Factory, Providers>,\n Extract<CraftNodeChildrenHandledExceptionCodes<ReturnType<Template>>, string>\n>;\n\ntype ComponentOperatorProviders<Operator> = Operator extends {\n readonly [COMPONENT_OPERATOR_PROVIDERS]: infer Providers;\n}\n ? Providers\n : readonly [];\n\ntype ComponentOperatorHandlers<Operator> = Operator extends {\n readonly [COMPONENT_OPERATOR_CODES]: infer Codes;\n}\n ? Codes\n : never;\n\ntype ComponentOperatorExceptionCodes<Operator> = ComponentExceptionCodes<\n ProviderExceptions<ComponentOperatorProviders<Operator>>\n>;\n\ntype ComponentOperatorFallbackExceptionCodes<Operator> = Operator extends {\n readonly [COMPONENT_OPERATOR]: {\n readonly catchHandlers: infer Handlers extends Record<\n string,\n ComponentExceptionHandlerEntry\n >;\n };\n}\n ? CraftNodeChildrenExceptions<\n ComponentExceptionHandlerChildren<Handlers[keyof Handlers]>\n >\n : never;\n\ntype ComponentExceptionsBeforeOperator<\n Factory extends ComponentFactory,\n Meta extends ComponentMeta,\n Operator,\n ExistingExceptions extends string,\n> =\n | ExistingExceptions\n | ComponentInitializationExceptionCodes<Factory, ProvidersFromMeta<Meta>>\n | ComponentOperatorExceptionCodes<Operator>;\n\ntype ComponentExceptionsAfterOperator<\n Factory extends ComponentFactory,\n Meta extends ComponentMeta,\n Operator,\n ExistingExceptions extends string = never,\n> = [ComponentOperatorHandlers<Operator>] extends [never]\n ? ComponentExceptionsBeforeOperator<\n Factory,\n Meta,\n Operator,\n ExistingExceptions\n >\n :\n | Exclude<\n ComponentExceptionsBeforeOperator<\n Factory,\n Meta,\n Operator,\n ExistingExceptions\n >,\n ComponentOperatorHandlers<Operator>\n >\n | ComponentOperatorFallbackExceptionCodes<Operator>;\n\ntype ComponentOperatorExhaustiveCheck<\n Factory extends ComponentFactory,\n Meta extends ComponentMeta,\n Operator,\n ExistingExceptions extends string,\n HandledByTemplate extends string = never,\n> = [ComponentOperatorHandlers<Operator>] extends [never]\n ? unknown\n : CatchTagExhaustiveCodesCheck<\n ComponentExceptionsBeforeOperator<\n Factory,\n Meta,\n Operator,\n ExistingExceptions\n >,\n Record<Extract<ComponentOperatorHandlers<Operator>, string>, unknown>\n > &\n (Operator extends { readonly [COMPONENT_CATCH_BLOCK]: true }\n ? [\n Extract<ComponentOperatorHandlers<Operator>, HandledByTemplate>,\n ] extends [never]\n ? unknown\n : {\n 'catchBlock.exhaustive has handlers for codes already handled by the template': Extract<\n ComponentOperatorHandlers<Operator>,\n HandledByTemplate\n >;\n }\n : unknown);\n\ntype ComponentTemplateHandledExceptionCodes<\n Template extends ComponentTemplate<any>,\n> = Extract<\n CraftNodeChildrenHandledExceptionCodes<ReturnType<Template>>,\n string\n>;\n\ntype NextContentSelectorDepth<Depth extends readonly unknown[]> = [\n ...Depth,\n unknown,\n];\n\ntype IsAnyContentSelector<Value> = 0 extends 1 & Value ? true : false;\n\ntype ContentSelectorCandidate<\n Tag extends keyof HTMLElementTagNameMap,\n Criteria extends object,\n> = {\n readonly tag: Tag;\n readonly criteria: Criteria;\n};\n\ntype VisitProjectedContent<\n Node,\n Depth extends readonly unknown[] = [],\n> = Depth['length'] extends 8\n ? never\n : IsAnyContentSelector<Node> extends true\n ? never\n : Node extends readonly (infer Child)[]\n ? VisitProjectedContent<Child, NextContentSelectorDepth<Depth>>\n : Node extends ElementNodeBase<\n any,\n infer Tag extends keyof HTMLElementTagNameMap,\n infer Props,\n infer Children\n >\n ?\n | ContentSelectorCandidate<Tag, StaticLocatorCriteria<Props>>\n | VisitProjectedContent<Children, NextContentSelectorDepth<Depth>>\n : Node extends {\n readonly kind: 'directive';\n readonly node: infer DirectiveNode;\n }\n ? VisitProjectedContent<\n DirectiveNode,\n NextContentSelectorDepth<Depth>\n >\n : Node extends {\n readonly kind: 'if';\n readonly whenTrue: () => infer TrueChildren;\n readonly whenFalse?: () => infer FalseChildren;\n }\n ? VisitProjectedContent<\n TrueChildren | FalseChildren,\n NextContentSelectorDepth<Depth>\n >\n : Node extends {\n readonly kind: 'each';\n readonly itemTemplate: (...args: any[]) => infer ItemChildren;\n readonly empty?: () => infer EmptyChildren;\n }\n ? VisitProjectedContent<\n ItemChildren | EmptyChildren,\n NextContentSelectorDepth<Depth>\n >\n : Node extends {\n readonly kind: 'defer';\n readonly resolve: (...args: any[]) => infer Resolved;\n }\n ? VisitProjectedContent<\n Resolved,\n NextContentSelectorDepth<Depth>\n >\n : never;\n\ntype ContentSelectorCriteria<Selector extends ContentSelector> = Omit<\n Selector,\n 'tag'\n>;\n\ntype ContentSelectorMatches<Candidate, Selector extends ContentSelector> =\n Candidate extends ContentSelectorCandidate<infer Tag, infer Available>\n ? Selector extends {\n readonly tag: infer WantedTag extends keyof HTMLElementTagNameMap;\n }\n ? Tag extends WantedTag\n ? ContentSelectorCriteria<Selector> extends Partial<Available>\n ? true\n : false\n : false\n : ContentSelectorCriteria<Selector> extends Partial<Available>\n ? true\n : false\n : false;\n\ntype MatchingProjectedContent<\n Candidates,\n Selector extends ContentSelector,\n> = Candidates extends unknown\n ? ContentSelectorMatches<Candidates, Selector> extends true\n ? Candidates\n : never\n : never;\n\ntype ContentSelectorContractCheck<Output, Selector extends ContentSelector> = [\n MatchingProjectedContent<VisitProjectedContent<Output>, Selector>,\n] extends [never]\n ? {\n readonly 'projected content does not satisfy the declared selector': Selector;\n }\n : unknown;\n\ntype ContentConditionsCheck<\n Actual extends object,\n Requirements extends object,\n> = {\n [Key in keyof Actual & keyof Requirements]: Requirements[Key] extends {\n readonly selector: infer Selector extends ContentSelector;\n }\n ? ContentSelectorContractCheck<\n SlotOutput<NonNullable<Actual[Key]>>,\n Selector\n >\n : unknown;\n};\n\ntype IsLogicInputObject<Value> = Value extends (...args: any[]) => any\n ? false\n : Value extends object\n ? true\n : false;\n\ntype LogicInputProps<Factory extends ComponentFactory> =\n Parameters<Factory> extends [infer Input]\n ? IsLogicInputObject<Input> extends true\n ? Simplify<Input & object>\n : never\n : never;\n\nexport type PropsFromFactory<Factory extends ComponentFactory> = [\n LogicInputProps<Factory>,\n] extends [never]\n ? PropsFromContext<FactoryContext<Factory>>\n : LogicInputProps<Factory>;\n\ntype ContentRequirementsFromContext<Context> = Simplify<{\n [Key in keyof Context as ContentRequirementOf<Context[Key]> extends never\n ? never\n : Key]: ContentRequirementOf<Context[Key]>;\n}>;\n\ntype ContentRequirementsOfFactory<Factory extends ComponentFactory> =\n ContentRequirementsFromContext<FactoryContext<Factory>>;\n\ntype ProjectionOutputOf<Component> = Component extends {\n readonly [COMPONENT_LOGIC_OUTPUT]: infer Output;\n}\n ? Output\n : never;\n\nexport type ProjectionContractOf<Component> =\n ProjectionOutputOf<Component> extends {\n readonly contract: infer Contract;\n }\n ? Contract\n : never;\n\ntype ProjectionKeyOf<Component> =\n ProjectionOutputOf<Component> extends {\n readonly key: infer Key extends PropertyKey;\n }\n ? Key\n : never;\n\nexport type ProjectionUnit<\n Contract = unknown,\n Key extends PropertyKey = PropertyKey,\n> = ComponentNode<any, any> & {\n readonly key: Key;\n readonly [PROJECTION_CONTRACT]?: Contract;\n};\n\nexport type ProjectionSlot<Contract> = readonly ProjectionUnit<Contract>[];\n\nexport type ProjectionOf<Component> = [\n ProjectionContractOf<Component>,\n] extends [never]\n ? never\n : ProjectionUnit<ProjectionContractOf<Component>, ProjectionKeyOf<Component>>;\n\ntype ComponentCallNode<\n CallProps extends object,\n ComponentDeps extends object,\n Component extends CraftComponent<any, ComponentDeps>,\n Factory extends ComponentFactory,\n InputProps extends object = {},\n CssVars extends\n CssVarContract = import('./css-vars.type').EmptyCssVarContract,\n> =\n ComponentInputExceptionsOf<\n Pick<CallProps, keyof InputProps & keyof CallProps>\n > extends infer InputExceptions extends string\n ? FactoryContext<Factory> extends {\n readonly contract: infer Contract;\n readonly key: infer Key extends PropertyKey;\n }\n ? ComponentNode<\n CallProps,\n ComponentDeps,\n Component,\n ContentDependenciesFromProps<CallProps>,\n InputExceptions,\n CssVars\n > &\n ProjectionUnit<Contract, Key>\n : ComponentNode<\n CallProps,\n ComponentDeps,\n Component,\n ContentDependenciesFromProps<CallProps>,\n InputExceptions,\n CssVars\n >\n : never;\n\ntype AppliedDirectiveFactory<\n Factory extends ComponentFactory,\n Directive extends CraftDirective,\n> = Directive extends { readonly [COMPONENT_FIELD_EXCEPTION_BLOCK]: true }\n ? Factory\n : Directive extends ComponentOperator<any, any>\n ? Factory\n : Directive extends CraftDirective<infer Logic, any>\n ? ReturnType<Logic> extends ComponentFactory\n ? ReturnType<Logic>\n : Factory\n : Factory;\n\ntype MissingProviderMap<Dependencies> = Dependencies extends {\n missingProvider: infer Missing extends object;\n}\n ? Missing\n : {};\n\ntype MergePipedComponentDependencies<\n Existing extends object,\n Recomputed extends object,\n> = Simplify<\n Omit<Recomputed, 'missingProvider'> & {\n missingProvider: Simplify<\n MissingProviderMap<Existing> & MissingProviderMap<Recomputed>\n >;\n }\n>;\n\ntype ComponentFieldExceptionsAfterOperator<ExistingFieldExceptions, Directive> =\n Directive extends FieldExceptionBlockDirective<\n infer Handlers extends FieldExceptionHandlers,\n boolean\n >\n ?\n | ResidualFieldValidationCases<ExistingFieldExceptions, Handlers>\n | FieldExceptionHandlerFieldExceptions<Handlers>\n : ExistingFieldExceptions;\n\ntype ComponentFieldExceptionOperatorCheck<ExistingFieldExceptions, Directive> =\n Directive extends FieldExceptionBlockDirective<\n infer Handlers extends FieldExceptionHandlers,\n infer Exhaustive extends boolean\n >\n ? Exhaustive extends true\n ? FieldExceptionBlockExhaustiveCheck<ExistingFieldExceptions, Handlers>\n : FieldExceptionBlockPartialCheck<ExistingFieldExceptions, Handlers>\n : unknown;\n\ntype ComponentFieldExceptionFallbackExceptionCodes<Directive> =\n Directive extends FieldExceptionBlockDirective<\n infer Handlers extends FieldExceptionHandlers,\n boolean\n >\n ? CraftNodeChildrenExceptions<\n FieldExceptionHandlerChildren<Handlers[keyof Handlers]>\n >\n : never;\n\ntype PipedComponent<\n Factory extends ComponentFactory,\n Meta extends ComponentMeta,\n Directive extends CraftDirective,\n RootFactory extends ComponentFactory,\n ExistingComponentDeps extends object,\n ExistingExceptions extends string,\n ExistingFieldExceptions,\n TemplateDependencies extends object,\n Template extends ComponentTemplate<\n FactoryContext<Factory>\n > = ComponentTemplate<FactoryContext<Factory>>,\n Name extends string = string,\n> =\n AppliedDirectiveFactory<Factory, Directive> extends infer NextFactory extends\n ComponentFactory\n ? CraftComponent<\n PropsFromFactory<NextFactory>,\n MergePipedComponentDependencies<\n ExistingComponentDeps,\n CraftComponentDependencies<\n FactoryYielded<RootFactory> | FactoryYielded<NextFactory>,\n FactoryContext<NextFactory>,\n ProvidersFromMeta<Meta> | ComponentOperatorProviders<Directive>,\n PropsFromFactory<NextFactory>,\n TemplateDependencies | CraftDirectiveTemplateDependencies<Directive>\n >\n >,\n NextFactory,\n Meta,\n RootFactory,\n TemplateDependencies | CraftDirectiveTemplateDependencies<Directive>,\n Template &\n ComponentTemplate<FactoryContext<NextFactory>, ReturnType<Template>>,\n Name,\n (\n | ComponentExceptionsAfterOperator<\n Factory,\n Meta,\n Directive,\n ExistingExceptions\n >\n | ComponentFieldExceptionFallbackExceptionCodes<Directive>\n ) &\n ComponentOperatorExhaustiveCheck<\n Factory,\n Meta,\n Directive,\n ExistingExceptions\n >,\n ContentRequirementsOfFactory<NextFactory>,\n ComponentFieldExceptionsAfterOperator<\n ExistingFieldExceptions,\n Directive\n >\n >\n : never;\n\nexport interface CraftComponent<\n Props extends object = Record<never, never>,\n ComponentDeps extends object = Record<never, never>,\n Factory extends ComponentFactory = ComponentFactory,\n Meta extends ComponentMeta = ComponentMeta,\n RootFactory extends ComponentFactory = Factory,\n TemplateDependencies extends object = never,\n Template extends ComponentTemplate<\n FactoryContext<Factory>\n > = ComponentTemplate<FactoryContext<Factory>>,\n Name extends string = string,\n InitializationExceptions extends string = string,\n ContentRequirements extends object = {},\n FieldExceptions = any,\n> extends ComponentDepsCarrier<ComponentDeps>,\n CraftRegistrationTarget<Name, 'component', FactoryContext<Factory>> {\n <\n CallProps extends ComponentCallProps<\n Props,\n ComponentCssVars<Meta, Template>\n > = ComponentCallProps<Props, ComponentCssVars<Meta, Template>>,\n >(\n ...args: keyof Props extends never\n ? [\n props?: CallProps &\n ContentConditionsCheck<NoInfer<CallProps>, ContentRequirements>,\n ]\n : [\n props: CallProps &\n ContentConditionsCheck<NoInfer<CallProps>, ContentRequirements>,\n ]\n ): ComponentCallNode<\n CallProps,\n ComponentDeps,\n CraftComponent<\n Props,\n ComponentDeps,\n Factory,\n Meta,\n RootFactory,\n TemplateDependencies,\n Template,\n Name,\n InitializationExceptions,\n ContentRequirements,\n FieldExceptions\n >,\n Factory,\n Props,\n CssVarsAfterCall<ComponentCssVars<Meta, Template>, CallProps>\n >;\n readonly [CRAFT_COMPONENT]: ComponentDefinition<unknown> & {\n readonly name: Name;\n readonly factory: Factory;\n };\n readonly [COMPONENT_INITIALIZATION_EXCEPTIONS]: InitializationExceptions;\n readonly [COMPONENT_FIELD_EXCEPTIONS]: FieldExceptions;\n readonly [COMPONENT_LOGIC_OUTPUT]: FactoryContext<Factory>;\n readonly pipe: {\n <Directive extends CraftDirective>(\n directiveFactory: (\n component: CraftComponent<\n Props,\n ComponentDeps,\n Factory,\n Meta,\n RootFactory,\n TemplateDependencies,\n Template,\n Name,\n InitializationExceptions,\n ContentRequirements,\n FieldExceptions\n >,\n ) => Directive &\n ComponentOperatorExhaustiveCheck<\n Factory,\n Meta,\n Directive,\n InitializationExceptions,\n ComponentTemplateHandledExceptionCodes<Template>\n > &\n ComponentFieldExceptionOperatorCheck<FieldExceptions, Directive>,\n ): PipedComponent<\n Factory,\n Meta,\n Directive,\n RootFactory,\n ComponentDeps,\n InitializationExceptions,\n FieldExceptions,\n TemplateDependencies,\n Template,\n Name\n >;\n <Directive extends CraftDirective>(\n directive: Directive &\n ComponentOperatorExhaustiveCheck<\n Factory,\n Meta,\n Directive,\n InitializationExceptions,\n ComponentTemplateHandledExceptionCodes<Template>\n > &\n ComponentFieldExceptionOperatorCheck<FieldExceptions, Directive>,\n ): PipedComponent<\n Factory,\n Meta,\n Directive,\n RootFactory,\n ComponentDeps,\n InitializationExceptions,\n FieldExceptions,\n TemplateDependencies,\n Template,\n Name\n >;\n (\n ...directives: readonly [CraftDirective, CraftDirective]\n ): CraftComponent<any, any>;\n };\n}\n\nexport type ComponentCssVarsOf<Component> =\n Component extends CraftComponent<\n any,\n any,\n any,\n infer Meta,\n any,\n any,\n infer Template,\n any,\n any,\n any,\n any\n >\n ? ComponentCssVars<Meta, Template>\n : import('./css-vars.type').EmptyCssVarContract;\n\nexport type ComponentNameOf<Component> =\n Component extends CraftComponent<\n any,\n any,\n any,\n any,\n any,\n any,\n any,\n infer Name,\n any,\n any,\n any\n >\n ? Name\n : string;\n\nexport type ComponentInitializationExceptionsOf<Component> = Component extends {\n readonly [COMPONENT_INITIALIZATION_EXCEPTIONS]: infer Exceptions extends\n string;\n}\n ? Exceptions\n : never;\n\nexport type ComponentFieldExceptionsOf<Component> = Component extends {\n readonly [COMPONENT_FIELD_EXCEPTIONS]: infer FieldExceptions;\n}\n ? Exclude<FieldExceptions, undefined>\n : never;\n\n/** The value returned by a component's logic factory. */\nexport type ComponentLogicOutputOf<Component> = Component extends {\n readonly [COMPONENT_LOGIC_OUTPUT]: infer Output;\n}\n ? Output\n : never;\n\nexport type ContentRequirementsOfContext<Context> =\n ContentRequirementsFromContext<Context>;\n\nexport type ComponentTemplateOf<Component> =\n Component extends CraftComponent<\n any,\n any,\n any,\n any,\n any,\n any,\n infer Template extends ComponentTemplate<any>,\n infer Name extends string\n >\n ? NamedComponentTemplate<Template, Name>\n : never;\n\nexport type PropsOf<Component> =\n Component extends CraftComponent<infer Props, any> ? Props : never;\n\nexport function isCraftComponent(\n value: unknown,\n): value is CraftComponent<object> {\n return typeof value === 'function' && CRAFT_COMPONENT in value;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.d.ts","sourceRoot":"","sources":["../../../../libs/component/testing/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,kCAAkC,EAClC,mBAAmB,GACpB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../../../libs/component/testing/public-api.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,OAAO,EACL,kCAAkC,EAClC,mBAAmB,GACpB,MAAM,gBAAgB,CAAC","sourcesContent":["export * from '@craft-ts/component';\nexport {\n setupCraftServiceTestingByRegister,\n setupTestingService,\n} from '@craft-ts/core';\n"]}
|