@sigx/vite 0.1.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.
- package/README.md +40 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +372 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/src/Component.d.ts +131 -0
- package/dist/core/src/Component.d.ts.map +1 -0
- package/dist/core/src/Component.js +272 -0
- package/dist/core/src/Component.js.map +1 -0
- package/dist/core/src/Signals.d.ts +34 -0
- package/dist/core/src/Signals.d.ts.map +1 -0
- package/dist/core/src/Signals.js +222 -0
- package/dist/core/src/Signals.js.map +1 -0
- package/dist/core/src/Templating.d.ts +11 -0
- package/dist/core/src/Templating.d.ts.map +1 -0
- package/dist/core/src/Templating.js +81 -0
- package/dist/core/src/Templating.js.map +1 -0
- package/dist/core/src/factory/index.d.ts +20 -0
- package/dist/core/src/factory/index.d.ts.map +1 -0
- package/dist/core/src/factory/index.js +50 -0
- package/dist/core/src/factory/index.js.map +1 -0
- package/dist/core/src/index.d.ts +8 -0
- package/dist/core/src/index.d.ts.map +1 -0
- package/dist/core/src/index.js +9 -0
- package/dist/core/src/index.js.map +1 -0
- package/dist/core/src/jsx-runtime.d.ts +43 -0
- package/dist/core/src/jsx-runtime.d.ts.map +1 -0
- package/dist/core/src/jsx-runtime.js +469 -0
- package/dist/core/src/jsx-runtime.js.map +1 -0
- package/dist/core/src/messaging/index.d.ts +9 -0
- package/dist/core/src/messaging/index.d.ts.map +1 -0
- package/dist/core/src/messaging/index.js +37 -0
- package/dist/core/src/messaging/index.js.map +1 -0
- package/dist/core/src/models/index.d.ts +18 -0
- package/dist/core/src/models/index.d.ts.map +1 -0
- package/dist/core/src/models/index.js +12 -0
- package/dist/core/src/models/index.js.map +1 -0
- package/dist/core/src/sheet.d.ts +51 -0
- package/dist/core/src/sheet.d.ts.map +1 -0
- package/dist/core/src/sheet.js +151 -0
- package/dist/core/src/sheet.js.map +1 -0
- package/dist/core/src/stores/DefineInjectable.d.ts +5 -0
- package/dist/core/src/stores/DefineInjectable.d.ts.map +1 -0
- package/dist/core/src/stores/DefineInjectable.js +56 -0
- package/dist/core/src/stores/DefineInjectable.js.map +1 -0
- package/dist/core/src/stores/Store.d.ts +70 -0
- package/dist/core/src/stores/Store.d.ts.map +1 -0
- package/dist/core/src/stores/Store.js +180 -0
- package/dist/core/src/stores/Store.js.map +1 -0
- package/dist/core/src/styled.d.ts +15 -0
- package/dist/core/src/styled.d.ts.map +1 -0
- package/dist/core/src/styled.js +62 -0
- package/dist/core/src/styled.js.map +1 -0
- package/dist/core/src/utils/index.d.ts +5 -0
- package/dist/core/src/utils/index.d.ts.map +1 -0
- package/dist/core/src/utils/index.js +12 -0
- package/dist/core/src/utils/index.js.map +1 -0
- package/dist/hmr-plugin/src/index.d.ts +2 -0
- package/dist/hmr-plugin/src/index.d.ts.map +1 -0
- package/dist/hmr-plugin/src/index.js +59 -0
- package/dist/hmr-plugin/src/index.js.map +1 -0
- package/dist/hmr.d.ts +10 -0
- package/dist/hmr.d.ts.map +1 -0
- package/dist/hmr.js +99 -0
- package/dist/hmr.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/vite/src/index.d.ts +2 -0
- package/dist/vite/src/index.d.ts.map +1 -0
- package/dist/vite/src/index.js +59 -0
- package/dist/vite/src/index.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Subscription, Topic } from "../models";
|
|
2
|
+
export declare function createTopic<T>(options?: {
|
|
3
|
+
namespace?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
}): Topic<T>;
|
|
6
|
+
export declare function toSubscriber<T>(topic: Topic<T>): {
|
|
7
|
+
subscribe: (handler: (data: T) => void) => Subscription;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/messaging/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAGhD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAiCxF;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;yBAElB,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI;EAE7C"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { onCleanup } from "../Component";
|
|
2
|
+
export function createTopic(options) {
|
|
3
|
+
let subscribers = [];
|
|
4
|
+
const publish = (data) => {
|
|
5
|
+
subscribers.forEach(s => s(data));
|
|
6
|
+
};
|
|
7
|
+
const subscribe = (handler) => {
|
|
8
|
+
subscribers.push(handler);
|
|
9
|
+
const unsubscribe = () => {
|
|
10
|
+
const idx = subscribers.indexOf(handler);
|
|
11
|
+
if (idx > -1)
|
|
12
|
+
subscribers.splice(idx, 1);
|
|
13
|
+
};
|
|
14
|
+
// Auto-unsubscribe if inside a component or effect scope that supports cleanup
|
|
15
|
+
try {
|
|
16
|
+
onCleanup(unsubscribe);
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
// Not in a context that supports auto-cleanup, ignore
|
|
20
|
+
}
|
|
21
|
+
return { unsubscribe };
|
|
22
|
+
};
|
|
23
|
+
const destroy = () => {
|
|
24
|
+
subscribers = [];
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
publish,
|
|
28
|
+
subscribe,
|
|
29
|
+
destroy
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function toSubscriber(topic) {
|
|
33
|
+
return {
|
|
34
|
+
subscribe: (handler) => topic.subscribe(handler)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../core/src/messaging/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,WAAW,CAAI,OAA+C;IAC1E,IAAI,WAAW,GAA0B,EAAE,CAAC;IAE5C,MAAM,OAAO,GAAG,CAAC,IAAO,EAAE,EAAE;QACxB,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,OAA0B,EAAgB,EAAE;QAC3D,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAG,GAAG,EAAE;YACrB,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,GAAG,GAAG,CAAC,CAAC;gBAAE,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEF,+EAA+E;QAC/E,IAAI,CAAC;YACD,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,sDAAsD;QAC1D,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACjB,WAAW,GAAG,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO;QACH,OAAO;QACP,SAAS;QACT,OAAO;KACV,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,KAAe;IAC3C,OAAO;QACH,SAAS,EAAE,CAAC,OAA0B,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;KACtE,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { guid as guidFn } from "../utils";
|
|
2
|
+
export type guid = string;
|
|
3
|
+
export declare const guid: typeof guidFn;
|
|
4
|
+
export declare enum InstanceLifetimes {
|
|
5
|
+
Transient = 0,
|
|
6
|
+
Scoped = 1,
|
|
7
|
+
Singleton = 2
|
|
8
|
+
}
|
|
9
|
+
export interface Subscription {
|
|
10
|
+
unsubscribe(): void;
|
|
11
|
+
}
|
|
12
|
+
export interface Topic<T> {
|
|
13
|
+
publish(data: T): void;
|
|
14
|
+
subscribe(handler: (data: T) => void): Subscription;
|
|
15
|
+
destroy(): void;
|
|
16
|
+
}
|
|
17
|
+
export declare function valueOf<T>(obj: any): T;
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAC1B,eAAO,MAAM,IAAI,eAAS,CAAC;AAE3B,oBAAY,iBAAiB;IACzB,SAAS,IAAI;IACb,MAAM,IAAI;IACV,SAAS,IAAI;CAChB;AAED,MAAM,WAAW,YAAY;IACzB,WAAW,IAAI,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,KAAK,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,YAAY,CAAC;IACpD,OAAO,IAAI,IAAI,CAAC;CACnB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,CAEtC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { guid as guidFn } from "../utils";
|
|
2
|
+
export const guid = guidFn;
|
|
3
|
+
export var InstanceLifetimes;
|
|
4
|
+
(function (InstanceLifetimes) {
|
|
5
|
+
InstanceLifetimes[InstanceLifetimes["Transient"] = 0] = "Transient";
|
|
6
|
+
InstanceLifetimes[InstanceLifetimes["Scoped"] = 1] = "Scoped";
|
|
7
|
+
InstanceLifetimes[InstanceLifetimes["Singleton"] = 2] = "Singleton";
|
|
8
|
+
})(InstanceLifetimes || (InstanceLifetimes = {}));
|
|
9
|
+
export function valueOf(obj) {
|
|
10
|
+
return obj;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../core/src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAG1C,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAE3B,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,mEAAa,CAAA;IACb,6DAAU,CAAA;IACV,mEAAa,CAAA;AACjB,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAYD,MAAM,UAAU,OAAO,CAAI,GAAQ;IAC/B,OAAO,GAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export type CSSObject = Partial<CSSStyleDeclaration> & {
|
|
2
|
+
[key: string]: string | number | CSSObject | undefined | any;
|
|
3
|
+
};
|
|
4
|
+
export type StylesMap<T> = {
|
|
5
|
+
[K in keyof T]: string;
|
|
6
|
+
};
|
|
7
|
+
export type DeepPartial<T> = {
|
|
8
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
9
|
+
};
|
|
10
|
+
export type VarsHelper<T> = T & {
|
|
11
|
+
(overrides?: DeepPartial<T>): Record<string, string>;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Define a set of styles using a typed object.
|
|
15
|
+
* Returns a map of class names that automatically adopts the stylesheet when used.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const styles = defineStyles({
|
|
20
|
+
* container: {
|
|
21
|
+
* display: "flex",
|
|
22
|
+
* backgroundColor: "var(--bg)",
|
|
23
|
+
* "&:hover": { opacity: 0.8 }
|
|
24
|
+
* }
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // In component:
|
|
28
|
+
* <div class={styles.container} />
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function defineStyles<T extends Record<string, CSSObject>>(styles: T): StylesMap<T>;
|
|
32
|
+
/**
|
|
33
|
+
* Define a set of CSS variables with defaults.
|
|
34
|
+
* Returns a helper that provides both the var() strings and a function to generate style objects.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const vars = defineVars('card', {
|
|
39
|
+
* bg: 'white',
|
|
40
|
+
* padding: '1rem'
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // Use in styles:
|
|
44
|
+
* // background: vars.bg -> var(--card-bg, white)
|
|
45
|
+
*
|
|
46
|
+
* // Use in component:
|
|
47
|
+
* // style={vars({ bg: 'red' })} -> { '--card-bg': 'red' }
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function defineVars<T extends Record<string, any>>(namespace: string, defaults: T): VarsHelper<T>;
|
|
51
|
+
//# sourceMappingURL=sheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../../core/src/sheet.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG;IACnD,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,GAAG,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;KACtB,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG;IAC5B,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxD,CAAC;AAkCF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CA+BzF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CA4CvG"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { adoptStyles, getCurrentInstance } from "./Component.js";
|
|
2
|
+
// Simple hash function
|
|
3
|
+
function hash(str) {
|
|
4
|
+
let hash = 5381;
|
|
5
|
+
let i = str.length;
|
|
6
|
+
while (i) {
|
|
7
|
+
hash = (hash * 33) ^ str.charCodeAt(--i);
|
|
8
|
+
}
|
|
9
|
+
return (hash >>> 0).toString(36);
|
|
10
|
+
}
|
|
11
|
+
// CamelCase to kebab-case
|
|
12
|
+
function toKebabCase(str) {
|
|
13
|
+
return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
|
|
14
|
+
}
|
|
15
|
+
function compileRule(selector, style, buffer) {
|
|
16
|
+
let block = `${selector} {`;
|
|
17
|
+
const nested = [];
|
|
18
|
+
for (const key in style) {
|
|
19
|
+
const value = style[key];
|
|
20
|
+
if (value === undefined || value === null)
|
|
21
|
+
continue;
|
|
22
|
+
if (typeof value === 'object') {
|
|
23
|
+
// Nested selector
|
|
24
|
+
// Handle & replacement
|
|
25
|
+
const subSelector = key.includes('&')
|
|
26
|
+
? key.replace(/&/g, selector)
|
|
27
|
+
: `${selector} ${key}`;
|
|
28
|
+
nested.push([subSelector, value]);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// CSS Property
|
|
32
|
+
// Check if it's a number that needs px (optional, but good for DX)
|
|
33
|
+
// For now, let's stick to raw values to be zero-magic, except camelCase conversion
|
|
34
|
+
const prop = key.startsWith('--') ? key : toKebabCase(key);
|
|
35
|
+
block += `\n ${prop}: ${value};`;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
block += `\n}`;
|
|
39
|
+
buffer.push(block);
|
|
40
|
+
// Process nested rules
|
|
41
|
+
for (const [sel, obj] of nested) {
|
|
42
|
+
compileRule(sel, obj, buffer);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Define a set of styles using a typed object.
|
|
47
|
+
* Returns a map of class names that automatically adopts the stylesheet when used.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const styles = defineStyles({
|
|
52
|
+
* container: {
|
|
53
|
+
* display: "flex",
|
|
54
|
+
* backgroundColor: "var(--bg)",
|
|
55
|
+
* "&:hover": { opacity: 0.8 }
|
|
56
|
+
* }
|
|
57
|
+
* });
|
|
58
|
+
*
|
|
59
|
+
* // In component:
|
|
60
|
+
* <div class={styles.container} />
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export function defineStyles(styles) {
|
|
64
|
+
const buffer = [];
|
|
65
|
+
const classMap = {};
|
|
66
|
+
// Generate unique hash for this style definition
|
|
67
|
+
// We use a random component to ensure uniqueness across HMR/reloads if content is same but logic differs
|
|
68
|
+
// But for stability, content hashing is better.
|
|
69
|
+
// Let's use content hash of keys + values for stability.
|
|
70
|
+
const prefix = "v-" + hash(JSON.stringify(styles));
|
|
71
|
+
for (const key in styles) {
|
|
72
|
+
const className = `${prefix}-${key}`;
|
|
73
|
+
classMap[key] = className;
|
|
74
|
+
compileRule(`.${className}`, styles[key], buffer);
|
|
75
|
+
}
|
|
76
|
+
const cssText = buffer.join('\n');
|
|
77
|
+
const sheet = new CSSStyleSheet();
|
|
78
|
+
sheet.replaceSync(cssText);
|
|
79
|
+
// Return a proxy to auto-adopt styles when classes are accessed
|
|
80
|
+
return new Proxy(classMap, {
|
|
81
|
+
get(target, prop) {
|
|
82
|
+
// If we are in a component context, adopt the styles
|
|
83
|
+
// This works because render() runs synchronously in the component context
|
|
84
|
+
if (getCurrentInstance()) {
|
|
85
|
+
adoptStyles(sheet);
|
|
86
|
+
}
|
|
87
|
+
return target[prop];
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Define a set of CSS variables with defaults.
|
|
93
|
+
* Returns a helper that provides both the var() strings and a function to generate style objects.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* const vars = defineVars('card', {
|
|
98
|
+
* bg: 'white',
|
|
99
|
+
* padding: '1rem'
|
|
100
|
+
* });
|
|
101
|
+
*
|
|
102
|
+
* // Use in styles:
|
|
103
|
+
* // background: vars.bg -> var(--card-bg, white)
|
|
104
|
+
*
|
|
105
|
+
* // Use in component:
|
|
106
|
+
* // style={vars({ bg: 'red' })} -> { '--card-bg': 'red' }
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export function defineVars(namespace, defaults) {
|
|
110
|
+
const varsObj = {};
|
|
111
|
+
function buildVars(current, path, target) {
|
|
112
|
+
for (const key in current) {
|
|
113
|
+
const value = current[key];
|
|
114
|
+
const newPath = [...path, key];
|
|
115
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
116
|
+
target[key] = {};
|
|
117
|
+
buildVars(value, newPath, target[key]);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
const varName = `--${namespace}-${newPath.map(toKebabCase).join('-')}`;
|
|
121
|
+
target[key] = `var(${varName}, ${value})`;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
buildVars(defaults, [], varsObj);
|
|
126
|
+
const func = (overrides) => {
|
|
127
|
+
const style = {};
|
|
128
|
+
if (!overrides)
|
|
129
|
+
return style;
|
|
130
|
+
function flatten(current, path) {
|
|
131
|
+
for (const key in current) {
|
|
132
|
+
const value = current[key];
|
|
133
|
+
const newPath = [...path, key];
|
|
134
|
+
if (value !== undefined) {
|
|
135
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
136
|
+
flatten(value, newPath);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
const varName = `--${namespace}-${newPath.map(toKebabCase).join('-')}`;
|
|
140
|
+
style[varName] = String(value);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
flatten(overrides, []);
|
|
146
|
+
return style;
|
|
147
|
+
};
|
|
148
|
+
Object.assign(func, varsObj);
|
|
149
|
+
return func;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=sheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../core/src/sheet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function inject<T>(token: any): T | undefined;
|
|
2
|
+
export declare function provide<T>(token: any, value: T): void;
|
|
3
|
+
export declare function defineInjectable<T>(factory: () => T): () => any;
|
|
4
|
+
export declare function defineProvide<T>(useFn: () => T): T;
|
|
5
|
+
//# sourceMappingURL=DefineInjectable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefineInjectable.d.ts","sourceRoot":"","sources":["../../../../../core/src/stores/DefineInjectable.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,GAAG,SAAS,CAanD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,QAW9C;AAID,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,aAmBnD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAWlD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { getCurrentInstance } from "../Component.js";
|
|
2
|
+
export function inject(token) {
|
|
3
|
+
const ctx = getCurrentInstance();
|
|
4
|
+
// If called outside component, return undefined (or handle as needed)
|
|
5
|
+
if (!ctx)
|
|
6
|
+
return undefined;
|
|
7
|
+
let parent = ctx.parent;
|
|
8
|
+
while (parent) {
|
|
9
|
+
if (parent.__provides && parent.__provides.has(token)) {
|
|
10
|
+
return parent.__provides.get(token);
|
|
11
|
+
}
|
|
12
|
+
parent = parent.__parentComponent;
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
export function provide(token, value) {
|
|
17
|
+
const ctx = getCurrentInstance();
|
|
18
|
+
if (!ctx) {
|
|
19
|
+
console.warn("provide called outside of component setup");
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const component = ctx.el;
|
|
23
|
+
if (!component.__provides) {
|
|
24
|
+
component.__provides = new Map();
|
|
25
|
+
}
|
|
26
|
+
component.__provides.set(token, value);
|
|
27
|
+
}
|
|
28
|
+
const globalInstances = new Map();
|
|
29
|
+
export function defineInjectable(factory) {
|
|
30
|
+
const token = factory;
|
|
31
|
+
const useFn = () => {
|
|
32
|
+
const injected = inject(token);
|
|
33
|
+
if (injected)
|
|
34
|
+
return injected;
|
|
35
|
+
// Fallback to global singleton
|
|
36
|
+
if (!globalInstances.has(token)) {
|
|
37
|
+
globalInstances.set(token, factory());
|
|
38
|
+
}
|
|
39
|
+
return globalInstances.get(token);
|
|
40
|
+
};
|
|
41
|
+
// Attach metadata for defineProvide
|
|
42
|
+
useFn._factory = factory;
|
|
43
|
+
useFn._token = token;
|
|
44
|
+
return useFn;
|
|
45
|
+
}
|
|
46
|
+
export function defineProvide(useFn) {
|
|
47
|
+
const factory = useFn._factory;
|
|
48
|
+
const token = useFn._token;
|
|
49
|
+
if (!factory || !token) {
|
|
50
|
+
throw new Error("defineProvide must be called with a function created by defineInjectable");
|
|
51
|
+
}
|
|
52
|
+
const instance = factory();
|
|
53
|
+
provide(token, instance);
|
|
54
|
+
return instance;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=DefineInjectable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefineInjectable.js","sourceRoot":"","sources":["../../../../../core/src/stores/DefineInjectable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAiB,MAAM,iBAAiB,CAAC;AAEpE,MAAM,UAAU,MAAM,CAAI,KAAU;IAChC,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,sEAAsE;IACtE,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAE3B,IAAI,MAAM,GAAqC,GAAG,CAAC,MAAM,CAAC;IAC1D,OAAO,MAAM,EAAE,CAAC;QACZ,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,KAAU,EAAE,KAAQ;IAC3C,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,OAAO;IACX,CAAC;IACD,MAAM,SAAS,GAAG,GAAG,CAAC,EAA8B,CAAC;IACrD,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QACxB,SAAS,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;IACrC,CAAC;IACD,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,eAAe,GAAG,IAAI,GAAG,EAAY,CAAC;AAE5C,MAAM,UAAU,gBAAgB,CAAI,OAAgB;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC;IAEtB,MAAM,KAAK,GAAG,GAAG,EAAE;QACf,MAAM,QAAQ,GAAG,MAAM,CAAI,KAAK,CAAC,CAAC;QAClC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,+BAA+B;QAC/B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,oCAAoC;IACnC,KAAa,CAAC,QAAQ,GAAG,OAAO,CAAC;IACjC,KAAa,CAAC,MAAM,GAAG,KAAK,CAAC;IAE9B,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAI,KAAc;IAC3C,MAAM,OAAO,GAAI,KAAa,CAAC,QAAQ,CAAC;IACxC,MAAM,KAAK,GAAI,KAAa,CAAC,MAAM,CAAC;IAEpC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;IAC3B,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzB,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Subscription, Topic, InstanceLifetimes } from "../models";
|
|
2
|
+
import { toSubscriber } from "../messaging";
|
|
3
|
+
import { defineFactory, SetupFactoryContext } from "../factory";
|
|
4
|
+
type MutateFn<T> = (value: T | ((prev: T) => T)) => void;
|
|
5
|
+
export type StoreEvents<TState extends object, TEvents extends Record<string, Topic<any>> = {}> = {
|
|
6
|
+
[K in keyof TState as `onMutated${Capitalize<string & K>}`]: ReturnType<typeof toSubscriber<TState[K]>>;
|
|
7
|
+
} & TEvents;
|
|
8
|
+
type MapActionOnDispatching<T extends Function> = T extends (...args: infer U) => any ? (...args: U) => void : never;
|
|
9
|
+
type MapActionOnDispatched<T extends Function> = T extends (...args: infer U) => Promise<infer Y> | infer Y ? (result: Y, ...args: U) => void : never;
|
|
10
|
+
type MapActionOnFailure<T extends Function> = T extends (...args: infer U) => any ? (failureReason: any, ...args: U) => void : never;
|
|
11
|
+
export type StoreReturnDefineAction<TAction extends {
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
}> = {
|
|
14
|
+
onDispatching: {
|
|
15
|
+
[k in keyof TAction]: {
|
|
16
|
+
subscribe(fn: MapActionOnDispatching<TAction[k]>): Subscription;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
onDispatched: {
|
|
20
|
+
[k in keyof TAction]: {
|
|
21
|
+
subscribe(fn: MapActionOnDispatched<TAction[k]>): Subscription;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
onFailure: {
|
|
25
|
+
[k in keyof TAction]: {
|
|
26
|
+
subscribe(fn: MapActionOnFailure<TAction[k]>): Subscription;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
} & TAction;
|
|
30
|
+
export interface SetupStoreContext extends SetupFactoryContext {
|
|
31
|
+
defineState<TState extends object, TEvents extends Record<string, Topic<any>> = Record<string, Topic<any>>>(state: TState): {
|
|
32
|
+
state: TState;
|
|
33
|
+
events: StoreEvents<TState, TEvents>;
|
|
34
|
+
mutate: {
|
|
35
|
+
[K in keyof TState]: MutateFn<TState[K]>;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
defineActions<TActions extends {
|
|
39
|
+
[key: string]: any;
|
|
40
|
+
}>(actions: TActions): StoreReturnDefineAction<TActions>;
|
|
41
|
+
}
|
|
42
|
+
export interface IReturnSetupStore<TState, TGetters, TActions extends {
|
|
43
|
+
[key: string]: Function;
|
|
44
|
+
}, TEvents> {
|
|
45
|
+
state?: TState;
|
|
46
|
+
get?: TGetters;
|
|
47
|
+
actions?: StoreReturnDefineAction<TActions>;
|
|
48
|
+
events?: TEvents;
|
|
49
|
+
name?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare function defineStore<TState extends object, TGetters extends object, TActions extends {
|
|
52
|
+
[key: string]: any;
|
|
53
|
+
}, TEvents extends Record<string, ReturnType<typeof toSubscriber<any>>>, InferReturnSetup extends IReturnSetupStore<TState, TGetters, TActions, TEvents>>(name: string, setup: (ctx: SetupStoreContext) => InferReturnSetup, lifetime?: InstanceLifetimes): ReturnType<typeof defineFactory<InferReturnSetup>>;
|
|
54
|
+
export declare function defineStore<TState extends object, TGetters extends object, TActions extends {
|
|
55
|
+
[key: string]: any;
|
|
56
|
+
}, TEvents extends Record<string, ReturnType<typeof toSubscriber<any>>>, InferReturnSetup extends IReturnSetupStore<TState, TGetters, TActions, TEvents>, T1>(name: string, setup: (ctx: SetupStoreContext, param1: T1) => InferReturnSetup, lifetime?: InstanceLifetimes): ReturnType<typeof defineFactory<InferReturnSetup, T1>>;
|
|
57
|
+
export declare function defineStore<TState extends object, TGetters extends object, TActions extends {
|
|
58
|
+
[key: string]: any;
|
|
59
|
+
}, TEvents extends Record<string, ReturnType<typeof toSubscriber<any>>>, InferReturnSetup extends IReturnSetupStore<TState, TGetters, TActions, TEvents>, T1, T2>(name: string, setup: (ctx: SetupStoreContext, param1: T1, param2: T2) => InferReturnSetup, lifetime?: InstanceLifetimes): ReturnType<typeof defineFactory<InferReturnSetup, T1, T2>>;
|
|
60
|
+
export declare function defineStore<TState extends object, TGetters extends object, TActions extends {
|
|
61
|
+
[key: string]: any;
|
|
62
|
+
}, TEvents extends Record<string, ReturnType<typeof toSubscriber<any>>>, InferReturnSetup extends IReturnSetupStore<TState, TGetters, TActions, TEvents>, T1, T2, T3>(name: string, setup: (ctx: SetupStoreContext, param1: T1, param2: T2, param3: T3, lifetime?: InstanceLifetimes) => InferReturnSetup): ReturnType<typeof defineFactory<InferReturnSetup, T1, T2, T3>>;
|
|
63
|
+
export declare function defineStore<TState extends object, TGetters extends object, TActions extends {
|
|
64
|
+
[key: string]: any;
|
|
65
|
+
}, TEvents extends Record<string, ReturnType<typeof toSubscriber<any>>>, InferReturnSetup extends IReturnSetupStore<TState, TGetters, TActions, TEvents>, T1, T2, T3, T4>(name: string, setup: (ctx: SetupStoreContext, param1: T1, param2: T2, param3: T3, param4: T4, lifetime?: InstanceLifetimes) => InferReturnSetup): ReturnType<typeof defineFactory<InferReturnSetup, T1, T2, T3, T4>>;
|
|
66
|
+
export declare function defineStore<TState extends object, TGetters extends object, TActions extends {
|
|
67
|
+
[key: string]: any;
|
|
68
|
+
}, TEvents extends Record<string, ReturnType<typeof toSubscriber<any>>>, InferReturnSetup extends IReturnSetupStore<TState, TGetters, TActions, TEvents>, T1, T2, T3, T4, T5>(name: string, setup: (ctx: SetupStoreContext, param1: T1, param2: T2, param3: T3, param4: T4, param5: T5) => InferReturnSetup, lifetime?: InstanceLifetimes): ReturnType<typeof defineFactory<InferReturnSetup, T1, T2, T3, T4, T5>>;
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=Store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../../../../core/src/stores/Store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { guid, InstanceLifetimes } from "../models";
|
|
2
|
+
import { createTopic } from "../messaging";
|
|
3
|
+
import { defineFactory } from "../factory";
|
|
4
|
+
import { Utils } from "../utils";
|
|
5
|
+
import { signal, reactive, watch, effectScope } from "../Signals";
|
|
6
|
+
export function defineStore(name, setup, lifetime = InstanceLifetimes.Scoped) {
|
|
7
|
+
return defineFactory((ctxFactory, ...args) => {
|
|
8
|
+
const scope = effectScope(true);
|
|
9
|
+
let messages = [];
|
|
10
|
+
const instanceId = guid();
|
|
11
|
+
const id = `${name}_${instanceId}`;
|
|
12
|
+
const result = setup({
|
|
13
|
+
...ctxFactory,
|
|
14
|
+
defineState: (state) => {
|
|
15
|
+
return defineState(state, id, scope, messages);
|
|
16
|
+
},
|
|
17
|
+
defineActions: (actions) => {
|
|
18
|
+
return defineActions(actions, id, messages);
|
|
19
|
+
}
|
|
20
|
+
}, ...args);
|
|
21
|
+
ctxFactory.onDeactivated(() => {
|
|
22
|
+
scope.stop();
|
|
23
|
+
messages?.forEach(m => m.destroy());
|
|
24
|
+
messages = null;
|
|
25
|
+
});
|
|
26
|
+
// add store name for easy debugging
|
|
27
|
+
if (!result.name) {
|
|
28
|
+
result.name = id;
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}, lifetime);
|
|
32
|
+
}
|
|
33
|
+
function defineActions(actions, storeInstanceName, messages) {
|
|
34
|
+
const events = {};
|
|
35
|
+
const namespace = `${storeInstanceName}.actions.${guid()}`;
|
|
36
|
+
const onDispatching = {};
|
|
37
|
+
const onDispatched = {};
|
|
38
|
+
const onFailure = {};
|
|
39
|
+
const result = {
|
|
40
|
+
onDispatching,
|
|
41
|
+
onDispatched,
|
|
42
|
+
onFailure
|
|
43
|
+
};
|
|
44
|
+
function getEvent(actionName, type) {
|
|
45
|
+
const name = `${actionName}.${type}`;
|
|
46
|
+
if (!events[name]) {
|
|
47
|
+
events[name] = createTopic({
|
|
48
|
+
namespace: namespace,
|
|
49
|
+
name: name
|
|
50
|
+
});
|
|
51
|
+
messages.push(events[name]);
|
|
52
|
+
}
|
|
53
|
+
return events[name];
|
|
54
|
+
}
|
|
55
|
+
Object.keys(actions).forEach(actionName => {
|
|
56
|
+
// Setup event subscribers
|
|
57
|
+
onDispatching[actionName] = {
|
|
58
|
+
subscribe: (fn) => {
|
|
59
|
+
return getEvent(actionName, "onDispatching").subscribe(function () {
|
|
60
|
+
fn.apply(this, arguments[0]);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
onDispatched[actionName] = {
|
|
65
|
+
subscribe: (fn) => {
|
|
66
|
+
return getEvent(actionName, "onDispatched").subscribe(function () {
|
|
67
|
+
const msg = arguments[0];
|
|
68
|
+
const allArguments = [msg.result].concat(Array.from(msg.args));
|
|
69
|
+
fn.apply(this, allArguments);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
onFailure[actionName] = {
|
|
74
|
+
subscribe: (fn) => {
|
|
75
|
+
return getEvent(actionName, "onFailure").subscribe(function () {
|
|
76
|
+
const msg = arguments[0];
|
|
77
|
+
const allArguments = [msg.reason].concat(Array.from(msg.args));
|
|
78
|
+
fn.apply(this, allArguments);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
// Wrap action
|
|
83
|
+
result[actionName] = function () {
|
|
84
|
+
try {
|
|
85
|
+
const currentArguments = arguments;
|
|
86
|
+
getEvent(actionName, "onDispatching").publish(currentArguments);
|
|
87
|
+
const returnedResult = actions[actionName].apply(this, currentArguments);
|
|
88
|
+
if (Utils.isPromise(returnedResult)) {
|
|
89
|
+
returnedResult.then(result => {
|
|
90
|
+
getEvent(actionName, "onDispatched").publish({ result: returnedResult, args: currentArguments });
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
getEvent(actionName, "onDispatched").publish({ result: returnedResult, args: currentArguments });
|
|
95
|
+
}
|
|
96
|
+
return returnedResult;
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
console.error(err);
|
|
100
|
+
getEvent(actionName, "onFailure").publish({ reason: err, args: arguments });
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
function defineState(value, storeInstanceName, scope, messages) {
|
|
107
|
+
const stateRefs = {};
|
|
108
|
+
const events = {};
|
|
109
|
+
const mutate = {};
|
|
110
|
+
// We still use a proxy for state to handle the unwrapping transparently
|
|
111
|
+
// and to support adding new properties if necessary (though less common)
|
|
112
|
+
const stateProxy = new Proxy(stateRefs, {
|
|
113
|
+
get(target, key) {
|
|
114
|
+
if (key === "isProxy")
|
|
115
|
+
return true;
|
|
116
|
+
return target[key]?.value;
|
|
117
|
+
},
|
|
118
|
+
set(target, key, value) {
|
|
119
|
+
if (!target[key]) {
|
|
120
|
+
// New property
|
|
121
|
+
initProperty(key, value);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
target[key].value = value;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
function initProperty(key, initialValue) {
|
|
130
|
+
stateRefs[key] = signal(initialValue);
|
|
131
|
+
// Setup watcher
|
|
132
|
+
scope.run(() => {
|
|
133
|
+
watch(() => stateRefs[key].value, (newValue) => {
|
|
134
|
+
triggerEvent(key, newValue);
|
|
135
|
+
}, { deep: true, immediate: true });
|
|
136
|
+
});
|
|
137
|
+
// Setup mutate
|
|
138
|
+
mutate[key] = (val) => {
|
|
139
|
+
try {
|
|
140
|
+
let newValue;
|
|
141
|
+
if (typeof val === "function") {
|
|
142
|
+
newValue = val(stateRefs[key].value);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
newValue = val;
|
|
146
|
+
}
|
|
147
|
+
stateRefs[key].value = newValue;
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
console.error(err);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
// Setup event
|
|
154
|
+
const eventKey = `onMutated${key.charAt(0).toUpperCase()}${key.slice(1)}`;
|
|
155
|
+
if (!events[eventKey]) {
|
|
156
|
+
const topic = createTopic({
|
|
157
|
+
namespace: `${storeInstanceName}.events`,
|
|
158
|
+
name: eventKey
|
|
159
|
+
});
|
|
160
|
+
events[eventKey] = topic;
|
|
161
|
+
messages.push(topic);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function triggerEvent(name, value) {
|
|
165
|
+
const keyString = name;
|
|
166
|
+
const afterEventKey = `onMutated${keyString.charAt(0).toUpperCase()}${keyString.slice(1)}`;
|
|
167
|
+
events[afterEventKey]?.publish(value);
|
|
168
|
+
}
|
|
169
|
+
if (value) {
|
|
170
|
+
Object.keys(value).forEach(key => {
|
|
171
|
+
initProperty(key, value[key]);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
state: reactive(stateProxy),
|
|
176
|
+
events: events,
|
|
177
|
+
mutate: mutate
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=Store.js.map
|