@wirekyt/angular 0.0.12 → 0.0.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.
@@ -1,8 +1,9 @@
1
1
  import * as accordion from '@wirekyt/dom/machines/accordion';
2
2
  export { anatomy as accordionAnatomy } from '@wirekyt/dom/machines/accordion';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, inject, input, booleanAttribute, model, output, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, computed, signal, effect, TemplateRef, ViewContainerRef } from '@angular/core';
4
+ import { InjectionToken, inject, input, booleanAttribute, model, output, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, computed, TemplateRef, ViewContainerRef, effect } from '@angular/core';
5
5
  import { injectLocale, injectEnvironment, createId, useMachine, bindProps } from '@wirekyt/angular';
6
+ import { useCollapsible, COLLAPSIBLE_CONTEXT, injectCollapsibleContext } from '@wirekyt/angular/collapsible';
6
7
 
7
8
  const ACCORDION_CONTEXT = new InjectionToken("WIREKIT.ACCORDION_CONTEXT");
8
9
  function injectAccordionContext() {
@@ -137,40 +138,59 @@ class AccordionItem {
137
138
  ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
138
139
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
139
140
  root = injectAccordionContext();
140
- wasVisible = signal(false, /* @ts-ignore */
141
- ...(ngDevMode ? [{ debugName: "wasVisible" }] : /* istanbul ignore next */ []));
142
- itemState = computed(() => this.root.api().getItemState({ value: this.value(), disabled: this.disabled() }), /* @ts-ignore */
141
+ fallbackValue = createId();
142
+ itemState = computed(() => this.root.api().getItemState({ value: this.readValue(), disabled: this.disabled() }), /* @ts-ignore */
143
143
  ...(ngDevMode ? [{ debugName: "itemState" }] : /* istanbul ignore next */ []));
144
+ collapsible = useCollapsible({
145
+ context: () => ({
146
+ open: this.itemState().expanded,
147
+ ids: {
148
+ content: this.root
149
+ .api()
150
+ .getItemContentProps({ value: this.readValue(), disabled: this.disabled() })["id"],
151
+ },
152
+ lazyMount: this.root.lazyMount(),
153
+ unmountOnExit: this.root.unmountOnExit(),
154
+ }),
155
+ });
144
156
  itemContext = {
145
- value: computed(() => this.value()),
157
+ value: computed(() => this.readValue()),
146
158
  disabled: computed(() => this.disabled()),
147
159
  state: this.itemState,
148
- isUnmounted: computed(() => {
149
- const visible = this.itemState().expanded;
150
- return Boolean((!visible && !this.wasVisible() && this.root.lazyMount()) ||
151
- (!visible && this.wasVisible() && this.root.unmountOnExit()));
152
- }),
160
+ isUnmounted: this.collapsible.isUnmounted,
153
161
  };
154
162
  constructor() {
155
- effect(() => {
156
- if (this.itemState().expanded)
157
- this.wasVisible.set(true);
158
- });
159
163
  bindProps({
160
164
  elementRef: inject(ElementRef),
161
165
  renderer: inject(Renderer2),
162
166
  destroyRef: inject(DestroyRef),
163
- props: () => this.root.api().getItemProps({
164
- value: this.value(),
165
- disabled: this.disabled(),
167
+ props: () => ({
168
+ ...this.collapsible.api().getRootProps(),
169
+ ...this.root.api().getItemProps({
170
+ value: this.readValue(),
171
+ disabled: this.disabled(),
172
+ }),
166
173
  }),
167
174
  });
168
175
  }
169
176
  getItemContext() {
170
177
  return this.itemContext;
171
178
  }
179
+ readValue() {
180
+ try {
181
+ return this.value();
182
+ }
183
+ catch {
184
+ return this.fallbackValue;
185
+ }
186
+ }
172
187
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
173
188
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: AccordionItem, isStandalone: true, selector: "[accordionItem]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
189
+ {
190
+ provide: COLLAPSIBLE_CONTEXT,
191
+ useFactory: (item) => item.collapsible,
192
+ deps: [forwardRef(() => AccordionItem)],
193
+ },
174
194
  {
175
195
  provide: ACCORDION_ITEM_CONTEXT,
176
196
  useFactory: (item) => item.getItemContext(),
@@ -185,6 +205,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
185
205
  standalone: true,
186
206
  exportAs: "accordionItem",
187
207
  providers: [
208
+ {
209
+ provide: COLLAPSIBLE_CONTEXT,
210
+ useFactory: (item) => item.collapsible,
211
+ deps: [forwardRef(() => AccordionItem)],
212
+ },
188
213
  {
189
214
  provide: ACCORDION_ITEM_CONTEXT,
190
215
  useFactory: (item) => item.getItemContext(),
@@ -223,13 +248,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
223
248
  class AccordionItemContent {
224
249
  context = injectAccordionContext();
225
250
  item = injectAccordionItemContext();
251
+ collapsible = injectCollapsibleContext();
226
252
  template = inject((TemplateRef));
227
253
  viewContainer = inject(ViewContainerRef);
228
254
  elementRef = { nativeElement: null };
229
255
  view;
230
256
  constructor() {
231
257
  effect(() => {
232
- if (this.item.isUnmounted()) {
258
+ if (this.collapsible.isUnmounted()) {
233
259
  this.elementRef.nativeElement = null;
234
260
  this.viewContainer.clear();
235
261
  this.view = undefined;
@@ -245,10 +271,20 @@ class AccordionItemContent {
245
271
  elementRef: this.elementRef,
246
272
  renderer: inject(Renderer2),
247
273
  destroyRef: inject(DestroyRef),
248
- props: () => this.context.api().getItemContentProps({
249
- value: this.item.value(),
250
- disabled: this.item.disabled(),
251
- }),
274
+ props: () => {
275
+ this.collapsible.isUnmounted();
276
+ const collapsibleProps = this.collapsible.api().getContentProps();
277
+ const accordionProps = this.context.api().getItemContentProps({
278
+ value: this.item.value(),
279
+ disabled: this.item.disabled(),
280
+ });
281
+ return {
282
+ ...collapsibleProps,
283
+ ...accordionProps,
284
+ hidden: collapsibleProps["hidden"],
285
+ "data-state": collapsibleProps["data-state"],
286
+ };
287
+ },
252
288
  });
253
289
  }
254
290
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: AccordionItemContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -1 +1 @@
1
- {"version":3,"file":"wirekyt-angular-accordion.mjs","sources":["../../src/components/accordion/use-context.ts","../../src/components/accordion/use-item-context.ts","../../src/components/accordion/use.ts","../../src/components/accordion/root.ts","../../src/components/accordion/root-provider.ts","../../src/components/accordion/item.ts","../../src/components/accordion/item-trigger.ts","../../src/components/accordion/item-content.ts","../../src/components/accordion/item-indicator.ts","../../src/components/accordion/context.ts","../../src/components/accordion/item-context.ts","../../src/components/accordion/wirekyt-angular-accordion.ts"],"sourcesContent":["import { InjectionToken, inject, type Signal } from \"@angular/core\";\n\nimport type { UseAccordionReturn } from \"./use\";\n\nexport interface AccordionRootContext extends UseAccordionReturn {\n readonly lazyMount: Signal<boolean>;\n readonly unmountOnExit: Signal<boolean>;\n}\n\nexport const ACCORDION_CONTEXT = new InjectionToken<AccordionRootContext>(\n \"WIREKIT.ACCORDION_CONTEXT\",\n);\n\nexport function injectAccordionContext(): AccordionRootContext {\n return inject(ACCORDION_CONTEXT);\n}\n","import { InjectionToken, type Signal, inject } from \"@angular/core\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\nexport interface AccordionItemContext {\n readonly value: Signal<string>;\n readonly disabled: Signal<boolean | undefined>;\n readonly state: Signal<accordion.ItemState>;\n readonly isUnmounted: Signal<boolean>;\n}\n\nexport const ACCORDION_ITEM_CONTEXT = new InjectionToken<AccordionItemContext>(\n \"WIREKIT.ACCORDION_ITEM_CONTEXT\",\n);\n\nexport function injectAccordionItemContext(): AccordionItemContext {\n return inject(ACCORDION_ITEM_CONTEXT);\n}\n","import type { Machine } from \"@wirekyt/dom\";\n\nimport { useMachine, type UseMachineReturn } from \"@wirekyt/angular\";\nimport { createId, injectEnvironment, injectLocale } from \"@wirekyt/angular\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\ntype OptionalId<T extends { id: string }> = Omit<T, \"id\"> & { id?: string };\n\nexport interface UseAccordionProps extends OptionalId<\n Omit<accordion.Props, \"dir\" | \"getRootNode\">\n> {}\n\nexport type UseAccordionReturn = UseMachineReturn<\n accordion.Service[\"state\"],\n accordion.Api,\n accordion.Service\n>;\n\nexport interface UseAccordionOptions {\n context: () => UseAccordionProps;\n}\n\ntype AccordionContext = Record<string, unknown>;\ntype AccordionSchema = accordion.Machine extends Machine<infer TSchema> ? TSchema : never;\n\nexport function useAccordion(options: UseAccordionOptions): UseAccordionReturn {\n const locale = injectLocale();\n const environment = injectEnvironment();\n const fallbackId = createId();\n\n return useMachine<AccordionSchema, accordion.Api>({\n machine: accordion.machine,\n context: () => {\n const props = options.context();\n return {\n ...props,\n dir: locale.dir,\n getRootNode: environment.getRootNode,\n id: props.id ?? fallbackId,\n } as AccordionContext;\n },\n connect: (service, normalize) => accordion.connect(service, normalize),\n });\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n forwardRef,\n inject,\n input,\n model,\n output,\n type InputSignal,\n type InputSignalWithTransform,\n type ModelSignal,\n type OutputEmitterRef,\n type Signal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\nimport type { AccordionElementIds, AccordionFocusChangeDetails } from \"./types\";\n\nimport { useAccordion, type UseAccordionReturn } from \"./use\";\nimport { ACCORDION_CONTEXT } from \"./use-context\";\n\nfunction areStringArraysEqual(left: string[] | undefined, right: string[]): boolean {\n return left?.length === right.length && left.every((value, index) => value === right[index]);\n}\n\n@Directive({\n selector: \"[accordionRoot]\",\n standalone: true,\n exportAs: \"accordionRoot\",\n providers: [{ provide: ACCORDION_CONTEXT, useExisting: forwardRef(() => AccordionRoot) }],\n})\nexport class AccordionRoot implements UseAccordionReturn {\n readonly id: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly ids: InputSignal<AccordionElementIds | undefined> = input<\n AccordionElementIds | undefined\n >(undefined);\n readonly multiple: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly collapsible: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly value: ModelSignal<string[] | undefined> = model<string[] | undefined>(undefined);\n readonly defaultValue: InputSignal<string[] | undefined> = input<string[] | undefined>(undefined);\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly orientation: InputSignal<accordion.Props[\"orientation\"]> =\n input<accordion.Props[\"orientation\"]>(undefined);\n readonly lazyMount: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly unmountOnExit: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n readonly focusChange: OutputEmitterRef<AccordionFocusChangeDetails> =\n output<AccordionFocusChangeDetails>();\n\n private readonly machine = useAccordion({\n context: () => ({\n id: this.id(),\n ids: this.ids(),\n multiple: this.multiple(),\n collapsible: this.collapsible(),\n value: this.value(),\n defaultValue: this.defaultValue(),\n disabled: this.disabled(),\n orientation: this.orientation(),\n onValueChange: (details) => {\n if (areStringArraysEqual(this.value(), details.value)) return;\n this.value.set(details.value);\n },\n onFocusChange: (details) => {\n this.focusChange.emit(details);\n },\n }),\n });\n\n readonly state: Signal<accordion.Service[\"state\"]> = this.machine.state;\n readonly api: Signal<accordion.Api> = this.machine.api;\n readonly service: accordion.Service = this.machine.service;\n readonly send: accordion.Service[\"send\"] = this.machine.send;\n\n constructor() {\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.api().getRootProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n type InputSignal,\n type InputSignalWithTransform,\n type Signal,\n computed,\n forwardRef,\n inject,\n input,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\nimport type { UseAccordionReturn } from \"./use\";\n\nimport { ACCORDION_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[accordionRootProvider]\",\n standalone: true,\n exportAs: \"accordionRootProvider\",\n providers: [{ provide: ACCORDION_CONTEXT, useExisting: forwardRef(() => AccordionRootProvider) }],\n})\nexport class AccordionRootProvider implements UseAccordionReturn {\n readonly value: InputSignal<UseAccordionReturn> = input.required<UseAccordionReturn>();\n readonly lazyMount: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly unmountOnExit: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly state: Signal<accordion.Service[\"state\"]> = computed(() => this.value().state());\n readonly api: Signal<accordion.Api> = computed(() => this.value().api());\n readonly send: accordion.Service[\"send\"] = (event) => this.value().send(event);\n\n get service(): accordion.Service {\n return this.value().service;\n }\n\n constructor() {\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.api().getRootProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n signal,\n type InputSignal,\n type InputSignalWithTransform,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { ACCORDION_ITEM_CONTEXT, type AccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItem]\",\n standalone: true,\n exportAs: \"accordionItem\",\n providers: [\n {\n provide: ACCORDION_ITEM_CONTEXT,\n useFactory: (item: AccordionItem) => item.getItemContext(),\n deps: [forwardRef(() => AccordionItem)],\n },\n ],\n})\nexport class AccordionItem {\n readonly value: InputSignal<string> = input.required<string>();\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n private readonly root = injectAccordionContext();\n private readonly wasVisible = signal(false);\n private readonly itemState = computed(() =>\n this.root.api().getItemState({ value: this.value(), disabled: this.disabled() }),\n );\n private readonly itemContext: AccordionItemContext = {\n value: computed(() => this.value()),\n disabled: computed(() => this.disabled()),\n state: this.itemState,\n isUnmounted: computed(() => {\n const visible = this.itemState().expanded;\n return Boolean(\n (!visible && !this.wasVisible() && this.root.lazyMount()) ||\n (!visible && this.wasVisible() && this.root.unmountOnExit()),\n );\n }),\n };\n\n constructor() {\n effect(() => {\n if (this.itemState().expanded) this.wasVisible.set(true);\n });\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () =>\n this.root.api().getItemProps({\n value: this.value(),\n disabled: this.disabled(),\n }),\n });\n }\n\n getItemContext(): AccordionItemContext {\n return this.itemContext;\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItemTrigger]\",\n standalone: true,\n exportAs: \"accordionItemTrigger\",\n})\nexport class AccordionItemTrigger {\n constructor() {\n const context = injectAccordionContext();\n const item = injectAccordionItemContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () =>\n context.api().getItemTriggerProps({\n value: item.value(),\n disabled: item.disabled(),\n }),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItemContent]\",\n standalone: true,\n exportAs: \"accordionItemContent\",\n})\nexport class AccordionItemContent {\n private readonly context = injectAccordionContext();\n private readonly item = injectAccordionItemContext();\n private readonly template = inject(TemplateRef<unknown>);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly elementRef = { nativeElement: null as HTMLElement | null };\n private view: EmbeddedViewRef<unknown> | undefined;\n\n constructor() {\n effect(() => {\n if (this.item.isUnmounted()) {\n this.elementRef.nativeElement = null;\n this.viewContainer.clear();\n this.view = undefined;\n return;\n }\n\n if (!this.view) {\n this.view = this.viewContainer.createEmbeddedView(this.template);\n this.elementRef.nativeElement =\n this.view.rootNodes.find((node: Node) => node.nodeType === 1) ?? null;\n }\n });\n\n bindProps({\n elementRef: this.elementRef as ElementRef<HTMLElement>,\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () =>\n this.context.api().getItemContentProps({\n value: this.item.value(),\n disabled: this.item.disabled(),\n }),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItemIndicator]\",\n standalone: true,\n exportAs: \"accordionItemIndicator\",\n})\nexport class AccordionItemIndicator {\n constructor() {\n const context = injectAccordionContext();\n const item = injectAccordionItemContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () =>\n context.api().getItemIndicatorProps({\n value: item.value(),\n disabled: item.disabled(),\n }),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { UseAccordionReturn } from \"./use\";\n\nimport { injectAccordionContext } from \"./use-context\";\n\nexport interface AccordionContextTemplate {\n $implicit: UseAccordionReturn[\"api\"];\n api: UseAccordionReturn[\"api\"];\n}\n\n@Directive({\n selector: \"[accordionContext]\",\n standalone: true,\n exportAs: \"accordionContext\",\n})\nexport class AccordionContext {\n static ngTemplateContextGuard(\n _directive: AccordionContext,\n context: unknown,\n ): context is AccordionContextTemplate {\n void context;\n return true;\n }\n\n private readonly accordion = injectAccordionContext();\n private readonly templateRef = inject<TemplateRef<AccordionContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.accordion.api,\n api: this.accordion.api,\n });\n\n effect(() => {\n this.accordion.api();\n view.detectChanges();\n });\n\n inject(DestroyRef).onDestroy(() => view.destroy());\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { AccordionItemContext as UseAccordionItemContext } from \"./use-item-context\";\n\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\nexport interface AccordionItemContextTemplate {\n $implicit: UseAccordionItemContext;\n item: UseAccordionItemContext;\n}\n\n@Directive({\n selector: \"[accordionItemContext]\",\n standalone: true,\n exportAs: \"accordionItemContext\",\n})\nexport class AccordionItemContextDirective {\n static ngTemplateContextGuard(\n _directive: AccordionItemContextDirective,\n context: unknown,\n ): context is AccordionItemContextTemplate {\n void context;\n return true;\n }\n\n private readonly item = injectAccordionItemContext();\n private readonly templateRef = inject<TemplateRef<AccordionItemContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.item,\n item: this.item,\n });\n\n effect(() => {\n this.item.state();\n view.detectChanges();\n });\n\n inject(DestroyRef).onDestroy(() => view.destroy());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wirekyt-angular-accordion.mjs","sources":["../../src/components/accordion/use-context.ts","../../src/components/accordion/use-item-context.ts","../../src/components/accordion/use.ts","../../src/components/accordion/root.ts","../../src/components/accordion/root-provider.ts","../../src/components/accordion/item.ts","../../src/components/accordion/item-trigger.ts","../../src/components/accordion/item-content.ts","../../src/components/accordion/item-indicator.ts","../../src/components/accordion/context.ts","../../src/components/accordion/item-context.ts","../../src/components/accordion/wirekyt-angular-accordion.ts"],"sourcesContent":["import { InjectionToken, inject, type Signal } from \"@angular/core\";\n\nimport type { UseAccordionReturn } from \"./use\";\n\nexport interface AccordionRootContext extends UseAccordionReturn {\n readonly lazyMount: Signal<boolean>;\n readonly unmountOnExit: Signal<boolean>;\n}\n\nexport const ACCORDION_CONTEXT = new InjectionToken<AccordionRootContext>(\n \"WIREKIT.ACCORDION_CONTEXT\",\n);\n\nexport function injectAccordionContext(): AccordionRootContext {\n return inject(ACCORDION_CONTEXT);\n}\n","import { InjectionToken, type Signal, inject } from \"@angular/core\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\nexport interface AccordionItemContext {\n readonly value: Signal<string>;\n readonly disabled: Signal<boolean | undefined>;\n readonly state: Signal<accordion.ItemState>;\n readonly isUnmounted: Signal<boolean>;\n}\n\nexport const ACCORDION_ITEM_CONTEXT = new InjectionToken<AccordionItemContext>(\n \"WIREKIT.ACCORDION_ITEM_CONTEXT\",\n);\n\nexport function injectAccordionItemContext(): AccordionItemContext {\n return inject(ACCORDION_ITEM_CONTEXT);\n}\n","import type { Machine } from \"@wirekyt/dom\";\n\nimport { useMachine, type UseMachineReturn } from \"@wirekyt/angular\";\nimport { createId, injectEnvironment, injectLocale } from \"@wirekyt/angular\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\ntype OptionalId<T extends { id: string }> = Omit<T, \"id\"> & { id?: string };\n\nexport interface UseAccordionProps extends OptionalId<\n Omit<accordion.Props, \"dir\" | \"getRootNode\">\n> {}\n\nexport type UseAccordionReturn = UseMachineReturn<\n accordion.Service[\"state\"],\n accordion.Api,\n accordion.Service\n>;\n\nexport interface UseAccordionOptions {\n context: () => UseAccordionProps;\n}\n\ntype AccordionContext = Record<string, unknown>;\ntype AccordionSchema = accordion.Machine extends Machine<infer TSchema> ? TSchema : never;\n\nexport function useAccordion(options: UseAccordionOptions): UseAccordionReturn {\n const locale = injectLocale();\n const environment = injectEnvironment();\n const fallbackId = createId();\n\n return useMachine<AccordionSchema, accordion.Api>({\n machine: accordion.machine,\n context: () => {\n const props = options.context();\n return {\n ...props,\n dir: locale.dir,\n getRootNode: environment.getRootNode,\n id: props.id ?? fallbackId,\n } as AccordionContext;\n },\n connect: (service, normalize) => accordion.connect(service, normalize),\n });\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n forwardRef,\n inject,\n input,\n model,\n output,\n type InputSignal,\n type InputSignalWithTransform,\n type ModelSignal,\n type OutputEmitterRef,\n type Signal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\nimport type { AccordionElementIds, AccordionFocusChangeDetails } from \"./types\";\n\nimport { useAccordion, type UseAccordionReturn } from \"./use\";\nimport { ACCORDION_CONTEXT } from \"./use-context\";\n\nfunction areStringArraysEqual(left: string[] | undefined, right: string[]): boolean {\n return left?.length === right.length && left.every((value, index) => value === right[index]);\n}\n\n@Directive({\n selector: \"[accordionRoot]\",\n standalone: true,\n exportAs: \"accordionRoot\",\n providers: [{ provide: ACCORDION_CONTEXT, useExisting: forwardRef(() => AccordionRoot) }],\n})\nexport class AccordionRoot implements UseAccordionReturn {\n readonly id: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly ids: InputSignal<AccordionElementIds | undefined> = input<\n AccordionElementIds | undefined\n >(undefined);\n readonly multiple: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly collapsible: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly value: ModelSignal<string[] | undefined> = model<string[] | undefined>(undefined);\n readonly defaultValue: InputSignal<string[] | undefined> = input<string[] | undefined>(undefined);\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly orientation: InputSignal<accordion.Props[\"orientation\"]> =\n input<accordion.Props[\"orientation\"]>(undefined);\n readonly lazyMount: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly unmountOnExit: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n readonly focusChange: OutputEmitterRef<AccordionFocusChangeDetails> =\n output<AccordionFocusChangeDetails>();\n\n private readonly machine = useAccordion({\n context: () => ({\n id: this.id(),\n ids: this.ids(),\n multiple: this.multiple(),\n collapsible: this.collapsible(),\n value: this.value(),\n defaultValue: this.defaultValue(),\n disabled: this.disabled(),\n orientation: this.orientation(),\n onValueChange: (details) => {\n if (areStringArraysEqual(this.value(), details.value)) return;\n this.value.set(details.value);\n },\n onFocusChange: (details) => {\n this.focusChange.emit(details);\n },\n }),\n });\n\n readonly state: Signal<accordion.Service[\"state\"]> = this.machine.state;\n readonly api: Signal<accordion.Api> = this.machine.api;\n readonly service: accordion.Service = this.machine.service;\n readonly send: accordion.Service[\"send\"] = this.machine.send;\n\n constructor() {\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.api().getRootProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n type InputSignal,\n type InputSignalWithTransform,\n type Signal,\n computed,\n forwardRef,\n inject,\n input,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport * as accordion from \"@wirekyt/dom/machines/accordion\";\n\nimport type { UseAccordionReturn } from \"./use\";\n\nimport { ACCORDION_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[accordionRootProvider]\",\n standalone: true,\n exportAs: \"accordionRootProvider\",\n providers: [{ provide: ACCORDION_CONTEXT, useExisting: forwardRef(() => AccordionRootProvider) }],\n})\nexport class AccordionRootProvider implements UseAccordionReturn {\n readonly value: InputSignal<UseAccordionReturn> = input.required<UseAccordionReturn>();\n readonly lazyMount: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly unmountOnExit: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly state: Signal<accordion.Service[\"state\"]> = computed(() => this.value().state());\n readonly api: Signal<accordion.Api> = computed(() => this.value().api());\n readonly send: accordion.Service[\"send\"] = (event) => this.value().send(event);\n\n get service(): accordion.Service {\n return this.value().service;\n }\n\n constructor() {\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => this.api().getRootProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n type InputSignal,\n type InputSignalWithTransform,\n} from \"@angular/core\";\nimport { bindProps, createId } from \"@wirekyt/angular\";\nimport {\n COLLAPSIBLE_CONTEXT,\n useCollapsible,\n type UseCollapsibleReturn,\n} from \"@wirekyt/angular/collapsible\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { ACCORDION_ITEM_CONTEXT, type AccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItem]\",\n standalone: true,\n exportAs: \"accordionItem\",\n providers: [\n {\n provide: COLLAPSIBLE_CONTEXT,\n useFactory: (item: AccordionItem) => item.collapsible,\n deps: [forwardRef(() => AccordionItem)],\n },\n {\n provide: ACCORDION_ITEM_CONTEXT,\n useFactory: (item: AccordionItem) => item.getItemContext(),\n deps: [forwardRef(() => AccordionItem)],\n },\n ],\n})\nexport class AccordionItem {\n readonly value: InputSignal<string> = input.required<string>();\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n private readonly root = injectAccordionContext();\n private readonly fallbackValue = createId();\n private readonly itemState = computed(() =>\n this.root.api().getItemState({ value: this.readValue(), disabled: this.disabled() }),\n );\n readonly collapsible: UseCollapsibleReturn = useCollapsible({\n context: () => ({\n open: this.itemState().expanded,\n ids: {\n content: this.root\n .api()\n .getItemContentProps({ value: this.readValue(), disabled: this.disabled() })[\"id\"],\n },\n lazyMount: this.root.lazyMount(),\n unmountOnExit: this.root.unmountOnExit(),\n }),\n });\n private readonly itemContext: AccordionItemContext = {\n value: computed(() => this.readValue()),\n disabled: computed(() => this.disabled()),\n state: this.itemState,\n isUnmounted: this.collapsible.isUnmounted,\n };\n\n constructor() {\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => ({\n ...this.collapsible.api().getRootProps(),\n ...this.root.api().getItemProps({\n value: this.readValue(),\n disabled: this.disabled(),\n }),\n }),\n });\n }\n\n getItemContext(): AccordionItemContext {\n return this.itemContext;\n }\n\n private readValue(): string {\n try {\n return this.value();\n } catch {\n return this.fallbackValue;\n }\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItemTrigger]\",\n standalone: true,\n exportAs: \"accordionItemTrigger\",\n})\nexport class AccordionItemTrigger {\n constructor() {\n const context = injectAccordionContext();\n const item = injectAccordionItemContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () =>\n context.api().getItemTriggerProps({\n value: item.value(),\n disabled: item.disabled(),\n }),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\nimport { injectCollapsibleContext } from \"@wirekyt/angular/collapsible\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItemContent]\",\n standalone: true,\n exportAs: \"accordionItemContent\",\n})\nexport class AccordionItemContent {\n private readonly context = injectAccordionContext();\n private readonly item = injectAccordionItemContext();\n private readonly collapsible = injectCollapsibleContext();\n private readonly template = inject(TemplateRef<unknown>);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly elementRef = { nativeElement: null as HTMLElement | null };\n private view: EmbeddedViewRef<unknown> | undefined;\n\n constructor() {\n effect(() => {\n if (this.collapsible.isUnmounted()) {\n this.elementRef.nativeElement = null;\n this.viewContainer.clear();\n this.view = undefined;\n return;\n }\n\n if (!this.view) {\n this.view = this.viewContainer.createEmbeddedView(this.template);\n this.elementRef.nativeElement =\n this.view.rootNodes.find((node: Node) => node.nodeType === 1) ?? null;\n }\n });\n\n bindProps({\n elementRef: this.elementRef as ElementRef<HTMLElement>,\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => {\n this.collapsible.isUnmounted();\n const collapsibleProps = this.collapsible.api().getContentProps();\n const accordionProps = this.context.api().getItemContentProps({\n value: this.item.value(),\n disabled: this.item.disabled(),\n });\n return {\n ...collapsibleProps,\n ...accordionProps,\n hidden: collapsibleProps[\"hidden\"],\n \"data-state\": collapsibleProps[\"data-state\"],\n };\n },\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAccordionContext } from \"./use-context\";\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\n@Directive({\n selector: \"[accordionItemIndicator]\",\n standalone: true,\n exportAs: \"accordionItemIndicator\",\n})\nexport class AccordionItemIndicator {\n constructor() {\n const context = injectAccordionContext();\n const item = injectAccordionItemContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () =>\n context.api().getItemIndicatorProps({\n value: item.value(),\n disabled: item.disabled(),\n }),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { UseAccordionReturn } from \"./use\";\n\nimport { injectAccordionContext } from \"./use-context\";\n\nexport interface AccordionContextTemplate {\n $implicit: UseAccordionReturn[\"api\"];\n api: UseAccordionReturn[\"api\"];\n}\n\n@Directive({\n selector: \"[accordionContext]\",\n standalone: true,\n exportAs: \"accordionContext\",\n})\nexport class AccordionContext {\n static ngTemplateContextGuard(\n _directive: AccordionContext,\n context: unknown,\n ): context is AccordionContextTemplate {\n void context;\n return true;\n }\n\n private readonly accordion = injectAccordionContext();\n private readonly templateRef = inject<TemplateRef<AccordionContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.accordion.api,\n api: this.accordion.api,\n });\n\n effect(() => {\n this.accordion.api();\n view.detectChanges();\n });\n\n inject(DestroyRef).onDestroy(() => view.destroy());\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { AccordionItemContext as UseAccordionItemContext } from \"./use-item-context\";\n\nimport { injectAccordionItemContext } from \"./use-item-context\";\n\nexport interface AccordionItemContextTemplate {\n $implicit: UseAccordionItemContext;\n item: UseAccordionItemContext;\n}\n\n@Directive({\n selector: \"[accordionItemContext]\",\n standalone: true,\n exportAs: \"accordionItemContext\",\n})\nexport class AccordionItemContextDirective {\n static ngTemplateContextGuard(\n _directive: AccordionItemContextDirective,\n context: unknown,\n ): context is AccordionItemContextTemplate {\n void context;\n return true;\n }\n\n private readonly item = injectAccordionItemContext();\n private readonly templateRef = inject<TemplateRef<AccordionItemContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.item,\n item: this.item,\n });\n\n effect(() => {\n this.item.state();\n view.detectChanges();\n });\n\n inject(DestroyRef).onDestroy(() => view.destroy());\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,8 +2,9 @@ import * as colorPicker from '@wirekyt/dom/machines/color-picker';
2
2
  import { anatomy } from '@wirekyt/dom/machines/color-picker';
3
3
  export { parse as parseColor } from '@wirekyt/dom/machines/color-picker';
4
4
  import * as i0 from '@angular/core';
5
- import { InjectionToken, inject, computed, input, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, signal, effect, TemplateRef, ViewContainerRef, model, booleanAttribute, output, EnvironmentInjector, Injector } from '@angular/core';
5
+ import { InjectionToken, inject, computed, input, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, signal, effect, TemplateRef, ViewContainerRef, untracked, model, booleanAttribute, output, EnvironmentInjector, Injector } from '@angular/core';
6
6
  import { bindProps, injectLocale, injectEnvironment, createId, useMachine, createCvaController, buildRootCarrier } from '@wirekyt/angular';
7
+ import { injectPresenceContext, PresenceBase, PRESENCE_CONTEXT } from '@wirekyt/angular/presence';
7
8
  import { injectFieldContextOptional } from '@wirekyt/angular/field';
8
9
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
9
10
 
@@ -327,11 +328,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
327
328
  class ColorPickerContent {
328
329
  constructor() {
329
330
  const context = injectColorPickerContext();
331
+ const presence = injectPresenceContext();
332
+ const template = inject((TemplateRef), { optional: true });
333
+ const container = inject(ViewContainerRef);
334
+ const host = inject(ElementRef);
335
+ const elementRef = template ? { nativeElement: null } : host;
336
+ let view;
337
+ effect(() => {
338
+ const unmounted = presence.unmounted();
339
+ if (template) {
340
+ if (unmounted) {
341
+ elementRef.nativeElement = null;
342
+ container.clear();
343
+ view = undefined;
344
+ }
345
+ else if (!view) {
346
+ view = container.createEmbeddedView(template);
347
+ elementRef.nativeElement =
348
+ view.rootNodes.find((node) => node.nodeType === 1) ?? null;
349
+ }
350
+ }
351
+ untracked(() => presence.setNode(elementRef.nativeElement));
352
+ });
330
353
  bindProps({
331
- elementRef: inject(ElementRef),
354
+ elementRef,
332
355
  renderer: inject(Renderer2),
333
356
  destroyRef: inject(DestroyRef),
334
- props: () => context.api().getContentProps(),
357
+ props: () => {
358
+ presence.unmounted();
359
+ return { ...context.api().getContentProps(), ...presence.getPresenceProps() };
360
+ },
335
361
  });
336
362
  }
337
363
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ColorPickerContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -515,11 +541,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
515
541
  class ColorPickerPositioner {
516
542
  constructor() {
517
543
  const context = injectColorPickerContext();
544
+ const presence = injectPresenceContext();
545
+ const template = inject((TemplateRef), { optional: true });
546
+ const container = inject(ViewContainerRef);
547
+ const host = inject(ElementRef);
548
+ const elementRef = template ? { nativeElement: null } : host;
549
+ let view;
550
+ effect(() => {
551
+ const unmounted = presence.unmounted();
552
+ if (template) {
553
+ if (unmounted) {
554
+ elementRef.nativeElement = null;
555
+ container.clear();
556
+ view = undefined;
557
+ }
558
+ else if (!view) {
559
+ view = container.createEmbeddedView(template);
560
+ elementRef.nativeElement =
561
+ view.rootNodes.find((node) => node.nodeType === 1) ?? null;
562
+ }
563
+ }
564
+ });
518
565
  bindProps({
519
- elementRef: inject(ElementRef),
566
+ elementRef,
520
567
  renderer: inject(Renderer2),
521
568
  destroyRef: inject(DestroyRef),
522
- props: () => context.api().getPositionerProps(),
569
+ props: () => {
570
+ presence.unmounted();
571
+ return { ...context.api().getPositionerProps(), hidden: presence.unmounted() };
572
+ },
523
573
  });
524
574
  }
525
575
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ColorPickerPositioner, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -566,7 +616,7 @@ function useColorPicker(options) {
566
616
  });
567
617
  }
568
618
 
569
- class ColorPickerRoot {
619
+ class ColorPickerRoot extends PresenceBase {
570
620
  id = input(undefined, /* @ts-ignore */
571
621
  ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
572
622
  ids = input(undefined, /* @ts-ignore */
@@ -652,13 +702,16 @@ class ColorPickerRoot {
652
702
  api = this.machine.api;
653
703
  service = this.machine.service;
654
704
  send = this.machine.send;
705
+ presence = this.createPresence(() => this.api().open);
655
706
  contextCarrier = buildRootCarrier({
707
+ providers: [{ provide: PRESENCE_CONTEXT, useValue: this.presence }],
656
708
  root: this,
657
709
  rootToken: COLOR_PICKER_CONTEXT,
658
710
  originInjector: inject(Injector),
659
711
  environmentInjector: inject(EnvironmentInjector),
660
712
  });
661
713
  constructor() {
714
+ super();
662
715
  let firstRun = true;
663
716
  effect(() => {
664
717
  void this.value();
@@ -714,6 +767,11 @@ class ColorPickerRoot {
714
767
  }
715
768
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ColorPickerRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive });
716
769
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: ColorPickerRoot, isStandalone: true, selector: "[colorPickerRoot]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ids: { classPropertyName: "ids", publicName: "ids", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, defaultFormat: { classPropertyName: "defaultFormat", publicName: "defaultFormat", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, defaultOpen: { classPropertyName: "defaultOpen", publicName: "defaultOpen", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readOnly: { classPropertyName: "readOnly", publicName: "readOnly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, inline: { classPropertyName: "inline", publicName: "inline", isSignal: true, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: true, isRequired: false, transformFunction: null }, openAutoFocus: { classPropertyName: "openAutoFocus", publicName: "openAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, positioning: { classPropertyName: "positioning", publicName: "positioning", isSignal: true, isRequired: false, transformFunction: null }, initialFocusEl: { classPropertyName: "initialFocusEl", publicName: "initialFocusEl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", format: "formatChange", open: "openChange", valueChangeEnd: "valueChangeEnd", focusOutside: "focusOutside", pointerDownOutside: "pointerDownOutside", interactOutside: "interactOutside" }, providers: [
770
+ {
771
+ provide: PRESENCE_CONTEXT,
772
+ useFactory: (root) => root.presence,
773
+ deps: [forwardRef(() => ColorPickerRoot)],
774
+ },
717
775
  { provide: COLOR_PICKER_CONTEXT, useExisting: forwardRef(() => ColorPickerRoot) },
718
776
  {
719
777
  provide: COLOR_PICKER_CONTEXT_CARRIER,
@@ -725,7 +783,7 @@ class ColorPickerRoot {
725
783
  useExisting: forwardRef(() => ColorPickerRoot),
726
784
  multi: true,
727
785
  },
728
- ], exportAs: ["colorPickerRoot"], ngImport: i0 });
786
+ ], exportAs: ["colorPickerRoot"], usesInheritance: true, ngImport: i0 });
729
787
  }
730
788
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ColorPickerRoot, decorators: [{
731
789
  type: Directive,
@@ -734,6 +792,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
734
792
  standalone: true,
735
793
  exportAs: "colorPickerRoot",
736
794
  providers: [
795
+ {
796
+ provide: PRESENCE_CONTEXT,
797
+ useFactory: (root) => root.presence,
798
+ deps: [forwardRef(() => ColorPickerRoot)],
799
+ },
737
800
  { provide: COLOR_PICKER_CONTEXT, useExisting: forwardRef(() => ColorPickerRoot) },
738
801
  {
739
802
  provide: COLOR_PICKER_CONTEXT_CARRIER,
@@ -756,7 +819,7 @@ function colorsEqual(a, b) {
756
819
  return a.toString("css") === b.toString("css");
757
820
  }
758
821
 
759
- class ColorPickerRootProvider {
822
+ class ColorPickerRootProvider extends PresenceBase {
760
823
  value = input.required(/* @ts-ignore */
761
824
  ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
762
825
  state = computed(() => this.value().state(), /* @ts-ignore */
@@ -767,13 +830,23 @@ class ColorPickerRootProvider {
767
830
  get service() {
768
831
  return this.value().service;
769
832
  }
833
+ presence = this.createPresence(() => {
834
+ try {
835
+ return this.api().open;
836
+ }
837
+ catch {
838
+ return false;
839
+ }
840
+ });
770
841
  contextCarrier = buildRootCarrier({
842
+ providers: [{ provide: PRESENCE_CONTEXT, useValue: this.presence }],
771
843
  root: this,
772
844
  rootToken: COLOR_PICKER_CONTEXT,
773
845
  originInjector: inject(Injector),
774
846
  environmentInjector: inject(EnvironmentInjector),
775
847
  });
776
848
  constructor() {
849
+ super();
777
850
  bindProps({
778
851
  elementRef: inject(ElementRef),
779
852
  renderer: inject(Renderer2),
@@ -786,13 +859,18 @@ class ColorPickerRootProvider {
786
859
  }
787
860
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ColorPickerRootProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
788
861
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: ColorPickerRootProvider, isStandalone: true, selector: "[colorPickerRootProvider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, providers: [
862
+ {
863
+ provide: PRESENCE_CONTEXT,
864
+ useFactory: (provider) => provider.presence,
865
+ deps: [forwardRef(() => ColorPickerRootProvider)],
866
+ },
789
867
  { provide: COLOR_PICKER_CONTEXT, useExisting: forwardRef(() => ColorPickerRootProvider) },
790
868
  {
791
869
  provide: COLOR_PICKER_CONTEXT_CARRIER,
792
870
  useFactory: (provider) => provider.getContextCarrier(),
793
871
  deps: [forwardRef(() => ColorPickerRootProvider)],
794
872
  },
795
- ], exportAs: ["colorPickerRootProvider"], ngImport: i0 });
873
+ ], exportAs: ["colorPickerRootProvider"], usesInheritance: true, ngImport: i0 });
796
874
  }
797
875
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: ColorPickerRootProvider, decorators: [{
798
876
  type: Directive,
@@ -801,6 +879,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
801
879
  standalone: true,
802
880
  exportAs: "colorPickerRootProvider",
803
881
  providers: [
882
+ {
883
+ provide: PRESENCE_CONTEXT,
884
+ useFactory: (provider) => provider.presence,
885
+ deps: [forwardRef(() => ColorPickerRootProvider)],
886
+ },
804
887
  { provide: COLOR_PICKER_CONTEXT, useExisting: forwardRef(() => ColorPickerRootProvider) },
805
888
  {
806
889
  provide: COLOR_PICKER_CONTEXT_CARRIER,