@wirestate/lit 0.6.0 → 0.7.0-experimental.1

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 (99) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/README.md +246 -10
  3. package/cjs/development/index.js +788 -58
  4. package/cjs/development/index.js.map +1 -1
  5. package/cjs/production/index.js +1 -1
  6. package/cjs/production/index.js.map +1 -1
  7. package/esm/development/commands/on-command-controller.js +59 -0
  8. package/esm/development/commands/on-command-controller.js.map +1 -0
  9. package/esm/development/commands/on-command.js +46 -0
  10. package/esm/development/commands/on-command.js.map +1 -0
  11. package/esm/development/commands/use-on-command.js +31 -0
  12. package/esm/development/commands/use-on-command.js.map +1 -0
  13. package/esm/development/consumption/injection.js +43 -9
  14. package/esm/development/consumption/injection.js.map +1 -1
  15. package/esm/development/consumption/use-injection.js +40 -6
  16. package/esm/development/consumption/use-injection.js.map +1 -1
  17. package/esm/development/context/ioc-context.js +12 -2
  18. package/esm/development/context/ioc-context.js.map +1 -1
  19. package/esm/development/error/error-code.js +4 -0
  20. package/esm/development/error/error-code.js.map +1 -0
  21. package/esm/development/events/on-event-controller.js +68 -0
  22. package/esm/development/events/on-event-controller.js.map +1 -0
  23. package/esm/development/events/on-event.js +68 -0
  24. package/esm/development/events/on-event.js.map +1 -0
  25. package/esm/development/events/use-on-events.js +42 -0
  26. package/esm/development/events/use-on-events.js.map +1 -0
  27. package/esm/development/index.js +16 -4
  28. package/esm/development/index.js.map +1 -1
  29. package/esm/development/provision/injectables-provide.js +47 -0
  30. package/esm/development/provision/injectables-provide.js.map +1 -0
  31. package/esm/development/provision/injectables-provider-controller.js +123 -0
  32. package/esm/development/provision/injectables-provider-controller.js.map +1 -0
  33. package/esm/development/provision/ioc-provide.js +58 -0
  34. package/esm/development/provision/ioc-provide.js.map +1 -0
  35. package/esm/development/provision/ioc-provider-controller.js +75 -0
  36. package/esm/development/provision/ioc-provider-controller.js.map +1 -0
  37. package/esm/development/provision/use-injectables-provider.js +27 -0
  38. package/esm/development/provision/use-injectables-provider.js.map +1 -0
  39. package/esm/development/provision/use-ioc-provision.js +27 -0
  40. package/esm/development/provision/use-ioc-provision.js.map +1 -0
  41. package/esm/development/queries/on-query-controller.js +59 -0
  42. package/esm/development/queries/on-query-controller.js.map +1 -0
  43. package/esm/development/queries/on-query.js +46 -0
  44. package/esm/development/queries/on-query.js.map +1 -0
  45. package/esm/development/queries/use-on-query.js +31 -0
  46. package/esm/development/queries/use-on-query.js.map +1 -0
  47. package/esm/production/commands/on-command-controller.js +1 -0
  48. package/esm/production/commands/on-command-controller.js.map +1 -0
  49. package/esm/production/commands/on-command.js +1 -0
  50. package/esm/production/commands/on-command.js.map +1 -0
  51. package/esm/production/commands/use-on-command.js +1 -0
  52. package/esm/production/commands/use-on-command.js.map +1 -0
  53. package/esm/production/consumption/injection.js +1 -1
  54. package/esm/production/consumption/injection.js.map +1 -1
  55. package/esm/production/consumption/use-injection.js +1 -1
  56. package/esm/production/consumption/use-injection.js.map +1 -1
  57. package/esm/production/context/ioc-context.js +1 -1
  58. package/esm/production/context/ioc-context.js.map +1 -1
  59. package/esm/production/error/error-code.js +1 -0
  60. package/esm/production/error/error-code.js.map +1 -0
  61. package/esm/production/events/on-event-controller.js +1 -0
  62. package/esm/production/events/on-event-controller.js.map +1 -0
  63. package/esm/production/events/on-event.js +1 -0
  64. package/esm/production/events/on-event.js.map +1 -0
  65. package/esm/production/events/use-on-events.js +1 -0
  66. package/esm/production/events/use-on-events.js.map +1 -0
  67. package/esm/production/index.js +1 -1
  68. package/esm/production/provision/injectables-provide.js +1 -0
  69. package/esm/production/provision/injectables-provide.js.map +1 -0
  70. package/esm/production/provision/injectables-provider-controller.js +1 -0
  71. package/esm/production/provision/injectables-provider-controller.js.map +1 -0
  72. package/esm/production/provision/ioc-provide.js +1 -0
  73. package/esm/production/provision/ioc-provide.js.map +1 -0
  74. package/esm/production/provision/ioc-provider-controller.js +1 -0
  75. package/esm/production/provision/ioc-provider-controller.js.map +1 -0
  76. package/esm/production/provision/use-injectables-provider.js +1 -0
  77. package/esm/production/provision/use-injectables-provider.js.map +1 -0
  78. package/esm/production/provision/use-ioc-provision.js +1 -0
  79. package/esm/production/provision/use-ioc-provision.js.map +1 -0
  80. package/esm/production/queries/on-query-controller.js +1 -0
  81. package/esm/production/queries/on-query-controller.js.map +1 -0
  82. package/esm/production/queries/on-query.js +1 -0
  83. package/esm/production/queries/on-query.js.map +1 -0
  84. package/esm/production/queries/use-on-query.js +1 -0
  85. package/esm/production/queries/use-on-query.js.map +1 -0
  86. package/index.d.ts +730 -29
  87. package/package.json +1 -1
  88. package/esm/development/provision/container-provider-controller.js +0 -41
  89. package/esm/development/provision/container-provider-controller.js.map +0 -1
  90. package/esm/development/provision/services-provider-controller.js +0 -63
  91. package/esm/development/provision/services-provider-controller.js.map +0 -1
  92. package/esm/development/provision/use-container-provision.js +0 -9
  93. package/esm/development/provision/use-container-provision.js.map +0 -1
  94. package/esm/production/provision/container-provider-controller.js +0 -1
  95. package/esm/production/provision/container-provider-controller.js.map +0 -1
  96. package/esm/production/provision/services-provider-controller.js +0 -1
  97. package/esm/production/provision/services-provider-controller.js.map +0 -1
  98. package/esm/production/provision/use-container-provision.js +0 -1
  99. package/esm/production/provision/use-container-provision.js.map +0 -1
@@ -0,0 +1,42 @@
1
+ import { __spreadArray } from 'tslib';
2
+ import { OnEventController } from './on-event-controller.js';
3
+
4
+ /**
5
+ * Hook that subscribes to events for the host element's lifetime.
6
+ *
7
+ * @group Events
8
+ *
9
+ * @param host - The host element.
10
+ * @param options - Event handling options.
11
+ * @param options.handler - Event handler function.
12
+ * @param options.types - Event types to listen for, if null or undefined, all events will be handled.
13
+ * @returns An instance of {@link OnEventController}.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * class MyElement extends LitElement {
18
+ * private eventHandler = useOnEvents(this, {
19
+ * handler: (event) => console.log(event),
20
+ * });
21
+ * }
22
+ * ```
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * class MyElement extends LitElement {
27
+ * private eventHandler = useOnEvents(this, {
28
+ * types: ["MY_EVENT"],
29
+ * handler: (event) => console.log(event),
30
+ * });
31
+ * }
32
+ * ```
33
+ */
34
+ function useOnEvents(host, _a) {
35
+ var types = _a.types,
36
+ handler = _a.handler;
37
+ var normalized = types ? Array.isArray(types) ? __spreadArray([], types, true) : [types] : null;
38
+ return new OnEventController(host, normalized, handler);
39
+ }
40
+
41
+ export { useOnEvents };
42
+ //# sourceMappingURL=use-on-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-events.js","sources":["../../../../../../../../src/wirestate-lit/events/use-on-events.ts"],"sourcesContent":[null],"names":["useOnEvents","host","_a","types","handler","normalized","Array","isArray","OnEventController"],"mappings":";;;AAuBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BG;AACG,SAAUA,WAAWA,CACzBC,IAAqB,EACrBC,EAAsC,EAAA;MAApCC,KAAK,GAAAD,EAAA,CAAAC,KAAA;IAAEC,OAAO,GAAAF,EAAA,CAAAE,OAAA;EAEhB,IAAMC,UAAU,GAAuCF,KAAK,GACxDG,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,qBACbA,KAAkC,EAAA,IAAA,CAAA,GACvC,CAACA,KAAkB,CAAC,GACtB,IAAI;EAER,OAAO,IAAIK,iBAAiB,CAAIP,IAAI,EAAEI,UAAU,EAAED,OAAO,CAAC;AAC5D;;;;"}
@@ -1,7 +1,19 @@
1
1
  export { injection } from './consumption/injection.js';
2
2
  export { useInjection } from './consumption/use-injection.js';
3
- export { ContainerContext } from './context/ioc-context.js';
4
- export { ContainerProviderController } from './provision/container-provider-controller.js';
5
- export { ServicesProviderController } from './provision/services-provider-controller.js';
6
- export { useContainerProvision } from './provision/use-container-provision.js';
3
+ export { onCommand } from './commands/on-command.js';
4
+ export { OnCommandController } from './commands/on-command-controller.js';
5
+ export { useOnCommand } from './commands/use-on-command.js';
6
+ export { onEvent } from './events/on-event.js';
7
+ export { OnEventController } from './events/on-event-controller.js';
8
+ export { useOnEvents } from './events/use-on-events.js';
9
+ export { onQuery } from './queries/on-query.js';
10
+ export { OnQueryController } from './queries/on-query-controller.js';
11
+ export { useOnQuery } from './queries/use-on-query.js';
12
+ export { IocContextObject } from './context/ioc-context.js';
13
+ export { iocProvide } from './provision/ioc-provide.js';
14
+ export { IocProviderController } from './provision/ioc-provider-controller.js';
15
+ export { injectablesProvide } from './provision/injectables-provide.js';
16
+ export { InjectablesProviderController } from './provision/injectables-provider-controller.js';
17
+ export { useInjectablesProvider } from './provision/use-injectables-provider.js';
18
+ export { useIocProvision } from './provision/use-ioc-provision.js';
7
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,47 @@
1
+ import { InjectablesProviderController } from './injectables-provider-controller.js';
2
+
3
+ /**
4
+ * Decorator that binds a set of injectables to the nearest IoC container for the host element's lifetime.
5
+ *
6
+ * @remarks
7
+ * Entries are bound when the host connects and unbound when it disconnects.
8
+ *
9
+ * @group Provision
10
+ *
11
+ * @param options - Provisioning options.
12
+ * @returns An instance of {@link InjectablesProviderDecorator}.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * class MyComponent extends LitElement {
17
+ * @injectablesProvide({ entries: [AuthService, UserService], activate: [AuthService] })
18
+ * public controller!: InjectablesProviderController<MyComponent>;
19
+ * }
20
+ * ```
21
+ */
22
+ function injectablesProvide(options) {
23
+ return function (protoOrTarget, nameOrContext) {
24
+ if (typeof nameOrContext === "object") {
25
+ // Standard decorators:
26
+ nameOrContext.addInitializer(function () {
27
+ protoOrTarget.set.call(this, new InjectablesProviderController(this, options));
28
+ });
29
+ } else {
30
+ var controller_1;
31
+ protoOrTarget.constructor.addInitializer(function (element) {
32
+ controller_1 = new InjectablesProviderController(element, options);
33
+ });
34
+ return {
35
+ get: function () {
36
+ return controller_1;
37
+ },
38
+ set: function () {},
39
+ configurable: true,
40
+ enumerable: true
41
+ };
42
+ }
43
+ };
44
+ }
45
+
46
+ export { injectablesProvide };
47
+ //# sourceMappingURL=injectables-provide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectables-provide.js","sources":["../../../../../../../../src/wirestate-lit/provision/injectables-provide.ts"],"sourcesContent":[null],"names":["injectablesProvide","options","protoOrTarget","nameOrContext","addInitializer","set","call","InjectablesProviderController","controller_1","constructor","element","get","configurable","enumerable"],"mappings":";;AA2BA;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAUA,kBAAkBA,CAChCC,OAA6C,EAAA;AAE7C,EAAA,OAAQ,UACNC,aAA4G,EAC5GC,aAEkG,EAAA;AAElG,IAAA,IAAI,OAAOA,aAAa,KAAK,QAAQ,EAAE;AACrC;MACAA,aAAa,CAACC,cAAc,CAAC,YAAA;AAC3BF,QAAAA,aAAa,CAACG,GAAG,CAACC,IAAI,CAAC,IAAI,EAAE,IAAIC,6BAA6B,CAAC,IAAuB,EAAEN,OAAO,CAAC,CAAC;AACnG,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,MAAM;AACL,MAAA,IAAIO,YAAmD;AAEtDN,MAAAA,aAAa,CAACO,WAAsC,CAACL,cAAc,CAAC,UAACM,OAAwB,EAAA;AAC5FF,QAAAA,YAAU,GAAG,IAAID,6BAA6B,CAACG,OAAY,EAAET,OAAO,CAAC;AACvE,MAAA,CAAC,CAAC;MAEF,OAAO;QACLU,GAAG,EAAA,YAAA;AACD,UAAA,OAAOH,YAA8C;QACvD,CAAC;AACDH,QAAAA,GAAG,eAAU,CAAC;AACdO,QAAAA,YAAY,EAAE,IAAI;AAClBC,QAAAA,UAAU,EAAE;OACb;AACH,IAAA;EACF,CAAC;AACH;;;;"}
@@ -0,0 +1,123 @@
1
+ import { ContextConsumer } from '@lit/context';
2
+ import { WirestateError, applySeeds, bindEntry, getEntryToken, unapplySeeds } from '@wirestate/core';
3
+ import { IocContextObject } from '../context/ioc-context.js';
4
+ import { ERROR_CODE_INVALID_ARGUMENTS } from '../error/error-code.js';
5
+
6
+ /**
7
+ * Controller that binds injectables to an IoC container for the host element's lifetime.
8
+ *
9
+ * @remarks
10
+ * Entries are bound when the host connects and unbound when it disconnects.
11
+ * If no `into` context is provided, it uses the nearest {@link IocProviderController}.
12
+ * Seeds are applied before entries are bound.
13
+ *
14
+ * @group Provision
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * class MyComponent extends LitElement {
19
+ * private services = new InjectablesProviderController(this, {
20
+ * entries: [AuthService, UserService],
21
+ * activate: [AuthService],
22
+ * seeds: [[AuthService, { role: "admin" }]],
23
+ * });
24
+ * }
25
+ * ```
26
+ */
27
+ var InjectablesProviderController = /** @class */function () {
28
+ /**
29
+ * @param host - The host element.
30
+ * @param options - Provisioning options.
31
+ * @param options.entries - List of service entries to bind to the container.
32
+ * @param options.into - Target IoC context; if omitted, uses the nearest provider context.
33
+ * @param options.activate - List of service identifiers to activate immediately after binding.
34
+ * @param options.seeds - Seed data applied before binding.
35
+ */
36
+ function InjectablesProviderController(host, options) {
37
+ var _this = this;
38
+ var _a, _b, _c;
39
+ this.host = host;
40
+ /**
41
+ * Tracks the context to which entries are currently bound, for correct cleanup on disconnect.
42
+ */
43
+ this.boundContext = null;
44
+ this.host.addController(this);
45
+ this.entries = options.entries;
46
+ this.activate = (_a = options.activate) !== null && _a !== void 0 ? _a : null;
47
+ this.seeds = (_b = options.seeds) !== null && _b !== void 0 ? _b : null;
48
+ this.into = (_c = options.into) !== null && _c !== void 0 ? _c : null;
49
+ if (!this.into) {
50
+ // subscribe: false — binding happens once per connect, not on every revision update.
51
+ this.consumer = new ContextConsumer(host, {
52
+ context: IocContextObject,
53
+ subscribe: false,
54
+ callback: function (context) {
55
+ if (!host.isConnected) {
56
+ return;
57
+ }
58
+ _this.bind(context);
59
+ }
60
+ });
61
+ }
62
+ }
63
+ InjectablesProviderController.prototype.hostConnected = function () {
64
+ var _a;
65
+ if (!this.into) {
66
+ // ContextConsumer with subscribe:false only invokes the user callback once (provided flag stays true
67
+ // after disconnect). On reconnect we fall back to the cached consumer.value so bind() still fires.
68
+ if ((_a = this.consumer) === null || _a === void 0 ? void 0 : _a.value) {
69
+ this.bind(this.consumer.value);
70
+ }
71
+ return;
72
+ }
73
+ var context = typeof this.into === "function" ? this.into() : this.into;
74
+ if (!context) {
75
+ throw new WirestateError(ERROR_CODE_INVALID_ARGUMENTS, "InjectablesProviderController: the 'into' option resolved to null or undefined. " + "Ensure the value or resolver function returns a valid IocContext.");
76
+ }
77
+ this.bind(context);
78
+ };
79
+ InjectablesProviderController.prototype.hostDisconnected = function () {
80
+ if (!this.boundContext) {
81
+ return;
82
+ }
83
+ this.unbind(this.boundContext);
84
+ };
85
+ InjectablesProviderController.prototype.bind = function (context) {
86
+ if (this.boundContext) {
87
+ // Re-binding without unbinding first would leave stale entries; unbind the previous context.
88
+ this.unbind(this.boundContext);
89
+ }
90
+ this.boundContext = context;
91
+ // Seeds must be applied before binding so @Inject(SEEDS_TOKEN) resolves during activation.
92
+ if (this.seeds) {
93
+ applySeeds(context.container, this.seeds);
94
+ }
95
+ for (var _i = 0, _a = this.entries; _i < _a.length; _i++) {
96
+ var entry = _a[_i];
97
+ bindEntry(context.container, entry);
98
+ }
99
+ if (this.activate) {
100
+ for (var _b = 0, _c = this.activate; _b < _c.length; _b++) {
101
+ var token = _c[_b];
102
+ context.container.get(token);
103
+ }
104
+ }
105
+ };
106
+ InjectablesProviderController.prototype.unbind = function (context) {
107
+ for (var _i = 0, _a = this.entries; _i < _a.length; _i++) {
108
+ var entry = _a[_i];
109
+ var token = getEntryToken(entry);
110
+ if (context.container.isBound(token)) {
111
+ context.container.unbind(token);
112
+ }
113
+ }
114
+ if (this.seeds) {
115
+ unapplySeeds(context.container, this.seeds);
116
+ }
117
+ this.boundContext = null;
118
+ };
119
+ return InjectablesProviderController;
120
+ }();
121
+
122
+ export { InjectablesProviderController };
123
+ //# sourceMappingURL=injectables-provider-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectables-provider-controller.js","sources":["../../../../../../../../src/wirestate-lit/provision/injectables-provider-controller.ts"],"sourcesContent":[null],"names":["InjectablesProviderController","host","options","_this","boundContext","addController","entries","activate","_a","seeds","_b","into","_c","consumer","ContextConsumer","context","IocContextObject","subscribe","callback","isConnected","bind","prototype","hostConnected","value","WirestateError","ERROR_CODE_INVALID_ARGUMENTS","hostDisconnected","unbind","applySeeds","container","_i","length","entry","bindEntry","token","get","getEntryToken","isBound","unapplySeeds"],"mappings":";;;;;AAiDA;;;;;;;;;;;;;;;;;;;;AAoBG;AACH,IAAAA,6BAAA,gBAAA,YAAA;AAeE;;;;;;;AAOG;AACH,EAAA,SAAAA,6BAAAA,CACmBC,IAAO,EACxBC,OAA6C,EAAA;IAF/C,IAAAC,KAAA,GAAA,IAAA;;IACmB,IAAA,CAAAF,IAAI,GAAJA,IAAI;AAdvB;;AAEG;IACK,IAAA,CAAAG,YAAY,GAAsB,IAAI;AAgB5C,IAAA,IAAI,CAACH,IAAI,CAACI,aAAa,CAAC,IAAI,CAAC;AAE7B,IAAA,IAAI,CAACC,OAAO,GAAGJ,OAAO,CAACI,OAAO;AAC9B,IAAA,IAAI,CAACC,QAAQ,GAAG,CAAAC,EAAA,GAAAN,OAAO,CAACK,QAAQ,MAAA,IAAA,IAAAC,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,IAAI;AACxC,IAAA,IAAI,CAACC,KAAK,GAAG,CAAAC,EAAA,GAAAR,OAAO,CAACO,KAAK,MAAA,IAAA,IAAAC,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,IAAI;AAClC,IAAA,IAAI,CAACC,IAAI,GAAG,CAAAC,EAAA,GAAAV,OAAO,CAACS,IAAI,MAAA,IAAA,IAAAC,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,IAAI;AAEhC,IAAA,IAAI,CAAC,IAAI,CAACD,IAAI,EAAE;AACd;AACA,MAAA,IAAI,CAACE,QAAQ,GAAG,IAAIC,eAAe,CAACb,IAAI,EAAE;AACxCc,QAAAA,OAAO,EAAEC,gBAAgB;AACzBC,QAAAA,SAAS,EAAE,KAAK;AAChBC,QAAAA,QAAQ,EAAE,UAACH,OAAO,EAAA;AAChB,UAAA,IAAI,CAACd,IAAI,CAACkB,WAAW,EAAE;AACrB,YAAA;AACF,UAAA;AAIAhB,UAAAA,KAAI,CAACiB,IAAI,CAACL,OAAO,CAAC;AACpB,QAAA;AACD,OAAA,CAAC;AACJ,IAAA;AACF,EAAA;AAEOf,EAAAA,6BAAA,CAAAqB,SAAA,CAAAC,aAAa,GAApB,YAAA;;AAGE,IAAA,IAAI,CAAC,IAAI,CAACX,IAAI,EAAE;AACd;AACA;MACA,IAAI,MAAA,IAAI,CAACE,QAAQ,MAAA,IAAA,IAAAL,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEe,KAAK,EAAE;QACxB,IAAI,CAACH,IAAI,CAAC,IAAI,CAACP,QAAQ,CAACU,KAAK,CAAC;AAChC,MAAA;AAEA,MAAA;AACF,IAAA;AAEA,IAAA,IAAMR,OAAO,GAAsB,OAAO,IAAI,CAACJ,IAAI,KAAK,UAAU,GAAG,IAAI,CAACA,IAAI,EAAE,GAAG,IAAI,CAACA,IAAI;IAE5F,IAAI,CAACI,OAAO,EAAE;MACZ,MAAM,IAAIS,cAAc,CACtBC,4BAA4B,EAC5B,kFAAkF,GAChF,mEAAmE,CACtE;AACH,IAAA;AAEA,IAAA,IAAI,CAACL,IAAI,CAACL,OAAO,CAAC;EACpB,CAAC;AAEMf,EAAAA,6BAAA,CAAAqB,SAAA,CAAAK,gBAAgB,GAAvB,YAAA;AAGE,IAAA,IAAI,CAAC,IAAI,CAACtB,YAAY,EAAE;AACtB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACuB,MAAM,CAAC,IAAI,CAACvB,YAAY,CAAC;EAChC,CAAC;AAEOJ,EAAAA,6BAAA,CAAAqB,SAAA,CAAAD,IAAI,GAAZ,UAAaL,OAAmB,EAAA;IAC9B,IAAI,IAAI,CAACX,YAAY,EAAE;AACrB;AACA,MAAA,IAAI,CAACuB,MAAM,CAAC,IAAI,CAACvB,YAAY,CAAC;AAChC,IAAA;IAEA,IAAI,CAACA,YAAY,GAAGW,OAAO;AAI3B;IACA,IAAI,IAAI,CAACN,KAAK,EAAE;MACdmB,UAAU,CAACb,OAAO,CAACc,SAAS,EAAE,IAAI,CAACpB,KAAK,CAAC;AAC3C,IAAA;AAEA,IAAA,KAAoB,IAAAqB,EAAA,GAAA,CAAY,EAAZtB,EAAA,GAAA,IAAI,CAACF,OAAO,EAAZwB,EAAA,GAAAtB,EAAA,CAAAuB,MAAY,EAAZD,EAAA,EAAY,EAAE;AAA7B,MAAA,IAAME,KAAK,GAAAxB,EAAA,CAAAsB,EAAA,CAAA;AACdG,MAAAA,SAAS,CAAClB,OAAO,CAACc,SAAS,EAAEG,KAAK,CAAC;AACrC,IAAA;IAEA,IAAI,IAAI,CAACzB,QAAQ,EAAE;AACjB,MAAA,KAAoB,IAAAG,EAAA,GAAA,CAAa,EAAbE,EAAA,GAAA,IAAI,CAACL,QAAQ,EAAbG,EAAA,GAAAE,EAAA,CAAAmB,MAAa,EAAbrB,EAAA,EAAa,EAAE;AAA9B,QAAA,IAAMwB,KAAK,GAAAtB,EAAA,CAAAF,EAAA,CAAA;AACdK,QAAAA,OAAO,CAACc,SAAS,CAACM,GAAG,CAACD,KAAK,CAAC;AAC9B,MAAA;AACF,IAAA;EACF,CAAC;AAEOlC,EAAAA,6BAAA,CAAAqB,SAAA,CAAAM,MAAM,GAAd,UAAeZ,OAAmB,EAAA;AAGhC,IAAA,KAAoB,IAAAe,EAAA,GAAA,CAAY,EAAZtB,EAAA,GAAA,IAAI,CAACF,OAAO,EAAZwB,EAAA,GAAAtB,EAAA,CAAAuB,MAAY,EAAZD,EAAA,EAAY,EAAE;AAA7B,MAAA,IAAME,KAAK,GAAAxB,EAAA,CAAAsB,EAAA,CAAA;AACd,MAAA,IAAMI,KAAK,GAAsBE,aAAa,CAACJ,KAAK,CAAC;MAErD,IAAIjB,OAAO,CAACc,SAAS,CAACQ,OAAO,CAACH,KAAK,CAAC,EAAE;AACpCnB,QAAAA,OAAO,CAACc,SAAS,CAACF,MAAM,CAACO,KAAK,CAAC;AACjC,MAAA;AACF,IAAA;IAEA,IAAI,IAAI,CAACzB,KAAK,EAAE;MACd6B,YAAY,CAACvB,OAAO,CAACc,SAAS,EAAE,IAAI,CAACpB,KAAK,CAAC;AAC7C,IAAA;IAEA,IAAI,CAACL,YAAY,GAAG,IAAI;EAC1B,CAAC;AACH,EAAA,OAAAJ,6BAAC;AAAD,CAAC;;;;"}
@@ -0,0 +1,58 @@
1
+ import { IocProviderController } from './ioc-provider-controller.js';
2
+
3
+ /**
4
+ * Decorator that provides an IoC container to child components.
5
+ *
6
+ * @remarks
7
+ * The container is provided via Lit context. It is created (or used from options) when the host connects.
8
+ *
9
+ * @group Provision
10
+ *
11
+ * @param options - Provisioning options.
12
+ * @param options.container - Optional existing container to use, if not provided, a new one will be created.
13
+ * @param options.seed - Optional seed data to apply to the container.
14
+ * @returns An instance of {@link IocProviderDecorator}.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * class MyRootElement extends LitElement {
19
+ * @iocProvide({ seed: { someData: "value" } })
20
+ * private ioc!: IocProviderController;
21
+ * }
22
+ * ```
23
+ */
24
+ function iocProvide(_a) {
25
+ var _b = _a === void 0 ? {} : _a,
26
+ container = _b.container,
27
+ seed = _b.seed;
28
+ return function (protoOrTarget, nameOrContext) {
29
+ if (typeof nameOrContext === "object") {
30
+ // Standard decorators:
31
+ nameOrContext.addInitializer(function () {
32
+ protoOrTarget.set.call(this, new IocProviderController(this, {
33
+ container: container,
34
+ seed: seed
35
+ }));
36
+ });
37
+ } else {
38
+ var controller_1;
39
+ protoOrTarget.constructor.addInitializer(function (element) {
40
+ controller_1 = new IocProviderController(element, {
41
+ container: container,
42
+ seed: seed
43
+ });
44
+ });
45
+ return {
46
+ get: function () {
47
+ return controller_1;
48
+ },
49
+ set: function () {},
50
+ configurable: true,
51
+ enumerable: true
52
+ };
53
+ }
54
+ };
55
+ }
56
+
57
+ export { iocProvide };
58
+ //# sourceMappingURL=ioc-provide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ioc-provide.js","sources":["../../../../../../../../src/wirestate-lit/provision/ioc-provide.ts"],"sourcesContent":[null],"names":["iocProvide","_a","_b","container","seed","protoOrTarget","nameOrContext","addInitializer","set","call","IocProviderController","controller_1","constructor","element","get","configurable","enumerable"],"mappings":";;AA2BA;;;;;;;;;;;;;;;;;;;;AAoBG;AACG,SAAUA,UAAUA,CAA4BC,EAGlB,EAAA;EAHkB,IAAAC,EAAA,GAAAD,EAAA,KAAA,MAAA,GAGpB,EAAE,GAAAA,EAAA;IAFlCE,SAAS,GAAAD,EAAA,CAAAC,SAAA;IACTC,IAAI,GAAAF,EAAA,CAAAE,IAAA;AAEJ,EAAA,OAAQ,UACNC,aAAsF,EACtFC,aAAqG,EAAA;AAErG,IAAA,IAAI,OAAOA,aAAa,KAAK,QAAQ,EAAE;AACrC;MACAA,aAAa,CAACC,cAAc,CAAC,YAAA;QAC3BF,aAAa,CAACG,GAAG,CAACC,IAAI,CAAC,IAAI,EAAE,IAAIC,qBAAqB,CAAC,IAAoB,EAAE;AAAEP,UAAAA,SAAS,EAAAA,SAAA;AAAEC,UAAAA,IAAI,EAAAA;AAAA,SAAE,CAAC,CAAC;AACpG,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,MAAM;AACL,MAAA,IAAIO,YAA2C;AAE9CN,MAAAA,aAAa,CAACO,WAAsC,CAACL,cAAc,CAAC,UAACM,OAAwB,EAAA;AAC5FF,QAAAA,YAAU,GAAG,IAAID,qBAAqB,CAACG,OAAY,EAAE;AAAEV,UAAAA,SAAS,EAAAA,SAAA;AAAEC,UAAAA,IAAI,EAAAA;AAAA,SAAE,CAAC;AAC3E,MAAA,CAAC,CAAC;MAEF,OAAO;QACLU,GAAG,EAAA,YAAA;AACD,UAAA,OAAOH,YAAsC;QAC/C,CAAC;AACDH,QAAAA,GAAG,eAAU,CAAC;AACdO,QAAAA,YAAY,EAAE,IAAI;AAClBC,QAAAA,UAAU,EAAE;OACb;AACH,IAAA;EACF,CAAC;AACH;;;;"}
@@ -0,0 +1,75 @@
1
+ import { ContextProvider } from '@lit/context';
2
+ import { applySharedSeed, createContainer } from '@wirestate/core';
3
+ import { IocContextObject } from '../context/ioc-context.js';
4
+
5
+ /**
6
+ * Controller that provides an IoC container context to the host element and its children.
7
+ *
8
+ * @remarks
9
+ * It manages the lifecycle of the container and handles revision updates to notify consumers.
10
+ * The container is created (or used from options) when the controller is instantiated.
11
+ * Seed data is applied when the host connects.
12
+ *
13
+ * @group Provision
14
+ */
15
+ var IocProviderController = /** @class */function () {
16
+ /**
17
+ * @param host - The host element.
18
+ * @param options - Provisioning options.
19
+ * @param options.container - Optional existing container to use. If not provided, a new one will be created.
20
+ * @param options.seed - Optional seed data to apply to the container.
21
+ */
22
+ function IocProviderController(host, _a) {
23
+ var _b = _a === void 0 ? {} : _a,
24
+ container = _b.container,
25
+ seed = _b.seed;
26
+ var _this = this;
27
+ this.host = host;
28
+ this.revision = 1;
29
+ this.host.addController(this);
30
+ this.container = container !== null && container !== void 0 ? container : createContainer();
31
+ this.seed = seed;
32
+ this.provider = new ContextProvider(host, {
33
+ context: IocContextObject,
34
+ initialValue: {
35
+ container: this.container,
36
+ revision: this.revision,
37
+ nextRevision: function () {
38
+ return _this.nextRevision();
39
+ }
40
+ }
41
+ });
42
+ }
43
+ Object.defineProperty(IocProviderController.prototype, "value", {
44
+ /**
45
+ * @returns Current {@link IocContext} value served to child consumers.
46
+ */
47
+ get: function () {
48
+ return this.provider.value;
49
+ },
50
+ enumerable: false,
51
+ configurable: true
52
+ });
53
+ IocProviderController.prototype.hostConnected = function () {
54
+ if (this.seed) {
55
+ applySharedSeed(this.container, this.seed);
56
+ }
57
+ };
58
+ IocProviderController.prototype.hostDisconnected = function () {};
59
+ IocProviderController.prototype.nextRevision = function () {
60
+ var _this = this;
61
+ this.revision += 1;
62
+ this.provider.setValue({
63
+ container: this.container,
64
+ revision: this.revision,
65
+ nextRevision: function () {
66
+ return _this.nextRevision();
67
+ }
68
+ });
69
+ return this.revision;
70
+ };
71
+ return IocProviderController;
72
+ }();
73
+
74
+ export { IocProviderController };
75
+ //# sourceMappingURL=ioc-provider-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ioc-provider-controller.js","sources":["../../../../../../../../src/wirestate-lit/provision/ioc-provider-controller.ts"],"sourcesContent":[null],"names":["IocProviderController","host","_a","_b","container","seed","_this","revision","addController","createContainer","provider","ContextProvider","context","IocContextObject","initialValue","nextRevision","Object","defineProperty","prototype","get","value","hostConnected","applySharedSeed","hostDisconnected","setValue"],"mappings":";;;;AA0BA;;;;;;;;;AASG;AACH,IAAAA,qBAAA,gBAAA,YAAA;AAmBE;;;;;AAKG;AACH,EAAA,SAAAA,qBAAAA,CACmBC,IAAO,EACxBC,EAAsD,EAAA;IAAtD,IAAAC,EAAA,GAAAD,EAAA,KAAA,MAAA,GAAoD,EAAE,GAAAA,EAAA;MAApDE,SAAS,GAAAD,EAAA,CAAAC,SAAA;MAAEC,IAAI,GAAAF,EAAA,CAAAE,IAAA;IAFnB,IAAAC,KAAA,GAAA,IAAA;IACmB,IAAA,CAAAL,IAAI,GAAJA,IAAI;IArBb,IAAA,CAAAM,QAAQ,GAAW,CAAC;AAwB5B,IAAA,IAAI,CAACN,IAAI,CAACO,aAAa,CAAC,IAAI,CAAC;AAE7B,IAAA,IAAI,CAACJ,SAAS,GAAGA,SAAS,KAAA,IAAA,IAATA,SAAS,KAAA,MAAA,GAATA,SAAS,GAAIK,eAAe,EAAE;IAC/C,IAAI,CAACJ,IAAI,GAAGA,IAAI;AAShB,IAAA,IAAI,CAACK,QAAQ,GAAG,IAAIC,eAAe,CAACV,IAAI,EAAE;AACxCW,MAAAA,OAAO,EAAEC,gBAAgB;AACzBC,MAAAA,YAAY,EAAE;QACZV,SAAS,EAAE,IAAI,CAACA,SAAS;QACzBG,QAAQ,EAAE,IAAI,CAACA,QAAQ;QACvBQ,YAAY,EAAE;AAAM,UAAA,OAAAT,KAAI,CAACS,YAAY,EAAE;AAAnB,QAAA;AACrB;AACF,KAAA,CAAC;AACJ,EAAA;EAlCAC,MAAA,CAAAC,cAAA,CAAWjB,qBAAA,CAAAkB,SAAA,EAAA,OAAK,EAAA;AAHhB;;AAEG;IACHC,GAAA,EAAA,YAAA;AACE,MAAA,OAAO,IAAI,CAACT,QAAQ,CAACU,KAAK;IAC5B,CAAC;;;AAAA,GAAA,CAAA;AAkCMpB,EAAAA,qBAAA,CAAAkB,SAAA,CAAAG,aAAa,GAApB,YAAA;IAGE,IAAI,IAAI,CAAChB,IAAI,EAAE;MAMbiB,eAAe,CAAC,IAAI,CAAClB,SAAS,EAAE,IAAI,CAACC,IAAI,CAAC;AAC5C,IAAA;EACF,CAAC;AAEML,EAAAA,qBAAA,CAAAkB,SAAA,CAAAK,gBAAgB,GAAvB,YAAA,CAEA,CAAC;AAEMvB,EAAAA,qBAAA,CAAAkB,SAAA,CAAAH,YAAY,GAAnB,YAAA;IAAA,IAAAT,KAAA,GAAA,IAAA;IAQE,IAAI,CAACC,QAAQ,IAAI,CAAC;AAElB,IAAA,IAAI,CAACG,QAAQ,CAACc,QAAQ,CAAC;MACrBpB,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBG,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBQ,YAAY,EAAE;AAAM,QAAA,OAAAT,KAAI,CAACS,YAAY,EAAE;AAAnB,MAAA;AACrB,KAAA,CAAC;IAEF,OAAO,IAAI,CAACR,QAAQ;EACtB,CAAC;AACH,EAAA,OAAAP,qBAAC;AAAD,CAAC;;;;"}
@@ -0,0 +1,27 @@
1
+ import { InjectablesProviderController } from './injectables-provider-controller.js';
2
+
3
+ /**
4
+ * Hook that binds injectables to the nearest IoC container for the host element's lifetime.
5
+ *
6
+ * @group Provision
7
+ *
8
+ * @param host - The host element.
9
+ * @param options - Provisioning options.
10
+ * @returns An instance of {@link InjectablesProviderController}.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * class MyComponent extends LitElement {
15
+ * private services = useInjectablesProvider(this, {
16
+ * entries: [AuthService, UserService],
17
+ * activate: [AuthService],
18
+ * });
19
+ * }
20
+ * ```
21
+ */
22
+ function useInjectablesProvider(host, options) {
23
+ return new InjectablesProviderController(host, options);
24
+ }
25
+
26
+ export { useInjectablesProvider };
27
+ //# sourceMappingURL=use-injectables-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-injectables-provider.js","sources":["../../../../../../../../src/wirestate-lit/provision/use-injectables-provider.ts"],"sourcesContent":[null],"names":["useInjectablesProvider","host","options","InjectablesProviderController"],"mappings":";;AAIA;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAUA,sBAAsBA,CACpCC,IAAO,EACPC,OAA6C,EAAA;AAE7C,EAAA,OAAO,IAAIC,6BAA6B,CAAIF,IAAI,EAAEC,OAAO,CAAC;AAC5D;;;;"}
@@ -0,0 +1,27 @@
1
+ import { IocProviderController } from './ioc-provider-controller.js';
2
+
3
+ /**
4
+ * Hook that provides an IoC container to the host element and its children.
5
+ *
6
+ * @group Provision
7
+ *
8
+ * @param host - The host element.
9
+ * @param options - Provisioning options.
10
+ * @returns An instance of {@link IocProviderController}.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * class MyRootElement extends LitElement {
15
+ * private ioc = useIocProvision(this, { seed: { initialData: "..." } });
16
+ * }
17
+ * ```
18
+ */
19
+ function useIocProvision(host, options) {
20
+ if (options === void 0) {
21
+ options = {};
22
+ }
23
+ return new IocProviderController(host, options);
24
+ }
25
+
26
+ export { useIocProvision };
27
+ //# sourceMappingURL=use-ioc-provision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-ioc-provision.js","sources":["../../../../../../../../src/wirestate-lit/provision/use-ioc-provision.ts"],"sourcesContent":[null],"names":["useIocProvision","host","options","IocProviderController"],"mappings":";;AAuBA;;;;;;;;;;;;;;;AAeG;AACG,SAAUA,eAAeA,CAC7BC,IAAO,EACPC,OAAoC,EAAA;AAApC,EAAA,IAAAA,OAAA,KAAA,MAAA,EAAA;IAAAA,OAAA,GAAA,EAAoC;AAAA,EAAA;AAEpC,EAAA,OAAO,IAAIC,qBAAqB,CAACF,IAAI,EAAEC,OAAO,CAAC;AACjD;;;;"}
@@ -0,0 +1,59 @@
1
+ import { ContextConsumer } from '@lit/context';
2
+ import { QueryBus } from '@wirestate/core';
3
+ import { IocContextObject } from '../context/ioc-context.js';
4
+
5
+ /**
6
+ * Reactive controller that registers a query handler on the {@link QueryBus} for the host element's lifetime.
7
+ *
8
+ * @remarks
9
+ * The handler is registered when the host connects and unregistered when it disconnects.
10
+ * It automatically re-registers if the IoC container is updated.
11
+ *
12
+ * @group Queries
13
+ */
14
+ var OnQueryController = /** @class */function () {
15
+ /**
16
+ * @param host - The host element.
17
+ * @param type - Unique identifier of the query to handle.
18
+ * @param handler - The query handler function.
19
+ */
20
+ function OnQueryController(host, type, handler) {
21
+ var _this = this;
22
+ this.bus = null;
23
+ this.unregister = null;
24
+ host.addController(this);
25
+ this.type = type;
26
+ this.handler = handler;
27
+ new ContextConsumer(host, {
28
+ context: IocContextObject,
29
+ subscribe: true,
30
+ callback: function (context) {
31
+ _this.bus = context.container.get(QueryBus);
32
+ if (host.isConnected) {
33
+ _this.reregister();
34
+ }
35
+ }
36
+ });
37
+ }
38
+ OnQueryController.prototype.hostConnected = function () {
39
+ this.reregister();
40
+ };
41
+ OnQueryController.prototype.hostDisconnected = function () {
42
+ this.cleanup();
43
+ };
44
+ OnQueryController.prototype.reregister = function () {
45
+ this.cleanup();
46
+ if (this.bus) {
47
+ this.unregister = this.bus.register(this.type, this.handler);
48
+ }
49
+ };
50
+ OnQueryController.prototype.cleanup = function () {
51
+ var _a;
52
+ (_a = this.unregister) === null || _a === void 0 ? void 0 : _a.call(this);
53
+ this.unregister = null;
54
+ };
55
+ return OnQueryController;
56
+ }();
57
+
58
+ export { OnQueryController };
59
+ //# sourceMappingURL=on-query-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-query-controller.js","sources":["../../../../../../../../src/wirestate-lit/queries/on-query-controller.ts"],"sourcesContent":[null],"names":["OnQueryController","host","type","handler","_this","bus","unregister","addController","ContextConsumer","context","IocContextObject","subscribe","callback","container","get","QueryBus","isConnected","reregister","prototype","hostConnected","hostDisconnected","cleanup","register","_a","call"],"mappings":";;;;AAUA;;;;;;;;AAQG;AACH,IAAAA,iBAAA,gBAAA,YAAA;AAOE;;;;AAIG;AACH,EAAA,SAAAA,iBAAAA,CAAmBC,IAAqB,EAAEC,IAAe,EAAEC,OAA2B,EAAA;IAAtF,IAAAC,KAAA,GAAA,IAAA;IAXQ,IAAA,CAAAC,GAAG,GAAuB,IAAI;IAC9B,IAAA,CAAAC,UAAU,GAA8B,IAAI;AAWlDL,IAAAA,IAAI,CAACM,aAAa,CAAC,IAAI,CAAC;IAExB,IAAI,CAACL,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,OAAO,GAAGA,OAAO;IAItB,IAAIK,eAAe,CAACP,IAAI,EAAE;AACxBQ,MAAAA,OAAO,EAAEC,gBAAgB;AACzBC,MAAAA,SAAS,EAAE,IAAI;AACfC,MAAAA,QAAQ,EAAE,UAACH,OAAO,EAAA;QAChBL,KAAI,CAACC,GAAG,GAAGI,OAAO,CAACI,SAAS,CAACC,GAAG,CAACC,QAAQ,CAAC;QAE1C,IAAId,IAAI,CAACe,WAAW,EAAE;UACpBZ,KAAI,CAACa,UAAU,EAAE;AACnB,QAAA;AACF,MAAA;AACD,KAAA,CAAC;AACJ,EAAA;AAEOjB,EAAAA,iBAAA,CAAAkB,SAAA,CAAAC,aAAa,GAApB,YAAA;IAEE,IAAI,CAACF,UAAU,EAAE;EACnB,CAAC;AAEMjB,EAAAA,iBAAA,CAAAkB,SAAA,CAAAE,gBAAgB,GAAvB,YAAA;IAEE,IAAI,CAACC,OAAO,EAAE;EAChB,CAAC;AAEOrB,EAAAA,iBAAA,CAAAkB,SAAA,CAAAD,UAAU,GAAlB,YAAA;IACE,IAAI,CAACI,OAAO,EAAE;IAEd,IAAI,IAAI,CAAChB,GAAG,EAAE;AAEZ,MAAA,IAAI,CAACC,UAAU,GAAG,IAAI,CAACD,GAAG,CAACiB,QAAQ,CAAC,IAAI,CAACpB,IAAI,EAAE,IAAI,CAACC,OAAO,CAAC;AAC9D,IAAA;EACF,CAAC;AAEOH,EAAAA,iBAAA,CAAAkB,SAAA,CAAAG,OAAO,GAAf,YAAA;;IACE,CAAAE,EAAA,GAAA,IAAI,CAACjB,UAAU,MAAA,IAAA,IAAAiB,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAAC,IAAA,CAAA,IAAA,CAAI;IACnB,IAAI,CAAClB,UAAU,GAAG,IAAI;EACxB,CAAC;AACH,EAAA,OAAAN,iBAAC;AAAD,CAAC;;;;"}
@@ -0,0 +1,46 @@
1
+ import { OnQueryController } from './on-query-controller.js';
2
+
3
+ /**
4
+ * Decorator for Lit element methods that handle a specific query.
5
+ *
6
+ * @remarks
7
+ * The handler is registered when the host connects and unregistered when it disconnects.
8
+ *
9
+ * @group Queries
10
+ *
11
+ * @param type - Unique identifier of the query to handle.
12
+ * @returns A method decorator function.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * class MyElement extends LitElement {
17
+ * @onQuery("GET_USER_NAME")
18
+ * private onGetUserName(data: QueryData) {
19
+ * return "Alice";
20
+ * }
21
+ * }
22
+ * ```
23
+ */
24
+ function onQuery(type) {
25
+ return function (protoOrTarget, nameOrContext) {
26
+ if (typeof nameOrContext === "object") {
27
+ // Standard decorators:
28
+ nameOrContext.addInitializer(function () {
29
+ var _this = this;
30
+ new OnQueryController(this, type, function (data) {
31
+ return _this[nameOrContext.name](data);
32
+ });
33
+ });
34
+ } else {
35
+ // Experimental legacy decorators:
36
+ protoOrTarget.constructor.addInitializer(function (element) {
37
+ new OnQueryController(element, type, function (data) {
38
+ return element[nameOrContext](data);
39
+ });
40
+ });
41
+ }
42
+ };
43
+ }
44
+
45
+ export { onQuery };
46
+ //# sourceMappingURL=on-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-query.js","sources":["../../../../../../../../src/wirestate-lit/queries/on-query.ts"],"sourcesContent":[null],"names":["onQuery","type","protoOrTarget","nameOrContext","addInitializer","_this","OnQueryController","data","name","constructor","element"],"mappings":";;AAyBA;;;;;;;;;;;;;;;;;;;;AAoBG;AACG,SAAUA,OAAOA,CAA2BC,IAAe,EAAA;AAC/D,EAAA,OAAQ,UAACC,aAAqB,EAAEC,aAAwD,EAAA;AACtF,IAAA,IAAI,OAAOA,aAAa,KAAK,QAAQ,EAAE;AACrC;MACAA,aAAa,CAACC,cAAc,CAAC,YAAA;QAAA,IAAAC,KAAA,GAAA,IAAA;QAC3B,IAAIC,iBAAiB,CACnB,IAAuB,EACvBL,IAAI,EACJ,UAACM,IAAO,EAAA;UAAK,OAACF,KAAkB,CAACF,aAAa,CAACK,IAAI,CAAC,CAACD,IAAI,CAAoB;AAAhE,QAAA,CAAgE,CAC9E;AACH,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,MAAM;AACL;AACCL,MAAAA,aAAa,CAACO,WAAsC,CAACL,cAAc,CAAC,UAACM,OAAwB,EAAA;QAC5F,IAAIJ,iBAAiB,CACnBI,OAAO,EACPT,IAAI,EACJ,UAACM,IAAO,EAAA;AAAK,UAAA,OAACG,OAAqB,CAACP,aAAa,CAAC,CAACI,IAAI,CAAoB;AAA9D,QAAA,CAA8D,CAC5E;AACH,MAAA,CAAC,CAAC;AACJ,IAAA;EACF,CAAC;AACH;;;;"}
@@ -0,0 +1,31 @@
1
+ import { OnQueryController } from './on-query-controller.js';
2
+
3
+ /**
4
+ * Hook that registers a query handler for the host element's lifetime.
5
+ *
6
+ * @group Queries
7
+ *
8
+ * @param host - The host element.
9
+ * @param options - Query handling options.
10
+ * @param options.type - The query type to handle.
11
+ * @param options.handler - The query handler function.
12
+ * @returns An instance of {@link OnQueryController}.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * class MyElement extends LitElement {
17
+ * private getUserController = useOnQuery(this, {
18
+ * type: "GET_USER",
19
+ * handler: (data) => ({ name: "Alice" }),
20
+ * });
21
+ * }
22
+ * ```
23
+ */
24
+ function useOnQuery(host, _a) {
25
+ var type = _a.type,
26
+ handler = _a.handler;
27
+ return new OnQueryController(host, type, handler);
28
+ }
29
+
30
+ export { useOnQuery };
31
+ //# sourceMappingURL=use-on-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-query.js","sources":["../../../../../../../../src/wirestate-lit/queries/use-on-query.ts"],"sourcesContent":[null],"names":["useOnQuery","host","_a","type","handler","OnQueryController"],"mappings":";;AAqBA;;;;;;;;;;;;;;;;;;;;AAoBG;AACG,SAAUA,UAAUA,CACxBC,IAAqB,EACrBC,EAA0C,EAAA;MAAxCC,IAAI,GAAAD,EAAA,CAAAC,IAAA;IAAEC,OAAO,GAAAF,EAAA,CAAAE,OAAA;EAEf,OAAO,IAAIC,iBAAiB,CAAOJ,IAAI,EAAEE,IAAI,EAAEC,OAAO,CAAC;AACzD;;;;"}
@@ -0,0 +1 @@
1
+ import{ContextConsumer as t}from"@lit/context";import{CommandBus as e}from"@wirestate/core";import{IocContextObject as i}from"../context/ioc-context.js";var r=function(){function r(r,n,o){var s=this;this.bus=null,this.unregister=null,r.addController(this),this.type=n,this.handler=o,new t(r,{context:i,subscribe:!0,callback:function(t){s.bus=t.container.get(e),r.isConnected&&s.reregister()}})}return r.prototype.hostConnected=function(){this.reregister()},r.prototype.hostDisconnected=function(){this.cleanup()},r.prototype.reregister=function(){this.cleanup(),this.bus&&(this.unregister=this.bus.register(this.type,this.handler))},r.prototype.cleanup=function(){var t;null===(t=this.unregister)||void 0===t||t.call(this),this.unregister=null},r}();export{r as OnCommandController};//# sourceMappingURL=on-command-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-command-controller.js","sources":["../../../../../../../../src/wirestate-lit/commands/on-command-controller.ts"],"sourcesContent":[null],"names":["ContextConsumer","CommandBus","IocContextObject","OnCommandController","host","type","handler","_this","this","bus","unregister","addController","context","subscribe","callback","container","get","isConnected","reregister","prototype","hostConnected","hostDisconnected","cleanup","register","_a","call"],"mappings":"0BAUAA,MAAA,oCAAAC,MAAA,6CAAAC,MAAA,4BASA,IAAAC,EAAA,WAYE,SAAAA,EAAmBC,EAAuBC,EAAmBC,GAA7D,IAAAC,EAAAC,KAXQA,KAAAC,IAA4B,KAC5BD,KAAAE,WAA0C,KAahDN,EAAKO,cAAcH,MAEnBA,KAAKH,KAAOA,EACZG,KAAKF,QAAUA,EAEf,IAAIN,EAAgBI,EAAM,CACxBQ,QAASV,EACTW,WAAW,EACXC,SAAU,SAACF,GACTL,EAAKE,IAAMG,EAAQG,UAAUC,IAAIf,GAE7BG,EAAKa,aACPV,EAAKW,YAET,GAEJ,CA2BF,OAzBSf,EAAAgB,UAAAC,cAAP,WAEEZ,KAAKU,YACP,EAEOf,EAAAgB,UAAAE,iBAAP,WAEEb,KAAKc,SACP,EAEQnB,EAAAgB,UAAAD,WAAR,WACEV,KAAKc,UAEDd,KAAKC,MAEPD,KAAKE,WAAaF,KAAKC,IAAIc,SAASf,KAAKH,KAAMG,KAAKF,SAExD,EAEQH,EAAAgB,UAAAG,QAAR,iBAGiB,QAAfE,EAAAhB,KAAKE,kBAAU,IAAAc,GAAAA,EAAAC,KAAAjB,MACfA,KAAKE,WAAa,IACpB,EACFP,CAAA,CA1DA,UA0DCA"}
@@ -0,0 +1 @@
1
+ import{OnCommandController as n}from"./on-command-controller.js";function t(t){return function(o,r){"object"==typeof r?r.addInitializer((function(){var o=this;new n(this,t,(function(n){return o[r.name](n)}))})):o.constructor.addInitializer((function(o){new n(o,t,(function(n){return o[r](n)}))}))}}export{t as onCommand};//# sourceMappingURL=on-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-command.js","sources":["../../../../../../../../src/wirestate-lit/commands/on-command.ts"],"sourcesContent":[null],"names":["OnCommandController","onCommand","type","protoOrTarget","nameOrContext","addInitializer","_this","this","data","name","constructor","element"],"mappings":"8BAyBAA,MAAA,6BAqBM,SAAUC,EAAoCC,GAClD,OAAQ,SAACC,EAAuBC,GACD,iBAAlBA,EAETA,EAAcC,gBAAe,WAAA,IAAAC,EAAAC,KAC3B,IAAIP,EACFO,KACAL,GACA,SAACM,GAAY,OAACF,EAAmBF,EAAcK,MAAMD,EAAxC,GAEjB,IAGCL,EAAcO,YAAuCL,gBAAe,SAACM,GACpE,IAAIX,EACFW,EACAT,GACA,SAACM,GAAY,OAACG,EAAsBP,GAAeI,EAAtC,GAEjB,GAEJ,CACF,QAAAP"}
@@ -0,0 +1 @@
1
+ import{OnCommandController as r}from"./on-command-controller.js";function n(n,o){var e=o.type,t=o.handler;return new r(n,e,t)}export{n as useOnCommand};//# sourceMappingURL=use-on-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-on-command.js","sources":["../../../../../../../../src/wirestate-lit/commands/use-on-command.ts"],"sourcesContent":[null],"names":["OnCommandController","useOnCommand","host","_a","type","handler"],"mappings":"8BAqBAA,MAAA,6BAqBM,SAAUC,EACdC,EACAC,OAAEC,EAAID,EAAAC,KAAEC,EAAOF,EAAAE,QAEf,OAAO,IAAIL,EAA0BE,EAAME,EAAMC,EACnD,QAAAJ"}