@wirekyt/angular 0.0.33 → 0.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/fesm2022/wirekyt-angular-marquee.mjs +296 -0
  2. package/dist/fesm2022/wirekyt-angular-marquee.mjs.map +1 -0
  3. package/dist/fesm2022/wirekyt-angular-navigation-menu.mjs +777 -0
  4. package/dist/fesm2022/wirekyt-angular-navigation-menu.mjs.map +1 -0
  5. package/dist/fesm2022/wirekyt-angular-pagination.mjs +321 -0
  6. package/dist/fesm2022/wirekyt-angular-pagination.mjs.map +1 -0
  7. package/dist/fesm2022/wirekyt-angular-portal.mjs +98 -0
  8. package/dist/fesm2022/wirekyt-angular-portal.mjs.map +1 -0
  9. package/dist/fesm2022/wirekyt-angular-qr-code.mjs +308 -0
  10. package/dist/fesm2022/wirekyt-angular-qr-code.mjs.map +1 -0
  11. package/dist/fesm2022/wirekyt-angular.mjs +12 -4
  12. package/dist/fesm2022/wirekyt-angular.mjs.map +1 -1
  13. package/dist/package.json +21 -1
  14. package/dist/types/wirekyt-angular-checkbox.d.ts +1 -1
  15. package/dist/types/wirekyt-angular-color-picker.d.ts +1 -1
  16. package/dist/types/wirekyt-angular-combobox.d.ts +1 -1
  17. package/dist/types/wirekyt-angular-date-picker.d.ts +1 -1
  18. package/dist/types/wirekyt-angular-marquee.d.ts +111 -0
  19. package/dist/types/wirekyt-angular-marquee.d.ts.map +1 -0
  20. package/dist/types/wirekyt-angular-navigation-menu.d.ts +187 -0
  21. package/dist/types/wirekyt-angular-navigation-menu.d.ts.map +1 -0
  22. package/dist/types/wirekyt-angular-pagination.d.ts +114 -0
  23. package/dist/types/wirekyt-angular-pagination.d.ts.map +1 -0
  24. package/dist/types/wirekyt-angular-portal.d.ts +30 -0
  25. package/dist/types/wirekyt-angular-portal.d.ts.map +1 -0
  26. package/dist/types/wirekyt-angular-qr-code.d.ts +109 -0
  27. package/dist/types/wirekyt-angular-qr-code.d.ts.map +1 -0
  28. package/dist/types/wirekyt-angular.d.ts +1 -1
  29. package/package.json +22 -2
@@ -0,0 +1,296 @@
1
+ import * as marquee from '@wirekyt/dom/machines/marquee';
2
+ export { anatomy as marqueeAnatomy } from '@wirekyt/dom/machines/marquee';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, inject, input, booleanAttribute, model, output, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, computed, TemplateRef, ViewContainerRef, Injector, effect, runInInjectionContext } from '@angular/core';
5
+ import { injectLocale, injectEnvironment, createId, useMachine, bindProps } from '@wirekyt/angular';
6
+
7
+ const MARQUEE_CONTEXT = new InjectionToken("WIREKYT.MARQUEE_CONTEXT");
8
+ function injectMarqueeContext() {
9
+ return inject(MARQUEE_CONTEXT);
10
+ }
11
+
12
+ function useMarquee(options) {
13
+ const locale = injectLocale();
14
+ const environment = injectEnvironment();
15
+ const fallbackId = createId();
16
+ return useMachine({
17
+ machine: marquee.machine,
18
+ context: () => {
19
+ const props = options.context();
20
+ return {
21
+ ...props,
22
+ dir: locale.dir,
23
+ getRootNode: environment.getRootNode,
24
+ id: props.id ?? fallbackId,
25
+ };
26
+ },
27
+ connect: (service, normalize) => marquee.connect(service, normalize),
28
+ });
29
+ }
30
+
31
+ class MarqueeRoot {
32
+ id = input(undefined, /* @ts-ignore */
33
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
34
+ ids = input(undefined, /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "ids" }] : /* istanbul ignore next */ []));
36
+ translations = input(undefined, /* @ts-ignore */
37
+ ...(ngDevMode ? [{ debugName: "translations" }] : /* istanbul ignore next */ []));
38
+ side = input(undefined, /* @ts-ignore */
39
+ ...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
40
+ speed = input(undefined, /* @ts-ignore */
41
+ ...(ngDevMode ? [{ debugName: "speed" }] : /* istanbul ignore next */ []));
42
+ delay = input(undefined, /* @ts-ignore */
43
+ ...(ngDevMode ? [{ debugName: "delay" }] : /* istanbul ignore next */ []));
44
+ loopCount = input(undefined, /* @ts-ignore */
45
+ ...(ngDevMode ? [{ debugName: "loopCount" }] : /* istanbul ignore next */ []));
46
+ spacing = input(undefined, /* @ts-ignore */
47
+ ...(ngDevMode ? [{ debugName: "spacing" }] : /* istanbul ignore next */ []));
48
+ autoFill = input(false, { ...(ngDevMode ? { debugName: "autoFill" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
49
+ pauseOnInteraction = input(false, { ...(ngDevMode ? { debugName: "pauseOnInteraction" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
50
+ reverse = input(false, { ...(ngDevMode ? { debugName: "reverse" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
51
+ paused = model(undefined, /* @ts-ignore */
52
+ ...(ngDevMode ? [{ debugName: "paused" }] : /* istanbul ignore next */ []));
53
+ defaultPaused = input(false, { ...(ngDevMode ? { debugName: "defaultPaused" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
54
+ pauseDetailsChange = output();
55
+ loopComplete = output();
56
+ complete = output();
57
+ machine = useMarquee({
58
+ context: () => ({
59
+ id: this.id(),
60
+ ids: this.ids(),
61
+ translations: this.translations(),
62
+ side: this.side(),
63
+ speed: this.speed(),
64
+ delay: this.delay(),
65
+ loopCount: this.loopCount(),
66
+ spacing: this.spacing(),
67
+ autoFill: this.autoFill(),
68
+ pauseOnInteraction: this.pauseOnInteraction(),
69
+ reverse: this.reverse(),
70
+ paused: this.paused(),
71
+ defaultPaused: this.defaultPaused(),
72
+ onPauseChange: (details) => {
73
+ const currentPaused = this.paused();
74
+ if (currentPaused !== details.paused) {
75
+ this.paused.set(details.paused);
76
+ }
77
+ this.pauseDetailsChange.emit(details);
78
+ },
79
+ onLoopComplete: () => this.loopComplete.emit(),
80
+ onComplete: () => this.complete.emit(),
81
+ }),
82
+ });
83
+ state = this.machine.state;
84
+ api = this.machine.api;
85
+ service = this.machine.service;
86
+ send = this.machine.send;
87
+ constructor() {
88
+ bindProps({
89
+ elementRef: inject(ElementRef),
90
+ renderer: inject(Renderer2),
91
+ destroyRef: inject(DestroyRef),
92
+ props: () => this.api().getRootProps(),
93
+ });
94
+ }
95
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive });
96
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: MarqueeRoot, isStandalone: true, selector: "[marquee-root]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ids: { classPropertyName: "ids", publicName: "ids", isSignal: true, isRequired: false, transformFunction: null }, translations: { classPropertyName: "translations", publicName: "translations", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, speed: { classPropertyName: "speed", publicName: "speed", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, loopCount: { classPropertyName: "loopCount", publicName: "loopCount", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, autoFill: { classPropertyName: "autoFill", publicName: "autoFill", isSignal: true, isRequired: false, transformFunction: null }, pauseOnInteraction: { classPropertyName: "pauseOnInteraction", publicName: "pauseOnInteraction", isSignal: true, isRequired: false, transformFunction: null }, reverse: { classPropertyName: "reverse", publicName: "reverse", isSignal: true, isRequired: false, transformFunction: null }, paused: { classPropertyName: "paused", publicName: "paused", isSignal: true, isRequired: false, transformFunction: null }, defaultPaused: { classPropertyName: "defaultPaused", publicName: "defaultPaused", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { paused: "pausedChange", pauseDetailsChange: "pauseDetailsChange", loopComplete: "loopComplete", complete: "complete" }, providers: [{ provide: MARQUEE_CONTEXT, useExisting: forwardRef(() => MarqueeRoot) }], exportAs: ["marqueeRoot"], ngImport: i0 });
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeRoot, decorators: [{
99
+ type: Directive,
100
+ args: [{
101
+ selector: "[marquee-root]",
102
+ standalone: true,
103
+ exportAs: "marqueeRoot",
104
+ providers: [{ provide: MARQUEE_CONTEXT, useExisting: forwardRef(() => MarqueeRoot) }],
105
+ }]
106
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ids: [{ type: i0.Input, args: [{ isSignal: true, alias: "ids", required: false }] }], translations: [{ type: i0.Input, args: [{ isSignal: true, alias: "translations", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], speed: [{ type: i0.Input, args: [{ isSignal: true, alias: "speed", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], loopCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "loopCount", required: false }] }], spacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spacing", required: false }] }], autoFill: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoFill", required: false }] }], pauseOnInteraction: [{ type: i0.Input, args: [{ isSignal: true, alias: "pauseOnInteraction", required: false }] }], reverse: [{ type: i0.Input, args: [{ isSignal: true, alias: "reverse", required: false }] }], paused: [{ type: i0.Input, args: [{ isSignal: true, alias: "paused", required: false }] }, { type: i0.Output, args: ["pausedChange"] }], defaultPaused: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPaused", required: false }] }], pauseDetailsChange: [{ type: i0.Output, args: ["pauseDetailsChange"] }], loopComplete: [{ type: i0.Output, args: ["loopComplete"] }], complete: [{ type: i0.Output, args: ["complete"] }] } });
107
+
108
+ class MarqueeRootProvider {
109
+ value = input.required(/* @ts-ignore */
110
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
111
+ state = computed(() => this.value().state(), /* @ts-ignore */
112
+ ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
113
+ api = computed(() => this.value().api(), /* @ts-ignore */
114
+ ...(ngDevMode ? [{ debugName: "api" }] : /* istanbul ignore next */ []));
115
+ send = (event) => this.value().send(event);
116
+ get service() {
117
+ return this.value().service;
118
+ }
119
+ constructor() {
120
+ bindProps({
121
+ elementRef: inject(ElementRef),
122
+ renderer: inject(Renderer2),
123
+ destroyRef: inject(DestroyRef),
124
+ props: () => this.api().getRootProps(),
125
+ });
126
+ }
127
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeRootProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
128
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: MarqueeRootProvider, isStandalone: true, selector: "[marquee-root-provider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, providers: [{ provide: MARQUEE_CONTEXT, useExisting: forwardRef(() => MarqueeRootProvider) }], exportAs: ["marqueeRootProvider"], ngImport: i0 });
129
+ }
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeRootProvider, decorators: [{
131
+ type: Directive,
132
+ args: [{
133
+ selector: "[marquee-root-provider]",
134
+ standalone: true,
135
+ exportAs: "marqueeRootProvider",
136
+ providers: [{ provide: MARQUEE_CONTEXT, useExisting: forwardRef(() => MarqueeRootProvider) }],
137
+ }]
138
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
139
+
140
+ class MarqueeViewport {
141
+ constructor() {
142
+ const context = injectMarqueeContext();
143
+ bindProps({
144
+ elementRef: inject(ElementRef),
145
+ renderer: inject(Renderer2),
146
+ destroyRef: inject(DestroyRef),
147
+ props: () => context.api().getViewportProps(),
148
+ });
149
+ }
150
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeViewport, deps: [], target: i0.ɵɵFactoryTarget.Directive });
151
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: MarqueeViewport, isStandalone: true, selector: "[marquee-viewport]", exportAs: ["marqueeViewport"], ngImport: i0 });
152
+ }
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeViewport, decorators: [{
154
+ type: Directive,
155
+ args: [{
156
+ selector: "[marquee-viewport]",
157
+ standalone: true,
158
+ exportAs: "marqueeViewport",
159
+ }]
160
+ }], ctorParameters: () => [] });
161
+
162
+ class MarqueeContent {
163
+ context = injectMarqueeContext();
164
+ template = inject((TemplateRef));
165
+ viewContainer = inject(ViewContainerRef);
166
+ renderer = inject(Renderer2);
167
+ destroyRef = inject(DestroyRef);
168
+ injector = inject(Injector);
169
+ views = [];
170
+ constructor() {
171
+ effect(() => {
172
+ this.syncViews(this.context.api().contentCount);
173
+ });
174
+ this.destroyRef.onDestroy(() => {
175
+ for (const entry of this.views)
176
+ entry.destroyBinding();
177
+ this.views.length = 0;
178
+ });
179
+ }
180
+ syncViews(contentCount) {
181
+ while (this.views.length < contentCount) {
182
+ const index = this.views.length;
183
+ const view = this.viewContainer.createEmbeddedView(this.template);
184
+ const elementRef = {
185
+ nativeElement: view.rootNodes.find((node) => node.nodeType === 1) ??
186
+ null,
187
+ };
188
+ const destroyBinding = runInInjectionContext(this.injector, () => bindProps({
189
+ elementRef: elementRef,
190
+ renderer: this.renderer,
191
+ destroyRef: this.destroyRef,
192
+ props: () => this.context.api().getContentProps({ index }),
193
+ }));
194
+ this.views.push({ view, destroyBinding });
195
+ }
196
+ while (this.views.length > contentCount) {
197
+ const entry = this.views.pop();
198
+ entry?.destroyBinding();
199
+ entry?.view.destroy();
200
+ }
201
+ }
202
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
203
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: MarqueeContent, isStandalone: true, selector: "[marquee-content]", exportAs: ["marqueeContent"], ngImport: i0 });
204
+ }
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeContent, decorators: [{
206
+ type: Directive,
207
+ args: [{
208
+ selector: "[marquee-content]",
209
+ standalone: true,
210
+ exportAs: "marqueeContent",
211
+ }]
212
+ }], ctorParameters: () => [] });
213
+
214
+ class MarqueeItem {
215
+ constructor() {
216
+ const context = injectMarqueeContext();
217
+ bindProps({
218
+ elementRef: inject(ElementRef),
219
+ renderer: inject(Renderer2),
220
+ destroyRef: inject(DestroyRef),
221
+ props: () => context.api().getItemProps(),
222
+ });
223
+ }
224
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
225
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: MarqueeItem, isStandalone: true, selector: "[marquee-item]", exportAs: ["marqueeItem"], ngImport: i0 });
226
+ }
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeItem, decorators: [{
228
+ type: Directive,
229
+ args: [{
230
+ selector: "[marquee-item]",
231
+ standalone: true,
232
+ exportAs: "marqueeItem",
233
+ }]
234
+ }], ctorParameters: () => [] });
235
+
236
+ class MarqueeEdge {
237
+ side = input.required(/* @ts-ignore */
238
+ ...(ngDevMode ? [{ debugName: "side" }] : /* istanbul ignore next */ []));
239
+ constructor() {
240
+ const context = injectMarqueeContext();
241
+ bindProps({
242
+ elementRef: inject(ElementRef),
243
+ renderer: inject(Renderer2),
244
+ destroyRef: inject(DestroyRef),
245
+ props: () => context.api().getEdgeProps({ side: this.side() }),
246
+ });
247
+ }
248
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeEdge, deps: [], target: i0.ɵɵFactoryTarget.Directive });
249
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.3", type: MarqueeEdge, isStandalone: true, selector: "[marquee-edge]", inputs: { side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: ["marqueeEdge"], ngImport: i0 });
250
+ }
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeEdge, decorators: [{
252
+ type: Directive,
253
+ args: [{
254
+ selector: "[marquee-edge]",
255
+ standalone: true,
256
+ exportAs: "marqueeEdge",
257
+ }]
258
+ }], ctorParameters: () => [], propDecorators: { side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: true }] }] } });
259
+
260
+ class MarqueeContext {
261
+ static ngTemplateContextGuard(_directive, context) {
262
+ void context;
263
+ return true;
264
+ }
265
+ marquee = injectMarqueeContext();
266
+ templateRef = inject(TemplateRef);
267
+ viewContainer = inject(ViewContainerRef);
268
+ constructor() {
269
+ const view = this.viewContainer.createEmbeddedView(this.templateRef, {
270
+ $implicit: this.marquee.api,
271
+ api: this.marquee.api,
272
+ });
273
+ effect(() => {
274
+ this.marquee.api();
275
+ view.detectChanges();
276
+ });
277
+ inject(DestroyRef).onDestroy(() => view.destroy());
278
+ }
279
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeContext, deps: [], target: i0.ɵɵFactoryTarget.Directive });
280
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: MarqueeContext, isStandalone: true, selector: "[marquee-context]", exportAs: ["marqueeContext"], ngImport: i0 });
281
+ }
282
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: MarqueeContext, decorators: [{
283
+ type: Directive,
284
+ args: [{
285
+ selector: "[marquee-context]",
286
+ standalone: true,
287
+ exportAs: "marqueeContext",
288
+ }]
289
+ }], ctorParameters: () => [] });
290
+
291
+ /**
292
+ * Generated bundle index. Do not edit.
293
+ */
294
+
295
+ export { MARQUEE_CONTEXT, MarqueeContent, MarqueeContext, MarqueeEdge, MarqueeItem, MarqueeRoot, MarqueeRootProvider, MarqueeViewport, injectMarqueeContext, useMarquee };
296
+ //# sourceMappingURL=wirekyt-angular-marquee.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular-marquee.mjs","sources":["../../src/components/marquee/use-context.ts","../../src/components/marquee/use.ts","../../src/components/marquee/root.ts","../../src/components/marquee/root-provider.ts","../../src/components/marquee/viewport.ts","../../src/components/marquee/content.ts","../../src/components/marquee/item.ts","../../src/components/marquee/edge.ts","../../src/components/marquee/context.ts","../../src/components/marquee/wirekyt-angular-marquee.ts"],"sourcesContent":["import { InjectionToken, inject } from \"@angular/core\";\n\nimport type { UseMarqueeReturn } from \"./use\";\n\nexport const MARQUEE_CONTEXT = new InjectionToken<UseMarqueeReturn>(\"WIREKYT.MARQUEE_CONTEXT\");\n\nexport function injectMarqueeContext(): UseMarqueeReturn {\n return inject(MARQUEE_CONTEXT);\n}\n","import type { Machine } from \"@wirekyt/dom\";\n\nimport {\n createId,\n injectEnvironment,\n injectLocale,\n useMachine,\n type UseMachineReturn,\n} from \"@wirekyt/angular\";\nimport * as marquee from \"@wirekyt/dom/machines/marquee\";\n\ntype OptionalId<T extends { id: string }> = Omit<T, \"id\"> & { id?: string };\n\nexport interface UseMarqueeProps extends OptionalId<Omit<marquee.Props, \"dir\" | \"getRootNode\">> {}\n\nexport type UseMarqueeReturn = UseMachineReturn<\n marquee.Service[\"state\"],\n marquee.Api,\n marquee.Service\n>;\n\nexport interface UseMarqueeOptions {\n context: () => UseMarqueeProps;\n}\n\ntype MarqueeContext = Record<string, unknown>;\ntype MarqueeSchema = marquee.Machine extends Machine<infer TSchema> ? TSchema : never;\n\nexport function useMarquee(options: UseMarqueeOptions): UseMarqueeReturn {\n const locale = injectLocale();\n const environment = injectEnvironment();\n const fallbackId = createId();\n\n return useMachine<MarqueeSchema, marquee.Api>({\n machine: marquee.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 MarqueeContext;\n },\n connect: (service, normalize) => marquee.connect(service, normalize),\n });\n}\n","import type * as marquee from \"@wirekyt/dom/machines/marquee\";\n\nimport {\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\";\n\nimport type {\n MarqueeElementIds,\n MarqueeIntlTranslations,\n MarqueePauseStatusDetails,\n} from \"./types\";\n\nimport { useMarquee, type UseMarqueeReturn } from \"./use\";\nimport { MARQUEE_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[marquee-root]\",\n standalone: true,\n exportAs: \"marqueeRoot\",\n providers: [{ provide: MARQUEE_CONTEXT, useExisting: forwardRef(() => MarqueeRoot) }],\n})\nexport class MarqueeRoot implements UseMarqueeReturn {\n readonly id: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly ids: InputSignal<Partial<MarqueeElementIds> | undefined> = input<\n Partial<MarqueeElementIds> | undefined\n >(undefined);\n readonly translations: InputSignal<MarqueeIntlTranslations | undefined> = input<\n MarqueeIntlTranslations | undefined\n >(undefined);\n readonly side: InputSignal<marquee.Props[\"side\"] | undefined> = input<\n marquee.Props[\"side\"] | undefined\n >(undefined);\n readonly speed: InputSignal<number | undefined> = input<number | undefined>(undefined);\n readonly delay: InputSignal<number | undefined> = input<number | undefined>(undefined);\n readonly loopCount: InputSignal<number | undefined> = input<number | undefined>(undefined);\n readonly spacing: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly autoFill: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly pauseOnInteraction: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly reverse: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n readonly paused: ModelSignal<boolean | undefined> = model<boolean | undefined>(undefined);\n readonly defaultPaused: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n });\n\n readonly pauseDetailsChange: OutputEmitterRef<MarqueePauseStatusDetails> =\n output<MarqueePauseStatusDetails>();\n readonly loopComplete: OutputEmitterRef<void> = output<void>();\n readonly complete: OutputEmitterRef<void> = output<void>();\n\n private readonly machine = useMarquee({\n context: () => ({\n id: this.id(),\n ids: this.ids(),\n translations: this.translations(),\n side: this.side(),\n speed: this.speed(),\n delay: this.delay(),\n loopCount: this.loopCount(),\n spacing: this.spacing(),\n autoFill: this.autoFill(),\n pauseOnInteraction: this.pauseOnInteraction(),\n reverse: this.reverse(),\n paused: this.paused(),\n defaultPaused: this.defaultPaused(),\n onPauseChange: (details) => {\n const currentPaused = this.paused();\n if (currentPaused !== details.paused) {\n this.paused.set(details.paused);\n }\n this.pauseDetailsChange.emit(details);\n },\n onLoopComplete: () => this.loopComplete.emit(),\n onComplete: () => this.complete.emit(),\n }),\n });\n\n readonly state: Signal<marquee.Service[\"state\"]> = this.machine.state;\n readonly api: Signal<marquee.Api> = this.machine.api;\n readonly service: marquee.Service = this.machine.service;\n readonly send: marquee.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 type * as marquee from \"@wirekyt/dom/machines/marquee\";\n\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n computed,\n forwardRef,\n inject,\n input,\n type InputSignal,\n type Signal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport type { UseMarqueeReturn } from \"./use\";\n\nimport { MARQUEE_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[marquee-root-provider]\",\n standalone: true,\n exportAs: \"marqueeRootProvider\",\n providers: [{ provide: MARQUEE_CONTEXT, useExisting: forwardRef(() => MarqueeRootProvider) }],\n})\nexport class MarqueeRootProvider implements UseMarqueeReturn {\n readonly value: InputSignal<UseMarqueeReturn> = input.required<UseMarqueeReturn>();\n readonly state: Signal<marquee.Service[\"state\"]> = computed(() => this.value().state());\n readonly api: Signal<marquee.Api> = computed(() => this.value().api());\n readonly send: marquee.Service[\"send\"] = (event) => this.value().send(event);\n\n get service(): marquee.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 { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectMarqueeContext } from \"./use-context\";\n\n@Directive({\n selector: \"[marquee-viewport]\",\n standalone: true,\n exportAs: \"marqueeViewport\",\n})\nexport class MarqueeViewport {\n constructor() {\n const context = injectMarqueeContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getViewportProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Injector,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n runInInjectionContext,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectMarqueeContext } from \"./use-context\";\n\n@Directive({\n selector: \"[marquee-content]\",\n standalone: true,\n exportAs: \"marqueeContent\",\n})\nexport class MarqueeContent {\n private readonly context = injectMarqueeContext();\n private readonly template = inject(TemplateRef<unknown>);\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n private readonly views: Array<{\n view: EmbeddedViewRef<unknown>;\n destroyBinding: () => void;\n }> = [];\n\n constructor() {\n effect(() => {\n this.syncViews(this.context.api().contentCount);\n });\n\n this.destroyRef.onDestroy(() => {\n for (const entry of this.views) entry.destroyBinding();\n this.views.length = 0;\n });\n }\n\n private syncViews(contentCount: number): void {\n while (this.views.length < contentCount) {\n const index = this.views.length;\n const view = this.viewContainer.createEmbeddedView(this.template);\n const elementRef = {\n nativeElement:\n (view.rootNodes.find((node: Node) => node.nodeType === 1) as HTMLElement | undefined) ??\n null,\n };\n\n const destroyBinding = runInInjectionContext(this.injector, () =>\n bindProps({\n elementRef: elementRef as ElementRef<HTMLElement>,\n renderer: this.renderer,\n destroyRef: this.destroyRef,\n props: () => this.context.api().getContentProps({ index }),\n }),\n );\n\n this.views.push({ view, destroyBinding });\n }\n\n while (this.views.length > contentCount) {\n const entry = this.views.pop();\n entry?.destroyBinding();\n entry?.view.destroy();\n }\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectMarqueeContext } from \"./use-context\";\n\n@Directive({\n selector: \"[marquee-item]\",\n standalone: true,\n exportAs: \"marqueeItem\",\n})\nexport class MarqueeItem {\n constructor() {\n const context = injectMarqueeContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getItemProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n inject,\n input,\n type InputSignal,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport type { MarqueeSide } from \"./types\";\n\nimport { injectMarqueeContext } from \"./use-context\";\n\n@Directive({\n selector: \"[marquee-edge]\",\n standalone: true,\n exportAs: \"marqueeEdge\",\n})\nexport class MarqueeEdge {\n readonly side: InputSignal<MarqueeSide> = input.required<MarqueeSide>();\n\n constructor() {\n const context = injectMarqueeContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getEdgeProps({ side: this.side() }),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { UseMarqueeReturn } from \"./use\";\n\nimport { injectMarqueeContext } from \"./use-context\";\n\nexport interface MarqueeContextTemplate {\n $implicit: UseMarqueeReturn[\"api\"];\n api: UseMarqueeReturn[\"api\"];\n}\n\n@Directive({\n selector: \"[marquee-context]\",\n standalone: true,\n exportAs: \"marqueeContext\",\n})\nexport class MarqueeContext {\n static ngTemplateContextGuard(\n _directive: MarqueeContext,\n context: unknown,\n ): context is MarqueeContextTemplate {\n void context;\n return true;\n }\n\n private readonly marquee = injectMarqueeContext();\n private readonly templateRef = inject<TemplateRef<MarqueeContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.marquee.api,\n api: this.marquee.api,\n });\n\n effect(() => {\n this.marquee.api();\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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"}