@expressive/mvc 0.73.1 → 0.78.0

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 (53) hide show
  1. package/README.md +137 -0
  2. package/dist/component.d.ts +87 -0
  3. package/dist/component.js +111 -0
  4. package/dist/component.js.map +1 -0
  5. package/dist/context.d.ts +56 -0
  6. package/dist/context.js +201 -0
  7. package/dist/context.js.map +1 -0
  8. package/dist/field/def.d.ts +17 -0
  9. package/dist/field/def.js +29 -0
  10. package/dist/field/def.js.map +1 -0
  11. package/dist/field/get.d.ts +57 -0
  12. package/dist/field/get.js +90 -0
  13. package/dist/field/get.js.map +1 -0
  14. package/dist/field/hot.d.ts +16 -0
  15. package/dist/field/hot.js +98 -0
  16. package/dist/field/hot.js.map +1 -0
  17. package/dist/field/ref.d.ts +78 -0
  18. package/dist/field/ref.js +85 -0
  19. package/dist/field/ref.js.map +1 -0
  20. package/dist/field/set.d.ts +59 -0
  21. package/dist/field/set.js +84 -0
  22. package/dist/field/set.js.map +1 -0
  23. package/dist/index.d.ts +10 -502
  24. package/dist/index.js +11 -872
  25. package/dist/jsx-dev-runtime.d.ts +2 -0
  26. package/dist/jsx-dev-runtime.js +3 -0
  27. package/dist/jsx-runtime.d.ts +90 -0
  28. package/dist/jsx-runtime.js +57 -0
  29. package/dist/jsx-runtime.js.map +1 -0
  30. package/dist/observable.d.ts +58 -0
  31. package/dist/observable.js +184 -0
  32. package/dist/observable.js.map +1 -0
  33. package/dist/state.d.ts +311 -0
  34. package/dist/state.js +424 -0
  35. package/dist/state.js.map +1 -0
  36. package/package.json +35 -18
  37. package/dist/esm/context.d.ts +0 -62
  38. package/dist/esm/context.js +0 -158
  39. package/dist/esm/index.d.ts +0 -8
  40. package/dist/esm/index.js +0 -9
  41. package/dist/esm/instruction/get.d.ts +0 -36
  42. package/dist/esm/instruction/get.js +0 -77
  43. package/dist/esm/instruction/ref.d.ts +0 -71
  44. package/dist/esm/instruction/ref.js +0 -68
  45. package/dist/esm/instruction/set.d.ts +0 -69
  46. package/dist/esm/instruction/set.js +0 -118
  47. package/dist/esm/instruction/use.d.ts +0 -23
  48. package/dist/esm/instruction/use.js +0 -56
  49. package/dist/esm/observable.d.ts +0 -42
  50. package/dist/esm/observable.js +0 -121
  51. package/dist/esm/state.d.ts +0 -234
  52. package/dist/esm/state.js +0 -293
  53. package/dist/index.js.map +0 -1
@@ -1,158 +0,0 @@
1
- import { addListener, event } from "./observable.js";
2
- import { PARENT, State, uid } from "./state.js";
3
-
4
- //#region src/context.ts
5
- const LOOKUP = /* @__PURE__ */ new WeakMap();
6
- const KEYS = /* @__PURE__ */ new Map();
7
- function key(T, upstream) {
8
- let K = KEYS.get(T);
9
- if (!K) {
10
- K = Symbol(typeof T == "symbol" ? "get " + T.description : String(T));
11
- KEYS.set(T, K);
12
- }
13
- return upstream ? key(K) : K;
14
- }
15
- function keys(from, upstream) {
16
- const keys = /* @__PURE__ */ new Set();
17
- do {
18
- keys.add(key(from, upstream));
19
- from = Object.getPrototypeOf(from);
20
- } while (from !== State);
21
- return keys;
22
- }
23
- var Context = class Context {
24
- static get({ is }, callback) {
25
- const context = LOOKUP.get(is);
26
- if (context instanceof Context) {
27
- if (callback) callback(context);
28
- return context;
29
- }
30
- if (callback) if (context) context.push(callback);
31
- else LOOKUP.set(is, [callback]);
32
- }
33
- constructor(inputs) {
34
- this.id = uid();
35
- this.inputs = {};
36
- this.cleanup = /* @__PURE__ */ new Set();
37
- if (inputs) this.use(inputs);
38
- }
39
- get(Type, arg2) {
40
- if (typeof arg2 == "function") {
41
- const k = key(Type, true);
42
- Object.defineProperty(this, k, {
43
- value: arg2,
44
- configurable: true
45
- });
46
- return () => {
47
- delete this[k];
48
- };
49
- }
50
- const result = this[key(Type)];
51
- if (result === null) throw new Error(`Did find ${Type} in context, but multiple were defined.`);
52
- if (result) return result;
53
- if (arg2) throw new Error(`Could not find ${Type} in context.`);
54
- }
55
- /**
56
- * Adds a State to this context.
57
- */
58
- add(input, implicit) {
59
- const cleanup = /* @__PURE__ */ new Set();
60
- let T;
61
- let I;
62
- if (typeof input == "function") {
63
- T = input;
64
- I = new input();
65
- } else {
66
- T = input.constructor;
67
- I = input;
68
- }
69
- keys(T, true).forEach((K) => {
70
- const expects = this[K];
71
- if (expects) addListener(I, (event) => {
72
- if (event === true) {
73
- const cb = expects(I);
74
- if (cb) cleanup.add(cb);
75
- }
76
- return null;
77
- });
78
- });
79
- keys(T).forEach((K) => {
80
- const value = this.hasOwnProperty(K) ? null : I;
81
- if (value || this[K] !== I && !implicit) Object.defineProperty(this, K, {
82
- configurable: true,
83
- value
84
- });
85
- });
86
- this.cleanup.add(() => {
87
- cleanup.forEach((cb) => cb());
88
- if (I !== input) event(I, null);
89
- });
90
- const waiting = LOOKUP.get(I);
91
- if (waiting instanceof Array) waiting.forEach((cb) => cb(this));
92
- LOOKUP.set(I, this);
93
- return I;
94
- }
95
- /**
96
- * Register one or more States to this context.
97
- *
98
- * Context will add or remove States as needed to keep with provided input.
99
- *
100
- * @param inputs State, State class, or map of States / State classes to register.
101
- * @param forEach Optional callback to run for each State registered.
102
- */
103
- use(inputs, forEach) {
104
- const init = /* @__PURE__ */ new Map();
105
- if (typeof inputs == "function" || inputs instanceof State) inputs = { [0]: inputs };
106
- for (const [K, V] of Object.entries(inputs)) {
107
- if (!(State.is(V) || V instanceof State)) throw new Error(`Context may only include instance or class \`extends State\` but got ${K == "0" || K == String(V) ? V : `${V} (as '${K}')`}.`);
108
- const exists = this.inputs[K];
109
- if (!exists) init.set(this.add(V), true);
110
- else if (exists !== V) {
111
- this.pop();
112
- this.use(inputs);
113
- this.id = uid();
114
- return;
115
- }
116
- }
117
- for (const [state, explicit] of init) {
118
- state.set();
119
- if (explicit && forEach) forEach(state);
120
- for (const [_key, value] of state) if (PARENT.get(value) === state) {
121
- this.add(value, true);
122
- init.set(value, false);
123
- }
124
- }
125
- this.inputs = inputs;
126
- }
127
- /**
128
- * Create a child context, optionally registering one or more States to it.
129
- *
130
- * @param inputs State, State class, or map of States / State classes to register.
131
- */
132
- push(inputs) {
133
- const next = Object.create(this);
134
- this.cleanup = new Set([() => next.pop(), ...this.cleanup]);
135
- next.inputs = {};
136
- next.cleanup = /* @__PURE__ */ new Set();
137
- if (inputs) next.use(inputs);
138
- return next;
139
- }
140
- /**
141
- * Remove all States from this context.
142
- *
143
- * Will also run any cleanup callbacks registered when States were added.
144
- */
145
- pop() {
146
- for (const key of Object.getOwnPropertySymbols(this)) delete this[key];
147
- this.cleanup.forEach((cb) => cb());
148
- this.cleanup.clear();
149
- this.inputs = {};
150
- }
151
- };
152
- Object.defineProperty(Context.prototype, "toString", { value() {
153
- return `Context-${this.id}`;
154
- } });
155
-
156
- //#endregion
157
- export { Context };
158
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZGRMaXN0ZW5lciB9IGZyb20gJy4vb2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBldmVudCwgU3RhdGUsIFBBUkVOVCwgdWlkIH0gZnJvbSAnLi9zdGF0ZSc7XG5cbmNvbnN0IExPT0tVUCA9IG5ldyBXZWFrTWFwPFN0YXRlLCBDb250ZXh0IHwgKChnb3Q6IENvbnRleHQpID0+IHZvaWQpW10+KCk7XG5jb25zdCBLRVlTID0gbmV3IE1hcDxzeW1ib2wgfCBTdGF0ZS5FeHRlbmRzLCBzeW1ib2w+KCk7XG5cbmZ1bmN0aW9uIGtleShUOiBTdGF0ZS5FeHRlbmRzIHwgc3ltYm9sLCB1cHN0cmVhbT86IGJvb2xlYW4pOiBzeW1ib2wge1xuICBsZXQgSyA9IEtFWVMuZ2V0KFQpO1xuXG4gIGlmICghSykge1xuICAgIEsgPSBTeW1ib2wodHlwZW9mIFQgPT0gJ3N5bWJvbCcgPyAnZ2V0ICcgKyBULmRlc2NyaXB0aW9uIDogU3RyaW5nKFQpKTtcbiAgICBLRVlTLnNldChULCBLKTtcbiAgfVxuXG4gIHJldHVybiB1cHN0cmVhbSA/IGtleShLKSA6IEs7XG59XG5cbmZ1bmN0aW9uIGtleXMoZnJvbTogU3RhdGUuRXh0ZW5kcywgdXBzdHJlYW0/OiBib29sZWFuKSB7XG4gIGNvbnN0IGtleXMgPSBuZXcgU2V0PHN5bWJvbD4oKTtcblxuICBkbyB7XG4gICAga2V5cy5hZGQoa2V5KGZyb20sIHVwc3RyZWFtKSk7XG4gICAgZnJvbSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihmcm9tKTtcbiAgfSB3aGlsZSAoZnJvbSAhPT0gU3RhdGUpO1xuXG4gIHJldHVybiBrZXlzO1xufVxuXG5kZWNsYXJlIG5hbWVzcGFjZSBDb250ZXh0IHtcbiAgdHlwZSBNdWx0aXBsZTxUIGV4dGVuZHMgU3RhdGU+ID0ge1xuICAgIFtrZXk6IHN0cmluZyB8IG51bWJlcl06IFN0YXRlLlR5cGU8VD4gfCBUO1xuICB9O1xuXG4gIHR5cGUgQWNjZXB0PFQgZXh0ZW5kcyBTdGF0ZSA9IFN0YXRlPiA9IFQgfCBTdGF0ZS5UeXBlPFQ+IHwgTXVsdGlwbGU8VD47XG5cbiAgdHlwZSBFeHBlY3Q8VCBleHRlbmRzIFN0YXRlID0gU3RhdGU+ID0gKHN0YXRlOiBUKSA9PiAoKCkgPT4gdm9pZCkgfCB2b2lkO1xufVxuXG5pbnRlcmZhY2UgQ29udGV4dCB7XG4gIFtrZXk6IHN5bWJvbF06IFN0YXRlIHwgQ29udGV4dC5FeHBlY3QgfCBudWxsIHwgdW5kZWZpbmVkO1xufVxuXG5jbGFzcyBDb250ZXh0IHtcbiAgLyoqXG4gICAqIEdldCB0aGUgY29udGV4dCBmb3IgYSBzcGVjaWZpZWQgU3RhdGUuIElmIGEgY2FsbGJhY2sgaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgcnVuIHdoZW5cbiAgICogdGhlIGNvbnRleHQgYmVjb21lcyBhdmFpbGFibGUuXG4gICAqL1xuICBzdGF0aWMgZ2V0PFQgZXh0ZW5kcyBTdGF0ZT4oXG4gICAgb246IFN0YXRlLFxuICAgIGNhbGxiYWNrOiAoZ290OiBDb250ZXh0KSA9PiB2b2lkXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY29udGV4dCBmb3IgYSBzcGVjaWZpZWQgU3RhdGUuIFJldHVybnMgdW5kZWZpbmVkIGlmIG5vbmUgYXJlIGZvdW5kLlxuICAgKi9cbiAgc3RhdGljIGdldDxUIGV4dGVuZHMgU3RhdGU+KG9uOiBTdGF0ZSk6IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cbiAgc3RhdGljIGdldCh7IGlzIH06IFN0YXRlLCBjYWxsYmFjaz86IChnb3Q6IENvbnRleHQpID0+IHZvaWQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gTE9PS1VQLmdldChpcyk7XG5cbiAgICBpZiAoY29udGV4dCBpbnN0YW5jZW9mIENvbnRleHQpIHtcbiAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soY29udGV4dCk7XG4gICAgICByZXR1cm4gY29udGV4dDtcbiAgICB9XG5cbiAgICBpZiAoY2FsbGJhY2spXG4gICAgICBpZiAoY29udGV4dCkgY29udGV4dC5wdXNoKGNhbGxiYWNrKTtcbiAgICAgIGVsc2UgTE9PS1VQLnNldChpcywgW2NhbGxiYWNrXSk7XG4gIH1cblxuICBwdWJsaWMgaWQgPSB1aWQoKTtcblxuICBwcm90ZWN0ZWQgaW5wdXRzID0ge30gYXMgUmVjb3JkPHN0cmluZyB8IG51bWJlciwgU3RhdGUgfCBTdGF0ZS5FeHRlbmRzPjtcbiAgcHJvdGVjdGVkIGNsZWFudXAgPSBuZXcgU2V0PCgpID0+IHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoaW5wdXRzPzogQ29udGV4dC5BY2NlcHQpIHtcbiAgICBpZiAoaW5wdXRzKSB0aGlzLnVzZShpbnB1dHMpO1xuICB9XG5cbiAgLyoqIEZpbmQgc3BlY2lmaWVkIHR5cGUgcmVnaXN0ZXJlZCB0byBhIHBhcmVudCBjb250ZXh0LiBUaHJvd3MgaWYgbm9uZSBhcmUgZm91bmQuICovXG4gIHB1YmxpYyBnZXQ8VCBleHRlbmRzIFN0YXRlPihUeXBlOiBTdGF0ZS5FeHRlbmRzPFQ+LCByZXF1aXJlOiB0cnVlKTogVDtcblxuICAvKiogRmluZCBzcGVjaWZpZWQgdHlwZSByZWdpc3RlcmVkIHRvIGEgcGFyZW50IGNvbnRleHQuIFJldHVybnMgdW5kZWZpbmVkIGlmIG5vbmUgYXJlIGZvdW5kLiAqL1xuICBwdWJsaWMgZ2V0PFQgZXh0ZW5kcyBTdGF0ZT4oXG4gICAgVHlwZTogU3RhdGUuRXh0ZW5kczxUPixcbiAgICByZXF1aXJlPzogYm9vbGVhblxuICApOiBUIHwgdW5kZWZpbmVkO1xuXG4gIC8qKiBSdW4gY2FsbGJhY2sgd2hlbiBhIHNwZWNpZmllZCB0eXBlIGlzIHJlZ2lzdGVyZWQgaW4gY29udGV4dCBkb3duc3RyZWFtLiAqL1xuICBwdWJsaWMgZ2V0PFQgZXh0ZW5kcyBTdGF0ZT4oXG4gICAgVHlwZTogU3RhdGUuRXh0ZW5kczxUPixcbiAgICBjYWxsYmFjazogKHN0YXRlOiBUKSA9PiB2b2lkXG4gICk6ICgpID0+IHZvaWQ7XG5cbiAgcHVibGljIGdldDxUIGV4dGVuZHMgU3RhdGU+KFxuICAgIFR5cGU6IFN0YXRlLkV4dGVuZHM8VD4sXG4gICAgYXJnMj86IGJvb2xlYW4gfCAoKHN0YXRlOiBUKSA9PiB2b2lkKVxuICApIHtcbiAgICBpZiAodHlwZW9mIGFyZzIgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgayA9IGtleShUeXBlLCB0cnVlKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBrLCB7XG4gICAgICAgIHZhbHVlOiBhcmcyLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZGVsZXRlIHRoaXNba107XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXNba2V5KFR5cGUpXTtcblxuICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBEaWQgZmluZCAke1R5cGV9IGluIGNvbnRleHQsIGJ1dCBtdWx0aXBsZSB3ZXJlIGRlZmluZWQuYFxuICAgICAgKTtcblxuICAgIGlmIChyZXN1bHQpIHJldHVybiByZXN1bHQgYXMgVDtcblxuICAgIGlmIChhcmcyKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kICR7VHlwZX0gaW4gY29udGV4dC5gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgU3RhdGUgdG8gdGhpcyBjb250ZXh0LlxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZDxUIGV4dGVuZHMgU3RhdGU+KGlucHV0OiBUIHwgU3RhdGUuVHlwZTxUPiwgaW1wbGljaXQ/OiBib29sZWFuKSB7XG4gICAgY29uc3QgY2xlYW51cCA9IG5ldyBTZXQ8KCkgPT4gdm9pZD4oKTtcbiAgICBsZXQgVDogU3RhdGUuRXh0ZW5kczxUPjtcbiAgICBsZXQgSTogVDtcblxuICAgIGlmICh0eXBlb2YgaW5wdXQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgVCA9IGlucHV0O1xuICAgICAgSSA9IG5ldyBpbnB1dCgpIGFzIFQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIFQgPSBpbnB1dC5jb25zdHJ1Y3RvciBhcyBTdGF0ZS5FeHRlbmRzPFQ+O1xuICAgICAgSSA9IGlucHV0O1xuICAgIH1cblxuICAgIGtleXMoVCwgdHJ1ZSkuZm9yRWFjaCgoSykgPT4ge1xuICAgICAgY29uc3QgZXhwZWN0cyA9IHRoaXNbS10gYXMgQ29udGV4dC5FeHBlY3QgfCB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChleHBlY3RzKVxuICAgICAgICBhZGRMaXN0ZW5lcihJLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNiID0gZXhwZWN0cyhJKTtcbiAgICAgICAgICAgIGlmIChjYikgY2xlYW51cC5hZGQoY2IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGtleXMoVCkuZm9yRWFjaCgoSykgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmhhc093blByb3BlcnR5KEspID8gbnVsbCA6IEk7XG5cbiAgICAgIGlmICh2YWx1ZSB8fCAodGhpc1tLXSAhPT0gSSAmJiAhaW1wbGljaXQpKVxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgSywge1xuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2xlYW51cC5hZGQoKCkgPT4ge1xuICAgICAgY2xlYW51cC5mb3JFYWNoKChjYikgPT4gY2IoKSk7XG4gICAgICBpZiAoSSAhPT0gaW5wdXQpIGV2ZW50KEksIG51bGwpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgd2FpdGluZyA9IExPT0tVUC5nZXQoSSk7XG5cbiAgICBpZiAod2FpdGluZyBpbnN0YW5jZW9mIEFycmF5KSB3YWl0aW5nLmZvckVhY2goKGNiKSA9PiBjYih0aGlzKSk7XG5cbiAgICBMT09LVVAuc2V0KEksIHRoaXMpO1xuXG4gICAgcmV0dXJuIEk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgb25lIG9yIG1vcmUgU3RhdGVzIHRvIHRoaXMgY29udGV4dC5cbiAgICpcbiAgICogQ29udGV4dCB3aWxsIGFkZCBvciByZW1vdmUgU3RhdGVzIGFzIG5lZWRlZCB0byBrZWVwIHdpdGggcHJvdmlkZWQgaW5wdXQuXG4gICAqXG4gICAqIEBwYXJhbSBpbnB1dHMgU3RhdGUsIFN0YXRlIGNsYXNzLCBvciBtYXAgb2YgU3RhdGVzIC8gU3RhdGUgY2xhc3NlcyB0byByZWdpc3Rlci5cbiAgICogQHBhcmFtIGZvckVhY2ggT3B0aW9uYWwgY2FsbGJhY2sgdG8gcnVuIGZvciBlYWNoIFN0YXRlIHJlZ2lzdGVyZWQuXG4gICAqL1xuICBwdWJsaWMgdXNlPFQgZXh0ZW5kcyBTdGF0ZT4oXG4gICAgaW5wdXRzOiBDb250ZXh0LkFjY2VwdDxUPixcbiAgICBmb3JFYWNoPzogQ29udGV4dC5FeHBlY3Q8VD5cbiAgKSB7XG4gICAgY29uc3QgaW5pdCA9IG5ldyBNYXA8U3RhdGUsIGJvb2xlYW4+KCk7XG5cbiAgICBpZiAodHlwZW9mIGlucHV0cyA9PSAnZnVuY3Rpb24nIHx8IGlucHV0cyBpbnN0YW5jZW9mIFN0YXRlKVxuICAgICAgaW5wdXRzID0geyBbMF06IGlucHV0cyB9O1xuXG4gICAgZm9yIChjb25zdCBbSywgVl0gb2YgT2JqZWN0LmVudHJpZXMoaW5wdXRzKSkge1xuICAgICAgaWYgKCEoU3RhdGUuaXMoVikgfHwgViBpbnN0YW5jZW9mIFN0YXRlKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDb250ZXh0IG1heSBvbmx5IGluY2x1ZGUgaW5zdGFuY2Ugb3IgY2xhc3MgXFxgZXh0ZW5kcyBTdGF0ZVxcYCBidXQgZ290ICR7XG4gICAgICAgICAgICBLID09ICcwJyB8fCBLID09IFN0cmluZyhWKSA/IFYgOiBgJHtWfSAoYXMgJyR7S30nKWBcbiAgICAgICAgICB9LmBcbiAgICAgICAgKTtcblxuICAgICAgY29uc3QgZXhpc3RzID0gdGhpcy5pbnB1dHNbS107XG5cbiAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgIGluaXQuc2V0KHRoaXMuYWRkKFYpLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIC8vIENvbnRleHQgbXVzdCBmb3JjZS1yZXNldCBiZWNhdXNlIGlucHV0cyBhcmUgbm8gbG9uZ2VyIHNhZmUsXG4gICAgICAvLyBob3dldmVyIHByb2JhYmx5IHNob3VsZCBkbyB0aGF0IG9uIGEgcGVyLXN0YXRlIGJhc2lzLlxuICAgICAgZWxzZSBpZiAoZXhpc3RzICE9PSBWKSB7XG4gICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIHRoaXMudXNlKGlucHV0cyk7XG4gICAgICAgIHRoaXMuaWQgPSB1aWQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgW3N0YXRlLCBleHBsaWNpdF0gb2YgaW5pdCkge1xuICAgICAgc3RhdGUuc2V0KCk7XG5cbiAgICAgIGlmIChleHBsaWNpdCAmJiBmb3JFYWNoKSBmb3JFYWNoKHN0YXRlIGFzIFQpO1xuXG4gICAgICBmb3IgKGNvbnN0IFtfa2V5LCB2YWx1ZV0gb2Ygc3RhdGUpXG4gICAgICAgIGlmIChQQVJFTlQuZ2V0KHZhbHVlIGFzIFN0YXRlKSA9PT0gc3RhdGUpIHtcbiAgICAgICAgICB0aGlzLmFkZCh2YWx1ZSBhcyBTdGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgaW5pdC5zZXQodmFsdWUgYXMgU3RhdGUsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuaW5wdXRzID0gaW5wdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNoaWxkIGNvbnRleHQsIG9wdGlvbmFsbHkgcmVnaXN0ZXJpbmcgb25lIG9yIG1vcmUgU3RhdGVzIHRvIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXRzIFN0YXRlLCBTdGF0ZSBjbGFzcywgb3IgbWFwIG9mIFN0YXRlcyAvIFN0YXRlIGNsYXNzZXMgdG8gcmVnaXN0ZXIuXG4gICAqL1xuICBwdWJsaWMgcHVzaChpbnB1dHM/OiBDb250ZXh0LkFjY2VwdCkge1xuICAgIGNvbnN0IG5leHQgPSBPYmplY3QuY3JlYXRlKHRoaXMpIGFzIHRoaXM7XG5cbiAgICB0aGlzLmNsZWFudXAgPSBuZXcgU2V0KFsoKSA9PiBuZXh0LnBvcCgpLCAuLi50aGlzLmNsZWFudXBdKTtcblxuICAgIG5leHQuaW5wdXRzID0ge307XG4gICAgbmV4dC5jbGVhbnVwID0gbmV3IFNldCgpO1xuXG4gICAgaWYgKGlucHV0cykgbmV4dC51c2UoaW5wdXRzKTtcblxuICAgIHJldHVybiBuZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbGwgU3RhdGVzIGZyb20gdGhpcyBjb250ZXh0LlxuICAgKlxuICAgKiBXaWxsIGFsc28gcnVuIGFueSBjbGVhbnVwIGNhbGxiYWNrcyByZWdpc3RlcmVkIHdoZW4gU3RhdGVzIHdlcmUgYWRkZWQuXG4gICAqL1xuICBwdWJsaWMgcG9wKCkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGhpcykpIGRlbGV0ZSB0aGlzW2tleV07XG5cbiAgICB0aGlzLmNsZWFudXAuZm9yRWFjaCgoY2IpID0+IGNiKCkpO1xuICAgIHRoaXMuY2xlYW51cC5jbGVhcigpO1xuICAgIHRoaXMuaW5wdXRzID0ge307XG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnRleHQucHJvdG90eXBlLCAndG9TdHJpbmcnLCB7XG4gIHZhbHVlKCkge1xuICAgIHJldHVybiBgQ29udGV4dC0ke3RoaXMuaWR9YDtcbiAgfVxufSk7XG5cbmV4cG9ydCB7IENvbnRleHQgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUdB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
@@ -1,8 +0,0 @@
1
- import { Observable, addListener, event, watch } from "./observable.js";
2
- import { METHOD, State } from "./state.js";
3
- import { Context } from "./context.js";
4
- import { Instruction, use } from "./instruction/use.js";
5
- import { get } from "./instruction/get.js";
6
- import { set } from "./instruction/set.js";
7
- import { ref } from "./instruction/ref.js";
8
- export { Context, type Instruction, METHOD, Observable, State, addListener, State as default, event, get, ref, set, use, watch };
package/dist/esm/index.js DELETED
@@ -1,9 +0,0 @@
1
- import { Observable, addListener, event, watch } from "./observable.js";
2
- import { METHOD, State } from "./state.js";
3
- import { Context } from "./context.js";
4
- import { use } from "./instruction/use.js";
5
- import { get } from "./instruction/get.js";
6
- import { set } from "./instruction/set.js";
7
- import { ref } from "./instruction/ref.js";
8
-
9
- export { Context, METHOD, Observable, State, addListener, State as default, event, get, ref, set, use, watch };
@@ -1,36 +0,0 @@
1
- import { State } from "../state.js";
2
-
3
- //#region src/instruction/get.d.ts
4
- declare namespace get {
5
- type Callback<T = any> = (state: T, subject: State) => void | boolean | (() => void);
6
- }
7
- /**
8
- * Fetches upstream State from context with optional lifecycle callback.
9
- * Callback runs on mount and can return cleanup function for unmount.
10
- *
11
- * @param Type - Type of State to fetch.
12
- * @param callback - Optional lifecycle callback, receives (state, subject). Can return cleanup function.
13
- */
14
- declare function get<T extends State>(Type: State.Extends<T>, callback?: get.Callback<T>): T;
15
- /**
16
- * Fetches and assigns the controller which spawned this host.
17
- * When parent assigns an instance via `use()` directive, it
18
- * will be made available to child upon this request.
19
- *
20
- * @param Type - Type of controller compatible with this class.
21
- * @param required - If false, property may be undefined. Otherwise will throw suspense.
22
- */
23
- declare function get<T extends State>(Type: State.Extends<T>, required: false): T | undefined;
24
- /**
25
- * Collects downstream States, this will accumulate all instances of specified type for which this is an ancestor.
26
- * Returns a frozen array that updates as States are added or removed.
27
- * Callback runs on each State registration and can return cleanup or false to prevent registration.
28
- *
29
- * @param Type - Type of State to collect.
30
- * @param downstream - Must be true to enable downstream mode.
31
- * @param callback - Optional lifecycle callback, receives (state, subject). May return false to prevent registration.
32
- */
33
- declare function get<T extends State>(Type: State.Extends<T>, downstream: true, callback?: get.Callback<T>): readonly T[];
34
- //#endregion
35
- export { get };
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL2dldC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuZGVjbGFyZSBuYW1lc3BhY2UgZ2V0IHtcbiAgICB0eXBlIENhbGxiYWNrPFQgPSBhbnk+ID0gKHN0YXRlOiBULCBzdWJqZWN0OiBTdGF0ZSkgPT4gdm9pZCB8IGJvb2xlYW4gfCAoKCkgPT4gdm9pZCk7XG59XG4vKipcbiAqIEZldGNoZXMgdXBzdHJlYW0gU3RhdGUgZnJvbSBjb250ZXh0IHdpdGggb3B0aW9uYWwgbGlmZWN5Y2xlIGNhbGxiYWNrLlxuICogQ2FsbGJhY2sgcnVucyBvbiBtb3VudCBhbmQgY2FuIHJldHVybiBjbGVhbnVwIGZ1bmN0aW9uIGZvciB1bm1vdW50LlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBTdGF0ZSB0byBmZXRjaC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGxpZmVjeWNsZSBjYWxsYmFjaywgcmVjZWl2ZXMgKHN0YXRlLCBzdWJqZWN0KS4gQ2FuIHJldHVybiBjbGVhbnVwIGZ1bmN0aW9uLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIGdldDxUIGV4dGVuZHMgU3RhdGU+KFR5cGU6IFN0YXRlLkV4dGVuZHM8VD4sIGNhbGxiYWNrPzogZ2V0LkNhbGxiYWNrPFQ+KTogVDtcbi8qKlxuICogRmV0Y2hlcyBhbmQgYXNzaWducyB0aGUgY29udHJvbGxlciB3aGljaCBzcGF3bmVkIHRoaXMgaG9zdC5cbiAqIFdoZW4gcGFyZW50IGFzc2lnbnMgYW4gaW5zdGFuY2UgdmlhIGB1c2UoKWAgZGlyZWN0aXZlLCBpdFxuICogd2lsbCBiZSBtYWRlIGF2YWlsYWJsZSB0byBjaGlsZCB1cG9uIHRoaXMgcmVxdWVzdC5cbiAqXG4gKiBAcGFyYW0gVHlwZSAtIFR5cGUgb2YgY29udHJvbGxlciBjb21wYXRpYmxlIHdpdGggdGhpcyBjbGFzcy5cbiAqIEBwYXJhbSByZXF1aXJlZCAtIElmIGZhbHNlLCBwcm9wZXJ0eSBtYXkgYmUgdW5kZWZpbmVkLiBPdGhlcndpc2Ugd2lsbCB0aHJvdyBzdXNwZW5zZS5cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBnZXQ8VCBleHRlbmRzIFN0YXRlPihUeXBlOiBTdGF0ZS5FeHRlbmRzPFQ+LCByZXF1aXJlZDogZmFsc2UpOiBUIHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBDb2xsZWN0cyBkb3duc3RyZWFtIFN0YXRlcywgdGhpcyB3aWxsIGFjY3VtdWxhdGUgYWxsIGluc3RhbmNlcyBvZiBzcGVjaWZpZWQgdHlwZSBmb3Igd2hpY2ggdGhpcyBpcyBhbiBhbmNlc3Rvci5cbiAqIFJldHVybnMgYSBmcm96ZW4gYXJyYXkgdGhhdCB1cGRhdGVzIGFzIFN0YXRlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZC5cbiAqIENhbGxiYWNrIHJ1bnMgb24gZWFjaCBTdGF0ZSByZWdpc3RyYXRpb24gYW5kIGNhbiByZXR1cm4gY2xlYW51cCBvciBmYWxzZSB0byBwcmV2ZW50IHJlZ2lzdHJhdGlvbi5cbiAqXG4gKiBAcGFyYW0gVHlwZSAtIFR5cGUgb2YgU3RhdGUgdG8gY29sbGVjdC5cbiAqIEBwYXJhbSBkb3duc3RyZWFtIC0gTXVzdCBiZSB0cnVlIHRvIGVuYWJsZSBkb3duc3RyZWFtIG1vZGUuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBPcHRpb25hbCBsaWZlY3ljbGUgY2FsbGJhY2ssIHJlY2VpdmVzIChzdGF0ZSwgc3ViamVjdCkuIE1heSByZXR1cm4gZmFsc2UgdG8gcHJldmVudCByZWdpc3RyYXRpb24uXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gZ2V0PFQgZXh0ZW5kcyBTdGF0ZT4oVHlwZTogU3RhdGUuRXh0ZW5kczxUPiwgZG93bnN0cmVhbTogdHJ1ZSwgY2FsbGJhY2s/OiBnZXQuQ2FsbGJhY2s8VD4pOiByZWFkb25seSBUW107XG5leHBvcnQgeyBnZXQgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBQSxNQUFRO0NBQUE7RUFBQSxNQUFVLENBQUcsR0FBQyxNQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3RCLElBQUksTUFBSztDQUFBO0VBQUEsTUFBVztFQUFDO0VBQU87RUFBRSxNQUFPO0VBQUc7RUFBUyxJQUFBO0VBQWM7RUFBRTtDQUFDO0VBQUE7RUFBQTtFQUFVO0VBQUk7RUFBRztFQUFLO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDeEYsSUFBQSxNQUFBO0NBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNBLElBQUUsTUFBQTtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQSxJQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQSJ9
@@ -1,77 +0,0 @@
1
- import { scope } from "../observable.js";
2
- import { PARENT, update } from "../state.js";
3
- import { Context } from "../context.js";
4
- import { use } from "./use.js";
5
-
6
- //#region src/instruction/get.ts
7
- function get(Type, arg1, arg2) {
8
- const isDownstream = arg1 === true;
9
- const isOptional = arg1 === false;
10
- return use((key, subject) => {
11
- if (isDownstream) {
12
- const callback = typeof arg2 === "function" ? arg2 : void 0;
13
- const applied = /* @__PURE__ */ new Set();
14
- const reset = () => {
15
- update(subject, key, Object.freeze(Array.from(applied)));
16
- };
17
- Context.get(subject, (context) => {
18
- context.get(Type, (state) => {
19
- let remove;
20
- let flush;
21
- if (applied.has(state)) return;
22
- if (callback) {
23
- const exit = scope();
24
- try {
25
- const done = callback(state, subject);
26
- if (done === false) return false;
27
- if (typeof done == "function") remove = done;
28
- } finally {
29
- flush = exit();
30
- }
31
- }
32
- applied.add(state);
33
- reset();
34
- const done = () => {
35
- if (flush) flush();
36
- ignore();
37
- applied.delete(state);
38
- reset();
39
- if (typeof remove == "function") remove();
40
- remove = void 0;
41
- };
42
- const ignore = state.set(done, null);
43
- return done;
44
- });
45
- });
46
- return {
47
- value: [],
48
- enumerable: false
49
- };
50
- }
51
- const hasParent = PARENT.get(subject);
52
- function assign(value) {
53
- if (typeof arg1 === "function") {
54
- const result = arg1(value, subject);
55
- if (typeof result === "function") subject.set(result, null);
56
- }
57
- update(subject, key, value);
58
- }
59
- if (hasParent && hasParent instanceof Type) {
60
- assign(hasParent);
61
- return {};
62
- }
63
- Context.get(subject, (context) => {
64
- const self = context.get(Type);
65
- if (self && self !== subject) assign(self);
66
- else if (!isOptional) throw new Error(`Required ${Type} not found in context for ${subject}.`);
67
- });
68
- return {
69
- get: !isOptional,
70
- enumerable: false
71
- };
72
- });
73
- }
74
-
75
- //#endregion
76
- export { get };
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnN0cnVjdGlvbi9nZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2NvcGUgfSBmcm9tICcuLi9vYnNlcnZhYmxlJztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0JztcbmltcG9ydCB7IFN0YXRlLCBQQVJFTlQsIHVwZGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB7IHVzZSB9IGZyb20gJy4vdXNlJztcblxudHlwZSBUeXBlPFQgZXh0ZW5kcyBTdGF0ZT4gPSBTdGF0ZS5FeHRlbmRzPFQ+ICYgdHlwZW9mIFN0YXRlO1xuXG5kZWNsYXJlIG5hbWVzcGFjZSBnZXQge1xuICB0eXBlIENhbGxiYWNrPFQgPSBhbnk+ID0gKFxuICAgIHN0YXRlOiBULFxuICAgIHN1YmplY3Q6IFN0YXRlXG4gICkgPT4gdm9pZCB8IGJvb2xlYW4gfCAoKCkgPT4gdm9pZCk7XG59XG5cbi8qKlxuICogRmV0Y2hlcyB1cHN0cmVhbSBTdGF0ZSBmcm9tIGNvbnRleHQgd2l0aCBvcHRpb25hbCBsaWZlY3ljbGUgY2FsbGJhY2suXG4gKiBDYWxsYmFjayBydW5zIG9uIG1vdW50IGFuZCBjYW4gcmV0dXJuIGNsZWFudXAgZnVuY3Rpb24gZm9yIHVubW91bnQuXG4gKlxuICogQHBhcmFtIFR5cGUgLSBUeXBlIG9mIFN0YXRlIHRvIGZldGNoLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgbGlmZWN5Y2xlIGNhbGxiYWNrLCByZWNlaXZlcyAoc3RhdGUsIHN1YmplY3QpLiBDYW4gcmV0dXJuIGNsZWFudXAgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGdldDxUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBTdGF0ZS5FeHRlbmRzPFQ+LFxuICBjYWxsYmFjaz86IGdldC5DYWxsYmFjazxUPlxuKTogVDtcblxuLyoqXG4gKiBGZXRjaGVzIGFuZCBhc3NpZ25zIHRoZSBjb250cm9sbGVyIHdoaWNoIHNwYXduZWQgdGhpcyBob3N0LlxuICogV2hlbiBwYXJlbnQgYXNzaWducyBhbiBpbnN0YW5jZSB2aWEgYHVzZSgpYCBkaXJlY3RpdmUsIGl0XG4gKiB3aWxsIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGNoaWxkIHVwb24gdGhpcyByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCB0aGlzIGNsYXNzLlxuICogQHBhcmFtIHJlcXVpcmVkIC0gSWYgZmFsc2UsIHByb3BlcnR5IG1heSBiZSB1bmRlZmluZWQuIE90aGVyd2lzZSB3aWxsIHRocm93IHN1c3BlbnNlLlxuICovXG5mdW5jdGlvbiBnZXQ8VCBleHRlbmRzIFN0YXRlPihcbiAgVHlwZTogU3RhdGUuRXh0ZW5kczxUPixcbiAgcmVxdWlyZWQ6IGZhbHNlXG4pOiBUIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIENvbGxlY3RzIGRvd25zdHJlYW0gU3RhdGVzLCB0aGlzIHdpbGwgYWNjdW11bGF0ZSBhbGwgaW5zdGFuY2VzIG9mIHNwZWNpZmllZCB0eXBlIGZvciB3aGljaCB0aGlzIGlzIGFuIGFuY2VzdG9yLlxuICogUmV0dXJucyBhIGZyb3plbiBhcnJheSB0aGF0IHVwZGF0ZXMgYXMgU3RhdGVzIGFyZSBhZGRlZCBvciByZW1vdmVkLlxuICogQ2FsbGJhY2sgcnVucyBvbiBlYWNoIFN0YXRlIHJlZ2lzdHJhdGlvbiBhbmQgY2FuIHJldHVybiBjbGVhbnVwIG9yIGZhbHNlIHRvIHByZXZlbnQgcmVnaXN0cmF0aW9uLlxuICpcbiAqIEBwYXJhbSBUeXBlIC0gVHlwZSBvZiBTdGF0ZSB0byBjb2xsZWN0LlxuICogQHBhcmFtIGRvd25zdHJlYW0gLSBNdXN0IGJlIHRydWUgdG8gZW5hYmxlIGRvd25zdHJlYW0gbW9kZS5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGxpZmVjeWNsZSBjYWxsYmFjaywgcmVjZWl2ZXMgKHN0YXRlLCBzdWJqZWN0KS4gTWF5IHJldHVybiBmYWxzZSB0byBwcmV2ZW50IHJlZ2lzdHJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0PFQgZXh0ZW5kcyBTdGF0ZT4oXG4gIFR5cGU6IFN0YXRlLkV4dGVuZHM8VD4sXG4gIGRvd25zdHJlYW06IHRydWUsXG4gIGNhbGxiYWNrPzogZ2V0LkNhbGxiYWNrPFQ+XG4pOiByZWFkb25seSBUW107XG5cbmZ1bmN0aW9uIGdldDxSLCBUIGV4dGVuZHMgU3RhdGU+KFxuICBUeXBlOiBUeXBlPFQ+LFxuICBhcmcxPzogRnVuY3Rpb24gfCBib29sZWFuLFxuICBhcmcyPzogRnVuY3Rpb25cbikge1xuICBjb25zdCBpc0Rvd25zdHJlYW0gPSBhcmcxID09PSB0cnVlO1xuICBjb25zdCBpc09wdGlvbmFsID0gYXJnMSA9PT0gZmFsc2U7XG5cbiAgcmV0dXJuIHVzZTxUW10gfCBUPigoa2V5LCBzdWJqZWN0KSA9PiB7XG4gICAgLy8gRG93bnN0cmVhbSBjb2xsZWN0aW9uIG1vZGVcbiAgICBpZiAoaXNEb3duc3RyZWFtKSB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9XG4gICAgICAgIHR5cGVvZiBhcmcyID09PSAnZnVuY3Rpb24nID8gKGFyZzIgYXMgZ2V0LkNhbGxiYWNrPFQ+KSA6IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgYXBwbGllZCA9IG5ldyBTZXQ8U3RhdGU+KCk7XG4gICAgICBjb25zdCByZXNldCA9ICgpID0+IHtcbiAgICAgICAgdXBkYXRlKHN1YmplY3QsIGtleSwgT2JqZWN0LmZyZWV6ZShBcnJheS5mcm9tKGFwcGxpZWQpKSk7XG4gICAgICB9O1xuXG4gICAgICBDb250ZXh0LmdldChzdWJqZWN0LCAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb250ZXh0LmdldChUeXBlLCAoc3RhdGUpID0+IHtcbiAgICAgICAgICBsZXQgcmVtb3ZlOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgbGV0IGZsdXNoOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAoYXBwbGllZC5oYXMoc3RhdGUpKSByZXR1cm47XG5cbiAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXQgPSBzY29wZSgpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBkb25lID0gY2FsbGJhY2soc3RhdGUsIHN1YmplY3QpO1xuXG4gICAgICAgICAgICAgIGlmIChkb25lID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRvbmUgPT0gJ2Z1bmN0aW9uJykgcmVtb3ZlID0gZG9uZTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIGZsdXNoID0gZXhpdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFwcGxpZWQuYWRkKHN0YXRlKTtcbiAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgY29uc3QgZG9uZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChmbHVzaCkgZmx1c2goKTtcbiAgICAgICAgICAgIGlnbm9yZSgpO1xuXG4gICAgICAgICAgICBhcHBsaWVkLmRlbGV0ZShzdGF0ZSk7XG4gICAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlbW92ZSA9PSAnZnVuY3Rpb24nKSByZW1vdmUoKTtcblxuICAgICAgICAgICAgcmVtb3ZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBpZ25vcmUgPSBzdGF0ZS5zZXQoZG9uZSwgbnVsbCk7XG5cbiAgICAgICAgICByZXR1cm4gZG9uZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IFtdLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBVcHN0cmVhbSBtb2RlXG4gICAgY29uc3QgaGFzUGFyZW50ID0gUEFSRU5ULmdldChzdWJqZWN0KSBhcyBUO1xuXG4gICAgZnVuY3Rpb24gYXNzaWduKHZhbHVlOiBUKSB7XG4gICAgICAvLyBJZiBjYWxsYmFjayBwcm92aWRlZCwgcnVuIGl0IGFzIGxpZmVjeWNsZSBob29rXG4gICAgICBpZiAodHlwZW9mIGFyZzEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSBhcmcxIGFzIGdldC5DYWxsYmFjazxUPjtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2sodmFsdWUsIHN1YmplY3QpO1xuXG4gICAgICAgIC8vIFJlZ2lzdGVyIGNsZWFudXAgaWYgcmV0dXJuZWRcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBzdWJqZWN0LnNldChyZXN1bHQsIG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShzdWJqZWN0LCBrZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBwYXJlbnRcbiAgICBpZiAoaGFzUGFyZW50ICYmIGhhc1BhcmVudCBpbnN0YW5jZW9mIFR5cGUpIHtcbiAgICAgIGFzc2lnbihoYXNQYXJlbnQpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIC8vIENoZWNrIGNvbnRleHRcbiAgICBDb250ZXh0LmdldChzdWJqZWN0LCAoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc2VsZiA9IGNvbnRleHQuZ2V0KFR5cGUpO1xuXG4gICAgICBpZiAoc2VsZiAmJiBzZWxmICE9PSBzdWJqZWN0KSBhc3NpZ24oc2VsZik7XG4gICAgICBlbHNlIGlmICghaXNPcHRpb25hbClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBSZXF1aXJlZCAke1R5cGV9IG5vdCBmb3VuZCBpbiBjb250ZXh0IGZvciAke3N1YmplY3R9LmBcbiAgICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBnZXQ6ICFpc09wdGlvbmFsLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICB9O1xuICB9KTtcbn1cblxuZXhwb3J0IHsgZ2V0IH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQXNEQSxTQUFTLElBQ1AsTUFDQSxNQUNBLE1BQ0E7Q0FDQSxNQUFNLGVBQWUsU0FBUztDQUM5QixNQUFNLGFBQWEsU0FBUztBQUU1QixRQUFPLEtBQWMsS0FBSyxZQUFZO0FBRXBDLE1BQUksY0FBYztHQUNoQixNQUFNLFdBQ0osT0FBTyxTQUFTLGFBQWMsT0FBMkI7R0FFM0QsTUFBTSwwQkFBVSxJQUFJLEtBQVk7R0FDaEMsTUFBTSxjQUFjO0FBQ2xCLFdBQU8sU0FBUyxLQUFLLE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUM7O0FBRzFELFdBQVEsSUFBSSxVQUFVLFlBQVk7QUFDaEMsWUFBUSxJQUFJLE9BQU8sVUFBVTtLQUMzQixJQUFJO0tBQ0osSUFBSTtBQUVKLFNBQUksUUFBUSxJQUFJLE1BQU0sQ0FBRTtBQUV4QixTQUFJLFVBQVU7TUFDWixNQUFNLE9BQU8sT0FBTztBQUVwQixVQUFJO09BQ0YsTUFBTSxPQUFPLFNBQVMsT0FBTyxRQUFRO0FBRXJDLFdBQUksU0FBUyxNQUFPLFFBQU87QUFDM0IsV0FBSSxPQUFPLFFBQVEsV0FBWSxVQUFTO2dCQUNoQztBQUNSLGVBQVEsTUFBTTs7O0FBSWxCLGFBQVEsSUFBSSxNQUFNO0FBQ2xCLFlBQU87S0FFUCxNQUFNLGFBQWE7QUFDakIsVUFBSSxNQUFPLFFBQU87QUFDbEIsY0FBUTtBQUVSLGNBQVEsT0FBTyxNQUFNO0FBQ3JCLGFBQU87QUFFUCxVQUFJLE9BQU8sVUFBVSxXQUFZLFNBQVE7QUFFekMsZUFBUzs7S0FHWCxNQUFNLFNBQVMsTUFBTSxJQUFJLE1BQU0sS0FBSztBQUVwQyxZQUFPO01BQ1A7S0FDRjtBQUVGLFVBQU87SUFDTCxPQUFPLEVBQUU7SUFDVCxZQUFZO0lBQ2I7O0VBSUgsTUFBTSxZQUFZLE9BQU8sSUFBSSxRQUFRO0VBRXJDLFNBQVMsT0FBTyxPQUFVO0FBRXhCLE9BQUksT0FBTyxTQUFTLFlBQVk7SUFFOUIsTUFBTSxTQURXLEtBQ08sT0FBTyxRQUFRO0FBR3ZDLFFBQUksT0FBTyxXQUFXLFdBQ3BCLFNBQVEsSUFBSSxRQUFRLEtBQUs7O0FBSTdCLFVBQU8sU0FBUyxLQUFLLE1BQU07O0FBSTdCLE1BQUksYUFBYSxxQkFBcUIsTUFBTTtBQUMxQyxVQUFPLFVBQVU7QUFDakIsVUFBTyxFQUFFOztBQUlYLFVBQVEsSUFBSSxVQUFVLFlBQVk7R0FDaEMsTUFBTSxPQUFPLFFBQVEsSUFBSSxLQUFLO0FBRTlCLE9BQUksUUFBUSxTQUFTLFFBQVMsUUFBTyxLQUFLO1lBQ2pDLENBQUMsV0FDUixPQUFNLElBQUksTUFDUixZQUFZLEtBQUssNEJBQTRCLFFBQVEsR0FDdEQ7SUFDSDtBQUVGLFNBQU87R0FDTCxLQUFLLENBQUM7R0FDTixZQUFZO0dBQ2I7R0FDRCJ9
@@ -1,71 +0,0 @@
1
- import { State } from "../state.js";
2
-
3
- //#region src/instruction/ref.d.ts
4
- declare namespace ref {
5
- type Callback<T> = (argument: T) => ((next: T | null) => void) | Promise<void> | void | boolean;
6
- interface Object<T = any> {
7
- /** Current value held by this reference. */
8
- current: T;
9
- /** State instance this reference belongs to. */
10
- is: State;
11
- /** Key of property on state this reference belongs to. */
12
- key: string;
13
- /**
14
- * Subscribe to changes of this reference.
15
- *
16
- * @param callback - Callback to invoke with the current value when it changes.
17
- * @returns Unsubscribe function to stop listening to changes.
18
- */
19
- get(callback: (value: T) => void): () => void;
20
- /** Retrieve current value. */
21
- get(): T | null;
22
- }
23
- /** Object with references to all managed values of `T`. */
24
- /** Object with references to all managed values of `T`. */
25
- type Proxy<T extends State> = { [P in State.Field<T>]-?: Object<T[P]> } & {
26
- get(): T;
27
- };
28
- type CustomProxy<T extends State, R> = { [P in State.Field<T>]-?: R } & {
29
- get(): T;
30
- };
31
- }
32
- /**
33
- * Creates an object with references to all managed values.
34
- * Each property is a function to set value in state when invoked.
35
- *
36
- * *Properties are simultaneously a ref-function and ref-object, use as needed.*
37
- *
38
- * @param target - Source state from which to reference values.
39
- */
40
- declare function ref<T extends State>(target: T): ref.Proxy<T>;
41
- /**
42
- * Creates an object with values based on managed values.
43
- * Each property will invoke mapper function on first access supply
44
- * the its return value going forward.
45
- *
46
- * @param target - Source state from which to reference values.
47
- * @param mapper - Function producing the placeholder value for any given property.
48
- */
49
- declare function ref<O extends State, R>(target: O, mapper: (key: State.Field<O>) => R): ref.CustomProxy<O, R>;
50
- /**
51
- * Creates a ref-compatible property.
52
- * Will persist value, and updates to this are made part of controller event-stream.
53
- *
54
- * *Output is simultaneously a ref-function and ref-object, use as needed.*
55
- *
56
- * @param callback - Optional callback to synchronously fire when reference is first set or does update.
57
- */
58
- declare function ref<T>(callback?: ref.Callback<T>): ref.Object<T>;
59
- /**
60
- * Creates a ref-compatible property.
61
- * Will persist value, and updates to this are made part of controller event-stream.
62
- *
63
- * *Output is simultaneously a ref-function and ref-object, use as needed.*
64
- *
65
- * @param callback - Optional callback to synchronously fire when reference is first set or does update.
66
- * @param ignoreNull - Default `true`. If `false`, will still callback with `null`.
67
- */
68
- declare function ref<T>(callback: ref.Callback<T | null>, ignoreNull: boolean): ref.Object<T>;
69
- //#endregion
70
- export { ref };
71
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3JlZi5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuZGVjbGFyZSBuYW1lc3BhY2UgcmVmIHtcbiAgICB0eXBlIENhbGxiYWNrPFQ+ID0gKGFyZ3VtZW50OiBUKSA9PiAoKG5leHQ6IFQgfCBudWxsKSA9PiB2b2lkKSB8IFByb21pc2U8dm9pZD4gfCB2b2lkIHwgYm9vbGVhbjtcbiAgICBpbnRlcmZhY2UgT2JqZWN0PFQgPSBhbnk+IHtcbiAgICAgICAgLyoqIEN1cnJlbnQgdmFsdWUgaGVsZCBieSB0aGlzIHJlZmVyZW5jZS4gKi9cbiAgICAgICAgY3VycmVudDogVDtcbiAgICAgICAgLyoqIFN0YXRlIGluc3RhbmNlIHRoaXMgcmVmZXJlbmNlIGJlbG9uZ3MgdG8uICovXG4gICAgICAgIGlzOiBTdGF0ZTtcbiAgICAgICAgLyoqIEtleSBvZiBwcm9wZXJ0eSBvbiBzdGF0ZSB0aGlzIHJlZmVyZW5jZSBiZWxvbmdzIHRvLiAqL1xuICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN1YnNjcmliZSB0byBjaGFuZ2VzIG9mIHRoaXMgcmVmZXJlbmNlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBDYWxsYmFjayB0byBpbnZva2Ugd2l0aCB0aGUgY3VycmVudCB2YWx1ZSB3aGVuIGl0IGNoYW5nZXMuXG4gICAgICAgICAqIEByZXR1cm5zIFVuc3Vic2NyaWJlIGZ1bmN0aW9uIHRvIHN0b3AgbGlzdGVuaW5nIHRvIGNoYW5nZXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQoY2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gdm9pZCk6ICgpID0+IHZvaWQ7XG4gICAgICAgIC8qKiBSZXRyaWV2ZSBjdXJyZW50IHZhbHVlLiAqL1xuICAgICAgICBnZXQoKTogVCB8IG51bGw7XG4gICAgfVxuICAgIC8qKiBPYmplY3Qgd2l0aCByZWZlcmVuY2VzIHRvIGFsbCBtYW5hZ2VkIHZhbHVlcyBvZiBgVGAuICovXG4gICAgLyoqIE9iamVjdCB3aXRoIHJlZmVyZW5jZXMgdG8gYWxsIG1hbmFnZWQgdmFsdWVzIG9mIGBUYC4gKi9cbiAgICB0eXBlIFByb3h5PFQgZXh0ZW5kcyBTdGF0ZT4gPSB7XG4gICAgICAgIFtQIGluIFN0YXRlLkZpZWxkPFQ+XS0/OiBPYmplY3Q8VFtQXT47XG4gICAgfSAmIHtcbiAgICAgICAgZ2V0KCk6IFQ7XG4gICAgfTtcbiAgICB0eXBlIEN1c3RvbVByb3h5PFQgZXh0ZW5kcyBTdGF0ZSwgUj4gPSB7XG4gICAgICAgIFtQIGluIFN0YXRlLkZpZWxkPFQ+XS0/OiBSO1xuICAgIH0gJiB7XG4gICAgICAgIGdldCgpOiBUO1xuICAgIH07XG59XG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggcmVmZXJlbmNlcyB0byBhbGwgbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gdG8gc2V0IHZhbHVlIGluIHN0YXRlIHdoZW4gaW52b2tlZC5cbiAqXG4gKiAqUHJvcGVydGllcyBhcmUgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHJlZjxUIGV4dGVuZHMgU3RhdGU+KHRhcmdldDogVCk6IHJlZi5Qcm94eTxUPjtcbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB2YWx1ZXMgYmFzZWQgb24gbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IHdpbGwgaW52b2tlIG1hcHBlciBmdW5jdGlvbiBvbiBmaXJzdCBhY2Nlc3Mgc3VwcGx5XG4gKiB0aGUgaXRzIHJldHVybiB2YWx1ZSBnb2luZyBmb3J3YXJkLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICogQHBhcmFtIG1hcHBlciAtIEZ1bmN0aW9uIHByb2R1Y2luZyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGFueSBnaXZlbiBwcm9wZXJ0eS5cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiByZWY8TyBleHRlbmRzIFN0YXRlLCBSPih0YXJnZXQ6IE8sIG1hcHBlcjogKGtleTogU3RhdGUuRmllbGQ8Tz4pID0+IFIpOiByZWYuQ3VzdG9tUHJveHk8TywgUj47XG4vKipcbiAqIENyZWF0ZXMgYSByZWYtY29tcGF0aWJsZSBwcm9wZXJ0eS5cbiAqIFdpbGwgcGVyc2lzdCB2YWx1ZSwgYW5kIHVwZGF0ZXMgdG8gdGhpcyBhcmUgbWFkZSBwYXJ0IG9mIGNvbnRyb2xsZXIgZXZlbnQtc3RyZWFtLlxuICpcbiAqICpPdXRwdXQgaXMgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGNhbGxiYWNrIHRvIHN5bmNocm9ub3VzbHkgZmlyZSB3aGVuIHJlZmVyZW5jZSBpcyBmaXJzdCBzZXQgb3IgZG9lcyB1cGRhdGUuXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gcmVmPFQ+KGNhbGxiYWNrPzogcmVmLkNhbGxiYWNrPFQ+KTogcmVmLk9iamVjdDxUPjtcbi8qKlxuICogQ3JlYXRlcyBhIHJlZi1jb21wYXRpYmxlIHByb3BlcnR5LlxuICogV2lsbCBwZXJzaXN0IHZhbHVlLCBhbmQgdXBkYXRlcyB0byB0aGlzIGFyZSBtYWRlIHBhcnQgb2YgY29udHJvbGxlciBldmVudC1zdHJlYW0uXG4gKlxuICogKk91dHB1dCBpcyBzaW11bHRhbmVvdXNseSBhIHJlZi1mdW5jdGlvbiBhbmQgcmVmLW9iamVjdCwgdXNlIGFzIG5lZWRlZC4qXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgY2FsbGJhY2sgdG8gc3luY2hyb25vdXNseSBmaXJlIHdoZW4gcmVmZXJlbmNlIGlzIGZpcnN0IHNldCBvciBkb2VzIHVwZGF0ZS5cbiAqIEBwYXJhbSBpZ25vcmVOdWxsIC0gRGVmYXVsdCBgdHJ1ZWAuIElmIGBmYWxzZWAsIHdpbGwgc3RpbGwgY2FsbGJhY2sgd2l0aCBgbnVsbGAuXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gcmVmPFQ+KGNhbGxiYWNrOiByZWYuQ2FsbGJhY2s8VCB8IG51bGw+LCBpZ25vcmVOdWxsOiBib29sZWFuKTogcmVmLk9iamVjdDxUPjtcbmV4cG9ydCB7IHJlZiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFBLE1BQVE7Q0FBQTtFQUFBLEdBQVUsTUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDdEIsSUFBSSxNQUFLO0NBQUE7RUFBQSxNQUFXO0VBQUM7RUFBRztFQUFBO0VBQVUsSUFBSTtFQUFJO0NBQUk7RUFBQztFQUFJO0VBQUM7RUFBTztFQUFFO0VBQU07RUFBRTtFQUFBO0NBQUE7QUFDckUsSUFBSSxNQUFBO0NBQUE7RUFBVSxHQUFBLE1BQVc7RUFBQTtFQUFLO0VBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUEsSUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzlCLElBQUksTUFBTTtDQUFDO0VBQUMsTUFBUTtFQUFBO0VBQUEsSUFBTTtFQUFZO0VBQUMsSUFBQTtFQUFZO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNuRCxJQUFJLE1BQUk7Q0FBQTtFQUFPLE1BQUc7RUFBQTtFQUFBLElBQUE7RUFBQTtFQUFBLElBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQSJ9
@@ -1,68 +0,0 @@
1
- import { addListener, scope } from "../observable.js";
2
- import { update } from "../state.js";
3
- import { use } from "./use.js";
4
-
5
- //#region src/instruction/ref.ts
6
- const { defineProperty, defineProperties } = Object;
7
- function ref(arg, arg2) {
8
- return use((key, subject, state) => {
9
- let value = {};
10
- const method = (key, from) => (callback) => callback ? addListener(subject, () => callback(from[key]), key) : from[key];
11
- if (arg === subject) addListener(subject, () => {
12
- for (const key in subject) if (typeof arg2 == "function") defineProperty(value, key, {
13
- configurable: true,
14
- get() {
15
- const out = arg2(key);
16
- defineProperty(value, key, { value: out });
17
- return out;
18
- }
19
- });
20
- else {
21
- const get = method(key, subject);
22
- const set = (x) => subject[key] = x;
23
- defineProperties(set, {
24
- current: {
25
- get,
26
- set
27
- },
28
- get: { value: get },
29
- is: { value: subject },
30
- key: { value: key }
31
- });
32
- defineProperty(value, key, { value: set });
33
- }
34
- return null;
35
- }, true);
36
- else if (typeof arg == "object") throw new Error("ref instruction does not support object which is not 'this'");
37
- else {
38
- let unset;
39
- const get = method(key, state);
40
- const set = (value) => {
41
- if (!update(subject, key, value) || !arg) return;
42
- if (unset) unset = void unset(value);
43
- if (value === null && arg2 !== false) return;
44
- const exit = scope();
45
- const out = arg.call(subject, value);
46
- const flush = exit();
47
- unset = (key) => {
48
- if (typeof out == "function") out(key);
49
- flush();
50
- };
51
- };
52
- state[key] = null;
53
- value = defineProperty({
54
- get,
55
- key,
56
- is: subject
57
- }, "current", {
58
- get,
59
- set
60
- });
61
- }
62
- defineProperty(subject, key, { value });
63
- });
64
- }
65
-
66
- //#endregion
67
- export { ref };
68
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbnN0cnVjdGlvbi9yZWYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkTGlzdGVuZXIsIHNjb3BlIH0gZnJvbSAnLi4vb2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBTdGF0ZSwgdXBkYXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuaW1wb3J0IHsgdXNlIH0gZnJvbSAnLi91c2UnO1xuXG5jb25zdCB7IGRlZmluZVByb3BlcnR5LCBkZWZpbmVQcm9wZXJ0aWVzIH0gPSBPYmplY3Q7XG5cbmRlY2xhcmUgbmFtZXNwYWNlIHJlZiB7XG4gIHR5cGUgQ2FsbGJhY2s8VD4gPSAoXG4gICAgYXJndW1lbnQ6IFRcbiAgKSA9PiAoKG5leHQ6IFQgfCBudWxsKSA9PiB2b2lkKSB8IFByb21pc2U8dm9pZD4gfCB2b2lkIHwgYm9vbGVhbjtcblxuICBpbnRlcmZhY2UgT2JqZWN0PFQgPSBhbnk+IHtcbiAgICAvKiogQ3VycmVudCB2YWx1ZSBoZWxkIGJ5IHRoaXMgcmVmZXJlbmNlLiAqL1xuICAgIGN1cnJlbnQ6IFQ7XG5cbiAgICAvKiogU3RhdGUgaW5zdGFuY2UgdGhpcyByZWZlcmVuY2UgYmVsb25ncyB0by4gKi9cbiAgICBpczogU3RhdGU7XG5cbiAgICAvKiogS2V5IG9mIHByb3BlcnR5IG9uIHN0YXRlIHRoaXMgcmVmZXJlbmNlIGJlbG9uZ3MgdG8uICovXG4gICAga2V5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmUgdG8gY2hhbmdlcyBvZiB0aGlzIHJlZmVyZW5jZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYWxsYmFjayAtIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIHRoZSBjdXJyZW50IHZhbHVlIHdoZW4gaXQgY2hhbmdlcy5cbiAgICAgKiBAcmV0dXJucyBVbnN1YnNjcmliZSBmdW5jdGlvbiB0byBzdG9wIGxpc3RlbmluZyB0byBjaGFuZ2VzLlxuICAgICAqL1xuICAgIGdldChjYWxsYmFjazogKHZhbHVlOiBUKSA9PiB2b2lkKTogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBSZXRyaWV2ZSBjdXJyZW50IHZhbHVlLiAqL1xuICAgIGdldCgpOiBUIHwgbnVsbDtcbiAgfVxuXG4gIC8qKiBPYmplY3Qgd2l0aCByZWZlcmVuY2VzIHRvIGFsbCBtYW5hZ2VkIHZhbHVlcyBvZiBgVGAuICovXG5cbiAgLyoqIE9iamVjdCB3aXRoIHJlZmVyZW5jZXMgdG8gYWxsIG1hbmFnZWQgdmFsdWVzIG9mIGBUYC4gKi9cbiAgdHlwZSBQcm94eTxUIGV4dGVuZHMgU3RhdGU+ID0geyBbUCBpbiBTdGF0ZS5GaWVsZDxUPl0tPzogT2JqZWN0PFRbUF0+IH0gJiB7XG4gICAgZ2V0KCk6IFQ7XG4gIH07XG5cbiAgdHlwZSBDdXN0b21Qcm94eTxUIGV4dGVuZHMgU3RhdGUsIFI+ID0geyBbUCBpbiBTdGF0ZS5GaWVsZDxUPl0tPzogUiB9ICYge1xuICAgIGdldCgpOiBUO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gb2JqZWN0IHdpdGggcmVmZXJlbmNlcyB0byBhbGwgbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24gdG8gc2V0IHZhbHVlIGluIHN0YXRlIHdoZW4gaW52b2tlZC5cbiAqXG4gKiAqUHJvcGVydGllcyBhcmUgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICovXG5mdW5jdGlvbiByZWY8VCBleHRlbmRzIFN0YXRlPih0YXJnZXQ6IFQpOiByZWYuUHJveHk8VD47XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB2YWx1ZXMgYmFzZWQgb24gbWFuYWdlZCB2YWx1ZXMuXG4gKiBFYWNoIHByb3BlcnR5IHdpbGwgaW52b2tlIG1hcHBlciBmdW5jdGlvbiBvbiBmaXJzdCBhY2Nlc3Mgc3VwcGx5XG4gKiB0aGUgaXRzIHJldHVybiB2YWx1ZSBnb2luZyBmb3J3YXJkLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBTb3VyY2Ugc3RhdGUgZnJvbSB3aGljaCB0byByZWZlcmVuY2UgdmFsdWVzLlxuICogQHBhcmFtIG1hcHBlciAtIEZ1bmN0aW9uIHByb2R1Y2luZyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIGFueSBnaXZlbiBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gcmVmPE8gZXh0ZW5kcyBTdGF0ZSwgUj4oXG4gIHRhcmdldDogTyxcbiAgbWFwcGVyOiAoa2V5OiBTdGF0ZS5GaWVsZDxPPikgPT4gUlxuKTogcmVmLkN1c3RvbVByb3h5PE8sIFI+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSByZWYtY29tcGF0aWJsZSBwcm9wZXJ0eS5cbiAqIFdpbGwgcGVyc2lzdCB2YWx1ZSwgYW5kIHVwZGF0ZXMgdG8gdGhpcyBhcmUgbWFkZSBwYXJ0IG9mIGNvbnRyb2xsZXIgZXZlbnQtc3RyZWFtLlxuICpcbiAqICpPdXRwdXQgaXMgc2ltdWx0YW5lb3VzbHkgYSByZWYtZnVuY3Rpb24gYW5kIHJlZi1vYmplY3QsIHVzZSBhcyBuZWVkZWQuKlxuICpcbiAqIEBwYXJhbSBjYWxsYmFjayAtIE9wdGlvbmFsIGNhbGxiYWNrIHRvIHN5bmNocm9ub3VzbHkgZmlyZSB3aGVuIHJlZmVyZW5jZSBpcyBmaXJzdCBzZXQgb3IgZG9lcyB1cGRhdGUuXG4gKi9cbmZ1bmN0aW9uIHJlZjxUPihjYWxsYmFjaz86IHJlZi5DYWxsYmFjazxUPik6IHJlZi5PYmplY3Q8VD47XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJlZi1jb21wYXRpYmxlIHByb3BlcnR5LlxuICogV2lsbCBwZXJzaXN0IHZhbHVlLCBhbmQgdXBkYXRlcyB0byB0aGlzIGFyZSBtYWRlIHBhcnQgb2YgY29udHJvbGxlciBldmVudC1zdHJlYW0uXG4gKlxuICogKk91dHB1dCBpcyBzaW11bHRhbmVvdXNseSBhIHJlZi1mdW5jdGlvbiBhbmQgcmVmLW9iamVjdCwgdXNlIGFzIG5lZWRlZC4qXG4gKlxuICogQHBhcmFtIGNhbGxiYWNrIC0gT3B0aW9uYWwgY2FsbGJhY2sgdG8gc3luY2hyb25vdXNseSBmaXJlIHdoZW4gcmVmZXJlbmNlIGlzIGZpcnN0IHNldCBvciBkb2VzIHVwZGF0ZS5cbiAqIEBwYXJhbSBpZ25vcmVOdWxsIC0gRGVmYXVsdCBgdHJ1ZWAuIElmIGBmYWxzZWAsIHdpbGwgc3RpbGwgY2FsbGJhY2sgd2l0aCBgbnVsbGAuXG4gKi9cbmZ1bmN0aW9uIHJlZjxUPihcbiAgY2FsbGJhY2s6IHJlZi5DYWxsYmFjazxUIHwgbnVsbD4sXG4gIGlnbm9yZU51bGw6IGJvb2xlYW5cbik6IHJlZi5PYmplY3Q8VD47XG5cbmZ1bmN0aW9uIHJlZjxUPihcbiAgYXJnPzogcmVmLkNhbGxiYWNrPFQ+IHwgU3RhdGUsXG4gIGFyZzI/OiAoKGtleTogc3RyaW5nKSA9PiBhbnkpIHwgYm9vbGVhblxuKSB7XG4gIHJldHVybiB1c2U8VD4oKGtleSwgc3ViamVjdCwgc3RhdGUpID0+IHtcbiAgICBsZXQgdmFsdWUgPSB7fTtcbiAgICBjb25zdCBtZXRob2QgPVxuICAgICAgKGtleTogc3RyaW5nLCBmcm9tOiBSZWNvcmQ8c3RyaW5nLCBUPikgPT5cbiAgICAgIChjYWxsYmFjaz86ICh2YWx1ZTogVCkgPT4gdm9pZCkgPT5cbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICA/IGFkZExpc3RlbmVyKHN1YmplY3QsICgpID0+IGNhbGxiYWNrKGZyb21ba2V5XSksIGtleSlcbiAgICAgICAgICA6IGZyb21ba2V5XTtcblxuICAgIGlmIChhcmcgPT09IHN1YmplY3QpXG4gICAgICBhZGRMaXN0ZW5lcihcbiAgICAgICAgc3ViamVjdCxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHN1YmplY3QpXG4gICAgICAgICAgICBpZiAodHlwZW9mIGFyZzIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgICAgZGVmaW5lUHJvcGVydHkodmFsdWUsIGtleSwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBvdXQgPSBhcmcyKGtleSk7XG4gICAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwga2V5LCB7IHZhbHVlOiBvdXQgfSk7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gb3V0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgZ2V0ID0gbWV0aG9kKGtleSwgc3ViamVjdCk7XG4gICAgICAgICAgICAgIGNvbnN0IHNldCA9ICh4OiBhbnkpID0+IChzdWJqZWN0W2tleV0gPSB4KTtcblxuICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0aWVzKHNldCwge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQ6IHsgZ2V0LCBzZXQgfSxcbiAgICAgICAgICAgICAgICBnZXQ6IHsgdmFsdWU6IGdldCB9LFxuICAgICAgICAgICAgICAgIGlzOiB7IHZhbHVlOiBzdWJqZWN0IH0sXG4gICAgICAgICAgICAgICAga2V5OiB7IHZhbHVlOiBrZXkgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwga2V5LCB7IHZhbHVlOiBzZXQgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICBlbHNlIGlmICh0eXBlb2YgYXJnID09ICdvYmplY3QnKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcInJlZiBpbnN0cnVjdGlvbiBkb2VzIG5vdCBzdXBwb3J0IG9iamVjdCB3aGljaCBpcyBub3QgJ3RoaXMnXCJcbiAgICAgICk7XG4gICAgZWxzZSB7XG4gICAgICBsZXQgdW5zZXQ6ICgobmV4dDogVCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBnZXQgPSBtZXRob2Qoa2V5LCBzdGF0ZSk7XG4gICAgICBjb25zdCBzZXQgPSAodmFsdWU/OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCF1cGRhdGUoc3ViamVjdCwga2V5LCB2YWx1ZSkgfHwgIWFyZykgcmV0dXJuO1xuXG4gICAgICAgIGlmICh1bnNldCkgdW5zZXQgPSB2b2lkIHVuc2V0KHZhbHVlKTtcblxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgJiYgYXJnMiAhPT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICBjb25zdCBleGl0ID0gc2NvcGUoKTtcbiAgICAgICAgY29uc3Qgb3V0ID0gYXJnLmNhbGwoc3ViamVjdCwgdmFsdWUpO1xuICAgICAgICBjb25zdCBmbHVzaCA9IGV4aXQoKTtcblxuICAgICAgICB1bnNldCA9IChrZXkpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIG91dCA9PSAnZnVuY3Rpb24nKSBvdXQoa2V5KTtcblxuICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgICBzdGF0ZVtrZXldID0gbnVsbDtcbiAgICAgIHZhbHVlID0gZGVmaW5lUHJvcGVydHkoeyBnZXQsIGtleSwgaXM6IHN1YmplY3QgfSwgJ2N1cnJlbnQnLCB7XG4gICAgICAgIGdldCxcbiAgICAgICAgc2V0XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWZpbmVQcm9wZXJ0eShzdWJqZWN0LCBrZXksIHsgdmFsdWUgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgeyByZWYgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQSxNQUFNLEVBQUUsZ0JBQWdCLHFCQUFxQjtBQXdGN0MsU0FBUyxJQUNQLEtBQ0EsTUFDQTtBQUNBLFFBQU8sS0FBUSxLQUFLLFNBQVMsVUFBVTtFQUNyQyxJQUFJLFFBQVEsRUFBRTtFQUNkLE1BQU0sVUFDSCxLQUFhLFVBQ2IsYUFDQyxXQUNJLFlBQVksZUFBZSxTQUFTLEtBQUssS0FBSyxFQUFFLElBQUksR0FDcEQsS0FBSztBQUViLE1BQUksUUFBUSxRQUNWLGFBQ0UsZUFDTTtBQUNKLFFBQUssTUFBTSxPQUFPLFFBQ2hCLEtBQUksT0FBTyxRQUFRLFdBQ2pCLGdCQUFlLE9BQU8sS0FBSztJQUN6QixjQUFjO0lBQ2QsTUFBTTtLQUNKLE1BQU0sTUFBTSxLQUFLLElBQUk7QUFDckIsb0JBQWUsT0FBTyxLQUFLLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDMUMsWUFBTzs7SUFFVixDQUFDO1FBQ0M7SUFDSCxNQUFNLE1BQU0sT0FBTyxLQUFLLFFBQVE7SUFDaEMsTUFBTSxPQUFPLE1BQVksUUFBUSxPQUFPO0FBRXhDLHFCQUFpQixLQUFLO0tBQ3BCLFNBQVM7TUFBRTtNQUFLO01BQUs7S0FDckIsS0FBSyxFQUFFLE9BQU8sS0FBSztLQUNuQixJQUFJLEVBQUUsT0FBTyxTQUFTO0tBQ3RCLEtBQUssRUFBRSxPQUFPLEtBQUs7S0FDcEIsQ0FBQztBQUVGLG1CQUFlLE9BQU8sS0FBSyxFQUFFLE9BQU8sS0FBSyxDQUFDOztBQUc5QyxVQUFPO0tBRVQsS0FDRDtXQUNNLE9BQU8sT0FBTyxTQUNyQixPQUFNLElBQUksTUFDUiw4REFDRDtPQUNFO0dBQ0gsSUFBSTtHQUNKLE1BQU0sTUFBTSxPQUFPLEtBQUssTUFBTTtHQUM5QixNQUFNLE9BQU8sVUFBZ0I7QUFDM0IsUUFBSSxDQUFDLE9BQU8sU0FBUyxLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUs7QUFFMUMsUUFBSSxNQUFPLFNBQVEsS0FBSyxNQUFNLE1BQU07QUFFcEMsUUFBSSxVQUFVLFFBQVEsU0FBUyxNQUFPO0lBRXRDLE1BQU0sT0FBTyxPQUFPO0lBQ3BCLE1BQU0sTUFBTSxJQUFJLEtBQUssU0FBUyxNQUFNO0lBQ3BDLE1BQU0sUUFBUSxNQUFNO0FBRXBCLGFBQVMsUUFBUTtBQUNmLFNBQUksT0FBTyxPQUFPLFdBQVksS0FBSSxJQUFJO0FBRXRDLFlBQU87OztBQUlYLFNBQU0sT0FBTztBQUNiLFdBQVEsZUFBZTtJQUFFO0lBQUs7SUFBSyxJQUFJO0lBQVMsRUFBRSxXQUFXO0lBQzNEO0lBQ0E7SUFDRCxDQUFDOztBQUdKLGlCQUFlLFNBQVMsS0FBSyxFQUFFLE9BQU8sQ0FBQztHQUN2QyJ9
@@ -1,69 +0,0 @@
1
- import { State } from "../state.js";
2
-
3
- //#region src/instruction/set.d.ts
4
- declare namespace set {
5
- type Callback<T, S = any> = (this: S, next: T, previous: T) => ((next: T) => void) | Promise<any> | void | boolean;
6
- type Compute<T, S = any> = (on: S, key: string) => T;
7
- type Factory<T, S = any> = (this: S, key: string) => Promise<T> | T;
8
- }
9
- /**
10
- * Set property as `undefined` but required.
11
- *
12
- * Property cannot be accessed until it is defined. If accessed while undefined, a hybrid
13
- * `Promise`/`Error` (aka: [Suspense](https://reactjs.org/docs/concurrent-mode-suspense.html)) will be thrown.
14
- */
15
- declare function set<T = any>(): T;
16
- /**
17
- * Set property with a factory function.
18
- *
19
- * **Note** Factory is lazy! It will only run if/when property is accessed.
20
- * Value will be undefined until factory resolves, which will also dispatch an update for the property.
21
- */
22
- declare function set<T>(factory: set.Factory<T>, required: false): T | undefined;
23
- /**
24
- * Set property with a factory function.
25
- *
26
- * If async, property cannot be accessed until resolves, yeilding a result.
27
- * If accessed while still processing, React Suspense will be thrown.
28
- *
29
- * @param factory - Callback run to derrive property value.
30
- * @param required - If true run factory immediately on creation, otherwise on access.
31
- */
32
- declare function set<T>(factory: set.Factory<T>, required?: boolean): T;
33
- /**
34
- * Set property with a factory function.
35
- *
36
- * If async, property cannot be accessed until resolves, yeilding a result.
37
- * If accessed while still processing, React Suspense will be thrown.
38
- *
39
- * @param factory - Callback run to derrive property value.
40
- * @param onUpdate - Callback run when property is finished computing or is set.
41
- */
42
- declare function set<T>(factory: set.Factory<T>, onUpdate?: set.Callback<T>): T;
43
- /**
44
- * Set a property with empty placeholder and/or update callback.
45
- *
46
- * @param value - Starting value for property. If undefined, suspense will be thrown on access, until value is set and accepted by callback.
47
- * @param onUpdate - Callback run when property is set. If returns false, update is not accepted and property will keep previous value.
48
- */
49
- declare function set<T>(value: T | undefined, onUpdate?: set.Callback<T>): T;
50
- /**
51
- * Implement a reactive computed value using a method reference.
52
- *
53
- * The method will automatically re-run when any accessed properties change.
54
- * Use `true` to indicate reactive mode with implicit `this` as the source.
55
- *
56
- * @param reactiveToThis - Pass `true` to enable reactive mode with implicit this
57
- * @param method - Method reference or compute function to use
58
- */
59
- declare function set<R, T = any>(reactiveToThis: true, method: set.Compute<R, T> | Function): R;
60
- /**
61
- * Implement a computed value; output will be generated by provided function.
62
- *
63
- * @param reactiveTo - Source state from which computed value will be a subscriber.
64
- * @param compute - Compute function. Bound to a subscriber-proxy of source, returns output value. Will update automatically as input values change.
65
- */
66
- declare function set<R, T extends State>(reactiveTo: T, compute: set.Compute<R, T>): R;
67
- //#endregion
68
- export { set };
69
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luc3RydWN0aW9uL3NldC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuZGVjbGFyZSBuYW1lc3BhY2Ugc2V0IHtcbiAgICB0eXBlIENhbGxiYWNrPFQsIFMgPSBhbnk+ID0gKHRoaXM6IFMsIG5leHQ6IFQsIHByZXZpb3VzOiBUKSA9PiAoKG5leHQ6IFQpID0+IHZvaWQpIHwgUHJvbWlzZTxhbnk+IHwgdm9pZCB8IGJvb2xlYW47XG4gICAgdHlwZSBDb21wdXRlPFQsIFMgPSBhbnk+ID0gKG9uOiBTLCBrZXk6IHN0cmluZykgPT4gVDtcbiAgICB0eXBlIEZhY3Rvcnk8VCwgUyA9IGFueT4gPSAodGhpczogUywga2V5OiBzdHJpbmcpID0+IFByb21pc2U8VD4gfCBUO1xufVxuLyoqXG4gKiBTZXQgcHJvcGVydHkgYXMgYHVuZGVmaW5lZGAgYnV0IHJlcXVpcmVkLlxuICpcbiAqIFByb3BlcnR5IGNhbm5vdCBiZSBhY2Nlc3NlZCB1bnRpbCBpdCBpcyBkZWZpbmVkLiBJZiBhY2Nlc3NlZCB3aGlsZSB1bmRlZmluZWQsIGEgaHlicmlkXG4gKiBgUHJvbWlzZWAvYEVycm9yYCAoYWthOiBbU3VzcGVuc2VdKGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9jb25jdXJyZW50LW1vZGUtc3VzcGVuc2UuaHRtbCkpIHdpbGwgYmUgdGhyb3duLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHNldDxUID0gYW55PigpOiBUO1xuLyoqXG4gKiBTZXQgcHJvcGVydHkgd2l0aCBhIGZhY3RvcnkgZnVuY3Rpb24uXG4gKlxuICogKipOb3RlKiogRmFjdG9yeSBpcyBsYXp5ISBJdCB3aWxsIG9ubHkgcnVuIGlmL3doZW4gcHJvcGVydHkgaXMgYWNjZXNzZWQuXG4gKiBWYWx1ZSB3aWxsIGJlIHVuZGVmaW5lZCB1bnRpbCBmYWN0b3J5IHJlc29sdmVzLCB3aGljaCB3aWxsIGFsc28gZGlzcGF0Y2ggYW4gdXBkYXRlIGZvciB0aGUgcHJvcGVydHkuXG4gKi9cbmRlY2xhcmUgZnVuY3Rpb24gc2V0PFQ+KGZhY3Rvcnk6IHNldC5GYWN0b3J5PFQ+LCByZXF1aXJlZDogZmFsc2UpOiBUIHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBTZXQgcHJvcGVydHkgd2l0aCBhIGZhY3RvcnkgZnVuY3Rpb24uXG4gKlxuICogSWYgYXN5bmMsIHByb3BlcnR5IGNhbm5vdCBiZSBhY2Nlc3NlZCB1bnRpbCByZXNvbHZlcywgeWVpbGRpbmcgYSByZXN1bHQuXG4gKiBJZiBhY2Nlc3NlZCB3aGlsZSBzdGlsbCBwcm9jZXNzaW5nLCBSZWFjdCBTdXNwZW5zZSB3aWxsIGJlIHRocm93bi5cbiAqXG4gKiBAcGFyYW0gZmFjdG9yeSAtIENhbGxiYWNrIHJ1biB0byBkZXJyaXZlIHByb3BlcnR5IHZhbHVlLlxuICogQHBhcmFtIHJlcXVpcmVkIC0gSWYgdHJ1ZSBydW4gZmFjdG9yeSBpbW1lZGlhdGVseSBvbiBjcmVhdGlvbiwgb3RoZXJ3aXNlIG9uIGFjY2Vzcy5cbiAqL1xuZGVjbGFyZSBmdW5jdGlvbiBzZXQ8VD4oZmFjdG9yeTogc2V0LkZhY3Rvcnk8VD4sIHJlcXVpcmVkPzogYm9vbGVhbik6IFQ7XG4vKipcbiAqIFNldCBwcm9wZXJ0eSB3aXRoIGEgZmFjdG9yeSBmdW5jdGlvbi5cbiAqXG4gKiBJZiBhc3luYywgcHJvcGVydHkgY2Fubm90IGJlIGFjY2Vzc2VkIHVudGlsIHJlc29sdmVzLCB5ZWlsZGluZyBhIHJlc3VsdC5cbiAqIElmIGFjY2Vzc2VkIHdoaWxlIHN0aWxsIHByb2Nlc3NpbmcsIFJlYWN0IFN1c3BlbnNlIHdpbGwgYmUgdGhyb3duLlxuICpcbiAqIEBwYXJhbSBmYWN0b3J5IC0gQ2FsbGJhY2sgcnVuIHRvIGRlcnJpdmUgcHJvcGVydHkgdmFsdWUuXG4gKiBAcGFyYW0gb25VcGRhdGUgLSBDYWxsYmFjayBydW4gd2hlbiBwcm9wZXJ0eSBpcyBmaW5pc2hlZCBjb21wdXRpbmcgb3IgaXMgc2V0LlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHNldDxUPihmYWN0b3J5OiBzZXQuRmFjdG9yeTxUPiwgb25VcGRhdGU/OiBzZXQuQ2FsbGJhY2s8VD4pOiBUO1xuLyoqXG4gKiBTZXQgYSBwcm9wZXJ0eSB3aXRoIGVtcHR5IHBsYWNlaG9sZGVyIGFuZC9vciB1cGRhdGUgY2FsbGJhY2suXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gU3RhcnRpbmcgdmFsdWUgZm9yIHByb3BlcnR5LiBJZiB1bmRlZmluZWQsIHN1c3BlbnNlIHdpbGwgYmUgdGhyb3duIG9uIGFjY2VzcywgdW50aWwgdmFsdWUgaXMgc2V0IGFuZCBhY2NlcHRlZCBieSBjYWxsYmFjay5cbiAqIEBwYXJhbSBvblVwZGF0ZSAtIENhbGxiYWNrIHJ1biB3aGVuIHByb3BlcnR5IGlzIHNldC4gSWYgcmV0dXJucyBmYWxzZSwgdXBkYXRlIGlzIG5vdCBhY2NlcHRlZCBhbmQgcHJvcGVydHkgd2lsbCBrZWVwIHByZXZpb3VzIHZhbHVlLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHNldDxUPih2YWx1ZTogVCB8IHVuZGVmaW5lZCwgb25VcGRhdGU/OiBzZXQuQ2FsbGJhY2s8VD4pOiBUO1xuLyoqXG4gKiBJbXBsZW1lbnQgYSByZWFjdGl2ZSBjb21wdXRlZCB2YWx1ZSB1c2luZyBhIG1ldGhvZCByZWZlcmVuY2UuXG4gKlxuICogVGhlIG1ldGhvZCB3aWxsIGF1dG9tYXRpY2FsbHkgcmUtcnVuIHdoZW4gYW55IGFjY2Vzc2VkIHByb3BlcnRpZXMgY2hhbmdlLlxuICogVXNlIGB0cnVlYCB0byBpbmRpY2F0ZSByZWFjdGl2ZSBtb2RlIHdpdGggaW1wbGljaXQgYHRoaXNgIGFzIHRoZSBzb3VyY2UuXG4gKlxuICogQHBhcmFtIHJlYWN0aXZlVG9UaGlzIC0gUGFzcyBgdHJ1ZWAgdG8gZW5hYmxlIHJlYWN0aXZlIG1vZGUgd2l0aCBpbXBsaWNpdCB0aGlzXG4gKiBAcGFyYW0gbWV0aG9kIC0gTWV0aG9kIHJlZmVyZW5jZSBvciBjb21wdXRlIGZ1bmN0aW9uIHRvIHVzZVxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHNldDxSLCBUID0gYW55PihyZWFjdGl2ZVRvVGhpczogdHJ1ZSwgbWV0aG9kOiBzZXQuQ29tcHV0ZTxSLCBUPiB8IEZ1bmN0aW9uKTogUjtcbi8qKlxuICogSW1wbGVtZW50IGEgY29tcHV0ZWQgdmFsdWU7IG91dHB1dCB3aWxsIGJlIGdlbmVyYXRlZCBieSBwcm92aWRlZCBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gcmVhY3RpdmVUbyAtIFNvdXJjZSBzdGF0ZSBmcm9tIHdoaWNoIGNvbXB1dGVkIHZhbHVlIHdpbGwgYmUgYSBzdWJzY3JpYmVyLlxuICogQHBhcmFtIGNvbXB1dGUgLSBDb21wdXRlIGZ1bmN0aW9uLiBCb3VuZCB0byBhIHN1YnNjcmliZXItcHJveHkgb2Ygc291cmNlLCByZXR1cm5zIG91dHB1dCB2YWx1ZS4gV2lsbCB1cGRhdGUgYXV0b21hdGljYWxseSBhcyBpbnB1dCB2YWx1ZXMgY2hhbmdlLlxuICovXG5kZWNsYXJlIGZ1bmN0aW9uIHNldDxSLCBUIGV4dGVuZHMgU3RhdGU+KHJlYWN0aXZlVG86IFQsIGNvbXB1dGU6IHNldC5Db21wdXRlPFIsIFQ+KTogUjtcbmV4cG9ydCB7IHNldCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFBLE1BQVE7Q0FBQTtFQUFBLEdBQVUsTUFBSTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ3RCLElBQUksTUFBSztDQUFBO0VBQUEsTUFBVyxDQUFDLEVBQUU7Q0FBRSxDQUFBLElBQUssR0FBRztDQUFBO0FBQ2pDLElBQUksTUFBSztDQUFBO0VBQUEsTUFBVztFQUFDO0VBQUcsSUFBSTtFQUFTO0VBQUU7Q0FBQTtFQUFHO0VBQUU7RUFBTTtFQUFJO0VBQUU7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUN4RCxJQUFJLE1BQUs7Q0FBQTtFQUFBLE1BQVc7RUFBQztFQUFHLElBQUk7RUFBUztFQUFFO0NBQUU7RUFBQTtFQUFLO0VBQUE7RUFBUTtFQUFHO0VBQUE7RUFBUztFQUFHO0NBQUM7QUFDdEUsSUFBQSxNQUFBO0NBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQSxJQUFBO0VBQUE7RUFBQSxJQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQ0EsSUFBRSxNQUFBO0NBQUE7RUFBQSxNQUFBO0VBQUE7RUFBQTtFQUFBLElBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUNGLElBQUcsTUFBSTtDQUFBO0VBQVMsR0FBRyxNQUFDO0VBQUE7RUFBUztFQUFFLElBQUk7RUFBUTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMzQyxJQUFDLE1BQUE7Q0FBQTtFQUFBLEdBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUEsSUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBIn0=