@measured/puck-plugin-heading-analyzer 0.12.0-canary.c85f82f → 0.12.0-canary.da2bc0f
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.css +22 -20
- package/dist/index.d.ts +145 -1
- package/dist/index.js +42 -30
- package/package.json +2 -2
package/dist/index.css
CHANGED
@@ -1,53 +1,56 @@
|
|
1
1
|
/* css-module:/home/runner/work/puck/puck/packages/core/components/SidebarSection/styles.module.css/#css-module-data */
|
2
|
-
.
|
2
|
+
._SidebarSection_1uyg2_1 {
|
3
3
|
display: flex;
|
4
4
|
position: relative;
|
5
5
|
flex-direction: column;
|
6
6
|
color: black;
|
7
7
|
}
|
8
|
-
.
|
8
|
+
._SidebarSection_1uyg2_1:last-of-type {
|
9
9
|
flex-grow: 1;
|
10
10
|
}
|
11
|
-
._SidebarSection-
|
11
|
+
._SidebarSection-title_1uyg2_12 {
|
12
12
|
background: white;
|
13
13
|
padding: 16px;
|
14
14
|
border-bottom: 1px solid var(--puck-color-grey-8);
|
15
15
|
overflow-x: auto;
|
16
16
|
}
|
17
|
-
._SidebarSection-
|
17
|
+
._SidebarSection-content_1uyg2_19 {
|
18
18
|
border-bottom: 1px solid var(--puck-color-grey-8);
|
19
19
|
padding: 16px;
|
20
20
|
}
|
21
|
-
._SidebarSection--
|
21
|
+
._SidebarSection--noPadding_1uyg2_24 ._SidebarSection-content_1uyg2_19 {
|
22
22
|
padding: 0px;
|
23
23
|
}
|
24
|
-
.
|
24
|
+
._SidebarSection--noPadding_1uyg2_24 ._SidebarSection-content_1uyg2_19:last-child {
|
25
|
+
padding-bottom: 4px;
|
26
|
+
}
|
27
|
+
._SidebarSection_1uyg2_1:last-of-type ._SidebarSection-content_1uyg2_19 {
|
25
28
|
border-bottom: none;
|
26
29
|
flex-grow: 1;
|
27
30
|
}
|
28
|
-
._SidebarSection-
|
31
|
+
._SidebarSection-breadcrumbLabel_1uyg2_37 {
|
29
32
|
color: var(--puck-color-azure-3);
|
30
33
|
flex-shrink: 0;
|
31
34
|
}
|
32
|
-
._SidebarSection-
|
35
|
+
._SidebarSection-breadcrumbLabel_1uyg2_37:hover {
|
33
36
|
color: var(--puck-color-azure-4);
|
34
37
|
cursor: pointer;
|
35
38
|
text-decoration: underline;
|
36
39
|
}
|
37
|
-
._SidebarSection-
|
40
|
+
._SidebarSection-breadcrumbs_1uyg2_48 {
|
38
41
|
align-items: center;
|
39
42
|
display: flex;
|
40
43
|
gap: 4px;
|
41
44
|
}
|
42
|
-
._SidebarSection-
|
45
|
+
._SidebarSection-breadcrumb_1uyg2_37 {
|
43
46
|
align-items: center;
|
44
47
|
display: flex;
|
45
48
|
gap: 4px;
|
46
49
|
}
|
47
|
-
._SidebarSection-
|
50
|
+
._SidebarSection-heading_1uyg2_60 {
|
48
51
|
padding-right: 16px;
|
49
52
|
}
|
50
|
-
._SidebarSection-
|
53
|
+
._SidebarSection-loadingOverlay_1uyg2_64 {
|
51
54
|
background: white;
|
52
55
|
display: flex;
|
53
56
|
justify-content: center;
|
@@ -101,16 +104,15 @@
|
|
101
104
|
}
|
102
105
|
|
103
106
|
/* css-module:/home/runner/work/puck/puck/packages/core/components/OutlineList/styles.module.css/#css-module-data */
|
104
|
-
.
|
107
|
+
._OutlineList_1nwoz_1 {
|
105
108
|
color: var(--puck-color-grey-2);
|
106
109
|
font-family: var(--puck-font-stack);
|
107
110
|
margin: 0;
|
108
|
-
margin-left: 16px;
|
109
111
|
padding-left: 16px;
|
110
112
|
position: relative;
|
111
113
|
list-style: none;
|
112
114
|
}
|
113
|
-
.
|
115
|
+
._OutlineList_1nwoz_1::before {
|
114
116
|
background: var(--puck-color-grey-7);
|
115
117
|
position: absolute;
|
116
118
|
left: -1px;
|
@@ -119,11 +121,11 @@
|
|
119
121
|
height: calc(100% - 9px);
|
120
122
|
content: "";
|
121
123
|
}
|
122
|
-
.
|
124
|
+
._OutlineListItem_1nwoz_20 {
|
123
125
|
position: relative;
|
124
126
|
margin-bottom: 4px;
|
125
127
|
}
|
126
|
-
.
|
128
|
+
._OutlineListItem_1nwoz_20::before {
|
127
129
|
background: var(--puck-color-grey-7);
|
128
130
|
position: absolute;
|
129
131
|
left: -17px;
|
@@ -132,10 +134,10 @@
|
|
132
134
|
height: 1px;
|
133
135
|
content: "";
|
134
136
|
}
|
135
|
-
._OutlineListItem--
|
137
|
+
._OutlineListItem--clickable_1nwoz_35:hover {
|
136
138
|
color: var(--puck-color-blue);
|
137
139
|
cursor: pointer;
|
138
140
|
}
|
139
|
-
.
|
140
|
-
margin: 8px;
|
141
|
+
._OutlineListItem_1nwoz_20 > ._OutlineList_1nwoz_1 {
|
142
|
+
margin: 8px 0;
|
141
143
|
}
|
package/dist/index.d.ts
CHANGED
@@ -1,4 +1,148 @@
|
|
1
|
-
import {
|
1
|
+
import { ReactNode, ReactElement } from 'react';
|
2
|
+
|
3
|
+
type ItemSelector = {
|
4
|
+
index: number;
|
5
|
+
zone?: string;
|
6
|
+
};
|
7
|
+
|
8
|
+
type InsertAction = {
|
9
|
+
type: "insert";
|
10
|
+
componentType: string;
|
11
|
+
destinationIndex: number;
|
12
|
+
destinationZone: string;
|
13
|
+
};
|
14
|
+
type DuplicateAction = {
|
15
|
+
type: "duplicate";
|
16
|
+
sourceIndex: number;
|
17
|
+
sourceZone: string;
|
18
|
+
};
|
19
|
+
type ReplaceAction = {
|
20
|
+
type: "replace";
|
21
|
+
destinationIndex: number;
|
22
|
+
destinationZone: string;
|
23
|
+
data: any;
|
24
|
+
};
|
25
|
+
type ReorderAction = {
|
26
|
+
type: "reorder";
|
27
|
+
sourceIndex: number;
|
28
|
+
destinationIndex: number;
|
29
|
+
destinationZone: string;
|
30
|
+
};
|
31
|
+
type MoveAction = {
|
32
|
+
type: "move";
|
33
|
+
sourceIndex: number;
|
34
|
+
sourceZone: string;
|
35
|
+
destinationIndex: number;
|
36
|
+
destinationZone: string;
|
37
|
+
};
|
38
|
+
type RemoveAction = {
|
39
|
+
type: "remove";
|
40
|
+
index: number;
|
41
|
+
zone: string;
|
42
|
+
};
|
43
|
+
type SetUiAction = {
|
44
|
+
type: "setUi";
|
45
|
+
ui: Partial<UiState> | ((previous: UiState) => Partial<UiState>);
|
46
|
+
};
|
47
|
+
type SetDataAction = {
|
48
|
+
type: "setData";
|
49
|
+
data: Partial<Data> | ((previous: Data) => Partial<Data>);
|
50
|
+
};
|
51
|
+
type SetAction = {
|
52
|
+
type: "set";
|
53
|
+
state: Partial<AppState>;
|
54
|
+
};
|
55
|
+
type RegisterZoneAction = {
|
56
|
+
type: "registerZone";
|
57
|
+
zone: string;
|
58
|
+
};
|
59
|
+
type UnregisterZoneAction = {
|
60
|
+
type: "unregisterZone";
|
61
|
+
zone: string;
|
62
|
+
};
|
63
|
+
type PuckAction = {
|
64
|
+
recordHistory?: boolean;
|
65
|
+
} & (ReorderAction | InsertAction | MoveAction | ReplaceAction | RemoveAction | DuplicateAction | SetAction | SetDataAction | SetUiAction | RegisterZoneAction | UnregisterZoneAction);
|
66
|
+
|
67
|
+
type WithPuckProps<Props> = Props & {
|
68
|
+
id: string;
|
69
|
+
};
|
70
|
+
type DefaultRootProps = {
|
71
|
+
title?: string;
|
72
|
+
[key: string]: any;
|
73
|
+
};
|
74
|
+
type DefaultComponentProps = {
|
75
|
+
[key: string]: any;
|
76
|
+
editMode?: boolean;
|
77
|
+
};
|
78
|
+
type Content<Props extends {
|
79
|
+
[key: string]: any;
|
80
|
+
} = {
|
81
|
+
[key: string]: any;
|
82
|
+
}> = ComponentData<Props>[];
|
83
|
+
type BaseData<Props extends {
|
84
|
+
[key: string]: any;
|
85
|
+
} = {
|
86
|
+
[key: string]: any;
|
87
|
+
}> = {
|
88
|
+
readOnly?: Partial<Record<keyof Props, boolean>>;
|
89
|
+
};
|
90
|
+
type ComponentData<Props extends DefaultComponentProps = DefaultComponentProps> = {
|
91
|
+
type: keyof Props;
|
92
|
+
props: WithPuckProps<Props>;
|
93
|
+
} & BaseData<Props>;
|
94
|
+
type RootDataWithProps<Props extends DefaultRootProps = DefaultRootProps> = {
|
95
|
+
props: Props;
|
96
|
+
};
|
97
|
+
type RootDataWithoutProps<Props extends DefaultRootProps = DefaultRootProps> = Props;
|
98
|
+
type RootData<Props extends DefaultRootProps = DefaultRootProps> = BaseData<Props> & Partial<RootDataWithProps<Props>> & Partial<RootDataWithoutProps<Props>>;
|
99
|
+
type Data<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultRootProps = DefaultRootProps> = {
|
100
|
+
root: RootData<RootProps>;
|
101
|
+
content: Content<WithPuckProps<Props>>;
|
102
|
+
zones?: Record<string, Content<WithPuckProps<Props>>>;
|
103
|
+
};
|
104
|
+
type ItemWithId = {
|
105
|
+
_arrayId: string;
|
106
|
+
_originalIndex: number;
|
107
|
+
data: any;
|
108
|
+
};
|
109
|
+
type ArrayState = {
|
110
|
+
items: ItemWithId[];
|
111
|
+
openId: string;
|
112
|
+
};
|
113
|
+
type UiState = {
|
114
|
+
leftSideBarVisible: boolean;
|
115
|
+
itemSelector: ItemSelector | null;
|
116
|
+
arrayState: Record<string, ArrayState | undefined>;
|
117
|
+
componentList: Record<string, {
|
118
|
+
components?: string[];
|
119
|
+
title?: string;
|
120
|
+
visible?: boolean;
|
121
|
+
expanded?: boolean;
|
122
|
+
}>;
|
123
|
+
};
|
124
|
+
type AppState = {
|
125
|
+
data: Data;
|
126
|
+
ui: UiState;
|
127
|
+
};
|
128
|
+
|
129
|
+
type Plugin = {
|
130
|
+
renderRootFields?: (props: {
|
131
|
+
children: ReactNode;
|
132
|
+
dispatch: (action: PuckAction) => void;
|
133
|
+
state: AppState;
|
134
|
+
}) => ReactElement<any>;
|
135
|
+
renderRoot?: (props: {
|
136
|
+
children: ReactNode;
|
137
|
+
dispatch: (action: PuckAction) => void;
|
138
|
+
state: AppState;
|
139
|
+
}) => ReactElement<any>;
|
140
|
+
renderFields?: (props: {
|
141
|
+
children: ReactNode;
|
142
|
+
dispatch: (action: PuckAction) => void;
|
143
|
+
state: AppState;
|
144
|
+
}) => ReactElement<any>;
|
145
|
+
};
|
2
146
|
|
3
147
|
declare const HeadingAnalyzer: Plugin;
|
4
148
|
|
package/dist/index.js
CHANGED
@@ -1084,7 +1084,7 @@ init_react_import();
|
|
1084
1084
|
|
1085
1085
|
// css-module:/home/runner/work/puck/puck/packages/core/components/SidebarSection/styles.module.css#css-module
|
1086
1086
|
init_react_import();
|
1087
|
-
var styles_module_default = { "SidebarSection": "
|
1087
|
+
var styles_module_default = { "SidebarSection": "_SidebarSection_1uyg2_1", "SidebarSection-title": "_SidebarSection-title_1uyg2_12", "SidebarSection-content": "_SidebarSection-content_1uyg2_19", "SidebarSection--noPadding": "_SidebarSection--noPadding_1uyg2_24", "SidebarSection-breadcrumbLabel": "_SidebarSection-breadcrumbLabel_1uyg2_37", "SidebarSection-breadcrumbs": "_SidebarSection-breadcrumbs_1uyg2_48", "SidebarSection-breadcrumb": "_SidebarSection-breadcrumb_1uyg2_37", "SidebarSection-heading": "_SidebarSection-heading_1uyg2_60", "SidebarSection-loadingOverlay": "_SidebarSection-loadingOverlay_1uyg2_64" };
|
1088
1088
|
|
1089
1089
|
// ../core/lib/get-class-name-factory.ts
|
1090
1090
|
init_react_import();
|
@@ -1476,6 +1476,7 @@ function ClipLoader(_a) {
|
|
1476
1476
|
var ClipLoader_default = ClipLoader;
|
1477
1477
|
|
1478
1478
|
// ../core/components/SidebarSection/index.tsx
|
1479
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
1479
1480
|
var getClassName2 = get_class_name_factory_default("SidebarSection", styles_module_default);
|
1480
1481
|
var SidebarSection = ({
|
1481
1482
|
children,
|
@@ -1487,14 +1488,24 @@ var SidebarSection = ({
|
|
1487
1488
|
}) => {
|
1488
1489
|
const { setUi } = useAppContext();
|
1489
1490
|
const breadcrumbs = useBreadcrumbs(1);
|
1490
|
-
return /* @__PURE__ */
|
1491
|
-
"div",
|
1492
|
-
|
1493
|
-
|
1494
|
-
|
1495
|
-
|
1496
|
-
|
1497
|
-
|
1491
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: getClassName2({ noPadding }), style: { background }, children: [
|
1492
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: getClassName2("title"), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: getClassName2("breadcrumbs"), children: [
|
1493
|
+
showBreadcrumbs ? breadcrumbs.map((breadcrumb, i) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: getClassName2("breadcrumb"), children: [
|
1494
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
1495
|
+
"div",
|
1496
|
+
{
|
1497
|
+
className: getClassName2("breadcrumbLabel"),
|
1498
|
+
onClick: () => setUi({ itemSelector: breadcrumb.selector }),
|
1499
|
+
children: breadcrumb.label
|
1500
|
+
}
|
1501
|
+
),
|
1502
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(chevron_right_default, { size: 16 })
|
1503
|
+
] }, i)) : null,
|
1504
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: getClassName2("heading"), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Heading, { rank: 2, size: "xs", children: title }) })
|
1505
|
+
] }) }),
|
1506
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: getClassName2("content"), children }),
|
1507
|
+
isLoading && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: getClassName2("loadingOverlay"), children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ClipLoader_default, {}) })
|
1508
|
+
] });
|
1498
1509
|
};
|
1499
1510
|
|
1500
1511
|
// ../core/components/OutlineList/index.tsx
|
@@ -1502,26 +1513,27 @@ init_react_import();
|
|
1502
1513
|
|
1503
1514
|
// css-module:/home/runner/work/puck/puck/packages/core/components/OutlineList/styles.module.css#css-module
|
1504
1515
|
init_react_import();
|
1505
|
-
var styles_module_default3 = { "OutlineList": "
|
1516
|
+
var styles_module_default3 = { "OutlineList": "_OutlineList_1nwoz_1", "OutlineListItem": "_OutlineListItem_1nwoz_20", "OutlineListItem--clickable": "_OutlineListItem--clickable_1nwoz_35" };
|
1506
1517
|
|
1507
1518
|
// ../core/components/OutlineList/index.tsx
|
1519
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
1508
1520
|
var getClassName3 = get_class_name_factory_default("OutlineList", styles_module_default3);
|
1509
1521
|
var getClassNameItem = get_class_name_factory_default("OutlineListItem", styles_module_default3);
|
1510
1522
|
var OutlineList = ({ children }) => {
|
1511
|
-
return /* @__PURE__ */
|
1523
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("ul", { className: getClassName3(), children });
|
1512
1524
|
};
|
1513
|
-
OutlineList.Clickable = ({ children }) => /* @__PURE__ */
|
1525
|
+
OutlineList.Clickable = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: getClassNameItem({ clickable: true }), children });
|
1514
1526
|
OutlineList.Item = ({
|
1515
1527
|
children,
|
1516
1528
|
onClick
|
1517
1529
|
}) => {
|
1518
|
-
return /* @__PURE__ */
|
1530
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
1519
1531
|
"li",
|
1520
1532
|
{
|
1521
1533
|
className: getClassNameItem({ clickable: !!onClick }),
|
1522
|
-
onClick
|
1523
|
-
|
1524
|
-
|
1534
|
+
onClick,
|
1535
|
+
children
|
1536
|
+
}
|
1525
1537
|
);
|
1526
1538
|
};
|
1527
1539
|
|
@@ -1538,12 +1550,12 @@ var scrollIntoView = (el) => {
|
|
1538
1550
|
|
1539
1551
|
// src/HeadingAnalyzer.tsx
|
1540
1552
|
var import_react_from_json = __toESM(require("react-from-json"));
|
1541
|
-
var
|
1553
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
1542
1554
|
var dataAttr = "data-puck-heading-analyzer-id";
|
1543
1555
|
var getOutline = ({
|
1544
1556
|
addDataAttr = false
|
1545
1557
|
} = {}) => {
|
1546
|
-
const headings = window.document.querySelector("
|
1558
|
+
const headings = window.document.querySelector("#puck-frame").querySelectorAll("h1,h2,h3,h4,h5,h6");
|
1547
1559
|
const _outline = [];
|
1548
1560
|
headings.forEach((item, i) => {
|
1549
1561
|
if (addDataAttr) {
|
@@ -1608,17 +1620,17 @@ var HeadingOutlineAnalyer = ({
|
|
1608
1620
|
setHierarchy(buildHierarchy());
|
1609
1621
|
}
|
1610
1622
|
}, [data.content]);
|
1611
|
-
return /* @__PURE__ */ (0,
|
1623
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
1612
1624
|
children,
|
1613
|
-
/* @__PURE__ */ (0,
|
1614
|
-
hierarchy.length === 0 && /* @__PURE__ */ (0,
|
1615
|
-
/* @__PURE__ */ (0,
|
1625
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(SidebarSection, { title: "Heading Outline", children: [
|
1626
|
+
hierarchy.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { children: "No headings." }),
|
1627
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(OutlineList, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
1616
1628
|
import_react_from_json.default,
|
1617
1629
|
{
|
1618
1630
|
mapping: {
|
1619
|
-
Root: (props) => /* @__PURE__ */ (0,
|
1620
|
-
OutlineListItem: (props) => /* @__PURE__ */ (0,
|
1621
|
-
/* @__PURE__ */ (0,
|
1631
|
+
Root: (props) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: props.children }),
|
1632
|
+
OutlineListItem: (props) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(OutlineList.Item, { children: [
|
1633
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(OutlineList.Clickable, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
1622
1634
|
"small",
|
1623
1635
|
{
|
1624
1636
|
onClick: typeof props.analyzeId == "undefined" ? void 0 : (e) => {
|
@@ -1637,14 +1649,14 @@ var HeadingOutlineAnalyer = ({
|
|
1637
1649
|
}, 2e3);
|
1638
1650
|
}
|
1639
1651
|
},
|
1640
|
-
children: props.missing ? /* @__PURE__ */ (0,
|
1641
|
-
/* @__PURE__ */ (0,
|
1652
|
+
children: props.missing ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { style: { color: "var(--puck-color-red)" }, children: [
|
1653
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("b", { children: [
|
1642
1654
|
"H",
|
1643
1655
|
props.rank
|
1644
1656
|
] }),
|
1645
1657
|
": Missing"
|
1646
|
-
] }) : /* @__PURE__ */ (0,
|
1647
|
-
/* @__PURE__ */ (0,
|
1658
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { children: [
|
1659
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("b", { children: [
|
1648
1660
|
"H",
|
1649
1661
|
props.rank
|
1650
1662
|
] }),
|
@@ -1653,7 +1665,7 @@ var HeadingOutlineAnalyer = ({
|
|
1653
1665
|
] })
|
1654
1666
|
}
|
1655
1667
|
) }),
|
1656
|
-
/* @__PURE__ */ (0,
|
1668
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(OutlineList, { children: props.children })
|
1657
1669
|
] })
|
1658
1670
|
},
|
1659
1671
|
entry: {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@measured/puck-plugin-heading-analyzer",
|
3
|
-
"version": "0.12.0-canary.
|
3
|
+
"version": "0.12.0-canary.da2bc0f",
|
4
4
|
"private": false,
|
5
5
|
"main": "./dist/index.js",
|
6
6
|
"types": "./dist/index.d.ts",
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"dist"
|
15
15
|
],
|
16
16
|
"devDependencies": {
|
17
|
-
"@measured/puck": "^0.12.0-canary.
|
17
|
+
"@measured/puck": "^0.12.0-canary.da2bc0f",
|
18
18
|
"@types/react": "^18.2.0",
|
19
19
|
"@types/react-dom": "^18.2.0",
|
20
20
|
"eslint": "^7.32.0",
|