@measured/puck 0.16.0-canary.6d43ba0 → 0.16.0-canary.7a6a65c
Sign up to get free protection for your applications and to get access to all the features.
- 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
|