@measured/puck 0.17.4-canary.18f0d46 → 0.17.4-canary.5c60d6a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +142 -100
- package/dist/index.mjs +125 -83
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
@@ -156,7 +156,9 @@ declare function Puck<UserConfig extends Config = Config, G extends UserGenerics
|
|
156
156
|
}): react_jsx_runtime.JSX.Element;
|
157
157
|
declare namespace Puck {
|
158
158
|
var Components: () => react_jsx_runtime.JSX.Element;
|
159
|
-
var Fields: (
|
159
|
+
var Fields: ({ wrapFields }: {
|
160
|
+
wrapFields?: boolean;
|
161
|
+
}) => react_jsx_runtime.JSX.Element;
|
160
162
|
var Outline: () => react_jsx_runtime.JSX.Element;
|
161
163
|
var Preview: ({ id }: {
|
162
164
|
id?: string;
|
package/dist/index.d.ts
CHANGED
@@ -156,7 +156,9 @@ declare function Puck<UserConfig extends Config = Config, G extends UserGenerics
|
|
156
156
|
}): react_jsx_runtime.JSX.Element;
|
157
157
|
declare namespace Puck {
|
158
158
|
var Components: () => react_jsx_runtime.JSX.Element;
|
159
|
-
var Fields: (
|
159
|
+
var Fields: ({ wrapFields }: {
|
160
|
+
wrapFields?: boolean;
|
161
|
+
}) => react_jsx_runtime.JSX.Element;
|
160
162
|
var Outline: () => react_jsx_runtime.JSX.Element;
|
161
163
|
var Preview: ({ id }: {
|
162
164
|
id?: string;
|
package/dist/index.js
CHANGED
@@ -3345,7 +3345,7 @@ function DropZone(props) {
|
|
3345
3345
|
|
3346
3346
|
// components/Puck/index.tsx
|
3347
3347
|
init_react_import();
|
3348
|
-
var
|
3348
|
+
var import_react39 = require("react");
|
3349
3349
|
|
3350
3350
|
// lib/use-placeholder-style.ts
|
3351
3351
|
init_react_import();
|
@@ -3956,33 +3956,58 @@ init_react_import();
|
|
3956
3956
|
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" };
|
3957
3957
|
|
3958
3958
|
// components/Puck/components/Fields/index.tsx
|
3959
|
-
var
|
3959
|
+
var import_react28 = require("react");
|
3960
|
+
|
3961
|
+
// lib/use-resolved-fields.ts
|
3962
|
+
init_react_import();
|
3963
|
+
var import_react27 = require("react");
|
3960
3964
|
|
3961
3965
|
// lib/use-parent.ts
|
3962
3966
|
init_react_import();
|
3963
3967
|
var import_react25 = require("react");
|
3964
|
-
var
|
3968
|
+
var getParent = (itemSelector, pathData, data) => {
|
3965
3969
|
var _a;
|
3966
|
-
|
3967
|
-
const
|
3968
|
-
const
|
3969
|
-
const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, state.data);
|
3970
|
+
if (!itemSelector) return null;
|
3971
|
+
const item = getItem(itemSelector, data);
|
3972
|
+
const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, data);
|
3970
3973
|
const lastItem = breadcrumbs[breadcrumbs.length - 1];
|
3971
|
-
const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector,
|
3974
|
+
const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, data)) != null ? _a : null : null;
|
3972
3975
|
return parent || null;
|
3973
3976
|
};
|
3977
|
+
var useGetParent = () => {
|
3978
|
+
const { state } = useAppContext();
|
3979
|
+
const { pathData } = (0, import_react25.useContext)(dropZoneContext) || {};
|
3980
|
+
return (0, import_react25.useCallback)(
|
3981
|
+
() => getParent(state.ui.itemSelector, pathData, state.data),
|
3982
|
+
[state.ui.itemSelector, pathData, state.data]
|
3983
|
+
);
|
3984
|
+
};
|
3985
|
+
var useParent = () => {
|
3986
|
+
return useGetParent()();
|
3987
|
+
};
|
3974
3988
|
|
3975
|
-
//
|
3976
|
-
|
3977
|
-
var
|
3989
|
+
// lib/use-on-value-change.ts
|
3990
|
+
init_react_import();
|
3991
|
+
var import_react26 = require("react");
|
3992
|
+
function useOnValueChange(value, onChange, compare = Object.is, deps = []) {
|
3993
|
+
const tracked = (0, import_react26.useRef)(value);
|
3994
|
+
(0, import_react26.useEffect)(() => {
|
3995
|
+
const oldValue = tracked.current;
|
3996
|
+
if (!compare(value, oldValue)) {
|
3997
|
+
tracked.current = value;
|
3998
|
+
onChange(value, oldValue);
|
3999
|
+
}
|
4000
|
+
}, [onChange, compare, value, ...deps]);
|
4001
|
+
}
|
4002
|
+
|
4003
|
+
// lib/selector-is.ts
|
4004
|
+
init_react_import();
|
4005
|
+
var selectorIs = (a, b) => (a == null ? void 0 : a.zone) === (b == null ? void 0 : b.zone) && (a == null ? void 0 : a.index) === (b == null ? void 0 : b.index);
|
4006
|
+
|
4007
|
+
// lib/use-resolved-fields.ts
|
3978
4008
|
var defaultPageFields = {
|
3979
4009
|
title: { type: "text" }
|
3980
4010
|
};
|
3981
|
-
var DefaultFields = ({
|
3982
|
-
children
|
3983
|
-
}) => {
|
3984
|
-
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jsx_runtime28.Fragment, { children });
|
3985
|
-
};
|
3986
4011
|
var useResolvedFields = () => {
|
3987
4012
|
var _a, _b;
|
3988
4013
|
const { selectedItem, state, config } = useAppContext();
|
@@ -3990,20 +4015,21 @@ var useResolvedFields = () => {
|
|
3990
4015
|
const { data } = state;
|
3991
4016
|
const rootFields = ((_a = config.root) == null ? void 0 : _a.fields) || defaultPageFields;
|
3992
4017
|
const componentConfig = selectedItem ? config.components[selectedItem.type] : null;
|
3993
|
-
const defaultFields = (0,
|
4018
|
+
const defaultFields = (0, import_react27.useMemo)(
|
3994
4019
|
() => (selectedItem ? componentConfig == null ? void 0 : componentConfig.fields : rootFields) || {},
|
3995
4020
|
[selectedItem, rootFields, componentConfig == null ? void 0 : componentConfig.fields]
|
3996
4021
|
);
|
3997
4022
|
const rootProps = data.root.props || data.root;
|
3998
|
-
const [lastSelectedData, setLastSelectedData] = (0,
|
3999
|
-
const [resolvedFields, setResolvedFields] = (0,
|
4000
|
-
const [fieldsLoading, setFieldsLoading] = (0,
|
4023
|
+
const [lastSelectedData, setLastSelectedData] = (0, import_react27.useState)({});
|
4024
|
+
const [resolvedFields, setResolvedFields] = (0, import_react27.useState)(defaultFields);
|
4025
|
+
const [fieldsLoading, setFieldsLoading] = (0, import_react27.useState)(false);
|
4026
|
+
const lastFields = (0, import_react27.useRef)(defaultFields);
|
4001
4027
|
const defaultResolveFields = (_componentData, _params) => defaultFields;
|
4002
4028
|
const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
|
4003
4029
|
const hasComponentResolver = selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields);
|
4004
4030
|
const hasRootResolver = !selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields);
|
4005
4031
|
const hasResolver = hasComponentResolver || hasRootResolver;
|
4006
|
-
const resolveFields = (0,
|
4032
|
+
const resolveFields = (0, import_react27.useCallback)(
|
4007
4033
|
(..._0) => __async(void 0, [..._0], function* (fields = {}) {
|
4008
4034
|
var _a2;
|
4009
4035
|
const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : null;
|
@@ -4015,7 +4041,7 @@ var useResolvedFields = () => {
|
|
4015
4041
|
{
|
4016
4042
|
changed,
|
4017
4043
|
fields,
|
4018
|
-
lastFields:
|
4044
|
+
lastFields: lastFields.current,
|
4019
4045
|
lastData,
|
4020
4046
|
appState: state,
|
4021
4047
|
parent
|
@@ -4026,7 +4052,7 @@ var useResolvedFields = () => {
|
|
4026
4052
|
return yield config.root.resolveFields(componentData, {
|
4027
4053
|
changed,
|
4028
4054
|
fields,
|
4029
|
-
lastFields:
|
4055
|
+
lastFields: lastFields.current,
|
4030
4056
|
lastData,
|
4031
4057
|
appState: state,
|
4032
4058
|
parent
|
@@ -4035,40 +4061,56 @@ var useResolvedFields = () => {
|
|
4035
4061
|
return defaultResolveFields(componentData, {
|
4036
4062
|
changed,
|
4037
4063
|
fields,
|
4038
|
-
lastFields:
|
4064
|
+
lastFields: lastFields.current,
|
4039
4065
|
lastData
|
4040
4066
|
});
|
4041
4067
|
}),
|
4042
|
-
[data, config, componentData, selectedItem,
|
4068
|
+
[data, config, componentData, selectedItem, state, parent]
|
4043
4069
|
);
|
4044
|
-
const
|
4045
|
-
(0, import_react26.useEffect)(() => {
|
4046
|
-
setHasParent(!!parent);
|
4047
|
-
}, [parent]);
|
4048
|
-
(0, import_react26.useEffect)(() => {
|
4070
|
+
const triggerResolver = (0, import_react27.useCallback)(() => {
|
4049
4071
|
var _a2, _b2;
|
4050
|
-
if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" ||
|
4072
|
+
if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || parent) {
|
4051
4073
|
if (hasResolver) {
|
4052
4074
|
setFieldsLoading(true);
|
4053
4075
|
resolveFields(defaultFields).then((fields) => {
|
4054
4076
|
setResolvedFields(fields || {});
|
4077
|
+
lastFields.current = fields;
|
4055
4078
|
setFieldsLoading(false);
|
4056
4079
|
});
|
4057
4080
|
return;
|
4058
4081
|
}
|
4059
4082
|
}
|
4060
4083
|
setResolvedFields(defaultFields);
|
4061
|
-
}, [
|
4062
|
-
|
4063
|
-
defaultFields,
|
4084
|
+
}, [defaultFields, state.ui.itemSelector, hasResolver, parent]);
|
4085
|
+
useOnValueChange(
|
4064
4086
|
state.ui.itemSelector,
|
4065
|
-
|
4066
|
-
|
4067
|
-
|
4068
|
-
|
4087
|
+
() => {
|
4088
|
+
lastFields.current = defaultFields;
|
4089
|
+
},
|
4090
|
+
selectorIs
|
4091
|
+
);
|
4092
|
+
useOnValueChange(
|
4093
|
+
{ data, parent, itemSelector: state.ui.itemSelector },
|
4094
|
+
() => {
|
4095
|
+
triggerResolver();
|
4096
|
+
},
|
4097
|
+
(a, b) => JSON.stringify(a) === JSON.stringify(b)
|
4098
|
+
);
|
4099
|
+
(0, import_react27.useEffect)(() => {
|
4100
|
+
triggerResolver();
|
4101
|
+
}, []);
|
4069
4102
|
return [resolvedFields, fieldsLoading];
|
4070
4103
|
};
|
4071
|
-
|
4104
|
+
|
4105
|
+
// components/Puck/components/Fields/index.tsx
|
4106
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
4107
|
+
var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
|
4108
|
+
var DefaultFields = ({
|
4109
|
+
children
|
4110
|
+
}) => {
|
4111
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jsx_runtime28.Fragment, { children });
|
4112
|
+
};
|
4113
|
+
var Fields = ({ wrapFields = true }) => {
|
4072
4114
|
var _a, _b;
|
4073
4115
|
const {
|
4074
4116
|
selectedItem,
|
@@ -4086,7 +4128,7 @@ var Fields = () => {
|
|
4086
4128
|
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;
|
4087
4129
|
const isLoading = fieldsResolving || componentResolving;
|
4088
4130
|
const rootProps = data.root.props || data.root;
|
4089
|
-
const Wrapper = (0,
|
4131
|
+
const Wrapper = (0, import_react28.useMemo)(() => overrides.fields || DefaultFields, [overrides]);
|
4090
4132
|
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
4091
4133
|
"form",
|
4092
4134
|
{
|
@@ -4209,7 +4251,7 @@ init_react_import();
|
|
4209
4251
|
|
4210
4252
|
// lib/use-component-list.tsx
|
4211
4253
|
init_react_import();
|
4212
|
-
var
|
4254
|
+
var import_react29 = require("react");
|
4213
4255
|
|
4214
4256
|
// components/ComponentList/index.tsx
|
4215
4257
|
init_react_import();
|
@@ -4287,8 +4329,8 @@ ComponentList.Item = ComponentListItem;
|
|
4287
4329
|
// lib/use-component-list.tsx
|
4288
4330
|
var import_jsx_runtime30 = require("react/jsx-runtime");
|
4289
4331
|
var useComponentList = (config, ui) => {
|
4290
|
-
const [componentList, setComponentList] = (0,
|
4291
|
-
(0,
|
4332
|
+
const [componentList, setComponentList] = (0, import_react29.useState)();
|
4333
|
+
(0, import_react29.useEffect)(() => {
|
4292
4334
|
var _a, _b, _c;
|
4293
4335
|
if (Object.keys(ui.componentList).length > 0) {
|
4294
4336
|
const matchedComponents = [];
|
@@ -4357,22 +4399,22 @@ var useComponentList = (config, ui) => {
|
|
4357
4399
|
};
|
4358
4400
|
|
4359
4401
|
// components/Puck/components/Components/index.tsx
|
4360
|
-
var
|
4402
|
+
var import_react30 = require("react");
|
4361
4403
|
var import_jsx_runtime31 = require("react/jsx-runtime");
|
4362
4404
|
var Components = () => {
|
4363
4405
|
const { config, state, overrides } = useAppContext();
|
4364
4406
|
const componentList = useComponentList(config, state.ui);
|
4365
|
-
const Wrapper = (0,
|
4407
|
+
const Wrapper = (0, import_react30.useMemo)(() => overrides.components || "div", [overrides]);
|
4366
4408
|
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Wrapper, { children: componentList ? componentList : /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(ComponentList, { id: "all" }) });
|
4367
4409
|
};
|
4368
4410
|
|
4369
4411
|
// components/Puck/components/Preview/index.tsx
|
4370
4412
|
init_react_import();
|
4371
|
-
var
|
4413
|
+
var import_react32 = require("react");
|
4372
4414
|
|
4373
4415
|
// components/AutoFrame/index.tsx
|
4374
4416
|
init_react_import();
|
4375
|
-
var
|
4417
|
+
var import_react31 = require("react");
|
4376
4418
|
var import_object_hash = __toESM(require("object-hash"));
|
4377
4419
|
var import_react_dom2 = require("react-dom");
|
4378
4420
|
var import_jsx_runtime32 = require("react/jsx-runtime");
|
@@ -4418,7 +4460,7 @@ var CopyHostStyles = ({
|
|
4418
4460
|
onStylesLoaded = () => null
|
4419
4461
|
}) => {
|
4420
4462
|
const { document: doc, window: win } = useFrame();
|
4421
|
-
(0,
|
4463
|
+
(0, import_react31.useEffect)(() => {
|
4422
4464
|
if (!win || !doc) {
|
4423
4465
|
return () => {
|
4424
4466
|
};
|
@@ -4577,8 +4619,8 @@ var CopyHostStyles = ({
|
|
4577
4619
|
}, []);
|
4578
4620
|
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_jsx_runtime32.Fragment, { children });
|
4579
4621
|
};
|
4580
|
-
var autoFrameContext = (0,
|
4581
|
-
var useFrame = () => (0,
|
4622
|
+
var autoFrameContext = (0, import_react31.createContext)({});
|
4623
|
+
var useFrame = () => (0, import_react31.useContext)(autoFrameContext);
|
4582
4624
|
function AutoFrame(_a) {
|
4583
4625
|
var _b = _a, {
|
4584
4626
|
children,
|
@@ -4593,11 +4635,11 @@ function AutoFrame(_a) {
|
|
4593
4635
|
"id",
|
4594
4636
|
"onStylesLoaded"
|
4595
4637
|
]);
|
4596
|
-
const [loaded, setLoaded] = (0,
|
4597
|
-
const [ctx, setCtx] = (0,
|
4598
|
-
const ref = (0,
|
4599
|
-
const [mountTarget, setMountTarget] = (0,
|
4600
|
-
(0,
|
4638
|
+
const [loaded, setLoaded] = (0, import_react31.useState)(false);
|
4639
|
+
const [ctx, setCtx] = (0, import_react31.useState)({});
|
4640
|
+
const ref = (0, import_react31.useRef)(null);
|
4641
|
+
const [mountTarget, setMountTarget] = (0, import_react31.useState)();
|
4642
|
+
(0, import_react31.useEffect)(() => {
|
4601
4643
|
var _a2;
|
4602
4644
|
if (ref.current) {
|
4603
4645
|
setCtx({
|
@@ -4633,7 +4675,7 @@ var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
4633
4675
|
var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
|
4634
4676
|
var Preview = ({ id = "puck-preview" }) => {
|
4635
4677
|
const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
|
4636
|
-
const Page = (0,
|
4678
|
+
const Page = (0, import_react32.useCallback)(
|
4637
4679
|
(pageProps) => {
|
4638
4680
|
var _a, _b;
|
4639
4681
|
return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadValues({
|
@@ -4642,7 +4684,7 @@ var Preview = ({ id = "puck-preview" }) => {
|
|
4642
4684
|
},
|
4643
4685
|
[config.root]
|
4644
4686
|
);
|
4645
|
-
const Frame = (0,
|
4687
|
+
const Frame = (0, import_react32.useMemo)(() => overrides.iframe, [overrides]);
|
4646
4688
|
const rootProps = state.data.root.props || state.data.root;
|
4647
4689
|
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
4648
4690
|
"div",
|
@@ -4731,7 +4773,7 @@ var scrollIntoView = (el) => {
|
|
4731
4773
|
};
|
4732
4774
|
|
4733
4775
|
// components/LayerTree/index.tsx
|
4734
|
-
var
|
4776
|
+
var import_react33 = require("react");
|
4735
4777
|
|
4736
4778
|
// lib/is-child-of-zone.ts
|
4737
4779
|
init_react_import();
|
@@ -4758,7 +4800,7 @@ var LayerTree = ({
|
|
4758
4800
|
label
|
4759
4801
|
}) => {
|
4760
4802
|
const zones = data.zones || {};
|
4761
|
-
const ctx = (0,
|
4803
|
+
const ctx = (0, import_react33.useContext)(dropZoneContext);
|
4762
4804
|
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_jsx_runtime34.Fragment, { children: [
|
4763
4805
|
label && /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: getClassName24("zoneTitle"), children: [
|
4764
4806
|
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: getClassName24("zoneIcon"), children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Layers, { size: "16" }) }),
|
@@ -4864,13 +4906,13 @@ var LayerTree = ({
|
|
4864
4906
|
};
|
4865
4907
|
|
4866
4908
|
// components/Puck/components/Outline/index.tsx
|
4867
|
-
var
|
4909
|
+
var import_react34 = require("react");
|
4868
4910
|
var import_jsx_runtime35 = require("react/jsx-runtime");
|
4869
4911
|
var Outline = () => {
|
4870
4912
|
const { dispatch, state, overrides, config } = useAppContext();
|
4871
4913
|
const { data, ui } = state;
|
4872
4914
|
const { itemSelector } = ui;
|
4873
|
-
const setItemSelector = (0,
|
4915
|
+
const setItemSelector = (0, import_react34.useCallback)(
|
4874
4916
|
(newItemSelector) => {
|
4875
4917
|
dispatch({
|
4876
4918
|
type: "setUi",
|
@@ -4879,7 +4921,7 @@ var Outline = () => {
|
|
4879
4921
|
},
|
4880
4922
|
[]
|
4881
4923
|
);
|
4882
|
-
const Wrapper = (0,
|
4924
|
+
const Wrapper = (0, import_react34.useMemo)(() => overrides.outline || "div", [overrides]);
|
4883
4925
|
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Wrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(dropZoneContext.Consumer, { children: (ctx) => /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_jsx_runtime35.Fragment, { children: [
|
4884
4926
|
(ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
|
4885
4927
|
LayerTree,
|
@@ -4993,19 +5035,19 @@ function usePuckHistory({
|
|
4993
5035
|
|
4994
5036
|
// lib/use-history-store.ts
|
4995
5037
|
init_react_import();
|
4996
|
-
var
|
5038
|
+
var import_react35 = require("react");
|
4997
5039
|
var import_use_debounce3 = require("use-debounce");
|
4998
5040
|
var EMPTY_HISTORY_INDEX = 0;
|
4999
5041
|
function useHistoryStore(initialHistory) {
|
5000
5042
|
var _a, _b;
|
5001
|
-
const [histories, setHistories] = (0,
|
5043
|
+
const [histories, setHistories] = (0, import_react35.useState)(
|
5002
5044
|
(_a = initialHistory == null ? void 0 : initialHistory.histories) != null ? _a : []
|
5003
5045
|
);
|
5004
5046
|
const updateHistories = (histories2) => {
|
5005
5047
|
setHistories(histories2);
|
5006
5048
|
setIndex(histories2.length - 1);
|
5007
5049
|
};
|
5008
|
-
const [index, setIndex] = (0,
|
5050
|
+
const [index, setIndex] = (0, import_react35.useState)(
|
5009
5051
|
(_b = initialHistory == null ? void 0 : initialHistory.index) != null ? _b : EMPTY_HISTORY_INDEX
|
5010
5052
|
);
|
5011
5053
|
const hasPast = index > EMPTY_HISTORY_INDEX;
|
@@ -5165,11 +5207,11 @@ var getBox = function getBox2(el) {
|
|
5165
5207
|
};
|
5166
5208
|
|
5167
5209
|
// components/Puck/components/Canvas/index.tsx
|
5168
|
-
var
|
5210
|
+
var import_react37 = require("react");
|
5169
5211
|
|
5170
5212
|
// components/ViewportControls/index.tsx
|
5171
5213
|
init_react_import();
|
5172
|
-
var
|
5214
|
+
var import_react36 = require("react");
|
5173
5215
|
|
5174
5216
|
// css-module:/home/runner/work/puck/puck/packages/core/components/ViewportControls/styles.module.css#css-module
|
5175
5217
|
init_react_import();
|
@@ -5192,8 +5234,8 @@ var ViewportButton = ({
|
|
5192
5234
|
onClick
|
5193
5235
|
}) => {
|
5194
5236
|
const { state } = useAppContext();
|
5195
|
-
const [isActive, setIsActive] = (0,
|
5196
|
-
(0,
|
5237
|
+
const [isActive, setIsActive] = (0, import_react36.useState)(false);
|
5238
|
+
(0, import_react36.useEffect)(() => {
|
5197
5239
|
setIsActive(width === state.ui.viewports.current.width);
|
5198
5240
|
}, [width, state.ui.viewports.current.width]);
|
5199
5241
|
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
@@ -5229,7 +5271,7 @@ var ViewportControls = ({
|
|
5229
5271
|
const defaultsContainAutoZoom = defaultZoomOptions.find(
|
5230
5272
|
(option) => option.value === autoZoom
|
5231
5273
|
);
|
5232
|
-
const zoomOptions = (0,
|
5274
|
+
const zoomOptions = (0, import_react36.useMemo)(
|
5233
5275
|
() => [
|
5234
5276
|
...defaultZoomOptions,
|
5235
5277
|
...defaultsContainAutoZoom ? [] : [
|
@@ -5352,17 +5394,17 @@ var Canvas = () => {
|
|
5352
5394
|
const { status, iframe } = useAppContext();
|
5353
5395
|
const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
|
5354
5396
|
const { ui } = state;
|
5355
|
-
const frameRef = (0,
|
5356
|
-
const [showTransition, setShowTransition] = (0,
|
5357
|
-
const defaultRender = (0,
|
5397
|
+
const frameRef = (0, import_react37.useRef)(null);
|
5398
|
+
const [showTransition, setShowTransition] = (0, import_react37.useState)(false);
|
5399
|
+
const defaultRender = (0, import_react37.useMemo)(() => {
|
5358
5400
|
const PuckDefault = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_jsx_runtime37.Fragment, { children });
|
5359
5401
|
return PuckDefault;
|
5360
5402
|
}, []);
|
5361
|
-
const CustomPreview = (0,
|
5403
|
+
const CustomPreview = (0, import_react37.useMemo)(
|
5362
5404
|
() => overrides.preview || defaultRender,
|
5363
5405
|
[overrides]
|
5364
5406
|
);
|
5365
|
-
const getFrameDimensions = (0,
|
5407
|
+
const getFrameDimensions = (0, import_react37.useCallback)(() => {
|
5366
5408
|
if (frameRef.current) {
|
5367
5409
|
const frame = frameRef.current;
|
5368
5410
|
const box = getBox(frame);
|
@@ -5370,7 +5412,7 @@ var Canvas = () => {
|
|
5370
5412
|
}
|
5371
5413
|
return { width: 0, height: 0 };
|
5372
5414
|
}, [frameRef]);
|
5373
|
-
const resetAutoZoom = (0,
|
5415
|
+
const resetAutoZoom = (0, import_react37.useCallback)(
|
5374
5416
|
(ui2 = state.ui) => {
|
5375
5417
|
if (frameRef.current) {
|
5376
5418
|
setZoomConfig(
|
@@ -5380,11 +5422,11 @@ var Canvas = () => {
|
|
5380
5422
|
},
|
5381
5423
|
[frameRef, zoomConfig, state.ui]
|
5382
5424
|
);
|
5383
|
-
(0,
|
5425
|
+
(0, import_react37.useEffect)(() => {
|
5384
5426
|
setShowTransition(false);
|
5385
5427
|
resetAutoZoom();
|
5386
5428
|
}, [frameRef, ui.leftSideBarVisible, ui.rightSideBarVisible]);
|
5387
|
-
(0,
|
5429
|
+
(0, import_react37.useEffect)(() => {
|
5388
5430
|
const { height: frameHeight } = getFrameDimensions();
|
5389
5431
|
if (ui.viewports.current.height === "auto") {
|
5390
5432
|
setZoomConfig(__spreadProps(__spreadValues({}, zoomConfig), {
|
@@ -5392,13 +5434,13 @@ var Canvas = () => {
|
|
5392
5434
|
}));
|
5393
5435
|
}
|
5394
5436
|
}, [zoomConfig.zoom]);
|
5395
|
-
(0,
|
5437
|
+
(0, import_react37.useEffect)(() => {
|
5396
5438
|
if (ZOOM_ON_CHANGE) {
|
5397
5439
|
setShowTransition(true);
|
5398
5440
|
resetAutoZoom(ui);
|
5399
5441
|
}
|
5400
5442
|
}, [ui.viewports.current.width]);
|
5401
|
-
(0,
|
5443
|
+
(0, import_react37.useEffect)(() => {
|
5402
5444
|
const observer = new ResizeObserver(() => {
|
5403
5445
|
setShowTransition(false);
|
5404
5446
|
resetAutoZoom();
|
@@ -5410,8 +5452,8 @@ var Canvas = () => {
|
|
5410
5452
|
observer.disconnect();
|
5411
5453
|
};
|
5412
5454
|
}, []);
|
5413
|
-
const [showLoader, setShowLoader] = (0,
|
5414
|
-
(0,
|
5455
|
+
const [showLoader, setShowLoader] = (0, import_react37.useState)(false);
|
5456
|
+
(0, import_react37.useEffect)(() => {
|
5415
5457
|
setTimeout(() => {
|
5416
5458
|
setShowLoader(true);
|
5417
5459
|
}, 500);
|
@@ -5514,7 +5556,7 @@ var insertComponent = (componentType, zone, index, {
|
|
5514
5556
|
|
5515
5557
|
// lib/use-loaded-overrides.ts
|
5516
5558
|
init_react_import();
|
5517
|
-
var
|
5559
|
+
var import_react38 = require("react");
|
5518
5560
|
|
5519
5561
|
// lib/load-overrides.ts
|
5520
5562
|
init_react_import();
|
@@ -5553,7 +5595,7 @@ var useLoadedOverrides = ({
|
|
5553
5595
|
overrides,
|
5554
5596
|
plugins
|
5555
5597
|
}) => {
|
5556
|
-
return (0,
|
5598
|
+
return (0, import_react38.useMemo)(() => {
|
5557
5599
|
return loadOverrides({ overrides, plugins });
|
5558
5600
|
}, [plugins, overrides]);
|
5559
5601
|
};
|
@@ -5592,7 +5634,7 @@ function Puck({
|
|
5592
5634
|
enabled: true,
|
5593
5635
|
waitForStyles: true
|
5594
5636
|
}, _iframe);
|
5595
|
-
const [generatedAppState] = (0,
|
5637
|
+
const [generatedAppState] = (0, import_react39.useState)(() => {
|
5596
5638
|
var _a2, _b2, _c, _d, _e, _f, _g, _h, _i;
|
5597
5639
|
const initial = __spreadValues(__spreadValues({}, defaultAppState.ui), initialUi);
|
5598
5640
|
let clientUiState = {};
|
@@ -5664,14 +5706,14 @@ function Puck({
|
|
5664
5706
|
histories,
|
5665
5707
|
index: initialHistoryIndex
|
5666
5708
|
});
|
5667
|
-
const [reducer] = (0,
|
5709
|
+
const [reducer] = (0, import_react39.useState)(
|
5668
5710
|
() => createReducer({
|
5669
5711
|
config,
|
5670
5712
|
record: historyStore.record,
|
5671
5713
|
onAction
|
5672
5714
|
})
|
5673
5715
|
);
|
5674
|
-
const [appState, dispatch] = (0,
|
5716
|
+
const [appState, dispatch] = (0, import_react39.useReducer)(
|
5675
5717
|
reducer,
|
5676
5718
|
flushZones(initialAppState)
|
5677
5719
|
);
|
@@ -5682,9 +5724,9 @@ function Puck({
|
|
5682
5724
|
historyStore,
|
5683
5725
|
iframeEnabled: (_a = _iframe == null ? void 0 : _iframe.enabled) != null ? _a : true
|
5684
5726
|
});
|
5685
|
-
const [menuOpen, setMenuOpen] = (0,
|
5727
|
+
const [menuOpen, setMenuOpen] = (0, import_react39.useState)(false);
|
5686
5728
|
const { itemSelector, leftSideBarVisible, rightSideBarVisible } = ui;
|
5687
|
-
const setItemSelector = (0,
|
5729
|
+
const setItemSelector = (0, import_react39.useCallback)(
|
5688
5730
|
(newItemSelector) => {
|
5689
5731
|
if (newItemSelector === itemSelector) return;
|
5690
5732
|
dispatch({
|
@@ -5696,13 +5738,13 @@ function Puck({
|
|
5696
5738
|
[itemSelector]
|
5697
5739
|
);
|
5698
5740
|
const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
|
5699
|
-
(0,
|
5741
|
+
(0, import_react39.useEffect)(() => {
|
5700
5742
|
if (onChange) onChange(data);
|
5701
5743
|
}, [data]);
|
5702
5744
|
const { onDragStartOrUpdate, placeholderStyle } = usePlaceholderStyle();
|
5703
|
-
const [draggedItem, setDraggedItem] = (0,
|
5745
|
+
const [draggedItem, setDraggedItem] = (0, import_react39.useState)();
|
5704
5746
|
const rootProps = data.root.props || data.root;
|
5705
|
-
const toggleSidebars = (0,
|
5747
|
+
const toggleSidebars = (0, import_react39.useCallback)(
|
5706
5748
|
(sidebar) => {
|
5707
5749
|
const widerViewport = window.matchMedia("(min-width: 638px)").matches;
|
5708
5750
|
const sideBarVisible = sidebar === "left" ? leftSideBarVisible : rightSideBarVisible;
|
@@ -5716,7 +5758,7 @@ function Puck({
|
|
5716
5758
|
},
|
5717
5759
|
[dispatch, leftSideBarVisible, rightSideBarVisible]
|
5718
5760
|
);
|
5719
|
-
(0,
|
5761
|
+
(0, import_react39.useEffect)(() => {
|
5720
5762
|
if (!window.matchMedia("(min-width: 638px)").matches) {
|
5721
5763
|
dispatch({
|
5722
5764
|
type: "setUi",
|
@@ -5739,7 +5781,7 @@ function Puck({
|
|
5739
5781
|
window.removeEventListener("resize", handleResize);
|
5740
5782
|
};
|
5741
5783
|
}, []);
|
5742
|
-
const defaultHeaderRender = (0,
|
5784
|
+
const defaultHeaderRender = (0, import_react39.useMemo)(() => {
|
5743
5785
|
if (renderHeader) {
|
5744
5786
|
console.warn(
|
5745
5787
|
"`renderHeader` is deprecated. Please use `overrides.header` and the `usePuck` hook instead"
|
@@ -5753,7 +5795,7 @@ function Puck({
|
|
5753
5795
|
}
|
5754
5796
|
return DefaultOverride;
|
5755
5797
|
}, [renderHeader]);
|
5756
|
-
const defaultHeaderActionsRender = (0,
|
5798
|
+
const defaultHeaderActionsRender = (0, import_react39.useMemo)(() => {
|
5757
5799
|
if (renderHeaderActions) {
|
5758
5800
|
console.warn(
|
5759
5801
|
"`renderHeaderActions` is deprecated. Please use `overrides.headerActions` and the `usePuck` hook instead."
|
@@ -5770,20 +5812,20 @@ function Puck({
|
|
5770
5812
|
overrides,
|
5771
5813
|
plugins
|
5772
5814
|
});
|
5773
|
-
const CustomPuck = (0,
|
5815
|
+
const CustomPuck = (0, import_react39.useMemo)(
|
5774
5816
|
() => loadedOverrides.puck || DefaultOverride,
|
5775
5817
|
[loadedOverrides]
|
5776
5818
|
);
|
5777
|
-
const CustomHeader = (0,
|
5819
|
+
const CustomHeader = (0, import_react39.useMemo)(
|
5778
5820
|
() => loadedOverrides.header || defaultHeaderRender,
|
5779
5821
|
[loadedOverrides]
|
5780
5822
|
);
|
5781
|
-
const CustomHeaderActions = (0,
|
5823
|
+
const CustomHeaderActions = (0, import_react39.useMemo)(
|
5782
5824
|
() => loadedOverrides.headerActions || defaultHeaderActionsRender,
|
5783
5825
|
[loadedOverrides]
|
5784
5826
|
);
|
5785
|
-
const [mounted, setMounted] = (0,
|
5786
|
-
(0,
|
5827
|
+
const [mounted, setMounted] = (0, import_react39.useState)(false);
|
5828
|
+
(0, import_react39.useEffect)(() => {
|
5787
5829
|
setMounted(true);
|
5788
5830
|
}, []);
|
5789
5831
|
const selectedComponentConfig = selectedItem && config.components[selectedItem.type];
|
package/dist/index.mjs
CHANGED
@@ -3179,9 +3179,9 @@ function DropZone(props) {
|
|
3179
3179
|
// components/Puck/index.tsx
|
3180
3180
|
init_react_import();
|
3181
3181
|
import {
|
3182
|
-
useCallback as
|
3183
|
-
useEffect as
|
3184
|
-
useMemo as
|
3182
|
+
useCallback as useCallback12,
|
3183
|
+
useEffect as useEffect19,
|
3184
|
+
useMemo as useMemo17,
|
3185
3185
|
useReducer,
|
3186
3186
|
useState as useState21
|
3187
3187
|
} from "react";
|
@@ -3795,33 +3795,58 @@ init_react_import();
|
|
3795
3795
|
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" };
|
3796
3796
|
|
3797
3797
|
// components/Puck/components/Fields/index.tsx
|
3798
|
-
import {
|
3798
|
+
import { useMemo as useMemo10 } from "react";
|
3799
|
+
|
3800
|
+
// lib/use-resolved-fields.ts
|
3801
|
+
init_react_import();
|
3802
|
+
import { useCallback as useCallback8, useEffect as useEffect14, useMemo as useMemo9, useRef as useRef3, useState as useState15 } from "react";
|
3799
3803
|
|
3800
3804
|
// lib/use-parent.ts
|
3801
3805
|
init_react_import();
|
3802
|
-
import { useContext as useContext7 } from "react";
|
3803
|
-
var
|
3806
|
+
import { useCallback as useCallback7, useContext as useContext7 } from "react";
|
3807
|
+
var getParent = (itemSelector, pathData, data) => {
|
3804
3808
|
var _a;
|
3805
|
-
|
3806
|
-
const
|
3807
|
-
const
|
3808
|
-
const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, state.data);
|
3809
|
+
if (!itemSelector) return null;
|
3810
|
+
const item = getItem(itemSelector, data);
|
3811
|
+
const breadcrumbs = convertPathDataToBreadcrumbs(item, pathData, data);
|
3809
3812
|
const lastItem = breadcrumbs[breadcrumbs.length - 1];
|
3810
|
-
const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector,
|
3813
|
+
const parent = (lastItem == null ? void 0 : lastItem.selector) ? (_a = getItem(lastItem.selector, data)) != null ? _a : null : null;
|
3811
3814
|
return parent || null;
|
3812
3815
|
};
|
3816
|
+
var useGetParent = () => {
|
3817
|
+
const { state } = useAppContext();
|
3818
|
+
const { pathData } = useContext7(dropZoneContext) || {};
|
3819
|
+
return useCallback7(
|
3820
|
+
() => getParent(state.ui.itemSelector, pathData, state.data),
|
3821
|
+
[state.ui.itemSelector, pathData, state.data]
|
3822
|
+
);
|
3823
|
+
};
|
3824
|
+
var useParent = () => {
|
3825
|
+
return useGetParent()();
|
3826
|
+
};
|
3813
3827
|
|
3814
|
-
//
|
3815
|
-
|
3816
|
-
|
3828
|
+
// lib/use-on-value-change.ts
|
3829
|
+
init_react_import();
|
3830
|
+
import { useRef as useRef2, useEffect as useEffect13 } from "react";
|
3831
|
+
function useOnValueChange(value, onChange, compare = Object.is, deps = []) {
|
3832
|
+
const tracked = useRef2(value);
|
3833
|
+
useEffect13(() => {
|
3834
|
+
const oldValue = tracked.current;
|
3835
|
+
if (!compare(value, oldValue)) {
|
3836
|
+
tracked.current = value;
|
3837
|
+
onChange(value, oldValue);
|
3838
|
+
}
|
3839
|
+
}, [onChange, compare, value, ...deps]);
|
3840
|
+
}
|
3841
|
+
|
3842
|
+
// lib/selector-is.ts
|
3843
|
+
init_react_import();
|
3844
|
+
var selectorIs = (a, b) => (a == null ? void 0 : a.zone) === (b == null ? void 0 : b.zone) && (a == null ? void 0 : a.index) === (b == null ? void 0 : b.index);
|
3845
|
+
|
3846
|
+
// lib/use-resolved-fields.ts
|
3817
3847
|
var defaultPageFields = {
|
3818
3848
|
title: { type: "text" }
|
3819
3849
|
};
|
3820
|
-
var DefaultFields = ({
|
3821
|
-
children
|
3822
|
-
}) => {
|
3823
|
-
return /* @__PURE__ */ jsx28(Fragment12, { children });
|
3824
|
-
};
|
3825
3850
|
var useResolvedFields = () => {
|
3826
3851
|
var _a, _b;
|
3827
3852
|
const { selectedItem, state, config } = useAppContext();
|
@@ -3837,12 +3862,13 @@ var useResolvedFields = () => {
|
|
3837
3862
|
const [lastSelectedData, setLastSelectedData] = useState15({});
|
3838
3863
|
const [resolvedFields, setResolvedFields] = useState15(defaultFields);
|
3839
3864
|
const [fieldsLoading, setFieldsLoading] = useState15(false);
|
3865
|
+
const lastFields = useRef3(defaultFields);
|
3840
3866
|
const defaultResolveFields = (_componentData, _params) => defaultFields;
|
3841
3867
|
const componentData = selectedItem ? selectedItem : { props: rootProps, readOnly: data.root.readOnly };
|
3842
3868
|
const hasComponentResolver = selectedItem && (componentConfig == null ? void 0 : componentConfig.resolveFields);
|
3843
3869
|
const hasRootResolver = !selectedItem && ((_b = config.root) == null ? void 0 : _b.resolveFields);
|
3844
3870
|
const hasResolver = hasComponentResolver || hasRootResolver;
|
3845
|
-
const resolveFields =
|
3871
|
+
const resolveFields = useCallback8(
|
3846
3872
|
(..._0) => __async(void 0, [..._0], function* (fields = {}) {
|
3847
3873
|
var _a2;
|
3848
3874
|
const lastData = ((_a2 = lastSelectedData.props) == null ? void 0 : _a2.id) === componentData.props.id ? lastSelectedData : null;
|
@@ -3854,7 +3880,7 @@ var useResolvedFields = () => {
|
|
3854
3880
|
{
|
3855
3881
|
changed,
|
3856
3882
|
fields,
|
3857
|
-
lastFields:
|
3883
|
+
lastFields: lastFields.current,
|
3858
3884
|
lastData,
|
3859
3885
|
appState: state,
|
3860
3886
|
parent
|
@@ -3865,7 +3891,7 @@ var useResolvedFields = () => {
|
|
3865
3891
|
return yield config.root.resolveFields(componentData, {
|
3866
3892
|
changed,
|
3867
3893
|
fields,
|
3868
|
-
lastFields:
|
3894
|
+
lastFields: lastFields.current,
|
3869
3895
|
lastData,
|
3870
3896
|
appState: state,
|
3871
3897
|
parent
|
@@ -3874,40 +3900,56 @@ var useResolvedFields = () => {
|
|
3874
3900
|
return defaultResolveFields(componentData, {
|
3875
3901
|
changed,
|
3876
3902
|
fields,
|
3877
|
-
lastFields:
|
3903
|
+
lastFields: lastFields.current,
|
3878
3904
|
lastData
|
3879
3905
|
});
|
3880
3906
|
}),
|
3881
|
-
[data, config, componentData, selectedItem,
|
3907
|
+
[data, config, componentData, selectedItem, state, parent]
|
3882
3908
|
);
|
3883
|
-
const
|
3884
|
-
useEffect13(() => {
|
3885
|
-
setHasParent(!!parent);
|
3886
|
-
}, [parent]);
|
3887
|
-
useEffect13(() => {
|
3909
|
+
const triggerResolver = useCallback8(() => {
|
3888
3910
|
var _a2, _b2;
|
3889
|
-
if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" ||
|
3911
|
+
if (!((_a2 = state.ui.itemSelector) == null ? void 0 : _a2.zone) || ((_b2 = state.ui.itemSelector) == null ? void 0 : _b2.zone) === "default-zone" || parent) {
|
3890
3912
|
if (hasResolver) {
|
3891
3913
|
setFieldsLoading(true);
|
3892
3914
|
resolveFields(defaultFields).then((fields) => {
|
3893
3915
|
setResolvedFields(fields || {});
|
3916
|
+
lastFields.current = fields;
|
3894
3917
|
setFieldsLoading(false);
|
3895
3918
|
});
|
3896
3919
|
return;
|
3897
3920
|
}
|
3898
3921
|
}
|
3899
3922
|
setResolvedFields(defaultFields);
|
3900
|
-
}, [
|
3901
|
-
|
3902
|
-
defaultFields,
|
3923
|
+
}, [defaultFields, state.ui.itemSelector, hasResolver, parent]);
|
3924
|
+
useOnValueChange(
|
3903
3925
|
state.ui.itemSelector,
|
3904
|
-
|
3905
|
-
|
3906
|
-
|
3907
|
-
|
3926
|
+
() => {
|
3927
|
+
lastFields.current = defaultFields;
|
3928
|
+
},
|
3929
|
+
selectorIs
|
3930
|
+
);
|
3931
|
+
useOnValueChange(
|
3932
|
+
{ data, parent, itemSelector: state.ui.itemSelector },
|
3933
|
+
() => {
|
3934
|
+
triggerResolver();
|
3935
|
+
},
|
3936
|
+
(a, b) => JSON.stringify(a) === JSON.stringify(b)
|
3937
|
+
);
|
3938
|
+
useEffect14(() => {
|
3939
|
+
triggerResolver();
|
3940
|
+
}, []);
|
3908
3941
|
return [resolvedFields, fieldsLoading];
|
3909
3942
|
};
|
3910
|
-
|
3943
|
+
|
3944
|
+
// components/Puck/components/Fields/index.tsx
|
3945
|
+
import { Fragment as Fragment12, jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
|
3946
|
+
var getClassName21 = get_class_name_factory_default("PuckFields", styles_module_default16);
|
3947
|
+
var DefaultFields = ({
|
3948
|
+
children
|
3949
|
+
}) => {
|
3950
|
+
return /* @__PURE__ */ jsx28(Fragment12, { children });
|
3951
|
+
};
|
3952
|
+
var Fields = ({ wrapFields = true }) => {
|
3911
3953
|
var _a, _b;
|
3912
3954
|
const {
|
3913
3955
|
selectedItem,
|
@@ -3925,7 +3967,7 @@ var Fields = () => {
|
|
3925
3967
|
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;
|
3926
3968
|
const isLoading = fieldsResolving || componentResolving;
|
3927
3969
|
const rootProps = data.root.props || data.root;
|
3928
|
-
const Wrapper =
|
3970
|
+
const Wrapper = useMemo10(() => overrides.fields || DefaultFields, [overrides]);
|
3929
3971
|
return /* @__PURE__ */ jsxs15(
|
3930
3972
|
"form",
|
3931
3973
|
{
|
@@ -4048,7 +4090,7 @@ init_react_import();
|
|
4048
4090
|
|
4049
4091
|
// lib/use-component-list.tsx
|
4050
4092
|
init_react_import();
|
4051
|
-
import { useEffect as
|
4093
|
+
import { useEffect as useEffect15, useState as useState16 } from "react";
|
4052
4094
|
|
4053
4095
|
// components/ComponentList/index.tsx
|
4054
4096
|
init_react_import();
|
@@ -4127,7 +4169,7 @@ ComponentList.Item = ComponentListItem;
|
|
4127
4169
|
import { jsx as jsx30 } from "react/jsx-runtime";
|
4128
4170
|
var useComponentList = (config, ui) => {
|
4129
4171
|
const [componentList, setComponentList] = useState16();
|
4130
|
-
|
4172
|
+
useEffect15(() => {
|
4131
4173
|
var _a, _b, _c;
|
4132
4174
|
if (Object.keys(ui.componentList).length > 0) {
|
4133
4175
|
const matchedComponents = [];
|
@@ -4196,26 +4238,26 @@ var useComponentList = (config, ui) => {
|
|
4196
4238
|
};
|
4197
4239
|
|
4198
4240
|
// components/Puck/components/Components/index.tsx
|
4199
|
-
import { useMemo as
|
4241
|
+
import { useMemo as useMemo11 } from "react";
|
4200
4242
|
import { jsx as jsx31 } from "react/jsx-runtime";
|
4201
4243
|
var Components = () => {
|
4202
4244
|
const { config, state, overrides } = useAppContext();
|
4203
4245
|
const componentList = useComponentList(config, state.ui);
|
4204
|
-
const Wrapper =
|
4246
|
+
const Wrapper = useMemo11(() => overrides.components || "div", [overrides]);
|
4205
4247
|
return /* @__PURE__ */ jsx31(Wrapper, { children: componentList ? componentList : /* @__PURE__ */ jsx31(ComponentList, { id: "all" }) });
|
4206
4248
|
};
|
4207
4249
|
|
4208
4250
|
// components/Puck/components/Preview/index.tsx
|
4209
4251
|
init_react_import();
|
4210
|
-
import { useCallback as
|
4252
|
+
import { useCallback as useCallback9, useMemo as useMemo12 } from "react";
|
4211
4253
|
|
4212
4254
|
// components/AutoFrame/index.tsx
|
4213
4255
|
init_react_import();
|
4214
4256
|
import {
|
4215
4257
|
createContext as createContext5,
|
4216
4258
|
useContext as useContext8,
|
4217
|
-
useEffect as
|
4218
|
-
useRef as
|
4259
|
+
useEffect as useEffect16,
|
4260
|
+
useRef as useRef4,
|
4219
4261
|
useState as useState17
|
4220
4262
|
} from "react";
|
4221
4263
|
import hash from "object-hash";
|
@@ -4263,7 +4305,7 @@ var CopyHostStyles = ({
|
|
4263
4305
|
onStylesLoaded = () => null
|
4264
4306
|
}) => {
|
4265
4307
|
const { document: doc, window: win } = useFrame();
|
4266
|
-
|
4308
|
+
useEffect16(() => {
|
4267
4309
|
if (!win || !doc) {
|
4268
4310
|
return () => {
|
4269
4311
|
};
|
@@ -4440,9 +4482,9 @@ function AutoFrame(_a) {
|
|
4440
4482
|
]);
|
4441
4483
|
const [loaded, setLoaded] = useState17(false);
|
4442
4484
|
const [ctx, setCtx] = useState17({});
|
4443
|
-
const ref =
|
4485
|
+
const ref = useRef4(null);
|
4444
4486
|
const [mountTarget, setMountTarget] = useState17();
|
4445
|
-
|
4487
|
+
useEffect16(() => {
|
4446
4488
|
var _a2;
|
4447
4489
|
if (ref.current) {
|
4448
4490
|
setCtx({
|
@@ -4478,7 +4520,7 @@ import { Fragment as Fragment14, jsx as jsx33 } from "react/jsx-runtime";
|
|
4478
4520
|
var getClassName23 = get_class_name_factory_default("PuckPreview", styles_module_default18);
|
4479
4521
|
var Preview = ({ id = "puck-preview" }) => {
|
4480
4522
|
const { config, dispatch, state, setStatus, iframe, overrides } = useAppContext();
|
4481
|
-
const Page =
|
4523
|
+
const Page = useCallback9(
|
4482
4524
|
(pageProps) => {
|
4483
4525
|
var _a, _b;
|
4484
4526
|
return ((_a = config.root) == null ? void 0 : _a.render) ? (_b = config.root) == null ? void 0 : _b.render(__spreadValues({
|
@@ -4487,7 +4529,7 @@ var Preview = ({ id = "puck-preview" }) => {
|
|
4487
4529
|
},
|
4488
4530
|
[config.root]
|
4489
4531
|
);
|
4490
|
-
const Frame =
|
4532
|
+
const Frame = useMemo12(() => overrides.iframe, [overrides]);
|
4491
4533
|
const rootProps = state.data.root.props || state.data.root;
|
4492
4534
|
return /* @__PURE__ */ jsx33(
|
4493
4535
|
"div",
|
@@ -4709,13 +4751,13 @@ var LayerTree = ({
|
|
4709
4751
|
};
|
4710
4752
|
|
4711
4753
|
// components/Puck/components/Outline/index.tsx
|
4712
|
-
import { useCallback as
|
4754
|
+
import { useCallback as useCallback10, useMemo as useMemo13 } from "react";
|
4713
4755
|
import { Fragment as Fragment16, jsx as jsx35, jsxs as jsxs18 } from "react/jsx-runtime";
|
4714
4756
|
var Outline = () => {
|
4715
4757
|
const { dispatch, state, overrides, config } = useAppContext();
|
4716
4758
|
const { data, ui } = state;
|
4717
4759
|
const { itemSelector } = ui;
|
4718
|
-
const setItemSelector =
|
4760
|
+
const setItemSelector = useCallback10(
|
4719
4761
|
(newItemSelector) => {
|
4720
4762
|
dispatch({
|
4721
4763
|
type: "setUi",
|
@@ -4724,7 +4766,7 @@ var Outline = () => {
|
|
4724
4766
|
},
|
4725
4767
|
[]
|
4726
4768
|
);
|
4727
|
-
const Wrapper =
|
4769
|
+
const Wrapper = useMemo13(() => overrides.outline || "div", [overrides]);
|
4728
4770
|
return /* @__PURE__ */ jsx35(Wrapper, { children: /* @__PURE__ */ jsx35(dropZoneContext.Consumer, { children: (ctx) => /* @__PURE__ */ jsxs18(Fragment16, { children: [
|
4729
4771
|
(ctx == null ? void 0 : ctx.activeZones) && (ctx == null ? void 0 : ctx.activeZones[rootDroppableId]) && /* @__PURE__ */ jsx35(
|
4730
4772
|
LayerTree,
|
@@ -5011,16 +5053,16 @@ var getBox = function getBox2(el) {
|
|
5011
5053
|
|
5012
5054
|
// components/Puck/components/Canvas/index.tsx
|
5013
5055
|
import {
|
5014
|
-
useCallback as
|
5015
|
-
useEffect as
|
5016
|
-
useMemo as
|
5017
|
-
useRef as
|
5056
|
+
useCallback as useCallback11,
|
5057
|
+
useEffect as useEffect18,
|
5058
|
+
useMemo as useMemo15,
|
5059
|
+
useRef as useRef5,
|
5018
5060
|
useState as useState20
|
5019
5061
|
} from "react";
|
5020
5062
|
|
5021
5063
|
// components/ViewportControls/index.tsx
|
5022
5064
|
init_react_import();
|
5023
|
-
import { useEffect as
|
5065
|
+
import { useEffect as useEffect17, useMemo as useMemo14, useState as useState19 } from "react";
|
5024
5066
|
|
5025
5067
|
// css-module:/home/runner/work/puck/puck/packages/core/components/ViewportControls/styles.module.css#css-module
|
5026
5068
|
init_react_import();
|
@@ -5044,7 +5086,7 @@ var ViewportButton = ({
|
|
5044
5086
|
}) => {
|
5045
5087
|
const { state } = useAppContext();
|
5046
5088
|
const [isActive, setIsActive] = useState19(false);
|
5047
|
-
|
5089
|
+
useEffect17(() => {
|
5048
5090
|
setIsActive(width === state.ui.viewports.current.width);
|
5049
5091
|
}, [width, state.ui.viewports.current.width]);
|
5050
5092
|
return /* @__PURE__ */ jsx36("span", { className: getClassNameButton({ isActive }), children: /* @__PURE__ */ jsx36(
|
@@ -5080,7 +5122,7 @@ var ViewportControls = ({
|
|
5080
5122
|
const defaultsContainAutoZoom = defaultZoomOptions.find(
|
5081
5123
|
(option) => option.value === autoZoom
|
5082
5124
|
);
|
5083
|
-
const zoomOptions =
|
5125
|
+
const zoomOptions = useMemo14(
|
5084
5126
|
() => [
|
5085
5127
|
...defaultZoomOptions,
|
5086
5128
|
...defaultsContainAutoZoom ? [] : [
|
@@ -5203,17 +5245,17 @@ var Canvas = () => {
|
|
5203
5245
|
const { status, iframe } = useAppContext();
|
5204
5246
|
const { dispatch, state, overrides, setUi, zoomConfig, setZoomConfig } = useAppContext();
|
5205
5247
|
const { ui } = state;
|
5206
|
-
const frameRef =
|
5248
|
+
const frameRef = useRef5(null);
|
5207
5249
|
const [showTransition, setShowTransition] = useState20(false);
|
5208
|
-
const defaultRender =
|
5250
|
+
const defaultRender = useMemo15(() => {
|
5209
5251
|
const PuckDefault = ({ children }) => /* @__PURE__ */ jsx37(Fragment17, { children });
|
5210
5252
|
return PuckDefault;
|
5211
5253
|
}, []);
|
5212
|
-
const CustomPreview =
|
5254
|
+
const CustomPreview = useMemo15(
|
5213
5255
|
() => overrides.preview || defaultRender,
|
5214
5256
|
[overrides]
|
5215
5257
|
);
|
5216
|
-
const getFrameDimensions =
|
5258
|
+
const getFrameDimensions = useCallback11(() => {
|
5217
5259
|
if (frameRef.current) {
|
5218
5260
|
const frame = frameRef.current;
|
5219
5261
|
const box = getBox(frame);
|
@@ -5221,7 +5263,7 @@ var Canvas = () => {
|
|
5221
5263
|
}
|
5222
5264
|
return { width: 0, height: 0 };
|
5223
5265
|
}, [frameRef]);
|
5224
|
-
const resetAutoZoom =
|
5266
|
+
const resetAutoZoom = useCallback11(
|
5225
5267
|
(ui2 = state.ui) => {
|
5226
5268
|
if (frameRef.current) {
|
5227
5269
|
setZoomConfig(
|
@@ -5231,11 +5273,11 @@ var Canvas = () => {
|
|
5231
5273
|
},
|
5232
5274
|
[frameRef, zoomConfig, state.ui]
|
5233
5275
|
);
|
5234
|
-
|
5276
|
+
useEffect18(() => {
|
5235
5277
|
setShowTransition(false);
|
5236
5278
|
resetAutoZoom();
|
5237
5279
|
}, [frameRef, ui.leftSideBarVisible, ui.rightSideBarVisible]);
|
5238
|
-
|
5280
|
+
useEffect18(() => {
|
5239
5281
|
const { height: frameHeight } = getFrameDimensions();
|
5240
5282
|
if (ui.viewports.current.height === "auto") {
|
5241
5283
|
setZoomConfig(__spreadProps(__spreadValues({}, zoomConfig), {
|
@@ -5243,13 +5285,13 @@ var Canvas = () => {
|
|
5243
5285
|
}));
|
5244
5286
|
}
|
5245
5287
|
}, [zoomConfig.zoom]);
|
5246
|
-
|
5288
|
+
useEffect18(() => {
|
5247
5289
|
if (ZOOM_ON_CHANGE) {
|
5248
5290
|
setShowTransition(true);
|
5249
5291
|
resetAutoZoom(ui);
|
5250
5292
|
}
|
5251
5293
|
}, [ui.viewports.current.width]);
|
5252
|
-
|
5294
|
+
useEffect18(() => {
|
5253
5295
|
const observer = new ResizeObserver(() => {
|
5254
5296
|
setShowTransition(false);
|
5255
5297
|
resetAutoZoom();
|
@@ -5262,7 +5304,7 @@ var Canvas = () => {
|
|
5262
5304
|
};
|
5263
5305
|
}, []);
|
5264
5306
|
const [showLoader, setShowLoader] = useState20(false);
|
5265
|
-
|
5307
|
+
useEffect18(() => {
|
5266
5308
|
setTimeout(() => {
|
5267
5309
|
setShowLoader(true);
|
5268
5310
|
}, 500);
|
@@ -5365,7 +5407,7 @@ var insertComponent = (componentType, zone, index, {
|
|
5365
5407
|
|
5366
5408
|
// lib/use-loaded-overrides.ts
|
5367
5409
|
init_react_import();
|
5368
|
-
import { useMemo as
|
5410
|
+
import { useMemo as useMemo16 } from "react";
|
5369
5411
|
|
5370
5412
|
// lib/load-overrides.ts
|
5371
5413
|
init_react_import();
|
@@ -5404,7 +5446,7 @@ var useLoadedOverrides = ({
|
|
5404
5446
|
overrides,
|
5405
5447
|
plugins
|
5406
5448
|
}) => {
|
5407
|
-
return
|
5449
|
+
return useMemo16(() => {
|
5408
5450
|
return loadOverrides({ overrides, plugins });
|
5409
5451
|
}, [plugins, overrides]);
|
5410
5452
|
};
|
@@ -5535,7 +5577,7 @@ function Puck({
|
|
5535
5577
|
});
|
5536
5578
|
const [menuOpen, setMenuOpen] = useState21(false);
|
5537
5579
|
const { itemSelector, leftSideBarVisible, rightSideBarVisible } = ui;
|
5538
|
-
const setItemSelector =
|
5580
|
+
const setItemSelector = useCallback12(
|
5539
5581
|
(newItemSelector) => {
|
5540
5582
|
if (newItemSelector === itemSelector) return;
|
5541
5583
|
dispatch({
|
@@ -5547,13 +5589,13 @@ function Puck({
|
|
5547
5589
|
[itemSelector]
|
5548
5590
|
);
|
5549
5591
|
const selectedItem = itemSelector ? getItem(itemSelector, data) : null;
|
5550
|
-
|
5592
|
+
useEffect19(() => {
|
5551
5593
|
if (onChange) onChange(data);
|
5552
5594
|
}, [data]);
|
5553
5595
|
const { onDragStartOrUpdate, placeholderStyle } = usePlaceholderStyle();
|
5554
5596
|
const [draggedItem, setDraggedItem] = useState21();
|
5555
5597
|
const rootProps = data.root.props || data.root;
|
5556
|
-
const toggleSidebars =
|
5598
|
+
const toggleSidebars = useCallback12(
|
5557
5599
|
(sidebar) => {
|
5558
5600
|
const widerViewport = window.matchMedia("(min-width: 638px)").matches;
|
5559
5601
|
const sideBarVisible = sidebar === "left" ? leftSideBarVisible : rightSideBarVisible;
|
@@ -5567,7 +5609,7 @@ function Puck({
|
|
5567
5609
|
},
|
5568
5610
|
[dispatch, leftSideBarVisible, rightSideBarVisible]
|
5569
5611
|
);
|
5570
|
-
|
5612
|
+
useEffect19(() => {
|
5571
5613
|
if (!window.matchMedia("(min-width: 638px)").matches) {
|
5572
5614
|
dispatch({
|
5573
5615
|
type: "setUi",
|
@@ -5590,7 +5632,7 @@ function Puck({
|
|
5590
5632
|
window.removeEventListener("resize", handleResize);
|
5591
5633
|
};
|
5592
5634
|
}, []);
|
5593
|
-
const defaultHeaderRender =
|
5635
|
+
const defaultHeaderRender = useMemo17(() => {
|
5594
5636
|
if (renderHeader) {
|
5595
5637
|
console.warn(
|
5596
5638
|
"`renderHeader` is deprecated. Please use `overrides.header` and the `usePuck` hook instead"
|
@@ -5604,7 +5646,7 @@ function Puck({
|
|
5604
5646
|
}
|
5605
5647
|
return DefaultOverride;
|
5606
5648
|
}, [renderHeader]);
|
5607
|
-
const defaultHeaderActionsRender =
|
5649
|
+
const defaultHeaderActionsRender = useMemo17(() => {
|
5608
5650
|
if (renderHeaderActions) {
|
5609
5651
|
console.warn(
|
5610
5652
|
"`renderHeaderActions` is deprecated. Please use `overrides.headerActions` and the `usePuck` hook instead."
|
@@ -5621,20 +5663,20 @@ function Puck({
|
|
5621
5663
|
overrides,
|
5622
5664
|
plugins
|
5623
5665
|
});
|
5624
|
-
const CustomPuck =
|
5666
|
+
const CustomPuck = useMemo17(
|
5625
5667
|
() => loadedOverrides.puck || DefaultOverride,
|
5626
5668
|
[loadedOverrides]
|
5627
5669
|
);
|
5628
|
-
const CustomHeader =
|
5670
|
+
const CustomHeader = useMemo17(
|
5629
5671
|
() => loadedOverrides.header || defaultHeaderRender,
|
5630
5672
|
[loadedOverrides]
|
5631
5673
|
);
|
5632
|
-
const CustomHeaderActions =
|
5674
|
+
const CustomHeaderActions = useMemo17(
|
5633
5675
|
() => loadedOverrides.headerActions || defaultHeaderActionsRender,
|
5634
5676
|
[loadedOverrides]
|
5635
5677
|
);
|
5636
5678
|
const [mounted, setMounted] = useState21(false);
|
5637
|
-
|
5679
|
+
useEffect19(() => {
|
5638
5680
|
setMounted(true);
|
5639
5681
|
}, []);
|
5640
5682
|
const selectedComponentConfig = selectedItem && config.components[selectedItem.type];
|
package/package.json
CHANGED