@wirekyt/angular 0.0.5 → 0.0.6

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.
@@ -0,0 +1,202 @@
1
+ import * as avatar from '@wirekyt/dom/machines/avatar';
2
+ export { anatomy as avatarAnatomy } from '@wirekyt/dom/machines/avatar';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, inject, input, output, computed, DestroyRef, Renderer2, ElementRef, forwardRef, Directive, TemplateRef, ViewContainerRef, effect } from '@angular/core';
5
+ import { injectLocale, injectEnvironment, createId, useMachine, bindProps } from '@wirekyt/angular';
6
+
7
+ const AVATAR_CONTEXT = new InjectionToken("WIREKYT.AVATAR_CONTEXT");
8
+ function injectAvatarContext() {
9
+ return inject(AVATAR_CONTEXT);
10
+ }
11
+
12
+ function useAvatar(options) {
13
+ const locale = injectLocale();
14
+ const environment = injectEnvironment();
15
+ const fallbackId = createId();
16
+ return useMachine({
17
+ machine: avatar.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) => avatar.connect(service, normalize),
28
+ });
29
+ }
30
+
31
+ class AvatarRoot {
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
+ statusChange = output();
37
+ stableIds = computed(() => this.stabilizeIds(this.ids()), /* @ts-ignore */
38
+ ...(ngDevMode ? [{ debugName: "stableIds" }] : /* istanbul ignore next */ []));
39
+ machine = useAvatar({
40
+ context: () => ({
41
+ id: this.id(),
42
+ ids: this.stableIds(),
43
+ onStatusChange: (details) => this.statusChange.emit(details),
44
+ }),
45
+ });
46
+ state = this.machine.state;
47
+ api = this.machine.api;
48
+ service = this.machine.service;
49
+ send = this.machine.send;
50
+ prevIds = undefined;
51
+ stabilizeIds(next) {
52
+ if (next === this.prevIds)
53
+ return this.prevIds;
54
+ if (next === undefined || this.prevIds === undefined) {
55
+ this.prevIds = next;
56
+ return this.prevIds;
57
+ }
58
+ const keys = new Set([...Object.keys(next), ...Object.keys(this.prevIds)]);
59
+ const hasEqualEntries = [...keys].every((key) => Object.is(next[key], this.prevIds?.[key]));
60
+ if (hasEqualEntries) {
61
+ return this.prevIds;
62
+ }
63
+ this.prevIds = next;
64
+ return this.prevIds;
65
+ }
66
+ constructor() {
67
+ bindProps({
68
+ elementRef: inject(ElementRef),
69
+ renderer: inject(Renderer2),
70
+ destroyRef: inject(DestroyRef),
71
+ props: () => this.api().getRootProps(),
72
+ });
73
+ }
74
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AvatarRoot, deps: [], target: i0.ɵɵFactoryTarget.Directive });
75
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.0", type: AvatarRoot, isStandalone: true, selector: "[avatarRoot]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ids: { classPropertyName: "ids", publicName: "ids", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { statusChange: "statusChange" }, providers: [{ provide: AVATAR_CONTEXT, useExisting: forwardRef(() => AvatarRoot) }], exportAs: ["avatarRoot"], ngImport: i0 });
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AvatarRoot, decorators: [{
78
+ type: Directive,
79
+ args: [{
80
+ selector: "[avatarRoot]",
81
+ standalone: true,
82
+ exportAs: "avatarRoot",
83
+ providers: [{ provide: AVATAR_CONTEXT, useExisting: forwardRef(() => AvatarRoot) }],
84
+ }]
85
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ids: [{ type: i0.Input, args: [{ isSignal: true, alias: "ids", required: false }] }], statusChange: [{ type: i0.Output, args: ["statusChange"] }] } });
86
+
87
+ class AvatarRootProvider {
88
+ value = input.required(/* @ts-ignore */
89
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
90
+ state = computed(() => this.value().state(), /* @ts-ignore */
91
+ ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
92
+ api = computed(() => this.value().api(), /* @ts-ignore */
93
+ ...(ngDevMode ? [{ debugName: "api" }] : /* istanbul ignore next */ []));
94
+ send = (event) => this.value().send(event);
95
+ get service() {
96
+ return this.value().service;
97
+ }
98
+ resolveValue() {
99
+ return this.value();
100
+ }
101
+ constructor() {
102
+ bindProps({
103
+ elementRef: inject(ElementRef),
104
+ renderer: inject(Renderer2),
105
+ destroyRef: inject(DestroyRef),
106
+ props: () => this.api().getRootProps(),
107
+ });
108
+ }
109
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AvatarRootProvider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
110
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.0", type: AvatarRootProvider, isStandalone: true, selector: "[avatarRootProvider]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, providers: [{ provide: AVATAR_CONTEXT, useExisting: forwardRef(() => AvatarRootProvider) }], exportAs: ["avatarRootProvider"], ngImport: i0 });
111
+ }
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AvatarRootProvider, decorators: [{
113
+ type: Directive,
114
+ args: [{
115
+ selector: "[avatarRootProvider]",
116
+ standalone: true,
117
+ exportAs: "avatarRootProvider",
118
+ providers: [{ provide: AVATAR_CONTEXT, useExisting: forwardRef(() => AvatarRootProvider) }],
119
+ }]
120
+ }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
121
+
122
+ class AvatarImage {
123
+ constructor() {
124
+ const context = injectAvatarContext();
125
+ bindProps({
126
+ elementRef: inject(ElementRef),
127
+ renderer: inject(Renderer2),
128
+ destroyRef: inject(DestroyRef),
129
+ props: () => context.api().getImageProps(),
130
+ });
131
+ }
132
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AvatarImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
133
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.0", type: AvatarImage, isStandalone: true, selector: "img[avatarImage]", exportAs: ["avatarImage"], ngImport: i0 });
134
+ }
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AvatarImage, decorators: [{
136
+ type: Directive,
137
+ args: [{
138
+ selector: "img[avatarImage]",
139
+ standalone: true,
140
+ exportAs: "avatarImage",
141
+ }]
142
+ }], ctorParameters: () => [] });
143
+
144
+ class AvatarFallback {
145
+ constructor() {
146
+ const context = injectAvatarContext();
147
+ bindProps({
148
+ elementRef: inject(ElementRef),
149
+ renderer: inject(Renderer2),
150
+ destroyRef: inject(DestroyRef),
151
+ props: () => context.api().getFallbackProps(),
152
+ });
153
+ }
154
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AvatarFallback, deps: [], target: i0.ɵɵFactoryTarget.Directive });
155
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.0", type: AvatarFallback, isStandalone: true, selector: "[avatarFallback]", exportAs: ["avatarFallback"], ngImport: i0 });
156
+ }
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AvatarFallback, decorators: [{
158
+ type: Directive,
159
+ args: [{
160
+ selector: "[avatarFallback]",
161
+ standalone: true,
162
+ exportAs: "avatarFallback",
163
+ }]
164
+ }], ctorParameters: () => [] });
165
+
166
+ class AvatarContext {
167
+ static ngTemplateContextGuard(_directive, context) {
168
+ void context;
169
+ return true;
170
+ }
171
+ avatar = injectAvatarContext();
172
+ templateRef = inject(TemplateRef);
173
+ viewContainer = inject(ViewContainerRef);
174
+ constructor() {
175
+ const view = this.viewContainer.createEmbeddedView(this.templateRef, {
176
+ $implicit: this.avatar.api,
177
+ api: this.avatar.api,
178
+ });
179
+ effect(() => {
180
+ this.avatar.api();
181
+ view.detectChanges();
182
+ });
183
+ inject(DestroyRef).onDestroy(() => view.destroy());
184
+ }
185
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AvatarContext, deps: [], target: i0.ɵɵFactoryTarget.Directive });
186
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.0", type: AvatarContext, isStandalone: true, selector: "[avatarContext]", exportAs: ["avatarContext"], ngImport: i0 });
187
+ }
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: AvatarContext, decorators: [{
189
+ type: Directive,
190
+ args: [{
191
+ selector: "[avatarContext]",
192
+ standalone: true,
193
+ exportAs: "avatarContext",
194
+ }]
195
+ }], ctorParameters: () => [] });
196
+
197
+ /**
198
+ * Generated bundle index. Do not edit.
199
+ */
200
+
201
+ export { AVATAR_CONTEXT, AvatarContext, AvatarFallback, AvatarImage, AvatarRoot, AvatarRootProvider, injectAvatarContext, useAvatar };
202
+ //# sourceMappingURL=wirekyt-angular-avatar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular-avatar.mjs","sources":["../../src/components/avatar/use-context.ts","../../src/components/avatar/use.ts","../../src/components/avatar/root.ts","../../src/components/avatar/root-provider.ts","../../src/components/avatar/image.ts","../../src/components/avatar/fallback.ts","../../src/components/avatar/context.ts","../../src/components/avatar/wirekyt-angular-avatar.ts"],"sourcesContent":["import { InjectionToken, inject } from \"@angular/core\";\n\nimport type { UseAvatarReturn } from \"./use\";\n\nexport const AVATAR_CONTEXT = new InjectionToken<UseAvatarReturn>(\"WIREKYT.AVATAR_CONTEXT\");\n\nexport function injectAvatarContext(): UseAvatarReturn {\n return inject(AVATAR_CONTEXT);\n}\n","import {\n createId,\n injectEnvironment,\n injectLocale,\n useMachine,\n UseMachineReturn,\n} from \"@wirekyt/angular\";\nimport { Machine } from \"@wirekyt/dom\";\nimport * as avatar from \"@wirekyt/dom/machines/avatar\";\n\ntype OptionalId<T extends { id: string }> = Omit<T, \"id\"> & { id?: string };\n\nexport interface UseAvatarProps extends OptionalId<Omit<avatar.Props, \"dir\" | \"getRootNode\">> {}\n\nexport type UseAvatarReturn = UseMachineReturn<avatar.Service[\"state\"], avatar.Api, avatar.Service>;\n\nexport interface UseAvatarOptions {\n context: () => UseAvatarProps;\n}\n\ntype AvatarContext = Record<string, unknown>;\ntype AvatarSchema = avatar.Machine extends Machine<infer TSchema> ? TSchema : never;\n\nexport function useAvatar(options: UseAvatarOptions): UseAvatarReturn {\n const locale = injectLocale();\n const environment = injectEnvironment();\n const fallbackId = createId();\n\n return useMachine<AvatarSchema, avatar.Api>({\n machine: avatar.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 AvatarContext;\n },\n connect: (service, normalize) => avatar.connect(service, normalize),\n });\n}\n","import type * as avatar from \"@wirekyt/dom/machines/avatar\";\n\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n type InputSignal,\n type OutputEmitterRef,\n type Signal,\n computed,\n forwardRef,\n inject,\n input,\n output,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport type { AvatarElementIds, AvatarStatusChangeDetails } from \"./types\";\n\nimport { useAvatar, type UseAvatarReturn } from \"./use\";\nimport { AVATAR_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[avatarRoot]\",\n standalone: true,\n exportAs: \"avatarRoot\",\n providers: [{ provide: AVATAR_CONTEXT, useExisting: forwardRef(() => AvatarRoot) }],\n})\nexport class AvatarRoot implements UseAvatarReturn {\n readonly id: InputSignal<string | undefined> = input<string | undefined>(undefined);\n readonly ids: InputSignal<Partial<AvatarElementIds> | undefined> = input<\n Partial<AvatarElementIds> | undefined\n >(undefined);\n readonly statusChange: OutputEmitterRef<AvatarStatusChangeDetails> =\n output<AvatarStatusChangeDetails>();\n private readonly stableIds = computed(() => this.stabilizeIds(this.ids()));\n\n private readonly machine = useAvatar({\n context: () => ({\n id: this.id(),\n ids: this.stableIds(),\n onStatusChange: (details) => this.statusChange.emit(details),\n }),\n });\n\n readonly state: Signal<avatar.Service[\"state\"]> = this.machine.state;\n readonly api: Signal<avatar.Api> = this.machine.api;\n readonly service: avatar.Service = this.machine.service;\n readonly send: avatar.Service[\"send\"] = this.machine.send;\n\n private prevIds: Partial<AvatarElementIds> | undefined = undefined;\n\n private stabilizeIds(\n next: Partial<AvatarElementIds> | undefined,\n ): Partial<AvatarElementIds> | undefined {\n if (next === this.prevIds) return this.prevIds;\n if (next === undefined || this.prevIds === undefined) {\n this.prevIds = next;\n return this.prevIds;\n }\n const keys = new Set([...Object.keys(next), ...Object.keys(this.prevIds)]);\n const hasEqualEntries = [...keys].every((key) =>\n Object.is(next[key as keyof AvatarElementIds], this.prevIds?.[key as keyof AvatarElementIds]),\n );\n if (hasEqualEntries) {\n return this.prevIds;\n }\n this.prevIds = next;\n return this.prevIds;\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 type * as avatar from \"@wirekyt/dom/machines/avatar\";\n\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n type InputSignal,\n type Signal,\n computed,\n forwardRef,\n inject,\n input,\n} from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport type { UseAvatarReturn } from \"./use\";\n\nimport { AVATAR_CONTEXT } from \"./use-context\";\n\n@Directive({\n selector: \"[avatarRootProvider]\",\n standalone: true,\n exportAs: \"avatarRootProvider\",\n providers: [{ provide: AVATAR_CONTEXT, useExisting: forwardRef(() => AvatarRootProvider) }],\n})\nexport class AvatarRootProvider implements UseAvatarReturn {\n readonly value: InputSignal<UseAvatarReturn> = input.required<UseAvatarReturn>();\n readonly state: Signal<avatar.Service[\"state\"]> = computed(() => this.value().state());\n readonly api: Signal<avatar.Api> = computed(() => this.value().api());\n readonly send: avatar.Service[\"send\"] = (event) => this.value().send(event);\n\n get service(): avatar.Service {\n return this.value().service;\n }\n\n resolveValue(): UseAvatarReturn {\n return this.value();\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 { injectAvatarContext } from \"./use-context\";\n\n@Directive({\n selector: \"img[avatarImage]\",\n standalone: true,\n exportAs: \"avatarImage\",\n})\nexport class AvatarImage {\n constructor() {\n const context = injectAvatarContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getImageProps(),\n });\n }\n}\n","import { DestroyRef, Directive, ElementRef, Renderer2, inject } from \"@angular/core\";\nimport { bindProps } from \"@wirekyt/angular\";\n\nimport { injectAvatarContext } from \"./use-context\";\n\n@Directive({\n selector: \"[avatarFallback]\",\n standalone: true,\n exportAs: \"avatarFallback\",\n})\nexport class AvatarFallback {\n constructor() {\n const context = injectAvatarContext();\n bindProps({\n elementRef: inject(ElementRef),\n renderer: inject(Renderer2),\n destroyRef: inject(DestroyRef),\n props: () => context.api().getFallbackProps(),\n });\n }\n}\n","import {\n DestroyRef,\n Directive,\n TemplateRef,\n ViewContainerRef,\n effect,\n inject,\n} from \"@angular/core\";\n\nimport type { UseAvatarReturn } from \"./use\";\n\nimport { injectAvatarContext } from \"./use-context\";\n\nexport interface AvatarContextTemplate {\n $implicit: UseAvatarReturn[\"api\"];\n api: UseAvatarReturn[\"api\"];\n}\n\n@Directive({\n selector: \"[avatarContext]\",\n standalone: true,\n exportAs: \"avatarContext\",\n})\nexport class AvatarContext {\n static ngTemplateContextGuard(\n _directive: AvatarContext,\n context: unknown,\n ): context is AvatarContextTemplate {\n void context;\n return true;\n }\n\n private readonly avatar = injectAvatarContext();\n private readonly templateRef = inject<TemplateRef<AvatarContextTemplate>>(TemplateRef);\n private readonly viewContainer = inject(ViewContainerRef);\n\n constructor() {\n const view = this.viewContainer.createEmbeddedView(this.templateRef, {\n $implicit: this.avatar.api,\n api: this.avatar.api,\n });\n\n effect(() => {\n this.avatar.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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"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirekyt/angular",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "Angular adapter for Wirekyt",
5
5
  "files": [
6
6
  "dist"
@@ -22,6 +22,10 @@
22
22
  "types": "./types/wirekyt-angular-angle-slider.d.ts",
23
23
  "default": "./fesm2022/wirekyt-angular-angle-slider.mjs"
24
24
  },
25
+ "./avatar": {
26
+ "types": "./types/wirekyt-angular-avatar.d.ts",
27
+ "default": "./fesm2022/wirekyt-angular-avatar.mjs"
28
+ },
25
29
  "./collapsible": {
26
30
  "types": "./types/wirekyt-angular-collapsible.d.ts",
27
31
  "default": "./fesm2022/wirekyt-angular-collapsible.mjs"
@@ -0,0 +1,81 @@
1
+ import * as avatar from '@wirekyt/dom/machines/avatar';
2
+ import { ElementIds, StatusChangeDetails } from '@wirekyt/dom/machines/avatar';
3
+ export { Api as AvatarApi, ElementIds as AvatarElementIds, LoadStatus as AvatarLoadStatus, Machine as AvatarMachine, Props as AvatarMachineProps, Service as AvatarService, StatusChangeDetails as AvatarStatusChangeDetails, anatomy as avatarAnatomy } from '@wirekyt/dom/machines/avatar';
4
+ import * as i0 from '@angular/core';
5
+ import { InjectionToken, InputSignal, OutputEmitterRef, Signal } from '@angular/core';
6
+ import { UseMachineReturn } from '@wirekyt/angular';
7
+
8
+ type OptionalId<T extends {
9
+ id: string;
10
+ }> = Omit<T, "id"> & {
11
+ id?: string;
12
+ };
13
+ interface UseAvatarProps extends OptionalId<Omit<avatar.Props, "dir" | "getRootNode">> {
14
+ }
15
+ type UseAvatarReturn = UseMachineReturn<avatar.Service["state"], avatar.Api, avatar.Service>;
16
+ interface UseAvatarOptions {
17
+ context: () => UseAvatarProps;
18
+ }
19
+ declare function useAvatar(options: UseAvatarOptions): UseAvatarReturn;
20
+
21
+ declare const AVATAR_CONTEXT: InjectionToken<UseAvatarReturn>;
22
+ declare function injectAvatarContext(): UseAvatarReturn;
23
+
24
+ declare class AvatarRoot implements UseAvatarReturn {
25
+ readonly id: InputSignal<string | undefined>;
26
+ readonly ids: InputSignal<Partial<ElementIds> | undefined>;
27
+ readonly statusChange: OutputEmitterRef<StatusChangeDetails>;
28
+ private readonly stableIds;
29
+ private readonly machine;
30
+ readonly state: Signal<avatar.Service["state"]>;
31
+ readonly api: Signal<avatar.Api>;
32
+ readonly service: avatar.Service;
33
+ readonly send: avatar.Service["send"];
34
+ private prevIds;
35
+ private stabilizeIds;
36
+ constructor();
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<AvatarRoot, never>;
38
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarRoot, "[avatarRoot]", ["avatarRoot"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "ids": { "alias": "ids"; "required": false; "isSignal": true; }; }, { "statusChange": "statusChange"; }, never, never, true, never>;
39
+ }
40
+
41
+ declare class AvatarRootProvider implements UseAvatarReturn {
42
+ readonly value: InputSignal<UseAvatarReturn>;
43
+ readonly state: Signal<avatar.Service["state"]>;
44
+ readonly api: Signal<avatar.Api>;
45
+ readonly send: avatar.Service["send"];
46
+ get service(): avatar.Service;
47
+ resolveValue(): UseAvatarReturn;
48
+ constructor();
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<AvatarRootProvider, never>;
50
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarRootProvider, "[avatarRootProvider]", ["avatarRootProvider"], { "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
51
+ }
52
+
53
+ declare class AvatarImage {
54
+ constructor();
55
+ static ɵfac: i0.ɵɵFactoryDeclaration<AvatarImage, never>;
56
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarImage, "img[avatarImage]", ["avatarImage"], {}, {}, never, never, true, never>;
57
+ }
58
+
59
+ declare class AvatarFallback {
60
+ constructor();
61
+ static ɵfac: i0.ɵɵFactoryDeclaration<AvatarFallback, never>;
62
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarFallback, "[avatarFallback]", ["avatarFallback"], {}, {}, never, never, true, never>;
63
+ }
64
+
65
+ interface AvatarContextTemplate {
66
+ $implicit: UseAvatarReturn["api"];
67
+ api: UseAvatarReturn["api"];
68
+ }
69
+ declare class AvatarContext {
70
+ static ngTemplateContextGuard(_directive: AvatarContext, context: unknown): context is AvatarContextTemplate;
71
+ private readonly avatar;
72
+ private readonly templateRef;
73
+ private readonly viewContainer;
74
+ constructor();
75
+ static ɵfac: i0.ɵɵFactoryDeclaration<AvatarContext, never>;
76
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarContext, "[avatarContext]", ["avatarContext"], {}, {}, never, never, true, never>;
77
+ }
78
+
79
+ export { AVATAR_CONTEXT, AvatarContext, AvatarFallback, AvatarImage, AvatarRoot, AvatarRootProvider, injectAvatarContext, useAvatar };
80
+ export type { AvatarContextTemplate, UseAvatarOptions, UseAvatarProps, UseAvatarReturn };
81
+ //# sourceMappingURL=wirekyt-angular-avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular-avatar.d.ts","sources":["../../src/components/avatar/use.ts","../../src/components/avatar/use-context.ts","../../src/components/avatar/root.ts","../../src/components/avatar/root-provider.ts","../../src/components/avatar/image.ts","../../src/components/avatar/fallback.ts","../../src/components/avatar/context.ts"],"mappings":";;;;;;;AAUA,KAAK,UAAU;;AAAyB,KAAI,IAAI;;;AAE1C,UAAW,cAAe,SAAQ,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAA4B;AAE1F,KAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO;UAEjF,gBAAgB;mBAChB,cAAc;AAC9B;AAKD,iBAAgB,SAAS,UAAU,gBAAgB,GAAG,eAAe;;ACnBrE,cAAa,cAAc,EAAA,cAAA,CAAA,eAAA;AAE3B,iBAAgB,mBAAmB,IAAI,eAAe;;ACiBtD,cAMa,UAAW,YAAW,eAAe;iBACnC,WAAW;AACxB,kBAAc,WAAW,CAAC,OAAO,CAACA,UAAgB;AAGlD,2BAAuB,gBAAgB,CAACC,mBAAyB;AAEjE;AAEA;AAQA,oBAAgB,MAAM,CAAC,MAAM,CAAC,OAAO;kBACvB,MAAM,CAAC,MAAM,CAAC,GAAG;AAC/B,sBAAkB,MAAM,CAAC,OAAO;mBACjB,MAAM,CAAC,OAAO;;AAI7B;;yCAxBW,UAAU;2CAAV,UAAU;AAmDtB;;AC5DD,cAMa,kBAAmB,YAAW,eAAe;AACxD,oBAAgB,WAAW,CAAC,eAAe;AAC3C,oBAAgB,MAAM,CAAC,MAAM,CAAC,OAAO;kBACvB,MAAM,CAAC,MAAM,CAAC,GAAG;mBAChB,MAAM,CAAC,OAAO;AAE7B,mBAAe,MAAM,CAAC,OAAO;AAI7B,oBAAgB,eAAe;;yCAVpB,kBAAkB;2CAAlB,kBAAkB;AAsB9B;;AC3CD,cAKa,WAAW;;yCAAX,WAAW;2CAAX,WAAW;AAUvB;;ACfD,cAKa,cAAc;;yCAAd,cAAc;2CAAd,cAAc;AAU1B;;UCPgB,qBAAqB;AACpC,eAAW,eAAe;AAC1B,SAAK,eAAe;AACrB;AAED,cAKa,aAAa;AACxB,8CACc,aAAa,gCAEb,qBAAqB;AAKnC;AACA;AACA;;yCAXW,aAAa;2CAAb,aAAa;AA0BzB;;;;","names":["AvatarElementIds","AvatarStatusChangeDetails"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wirekyt/angular",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "Angular adapter for Wirekyt",
5
5
  "files": [
6
6
  "dist"
@@ -22,6 +22,10 @@
22
22
  "types": "./dist/types/wirekyt-angular-angle-slider.d.ts",
23
23
  "default": "./dist/fesm2022/wirekyt-angular-angle-slider.mjs"
24
24
  },
25
+ "./avatar": {
26
+ "types": "./dist/types/wirekyt-angular-avatar.d.ts",
27
+ "default": "./dist/fesm2022/wirekyt-angular-avatar.mjs"
28
+ },
25
29
  "./collapsible": {
26
30
  "types": "./dist/types/wirekyt-angular-collapsible.d.ts",
27
31
  "default": "./dist/fesm2022/wirekyt-angular-collapsible.mjs"
@@ -44,7 +48,7 @@
44
48
  "@internationalized/date": "^3.12.3",
45
49
  "@internationalized/number": "^3.6.7",
46
50
  "tslib": "^2.8.1",
47
- "@wirekyt/dom": "0.0.5"
51
+ "@wirekyt/dom": "0.0.6"
48
52
  },
49
53
  "peerDependencies": {
50
54
  "@angular/common": ">=22.0.0",