@vizel/react 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -14
- package/dist/index.d.ts +246 -22
- package/dist/index.js +59 -51
- package/dist/index10.js +42 -40
- package/dist/index13.js +1 -1
- package/dist/index14.js +4 -4
- package/dist/index16.js +1 -1
- package/dist/index19.js +1 -1
- package/dist/index2.js +1 -1
- package/dist/index20.js +152 -8
- package/dist/index21.js +8 -10
- package/dist/index22.js +10 -78
- package/dist/index23.js +75 -112
- package/dist/index24.js +112 -32
- package/dist/index25.js +35 -5
- package/dist/index26.js +5 -68
- package/dist/index27.js +65 -88
- package/dist/index28.js +91 -4
- package/dist/index29.js +4 -36
- package/dist/index30.js +34 -51
- package/dist/index31.js +52 -11
- package/dist/index32.js +11 -24
- package/dist/index33.js +24 -29
- package/dist/index34.js +30 -4
- package/dist/index35.js +4 -33
- package/dist/index36.js +31 -48
- package/dist/index37.js +50 -37
- package/dist/index38.js +48 -7
- package/dist/index39.js +69 -50
- package/dist/index40.js +45 -11
- package/dist/index41.js +8 -15
- package/dist/index42.js +53 -3
- package/dist/index43.js +11 -20
- package/dist/index44.js +54 -2
- package/dist/index45.js +15 -9742
- package/dist/index46.js +3 -17016
- package/dist/index47.js +21 -2
- package/dist/index48.js +2 -8
- package/dist/index49.js +9742 -2
- package/dist/index50.js +17016 -2
- package/dist/index51.js +2 -222
- package/dist/index52.js +7 -224
- package/dist/index53.js +2 -2
- package/dist/index54.js +2 -2
- package/dist/index55.js +224 -0
- package/dist/index56.js +227 -0
- package/dist/index57.js +4 -0
- package/dist/index58.js +4 -0
- package/package.json +16 -26
package/dist/index30.js
CHANGED
|
@@ -1,56 +1,39 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { jsxs as n, jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { splitVizelTextByMatches as c } from "@vizel/core";
|
|
3
|
+
import { VizelIcon as r } from "./index21.js";
|
|
4
|
+
const o = (e, t) => {
|
|
5
|
+
const a = c(e, t);
|
|
6
|
+
let i = 0;
|
|
7
|
+
return a.map((s) => {
|
|
8
|
+
const h = `${i}-${s.highlight}`;
|
|
9
|
+
return i += s.text.length, s.highlight ? /* @__PURE__ */ l("mark", { className: "vizel-slash-menu-highlight", children: s.text }, h) : s.text;
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
function p({
|
|
13
|
+
item: e,
|
|
14
|
+
isSelected: t = !1,
|
|
15
|
+
onClick: a,
|
|
16
|
+
className: i,
|
|
17
|
+
titleMatches: s
|
|
11
18
|
}) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
theme: r,
|
|
29
|
-
resolvedTheme: m,
|
|
30
|
-
systemTheme: o,
|
|
31
|
-
setTheme: u
|
|
32
|
-
}),
|
|
33
|
-
[r, m, o, u]
|
|
19
|
+
return /* @__PURE__ */ n(
|
|
20
|
+
"button",
|
|
21
|
+
{
|
|
22
|
+
type: "button",
|
|
23
|
+
className: `vizel-slash-menu-item ${t ? "is-selected" : ""} ${i ?? ""}`,
|
|
24
|
+
onClick: a,
|
|
25
|
+
"data-selected": t || void 0,
|
|
26
|
+
children: [
|
|
27
|
+
/* @__PURE__ */ l("span", { className: "vizel-slash-menu-icon", children: /* @__PURE__ */ l(r, { name: e.icon }) }),
|
|
28
|
+
/* @__PURE__ */ n("div", { className: "vizel-slash-menu-text", children: [
|
|
29
|
+
/* @__PURE__ */ l("span", { className: "vizel-slash-menu-title", children: o(e.title, s) }),
|
|
30
|
+
/* @__PURE__ */ l("span", { className: "vizel-slash-menu-description", children: e.description })
|
|
31
|
+
] }),
|
|
32
|
+
e.shortcut && /* @__PURE__ */ l("span", { className: "vizel-slash-menu-shortcut", children: e.shortcut })
|
|
33
|
+
]
|
|
34
|
+
}
|
|
34
35
|
);
|
|
35
|
-
return /* @__PURE__ */ d(s.Provider, { value: p, children: t });
|
|
36
|
-
}
|
|
37
|
-
function I() {
|
|
38
|
-
const t = V(s);
|
|
39
|
-
if (!t)
|
|
40
|
-
throw new Error(
|
|
41
|
-
`[Vizel] useVizelTheme must be used within a VizelThemeProvider.
|
|
42
|
-
Example:
|
|
43
|
-
<VizelThemeProvider>
|
|
44
|
-
<YourComponent />
|
|
45
|
-
</VizelThemeProvider>`
|
|
46
|
-
);
|
|
47
|
-
return t;
|
|
48
|
-
}
|
|
49
|
-
function U() {
|
|
50
|
-
return V(s);
|
|
51
36
|
}
|
|
52
37
|
export {
|
|
53
|
-
|
|
54
|
-
I as useVizelTheme,
|
|
55
|
-
U as useVizelThemeSafe
|
|
38
|
+
p as VizelSlashMenuItem
|
|
56
39
|
};
|
package/dist/index31.js
CHANGED
|
@@ -1,15 +1,56 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
2
|
+
import { getStoredVizelTheme as v, VIZEL_DEFAULT_THEME_STORAGE_KEY as x, VIZEL_DEFAULT_THEME as S, getVizelSystemTheme as _, resolveVizelTheme as L, applyVizelTheme as P, createVizelSystemThemeListener as C, storeVizelTheme as y } from "@vizel/core";
|
|
3
|
+
import { createContext as A, useContext as V, useState as T, useMemo as h, useEffect as c, useCallback as M } from "react";
|
|
4
|
+
const s = A(null);
|
|
5
|
+
function H({
|
|
6
|
+
children: t,
|
|
7
|
+
defaultTheme: z = S,
|
|
8
|
+
storageKey: n = x,
|
|
9
|
+
targetSelector: i,
|
|
10
|
+
disableTransitionOnChange: l = !1
|
|
9
11
|
}) {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
+
const [r, E] = T(() => {
|
|
13
|
+
const e = v(n);
|
|
14
|
+
return e || z;
|
|
15
|
+
}), [o, f] = T(() => _()), m = h(() => L(r, o), [r, o]);
|
|
16
|
+
c(() => {
|
|
17
|
+
P(m, i, l);
|
|
18
|
+
}, [m, i, l]), c(() => C((a) => {
|
|
19
|
+
f(a);
|
|
20
|
+
}), []);
|
|
21
|
+
const u = M(
|
|
22
|
+
(e) => {
|
|
23
|
+
E(e), y(n, e);
|
|
24
|
+
},
|
|
25
|
+
[n]
|
|
26
|
+
), p = h(
|
|
27
|
+
() => ({
|
|
28
|
+
theme: r,
|
|
29
|
+
resolvedTheme: m,
|
|
30
|
+
systemTheme: o,
|
|
31
|
+
setTheme: u
|
|
32
|
+
}),
|
|
33
|
+
[r, m, o, u]
|
|
34
|
+
);
|
|
35
|
+
return /* @__PURE__ */ d(s.Provider, { value: p, children: t });
|
|
36
|
+
}
|
|
37
|
+
function I() {
|
|
38
|
+
const t = V(s);
|
|
39
|
+
if (!t)
|
|
40
|
+
throw new Error(
|
|
41
|
+
`[Vizel] useVizelTheme must be used within a VizelThemeProvider.
|
|
42
|
+
Example:
|
|
43
|
+
<VizelThemeProvider>
|
|
44
|
+
<YourComponent />
|
|
45
|
+
</VizelThemeProvider>`
|
|
46
|
+
);
|
|
47
|
+
return t;
|
|
48
|
+
}
|
|
49
|
+
function U() {
|
|
50
|
+
return V(s);
|
|
12
51
|
}
|
|
13
52
|
export {
|
|
14
|
-
|
|
53
|
+
H as VizelThemeProvider,
|
|
54
|
+
I as useVizelTheme,
|
|
55
|
+
U as useVizelThemeSafe
|
|
15
56
|
};
|
package/dist/index32.js
CHANGED
|
@@ -1,28 +1,15 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
action: l
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { useVizelContextSafe as n } from "./index17.js";
|
|
3
|
+
import { VizelToolbarDefault as m } from "./index34.js";
|
|
4
|
+
function s({
|
|
5
|
+
editor: t,
|
|
6
|
+
className: e,
|
|
7
|
+
showDefaultToolbar: l = !0,
|
|
8
|
+
children: i
|
|
10
9
|
}) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
{
|
|
14
|
-
type: "button",
|
|
15
|
-
onClick: a,
|
|
16
|
-
disabled: o,
|
|
17
|
-
"aria-pressed": t,
|
|
18
|
-
className: `vizel-toolbar-button ${t ? "is-active" : ""} ${n ?? ""}`,
|
|
19
|
-
title: r,
|
|
20
|
-
"data-active": t || void 0,
|
|
21
|
-
"data-action": l,
|
|
22
|
-
children: e
|
|
23
|
-
}
|
|
24
|
-
);
|
|
10
|
+
const a = n(), o = t ?? a?.editor ?? null;
|
|
11
|
+
return o ? /* @__PURE__ */ r("div", { className: `vizel-toolbar ${e ?? ""}`, role: "toolbar", "aria-label": "Formatting", children: i ?? (l && /* @__PURE__ */ r(m, { editor: o })) }) : null;
|
|
25
12
|
}
|
|
26
13
|
export {
|
|
27
|
-
|
|
14
|
+
s as VizelToolbar
|
|
28
15
|
};
|
package/dist/index33.js
CHANGED
|
@@ -1,33 +1,28 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
className: t,
|
|
11
|
-
actions: m = p
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
function u({
|
|
3
|
+
onClick: a,
|
|
4
|
+
isActive: t = !1,
|
|
5
|
+
disabled: o = !1,
|
|
6
|
+
children: e,
|
|
7
|
+
title: r,
|
|
8
|
+
className: n,
|
|
9
|
+
action: l
|
|
12
10
|
}) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
l.id
|
|
28
|
-
))
|
|
29
|
-
] }, e[0]?.group ?? i)) });
|
|
11
|
+
return /* @__PURE__ */ i(
|
|
12
|
+
"button",
|
|
13
|
+
{
|
|
14
|
+
type: "button",
|
|
15
|
+
onClick: a,
|
|
16
|
+
disabled: o,
|
|
17
|
+
"aria-pressed": t,
|
|
18
|
+
className: `vizel-toolbar-button ${t ? "is-active" : ""} ${n ?? ""}`,
|
|
19
|
+
title: r,
|
|
20
|
+
"data-active": t || void 0,
|
|
21
|
+
"data-action": l,
|
|
22
|
+
children: e
|
|
23
|
+
}
|
|
24
|
+
);
|
|
30
25
|
}
|
|
31
26
|
export {
|
|
32
|
-
|
|
27
|
+
u as VizelToolbarButton
|
|
33
28
|
};
|
package/dist/index34.js
CHANGED
|
@@ -1,7 +1,33 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { jsx as r, jsxs as a } from "react/jsx-runtime";
|
|
2
|
+
import { groupVizelToolbarActions as b, vizelDefaultToolbarActions as p } from "@vizel/core";
|
|
3
|
+
import { Fragment as f } from "react";
|
|
4
|
+
import { useVizelState as n } from "./index43.js";
|
|
5
|
+
import { VizelIcon as u } from "./index21.js";
|
|
6
|
+
import { VizelToolbarButton as z } from "./index33.js";
|
|
7
|
+
import { VizelToolbarDivider as c } from "./index35.js";
|
|
8
|
+
function $({
|
|
9
|
+
editor: o,
|
|
10
|
+
className: t,
|
|
11
|
+
actions: m = p
|
|
12
|
+
}) {
|
|
13
|
+
n(() => o);
|
|
14
|
+
const s = b(m);
|
|
15
|
+
return /* @__PURE__ */ r("div", { className: `vizel-toolbar-content ${t ?? ""}`, "data-vizel-toolbar": "", children: s.map((e, i) => /* @__PURE__ */ a(f, { children: [
|
|
16
|
+
i > 0 && /* @__PURE__ */ r(c, {}),
|
|
17
|
+
e.map((l) => /* @__PURE__ */ r(
|
|
18
|
+
z,
|
|
19
|
+
{
|
|
20
|
+
action: l.id,
|
|
21
|
+
onClick: () => l.run(o),
|
|
22
|
+
isActive: l.isActive(o),
|
|
23
|
+
disabled: !l.isEnabled(o),
|
|
24
|
+
title: l.shortcut ? `${l.label} (${l.shortcut})` : l.label,
|
|
25
|
+
children: /* @__PURE__ */ r(u, { name: l.icon })
|
|
26
|
+
},
|
|
27
|
+
l.id
|
|
28
|
+
))
|
|
29
|
+
] }, e[0]?.group ?? i)) });
|
|
4
30
|
}
|
|
5
31
|
export {
|
|
6
|
-
|
|
32
|
+
$ as VizelToolbarDefault
|
|
7
33
|
};
|
package/dist/index35.js
CHANGED
|
@@ -1,36 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import { VizelSlashMenu as d } from "./index27.js";
|
|
5
|
-
function z(l = {}) {
|
|
6
|
-
return {
|
|
7
|
-
render: () => {
|
|
8
|
-
let t = null, n = null, o = [], r = null;
|
|
9
|
-
const i = { current: null }, a = () => {
|
|
10
|
-
t && r && t.render(
|
|
11
|
-
c(d, {
|
|
12
|
-
items: o,
|
|
13
|
-
command: r,
|
|
14
|
-
...l.className !== void 0 && { className: l.className },
|
|
15
|
-
ref: i
|
|
16
|
-
})
|
|
17
|
-
);
|
|
18
|
-
};
|
|
19
|
-
return {
|
|
20
|
-
onStart: (e) => {
|
|
21
|
-
o = e.items, r = e.command, n = m(), t = s.createRoot(n.menuContainer), a(), n.updatePosition(e.clientRect);
|
|
22
|
-
},
|
|
23
|
-
onUpdate: (e) => {
|
|
24
|
-
o = e.items, r = e.command, a(), n?.updatePosition(e.clientRect);
|
|
25
|
-
},
|
|
26
|
-
onKeyDown: (e) => u(e.event) ? !0 : i.current?.onKeyDown(e) ?? !1,
|
|
27
|
-
onExit: () => {
|
|
28
|
-
t?.unmount(), n?.destroy(), t = null, n = null;
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
};
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
function e({ className: r }) {
|
|
3
|
+
return /* @__PURE__ */ i("span", { className: `vizel-toolbar-divider ${r ?? ""}` });
|
|
33
4
|
}
|
|
34
5
|
export {
|
|
35
|
-
|
|
6
|
+
e as VizelToolbarDivider
|
|
36
7
|
};
|
package/dist/index36.js
CHANGED
|
@@ -1,53 +1,36 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const n = t.enabled ?? c.enabled, d = t.debounceMs ?? c.debounceMs, l = t.storage ?? c.storage, v = t.key ?? c.key, [o, b] = A({
|
|
7
|
-
status: "saved",
|
|
8
|
-
hasUnsavedChanges: !1,
|
|
9
|
-
lastSaved: null,
|
|
10
|
-
error: null
|
|
11
|
-
}), f = h(s);
|
|
12
|
-
f.current = s;
|
|
13
|
-
const S = u((e) => {
|
|
14
|
-
b((m) => ({ ...m, ...e }));
|
|
15
|
-
}, []), a = C(
|
|
16
|
-
() => y(
|
|
17
|
-
() => f.current(),
|
|
18
|
-
{
|
|
19
|
-
enabled: n,
|
|
20
|
-
debounceMs: d,
|
|
21
|
-
storage: l,
|
|
22
|
-
key: v,
|
|
23
|
-
// Access callbacks through ref to avoid dependency on them
|
|
24
|
-
onSave: (e) => r.current.onSave?.(e),
|
|
25
|
-
onError: (e) => r.current.onError?.(e),
|
|
26
|
-
onRestore: (e) => r.current.onRestore?.(e)
|
|
27
|
-
},
|
|
28
|
-
S
|
|
29
|
-
),
|
|
30
|
-
[n, d, l, v, S]
|
|
31
|
-
);
|
|
32
|
-
R(() => {
|
|
33
|
-
const e = s();
|
|
34
|
-
if (e && n)
|
|
35
|
-
return e.on("update", a.handleUpdate), () => {
|
|
36
|
-
e.off("update", a.handleUpdate), a.cancel();
|
|
37
|
-
};
|
|
38
|
-
}, [s, n, a]);
|
|
39
|
-
const U = u(async () => {
|
|
40
|
-
await a.saveNow();
|
|
41
|
-
}, [a]), g = u(async () => await a.restore(), [a]);
|
|
1
|
+
import { handleVizelSuggestionEscape as u, createVizelSuggestionContainer as m } from "@vizel/core";
|
|
2
|
+
import { createElement as c } from "react";
|
|
3
|
+
import { c as s } from "./index46.js";
|
|
4
|
+
import { VizelSlashMenu as d } from "./index28.js";
|
|
5
|
+
function z(l = {}) {
|
|
42
6
|
return {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
7
|
+
render: () => {
|
|
8
|
+
let t = null, n = null, o = [], r = null;
|
|
9
|
+
const i = { current: null }, a = () => {
|
|
10
|
+
t && r && t.render(
|
|
11
|
+
c(d, {
|
|
12
|
+
items: o,
|
|
13
|
+
command: r,
|
|
14
|
+
...l.className !== void 0 && { className: l.className },
|
|
15
|
+
ref: i
|
|
16
|
+
})
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
onStart: (e) => {
|
|
21
|
+
o = e.items, r = e.command, n = m(), t = s.createRoot(n.menuContainer), a(), n.updatePosition(e.clientRect);
|
|
22
|
+
},
|
|
23
|
+
onUpdate: (e) => {
|
|
24
|
+
o = e.items, r = e.command, a(), n?.updatePosition(e.clientRect);
|
|
25
|
+
},
|
|
26
|
+
onKeyDown: (e) => u(e.event) ? !0 : i.current?.onKeyDown(e) ?? !1,
|
|
27
|
+
onExit: () => {
|
|
28
|
+
t?.unmount(), n?.destroy(), t = null, n = null;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
49
32
|
};
|
|
50
33
|
}
|
|
51
34
|
export {
|
|
52
|
-
|
|
35
|
+
z as createVizelSlashMenuRenderer
|
|
53
36
|
};
|
package/dist/index37.js
CHANGED
|
@@ -1,40 +1,53 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useState as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
1
|
+
import { VIZEL_DEFAULT_AUTO_SAVE_OPTIONS as c, createVizelAutoSaveHandlers as y } from "@vizel/core";
|
|
2
|
+
import { useRef as h, useState as A, useCallback as u, useMemo as C, useEffect as R } from "react";
|
|
3
|
+
function M(s, t = {}) {
|
|
4
|
+
const r = h(t);
|
|
5
|
+
r.current = t;
|
|
6
|
+
const n = t.enabled ?? c.enabled, d = t.debounceMs ?? c.debounceMs, l = t.storage ?? c.storage, v = t.key ?? c.key, [o, b] = A({
|
|
7
|
+
status: "saved",
|
|
8
|
+
hasUnsavedChanges: !1,
|
|
9
|
+
lastSaved: null,
|
|
10
|
+
error: null
|
|
11
|
+
}), f = h(s);
|
|
12
|
+
f.current = s;
|
|
13
|
+
const S = u((e) => {
|
|
14
|
+
b((m) => ({ ...m, ...e }));
|
|
15
|
+
}, []), a = C(
|
|
16
|
+
() => y(
|
|
17
|
+
() => f.current(),
|
|
18
|
+
{
|
|
19
|
+
enabled: n,
|
|
20
|
+
debounceMs: d,
|
|
21
|
+
storage: l,
|
|
22
|
+
key: v,
|
|
23
|
+
// Access callbacks through ref to avoid dependency on them
|
|
24
|
+
onSave: (e) => r.current.onSave?.(e),
|
|
25
|
+
onError: (e) => r.current.onError?.(e),
|
|
26
|
+
onRestore: (e) => r.current.onRestore?.(e)
|
|
27
|
+
},
|
|
28
|
+
S
|
|
29
|
+
),
|
|
30
|
+
[n, d, l, v, S]
|
|
31
|
+
);
|
|
32
|
+
R(() => {
|
|
33
|
+
const e = s();
|
|
34
|
+
if (e && n)
|
|
35
|
+
return e.on("update", a.handleUpdate), () => {
|
|
36
|
+
e.off("update", a.handleUpdate), a.cancel();
|
|
37
|
+
};
|
|
38
|
+
}, [s, n, a]);
|
|
39
|
+
const U = u(async () => {
|
|
40
|
+
await a.saveNow();
|
|
41
|
+
}, [a]), g = u(async () => await a.restore(), [a]);
|
|
42
|
+
return {
|
|
43
|
+
status: o.status,
|
|
44
|
+
hasUnsavedChanges: o.hasUnsavedChanges,
|
|
45
|
+
lastSaved: o.lastSaved,
|
|
46
|
+
error: o.error,
|
|
47
|
+
save: U,
|
|
48
|
+
restore: g
|
|
49
|
+
};
|
|
37
50
|
}
|
|
38
51
|
export {
|
|
39
|
-
|
|
52
|
+
M as useVizelAutoSave
|
|
40
53
|
};
|
package/dist/index38.js
CHANGED
|
@@ -1,10 +1,51 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useMemo as
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { VIZEL_DEFAULT_COLLABORATION_OPTIONS as m, createVizelCollaborationHandlers as p } from "@vizel/core";
|
|
2
|
+
import { useRef as d, useState as y, useCallback as u, useMemo as h, useEffect as E } from "react";
|
|
3
|
+
function L(t, o = { user: { name: "Anonymous", color: "#6366f1" } }) {
|
|
4
|
+
const r = d(o);
|
|
5
|
+
r.current = o;
|
|
6
|
+
const c = o.enabled ?? m.enabled, [s, i] = y({
|
|
7
|
+
isConnected: !1,
|
|
8
|
+
isSynced: !1,
|
|
9
|
+
peerCount: 0,
|
|
10
|
+
error: null
|
|
11
|
+
}), a = d(t);
|
|
12
|
+
a.current = t;
|
|
13
|
+
const l = u((n) => {
|
|
14
|
+
i((b) => ({ ...b, ...n }));
|
|
15
|
+
}, []), e = h(
|
|
16
|
+
() => p(
|
|
17
|
+
() => a.current(),
|
|
18
|
+
{
|
|
19
|
+
enabled: c,
|
|
20
|
+
user: o.user,
|
|
21
|
+
onConnect: () => r.current.onConnect?.(),
|
|
22
|
+
onDisconnect: () => r.current.onDisconnect?.(),
|
|
23
|
+
onSynced: () => r.current.onSynced?.(),
|
|
24
|
+
onError: (n) => r.current.onError?.(n),
|
|
25
|
+
onPeersChange: (n) => r.current.onPeersChange?.(n)
|
|
26
|
+
},
|
|
27
|
+
l
|
|
28
|
+
),
|
|
29
|
+
[c, o.user, l]
|
|
30
|
+
);
|
|
31
|
+
E(() => {
|
|
32
|
+
if (t() && c)
|
|
33
|
+
return e.subscribe();
|
|
34
|
+
}, [t, c, e]);
|
|
35
|
+
const C = u(() => e.connect(), [e]), f = u(() => e.disconnect(), [e]), S = u(
|
|
36
|
+
(n) => e.updateUser(n),
|
|
37
|
+
[e]
|
|
38
|
+
);
|
|
39
|
+
return {
|
|
40
|
+
isConnected: s.isConnected,
|
|
41
|
+
isSynced: s.isSynced,
|
|
42
|
+
peerCount: s.peerCount,
|
|
43
|
+
error: s.error,
|
|
44
|
+
connect: C,
|
|
45
|
+
disconnect: f,
|
|
46
|
+
updateUser: S
|
|
47
|
+
};
|
|
7
48
|
}
|
|
8
49
|
export {
|
|
9
|
-
|
|
50
|
+
L as useVizelCollaboration
|
|
10
51
|
};
|