@octane-xplat/ui 0.2.0 → 0.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.
- package/dist/native/octane-client-build.json +1 -1
- package/dist/native/ui.js +40 -19
- package/dist/native/ui10.js +19 -48
- package/dist/native/ui11.js +118 -56
- package/dist/native/ui12.js +114 -16
- package/dist/native/ui13.js +54 -18
- package/dist/native/ui14.js +76 -13
- package/dist/native/ui15.js +128 -18
- package/dist/native/ui16.js +48 -136
- package/dist/native/ui17.js +42 -19
- package/dist/native/ui18.js +50 -9
- package/dist/native/ui19.js +34 -12
- package/dist/native/ui2.js +10 -48
- package/dist/native/ui20.js +17 -0
- package/dist/native/ui21.js +93 -0
- package/dist/native/ui22.js +124 -0
- package/dist/native/ui23.js +103 -0
- package/dist/native/ui24.js +58 -0
- package/dist/native/ui25.js +19 -0
- package/dist/native/ui26.js +27 -0
- package/dist/native/ui27.js +35 -0
- package/dist/native/ui28.js +146 -0
- package/dist/native/ui29.js +28 -0
- package/dist/native/ui3.js +17 -20
- package/dist/native/ui30.js +35 -0
- package/dist/native/ui31.js +39 -0
- package/dist/native/ui32.js +70 -0
- package/dist/native/ui33.js +30 -0
- package/dist/native/ui34.js +10 -0
- package/dist/native/ui35.js +27 -0
- package/dist/native/ui36.js +34 -0
- package/dist/native/ui37.js +17 -0
- package/dist/native/ui38.js +68 -0
- package/dist/native/ui39.js +33 -0
- package/dist/native/ui4.js +21 -48
- package/dist/native/ui40.js +14 -0
- package/dist/native/ui41.js +104 -0
- package/dist/native/ui42.js +148 -0
- package/dist/native/ui43.js +22 -0
- package/dist/native/ui44.js +8 -0
- package/dist/native/ui5.js +70 -27
- package/dist/native/ui6.js +36 -20
- package/dist/native/ui7.js +24 -61
- package/dist/native/ui8.js +16 -18
- package/dist/native/ui9.js +16 -13
- package/dist/web/octane-client-build.json +1 -1
- package/dist/web/ui.js +40 -19
- package/dist/web/ui10.js +187 -31
- package/dist/web/ui11.js +419 -53
- package/dist/web/ui12.js +83 -15
- package/dist/web/ui13.js +107 -19
- package/dist/web/ui14.js +98 -18
- package/dist/web/ui15.js +83 -47
- package/dist/web/ui16.js +100 -93
- package/dist/web/ui17.js +36 -22
- package/dist/web/ui18.js +29 -15
- package/dist/web/ui19.js +9 -7
- package/dist/web/ui2.js +15 -103
- package/dist/web/ui20.js +114 -0
- package/dist/web/ui21.js +82 -0
- package/dist/web/ui22.js +68 -0
- package/dist/web/ui23.js +57 -0
- package/dist/web/ui24.js +16 -0
- package/dist/web/ui25.js +22 -0
- package/dist/web/ui26.js +39 -0
- package/dist/web/ui27.js +127 -0
- package/dist/web/ui28.js +112 -0
- package/dist/web/ui29.js +108 -0
- package/dist/web/ui3.js +19 -27
- package/dist/web/ui30.js +43 -0
- package/dist/web/ui31.js +42 -0
- package/dist/web/ui32.js +77 -0
- package/dist/web/ui33.js +43 -0
- package/dist/web/ui34.js +67 -0
- package/dist/web/ui35.js +9 -0
- package/dist/web/ui36.js +45 -0
- package/dist/web/ui37.js +47 -0
- package/dist/web/ui38.js +17 -0
- package/dist/web/ui39.js +100 -0
- package/dist/web/ui4.js +145 -17
- package/dist/web/ui40.js +41 -0
- package/dist/web/ui41.js +17 -0
- package/dist/web/ui42.js +9 -0
- package/dist/web/ui43.js +22 -0
- package/dist/web/ui44.js +8 -0
- package/dist/web/ui5.js +54 -52
- package/dist/web/ui6.js +43 -16
- package/dist/web/ui7.js +29 -36
- package/dist/web/ui8.js +29 -18
- package/dist/web/ui9.js +24 -16
- package/package.json +14 -3
- package/src/theme/tokens.css +166 -0
- package/types/index.d.ts +108 -1
- package/types/props.d.ts +333 -8
package/dist/web/ui16.js
CHANGED
|
@@ -1,101 +1,108 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { applyEscapeProps } from "./ui2.js";
|
|
2
|
+
import { layoutChildProps } from "./ui3.js";
|
|
3
|
+
import { __s, bag8, clone, snapshotSpread, template } from "octane";
|
|
4
|
+
import { bindSignalHostPropSources, enableSignalBindings } from "octane/internal/client";
|
|
5
|
+
//#region src/Image.web.tsrx
|
|
5
6
|
enableSignalBindings(1, true);
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
function __then$0(__props, __s, __extra) {
|
|
14
|
-
const props = __extra[2];
|
|
15
|
-
const rootRoute = __extra[3];
|
|
7
|
+
var _t$0 = /* @__PURE__ */ template("<img/>");
|
|
8
|
+
var _rm$0 = [
|
|
9
|
+
"s",
|
|
10
|
+
"h",
|
|
11
|
+
"g"
|
|
12
|
+
];
|
|
13
|
+
var Image = /* @__PURE__ */ __s(function Image(props, __s, __extra) {
|
|
16
14
|
let _b = __s.slots[0];
|
|
17
15
|
if (_b === void 0) {
|
|
18
|
-
let _m0;
|
|
16
|
+
let _m0, _m1, _m2, _m3, _m4, _m5, _m6, _m7;
|
|
19
17
|
const _root = clone(_t$0);
|
|
20
|
-
_m0 =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
18
|
+
_m0 = (e) => applyEscapeProps(e, props);
|
|
19
|
+
_m1 = props.id;
|
|
20
|
+
_m2 = props.className;
|
|
21
|
+
_m3 = snapshotSpread(layoutChildProps(props));
|
|
22
|
+
_m4 = props.src;
|
|
23
|
+
_m5 = props.alt;
|
|
24
|
+
_m6 = _root;
|
|
25
|
+
_m7 = bindSignalHostPropSources(__s, void 0, _root, [
|
|
26
|
+
[
|
|
27
|
+
false,
|
|
28
|
+
"ref",
|
|
29
|
+
_m0
|
|
30
|
+
],
|
|
31
|
+
[
|
|
32
|
+
false,
|
|
33
|
+
"id",
|
|
34
|
+
_m1
|
|
35
|
+
],
|
|
36
|
+
[
|
|
37
|
+
false,
|
|
38
|
+
"className",
|
|
39
|
+
_m2
|
|
40
|
+
],
|
|
41
|
+
[true, _m3],
|
|
42
|
+
[
|
|
43
|
+
false,
|
|
44
|
+
"src",
|
|
45
|
+
_m4
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
false,
|
|
49
|
+
"alt",
|
|
50
|
+
_m5
|
|
51
|
+
]
|
|
52
|
+
], "b:ed5f7791", false);
|
|
53
|
+
_b = bag8(__s, _root, _m0, _m1, _m2, _m3, _m4, _m5, _m6, _m7);
|
|
54
|
+
__s.refFields = _rm$0;
|
|
55
|
+
} else {
|
|
56
|
+
{
|
|
57
|
+
const _v = (e) => applyEscapeProps(e, props);
|
|
58
|
+
if (_b.a !== _v) _b.a = _v;
|
|
59
|
+
}
|
|
60
|
+
{
|
|
61
|
+
const _v = props.id;
|
|
62
|
+
if (_b.b !== _v) _b.b = _v;
|
|
63
|
+
}
|
|
64
|
+
{
|
|
65
|
+
const _v = props.className;
|
|
66
|
+
if (_b.c !== _v) _b.c = _v;
|
|
67
|
+
}
|
|
68
|
+
_b.d = snapshotSpread(layoutChildProps(props));
|
|
69
|
+
{
|
|
70
|
+
const _v = props.src;
|
|
71
|
+
if (_b.e !== _v) _b.e = _v;
|
|
72
|
+
}
|
|
73
|
+
{
|
|
74
|
+
const _v = props.alt;
|
|
75
|
+
if (_b.f !== _v) _b.f = _v;
|
|
76
76
|
}
|
|
77
|
+
_b.h = bindSignalHostPropSources(__s, _b.h, _b.g, [
|
|
78
|
+
[
|
|
79
|
+
false,
|
|
80
|
+
"ref",
|
|
81
|
+
_b.a
|
|
82
|
+
],
|
|
83
|
+
[
|
|
84
|
+
false,
|
|
85
|
+
"id",
|
|
86
|
+
_b.b
|
|
87
|
+
],
|
|
88
|
+
[
|
|
89
|
+
false,
|
|
90
|
+
"className",
|
|
91
|
+
_b.c
|
|
92
|
+
],
|
|
93
|
+
[true, _b.d],
|
|
94
|
+
[
|
|
95
|
+
false,
|
|
96
|
+
"src",
|
|
97
|
+
_b.e
|
|
98
|
+
],
|
|
99
|
+
[
|
|
100
|
+
false,
|
|
101
|
+
"alt",
|
|
102
|
+
_b.f
|
|
103
|
+
]
|
|
104
|
+
], "b:ed5f7791", false);
|
|
77
105
|
}
|
|
78
|
-
forBlock(__s, 1, _b.e, props.tabs, _key$3, __item$4, 26, [
|
|
79
|
-
active,
|
|
80
|
-
props,
|
|
81
|
-
setInternal
|
|
82
|
-
], null, _b.f, true);
|
|
83
|
-
_b.j = bindSignalChild(__s, _b.j, 2, _b.g, paneRoute && props.resolveScreen ? props.resolveScreen(paneRoute.name, paneRoute.params) : props.tabs[active]?.render(), "b:945751f6", null, void 0, void 0, void 0, true);
|
|
84
|
-
}
|
|
85
|
-
var Tabs = /* @__PURE__ */ __s(function Tabs(props, __s, __extra) {
|
|
86
|
-
const __block = __s.block;
|
|
87
|
-
const [internal, setInternal] = useState(0, _hs$ + 0);
|
|
88
|
-
const active = props.selectedIndex ?? internal;
|
|
89
|
-
const rootRoute = withSlot(_h$1, useRoute, "root");
|
|
90
|
-
const paneRoute = withSlot(_h$2, useRoute, props.tabs[active]?.stack ?? "");
|
|
91
|
-
if (__s.block.pending && !__s.block.crossRenderUpdate) return;
|
|
92
|
-
ifBlock(__s, 0, __block.parentNode, rootRoute && props.resolveScreen, __then$0, __else$2, __block.endMarker, [
|
|
93
|
-
active,
|
|
94
|
-
paneRoute,
|
|
95
|
-
props,
|
|
96
|
-
rootRoute,
|
|
97
|
-
setInternal
|
|
98
|
-
]);
|
|
99
106
|
});
|
|
100
107
|
//#endregion
|
|
101
|
-
export {
|
|
108
|
+
export { Image };
|
package/dist/web/ui17.js
CHANGED
|
@@ -1,31 +1,45 @@
|
|
|
1
|
-
import { __s, bag5, clone, delegateEvents,
|
|
2
|
-
import {
|
|
3
|
-
//#region src/
|
|
1
|
+
import { __s, bag5, clone, createElement, delegateEvents, hookSlots, queueRefAttach, queueRefDetach, setEventHandler, template, useEffect, useMemo, useRef } from "octane";
|
|
2
|
+
import { bindSignalChild, enableSignalBindings, replaceRef, setClassNameIfChanged } from "octane/internal/client";
|
|
3
|
+
//#region src/Modal.web.tsrx
|
|
4
4
|
enableSignalBindings(1, true);
|
|
5
|
-
delegateEvents(["
|
|
6
|
-
var _t$0 = /* @__PURE__ */ template("<
|
|
7
|
-
var
|
|
5
|
+
delegateEvents(["close"]);
|
|
6
|
+
var _t$0 = /* @__PURE__ */ template("<dialog></dialog>");
|
|
7
|
+
var _hs$ = /* @__PURE__ */ hookSlots(3);
|
|
8
|
+
var _rm$1 = [
|
|
9
|
+
"r",
|
|
10
|
+
"b",
|
|
11
|
+
"a"
|
|
12
|
+
];
|
|
13
|
+
var Modal = /* @__PURE__ */ __s(function Modal(props, __s, __extra) {
|
|
14
|
+
const el = useRef(null, _hs$ + 0);
|
|
15
|
+
const content = useMemo(() => props.component ? createElement(props.component, props.params ?? {}) : props.children, [props], _hs$ + 1);
|
|
16
|
+
const presentation = props.presentation;
|
|
17
|
+
const className = presentation === "sheet" ? "vx-modal vx-modal--sheet" : presentation === "dialog" ? "vx-modal vx-modal--dialog" : presentation === "fullscreen" || !presentation && props.fullscreen ? "vx-modal vx-modal--fullscreen" : "vx-modal";
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
const d = el.current;
|
|
20
|
+
if (!d) return;
|
|
21
|
+
if (props.open && !d.open) d.showModal();
|
|
22
|
+
else if (!props.open && d.open) d.close();
|
|
23
|
+
}, [props.open], _hs$ + 2);
|
|
24
|
+
if (__s.block.pending && !__s.block.crossRenderUpdate) return;
|
|
8
25
|
let _b = __s.slots[0];
|
|
9
26
|
if (_b === void 0) {
|
|
10
|
-
let
|
|
27
|
+
let _m0, _m1;
|
|
11
28
|
const _root = clone(_t$0);
|
|
12
|
-
_m1 = _root;
|
|
13
|
-
|
|
14
|
-
setEventHandler(_root, "$$
|
|
15
|
-
_b = bag5(__s, _root,
|
|
29
|
+
queueRefAttach(__s, _m1 = el, _m0 = _root);
|
|
30
|
+
(__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.b, _b.a));
|
|
31
|
+
setEventHandler(_root, "$$close", () => props.onClose?.());
|
|
32
|
+
_b = bag5(__s, _root, _m0, _m1, void 0, null, void 0);
|
|
33
|
+
__s.refFields = _rm$1;
|
|
16
34
|
} else {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
_b.a = bindSignalAttribute(__s, _b.a, _b.b, "id", props.id, "b:c6de5afb", "attr");
|
|
21
|
-
_b.c = updateFreshClassName(["vx-switch", props.className], _b.c, _b.b);
|
|
22
|
-
{
|
|
23
|
-
const _v = props.style;
|
|
24
|
-
if (_b.d !== _v) {
|
|
25
|
-
setStyle(_b.b, _v, _b.d);
|
|
26
|
-
_b.d = _v;
|
|
35
|
+
{
|
|
36
|
+
const _r = el;
|
|
37
|
+
if (_r !== _b.b) _b.b = replaceRef(__s, _b.b, _r, _b.a);
|
|
27
38
|
}
|
|
39
|
+
setEventHandler(_b.a, "$$close", () => props.onClose?.());
|
|
28
40
|
}
|
|
41
|
+
_b.c = setClassNameIfChanged(className, _b.c, _b.a);
|
|
42
|
+
_b.f = bindSignalChild(__s, _b.f, 1, _b.a, content, "b:386c9c7e", null, void 0, void 0, void 0, true);
|
|
29
43
|
});
|
|
30
44
|
//#endregion
|
|
31
|
-
export {
|
|
45
|
+
export { Modal };
|
package/dist/web/ui18.js
CHANGED
|
@@ -1,17 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import { createRoot } from "octane";
|
|
2
|
+
//#region src/modal-service.web.ts
|
|
3
|
+
/** Open a component in a document-level dialog and resolve with close(value). */
|
|
4
|
+
var openModal = (Component, params, options = {}) => new Promise((resolve) => {
|
|
5
|
+
const dialog = document.createElement("dialog");
|
|
6
|
+
dialog.className = options.presentation === "sheet" ? "vx-modal vx-modal--sheet" : options.presentation === "dialog" ? "vx-modal vx-modal--dialog" : options.presentation === "fullscreen" || !options.presentation && options.fullscreen ? "vx-modal vx-modal--fullscreen" : "vx-modal";
|
|
7
|
+
document.body.appendChild(dialog);
|
|
8
|
+
const root = createRoot(dialog);
|
|
9
|
+
let finished = false;
|
|
10
|
+
const finish = (result) => {
|
|
11
|
+
if (finished) return;
|
|
12
|
+
finished = true;
|
|
13
|
+
root.unmount();
|
|
14
|
+
dialog.remove();
|
|
15
|
+
resolve(result);
|
|
16
|
+
};
|
|
17
|
+
const close = (result) => {
|
|
18
|
+
if (finished) return;
|
|
19
|
+
if (dialog.open) dialog.close();
|
|
20
|
+
finish(result);
|
|
21
|
+
};
|
|
22
|
+
dialog.addEventListener("close", () => finish());
|
|
23
|
+
dialog.addEventListener("cancel", () => finish());
|
|
24
|
+
root.render(Component, {
|
|
25
|
+
params,
|
|
26
|
+
close
|
|
27
|
+
});
|
|
28
|
+
dialog.showModal();
|
|
15
29
|
});
|
|
16
30
|
//#endregion
|
|
17
|
-
export {
|
|
31
|
+
export { openModal };
|
package/dist/web/ui19.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
//#region src/
|
|
2
|
-
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
//#region src/cx.ts
|
|
2
|
+
/** NS `className` splits on ' ' only, and the universal driver applies the
|
|
3
|
+
* prop via `String(value)` — an array would arrive comma-joined and match
|
|
4
|
+
* no class at all. Native leaves normalize through cx() before handing
|
|
5
|
+
* className to an intrinsic. (The DOM renderer already flattens arrays,
|
|
6
|
+
* so web leaves don't need this.) */
|
|
7
|
+
function cx(...parts) {
|
|
8
|
+
return parts.flat(Infinity).filter(Boolean).join(" ");
|
|
7
9
|
}
|
|
8
10
|
//#endregion
|
|
9
|
-
export {
|
|
11
|
+
export { cx };
|
package/dist/web/ui2.js
CHANGED
|
@@ -1,105 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const el = useRef(null, _hs$ + 0);
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
const node = el.current;
|
|
16
|
-
const cb = props.onPan;
|
|
17
|
-
if (!node || !cb) return;
|
|
18
|
-
let sx = 0, sy = 0, active = false, last = 0, lx = 0, t0 = 0;
|
|
19
|
-
const emit = (e, state) => {
|
|
20
|
-
const now = performance.now();
|
|
21
|
-
const dt = Math.max(now - t0, 1) / 1e3;
|
|
22
|
-
const vx = (e.clientX - lx) / dt;
|
|
23
|
-
const vy = (e.clientY - last) / dt;
|
|
24
|
-
lx = e.clientX;
|
|
25
|
-
last = e.clientY;
|
|
26
|
-
t0 = now;
|
|
27
|
-
cb({
|
|
28
|
-
x: e.clientX - sx,
|
|
29
|
-
y: e.clientY - sy,
|
|
30
|
-
dx: e.clientX - sx,
|
|
31
|
-
dy: e.clientY - sy,
|
|
32
|
-
vx,
|
|
33
|
-
vy,
|
|
34
|
-
state,
|
|
35
|
-
target: node
|
|
36
|
-
});
|
|
37
|
-
};
|
|
38
|
-
const down = (e) => {
|
|
39
|
-
active = true;
|
|
40
|
-
sx = e.clientX;
|
|
41
|
-
sy = e.clientY;
|
|
42
|
-
t0 = performance.now();
|
|
43
|
-
lx = sx;
|
|
44
|
-
last = sy;
|
|
45
|
-
node.setPointerCapture?.(e.pointerId);
|
|
46
|
-
emit(e, "began");
|
|
47
|
-
};
|
|
48
|
-
const move = (e) => {
|
|
49
|
-
if (active) emit(e, "moved");
|
|
50
|
-
};
|
|
51
|
-
const up = (e) => {
|
|
52
|
-
if (active) {
|
|
53
|
-
active = false;
|
|
54
|
-
emit(e, "ended");
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
const cancel = (e) => {
|
|
58
|
-
if (active) {
|
|
59
|
-
active = false;
|
|
60
|
-
emit(e, "cancelled");
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
node.addEventListener("pointerdown", down);
|
|
64
|
-
node.addEventListener("pointermove", move);
|
|
65
|
-
node.addEventListener("pointerup", up);
|
|
66
|
-
node.addEventListener("pointercancel", cancel);
|
|
67
|
-
return () => {
|
|
68
|
-
node.removeEventListener("pointerdown", down);
|
|
69
|
-
node.removeEventListener("pointermove", move);
|
|
70
|
-
node.removeEventListener("pointerup", up);
|
|
71
|
-
node.removeEventListener("pointercancel", cancel);
|
|
72
|
-
};
|
|
73
|
-
}, [props.onPan], _hs$ + 1);
|
|
74
|
-
let _b = __s.slots[0];
|
|
75
|
-
if (_b === void 0) {
|
|
76
|
-
let _m1, _m2;
|
|
77
|
-
const _root = clone(_t$0);
|
|
78
|
-
_m1 = _root;
|
|
79
|
-
queueRefAttach(__s, _m2 = (e) => {
|
|
80
|
-
el.current = e;
|
|
81
|
-
props.bind?.(e);
|
|
82
|
-
}, _m1);
|
|
83
|
-
(__s.cleanups ??= []).push(() => _b && queueRefDetach(_b.c, _b.b));
|
|
84
|
-
_b = bag7(__s, _root, void 0, _m1, _m2, void 0, void 0, null, void 0);
|
|
85
|
-
__s.refFields = _rm$1;
|
|
86
|
-
} else {
|
|
87
|
-
const _r = (e) => {
|
|
88
|
-
el.current = e;
|
|
89
|
-
props.bind?.(e);
|
|
90
|
-
};
|
|
91
|
-
if (_r !== _b.c) _b.c = replaceRef(__s, _b.c, _r, _b.b);
|
|
1
|
+
//#region src/escape-props.web.ts
|
|
2
|
+
/** Apply DOM escape props after the primitive's own props. Dash-named keys
|
|
3
|
+
* are attributes; other keys use the DOM property where available. */
|
|
4
|
+
function applyEscapeProps(element, props) {
|
|
5
|
+
if (!element || !props.web) return;
|
|
6
|
+
for (const [key, value] of Object.entries(props.web)) if (key.includes("-")) {
|
|
7
|
+
if (value == null || value === false) element.removeAttribute(key);
|
|
8
|
+
else element.setAttribute(key, value === true ? "" : String(value));
|
|
9
|
+
} else if (key in element) try {
|
|
10
|
+
element[key] = value;
|
|
11
|
+
} catch {
|
|
12
|
+
element.setAttribute(key, String(value));
|
|
92
13
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
{
|
|
96
|
-
const _v = props.style;
|
|
97
|
-
if (_b.e !== _v) {
|
|
98
|
-
setStyle(_b.b, _v, _b.e);
|
|
99
|
-
_b.e = _v;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
_b.h = bindSignalChild(__s, _b.h, 1, _b.b, props.children, "b:f8e3deeb", null, void 0, void 0, void 0, true);
|
|
103
|
-
});
|
|
14
|
+
else if (value != null) element.setAttribute(key, String(value));
|
|
15
|
+
}
|
|
104
16
|
//#endregion
|
|
105
|
-
export {
|
|
17
|
+
export { applyEscapeProps };
|
package/dist/web/ui20.js
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { cx } from "./ui19.js";
|
|
2
|
+
import { bag1, bag2, bag9, child, clone, delegateEvents, drainFrag, ifBlock, markDangerouslySetInnerHTMLChildren, portal, setEventHandler, sibling, snapshotSpread, template } from "octane";
|
|
3
|
+
import { bindSignalChild, bindSignalHostPropSources, enableSignalBindings } from "octane/internal/client";
|
|
4
|
+
//#region src/Overlay.web.tsrx
|
|
5
|
+
enableSignalBindings(1, true);
|
|
6
|
+
delegateEvents(["click"]);
|
|
7
|
+
var _t$0 = /* @__PURE__ */ template("<div class=\"vx-overlay-shade\"></div>");
|
|
8
|
+
var _t$1 = /* @__PURE__ */ template("<div><!><div class=\"vx-overlay-content\"></div></div>");
|
|
9
|
+
var _t$2 = /* @__PURE__ */ template("<!>", 0, 1);
|
|
10
|
+
function __then$2(__props, __s, __extra) {
|
|
11
|
+
const props = __extra[0];
|
|
12
|
+
let _b = __s.slots[0];
|
|
13
|
+
if (_b === void 0) {
|
|
14
|
+
let _m0;
|
|
15
|
+
const _root = clone(_t$0);
|
|
16
|
+
_m0 = _root;
|
|
17
|
+
setEventHandler(_root, "$$click", props.onDismiss);
|
|
18
|
+
_b = bag1(__s, _root, _m0);
|
|
19
|
+
} else setEventHandler(_b.a, "$$click", props.onDismiss);
|
|
20
|
+
}
|
|
21
|
+
var _rm$5 = [
|
|
22
|
+
"s",
|
|
23
|
+
"e",
|
|
24
|
+
"d"
|
|
25
|
+
];
|
|
26
|
+
function __portal$1(__props, __s, __extra) {
|
|
27
|
+
const props = __extra[0];
|
|
28
|
+
let _b = __s.slots[0];
|
|
29
|
+
if (_b === void 0) {
|
|
30
|
+
let _m0, _m1, _m2, _m3, _m4, _m5, _m6;
|
|
31
|
+
const _root = clone(_t$1);
|
|
32
|
+
_m0 = cx("vx-overlay", props.className);
|
|
33
|
+
_m1 = {
|
|
34
|
+
...props.style,
|
|
35
|
+
position: "fixed",
|
|
36
|
+
inset: 0
|
|
37
|
+
};
|
|
38
|
+
_m2 = snapshotSpread(props.web);
|
|
39
|
+
_m3 = _root;
|
|
40
|
+
_m4 = bindSignalHostPropSources(__s, void 0, _root, [
|
|
41
|
+
[
|
|
42
|
+
false,
|
|
43
|
+
"className",
|
|
44
|
+
_m0
|
|
45
|
+
],
|
|
46
|
+
[
|
|
47
|
+
false,
|
|
48
|
+
"style",
|
|
49
|
+
_m1
|
|
50
|
+
],
|
|
51
|
+
[true, _m2]
|
|
52
|
+
], "b:4cb93a35", true);
|
|
53
|
+
const _el0 = sibling(child(_root), 1);
|
|
54
|
+
_m5 = _el0;
|
|
55
|
+
setEventHandler(_el0, "$$click", (event) => event.stopPropagation());
|
|
56
|
+
markDangerouslySetInnerHTMLChildren(_root);
|
|
57
|
+
_m6 = child(_root);
|
|
58
|
+
_b = bag9(__s, _root, _m0, _m1, _m2, _m3, _m4, _m5, _m6, null, void 0);
|
|
59
|
+
__s.refFields = _rm$5;
|
|
60
|
+
} else {
|
|
61
|
+
{
|
|
62
|
+
const _v = cx("vx-overlay", props.className);
|
|
63
|
+
if (_b.a !== _v) _b.a = _v;
|
|
64
|
+
}
|
|
65
|
+
{
|
|
66
|
+
const _v = {
|
|
67
|
+
...props.style,
|
|
68
|
+
position: "fixed",
|
|
69
|
+
inset: 0
|
|
70
|
+
};
|
|
71
|
+
if (_b.b !== _v) _b.b = _v;
|
|
72
|
+
}
|
|
73
|
+
_b.c = snapshotSpread(props.web);
|
|
74
|
+
_b.e = bindSignalHostPropSources(__s, _b.e, _b.d, [
|
|
75
|
+
[
|
|
76
|
+
false,
|
|
77
|
+
"className",
|
|
78
|
+
_b.a
|
|
79
|
+
],
|
|
80
|
+
[
|
|
81
|
+
false,
|
|
82
|
+
"style",
|
|
83
|
+
_b.b
|
|
84
|
+
],
|
|
85
|
+
[true, _b.c]
|
|
86
|
+
], "b:4cb93a35", true);
|
|
87
|
+
setEventHandler(_b.f, "$$click", (event) => event.stopPropagation());
|
|
88
|
+
}
|
|
89
|
+
ifBlock(__s, 1, _b.d, props.shadeCover, __then$2, null, _b.g, __extra);
|
|
90
|
+
_b.j = bindSignalChild(__s, _b.j, 2, _b.f, props.children, "b:69179142", null, void 0, void 0, void 0, true);
|
|
91
|
+
}
|
|
92
|
+
function __then$0(__props, __s, __extra) {
|
|
93
|
+
const __block = __s.block;
|
|
94
|
+
const props = __extra[0];
|
|
95
|
+
let _b = __s.slots[0];
|
|
96
|
+
if (_b === void 0) {
|
|
97
|
+
let _m0, _m1;
|
|
98
|
+
const _root = clone(_t$2);
|
|
99
|
+
_m0 = __block.parentNode;
|
|
100
|
+
_m1 = child(_root);
|
|
101
|
+
drainFrag(_root, __block.parentNode, __block.endMarker);
|
|
102
|
+
_b = bag2(__s, null, _m0, _m1);
|
|
103
|
+
}
|
|
104
|
+
portal(__s, 1, document.body, __portal$1, void 0, _b.a, [props], void 0, _b.b);
|
|
105
|
+
}
|
|
106
|
+
var Overlay = function Overlay(props, __s, __extra) {
|
|
107
|
+
const __block = __s.block;
|
|
108
|
+
{
|
|
109
|
+
const __ifCondition = props.open;
|
|
110
|
+
ifBlock(__s, 0, __block.parentNode, __ifCondition, __then$0, null, __block.endMarker, __ifCondition ? [props] : void 0);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
//#endregion
|
|
114
|
+
export { Overlay };
|
package/dist/web/ui21.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { cx } from "./ui19.js";
|
|
2
|
+
import { bag4, child, clone, createPortal, createScopedElement, createScopedValue, drainFrag, hookSlots, ifBlock, template, useEffect, useState } from "octane";
|
|
3
|
+
import { textHoleUpdate } from "octane/internal/client";
|
|
4
|
+
//#region src/Popover.web.tsrx
|
|
5
|
+
var _t$0 = /* @__PURE__ */ template("<!>", 0, 1);
|
|
6
|
+
var _hs$ = /* @__PURE__ */ hookSlots(2);
|
|
7
|
+
function __then$0(__props, __s, __extra) {
|
|
8
|
+
const __block = __s.block;
|
|
9
|
+
const position = __extra[0];
|
|
10
|
+
const props = __extra[1];
|
|
11
|
+
let _b = __s.slots[0];
|
|
12
|
+
if (_b === void 0) {
|
|
13
|
+
let _m0, _m1;
|
|
14
|
+
const _root = clone(_t$0);
|
|
15
|
+
_m0 = __block.parentNode;
|
|
16
|
+
_m1 = child(_root);
|
|
17
|
+
drainFrag(_root, __block.parentNode, __block.endMarker);
|
|
18
|
+
_b = bag4(__s, null, _m0, _m1, null, void 0);
|
|
19
|
+
}
|
|
20
|
+
{
|
|
21
|
+
const _v = createPortal(createScopedValue(() => createScopedElement("div", {
|
|
22
|
+
className: cx("vx-popover", props.className),
|
|
23
|
+
style: {
|
|
24
|
+
...props.style,
|
|
25
|
+
position: "fixed",
|
|
26
|
+
top: position.top,
|
|
27
|
+
left: position.left,
|
|
28
|
+
transform: props.placement === "top" ? "translateY(-100%)" : props.placement === "left" ? "translateX(-100%)" : void 0
|
|
29
|
+
},
|
|
30
|
+
...props.web
|
|
31
|
+
}, () => props.children)), document.body);
|
|
32
|
+
_b.c = textHoleUpdate(__s, 1, _b.a, _v, _b.c, _b.d, _b.b, true, true);
|
|
33
|
+
_b.d = _v;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
var Popover = function Popover(props, __s, __extra) {
|
|
37
|
+
const __block = __s.block;
|
|
38
|
+
const [position, setPosition] = useState(null, _hs$ + 0);
|
|
39
|
+
const anchor = props.anchor?.current ?? props.anchor;
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (!props.open || !anchor?.getBoundingClientRect) {
|
|
42
|
+
setPosition(null);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const update = () => {
|
|
46
|
+
const rect = anchor.getBoundingClientRect();
|
|
47
|
+
const gap = 8;
|
|
48
|
+
let top = rect.bottom + gap;
|
|
49
|
+
let left = rect.left;
|
|
50
|
+
if (props.placement === "top") top = rect.top - gap;
|
|
51
|
+
if (props.placement === "left") {
|
|
52
|
+
top = rect.top;
|
|
53
|
+
left = rect.left - gap;
|
|
54
|
+
}
|
|
55
|
+
if (props.placement === "right") {
|
|
56
|
+
top = rect.top;
|
|
57
|
+
left = rect.right + gap;
|
|
58
|
+
}
|
|
59
|
+
setPosition({
|
|
60
|
+
top,
|
|
61
|
+
left
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
update();
|
|
65
|
+
window.addEventListener("resize", update);
|
|
66
|
+
window.addEventListener("scroll", update, true);
|
|
67
|
+
return () => {
|
|
68
|
+
window.removeEventListener("resize", update);
|
|
69
|
+
window.removeEventListener("scroll", update, true);
|
|
70
|
+
};
|
|
71
|
+
}, [
|
|
72
|
+
props.open,
|
|
73
|
+
anchor,
|
|
74
|
+
props.placement
|
|
75
|
+
], _hs$ + 1);
|
|
76
|
+
{
|
|
77
|
+
const __ifCondition = props.open && position;
|
|
78
|
+
ifBlock(__s, 0, __block.parentNode, __ifCondition, __then$0, null, __block.endMarker, __ifCondition ? [position, props] : void 0);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
//#endregion
|
|
82
|
+
export { Popover };
|