@octane-xplat/ui 0.4.0 → 0.5.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 (67) hide show
  1. package/dist/native/octane-client-build.json +1 -1
  2. package/dist/native/ui.js +26 -23
  3. package/dist/native/ui14.js +16 -1
  4. package/dist/native/ui16.js +2 -2
  5. package/dist/native/ui24.js +2 -1
  6. package/dist/native/ui3.js +22 -1
  7. package/dist/native/ui39.js +89 -91
  8. package/dist/native/ui40.js +180 -53
  9. package/dist/native/ui41.js +55 -16
  10. package/dist/native/ui42.js +15 -6
  11. package/dist/native/ui43.js +18 -37
  12. package/dist/native/ui44.js +6 -265
  13. package/dist/native/ui45.js +24 -14
  14. package/dist/native/ui46.js +261 -29
  15. package/dist/native/ui47.js +17 -30
  16. package/dist/native/ui48.js +28 -65
  17. package/dist/native/ui49.js +21 -46
  18. package/dist/native/ui50.js +58 -13
  19. package/dist/native/ui51.js +65 -12
  20. package/dist/native/ui52.js +58 -86
  21. package/dist/native/ui53.js +8 -15
  22. package/dist/native/ui54.js +11 -15
  23. package/dist/native/ui55.js +82 -146
  24. package/dist/native/ui56.js +18 -17
  25. package/dist/native/ui57.js +18 -13
  26. package/dist/native/ui58.js +155 -21
  27. package/dist/native/ui59.js +32 -7
  28. package/dist/native/ui6.js +54 -12
  29. package/dist/native/ui60.js +8 -102
  30. package/dist/native/ui61.js +20 -74
  31. package/dist/native/ui62.js +8 -0
  32. package/dist/native/ui63.js +108 -0
  33. package/dist/native/ui64.js +76 -0
  34. package/dist/web/octane-client-build.json +1 -1
  35. package/dist/web/ui.js +26 -24
  36. package/dist/web/ui13.js +106 -41
  37. package/dist/web/ui34.js +147 -67
  38. package/dist/web/ui35.js +136 -51
  39. package/dist/web/ui36.js +86 -18
  40. package/dist/web/ui37.js +20 -5
  41. package/dist/web/ui38.js +6 -37
  42. package/dist/web/ui39.js +26 -142
  43. package/dist/web/ui40.js +143 -32
  44. package/dist/web/ui41.js +42 -41
  45. package/dist/web/ui42.js +40 -74
  46. package/dist/web/ui43.js +47 -13
  47. package/dist/web/ui44.js +13 -33
  48. package/dist/web/ui45.js +60 -7
  49. package/dist/web/ui46.js +47 -42
  50. package/dist/web/ui47.js +7 -11
  51. package/dist/web/ui48.js +30 -48
  52. package/dist/web/ui49.js +12 -46
  53. package/dist/web/ui50.js +62 -16
  54. package/dist/web/ui51.js +33 -135
  55. package/dist/web/ui52.js +18 -41
  56. package/dist/web/ui53.js +266 -10
  57. package/dist/web/ui54.js +41 -8
  58. package/dist/web/ui55.js +16 -21
  59. package/dist/web/ui56.js +7 -6
  60. package/dist/web/ui57.js +20 -42
  61. package/dist/web/ui58.js +6 -44
  62. package/dist/web/ui59.js +44 -0
  63. package/dist/web/ui60.js +46 -0
  64. package/package.json +5 -1
  65. package/src/theme/tokens.css +255 -30
  66. package/types/index.d.ts +10 -0
  67. package/types/props.d.ts +59 -4
package/dist/web/ui53.js CHANGED
@@ -1,17 +1,273 @@
1
- import { __s, bag2, clone, template } from "octane";
2
- import { bindSignalAttribute, enableSignalBindings } from "octane/internal/client";
3
- //#region src/PlatformBadge.web.tsrx
1
+ import { applyWebProps } from "./ui47.js";
2
+ import { getIcon } from "./ui52.js";
3
+ import { bag10, bag8, bag9, clone, hookSlots, ifBlock, isHydratingStyle, queueRefAttach, queueRefDetach, setStyle, setStyleProperties, setStyleProperty, template } from "octane";
4
+ import { bindSignalAttribute, bindSignalChild, compilerMemoRegion, createElementFromConfig, enableSignalBindings, hookMemoCreate, hookMemoEqual, hookMemoPublish1, replaceRef, setPlainAttribute, setURLAttribute, updateFreshClassAttr, updateFreshClassName } from "octane/internal/client";
5
+ //#region src/Icon.web.tsrx
4
6
  enableSignalBindings(1, true);
5
- var _t$0 = /* @__PURE__ */ template("<span>web</span>");
6
- var PlatformBadge = /* @__PURE__ */ __s(function PlatformBadge(props, __s, __extra) {
7
+ var _t$0 = /* @__PURE__ */ template("<svg aria-hidden=\"true\"></svg>", 1);
8
+ var _t$1 = /* @__PURE__ */ template("<svg aria-hidden=\"true\"><path></path></svg>", 1);
9
+ var _t$2 = /* @__PURE__ */ template("<span aria-hidden=\"true\"></span>");
10
+ var _t$3 = /* @__PURE__ */ template("<img/>");
11
+ var _rm$1 = [
12
+ "r",
13
+ "h",
14
+ "b"
15
+ ];
16
+ function __then$0(__props, __s, __extra) {
17
+ const glyph = __extra[0];
18
+ const props = __extra[1];
19
+ const size = __extra[2];
7
20
  let _b = __s.slots[0];
8
21
  if (_b === void 0) {
9
- let _m1;
22
+ let _m1, _m7;
10
23
  const _root = clone(_t$0);
11
24
  _m1 = _root;
12
- _b = bag2(__s, _root, void 0, _m1);
25
+ queueRefAttach(__s, _m7 = (el) => {
26
+ if (el) el.innerHTML = glyph.markup;
27
+ applyWebProps(el, props.web);
28
+ }, _m1);
29
+ (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.h, _b.b));
30
+ _b = bag8(__s, _root, void 0, _m1, void 0, void 0, void 0, void 0, void 0, _m7);
31
+ __s.refFields = _rm$1;
32
+ } else {
33
+ const _r = (el) => {
34
+ if (el) el.innerHTML = glyph.markup;
35
+ applyWebProps(el, props.web);
36
+ };
37
+ if (_r !== _b.h) _b.h = replaceRef(__s, _b.h, _r, _b.b);
13
38
  }
14
- _b.a = bindSignalAttribute(__s, _b.a, _b.b, "class", props.className, "b:f3cb9a4b", "class");
15
- });
39
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:3add0cdf", setPlainAttribute);
40
+ _b.c = updateFreshClassAttr(["vx-icon", props.className], _b.c, _b.b);
41
+ _b.d = bindSignalAttribute(__s, _b.d, _b.b, "viewBox", glyph.viewBox ?? "0 0 24 24", "b:c67a6a16", setPlainAttribute);
42
+ _b.e = bindSignalAttribute(__s, _b.e, _b.b, "width", size, "b:fb23295c", setPlainAttribute);
43
+ _b.f = bindSignalAttribute(__s, _b.f, _b.b, "height", size, "b:8d1adcef", setPlainAttribute);
44
+ {
45
+ const _v = props.color ? { color: props.color } : void 0;
46
+ if (_b.g !== _v) {
47
+ setStyle(_b.b, _v, _b.g);
48
+ _b.g = _v;
49
+ }
50
+ }
51
+ }
52
+ var _rm$4 = [
53
+ "r",
54
+ "g",
55
+ "b"
56
+ ];
57
+ function __then$3(__props, __s, __extra) {
58
+ const glyph = __extra[0];
59
+ const props = __extra[1];
60
+ const size = __extra[2];
61
+ let _b = __s.slots[0];
62
+ if (_b === void 0) {
63
+ let _m1, _m6, _m8;
64
+ const _root = clone(_t$1);
65
+ _m1 = _root;
66
+ queueRefAttach(__s, _m6 = (el) => applyWebProps(el, props.web), _m1);
67
+ (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.g, _b.b));
68
+ _m8 = _root.firstChild;
69
+ _b = bag10(__s, _root, void 0, _m1, void 0, void 0, void 0, void 0, _m6, void 0, _m8, void 0);
70
+ __s.refFields = _rm$4;
71
+ } else {
72
+ const _r = (el) => applyWebProps(el, props.web);
73
+ if (_r !== _b.g) _b.g = replaceRef(__s, _b.g, _r, _b.b);
74
+ }
75
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:9e8c5282", setPlainAttribute);
76
+ _b.c = updateFreshClassAttr(["vx-icon", props.className], _b.c, _b.b);
77
+ _b.d = bindSignalAttribute(__s, _b.d, _b.b, "viewBox", glyph.viewBox ?? "0 0 24 24", "b:43ee4906", setPlainAttribute);
78
+ _b.e = bindSignalAttribute(__s, _b.e, _b.b, "width", size, "b:e7492ac8", setPlainAttribute);
79
+ _b.f = bindSignalAttribute(__s, _b.f, _b.b, "height", size, "b:543c1405", setPlainAttribute);
80
+ _b.h = bindSignalAttribute(__s, _b.h, _b.i, "d", glyph.svg, "b:cdc56533", setPlainAttribute);
81
+ _b.j = bindSignalAttribute(__s, _b.j, _b.i, "fill", props.color ?? "currentColor", "b:fc05dd07", setPlainAttribute);
82
+ }
83
+ var _rm$8 = [
84
+ "r",
85
+ "h",
86
+ "b"
87
+ ];
88
+ function __then$6(__props, __s, __extra) {
89
+ const glyph = __extra[0];
90
+ const props = __extra[1];
91
+ const size = __extra[2];
92
+ let _b = __s.slots[0];
93
+ if (_b === void 0) {
94
+ let _m1, _m7;
95
+ const _root = clone(_t$2);
96
+ _m1 = _root;
97
+ queueRefAttach(__s, _m7 = (el) => applyWebProps(el, props.web), _m1);
98
+ (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.h, _b.b));
99
+ _b = bag10(__s, _root, void 0, _m1, void 0, __s, void 0, void 0, void 0, _m7, null, void 0);
100
+ __s.refFields = _rm$8;
101
+ } else {
102
+ const _r = (el) => applyWebProps(el, props.web);
103
+ if (_r !== _b.h) _b.h = replaceRef(__s, _b.h, _r, _b.b);
104
+ }
105
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:b2d8391e", setPlainAttribute);
106
+ _b.c = updateFreshClassName(["vx-icon", props.className], _b.c, _b.b);
107
+ {
108
+ const _v0 = glyph.font.family;
109
+ const _v1 = size;
110
+ const _v2 = props.color;
111
+ if (_b.d === __s || isHydratingStyle()) {
112
+ setStyleProperties(_b.b, [
113
+ "fontFamily",
114
+ _v0,
115
+ "fontSize",
116
+ _v1,
117
+ "color",
118
+ _v2
119
+ ], "");
120
+ _b.d = null;
121
+ _b.e = _v0;
122
+ _b.f = _v1;
123
+ _b.g = _v2;
124
+ } else {
125
+ if (_b.e !== _v0) {
126
+ setStyleProperty(_b.b, "fontFamily", _v0, "", _b.e);
127
+ _b.e = _v0;
128
+ }
129
+ if (_b.f !== _v1) {
130
+ setStyleProperty(_b.b, "fontSize", _v1, "", _b.f);
131
+ _b.f = _v1;
132
+ }
133
+ if (_b.g !== _v2) {
134
+ setStyleProperty(_b.b, "color", _v2, "", _b.g);
135
+ _b.g = _v2;
136
+ }
137
+ }
138
+ }
139
+ _b.k = bindSignalChild(__s, _b.k, 1, _b.b, glyph.font.glyph, "b:9acbe14d", null, void 0, void 0, void 0, true);
140
+ }
141
+ var _rm$11 = [
142
+ "r",
143
+ "h",
144
+ "b"
145
+ ];
146
+ function __then$10(__props, __s, __extra) {
147
+ const glyph = __extra[0];
148
+ const props = __extra[1];
149
+ const size = __extra[2];
150
+ let _b = __s.slots[0];
151
+ if (_b === void 0) {
152
+ let _m1, _m7;
153
+ const _root = clone(_t$3);
154
+ _m1 = _root;
155
+ queueRefAttach(__s, _m7 = (el) => applyWebProps(el, props.web), _m1);
156
+ (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.h, _b.b));
157
+ _b = bag8(__s, _root, void 0, _m1, void 0, void 0, void 0, void 0, void 0, _m7);
158
+ __s.refFields = _rm$11;
159
+ } else {
160
+ const _r = (el) => applyWebProps(el, props.web);
161
+ if (_r !== _b.h) _b.h = replaceRef(__s, _b.h, _r, _b.b);
162
+ }
163
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:64d5b225", setPlainAttribute);
164
+ _b.c = updateFreshClassName(["vx-icon", props.className], _b.c, _b.b);
165
+ _b.d = bindSignalAttribute(__s, _b.d, _b.b, "src", glyph.src, "b:b1335ffd", setURLAttribute);
166
+ _b.e = bindSignalAttribute(__s, _b.e, _b.b, "width", size, "b:4c3cfd41", setPlainAttribute);
167
+ _b.f = bindSignalAttribute(__s, _b.f, _b.b, "height", size, "b:3c1a4d8b", setPlainAttribute);
168
+ _b.g = bindSignalAttribute(__s, _b.g, _b.b, "alt", props.name, "b:49c63153", setPlainAttribute);
169
+ }
170
+ var _rm$15 = [
171
+ "r",
172
+ "g",
173
+ "b"
174
+ ];
175
+ function __then$13(__props, __s, __extra) {
176
+ const glyph = __extra[0];
177
+ const props = __extra[1];
178
+ const size = __extra[2];
179
+ let _b = __s.slots[0];
180
+ if (_b === void 0) {
181
+ let _m1, _m6;
182
+ const _root = clone(_t$2);
183
+ _m1 = _root;
184
+ queueRefAttach(__s, _m6 = (el) => applyWebProps(el, props.web), _m1);
185
+ (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.g, _b.b));
186
+ _b = bag9(__s, _root, void 0, _m1, void 0, __s, void 0, void 0, _m6, null, void 0);
187
+ __s.refFields = _rm$15;
188
+ } else {
189
+ const _r = (el) => applyWebProps(el, props.web);
190
+ if (_r !== _b.g) _b.g = replaceRef(__s, _b.g, _r, _b.b);
191
+ }
192
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:69ead7e8", setPlainAttribute);
193
+ _b.c = updateFreshClassName(["vx-icon", props.className], _b.c, _b.b);
194
+ {
195
+ const _v0 = size;
196
+ const _v1 = props.color;
197
+ if (_b.d === __s || isHydratingStyle()) {
198
+ setStyleProperties(_b.b, [
199
+ "fontSize",
200
+ _v0,
201
+ "color",
202
+ _v1
203
+ ], "");
204
+ _b.d = null;
205
+ _b.e = _v0;
206
+ _b.f = _v1;
207
+ } else {
208
+ if (_b.e !== _v0) {
209
+ setStyleProperty(_b.b, "fontSize", _v0, "", _b.e);
210
+ _b.e = _v0;
211
+ }
212
+ if (_b.f !== _v1) {
213
+ setStyleProperty(_b.b, "color", _v1, "", _b.f);
214
+ _b.f = _v1;
215
+ }
216
+ }
217
+ }
218
+ _b.j = bindSignalChild(__s, _b.j, 1, _b.b, glyph.text, "b:d3430f0c", null, void 0, void 0, void 0, true);
219
+ }
220
+ function __else$12(__props, __s, __extra) {
221
+ const __block = __s.block;
222
+ const glyph = __extra[0];
223
+ __extra[1];
224
+ __extra[2];
225
+ ifBlock(__s, 0, __block.parentNode, glyph.text, __then$13, null, __block.endMarker, __extra);
226
+ }
227
+ function __else$9(__props, __s, __extra) {
228
+ const __block = __s.block;
229
+ const glyph = __extra[0];
230
+ __extra[1];
231
+ __extra[2];
232
+ ifBlock(__s, 0, __block.parentNode, glyph.src, __then$10, __else$12, __block.endMarker, __extra);
233
+ }
234
+ function __else$5(__props, __s, __extra) {
235
+ const __block = __s.block;
236
+ const glyph = __extra[0];
237
+ __extra[1];
238
+ __extra[2];
239
+ ifBlock(__s, 0, __block.parentNode, glyph.font, __then$6, __else$9, __block.endMarker, __extra);
240
+ }
241
+ function __else$2(__props, __s, __extra) {
242
+ const __block = __s.block;
243
+ const glyph = __extra[0];
244
+ __extra[1];
245
+ __extra[2];
246
+ ifBlock(__s, 0, __block.parentNode, glyph.svg, __then$3, __else$5, __block.endMarker, __extra);
247
+ }
248
+ function _frag$0(props, __s, __extra) {
249
+ const __block = __s.block;
250
+ ifBlock(__s, 0, __block.parentNode, props.h0, props.h1, props.h2, __block.endMarker, props.h3);
251
+ }
252
+ var _hs$ = /* @__PURE__ */ hookSlots(11);
253
+ var Icon = function Icon(props, __s, __extra) {
254
+ const __memoRegion = compilerMemoRegion(__s, _hs$ + 0);
255
+ let __hk = __memoRegion.hooks;
256
+ if (__hk === void 0) __memoRegion.hooks = __hk = hookMemoCreate(3);
257
+ let __hkd0;
258
+ const glyph = (__hkd0 = props, __hk[0] !== true || !hookMemoEqual(__hk[1], __hkd0) ? hookMemoPublish1(__hk, 0, getIcon(props.name), __hkd0) : __hk[2]);
259
+ if (!glyph) return null;
260
+ const size = props.size ?? 24;
261
+ return createElementFromConfig("c:3275b5a7", _frag$0, {
262
+ h0: glyph.markup,
263
+ h1: __then$0,
264
+ h2: __else$2,
265
+ h3: [
266
+ glyph,
267
+ props,
268
+ size
269
+ ]
270
+ });
271
+ };
16
272
  //#endregion
17
- export { PlatformBadge };
273
+ export { Icon };
package/dist/web/ui54.js CHANGED
@@ -1,9 +1,42 @@
1
- //#region src/stacks.web.ts
2
- /** Web twin — one linear URL stack; named stacks don't apply. */
3
- function registerStack(_name, _frame) {}
4
- function getStack(_name) {}
5
- function stackEntries() {
6
- return [].values();
7
- }
1
+ import { normStyle } from "./ui4.js";
2
+ import { applyWebProps } from "./ui47.js";
3
+ import { bag4, child, clone, componentSlot, drainFrag, markChildrenBlock, template } from "octane";
4
+ import { textHoleUpdate } from "octane/internal/client";
5
+ //#region src/Heading.web.tsrx
6
+ var _t$0 = /* @__PURE__ */ template("<!>", 0, 1);
7
+ var __childrenBody = {};
8
+ var Heading = function Heading(props, __s, __extra) {
9
+ const __block = __s.block;
10
+ const level = props.level ?? 2;
11
+ const tag = `h${level}`;
12
+ function __children$1(__props, __s, __extra) {
13
+ const __block = __s.block;
14
+ let _b = __s.slots[0];
15
+ if (_b === void 0) {
16
+ let _m0, _m1;
17
+ const _root = clone(_t$0);
18
+ _m0 = __block.parentNode;
19
+ _m1 = child(_root);
20
+ drainFrag(_root, __block.parentNode, __block.endMarker);
21
+ _b = bag4(__s, null, _m0, _m1, null, void 0);
22
+ }
23
+ {
24
+ const _v = props.children;
25
+ _b.c = textHoleUpdate(__s, 1, _b.a, _v, _b.c, _b.d, _b.b, true, true);
26
+ _b.d = _v;
27
+ }
28
+ }
29
+ componentSlot(__s, 0, __block.parentNode, tag, {
30
+ "id": props.id,
31
+ "className": [
32
+ "vx-heading",
33
+ `vx-h${level}`,
34
+ props.className
35
+ ],
36
+ "style": normStyle(props.style),
37
+ "ref": (el) => applyWebProps(el, props.web),
38
+ "children": markChildrenBlock(__children$1, __childrenBody)
39
+ }, __block.endMarker, void 0, void 0, true, void 0, "c:4056bf45");
40
+ };
8
41
  //#endregion
9
- export { getStack, registerStack, stackEntries };
42
+ export { Heading };
package/dist/web/ui55.js CHANGED
@@ -1,22 +1,17 @@
1
- //#region src/store.ts
2
- function createStore(initial) {
3
- let value = initial;
4
- const listeners = /* @__PURE__ */ new Set();
5
- return {
6
- get: () => value,
7
- set(next) {
8
- const v = typeof next === "function" ? next(value) : next;
9
- if (Object.is(v, value)) return;
10
- value = v;
11
- for (const l of [...listeners]) l();
12
- },
13
- subscribe(notify) {
14
- listeners.add(notify);
15
- return () => {
16
- listeners.delete(notify);
17
- };
18
- }
19
- };
20
- }
1
+ import { __s, bag2, clone, template } from "octane";
2
+ import { bindSignalAttribute, enableSignalBindings } from "octane/internal/client";
3
+ //#region src/PlatformBadge.web.tsrx
4
+ enableSignalBindings(1, true);
5
+ var _t$0 = /* @__PURE__ */ template("<span>web</span>");
6
+ var PlatformBadge = /* @__PURE__ */ __s(function PlatformBadge(props, __s, __extra) {
7
+ let _b = __s.slots[0];
8
+ if (_b === void 0) {
9
+ let _m1;
10
+ const _root = clone(_t$0);
11
+ _m1 = _root;
12
+ _b = bag2(__s, _root, void 0, _m1);
13
+ }
14
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "class", props.className, "b:f3cb9a4b", "class");
15
+ });
21
16
  //#endregion
22
- export { createStore };
17
+ export { PlatformBadge };
package/dist/web/ui56.js CHANGED
@@ -1,8 +1,9 @@
1
- import { hookSlots, useSyncExternalStore } from "octane";
2
- //#region src/use-store.web.tsrx
3
- var _h$0 = /* @__PURE__ */ Symbol(/* @__PURE__ */ hookSlots(1));
4
- function useStore(store, select) {
5
- return useSyncExternalStore(store.subscribe, select === void 0 ? store.get : () => select(store.get()), _h$0);
1
+ //#region src/stacks.web.ts
2
+ /** Web twin — one linear URL stack; named stacks don't apply. */
3
+ function registerStack(_name, _frame) {}
4
+ function getStack(_name) {}
5
+ function stackEntries() {
6
+ return [].values();
6
7
  }
7
8
  //#endregion
8
- export { useStore };
9
+ export { getStack, registerStack, stackEntries };
package/dist/web/ui57.js CHANGED
@@ -1,44 +1,22 @@
1
- import { cx } from "./ui28.js";
2
- import { useThemeScheme } from "./ui29.js";
3
- import { bag4, child, clone, createElement, createPortal, createScopedElement, createScopedValue, drainFrag, hookSlots, ifBlock, positionalChildren, template, withSlot } from "octane";
4
- import { textHoleUpdate } from "octane/internal/client";
5
- //#region src/Sheet.web.tsrx
6
- var _t$0 = /* @__PURE__ */ template("<!>", 0, 1);
7
- var _h$0 = /* @__PURE__ */ Symbol(/* @__PURE__ */ hookSlots(2));
8
- function __then$0(__props, __s, __extra) {
9
- const __block = __s.block;
10
- const dark = __extra[0];
11
- const props = __extra[1];
12
- let _b = __s.slots[0];
13
- if (_b === void 0) {
14
- let _m0, _m1;
15
- const _root = clone(_t$0);
16
- _m0 = __block.parentNode;
17
- _m1 = child(_root);
18
- drainFrag(_root, __block.parentNode, __block.endMarker);
19
- _b = bag4(__s, null, _m0, _m1, null, void 0);
20
- }
21
- {
22
- const _v = /* @__PURE__ */ createPortal(createScopedValue(() => createScopedElement("div", { className: cx("vx-sheet-layer", dark && "dark") }, () => positionalChildren([(props.shadeCover ?? true) && createScopedValue(() => createElement("div", {
23
- className: "vx-sheet-backdrop",
24
- onClick: props.onDismiss
25
- })), createScopedValue(() => createScopedElement("div", {
26
- className: cx("vx-sheet", props.className),
27
- style: { ...props.style },
28
- ...props.web
29
- }, () => props.children))]))), document.body);
30
- _b.c = textHoleUpdate(__s, 1, _b.a, _v, _b.c, _b.d, _b.b, true, true);
31
- _b.d = _v;
32
- }
1
+ //#region src/store.ts
2
+ function createStore(initial) {
3
+ let value = initial;
4
+ const listeners = /* @__PURE__ */ new Set();
5
+ return {
6
+ get: () => value,
7
+ set(next) {
8
+ const v = typeof next === "function" ? next(value) : next;
9
+ if (Object.is(v, value)) return;
10
+ value = v;
11
+ for (const l of [...listeners]) l();
12
+ },
13
+ subscribe(notify) {
14
+ listeners.add(notify);
15
+ return () => {
16
+ listeners.delete(notify);
17
+ };
18
+ }
19
+ };
33
20
  }
34
- var Sheet = function Sheet(props, __s, __extra) {
35
- const __block = __s.block;
36
- const dark = withSlot(_h$0, useThemeScheme) === "dark";
37
- if (__s.block.pending && !__s.block.crossRenderUpdate) return;
38
- {
39
- const __ifCondition = props.open;
40
- ifBlock(__s, 0, __block.parentNode, __ifCondition, __then$0, null, __block.endMarker, __ifCondition ? [dark, props] : void 0);
41
- }
42
- };
43
21
  //#endregion
44
- export { Sheet };
22
+ export { createStore };
package/dist/web/ui58.js CHANGED
@@ -1,46 +1,8 @@
1
- import { applyThemeClasses } from "./ui29.js";
2
- import { createRoot } from "octane";
3
- //#region src/sheet-service.web.ts
4
- var active = /* @__PURE__ */ new Set();
5
- /** Close the most recently opened sheet (resolve with `result`). */
6
- function closeSheet(result) {
7
- [...active].pop()?.finish(result);
1
+ import { hookSlots, useSyncExternalStore } from "octane";
2
+ //#region src/use-store.web.tsrx
3
+ var _h$0 = /* @__PURE__ */ Symbol(/* @__PURE__ */ hookSlots(1));
4
+ function useStore(store, select) {
5
+ return useSyncExternalStore(store.subscribe, select === void 0 ? store.get : () => select(store.get()), _h$0);
8
6
  }
9
- /** Imperative in-window sheet: portal layer at document root, bottom-
10
- * anchored panel, dedicated Octane root. Resolves when the sheet closes. */
11
- var openSheet = (Component, params, options = {}) => new Promise((resolve) => {
12
- const layer = document.createElement("div");
13
- const unbindTheme = applyThemeClasses(layer, "vx-sheet-layer");
14
- const panel = document.createElement("div");
15
- panel.className = "vx-sheet";
16
- let finished = false;
17
- const finish = (result) => {
18
- if (finished) return;
19
- finished = true;
20
- active.delete(entry);
21
- unbindTheme();
22
- root.unmount();
23
- layer.remove();
24
- resolve(result);
25
- };
26
- const entry = {
27
- layer,
28
- finish
29
- };
30
- if (options.shadeCover ?? true) {
31
- const backdrop = document.createElement("div");
32
- backdrop.className = "vx-sheet-backdrop";
33
- backdrop.addEventListener("click", () => finish());
34
- layer.appendChild(backdrop);
35
- }
36
- layer.appendChild(panel);
37
- document.body.appendChild(layer);
38
- const root = createRoot(panel);
39
- root.render(Component, {
40
- params,
41
- close: finish
42
- });
43
- active.add(entry);
44
- });
45
7
  //#endregion
46
- export { closeSheet, openSheet };
8
+ export { useStore };
@@ -0,0 +1,44 @@
1
+ import { cx } from "./ui28.js";
2
+ import { useThemeScheme } from "./ui29.js";
3
+ import { bag4, child, clone, createElement, createPortal, createScopedElement, createScopedValue, drainFrag, hookSlots, ifBlock, positionalChildren, template, withSlot } from "octane";
4
+ import { textHoleUpdate } from "octane/internal/client";
5
+ //#region src/Sheet.web.tsrx
6
+ var _t$0 = /* @__PURE__ */ template("<!>", 0, 1);
7
+ var _h$0 = /* @__PURE__ */ Symbol(/* @__PURE__ */ hookSlots(2));
8
+ function __then$0(__props, __s, __extra) {
9
+ const __block = __s.block;
10
+ const dark = __extra[0];
11
+ const props = __extra[1];
12
+ let _b = __s.slots[0];
13
+ if (_b === void 0) {
14
+ let _m0, _m1;
15
+ const _root = clone(_t$0);
16
+ _m0 = __block.parentNode;
17
+ _m1 = child(_root);
18
+ drainFrag(_root, __block.parentNode, __block.endMarker);
19
+ _b = bag4(__s, null, _m0, _m1, null, void 0);
20
+ }
21
+ {
22
+ const _v = /* @__PURE__ */ createPortal(createScopedValue(() => createScopedElement("div", { className: cx("vx-sheet-layer", dark && "dark") }, () => positionalChildren([(props.shadeCover ?? true) && createScopedValue(() => createElement("div", {
23
+ className: "vx-sheet-backdrop",
24
+ onClick: props.onDismiss
25
+ })), createScopedValue(() => createScopedElement("div", {
26
+ className: cx("vx-sheet", props.className),
27
+ style: { ...props.style },
28
+ ...props.web
29
+ }, () => props.children))]))), document.body);
30
+ _b.c = textHoleUpdate(__s, 1, _b.a, _v, _b.c, _b.d, _b.b, true, true);
31
+ _b.d = _v;
32
+ }
33
+ }
34
+ var Sheet = function Sheet(props, __s, __extra) {
35
+ const __block = __s.block;
36
+ const dark = withSlot(_h$0, useThemeScheme) === "dark";
37
+ if (__s.block.pending && !__s.block.crossRenderUpdate) return;
38
+ {
39
+ const __ifCondition = props.open;
40
+ ifBlock(__s, 0, __block.parentNode, __ifCondition, __then$0, null, __block.endMarker, __ifCondition ? [dark, props] : void 0);
41
+ }
42
+ };
43
+ //#endregion
44
+ export { Sheet };
@@ -0,0 +1,46 @@
1
+ import { applyThemeClasses } from "./ui29.js";
2
+ import { createRoot } from "octane";
3
+ //#region src/sheet-service.web.ts
4
+ var active = /* @__PURE__ */ new Set();
5
+ /** Close the most recently opened sheet (resolve with `result`). */
6
+ function closeSheet(result) {
7
+ [...active].pop()?.finish(result);
8
+ }
9
+ /** Imperative in-window sheet: portal layer at document root, bottom-
10
+ * anchored panel, dedicated Octane root. Resolves when the sheet closes. */
11
+ var openSheet = (Component, params, options = {}) => new Promise((resolve) => {
12
+ const layer = document.createElement("div");
13
+ const unbindTheme = applyThemeClasses(layer, "vx-sheet-layer");
14
+ const panel = document.createElement("div");
15
+ panel.className = "vx-sheet";
16
+ let finished = false;
17
+ const finish = (result) => {
18
+ if (finished) return;
19
+ finished = true;
20
+ active.delete(entry);
21
+ unbindTheme();
22
+ root.unmount();
23
+ layer.remove();
24
+ resolve(result);
25
+ };
26
+ const entry = {
27
+ layer,
28
+ finish
29
+ };
30
+ if (options.shadeCover ?? true) {
31
+ const backdrop = document.createElement("div");
32
+ backdrop.className = "vx-sheet-backdrop";
33
+ backdrop.addEventListener("click", () => finish());
34
+ layer.appendChild(backdrop);
35
+ }
36
+ layer.appendChild(panel);
37
+ document.body.appendChild(layer);
38
+ const root = createRoot(panel);
39
+ root.render(Component, {
40
+ params,
41
+ close: finish
42
+ });
43
+ active.add(entry);
44
+ });
45
+ //#endregion
46
+ export { closeSheet, openSheet };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@octane-xplat/ui",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "files": [
5
5
  "dist",
6
6
  "types",
@@ -29,6 +29,7 @@
29
29
  "vitest": "5.0.1"
30
30
  },
31
31
  "peerDependencies": {
32
+ "@nativescript-community/gesturehandler": ">=2.0.8 <3",
32
33
  "@nativescript-community/octane": ">=0.2.1 <1",
33
34
  "@nativescript-community/ui-canvas": ">=4.6.52 <5",
34
35
  "@nativescript-community/ui-drawer": ">=0.1.32 <1",
@@ -37,6 +38,9 @@
37
38
  "octane": ">=0.1.51 <1"
38
39
  },
39
40
  "peerDependenciesMeta": {
41
+ "@nativescript-community/gesturehandler": {
42
+ "optional": true
43
+ },
40
44
  "@nativescript-community/octane": {
41
45
  "optional": true
42
46
  },