@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/ui46.js CHANGED
@@ -1,45 +1,50 @@
1
- import { applyWebProps } from "./ui45.js";
2
- import { bag5, clone, ifBlock, queueRefAttach, queueRefDetach, setStyle, template } from "octane";
3
- import { bindSignalAttribute, enableSignalBindings, replaceRef, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
4
- //#region src/ActivityIndicator.web.tsrx
5
- enableSignalBindings(1, true);
6
- var _t$0 = /* @__PURE__ */ template("<div role=\"progressbar\"></div>");
7
- var _rm$1 = [
8
- "r",
9
- "e",
10
- "b"
11
- ];
12
- function __then$0(__props, __s, __extra) {
13
- const props = __extra[0];
14
- let _b = __s.slots[0];
15
- if (_b === void 0) {
16
- let _m1, _m4;
17
- const _root = clone(_t$0);
18
- _m1 = _root;
19
- queueRefAttach(__s, _m4 = (el) => applyWebProps(el, props.web), _m1);
20
- (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.e, _b.b));
21
- _b = bag5(__s, _root, void 0, _m1, void 0, void 0, _m4);
22
- __s.refFields = _rm$1;
23
- } else {
24
- const _r = (el) => applyWebProps(el, props.web);
25
- if (_r !== _b.e) _b.e = replaceRef(__s, _b.e, _r, _b.b);
26
- }
27
- _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:da5807de", setPlainAttribute);
28
- _b.c = updateFreshClassName(["vx-spinner", props.className], _b.c, _b.b);
29
- {
30
- const _v = props.style;
31
- if (_b.d !== _v) {
32
- setStyle(_b.b, _v, _b.d);
33
- _b.d = _v;
1
+ import { hookSlots, useEffect, useState } from "octane";
2
+ import { memoPublish, memoSlot, memoTake0 } from "octane/internal/client";
3
+ //#region src/useMeasure.web.tsrx
4
+ var _hs$ = /* @__PURE__ */ hookSlots(4);
5
+ var _h$0 = /* @__PURE__ */ Symbol(_hs$);
6
+ var _h$1 = /* @__PURE__ */ Symbol(_hs$ + 1);
7
+ var _h$2 = /* @__PURE__ */ Symbol(_hs$ + 2);
8
+ var _h$3 = /* @__PURE__ */ Symbol(_hs$ + 3);
9
+ function readBounds(element) {
10
+ const rect = element.getBoundingClientRect();
11
+ return {
12
+ x: rect.left,
13
+ y: rect.top,
14
+ width: rect.width,
15
+ height: rect.height
16
+ };
17
+ }
18
+ function useMeasure(options = {}) {
19
+ let __hks, __hke;
20
+ const [element, setElement] = useState(null, _h$0);
21
+ const [bounds, setBounds] = useState(null, _h$1);
22
+ const observe = options.observe ?? true;
23
+ const bind = (__hks = memoSlot(_h$2, "useCallback"), __hke = memoTake0(__hks), __hke === null ? memoPublish(__hks, (next) => {
24
+ setElement((current) => current === next ? current : next);
25
+ }) : __hke.value);
26
+ useEffect(() => {
27
+ if (!element) {
28
+ setBounds(null);
29
+ return;
34
30
  }
35
- }
31
+ const update = () => setBounds(readBounds(element));
32
+ update();
33
+ if (!observe) return;
34
+ const resizeObserver = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(update);
35
+ resizeObserver?.observe(element);
36
+ window.addEventListener("resize", update);
37
+ window.addEventListener("scroll", update, true);
38
+ return () => {
39
+ resizeObserver?.disconnect();
40
+ window.removeEventListener("resize", update);
41
+ window.removeEventListener("scroll", update, true);
42
+ };
43
+ }, [element, observe], _h$3);
44
+ return {
45
+ bind,
46
+ bounds
47
+ };
36
48
  }
37
- var ActivityIndicator = function ActivityIndicator(props, __s, __extra) {
38
- const __block = __s.block;
39
- {
40
- const __ifCondition = !(props.busy === false);
41
- ifBlock(__s, 0, __block.parentNode, __ifCondition, __then$0, null, __block.endMarker, __ifCondition ? [props] : void 0);
42
- }
43
- };
44
49
  //#endregion
45
- export { ActivityIndicator };
50
+ export { useMeasure };
package/dist/web/ui47.js CHANGED
@@ -1,13 +1,9 @@
1
- //#region src/meter-math.ts
2
- /** Clamp a progress value to its declared range for drawing and accessibility. */
3
- function meterRange(value, max) {
4
- const safeMax = Number.isFinite(max) && max > 0 ? max : 100;
5
- const safeValue = Number.isFinite(value) ? Math.min(safeMax, Math.max(0, value)) : 0;
6
- return {
7
- max: safeMax,
8
- value: safeValue,
9
- ratio: safeValue / safeMax
10
- };
1
+ //#region src/platformProps.web.ts
2
+ /** Apply a web escape-hatch bag after the primitive's standard props. */
3
+ function applyWebProps(el, props) {
4
+ if (!el || !props) return;
5
+ for (const [name, value] of Object.entries(props)) if (name.includes("-")) el.setAttribute(name, String(value));
6
+ else el[name] = value;
11
7
  }
12
8
  //#endregion
13
- export { meterRange };
9
+ export { applyWebProps };
package/dist/web/ui48.js CHANGED
@@ -1,63 +1,45 @@
1
- import { meterRange } from "./ui47.js";
2
- import { __s, bag12, child, clone, setAriaAttribute, setStyle, sibling, template } from "octane";
3
- import { bindSignalAttribute, bindSignalChild, enableSignalBindings, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
4
- //#region src/Meter.web.tsrx
1
+ import { applyWebProps } from "./ui47.js";
2
+ import { bag5, clone, ifBlock, queueRefAttach, queueRefDetach, setStyle, template } from "octane";
3
+ import { bindSignalAttribute, enableSignalBindings, replaceRef, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
4
+ //#region src/ActivityIndicator.web.tsrx
5
5
  enableSignalBindings(1, true);
6
- var _t$0 = /* @__PURE__ */ template("<div role=\"progressbar\" aria-valuemin=\"0\"><div aria-hidden=\"true\"></div><div style=\"position: relative;\"></div></div>");
7
- var Meter = /* @__PURE__ */ __s(function Meter(props, __s, __extra) {
8
- const max = props.max ?? 100;
9
- const { max: rangeMax, value, ratio } = meterRange(props.value, max);
10
- const size = props.size ?? 24;
11
- const strokeWidth = Math.max(0, Math.min(props.strokeWidth ?? 3, size));
12
- const color = props.color ?? "#3376cc";
13
- const trackColor = props.trackColor ?? "#e1ecf7";
14
- const sweep = ratio * 360;
15
- const ringStyle = {
16
- position: "absolute",
17
- inset: 0,
18
- borderRadius: "50%",
19
- backgroundImage: `conic-gradient(${color} 0deg ${sweep}deg, ${trackColor} ${sweep}deg 360deg)`,
20
- mask: `radial-gradient(circle, transparent calc(50% - ${strokeWidth}px), #000 calc(50% - ${strokeWidth}px + 0.5px))`,
21
- WebkitMask: `radial-gradient(circle, transparent calc(50% - ${strokeWidth}px), #000 calc(50% - ${strokeWidth}px + 0.5px))`
22
- };
23
- if (__s.block.pending && !__s.block.crossRenderUpdate) return;
6
+ var _t$0 = /* @__PURE__ */ template("<div role=\"progressbar\"></div>");
7
+ var _rm$1 = [
8
+ "r",
9
+ "e",
10
+ "b"
11
+ ];
12
+ function __then$0(__props, __s, __extra) {
13
+ const props = __extra[0];
24
14
  let _b = __s.slots[0];
25
15
  if (_b === void 0) {
26
- let _m1, _m8, _m9;
16
+ let _m1, _m4;
27
17
  const _root = clone(_t$0);
28
18
  _m1 = _root;
29
- const _el0 = child(_root);
30
- _m8 = _el0;
31
- _m9 = sibling(_el0, 1);
32
- _b = bag12(__s, _root, void 0, _m1, void 0, void 0, void 0, void 0, void 0, void 0, _m8, _m9, null, void 0);
19
+ queueRefAttach(__s, _m4 = (el) => applyWebProps(el, props.web), _m1);
20
+ (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.e, _b.b));
21
+ _b = bag5(__s, _root, void 0, _m1, void 0, void 0, _m4);
22
+ __s.refFields = _rm$1;
23
+ } else {
24
+ const _r = (el) => applyWebProps(el, props.web);
25
+ if (_r !== _b.e) _b.e = replaceRef(__s, _b.e, _r, _b.b);
33
26
  }
34
- _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:fe732458", setPlainAttribute);
35
- _b.c = updateFreshClassName(["vx-meter", props.className], _b.c, _b.b);
27
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:da5807de", setPlainAttribute);
28
+ _b.c = updateFreshClassName(["vx-spinner", props.className], _b.c, _b.b);
36
29
  {
37
- const _v = {
38
- display: "grid",
39
- placeItems: "center",
40
- position: "relative",
41
- width: size,
42
- height: size,
43
- ...props.style
44
- };
30
+ const _v = props.style;
45
31
  if (_b.d !== _v) {
46
32
  setStyle(_b.b, _v, _b.d);
47
33
  _b.d = _v;
48
34
  }
49
35
  }
50
- _b.e = bindSignalAttribute(__s, _b.e, _b.b, "aria-label", props.accessibilityLabel, "b:8b03ec71", setAriaAttribute);
51
- _b.f = bindSignalAttribute(__s, _b.f, _b.b, "aria-valuemax", rangeMax, "b:b0ee791c", setAriaAttribute);
52
- _b.g = bindSignalAttribute(__s, _b.g, _b.b, "aria-valuenow", value, "b:4be1f493", setAriaAttribute);
36
+ }
37
+ var ActivityIndicator = function ActivityIndicator(props, __s, __extra) {
38
+ const __block = __s.block;
53
39
  {
54
- const _v = ringStyle;
55
- if (_b.h !== _v) {
56
- setStyle(_b.i, _v, _b.h);
57
- _b.h = _v;
58
- }
40
+ const __ifCondition = !(props.busy === false);
41
+ ifBlock(__s, 0, __block.parentNode, __ifCondition, __then$0, null, __block.endMarker, __ifCondition ? [props] : void 0);
59
42
  }
60
- _b.m = bindSignalChild(__s, _b.m, 1, _b.j, props.children, "b:c7af99f3", null, void 0, void 0, void 0, true);
61
- });
43
+ };
62
44
  //#endregion
63
- export { Meter };
45
+ export { ActivityIndicator };
package/dist/web/ui49.js CHANGED
@@ -1,47 +1,13 @@
1
- import { applyWebProps } from "./ui45.js";
2
- import { __s, bag9, clone, delegateEvents, queueRefAttach, queueRefDetach, setBooleanAttribute, setEventHandler, setStyle, template } from "octane";
3
- import { bindSignalAttribute, bindSignalValue, enableSignalBindings, replaceRef, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
4
- //#region src/Slider.web.tsrx
5
- enableSignalBindings(1, true);
6
- delegateEvents(["input"]);
7
- var _t$0 = /* @__PURE__ */ template("<input type=\"range\" data-octane-input=\"i:c0018a58\"/>");
8
- var _rm$0 = [
9
- "r",
10
- "i",
11
- "b"
12
- ];
13
- var Slider = /* @__PURE__ */ __s(function Slider(props, __s, __extra) {
14
- let _b = __s.slots[0];
15
- if (_b === void 0) {
16
- let _m1, _m4, _m8;
17
- const _root = clone(_t$0);
18
- _m1 = _root;
19
- _m4 = bindSignalValue(__s, void 0, _root, props.value, "i:c0018a58");
20
- setEventHandler(_root, "$$input", (e) => props.onValueChange?.(Number(e.target.value)));
21
- queueRefAttach(__s, _m8 = (el) => applyWebProps(el, props.web), _m1);
22
- (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.i, _b.b));
23
- _b = bag9(__s, _root, void 0, _m1, void 0, void 0, _m4, void 0, void 0, void 0, _m8);
24
- __s.refFields = _rm$0;
25
- } else {
26
- _b.e = bindSignalValue(__s, _b.e, _b.b, props.value, "i:c0018a58");
27
- setEventHandler(_b.b, "$$input", (e) => props.onValueChange?.(Number(e.target.value)));
28
- {
29
- const _r = (el) => applyWebProps(el, props.web);
30
- if (_r !== _b.i) _b.i = replaceRef(__s, _b.i, _r, _b.b);
31
- }
32
- }
33
- _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:97ef4e10", setPlainAttribute);
34
- _b.c = updateFreshClassName(["vx-slider", props.className], _b.c, _b.b);
35
- {
36
- const _v = props.style;
37
- if (_b.d !== _v) {
38
- setStyle(_b.b, _v, _b.d);
39
- _b.d = _v;
40
- }
41
- }
42
- _b.f = bindSignalAttribute(__s, _b.f, _b.b, "min", props.minValue ?? 0, "b:7991c980", setPlainAttribute);
43
- _b.g = bindSignalAttribute(__s, _b.g, _b.b, "max", props.maxValue ?? 100, "b:ff7f1a7c", setPlainAttribute);
44
- _b.h = bindSignalAttribute(__s, _b.h, _b.b, "disabled", props.disabled, "b:91d4cdb7", setBooleanAttribute);
45
- });
1
+ //#region src/meter-math.ts
2
+ /** Clamp a progress value to its declared range for drawing and accessibility. */
3
+ function meterRange(value, max) {
4
+ const safeMax = Number.isFinite(max) && max > 0 ? max : 100;
5
+ const safeValue = Number.isFinite(value) ? Math.min(safeMax, Math.max(0, value)) : 0;
6
+ return {
7
+ max: safeMax,
8
+ value: safeValue,
9
+ ratio: safeValue / safeMax
10
+ };
11
+ }
46
12
  //#endregion
47
- export { Slider };
13
+ export { meterRange };
package/dist/web/ui50.js CHANGED
@@ -1,17 +1,63 @@
1
- //#region src/icons.ts
2
- /**
3
- * App-owned icon registry. `svg` is SVG path `d` data (not a full SVG
4
- * markup string). Native `font` glyphs render only when the app ships that font.
5
- */
6
- var icons = /* @__PURE__ */ new Map();
7
- function registerIcon(name, glyph) {
8
- icons.set(name, glyph);
9
- }
10
- function registerIcons(record) {
11
- for (const [name, glyph] of Object.entries(record)) icons.set(name, glyph);
12
- }
13
- function getIcon(name) {
14
- return icons.get(name);
15
- }
1
+ import { meterRange } from "./ui49.js";
2
+ import { __s, bag12, child, clone, setAriaAttribute, setStyle, sibling, template } from "octane";
3
+ import { bindSignalAttribute, bindSignalChild, enableSignalBindings, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
4
+ //#region src/Meter.web.tsrx
5
+ enableSignalBindings(1, true);
6
+ var _t$0 = /* @__PURE__ */ template("<div role=\"progressbar\" aria-valuemin=\"0\"><div aria-hidden=\"true\"></div><div style=\"position: relative;\"></div></div>");
7
+ var Meter = /* @__PURE__ */ __s(function Meter(props, __s, __extra) {
8
+ const max = props.max ?? 100;
9
+ const { max: rangeMax, value, ratio } = meterRange(props.value, max);
10
+ const size = props.size ?? 24;
11
+ const strokeWidth = Math.max(0, Math.min(props.strokeWidth ?? 3, size));
12
+ const color = props.color ?? "#3376cc";
13
+ const trackColor = props.trackColor ?? "#e1ecf7";
14
+ const sweep = ratio * 360;
15
+ const ringStyle = {
16
+ position: "absolute",
17
+ inset: 0,
18
+ borderRadius: "50%",
19
+ backgroundImage: `conic-gradient(${color} 0deg ${sweep}deg, ${trackColor} ${sweep}deg 360deg)`,
20
+ mask: `radial-gradient(circle, transparent calc(50% - ${strokeWidth}px), #000 calc(50% - ${strokeWidth}px + 0.5px))`,
21
+ WebkitMask: `radial-gradient(circle, transparent calc(50% - ${strokeWidth}px), #000 calc(50% - ${strokeWidth}px + 0.5px))`
22
+ };
23
+ if (__s.block.pending && !__s.block.crossRenderUpdate) return;
24
+ let _b = __s.slots[0];
25
+ if (_b === void 0) {
26
+ let _m1, _m8, _m9;
27
+ const _root = clone(_t$0);
28
+ _m1 = _root;
29
+ const _el0 = child(_root);
30
+ _m8 = _el0;
31
+ _m9 = sibling(_el0, 1);
32
+ _b = bag12(__s, _root, void 0, _m1, void 0, void 0, void 0, void 0, void 0, void 0, _m8, _m9, null, void 0);
33
+ }
34
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:fe732458", setPlainAttribute);
35
+ _b.c = updateFreshClassName(["vx-meter", props.className], _b.c, _b.b);
36
+ {
37
+ const _v = {
38
+ display: "grid",
39
+ placeItems: "center",
40
+ position: "relative",
41
+ width: size,
42
+ height: size,
43
+ ...props.style
44
+ };
45
+ if (_b.d !== _v) {
46
+ setStyle(_b.b, _v, _b.d);
47
+ _b.d = _v;
48
+ }
49
+ }
50
+ _b.e = bindSignalAttribute(__s, _b.e, _b.b, "aria-label", props.accessibilityLabel, "b:8b03ec71", setAriaAttribute);
51
+ _b.f = bindSignalAttribute(__s, _b.f, _b.b, "aria-valuemax", rangeMax, "b:b0ee791c", setAriaAttribute);
52
+ _b.g = bindSignalAttribute(__s, _b.g, _b.b, "aria-valuenow", value, "b:4be1f493", setAriaAttribute);
53
+ {
54
+ const _v = ringStyle;
55
+ if (_b.h !== _v) {
56
+ setStyle(_b.i, _v, _b.h);
57
+ _b.h = _v;
58
+ }
59
+ }
60
+ _b.m = bindSignalChild(__s, _b.m, 1, _b.j, props.children, "b:c7af99f3", null, void 0, void 0, void 0, true);
61
+ });
16
62
  //#endregion
17
- export { getIcon, registerIcon, registerIcons };
63
+ export { Meter };
package/dist/web/ui51.js CHANGED
@@ -1,149 +1,47 @@
1
- import { applyWebProps } from "./ui45.js";
2
- import { getIcon } from "./ui50.js";
3
- import { bag8, bag9, clone, hookSlots, ifBlock, queueRefAttach, queueRefDetach, setStyle, template } from "octane";
4
- import { bindSignalAttribute, compilerMemoRegion, createElementFromConfig, enableSignalBindings, hookMemoCreate, hookMemoEqual, hookMemoPublish1, replaceRef, setPlainAttribute, setURLAttribute, updateFreshClassAttr, updateFreshClassName } from "octane/internal/client";
5
- //#region src/Icon.web.tsrx
1
+ import { applyWebProps } from "./ui47.js";
2
+ import { __s, bag9, clone, delegateEvents, queueRefAttach, queueRefDetach, setBooleanAttribute, setEventHandler, setStyle, template } from "octane";
3
+ import { bindSignalAttribute, bindSignalValue, enableSignalBindings, replaceRef, setPlainAttribute, updateFreshClassName } from "octane/internal/client";
4
+ //#region src/Slider.web.tsrx
6
5
  enableSignalBindings(1, true);
7
- var _t$0 = /* @__PURE__ */ template("<svg aria-hidden=\"true\"></svg>", 1);
8
- var _t$1 = /* @__PURE__ */ template("<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path></path></svg>", 1);
9
- var _t$2 = /* @__PURE__ */ template("<img/>");
10
- var _rm$1 = [
6
+ delegateEvents(["input"]);
7
+ var _t$0 = /* @__PURE__ */ template("<input type=\"range\" data-octane-input=\"i:c0018a58\"/>");
8
+ var _rm$0 = [
11
9
  "r",
12
- "h",
10
+ "i",
13
11
  "b"
14
12
  ];
15
- function __then$0(__props, __s, __extra) {
16
- const glyph = __extra[0];
17
- const props = __extra[1];
18
- const size = __extra[2];
13
+ var Slider = /* @__PURE__ */ __s(function Slider(props, __s, __extra) {
19
14
  let _b = __s.slots[0];
20
15
  if (_b === void 0) {
21
- let _m1, _m7;
16
+ let _m1, _m4, _m8;
22
17
  const _root = clone(_t$0);
23
18
  _m1 = _root;
24
- queueRefAttach(__s, _m7 = (el) => {
25
- if (el) el.innerHTML = glyph.markup;
26
- applyWebProps(el, props.web);
27
- }, _m1);
28
- (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.h, _b.b));
29
- _b = bag8(__s, _root, void 0, _m1, void 0, void 0, void 0, void 0, void 0, _m7);
30
- __s.refFields = _rm$1;
19
+ _m4 = bindSignalValue(__s, void 0, _root, props.value, "i:c0018a58");
20
+ setEventHandler(_root, "$$input", (e) => props.onValueChange?.(Number(e.target.value)));
21
+ queueRefAttach(__s, _m8 = (el) => applyWebProps(el, props.web), _m1);
22
+ (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.i, _b.b));
23
+ _b = bag9(__s, _root, void 0, _m1, void 0, void 0, _m4, void 0, void 0, void 0, _m8);
24
+ __s.refFields = _rm$0;
31
25
  } else {
32
- const _r = (el) => {
33
- if (el) el.innerHTML = glyph.markup;
34
- applyWebProps(el, props.web);
35
- };
36
- if (_r !== _b.h) _b.h = replaceRef(__s, _b.h, _r, _b.b);
26
+ _b.e = bindSignalValue(__s, _b.e, _b.b, props.value, "i:c0018a58");
27
+ setEventHandler(_b.b, "$$input", (e) => props.onValueChange?.(Number(e.target.value)));
28
+ {
29
+ const _r = (el) => applyWebProps(el, props.web);
30
+ if (_r !== _b.i) _b.i = replaceRef(__s, _b.i, _r, _b.b);
31
+ }
37
32
  }
38
- _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:3add0cdf", setPlainAttribute);
39
- _b.c = updateFreshClassAttr(["vx-icon", props.className], _b.c, _b.b);
40
- _b.d = bindSignalAttribute(__s, _b.d, _b.b, "viewBox", glyph.viewBox ?? "0 0 24 24", "b:c67a6a16", setPlainAttribute);
41
- _b.e = bindSignalAttribute(__s, _b.e, _b.b, "width", size, "b:fb23295c", setPlainAttribute);
42
- _b.f = bindSignalAttribute(__s, _b.f, _b.b, "height", size, "b:8d1adcef", setPlainAttribute);
33
+ _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:97ef4e10", setPlainAttribute);
34
+ _b.c = updateFreshClassName(["vx-slider", props.className], _b.c, _b.b);
43
35
  {
44
- const _v = props.color ? { color: props.color } : void 0;
45
- if (_b.g !== _v) {
46
- setStyle(_b.b, _v, _b.g);
47
- _b.g = _v;
36
+ const _v = props.style;
37
+ if (_b.d !== _v) {
38
+ setStyle(_b.b, _v, _b.d);
39
+ _b.d = _v;
48
40
  }
49
41
  }
50
- }
51
- var _rm$4 = [
52
- "r",
53
- "f",
54
- "b"
55
- ];
56
- function __then$3(__props, __s, __extra) {
57
- const glyph = __extra[0];
58
- const props = __extra[1];
59
- const size = __extra[2];
60
- let _b = __s.slots[0];
61
- if (_b === void 0) {
62
- let _m1, _m5, _m7;
63
- const _root = clone(_t$1);
64
- _m1 = _root;
65
- queueRefAttach(__s, _m5 = (el) => applyWebProps(el, props.web), _m1);
66
- (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.f, _b.b));
67
- _m7 = _root.firstChild;
68
- _b = bag9(__s, _root, void 0, _m1, void 0, void 0, void 0, _m5, void 0, _m7, void 0);
69
- __s.refFields = _rm$4;
70
- } else {
71
- const _r = (el) => applyWebProps(el, props.web);
72
- if (_r !== _b.f) _b.f = replaceRef(__s, _b.f, _r, _b.b);
73
- }
74
- _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:9e8c5282", setPlainAttribute);
75
- _b.c = updateFreshClassAttr(["vx-icon", props.className], _b.c, _b.b);
76
- _b.d = bindSignalAttribute(__s, _b.d, _b.b, "width", size, "b:3b5779f4", setPlainAttribute);
77
- _b.e = bindSignalAttribute(__s, _b.e, _b.b, "height", size, "b:13d0b8b1", setPlainAttribute);
78
- _b.g = bindSignalAttribute(__s, _b.g, _b.h, "d", glyph.svg, "b:5d6c1e35", setPlainAttribute);
79
- _b.i = bindSignalAttribute(__s, _b.i, _b.h, "fill", props.color ?? "currentColor", "b:b6d02800", setPlainAttribute);
80
- }
81
- var _rm$7 = [
82
- "r",
83
- "h",
84
- "b"
85
- ];
86
- function __then$6(__props, __s, __extra) {
87
- const glyph = __extra[0];
88
- const props = __extra[1];
89
- const size = __extra[2];
90
- let _b = __s.slots[0];
91
- if (_b === void 0) {
92
- let _m1, _m7;
93
- const _root = clone(_t$2);
94
- _m1 = _root;
95
- queueRefAttach(__s, _m7 = (el) => applyWebProps(el, props.web), _m1);
96
- (__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.h, _b.b));
97
- _b = bag8(__s, _root, void 0, _m1, void 0, void 0, void 0, void 0, void 0, _m7);
98
- __s.refFields = _rm$7;
99
- } else {
100
- const _r = (el) => applyWebProps(el, props.web);
101
- if (_r !== _b.h) _b.h = replaceRef(__s, _b.h, _r, _b.b);
102
- }
103
- _b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:1374b84a", setPlainAttribute);
104
- _b.c = updateFreshClassName(["vx-icon", props.className], _b.c, _b.b);
105
- _b.d = bindSignalAttribute(__s, _b.d, _b.b, "src", glyph.src, "b:fdaa8e12", setURLAttribute);
106
- _b.e = bindSignalAttribute(__s, _b.e, _b.b, "width", size, "b:a4c78316", setPlainAttribute);
107
- _b.f = bindSignalAttribute(__s, _b.f, _b.b, "height", size, "b:2ca071e0", setPlainAttribute);
108
- _b.g = bindSignalAttribute(__s, _b.g, _b.b, "alt", props.name, "b:731bb804", setPlainAttribute);
109
- }
110
- function __else$5(__props, __s, __extra) {
111
- const __block = __s.block;
112
- const glyph = __extra[0];
113
- __extra[1];
114
- __extra[2];
115
- ifBlock(__s, 0, __block.parentNode, glyph.src, __then$6, null, __block.endMarker, __extra);
116
- }
117
- function __else$2(__props, __s, __extra) {
118
- const __block = __s.block;
119
- const glyph = __extra[0];
120
- __extra[1];
121
- __extra[2];
122
- ifBlock(__s, 0, __block.parentNode, glyph.svg, __then$3, __else$5, __block.endMarker, __extra);
123
- }
124
- function _frag$0(props, __s, __extra) {
125
- const __block = __s.block;
126
- ifBlock(__s, 0, __block.parentNode, props.h0, props.h1, props.h2, __block.endMarker, props.h3);
127
- }
128
- var _hs$ = /* @__PURE__ */ hookSlots(7);
129
- var Icon = function Icon(props, __s, __extra) {
130
- const __memoRegion = compilerMemoRegion(__s, _hs$ + 0);
131
- let __hk = __memoRegion.hooks;
132
- if (__hk === void 0) __memoRegion.hooks = __hk = hookMemoCreate(3);
133
- let __hkd0;
134
- const glyph = (__hkd0 = props, __hk[0] !== true || !hookMemoEqual(__hk[1], __hkd0) ? hookMemoPublish1(__hk, 0, getIcon(props.name), __hkd0) : __hk[2]);
135
- if (!glyph) return null;
136
- const size = props.size ?? 24;
137
- return createElementFromConfig("c:3275b5a7", _frag$0, {
138
- h0: glyph.markup,
139
- h1: __then$0,
140
- h2: __else$2,
141
- h3: [
142
- glyph,
143
- props,
144
- size
145
- ]
146
- });
147
- };
42
+ _b.f = bindSignalAttribute(__s, _b.f, _b.b, "min", props.minValue ?? 0, "b:7991c980", setPlainAttribute);
43
+ _b.g = bindSignalAttribute(__s, _b.g, _b.b, "max", props.maxValue ?? 100, "b:ff7f1a7c", setPlainAttribute);
44
+ _b.h = bindSignalAttribute(__s, _b.h, _b.b, "disabled", props.disabled, "b:91d4cdb7", setBooleanAttribute);
45
+ });
148
46
  //#endregion
149
- export { Icon };
47
+ export { Slider };
package/dist/web/ui52.js CHANGED
@@ -1,42 +1,19 @@
1
- import { normStyle } from "./ui4.js";
2
- import { applyWebProps } from "./ui45.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
- };
1
+ //#region src/icons.ts
2
+ /**
3
+ * App-owned icon registry. `svg` is SVG path `d` data (not a full SVG
4
+ * markup string). `src` can carry an image or an SVG source; the leaves only
5
+ * infer SVG from inline markup, SVG data URIs, and `.svg` paths/URLs. Native
6
+ * `font` glyphs render only when the app ships and registers that font.
7
+ */
8
+ var icons = /* @__PURE__ */ new Map();
9
+ function registerIcon(name, glyph) {
10
+ icons.set(name, glyph);
11
+ }
12
+ function registerIcons(record) {
13
+ for (const [name, glyph] of Object.entries(record)) icons.set(name, glyph);
14
+ }
15
+ function getIcon(name) {
16
+ return icons.get(name);
17
+ }
41
18
  //#endregion
42
- export { Heading };
19
+ export { getIcon, registerIcon, registerIcons };