@chaibuilder/sdk 2.2.27 → 2.2.29
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/core.cjs +4 -4
- package/dist/core.d.ts +10 -5
- package/dist/core.js +478 -450
- package/dist/web-blocks.cjs +1 -1
- package/dist/web-blocks.js +18 -24
- package/package.json +3 -4
package/dist/core.js
CHANGED
|
@@ -4,7 +4,7 @@ var H = (o, n, r) => F(o, typeof n != "symbol" ? n + "" : n, r);
|
|
|
4
4
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
5
5
|
import { useRegisteredChaiBlocks, getRegisteredChaiBlock, getDefaultBlockProps, useRegisteredFonts, getBlockFormSchemas, syncBlocksWithDefaults } from "@chaibuilder/runtime";
|
|
6
6
|
import { BoxModelIcon, PinTopIcon, PinBottomIcon, PinLeftIcon, PinRightIcon, ArrowUpIcon, PlusIcon, CopyIcon, TrashIcon, DragHandleDots2Icon, FontBoldIcon, FontItalicIcon, UnderlineIcon, StrikethroughIcon, CodeIcon, Link1Icon, ListBulletIcon, HeadingIcon, QuoteIcon, TextAlignLeftIcon, TextAlignCenterIcon, TextAlignRightIcon, LoopIcon, InfoCircledIcon, TriangleDownIcon, RowSpacingIcon, EyeOpenIcon, EyeClosedIcon, BorderAllIcon, WidthIcon, HeightIcon, ArrowRightIcon, ArrowDownIcon, ArrowLeftIcon, ArrowTopLeftIcon, ArrowTopRightIcon, ArrowBottomRightIcon, ArrowBottomLeftIcon, AlignLeftIcon, AlignCenterHorizontallyIcon, AlignRightIcon, StretchHorizontallyIcon, OverlineIcon, LetterCaseUppercaseIcon, Cross2Icon, Cross1Icon, BoxIcon, MinusIcon, CrossCircledIcon, DotsVerticalIcon, MobileIcon, LaptopIcon, DesktopIcon, CaretRightIcon, CardStackPlusIcon, CardStackIcon, ScissorsIcon, CheckIcon, ResetIcon, EraserIcon, ZoomInIcon, MixerHorizontalIcon, LightningBoltIcon } from "@radix-ui/react-icons";
|
|
7
|
-
import { get, find, filter, flatten, has, map, includes, without, compact, reverse, findIndex, isEmpty, isString, each, omit, values, pick, startsWith, isFunction,
|
|
7
|
+
import { get, find, filter, flatten, has, map, includes, without, compact, reverse, findIndex, isEmpty, isString, each, omit, values, pick, startsWith, isFunction, isObject as isObject$1, memoize, noop, first, keys, range, flattenDeep, set, forEach, unset, chunk, cloneDeep, isNull, isArray, split, reject, take, debounce, startCase, isNumber, parseInt as parseInt$1, isNaN as isNaN$1, toLower, nth, findLast, intersection, toUpper, capitalize, groupBy, uniq, flatMapDeep, some, sortBy, round } from "lodash-es";
|
|
8
8
|
import * as React from "react";
|
|
9
9
|
import React__default, { useMemo, useCallback, useEffect, useState, useRef, Component, Children, memo, createElement, createContext, useContext, Suspense, useReducer, useDebugValue } from "react";
|
|
10
10
|
import { atom, useAtom as useAtom$1, useAtomValue as useAtomValue$1, getDefaultStore as getDefaultStore$1, useSetAtom as useSetAtom$1, Provider } from "jotai";
|
|
@@ -299,12 +299,12 @@ class PubSub {
|
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
301
|
const pubsub = new PubSub(), AddBlockDropdown = ({ block: o, children: n }) => {
|
|
302
|
-
const { t: r } = useTranslation(), [a] = useBlocksStore(), { hasPermission: l } = usePermissions(), i = get(o, "_id"), c = get(o, "_parent"), d = filter(a, (
|
|
303
|
-
if (
|
|
302
|
+
const { t: r } = useTranslation(), [a] = useBlocksStore(), { hasPermission: l } = usePermissions(), i = get(o, "_id"), c = get(o, "_parent"), d = filter(a, (m) => c ? get(m, "_parent") === c : !get(m, "_parent")), p = canAddChildBlock(get(o, "_type", "")), u = findIndex(d, { _id: i }), g = (m) => {
|
|
303
|
+
if (m === "CHILD")
|
|
304
304
|
pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK, o);
|
|
305
305
|
else {
|
|
306
|
-
const
|
|
307
|
-
|
|
306
|
+
const h = { _id: c || "", position: d == null ? void 0 : d.length };
|
|
307
|
+
m === "BEFORE" ? h.position = Math.max(u, 0) : m === "AFTER" && (h.position = u + 1), pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK, h);
|
|
308
308
|
}
|
|
309
309
|
};
|
|
310
310
|
return l(PERMISSIONS.ADD_BLOCK) ? /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
@@ -339,16 +339,16 @@ function insertBlocksAtPosition(o, n, r, a) {
|
|
|
339
339
|
let i = [...o];
|
|
340
340
|
if (r) {
|
|
341
341
|
const u = o.find((g) => g._id === r);
|
|
342
|
-
if (u && u.content !== void 0 && u.content !== "" && !o.some((
|
|
343
|
-
const
|
|
342
|
+
if (u && u.content !== void 0 && u.content !== "" && !o.some((m) => m._parent === r)) {
|
|
343
|
+
const h = {
|
|
344
344
|
_id: generateUUID(),
|
|
345
345
|
_parent: r,
|
|
346
346
|
_type: "Text",
|
|
347
347
|
content: u.content
|
|
348
348
|
};
|
|
349
349
|
Object.keys(u).forEach((f) => {
|
|
350
|
-
f.startsWith("content-") && (
|
|
351
|
-
}), l.unshift(
|
|
350
|
+
f.startsWith("content-") && (h[f] = u[f]);
|
|
351
|
+
}), l.unshift(h), i = i.map((f) => {
|
|
352
352
|
if (f._id === r) {
|
|
353
353
|
const x = { ...f, content: "" };
|
|
354
354
|
return Object.keys(x).forEach((y) => {
|
|
@@ -388,13 +388,13 @@ function moveNode(o, n, r, a) {
|
|
|
388
388
|
const l = findNodeById(o, n), i = findNodeById(o, r);
|
|
389
389
|
if (!l || !i) return !1;
|
|
390
390
|
i.children || (i.model.children = []);
|
|
391
|
-
let c = (u = i == null ? void 0 : i.children) == null ? void 0 : u.findIndex((
|
|
391
|
+
let c = (u = i == null ? void 0 : i.children) == null ? void 0 : u.findIndex((m) => m.model._id === n);
|
|
392
392
|
l.drop(), c = Math.max(c, 0);
|
|
393
393
|
const p = (((g = l == null ? void 0 : l.model) == null ? void 0 : g._parent) || "root") === r && c <= a ? a - 1 : a;
|
|
394
394
|
try {
|
|
395
395
|
i.addChildAtIndex(l, p);
|
|
396
|
-
} catch (
|
|
397
|
-
return console.error("Error adding child to parent:",
|
|
396
|
+
} catch (m) {
|
|
397
|
+
return console.error("Error adding child to parent:", m), !1;
|
|
398
398
|
}
|
|
399
399
|
return !0;
|
|
400
400
|
}
|
|
@@ -435,8 +435,8 @@ function handleNewParentTextBlock(o, n, r) {
|
|
|
435
435
|
const d = o.map((u) => {
|
|
436
436
|
if (u._id === r) {
|
|
437
437
|
const g = { ...u, content: "" };
|
|
438
|
-
return Object.keys(g).forEach((
|
|
439
|
-
|
|
438
|
+
return Object.keys(g).forEach((m) => {
|
|
439
|
+
m.startsWith("content-") && (g[m] = "");
|
|
440
440
|
}), g;
|
|
441
441
|
}
|
|
442
442
|
return u;
|
|
@@ -453,7 +453,7 @@ function moveBlocksWithChildren(o, n, r, a) {
|
|
|
453
453
|
const c = r || "root", p = new TreeModel().parse({ _id: "root", children: getBlocksTree(i) });
|
|
454
454
|
if (moveNode(p, n, c, a)) {
|
|
455
455
|
let u = flattenTree(p);
|
|
456
|
-
const g = u.find((
|
|
456
|
+
const g = u.find((m) => m._id === n);
|
|
457
457
|
return g && (g._parent = c === "root" ? null : c), u.shift(), r && (u = handleNewParentTextBlock(u, l, r)), u;
|
|
458
458
|
}
|
|
459
459
|
return i;
|
|
@@ -477,22 +477,22 @@ const broadcastChannel = new BroadcastChannel("chaibuilder"), useBroadcastChanne
|
|
|
477
477
|
}, removeNestedBlocks = (o, n) => {
|
|
478
478
|
let r = [...o], a = [];
|
|
479
479
|
n.forEach((d) => {
|
|
480
|
-
const p = r.find((
|
|
480
|
+
const p = r.find((m) => m._id === d);
|
|
481
481
|
if (!p || !p._parent) return;
|
|
482
|
-
const u = p._parent, g = r.filter((
|
|
482
|
+
const u = p._parent, g = r.filter((m) => m._parent === u);
|
|
483
483
|
if (g.length === 2) {
|
|
484
|
-
const
|
|
485
|
-
if (
|
|
486
|
-
const
|
|
487
|
-
|
|
484
|
+
const m = g.find((h) => h._id !== d);
|
|
485
|
+
if (m && m._type === "Text") {
|
|
486
|
+
const h = r.find((f) => f._id === u);
|
|
487
|
+
h && "content" in h && (r = r.map((f) => {
|
|
488
488
|
if (f._id === u) {
|
|
489
|
-
const x = { ...f, content:
|
|
490
|
-
return Object.keys(
|
|
491
|
-
y.startsWith("content-") && (x[y] =
|
|
489
|
+
const x = { ...f, content: m.content };
|
|
490
|
+
return Object.keys(m).forEach((y) => {
|
|
491
|
+
y.startsWith("content-") && (x[y] = m[y]);
|
|
492
492
|
}), x;
|
|
493
493
|
}
|
|
494
494
|
return f;
|
|
495
|
-
}), a.push(
|
|
495
|
+
}), a.push(m._id));
|
|
496
496
|
}
|
|
497
497
|
}
|
|
498
498
|
});
|
|
@@ -574,30 +574,34 @@ const useBlockRepeaterDataAtom = () => useAtom$1(blockRepeaterDataAtom), useAsyn
|
|
|
574
574
|
status: "idle",
|
|
575
575
|
props: {},
|
|
576
576
|
error: void 0
|
|
577
|
-
}), c = useBuilderProp("getBlockAsyncProps", async (
|
|
577
|
+
}), c = useUpdateBlocksPropsRealtime(), d = useBuilderProp("getBlockAsyncProps", async (f) => ({})), p = useSetAtom$1(blockRepeaterDataAtom), u = JSON.stringify([o == null ? void 0 : o._id, ...values(pick(o, r ?? []))]), g = (o == null ? void 0 : o._type) === "Repeater" && startsWith(o.repeaterItems, `{{${COLLECTION_PREFIX}`), m = (o == null ? void 0 : o._type) !== "Repeater" && n === "live";
|
|
578
578
|
return useEffect(() => {
|
|
579
579
|
if (n === "mock") {
|
|
580
580
|
if (isFunction(a)) {
|
|
581
|
-
i((
|
|
582
|
-
const
|
|
583
|
-
if (!isObject(
|
|
581
|
+
i((x) => ({ ...x, status: "loading", props: {} }));
|
|
582
|
+
const f = a({ block: o });
|
|
583
|
+
if (!isObject(f))
|
|
584
584
|
throw new Error("mockDataProvider should return an object");
|
|
585
|
-
i((
|
|
585
|
+
i((x) => ({ ...x, status: "loaded", props: f }));
|
|
586
586
|
}
|
|
587
587
|
return;
|
|
588
588
|
}
|
|
589
|
-
n === "live" && (!
|
|
590
|
-
|
|
591
|
-
...
|
|
592
|
-
[o._id]: {
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
589
|
+
n === "live" && (!g && !m || (i((f) => ({ ...f, status: "loading", props: {} })), d({ block: o }).then((f = {}) => {
|
|
590
|
+
g ? (p((x) => ({
|
|
591
|
+
...x,
|
|
592
|
+
[o._id]: {
|
|
593
|
+
status: "loaded",
|
|
594
|
+
props: get(f, "items", []),
|
|
595
|
+
repeaterItems: o.repeaterItems
|
|
596
|
+
}
|
|
597
|
+
})), i((x) => ({ ...x, status: "loaded", props: { totalItems: get(f, "totalItems") } })), c([o._id], { totalItems: get(f, "totalItems") })) : i((x) => ({ ...x, status: "loaded", props: isObject(f) ? f : {} }));
|
|
598
|
+
}).catch((f) => {
|
|
599
|
+
g ? (p((x) => ({
|
|
600
|
+
...x,
|
|
601
|
+
[o._id]: { status: "error", error: f, props: [] }
|
|
602
|
+
})), i((x) => ({ ...x, status: "error", error: f, props: {} }))) : i((x) => ({ ...x, status: "error", error: f, props: {} }));
|
|
599
603
|
})));
|
|
600
|
-
}, [o == null ? void 0 : o._id,
|
|
604
|
+
}, [o == null ? void 0 : o._id, u, g, m, a, n]), {
|
|
601
605
|
$loading: get(l, "status") === "loading",
|
|
602
606
|
...o ? get(l, "props", {}) : {}
|
|
603
607
|
};
|
|
@@ -862,7 +866,7 @@ const undoRedoStateAtom = atom({
|
|
|
862
866
|
}, useAddBlock = () => {
|
|
863
867
|
const [o] = useBlocksStore(), [, n] = useSelectedBlockIds(), { addBlocks: r } = useBlocksStoreUndoableActions(), a = useCallback(
|
|
864
868
|
(i, c, d) => {
|
|
865
|
-
var
|
|
869
|
+
var h;
|
|
866
870
|
for (let f = 0; f < i.length; f++) {
|
|
867
871
|
const { _id: x } = i[f];
|
|
868
872
|
i[f]._id = generateUUID();
|
|
@@ -872,7 +876,7 @@ const undoRedoStateAtom = atom({
|
|
|
872
876
|
}
|
|
873
877
|
const p = first(i);
|
|
874
878
|
let u, g;
|
|
875
|
-
return c && (u = find(o, { _id: c }), i[0]._parent = c, g = c), !(u ? canAcceptChildBlock(u == null ? void 0 : u._type, p._type) : !0) && u && (i[0]._parent = u._parent, g = u._parent), r(i, g, d), n([(
|
|
879
|
+
return c && (u = find(o, { _id: c }), i[0]._parent = c, g = c), !(u ? canAcceptChildBlock(u == null ? void 0 : u._type, p._type) : !0) && u && (i[0]._parent = u._parent, g = u._parent), r(i, g, d), n([(h = first(i)) == null ? void 0 : h._id]), first(i);
|
|
876
880
|
},
|
|
877
881
|
[r, o, n]
|
|
878
882
|
);
|
|
@@ -889,8 +893,8 @@ const undoRedoStateAtom = atom({
|
|
|
889
893
|
...has(i, "_name") && { _name: i._name },
|
|
890
894
|
...has(i, "partialBlockId") && { partialBlockId: i.partialBlockId }
|
|
891
895
|
};
|
|
892
|
-
let
|
|
893
|
-
return c && (
|
|
896
|
+
let m, h;
|
|
897
|
+
return c && (m = find(o, { _id: c }), g._parent = c, h = c), !canAcceptChildBlock(m == null ? void 0 : m._type, g._type) && m && (g._parent = m._parent, h = m._parent), r([g], h, d), n([g._id]), g;
|
|
894
898
|
},
|
|
895
899
|
[r, a, o, n]
|
|
896
900
|
), addPredefinedBlock: a };
|
|
@@ -2330,8 +2334,8 @@ const getBlockWithChildren = (o, n) => {
|
|
|
2330
2334
|
return isEmpty(c) ? !1 : (has(l, "_parent") && isEmpty(l._parent) && delete l._parent, { ...l, ...c });
|
|
2331
2335
|
})
|
|
2332
2336
|
), addLangToPrompt = (o, n, r) => !n || r !== "content" ? o : `${o}. Generate content in ${get(LANGUAGES, n, n)} language.`, askAiProcessingAtom = atom(!1), useAskAi = () => {
|
|
2333
|
-
const [o, n] = useAtom$1(askAiProcessingAtom), [r, a] = useState(null), l = useBuilderProp("askAiCallBack", null), i = useStreamMultipleBlocksProps(), c = useUpdateMultipleBlocksProps(), [d] = useBlocksStore(), { selectedLang: p, fallbackLang: u } = useLanguages(), g = p.length ? p : u,
|
|
2334
|
-
const x = cloneDeep(f.find((y) => y._id ===
|
|
2337
|
+
const [o, n] = useAtom$1(askAiProcessingAtom), [r, a] = useState(null), l = useBuilderProp("askAiCallBack", null), i = useStreamMultipleBlocksProps(), c = useUpdateMultipleBlocksProps(), [d] = useBlocksStore(), { selectedLang: p, fallbackLang: u } = useLanguages(), g = p.length ? p : u, m = (h, f) => {
|
|
2338
|
+
const x = cloneDeep(f.find((y) => y._id === h));
|
|
2335
2339
|
for (const y in x) {
|
|
2336
2340
|
const b = x[y];
|
|
2337
2341
|
if (typeof b == "string" && startsWith(b, STYLES_KEY)) {
|
|
@@ -2344,16 +2348,16 @@ const getBlockWithChildren = (o, n) => {
|
|
|
2344
2348
|
};
|
|
2345
2349
|
return {
|
|
2346
2350
|
askAi: useCallback(
|
|
2347
|
-
async (
|
|
2351
|
+
async (h, f, x, y) => {
|
|
2348
2352
|
if (l) {
|
|
2349
2353
|
n(!0), a(null);
|
|
2350
2354
|
try {
|
|
2351
|
-
const b = p === u ? "" : p, v =
|
|
2355
|
+
const b = p === u ? "" : p, v = h === "content" ? pickOnlyAIProps(cloneDeep(getBlockWithChildren(f, d)), p) : [m(f, d)], B = await l(h, addLangToPrompt(x, g, h), v, b), { blocks: w, error: E } = B;
|
|
2352
2356
|
if (E) {
|
|
2353
2357
|
a(E);
|
|
2354
2358
|
return;
|
|
2355
2359
|
}
|
|
2356
|
-
if (
|
|
2360
|
+
if (h === "styles") {
|
|
2357
2361
|
const _ = w.map((S) => {
|
|
2358
2362
|
for (const A in S)
|
|
2359
2363
|
A !== "_id" && (S[A] = `${STYLES_KEY},${S[A]}`);
|
|
@@ -2455,17 +2459,17 @@ const getBlockWithChildren = (o, n) => {
|
|
|
2455
2459
|
r(d), a([]);
|
|
2456
2460
|
const u = {
|
|
2457
2461
|
_chai_copied_blocks: d.flatMap((g) => {
|
|
2458
|
-
const
|
|
2462
|
+
const m = getDuplicatedBlocks(o, g, null);
|
|
2459
2463
|
if (!p)
|
|
2460
|
-
return
|
|
2461
|
-
let
|
|
2462
|
-
for (const f of
|
|
2464
|
+
return m;
|
|
2465
|
+
let h = [];
|
|
2466
|
+
for (const f of m)
|
|
2463
2467
|
if (f._type === "PartialBlock" || f._type === "GlobalBlock") {
|
|
2464
2468
|
let x = l(f.partialBlockId);
|
|
2465
|
-
f._parent && (x == null ? void 0 : x.length) > 0 && (x = x.map((y) => (isEmpty(y._parent) && set(y, "_parent", f._parent), y))),
|
|
2469
|
+
f._parent && (x == null ? void 0 : x.length) > 0 && (x = x.map((y) => (isEmpty(y._parent) && set(y, "_parent", f._parent), y))), h = [...h, ...x];
|
|
2466
2470
|
} else
|
|
2467
|
-
|
|
2468
|
-
return
|
|
2471
|
+
h.push(f);
|
|
2472
|
+
return h;
|
|
2469
2473
|
})
|
|
2470
2474
|
};
|
|
2471
2475
|
if (!navigator.clipboard) {
|
|
@@ -2503,13 +2507,13 @@ const getBlockWithChildren = (o, n) => {
|
|
|
2503
2507
|
(a, l = null) => {
|
|
2504
2508
|
const i = [];
|
|
2505
2509
|
each(a, (c) => {
|
|
2506
|
-
const d = o.find((
|
|
2510
|
+
const d = o.find((h) => h._id === c);
|
|
2507
2511
|
l ? l === "root" && (l = null) : l = d._parent;
|
|
2508
2512
|
const g = filter(
|
|
2509
2513
|
o,
|
|
2510
|
-
(
|
|
2511
|
-
).indexOf(d) + 1,
|
|
2512
|
-
r(
|
|
2514
|
+
(h) => isString(l) ? h._parent === l : !h._parent
|
|
2515
|
+
).indexOf(d) + 1, m = getDuplicatedBlocks(o, c, l);
|
|
2516
|
+
r(m, l, g), i.push(get(m, "0._id", ""));
|
|
2513
2517
|
}), n(i);
|
|
2514
2518
|
},
|
|
2515
2519
|
[o, n]
|
|
@@ -2646,13 +2650,13 @@ const getBlockWithChildren = (o, n) => {
|
|
|
2646
2650
|
return map(i, (c) => {
|
|
2647
2651
|
const d = o(c), p = a;
|
|
2648
2652
|
let { classes: u, baseClasses: g } = getSplitChaiClasses(get(d, l.prop, `${STYLES_KEY},`));
|
|
2649
|
-
return each(p, (
|
|
2650
|
-
const
|
|
2653
|
+
return each(p, (m) => {
|
|
2654
|
+
const h = m.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), f = new RegExp(`(^|\\s)${h}(?=\\s|$)`, "g");
|
|
2651
2655
|
u = u.replace(f, " ").replace(/\s+/g, " ").trim();
|
|
2652
|
-
const x = first(
|
|
2653
|
-
includes(["2xl", "xl", "lg", "md", "sm"], x) && p.push(
|
|
2654
|
-
}), each(p, (
|
|
2655
|
-
const
|
|
2656
|
+
const x = first(m.split(":"));
|
|
2657
|
+
includes(["2xl", "xl", "lg", "md", "sm"], x) && p.push(m.split(":").pop().trim());
|
|
2658
|
+
}), each(p, (m) => {
|
|
2659
|
+
const h = m.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), f = new RegExp(`(^|\\s)${h}(?=\\s|$)`, "g");
|
|
2656
2660
|
g = g.replace(f, " ").replace(/\s+/g, " ").trim();
|
|
2657
2661
|
}), {
|
|
2658
2662
|
ids: [d._id],
|
|
@@ -2756,11 +2760,11 @@ const useSidebarActivePanel = () => useAtom$1(sidebarActivePanelAtom), CONTROLS
|
|
|
2756
2760
|
return "VERTICAL";
|
|
2757
2761
|
}
|
|
2758
2762
|
}, isDisabledControl = (o, n, r) => !!(o && (r === "UP" || r === "LEFT") || n && (r === "DOWN" || r === "RIGHT")), useBlockController = (o, n) => {
|
|
2759
|
-
const [r] = useBlocksStore(), { document: a } = useFrame(), { moveBlocks: l } = useBlocksStoreUndoableActions(), i = get(o, "_id"), c = get(o, "_parent"), d = filter(r, (x) => c ? get(x, "_parent") === c : !get(x, "_parent")), p = (d == null ? void 0 : d.length) <= 1, u = findIndex(d, { _id: i }), g = u <= 0,
|
|
2763
|
+
const [r] = useBlocksStore(), { document: a } = useFrame(), { moveBlocks: l } = useBlocksStoreUndoableActions(), i = get(o, "_id"), c = get(o, "_parent"), d = filter(r, (x) => c ? get(x, "_parent") === c : !get(x, "_parent")), p = (d == null ? void 0 : d.length) <= 1, u = findIndex(d, { _id: i }), g = u <= 0, m = u + 1 === (d == null ? void 0 : d.length), h = getParentBlockOrientation(c, i, a), f = useCallback(
|
|
2760
2764
|
(x) => {
|
|
2761
|
-
isDisabledControl(g,
|
|
2765
|
+
isDisabledControl(g, m, x) || p || (x === "UP" || x === "LEFT" ? l([i], c || null, u - 1) : (x === "DOWN" || x === "RIGHT") && l([i], c || null, u + 2), n());
|
|
2762
2766
|
},
|
|
2763
|
-
[g,
|
|
2767
|
+
[g, m, p, u, i, c, n]
|
|
2764
2768
|
);
|
|
2765
2769
|
return useHotkeys(
|
|
2766
2770
|
"shift+up, shift+down, shift+left, shift+right",
|
|
@@ -2770,7 +2774,7 @@ const useSidebarActivePanel = () => useAtom$1(sidebarActivePanelAtom), CONTROLS
|
|
|
2770
2774
|
},
|
|
2771
2775
|
{ document: a == null ? void 0 : a.contentDocument },
|
|
2772
2776
|
[f]
|
|
2773
|
-
), { isOnlyChild: p, isFirstBlock: g, isLastBlock:
|
|
2777
|
+
), { isOnlyChild: p, isFirstBlock: g, isLastBlock: m, moveBlock: f, orientation: h };
|
|
2774
2778
|
}, BlockController = ({ block: o, updateFloatingBar: n }) => {
|
|
2775
2779
|
const { isOnlyChild: r, isFirstBlock: a, isLastBlock: l, moveBlock: i, orientation: c } = useBlockController(
|
|
2776
2780
|
o,
|
|
@@ -2905,19 +2909,19 @@ const INLINE_EDITABLE_BLOCKS = ["Heading", "Paragraph", "Text", "Link", "Span"],
|
|
|
2905
2909
|
i([null]);
|
|
2906
2910
|
}, [r, n]), /* @__PURE__ */ jsx(BlockFloatingSelector, { block: o, selectedBlockElement: a[0] });
|
|
2907
2911
|
}, BlockFloatingSelector = ({ block: o, selectedBlockElement: n }) => {
|
|
2908
|
-
const r = useRemoveBlocks(), a = useDuplicateBlocks(), [, l] = useSelectedBlockIds(), [, i] = useHighlightBlockId(), [, c] = useSelectedStylingBlocks(), { hasPermission: d } = usePermissions(), [p] = useAtom$1(inlineEditingActiveAtom), { document: u } = useFrame(), { floatingStyles: g, refs:
|
|
2912
|
+
const r = useRemoveBlocks(), a = useDuplicateBlocks(), [, l] = useSelectedBlockIds(), [, i] = useHighlightBlockId(), [, c] = useSelectedStylingBlocks(), { hasPermission: d } = usePermissions(), [p] = useAtom$1(inlineEditingActiveAtom), { document: u } = useFrame(), { floatingStyles: g, refs: m, update: h } = useFloating({
|
|
2909
2913
|
placement: "top-start",
|
|
2910
2914
|
middleware: [shift(), flip()],
|
|
2911
2915
|
elements: { reference: n }
|
|
2912
2916
|
});
|
|
2913
|
-
useResizeObserver(n, () =>
|
|
2917
|
+
useResizeObserver(n, () => h(), n !== null), useResizeObserver(u == null ? void 0 : u.body, () => h(), (u == null ? void 0 : u.body) !== null);
|
|
2914
2918
|
const f = get(o, "_parent", null), x = isEmpty(get(o, "_name", "")) ? get(o, "_type", "") : get(o, "_name", "");
|
|
2915
2919
|
return !n || !o || p ? null : /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
|
|
2916
2920
|
"div",
|
|
2917
2921
|
{
|
|
2918
2922
|
role: "button",
|
|
2919
2923
|
tabIndex: 0,
|
|
2920
|
-
ref:
|
|
2924
|
+
ref: m.setFloating,
|
|
2921
2925
|
style: g,
|
|
2922
2926
|
onClick: (y) => {
|
|
2923
2927
|
y.stopPropagation(), y.preventDefault();
|
|
@@ -2942,7 +2946,7 @@ const INLINE_EDITABLE_BLOCKS = ["Heading", "Paragraph", "Text", "Link", "Span"],
|
|
|
2942
2946
|
/* @__PURE__ */ jsx(AddBlockDropdown, { block: o, children: /* @__PURE__ */ jsx(PlusIcon, { className: "hover:scale-105" }) }),
|
|
2943
2947
|
canDuplicateBlock(get(o, "_type", "")) && d(PERMISSIONS.ADD_BLOCK) ? /* @__PURE__ */ jsx(CopyIcon, { className: "hover:scale-105", onClick: () => a([o == null ? void 0 : o._id]) }) : null,
|
|
2944
2948
|
canDeleteBlock(get(o, "_type", "")) && d(PERMISSIONS.DELETE_BLOCK) ? /* @__PURE__ */ jsx(TrashIcon, { className: "hover:scale-105", onClick: () => r([o == null ? void 0 : o._id]) }) : null,
|
|
2945
|
-
d(PERMISSIONS.MOVE_BLOCK) && /* @__PURE__ */ jsx(BlockController, { block: o, updateFloatingBar:
|
|
2949
|
+
d(PERMISSIONS.MOVE_BLOCK) && /* @__PURE__ */ jsx(BlockController, { block: o, updateFloatingBar: h })
|
|
2946
2950
|
] })
|
|
2947
2951
|
]
|
|
2948
2952
|
}
|
|
@@ -3075,15 +3079,15 @@ H(Frame, "defaultProps", {
|
|
|
3075
3079
|
initialContent: '<!DOCTYPE html><html><head></head><body><div class="frame-root"></div></body></html>'
|
|
3076
3080
|
});
|
|
3077
3081
|
const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame, { ...o, forwardedRef: n })), useKeyEventWatcher = (o) => {
|
|
3078
|
-
const [n, r] = useSelectedBlockIds(), a = useSelectedBlock(), l = useRemoveBlocks(), i = useDuplicateBlocks(), { undo: c, redo: d } = useUndoManager(), [, p] = useCutBlockIds(), [, u] = useCopyBlocks(), { canPaste: g, pasteBlocks:
|
|
3082
|
+
const [n, r] = useSelectedBlockIds(), a = useSelectedBlock(), l = useRemoveBlocks(), i = useDuplicateBlocks(), { undo: c, redo: d } = useUndoManager(), [, p] = useCutBlockIds(), [, u] = useCopyBlocks(), { canPaste: g, pasteBlocks: m } = usePasteBlocks(), h = o ? { document: o } : {};
|
|
3079
3083
|
useHotkeys("ctrl+z,command+z", () => c(), {}, [c]), useHotkeys("ctrl+y,command+y", () => d(), {}, [d]), useHotkeys("ctrl+x,command+x", () => p(n), {}, [n, p]), useHotkeys("ctrl+c,command+c", () => u(n), {}, [n, u]), useHotkeys(
|
|
3080
3084
|
"ctrl+v,command+v",
|
|
3081
3085
|
() => {
|
|
3082
|
-
g(n[0]) &&
|
|
3086
|
+
g(n[0]) && m(n);
|
|
3083
3087
|
},
|
|
3084
|
-
{ ...
|
|
3085
|
-
[n, g,
|
|
3086
|
-
), useHotkeys("esc", () => r([]),
|
|
3088
|
+
{ ...h, preventDefault: !0 },
|
|
3089
|
+
[n, g, m]
|
|
3090
|
+
), useHotkeys("esc", () => r([]), h, [r]), useHotkeys("ctrl+d,command+d", () => i(n), { ...h, preventDefault: !0 }, [
|
|
3087
3091
|
n,
|
|
3088
3092
|
i
|
|
3089
3093
|
]), useHotkeys(
|
|
@@ -3091,7 +3095,7 @@ const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame,
|
|
|
3091
3095
|
(f) => {
|
|
3092
3096
|
f.preventDefault(), canDeleteBlock(get(a, "_type", "")) && l(n);
|
|
3093
3097
|
},
|
|
3094
|
-
|
|
3098
|
+
h,
|
|
3095
3099
|
[n, l]
|
|
3096
3100
|
);
|
|
3097
3101
|
}, KeyboardHandler = () => {
|
|
@@ -3382,7 +3386,7 @@ const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame,
|
|
|
3382
3386
|
],
|
|
3383
3387
|
onUpdate: ({ editor: u }) => a((u == null ? void 0 : u.getHTML()) || ""),
|
|
3384
3388
|
onBlur: ({ editor: u, event: g }) => {
|
|
3385
|
-
const
|
|
3389
|
+
const m = g.relatedTarget, h = i.querySelector(".ProseMirror"), f = i.querySelector(".tippy-box"), x = h == null ? void 0 : h.contains(m), y = f == null ? void 0 : f.contains(m);
|
|
3386
3390
|
if (!x && !y) {
|
|
3387
3391
|
const b = (u == null ? void 0 : u.getHTML()) || "";
|
|
3388
3392
|
r(b);
|
|
@@ -3400,10 +3404,10 @@ const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame,
|
|
|
3400
3404
|
});
|
|
3401
3405
|
}, [c]);
|
|
3402
3406
|
const d = useMemo(() => {
|
|
3403
|
-
var
|
|
3407
|
+
var m;
|
|
3404
3408
|
const u = "max-w-none shadow-none outline outline-[2px] outline-green-500 [&_*]:shadow-none";
|
|
3405
3409
|
if (!n) return u;
|
|
3406
|
-
const g = ((
|
|
3410
|
+
const g = ((m = n == null ? void 0 : n.className) == null ? void 0 : m.replace("sr-only", "")) || "";
|
|
3407
3411
|
return `${u} ${g}`;
|
|
3408
3412
|
}, [n]), p = useCallback(
|
|
3409
3413
|
(u) => {
|
|
@@ -3438,28 +3442,28 @@ const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame,
|
|
|
3438
3442
|
useEffect(() => {
|
|
3439
3443
|
if (a.current) {
|
|
3440
3444
|
a.current.innerText = n, a.current.focus();
|
|
3441
|
-
const
|
|
3442
|
-
|
|
3445
|
+
const h = c.createRange(), f = d.getSelection();
|
|
3446
|
+
h.selectNodeContents(a.current), h.collapse(!1), f == null || f.removeAllRanges(), f == null || f.addRange(h), a.current.focus();
|
|
3443
3447
|
} else
|
|
3444
3448
|
r();
|
|
3445
3449
|
}, [c, d]);
|
|
3446
3450
|
const p = useMemo(() => {
|
|
3447
3451
|
var f;
|
|
3448
|
-
const
|
|
3449
|
-
return
|
|
3452
|
+
const h = ((f = o == null ? void 0 : o.tagName) == null ? void 0 : f.toLowerCase()) || "div";
|
|
3453
|
+
return h === "button" ? "div" : h;
|
|
3450
3454
|
}, [o]), u = useCallback(
|
|
3451
|
-
(
|
|
3452
|
-
(
|
|
3455
|
+
(h) => {
|
|
3456
|
+
(h.key === "Enter" || h.key === "Escape") && i(h);
|
|
3453
3457
|
},
|
|
3454
3458
|
[i]
|
|
3455
3459
|
), g = useCallback(() => {
|
|
3456
3460
|
r();
|
|
3457
|
-
}, [r]),
|
|
3458
|
-
var
|
|
3461
|
+
}, [r]), m = useMemo(() => {
|
|
3462
|
+
var h;
|
|
3459
3463
|
return {
|
|
3460
3464
|
id: "active-inline-editing-element",
|
|
3461
3465
|
contentEditable: !0,
|
|
3462
|
-
className: `${((
|
|
3466
|
+
className: `${((h = o == null ? void 0 : o.className) == null ? void 0 : h.replace("sr-only", "")) || ""} outline outline-[2px] outline-green-500 shadow-none empty:before:content-[attr(data-placeholder)] empty:before:text-gray-400 empty:before:absolute empty:before:pointer-events-none empty:before:select-none empty:before:inset-0 empty:before:z-0 relative min-h-[1em]`,
|
|
3463
3467
|
style: cloneDeep(o == null ? void 0 : o.style) || {},
|
|
3464
3468
|
onInput: (f) => {
|
|
3465
3469
|
const x = f.target;
|
|
@@ -3474,38 +3478,38 @@ const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame,
|
|
|
3474
3478
|
ref: a,
|
|
3475
3479
|
onBlur: g,
|
|
3476
3480
|
onKeyDown: u,
|
|
3477
|
-
...
|
|
3481
|
+
...m
|
|
3478
3482
|
}) });
|
|
3479
3483
|
}
|
|
3480
3484
|
), WithBlockTextEditor = memo(
|
|
3481
3485
|
({ block: o, children: n }) => {
|
|
3482
|
-
const r = "content", { document: a } = useFrame(), [l, i] = useAtom$1(inlineEditingActiveAtom), [c, d] = useState(null), p = useRef(null), { clearHighlight: u } = useBlockHighlight(), g = useUpdateBlocksProps(), { selectedLang:
|
|
3486
|
+
const r = "content", { document: a } = useFrame(), [l, i] = useAtom$1(inlineEditingActiveAtom), [c, d] = useState(null), p = useRef(null), { clearHighlight: u } = useBlockHighlight(), g = useUpdateBlocksProps(), { selectedLang: m } = useLanguages(), [, h] = useSelectedBlockIds(), f = useRef(null), x = l, { blockContent: y, blockType: b } = useMemo(() => {
|
|
3483
3487
|
var C;
|
|
3484
3488
|
const _ = o._type;
|
|
3485
3489
|
let S = o[r];
|
|
3486
3490
|
const A = getRegisteredChaiBlock(o._type);
|
|
3487
|
-
return
|
|
3488
|
-
}, [o,
|
|
3491
|
+
return m && ((C = A == null ? void 0 : A.i18nProps) == null ? void 0 : C.includes(r)) && has(o, `${r}-${m}`) && (S = get(o, `${r}-${m}`)), { blockContent: S, blockType: _ };
|
|
3492
|
+
}, [o, m]), v = useCallback(
|
|
3489
3493
|
(_) => {
|
|
3490
3494
|
var A;
|
|
3491
3495
|
const S = _ || ((A = p.current) == null ? void 0 : A.innerText);
|
|
3492
|
-
g([x], { [r]: S }), d(null), i(null),
|
|
3496
|
+
g([x], { [r]: S }), d(null), i(null), h([]);
|
|
3493
3497
|
},
|
|
3494
|
-
[x, g, i,
|
|
3498
|
+
[x, g, i, h, m]
|
|
3495
3499
|
), B = useDebouncedCallback(
|
|
3496
3500
|
(_) => {
|
|
3497
3501
|
g([x], { [r]: _ });
|
|
3498
3502
|
},
|
|
3499
|
-
[x, o, g,
|
|
3503
|
+
[x, o, g, m],
|
|
3500
3504
|
1e3
|
|
3501
3505
|
), w = useCallback(
|
|
3502
3506
|
(_) => {
|
|
3503
3507
|
_.preventDefault(), x && (f.current = x), v(), setTimeout(() => {
|
|
3504
3508
|
const S = f.current;
|
|
3505
|
-
f.current = null,
|
|
3509
|
+
f.current = null, h([S]);
|
|
3506
3510
|
}, 100);
|
|
3507
3511
|
},
|
|
3508
|
-
[
|
|
3512
|
+
[h, x, m]
|
|
3509
3513
|
);
|
|
3510
3514
|
useEffect(() => {
|
|
3511
3515
|
var S;
|
|
@@ -3532,7 +3536,7 @@ const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame,
|
|
|
3532
3536
|
onChange: B,
|
|
3533
3537
|
onEscape: w
|
|
3534
3538
|
}
|
|
3535
|
-
)) : null, [c, x, b, y, v,
|
|
3539
|
+
)) : null, [c, x, b, y, v, m]);
|
|
3536
3540
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
3537
3541
|
E,
|
|
3538
3542
|
n
|
|
@@ -3567,12 +3571,12 @@ const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame,
|
|
|
3567
3571
|
blockAtom: n,
|
|
3568
3572
|
children: r
|
|
3569
3573
|
}) => {
|
|
3570
|
-
const [a] = useAtom$1(inlineEditingActiveAtom), [l] = useAtom$1(n), i = useMemo(() => getRegisteredChaiBlock(l._type), [l._type]), { selectedLang: c, fallbackLang: d } = useLanguages(), p = useBlockRuntimeProps(), u = usePageExternalData(), [g] = useHiddenBlockIds(), [
|
|
3571
|
-
() =>
|
|
3574
|
+
const [a] = useAtom$1(inlineEditingActiveAtom), [l] = useAtom$1(n), i = useMemo(() => getRegisteredChaiBlock(l._type), [l._type]), { selectedLang: c, fallbackLang: d } = useLanguages(), p = useBlockRuntimeProps(), u = usePageExternalData(), [g] = useHiddenBlockIds(), [m] = useAtom$1(dataBindingActiveAtom), h = get(i, "component", null), { index: f, key: x } = useContext(RepeaterContext), y = useMemo(
|
|
3575
|
+
() => m ? applyBindingToBlockProps(applyLanguage(l, c, i), u, {
|
|
3572
3576
|
index: f,
|
|
3573
3577
|
key: x
|
|
3574
3578
|
}) : applyLanguage(l, c, i),
|
|
3575
|
-
[l, c, i, u,
|
|
3579
|
+
[l, c, i, u, m, f, x]
|
|
3576
3580
|
), b = useMemo(() => getBlockTagAttributes(l), [l, getBlockTagAttributes]), v = useMemo(
|
|
3577
3581
|
() => p(l._id, getBlockRuntimeProps(l._type)),
|
|
3578
3582
|
[l._id, l._type, p, getBlockRuntimeProps]
|
|
@@ -3597,8 +3601,8 @@ const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame,
|
|
|
3597
3601
|
o
|
|
3598
3602
|
]
|
|
3599
3603
|
), w = useMemo(() => !CORE_BLOCKS.includes(l._type), [l._type]);
|
|
3600
|
-
if (isNull(
|
|
3601
|
-
let E = /* @__PURE__ */ jsx(Suspense, { children: createElement(
|
|
3604
|
+
if (isNull(h) || g.includes(l._id)) return null;
|
|
3605
|
+
let E = /* @__PURE__ */ jsx(Suspense, { children: createElement(h, {
|
|
3602
3606
|
...B,
|
|
3603
3607
|
children: r({
|
|
3604
3608
|
_id: l._id,
|
|
@@ -3630,7 +3634,7 @@ const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame,
|
|
|
3630
3634
|
);
|
|
3631
3635
|
return map(l, (c) => {
|
|
3632
3636
|
const d = a(c._id);
|
|
3633
|
-
return d ? /* @__PURE__ */ jsx(MayBeAsyncPropsWrapper, { block: c, children: (p) => /* @__PURE__ */ jsx(BlockRenderer, { blockAtom: d, asyncProps: p, children: ({ _id: u, _type: g, partialBlockId:
|
|
3637
|
+
return d ? /* @__PURE__ */ jsx(MayBeAsyncPropsWrapper, { block: c, children: (p) => /* @__PURE__ */ jsx(BlockRenderer, { blockAtom: d, asyncProps: p, children: ({ _id: u, _type: g, partialBlockId: m, repeaterItems: h, $repeaterItemsKey: f }) => g === "Repeater" ? isArray(h) && h.map((x, y) => /* @__PURE__ */ jsx(RepeaterContext.Provider, { value: { index: y, key: f }, children: /* @__PURE__ */ jsx(BlocksRenderer, { splitAtoms: r, blocks: o, parent: c._id }) }, `${u}-${y}`)) : g === "GlobalBlock" || g === "PartialBlock" ? /* @__PURE__ */ jsx(Provider, { store: builderStore, children: /* @__PURE__ */ jsx(PartialBlocksRenderer, { partialBlockId: m }) }) : i(u) ? /* @__PURE__ */ jsx(BlocksRenderer, { splitAtoms: r, blocks: o, parent: c._id }) : null }) }, c._id) : null;
|
|
3634
3638
|
});
|
|
3635
3639
|
}, PageBlocksRenderer = () => {
|
|
3636
3640
|
const [o] = useBlocksStore();
|
|
@@ -3644,11 +3648,11 @@ const ChaiFrame = React__default.forwardRef((o, n) => /* @__PURE__ */ jsx(Frame,
|
|
|
3644
3648
|
if (d < n) {
|
|
3645
3649
|
const u = parseFloat((d / n).toFixed(2).toString());
|
|
3646
3650
|
let g = {};
|
|
3647
|
-
const
|
|
3651
|
+
const m = p * u, h = d * u;
|
|
3648
3652
|
p && (g = {
|
|
3649
3653
|
// Eureka! This is the formula to calculate the height of the scaled element. Thank you ChatGPT 4
|
|
3650
|
-
height: 100 + (p -
|
|
3651
|
-
width: 100 + (d -
|
|
3654
|
+
height: 100 + (p - m) / m * 100 + "%",
|
|
3655
|
+
width: 100 + (d - h) / h * 100 + "%"
|
|
3652
3656
|
}), i({
|
|
3653
3657
|
position: "relative",
|
|
3654
3658
|
top: 0,
|
|
@@ -3697,19 +3701,19 @@ const CanvasEventsWatcher = () => {
|
|
|
3697
3701
|
}), null;
|
|
3698
3702
|
}, StaticCanvas = () => {
|
|
3699
3703
|
const [o] = useCanvasDisplayWidth(), [, n] = useHighlightBlockId(), r = useRef(null), a = useRef(null), [l, i] = useState({ width: 0, height: 0 }), c = useCanvasScale(l), [, d] = useAtom$1(canvasIframeAtom), p = useBuilderProp("loading", !1), u = useBuilderProp("htmlDir", "ltr"), g = useCallback(
|
|
3700
|
-
(
|
|
3701
|
-
i((f) => ({ ...f, width:
|
|
3704
|
+
(h) => {
|
|
3705
|
+
i((f) => ({ ...f, width: h }));
|
|
3702
3706
|
},
|
|
3703
3707
|
[i]
|
|
3704
3708
|
);
|
|
3705
3709
|
useEffect(() => {
|
|
3706
3710
|
if (!a.current) return;
|
|
3707
|
-
const { clientWidth:
|
|
3708
|
-
i({ width:
|
|
3711
|
+
const { clientWidth: h, clientHeight: f } = a.current;
|
|
3712
|
+
i({ width: h, height: f });
|
|
3709
3713
|
}, [a, o]);
|
|
3710
|
-
const
|
|
3711
|
-
let
|
|
3712
|
-
return
|
|
3714
|
+
const m = useMemo(() => {
|
|
3715
|
+
let h = IframeInitialContent;
|
|
3716
|
+
return h = h.replace("__HTML_DIR__", u), h;
|
|
3713
3717
|
}, [u]);
|
|
3714
3718
|
return /* @__PURE__ */ jsx(ResizableCanvasWrapper, { onMount: g, onResize: g, children: /* @__PURE__ */ jsx(
|
|
3715
3719
|
"div",
|
|
@@ -3725,7 +3729,7 @@ const CanvasEventsWatcher = () => {
|
|
|
3725
3729
|
id: "canvas-iframe",
|
|
3726
3730
|
style: { ...c, ...isEmpty(c) ? { width: `${o}px` } : {} },
|
|
3727
3731
|
className: "relative mx-auto box-content h-full w-full max-w-full shadow-lg transition-all duration-300 ease-linear",
|
|
3728
|
-
initialContent:
|
|
3732
|
+
initialContent: m,
|
|
3729
3733
|
children: [
|
|
3730
3734
|
/* @__PURE__ */ jsx(KeyboardHandler, {}),
|
|
3731
3735
|
/* @__PURE__ */ jsx(BlockSelectionHighlighter, {}),
|
|
@@ -3820,7 +3824,7 @@ const CanvasEventsWatcher = () => {
|
|
|
3820
3824
|
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: a("Paste SVG code to use as an icon") })
|
|
3821
3825
|
] });
|
|
3822
3826
|
}, DefaultMediaManager = ({ close: o, onSelect: n, mode: r = "image" }) => {
|
|
3823
|
-
const [a, l] = useState(""), [i, c] = useState(!1), [d, p] = useState(!1), [u, g] = useState(null),
|
|
3827
|
+
const [a, l] = useState(""), [i, c] = useState(!1), [d, p] = useState(!1), [u, g] = useState(null), m = async (f) => {
|
|
3824
3828
|
if (!f.trim()) {
|
|
3825
3829
|
p(!1), g("Please enter a URL");
|
|
3826
3830
|
return;
|
|
@@ -3832,9 +3836,9 @@ const CanvasEventsWatcher = () => {
|
|
|
3832
3836
|
} finally {
|
|
3833
3837
|
c(!1);
|
|
3834
3838
|
}
|
|
3835
|
-
}, { t:
|
|
3839
|
+
}, { t: h } = useTranslation();
|
|
3836
3840
|
return /* @__PURE__ */ jsxs("div", { className: "flex w-96 flex-col gap-4 p-4", children: [
|
|
3837
|
-
/* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold", children:
|
|
3841
|
+
/* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold", children: h(`${r.charAt(0).toUpperCase() + r.slice(1)} Manager`) }),
|
|
3838
3842
|
u && /* @__PURE__ */ jsxs(Alert, { variant: "destructive", children: [
|
|
3839
3843
|
/* @__PURE__ */ jsx(AlertCircle, { className: "h-4 w-4" }),
|
|
3840
3844
|
/* @__PURE__ */ jsx(AlertDescription, { children: u })
|
|
@@ -3843,20 +3847,20 @@ const CanvasEventsWatcher = () => {
|
|
|
3843
3847
|
/* @__PURE__ */ jsx(
|
|
3844
3848
|
Input$1,
|
|
3845
3849
|
{
|
|
3846
|
-
placeholder:
|
|
3850
|
+
placeholder: h(`Enter ${r} URL`),
|
|
3847
3851
|
value: a,
|
|
3848
3852
|
onChange: (f) => l(f.target.value),
|
|
3849
|
-
onKeyUp: () =>
|
|
3853
|
+
onKeyUp: () => m(a)
|
|
3850
3854
|
}
|
|
3851
3855
|
),
|
|
3852
3856
|
/* @__PURE__ */ jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
3853
|
-
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: o, children:
|
|
3857
|
+
/* @__PURE__ */ jsx(Button, { variant: "outline", onClick: o, children: h("Cancel") }),
|
|
3854
3858
|
/* @__PURE__ */ jsx(
|
|
3855
3859
|
Button,
|
|
3856
3860
|
{
|
|
3857
3861
|
onClick: () => n({ id: "dam-id", url: a, width: 600, height: 400, description: "This is image description" }),
|
|
3858
3862
|
disabled: !d || i,
|
|
3859
|
-
children:
|
|
3863
|
+
children: h("Insert")
|
|
3860
3864
|
}
|
|
3861
3865
|
)
|
|
3862
3866
|
] })
|
|
@@ -3883,16 +3887,16 @@ const CanvasEventsWatcher = () => {
|
|
|
3883
3887
|
MediaManagerModal.displayName = "MediaManagerModal";
|
|
3884
3888
|
const ImagePickerField = ({ value: o, onChange: n, id: r, onBlur: a }) => {
|
|
3885
3889
|
const { t: l } = useTranslation(), i = useSelectedBlock(), c = useUpdateBlocksProps(), d = (g) => {
|
|
3886
|
-
const
|
|
3887
|
-
if (
|
|
3888
|
-
n(
|
|
3889
|
-
const
|
|
3890
|
+
const m = isArray(g) ? first(g) : g;
|
|
3891
|
+
if (m) {
|
|
3892
|
+
n(m == null ? void 0 : m.url);
|
|
3893
|
+
const h = m == null ? void 0 : m.width, f = m == null ? void 0 : m.height;
|
|
3890
3894
|
if (i != null && i._id) {
|
|
3891
3895
|
const x = {
|
|
3892
|
-
...
|
|
3896
|
+
...h && { width: h },
|
|
3893
3897
|
...f && { height: f },
|
|
3894
|
-
...
|
|
3895
|
-
...
|
|
3898
|
+
...m.description && { alt: m.description },
|
|
3899
|
+
...m.id && { assetId: m.id }
|
|
3896
3900
|
};
|
|
3897
3901
|
if (isEmpty(x)) return;
|
|
3898
3902
|
c([i._id], x);
|
|
@@ -3937,18 +3941,18 @@ const ImagePickerField = ({ value: o, onChange: n, id: r, onBlur: a }) => {
|
|
|
3937
3941
|
] })
|
|
3938
3942
|
] });
|
|
3939
3943
|
}, PathDropdown = ({ data: o, onSelect: n, dataType: r }) => {
|
|
3940
|
-
const [a, l] = React__default.useState([]), [i, c] = React__default.useState(o), d = (
|
|
3941
|
-
(
|
|
3942
|
-
const
|
|
3943
|
-
|
|
3944
|
+
const [a, l] = React__default.useState([]), [i, c] = React__default.useState(o), d = (m) => Array.isArray(m) ? "array" : typeof m == "object" && m !== null ? "object" : "value", p = React__default.useCallback(
|
|
3945
|
+
(m) => {
|
|
3946
|
+
const h = (f) => r === "value" ? f === "value" || f === "object" : r === "array" ? f === "array" : f === r;
|
|
3947
|
+
m.type === "object" ? (l((f) => [...f, m.key]), c(m.value)) : h(m.type) && n([...a, m.key].join("."), r);
|
|
3944
3948
|
},
|
|
3945
3949
|
[a, n, r]
|
|
3946
3950
|
), u = React__default.useCallback(() => {
|
|
3947
3951
|
if (a.length > 0) {
|
|
3948
|
-
const
|
|
3949
|
-
l(
|
|
3952
|
+
const m = a.slice(0, -1);
|
|
3953
|
+
l(m), c(m.reduce((h, f) => h[f], o));
|
|
3950
3954
|
}
|
|
3951
|
-
}, [a, o]), g = React__default.useMemo(() => i ? Object.entries(i).map(([
|
|
3955
|
+
}, [a, o]), g = React__default.useMemo(() => i ? Object.entries(i).map(([m, h]) => ({ key: m, value: h, type: d(h) })).filter((m) => !startsWith(m.key, REPEATER_PREFIX) && m.key.includes("/") ? !1 : r === "value" ? m.type === "value" || m.type === "object" : r === "array" ? m.type === "array" || m.type === "object" : r === "object" ? m.type === "object" : !0) : [], [i, r]);
|
|
3952
3956
|
return /* @__PURE__ */ jsxs(Command, { className: "fields-command", children: [
|
|
3953
3957
|
/* @__PURE__ */ jsx(CommandInput, { className: "border-none", placeholder: "Search..." }),
|
|
3954
3958
|
/* @__PURE__ */ jsxs(CommandList, { children: [
|
|
@@ -3958,36 +3962,36 @@ const ImagePickerField = ({ value: o, onChange: n, id: r, onBlur: a }) => {
|
|
|
3958
3962
|
/* @__PURE__ */ jsx(ChevronLeft, { className: "mr-2 h-4 w-4" }),
|
|
3959
3963
|
"Back"
|
|
3960
3964
|
] }),
|
|
3961
|
-
g.map((
|
|
3965
|
+
g.map((m) => /* @__PURE__ */ jsxs(
|
|
3962
3966
|
CommandItem,
|
|
3963
3967
|
{
|
|
3964
|
-
value:
|
|
3968
|
+
value: m.key,
|
|
3965
3969
|
disabled: !1,
|
|
3966
|
-
onSelect: () => p(
|
|
3970
|
+
onSelect: () => p(m),
|
|
3967
3971
|
className: "flex items-center justify-between",
|
|
3968
3972
|
children: [
|
|
3969
3973
|
/* @__PURE__ */ jsxs("span", { className: "flex items-center gap-x-2", children: [
|
|
3970
|
-
startsWith(
|
|
3971
|
-
startsWith(
|
|
3974
|
+
startsWith(m.key, REPEATER_PREFIX) ? /* @__PURE__ */ jsx(LoopIcon, {}) : startsWith(m.key, COLLECTION_PREFIX) ? /* @__PURE__ */ jsx(DatabaseIcon, {}) : null,
|
|
3975
|
+
startsWith(m.key, REPEATER_PREFIX) ? "Repeater Data" : startsWith(m.key, COLLECTION_PREFIX) ? m.key.replace(COLLECTION_PREFIX, "") : m.key
|
|
3972
3976
|
] }),
|
|
3973
3977
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
3974
|
-
r === "object" &&
|
|
3978
|
+
r === "object" && m.type === "object" && /* @__PURE__ */ jsx(
|
|
3975
3979
|
Button,
|
|
3976
3980
|
{
|
|
3977
3981
|
size: "sm",
|
|
3978
3982
|
variant: "ghost",
|
|
3979
3983
|
className: "h-6 px-2 hover:bg-primary hover:text-primary-foreground",
|
|
3980
|
-
onClick: (
|
|
3981
|
-
|
|
3984
|
+
onClick: (h) => {
|
|
3985
|
+
h.stopPropagation(), n([...a, m.key].join("."), r);
|
|
3982
3986
|
},
|
|
3983
3987
|
children: "Select"
|
|
3984
3988
|
}
|
|
3985
3989
|
),
|
|
3986
|
-
|
|
3990
|
+
m.type === "object" && /* @__PURE__ */ jsx("div", { className: "cursor-pointer rounded p-1 hover:bg-muted", children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-4 w-4 opacity-50" }) })
|
|
3987
3991
|
] })
|
|
3988
3992
|
]
|
|
3989
3993
|
},
|
|
3990
|
-
|
|
3994
|
+
m.key
|
|
3991
3995
|
))
|
|
3992
3996
|
] })
|
|
3993
3997
|
] })
|
|
@@ -4039,18 +4043,18 @@ const DataBindingSelector = ({
|
|
|
4039
4043
|
}) => {
|
|
4040
4044
|
const l = usePageExternalData(), i = useSelectedBlockHierarchy(), c = useSelectedBlock(), d = useMemo(() => {
|
|
4041
4045
|
if (i.length === 1) return "";
|
|
4042
|
-
const g = i.find((f) => f._type === "Repeater"),
|
|
4043
|
-
return `${REPEATER_PREFIX}${startsWith(
|
|
4046
|
+
const g = i.find((f) => f._type === "Repeater"), h = get(g, "repeaterItems", "").replace(/\{\{(.*)\}\}/g, "$1");
|
|
4047
|
+
return `${REPEATER_PREFIX}${startsWith(h, COLLECTION_PREFIX) ? `${h}/${g._id}` : h}`;
|
|
4044
4048
|
}, [i]), p = useMemo(() => first(get(l, d.replace(REPEATER_PREFIX, ""), [])), [d, l]), u = useCallback(
|
|
4045
|
-
(g,
|
|
4046
|
-
if (g = isEmpty(d) ? g : g.replace(`${d}`, "$index"),
|
|
4049
|
+
(g, m) => {
|
|
4050
|
+
if (g = isEmpty(d) ? g : g.replace(`${d}`, "$index"), m === "array" || m === "object") {
|
|
4047
4051
|
n(`{{${g}}}`, {}, r);
|
|
4048
4052
|
return;
|
|
4049
4053
|
}
|
|
4050
|
-
const
|
|
4054
|
+
const h = (b) => /[.,!?;:]/.test(b), f = (b, v, B) => {
|
|
4051
4055
|
let w = "", E = "";
|
|
4052
4056
|
const _ = v > 0 ? b[v - 1] : "", S = v < b.length ? b[v] : "";
|
|
4053
|
-
return v > 0 && (_ === "." || !
|
|
4057
|
+
return v > 0 && (_ === "." || !h(_) && _ !== " ") && (w = " "), v < b.length && !h(S) && S !== " " && (E = " "), {
|
|
4054
4058
|
text: w + B + E,
|
|
4055
4059
|
prefixLength: w.length,
|
|
4056
4060
|
suffixLength: E.length
|
|
@@ -4069,9 +4073,9 @@ const DataBindingSelector = ({
|
|
|
4069
4073
|
else {
|
|
4070
4074
|
const { state: _ } = b, S = _.selection.from, A = _.doc.textBetween(Math.max(0, S - 1), S), N = _.doc.textBetween(S, Math.min(S + 1, _.doc.content.size));
|
|
4071
4075
|
let C = "";
|
|
4072
|
-
S > 0 && A !== " " && !
|
|
4076
|
+
S > 0 && A !== " " && !h(A) && (C = " ");
|
|
4073
4077
|
let k = "";
|
|
4074
|
-
N && N !== " " && !
|
|
4078
|
+
N && N !== " " && !h(N) && (k = " "), b.chain().insertContent(C + v + k).run();
|
|
4075
4079
|
}
|
|
4076
4080
|
setTimeout(() => n(b.getHTML(), {}, r), 100);
|
|
4077
4081
|
return;
|
|
@@ -4106,13 +4110,13 @@ const DataBindingSelector = ({
|
|
|
4106
4110
|
onChange: r
|
|
4107
4111
|
}) => {
|
|
4108
4112
|
var N;
|
|
4109
|
-
const { t: a } = useTranslation(), l = useBuilderProp("searchPageTypeItems", (C, k) => []), [i, c] = useState(!1), [d, p] = useState(!1), [u, g] = useState("page"), [
|
|
4113
|
+
const { t: a } = useTranslation(), l = useBuilderProp("searchPageTypeItems", (C, k) => []), [i, c] = useState(!1), [d, p] = useState(!1), [u, g] = useState("page"), [m, h] = useState(""), [f, x] = useState([]), [y, b] = useState(-1), v = useRef(null), B = (N = n == null ? void 0 : n.find((C) => C.key === u)) == null ? void 0 : N.name;
|
|
4110
4114
|
useEffect(() => {
|
|
4111
|
-
if (
|
|
4115
|
+
if (h(""), x([]), b(-1), p(!1), !o || i || !startsWith(o, "pageType:")) return;
|
|
4112
4116
|
const C = split(o, ":"), k = get(C, 1, "page") || "page";
|
|
4113
4117
|
g(k), (async () => {
|
|
4114
4118
|
const j = await l(k, [get(C, 2, "page")]);
|
|
4115
|
-
j && Array.isArray(j) &&
|
|
4119
|
+
j && Array.isArray(j) && h(get(j, [0, "name"], ""));
|
|
4116
4120
|
})();
|
|
4117
4121
|
}, [o]);
|
|
4118
4122
|
const w = useDebouncedCallback(
|
|
@@ -4129,7 +4133,7 @@ const DataBindingSelector = ({
|
|
|
4129
4133
|
300
|
|
4130
4134
|
), E = (C) => {
|
|
4131
4135
|
const k = ["pageType", u, C.id];
|
|
4132
|
-
k[1] && (r(k.join(":")),
|
|
4136
|
+
k[1] && (r(k.join(":")), h(C.name), p(!1), x([]), b(-1));
|
|
4133
4137
|
}, _ = (C) => {
|
|
4134
4138
|
switch (C.key) {
|
|
4135
4139
|
case "ArrowDown":
|
|
@@ -4154,9 +4158,9 @@ const DataBindingSelector = ({
|
|
|
4154
4158
|
}
|
|
4155
4159
|
}, [y]);
|
|
4156
4160
|
const S = () => {
|
|
4157
|
-
|
|
4161
|
+
h(""), x([]), b(-1), p(!1), r("");
|
|
4158
4162
|
}, A = (C) => {
|
|
4159
|
-
|
|
4163
|
+
h(C), p(!isEmpty(C)), c(!0), w(C);
|
|
4160
4164
|
};
|
|
4161
4165
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
4162
4166
|
/* @__PURE__ */ jsx("select", { name: "pageType", value: u, onChange: (C) => g(C.target.value), children: map(n, (C) => /* @__PURE__ */ jsx("option", { value: C.key, children: C.name }, C.key)) }),
|
|
@@ -4165,14 +4169,14 @@ const DataBindingSelector = ({
|
|
|
4165
4169
|
"input",
|
|
4166
4170
|
{
|
|
4167
4171
|
type: "text",
|
|
4168
|
-
value:
|
|
4172
|
+
value: m,
|
|
4169
4173
|
onChange: (C) => A(C.target.value),
|
|
4170
4174
|
onKeyDown: _,
|
|
4171
4175
|
placeholder: a(`Search ${B ?? ""}`),
|
|
4172
4176
|
className: "w-full rounded-md border border-gray-300 p-2 pr-16"
|
|
4173
4177
|
}
|
|
4174
4178
|
),
|
|
4175
|
-
/* @__PURE__ */ jsx("div", { className: "absolute bottom-2 right-2 top-3 flex items-center gap-1.5", children:
|
|
4179
|
+
/* @__PURE__ */ jsx("div", { className: "absolute bottom-2 right-2 top-3 flex items-center gap-1.5", children: m && /* @__PURE__ */ jsx("button", { onClick: S, className: "text-gray-400 hover:text-gray-600", title: a("Clear search"), children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }) }) })
|
|
4176
4180
|
] }),
|
|
4177
4181
|
(i || !isEmpty(f) || d && isEmpty(f)) && /* @__PURE__ */ jsx("div", { className: "absolute z-40 mt-2 max-h-40 w-full max-w-[250px] overflow-y-auto rounded-md border border-border bg-background shadow-lg", children: i ? /* @__PURE__ */ jsxs("div", { className: "space-y-1 p-2", children: [
|
|
4178
4182
|
/* @__PURE__ */ jsx("div", { className: "h-6 w-full animate-pulse rounded bg-gray-200" }),
|
|
@@ -4180,7 +4184,7 @@ const DataBindingSelector = ({
|
|
|
4180
4184
|
] }) : d && isEmpty(f) ? /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center p-4 text-sm text-gray-500", children: [
|
|
4181
4185
|
a("No results found for"),
|
|
4182
4186
|
' "',
|
|
4183
|
-
|
|
4187
|
+
m,
|
|
4184
4188
|
'"'
|
|
4185
4189
|
] }) : /* @__PURE__ */ jsx("ul", { ref: v, children: map(f == null ? void 0 : f.slice(0, 20), (C, k) => /* @__PURE__ */ jsxs(
|
|
4186
4190
|
"li",
|
|
@@ -4438,16 +4442,16 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4438
4442
|
const c = useRef(null), d = useRef(a || ""), p = usePageExternalData();
|
|
4439
4443
|
useEffect(() => {
|
|
4440
4444
|
if (o) {
|
|
4441
|
-
const
|
|
4442
|
-
return
|
|
4445
|
+
const m = document.createElement("style");
|
|
4446
|
+
return m.id = "rte-modal-styles", m.innerHTML = `
|
|
4443
4447
|
/* Ensure the NestedPathSelector popover appears above the dialog */
|
|
4444
4448
|
.rte-path-selector + [data-radix-popper-content-wrapper],
|
|
4445
4449
|
[data-radix-popper-content-wrapper] {
|
|
4446
4450
|
z-index: 9999 !important;
|
|
4447
4451
|
}
|
|
4448
|
-
`, document.head.appendChild(
|
|
4449
|
-
const
|
|
4450
|
-
|
|
4452
|
+
`, document.head.appendChild(m), () => {
|
|
4453
|
+
const h = document.getElementById("rte-modal-styles");
|
|
4454
|
+
h && h.remove();
|
|
4451
4455
|
};
|
|
4452
4456
|
}
|
|
4453
4457
|
}, [o]);
|
|
@@ -4472,13 +4476,13 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4472
4476
|
})
|
|
4473
4477
|
],
|
|
4474
4478
|
content: a || "",
|
|
4475
|
-
onUpdate: ({ editor:
|
|
4476
|
-
const
|
|
4477
|
-
l(
|
|
4479
|
+
onUpdate: ({ editor: m }) => {
|
|
4480
|
+
const h = m.getHTML();
|
|
4481
|
+
l(h);
|
|
4478
4482
|
},
|
|
4479
|
-
onBlur: ({ editor:
|
|
4480
|
-
const
|
|
4481
|
-
i(r,
|
|
4483
|
+
onBlur: ({ editor: m }) => {
|
|
4484
|
+
const h = m.getHTML();
|
|
4485
|
+
i(r, h);
|
|
4482
4486
|
},
|
|
4483
4487
|
editorProps: {
|
|
4484
4488
|
attributes: {
|
|
@@ -4493,22 +4497,22 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4493
4497
|
}, [o, u]), useEffect(() => {
|
|
4494
4498
|
c.current && u && (c.current.__chaiRTE = u);
|
|
4495
4499
|
}, [u, o]);
|
|
4496
|
-
const g = (
|
|
4500
|
+
const g = (m) => {
|
|
4497
4501
|
if (!u) return;
|
|
4498
|
-
const
|
|
4502
|
+
const h = `{{${m}}}`;
|
|
4499
4503
|
u.commands.focus();
|
|
4500
4504
|
const { from: f, to: x } = u.state.selection;
|
|
4501
4505
|
if (f !== x)
|
|
4502
|
-
u.chain().deleteSelection().insertContent(
|
|
4506
|
+
u.chain().deleteSelection().insertContent(h).run();
|
|
4503
4507
|
else {
|
|
4504
4508
|
const { state: b } = u, v = b.selection.from, B = b.doc.textBetween(Math.max(0, v - 1), v), w = b.doc.textBetween(v, Math.min(v + 1, b.doc.content.size));
|
|
4505
4509
|
let E = "";
|
|
4506
4510
|
v > 0 && B !== " " && !/[.,!?;:]/.test(B) && (E = " ");
|
|
4507
4511
|
let _ = "";
|
|
4508
|
-
w && w !== " " && !/[.,!?;:]/.test(w) && (_ = " "), u.chain().insertContent(E +
|
|
4512
|
+
w && w !== " " && !/[.,!?;:]/.test(w) && (_ = " "), u.chain().insertContent(E + h + _).run();
|
|
4509
4513
|
}
|
|
4510
4514
|
};
|
|
4511
|
-
return /* @__PURE__ */ jsx(Dialog, { open: o, onOpenChange: (
|
|
4515
|
+
return /* @__PURE__ */ jsx(Dialog, { open: o, onOpenChange: (m) => !m && n(), children: /* @__PURE__ */ jsxs(DialogContent, { className: "max-h-[90vh] overflow-y-auto sm:max-w-[800px]", children: [
|
|
4512
4516
|
/* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsxs(DialogTitle, { className: "flex items-center justify-between pr-8", children: [
|
|
4513
4517
|
/* @__PURE__ */ jsx("span", { children: "Rich Text Editor" }),
|
|
4514
4518
|
Object.keys(p).length > 0 && /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
|
|
@@ -4563,9 +4567,9 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4563
4567
|
}, [g]), useEffect(() => {
|
|
4564
4568
|
u(r || "");
|
|
4565
4569
|
}, [r]);
|
|
4566
|
-
const
|
|
4570
|
+
const m = (f) => {
|
|
4567
4571
|
a(f);
|
|
4568
|
-
},
|
|
4572
|
+
}, h = () => {
|
|
4569
4573
|
d(!1), g && g.commands.setContent(p);
|
|
4570
4574
|
};
|
|
4571
4575
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -4577,10 +4581,10 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4577
4581
|
RTEModal,
|
|
4578
4582
|
{
|
|
4579
4583
|
isOpen: c,
|
|
4580
|
-
onClose:
|
|
4584
|
+
onClose: h,
|
|
4581
4585
|
id: o,
|
|
4582
4586
|
value: p,
|
|
4583
|
-
onChange:
|
|
4587
|
+
onChange: m,
|
|
4584
4588
|
onBlur: l
|
|
4585
4589
|
}
|
|
4586
4590
|
)
|
|
@@ -4596,14 +4600,14 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4596
4600
|
}, [a]), useEffect(() => {
|
|
4597
4601
|
u != null && u.length && !find(u, { _id: o == null ? void 0 : o.currentSlide }) && n({ ...o, currentSlide: get(u, "0._id") });
|
|
4598
4602
|
}, [o, u]);
|
|
4599
|
-
const
|
|
4603
|
+
const m = () => {
|
|
4600
4604
|
const x = findIndex(u, { _id: g });
|
|
4601
4605
|
if (x > -1) {
|
|
4602
4606
|
const y = (x + 1) % u.length, b = get(u, [y, "_id"]);
|
|
4603
4607
|
if (!b) return;
|
|
4604
4608
|
n({ ...o, currentSlide: b }), c([b]);
|
|
4605
4609
|
}
|
|
4606
|
-
},
|
|
4610
|
+
}, h = () => {
|
|
4607
4611
|
const x = findIndex(u, { _id: g });
|
|
4608
4612
|
if (x > -1) {
|
|
4609
4613
|
const y = (x - 1 + u.length) % u.length, b = get(u, [y, "_id"]);
|
|
@@ -4619,7 +4623,7 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4619
4623
|
};
|
|
4620
4624
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-1.5 px-2", children: [
|
|
4621
4625
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-x-2 pb-2 text-[12px]", children: [
|
|
4622
|
-
/* @__PURE__ */ jsx("button", { onClick:
|
|
4626
|
+
/* @__PURE__ */ jsx("button", { onClick: h, className: "rounded bg-gray-200 p-1.5 hover:opacity-80", children: /* @__PURE__ */ jsx(ChevronLeft, { className: "h-3 w-3 stroke-[3]" }) }),
|
|
4623
4627
|
/* @__PURE__ */ jsx("div", { className: "whitespace-nowrap text-center text-[10px] text-slate-500", children: g ? /* @__PURE__ */ jsxs("span", { className: "", children: [
|
|
4624
4628
|
/* @__PURE__ */ jsxs("b", { className: "text-[12px]", children: [
|
|
4625
4629
|
" ",
|
|
@@ -4628,7 +4632,7 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4628
4632
|
"/",
|
|
4629
4633
|
u.length
|
|
4630
4634
|
] }) : "-" }),
|
|
4631
|
-
/* @__PURE__ */ jsx("button", { onClick:
|
|
4635
|
+
/* @__PURE__ */ jsx("button", { onClick: m, className: "rounded bg-gray-200 p-1.5 hover:opacity-80", children: /* @__PURE__ */ jsx(ChevronRight, { className: "h-3 w-3 stroke-[3]" }) }),
|
|
4632
4636
|
/* @__PURE__ */ jsxs(
|
|
4633
4637
|
"button",
|
|
4634
4638
|
{
|
|
@@ -4706,7 +4710,7 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4706
4710
|
const r = get(o, "srcsets", []) || [], a = (c, d) => {
|
|
4707
4711
|
const p = c.target.name, u = c.target.value;
|
|
4708
4712
|
n({
|
|
4709
|
-
srcsets: map(r, (g,
|
|
4713
|
+
srcsets: map(r, (g, m) => m === d ? { ...g, [p]: u } : g)
|
|
4710
4714
|
});
|
|
4711
4715
|
}, l = () => {
|
|
4712
4716
|
n({ srcsets: [...r, {}] });
|
|
@@ -4801,11 +4805,11 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4801
4805
|
required: p,
|
|
4802
4806
|
schema: u,
|
|
4803
4807
|
formData: g,
|
|
4804
|
-
onChange:
|
|
4808
|
+
onChange: m
|
|
4805
4809
|
}) => {
|
|
4806
|
-
const { selectedLang:
|
|
4807
|
-
() => isEmpty(x) ? "" : isEmpty(
|
|
4808
|
-
[x,
|
|
4810
|
+
const { selectedLang: h, fallbackLang: f, languages: x } = useLanguages(), y = useMemo(
|
|
4811
|
+
() => isEmpty(x) ? "" : isEmpty(h) ? f : h,
|
|
4812
|
+
[x, h, f]
|
|
4809
4813
|
), b = useMemo(() => get(LANGUAGES, y, y), [y]), v = usePageExternalData(), B = useSelectedBlock(), w = useRegisteredChaiBlocks(), E = useMemo(
|
|
4810
4814
|
() => get(w, [B == null ? void 0 : B._type, "i18nProps"], []),
|
|
4811
4815
|
[w, B == null ? void 0 : B._type]
|
|
@@ -4856,7 +4860,7 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4856
4860
|
{
|
|
4857
4861
|
schema: u,
|
|
4858
4862
|
onChange: (C) => {
|
|
4859
|
-
|
|
4863
|
+
m(C, g, o);
|
|
4860
4864
|
},
|
|
4861
4865
|
id: o,
|
|
4862
4866
|
formData: g
|
|
@@ -4903,8 +4907,8 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4903
4907
|
/* @__PURE__ */ jsx("span", { children: "Add" })
|
|
4904
4908
|
] }) }), JSONForm = memo(({ blockId: o, schema: n, uiSchema: r, formData: a, onChange: l }) => {
|
|
4905
4909
|
const { selectedLang: i } = useLanguages(), c = useBlockSettingComponents("widget"), d = useBlockSettingComponents("field"), p = useBlockSettingComponents("template"), u = useThrottledCallback(
|
|
4906
|
-
async ({ formData: g },
|
|
4907
|
-
l({ formData: g },
|
|
4910
|
+
async ({ formData: g }, m) => {
|
|
4911
|
+
l({ formData: g }, m);
|
|
4908
4912
|
},
|
|
4909
4913
|
[l, i],
|
|
4910
4914
|
400
|
|
@@ -4945,10 +4949,10 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4945
4949
|
uiSchema: r,
|
|
4946
4950
|
schema: n,
|
|
4947
4951
|
formData: a,
|
|
4948
|
-
onChange: ({ formData: g },
|
|
4949
|
-
if (!
|
|
4950
|
-
const
|
|
4951
|
-
u({ formData: g },
|
|
4952
|
+
onChange: ({ formData: g }, m) => {
|
|
4953
|
+
if (!m || o !== (g == null ? void 0 : g._id)) return;
|
|
4954
|
+
const h = take(m.split("."), 2).join(".").replace("root.", "");
|
|
4955
|
+
u({ formData: g }, h);
|
|
4952
4956
|
}
|
|
4953
4957
|
},
|
|
4954
4958
|
i
|
|
@@ -4960,7 +4964,7 @@ const MenuBar = ({ editor: o, onExpand: n }) => {
|
|
|
4960
4964
|
}), a;
|
|
4961
4965
|
};
|
|
4962
4966
|
function BlockSettings() {
|
|
4963
|
-
const { selectedLang: o } = useLanguages(), n = useSelectedBlock(), r = useUpdateBlocksPropsRealtime(), a = useUpdateBlocksProps(), l = getRegisteredChaiBlock(n == null ? void 0 : n._type), i = formDataWithSelectedLang(n, o, l), [c, d] = useState(i), [p, u] = useState(!1), g = useWrapperBlock(),
|
|
4967
|
+
const { selectedLang: o } = useLanguages(), n = useSelectedBlock(), r = useUpdateBlocksPropsRealtime(), a = useUpdateBlocksProps(), l = getRegisteredChaiBlock(n == null ? void 0 : n._type), i = formDataWithSelectedLang(n, o, l), [c, d] = useState(i), [p, u] = useState(!1), g = useWrapperBlock(), m = getRegisteredChaiBlock(g == null ? void 0 : g._type), h = formDataWithSelectedLang(g, o, m), f = ({ formData: _ }, S, A) => {
|
|
4964
4968
|
S && (c == null ? void 0 : c._id) === n._id && a([n._id], { [S]: get(_, S) }, A);
|
|
4965
4969
|
}, x = useCallback(
|
|
4966
4970
|
debounce(({ formData: _ }, S, A) => {
|
|
@@ -5016,7 +5020,7 @@ function BlockSettings() {
|
|
|
5016
5020
|
{
|
|
5017
5021
|
blockId: g == null ? void 0 : g._id,
|
|
5018
5022
|
onChange: b,
|
|
5019
|
-
formData:
|
|
5023
|
+
formData: h,
|
|
5020
5024
|
schema: w,
|
|
5021
5025
|
uiSchema: E
|
|
5022
5026
|
}
|
|
@@ -5206,14 +5210,14 @@ const BlockStylingProps = () => {
|
|
|
5206
5210
|
},
|
|
5207
5211
|
a
|
|
5208
5212
|
)) }), THROTTLE_TIME = 50, AdvanceChoices = (o) => {
|
|
5209
|
-
const [n, r] = useState(!1), [a, l] = useState(""), { currentClass: i, onChange: c, classPrefix: d, cssProperty: p, units: u, negative: g } = o, [
|
|
5213
|
+
const [n, r] = useState(!1), [a, l] = useState(""), { currentClass: i, onChange: c, classPrefix: d, cssProperty: p, units: u, negative: g } = o, [m, h] = useState(p != null && p.toLowerCase().includes("width") ? "%" : u[0]), [f, x] = useState(!1), [y, b] = useState(""), [v, B] = useState(!1), [w, E] = useState(!1);
|
|
5210
5214
|
useEffect(() => {
|
|
5211
5215
|
const { value: C, unit: k } = getClassValueAndUnit(i);
|
|
5212
5216
|
if (k === "") {
|
|
5213
|
-
l(C),
|
|
5217
|
+
l(C), h(p != null && p.toLowerCase().includes("width") ? "%" : first(u));
|
|
5214
5218
|
return;
|
|
5215
5219
|
}
|
|
5216
|
-
|
|
5220
|
+
h(k), l(k === "class" || isEmpty(C) ? "" : C);
|
|
5217
5221
|
}, [i, p, u]);
|
|
5218
5222
|
const _ = useThrottledCallback((C) => c(C), [c], THROTTLE_TIME), S = useThrottledCallback((C) => c(C, !1), [c], THROTTLE_TIME), A = useCallback(
|
|
5219
5223
|
(C = !1) => {
|
|
@@ -5222,7 +5226,7 @@ const BlockStylingProps = () => {
|
|
|
5222
5226
|
x(!0);
|
|
5223
5227
|
return;
|
|
5224
5228
|
}
|
|
5225
|
-
const j = get(k, "unit") !== "" ? get(k, "unit") :
|
|
5229
|
+
const j = get(k, "unit") !== "" ? get(k, "unit") : m;
|
|
5226
5230
|
if (j === "auto" || j === "none") {
|
|
5227
5231
|
_(`${d}${j}`);
|
|
5228
5232
|
return;
|
|
@@ -5232,7 +5236,7 @@ const BlockStylingProps = () => {
|
|
|
5232
5236
|
const I = `${get(k, "value", "").startsWith("-") ? "-" : ""}${d}[${get(k, "value", "").replace("-", "")}${j === "-" ? "" : j}]`;
|
|
5233
5237
|
C ? S(I) : _(I);
|
|
5234
5238
|
},
|
|
5235
|
-
[_, S, a,
|
|
5239
|
+
[_, S, a, m, d, u]
|
|
5236
5240
|
), N = useCallback(
|
|
5237
5241
|
(C) => {
|
|
5238
5242
|
const k = getUserInputValues(`${a}`, u);
|
|
@@ -5251,7 +5255,7 @@ const BlockStylingProps = () => {
|
|
|
5251
5255
|
},
|
|
5252
5256
|
[_, a, d, u]
|
|
5253
5257
|
);
|
|
5254
|
-
return /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col", children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-start", children:
|
|
5258
|
+
return /* @__PURE__ */ jsx("div", { className: "flex w-full flex-col", children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-start", children: m === "class" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5255
5259
|
/* @__PURE__ */ jsx(
|
|
5256
5260
|
"input",
|
|
5257
5261
|
{
|
|
@@ -5266,10 +5270,10 @@ const BlockStylingProps = () => {
|
|
|
5266
5270
|
] })
|
|
5267
5271
|
] }) : /* @__PURE__ */ jsxs("div", { className: `group relative flex items-center ${v ? "z-auto" : ""}`, children: [
|
|
5268
5272
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center rounded-md border border-border", children: [
|
|
5269
|
-
["none", "auto"].indexOf(
|
|
5273
|
+
["none", "auto"].indexOf(m) !== -1 ? null : /* @__PURE__ */ jsx(
|
|
5270
5274
|
"input",
|
|
5271
5275
|
{
|
|
5272
|
-
readOnly:
|
|
5276
|
+
readOnly: m === "class",
|
|
5273
5277
|
onKeyPress: (C) => {
|
|
5274
5278
|
C.key === "Enter" && A();
|
|
5275
5279
|
},
|
|
@@ -5280,8 +5284,8 @@ const BlockStylingProps = () => {
|
|
|
5280
5284
|
const k = parseInt$1(C.target.value);
|
|
5281
5285
|
let j = isNaN$1(k) ? 0 : k;
|
|
5282
5286
|
C.keyCode === 38 && (j += 1), C.keyCode === 40 && (j -= 1);
|
|
5283
|
-
const T = `${j}`,
|
|
5284
|
-
S(
|
|
5287
|
+
const T = `${j}`, R = `${T.startsWith("-") ? "-" : ""}${d}[${T.replace("-", "")}${m === "-" ? "" : m}]`;
|
|
5288
|
+
S(R);
|
|
5285
5289
|
},
|
|
5286
5290
|
onKeyUp: (C) => {
|
|
5287
5291
|
w && (C.preventDefault(), E(!1));
|
|
@@ -5309,7 +5313,7 @@ const BlockStylingProps = () => {
|
|
|
5309
5313
|
onClick: () => r(!n),
|
|
5310
5314
|
className: "flex h-6 cursor-pointer items-center gap-x-1 rounded rounded-l-none bg-background p-px px-1 text-[11px] uppercase",
|
|
5311
5315
|
children: [
|
|
5312
|
-
/* @__PURE__ */ jsx("span", { className: `inline-block ${u.length === 1 ? "px-2 font-semibold" : ""}`, children:
|
|
5316
|
+
/* @__PURE__ */ jsx("span", { className: `inline-block ${u.length === 1 ? "px-2 font-semibold" : ""}`, children: m }),
|
|
5313
5317
|
u.length > 1 ? /* @__PURE__ */ jsx(TriangleDownIcon, {}) : null
|
|
5314
5318
|
]
|
|
5315
5319
|
}
|
|
@@ -5318,33 +5322,33 @@ const BlockStylingProps = () => {
|
|
|
5318
5322
|
UnitSelection,
|
|
5319
5323
|
{
|
|
5320
5324
|
units: u,
|
|
5321
|
-
current:
|
|
5325
|
+
current: m,
|
|
5322
5326
|
onSelect: (C) => {
|
|
5323
|
-
r(!1),
|
|
5327
|
+
r(!1), h(C), N(C);
|
|
5324
5328
|
}
|
|
5325
5329
|
}
|
|
5326
5330
|
) })
|
|
5327
5331
|
] })
|
|
5328
5332
|
] }),
|
|
5329
|
-
["none", "auto"].indexOf(
|
|
5333
|
+
["none", "auto"].indexOf(m) !== -1 || v ? null : /* @__PURE__ */ jsx(
|
|
5330
5334
|
DragStyleButton,
|
|
5331
5335
|
{
|
|
5332
5336
|
onDragStart: () => B(!0),
|
|
5333
5337
|
onDragEnd: (C) => {
|
|
5334
5338
|
if (b(() => ""), B(!1), isEmpty(C))
|
|
5335
5339
|
return;
|
|
5336
|
-
const k = `${C}`, T = `${k.startsWith("-") ? "-" : ""}${d}[${k.replace("-", "")}${
|
|
5340
|
+
const k = `${C}`, T = `${k.startsWith("-") ? "-" : ""}${d}[${k.replace("-", "")}${m === "-" ? "" : m}]`;
|
|
5337
5341
|
_(T);
|
|
5338
5342
|
},
|
|
5339
5343
|
onDrag: (C) => {
|
|
5340
5344
|
if (isEmpty(C))
|
|
5341
5345
|
return;
|
|
5342
5346
|
b(C);
|
|
5343
|
-
const k = `${C}`, T = `${k.startsWith("-") ? "-" : ""}${d}[${k.replace("-", "")}${
|
|
5347
|
+
const k = `${C}`, T = `${k.startsWith("-") ? "-" : ""}${d}[${k.replace("-", "")}${m === "-" ? "" : m}]`;
|
|
5344
5348
|
S(T);
|
|
5345
5349
|
},
|
|
5346
5350
|
currentValue: a,
|
|
5347
|
-
unit:
|
|
5351
|
+
unit: m,
|
|
5348
5352
|
negative: g,
|
|
5349
5353
|
cssProperty: p
|
|
5350
5354
|
}
|
|
@@ -5404,7 +5408,7 @@ const COLOR_PROP = {
|
|
|
5404
5408
|
ringColor: "ring",
|
|
5405
5409
|
ringOffsetColor: "ring-offset"
|
|
5406
5410
|
}, ColorChoice = ({ property: o, onChange: n }) => {
|
|
5407
|
-
const r = useCurrentClassByProperty(o), a = useMemo(() => get(r, "cls", ""), [r]), { canChange: l } = useContext(StyleContext), [i, c] = useState([]), [d, p] = useState({ color: "", shade: "" }), u = a.split("-"), g = get(u, "1", ""),
|
|
5411
|
+
const r = useCurrentClassByProperty(o), a = useMemo(() => get(r, "cls", ""), [r]), { canChange: l } = useContext(StyleContext), [i, c] = useState([]), [d, p] = useState({ color: "", shade: "" }), u = a.split("-"), g = get(u, "1", ""), m = get(u, "2", ""), h = useCallback(
|
|
5408
5412
|
// eslint-disable-next-line no-shadow
|
|
5409
5413
|
(y) => {
|
|
5410
5414
|
["current", "inherit", "transparent", "black", "white"].includes(y) ? (c([]), p({ color: y })) : (c(["50", "100", "200", "300", "400", "500", "600", "700", "800", "900"]), p((b) => ({ ...b, color: y, shade: b.shade ? b.shade : "500" })));
|
|
@@ -5437,7 +5441,7 @@ const COLOR_PROP = {
|
|
|
5437
5441
|
disabled: !l,
|
|
5438
5442
|
rounded: !0,
|
|
5439
5443
|
selected: g,
|
|
5440
|
-
onChange:
|
|
5444
|
+
onChange: h,
|
|
5441
5445
|
options: [
|
|
5442
5446
|
"current",
|
|
5443
5447
|
"transparent",
|
|
@@ -5470,7 +5474,7 @@ const COLOR_PROP = {
|
|
|
5470
5474
|
]
|
|
5471
5475
|
}
|
|
5472
5476
|
) }),
|
|
5473
|
-
/* @__PURE__ */ jsx("button", { type: "button", className: "grow text-center", children: /* @__PURE__ */ jsx(DropDown, { rounded: !0, selected:
|
|
5477
|
+
/* @__PURE__ */ jsx("button", { type: "button", className: "grow text-center", children: /* @__PURE__ */ jsx(DropDown, { rounded: !0, selected: m, disabled: !g || !l, onChange: f, options: i }) })
|
|
5474
5478
|
] });
|
|
5475
5479
|
}, EDITOR_ICONS = {
|
|
5476
5480
|
"not-italic": () => /* @__PURE__ */ jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M9 3H11V5H9V11H11V13H5V11H7V5H5V3H9Z", fill: "white" }) }),
|
|
@@ -5804,20 +5808,20 @@ const COLOR_PROP = {
|
|
|
5804
5808
|
"2xl": "1536px"
|
|
5805
5809
|
}, getBreakpoint = (o) => `${o.toUpperCase()} ${BREAKPOINTS[o] ? `(${BREAKPOINTS[o]} & up)` : ""}`, BlockStyle = (o) => {
|
|
5806
5810
|
const { t: n } = useTranslation(), { type: r = "icons", label: a, property: l, onEmitChange: i = () => {
|
|
5807
|
-
}, units: c, negative: d = !1 } = o, [p] = useDarkMode(), [u] = useStylingState(), [, g] = useScreenSizeWidth(),
|
|
5811
|
+
}, units: c, negative: d = !1 } = o, [p] = useDarkMode(), [u] = useStylingState(), [, g] = useScreenSizeWidth(), m = useCurrentClassByProperty(l), h = useAddClassesToBlocks(), f = useRemoveClassesFromBlocks(), [x] = useSelectedBlockIds(), y = useMemo(() => get(m, "fullCls", ""), [m]), b = useCallback(
|
|
5808
5812
|
(S, A = !0) => {
|
|
5809
5813
|
const N = { dark: p, mq: g, mod: u, cls: S, property: l, fullCls: "" };
|
|
5810
5814
|
(p || u !== "") && (N.mq = "xs");
|
|
5811
5815
|
const C = generateFullClsName(N);
|
|
5812
|
-
|
|
5816
|
+
h(x, [C], A);
|
|
5813
5817
|
},
|
|
5814
|
-
[x, p, g, u, l,
|
|
5818
|
+
[x, p, g, u, l, h]
|
|
5815
5819
|
), v = useCallback(() => {
|
|
5816
5820
|
f(x, [y], !0);
|
|
5817
|
-
}, [x, y, f]), B = useMemo(() => canChangeClass(
|
|
5821
|
+
}, [x, y, f]), B = useMemo(() => canChangeClass(m, g), [m, g]);
|
|
5818
5822
|
useEffect(() => {
|
|
5819
|
-
i(B,
|
|
5820
|
-
}, [B, i,
|
|
5823
|
+
i(B, m);
|
|
5824
|
+
}, [B, i, m]);
|
|
5821
5825
|
const [, , w] = useScreenSizeWidth(), E = useCallback(
|
|
5822
5826
|
(S) => {
|
|
5823
5827
|
w({
|
|
@@ -5830,15 +5834,15 @@ const COLOR_PROP = {
|
|
|
5830
5834
|
}[S]);
|
|
5831
5835
|
},
|
|
5832
5836
|
[w]
|
|
5833
|
-
), _ = get(
|
|
5834
|
-
return /* @__PURE__ */ jsx(BlockStyleProvider, { canChange: B, canReset:
|
|
5835
|
-
/* @__PURE__ */ jsx("div", { className: "relative w-[70px] truncate text-xs text-foreground", children: /* @__PURE__ */ jsx("span", { className: `text-[11px] ${
|
|
5837
|
+
), _ = get(m, "dark", null) === p && get(m, "mod", null) === u && get(m, "mq", null) === g;
|
|
5838
|
+
return /* @__PURE__ */ jsx(BlockStyleProvider, { canChange: B, canReset: m && _, children: /* @__PURE__ */ jsxs("div", { className: "group flex flex-row items-center py-2 first:pt-0 last:pb-0", children: [
|
|
5839
|
+
/* @__PURE__ */ jsx("div", { className: "relative w-[70px] truncate text-xs text-foreground", children: /* @__PURE__ */ jsx("span", { className: `text-[11px] ${m && !_ ? "text-foreground" : ""}`, children: n(a) }) }),
|
|
5836
5840
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center", children: [
|
|
5837
5841
|
/* @__PURE__ */ jsxs("div", { className: "w-[150px]", children: [
|
|
5838
5842
|
r === "arbitrary" ? /* @__PURE__ */ jsx(
|
|
5839
5843
|
AdvanceChoices,
|
|
5840
5844
|
{
|
|
5841
|
-
currentClass: get(
|
|
5845
|
+
currentClass: get(m, "cls", ""),
|
|
5842
5846
|
classPrefix: get(CLASS_PREFIXES, l, ""),
|
|
5843
5847
|
units: c || [],
|
|
5844
5848
|
onChange: b,
|
|
@@ -5851,7 +5855,7 @@ const COLOR_PROP = {
|
|
|
5851
5855
|
r === "color" && /* @__PURE__ */ jsx(ColorChoice, { property: l, onChange: b }),
|
|
5852
5856
|
r === "dropdown" && /* @__PURE__ */ jsx(DropDownChoices, { label: a, property: l, onChange: b })
|
|
5853
5857
|
] }),
|
|
5854
|
-
/* @__PURE__ */ jsx("div", { className: `w-[30px] cursor-pointer ${y ? "visible" : "invisible"}`, children: _ ? /* @__PURE__ */ jsx("button", { type: "button", onClick: () => v(), title: "Reset", className: "flex px-1.5 text-xs", children: /* @__PURE__ */ jsx(CrossCircledIcon, { className: "h-5 w-5 text-blue-500 hover:opacity-80" }) }) : B &&
|
|
5858
|
+
/* @__PURE__ */ jsx("div", { className: `w-[30px] cursor-pointer ${y ? "visible" : "invisible"}`, children: _ ? /* @__PURE__ */ jsx("button", { type: "button", onClick: () => v(), title: "Reset", className: "flex px-1.5 text-xs", children: /* @__PURE__ */ jsx(CrossCircledIcon, { className: "h-5 w-5 text-blue-500 hover:opacity-80" }) }) : B && m ? /* @__PURE__ */ jsxs(Tooltip, { delayDuration: 100, children: [
|
|
5855
5859
|
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: !0, children: /* @__PURE__ */ jsx(
|
|
5856
5860
|
"button",
|
|
5857
5861
|
{
|
|
@@ -5863,19 +5867,19 @@ const COLOR_PROP = {
|
|
|
5863
5867
|
/* @__PURE__ */ jsx(TooltipContent, { children: /* @__PURE__ */ jsx("div", { className: "text-right", children: /* @__PURE__ */ jsxs("div", { children: [
|
|
5864
5868
|
"Current style is set at ",
|
|
5865
5869
|
/* @__PURE__ */ jsxs("span", { className: "font-bold", children: [
|
|
5866
|
-
getBreakpoint(get(
|
|
5867
|
-
p && !
|
|
5870
|
+
getBreakpoint(get(m, "mq")),
|
|
5871
|
+
p && !m.dark ? "(Light mode)" : ""
|
|
5868
5872
|
] }),
|
|
5869
5873
|
/* @__PURE__ */ jsx("br", {}),
|
|
5870
5874
|
/* @__PURE__ */ jsxs(
|
|
5871
5875
|
"button",
|
|
5872
5876
|
{
|
|
5873
5877
|
type: "button",
|
|
5874
|
-
onClick: () => E(get(
|
|
5878
|
+
onClick: () => E(get(m, "mq")),
|
|
5875
5879
|
className: "block w-full cursor-default text-right font-semibold text-blue-500",
|
|
5876
5880
|
children: [
|
|
5877
5881
|
"Switch to ",
|
|
5878
|
-
get(
|
|
5882
|
+
get(m, "mq").toUpperCase()
|
|
5879
5883
|
]
|
|
5880
5884
|
}
|
|
5881
5885
|
)
|
|
@@ -5892,7 +5896,7 @@ const COLOR_PROP = {
|
|
|
5892
5896
|
units: i = basicUnits,
|
|
5893
5897
|
negative: c = !1
|
|
5894
5898
|
}) => {
|
|
5895
|
-
const { t: d } = useTranslation(), [p, u] = useState(n[0].key), g = useSelectedBlockCurrentClasses(),
|
|
5899
|
+
const { t: d } = useTranslation(), [p, u] = useState(n[0].key), g = useSelectedBlockCurrentClasses(), m = useCallback((h) => map(g, "property").includes(h), [g]);
|
|
5896
5900
|
return /* @__PURE__ */ jsxs(
|
|
5897
5901
|
"div",
|
|
5898
5902
|
{
|
|
@@ -5900,7 +5904,7 @@ const COLOR_PROP = {
|
|
|
5900
5904
|
children: [
|
|
5901
5905
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-row text-xs", children: [
|
|
5902
5906
|
o && /* @__PURE__ */ jsx("span", { className: "relative w-[70px] flex-none text-xs text-foreground", children: d(o) }),
|
|
5903
|
-
/* @__PURE__ */ jsx("div", { className: "mb-3 flex grow flex-row flex-wrap gap-x-px", children: n.map(({ label:
|
|
5907
|
+
/* @__PURE__ */ jsx("div", { className: "mb-3 flex grow flex-row flex-wrap gap-x-px", children: n.map(({ label: h, key: f }, x) => /* @__PURE__ */ jsx("div", { className: "first:rounded-l last:rounded-r", children: /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
5904
5908
|
/* @__PURE__ */ jsx(TooltipTrigger, { asChild: !0, children: /* @__PURE__ */ jsxs(
|
|
5905
5909
|
"button",
|
|
5906
5910
|
{
|
|
@@ -5909,13 +5913,13 @@ const COLOR_PROP = {
|
|
|
5909
5913
|
className: `relative cursor-pointer rounded-full p-1 text-[8px] ${f === p ? "bg-[#3E57F0] text-white" : "text-gray-600 dark:text-gray-300"}`,
|
|
5910
5914
|
children: [
|
|
5911
5915
|
React__default.createElement("div", {
|
|
5912
|
-
className:
|
|
5916
|
+
className: m(f) ? "-bottom-1.5 absolute bg-[#3E57F0] h-[2px] left-0 w-full" : ""
|
|
5913
5917
|
}),
|
|
5914
5918
|
React__default.createElement(get(EDITOR_ICONS, f, BoxIcon), { className: "text-inherit w-3 h-3" })
|
|
5915
5919
|
]
|
|
5916
5920
|
}
|
|
5917
5921
|
) }),
|
|
5918
|
-
/* @__PURE__ */ jsx(TooltipContent, { children: startCase(toLower(
|
|
5922
|
+
/* @__PURE__ */ jsx(TooltipContent, { children: startCase(toLower(h)) })
|
|
5919
5923
|
] }) }, `option-${x}`)) })
|
|
5920
5924
|
] }),
|
|
5921
5925
|
/* @__PURE__ */ jsx("div", { className: "mt-0 flex items-center", children: /* @__PURE__ */ jsx(
|
|
@@ -6071,12 +6075,12 @@ const COLOR_PROP = {
|
|
|
6071
6075
|
canvas: n = !1,
|
|
6072
6076
|
tooltip: r = !0
|
|
6073
6077
|
}) => {
|
|
6074
|
-
const [a, , l] = useScreenSizeWidth(), [i, c] = useCanvasDisplayWidth(), [d, p] = useSelectedBreakpoints(), u = d, g = p, { t:
|
|
6078
|
+
const [a, , l] = useScreenSizeWidth(), [i, c] = useCanvasDisplayWidth(), [d, p] = useSelectedBreakpoints(), u = d, g = p, { t: m } = useTranslation(), h = useBuilderProp("breakpoints", WEB_BREAKPOINTS), f = (b) => {
|
|
6075
6079
|
u.includes(b) ? u.length > 2 && g(u.filter((v) => v !== b)) : g((v) => [...v, b]);
|
|
6076
6080
|
}, x = (b) => {
|
|
6077
6081
|
n || l(b), c(b);
|
|
6078
6082
|
}, y = getBreakpointValue(n ? i : a).toLowerCase();
|
|
6079
|
-
return
|
|
6083
|
+
return h.length < 4 ? /* @__PURE__ */ jsx("div", { className: "flex items-center rounded-md", children: map(h, (b) => /* @__PURE__ */ createElement(
|
|
6080
6084
|
BreakpointCard,
|
|
6081
6085
|
{
|
|
6082
6086
|
canvas: n,
|
|
@@ -6087,7 +6091,7 @@ const COLOR_PROP = {
|
|
|
6087
6091
|
}
|
|
6088
6092
|
)) }) : /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between rounded-md", children: [
|
|
6089
6093
|
/* @__PURE__ */ jsx("div", { className: "flex items-center", children: map(
|
|
6090
|
-
|
|
6094
|
+
h.filter((b) => includes(u, toUpper(b.breakpoint))),
|
|
6091
6095
|
(b) => /* @__PURE__ */ createElement(
|
|
6092
6096
|
BreakpointCard,
|
|
6093
6097
|
{
|
|
@@ -6104,15 +6108,15 @@ const COLOR_PROP = {
|
|
|
6104
6108
|
/* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
6105
6109
|
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: !0, children: /* @__PURE__ */ jsx("span", { className: "cursor-pointer px-2.5 hover:opacity-80", children: /* @__PURE__ */ jsx(DotsVerticalIcon, { className: "scale-90 transform" }) }) }),
|
|
6106
6110
|
/* @__PURE__ */ jsxs(DropdownMenuContent, { className: "w-56 border-border text-xs", children: [
|
|
6107
|
-
/* @__PURE__ */ jsx(DropdownMenuLabel, { children:
|
|
6111
|
+
/* @__PURE__ */ jsx(DropdownMenuLabel, { children: m("Screen sizes") }),
|
|
6108
6112
|
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
6109
|
-
map(
|
|
6113
|
+
map(h, (b) => /* @__PURE__ */ jsx(
|
|
6110
6114
|
DropdownMenuCheckboxItem,
|
|
6111
6115
|
{
|
|
6112
6116
|
disabled: b.breakpoint === "xs",
|
|
6113
6117
|
onCheckedChange: () => f(toUpper(b.breakpoint)),
|
|
6114
6118
|
checked: includes(u, toUpper(b.breakpoint)),
|
|
6115
|
-
children:
|
|
6119
|
+
children: m(b.title)
|
|
6116
6120
|
},
|
|
6117
6121
|
b.breakpoint
|
|
6118
6122
|
))
|
|
@@ -6191,11 +6195,11 @@ function Countdown() {
|
|
|
6191
6195
|
const AskAIStyles = ({ blockId: o }) => {
|
|
6192
6196
|
const { t: n } = useTranslation(), { askAi: r, loading: a, error: l } = useAskAi(), [i, c] = useState(""), d = useRef(null), p = useRef(null), [u, g] = useState();
|
|
6193
6197
|
useEffect(() => {
|
|
6194
|
-
var
|
|
6195
|
-
(
|
|
6198
|
+
var h;
|
|
6199
|
+
(h = d.current) == null || h.focus();
|
|
6196
6200
|
}, []);
|
|
6197
|
-
const
|
|
6198
|
-
const { usage: f } =
|
|
6201
|
+
const m = (h) => {
|
|
6202
|
+
const { usage: f } = h || {};
|
|
6199
6203
|
!l && f && g(f), p.current = setTimeout(() => g(void 0), 1e4), l || c("");
|
|
6200
6204
|
};
|
|
6201
6205
|
return /* @__PURE__ */ jsxs("div", { className: "", children: [
|
|
@@ -6205,12 +6209,12 @@ const AskAIStyles = ({ blockId: o }) => {
|
|
|
6205
6209
|
{
|
|
6206
6210
|
ref: d,
|
|
6207
6211
|
value: i,
|
|
6208
|
-
onChange: (
|
|
6212
|
+
onChange: (h) => c(h.target.value),
|
|
6209
6213
|
placeholder: n("Ask AI to edit styles"),
|
|
6210
6214
|
className: "no-scrollbar my-2 w-full border border-border p-2 text-xs",
|
|
6211
6215
|
rows: 4,
|
|
6212
|
-
onKeyDown: (
|
|
6213
|
-
|
|
6216
|
+
onKeyDown: (h) => {
|
|
6217
|
+
h.key === "Enter" && (h.preventDefault(), p.current && clearTimeout(p.current), g(void 0), r("styles", o, i, m));
|
|
6214
6218
|
}
|
|
6215
6219
|
}
|
|
6216
6220
|
),
|
|
@@ -6220,7 +6224,7 @@ const AskAIStyles = ({ blockId: o }) => {
|
|
|
6220
6224
|
{
|
|
6221
6225
|
disabled: i.trim().length < 5 || a,
|
|
6222
6226
|
onClick: () => {
|
|
6223
|
-
p.current && clearTimeout(p.current), g(void 0), r("styles", o, i,
|
|
6227
|
+
p.current && clearTimeout(p.current), g(void 0), r("styles", o, i, m);
|
|
6224
6228
|
},
|
|
6225
6229
|
variant: "default",
|
|
6226
6230
|
className: "w-fit",
|
|
@@ -6252,20 +6256,20 @@ const AskAIStyles = ({ blockId: o }) => {
|
|
|
6252
6256
|
};
|
|
6253
6257
|
function ManualClasses() {
|
|
6254
6258
|
var T;
|
|
6255
|
-
const o = useRef(null), [n, r] = useState(""), [a, l] = useState(-1), i = useFuseSearch(), { t: c } = useTranslation(), [d] = useSelectedStylingBlocks(), p = useSelectedBlock(), u = useAddClassesToBlocks(), g = useRemoveClassesFromBlocks(), [
|
|
6259
|
+
const o = useRef(null), [n, r] = useState(""), [a, l] = useState(-1), i = useFuseSearch(), { t: c } = useTranslation(), [d] = useSelectedStylingBlocks(), p = useSelectedBlock(), u = useAddClassesToBlocks(), g = useRemoveClassesFromBlocks(), [m] = useSelectedBlockIds(), h = useBuilderProp("askAiCallBack", null), [f, x] = useState(""), y = (T = first(d)) == null ? void 0 : T.prop, { classes: b } = getSplitChaiClasses(get(p, y, "")), v = b.split(" ").filter((I) => !isEmpty(I)), B = () => {
|
|
6256
6260
|
const I = f.trim().toLowerCase().replace(/ +(?= )/g, "").split(" ");
|
|
6257
|
-
u(
|
|
6261
|
+
u(m, I, !0), x("");
|
|
6258
6262
|
}, [w, E] = useState([]), _ = ({ value: I }) => {
|
|
6259
|
-
const
|
|
6263
|
+
const R = I.trim().toLowerCase(), L = R.match(/.+:/g);
|
|
6260
6264
|
let D = [];
|
|
6261
6265
|
if (L && L.length > 0) {
|
|
6262
|
-
const [O] = L,
|
|
6263
|
-
D = i.search(
|
|
6266
|
+
const [O] = L, P = R.replace(O, "");
|
|
6267
|
+
D = i.search(P).map((M) => ({
|
|
6264
6268
|
...M,
|
|
6265
6269
|
item: { ...M.item, name: O + M.item.name }
|
|
6266
6270
|
}));
|
|
6267
6271
|
} else
|
|
6268
|
-
D = i.search(
|
|
6272
|
+
D = i.search(R);
|
|
6269
6273
|
return E(map(D, "item"));
|
|
6270
6274
|
}, S = () => {
|
|
6271
6275
|
E([]);
|
|
@@ -6286,14 +6290,14 @@ function ManualClasses() {
|
|
|
6286
6290
|
onKeyDown: (I) => {
|
|
6287
6291
|
I.key === "Enter" && f.trim() !== "" && B();
|
|
6288
6292
|
},
|
|
6289
|
-
onChange: (I, { newValue:
|
|
6293
|
+
onChange: (I, { newValue: R }) => x(R),
|
|
6290
6294
|
className: "w-full rounded-md text-xs px-2 hover:outline-0 bg-background border-border py-1"
|
|
6291
6295
|
}),
|
|
6292
6296
|
[f, c, o]
|
|
6293
6297
|
), k = (I) => {
|
|
6294
6298
|
debugger;
|
|
6295
|
-
const
|
|
6296
|
-
g(
|
|
6299
|
+
const R = n.trim().toLowerCase().replace(/ +(?= )/g, "").split(" ");
|
|
6300
|
+
g(m, [I]), u(m, R, !0), r(""), l(-1);
|
|
6297
6301
|
}, j = () => {
|
|
6298
6302
|
if (navigator.clipboard === void 0) {
|
|
6299
6303
|
toast.error(c("Clipboard not supported"));
|
|
@@ -6310,7 +6314,7 @@ function ManualClasses() {
|
|
|
6310
6314
|
/* @__PURE__ */ jsx(TooltipContent, { children: /* @__PURE__ */ jsx("p", { children: c("Copy classes to clipboard") }) })
|
|
6311
6315
|
] })
|
|
6312
6316
|
] }),
|
|
6313
|
-
|
|
6317
|
+
h ? /* @__PURE__ */ jsxs(Popover, { children: [
|
|
6314
6318
|
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: !0, children: /* @__PURE__ */ jsxs(Button, { variant: "default", className: "h-6 w-fit", size: "sm", children: [
|
|
6315
6319
|
/* @__PURE__ */ jsx(SparklesIcon, { className: "h-4 w-4" }),
|
|
6316
6320
|
/* @__PURE__ */ jsx("span", { className: "ml-2", children: c("Ask AI") })
|
|
@@ -6351,7 +6355,7 @@ function ManualClasses() {
|
|
|
6351
6355
|
)
|
|
6352
6356
|
] }),
|
|
6353
6357
|
/* @__PURE__ */ jsx("div", { className: "flex w-full flex-wrap gap-2 overflow-x-hidden", children: v.map(
|
|
6354
|
-
(I,
|
|
6358
|
+
(I, R) => a === R ? /* @__PURE__ */ jsx(
|
|
6355
6359
|
"input",
|
|
6356
6360
|
{
|
|
6357
6361
|
ref: o,
|
|
@@ -6375,7 +6379,7 @@ function ManualClasses() {
|
|
|
6375
6379
|
"button",
|
|
6376
6380
|
{
|
|
6377
6381
|
onDoubleClick: () => {
|
|
6378
|
-
x(I), g(
|
|
6382
|
+
x(I), g(m, [I]), setTimeout(() => {
|
|
6379
6383
|
o.current && o.current.focus();
|
|
6380
6384
|
}, 10);
|
|
6381
6385
|
},
|
|
@@ -6385,7 +6389,7 @@ function ManualClasses() {
|
|
|
6385
6389
|
n !== I && /* @__PURE__ */ jsx(
|
|
6386
6390
|
Cross2Icon,
|
|
6387
6391
|
{
|
|
6388
|
-
onClick: () => g(
|
|
6392
|
+
onClick: () => g(m, [I], !0),
|
|
6389
6393
|
className: "invisible absolute right-1 rounded-full bg-red-400 hover:text-white group-hover:visible group-hover:cursor-pointer"
|
|
6390
6394
|
}
|
|
6391
6395
|
)
|
|
@@ -6505,13 +6509,13 @@ function BlockStyling() {
|
|
|
6505
6509
|
cssProperty: ""
|
|
6506
6510
|
}), d = useThrottledCallback(
|
|
6507
6511
|
(u) => {
|
|
6508
|
-
const g = !get(i, "negative", !1),
|
|
6509
|
-
let
|
|
6510
|
-
|
|
6512
|
+
const g = !get(i, "negative", !1), m = get(i, "cssProperty", "");
|
|
6513
|
+
let h = parseFloat(i.dragStartValue);
|
|
6514
|
+
h = isNaN(h) ? 0 : h;
|
|
6511
6515
|
let f = MAPPER[i.dragUnit];
|
|
6512
|
-
(startsWith(
|
|
6513
|
-
let y = (i.dragStartY - u.pageY) / f +
|
|
6514
|
-
g && y < 0 && (y = 0),
|
|
6516
|
+
(startsWith(m, "scale") || m === "opacity") && (f = 10);
|
|
6517
|
+
let y = (i.dragStartY - u.pageY) / f + h;
|
|
6518
|
+
g && y < 0 && (y = 0), m === "opacity" && y > 1 && (y = 1), i.onDrag(`${y}`), l(`${y}`);
|
|
6515
6519
|
},
|
|
6516
6520
|
[i],
|
|
6517
6521
|
50
|
|
@@ -6552,7 +6556,7 @@ const CoreBlock = ({
|
|
|
6552
6556
|
parentId: r,
|
|
6553
6557
|
position: a
|
|
6554
6558
|
}) => {
|
|
6555
|
-
const [, l] = useAtom$1(draggedBlockAtom), { type: i, icon: c, label: d } = o, { addCoreBlock: p, addPredefinedBlock: u } = useAddBlock(), [, g] = useSelectedBlockIds(), { clearHighlight:
|
|
6559
|
+
const [, l] = useAtom$1(draggedBlockAtom), { type: i, icon: c, label: d } = o, { addCoreBlock: p, addPredefinedBlock: u } = useAddBlock(), [, g] = useSelectedBlockIds(), { clearHighlight: m } = useBlockHighlight(), h = () => {
|
|
6556
6560
|
if (has(o, "blocks")) {
|
|
6557
6561
|
const y = isFunction(o.blocks) ? o.blocks() : o.blocks;
|
|
6558
6562
|
u(syncBlocksWithDefaults(y), r || null, a);
|
|
@@ -6565,11 +6569,11 @@ const CoreBlock = ({
|
|
|
6565
6569
|
"button",
|
|
6566
6570
|
{
|
|
6567
6571
|
disabled: n,
|
|
6568
|
-
onClick:
|
|
6572
|
+
onClick: h,
|
|
6569
6573
|
type: "button",
|
|
6570
6574
|
onDragStart: (y) => {
|
|
6571
6575
|
y.dataTransfer.setData("text/plain", JSON.stringify(omit(o, ["component", "icon"]))), y.dataTransfer.setDragImage(new Image(), 0, 0), l(omit(o, ["component", "icon"])), setTimeout(() => {
|
|
6572
|
-
g([]),
|
|
6576
|
+
g([]), m();
|
|
6573
6577
|
}, 200);
|
|
6574
6578
|
},
|
|
6575
6579
|
draggable: f ? "true" : "false",
|
|
@@ -6768,9 +6772,8 @@ const CoreBlock = ({
|
|
|
6768
6772
|
}
|
|
6769
6773
|
}
|
|
6770
6774
|
}, traverseNodes = (o, n = null) => flatMapDeep(o, (r) => {
|
|
6771
|
-
var
|
|
6775
|
+
var m, h, f, x, y, b, v, B;
|
|
6772
6776
|
if (r.type === "comment") return [];
|
|
6773
|
-
console.log("node ===>", r);
|
|
6774
6777
|
let a = { _id: generateUUID() };
|
|
6775
6778
|
if (n && (a._parent = n.block._id), r.type === "text")
|
|
6776
6779
|
return isEmpty(get(r, "content", "")) ? [] : n && shouldAddText(n.node, n.block) ? (set(n, "block.content", get(r, "content", "")), []) : { ...a, _type: "Text", content: get(r, "content", "") };
|
|
@@ -6809,8 +6812,8 @@ const CoreBlock = ({
|
|
|
6809
6812
|
];
|
|
6810
6813
|
a = {
|
|
6811
6814
|
...a,
|
|
6812
|
-
href: ((
|
|
6813
|
-
hrefType: ((
|
|
6815
|
+
href: ((m = l.find((E) => E.key === "href")) == null ? void 0 : m.value) || "",
|
|
6816
|
+
hrefType: ((h = l.find((E) => E.key === "data-vbtype")) == null ? void 0 : h.value) || "video",
|
|
6814
6817
|
autoplay: ((f = l.find((E) => E.key === "data-autoplay")) == null ? void 0 : f.value) === "true" ? "true" : "false",
|
|
6815
6818
|
maxWidth: ((y = (x = l.find((E) => E.key === "data-maxwidth")) == null ? void 0 : x.value) == null ? void 0 : y.replace("px", "")) || "",
|
|
6816
6819
|
backdropColor: ((b = l.find((E) => E.key === "data-overlay")) == null ? void 0 : b.value) || "",
|
|
@@ -6944,16 +6947,16 @@ function UILibrariesSelect({
|
|
|
6944
6947
|
)
|
|
6945
6948
|
] }) : null;
|
|
6946
6949
|
}
|
|
6947
|
-
let
|
|
6950
|
+
let LIBRARIES_REGISTRY = {};
|
|
6948
6951
|
const registerChaiLibrary = (o, n) => {
|
|
6949
|
-
|
|
6950
|
-
}, useChaiLibraries = () => values(
|
|
6952
|
+
LIBRARIES_REGISTRY[o] = { ...n, id: o };
|
|
6953
|
+
}, useChaiLibraries = () => values(LIBRARIES_REGISTRY), BlockCard = ({
|
|
6951
6954
|
block: o,
|
|
6952
6955
|
library: n,
|
|
6953
6956
|
parentId: r = void 0,
|
|
6954
6957
|
position: a = -1
|
|
6955
6958
|
}) => {
|
|
6956
|
-
const [l, i] = useState(!1), c = useMemo(() => (n == null ? void 0 : n.getBlock) || (() => []), [n]), { addCoreBlock: d, addPredefinedBlock: p } = useAddBlock(), [, u] = useSelectedBlockIds(), { clearHighlight: g } = useBlockHighlight(),
|
|
6959
|
+
const [l, i] = useState(!1), c = useMemo(() => (n == null ? void 0 : n.getBlock) || (() => []), [n]), { addCoreBlock: d, addPredefinedBlock: p } = useAddBlock(), [, u] = useSelectedBlockIds(), { clearHighlight: g } = useBlockHighlight(), m = get(o, "name", get(o, "label")), h = get(o, "description", ""), f = useFeature("dnd"), [, x] = useAtom$1(draggedBlockAtom), y = (B) => {
|
|
6957
6960
|
const w = has(B, "styles_attrs.data-page-section");
|
|
6958
6961
|
return B._type === "Box" && w;
|
|
6959
6962
|
}, b = useCallback(
|
|
@@ -6963,7 +6966,7 @@ const registerChaiLibrary = (o, n) => {
|
|
|
6963
6966
|
return;
|
|
6964
6967
|
}
|
|
6965
6968
|
i(!0);
|
|
6966
|
-
let w = await c(n, o);
|
|
6969
|
+
let w = await c({ library: n, block: o });
|
|
6967
6970
|
typeof w == "string" && (w = getBlocksFromHTML(w)), isEmpty(w) || p(syncBlocksWithDefaults(w), r, a), pubsub.publish(CHAI_BUILDER_EVENTS.CLOSE_ADD_BLOCK);
|
|
6968
6971
|
},
|
|
6969
6972
|
[d, p, o, c, n, r, a]
|
|
@@ -6976,7 +6979,7 @@ const registerChaiLibrary = (o, n) => {
|
|
|
6976
6979
|
} : b,
|
|
6977
6980
|
draggable: f ? "true" : "false",
|
|
6978
6981
|
onDragStart: async (B) => {
|
|
6979
|
-
const w = await c(n, o);
|
|
6982
|
+
const w = await c({ library: n, block: o });
|
|
6980
6983
|
let E = r;
|
|
6981
6984
|
if (y(first(w)) && (E = null), !isEmpty(w)) {
|
|
6982
6985
|
const _ = { blocks: w, uiLibrary: !0, parent: E };
|
|
@@ -7000,20 +7003,20 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7000
7003
|
/* @__PURE__ */ jsx(Loader, { className: "animate-spin", size: 15, color: "white" }),
|
|
7001
7004
|
/* @__PURE__ */ jsx("span", { className: "pl-2 text-sm text-white", children: "Adding..." })
|
|
7002
7005
|
] }),
|
|
7003
|
-
o.preview ? /* @__PURE__ */ jsx("img", { src: o.preview, className: "min-h-[45px] w-full rounded-md", alt:
|
|
7004
|
-
/* @__PURE__ */ jsx("p", { className: "font-medium text-gray-800", children:
|
|
7005
|
-
|
|
7006
|
+
o.preview ? /* @__PURE__ */ jsx("img", { src: o.preview, className: "min-h-[45px] w-full rounded-md", alt: m }) : /* @__PURE__ */ jsxs("div", { className: "flex h-fit w-full flex-col items-center justify-center gap-1 rounded-md border border-border p-6 py-10 text-center", children: [
|
|
7007
|
+
/* @__PURE__ */ jsx("p", { className: "font-medium text-gray-800", children: m }),
|
|
7008
|
+
h && /* @__PURE__ */ jsx("p", { className: "text-sm text-gray-600", children: h })
|
|
7006
7009
|
] })
|
|
7007
7010
|
]
|
|
7008
7011
|
}
|
|
7009
7012
|
) }),
|
|
7010
7013
|
/* @__PURE__ */ jsx(TooltipContent, { children: /* @__PURE__ */ jsxs("div", { className: "max-w-xs", children: [
|
|
7011
|
-
/* @__PURE__ */ jsx("p", { className: "font-medium", children:
|
|
7012
|
-
|
|
7014
|
+
/* @__PURE__ */ jsx("p", { className: "font-medium", children: m }),
|
|
7015
|
+
h && o.preview && /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-primary-foreground", children: h })
|
|
7013
7016
|
] }) })
|
|
7014
7017
|
] });
|
|
7015
7018
|
}, UILibrarySection = ({ parentId: o, position: n }) => {
|
|
7016
|
-
const [r, a] = useSelectedLibrary(), l = useChaiLibraries(), i = l.find((k) => k.id === r) || first(l), { data: c, isLoading: d, resetLibrary: p } = useLibraryBlocks(i), [u, g] = useState(""), [
|
|
7019
|
+
const [r, a] = useSelectedLibrary(), l = useChaiLibraries(), i = l.find((k) => k.id === r) || first(l), { data: c, isLoading: d, resetLibrary: p } = useLibraryBlocks(i), [u, g] = useState(""), [m, h] = useState([]), f = useRef(null);
|
|
7017
7020
|
useEffect(() => {
|
|
7018
7021
|
c && c.length > 0 && (f.current = new Fuse(c, {
|
|
7019
7022
|
keys: ["name", "label", "description", "group"],
|
|
@@ -7022,13 +7025,13 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7022
7025
|
}));
|
|
7023
7026
|
}, [c]), useEffect(() => {
|
|
7024
7027
|
if (!u.trim() || !f.current) {
|
|
7025
|
-
|
|
7028
|
+
h([]);
|
|
7026
7029
|
return;
|
|
7027
7030
|
}
|
|
7028
7031
|
const k = f.current.search(u).map((j) => j.item);
|
|
7029
|
-
|
|
7032
|
+
h(k);
|
|
7030
7033
|
}, [u]);
|
|
7031
|
-
const x = u.trim() && !isEmpty(
|
|
7034
|
+
const x = u.trim() && !isEmpty(m) ? m : c, y = groupBy(x, "group"), [b, v] = useState(null);
|
|
7032
7035
|
useEffect(() => {
|
|
7033
7036
|
if (isEmpty(keys(y))) {
|
|
7034
7037
|
v(null);
|
|
@@ -7168,7 +7171,7 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7168
7171
|
error: c
|
|
7169
7172
|
}), g(!0);
|
|
7170
7173
|
else if (!l && Object.keys(a || {}).length > 0) {
|
|
7171
|
-
const
|
|
7174
|
+
const h = Object.entries(a).map(([x, y]) => {
|
|
7172
7175
|
const b = y, v = b.type || "partial", B = formatReadableName(v);
|
|
7173
7176
|
return {
|
|
7174
7177
|
type: "PartialBlock",
|
|
@@ -7183,14 +7186,14 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7183
7186
|
// Store the original ID as partialBlockId
|
|
7184
7187
|
_name: b.name
|
|
7185
7188
|
};
|
|
7186
|
-
}), f = uniq(map(
|
|
7189
|
+
}), f = uniq(map(h, "group"));
|
|
7187
7190
|
p({
|
|
7188
|
-
blocks:
|
|
7191
|
+
blocks: h,
|
|
7189
7192
|
groups: f,
|
|
7190
7193
|
isLoading: !1,
|
|
7191
7194
|
error: null
|
|
7192
7195
|
}), g(!0);
|
|
7193
|
-
} else l ? p((
|
|
7196
|
+
} else l ? p((h) => ({ ...h, isLoading: !0, error: null })) : !l && Object.keys(a || {}).length === 0 && (p({
|
|
7194
7197
|
blocks: [],
|
|
7195
7198
|
groups: [],
|
|
7196
7199
|
isLoading: !1,
|
|
@@ -7205,15 +7208,15 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7205
7208
|
d.blocks,
|
|
7206
7209
|
c
|
|
7207
7210
|
]);
|
|
7208
|
-
const
|
|
7209
|
-
p((
|
|
7211
|
+
const m = () => {
|
|
7212
|
+
p((h) => ({ ...h, isLoading: !0, error: null })), g(!1), i();
|
|
7210
7213
|
};
|
|
7211
7214
|
return d.isLoading ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center p-8 text-center text-muted-foreground", children: "Loading partial blocks..." }) : d.error || d.blocks.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center gap-4 p-8 text-center text-muted-foreground", children: [
|
|
7212
7215
|
/* @__PURE__ */ jsx("p", { children: d.error || "No partial blocks available" }),
|
|
7213
7216
|
/* @__PURE__ */ jsx(
|
|
7214
7217
|
"button",
|
|
7215
7218
|
{
|
|
7216
|
-
onClick:
|
|
7219
|
+
onClick: m,
|
|
7217
7220
|
className: "rounded-md bg-primary px-3 py-1 text-sm text-primary-foreground hover:bg-primary/90",
|
|
7218
7221
|
children: "Refresh"
|
|
7219
7222
|
}
|
|
@@ -7232,7 +7235,7 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7232
7235
|
has(ADD_BLOCK_TABS, o) && console.warn(`Add block tab with id ${o} already registered`), set(ADD_BLOCK_TABS, o, { id: o, ...n });
|
|
7233
7236
|
}, useChaiAddBlockTabs = () => useMemo(() => values(ADD_BLOCK_TABS), []), CORE_GROUPS = ["basic", "typography", "media", "layout", "form", "advanced", "other"], ChaiBuilderBlocks = ({ groups: o, blocks: n, parentId: r, position: a, gridCols: l = "grid-cols-4" }) => {
|
|
7234
7237
|
var C;
|
|
7235
|
-
const { t: i } = useTranslation(), [c] = useBlocksStore(), [d, p] = useState(""), u = useRef(null), [g] = useAtom$1(addBlockTabAtom),
|
|
7238
|
+
const { t: i } = useTranslation(), [c] = useBlocksStore(), [d, p] = useState(""), u = useRef(null), [g] = useAtom$1(addBlockTabAtom), m = (C = find(c, (k) => k._id === r)) == null ? void 0 : C._type, [h, f] = useState("all"), [x, y] = useState(null), b = useRef(null);
|
|
7236
7239
|
useEffect(() => {
|
|
7237
7240
|
const k = setTimeout(() => {
|
|
7238
7241
|
var j;
|
|
@@ -7268,7 +7271,7 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7268
7271
|
), S = useMemo(
|
|
7269
7272
|
() => sortBy(_, (k) => CORE_GROUPS.indexOf(k) === -1 ? 99 : CORE_GROUPS.indexOf(k)),
|
|
7270
7273
|
[_]
|
|
7271
|
-
), A = useMemo(() =>
|
|
7274
|
+
), A = useMemo(() => h === "all" ? E : filter(values(E), { group: h }), [E, h]), N = useMemo(() => h === "all" ? S : [h], [S, h]);
|
|
7272
7275
|
return /* @__PURE__ */ jsxs("div", { className: "mx-auto flex h-full w-full max-w-3xl flex-col", children: [
|
|
7273
7276
|
/* @__PURE__ */ jsx("div", { className: "sticky top-0 z-10 bg-background/80 px-4 py-2 backdrop-blur-sm", children: /* @__PURE__ */ jsx(
|
|
7274
7277
|
Input$1,
|
|
@@ -7289,7 +7292,7 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7289
7292
|
onClick: () => w("all"),
|
|
7290
7293
|
onMouseEnter: () => v("all"),
|
|
7291
7294
|
onMouseLeave: B,
|
|
7292
|
-
className: `w-full rounded-md px-2 py-1.5 text-left text-sm font-medium ${
|
|
7295
|
+
className: `w-full rounded-md px-2 py-1.5 text-left text-sm font-medium ${h === "all" || x === "all" ? "bg-primary text-primary-foreground" : "hover:bg-primary/50 hover:text-primary-foreground"}`,
|
|
7293
7296
|
children: i("All")
|
|
7294
7297
|
},
|
|
7295
7298
|
"sidebar-all"
|
|
@@ -7300,7 +7303,7 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7300
7303
|
onClick: () => w(k),
|
|
7301
7304
|
onMouseEnter: () => v(k),
|
|
7302
7305
|
onMouseLeave: B,
|
|
7303
|
-
className: `w-full rounded-md px-2 py-1.5 text-left text-sm ${
|
|
7306
|
+
className: `w-full rounded-md px-2 py-1.5 text-left text-sm ${h === k || x === k ? "bg-primary text-primary-foreground" : "hover:bg-primary/50 hover:text-primary-foreground"}`,
|
|
7304
7307
|
children: capitalize(i(k.toLowerCase()))
|
|
7305
7308
|
},
|
|
7306
7309
|
`sidebar-${k}`
|
|
@@ -7314,7 +7317,7 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7314
7317
|
] }) }) : /* @__PURE__ */ jsx("div", { className: "space-y-6 p-4", children: N.map((k) => /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
7315
7318
|
/* @__PURE__ */ jsx("h3", { className: "px-1 text-sm font-medium", children: capitalize(i(k.toLowerCase())) }),
|
|
7316
7319
|
/* @__PURE__ */ jsx("div", { className: "grid gap-2 " + l, children: reject(
|
|
7317
|
-
|
|
7320
|
+
h === "all" ? filter(values(A), { group: k }) : values(A),
|
|
7318
7321
|
{ hidden: !0 }
|
|
7319
7322
|
).map((j) => /* @__PURE__ */ jsx(
|
|
7320
7323
|
CoreBlock,
|
|
@@ -7322,7 +7325,7 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7322
7325
|
parentId: r,
|
|
7323
7326
|
position: a,
|
|
7324
7327
|
block: j,
|
|
7325
|
-
disabled: !canAcceptChildBlock(
|
|
7328
|
+
disabled: !canAcceptChildBlock(m, j.type) || !canBeNestedInside(m, j.type)
|
|
7326
7329
|
},
|
|
7327
7330
|
j.type
|
|
7328
7331
|
)) })
|
|
@@ -7335,13 +7338,13 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7335
7338
|
parentId: r = void 0,
|
|
7336
7339
|
position: a = -1
|
|
7337
7340
|
}) => {
|
|
7338
|
-
const { t: l } = useTranslation(), [i, c] = useAtom$1(addBlockTabAtom), [, d] = useAtom$1(showPredefinedBlockCategoryAtom), p = useBuilderProp("importHTMLSupport", !0), { data: u } = usePartialBlocksList(), g = Object.keys(u || {}).length > 0, { hasPermission:
|
|
7341
|
+
const { t: l } = useTranslation(), [i, c] = useAtom$1(addBlockTabAtom), [, d] = useAtom$1(showPredefinedBlockCategoryAtom), p = useBuilderProp("importHTMLSupport", !0), { data: u } = usePartialBlocksList(), g = Object.keys(u || {}).length > 0, { hasPermission: m } = usePermissions();
|
|
7339
7342
|
useEffect(() => {
|
|
7340
7343
|
i === "partials" && !g && c("library");
|
|
7341
7344
|
}, [i, g, c]);
|
|
7342
|
-
const
|
|
7345
|
+
const h = useCallback(() => {
|
|
7343
7346
|
pubsub.publish(CHAI_BUILDER_EVENTS.CLOSE_ADD_BLOCK);
|
|
7344
|
-
}, []), f = useChaiAddBlockTabs(), x = p &&
|
|
7347
|
+
}, []), f = useChaiAddBlockTabs(), x = p && m(PERMISSIONS.IMPORT_HTML), b = useChaiLibraries().length > 0;
|
|
7345
7348
|
return useEffect(() => {
|
|
7346
7349
|
i === "library" && !b && c("core");
|
|
7347
7350
|
}, [i, b, c]), /* @__PURE__ */ jsxs("div", { className: cn$2("flex h-full w-full flex-col overflow-hidden", o), children: [
|
|
@@ -7369,7 +7372,7 @@ const registerChaiLibrary = (o, n) => {
|
|
|
7369
7372
|
b && /* @__PURE__ */ jsx(TabsContent, { value: "library", className: "h-full max-h-full flex-1 pb-20", children: /* @__PURE__ */ jsx(UILibrariesPanel, { parentId: r, position: a }) }),
|
|
7370
7373
|
g && /* @__PURE__ */ jsx(TabsContent, { value: "partials", className: "h-full max-h-full flex-1 pb-20", children: /* @__PURE__ */ jsx("div", { className: "-mx-1.5 h-full max-h-full overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "mt-2 h-full w-full", children: /* @__PURE__ */ jsx(PartialBlocks, { gridCols: "grid-cols-4", parentId: r, position: a }) }) }) }),
|
|
7371
7374
|
x ? /* @__PURE__ */ jsx(TabsContent, { value: "html", className: "h-full max-h-full flex-1 pb-20", children: /* @__PURE__ */ jsx(ImportHTML, { parentId: r, position: a }) }) : null,
|
|
7372
|
-
map(f, (v) => /* @__PURE__ */ jsx(TabsContent, { value: v.id, children: React__default.createElement(v.tabContent, { close:
|
|
7375
|
+
map(f, (v) => /* @__PURE__ */ jsx(TabsContent, { value: v.id, children: React__default.createElement(v.tabContent, { close: h, parentId: r, position: a }) }, `panel-add-block-${v.id}`))
|
|
7373
7376
|
]
|
|
7374
7377
|
}
|
|
7375
7378
|
)
|
|
@@ -7491,7 +7494,7 @@ const registerChaiSaveToLibrary = (o) => {
|
|
|
7491
7494
|
}, CANNOT_COPY_BLOCKS = !navigator.clipboard, CopyPasteBlocks = () => {
|
|
7492
7495
|
const [o] = useBlocksStore(), [n] = useSelectedBlockIds(), { pasteBlocks: r } = usePasteBlocks(), [, a, l] = useCopyBlocks(), { t: i } = useTranslation(), c = useSelectedBlock(), d = useCallback(() => {
|
|
7493
7496
|
const p = n.map((u) => {
|
|
7494
|
-
const g = o.find((
|
|
7497
|
+
const g = o.find((m) => m._id === u);
|
|
7495
7498
|
return {
|
|
7496
7499
|
id: u,
|
|
7497
7500
|
data: g
|
|
@@ -7673,11 +7676,11 @@ const Input = ({ node: o }) => {
|
|
|
7673
7676
|
}
|
|
7674
7677
|
);
|
|
7675
7678
|
}, currentAddSelection = atom(null), Node = memo(({ node: o, style: n, dragHandle: r }) => {
|
|
7676
|
-
var
|
|
7679
|
+
var R;
|
|
7677
7680
|
const { t: a } = useTranslation(), [l, , i] = useHiddenBlockIds(), [c] = useAtom$1(canvasIframeAtom), { hasPermission: d } = usePermissions();
|
|
7678
7681
|
let p = null;
|
|
7679
|
-
const u = o.children.length > 0, { highlightBlock: g, clearHighlight:
|
|
7680
|
-
L.stopPropagation(), !l.includes(
|
|
7682
|
+
const u = o.children.length > 0, { highlightBlock: g, clearHighlight: m } = useBlockHighlight(), { id: h, data: f, isSelected: x, willReceiveDrop: y, isDragging: b, isEditing: v, handleClick: B } = o, w = (L) => {
|
|
7683
|
+
L.stopPropagation(), !l.includes(h) && o.toggle();
|
|
7681
7684
|
}, E = (L) => {
|
|
7682
7685
|
L.isInternal && (p = L.isOpen, L.isOpen && L.close());
|
|
7683
7686
|
}, _ = (L) => {
|
|
@@ -7688,25 +7691,25 @@ const Input = ({ node: o }) => {
|
|
|
7688
7691
|
}, C = () => {
|
|
7689
7692
|
A(null);
|
|
7690
7693
|
}, k = (L) => {
|
|
7691
|
-
C(), L.stopPropagation(), !o.isOpen && !l.includes(
|
|
7694
|
+
C(), L.stopPropagation(), !o.isOpen && !l.includes(h) && o.toggle(), B(L);
|
|
7692
7695
|
};
|
|
7693
7696
|
useEffect(() => {
|
|
7694
7697
|
const L = setTimeout(() => {
|
|
7695
|
-
y && !o.isOpen && !b && !l.includes(
|
|
7698
|
+
y && !o.isOpen && !b && !l.includes(h) && o.toggle();
|
|
7696
7699
|
}, 500);
|
|
7697
7700
|
return () => clearTimeout(L);
|
|
7698
7701
|
}, [y, o, b]);
|
|
7699
7702
|
const j = (L, D) => {
|
|
7700
|
-
const O = c.contentDocument || c.contentWindow.document,
|
|
7701
|
-
|
|
7702
|
-
const $ =
|
|
7703
|
-
$.top >= M.top && $.left >= M.left && $.bottom <= M.bottom && $.right <= M.right || (O.documentElement.scrollTop =
|
|
7703
|
+
const O = c.contentDocument || c.contentWindow.document, P = O.querySelector(`[data-block-id=${L}]`);
|
|
7704
|
+
P && P.setAttribute("data-drop", D);
|
|
7705
|
+
const $ = P.getBoundingClientRect(), M = c.getBoundingClientRect();
|
|
7706
|
+
$.top >= M.top && $.left >= M.left && $.bottom <= M.bottom && $.right <= M.right || (O.documentElement.scrollTop = P.offsetTop - M.top);
|
|
7704
7707
|
}, T = (L) => {
|
|
7705
7708
|
C();
|
|
7706
7709
|
const D = get(o, "parent.id");
|
|
7707
7710
|
D !== "__REACT_ARBORIST_INTERNAL_ROOT__" ? pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK, { _id: D, position: L }) : pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK, { position: L });
|
|
7708
7711
|
};
|
|
7709
|
-
if (
|
|
7712
|
+
if (h === ROOT_TEMP_KEY)
|
|
7710
7713
|
return /* @__PURE__ */ jsxs("div", { className: "group relative w-full cursor-pointer", children: [
|
|
7711
7714
|
/* @__PURE__ */ jsx("br", {}),
|
|
7712
7715
|
d(PERMISSIONS.ADD_BLOCK) && /* @__PURE__ */ jsx(
|
|
@@ -7728,25 +7731,25 @@ const Input = ({ node: o }) => {
|
|
|
7728
7731
|
return /* @__PURE__ */ jsx("div", { className: "w-full", children: /* @__PURE__ */ jsxs(
|
|
7729
7732
|
"div",
|
|
7730
7733
|
{
|
|
7731
|
-
onMouseEnter: () => g(
|
|
7732
|
-
onMouseLeave: () =>
|
|
7734
|
+
onMouseEnter: () => g(h),
|
|
7735
|
+
onMouseLeave: () => m(),
|
|
7733
7736
|
onClick: k,
|
|
7734
7737
|
style: n,
|
|
7735
|
-
"data-node-id":
|
|
7736
|
-
ref: l.includes(
|
|
7738
|
+
"data-node-id": h,
|
|
7739
|
+
ref: l.includes(h) ? null : r,
|
|
7737
7740
|
onDragStart: () => E(o),
|
|
7738
7741
|
onDragEnd: () => _(o),
|
|
7739
7742
|
onDragOver: (L) => {
|
|
7740
|
-
L.preventDefault(), j(
|
|
7743
|
+
L.preventDefault(), j(h, "yes");
|
|
7741
7744
|
},
|
|
7742
7745
|
onDragLeave: (L) => {
|
|
7743
|
-
L.preventDefault(), j(
|
|
7746
|
+
L.preventDefault(), j(h, "no");
|
|
7744
7747
|
},
|
|
7745
7748
|
onDrop: (L) => {
|
|
7746
|
-
L.preventDefault(), j(
|
|
7749
|
+
L.preventDefault(), j(h, "no");
|
|
7747
7750
|
},
|
|
7748
7751
|
children: [
|
|
7749
|
-
d(PERMISSIONS.ADD_BLOCK) && (o == null ? void 0 : o.rowIndex) > 0 && (o.parent.isOpen && canAddChildBlock(get(o, "parent.data._type")) || ((
|
|
7752
|
+
d(PERMISSIONS.ADD_BLOCK) && (o == null ? void 0 : o.rowIndex) > 0 && (o.parent.isOpen && canAddChildBlock(get(o, "parent.data._type")) || ((R = o == null ? void 0 : o.parent) == null ? void 0 : R.id) === "__REACT_ARBORIST_INTERNAL_ROOT__") && /* @__PURE__ */ jsx("div", { className: "group relative ml-5 h-full w-full cursor-pointer", children: /* @__PURE__ */ jsx(
|
|
7750
7753
|
"div",
|
|
7751
7754
|
{
|
|
7752
7755
|
onClick: (L) => {
|
|
@@ -7767,7 +7770,7 @@ const Input = ({ node: o }) => {
|
|
|
7767
7770
|
y && canAcceptChildBlock(f._type, "Icon") ? "bg-green-200" : "",
|
|
7768
7771
|
(o == null ? void 0 : o.id) === S ? "bg-primary/10" : "",
|
|
7769
7772
|
b && "opacity-20",
|
|
7770
|
-
l.includes(
|
|
7773
|
+
l.includes(h) ? "opacity-50" : "",
|
|
7771
7774
|
I && x && "bg-primary/20 text-primary"
|
|
7772
7775
|
),
|
|
7773
7776
|
children: [
|
|
@@ -7804,11 +7807,11 @@ const Input = ({ node: o }) => {
|
|
|
7804
7807
|
)
|
|
7805
7808
|
] }),
|
|
7806
7809
|
/* @__PURE__ */ jsxs("div", { className: "invisible flex items-center space-x-1.5 pr-2 group-hover:visible", children: [
|
|
7807
|
-
canAddChildBlock(f == null ? void 0 : f._type) && !l.includes(
|
|
7810
|
+
canAddChildBlock(f == null ? void 0 : f._type) && !l.includes(h) && d(PERMISSIONS.ADD_BLOCK) ? /* @__PURE__ */ jsxs(Tooltip, { children: [
|
|
7808
7811
|
/* @__PURE__ */ jsx(
|
|
7809
7812
|
TooltipTrigger,
|
|
7810
7813
|
{
|
|
7811
|
-
onClick: () => pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK, { _id:
|
|
7814
|
+
onClick: () => pubsub.publish(CHAI_BUILDER_EVENTS.OPEN_ADD_BLOCK, { _id: h }),
|
|
7812
7815
|
className: "cursor-pointer rounded bg-transparent",
|
|
7813
7816
|
asChild: !0,
|
|
7814
7817
|
children: /* @__PURE__ */ jsx(PlusIcon, { className: "h-3 w-3" })
|
|
@@ -7821,7 +7824,7 @@ const Input = ({ node: o }) => {
|
|
|
7821
7824
|
TooltipTrigger,
|
|
7822
7825
|
{
|
|
7823
7826
|
onClick: (L) => {
|
|
7824
|
-
L.stopPropagation(), i(
|
|
7827
|
+
L.stopPropagation(), i(h), o.isOpen && o.toggle();
|
|
7825
7828
|
},
|
|
7826
7829
|
className: "cursor-pointer rounded bg-transparent",
|
|
7827
7830
|
asChild: !0,
|
|
@@ -7830,7 +7833,7 @@ const Input = ({ node: o }) => {
|
|
|
7830
7833
|
),
|
|
7831
7834
|
/* @__PURE__ */ jsx(TooltipContent, { className: "isolate z-[9999]", side: "bottom", children: a("Hide block") })
|
|
7832
7835
|
] }),
|
|
7833
|
-
/* @__PURE__ */ jsx(BlockMoreOptions, { node: o, id:
|
|
7836
|
+
/* @__PURE__ */ jsx(BlockMoreOptions, { node: o, id: h, children: /* @__PURE__ */ jsx(MoreVertical, { size: "15" }) })
|
|
7834
7837
|
] })
|
|
7835
7838
|
]
|
|
7836
7839
|
}
|
|
@@ -8095,9 +8098,9 @@ const Input = ({ node: o }) => {
|
|
|
8095
8098
|
)
|
|
8096
8099
|
] });
|
|
8097
8100
|
}, ThemeConfigPanel = React.memo(({ className: o = "" }) => {
|
|
8098
|
-
const [n] = useDarkMode(), [r, a] = React.useState(""), l = useBuilderProp("themePresets", []), i = useBuilderProp("themePanelComponent", null), { hasPermission: c } = usePermissions(), [d, p] = useTheme(), u = useThemeOptions(), { t: g } = useTranslation(),
|
|
8101
|
+
const [n] = useDarkMode(), [r, a] = React.useState(""), l = useBuilderProp("themePresets", []), i = useBuilderProp("themePanelComponent", null), { hasPermission: c } = usePermissions(), [d, p] = useTheme(), u = useThemeOptions(), { t: g } = useTranslation(), m = (v) => {
|
|
8099
8102
|
a(v);
|
|
8100
|
-
},
|
|
8103
|
+
}, h = () => {
|
|
8101
8104
|
const v = l.find((B) => Object.keys(B)[0] === r);
|
|
8102
8105
|
if (v) {
|
|
8103
8106
|
const B = Object.values(v)[0];
|
|
@@ -8162,7 +8165,7 @@ const Input = ({ node: o }) => {
|
|
|
8162
8165
|
"select",
|
|
8163
8166
|
{
|
|
8164
8167
|
value: r,
|
|
8165
|
-
onChange: (v) =>
|
|
8168
|
+
onChange: (v) => m(v.target.value),
|
|
8166
8169
|
className: "w-full space-y-0.5 rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
|
|
8167
8170
|
children: [
|
|
8168
8171
|
/* @__PURE__ */ jsx("option", { value: "", children: "Select preset" }),
|
|
@@ -8177,7 +8180,7 @@ const Input = ({ node: o }) => {
|
|
|
8177
8180
|
className: "w-full text-sm",
|
|
8178
8181
|
disabled: r === "",
|
|
8179
8182
|
variant: "default",
|
|
8180
|
-
onClick:
|
|
8183
|
+
onClick: h,
|
|
8181
8184
|
children: g("Apply")
|
|
8182
8185
|
}
|
|
8183
8186
|
) })
|
|
@@ -8671,14 +8674,14 @@ function QuickPrompts({ onClick: o }) {
|
|
|
8671
8674
|
) }) });
|
|
8672
8675
|
}
|
|
8673
8676
|
const AIUserPrompt = ({ blockId: o }) => {
|
|
8674
|
-
const { t: n } = useTranslation(), { askAi: r, loading: a, error: l } = useAskAi(), [i, c] = useState(""), [d, p] = useState(!0), [u, g] = useState(),
|
|
8677
|
+
const { t: n } = useTranslation(), { askAi: r, loading: a, error: l } = useAskAi(), [i, c] = useState(""), [d, p] = useState(!0), [u, g] = useState(), m = useRef(null), h = useRef(null);
|
|
8675
8678
|
useEffect(() => {
|
|
8676
8679
|
var x;
|
|
8677
|
-
(x =
|
|
8680
|
+
(x = m.current) == null || x.focus();
|
|
8678
8681
|
}, []);
|
|
8679
8682
|
const f = (x) => {
|
|
8680
8683
|
const { usage: y } = x || {};
|
|
8681
|
-
!l && y && g(y),
|
|
8684
|
+
!l && y && g(y), h.current = setTimeout(() => g(void 0), 1e4), l || c("");
|
|
8682
8685
|
};
|
|
8683
8686
|
return /* @__PURE__ */ jsxs("div", { className: "", children: [
|
|
8684
8687
|
/* @__PURE__ */ jsxs(
|
|
@@ -8696,14 +8699,14 @@ const AIUserPrompt = ({ blockId: o }) => {
|
|
|
8696
8699
|
/* @__PURE__ */ jsx(
|
|
8697
8700
|
Textarea,
|
|
8698
8701
|
{
|
|
8699
|
-
ref:
|
|
8702
|
+
ref: m,
|
|
8700
8703
|
value: i,
|
|
8701
8704
|
onChange: (x) => c(x.target.value),
|
|
8702
8705
|
placeholder: n("Ask AI to edit content"),
|
|
8703
8706
|
className: "w-full",
|
|
8704
8707
|
rows: 3,
|
|
8705
8708
|
onKeyDown: (x) => {
|
|
8706
|
-
x.key === "Enter" && (x.preventDefault(),
|
|
8709
|
+
x.key === "Enter" && (x.preventDefault(), h.current && clearTimeout(h.current), g(void 0), r("content", o, i, f));
|
|
8707
8710
|
}
|
|
8708
8711
|
}
|
|
8709
8712
|
),
|
|
@@ -8713,7 +8716,7 @@ const AIUserPrompt = ({ blockId: o }) => {
|
|
|
8713
8716
|
{
|
|
8714
8717
|
disabled: i.trim().length < 5 || a,
|
|
8715
8718
|
onClick: () => {
|
|
8716
|
-
|
|
8719
|
+
h.current && clearTimeout(h.current), g(void 0), r("content", o, i, f);
|
|
8717
8720
|
},
|
|
8718
8721
|
variant: "default",
|
|
8719
8722
|
className: "w-fit",
|
|
@@ -8746,7 +8749,7 @@ const AIUserPrompt = ({ blockId: o }) => {
|
|
|
8746
8749
|
QuickPrompts,
|
|
8747
8750
|
{
|
|
8748
8751
|
onClick: (x) => {
|
|
8749
|
-
|
|
8752
|
+
h.current && clearTimeout(h.current), g(void 0), r("content", o, x, f);
|
|
8750
8753
|
}
|
|
8751
8754
|
}
|
|
8752
8755
|
)
|
|
@@ -8756,13 +8759,13 @@ const AIUserPrompt = ({ blockId: o }) => {
|
|
|
8756
8759
|
] }) }) : null
|
|
8757
8760
|
] });
|
|
8758
8761
|
}, AISetContext = () => {
|
|
8759
|
-
const { t: o } = useTranslation(), n = useBuilderProp("aiContext", ""), [r, a] = useState(n), l = useRef(null), i = useBuilderProp("saveAiContextCallback", noop), [c, d] = useState(!1), [p, u] = useState(null), [, g] = useState(!1),
|
|
8762
|
+
const { t: o } = useTranslation(), n = useBuilderProp("aiContext", ""), [r, a] = useState(n), l = useRef(null), i = useBuilderProp("saveAiContextCallback", noop), [c, d] = useState(!1), [p, u] = useState(null), [, g] = useState(!1), m = useRef(null);
|
|
8760
8763
|
useEffect(() => {
|
|
8761
8764
|
n && a(n);
|
|
8762
8765
|
}, [n]);
|
|
8763
|
-
const
|
|
8766
|
+
const h = async () => {
|
|
8764
8767
|
try {
|
|
8765
|
-
d(!0), u(null), await i(r), toast.success(o("Updated AI Context")),
|
|
8768
|
+
d(!0), u(null), await i(r), toast.success(o("Updated AI Context")), m.current.click();
|
|
8766
8769
|
} catch (f) {
|
|
8767
8770
|
u(f);
|
|
8768
8771
|
} finally {
|
|
@@ -8778,7 +8781,7 @@ const AIUserPrompt = ({ blockId: o }) => {
|
|
|
8778
8781
|
type: "single",
|
|
8779
8782
|
collapsible: !0,
|
|
8780
8783
|
children: /* @__PURE__ */ jsxs(AccordionItem, { value: "set-context", className: "border-none", children: [
|
|
8781
|
-
/* @__PURE__ */ jsx(AccordionTrigger, { ref:
|
|
8784
|
+
/* @__PURE__ */ jsx(AccordionTrigger, { ref: m, className: "border-0 border-border py-2", children: /* @__PURE__ */ jsx("div", { className: "flex w-full items-center justify-between", children: /* @__PURE__ */ jsx("span", { className: "font-medium", children: o("AI Context") }) }) }),
|
|
8782
8785
|
/* @__PURE__ */ jsxs(AccordionContent, { children: [
|
|
8783
8786
|
/* @__PURE__ */ jsx(
|
|
8784
8787
|
Textarea,
|
|
@@ -8790,7 +8793,7 @@ const AIUserPrompt = ({ blockId: o }) => {
|
|
|
8790
8793
|
className: "mt-1 w-full",
|
|
8791
8794
|
rows: 10,
|
|
8792
8795
|
onKeyDown: (f) => {
|
|
8793
|
-
f.key === "Enter" && (f.preventDefault(),
|
|
8796
|
+
f.key === "Enter" && (f.preventDefault(), h());
|
|
8794
8797
|
}
|
|
8795
8798
|
}
|
|
8796
8799
|
),
|
|
@@ -8802,7 +8805,7 @@ const AIUserPrompt = ({ blockId: o }) => {
|
|
|
8802
8805
|
Button,
|
|
8803
8806
|
{
|
|
8804
8807
|
disabled: r.trim().length < 5,
|
|
8805
|
-
onClick: () =>
|
|
8808
|
+
onClick: () => h(),
|
|
8806
8809
|
variant: "default",
|
|
8807
8810
|
className: "w-fit",
|
|
8808
8811
|
size: "sm",
|
|
@@ -8831,7 +8834,7 @@ const AIUserPrompt = ({ blockId: o }) => {
|
|
|
8831
8834
|
AlertDialogAction,
|
|
8832
8835
|
{
|
|
8833
8836
|
onClick: () => {
|
|
8834
|
-
a(""),
|
|
8837
|
+
a(""), h();
|
|
8835
8838
|
},
|
|
8836
8839
|
children: o("Yes, Delete")
|
|
8837
8840
|
}
|
|
@@ -8892,7 +8895,7 @@ function AIChatPanel() {
|
|
|
8892
8895
|
}, [o]), useEffect(() => {
|
|
8893
8896
|
g.current && (g.current.style.height = "auto", g.current.style.height = `${Math.min(g.current.scrollHeight, 120)}px`);
|
|
8894
8897
|
}, [r]);
|
|
8895
|
-
const
|
|
8898
|
+
const m = async () => {
|
|
8896
8899
|
if (!r.trim() && !c) return;
|
|
8897
8900
|
const b = {
|
|
8898
8901
|
id: Date.now().toString(),
|
|
@@ -8909,8 +8912,8 @@ function AIChatPanel() {
|
|
|
8909
8912
|
};
|
|
8910
8913
|
n((B) => [...B, v]), i(!1), d(null);
|
|
8911
8914
|
}, 1500);
|
|
8912
|
-
},
|
|
8913
|
-
b.key === "Enter" && !b.shiftKey && (b.preventDefault(),
|
|
8915
|
+
}, h = (b) => {
|
|
8916
|
+
b.key === "Enter" && !b.shiftKey && (b.preventDefault(), m());
|
|
8914
8917
|
}, f = (b) => {
|
|
8915
8918
|
var B;
|
|
8916
8919
|
const v = (B = b.target.files) == null ? void 0 : B[0];
|
|
@@ -8983,7 +8986,7 @@ function AIChatPanel() {
|
|
|
8983
8986
|
ref: g,
|
|
8984
8987
|
value: r,
|
|
8985
8988
|
onChange: (b) => a(b.target.value),
|
|
8986
|
-
onKeyDown:
|
|
8989
|
+
onKeyDown: h,
|
|
8987
8990
|
placeholder: "Ask something...",
|
|
8988
8991
|
className: "max-h-[120px] min-h-[40px] resize-none border-0 bg-muted/50 py-2.5 pr-10 focus-visible:ring-1"
|
|
8989
8992
|
}
|
|
@@ -9005,7 +9008,7 @@ function AIChatPanel() {
|
|
|
9005
9008
|
{
|
|
9006
9009
|
size: "sm",
|
|
9007
9010
|
className: "h-10 px-3",
|
|
9008
|
-
onClick:
|
|
9011
|
+
onClick: m,
|
|
9009
9012
|
disabled: l || !r.trim() && !c,
|
|
9010
9013
|
children: [
|
|
9011
9014
|
/* @__PURE__ */ jsx(Send, { className: "mr-1 h-4 w-4" }),
|
|
@@ -9113,18 +9116,18 @@ const AiAssistant = () => {
|
|
|
9113
9116
|
preloadedAttributes: n = [],
|
|
9114
9117
|
onAttributesChange: r
|
|
9115
9118
|
}) {
|
|
9116
|
-
const [a, l] = useState([]), [i, c] = useState(""), [d, p] = useState(""), [u, g] = useState(null), [
|
|
9119
|
+
const [a, l] = useState([]), [i, c] = useState(""), [d, p] = useState(""), [u, g] = useState(null), [m, h] = useState(""), f = useRef(null), x = useRef(null), y = usePageExternalData();
|
|
9117
9120
|
useEffect(() => {
|
|
9118
9121
|
l(n);
|
|
9119
9122
|
}, [n]);
|
|
9120
9123
|
const b = () => {
|
|
9121
9124
|
if (i.startsWith("@")) {
|
|
9122
|
-
|
|
9125
|
+
h("Attribute keys cannot start with '@'");
|
|
9123
9126
|
return;
|
|
9124
9127
|
}
|
|
9125
9128
|
if (i) {
|
|
9126
9129
|
const S = [...a, { key: i, value: d }];
|
|
9127
|
-
r(S), l(a), c(""), p(""),
|
|
9130
|
+
r(S), l(a), c(""), p(""), h("");
|
|
9128
9131
|
}
|
|
9129
9132
|
}, v = (S) => {
|
|
9130
9133
|
const A = a.filter((N, C) => C !== S);
|
|
@@ -9133,33 +9136,33 @@ const AiAssistant = () => {
|
|
|
9133
9136
|
g(S), c(a[S].key), p(a[S].value);
|
|
9134
9137
|
}, w = () => {
|
|
9135
9138
|
if (i.startsWith("@")) {
|
|
9136
|
-
|
|
9139
|
+
h("Attribute keys cannot start with '@'");
|
|
9137
9140
|
return;
|
|
9138
9141
|
}
|
|
9139
9142
|
if (u !== null && i) {
|
|
9140
9143
|
const S = [...a];
|
|
9141
|
-
S[u] = { key: i, value: d }, r(S), l(S), g(null), c(""), p(""),
|
|
9144
|
+
S[u] = { key: i, value: d }, r(S), l(S), g(null), c(""), p(""), h("");
|
|
9142
9145
|
}
|
|
9143
9146
|
}, E = (S) => {
|
|
9144
9147
|
S.key === "Enter" && !S.shiftKey && (S.preventDefault(), u !== null ? w() : b());
|
|
9145
9148
|
}, _ = useCallback((S) => {
|
|
9146
9149
|
const A = (k) => /[.,!?;:]/.test(k), N = (k, j, T) => {
|
|
9147
|
-
let I = "",
|
|
9150
|
+
let I = "", R = "";
|
|
9148
9151
|
const L = j > 0 ? k[j - 1] : "", D = j < k.length ? k[j] : "";
|
|
9149
|
-
return j > 0 && (L === "." || !A(L) && L !== " ") && (I = " "), j < k.length && !A(D) && D !== " " && (
|
|
9150
|
-
text: I + T +
|
|
9152
|
+
return j > 0 && (L === "." || !A(L) && L !== " ") && (I = " "), j < k.length && !A(D) && D !== " " && (R = " "), {
|
|
9153
|
+
text: I + T + R,
|
|
9151
9154
|
prefixLength: I.length,
|
|
9152
|
-
suffixLength:
|
|
9155
|
+
suffixLength: R.length
|
|
9153
9156
|
};
|
|
9154
9157
|
}, C = x.current;
|
|
9155
9158
|
if (C) {
|
|
9156
9159
|
const k = C.selectionStart || 0, j = C.value || "", T = C.selectionEnd || k;
|
|
9157
9160
|
if (T > k) {
|
|
9158
|
-
const O = `{{${S}}}`, { text:
|
|
9161
|
+
const O = `{{${S}}}`, { text: P } = N(j, k, O), $ = j.slice(0, k) + P + j.slice(T);
|
|
9159
9162
|
p($);
|
|
9160
9163
|
return;
|
|
9161
9164
|
}
|
|
9162
|
-
const
|
|
9165
|
+
const R = `{{${S}}}`, { text: L } = N(j, k, R), D = j.slice(0, k) + L + j.slice(k);
|
|
9163
9166
|
p(D);
|
|
9164
9167
|
}
|
|
9165
9168
|
}, []);
|
|
@@ -9214,7 +9217,7 @@ const AiAssistant = () => {
|
|
|
9214
9217
|
] })
|
|
9215
9218
|
] }),
|
|
9216
9219
|
/* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx(Button, { type: "submit", disabled: !i.length, variant: "default", size: "sm", className: "h-8 w-24 text-xs", children: u !== null ? "Save" : "Add" }) }),
|
|
9217
|
-
|
|
9220
|
+
m && /* @__PURE__ */ jsx("p", { className: "text-xs text-red-500", children: m })
|
|
9218
9221
|
]
|
|
9219
9222
|
}
|
|
9220
9223
|
),
|
|
@@ -9345,9 +9348,9 @@ const RootLayout = () => {
|
|
|
9345
9348
|
usePubSub(CHAI_BUILDER_EVENTS.SHOW_BLOCK_SETTINGS, () => {
|
|
9346
9349
|
r("outline");
|
|
9347
9350
|
});
|
|
9348
|
-
const p = useSidebarDefaultPanels(), u = useChaiSidebarPanels("top"), g = useChaiSidebarPanels("bottom"),
|
|
9351
|
+
const p = useSidebarDefaultPanels(), u = useChaiSidebarPanels("top"), g = useChaiSidebarPanels("bottom"), m = useCallback((S) => {
|
|
9349
9352
|
S.preventDefault();
|
|
9350
|
-
}, []),
|
|
9353
|
+
}, []), h = useCallback(
|
|
9351
9354
|
(S) => {
|
|
9352
9355
|
r(n === S ? null : S);
|
|
9353
9356
|
},
|
|
@@ -9376,15 +9379,15 @@ const RootLayout = () => {
|
|
|
9376
9379
|
}, [n, x]);
|
|
9377
9380
|
const _ = useCallback(
|
|
9378
9381
|
(S) => {
|
|
9379
|
-
|
|
9382
|
+
h(S);
|
|
9380
9383
|
},
|
|
9381
|
-
[
|
|
9384
|
+
[h]
|
|
9382
9385
|
);
|
|
9383
9386
|
return /* @__PURE__ */ jsx("div", { dir: y, className: "h-screen max-h-full w-screen overflow-x-hidden bg-background text-foreground", children: /* @__PURE__ */ jsxs(TooltipProvider, { children: [
|
|
9384
9387
|
/* @__PURE__ */ jsxs(
|
|
9385
9388
|
"div",
|
|
9386
9389
|
{
|
|
9387
|
-
onContextMenu:
|
|
9390
|
+
onContextMenu: m,
|
|
9388
9391
|
className: "flex h-screen max-h-full flex-col bg-background text-foreground",
|
|
9389
9392
|
children: [
|
|
9390
9393
|
/* @__PURE__ */ jsx("div", { className: "flex h-[50px] w-screen items-center border-b border-border", children: /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(o, {}) }) }),
|
|
@@ -9472,19 +9475,27 @@ const RootLayout = () => {
|
|
|
9472
9475
|
}
|
|
9473
9476
|
),
|
|
9474
9477
|
/* @__PURE__ */ jsx(AddBlocksDialog, {}),
|
|
9475
|
-
n !== null && get(b, "view") === "drawer" && /* @__PURE__ */ jsx(Sheet, { open: !0, onOpenChange: () => w(), children: /* @__PURE__ */ jsxs(
|
|
9476
|
-
|
|
9477
|
-
|
|
9478
|
-
|
|
9479
|
-
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
|
|
9483
|
-
|
|
9478
|
+
n !== null && get(b, "view") === "drawer" && /* @__PURE__ */ jsx(Sheet, { open: !0, onOpenChange: () => w(), children: /* @__PURE__ */ jsxs(
|
|
9479
|
+
SheetContent,
|
|
9480
|
+
{
|
|
9481
|
+
side: "left",
|
|
9482
|
+
className: "flex flex-col gap-0 p-0 sm:max-w-full",
|
|
9483
|
+
style: { width: `${v}px` },
|
|
9484
|
+
children: [
|
|
9485
|
+
/* @__PURE__ */ jsx(SheetHeader, { className: "border-b border-border px-2 py-2.5", children: /* @__PURE__ */ jsxs(SheetTitle, { className: "flex items-center gap-2", children: [
|
|
9486
|
+
/* @__PURE__ */ jsx("span", { className: "inline-block", children: get(b, "icon", null) }),
|
|
9487
|
+
/* @__PURE__ */ jsx("span", { children: f(get(b, "label", "")) })
|
|
9488
|
+
] }) }),
|
|
9489
|
+
/* @__PURE__ */ jsx("div", { className: "h-full max-h-full overflow-y-auto p-4", children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx("div", { children: "Loading..." }), children: React__default.createElement(get(b, "panel", NoopComponent), {
|
|
9490
|
+
close: E
|
|
9491
|
+
}) }) })
|
|
9492
|
+
]
|
|
9493
|
+
}
|
|
9494
|
+
) }),
|
|
9484
9495
|
" ",
|
|
9485
|
-
n !== null && get(b, "view") === "modal" && /* @__PURE__ */ jsx(Dialog, { open: !0, onOpenChange: () => w(), children: /* @__PURE__ */ jsxs(DialogContent, { className: "p-0", style: { maxWidth: `${v}px` }, children: [
|
|
9486
|
-
/* @__PURE__ */ jsx(DialogHeader, { className: "border-b border-border
|
|
9487
|
-
/* @__PURE__ */ jsx("span", { className: "
|
|
9496
|
+
n !== null && get(b, "view") === "modal" && /* @__PURE__ */ jsx(Dialog, { open: !0, onOpenChange: () => w(), children: /* @__PURE__ */ jsxs(DialogContent, { className: "gap-0 p-0", style: { maxWidth: `${v}px` }, children: [
|
|
9497
|
+
/* @__PURE__ */ jsx(DialogHeader, { className: "border-b border-border px-2 py-3.5", children: /* @__PURE__ */ jsxs(DialogTitle, { className: "flex items-center gap-2", children: [
|
|
9498
|
+
/* @__PURE__ */ jsx("span", { className: "inline-block", children: get(b, "icon", null) }),
|
|
9488
9499
|
/* @__PURE__ */ jsx("span", { children: f(get(b, "label", "")) })
|
|
9489
9500
|
] }) }),
|
|
9490
9501
|
/* @__PURE__ */ jsx("div", { className: "max-h-[70vh] overflow-y-auto p-4", children: /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx("div", { children: "Loading..." }), children: React__default.createElement(get(b, "panel", NoopComponent), {
|
|
@@ -9547,18 +9558,35 @@ const RootLayout = () => {
|
|
|
9547
9558
|
const l = first(o);
|
|
9548
9559
|
isString(l) && (a = [l, ...getParentNodeIds(n, l)]), r(a);
|
|
9549
9560
|
}, [o, n, r]);
|
|
9550
|
-
}, ScreenTooSmall = () => /* @__PURE__ */ jsx("section", { className: "h-screen w-screen bg-
|
|
9561
|
+
}, ScreenTooSmall = () => /* @__PURE__ */ jsx("section", { className: "fixed inset-0 z-50 flex h-screen w-screen items-center justify-center bg-white bg-[linear-gradient(to_right,#f3f4f6_1px,transparent_1px),linear-gradient(to_bottom,#f3f4f6_1px,transparent_1px)] bg-[size:10px_10px] py-12 sm:py-16 lg:py-20 xl:hidden", children: /* @__PURE__ */ jsx("div", { className: "mx-auto max-w-7xl px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-md space-y-6 text-center", children: [
|
|
9551
9562
|
/* @__PURE__ */ jsx(
|
|
9552
9563
|
"img",
|
|
9553
9564
|
{
|
|
9554
|
-
src: "https://
|
|
9565
|
+
src: "https://ucarecdn.com/fbfc3b05-cb73-4e99-92a2-3a367b7c36cd/",
|
|
9555
9566
|
alt: "Chai Builder",
|
|
9556
|
-
className: "mx-auto w-
|
|
9567
|
+
className: "mx-auto h-20 w-20 rounded-full shadow-lg transition-transform duration-300 hover:scale-105"
|
|
9557
9568
|
}
|
|
9558
9569
|
),
|
|
9559
|
-
/* @__PURE__ */
|
|
9560
|
-
|
|
9561
|
-
|
|
9570
|
+
/* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
9571
|
+
/* @__PURE__ */ jsx("h2", { className: "text-5xl font-bold tracking-tight text-gray-900", children: "Screen too small" }),
|
|
9572
|
+
/* @__PURE__ */ jsxs("p", { className: "mx-auto max-w-sm text-sm leading-7 text-gray-600", children: [
|
|
9573
|
+
"Please view this page on greater than ",
|
|
9574
|
+
/* @__PURE__ */ jsx("strong", { className: "font-medium", children: "1280px" }),
|
|
9575
|
+
" screen width for the best experience."
|
|
9576
|
+
] })
|
|
9577
|
+
] }),
|
|
9578
|
+
/* @__PURE__ */ jsx("div", { className: "pt-4", children: /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center rounded-full bg-gray-100 px-4 py-2 text-sm text-gray-700", children: [
|
|
9579
|
+
/* @__PURE__ */ jsx("svg", { className: "mr-2 h-5 w-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx(
|
|
9580
|
+
"path",
|
|
9581
|
+
{
|
|
9582
|
+
strokeLinecap: "round",
|
|
9583
|
+
strokeLinejoin: "round",
|
|
9584
|
+
strokeWidth: "2",
|
|
9585
|
+
d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
|
|
9586
|
+
}
|
|
9587
|
+
) }),
|
|
9588
|
+
"Minimum width: 1280px"
|
|
9589
|
+
] }) })
|
|
9562
9590
|
] }) }) });
|
|
9563
9591
|
function getFromQueryParams(o) {
|
|
9564
9592
|
var r;
|
|
@@ -9613,17 +9641,17 @@ const FEATURE_TOGGLES = {
|
|
|
9613
9641
|
for (const i of n.p)
|
|
9614
9642
|
l.add(i);
|
|
9615
9643
|
return l;
|
|
9616
|
-
}, BUILDING_BLOCKS = Symbol(), buildStore = (o = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(), r = /* @__PURE__ */ new WeakMap(), a = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), c = {}, d = (
|
|
9644
|
+
}, BUILDING_BLOCKS = Symbol(), buildStore = (o = /* @__PURE__ */ new WeakMap(), n = /* @__PURE__ */ new WeakMap(), r = /* @__PURE__ */ new WeakMap(), a = /* @__PURE__ */ new Set(), l = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set(), c = {}, d = (h, ...f) => h.read(...f), p = (h, ...f) => h.write(...f), u = (h, f) => {
|
|
9617
9645
|
var x;
|
|
9618
|
-
return (x =
|
|
9619
|
-
}, g = (
|
|
9646
|
+
return (x = h.unstable_onInit) == null ? void 0 : x.call(h, f);
|
|
9647
|
+
}, g = (h, f) => {
|
|
9620
9648
|
var x;
|
|
9621
|
-
return (x =
|
|
9622
|
-
}, ...
|
|
9623
|
-
const
|
|
9649
|
+
return (x = h.onMount) == null ? void 0 : x.call(h, f);
|
|
9650
|
+
}, ...m) => {
|
|
9651
|
+
const h = m[0] || ((A) => {
|
|
9624
9652
|
let N = o.get(A);
|
|
9625
9653
|
return N || (N = { d: /* @__PURE__ */ new Map(), p: /* @__PURE__ */ new Set(), n: 0 }, o.set(A, N), u == null || u(A, S)), N;
|
|
9626
|
-
}), f =
|
|
9654
|
+
}), f = m[1] || (() => {
|
|
9627
9655
|
let A, N;
|
|
9628
9656
|
const C = (k) => {
|
|
9629
9657
|
try {
|
|
@@ -9642,10 +9670,10 @@ const FEATURE_TOGGLES = {
|
|
|
9642
9670
|
} while (a.size || i.size || l.size);
|
|
9643
9671
|
if (A)
|
|
9644
9672
|
throw N;
|
|
9645
|
-
}), x =
|
|
9673
|
+
}), x = m[2] || (() => {
|
|
9646
9674
|
const A = [], N = /* @__PURE__ */ new WeakSet(), C = /* @__PURE__ */ new WeakSet(), k = Array.from(a);
|
|
9647
9675
|
for (; k.length; ) {
|
|
9648
|
-
const j = k[k.length - 1], T =
|
|
9676
|
+
const j = k[k.length - 1], T = h(j);
|
|
9649
9677
|
if (C.has(j)) {
|
|
9650
9678
|
k.pop();
|
|
9651
9679
|
continue;
|
|
@@ -9660,22 +9688,22 @@ const FEATURE_TOGGLES = {
|
|
|
9660
9688
|
}
|
|
9661
9689
|
for (let j = A.length - 1; j >= 0; --j) {
|
|
9662
9690
|
const [T, I] = A[j];
|
|
9663
|
-
let
|
|
9691
|
+
let R = !1;
|
|
9664
9692
|
for (const L of I.d.keys())
|
|
9665
9693
|
if (L !== T && a.has(L)) {
|
|
9666
|
-
|
|
9694
|
+
R = !0;
|
|
9667
9695
|
break;
|
|
9668
9696
|
}
|
|
9669
|
-
|
|
9697
|
+
R && (y(T), B(T)), r.delete(T);
|
|
9670
9698
|
}
|
|
9671
|
-
}), y =
|
|
9699
|
+
}), y = m[3] || ((A) => {
|
|
9672
9700
|
var N, C;
|
|
9673
|
-
const k =
|
|
9701
|
+
const k = h(A);
|
|
9674
9702
|
if (isAtomStateInitialized(k) && (n.has(A) && r.get(A) !== k.n || Array.from(k.d).every(
|
|
9675
|
-
([
|
|
9703
|
+
([P, $]) => (
|
|
9676
9704
|
// Recursively, read the atom state of the dependency, and
|
|
9677
9705
|
// check if the atom epoch number is unchanged
|
|
9678
|
-
y(
|
|
9706
|
+
y(P).n === $
|
|
9679
9707
|
)
|
|
9680
9708
|
)))
|
|
9681
9709
|
return k;
|
|
@@ -9683,34 +9711,34 @@ const FEATURE_TOGGLES = {
|
|
|
9683
9711
|
let j = !0;
|
|
9684
9712
|
const T = () => {
|
|
9685
9713
|
n.has(A) && (B(A), x(), f());
|
|
9686
|
-
}, I = (
|
|
9714
|
+
}, I = (P) => {
|
|
9687
9715
|
var $;
|
|
9688
|
-
if (isSelfAtom(A,
|
|
9689
|
-
const U =
|
|
9716
|
+
if (isSelfAtom(A, P)) {
|
|
9717
|
+
const U = h(P);
|
|
9690
9718
|
if (!isAtomStateInitialized(U))
|
|
9691
|
-
if (hasInitialValue(
|
|
9692
|
-
setAtomStateValueOrPromise(
|
|
9719
|
+
if (hasInitialValue(P))
|
|
9720
|
+
setAtomStateValueOrPromise(P, P.init, h);
|
|
9693
9721
|
else
|
|
9694
9722
|
throw new Error("no atom init");
|
|
9695
9723
|
return returnAtomValue(U);
|
|
9696
9724
|
}
|
|
9697
|
-
const M = y(
|
|
9725
|
+
const M = y(P);
|
|
9698
9726
|
try {
|
|
9699
9727
|
return returnAtomValue(M);
|
|
9700
9728
|
} finally {
|
|
9701
|
-
k.d.set(
|
|
9729
|
+
k.d.set(P, M.n), isPendingPromise(k.v) && addPendingPromiseToDependency(A, k.v, M), ($ = n.get(P)) == null || $.t.add(A), j || T();
|
|
9702
9730
|
}
|
|
9703
9731
|
};
|
|
9704
|
-
let
|
|
9732
|
+
let R, L;
|
|
9705
9733
|
const D = {
|
|
9706
9734
|
get signal() {
|
|
9707
|
-
return
|
|
9735
|
+
return R || (R = new AbortController()), R.signal;
|
|
9708
9736
|
},
|
|
9709
9737
|
get setSelf() {
|
|
9710
|
-
return !L && isActuallyWritableAtom(A) && (L = (...
|
|
9738
|
+
return !L && isActuallyWritableAtom(A) && (L = (...P) => {
|
|
9711
9739
|
if (!j)
|
|
9712
9740
|
try {
|
|
9713
|
-
return v(A, ...
|
|
9741
|
+
return v(A, ...P);
|
|
9714
9742
|
} finally {
|
|
9715
9743
|
x(), f();
|
|
9716
9744
|
}
|
|
@@ -9718,36 +9746,36 @@ const FEATURE_TOGGLES = {
|
|
|
9718
9746
|
}
|
|
9719
9747
|
}, O = k.n;
|
|
9720
9748
|
try {
|
|
9721
|
-
const
|
|
9722
|
-
return setAtomStateValueOrPromise(A,
|
|
9749
|
+
const P = d(A, I, D);
|
|
9750
|
+
return setAtomStateValueOrPromise(A, P, h), isPromiseLike$1(P) && ((N = P.onCancel) == null || N.call(P, () => R == null ? void 0 : R.abort()), P.then(
|
|
9723
9751
|
T,
|
|
9724
9752
|
T
|
|
9725
9753
|
)), k;
|
|
9726
|
-
} catch (
|
|
9727
|
-
return delete k.v, k.e =
|
|
9754
|
+
} catch (P) {
|
|
9755
|
+
return delete k.v, k.e = P, ++k.n, k;
|
|
9728
9756
|
} finally {
|
|
9729
9757
|
j = !1, O !== k.n && r.get(A) === O && (r.set(A, k.n), a.add(A), (C = c.c) == null || C.call(c, A));
|
|
9730
9758
|
}
|
|
9731
|
-
}), b =
|
|
9759
|
+
}), b = m[4] || ((A) => {
|
|
9732
9760
|
const N = [A];
|
|
9733
9761
|
for (; N.length; ) {
|
|
9734
|
-
const C = N.pop(), k =
|
|
9762
|
+
const C = N.pop(), k = h(C);
|
|
9735
9763
|
for (const j of getMountedOrPendingDependents(C, k, n)) {
|
|
9736
|
-
const T =
|
|
9764
|
+
const T = h(j);
|
|
9737
9765
|
r.set(j, T.n), N.push(j);
|
|
9738
9766
|
}
|
|
9739
9767
|
}
|
|
9740
|
-
}), v =
|
|
9768
|
+
}), v = m[5] || ((A, ...N) => {
|
|
9741
9769
|
let C = !0;
|
|
9742
9770
|
const k = (T) => returnAtomValue(y(T)), j = (T, ...I) => {
|
|
9743
|
-
var
|
|
9744
|
-
const L =
|
|
9771
|
+
var R;
|
|
9772
|
+
const L = h(T);
|
|
9745
9773
|
try {
|
|
9746
9774
|
if (isSelfAtom(A, T)) {
|
|
9747
9775
|
if (!hasInitialValue(T))
|
|
9748
9776
|
throw new Error("atom not writable");
|
|
9749
9777
|
const D = L.n, O = I[0];
|
|
9750
|
-
setAtomStateValueOrPromise(T, O,
|
|
9778
|
+
setAtomStateValueOrPromise(T, O, h), B(T), D !== L.n && (a.add(T), (R = c.c) == null || R.call(c, T), b(T));
|
|
9751
9779
|
return;
|
|
9752
9780
|
} else
|
|
9753
9781
|
return v(T, ...I);
|
|
@@ -9760,13 +9788,13 @@ const FEATURE_TOGGLES = {
|
|
|
9760
9788
|
} finally {
|
|
9761
9789
|
C = !1;
|
|
9762
9790
|
}
|
|
9763
|
-
}), B =
|
|
9791
|
+
}), B = m[6] || ((A) => {
|
|
9764
9792
|
var N;
|
|
9765
|
-
const C =
|
|
9793
|
+
const C = h(A), k = n.get(A);
|
|
9766
9794
|
if (k && !isPendingPromise(C.v)) {
|
|
9767
9795
|
for (const [j, T] of C.d)
|
|
9768
9796
|
if (!k.d.has(j)) {
|
|
9769
|
-
const I =
|
|
9797
|
+
const I = h(j);
|
|
9770
9798
|
w(j).t.add(A), k.d.add(j), T !== I.n && (a.add(j), (N = c.c) == null || N.call(c, j), b(j));
|
|
9771
9799
|
}
|
|
9772
9800
|
for (const j of k.d || [])
|
|
@@ -9776,9 +9804,9 @@ const FEATURE_TOGGLES = {
|
|
|
9776
9804
|
T == null || T.t.delete(A);
|
|
9777
9805
|
}
|
|
9778
9806
|
}
|
|
9779
|
-
}), w =
|
|
9807
|
+
}), w = m[7] || ((A) => {
|
|
9780
9808
|
var N;
|
|
9781
|
-
const C =
|
|
9809
|
+
const C = h(A);
|
|
9782
9810
|
let k = n.get(A);
|
|
9783
9811
|
if (!k) {
|
|
9784
9812
|
y(A);
|
|
@@ -9791,19 +9819,19 @@ const FEATURE_TOGGLES = {
|
|
|
9791
9819
|
}, n.set(A, k), (N = c.m) == null || N.call(c, A), isActuallyWritableAtom(A)) {
|
|
9792
9820
|
const j = () => {
|
|
9793
9821
|
let T = !0;
|
|
9794
|
-
const I = (...
|
|
9822
|
+
const I = (...R) => {
|
|
9795
9823
|
try {
|
|
9796
|
-
return v(A, ...
|
|
9824
|
+
return v(A, ...R);
|
|
9797
9825
|
} finally {
|
|
9798
9826
|
T || (x(), f());
|
|
9799
9827
|
}
|
|
9800
9828
|
};
|
|
9801
9829
|
try {
|
|
9802
|
-
const
|
|
9803
|
-
|
|
9830
|
+
const R = g(A, I);
|
|
9831
|
+
R && (k.u = () => {
|
|
9804
9832
|
T = !0;
|
|
9805
9833
|
try {
|
|
9806
|
-
|
|
9834
|
+
R();
|
|
9807
9835
|
} finally {
|
|
9808
9836
|
T = !1;
|
|
9809
9837
|
}
|
|
@@ -9816,9 +9844,9 @@ const FEATURE_TOGGLES = {
|
|
|
9816
9844
|
}
|
|
9817
9845
|
}
|
|
9818
9846
|
return k;
|
|
9819
|
-
}), E =
|
|
9847
|
+
}), E = m[8] || ((A) => {
|
|
9820
9848
|
var N;
|
|
9821
|
-
const C =
|
|
9849
|
+
const C = h(A);
|
|
9822
9850
|
let k = n.get(A);
|
|
9823
9851
|
if (k && !k.l.size && !Array.from(k.t).some((j) => {
|
|
9824
9852
|
var T;
|
|
@@ -9847,7 +9875,7 @@ const FEATURE_TOGGLES = {
|
|
|
9847
9875
|
u,
|
|
9848
9876
|
g,
|
|
9849
9877
|
// building-block functions
|
|
9850
|
-
|
|
9878
|
+
h,
|
|
9851
9879
|
f,
|
|
9852
9880
|
x,
|
|
9853
9881
|
y,
|