sibujs 1.1.0 → 1.3.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 (94) hide show
  1. package/README.md +29 -25
  2. package/dist/browser.cjs +804 -2
  3. package/dist/browser.d.cts +591 -1
  4. package/dist/browser.d.ts +591 -1
  5. package/dist/browser.js +50 -8
  6. package/dist/build.cjs +706 -161
  7. package/dist/build.js +21 -12
  8. package/dist/cdn.global.js +188 -7
  9. package/dist/chunk-2BYQDGN3.js +742 -0
  10. package/dist/chunk-32DY64NT.js +282 -0
  11. package/dist/chunk-3AIRKM3B.js +1263 -0
  12. package/dist/chunk-3X2YG6YM.js +505 -0
  13. package/dist/chunk-5X6PP2UK.js +28 -0
  14. package/dist/chunk-77L6NL3X.js +1097 -0
  15. package/dist/chunk-B7SWRFUT.js +332 -0
  16. package/dist/chunk-BGN5ZMP4.js +26 -0
  17. package/dist/chunk-BTU3TJDS.js +365 -0
  18. package/dist/chunk-CHF5OHIA.js +61 -0
  19. package/dist/chunk-CMBFNA7L.js +27 -0
  20. package/dist/chunk-DAHRH4ON.js +331 -0
  21. package/dist/chunk-EBGIRKQY.js +616 -0
  22. package/dist/chunk-EUZND3CB.js +27 -0
  23. package/dist/chunk-F3FA4F32.js +292 -0
  24. package/dist/chunk-GCOK2LC3.js +282 -0
  25. package/dist/chunk-JAKHTMQU.js +1000 -0
  26. package/dist/chunk-JCI5M6U6.js +956 -0
  27. package/dist/chunk-KQPDEVVS.js +398 -0
  28. package/dist/chunk-NEKUBFPT.js +60 -0
  29. package/dist/chunk-NYVAC6P5.js +37 -0
  30. package/dist/chunk-OUZZEE4S.js +365 -0
  31. package/dist/chunk-P6W3STU4.js +2249 -0
  32. package/dist/chunk-PTQJDMRT.js +146 -0
  33. package/dist/chunk-QWZG56ET.js +2744 -0
  34. package/dist/chunk-TSOKIX5Z.js +654 -0
  35. package/dist/chunk-VMVDTCXB.js +712 -0
  36. package/dist/chunk-VRW3FULF.js +725 -0
  37. package/dist/chunk-WZSPOOER.js +84 -0
  38. package/dist/chunk-YT6HQ6AM.js +14 -0
  39. package/dist/chunk-ZD6OAMTH.js +277 -0
  40. package/dist/contracts-DDrwxvJ-.d.cts +245 -0
  41. package/dist/contracts-DDrwxvJ-.d.ts +245 -0
  42. package/dist/data.cjs +35 -2
  43. package/dist/data.d.cts +7 -0
  44. package/dist/data.d.ts +7 -0
  45. package/dist/data.js +9 -8
  46. package/dist/devtools.cjs +122 -0
  47. package/dist/devtools.d.cts +69 -461
  48. package/dist/devtools.d.ts +69 -461
  49. package/dist/devtools.js +127 -6
  50. package/dist/ecosystem.cjs +68 -23
  51. package/dist/ecosystem.d.cts +1 -1
  52. package/dist/ecosystem.d.ts +1 -1
  53. package/dist/ecosystem.js +10 -9
  54. package/dist/extras.cjs +1252 -82
  55. package/dist/extras.d.cts +5 -5
  56. package/dist/extras.d.ts +5 -5
  57. package/dist/extras.js +69 -24
  58. package/dist/index.cjs +708 -161
  59. package/dist/index.d.cts +397 -17
  60. package/dist/index.d.ts +397 -17
  61. package/dist/index.js +39 -17
  62. package/dist/introspect-BumjnBKr.d.cts +477 -0
  63. package/dist/introspect-CZrlcaYy.d.ts +477 -0
  64. package/dist/introspect-Cb0zgpi2.d.cts +477 -0
  65. package/dist/introspect-Y2xNXGSf.d.ts +477 -0
  66. package/dist/motion.js +4 -4
  67. package/dist/patterns.cjs +51 -2
  68. package/dist/patterns.d.cts +18 -8
  69. package/dist/patterns.d.ts +18 -8
  70. package/dist/patterns.js +7 -7
  71. package/dist/performance.js +4 -4
  72. package/dist/plugins.cjs +473 -98
  73. package/dist/plugins.d.cts +27 -4
  74. package/dist/plugins.d.ts +27 -4
  75. package/dist/plugins.js +156 -37
  76. package/dist/ssr-4PBXAOO3.js +40 -0
  77. package/dist/ssr-Do_SiVoL.d.cts +201 -0
  78. package/dist/ssr-Do_SiVoL.d.ts +201 -0
  79. package/dist/ssr.cjs +357 -77
  80. package/dist/ssr.d.cts +10 -1
  81. package/dist/ssr.d.ts +10 -1
  82. package/dist/ssr.js +13 -10
  83. package/dist/tagFactory-DaJ0YWX6.d.cts +47 -0
  84. package/dist/tagFactory-DaJ0YWX6.d.ts +47 -0
  85. package/dist/testing.cjs +233 -2
  86. package/dist/testing.d.cts +42 -1
  87. package/dist/testing.d.ts +42 -1
  88. package/dist/testing.js +129 -2
  89. package/dist/ui.cjs +374 -3
  90. package/dist/ui.d.cts +252 -2
  91. package/dist/ui.d.ts +252 -2
  92. package/dist/ui.js +328 -8
  93. package/dist/widgets.js +7 -7
  94. package/package.json +1 -1
@@ -0,0 +1,365 @@
1
+ import {
2
+ createPlugin
3
+ } from "./chunk-K5ZUMYVS.js";
4
+ import {
5
+ tagFactory
6
+ } from "./chunk-B7SWRFUT.js";
7
+ import {
8
+ derived
9
+ } from "./chunk-L6JRBDNS.js";
10
+ import {
11
+ effect
12
+ } from "./chunk-6SA3QQES.js";
13
+ import {
14
+ batch,
15
+ signal
16
+ } from "./chunk-V2XTI523.js";
17
+
18
+ // src/ecosystem/adapters/mobx.ts
19
+ function mobXAdapter(options) {
20
+ return createPlugin("sibu-mobx", (ctx) => {
21
+ const { autorun } = options;
22
+ const disposers = [];
23
+ function fromMobX(expression) {
24
+ const [getValue, setValue] = signal(expression());
25
+ const disposer = autorun(() => {
26
+ const newValue = expression();
27
+ batch(() => {
28
+ setValue(newValue);
29
+ });
30
+ });
31
+ disposers.push(disposer);
32
+ return getValue;
33
+ }
34
+ function toMobX(sibuGetter, callback) {
35
+ return effect(() => {
36
+ callback(sibuGetter());
37
+ });
38
+ }
39
+ function destroy() {
40
+ for (const disposer of disposers) {
41
+ disposer();
42
+ }
43
+ disposers.length = 0;
44
+ }
45
+ const api = { fromMobX, toMobX, destroy };
46
+ ctx.provide("mobx", api);
47
+ });
48
+ }
49
+
50
+ // src/ecosystem/adapters/redux.ts
51
+ function reduxAdapter(options) {
52
+ return createPlugin("sibu-redux", (ctx) => {
53
+ const { store } = options;
54
+ const [getState, setState] = signal(store.getState());
55
+ const unsubscribe = store.subscribe(() => {
56
+ batch(() => {
57
+ setState(store.getState());
58
+ });
59
+ });
60
+ function useSelector(selector) {
61
+ return derived(() => selector(getState()));
62
+ }
63
+ const api = {
64
+ getState,
65
+ useSelector,
66
+ dispatch: store.dispatch.bind(store),
67
+ destroy: unsubscribe
68
+ };
69
+ ctx.provide("redux", api);
70
+ });
71
+ }
72
+
73
+ // src/ecosystem/adapters/zustand.ts
74
+ function zustandAdapter(options) {
75
+ return createPlugin("sibu-zustand", (ctx) => {
76
+ const { store } = options;
77
+ const [getState, setSibuState] = signal(store.getState());
78
+ const unsubscribe = store.subscribe((state) => {
79
+ batch(() => {
80
+ setSibuState(state);
81
+ });
82
+ });
83
+ function useSelector(selector) {
84
+ return derived(() => selector(getState()));
85
+ }
86
+ const api = {
87
+ getState,
88
+ useSelector,
89
+ setState: store.setState.bind(store),
90
+ destroy() {
91
+ unsubscribe();
92
+ store.destroy();
93
+ }
94
+ };
95
+ ctx.provide("zustand", api);
96
+ });
97
+ }
98
+
99
+ // src/ecosystem/ui/componentAdapter.ts
100
+ function createTheme(initial) {
101
+ const [getConfig, setConfig] = signal(initial);
102
+ function resolveClass(component, variant) {
103
+ const config = getConfig();
104
+ const overrideKey = variant ? `${component}-${variant}` : component;
105
+ if (config.classOverrides?.[overrideKey]) {
106
+ return config.classOverrides[overrideKey];
107
+ }
108
+ const base = `${config.prefix}-${component}`;
109
+ return variant ? `${base} ${config.prefix}-${component}--${variant}` : base;
110
+ }
111
+ function setTheme(partial) {
112
+ setConfig((prev) => ({ ...prev, ...partial }));
113
+ }
114
+ return { config: getConfig, setTheme, resolveClass };
115
+ }
116
+ function componentAdapter(config) {
117
+ const theme = createTheme({ prefix: config.prefix });
118
+ const components = {};
119
+ for (const [name, mapping] of Object.entries(config.components)) {
120
+ const factory = tagFactory(mapping.tag || "div");
121
+ components[name] = (props = {}) => {
122
+ const { variant, size, class: userClass, ...rest } = props;
123
+ const classes = [mapping.baseClass];
124
+ if (variant && mapping.variants?.[variant]) {
125
+ classes.push(mapping.variants[variant]);
126
+ }
127
+ if (size && mapping.sizes?.[size]) {
128
+ classes.push(mapping.sizes[size]);
129
+ }
130
+ let finalClass;
131
+ if (typeof userClass === "function") {
132
+ finalClass = () => {
133
+ const extra = userClass();
134
+ return extra ? `${classes.join(" ")} ${extra}` : classes.join(" ");
135
+ };
136
+ } else if (typeof userClass === "string" && userClass) {
137
+ finalClass = `${classes.join(" ")} ${userClass}`;
138
+ } else {
139
+ finalClass = classes.join(" ");
140
+ }
141
+ const mergedProps = {
142
+ ...mapping.defaultProps,
143
+ ...rest,
144
+ class: finalClass
145
+ };
146
+ return factory(mergedProps);
147
+ };
148
+ }
149
+ return { name: config.name, components, theme };
150
+ }
151
+
152
+ // src/ecosystem/ui/antd.ts
153
+ var antdConfig = {
154
+ name: "antd",
155
+ prefix: "ant",
156
+ components: {
157
+ Button: {
158
+ tag: "button",
159
+ baseClass: "ant-btn",
160
+ variants: {
161
+ primary: "ant-btn-primary",
162
+ dashed: "ant-btn-dashed",
163
+ text: "ant-btn-text",
164
+ link: "ant-btn-link",
165
+ default: "ant-btn-default",
166
+ danger: "ant-btn-dangerous"
167
+ },
168
+ sizes: {
169
+ sm: "ant-btn-sm",
170
+ lg: "ant-btn-lg"
171
+ },
172
+ defaultProps: { type: "button" }
173
+ },
174
+ Input: {
175
+ tag: "input",
176
+ baseClass: "ant-input",
177
+ sizes: {
178
+ sm: "ant-input-sm",
179
+ lg: "ant-input-lg"
180
+ }
181
+ },
182
+ Card: {
183
+ tag: "div",
184
+ baseClass: "ant-card",
185
+ variants: {
186
+ bordered: "ant-card-bordered"
187
+ }
188
+ },
189
+ Modal: {
190
+ tag: "div",
191
+ baseClass: "ant-modal"
192
+ },
193
+ Tag: {
194
+ tag: "span",
195
+ baseClass: "ant-tag",
196
+ variants: {
197
+ success: "ant-tag-success",
198
+ error: "ant-tag-error",
199
+ warning: "ant-tag-warning",
200
+ processing: "ant-tag-processing"
201
+ }
202
+ },
203
+ Badge: {
204
+ tag: "span",
205
+ baseClass: "ant-badge"
206
+ },
207
+ Avatar: {
208
+ tag: "span",
209
+ baseClass: "ant-avatar",
210
+ sizes: {
211
+ sm: "ant-avatar-sm",
212
+ lg: "ant-avatar-lg"
213
+ }
214
+ }
215
+ }
216
+ };
217
+ var antdAdapter = componentAdapter(antdConfig);
218
+
219
+ // src/ecosystem/ui/chakra.ts
220
+ var chakraConfig = {
221
+ name: "chakra",
222
+ prefix: "chakra",
223
+ components: {
224
+ Button: {
225
+ tag: "button",
226
+ baseClass: "chakra-button",
227
+ variants: {
228
+ solid: "chakra-button--solid",
229
+ outline: "chakra-button--outline",
230
+ ghost: "chakra-button--ghost",
231
+ link: "chakra-button--link"
232
+ },
233
+ sizes: {
234
+ xs: "chakra-button--xs",
235
+ sm: "chakra-button--sm",
236
+ md: "chakra-button--md",
237
+ lg: "chakra-button--lg"
238
+ },
239
+ defaultProps: { type: "button" }
240
+ },
241
+ Input: {
242
+ tag: "input",
243
+ baseClass: "chakra-input",
244
+ variants: {
245
+ outline: "chakra-input--outline",
246
+ filled: "chakra-input--filled",
247
+ flushed: "chakra-input--flushed",
248
+ unstyled: "chakra-input--unstyled"
249
+ },
250
+ sizes: {
251
+ xs: "chakra-input--xs",
252
+ sm: "chakra-input--sm",
253
+ md: "chakra-input--md",
254
+ lg: "chakra-input--lg"
255
+ }
256
+ },
257
+ Card: {
258
+ tag: "div",
259
+ baseClass: "chakra-card",
260
+ variants: {
261
+ elevated: "chakra-card--elevated",
262
+ outline: "chakra-card--outline",
263
+ filled: "chakra-card--filled",
264
+ unstyled: "chakra-card--unstyled"
265
+ }
266
+ },
267
+ Modal: {
268
+ tag: "div",
269
+ baseClass: "chakra-modal__content"
270
+ },
271
+ Badge: {
272
+ tag: "span",
273
+ baseClass: "chakra-badge",
274
+ variants: {
275
+ solid: "chakra-badge--solid",
276
+ subtle: "chakra-badge--subtle",
277
+ outline: "chakra-badge--outline"
278
+ }
279
+ },
280
+ Stack: {
281
+ tag: "div",
282
+ baseClass: "chakra-stack",
283
+ variants: {
284
+ horizontal: "chakra-stack--horizontal",
285
+ vertical: "chakra-stack--vertical"
286
+ }
287
+ }
288
+ }
289
+ };
290
+ var chakraAdapter = componentAdapter(chakraConfig);
291
+
292
+ // src/ecosystem/ui/material.ts
293
+ var materialConfig = {
294
+ name: "material",
295
+ prefix: "mdc",
296
+ components: {
297
+ Button: {
298
+ tag: "button",
299
+ baseClass: "mdc-button",
300
+ variants: {
301
+ raised: "mdc-button--raised",
302
+ outlined: "mdc-button--outlined",
303
+ text: "mdc-button--text",
304
+ unelevated: "mdc-button--unelevated"
305
+ },
306
+ sizes: {
307
+ sm: "mdc-button--dense"
308
+ },
309
+ defaultProps: { type: "button" }
310
+ },
311
+ Input: {
312
+ tag: "div",
313
+ baseClass: "mdc-text-field",
314
+ variants: {
315
+ outlined: "mdc-text-field--outlined",
316
+ filled: "mdc-text-field--filled"
317
+ }
318
+ },
319
+ Card: {
320
+ tag: "div",
321
+ baseClass: "mdc-card",
322
+ variants: {
323
+ outlined: "mdc-card--outlined",
324
+ elevated: "mdc-card--elevated"
325
+ }
326
+ },
327
+ Modal: {
328
+ tag: "div",
329
+ baseClass: "mdc-dialog",
330
+ variants: {
331
+ fullscreen: "mdc-dialog--fullscreen"
332
+ }
333
+ },
334
+ Chip: {
335
+ tag: "span",
336
+ baseClass: "mdc-chip",
337
+ variants: {
338
+ outlined: "mdc-chip--outlined"
339
+ }
340
+ },
341
+ List: {
342
+ tag: "ul",
343
+ baseClass: "mdc-list",
344
+ variants: {
345
+ dense: "mdc-list--dense"
346
+ }
347
+ },
348
+ ListItem: {
349
+ tag: "li",
350
+ baseClass: "mdc-list-item"
351
+ }
352
+ }
353
+ };
354
+ var materialAdapter = componentAdapter(materialConfig);
355
+
356
+ export {
357
+ mobXAdapter,
358
+ reduxAdapter,
359
+ zustandAdapter,
360
+ createTheme,
361
+ componentAdapter,
362
+ antdAdapter,
363
+ chakraAdapter,
364
+ materialAdapter
365
+ };