@wirekyt/angular 0.0.1 → 0.0.2

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,714 @@
1
+ import { createScope, MachineStatus, hasTag, matchesState, getExitEnterStates, INIT_STATE, resolveStateValue, findTransition } from '@wirekyt/dom';
2
+ export { mergeProps } from '@wirekyt/dom';
3
+ import { RendererStyleFlags2, effect, inject, DestroyRef, signal, computed, untracked, afterNextRender } from '@angular/core';
4
+ import { compact, isFunction, toArray, warn, isString, ensure, isEqual, callAll } from '@wirekyt/dom/utils';
5
+ import { createNormalizer } from '@wirekyt/dom/types';
6
+
7
+ const isAttributeKey = (key) => key === "role" ||
8
+ key === "id" ||
9
+ key === "tabindex" ||
10
+ key.startsWith("aria-") ||
11
+ key.startsWith("data-");
12
+ const eventNameFromHandlerKey = (key, el) => {
13
+ if (!/^on[A-Z]/.test(key))
14
+ return undefined;
15
+ if (key === "onDoubleClick")
16
+ return "dblclick";
17
+ if (key === "onChange") {
18
+ const tagName = el.tagName.toLowerCase();
19
+ if (tagName === "textarea")
20
+ return "input";
21
+ if (tagName === "input") {
22
+ const type = el.type;
23
+ return type === "checkbox" || type === "radio" || type === "file" ? "change" : "input";
24
+ }
25
+ if (tagName === "select")
26
+ return "change";
27
+ }
28
+ return key.slice(2).toLowerCase();
29
+ };
30
+ const isClassKey = (key) => key === "class" || key === "className";
31
+ const isStyleKey = (key) => key === "style";
32
+ const tokenizeClassString = (value) => value.split(/\s+/).filter((token) => token.length > 0);
33
+ const parseStyleString = (value) => {
34
+ const result = {};
35
+ for (const part of value.split(";")) {
36
+ const trimmed = part.trim();
37
+ if (trimmed.length === 0)
38
+ continue;
39
+ const colon = trimmed.indexOf(":");
40
+ if (colon < 0)
41
+ continue;
42
+ const name = trimmed.slice(0, colon).trim();
43
+ const styleValue = trimmed.slice(colon + 1).trim();
44
+ if (name.length === 0)
45
+ continue;
46
+ result[name] = styleValue;
47
+ }
48
+ return result;
49
+ };
50
+ const computeClassSet = (value) => {
51
+ const result = new Set();
52
+ if (value == null || value === false)
53
+ return result;
54
+ if (typeof value === "string") {
55
+ for (const token of tokenizeClassString(value))
56
+ result.add(token);
57
+ return result;
58
+ }
59
+ if (Array.isArray(value)) {
60
+ for (const item of value) {
61
+ if (typeof item === "string" && item.length > 0)
62
+ result.add(item);
63
+ }
64
+ return result;
65
+ }
66
+ if (typeof value === "object") {
67
+ const entries = value;
68
+ for (const key of Object.keys(entries)) {
69
+ if (entries[key])
70
+ result.add(key);
71
+ }
72
+ return result;
73
+ }
74
+ return result;
75
+ };
76
+ const computeStyleMap = (value) => {
77
+ const result = new Map();
78
+ if (value == null || value === false)
79
+ return result;
80
+ if (typeof value === "string") {
81
+ for (const [name, styleValue] of Object.entries(parseStyleString(value))) {
82
+ result.set(name, styleValue);
83
+ }
84
+ return result;
85
+ }
86
+ if (typeof value === "object") {
87
+ const entries = value;
88
+ for (const key of Object.keys(entries)) {
89
+ const styleValue = entries[key];
90
+ if (styleValue == null || styleValue === false)
91
+ continue;
92
+ result.set(key, String(styleValue));
93
+ }
94
+ return result;
95
+ }
96
+ return result;
97
+ };
98
+ function bindProps(options) {
99
+ const { elementRef, renderer, destroyRef } = options;
100
+ let prev = {};
101
+ const listeners = new Map();
102
+ const appliedClasses = new Set();
103
+ const appliedStyles = new Set();
104
+ const removeListener = (key) => {
105
+ const listener = listeners.get(key);
106
+ if (!listener)
107
+ return;
108
+ listener.dispose();
109
+ listeners.delete(key);
110
+ };
111
+ const removeAttribute = (el, key) => {
112
+ renderer.removeAttribute(el, key);
113
+ };
114
+ const removeProperty = (el, key) => {
115
+ renderer.setProperty(el, key, "");
116
+ };
117
+ const applyClasses = (el, nextValue) => {
118
+ const nextSet = computeClassSet(nextValue);
119
+ for (const token of appliedClasses) {
120
+ if (!nextSet.has(token)) {
121
+ renderer.removeClass(el, token);
122
+ appliedClasses.delete(token);
123
+ }
124
+ }
125
+ for (const token of nextSet) {
126
+ if (!appliedClasses.has(token)) {
127
+ renderer.addClass(el, token);
128
+ appliedClasses.add(token);
129
+ }
130
+ }
131
+ };
132
+ const removeAllClasses = (el) => {
133
+ for (const token of appliedClasses) {
134
+ renderer.removeClass(el, token);
135
+ }
136
+ appliedClasses.clear();
137
+ };
138
+ const styleFlags = (name) => name.startsWith("--") ? RendererStyleFlags2.DashCase : undefined;
139
+ const applyStyles = (el, nextValue) => {
140
+ const nextMap = computeStyleMap(nextValue);
141
+ for (const name of appliedStyles) {
142
+ if (!nextMap.has(name)) {
143
+ renderer.removeStyle(el, name, styleFlags(name));
144
+ appliedStyles.delete(name);
145
+ }
146
+ }
147
+ for (const [name, styleValue] of nextMap) {
148
+ renderer.setStyle(el, name, styleValue, styleFlags(name));
149
+ appliedStyles.add(name);
150
+ }
151
+ };
152
+ const removeAllStyles = (el) => {
153
+ for (const name of appliedStyles) {
154
+ renderer.removeStyle(el, name, styleFlags(name));
155
+ }
156
+ appliedStyles.clear();
157
+ };
158
+ effect(() => {
159
+ const el = elementRef.nativeElement;
160
+ if (!el)
161
+ return;
162
+ const next = (options.props() ?? {});
163
+ for (const key of Object.keys(next)) {
164
+ const nextValue = next[key];
165
+ const prevValue = prev[key];
166
+ const eventName = eventNameFromHandlerKey(key, el);
167
+ if (eventName && typeof nextValue === "function") {
168
+ const listener = listeners.get(key);
169
+ if (prevValue === nextValue && listener?.eventName === eventName)
170
+ continue;
171
+ removeListener(key);
172
+ const dispose = renderer.listen(el, eventName, nextValue);
173
+ listeners.set(key, { eventName, dispose });
174
+ continue;
175
+ }
176
+ if (eventName && listeners.has(key) && typeof nextValue !== "function") {
177
+ removeListener(key);
178
+ if (nextValue == null || nextValue === false)
179
+ continue;
180
+ }
181
+ if (isClassKey(key)) {
182
+ if (Object.is(prevValue, nextValue))
183
+ continue;
184
+ applyClasses(el, nextValue);
185
+ continue;
186
+ }
187
+ if (isStyleKey(key)) {
188
+ if (Object.is(prevValue, nextValue))
189
+ continue;
190
+ applyStyles(el, nextValue);
191
+ continue;
192
+ }
193
+ if (isAttributeKey(key)) {
194
+ if (nextValue == null || nextValue === false) {
195
+ if (prevValue !== undefined && prevValue !== null && prevValue !== false) {
196
+ removeAttribute(el, key);
197
+ }
198
+ continue;
199
+ }
200
+ if (Object.is(prevValue, nextValue))
201
+ continue;
202
+ renderer.setAttribute(el, key, String(nextValue));
203
+ continue;
204
+ }
205
+ if (nextValue == null) {
206
+ if (prevValue !== undefined && prevValue !== null) {
207
+ removeProperty(el, key);
208
+ }
209
+ continue;
210
+ }
211
+ if (Object.is(prevValue, nextValue))
212
+ continue;
213
+ renderer.setProperty(el, key, nextValue);
214
+ }
215
+ for (const key of Object.keys(prev)) {
216
+ if (key in next)
217
+ continue;
218
+ const prevValue = prev[key];
219
+ const eventName = eventNameFromHandlerKey(key, el);
220
+ if (eventName && typeof prevValue === "function") {
221
+ removeListener(key);
222
+ continue;
223
+ }
224
+ if (isClassKey(key)) {
225
+ applyClasses(el, undefined);
226
+ continue;
227
+ }
228
+ if (isStyleKey(key)) {
229
+ applyStyles(el, undefined);
230
+ continue;
231
+ }
232
+ if (isAttributeKey(key)) {
233
+ removeAttribute(el, key);
234
+ continue;
235
+ }
236
+ removeProperty(el, key);
237
+ }
238
+ prev = { ...next };
239
+ });
240
+ destroyRef.onDestroy(() => {
241
+ const el = elementRef.nativeElement;
242
+ for (const { dispose } of listeners.values()) {
243
+ dispose();
244
+ }
245
+ listeners.clear();
246
+ if (el) {
247
+ removeAllClasses(el);
248
+ removeAllStyles(el);
249
+ }
250
+ prev = {};
251
+ });
252
+ }
253
+
254
+ const normalizeProps = createNormalizer((v) => v);
255
+
256
+ function isPlainFunction(value) {
257
+ return typeof value === "function";
258
+ }
259
+ const flush = (fn) => {
260
+ queueMicrotask(fn);
261
+ };
262
+ function useMachine(options) {
263
+ const destroyRef = inject(DestroyRef);
264
+ const machine = options.machine;
265
+ const latestFns = new Map();
266
+ const wrappers = new Map();
267
+ const resolveValue = (key, value) => {
268
+ if (!isPlainFunction(value))
269
+ return value;
270
+ latestFns.set(key, value);
271
+ let wrapper = wrappers.get(key);
272
+ if (!wrapper) {
273
+ wrapper = (...args) => latestFns.get(key)?.(...args);
274
+ wrappers.set(key, wrapper);
275
+ }
276
+ return wrapper;
277
+ };
278
+ const resolveContext = (raw) => {
279
+ const resolved = {};
280
+ for (const key of Object.keys(raw)) {
281
+ resolved[key] = resolveValue(key, raw[key]);
282
+ }
283
+ return resolved;
284
+ };
285
+ const initialContextRaw = options.context();
286
+ const initialContext = resolveContext(initialContextRaw);
287
+ const currentProps = signal(initialContext, /* @ts-ignore */
288
+ ...(ngDevMode ? [{ debugName: "currentProps" }] : /* istanbul ignore next */ []));
289
+ const scope = computed(() => {
290
+ const props = currentProps();
291
+ const getRootNode = props.getRootNode;
292
+ return createScope({
293
+ id: props.id,
294
+ ids: props.ids,
295
+ getRootNode: getRootNode ?? (() => document),
296
+ });
297
+ }, /* @ts-ignore */
298
+ ...(ngDevMode ? [{ debugName: "scope" }] : /* istanbul ignore next */ []));
299
+ const props = computed(() => {
300
+ return (machine.props?.({ props: compact(currentProps()), scope: scope() }) ?? currentProps());
301
+ }, /* @ts-ignore */
302
+ ...(ngDevMode ? [{ debugName: "props" }] : /* istanbul ignore next */ []));
303
+ const prop = ((key) => props()[key]);
304
+ const createBindable = (params) => {
305
+ const initialParams = params();
306
+ const initial = initialParams.value !== undefined ? initialParams.value : initialParams.defaultValue;
307
+ const value = signal(initial, /* @ts-ignore */
308
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
309
+ const ref = { current: initial };
310
+ let defaultEffectInitialized = false;
311
+ let defaultHydrationChecked = false;
312
+ let userTouched = false;
313
+ effect(() => {
314
+ const nextParams = params();
315
+ const nextDefault = nextParams.defaultValue;
316
+ const controlled = nextParams.value !== undefined;
317
+ if (!defaultEffectInitialized) {
318
+ defaultEffectInitialized = true;
319
+ return;
320
+ }
321
+ if (userTouched || controlled || defaultHydrationChecked)
322
+ return;
323
+ defaultHydrationChecked = true;
324
+ if (nextDefault === undefined)
325
+ return;
326
+ if (!(nextParams.isEqual ?? Object.is)(untracked(value), nextDefault)) {
327
+ value.set(nextDefault);
328
+ }
329
+ });
330
+ const get = () => {
331
+ const controlled = params().value !== undefined;
332
+ const next = controlled ? params().value : value();
333
+ ref.current = next;
334
+ return next;
335
+ };
336
+ return {
337
+ initial,
338
+ ref,
339
+ get,
340
+ set(nextValue) {
341
+ const commit = () => {
342
+ const prev = get();
343
+ const next = isFunction(nextValue) ? nextValue(prev) : nextValue;
344
+ if (params().debug) {
345
+ console.log(`[bindable > ${params().debug}] setValue`, { next, prev });
346
+ }
347
+ if (params().value === undefined) {
348
+ userTouched = true;
349
+ value.set(next);
350
+ }
351
+ if (!(params().isEqual ?? Object.is)(next, prev)) {
352
+ params().onChange?.(next, prev);
353
+ }
354
+ };
355
+ if (params().sync)
356
+ untracked(commit);
357
+ else
358
+ commit();
359
+ },
360
+ invoke(nextValue, prevValue) {
361
+ params().onChange?.(nextValue, prevValue);
362
+ },
363
+ hash(valueToHash) {
364
+ return params().hash?.(valueToHash) ?? String(valueToHash);
365
+ },
366
+ };
367
+ };
368
+ createBindable.cleanup = (fn) => {
369
+ destroyRef.onDestroy(fn);
370
+ };
371
+ createBindable.ref = (defaultValue) => {
372
+ let value = defaultValue;
373
+ return {
374
+ get: () => value,
375
+ set: (next) => {
376
+ value = next;
377
+ },
378
+ };
379
+ };
380
+ const context = machine.context?.({
381
+ prop,
382
+ bindable: createBindable,
383
+ get scope() {
384
+ return scope();
385
+ },
386
+ flush,
387
+ getContext: () => ctx,
388
+ getComputed: () => computedValue,
389
+ getRefs: () => refs,
390
+ getEvent: () => getEvent(),
391
+ });
392
+ const ctx = {
393
+ get(key) {
394
+ return context?.[key]?.get();
395
+ },
396
+ set(key, value) {
397
+ context?.[key]?.set(value);
398
+ },
399
+ initial(key) {
400
+ return context?.[key]?.initial;
401
+ },
402
+ hash(key) {
403
+ const binding = context?.[key];
404
+ return binding?.hash(binding.get());
405
+ },
406
+ };
407
+ const refs = (() => {
408
+ const values = machine.refs?.({ prop, context: ctx }) ?? {};
409
+ const ref = { current: values };
410
+ return {
411
+ get(key) {
412
+ return ref.current[key];
413
+ },
414
+ set(key, value) {
415
+ ref.current[key] = value;
416
+ },
417
+ };
418
+ })();
419
+ let status = MachineStatus.NotStarted;
420
+ let transitionRef = null;
421
+ let previousEvent = null;
422
+ let currentEvent = { type: "" };
423
+ let pendingEvents = [];
424
+ let effects = new Map();
425
+ const trackedEffects = new Set();
426
+ const listeners = new Set();
427
+ let stateSignal;
428
+ const getEvent = () => ({
429
+ ...currentEvent,
430
+ current: () => currentEvent,
431
+ previous: () => previousEvent,
432
+ });
433
+ const getState = () => ({
434
+ ...state,
435
+ matches(...values) {
436
+ const current = state.get();
437
+ return values.some((value) => matchesState(current, value));
438
+ },
439
+ hasTag(tag) {
440
+ return hasTag(machine, state.get(), tag);
441
+ },
442
+ });
443
+ const notifyState = () => {
444
+ const next = getState();
445
+ stateSignal.set(next);
446
+ for (const listener of listeners)
447
+ listener(next);
448
+ };
449
+ const getParams = () => ({
450
+ state: getState(),
451
+ context: ctx,
452
+ event: getEvent(),
453
+ prop,
454
+ send,
455
+ action,
456
+ guard,
457
+ track,
458
+ refs,
459
+ computed: computedValue,
460
+ flush,
461
+ get scope() {
462
+ return scope();
463
+ },
464
+ choose,
465
+ });
466
+ const action = (keys) => {
467
+ const actionKeys = isFunction(keys) ? keys(getParams()) : keys;
468
+ if (!actionKeys)
469
+ return;
470
+ const fns = toArray(actionKeys).map((key) => {
471
+ const fn = machine.implementations?.actions?.[String(key)];
472
+ if (!fn)
473
+ warn(`[wirekyt] No implementation found for action "${JSON.stringify(key)}"`);
474
+ return fn;
475
+ });
476
+ for (const fn of fns) {
477
+ fn?.(getParams());
478
+ }
479
+ };
480
+ const guard = (key) => {
481
+ if (isFunction(key))
482
+ return key(getParams());
483
+ return machine.implementations?.guards?.[String(key)]?.(getParams());
484
+ };
485
+ const runEffects = (keys) => {
486
+ const effectKeys = isFunction(keys) ? keys(getParams()) : keys;
487
+ if (!effectKeys)
488
+ return undefined;
489
+ const fns = toArray(effectKeys).map((key) => {
490
+ const fn = machine.implementations?.effects?.[String(key)];
491
+ if (!fn)
492
+ warn(`[wirekyt] No implementation found for effect "${JSON.stringify(key)}"`);
493
+ return fn;
494
+ });
495
+ const cleanups = [];
496
+ for (const fn of fns) {
497
+ const cleanup = fn?.(getParams());
498
+ if (cleanup)
499
+ cleanups.push(cleanup);
500
+ }
501
+ return cleanups.length > 0
502
+ ? () => {
503
+ for (const cleanup of cleanups)
504
+ cleanup();
505
+ }
506
+ : undefined;
507
+ };
508
+ const choose = (transitions) => {
509
+ return toArray(transitions).find((transition) => {
510
+ let result = !transition.guard;
511
+ if (isString(transition.guard))
512
+ result = !!guard(transition.guard);
513
+ else if (isFunction(transition.guard))
514
+ result = transition.guard(getParams());
515
+ return result;
516
+ });
517
+ };
518
+ const computedValue = ((key) => {
519
+ ensure(machine.computed, () => `[wirekyt] No computed object found on machine`);
520
+ const fn = machine.computed[key];
521
+ return fn?.({
522
+ context: ctx,
523
+ event: getEvent(),
524
+ prop,
525
+ refs,
526
+ get scope() {
527
+ return scope();
528
+ },
529
+ computed: computedValue,
530
+ });
531
+ });
532
+ const track = (deps, fn) => {
533
+ let initialized = false;
534
+ let previous = [];
535
+ const ref = effect(() => {
536
+ const current = deps.map((dep) => dep());
537
+ if (!initialized) {
538
+ initialized = true;
539
+ previous = current;
540
+ return;
541
+ }
542
+ if (current.some((value, index) => !isEqual(previous[index], value))) {
543
+ previous = current;
544
+ fn();
545
+ }
546
+ }, /* @ts-ignore */
547
+ ...(ngDevMode ? [{ debugName: "ref" }] : /* istanbul ignore next */ []));
548
+ trackedEffects.add(ref);
549
+ };
550
+ const state = createBindable(() => ({
551
+ defaultValue: resolveStateValue(machine, machine.initialState({ prop })),
552
+ onChange(nextState, prevState) {
553
+ const { exiting, entering } = getExitEnterStates(machine, prevState, nextState, transitionRef?.reenter);
554
+ for (const item of exiting) {
555
+ const cleanup = effects.get(item.path);
556
+ cleanup?.();
557
+ effects.delete(item.path);
558
+ }
559
+ for (const item of exiting) {
560
+ action(item.state?.exit);
561
+ }
562
+ action(transitionRef?.actions);
563
+ for (const item of entering) {
564
+ const cleanup = runEffects(item.state?.effects);
565
+ if (cleanup) {
566
+ const existing = effects.get(item.path);
567
+ effects.set(item.path, existing ? callAll(existing, cleanup) : cleanup);
568
+ }
569
+ }
570
+ if (prevState === INIT_STATE) {
571
+ action(machine.entry);
572
+ const cleanup = runEffects(machine.effects);
573
+ if (cleanup) {
574
+ const existing = effects.get(INIT_STATE);
575
+ effects.set(INIT_STATE, existing ? callAll(existing, cleanup) : cleanup);
576
+ }
577
+ }
578
+ for (const item of entering) {
579
+ action(item.state?.entry);
580
+ }
581
+ notifyState();
582
+ },
583
+ }));
584
+ stateSignal = signal(getState());
585
+ const send = (event) => {
586
+ if (status === MachineStatus.Stopped)
587
+ return;
588
+ if (status !== MachineStatus.Started) {
589
+ pendingEvents.push(event);
590
+ return;
591
+ }
592
+ previousEvent = currentEvent;
593
+ currentEvent = event;
594
+ const currentState = untracked(() => state.get());
595
+ const { transitions, source } = findTransition(machine, currentState, event.type);
596
+ const transition = choose(transitions);
597
+ if (!transition)
598
+ return;
599
+ transitionRef = transition;
600
+ const target = resolveStateValue(machine, transition.target ?? currentState, source);
601
+ if (target !== currentState) {
602
+ state.set(target);
603
+ }
604
+ else if (transition.reenter) {
605
+ state.invoke(currentState, currentState);
606
+ }
607
+ else {
608
+ action(transition.actions);
609
+ }
610
+ };
611
+ const setContext = (patch) => {
612
+ currentProps.update((previous) => ({ ...previous, ...patch }));
613
+ notifyState();
614
+ };
615
+ const stop = () => {
616
+ if (status === MachineStatus.Stopped)
617
+ return;
618
+ status = MachineStatus.Stopped;
619
+ pendingEvents = [];
620
+ for (const ref of trackedEffects)
621
+ ref.destroy();
622
+ trackedEffects.clear();
623
+ for (const cleanup of effects.values())
624
+ cleanup();
625
+ effects = new Map();
626
+ transitionRef = null;
627
+ action(machine.exit);
628
+ listeners.clear();
629
+ };
630
+ const service = {
631
+ getStatus: () => status,
632
+ get state() {
633
+ return getState();
634
+ },
635
+ context: ctx,
636
+ send,
637
+ prop,
638
+ get scope() {
639
+ return scope();
640
+ },
641
+ refs,
642
+ computed: computedValue,
643
+ get event() {
644
+ return getEvent();
645
+ },
646
+ subscribe(listener) {
647
+ listeners.add(listener);
648
+ return () => listeners.delete(listener);
649
+ },
650
+ setContext,
651
+ stop,
652
+ };
653
+ let prevRawContext = initialContextRaw;
654
+ let prevResolvedContext = initialContext;
655
+ effect(() => {
656
+ const nextRaw = options.context();
657
+ const nextKeys = new Set(Object.keys(nextRaw));
658
+ for (const key of Object.keys(prevRawContext)) {
659
+ nextKeys.add(key);
660
+ }
661
+ const patch = {};
662
+ let hasChanges = false;
663
+ const nextResolvedContext = {};
664
+ for (const key of nextKeys) {
665
+ const nextRawValue = nextRaw[key];
666
+ const prevRawValue = prevRawContext[key];
667
+ const nextResolvedValue = key in nextRaw ? resolveValue(key, nextRawValue) : undefined;
668
+ if (key in nextRaw) {
669
+ nextResolvedContext[key] = nextResolvedValue;
670
+ }
671
+ if (!Object.is(prevRawValue, nextRawValue) &&
672
+ !Object.is(prevResolvedContext[key], nextResolvedValue)) {
673
+ patch[key] = nextResolvedValue;
674
+ hasChanges = true;
675
+ }
676
+ }
677
+ if (hasChanges) {
678
+ service.setContext(patch);
679
+ }
680
+ prevRawContext = nextRaw;
681
+ prevResolvedContext = nextResolvedContext;
682
+ });
683
+ machine.watch?.(getParams());
684
+ afterNextRender(() => {
685
+ if (status === MachineStatus.Stopped)
686
+ return;
687
+ status = MachineStatus.Started;
688
+ state.invoke(state.initial, INIT_STATE);
689
+ const events = pendingEvents;
690
+ pendingEvents = [];
691
+ for (const event of events) {
692
+ send(event);
693
+ }
694
+ });
695
+ const api = computed(() => {
696
+ void stateSignal();
697
+ return options.connect(service, normalizeProps);
698
+ }, /* @ts-ignore */
699
+ ...(ngDevMode ? [{ debugName: "api" }] : /* istanbul ignore next */ []));
700
+ destroyRef.onDestroy(stop);
701
+ return {
702
+ state: stateSignal.asReadonly(),
703
+ send: service.send,
704
+ service,
705
+ api,
706
+ };
707
+ }
708
+
709
+ /**
710
+ * Generated bundle index. Do not edit.
711
+ */
712
+
713
+ export { bindProps, normalizeProps, useMachine };
714
+ //# sourceMappingURL=wirekyt-angular.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular.mjs","sources":["../../src/core/bind-props.ts","../../src/core/normalize-props.ts","../../src/core/machine.ts","../../src/wirekyt-angular.ts"],"sourcesContent":["import {\n RendererStyleFlags2,\n effect,\n type DestroyRef,\n type ElementRef,\n type Renderer2,\n} from \"@angular/core\";\n\ntype WireProps = Record<string, unknown>;\n\nexport interface BindPropsOptions {\n elementRef: ElementRef<HTMLElement>;\n renderer: Renderer2;\n destroyRef: DestroyRef;\n props: () => WireProps | undefined;\n}\n\nconst isAttributeKey = (key: string): boolean =>\n key === \"role\" ||\n key === \"id\" ||\n key === \"tabindex\" ||\n key.startsWith(\"aria-\") ||\n key.startsWith(\"data-\");\n\nconst eventNameFromHandlerKey = (key: string, el: HTMLElement): string | undefined => {\n if (!/^on[A-Z]/.test(key)) return undefined;\n if (key === \"onDoubleClick\") return \"dblclick\";\n if (key === \"onChange\") {\n const tagName = el.tagName.toLowerCase();\n if (tagName === \"textarea\") return \"input\";\n if (tagName === \"input\") {\n const type = (el as HTMLInputElement).type;\n return type === \"checkbox\" || type === \"radio\" || type === \"file\" ? \"change\" : \"input\";\n }\n if (tagName === \"select\") return \"change\";\n }\n return key.slice(2).toLowerCase();\n};\n\nconst isClassKey = (key: string): boolean => key === \"class\" || key === \"className\";\n\nconst isStyleKey = (key: string): boolean => key === \"style\";\n\nconst tokenizeClassString = (value: string): string[] =>\n value.split(/\\s+/).filter((token) => token.length > 0);\n\nconst parseStyleString = (value: string): Record<string, string> => {\n const result: Record<string, string> = {};\n for (const part of value.split(\";\")) {\n const trimmed = part.trim();\n if (trimmed.length === 0) continue;\n const colon = trimmed.indexOf(\":\");\n if (colon < 0) continue;\n const name = trimmed.slice(0, colon).trim();\n const styleValue = trimmed.slice(colon + 1).trim();\n if (name.length === 0) continue;\n result[name] = styleValue;\n }\n return result;\n};\n\nconst computeClassSet = (value: unknown): Set<string> => {\n const result = new Set<string>();\n if (value == null || value === false) return result;\n if (typeof value === \"string\") {\n for (const token of tokenizeClassString(value)) result.add(token);\n return result;\n }\n if (Array.isArray(value)) {\n for (const item of value) {\n if (typeof item === \"string\" && item.length > 0) result.add(item);\n }\n return result;\n }\n if (typeof value === \"object\") {\n const entries = value as Record<string, unknown>;\n for (const key of Object.keys(entries)) {\n if (entries[key]) result.add(key);\n }\n return result;\n }\n return result;\n};\n\nconst computeStyleMap = (value: unknown): Map<string, string> => {\n const result = new Map<string, string>();\n if (value == null || value === false) return result;\n if (typeof value === \"string\") {\n for (const [name, styleValue] of Object.entries(parseStyleString(value))) {\n result.set(name, styleValue);\n }\n return result;\n }\n if (typeof value === \"object\") {\n const entries = value as Record<string, unknown>;\n for (const key of Object.keys(entries)) {\n const styleValue = entries[key];\n if (styleValue == null || styleValue === false) continue;\n result.set(key, String(styleValue));\n }\n return result;\n }\n return result;\n};\n\nexport function bindProps(options: BindPropsOptions): void {\n const { elementRef, renderer, destroyRef } = options;\n\n let prev: Record<string, unknown> = {};\n const listeners = new Map<string, { eventName: string; dispose: () => void }>();\n const appliedClasses = new Set<string>();\n const appliedStyles = new Set<string>();\n\n const removeListener = (key: string): void => {\n const listener = listeners.get(key);\n if (!listener) return;\n listener.dispose();\n listeners.delete(key);\n };\n\n const removeAttribute = (el: HTMLElement, key: string): void => {\n renderer.removeAttribute(el, key);\n };\n\n const removeProperty = (el: HTMLElement, key: string): void => {\n renderer.setProperty(el, key, \"\");\n };\n\n const applyClasses = (el: HTMLElement, nextValue: unknown): void => {\n const nextSet = computeClassSet(nextValue);\n for (const token of appliedClasses) {\n if (!nextSet.has(token)) {\n renderer.removeClass(el, token);\n appliedClasses.delete(token);\n }\n }\n for (const token of nextSet) {\n if (!appliedClasses.has(token)) {\n renderer.addClass(el, token);\n appliedClasses.add(token);\n }\n }\n };\n\n const removeAllClasses = (el: HTMLElement): void => {\n for (const token of appliedClasses) {\n renderer.removeClass(el, token);\n }\n appliedClasses.clear();\n };\n\n const styleFlags = (name: string): RendererStyleFlags2 | undefined =>\n name.startsWith(\"--\") ? RendererStyleFlags2.DashCase : undefined;\n\n const applyStyles = (el: HTMLElement, nextValue: unknown): void => {\n const nextMap = computeStyleMap(nextValue);\n for (const name of appliedStyles) {\n if (!nextMap.has(name)) {\n renderer.removeStyle(el, name, styleFlags(name));\n appliedStyles.delete(name);\n }\n }\n for (const [name, styleValue] of nextMap) {\n renderer.setStyle(el, name, styleValue, styleFlags(name));\n appliedStyles.add(name);\n }\n };\n\n const removeAllStyles = (el: HTMLElement): void => {\n for (const name of appliedStyles) {\n renderer.removeStyle(el, name, styleFlags(name));\n }\n appliedStyles.clear();\n };\n\n effect(() => {\n const el = elementRef.nativeElement;\n if (!el) return;\n const next = (options.props() ?? {}) as Record<string, unknown>;\n\n for (const key of Object.keys(next)) {\n const nextValue = next[key];\n const prevValue = prev[key];\n\n const eventName = eventNameFromHandlerKey(key, el);\n if (eventName && typeof nextValue === \"function\") {\n const listener = listeners.get(key);\n if (prevValue === nextValue && listener?.eventName === eventName) continue;\n removeListener(key);\n const dispose = renderer.listen(el, eventName, nextValue as (event: Event) => void);\n listeners.set(key, { eventName, dispose });\n continue;\n }\n if (eventName && listeners.has(key) && typeof nextValue !== \"function\") {\n removeListener(key);\n if (nextValue == null || nextValue === false) continue;\n }\n\n if (isClassKey(key)) {\n if (Object.is(prevValue, nextValue)) continue;\n applyClasses(el, nextValue);\n continue;\n }\n\n if (isStyleKey(key)) {\n if (Object.is(prevValue, nextValue)) continue;\n applyStyles(el, nextValue);\n continue;\n }\n\n if (isAttributeKey(key)) {\n if (nextValue == null || nextValue === false) {\n if (prevValue !== undefined && prevValue !== null && prevValue !== false) {\n removeAttribute(el, key);\n }\n continue;\n }\n if (Object.is(prevValue, nextValue)) continue;\n renderer.setAttribute(el, key, String(nextValue));\n continue;\n }\n\n if (nextValue == null) {\n if (prevValue !== undefined && prevValue !== null) {\n removeProperty(el, key);\n }\n continue;\n }\n\n if (Object.is(prevValue, nextValue)) continue;\n renderer.setProperty(el, key, nextValue);\n }\n\n for (const key of Object.keys(prev)) {\n if (key in next) continue;\n const prevValue = prev[key];\n\n const eventName = eventNameFromHandlerKey(key, el);\n if (eventName && typeof prevValue === \"function\") {\n removeListener(key);\n continue;\n }\n\n if (isClassKey(key)) {\n applyClasses(el, undefined);\n continue;\n }\n\n if (isStyleKey(key)) {\n applyStyles(el, undefined);\n continue;\n }\n\n if (isAttributeKey(key)) {\n removeAttribute(el, key);\n continue;\n }\n\n removeProperty(el, key);\n }\n\n prev = { ...next };\n });\n\n destroyRef.onDestroy(() => {\n const el = elementRef.nativeElement;\n for (const { dispose } of listeners.values()) {\n dispose();\n }\n listeners.clear();\n if (el) {\n removeAllClasses(el);\n removeAllStyles(el);\n }\n prev = {};\n });\n}\n","import { createNormalizer, type JSX } from \"@wirekyt/dom/types\";\n\nexport type PropTypes = JSX.IntrinsicElements & {\n element: JSX.HTMLAttributes<HTMLElement> & Record<string, unknown>;\n style: JSX.CSSProperties;\n};\n\nexport const normalizeProps = createNormalizer<PropTypes>((v) => v);\n","import {\n DestroyRef,\n afterNextRender,\n computed,\n effect,\n inject,\n signal,\n untracked,\n type EffectRef,\n type WritableSignal,\n} from \"@angular/core\";\nimport {\n INIT_STATE,\n MachineStatus,\n createScope,\n findTransition,\n getExitEnterStates,\n hasTag,\n matchesState,\n resolveStateValue,\n type Bindable,\n type BindableParams,\n type MachineSchema,\n type Service,\n type Transition,\n} from \"@wirekyt/dom\";\nimport {\n callAll,\n compact,\n ensure,\n isEqual,\n isFunction,\n isString,\n toArray,\n warn,\n} from \"@wirekyt/dom/utils\";\n\nimport type { UseMachineOptions, UseMachineReturn } from \"./types\";\n\nimport { normalizeProps } from \"./normalize-props\";\n\ntype AnyFn = (...args: unknown[]) => unknown;\ntype EventFor<TSchema extends MachineSchema> = TSchema[\"event\"] & { type: string };\ntype StateFor<TSchema extends MachineSchema> = Service<TSchema>[\"state\"];\ntype ExtendedService<TSchema extends MachineSchema> = Service<TSchema> & {\n subscribe: (listener: (state: StateFor<TSchema>) => void) => () => void;\n setContext: (patch: Record<string, unknown>) => void;\n stop: () => void;\n};\n\nfunction isPlainFunction(value: unknown): value is AnyFn {\n return typeof value === \"function\";\n}\n\nconst flush = (fn: VoidFunction): void => {\n queueMicrotask(fn);\n};\n\nexport function useMachine<TSchema extends MachineSchema, TApi>(\n options: UseMachineOptions<TSchema, TApi>,\n): UseMachineReturn<StateFor<TSchema>, TApi, Service<TSchema>> {\n const destroyRef = inject(DestroyRef);\n const machine = options.machine;\n\n const latestFns = new Map<string, AnyFn>();\n const wrappers = new Map<string, AnyFn>();\n\n const resolveValue = (key: string, value: unknown): unknown => {\n if (!isPlainFunction(value)) return value;\n latestFns.set(key, value);\n let wrapper = wrappers.get(key);\n if (!wrapper) {\n wrapper = (...args: unknown[]) => latestFns.get(key)?.(...args);\n wrappers.set(key, wrapper);\n }\n return wrapper;\n };\n\n const resolveContext = (raw: Record<string, unknown>): Record<string, unknown> => {\n const resolved: Record<string, unknown> = {};\n for (const key of Object.keys(raw)) {\n resolved[key] = resolveValue(key, raw[key]);\n }\n return resolved;\n };\n\n const initialContextRaw = options.context() as Record<string, unknown>;\n const initialContext = resolveContext(initialContextRaw);\n const currentProps = signal<Record<string, unknown>>(initialContext);\n\n const scope = computed(() => {\n const props = currentProps() as { id?: unknown; ids?: unknown; getRootNode?: unknown };\n const getRootNode = props.getRootNode as (() => ShadowRoot | Document | Element) | undefined;\n return createScope({\n id: props.id as string | undefined,\n ids: props.ids as Record<string, unknown> | undefined,\n getRootNode: getRootNode ?? (() => document),\n });\n });\n\n const props = computed(() => {\n return (\n machine.props?.({ props: compact(currentProps()) as never, scope: scope() }) ?? currentProps()\n );\n });\n\n const prop = ((key: string) => props()[key]) as Service<TSchema>[\"prop\"];\n\n const createBindable = <T>(params: () => BindableParams<T>): Bindable<T> => {\n const initialParams = params();\n const initial =\n initialParams.value !== undefined ? initialParams.value : initialParams.defaultValue;\n const value = signal<T | undefined>(initial);\n const ref = { current: initial };\n let defaultEffectInitialized = false;\n let defaultHydrationChecked = false;\n let userTouched = false;\n\n effect(() => {\n const nextParams = params();\n const nextDefault = nextParams.defaultValue;\n const controlled = nextParams.value !== undefined;\n if (!defaultEffectInitialized) {\n defaultEffectInitialized = true;\n return;\n }\n if (userTouched || controlled || defaultHydrationChecked) return;\n defaultHydrationChecked = true;\n if (nextDefault === undefined) return;\n if (!(nextParams.isEqual ?? Object.is)(untracked(value), nextDefault)) {\n value.set(nextDefault);\n }\n });\n\n const get = (): T => {\n const controlled = params().value !== undefined;\n const next = controlled ? params().value : value();\n ref.current = next;\n return next as T;\n };\n\n return {\n initial,\n ref,\n get,\n set(nextValue) {\n const commit = () => {\n const prev = get();\n const next = isFunction(nextValue) ? (nextValue as (prev: T) => T)(prev) : nextValue;\n if (params().debug) {\n console.log(`[bindable > ${params().debug}] setValue`, { next, prev });\n }\n if (params().value === undefined) {\n userTouched = true;\n value.set(next);\n }\n if (!(params().isEqual ?? Object.is)(next, prev)) {\n params().onChange?.(next, prev);\n }\n };\n if (params().sync) untracked(commit);\n else commit();\n },\n invoke(nextValue, prevValue) {\n params().onChange?.(nextValue, prevValue);\n },\n hash(valueToHash) {\n return params().hash?.(valueToHash) ?? String(valueToHash);\n },\n };\n };\n\n createBindable.cleanup = (fn: VoidFunction): void => {\n destroyRef.onDestroy(fn);\n };\n\n createBindable.ref = <T>(defaultValue: T) => {\n let value = defaultValue;\n return {\n get: () => value,\n set: (next: T) => {\n value = next;\n },\n };\n };\n\n const context = machine.context?.({\n prop,\n bindable: createBindable,\n get scope() {\n return scope();\n },\n flush,\n getContext: () => ctx,\n getComputed: () => computedValue,\n getRefs: () => refs,\n getEvent: () => getEvent(),\n } as never);\n\n const ctx = {\n get(key: string) {\n return (context as Record<string, Bindable<unknown>> | undefined)?.[key]?.get();\n },\n set(key: string, value: unknown) {\n (context as Record<string, Bindable<unknown>> | undefined)?.[key]?.set(value);\n },\n initial(key: string) {\n return (context as Record<string, Bindable<unknown>> | undefined)?.[key]?.initial;\n },\n hash(key: string) {\n const binding = (context as Record<string, Bindable<unknown>> | undefined)?.[key];\n return binding?.hash(binding.get());\n },\n } as Service<TSchema>[\"context\"];\n\n const refs = (() => {\n const values = machine.refs?.({ prop, context: ctx } as never) ?? {};\n const ref = { current: values as Record<string, unknown> };\n return {\n get(key: string) {\n return ref.current[key];\n },\n set(key: string, value: unknown) {\n ref.current[key] = value;\n },\n } as Service<TSchema>[\"refs\"];\n })();\n\n let status = MachineStatus.NotStarted;\n let transitionRef: Transition<TSchema> | null = null;\n let previousEvent: EventFor<TSchema> | null = null;\n let currentEvent = { type: \"\" } as EventFor<TSchema>;\n let pendingEvents: Array<EventFor<TSchema>> = [];\n let effects = new Map<string, VoidFunction>();\n const trackedEffects = new Set<EffectRef>();\n const listeners = new Set<(state: StateFor<TSchema>) => void>();\n\n let stateSignal: WritableSignal<StateFor<TSchema>>;\n\n const getEvent = () =>\n ({\n ...currentEvent,\n current: () => currentEvent,\n previous: () => previousEvent,\n }) as Service<TSchema>[\"event\"];\n\n const getState = (): StateFor<TSchema> =>\n ({\n ...state,\n matches(...values: TSchema[\"state\"][]) {\n const current = state.get();\n return values.some((value) => matchesState(current as string | undefined, value as string));\n },\n hasTag(tag: TSchema[\"tag\"]) {\n return hasTag(machine, state.get(), tag);\n },\n }) as StateFor<TSchema>;\n\n const notifyState = (): void => {\n const next = getState();\n stateSignal.set(next);\n for (const listener of listeners) listener(next);\n };\n\n const getParams = () => ({\n state: getState(),\n context: ctx,\n event: getEvent(),\n prop,\n send,\n action,\n guard,\n track,\n refs,\n computed: computedValue,\n flush,\n get scope() {\n return scope();\n },\n choose,\n });\n\n const action = (keys: unknown): void => {\n const actionKeys = isFunction(keys) ? keys(getParams()) : keys;\n if (!actionKeys) return;\n const fns = toArray(actionKeys).map((key) => {\n const fn = (\n machine.implementations?.actions as Record<string, ((params: unknown) => void) | undefined>\n )?.[String(key)];\n if (!fn) warn(`[wirekyt] No implementation found for action \"${JSON.stringify(key)}\"`);\n return fn;\n });\n for (const fn of fns) {\n fn?.(getParams());\n }\n };\n\n const guard = (key: unknown): boolean | undefined => {\n if (isFunction(key)) return key(getParams()) as boolean;\n return (\n machine.implementations?.guards as Record<string, ((params: unknown) => boolean) | undefined>\n )?.[String(key)]?.(getParams());\n };\n\n const runEffects = (keys: unknown): VoidFunction | undefined => {\n const effectKeys = isFunction(keys) ? keys(getParams()) : keys;\n if (!effectKeys) return undefined;\n const fns = toArray(effectKeys).map((key) => {\n const fn = (\n machine.implementations?.effects as Record<\n string,\n ((params: unknown) => undefined | VoidFunction) | undefined\n >\n )?.[String(key)];\n if (!fn) warn(`[wirekyt] No implementation found for effect \"${JSON.stringify(key)}\"`);\n return fn;\n });\n const cleanups: VoidFunction[] = [];\n for (const fn of fns) {\n const cleanup = fn?.(getParams());\n if (cleanup) cleanups.push(cleanup);\n }\n return cleanups.length > 0\n ? () => {\n for (const cleanup of cleanups) cleanup();\n }\n : undefined;\n };\n\n const choose = (transitions: unknown): Transition<TSchema> | undefined => {\n return toArray(transitions as Transition<TSchema> | Transition<TSchema>[] | undefined).find(\n (transition) => {\n let result = !transition.guard;\n if (isString(transition.guard)) result = !!guard(transition.guard);\n else if (isFunction(transition.guard)) result = transition.guard(getParams() as never);\n return result;\n },\n );\n };\n\n const computedValue = ((key: string) => {\n ensure(machine.computed, () => `[wirekyt] No computed object found on machine`);\n const fn = (machine.computed as Record<string, ((params: unknown) => unknown) | undefined>)[\n key\n ];\n return fn?.({\n context: ctx,\n event: getEvent(),\n prop,\n refs,\n get scope() {\n return scope();\n },\n computed: computedValue,\n });\n }) as Service<TSchema>[\"computed\"];\n\n const track = (deps: Array<() => unknown>, fn: VoidFunction): void => {\n let initialized = false;\n let previous: unknown[] = [];\n const ref = effect(() => {\n const current = deps.map((dep) => dep());\n if (!initialized) {\n initialized = true;\n previous = current;\n return;\n }\n if (current.some((value, index) => !isEqual(previous[index], value))) {\n previous = current;\n fn();\n }\n });\n trackedEffects.add(ref);\n };\n\n const state = createBindable<TSchema[\"state\"]>(() => ({\n defaultValue: resolveStateValue(machine, machine.initialState({ prop })),\n onChange(nextState, prevState) {\n const { exiting, entering } = getExitEnterStates(\n machine,\n prevState,\n nextState,\n transitionRef?.reenter,\n );\n for (const item of exiting) {\n const cleanup = effects.get(item.path);\n cleanup?.();\n effects.delete(item.path);\n }\n for (const item of exiting) {\n action(item.state?.exit);\n }\n action(transitionRef?.actions);\n for (const item of entering) {\n const cleanup = runEffects(item.state?.effects);\n if (cleanup) {\n const existing = effects.get(item.path);\n effects.set(item.path, existing ? callAll(existing, cleanup) : cleanup);\n }\n }\n if (prevState === INIT_STATE) {\n action(machine.entry);\n const cleanup = runEffects(machine.effects);\n if (cleanup) {\n const existing = effects.get(INIT_STATE);\n effects.set(INIT_STATE, existing ? callAll(existing, cleanup) : cleanup);\n }\n }\n for (const item of entering) {\n action(item.state?.entry);\n }\n notifyState();\n },\n }));\n\n stateSignal = signal(getState());\n\n const send = (event: EventFor<TSchema>): void => {\n if (status === MachineStatus.Stopped) return;\n if (status !== MachineStatus.Started) {\n pendingEvents.push(event);\n return;\n }\n previousEvent = currentEvent;\n currentEvent = event;\n const currentState = untracked(() => state.get());\n const { transitions, source } = findTransition(machine, currentState, event.type);\n const transition = choose(transitions);\n if (!transition) return;\n transitionRef = transition;\n const target = resolveStateValue(machine, transition.target ?? currentState, source);\n if (target !== currentState) {\n state.set(target);\n } else if (transition.reenter) {\n state.invoke(currentState, currentState);\n } else {\n action(transition.actions);\n }\n };\n\n const setContext = (patch: Record<string, unknown>): void => {\n currentProps.update((previous) => ({ ...previous, ...patch }));\n notifyState();\n };\n\n const stop = (): void => {\n if (status === MachineStatus.Stopped) return;\n status = MachineStatus.Stopped;\n pendingEvents = [];\n for (const ref of trackedEffects) ref.destroy();\n trackedEffects.clear();\n for (const cleanup of effects.values()) cleanup();\n effects = new Map();\n transitionRef = null;\n action(machine.exit);\n listeners.clear();\n };\n\n const service: ExtendedService<TSchema> = {\n getStatus: () => status,\n get state() {\n return getState();\n },\n context: ctx,\n send,\n prop,\n get scope() {\n return scope();\n },\n refs,\n computed: computedValue,\n get event() {\n return getEvent();\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n setContext,\n stop,\n };\n\n let prevRawContext = initialContextRaw;\n let prevResolvedContext = initialContext;\n\n effect(() => {\n const nextRaw = options.context() as Record<string, unknown>;\n const nextKeys = new Set(Object.keys(nextRaw));\n for (const key of Object.keys(prevRawContext)) {\n nextKeys.add(key);\n }\n const patch: Record<string, unknown> = {};\n let hasChanges = false;\n const nextResolvedContext: Record<string, unknown> = {};\n for (const key of nextKeys) {\n const nextRawValue = nextRaw[key];\n const prevRawValue = prevRawContext[key];\n const nextResolvedValue = key in nextRaw ? resolveValue(key, nextRawValue) : undefined;\n if (key in nextRaw) {\n nextResolvedContext[key] = nextResolvedValue;\n }\n if (\n !Object.is(prevRawValue, nextRawValue) &&\n !Object.is(prevResolvedContext[key], nextResolvedValue)\n ) {\n patch[key] = nextResolvedValue;\n hasChanges = true;\n }\n }\n if (hasChanges) {\n service.setContext(patch);\n }\n prevRawContext = nextRaw;\n prevResolvedContext = nextResolvedContext;\n });\n\n machine.watch?.(getParams() as never);\n\n afterNextRender(() => {\n if (status === MachineStatus.Stopped) return;\n status = MachineStatus.Started;\n state.invoke(state.initial, INIT_STATE as TSchema[\"state\"]);\n const events = pendingEvents;\n pendingEvents = [];\n for (const event of events) {\n send(event);\n }\n });\n\n const api = computed(() => {\n void stateSignal();\n return options.connect(service, normalizeProps);\n });\n\n destroyRef.onDestroy(stop);\n\n return {\n state: stateSignal.asReadonly(),\n send: service.send as UseMachineReturn<StateFor<TSchema>, TApi, Service<TSchema>>[\"send\"],\n service,\n api,\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@wirekyt/angular",
3
+ "version": "0.0.2",
4
+ "description": "Angular adapter for Wirekyt",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "type": "module",
9
+ "sideEffects": false,
10
+ "publishConfig": {
11
+ "access": "public",
12
+ "provenance": true
13
+ },
14
+ "dependencies": {
15
+ "@internationalized/date": "^3.12.2",
16
+ "@internationalized/number": "^3.6.7",
17
+ "@wirekyt/dom": "workspace:*",
18
+ "tslib": "^2.3.0"
19
+ },
20
+ "peerDependencies": {
21
+ "@angular/common": ">=22.0.0",
22
+ "@angular/core": ">=22.0.0",
23
+ "@angular/forms": ">=22.0.0"
24
+ },
25
+ "module": "fesm2022/wirekyt-angular.mjs",
26
+ "typings": "types/wirekyt-angular.d.ts",
27
+ "exports": {
28
+ "./package.json": {
29
+ "default": "./package.json"
30
+ },
31
+ ".": {
32
+ "types": "./types/wirekyt-angular.d.ts",
33
+ "default": "./fesm2022/wirekyt-angular.mjs"
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,44 @@
1
+ import { MachineSchema, Machine, Service } from '@wirekyt/dom';
2
+ export { mergeProps } from '@wirekyt/dom';
3
+ import { ElementRef, Renderer2, DestroyRef, Signal } from '@angular/core';
4
+ import * as _wirekyt_dom_types from '@wirekyt/dom/types';
5
+ import { JSX, NormalizeProps } from '@wirekyt/dom/types';
6
+
7
+ type WireProps = Record<string, unknown>;
8
+ interface BindPropsOptions {
9
+ elementRef: ElementRef<HTMLElement>;
10
+ renderer: Renderer2;
11
+ destroyRef: DestroyRef;
12
+ props: () => WireProps | undefined;
13
+ }
14
+ declare function bindProps(options: BindPropsOptions): void;
15
+
16
+ type PropTypes = JSX.IntrinsicElements & {
17
+ element: JSX.HTMLAttributes<HTMLElement> & Record<string, unknown>;
18
+ style: JSX.CSSProperties;
19
+ };
20
+ declare const normalizeProps: _wirekyt_dom_types.NormalizeProps<PropTypes>;
21
+
22
+ type Assign<T, U> = Omit<T, keyof U> & U;
23
+ type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
24
+ type MaybePromise<T> = T | Promise<T>;
25
+ interface UseMachineReturn<TState, TApi, TService> {
26
+ readonly state: Signal<TState>;
27
+ readonly send: TService extends {
28
+ send: infer TSend;
29
+ } ? TSend : never;
30
+ readonly service: TService;
31
+ readonly api: Signal<TApi>;
32
+ }
33
+ interface UseMachineOptions<TSchema extends MachineSchema, TApi> {
34
+ machine: Machine<TSchema>;
35
+ context: () => Partial<TSchema["props"]>;
36
+ connect: (service: Service<TSchema>, normalizeProps: NormalizeProps<PropTypes>) => TApi;
37
+ }
38
+
39
+ type StateFor<TSchema extends MachineSchema> = Service<TSchema>["state"];
40
+ declare function useMachine<TSchema extends MachineSchema, TApi>(options: UseMachineOptions<TSchema, TApi>): UseMachineReturn<StateFor<TSchema>, TApi, Service<TSchema>>;
41
+
42
+ export { bindProps, normalizeProps, useMachine };
43
+ export type { Assign, BindPropsOptions, MaybePromise, Optional, PropTypes, UseMachineOptions, UseMachineReturn };
44
+ //# sourceMappingURL=wirekyt-angular.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wirekyt-angular.d.ts","sources":["../../src/core/bind-props.ts","../../src/core/normalize-props.ts","../../src/core/types.ts","../../src/core/machine.ts"],"mappings":";;;;;;AAQA,KAAK,SAAS,GAAG,MAAM;UAEN,gBAAgB;AAC/B,gBAAY,UAAU,CAAC,WAAW;cACxB,SAAS;gBACP,UAAU;AACtB,iBAAa,SAAS;AACvB;AA0FD,iBAAgB,SAAS,UAAU,gBAAgB;;KCvGvC,SAAS,GAAG,GAAG,CAAC,iBAAiB;AAC3C,aAAS,GAAG,CAAC,cAAc,CAAC,WAAW,IAAI,MAAM;AACjD,WAAO,GAAG,CAAC,aAAa;;AAG1B,cAAa,cAAc,EAAA,kBAAA,CAAA,cAAA,CAAA,SAAA;;KCDf,MAAM,SAAS,IAAI;AACzB,KAAM,QAAQ,yBAAyB,IAAI,CAAC,OAAO,UAAU,IAAI;AACjE,KAAM,YAAY,UAAU,OAAO;UAExB,gBAAgB;AAC/B,oBAAgB,MAAM;AACtB;;;AACA;AACA,kBAAc,MAAM;AACrB;UAEgB,iBAAiB,iBAAiB,aAAa;AAC9D,aAAS,OAAO;mBACD,OAAO;AACtB,uBAAmB,OAAO,2BAA2B,cAAc,CAAC,SAAS;AAC9E;;ACsBD,KAAK,QAAQ,iBAAiB,aAAa,IAAI,OAAO;AAetD,iBAAgB,UAAU,iBAAiB,aAAa,iBAC7C,iBAAiB,kBACzB,gBAAgB,CAAC,QAAQ,iBAAiB,OAAO;;;;","names":[]}
package/package.json CHANGED
@@ -1,7 +1,31 @@
1
- {
2
- "name": "@wirekyt/angular",
3
- "version": "0.0.1",
4
- "publishConfig": {
5
- "access": "public"
6
- }
1
+ {
2
+ "name": "@wirekyt/angular",
3
+ "version": "0.0.2",
4
+ "description": "Angular adapter for Wirekyt",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "type": "module",
9
+ "sideEffects": false,
10
+ "publishConfig": {
11
+ "access": "public",
12
+ "provenance": true
13
+ },
14
+ "dependencies": {
15
+ "@internationalized/date": "^3.12.2",
16
+ "@internationalized/number": "^3.6.7",
17
+ "@wirekyt/dom": "0.0.2"
18
+ },
19
+ "peerDependencies": {
20
+ "@angular/common": ">=22.0.0",
21
+ "@angular/core": ">=22.0.0",
22
+ "@angular/forms": ">=22.0.0"
23
+ },
24
+ "scripts": {
25
+ "build": "ng build @wirekyt/angular",
26
+ "test": "vitest",
27
+ "lint": "oxlint",
28
+ "format": "oxfmt --write",
29
+ "typecheck": "tsc --noEmit"
30
+ }
7
31
  }