@measured/puck 0.16.0-canary.6d43ba0 → 0.16.0-canary.7a6a65c
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/{Config-XUGMjfT5.d.mts → actions-9pHbVtMU.d.mts} +217 -55
- package/dist/{Config-XUGMjfT5.d.ts → actions-9pHbVtMU.d.ts} +217 -55
- package/dist/{chunk-TM7CT64S.mjs → chunk-LM7YWFFF.mjs} +3 -2
- package/dist/index.css +96 -77
- package/dist/index.d.mts +51 -190
- package/dist/index.d.ts +51 -190
- package/dist/index.js +885 -697
- package/dist/index.mjs +855 -670
- package/dist/rsc.d.mts +1 -1
- package/dist/rsc.d.ts +1 -1
- package/dist/rsc.js +3 -2
- package/dist/rsc.mjs +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
@@ -8,7 +8,7 @@ import {
|
|
8
8
|
init_react_import,
|
9
9
|
rootDroppableId,
|
10
10
|
setupZone
|
11
|
-
} from "./chunk-
|
11
|
+
} from "./chunk-LM7YWFFF.mjs";
|
12
12
|
|
13
13
|
// ../../node_modules/classnames/index.js
|
14
14
|
var require_classnames = __commonJS({
|
@@ -65,15 +65,47 @@ var require_classnames = __commonJS({
|
|
65
65
|
// index.ts
|
66
66
|
init_react_import();
|
67
67
|
|
68
|
+
// types/API/index.ts
|
69
|
+
init_react_import();
|
70
|
+
|
71
|
+
// types/API/Viewports.ts
|
72
|
+
init_react_import();
|
73
|
+
|
74
|
+
// types/index.ts
|
75
|
+
init_react_import();
|
76
|
+
|
77
|
+
// types/API/Overrides.ts
|
78
|
+
init_react_import();
|
79
|
+
var overrideKeys = [
|
80
|
+
"header",
|
81
|
+
"headerActions",
|
82
|
+
"fields",
|
83
|
+
"fieldLabel",
|
84
|
+
"components",
|
85
|
+
"componentItem",
|
86
|
+
"outline",
|
87
|
+
"puck",
|
88
|
+
"preview"
|
89
|
+
];
|
90
|
+
|
91
|
+
// types/AppState.tsx
|
92
|
+
init_react_import();
|
93
|
+
|
68
94
|
// types/Config.tsx
|
69
95
|
init_react_import();
|
70
96
|
|
71
|
-
// types/
|
97
|
+
// types/Data.tsx
|
72
98
|
init_react_import();
|
73
99
|
|
74
100
|
// types/Fields.ts
|
75
101
|
init_react_import();
|
76
102
|
|
103
|
+
// types/Props.tsx
|
104
|
+
init_react_import();
|
105
|
+
|
106
|
+
// types/Utils.tsx
|
107
|
+
init_react_import();
|
108
|
+
|
77
109
|
// components/ActionBar/index.tsx
|
78
110
|
init_react_import();
|
79
111
|
|
@@ -106,11 +138,11 @@ var get_class_name_factory_default = getClassNameFactory;
|
|
106
138
|
|
107
139
|
// css-module:/home/runner/work/puck/puck/packages/core/components/ActionBar/styles.module.css#css-module
|
108
140
|
init_react_import();
|
109
|
-
var styles_module_default = { "
|
141
|
+
var styles_module_default = { "ActionBar": "_ActionBar_fp58q_1", "ActionBar-actionsLabel": "_ActionBar-actionsLabel_fp58q_16", "ActionBar-group": "_ActionBar-group_fp58q_29", "ActionBar-action": "_ActionBar-action_fp58q_16" };
|
110
142
|
|
111
143
|
// components/ActionBar/index.tsx
|
112
144
|
import { jsx, jsxs } from "react/jsx-runtime";
|
113
|
-
var getClassName = get_class_name_factory_default("
|
145
|
+
var getClassName = get_class_name_factory_default("ActionBar", styles_module_default);
|
114
146
|
var ActionBar = ({
|
115
147
|
label,
|
116
148
|
children
|
@@ -122,8 +154,19 @@ var Action = ({
|
|
122
154
|
children,
|
123
155
|
label,
|
124
156
|
onClick
|
125
|
-
}) => /* @__PURE__ */ jsx(
|
157
|
+
}) => /* @__PURE__ */ jsx(
|
158
|
+
"button",
|
159
|
+
{
|
160
|
+
type: "button",
|
161
|
+
className: getClassName("action"),
|
162
|
+
onClick,
|
163
|
+
title: label,
|
164
|
+
children
|
165
|
+
}
|
166
|
+
);
|
167
|
+
var Group = ({ children }) => /* @__PURE__ */ jsx("div", { className: getClassName("group"), children });
|
126
168
|
ActionBar.Action = Action;
|
169
|
+
ActionBar.Group = Group;
|
127
170
|
|
128
171
|
// components/AutoField/index.tsx
|
129
172
|
init_react_import();
|
@@ -134,10 +177,10 @@ var styles_module_default2 = { "Input": "_Input_3pq3z_1", "Input-label": "_Input
|
|
134
177
|
|
135
178
|
// components/AutoField/index.tsx
|
136
179
|
import {
|
137
|
-
useCallback as
|
138
|
-
useEffect as
|
180
|
+
useCallback as useCallback5,
|
181
|
+
useEffect as useEffect9,
|
139
182
|
useMemo as useMemo2,
|
140
|
-
useState as
|
183
|
+
useState as useState10
|
141
184
|
} from "react";
|
142
185
|
|
143
186
|
// components/AutoField/fields/index.tsx
|
@@ -551,20 +594,20 @@ init_react_import();
|
|
551
594
|
import {
|
552
595
|
createContext,
|
553
596
|
useContext,
|
554
|
-
useEffect,
|
555
|
-
useState as
|
597
|
+
useEffect as useEffect3,
|
598
|
+
useState as useState4
|
556
599
|
} from "react";
|
557
600
|
|
558
601
|
// lib/get-item.ts
|
559
602
|
init_react_import();
|
560
|
-
|
603
|
+
function getItem(selector, data, dynamicProps = {}) {
|
561
604
|
if (!selector.zone || selector.zone === rootDroppableId) {
|
562
605
|
const item2 = data.content[selector.index];
|
563
606
|
return (item2 == null ? void 0 : item2.props) ? __spreadProps(__spreadValues({}, item2), { props: dynamicProps[item2.props.id] || item2.props }) : void 0;
|
564
607
|
}
|
565
608
|
const item = setupZone(data, selector.zone).zones[selector.zone][selector.index];
|
566
609
|
return (item == null ? void 0 : item.props) ? __spreadProps(__spreadValues({}, item), { props: dynamicProps[item.props.id] || item.props }) : void 0;
|
567
|
-
}
|
610
|
+
}
|
568
611
|
|
569
612
|
// components/ViewportControls/default-viewports.ts
|
570
613
|
init_react_import();
|
@@ -576,6 +619,332 @@ var defaultViewports = [
|
|
576
619
|
|
577
620
|
// components/Puck/context.tsx
|
578
621
|
import { UAParser } from "ua-parser-js";
|
622
|
+
|
623
|
+
// lib/use-resolved-permissions.ts
|
624
|
+
init_react_import();
|
625
|
+
import { useCallback, useEffect, useState as useState2 } from "react";
|
626
|
+
|
627
|
+
// lib/flatten-data.ts
|
628
|
+
init_react_import();
|
629
|
+
var flattenData = (data) => {
|
630
|
+
return Object.keys(data.zones || {}).reduce(
|
631
|
+
(acc, zone) => [...acc, ...data.zones[zone]],
|
632
|
+
data.content
|
633
|
+
);
|
634
|
+
};
|
635
|
+
|
636
|
+
// lib/get-changed.ts
|
637
|
+
init_react_import();
|
638
|
+
var getChanged = (newItem, oldItem) => {
|
639
|
+
return newItem ? Object.keys(newItem.props || {}).reduce((acc, item) => {
|
640
|
+
const newItemProps = (newItem == null ? void 0 : newItem.props) || {};
|
641
|
+
const oldItemProps = (oldItem == null ? void 0 : oldItem.props) || {};
|
642
|
+
return __spreadProps(__spreadValues({}, acc), {
|
643
|
+
[item]: oldItemProps[item] !== newItemProps[item]
|
644
|
+
});
|
645
|
+
}, {}) : {};
|
646
|
+
};
|
647
|
+
|
648
|
+
// lib/use-resolved-permissions.ts
|
649
|
+
var useResolvedPermissions = (config, appState, globalPermissions, setComponentLoading, unsetComponentLoading) => {
|
650
|
+
const [cache3, setCache] = useState2({});
|
651
|
+
const [resolvedPermissions, setResolvedPermissions] = useState2({});
|
652
|
+
const resolveDataForItem = useCallback(
|
653
|
+
(item, force = false) => __async(void 0, null, function* () {
|
654
|
+
var _a, _b, _c;
|
655
|
+
setComponentLoading == null ? void 0 : setComponentLoading(item.props.id);
|
656
|
+
const componentConfig = item.type === "root" ? config.root : config.components[item.type];
|
657
|
+
if (!componentConfig) {
|
658
|
+
unsetComponentLoading == null ? void 0 : unsetComponentLoading(item.props.id);
|
659
|
+
return;
|
660
|
+
}
|
661
|
+
const initialPermissions = __spreadValues(__spreadValues({}, globalPermissions), componentConfig.permissions);
|
662
|
+
if (componentConfig.resolvePermissions) {
|
663
|
+
const changed = getChanged(item, (_a = cache3[item.props.id]) == null ? void 0 : _a.lastData);
|
664
|
+
if (Object.values(changed).some((el) => el === true) || force) {
|
665
|
+
const resolvedPermissions2 = yield componentConfig.resolvePermissions(
|
666
|
+
item,
|
667
|
+
{
|
668
|
+
changed,
|
669
|
+
lastPermissions: ((_b = cache3[item.props.id]) == null ? void 0 : _b.lastPermissions) || null,
|
670
|
+
permissions: initialPermissions,
|
671
|
+
appState,
|
672
|
+
lastData: ((_c = cache3[item.props.id]) == null ? void 0 : _c.lastData) || null
|
673
|
+
}
|
674
|
+
);
|
675
|
+
setCache((_cache) => __spreadProps(__spreadValues({}, _cache), {
|
676
|
+
[item.props.id]: {
|
677
|
+
lastData: item,
|
678
|
+
lastPermissions: resolvedPermissions2
|
679
|
+
}
|
680
|
+
}));
|
681
|
+
setResolvedPermissions((p) => __spreadProps(__spreadValues({}, p), {
|
682
|
+
[item.props.id]: resolvedPermissions2
|
683
|
+
}));
|
684
|
+
}
|
685
|
+
}
|
686
|
+
unsetComponentLoading == null ? void 0 : unsetComponentLoading(item.props.id);
|
687
|
+
}),
|
688
|
+
[config, globalPermissions, appState, cache3]
|
689
|
+
);
|
690
|
+
const resolveDataForRoot = (force = false) => {
|
691
|
+
resolveDataForItem(
|
692
|
+
// Shim the root data in by conforming to component data shape
|
693
|
+
{
|
694
|
+
type: "root",
|
695
|
+
props: __spreadProps(__spreadValues({}, appState.data.root.props), { id: "puck-root" })
|
696
|
+
},
|
697
|
+
force
|
698
|
+
);
|
699
|
+
};
|
700
|
+
const resolvePermissions = useCallback(
|
701
|
+
(..._0) => __async(void 0, [..._0], function* ({ item, type, root } = {}, force = false) {
|
702
|
+
if (item) {
|
703
|
+
yield resolveDataForItem(item, force);
|
704
|
+
} else if (type) {
|
705
|
+
flattenData(appState.data).filter((item2) => item2.type === type).map((item2) => __async(void 0, null, function* () {
|
706
|
+
yield resolveDataForItem(item2, force);
|
707
|
+
}));
|
708
|
+
} else if (root) {
|
709
|
+
resolveDataForRoot(force);
|
710
|
+
} else {
|
711
|
+
resolveDataForRoot(force);
|
712
|
+
flattenData(appState.data).map((item2) => __async(void 0, null, function* () {
|
713
|
+
yield resolveDataForItem(item2, force);
|
714
|
+
}));
|
715
|
+
}
|
716
|
+
}),
|
717
|
+
[config, appState]
|
718
|
+
);
|
719
|
+
const refreshPermissions = useCallback(
|
720
|
+
(params) => __async(void 0, null, function* () {
|
721
|
+
resolvePermissions(params, true);
|
722
|
+
}),
|
723
|
+
[config, appState]
|
724
|
+
);
|
725
|
+
useEffect(() => {
|
726
|
+
resolvePermissions();
|
727
|
+
}, [config, appState.data]);
|
728
|
+
const getPermissions = useCallback(
|
729
|
+
({ item, type, root } = {}) => {
|
730
|
+
if (item) {
|
731
|
+
const componentConfig = config.components[item.type];
|
732
|
+
const initialPermissions = __spreadValues(__spreadValues({}, globalPermissions), componentConfig.permissions);
|
733
|
+
const resolvedForItem = resolvedPermissions[item.props.id];
|
734
|
+
return resolvedForItem ? __spreadValues(__spreadValues({}, globalPermissions), resolvedForItem) : initialPermissions;
|
735
|
+
} else if (type) {
|
736
|
+
const componentConfig = config.components[type];
|
737
|
+
return __spreadValues(__spreadValues({}, globalPermissions), componentConfig.permissions);
|
738
|
+
} else if (root) {
|
739
|
+
const rootConfig = config.root;
|
740
|
+
const initialPermissions = __spreadValues(__spreadValues({}, globalPermissions), rootConfig == null ? void 0 : rootConfig.permissions);
|
741
|
+
const resolvedForItem = resolvedPermissions["puck-root"];
|
742
|
+
return resolvedForItem ? __spreadValues(__spreadValues({}, globalPermissions), resolvedForItem) : initialPermissions;
|
743
|
+
}
|
744
|
+
return globalPermissions;
|
745
|
+
},
|
746
|
+
[config, resolvedPermissions]
|
747
|
+
);
|
748
|
+
return {
|
749
|
+
getPermissions,
|
750
|
+
refreshPermissions
|
751
|
+
};
|
752
|
+
};
|
753
|
+
|
754
|
+
// lib/use-resolved-data.ts
|
755
|
+
init_react_import();
|
756
|
+
import { useCallback as useCallback2, useEffect as useEffect2, useState as useState3 } from "react";
|
757
|
+
|
758
|
+
// lib/resolve-component-data.ts
|
759
|
+
init_react_import();
|
760
|
+
var cache = { lastChange: {} };
|
761
|
+
var resolveAllComponentData = (content, config, onResolveStart, onResolveEnd) => __async(void 0, null, function* () {
|
762
|
+
return yield Promise.all(
|
763
|
+
content.map((item) => __async(void 0, null, function* () {
|
764
|
+
return yield resolveComponentData(
|
765
|
+
item,
|
766
|
+
config,
|
767
|
+
onResolveStart,
|
768
|
+
onResolveEnd
|
769
|
+
);
|
770
|
+
}))
|
771
|
+
);
|
772
|
+
});
|
773
|
+
var resolveComponentData = (item, config, onResolveStart, onResolveEnd) => __async(void 0, null, function* () {
|
774
|
+
const configForItem = config.components[item.type];
|
775
|
+
if (configForItem.resolveData) {
|
776
|
+
const { item: oldItem = null, resolved = {} } = cache.lastChange[item.props.id] || {};
|
777
|
+
if (item && item === oldItem) {
|
778
|
+
return resolved;
|
779
|
+
}
|
780
|
+
const changed = getChanged(item, oldItem);
|
781
|
+
if (onResolveStart) {
|
782
|
+
onResolveStart(item);
|
783
|
+
}
|
784
|
+
const { props: resolvedProps, readOnly = {} } = yield configForItem.resolveData(item, { changed, lastData: oldItem });
|
785
|
+
const { readOnly: existingReadOnly = {} } = item || {};
|
786
|
+
const newReadOnly = __spreadValues(__spreadValues({}, existingReadOnly), readOnly);
|
787
|
+
const resolvedItem = __spreadProps(__spreadValues({}, item), {
|
788
|
+
props: __spreadValues(__spreadValues({}, item.props), resolvedProps)
|
789
|
+
});
|
790
|
+
if (Object.keys(newReadOnly).length) {
|
791
|
+
resolvedItem.readOnly = newReadOnly;
|
792
|
+
}
|
793
|
+
cache.lastChange[item.props.id] = {
|
794
|
+
item,
|
795
|
+
resolved: resolvedItem
|
796
|
+
};
|
797
|
+
if (onResolveEnd) {
|
798
|
+
onResolveEnd(resolvedItem);
|
799
|
+
}
|
800
|
+
return resolvedItem;
|
801
|
+
}
|
802
|
+
return item;
|
803
|
+
});
|
804
|
+
|
805
|
+
// lib/apply-dynamic-props.ts
|
806
|
+
init_react_import();
|
807
|
+
var applyDynamicProps = (data, dynamicProps, rootData) => {
|
808
|
+
return __spreadProps(__spreadValues({}, data), {
|
809
|
+
root: __spreadValues(__spreadValues({}, data.root), rootData ? rootData : {}),
|
810
|
+
content: data.content.map((item) => {
|
811
|
+
return dynamicProps[item.props.id] ? __spreadValues(__spreadValues({}, item), dynamicProps[item.props.id]) : item;
|
812
|
+
}),
|
813
|
+
zones: Object.keys(data.zones || {}).reduce((acc, zoneKey) => {
|
814
|
+
return __spreadProps(__spreadValues({}, acc), {
|
815
|
+
[zoneKey]: data.zones[zoneKey].map((item) => {
|
816
|
+
return dynamicProps[item.props.id] ? __spreadValues(__spreadValues({}, item), dynamicProps[item.props.id]) : item;
|
817
|
+
})
|
818
|
+
});
|
819
|
+
}, {})
|
820
|
+
});
|
821
|
+
};
|
822
|
+
|
823
|
+
// lib/resolve-root-data.ts
|
824
|
+
init_react_import();
|
825
|
+
var cache2 = {};
|
826
|
+
function resolveRootData(data, config) {
|
827
|
+
return __async(this, null, function* () {
|
828
|
+
var _a, _b, _c, _d, _e;
|
829
|
+
if (((_a = config.root) == null ? void 0 : _a.resolveData) && data.root.props) {
|
830
|
+
if (((_b = cache2.lastChange) == null ? void 0 : _b.original) === data.root) {
|
831
|
+
return cache2.lastChange.resolved;
|
832
|
+
}
|
833
|
+
const changed = getChanged(data.root, (_c = cache2.lastChange) == null ? void 0 : _c.original);
|
834
|
+
const rootWithProps = data.root;
|
835
|
+
const resolvedRoot = yield (_e = config.root) == null ? void 0 : _e.resolveData(rootWithProps, {
|
836
|
+
changed,
|
837
|
+
lastData: ((_d = cache2.lastChange) == null ? void 0 : _d.original) || {}
|
838
|
+
});
|
839
|
+
cache2.lastChange = {
|
840
|
+
original: data.root,
|
841
|
+
resolved: resolvedRoot
|
842
|
+
};
|
843
|
+
return __spreadProps(__spreadValues(__spreadValues({}, data.root), resolvedRoot), {
|
844
|
+
props: __spreadValues(__spreadValues({}, data.root.props), resolvedRoot.props)
|
845
|
+
});
|
846
|
+
}
|
847
|
+
return data.root;
|
848
|
+
});
|
849
|
+
}
|
850
|
+
|
851
|
+
// lib/use-resolved-data.ts
|
852
|
+
var useResolvedData = (appState, config, dispatch, setComponentLoading, unsetComponentLoading, refreshPermissions) => {
|
853
|
+
const [{ resolverKey, newAppState }, setResolverState] = useState3({
|
854
|
+
resolverKey: 0,
|
855
|
+
newAppState: appState
|
856
|
+
});
|
857
|
+
const deferredSetStates = {};
|
858
|
+
const _setComponentLoading = useCallback2(
|
859
|
+
(id, loading, defer2 = 0) => {
|
860
|
+
if (deferredSetStates[id]) {
|
861
|
+
clearTimeout(deferredSetStates[id]);
|
862
|
+
delete deferredSetStates[id];
|
863
|
+
}
|
864
|
+
deferredSetStates[id] = setTimeout(() => {
|
865
|
+
if (loading) {
|
866
|
+
setComponentLoading(id);
|
867
|
+
} else {
|
868
|
+
unsetComponentLoading(id);
|
869
|
+
}
|
870
|
+
delete deferredSetStates[id];
|
871
|
+
}, defer2);
|
872
|
+
},
|
873
|
+
[]
|
874
|
+
);
|
875
|
+
const runResolvers = () => __async(void 0, null, function* () {
|
876
|
+
const newData = newAppState.data;
|
877
|
+
const flatContent = flattenData(newData).filter(
|
878
|
+
(item) => {
|
879
|
+
var _a;
|
880
|
+
return !!((_a = config.components[item.type]) == null ? void 0 : _a.resolveData);
|
881
|
+
}
|
882
|
+
);
|
883
|
+
const applyIfChange = (dynamicDataMap, dynamicRoot) => {
|
884
|
+
const processed = applyDynamicProps(
|
885
|
+
appState.data,
|
886
|
+
dynamicDataMap,
|
887
|
+
dynamicRoot
|
888
|
+
);
|
889
|
+
const processedAppState = __spreadProps(__spreadValues({}, appState), { data: processed });
|
890
|
+
const containsChanges = JSON.stringify(appState) !== JSON.stringify(processedAppState);
|
891
|
+
if (containsChanges) {
|
892
|
+
dispatch({
|
893
|
+
type: "set",
|
894
|
+
state: (prev) => __spreadProps(__spreadValues({}, prev), {
|
895
|
+
data: applyDynamicProps(prev.data, dynamicDataMap, dynamicRoot),
|
896
|
+
ui: resolverKey > 0 ? __spreadValues(__spreadValues({}, prev.ui), newAppState.ui) : prev.ui
|
897
|
+
}),
|
898
|
+
recordHistory: resolverKey > 0
|
899
|
+
});
|
900
|
+
}
|
901
|
+
};
|
902
|
+
const promises = [];
|
903
|
+
promises.push(
|
904
|
+
(() => __async(void 0, null, function* () {
|
905
|
+
_setComponentLoading("puck-root", true, 50);
|
906
|
+
const dynamicRoot = yield resolveRootData(newData, config);
|
907
|
+
applyIfChange({}, dynamicRoot);
|
908
|
+
_setComponentLoading("puck-root", false);
|
909
|
+
}))()
|
910
|
+
);
|
911
|
+
flatContent.forEach((item) => {
|
912
|
+
promises.push(
|
913
|
+
(() => __async(void 0, null, function* () {
|
914
|
+
refreshPermissions({ item });
|
915
|
+
const dynamicData = yield resolveComponentData(
|
916
|
+
item,
|
917
|
+
config,
|
918
|
+
(item2) => {
|
919
|
+
_setComponentLoading(item2.props.id, true, 50);
|
920
|
+
},
|
921
|
+
(item2) => {
|
922
|
+
deferredSetStates[item2.props.id];
|
923
|
+
_setComponentLoading(item2.props.id, false);
|
924
|
+
}
|
925
|
+
);
|
926
|
+
const dynamicDataMap = { [item.props.id]: dynamicData };
|
927
|
+
applyIfChange(dynamicDataMap);
|
928
|
+
}))()
|
929
|
+
);
|
930
|
+
});
|
931
|
+
yield Promise.all(promises);
|
932
|
+
});
|
933
|
+
useEffect2(() => {
|
934
|
+
runResolvers();
|
935
|
+
}, [resolverKey]);
|
936
|
+
const resolveData = useCallback2((newAppState2 = appState) => {
|
937
|
+
setResolverState((curr) => ({
|
938
|
+
resolverKey: curr.resolverKey + 1,
|
939
|
+
newAppState: newAppState2
|
940
|
+
}));
|
941
|
+
}, []);
|
942
|
+
return {
|
943
|
+
resolveData
|
944
|
+
};
|
945
|
+
};
|
946
|
+
|
947
|
+
// components/Puck/context.tsx
|
579
948
|
import { jsx as jsx4 } from "react/jsx-runtime";
|
580
949
|
var defaultAppState = {
|
581
950
|
data: { content: [], root: {} },
|
@@ -601,6 +970,8 @@ var defaultContext = {
|
|
601
970
|
dispatch: () => null,
|
602
971
|
config: { components: {} },
|
603
972
|
componentState: {},
|
973
|
+
setComponentState: () => {
|
974
|
+
},
|
604
975
|
resolveData: () => {
|
605
976
|
},
|
606
977
|
plugins: [],
|
@@ -617,20 +988,22 @@ var defaultContext = {
|
|
617
988
|
setStatus: () => null,
|
618
989
|
iframe: {},
|
619
990
|
safariFallbackMode: false,
|
620
|
-
globalPermissions: {}
|
991
|
+
globalPermissions: {},
|
992
|
+
getPermissions: () => ({}),
|
993
|
+
refreshPermissions: () => null
|
621
994
|
};
|
622
995
|
var appContext = createContext(defaultContext);
|
623
996
|
var AppProvider = ({
|
624
997
|
children,
|
625
998
|
value
|
626
999
|
}) => {
|
627
|
-
const [zoomConfig, setZoomConfig] =
|
628
|
-
const [status, setStatus] =
|
629
|
-
|
1000
|
+
const [zoomConfig, setZoomConfig] = useState4(defaultContext.zoomConfig);
|
1001
|
+
const [status, setStatus] = useState4("LOADING");
|
1002
|
+
useEffect3(() => {
|
630
1003
|
setStatus("MOUNTED");
|
631
1004
|
}, []);
|
632
|
-
const [safariFallbackMode, setSafariFallbackMode] =
|
633
|
-
|
1005
|
+
const [safariFallbackMode, setSafariFallbackMode] = useState4(false);
|
1006
|
+
useEffect3(() => {
|
634
1007
|
var _a, _b, _c;
|
635
1008
|
const ua = new UAParser(navigator.userAgent);
|
636
1009
|
const { browser } = ua.getResult();
|
@@ -647,15 +1020,58 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
|
|
647
1020
|
setSafariFallbackMode(true);
|
648
1021
|
}
|
649
1022
|
}, []);
|
1023
|
+
const selectedItem = value.state.ui.itemSelector ? getItem(value.state.ui.itemSelector, value.state.data) : void 0;
|
1024
|
+
const [componentState, setComponentState] = useState4({});
|
1025
|
+
const setComponentLoading = (id) => {
|
1026
|
+
setComponentState((prev) => {
|
1027
|
+
var _a;
|
1028
|
+
return __spreadProps(__spreadValues({}, prev), {
|
1029
|
+
[id]: __spreadProps(__spreadValues({}, prev[id]), {
|
1030
|
+
loadingCount: (((_a = prev[id]) == null ? void 0 : _a.loadingCount) || 0) + 1
|
1031
|
+
})
|
1032
|
+
});
|
1033
|
+
});
|
1034
|
+
};
|
1035
|
+
const unsetComponentLoading = (id) => {
|
1036
|
+
setComponentState((prev) => {
|
1037
|
+
var _a;
|
1038
|
+
return __spreadProps(__spreadValues({}, prev), {
|
1039
|
+
[id]: __spreadProps(__spreadValues({}, prev[id]), {
|
1040
|
+
loadingCount: Math.max((((_a = prev[id]) == null ? void 0 : _a.loadingCount) || 0) - 1, 0)
|
1041
|
+
})
|
1042
|
+
});
|
1043
|
+
});
|
1044
|
+
};
|
1045
|
+
const { getPermissions, refreshPermissions } = useResolvedPermissions(
|
1046
|
+
value.config,
|
1047
|
+
value.state,
|
1048
|
+
value.globalPermissions || {},
|
1049
|
+
setComponentLoading,
|
1050
|
+
unsetComponentLoading
|
1051
|
+
);
|
1052
|
+
const { resolveData } = useResolvedData(
|
1053
|
+
value.state,
|
1054
|
+
value.config,
|
1055
|
+
value.dispatch,
|
1056
|
+
setComponentLoading,
|
1057
|
+
unsetComponentLoading,
|
1058
|
+
refreshPermissions
|
1059
|
+
);
|
650
1060
|
return /* @__PURE__ */ jsx4(
|
651
1061
|
appContext.Provider,
|
652
1062
|
{
|
653
1063
|
value: __spreadProps(__spreadValues({}, value), {
|
1064
|
+
selectedItem,
|
654
1065
|
zoomConfig,
|
655
1066
|
setZoomConfig,
|
656
1067
|
status,
|
657
1068
|
setStatus,
|
658
|
-
safariFallbackMode
|
1069
|
+
safariFallbackMode,
|
1070
|
+
getPermissions,
|
1071
|
+
refreshPermissions,
|
1072
|
+
componentState,
|
1073
|
+
setComponentState,
|
1074
|
+
resolveData
|
659
1075
|
}),
|
660
1076
|
children
|
661
1077
|
}
|
@@ -663,10 +1079,8 @@ See https://github.com/measuredco/puck/issues/411 for more information. This mes
|
|
663
1079
|
};
|
664
1080
|
function useAppContext() {
|
665
1081
|
const mainContext = useContext(appContext);
|
666
|
-
const selectedItem = mainContext.state.ui.itemSelector ? getItem(mainContext.state.ui.itemSelector, mainContext.state.data) : void 0;
|
667
1082
|
return __spreadProps(__spreadValues({}, mainContext), {
|
668
1083
|
// Helpers
|
669
|
-
selectedItem,
|
670
1084
|
setUi: (ui, recordHistory) => {
|
671
1085
|
return mainContext.dispatch({
|
672
1086
|
type: "setUi",
|
@@ -770,7 +1184,7 @@ var Draggable = ({
|
|
770
1184
|
};
|
771
1185
|
|
772
1186
|
// components/AutoField/fields/ArrayField/index.tsx
|
773
|
-
import { useCallback, useEffect as
|
1187
|
+
import { useCallback as useCallback3, useEffect as useEffect4, useState as useState5 } from "react";
|
774
1188
|
|
775
1189
|
// components/DragIcon/index.tsx
|
776
1190
|
init_react_import();
|
@@ -811,7 +1225,7 @@ var ArrayField = ({
|
|
811
1225
|
id,
|
812
1226
|
Label = (props) => /* @__PURE__ */ jsx9("div", __spreadValues({}, props))
|
813
1227
|
}) => {
|
814
|
-
const { state, setUi, selectedItem } = useAppContext();
|
1228
|
+
const { state, setUi, selectedItem, getPermissions } = useAppContext();
|
815
1229
|
const readOnlyFields = (selectedItem == null ? void 0 : selectedItem.readOnly) || {};
|
816
1230
|
const value = _value;
|
817
1231
|
const arrayState = state.ui.arrayState[id] || {
|
@@ -823,11 +1237,11 @@ var ArrayField = ({
|
|
823
1237
|
}),
|
824
1238
|
openId: ""
|
825
1239
|
};
|
826
|
-
const [localState, setLocalState] =
|
827
|
-
|
1240
|
+
const [localState, setLocalState] = useState5({ arrayState, value });
|
1241
|
+
useEffect4(() => {
|
828
1242
|
setLocalState({ arrayState, value });
|
829
1243
|
}, [value, state.ui.arrayState[id]]);
|
830
|
-
const mapArrayStateToUi =
|
1244
|
+
const mapArrayStateToUi = useCallback3(
|
831
1245
|
(partialArrayState) => {
|
832
1246
|
return {
|
833
1247
|
arrayState: __spreadProps(__spreadValues({}, state.ui.arrayState), {
|
@@ -837,13 +1251,13 @@ var ArrayField = ({
|
|
837
1251
|
},
|
838
1252
|
[arrayState]
|
839
1253
|
);
|
840
|
-
const getHighestIndex =
|
1254
|
+
const getHighestIndex = useCallback3(() => {
|
841
1255
|
return arrayState.items.reduce(
|
842
1256
|
(acc, item) => item._originalIndex > acc ? item._originalIndex : acc,
|
843
1257
|
-1
|
844
1258
|
);
|
845
1259
|
}, [arrayState]);
|
846
|
-
const regenerateArrayState =
|
1260
|
+
const regenerateArrayState = useCallback3(
|
847
1261
|
(value2) => {
|
848
1262
|
let highestIndex = getHighestIndex();
|
849
1263
|
const newItems = Array.from(value2 || []).map((item, idx) => {
|
@@ -862,12 +1276,13 @@ var ArrayField = ({
|
|
862
1276
|
},
|
863
1277
|
[arrayState]
|
864
1278
|
);
|
865
|
-
|
1279
|
+
useEffect4(() => {
|
866
1280
|
if (arrayState.items.length > 0) {
|
867
1281
|
setUi(mapArrayStateToUi(arrayState));
|
868
1282
|
}
|
869
1283
|
}, []);
|
870
|
-
const [hovering, setHovering] =
|
1284
|
+
const [hovering, setHovering] = useState5(false);
|
1285
|
+
const forceReadOnly = getPermissions({ item: selectedItem }).edit === false;
|
871
1286
|
if (field.type !== "array" || !field.arrayFields) {
|
872
1287
|
return null;
|
873
1288
|
}
|
@@ -998,13 +1413,14 @@ var ArrayField = ({
|
|
998
1413
|
const subField = field.arrayFields[fieldName];
|
999
1414
|
const subFieldName = `${name}[${i}].${fieldName}`;
|
1000
1415
|
const wildcardFieldName = `${name}[*].${fieldName}`;
|
1416
|
+
const subReadOnly = forceReadOnly ? forceReadOnly : typeof readOnlyFields[subFieldName] !== "undefined" ? readOnlyFields[subFieldName] : readOnlyFields[wildcardFieldName];
|
1001
1417
|
return /* @__PURE__ */ jsx9(
|
1002
1418
|
AutoFieldPrivate,
|
1003
1419
|
{
|
1004
1420
|
name: subFieldName,
|
1005
1421
|
label: subField.label || fieldName,
|
1006
1422
|
id: `${_arrayId}_${fieldName}`,
|
1007
|
-
readOnly:
|
1423
|
+
readOnly: subReadOnly,
|
1008
1424
|
field: subField,
|
1009
1425
|
value: data[fieldName],
|
1010
1426
|
onChange: (val, ui) => {
|
@@ -1104,19 +1520,19 @@ var DefaultField = ({
|
|
1104
1520
|
|
1105
1521
|
// components/AutoField/fields/ExternalField/index.tsx
|
1106
1522
|
init_react_import();
|
1107
|
-
import { useEffect as
|
1523
|
+
import { useEffect as useEffect8 } from "react";
|
1108
1524
|
|
1109
1525
|
// components/ExternalInput/index.tsx
|
1110
1526
|
init_react_import();
|
1111
|
-
import { useMemo, useEffect as
|
1527
|
+
import { useMemo, useEffect as useEffect7, useState as useState8, useCallback as useCallback4 } from "react";
|
1112
1528
|
|
1113
1529
|
// css-module:/home/runner/work/puck/puck/packages/core/components/ExternalInput/styles.module.css#css-module
|
1114
1530
|
init_react_import();
|
1115
|
-
var styles_module_default6 = { "ExternalInput-actions": "_ExternalInput-
|
1531
|
+
var styles_module_default6 = { "ExternalInput-actions": "_ExternalInput-actions_wprq3_1", "ExternalInput-button": "_ExternalInput-button_wprq3_5", "ExternalInput--dataSelected": "_ExternalInput--dataSelected_wprq3_24", "ExternalInput--readOnly": "_ExternalInput--readOnly_wprq3_31", "ExternalInput-detachButton": "_ExternalInput-detachButton_wprq3_35", "ExternalInput": "_ExternalInput_wprq3_1", "ExternalInputModal": "_ExternalInputModal_wprq3_79", "ExternalInputModal-grid": "_ExternalInputModal-grid_wprq3_89", "ExternalInputModal--filtersToggled": "_ExternalInputModal--filtersToggled_wprq3_100", "ExternalInputModal-filters": "_ExternalInputModal-filters_wprq3_105", "ExternalInputModal-masthead": "_ExternalInputModal-masthead_wprq3_124", "ExternalInputModal-tableWrapper": "_ExternalInputModal-tableWrapper_wprq3_133", "ExternalInputModal-table": "_ExternalInputModal-table_wprq3_133", "ExternalInputModal-thead": "_ExternalInputModal-thead_wprq3_149", "ExternalInputModal-th": "_ExternalInputModal-th_wprq3_149", "ExternalInputModal-td": "_ExternalInputModal-td_wprq3_164", "ExternalInputModal-tr": "_ExternalInputModal-tr_wprq3_169", "ExternalInputModal-tbody": "_ExternalInputModal-tbody_wprq3_176", "ExternalInputModal--hasData": "_ExternalInputModal--hasData_wprq3_202", "ExternalInputModal-loadingBanner": "_ExternalInputModal-loadingBanner_wprq3_206", "ExternalInputModal--isLoading": "_ExternalInputModal--isLoading_wprq3_223", "ExternalInputModal-searchForm": "_ExternalInputModal-searchForm_wprq3_227", "ExternalInputModal-search": "_ExternalInputModal-search_wprq3_227", "ExternalInputModal-searchIcon": "_ExternalInputModal-searchIcon_wprq3_264", "ExternalInputModal-searchIconText": "_ExternalInputModal-searchIconText_wprq3_289", "ExternalInputModal-searchInput": "_ExternalInputModal-searchInput_wprq3_299", "ExternalInputModal-searchActions": "_ExternalInputModal-searchActions_wprq3_313", "ExternalInputModal-searchActionIcon": "_ExternalInputModal-searchActionIcon_wprq3_326", "ExternalInputModal-footer": "_ExternalInputModal-footer_wprq3_330" };
|
1116
1532
|
|
1117
1533
|
// components/Modal/index.tsx
|
1118
1534
|
init_react_import();
|
1119
|
-
import { useEffect as
|
1535
|
+
import { useEffect as useEffect5, useState as useState6 } from "react";
|
1120
1536
|
|
1121
1537
|
// css-module:/home/runner/work/puck/puck/packages/core/components/Modal/styles.module.css#css-module
|
1122
1538
|
init_react_import();
|
@@ -1131,8 +1547,8 @@ var Modal = ({
|
|
1131
1547
|
onClose,
|
1132
1548
|
isOpen
|
1133
1549
|
}) => {
|
1134
|
-
const [rootEl, setRootEl] =
|
1135
|
-
|
1550
|
+
const [rootEl, setRootEl] = useState6(null);
|
1551
|
+
useEffect5(() => {
|
1136
1552
|
setRootEl(document.getElementById("puck-portal-root"));
|
1137
1553
|
}, []);
|
1138
1554
|
if (!rootEl) {
|
@@ -1179,7 +1595,7 @@ init_react_import();
|
|
1179
1595
|
|
1180
1596
|
// components/Button/Button.tsx
|
1181
1597
|
init_react_import();
|
1182
|
-
import { useEffect as
|
1598
|
+
import { useEffect as useEffect6, useState as useState7 } from "react";
|
1183
1599
|
|
1184
1600
|
// css-module:/home/runner/work/puck/puck/packages/core/components/Button/Button.module.css#css-module
|
1185
1601
|
init_react_import();
|
@@ -1202,8 +1618,8 @@ var Button = ({
|
|
1202
1618
|
size = "medium",
|
1203
1619
|
loading: loadingProp = false
|
1204
1620
|
}) => {
|
1205
|
-
const [loading, setLoading] =
|
1206
|
-
|
1621
|
+
const [loading, setLoading] = useState7(loadingProp);
|
1622
|
+
useEffect6(() => setLoading(loadingProp), [loadingProp]);
|
1207
1623
|
const ElementType = href ? "a" : type ? "button" : "span";
|
1208
1624
|
const el = /* @__PURE__ */ jsxs6(
|
1209
1625
|
ElementType,
|
@@ -1248,19 +1664,20 @@ var ExternalInput = ({
|
|
1248
1664
|
onChange,
|
1249
1665
|
value = null,
|
1250
1666
|
name,
|
1251
|
-
id
|
1667
|
+
id,
|
1668
|
+
readOnly
|
1252
1669
|
}) => {
|
1253
1670
|
const {
|
1254
1671
|
mapProp = (val) => val,
|
1255
1672
|
mapRow = (val) => val,
|
1256
1673
|
filterFields
|
1257
1674
|
} = field || {};
|
1258
|
-
const [data, setData] =
|
1259
|
-
const [isOpen, setOpen] =
|
1260
|
-
const [isLoading, setIsLoading] =
|
1675
|
+
const [data, setData] = useState8([]);
|
1676
|
+
const [isOpen, setOpen] = useState8(false);
|
1677
|
+
const [isLoading, setIsLoading] = useState8(true);
|
1261
1678
|
const hasFilterFields = !!filterFields;
|
1262
|
-
const [filters, setFilters] =
|
1263
|
-
const [filtersToggled, setFiltersToggled] =
|
1679
|
+
const [filters, setFilters] = useState8(field.initialFilters || {});
|
1680
|
+
const [filtersToggled, setFiltersToggled] = useState8(hasFilterFields);
|
1264
1681
|
const mappedData = useMemo(() => {
|
1265
1682
|
return data.map(mapRow);
|
1266
1683
|
}, [data]);
|
@@ -1275,8 +1692,8 @@ var ExternalInput = ({
|
|
1275
1692
|
}
|
1276
1693
|
return Array.from(validKeys);
|
1277
1694
|
}, [mappedData]);
|
1278
|
-
const [searchQuery, setSearchQuery] =
|
1279
|
-
const search =
|
1695
|
+
const [searchQuery, setSearchQuery] = useState8(field.initialQuery || "");
|
1696
|
+
const search = useCallback4(
|
1280
1697
|
(query, filters2) => __async(void 0, null, function* () {
|
1281
1698
|
setIsLoading(true);
|
1282
1699
|
const cacheKey = `${id}-${query}-${JSON.stringify(filters2)}`;
|
@@ -1289,7 +1706,7 @@ var ExternalInput = ({
|
|
1289
1706
|
}),
|
1290
1707
|
[id, field]
|
1291
1708
|
);
|
1292
|
-
|
1709
|
+
useEffect7(() => {
|
1293
1710
|
search(searchQuery, filters);
|
1294
1711
|
}, []);
|
1295
1712
|
return /* @__PURE__ */ jsxs7(
|
@@ -1297,7 +1714,8 @@ var ExternalInput = ({
|
|
1297
1714
|
{
|
1298
1715
|
className: getClassName10({
|
1299
1716
|
dataSelected: !!value,
|
1300
|
-
modalVisible: isOpen
|
1717
|
+
modalVisible: isOpen,
|
1718
|
+
readOnly
|
1301
1719
|
}),
|
1302
1720
|
id,
|
1303
1721
|
children: [
|
@@ -1308,6 +1726,7 @@ var ExternalInput = ({
|
|
1308
1726
|
type: "button",
|
1309
1727
|
onClick: () => setOpen(true),
|
1310
1728
|
className: getClassName10("button"),
|
1729
|
+
disabled: readOnly,
|
1311
1730
|
children: value ? field.getItemSummary ? field.getItemSummary(value) : "External item" : /* @__PURE__ */ jsxs7(Fragment7, { children: [
|
1312
1731
|
/* @__PURE__ */ jsx14(Link, { size: "16" }),
|
1313
1732
|
/* @__PURE__ */ jsx14("span", { children: field.placeholder })
|
@@ -1317,10 +1736,12 @@ var ExternalInput = ({
|
|
1317
1736
|
value && /* @__PURE__ */ jsx14(
|
1318
1737
|
"button",
|
1319
1738
|
{
|
1739
|
+
type: "button",
|
1320
1740
|
className: getClassName10("detachButton"),
|
1321
1741
|
onClick: () => {
|
1322
1742
|
onChange(null);
|
1323
1743
|
},
|
1744
|
+
disabled: readOnly,
|
1324
1745
|
children: /* @__PURE__ */ jsx14(Unlock, { size: 16 })
|
1325
1746
|
}
|
1326
1747
|
)
|
@@ -1446,12 +1867,13 @@ var ExternalField = ({
|
|
1446
1867
|
name,
|
1447
1868
|
label,
|
1448
1869
|
Label,
|
1449
|
-
id
|
1870
|
+
id,
|
1871
|
+
readOnly
|
1450
1872
|
}) => {
|
1451
1873
|
var _a, _b, _c;
|
1452
1874
|
const validField = field;
|
1453
1875
|
const deprecatedField = field;
|
1454
|
-
|
1876
|
+
useEffect8(() => {
|
1455
1877
|
if (deprecatedField.adaptor) {
|
1456
1878
|
console.error(
|
1457
1879
|
"Warning: The `adaptor` API is deprecated. Please use updated APIs on the `external` field instead. This will be a breaking change in a future release."
|
@@ -1478,7 +1900,8 @@ var ExternalField = ({
|
|
1478
1900
|
}),
|
1479
1901
|
onChange,
|
1480
1902
|
value,
|
1481
|
-
id
|
1903
|
+
id,
|
1904
|
+
readOnly
|
1482
1905
|
}
|
1483
1906
|
) });
|
1484
1907
|
};
|
@@ -1659,13 +2082,14 @@ var ObjectField = ({
|
|
1659
2082
|
const subField = field.objectFields[fieldName];
|
1660
2083
|
const subFieldName = `${name}.${fieldName}`;
|
1661
2084
|
const wildcardFieldName = `${name}.${fieldName}`;
|
2085
|
+
const subReadOnly = readOnly ? readOnly : typeof readOnlyFields[subFieldName] !== "undefined" ? readOnlyFields[subFieldName] : readOnlyFields[wildcardFieldName];
|
1662
2086
|
return /* @__PURE__ */ jsx19(
|
1663
2087
|
AutoFieldPrivate,
|
1664
2088
|
{
|
1665
2089
|
name: subFieldName,
|
1666
2090
|
label: subField.label || fieldName,
|
1667
2091
|
id: `${id}_${fieldName}`,
|
1668
|
-
readOnly:
|
2092
|
+
readOnly: subReadOnly,
|
1669
2093
|
field: subField,
|
1670
2094
|
value: data[fieldName],
|
1671
2095
|
onChange: (val, ui) => {
|
@@ -1686,7 +2110,7 @@ var ObjectField = ({
|
|
1686
2110
|
|
1687
2111
|
// lib/use-safe-id.ts
|
1688
2112
|
init_react_import();
|
1689
|
-
import React2, { useState as
|
2113
|
+
import React2, { useState as useState9 } from "react";
|
1690
2114
|
|
1691
2115
|
// lib/generate-id.ts
|
1692
2116
|
init_react_import();
|
@@ -1698,7 +2122,7 @@ var useSafeId = () => {
|
|
1698
2122
|
if (typeof React2.useId !== "undefined") {
|
1699
2123
|
return React2.useId();
|
1700
2124
|
}
|
1701
|
-
const [id] =
|
2125
|
+
const [id] = useState9(generateId());
|
1702
2126
|
return id;
|
1703
2127
|
};
|
1704
2128
|
|
@@ -1795,7 +2219,7 @@ function AutoFieldInternal(props) {
|
|
1795
2219
|
}
|
1796
2220
|
function AutoFieldPrivate(props) {
|
1797
2221
|
const { value, onChange } = props;
|
1798
|
-
const [localValue, setLocalValue] =
|
2222
|
+
const [localValue, setLocalValue] = useState10(value);
|
1799
2223
|
const onChangeDb = useDebouncedCallback(
|
1800
2224
|
(val, ui) => {
|
1801
2225
|
onChange(val, ui);
|
@@ -1803,11 +2227,11 @@ function AutoFieldPrivate(props) {
|
|
1803
2227
|
50,
|
1804
2228
|
{ leading: true }
|
1805
2229
|
);
|
1806
|
-
const onChangeLocal =
|
2230
|
+
const onChangeLocal = useCallback5((val, ui) => {
|
1807
2231
|
setLocalValue(val);
|
1808
2232
|
onChangeDb(val, ui);
|
1809
2233
|
}, []);
|
1810
|
-
|
2234
|
+
useEffect9(() => {
|
1811
2235
|
setLocalValue(value);
|
1812
2236
|
}, [value]);
|
1813
2237
|
const localProps = {
|
@@ -1826,7 +2250,7 @@ init_react_import();
|
|
1826
2250
|
|
1827
2251
|
// css-module:/home/runner/work/puck/puck/packages/core/components/Drawer/styles.module.css#css-module
|
1828
2252
|
init_react_import();
|
1829
|
-
var styles_module_default10 = { "Drawer": "
|
2253
|
+
var styles_module_default10 = { "Drawer": "_Drawer_1oa7v_1", "DrawerItem--disabled": "_DrawerItem--disabled_1oa7v_5", "DrawerItem-draggable": "_DrawerItem-draggable_1oa7v_5", "DrawerItem-default": "_DrawerItem-default_1oa7v_11", "DrawerItem-draggableWrapper": "_DrawerItem-draggableWrapper_1oa7v_11", "DrawerItem": "_DrawerItem_1oa7v_5", "Drawer--isDraggingFrom": "_Drawer--isDraggingFrom_1oa7v_36", "DrawerItem-name": "_DrawerItem-name_1oa7v_54" };
|
1830
2254
|
|
1831
2255
|
// components/Drawer/index.tsx
|
1832
2256
|
import {
|
@@ -1911,14 +2335,14 @@ Drawer.Item = DrawerItem;
|
|
1911
2335
|
|
1912
2336
|
// components/DropZone/index.tsx
|
1913
2337
|
init_react_import();
|
1914
|
-
import { useContext as useContext3, useEffect as
|
2338
|
+
import { useContext as useContext3, useEffect as useEffect12 } from "react";
|
1915
2339
|
|
1916
2340
|
// components/DraggableComponent/index.tsx
|
1917
2341
|
init_react_import();
|
1918
2342
|
import {
|
1919
|
-
useEffect as
|
2343
|
+
useEffect as useEffect11,
|
1920
2344
|
useMemo as useMemo4,
|
1921
|
-
useState as
|
2345
|
+
useState as useState12
|
1922
2346
|
} from "react";
|
1923
2347
|
import { Draggable as Draggable2 } from "@measured/dnd";
|
1924
2348
|
|
@@ -1928,10 +2352,10 @@ var styles_module_default11 = { "DraggableComponent": "_DraggableComponent_1bhad
|
|
1928
2352
|
|
1929
2353
|
// lib/use-modifier-held.ts
|
1930
2354
|
init_react_import();
|
1931
|
-
import { useEffect as
|
2355
|
+
import { useEffect as useEffect10, useState as useState11 } from "react";
|
1932
2356
|
var useModifierHeld = (modifier) => {
|
1933
|
-
const [modifierHeld, setModifierHeld] =
|
1934
|
-
|
2357
|
+
const [modifierHeld, setModifierHeld] = useState11(false);
|
2358
|
+
useEffect10(() => {
|
1935
2359
|
function downHandler({ key }) {
|
1936
2360
|
if (key === modifier) {
|
1937
2361
|
setModifierHeld(true);
|
@@ -1969,90 +2393,6 @@ init_react_import();
|
|
1969
2393
|
import { Fragment as Fragment9, jsx as jsx22 } from "react/jsx-runtime";
|
1970
2394
|
var DefaultOverride = ({ children }) => /* @__PURE__ */ jsx22(Fragment9, { children });
|
1971
2395
|
|
1972
|
-
// lib/get-permissions.ts
|
1973
|
-
init_react_import();
|
1974
|
-
|
1975
|
-
// lib/get-changed.ts
|
1976
|
-
init_react_import();
|
1977
|
-
var getChanged = (newItem, oldItem) => {
|
1978
|
-
return newItem ? Object.keys(newItem.props || {}).reduce((acc, item) => {
|
1979
|
-
const newItemProps = (newItem == null ? void 0 : newItem.props) || {};
|
1980
|
-
const oldItemProps = (oldItem == null ? void 0 : oldItem.props) || {};
|
1981
|
-
return __spreadProps(__spreadValues({}, acc), {
|
1982
|
-
[item]: oldItemProps[item] !== newItemProps[item]
|
1983
|
-
});
|
1984
|
-
}, {}) : {};
|
1985
|
-
};
|
1986
|
-
|
1987
|
-
// lib/resolve-permissions.ts
|
1988
|
-
init_react_import();
|
1989
|
-
var resolvePermissions = ({
|
1990
|
-
selectedItem,
|
1991
|
-
config,
|
1992
|
-
changed,
|
1993
|
-
lastPermissions,
|
1994
|
-
initialPermissions,
|
1995
|
-
appState
|
1996
|
-
}) => {
|
1997
|
-
const componentConfig = selectedItem ? config.components[selectedItem.type] : null;
|
1998
|
-
if (selectedItem && (componentConfig == null ? void 0 : componentConfig.resolvePermissions)) {
|
1999
|
-
return componentConfig.resolvePermissions(selectedItem, {
|
2000
|
-
changed,
|
2001
|
-
lastPermissions,
|
2002
|
-
initialPermissions,
|
2003
|
-
appState
|
2004
|
-
});
|
2005
|
-
}
|
2006
|
-
return {};
|
2007
|
-
};
|
2008
|
-
|
2009
|
-
// lib/get-permissions.ts
|
2010
|
-
var cache = { lastPermissions: {}, lastSelected: {} };
|
2011
|
-
var getPermissions = ({
|
2012
|
-
selectedItem,
|
2013
|
-
type,
|
2014
|
-
globalPermissions,
|
2015
|
-
config,
|
2016
|
-
appState
|
2017
|
-
}) => {
|
2018
|
-
const componentType = type || selectedItem && selectedItem.type || "";
|
2019
|
-
const componentId = selectedItem && selectedItem.props.id || "";
|
2020
|
-
let componentPermissions = getInitialPermissions({
|
2021
|
-
componentType,
|
2022
|
-
config,
|
2023
|
-
globalPermissions
|
2024
|
-
});
|
2025
|
-
const changed = getChanged(selectedItem, cache.lastSelected);
|
2026
|
-
if (Object.values(changed).some((el) => el === true)) {
|
2027
|
-
const resolvedPermissions = resolvePermissions({
|
2028
|
-
selectedItem,
|
2029
|
-
config,
|
2030
|
-
changed,
|
2031
|
-
lastPermissions: cache.lastPermissions[componentId] || componentPermissions,
|
2032
|
-
initialPermissions: componentPermissions,
|
2033
|
-
appState
|
2034
|
-
});
|
2035
|
-
if (resolvedPermissions !== void 0) {
|
2036
|
-
componentPermissions = __spreadValues(__spreadValues({}, componentPermissions), resolvedPermissions);
|
2037
|
-
}
|
2038
|
-
cache.lastSelected = selectedItem;
|
2039
|
-
cache.lastPermissions[componentId] = componentPermissions;
|
2040
|
-
return componentPermissions;
|
2041
|
-
}
|
2042
|
-
if (Object.keys(componentId && cache.lastPermissions[componentId]).length !== 0) {
|
2043
|
-
componentPermissions = cache.lastPermissions[componentId];
|
2044
|
-
}
|
2045
|
-
return componentPermissions;
|
2046
|
-
};
|
2047
|
-
var getInitialPermissions = ({
|
2048
|
-
componentType,
|
2049
|
-
globalPermissions,
|
2050
|
-
config
|
2051
|
-
}) => {
|
2052
|
-
var _a;
|
2053
|
-
return __spreadValues(__spreadValues({}, globalPermissions), (_a = config.components[componentType]) == null ? void 0 : _a.permissions);
|
2054
|
-
};
|
2055
|
-
|
2056
2396
|
// components/DraggableComponent/index.tsx
|
2057
2397
|
import { jsx as jsx23, jsxs as jsxs11 } from "react/jsx-runtime";
|
2058
2398
|
var getClassName17 = get_class_name_factory_default("DraggableComponent", styles_module_default11);
|
@@ -2063,7 +2403,7 @@ var actionsRight = space;
|
|
2063
2403
|
var DefaultActionBar = ({
|
2064
2404
|
label,
|
2065
2405
|
children
|
2066
|
-
}) => /* @__PURE__ */ jsx23(ActionBar, { label, children: /* @__PURE__ */ jsx23(DefaultOverride, { children }) });
|
2406
|
+
}) => /* @__PURE__ */ jsx23(ActionBar, { label, children: /* @__PURE__ */ jsx23(ActionBar.Group, { children: /* @__PURE__ */ jsx23(DefaultOverride, { children }) }) });
|
2067
2407
|
var DraggableComponent = ({
|
2068
2408
|
children,
|
2069
2409
|
id,
|
@@ -2086,21 +2426,12 @@ var DraggableComponent = ({
|
|
2086
2426
|
indicativeHover = false,
|
2087
2427
|
style
|
2088
2428
|
}) => {
|
2089
|
-
const {
|
2090
|
-
zoomConfig,
|
2091
|
-
status,
|
2092
|
-
overrides,
|
2093
|
-
plugins,
|
2094
|
-
selectedItem,
|
2095
|
-
config,
|
2096
|
-
globalPermissions,
|
2097
|
-
state
|
2098
|
-
} = useAppContext();
|
2429
|
+
const { zoomConfig, status, overrides, selectedItem, getPermissions } = useAppContext();
|
2099
2430
|
const isModifierHeld = useModifierHeld("Alt");
|
2100
2431
|
const El = status !== "LOADING" ? Draggable2 : DefaultDraggable;
|
2101
|
-
|
2102
|
-
const [disableSecondaryAnimation, setDisableSecondaryAnimation] =
|
2103
|
-
|
2432
|
+
useEffect11(onMount, []);
|
2433
|
+
const [disableSecondaryAnimation, setDisableSecondaryAnimation] = useState12(false);
|
2434
|
+
useEffect11(() => {
|
2104
2435
|
if (isIos()) {
|
2105
2436
|
setDisableSecondaryAnimation(true);
|
2106
2437
|
}
|
@@ -2109,11 +2440,8 @@ var DraggableComponent = ({
|
|
2109
2440
|
() => overrides.actionBar || DefaultActionBar,
|
2110
2441
|
[overrides.actionBar]
|
2111
2442
|
);
|
2112
|
-
const permissions =
|
2113
|
-
selectedItem
|
2114
|
-
globalPermissions: globalPermissions || {},
|
2115
|
-
config,
|
2116
|
-
appState: state
|
2443
|
+
const permissions = getPermissions({
|
2444
|
+
item: selectedItem
|
2117
2445
|
});
|
2118
2446
|
return /* @__PURE__ */ jsx23(
|
2119
2447
|
El,
|
@@ -2136,7 +2464,7 @@ var DraggableComponent = ({
|
|
2136
2464
|
indicativeHover
|
2137
2465
|
}),
|
2138
2466
|
style: __spreadProps(__spreadValues(__spreadValues({}, style), provided.draggableProps.style), {
|
2139
|
-
cursor: isModifierHeld || isDragDisabled ? "
|
2467
|
+
cursor: isModifierHeld || isDragDisabled ? "pointer" : "grab"
|
2140
2468
|
}),
|
2141
2469
|
onMouseOver,
|
2142
2470
|
onMouseOut,
|
@@ -2163,8 +2491,8 @@ var DraggableComponent = ({
|
|
2163
2491
|
right: actionsRight / zoomConfig.zoom
|
2164
2492
|
},
|
2165
2493
|
children: /* @__PURE__ */ jsxs11(CustomActionBar, { label, children: [
|
2166
|
-
permissions
|
2167
|
-
permissions
|
2494
|
+
permissions.duplicate && /* @__PURE__ */ jsx23(ActionBar.Action, { onClick: onDuplicate, label: "Duplicate", children: /* @__PURE__ */ jsx23(Copy, { size: 16 }) }),
|
2495
|
+
permissions.delete && /* @__PURE__ */ jsx23(ActionBar.Action, { onClick: onDelete, label: "Delete", children: /* @__PURE__ */ jsx23(Trash, { size: 16 }) })
|
2168
2496
|
] })
|
2169
2497
|
}
|
2170
2498
|
)
|
@@ -2188,8 +2516,8 @@ var styles_module_default12 = { "DropZone": "_DropZone_djoti_1", "DropZone-conte
|
|
2188
2516
|
init_react_import();
|
2189
2517
|
import {
|
2190
2518
|
createContext as createContext3,
|
2191
|
-
useCallback as
|
2192
|
-
useState as
|
2519
|
+
useCallback as useCallback6,
|
2520
|
+
useState as useState13
|
2193
2521
|
} from "react";
|
2194
2522
|
import { useDebounce } from "use-debounce";
|
2195
2523
|
|
@@ -2212,24 +2540,24 @@ var DropZoneProvider = ({
|
|
2212
2540
|
children,
|
2213
2541
|
value
|
2214
2542
|
}) => {
|
2215
|
-
const [hoveringArea, setHoveringArea] =
|
2216
|
-
const [hoveringZone, setHoveringZone] =
|
2543
|
+
const [hoveringArea, setHoveringArea] = useState13(null);
|
2544
|
+
const [hoveringZone, setHoveringZone] = useState13(
|
2217
2545
|
rootDroppableId
|
2218
2546
|
);
|
2219
|
-
const [hoveringComponent, setHoveringComponent] =
|
2547
|
+
const [hoveringComponent, setHoveringComponent] = useState13();
|
2220
2548
|
const [hoveringAreaDb] = useDebounce(hoveringArea, 75, { leading: false });
|
2221
|
-
const [areasWithZones, setAreasWithZones] =
|
2549
|
+
const [areasWithZones, setAreasWithZones] = useState13(
|
2222
2550
|
{}
|
2223
2551
|
);
|
2224
|
-
const [activeZones, setActiveZones] =
|
2552
|
+
const [activeZones, setActiveZones] = useState13({});
|
2225
2553
|
const { dispatch = null } = value ? value : {};
|
2226
|
-
const registerZoneArea =
|
2554
|
+
const registerZoneArea = useCallback6(
|
2227
2555
|
(area) => {
|
2228
2556
|
setAreasWithZones((latest) => __spreadProps(__spreadValues({}, latest), { [area]: true }));
|
2229
2557
|
},
|
2230
2558
|
[setAreasWithZones]
|
2231
2559
|
);
|
2232
|
-
const registerZone =
|
2560
|
+
const registerZone = useCallback6(
|
2233
2561
|
(zoneCompound) => {
|
2234
2562
|
if (!dispatch) {
|
2235
2563
|
return;
|
@@ -2242,7 +2570,7 @@ var DropZoneProvider = ({
|
|
2242
2570
|
},
|
2243
2571
|
[setActiveZones, dispatch]
|
2244
2572
|
);
|
2245
|
-
const unregisterZone =
|
2573
|
+
const unregisterZone = useCallback6(
|
2246
2574
|
(zoneCompound) => {
|
2247
2575
|
if (!dispatch) {
|
2248
2576
|
return;
|
@@ -2257,8 +2585,8 @@ var DropZoneProvider = ({
|
|
2257
2585
|
},
|
2258
2586
|
[setActiveZones, dispatch]
|
2259
2587
|
);
|
2260
|
-
const [pathData, setPathData] =
|
2261
|
-
const registerPath =
|
2588
|
+
const [pathData, setPathData] = useState13();
|
2589
|
+
const registerPath = useCallback6(
|
2262
2590
|
(selector) => {
|
2263
2591
|
if (!(value == null ? void 0 : value.data)) {
|
2264
2592
|
return;
|
@@ -2283,7 +2611,7 @@ var DropZoneProvider = ({
|
|
2283
2611
|
},
|
2284
2612
|
[value, setPathData]
|
2285
2613
|
);
|
2286
|
-
const [zoneWillDrag, setZoneWillDrag] =
|
2614
|
+
const [zoneWillDrag, setZoneWillDrag] = useState13("");
|
2287
2615
|
return /* @__PURE__ */ jsx24(Fragment10, { children: value && /* @__PURE__ */ jsx24(
|
2288
2616
|
dropZoneContext.Provider,
|
2289
2617
|
{
|
@@ -2334,12 +2662,12 @@ function DropZoneEdit({ zone, allow, disallow, style }) {
|
|
2334
2662
|
} = ctx || {};
|
2335
2663
|
let content = data.content || [];
|
2336
2664
|
let zoneCompound = rootDroppableId;
|
2337
|
-
|
2665
|
+
useEffect12(() => {
|
2338
2666
|
if (areaId && registerZoneArea) {
|
2339
2667
|
registerZoneArea(areaId);
|
2340
2668
|
}
|
2341
2669
|
}, [areaId]);
|
2342
|
-
|
2670
|
+
useEffect12(() => {
|
2343
2671
|
if (ctx == null ? void 0 : ctx.registerZone) {
|
2344
2672
|
ctx == null ? void 0 : ctx.registerZone(zoneCompound);
|
2345
2673
|
}
|
@@ -2466,14 +2794,11 @@ function DropZoneEdit({ zone, allow, disallow, style }) {
|
|
2466
2794
|
] });
|
2467
2795
|
const componentConfig = config.components[item.type];
|
2468
2796
|
const label = (_b = componentConfig == null ? void 0 : componentConfig["label"]) != null ? _b : item.type.toString();
|
2469
|
-
const canDrag = getPermissions({
|
2470
|
-
|
2797
|
+
const canDrag = appContext2.getPermissions({
|
2798
|
+
item: getItem(
|
2471
2799
|
{ index: i, zone: zoneCompound },
|
2472
2800
|
appContext2.state.data
|
2473
|
-
)
|
2474
|
-
config: appContext2.config,
|
2475
|
-
globalPermissions: appContext2.globalPermissions || {},
|
2476
|
-
appState: appContext2.state
|
2801
|
+
)
|
2477
2802
|
}).drag;
|
2478
2803
|
return /* @__PURE__ */ jsxs12(
|
2479
2804
|
"div",
|
@@ -2498,7 +2823,7 @@ function DropZoneEdit({ zone, allow, disallow, style }) {
|
|
2498
2823
|
forceHover: hoveringComponent === componentId && !userIsDragging,
|
2499
2824
|
isDragDisabled: !canDrag,
|
2500
2825
|
indicativeHover: userIsDragging && containsZone && hoveringArea === componentId,
|
2501
|
-
isLoading: (_c = appContext2.componentState[componentId]) == null ? void 0 : _c.
|
2826
|
+
isLoading: ((_c = appContext2.componentState[componentId]) == null ? void 0 : _c.loadingCount) > 0,
|
2502
2827
|
onMount: () => {
|
2503
2828
|
ctx.registerPath({
|
2504
2829
|
index: i,
|
@@ -2640,16 +2965,16 @@ function DropZone(props) {
|
|
2640
2965
|
// components/Puck/index.tsx
|
2641
2966
|
init_react_import();
|
2642
2967
|
import {
|
2643
|
-
useCallback as
|
2644
|
-
useEffect as
|
2968
|
+
useCallback as useCallback11,
|
2969
|
+
useEffect as useEffect18,
|
2645
2970
|
useMemo as useMemo13,
|
2646
2971
|
useReducer,
|
2647
|
-
useState as
|
2972
|
+
useState as useState21
|
2648
2973
|
} from "react";
|
2649
2974
|
|
2650
2975
|
// lib/use-placeholder-style.ts
|
2651
2976
|
init_react_import();
|
2652
|
-
import { useState as
|
2977
|
+
import { useState as useState14 } from "react";
|
2653
2978
|
|
2654
2979
|
// lib/get-frame.ts
|
2655
2980
|
init_react_import();
|
@@ -2664,7 +2989,7 @@ var getFrame = () => {
|
|
2664
2989
|
// lib/use-placeholder-style.ts
|
2665
2990
|
var usePlaceholderStyle = () => {
|
2666
2991
|
const queryAttr = "data-rfd-drag-handle-draggable-id";
|
2667
|
-
const [placeholderStyle, setPlaceholderStyle] =
|
2992
|
+
const [placeholderStyle, setPlaceholderStyle] = useState14();
|
2668
2993
|
const onDragStartOrUpdate = (draggedItem) => {
|
2669
2994
|
var _a;
|
2670
2995
|
const draggableId = draggedItem.draggableId;
|
@@ -2806,6 +3131,7 @@ var SidebarSection = ({
|
|
2806
3131
|
/* @__PURE__ */ jsx26(
|
2807
3132
|
"button",
|
2808
3133
|
{
|
3134
|
+
type: "button",
|
2809
3135
|
className: getClassName19("breadcrumbLabel"),
|
2810
3136
|
onClick: () => setUi({ itemSelector: breadcrumb.selector }),
|
2811
3137
|
children: breadcrumb.label
|
@@ -2846,7 +3172,7 @@ var remove = (list, index) => {
|
|
2846
3172
|
|
2847
3173
|
// lib/reduce-related-zones.ts
|
2848
3174
|
init_react_import();
|
2849
|
-
|
3175
|
+
function reduceRelatedZones(item, data, fn) {
|
2850
3176
|
return __spreadProps(__spreadValues({}, data), {
|
2851
3177
|
zones: Object.keys(data.zones || {}).reduce(
|
2852
3178
|
(acc, key) => {
|
@@ -2860,7 +3186,7 @@ var reduceRelatedZones = (item, data, fn) => {
|
|
2860
3186
|
{}
|
2861
3187
|
)
|
2862
3188
|
});
|
2863
|
-
}
|
3189
|
+
}
|
2864
3190
|
var findRelatedByZoneId = (zoneId, data) => {
|
2865
3191
|
const [zoneParentId] = getZoneId(zoneId);
|
2866
3192
|
return (data.zones[zoneId] || []).reduce(
|
@@ -2897,7 +3223,7 @@ var removeRelatedZones = (item, data) => {
|
|
2897
3223
|
});
|
2898
3224
|
return newData;
|
2899
3225
|
};
|
2900
|
-
|
3226
|
+
function duplicateRelatedZones(item, data, newId) {
|
2901
3227
|
return reduceRelatedZones(item, data, (acc, key, zone) => {
|
2902
3228
|
const dupedZone = zone.map((zoneItem) => __spreadProps(__spreadValues({}, zoneItem), {
|
2903
3229
|
props: __spreadProps(__spreadValues({}, zoneItem.props), { id: generateId(zoneItem.type) })
|
@@ -2912,7 +3238,7 @@ var duplicateRelatedZones = (item, data, newId) => {
|
|
2912
3238
|
[`${newId}:${zoneId}`]: dupedZone
|
2913
3239
|
});
|
2914
3240
|
});
|
2915
|
-
}
|
3241
|
+
}
|
2916
3242
|
|
2917
3243
|
// reducer/data.ts
|
2918
3244
|
var zoneCache = {};
|
@@ -2936,7 +3262,7 @@ var replaceAction = (data, action) => {
|
|
2936
3262
|
})
|
2937
3263
|
});
|
2938
3264
|
};
|
2939
|
-
|
3265
|
+
function insertAction(data, action, config) {
|
2940
3266
|
const emptyComponentData = {
|
2941
3267
|
type: action.componentType,
|
2942
3268
|
props: __spreadProps(__spreadValues({}, config.components[action.componentType].defaultProps || {}), {
|
@@ -2962,8 +3288,8 @@ var insertAction = (data, action, config) => {
|
|
2962
3288
|
)
|
2963
3289
|
})
|
2964
3290
|
});
|
2965
|
-
}
|
2966
|
-
|
3291
|
+
}
|
3292
|
+
function reduceData(data, action, config) {
|
2967
3293
|
if (action.type === "insert") {
|
2968
3294
|
return insertAction(data, action, config);
|
2969
3295
|
}
|
@@ -3105,278 +3431,88 @@ var reduceData = (data, action, config) => {
|
|
3105
3431
|
}
|
3106
3432
|
return __spreadProps(__spreadValues({}, data), { zones: _zones });
|
3107
3433
|
}
|
3108
|
-
if (action.type === "setData") {
|
3109
|
-
if (typeof action.data === "object") {
|
3110
|
-
return __spreadValues(__spreadValues({}, data), action.data);
|
3111
|
-
}
|
3112
|
-
return __spreadValues(__spreadValues({}, data), action.data(data));
|
3113
|
-
}
|
3114
|
-
return data;
|
3115
|
-
}
|
3116
|
-
|
3117
|
-
// reducer/state.ts
|
3118
|
-
init_react_import();
|
3119
|
-
var reduceUi = (ui, action) => {
|
3120
|
-
if (action.type === "setUi") {
|
3121
|
-
if (typeof action.ui === "object") {
|
3122
|
-
return __spreadValues(__spreadValues({}, ui), action.ui);
|
3123
|
-
}
|
3124
|
-
return __spreadValues(__spreadValues({}, ui), action.ui(ui));
|
3125
|
-
}
|
3126
|
-
return ui;
|
3127
|
-
};
|
3128
|
-
|
3129
|
-
// reducer/actions.tsx
|
3130
|
-
init_react_import();
|
3131
|
-
|
3132
|
-
// reducer/index.ts
|
3133
|
-
var storeInterceptor = (reducer, record, onAction) => {
|
3134
|
-
return (state, action) => {
|
3135
|
-
const newAppState = reducer(state, action);
|
3136
|
-
const isValidType = ![
|
3137
|
-
"registerZone",
|
3138
|
-
"unregisterZone",
|
3139
|
-
"setData",
|
3140
|
-
"setUi",
|
3141
|
-
"set"
|
3142
|
-
].includes(action.type);
|
3143
|
-
if (typeof action.recordHistory !== "undefined" ? action.recordHistory : isValidType) {
|
3144
|
-
if (record) record(newAppState);
|
3145
|
-
}
|
3146
|
-
onAction == null ? void 0 : onAction(action, newAppState, state);
|
3147
|
-
return newAppState;
|
3148
|
-
};
|
3149
|
-
};
|
3150
|
-
var setAction = (state, action) => {
|
3151
|
-
if (typeof action.state === "object") {
|
3152
|
-
return __spreadValues(__spreadValues({}, state), action.state);
|
3153
|
-
}
|
3154
|
-
return __spreadValues(__spreadValues({}, state), action.state(state));
|
3155
|
-
};
|
3156
|
-
function createReducer({
|
3157
|
-
config,
|
3158
|
-
record,
|
3159
|
-
onAction
|
3160
|
-
}) {
|
3161
|
-
return storeInterceptor(
|
3162
|
-
(state, action) => {
|
3163
|
-
const data = reduceData(state.data, action, config);
|
3164
|
-
const ui = reduceUi(state.ui, action);
|
3165
|
-
if (action.type === "set") {
|
3166
|
-
return setAction(state, action);
|
3167
|
-
}
|
3168
|
-
return { data, ui };
|
3169
|
-
},
|
3170
|
-
record,
|
3171
|
-
onAction
|
3172
|
-
);
|
3173
|
-
}
|
3174
|
-
|
3175
|
-
// lib/flush-zones.ts
|
3176
|
-
init_react_import();
|
3177
|
-
var flushZones = (appState) => {
|
3178
|
-
const containsZones = typeof appState.data.zones !== "undefined";
|
3179
|
-
if (containsZones) {
|
3180
|
-
Object.keys(appState.data.zones || {}).forEach((zone) => {
|
3181
|
-
addToZoneCache(zone, appState.data.zones[zone]);
|
3182
|
-
});
|
3183
|
-
return __spreadProps(__spreadValues({}, appState), {
|
3184
|
-
data: __spreadProps(__spreadValues({}, appState.data), {
|
3185
|
-
zones: {}
|
3186
|
-
})
|
3187
|
-
});
|
3188
|
-
}
|
3189
|
-
return appState;
|
3190
|
-
};
|
3191
|
-
|
3192
|
-
// lib/use-resolved-data.ts
|
3193
|
-
init_react_import();
|
3194
|
-
import { useCallback as useCallback5, useEffect as useEffect11, useState as useState13 } from "react";
|
3195
|
-
|
3196
|
-
// lib/resolve-component-data.ts
|
3197
|
-
init_react_import();
|
3198
|
-
var cache2 = { lastChange: {} };
|
3199
|
-
var resolveAllComponentData = (content, config, onResolveStart, onResolveEnd) => __async(void 0, null, function* () {
|
3200
|
-
return yield Promise.all(
|
3201
|
-
content.map((item) => __async(void 0, null, function* () {
|
3202
|
-
return yield resolveComponentData(
|
3203
|
-
item,
|
3204
|
-
config,
|
3205
|
-
onResolveStart,
|
3206
|
-
onResolveEnd
|
3207
|
-
);
|
3208
|
-
}))
|
3209
|
-
);
|
3210
|
-
});
|
3211
|
-
var resolveComponentData = (item, config, onResolveStart, onResolveEnd) => __async(void 0, null, function* () {
|
3212
|
-
const configForItem = config.components[item.type];
|
3213
|
-
if (configForItem.resolveData) {
|
3214
|
-
const { item: oldItem = {}, resolved = {} } = cache2.lastChange[item.props.id] || {};
|
3215
|
-
if (item && item === oldItem) {
|
3216
|
-
return resolved;
|
3217
|
-
}
|
3218
|
-
const changed = getChanged(item, oldItem);
|
3219
|
-
if (onResolveStart) {
|
3220
|
-
onResolveStart(item);
|
3221
|
-
}
|
3222
|
-
const { props: resolvedProps, readOnly = {} } = yield configForItem.resolveData(item, { changed, lastData: oldItem });
|
3223
|
-
const { readOnly: existingReadOnly = {} } = item || {};
|
3224
|
-
const newReadOnly = __spreadValues(__spreadValues({}, existingReadOnly), readOnly);
|
3225
|
-
const resolvedItem = __spreadProps(__spreadValues({}, item), {
|
3226
|
-
props: __spreadValues(__spreadValues({}, item.props), resolvedProps)
|
3227
|
-
});
|
3228
|
-
if (Object.keys(newReadOnly).length) {
|
3229
|
-
resolvedItem.readOnly = newReadOnly;
|
3230
|
-
}
|
3231
|
-
cache2.lastChange[item.props.id] = {
|
3232
|
-
item,
|
3233
|
-
resolved: resolvedItem
|
3234
|
-
};
|
3235
|
-
if (onResolveEnd) {
|
3236
|
-
onResolveEnd(resolvedItem);
|
3237
|
-
}
|
3238
|
-
return resolvedItem;
|
3239
|
-
}
|
3240
|
-
return item;
|
3241
|
-
});
|
3242
|
-
|
3243
|
-
// lib/apply-dynamic-props.ts
|
3244
|
-
init_react_import();
|
3245
|
-
var applyDynamicProps = (data, dynamicProps, rootData) => {
|
3246
|
-
return __spreadProps(__spreadValues({}, data), {
|
3247
|
-
root: __spreadValues(__spreadValues({}, data.root), rootData ? rootData : {}),
|
3248
|
-
content: data.content.map((item) => {
|
3249
|
-
return dynamicProps[item.props.id] ? __spreadValues(__spreadValues({}, item), dynamicProps[item.props.id]) : item;
|
3250
|
-
}),
|
3251
|
-
zones: Object.keys(data.zones || {}).reduce((acc, zoneKey) => {
|
3252
|
-
return __spreadProps(__spreadValues({}, acc), {
|
3253
|
-
[zoneKey]: data.zones[zoneKey].map((item) => {
|
3254
|
-
return dynamicProps[item.props.id] ? __spreadValues(__spreadValues({}, item), dynamicProps[item.props.id]) : item;
|
3255
|
-
})
|
3256
|
-
});
|
3257
|
-
}, {})
|
3258
|
-
});
|
3434
|
+
if (action.type === "setData") {
|
3435
|
+
if (typeof action.data === "object") {
|
3436
|
+
return __spreadValues(__spreadValues({}, data), action.data);
|
3437
|
+
}
|
3438
|
+
return __spreadValues(__spreadValues({}, data), action.data(data));
|
3439
|
+
}
|
3440
|
+
return data;
|
3441
|
+
}
|
3442
|
+
|
3443
|
+
// reducer/state.ts
|
3444
|
+
init_react_import();
|
3445
|
+
var reduceUi = (ui, action) => {
|
3446
|
+
if (action.type === "setUi") {
|
3447
|
+
if (typeof action.ui === "object") {
|
3448
|
+
return __spreadValues(__spreadValues({}, ui), action.ui);
|
3449
|
+
}
|
3450
|
+
return __spreadValues(__spreadValues({}, ui), action.ui(ui));
|
3451
|
+
}
|
3452
|
+
return ui;
|
3259
3453
|
};
|
3260
3454
|
|
3261
|
-
//
|
3455
|
+
// reducer/actions.tsx
|
3262
3456
|
init_react_import();
|
3263
|
-
|
3264
|
-
|
3265
|
-
|
3266
|
-
|
3267
|
-
|
3268
|
-
|
3269
|
-
|
3270
|
-
|
3271
|
-
|
3272
|
-
|
3273
|
-
|
3274
|
-
|
3275
|
-
|
3276
|
-
|
3277
|
-
cache3.lastChange = {
|
3278
|
-
original: data.root,
|
3279
|
-
resolved: resolvedRoot
|
3280
|
-
};
|
3281
|
-
return __spreadProps(__spreadValues(__spreadValues({}, data.root), resolvedRoot), {
|
3282
|
-
props: __spreadValues(__spreadValues({}, data.root.props), resolvedRoot.props)
|
3283
|
-
});
|
3457
|
+
|
3458
|
+
// reducer/index.ts
|
3459
|
+
function storeInterceptor(reducer, record, onAction) {
|
3460
|
+
return (state, action) => {
|
3461
|
+
const newAppState = reducer(state, action);
|
3462
|
+
const isValidType = ![
|
3463
|
+
"registerZone",
|
3464
|
+
"unregisterZone",
|
3465
|
+
"setData",
|
3466
|
+
"setUi",
|
3467
|
+
"set"
|
3468
|
+
].includes(action.type);
|
3469
|
+
if (typeof action.recordHistory !== "undefined" ? action.recordHistory : isValidType) {
|
3470
|
+
if (record) record(newAppState);
|
3284
3471
|
}
|
3285
|
-
|
3286
|
-
|
3472
|
+
onAction == null ? void 0 : onAction(action, newAppState, state);
|
3473
|
+
return newAppState;
|
3474
|
+
};
|
3287
3475
|
}
|
3288
|
-
|
3289
|
-
|
3290
|
-
|
3291
|
-
|
3292
|
-
|
3293
|
-
|
3294
|
-
|
3295
|
-
|
3296
|
-
|
3297
|
-
|
3298
|
-
|
3299
|
-
|
3300
|
-
|
3301
|
-
|
3476
|
+
var setAction = (state, action) => {
|
3477
|
+
if (typeof action.state === "object") {
|
3478
|
+
return __spreadValues(__spreadValues({}, state), action.state);
|
3479
|
+
}
|
3480
|
+
return __spreadValues(__spreadValues({}, state), action.state(state));
|
3481
|
+
};
|
3482
|
+
function createReducer({
|
3483
|
+
config,
|
3484
|
+
record,
|
3485
|
+
onAction
|
3486
|
+
}) {
|
3487
|
+
return storeInterceptor(
|
3488
|
+
(state, action) => {
|
3489
|
+
const data = reduceData(state.data, action, config);
|
3490
|
+
const ui = reduceUi(state.ui, action);
|
3491
|
+
if (action.type === "set") {
|
3492
|
+
return setAction(state, action);
|
3302
3493
|
}
|
3303
|
-
|
3304
|
-
setComponentState((prev) => __spreadProps(__spreadValues({}, prev), {
|
3305
|
-
[id]: __spreadProps(__spreadValues({}, prev[id]), { loading })
|
3306
|
-
}));
|
3307
|
-
delete deferredSetStates[id];
|
3308
|
-
}, defer2);
|
3494
|
+
return { data, ui };
|
3309
3495
|
},
|
3310
|
-
|
3496
|
+
record,
|
3497
|
+
onAction
|
3311
3498
|
);
|
3312
|
-
|
3313
|
-
|
3314
|
-
|
3315
|
-
|
3316
|
-
|
3499
|
+
}
|
3500
|
+
|
3501
|
+
// lib/flush-zones.ts
|
3502
|
+
init_react_import();
|
3503
|
+
var flushZones = (appState) => {
|
3504
|
+
const containsZones = typeof appState.data.zones !== "undefined";
|
3505
|
+
if (containsZones) {
|
3506
|
+
Object.keys(appState.data.zones || {}).forEach((zone) => {
|
3507
|
+
addToZoneCache(zone, appState.data.zones[zone]);
|
3317
3508
|
});
|
3318
|
-
|
3319
|
-
|
3320
|
-
|
3321
|
-
|
3322
|
-
dynamicRoot
|
3323
|
-
);
|
3324
|
-
const processedAppState = __spreadProps(__spreadValues({}, appState), { data: processed });
|
3325
|
-
const containsChanges = JSON.stringify(appState) !== JSON.stringify(processedAppState);
|
3326
|
-
if (containsChanges) {
|
3327
|
-
dispatch({
|
3328
|
-
type: "set",
|
3329
|
-
state: (prev) => __spreadProps(__spreadValues({}, prev), {
|
3330
|
-
data: applyDynamicProps(prev.data, dynamicDataMap, dynamicRoot),
|
3331
|
-
ui: resolverKey > 0 ? __spreadValues(__spreadValues({}, prev.ui), newAppState.ui) : prev.ui
|
3332
|
-
}),
|
3333
|
-
recordHistory: resolverKey > 0
|
3334
|
-
});
|
3335
|
-
}
|
3336
|
-
};
|
3337
|
-
const promises = [];
|
3338
|
-
promises.push(
|
3339
|
-
(() => __async(void 0, null, function* () {
|
3340
|
-
setComponentLoading("puck-root", true, 50);
|
3341
|
-
const dynamicRoot = yield resolveRootData(newData, config);
|
3342
|
-
applyIfChange({}, dynamicRoot);
|
3343
|
-
setComponentLoading("puck-root", false);
|
3344
|
-
}))()
|
3345
|
-
);
|
3346
|
-
flatContent.forEach((item) => {
|
3347
|
-
promises.push(
|
3348
|
-
(() => __async(void 0, null, function* () {
|
3349
|
-
const dynamicData = yield resolveComponentData(
|
3350
|
-
item,
|
3351
|
-
config,
|
3352
|
-
(item2) => {
|
3353
|
-
setComponentLoading(item2.props.id, true, 50);
|
3354
|
-
},
|
3355
|
-
(item2) => {
|
3356
|
-
deferredSetStates[item2.props.id];
|
3357
|
-
setComponentLoading(item2.props.id, false);
|
3358
|
-
}
|
3359
|
-
);
|
3360
|
-
const dynamicDataMap = { [item.props.id]: dynamicData };
|
3361
|
-
applyIfChange(dynamicDataMap);
|
3362
|
-
}))()
|
3363
|
-
);
|
3509
|
+
return __spreadProps(__spreadValues({}, appState), {
|
3510
|
+
data: __spreadProps(__spreadValues({}, appState.data), {
|
3511
|
+
zones: {}
|
3512
|
+
})
|
3364
3513
|
});
|
3365
|
-
|
3366
|
-
|
3367
|
-
useEffect11(() => {
|
3368
|
-
runResolvers();
|
3369
|
-
}, [resolverKey]);
|
3370
|
-
const resolveData = useCallback5((newAppState2 = appState) => {
|
3371
|
-
setResolverState((curr) => ({
|
3372
|
-
resolverKey: curr.resolverKey + 1,
|
3373
|
-
newAppState: newAppState2
|
3374
|
-
}));
|
3375
|
-
}, []);
|
3376
|
-
return {
|
3377
|
-
resolveData,
|
3378
|
-
componentState
|
3379
|
-
};
|
3514
|
+
}
|
3515
|
+
return appState;
|
3380
3516
|
};
|
3381
3517
|
|
3382
3518
|
// components/MenuBar/index.tsx
|
@@ -3389,15 +3525,14 @@ var styles_module_default14 = { "MenuBar": "_MenuBar_8pf8c_1", "MenuBar--menuOpe
|
|
3389
3525
|
// components/MenuBar/index.tsx
|
3390
3526
|
import { Fragment as Fragment12, jsx as jsx27, jsxs as jsxs14 } from "react/jsx-runtime";
|
3391
3527
|
var getClassName20 = get_class_name_factory_default("MenuBar", styles_module_default14);
|
3392
|
-
|
3528
|
+
function MenuBar({
|
3393
3529
|
appState,
|
3394
|
-
data = { content: [], root: {} },
|
3395
3530
|
dispatch,
|
3396
3531
|
menuOpen = false,
|
3397
3532
|
onPublish,
|
3398
3533
|
renderHeaderActions,
|
3399
3534
|
setMenuOpen
|
3400
|
-
})
|
3535
|
+
}) {
|
3401
3536
|
const {
|
3402
3537
|
history: { back, forward, historyStore }
|
3403
3538
|
} = useAppContext();
|
@@ -3428,7 +3563,7 @@ var MenuBar = ({
|
|
3428
3563
|
] })
|
3429
3564
|
}
|
3430
3565
|
);
|
3431
|
-
}
|
3566
|
+
}
|
3432
3567
|
|
3433
3568
|
// css-module:/home/runner/work/puck/puck/packages/core/components/Puck/styles.module.css#css-module
|
3434
3569
|
init_react_import();
|
@@ -3442,7 +3577,7 @@ init_react_import();
|
|
3442
3577
|
var styles_module_default16 = { "PuckFields": "_PuckFields_jp3lw_1", "PuckFields--isLoading": "_PuckFields--isLoading_jp3lw_6", "PuckFields-loadingOverlay": "_PuckFields-loadingOverlay_jp3lw_10", "PuckFields-loadingOverlayInner": "_PuckFields-loadingOverlayInner_jp3lw_25" };
|
3443
3578
|
|
3444
3579
|
// components/Puck/components/Fields/index.tsx
|
3445
|
-
import { useCallback as
|
3580
|
+
import { useCallback as useCallback7, useEffect as useEffect13, useMemo as useMemo6, useState as useState15 } from "react";
|
3446
3581
|
import { Fragment as Fragment13, jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
|
3447
3582
|
var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
|
3448
3583
|
var defaultPageFields = {
|
@@ -3461,15 +3596,15 @@ var useResolvedFields = () => {
|
|
3461
3596
|
const componentConfig = selectedItem ? config.components[selectedItem.type] : null;
|
3462
3597
|
const defaultFields = selectedItem ? componentConfig == null ? void 0 : componentConfig.fields : rootFields;
|
3463
3598
|
const rootProps = data.root.props || data.root;
|
3464
|
-
const [lastSelectedData, setLastSelectedData] =
|
3465
|
-
const [resolvedFields, setResolvedFields] =
|
3466
|
-
const [fieldsLoading, setFieldsLoading] =
|
3599
|
+
const [lastSelectedData, setLastSelectedData] = useState15({});
|
3600
|
+
const [resolvedFields, setResolvedFields] = useState15(defaultFields || {});
|
3601
|
+
const [fieldsLoading, setFieldsLoading] = useState15(false);
|
3467
3602
|
const defaultResolveFields = (_componentData, _params) => defaultFields;
|
3468
3603
|
const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
|
3469
|
-
const resolveFields =
|
3604
|
+
const resolveFields = useCallback7(
|
3470
3605
|
(..._0) => __async(void 0, [..._0], function* (fields = {}) {
|
3471
3606
|
var _a2, _b, _c;
|
3472
|
-
const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData :
|
3607
|
+
const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : null;
|
3473
3608
|
const changed = getChanged(componentData, lastData);
|
3474
3609
|
setLastSelectedData(componentData);
|
3475
3610
|
if (selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields)) {
|
@@ -3502,13 +3637,13 @@ var useResolvedFields = () => {
|
|
3502
3637
|
}),
|
3503
3638
|
[data, config, componentData, selectedItem, resolvedFields, state]
|
3504
3639
|
);
|
3505
|
-
|
3640
|
+
useEffect13(() => {
|
3506
3641
|
setFieldsLoading(true);
|
3507
3642
|
resolveFields(defaultFields).then((fields) => {
|
3508
3643
|
setResolvedFields(fields || {});
|
3509
3644
|
setFieldsLoading(false);
|
3510
3645
|
});
|
3511
|
-
}, [data, defaultFields]);
|
3646
|
+
}, [data, defaultFields, state.ui.itemSelector]);
|
3512
3647
|
return [resolvedFields, fieldsLoading];
|
3513
3648
|
};
|
3514
3649
|
var Fields = () => {
|
@@ -3520,13 +3655,13 @@ var Fields = () => {
|
|
3520
3655
|
config,
|
3521
3656
|
resolveData,
|
3522
3657
|
componentState,
|
3523
|
-
overrides
|
3524
|
-
globalPermissions
|
3658
|
+
overrides
|
3525
3659
|
} = useAppContext();
|
3526
3660
|
const { data, ui } = state;
|
3527
3661
|
const { itemSelector } = ui;
|
3528
3662
|
const [fields, fieldsResolving] = useResolvedFields();
|
3529
|
-
const
|
3663
|
+
const { getPermissions } = useAppContext();
|
3664
|
+
const componentResolving = selectedItem ? ((_a = componentState[selectedItem == null ? void 0 : selectedItem.props.id]) == null ? void 0 : _a.loadingCount) > 0 : ((_b = componentState["puck-root"]) == null ? void 0 : _b.loadingCount) > 0;
|
3530
3665
|
const isLoading = fieldsResolving || componentResolving;
|
3531
3666
|
const rootProps = data.root.props || data.root;
|
3532
3667
|
const Wrapper = useMemo6(() => overrides.fields || DefaultFields, [overrides]);
|
@@ -3606,10 +3741,7 @@ var Fields = () => {
|
|
3606
3741
|
if (selectedItem && itemSelector) {
|
3607
3742
|
const { readOnly = {} } = selectedItem;
|
3608
3743
|
const { edit } = getPermissions({
|
3609
|
-
selectedItem
|
3610
|
-
config,
|
3611
|
-
globalPermissions: globalPermissions || {},
|
3612
|
-
appState: state
|
3744
|
+
item: selectedItem
|
3613
3745
|
});
|
3614
3746
|
return /* @__PURE__ */ jsx28(
|
3615
3747
|
AutoFieldPrivate,
|
@@ -3625,13 +3757,16 @@ var Fields = () => {
|
|
3625
3757
|
);
|
3626
3758
|
} else {
|
3627
3759
|
const readOnly = data.root.readOnly || {};
|
3760
|
+
const { edit } = getPermissions({
|
3761
|
+
root: true
|
3762
|
+
});
|
3628
3763
|
return /* @__PURE__ */ jsx28(
|
3629
3764
|
AutoFieldPrivate,
|
3630
3765
|
{
|
3631
3766
|
field,
|
3632
3767
|
name: fieldName,
|
3633
3768
|
id: `root_${fieldName}`,
|
3634
|
-
readOnly: readOnly[fieldName],
|
3769
|
+
readOnly: !edit || readOnly[fieldName],
|
3635
3770
|
value: rootProps[fieldName],
|
3636
3771
|
onChange
|
3637
3772
|
},
|
@@ -3650,7 +3785,7 @@ init_react_import();
|
|
3650
3785
|
|
3651
3786
|
// lib/use-component-list.tsx
|
3652
3787
|
init_react_import();
|
3653
|
-
import { useEffect as
|
3788
|
+
import { useEffect as useEffect14, useState as useState16 } from "react";
|
3654
3789
|
|
3655
3790
|
// components/ComponentList/index.tsx
|
3656
3791
|
init_react_import();
|
@@ -3667,12 +3802,9 @@ var ComponentListItem = ({
|
|
3667
3802
|
label,
|
3668
3803
|
index
|
3669
3804
|
}) => {
|
3670
|
-
const { overrides,
|
3805
|
+
const { overrides, getPermissions } = useAppContext();
|
3671
3806
|
const canInsert = getPermissions({
|
3672
|
-
type: name
|
3673
|
-
config,
|
3674
|
-
globalPermissions: globalPermissions || {},
|
3675
|
-
appState: state
|
3807
|
+
type: name
|
3676
3808
|
}).insert;
|
3677
3809
|
return /* @__PURE__ */ jsx29(
|
3678
3810
|
Drawer.Item,
|
@@ -3696,6 +3828,7 @@ var ComponentList = ({
|
|
3696
3828
|
title && /* @__PURE__ */ jsxs16(
|
3697
3829
|
"button",
|
3698
3830
|
{
|
3831
|
+
type: "button",
|
3699
3832
|
className: getClassName22("title"),
|
3700
3833
|
onClick: () => setUi({
|
3701
3834
|
componentList: __spreadProps(__spreadValues({}, state.ui.componentList), {
|
@@ -3730,8 +3863,8 @@ ComponentList.Item = ComponentListItem;
|
|
3730
3863
|
// lib/use-component-list.tsx
|
3731
3864
|
import { jsx as jsx30 } from "react/jsx-runtime";
|
3732
3865
|
var useComponentList = (config, ui) => {
|
3733
|
-
const [componentList, setComponentList] =
|
3734
|
-
|
3866
|
+
const [componentList, setComponentList] = useState16();
|
3867
|
+
useEffect14(() => {
|
3735
3868
|
var _a, _b, _c;
|
3736
3869
|
if (Object.keys(ui.componentList).length > 0) {
|
3737
3870
|
const matchedComponents = [];
|
@@ -3811,16 +3944,16 @@ var Components = () => {
|
|
3811
3944
|
|
3812
3945
|
// components/Puck/components/Preview/index.tsx
|
3813
3946
|
init_react_import();
|
3814
|
-
import { useCallback as
|
3947
|
+
import { useCallback as useCallback8, useMemo as useMemo8 } from "react";
|
3815
3948
|
|
3816
3949
|
// components/AutoFrame/index.tsx
|
3817
3950
|
init_react_import();
|
3818
3951
|
import {
|
3819
3952
|
createContext as createContext4,
|
3820
3953
|
useContext as useContext5,
|
3821
|
-
useEffect as
|
3822
|
-
useRef,
|
3823
|
-
useState as
|
3954
|
+
useEffect as useEffect15,
|
3955
|
+
useRef as useRef2,
|
3956
|
+
useState as useState17
|
3824
3957
|
} from "react";
|
3825
3958
|
import hash from "object-hash";
|
3826
3959
|
import { createPortal as createPortal2 } from "react-dom";
|
@@ -3867,7 +4000,7 @@ var CopyHostStyles = ({
|
|
3867
4000
|
onStylesLoaded = () => null
|
3868
4001
|
}) => {
|
3869
4002
|
const { document: doc, window: win } = useFrame();
|
3870
|
-
|
4003
|
+
useEffect15(() => {
|
3871
4004
|
if (!win || !doc) {
|
3872
4005
|
return () => {
|
3873
4006
|
};
|
@@ -4042,11 +4175,11 @@ function AutoFrame(_a) {
|
|
4042
4175
|
"id",
|
4043
4176
|
"onStylesLoaded"
|
4044
4177
|
]);
|
4045
|
-
const [loaded, setLoaded] =
|
4046
|
-
const [ctx, setCtx] =
|
4047
|
-
const ref =
|
4048
|
-
const [mountTarget, setMountTarget] =
|
4049
|
-
|
4178
|
+
const [loaded, setLoaded] = useState17(false);
|
4179
|
+
const [ctx, setCtx] = useState17({});
|
4180
|
+
const ref = useRef2(null);
|
4181
|
+
const [mountTarget, setMountTarget] = useState17();
|
4182
|
+
useEffect15(() => {
|
4050
4183
|
var _a2;
|
4051
4184
|
if (ref.current) {
|
4052
4185
|
setCtx({
|
@@ -4082,7 +4215,7 @@ import { Fragment as Fragment15, jsx as jsx33 } from "react/jsx-runtime";
|
|
4082
4215
|
var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
|
4083
4216
|
var Preview = ({ id = "puck-preview" }) => {
|
4084
4217
|
const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
|
4085
|
-
const Page =
|
4218
|
+
const Page = useCallback8(
|
4086
4219
|
(pageProps) => {
|
4087
4220
|
var _a, _b;
|
4088
4221
|
return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadValues({
|
@@ -4246,6 +4379,7 @@ var LayerTree = ({
|
|
4246
4379
|
/* @__PURE__ */ jsx34("div", { className: getClassNameLayer("inner"), children: /* @__PURE__ */ jsxs17(
|
4247
4380
|
"button",
|
4248
4381
|
{
|
4382
|
+
type: "button",
|
4249
4383
|
className: getClassNameLayer("clickable"),
|
4250
4384
|
onClick: () => {
|
4251
4385
|
if (isSelected) {
|
@@ -4312,13 +4446,13 @@ var LayerTree = ({
|
|
4312
4446
|
};
|
4313
4447
|
|
4314
4448
|
// components/Puck/components/Outline/index.tsx
|
4315
|
-
import { useCallback as
|
4449
|
+
import { useCallback as useCallback9, useMemo as useMemo9 } from "react";
|
4316
4450
|
import { Fragment as Fragment17, jsx as jsx35, jsxs as jsxs18 } from "react/jsx-runtime";
|
4317
4451
|
var Outline = () => {
|
4318
4452
|
const { dispatch, state, overrides, config } = useAppContext();
|
4319
4453
|
const { data, ui } = state;
|
4320
4454
|
const { itemSelector } = ui;
|
4321
|
-
const setItemSelector =
|
4455
|
+
const setItemSelector = useCallback9(
|
4322
4456
|
(newItemSelector) => {
|
4323
4457
|
dispatch({
|
4324
4458
|
type: "setUi",
|
@@ -4373,14 +4507,14 @@ function usePuckHistory({
|
|
4373
4507
|
if (historyStore.hasPast) {
|
4374
4508
|
dispatch({
|
4375
4509
|
type: "set",
|
4376
|
-
state: ((_a = historyStore.prevHistory) == null ? void 0 : _a.
|
4510
|
+
state: ((_a = historyStore.prevHistory) == null ? void 0 : _a.state) || initialAppState
|
4377
4511
|
});
|
4378
4512
|
historyStore.back();
|
4379
4513
|
}
|
4380
4514
|
};
|
4381
4515
|
const forward = () => {
|
4382
4516
|
if (historyStore.nextHistory) {
|
4383
|
-
dispatch({ type: "set", state: historyStore.nextHistory.
|
4517
|
+
dispatch({ type: "set", state: historyStore.nextHistory.state });
|
4384
4518
|
historyStore.forward();
|
4385
4519
|
}
|
4386
4520
|
};
|
@@ -4388,7 +4522,7 @@ function usePuckHistory({
|
|
4388
4522
|
var _a;
|
4389
4523
|
dispatch({
|
4390
4524
|
type: "set",
|
4391
|
-
state: ((_a = histories[histories.length - 1]) == null ? void 0 : _a.
|
4525
|
+
state: ((_a = histories[histories.length - 1]) == null ? void 0 : _a.state) || initialAppState
|
4392
4526
|
});
|
4393
4527
|
historyStore.setHistories(histories);
|
4394
4528
|
};
|
@@ -4397,7 +4531,7 @@ function usePuckHistory({
|
|
4397
4531
|
if (historyStore.histories.length > index) {
|
4398
4532
|
dispatch({
|
4399
4533
|
type: "set",
|
4400
|
-
state: ((_a = historyStore.histories[index]) == null ? void 0 : _a.
|
4534
|
+
state: ((_a = historyStore.histories[index]) == null ? void 0 : _a.state) || initialAppState
|
4401
4535
|
});
|
4402
4536
|
historyStore.setHistoryIndex(index);
|
4403
4537
|
}
|
@@ -4416,19 +4550,19 @@ function usePuckHistory({
|
|
4416
4550
|
|
4417
4551
|
// lib/use-history-store.ts
|
4418
4552
|
init_react_import();
|
4419
|
-
import { useState as
|
4553
|
+
import { useState as useState18 } from "react";
|
4420
4554
|
import { useDebouncedCallback as useDebouncedCallback2 } from "use-debounce";
|
4421
|
-
var EMPTY_HISTORY_INDEX =
|
4555
|
+
var EMPTY_HISTORY_INDEX = 0;
|
4422
4556
|
function useHistoryStore(initialHistory) {
|
4423
4557
|
var _a, _b;
|
4424
|
-
const [histories, setHistories] =
|
4558
|
+
const [histories, setHistories] = useState18(
|
4425
4559
|
(_a = initialHistory == null ? void 0 : initialHistory.histories) != null ? _a : []
|
4426
4560
|
);
|
4427
4561
|
const updateHistories = (histories2) => {
|
4428
4562
|
setHistories(histories2);
|
4429
4563
|
setIndex(histories2.length - 1);
|
4430
4564
|
};
|
4431
|
-
const [index, setIndex] =
|
4565
|
+
const [index, setIndex] = useState18(
|
4432
4566
|
(_b = initialHistory == null ? void 0 : initialHistory.index) != null ? _b : EMPTY_HISTORY_INDEX
|
4433
4567
|
);
|
4434
4568
|
const hasPast = index > EMPTY_HISTORY_INDEX;
|
@@ -4436,9 +4570,9 @@ function useHistoryStore(initialHistory) {
|
|
4436
4570
|
const currentHistory = histories[index];
|
4437
4571
|
const nextHistory = hasFuture ? histories[index + 1] : null;
|
4438
4572
|
const prevHistory = hasPast ? histories[index - 1] : null;
|
4439
|
-
const record = useDebouncedCallback2((
|
4573
|
+
const record = useDebouncedCallback2((state) => {
|
4440
4574
|
const history = {
|
4441
|
-
|
4575
|
+
state,
|
4442
4576
|
id: generateId("history")
|
4443
4577
|
};
|
4444
4578
|
updateHistories([...histories.slice(0, index + 1), history]);
|
@@ -4589,16 +4723,16 @@ var getBox = function getBox2(el) {
|
|
4589
4723
|
|
4590
4724
|
// components/Puck/components/Canvas/index.tsx
|
4591
4725
|
import {
|
4592
|
-
useCallback as
|
4593
|
-
useEffect as
|
4726
|
+
useCallback as useCallback10,
|
4727
|
+
useEffect as useEffect17,
|
4594
4728
|
useMemo as useMemo11,
|
4595
|
-
useRef as
|
4596
|
-
useState as
|
4729
|
+
useRef as useRef3,
|
4730
|
+
useState as useState20
|
4597
4731
|
} from "react";
|
4598
4732
|
|
4599
4733
|
// components/ViewportControls/index.tsx
|
4600
4734
|
init_react_import();
|
4601
|
-
import { useEffect as
|
4735
|
+
import { useEffect as useEffect16, useMemo as useMemo10, useState as useState19 } from "react";
|
4602
4736
|
|
4603
4737
|
// css-module:/home/runner/work/puck/puck/packages/core/components/ViewportControls/styles.module.css#css-module
|
4604
4738
|
init_react_import();
|
@@ -4621,8 +4755,8 @@ var ViewportButton = ({
|
|
4621
4755
|
onClick
|
4622
4756
|
}) => {
|
4623
4757
|
const { state } = useAppContext();
|
4624
|
-
const [isActive, setIsActive] =
|
4625
|
-
|
4758
|
+
const [isActive, setIsActive] = useState19(false);
|
4759
|
+
useEffect16(() => {
|
4626
4760
|
setIsActive(width === state.ui.viewports.current.width);
|
4627
4761
|
}, [width, state.ui.viewports.current.width]);
|
4628
4762
|
return /* @__PURE__ */ jsx36("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ jsx36(
|
@@ -4741,7 +4875,7 @@ var ViewportControls = ({
|
|
4741
4875
|
|
4742
4876
|
// css-module:/home/runner/work/puck/puck/packages/core/components/Puck/components/Canvas/styles.module.css#css-module
|
4743
4877
|
init_react_import();
|
4744
|
-
var styles_module_default21 = { "PuckCanvas": "
|
4878
|
+
var styles_module_default21 = { "PuckCanvas": "_PuckCanvas_esbg1_1", "PuckCanvas-controls": "_PuckCanvas-controls_esbg1_16", "PuckCanvas-inner": "_PuckCanvas-inner_esbg1_21", "PuckCanvas-root": "_PuckCanvas-root_esbg1_32", "PuckCanvas--ready": "_PuckCanvas--ready_esbg1_56", "PuckCanvas-loader": "_PuckCanvas-loader_esbg1_60", "PuckCanvas--showLoader": "_PuckCanvas--showLoader_esbg1_70" };
|
4745
4879
|
|
4746
4880
|
// lib/get-zoom-config.ts
|
4747
4881
|
init_react_import();
|
@@ -4781,8 +4915,8 @@ var Canvas = () => {
|
|
4781
4915
|
const { status, iframe } = useAppContext();
|
4782
4916
|
const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
|
4783
4917
|
const { ui } = state;
|
4784
|
-
const frameRef =
|
4785
|
-
const [showTransition, setShowTransition] =
|
4918
|
+
const frameRef = useRef3(null);
|
4919
|
+
const [showTransition, setShowTransition] = useState20(false);
|
4786
4920
|
const defaultRender = useMemo11(() => {
|
4787
4921
|
const PuckDefault = ({ children }) => /* @__PURE__ */ jsx37(Fragment18, { children });
|
4788
4922
|
return PuckDefault;
|
@@ -4791,7 +4925,7 @@ var Canvas = () => {
|
|
4791
4925
|
() => overrides.preview || defaultRender,
|
4792
4926
|
[overrides]
|
4793
4927
|
);
|
4794
|
-
const getFrameDimensions =
|
4928
|
+
const getFrameDimensions = useCallback10(() => {
|
4795
4929
|
if (frameRef.current) {
|
4796
4930
|
const frame = frameRef.current;
|
4797
4931
|
const box = getBox(frame);
|
@@ -4799,7 +4933,7 @@ var Canvas = () => {
|
|
4799
4933
|
}
|
4800
4934
|
return { width: 0, height: 0 };
|
4801
4935
|
}, [frameRef]);
|
4802
|
-
const resetAutoZoom =
|
4936
|
+
const resetAutoZoom = useCallback10(
|
4803
4937
|
(ui2 = state.ui) => {
|
4804
4938
|
if (frameRef.current) {
|
4805
4939
|
setZoomConfig(
|
@@ -4809,11 +4943,11 @@ var Canvas = () => {
|
|
4809
4943
|
},
|
4810
4944
|
[frameRef, zoomConfig, state.ui]
|
4811
4945
|
);
|
4812
|
-
|
4946
|
+
useEffect17(() => {
|
4813
4947
|
setShowTransition(false);
|
4814
4948
|
resetAutoZoom();
|
4815
4949
|
}, [frameRef, ui.leftSideBarVisible, ui.rightSideBarVisible]);
|
4816
|
-
|
4950
|
+
useEffect17(() => {
|
4817
4951
|
const { height: frameHeight } = getFrameDimensions();
|
4818
4952
|
if (ui.viewports.current.height === "auto") {
|
4819
4953
|
setZoomConfig(__spreadProps(__spreadValues({}, zoomConfig), {
|
@@ -4821,7 +4955,13 @@ var Canvas = () => {
|
|
4821
4955
|
}));
|
4822
4956
|
}
|
4823
4957
|
}, [zoomConfig.zoom]);
|
4824
|
-
|
4958
|
+
useEffect17(() => {
|
4959
|
+
if (ZOOM_ON_CHANGE) {
|
4960
|
+
setShowTransition(true);
|
4961
|
+
resetAutoZoom(ui);
|
4962
|
+
}
|
4963
|
+
}, [ui.viewports.current.width]);
|
4964
|
+
useEffect17(() => {
|
4825
4965
|
const observer = new ResizeObserver(() => {
|
4826
4966
|
setShowTransition(false);
|
4827
4967
|
resetAutoZoom();
|
@@ -4833,11 +4973,18 @@ var Canvas = () => {
|
|
4833
4973
|
observer.disconnect();
|
4834
4974
|
};
|
4835
4975
|
}, []);
|
4976
|
+
const [showLoader, setShowLoader] = useState20(false);
|
4977
|
+
useEffect17(() => {
|
4978
|
+
setTimeout(() => {
|
4979
|
+
setShowLoader(true);
|
4980
|
+
}, 500);
|
4981
|
+
}, []);
|
4836
4982
|
return /* @__PURE__ */ jsxs20(
|
4837
4983
|
"div",
|
4838
4984
|
{
|
4839
4985
|
className: getClassName26({
|
4840
|
-
ready: status === "READY" || !iframe.enabled
|
4986
|
+
ready: status === "READY" || !iframe.enabled || !iframe.waitForStyles,
|
4987
|
+
showLoader
|
4841
4988
|
}),
|
4842
4989
|
onClick: () => dispatch({
|
4843
4990
|
type: "setUi",
|
@@ -4870,21 +5017,24 @@ var Canvas = () => {
|
|
4870
5017
|
}
|
4871
5018
|
}
|
4872
5019
|
) }),
|
4873
|
-
/* @__PURE__ */
|
4874
|
-
|
4875
|
-
|
4876
|
-
|
4877
|
-
|
4878
|
-
|
4879
|
-
|
4880
|
-
|
4881
|
-
|
4882
|
-
|
4883
|
-
|
4884
|
-
|
4885
|
-
|
4886
|
-
|
4887
|
-
|
5020
|
+
/* @__PURE__ */ jsxs20("div", { className: getClassName26("inner"), ref: frameRef, children: [
|
5021
|
+
/* @__PURE__ */ jsx37(
|
5022
|
+
"div",
|
5023
|
+
{
|
5024
|
+
className: getClassName26("root"),
|
5025
|
+
style: {
|
5026
|
+
width: iframe.enabled ? ui.viewports.current.width : "100%",
|
5027
|
+
height: zoomConfig.rootHeight,
|
5028
|
+
transform: iframe.enabled ? `scale(${zoomConfig.zoom})` : void 0,
|
5029
|
+
transition: showTransition ? "width 150ms ease-out, height 150ms ease-out, transform 150ms ease-out" : "",
|
5030
|
+
overflow: iframe.enabled ? void 0 : "auto"
|
5031
|
+
},
|
5032
|
+
suppressHydrationWarning: true,
|
5033
|
+
children: /* @__PURE__ */ jsx37(CustomPreview, { children: /* @__PURE__ */ jsx37(Preview, {}) })
|
5034
|
+
}
|
5035
|
+
),
|
5036
|
+
/* @__PURE__ */ jsx37("div", { className: getClassName26("loader"), children: /* @__PURE__ */ jsx37(Loader, { size: 24 }) })
|
5037
|
+
] })
|
4888
5038
|
]
|
4889
5039
|
}
|
4890
5040
|
);
|
@@ -4909,7 +5059,10 @@ var insertComponent = (componentType, zone, index, {
|
|
4909
5059
|
const insertedData = insertAction(state.data, insertActionData, config);
|
4910
5060
|
dispatch(__spreadProps(__spreadValues({}, insertActionData), {
|
4911
5061
|
// Dispatch insert rather set, as user's may rely on this via onAction
|
4912
|
-
|
5062
|
+
// We must always record history here so the insert is added to user history
|
5063
|
+
// If the user has defined a resolveData method, they will end up with 2 history
|
5064
|
+
// entries on insert - one for the initial insert, and one when the data resolves
|
5065
|
+
recordHistory: true
|
4913
5066
|
}));
|
4914
5067
|
const itemSelector = {
|
4915
5068
|
index,
|
@@ -4975,7 +5128,7 @@ var getLayoutClassName = get_class_name_factory_default("PuckLayout", styles_mod
|
|
4975
5128
|
function Puck({
|
4976
5129
|
children,
|
4977
5130
|
config,
|
4978
|
-
data: initialData
|
5131
|
+
data: initialData,
|
4979
5132
|
ui: initialUi,
|
4980
5133
|
onChange,
|
4981
5134
|
onPublish,
|
@@ -4988,18 +5141,16 @@ function Puck({
|
|
4988
5141
|
headerTitle,
|
4989
5142
|
headerPath,
|
4990
5143
|
viewports = defaultViewports,
|
4991
|
-
iframe
|
4992
|
-
enabled: true
|
4993
|
-
},
|
5144
|
+
iframe: _iframe,
|
4994
5145
|
dnd,
|
4995
|
-
initialHistory
|
5146
|
+
initialHistory: _initialHistory
|
4996
5147
|
}) {
|
4997
5148
|
var _a;
|
4998
|
-
const
|
4999
|
-
|
5000
|
-
|
5001
|
-
);
|
5002
|
-
const [
|
5149
|
+
const iframe = __spreadValues({
|
5150
|
+
enabled: true,
|
5151
|
+
waitForStyles: true
|
5152
|
+
}, _iframe);
|
5153
|
+
const [generatedAppState] = useState21(() => {
|
5003
5154
|
var _a2, _b, _c, _d, _e, _f, _g, _h, _i;
|
5004
5155
|
const initial = __spreadValues(__spreadValues({}, defaultAppState.ui), initialUi);
|
5005
5156
|
let clientUiState = {};
|
@@ -5017,14 +5168,14 @@ function Puck({
|
|
5017
5168
|
})).sort((a, b) => a.diff > b.diff ? 1 : -1);
|
5018
5169
|
const closestViewport = viewportDifferences[0].key;
|
5019
5170
|
if (iframe.enabled) {
|
5020
|
-
clientUiState = {
|
5171
|
+
clientUiState = __spreadProps(__spreadValues({}, clientUiState), {
|
5021
5172
|
viewports: __spreadProps(__spreadValues({}, initial.viewports), {
|
5022
5173
|
current: __spreadProps(__spreadValues({}, initial.viewports.current), {
|
5023
5174
|
height: ((_b = (_a2 = initialUi == null ? void 0 : initialUi.viewports) == null ? void 0 : _a2.current) == null ? void 0 : _b.height) || ((_c = viewports[closestViewport]) == null ? void 0 : _c.height) || "auto",
|
5024
5175
|
width: ((_e = (_d = initialUi == null ? void 0 : initialUi.viewports) == null ? void 0 : _d.current) == null ? void 0 : _e.width) || ((_f = viewports[closestViewport]) == null ? void 0 : _f.width)
|
5025
5176
|
})
|
5026
5177
|
})
|
5027
|
-
};
|
5178
|
+
});
|
5028
5179
|
}
|
5029
5180
|
}
|
5030
5181
|
if (Object.keys((initialData == null ? void 0 : initialData.root) || {}).length > 0 && !((_g = initialData == null ? void 0 : initialData.root) == null ? void 0 : _g.props)) {
|
@@ -5057,20 +5208,36 @@ function Puck({
|
|
5057
5208
|
})
|
5058
5209
|
});
|
5059
5210
|
});
|
5211
|
+
const { appendData = true } = _initialHistory || {};
|
5212
|
+
const histories = [
|
5213
|
+
...(_initialHistory == null ? void 0 : _initialHistory.histories) || [],
|
5214
|
+
...appendData ? [{ state: generatedAppState }] : []
|
5215
|
+
].map((history2) => __spreadProps(__spreadValues({}, history2), {
|
5216
|
+
// Inject default data to enable partial history injections
|
5217
|
+
state: __spreadValues(__spreadValues({}, generatedAppState), history2.state)
|
5218
|
+
}));
|
5219
|
+
const initialHistoryIndex = (_initialHistory == null ? void 0 : _initialHistory.index) || histories.length - 1;
|
5220
|
+
const initialAppState = histories[initialHistoryIndex].state;
|
5221
|
+
const historyStore = useHistoryStore({
|
5222
|
+
histories,
|
5223
|
+
index: initialHistoryIndex
|
5224
|
+
});
|
5225
|
+
const [reducer] = useState21(
|
5226
|
+
() => createReducer({
|
5227
|
+
config,
|
5228
|
+
record: historyStore.record,
|
5229
|
+
onAction
|
5230
|
+
})
|
5231
|
+
);
|
5060
5232
|
const [appState, dispatch] = useReducer(
|
5061
5233
|
reducer,
|
5062
5234
|
flushZones(initialAppState)
|
5063
5235
|
);
|
5064
5236
|
const { data, ui } = appState;
|
5065
5237
|
const history = usePuckHistory({ dispatch, initialAppState, historyStore });
|
5066
|
-
const
|
5067
|
-
appState,
|
5068
|
-
config,
|
5069
|
-
dispatch
|
5070
|
-
);
|
5071
|
-
const [menuOpen, setMenuOpen] = useState20(false);
|
5238
|
+
const [menuOpen, setMenuOpen] = useState21(false);
|
5072
5239
|
const { itemSelector, leftSideBarVisible, rightSideBarVisible } = ui;
|
5073
|
-
const setItemSelector =
|
5240
|
+
const setItemSelector = useCallback11(
|
5074
5241
|
(newItemSelector) => {
|
5075
5242
|
if (newItemSelector === itemSelector) return;
|
5076
5243
|
dispatch({
|
@@ -5082,13 +5249,13 @@ function Puck({
|
|
5082
5249
|
[itemSelector]
|
5083
5250
|
);
|
5084
5251
|
const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
|
5085
|
-
|
5252
|
+
useEffect18(() => {
|
5086
5253
|
if (onChange) onChange(data);
|
5087
5254
|
}, [data]);
|
5088
5255
|
const { onDragStartOrUpdate, placeholderStyle } = usePlaceholderStyle();
|
5089
|
-
const [draggedItem, setDraggedItem] =
|
5256
|
+
const [draggedItem, setDraggedItem] = useState21();
|
5090
5257
|
const rootProps = data.root.props || data.root;
|
5091
|
-
const toggleSidebars =
|
5258
|
+
const toggleSidebars = useCallback11(
|
5092
5259
|
(sidebar) => {
|
5093
5260
|
const widerViewport = window.matchMedia("(min-width: 638px)").matches;
|
5094
5261
|
const sideBarVisible = sidebar === "left" ? leftSideBarVisible : rightSideBarVisible;
|
@@ -5102,7 +5269,7 @@ function Puck({
|
|
5102
5269
|
},
|
5103
5270
|
[dispatch, leftSideBarVisible, rightSideBarVisible]
|
5104
5271
|
);
|
5105
|
-
|
5272
|
+
useEffect18(() => {
|
5106
5273
|
if (!window.matchMedia("(min-width: 638px)").matches) {
|
5107
5274
|
dispatch({
|
5108
5275
|
type: "setUi",
|
@@ -5168,8 +5335,8 @@ function Puck({
|
|
5168
5335
|
() => loadedOverrides.headerActions || defaultHeaderActionsRender,
|
5169
5336
|
[loadedOverrides]
|
5170
5337
|
);
|
5171
|
-
const [mounted, setMounted] =
|
5172
|
-
|
5338
|
+
const [mounted, setMounted] = useState21(false);
|
5339
|
+
useEffect18(() => {
|
5173
5340
|
setMounted(true);
|
5174
5341
|
}, []);
|
5175
5342
|
const selectedComponentConfig = selectedItem && config.components[selectedItem.type];
|
@@ -5182,8 +5349,6 @@ function Puck({
|
|
5182
5349
|
state: appState,
|
5183
5350
|
dispatch,
|
5184
5351
|
config,
|
5185
|
-
componentState,
|
5186
|
-
resolveData,
|
5187
5352
|
plugins: plugins || [],
|
5188
5353
|
overrides: loadedOverrides,
|
5189
5354
|
history,
|
@@ -5195,9 +5360,11 @@ function Puck({
|
|
5195
5360
|
duplicate: true,
|
5196
5361
|
insert: true,
|
5197
5362
|
edit: true
|
5198
|
-
}, permissions)
|
5363
|
+
}, permissions),
|
5364
|
+
getPermissions: () => ({}),
|
5365
|
+
refreshPermissions: () => null
|
5199
5366
|
},
|
5200
|
-
children: /* @__PURE__ */ jsx38(
|
5367
|
+
children: /* @__PURE__ */ jsx38(appContext.Consumer, { children: ({ resolveData }) => /* @__PURE__ */ jsx38(
|
5201
5368
|
DragDropContext,
|
5202
5369
|
{
|
5203
5370
|
autoScrollerOptions: { disabled: dnd == null ? void 0 : dnd.disableAutoScroll },
|
@@ -5287,90 +5454,115 @@ function Puck({
|
|
5287
5454
|
}
|
5288
5455
|
) }) }),
|
5289
5456
|
children: /* @__PURE__ */ jsx38("header", { className: getLayoutClassName("header"), children: /* @__PURE__ */ jsxs21("div", { className: getLayoutClassName("headerInner"), children: [
|
5290
|
-
/* @__PURE__ */ jsxs21(
|
5291
|
-
|
5292
|
-
|
5293
|
-
|
5294
|
-
|
5295
|
-
|
5296
|
-
|
5297
|
-
children: /* @__PURE__ */ jsx38(
|
5298
|
-
IconButton,
|
5457
|
+
/* @__PURE__ */ jsxs21(
|
5458
|
+
"div",
|
5459
|
+
{
|
5460
|
+
className: getLayoutClassName("headerToggle"),
|
5461
|
+
children: [
|
5462
|
+
/* @__PURE__ */ jsx38(
|
5463
|
+
"div",
|
5299
5464
|
{
|
5300
|
-
|
5301
|
-
|
5302
|
-
|
5303
|
-
|
5304
|
-
|
5465
|
+
className: getLayoutClassName(
|
5466
|
+
"leftSideBarToggle"
|
5467
|
+
),
|
5468
|
+
children: /* @__PURE__ */ jsx38(
|
5469
|
+
IconButton,
|
5470
|
+
{
|
5471
|
+
onClick: () => {
|
5472
|
+
toggleSidebars("left");
|
5473
|
+
},
|
5474
|
+
title: "Toggle left sidebar",
|
5475
|
+
children: /* @__PURE__ */ jsx38(PanelLeft, { focusable: "false" })
|
5476
|
+
}
|
5477
|
+
)
|
5305
5478
|
}
|
5306
|
-
)
|
5307
|
-
}
|
5308
|
-
),
|
5309
|
-
/* @__PURE__ */ jsx38(
|
5310
|
-
"div",
|
5311
|
-
{
|
5312
|
-
className: getLayoutClassName(
|
5313
|
-
"rightSideBarToggle"
|
5314
5479
|
),
|
5315
|
-
|
5316
|
-
|
5480
|
+
/* @__PURE__ */ jsx38(
|
5481
|
+
"div",
|
5317
5482
|
{
|
5318
|
-
|
5319
|
-
|
5320
|
-
|
5321
|
-
|
5322
|
-
|
5483
|
+
className: getLayoutClassName(
|
5484
|
+
"rightSideBarToggle"
|
5485
|
+
),
|
5486
|
+
children: /* @__PURE__ */ jsx38(
|
5487
|
+
IconButton,
|
5488
|
+
{
|
5489
|
+
onClick: () => {
|
5490
|
+
toggleSidebars("right");
|
5491
|
+
},
|
5492
|
+
title: "Toggle right sidebar",
|
5493
|
+
children: /* @__PURE__ */ jsx38(PanelRight, { focusable: "false" })
|
5494
|
+
}
|
5495
|
+
)
|
5323
5496
|
}
|
5324
5497
|
)
|
5325
|
-
|
5326
|
-
|
5327
|
-
|
5328
|
-
/* @__PURE__ */ jsx38(
|
5329
|
-
|
5330
|
-
|
5331
|
-
|
5332
|
-
/* @__PURE__ */
|
5333
|
-
"
|
5334
|
-
{
|
5335
|
-
|
5336
|
-
|
5337
|
-
|
5338
|
-
|
5339
|
-
|
5340
|
-
|
5341
|
-
|
5342
|
-
|
5343
|
-
|
5344
|
-
|
5345
|
-
|
5346
|
-
|
5347
|
-
|
5348
|
-
|
5349
|
-
|
5350
|
-
|
5351
|
-
|
5352
|
-
|
5353
|
-
|
5354
|
-
|
5355
|
-
|
5356
|
-
data,
|
5357
|
-
dispatch,
|
5358
|
-
onPublish,
|
5359
|
-
menuOpen,
|
5360
|
-
renderHeaderActions: () => /* @__PURE__ */ jsx38(CustomHeaderActions, { children: /* @__PURE__ */ jsx38(
|
5361
|
-
Button,
|
5498
|
+
]
|
5499
|
+
}
|
5500
|
+
),
|
5501
|
+
/* @__PURE__ */ jsx38(
|
5502
|
+
"div",
|
5503
|
+
{
|
5504
|
+
className: getLayoutClassName("headerTitle"),
|
5505
|
+
children: /* @__PURE__ */ jsxs21(Heading, { rank: "2", size: "xs", children: [
|
5506
|
+
headerTitle || rootProps.title || "Page",
|
5507
|
+
headerPath && /* @__PURE__ */ jsxs21(Fragment19, { children: [
|
5508
|
+
" ",
|
5509
|
+
/* @__PURE__ */ jsx38(
|
5510
|
+
"code",
|
5511
|
+
{
|
5512
|
+
className: getLayoutClassName(
|
5513
|
+
"headerPath"
|
5514
|
+
),
|
5515
|
+
children: headerPath
|
5516
|
+
}
|
5517
|
+
)
|
5518
|
+
] })
|
5519
|
+
] })
|
5520
|
+
}
|
5521
|
+
),
|
5522
|
+
/* @__PURE__ */ jsxs21(
|
5523
|
+
"div",
|
5524
|
+
{
|
5525
|
+
className: getLayoutClassName("headerTools"),
|
5526
|
+
children: [
|
5527
|
+
/* @__PURE__ */ jsx38(
|
5528
|
+
"div",
|
5362
5529
|
{
|
5363
|
-
|
5364
|
-
|
5365
|
-
|
5366
|
-
|
5367
|
-
|
5530
|
+
className: getLayoutClassName("menuButton"),
|
5531
|
+
children: /* @__PURE__ */ jsx38(
|
5532
|
+
IconButton,
|
5533
|
+
{
|
5534
|
+
onClick: () => {
|
5535
|
+
return setMenuOpen(!menuOpen);
|
5536
|
+
},
|
5537
|
+
title: "Toggle menu bar",
|
5538
|
+
children: menuOpen ? /* @__PURE__ */ jsx38(ChevronUp, { focusable: "false" }) : /* @__PURE__ */ jsx38(ChevronDown, { focusable: "false" })
|
5539
|
+
}
|
5540
|
+
)
|
5368
5541
|
}
|
5369
|
-
)
|
5370
|
-
|
5371
|
-
|
5372
|
-
|
5373
|
-
|
5542
|
+
),
|
5543
|
+
/* @__PURE__ */ jsx38(
|
5544
|
+
MenuBar,
|
5545
|
+
{
|
5546
|
+
appState,
|
5547
|
+
dispatch,
|
5548
|
+
onPublish,
|
5549
|
+
menuOpen,
|
5550
|
+
renderHeaderActions: () => /* @__PURE__ */ jsx38(CustomHeaderActions, { children: /* @__PURE__ */ jsx38(
|
5551
|
+
Button,
|
5552
|
+
{
|
5553
|
+
onClick: () => {
|
5554
|
+
onPublish && onPublish(data);
|
5555
|
+
},
|
5556
|
+
icon: /* @__PURE__ */ jsx38(Globe, { size: "14px" }),
|
5557
|
+
children: "Publish"
|
5558
|
+
}
|
5559
|
+
) }),
|
5560
|
+
setMenuOpen
|
5561
|
+
}
|
5562
|
+
)
|
5563
|
+
]
|
5564
|
+
}
|
5565
|
+
)
|
5374
5566
|
] }) })
|
5375
5567
|
}
|
5376
5568
|
),
|
@@ -5395,7 +5587,7 @@ function Puck({
|
|
5395
5587
|
}
|
5396
5588
|
)
|
5397
5589
|
}
|
5398
|
-
)
|
5590
|
+
) })
|
5399
5591
|
}
|
5400
5592
|
),
|
5401
5593
|
/* @__PURE__ */ jsx38("div", { id: "puck-portal-root", className: getClassName27("portal") })
|
@@ -5544,24 +5736,15 @@ var usePuck = () => {
|
|
5544
5736
|
history,
|
5545
5737
|
dispatch,
|
5546
5738
|
selectedItem: currentItem,
|
5547
|
-
|
5739
|
+
getPermissions,
|
5740
|
+
refreshPermissions
|
5548
5741
|
} = useAppContext();
|
5549
5742
|
return {
|
5550
5743
|
appState,
|
5551
5744
|
config,
|
5552
5745
|
dispatch,
|
5553
|
-
getPermissions
|
5554
|
-
|
5555
|
-
type
|
5556
|
-
} = {}) => {
|
5557
|
-
return getPermissions({
|
5558
|
-
selectedItem: item || currentItem,
|
5559
|
-
type,
|
5560
|
-
globalPermissions: globalPermissions || {},
|
5561
|
-
config,
|
5562
|
-
appState
|
5563
|
-
});
|
5564
|
-
},
|
5746
|
+
getPermissions,
|
5747
|
+
refreshPermissions,
|
5565
5748
|
history: {
|
5566
5749
|
back: history.back,
|
5567
5750
|
forward: history.forward,
|
@@ -5587,11 +5770,13 @@ export {
|
|
5587
5770
|
DropZoneProvider,
|
5588
5771
|
FieldLabel,
|
5589
5772
|
FieldLabelInternal2 as FieldLabelInternal,
|
5773
|
+
Group,
|
5590
5774
|
IconButton,
|
5591
5775
|
Puck,
|
5592
5776
|
Render,
|
5593
5777
|
dropZoneContext,
|
5594
5778
|
migrate,
|
5779
|
+
overrideKeys,
|
5595
5780
|
resolveAllData,
|
5596
5781
|
transformProps,
|
5597
5782
|
usePuck
|