@measured/puck 0.17.4-canary.18f0d46 → 0.17.4-canary.5c60d6a
Sign up to get free protection for your applications and to get access to all the features.
- 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