@measured/puck 0.21.0-canary.c6d4e0ec → 0.21.0-canary.c78dc826

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.
Files changed (41) hide show
  1. package/dist/Editor-F2LSS6SE.css +403 -0
  2. package/dist/Editor-N46HUQEC.mjs +201 -0
  3. package/dist/Render-QEMDIDQC.css +101 -0
  4. package/dist/Render-Y567PGZ7.mjs +53 -0
  5. package/dist/chunk-3QHWXJEI.mjs +33 -0
  6. package/dist/chunk-7KY6RHEY.mjs +2230 -0
  7. package/dist/chunk-C2TVYIYC.mjs +415 -0
  8. package/dist/chunk-DCSQEDMK.mjs +194 -0
  9. package/dist/chunk-DJSH5REF.mjs +537 -0
  10. package/dist/chunk-DNF2EMM4.mjs +63 -0
  11. package/dist/chunk-FNWOH4R6.mjs +109 -0
  12. package/dist/chunk-GQKMOYLG.mjs +53 -0
  13. package/dist/chunk-K3V4LVUL.mjs +704 -0
  14. package/dist/chunk-R6CVX2IY.mjs +103 -0
  15. package/dist/{chunk-HNR5CJAZ.mjs → chunk-TB3SSIAY.mjs} +1072 -3016
  16. package/dist/chunk-WUWXFMEM.mjs +11 -0
  17. package/dist/full-2GJTAAZE.css +301 -0
  18. package/dist/full-NLUNPJWS.mjs +90 -0
  19. package/dist/index.css +278 -22
  20. package/dist/index.d.mts +100 -7
  21. package/dist/index.d.ts +100 -7
  22. package/dist/index.js +5898 -2847
  23. package/dist/index.mjs +25 -9
  24. package/dist/loaded-EV34KGYJ.mjs +57 -0
  25. package/dist/loaded-HMSPJUZM.mjs +54 -0
  26. package/dist/loaded-RVWBFK7L.css +87 -0
  27. package/dist/loaded-ZXOU6S6R.mjs +54 -0
  28. package/dist/no-external.css +278 -22
  29. package/dist/no-external.d.mts +17 -2
  30. package/dist/no-external.d.ts +17 -2
  31. package/dist/no-external.js +5897 -2846
  32. package/dist/no-external.mjs +25 -9
  33. package/dist/rsc.css +101 -0
  34. package/dist/rsc.d.mts +17 -2
  35. package/dist/rsc.d.ts +17 -2
  36. package/dist/rsc.js +417 -30
  37. package/dist/rsc.mjs +16 -9
  38. package/dist/{walk-tree-Ctf3FZQI.d.mts → walk-tree-Ja9bNCM9.d.mts} +263 -49
  39. package/dist/{walk-tree-Ctf3FZQI.d.ts → walk-tree-Ja9bNCM9.d.ts} +263 -49
  40. package/package.json +23 -1
  41. package/dist/chunk-X7YZ3YE7.mjs +0 -964
@@ -0,0 +1,403 @@
1
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/RichTextMenu/styles.module.css/#css-module-data */
2
+ ._RichTextMenu_k97eh_1 {
3
+ display: flex;
4
+ flex-direction: row;
5
+ flex-wrap: nowrap;
6
+ }
7
+ ._RichTextMenu--form_k97eh_7 {
8
+ border-top-left-radius: 4px;
9
+ border-top-right-radius: 4px;
10
+ padding: 6px 6px;
11
+ background-color: var(--puck-color-grey-12);
12
+ position: relative;
13
+ scrollbar-width: none;
14
+ overflow-x: auto;
15
+ }
16
+ ._RichTextMenu-group_k97eh_17 {
17
+ display: flex;
18
+ align-items: space-between;
19
+ flex-direction: row;
20
+ flex-wrap: nowrap;
21
+ padding-inline: 6px;
22
+ gap: 2px;
23
+ position: relative;
24
+ }
25
+ ._RichTextMenu-group_k97eh_17:first-of-type {
26
+ padding-left: 0;
27
+ }
28
+ ._RichTextMenu-group_k97eh_17:last-of-type {
29
+ padding-right: 0;
30
+ }
31
+ ._RichTextMenu--inline_k97eh_35 ._RichTextMenu-group_k97eh_17 {
32
+ color: var(--puck-color-grey-08);
33
+ gap: 0px;
34
+ flex-wrap: nowrap;
35
+ }
36
+ ._RichTextMenu-group_k97eh_17 + ._RichTextMenu-group_k97eh_17 {
37
+ border-left: 1px solid var(--puck-color-grey-10);
38
+ }
39
+ ._RichTextMenu--inline_k97eh_35 ._RichTextMenu-group_k97eh_17 + ._RichTextMenu-group_k97eh_17 {
40
+ border-left: 0.5px solid var(--puck-color-grey-05);
41
+ }
42
+
43
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/IconButton/IconButton.module.css/#css-module-data */
44
+ ._IconButton_ffob9_1 {
45
+ align-items: center;
46
+ background: transparent;
47
+ border: none;
48
+ border-radius: 4px;
49
+ color: currentColor;
50
+ display: flex;
51
+ font-family: var(--puck-font-family);
52
+ justify-content: center;
53
+ padding: 4px;
54
+ transition: background-color 50ms ease-in, color 50ms ease-in;
55
+ }
56
+ ._IconButton--active_ffob9_14 {
57
+ color: var(--puck-color-azure-04);
58
+ }
59
+ ._IconButton_ffob9_1:focus-visible {
60
+ outline: 2px solid var(--puck-color-azure-05);
61
+ outline-offset: -2px;
62
+ }
63
+ @media (hover: hover) and (pointer: fine) {
64
+ ._IconButton_ffob9_1:hover:not(._IconButton--disabled_ffob9_24) {
65
+ background: var(--puck-color-grey-10);
66
+ color: var(--puck-color-azure-04);
67
+ cursor: pointer;
68
+ transition: none;
69
+ }
70
+ }
71
+ ._IconButton_ffob9_1:active {
72
+ background: var(--puck-color-azure-11);
73
+ transition: none;
74
+ }
75
+ ._IconButton-title_ffob9_37 {
76
+ clip: rect(0 0 0 0);
77
+ clip-path: inset(100%);
78
+ height: 1px;
79
+ overflow: hidden;
80
+ position: absolute;
81
+ white-space: nowrap;
82
+ width: 1px;
83
+ }
84
+ ._IconButton--disabled_ffob9_24 {
85
+ color: var(--puck-color-grey-07);
86
+ }
87
+
88
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/Loader/styles.module.css/#css-module-data */
89
+ @keyframes _loader-animation_nacdm_1 {
90
+ 0% {
91
+ transform: rotate(0deg) scale(1);
92
+ }
93
+ 50% {
94
+ transform: rotate(180deg) scale(0.8);
95
+ }
96
+ 100% {
97
+ transform: rotate(360deg) scale(1);
98
+ }
99
+ }
100
+ ._Loader_nacdm_13 {
101
+ background: transparent;
102
+ border-radius: 100%;
103
+ border: 2px solid currentColor;
104
+ border-bottom-color: transparent;
105
+ display: inline-block;
106
+ animation: _loader-animation_nacdm_1 1s 0s infinite linear;
107
+ animation-fill-mode: both;
108
+ }
109
+
110
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/ActionBar/styles.module.css/#css-module-data */
111
+ ._ActionBar_1nmyk_1 {
112
+ align-items: center;
113
+ cursor: default;
114
+ display: flex;
115
+ width: auto;
116
+ padding: 4px;
117
+ padding-inline-start: 0;
118
+ padding-inline-end: 0;
119
+ border-top-left-radius: 8px;
120
+ border-top-right-radius: 8px;
121
+ border-radius: 8px;
122
+ background: var(--puck-color-grey-01);
123
+ color: var(--puck-color-white);
124
+ font-family: var(--puck-font-family);
125
+ min-height: 26px;
126
+ }
127
+ ._ActionBar-label_1nmyk_18 {
128
+ color: var(--puck-color-grey-08);
129
+ font-size: var(--puck-font-size-xxxs);
130
+ font-weight: 500;
131
+ padding-inline-start: 8px;
132
+ padding-inline-end: 8px;
133
+ margin-inline-start: 4px;
134
+ margin-inline-end: 4px;
135
+ text-overflow: ellipsis;
136
+ white-space: nowrap;
137
+ }
138
+ ._ActionBarAction_1nmyk_30 + ._ActionBar-label_1nmyk_18 {
139
+ padding-inline-start: 0;
140
+ }
141
+ ._ActionBar-label_1nmyk_18 + ._ActionBarAction_1nmyk_30 {
142
+ margin-inline-start: -4px;
143
+ }
144
+ ._ActionBar-group_1nmyk_38 {
145
+ align-items: center;
146
+ border-inline-start: 0.5px solid var(--puck-color-grey-05);
147
+ display: flex;
148
+ height: 100%;
149
+ padding-inline-start: 4px;
150
+ padding-inline-end: 4px;
151
+ }
152
+ ._ActionBar-group_1nmyk_38:first-of-type {
153
+ border-inline-start: 0;
154
+ }
155
+ ._ActionBar-group_1nmyk_38:empty {
156
+ display: none;
157
+ }
158
+ ._ActionBarAction_1nmyk_30 {
159
+ background: transparent;
160
+ border: none;
161
+ color: var(--puck-color-grey-08);
162
+ cursor: pointer;
163
+ padding: 6px;
164
+ margin-inline-start: 4px;
165
+ margin-inline-end: 4px;
166
+ border-radius: 4px;
167
+ overflow: hidden;
168
+ display: flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ transition: color 50ms ease-in;
172
+ }
173
+ ._ActionBarAction--disabled_1nmyk_71 {
174
+ cursor: auto;
175
+ color: var(--puck-color-grey-06);
176
+ }
177
+ ._ActionBarAction_1nmyk_30 svg {
178
+ max-width: none !important;
179
+ }
180
+ ._ActionBarAction_1nmyk_30:focus-visible {
181
+ outline: 2px solid var(--puck-color-azure-05);
182
+ outline-offset: -2px;
183
+ }
184
+ @media (hover: hover) and (pointer: fine) {
185
+ ._ActionBarAction_1nmyk_30:hover:not(._ActionBarAction--disabled_1nmyk_71) {
186
+ color: var(--puck-color-azure-06);
187
+ transition: none;
188
+ }
189
+ }
190
+ ._ActionBarAction_1nmyk_30:active:not(._ActionBarAction--disabled_1nmyk_71),
191
+ ._ActionBarAction--active_1nmyk_93 {
192
+ color: var(--puck-color-azure-07);
193
+ transition: none;
194
+ }
195
+ ._ActionBar-group_1nmyk_38 * {
196
+ margin: 0;
197
+ }
198
+ ._ActionBar-separator_1nmyk_102 {
199
+ background: var(--puck-color-grey-05);
200
+ margin-inline: 4px;
201
+ width: 0.5px;
202
+ height: 100%;
203
+ }
204
+
205
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/RichTextMenu/components/Control/styles.module.css/#css-module-data */
206
+ ._Control_1aveu_1 .lucide {
207
+ height: 18px;
208
+ width: 18px;
209
+ }
210
+ ._Control--inline_1aveu_6 .lucide {
211
+ height: 16px;
212
+ width: 16px;
213
+ }
214
+
215
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/Select/styles.module.css/#css-module-data */
216
+ ._Select_xjbef_1 {
217
+ position: relative;
218
+ z-index: 1;
219
+ }
220
+ ._Select-button_xjbef_6 {
221
+ align-items: center;
222
+ background: transparent;
223
+ border: none;
224
+ border-radius: 4px;
225
+ display: flex;
226
+ justify-content: center;
227
+ gap: 0px;
228
+ height: 100%;
229
+ padding: 4px;
230
+ padding-right: 2px;
231
+ }
232
+ ._Select--hasOptions_xjbef_19 ._Select-button_xjbef_6 {
233
+ color: currentColor;
234
+ }
235
+ ._Select--hasOptions_xjbef_19:not(._Select--disabled_xjbef_23) ._Select-button_xjbef_6 {
236
+ cursor: pointer;
237
+ }
238
+ ._Select-buttonIcon_xjbef_27 {
239
+ align-items: center;
240
+ display: flex;
241
+ justify-content: center;
242
+ }
243
+ ._Select--standalone_xjbef_33 ._Select-buttonIcon_xjbef_27 .lucide {
244
+ height: 18px;
245
+ width: 18px;
246
+ }
247
+ ._Select--actionBar_xjbef_38 ._Select-buttonIcon_xjbef_27 .lucide {
248
+ height: 16px;
249
+ width: 16px;
250
+ }
251
+ ._Select--hasOptions_xjbef_19:not(._Select--disabled_xjbef_23) ._Select-button_xjbef_6:hover,
252
+ ._Select--hasValue_xjbef_44 ._Select-button_xjbef_6 {
253
+ background: var(--puck-color-grey-10);
254
+ color: var(--puck-color-azure-04);
255
+ }
256
+ ._Select--disabled_xjbef_23 ._Select-button_xjbef_6 {
257
+ color: var(--puck-color-grey-07);
258
+ }
259
+ ._Select--actionBar_xjbef_38 {
260
+ &._Select--hasOptions_xjbef_19 ._Select-button_xjbef_6:hover,
261
+ &._Select--hasValue_xjbef_44 ._Select-button_xjbef_6 {
262
+ background: none;
263
+ color: var(--puck-color-azure-07);
264
+ }
265
+ }
266
+ ._Select-items_xjbef_61 {
267
+ background: white;
268
+ border: 1px solid var(--puck-color-grey-09);
269
+ border-radius: 8px;
270
+ margin: 10px 8px;
271
+ margin-left: 0;
272
+ padding: 4px;
273
+ z-index: 2;
274
+ list-style: none;
275
+ }
276
+ ._SelectItem_xjbef_72 {
277
+ background: transparent;
278
+ border-radius: 4px;
279
+ border: none;
280
+ color: var(--puck-color-grey-04);
281
+ cursor: pointer;
282
+ display: flex;
283
+ gap: 8px;
284
+ align-items: center;
285
+ font-size: var(--puck-font-size-xxs);
286
+ margin: 0;
287
+ padding: 8px 12px;
288
+ width: 100%;
289
+ }
290
+ ._SelectItem--isSelected_xjbef_87 {
291
+ background: var(--puck-color-azure-11);
292
+ color: var(--puck-color-azure-04);
293
+ font-weight: 500;
294
+ }
295
+ ._SelectItem--isSelected_xjbef_87 ._SelectItem-icon_xjbef_93 {
296
+ color: var(--puck-color-azure-04);
297
+ }
298
+ ._SelectItem_xjbef_72:hover {
299
+ background: var(--puck-color-azure-11);
300
+ color: var(--puck-color-azure-04);
301
+ }
302
+
303
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/RichTextEditor/styles.module.css/#css-module-data */
304
+ ._RichTextEditor_1elol_1 .ProseMirror {
305
+ white-space: pre-wrap;
306
+ word-wrap: break-word;
307
+ cursor: text;
308
+ outline: none;
309
+ position: relative;
310
+ }
311
+ ._RichTextEditor_1elol_1 .rich-text * {
312
+ white-space: pre-wrap;
313
+ user-select: auto;
314
+ -webkit-user-select: auto;
315
+ }
316
+ ._RichTextEditor_1elol_1 .rich-text blockquote {
317
+ margin: 1em 0;
318
+ padding: 0 1em;
319
+ border-left: 4px solid var(--puck-color-grey-09);
320
+ }
321
+ ._RichTextEditor_1elol_1 .rich-text code {
322
+ background-color: var(--puck-color-grey-11);
323
+ padding: 4px 8px;
324
+ border-radius: 4px;
325
+ }
326
+ ._RichTextEditor_1elol_1 .rich-text p:empty::before {
327
+ content: "\a0";
328
+ }
329
+ ._RichTextEditor_1elol_1 .rich-text pre code {
330
+ display: block;
331
+ padding: 8px 12px;
332
+ }
333
+ ._RichTextEditor_1elol_1 .rich-text > *:first-child,
334
+ ._RichTextEditor_1elol_1 .ProseMirror > *:first-child,
335
+ ._RichTextEditor_1elol_1 .rich-text * p:first-of-type {
336
+ margin-top: 0;
337
+ }
338
+ ._RichTextEditor_1elol_1 .rich-text > *:last-child,
339
+ ._RichTextEditor_1elol_1 .ProseMirror > *:last-child,
340
+ ._RichTextEditor_1elol_1 .rich-text * p:last-of-type {
341
+ margin-bottom: 0;
342
+ }
343
+ ._RichTextEditor--editor_1elol_50 {
344
+ background: var(--puck-color-white);
345
+ border-width: 1px;
346
+ border-style: solid;
347
+ border-color: var(--puck-color-grey-09);
348
+ border-radius: 4px;
349
+ box-sizing: border-box;
350
+ display: flex;
351
+ flex-direction: column;
352
+ font-family: inherit;
353
+ font-size: var(--puck-font-size-xxs);
354
+ resize: vertical;
355
+ transition: border-color 50ms ease-in;
356
+ width: 100%;
357
+ max-width: 100%;
358
+ min-height: 128px;
359
+ }
360
+ ._RichTextEditor--editor_1elol_50 .rich-text {
361
+ flex-grow: 1;
362
+ }
363
+ ._RichTextEditor--editor_1elol_50 .rich-text:not(:has(.ProseMirror)),
364
+ ._RichTextEditor--editor_1elol_50 .rich-text .ProseMirror {
365
+ height: 100%;
366
+ padding: 12px 15px;
367
+ }
368
+ ._RichTextEditor--editor_1elol_50 .rich-text ul,
369
+ ._RichTextEditor--editor_1elol_50 .rich-text ol {
370
+ padding-left: 24px;
371
+ }
372
+ ._RichTextEditor--editor_1elol_50 .rich-text li {
373
+ line-height: 1.5;
374
+ }
375
+ ._RichTextEditor--editor_1elol_50 .rich-text p {
376
+ margin-block: 12px;
377
+ }
378
+ ._RichTextEditor--editor_1elol_50 .rich-text ul {
379
+ list-style: disc;
380
+ }
381
+ ._RichTextEditor--editor_1elol_50 .rich-text ol {
382
+ list-style: decimal;
383
+ }
384
+ ._RichTextEditor--editor_1elol_50:focus-within {
385
+ border-color: var(--puck-color-grey-05);
386
+ outline: 2px solid var(--puck-color-azure-05);
387
+ transition: none;
388
+ }
389
+ ._RichTextEditor--editor_1elol_50._RichTextEditor--disabled_1elol_106 {
390
+ background: var(--puck-color-grey-11);
391
+ }
392
+ ._RichTextEditor_1elol_1:not(:focus-within):not(._RichTextEditor--isActive_1elol_110) .ProseMirror ::selection {
393
+ background-color: transparent;
394
+ }
395
+ ._RichTextEditor-menu_1elol_116 {
396
+ border-bottom: 1px solid var(--puck-color-grey-10);
397
+ position: sticky;
398
+ top: 0;
399
+ z-index: 1;
400
+ }
401
+ ._RichTextEditor--disabled_1elol_106 ._RichTextEditor-menu_1elol_116 {
402
+ border-bottom: 1px solid var(--puck-color-grey-09);
403
+ }
@@ -0,0 +1,201 @@
1
+ import {
2
+ PuckRichText
3
+ } from "./chunk-R6CVX2IY.mjs";
4
+ import {
5
+ EditorInner,
6
+ LoadedRichTextMenu
7
+ } from "./chunk-FNWOH4R6.mjs";
8
+ import "./chunk-WUWXFMEM.mjs";
9
+ import "./chunk-K3V4LVUL.mjs";
10
+ import "./chunk-GQKMOYLG.mjs";
11
+ import "./chunk-DNF2EMM4.mjs";
12
+ import "./chunk-3QHWXJEI.mjs";
13
+ import {
14
+ useAppStore,
15
+ useAppStoreApi
16
+ } from "./chunk-7KY6RHEY.mjs";
17
+ import "./chunk-DJSH5REF.mjs";
18
+ import {
19
+ __spreadProps,
20
+ __spreadValues,
21
+ init_react_import
22
+ } from "./chunk-DCSQEDMK.mjs";
23
+
24
+ // components/RichTextEditor/components/Editor.tsx
25
+ init_react_import();
26
+ import { memo, useMemo } from "react";
27
+
28
+ // components/RichTextEditor/lib/use-synced-editor.ts
29
+ init_react_import();
30
+ import { useEditor } from "@tiptap/react";
31
+ import { useEffect, useRef } from "react";
32
+ import { useDebounce } from "use-debounce";
33
+ function useSyncedEditor({
34
+ content,
35
+ onChange,
36
+ extensions,
37
+ editable = true,
38
+ onFocusChange,
39
+ name
40
+ }) {
41
+ const [debouncedState, setDebouncedState] = useDebounce(null, 50, {
42
+ leading: true,
43
+ maxWait: 200
44
+ });
45
+ const syncingRef = useRef(false);
46
+ const lastSyncedRef = useRef("");
47
+ const editTimer = useRef(null);
48
+ const isPending = !!editTimer.current;
49
+ const isFocused = useAppStore((s) => s.state.ui.field.focus === name);
50
+ const resetTimer = (clearOn) => {
51
+ if (editTimer.current) {
52
+ clearTimeout(editTimer.current);
53
+ }
54
+ editTimer.current = setTimeout(() => {
55
+ if (lastSyncedRef.current === clearOn) {
56
+ editTimer.current = null;
57
+ }
58
+ }, 200);
59
+ };
60
+ const appStoreApi = useAppStoreApi();
61
+ const editor = useEditor({
62
+ extensions,
63
+ content,
64
+ editable,
65
+ immediatelyRender: false,
66
+ parseOptions: { preserveWhitespace: "full" },
67
+ onUpdate: ({ editor: editor2 }) => {
68
+ if (syncingRef.current || !isFocused) {
69
+ appStoreApi.getState().setUi({ field: { focus: name } });
70
+ return;
71
+ }
72
+ const html = editor2.getHTML();
73
+ const { from, to } = editor2.state.selection;
74
+ setDebouncedState({ from, to, html });
75
+ resetTimer(html);
76
+ lastSyncedRef.current = html;
77
+ }
78
+ });
79
+ useEffect(() => {
80
+ if (!editor) return;
81
+ const handleFocus = () => {
82
+ onFocusChange == null ? void 0 : onFocusChange(editor);
83
+ };
84
+ editor.on("focus", handleFocus);
85
+ return () => {
86
+ editor.off("focus", handleFocus);
87
+ };
88
+ }, [editor, onFocusChange]);
89
+ useEffect(() => {
90
+ if (debouncedState) {
91
+ const { ui } = appStoreApi.getState().state;
92
+ onChange(debouncedState.html, {
93
+ field: __spreadProps(__spreadValues({}, ui.field), {
94
+ metadata: { from: debouncedState.from, to: debouncedState.to }
95
+ })
96
+ });
97
+ }
98
+ }, [editor, debouncedState, onChange, appStoreApi, name]);
99
+ useEffect(() => {
100
+ editor == null ? void 0 : editor.setEditable(editable);
101
+ }, [editor, editable]);
102
+ useEffect(() => {
103
+ var _a;
104
+ if (!editor) return;
105
+ if (isPending) {
106
+ return;
107
+ }
108
+ const current = editor.getHTML();
109
+ if (current === content) return;
110
+ syncingRef.current = true;
111
+ editor.commands.setContent(content, { emitUpdate: false });
112
+ const { ui } = appStoreApi.getState().state;
113
+ if (typeof ((_a = ui.field.metadata) == null ? void 0 : _a.from) !== "undefined") {
114
+ editor.commands.setTextSelection({
115
+ from: ui.field.metadata.from,
116
+ to: ui.field.metadata.to
117
+ });
118
+ }
119
+ syncingRef.current = false;
120
+ }, [content, editor, appStoreApi]);
121
+ return editor;
122
+ }
123
+
124
+ // components/RichTextEditor/components/Editor.tsx
125
+ import { EditorContent } from "@tiptap/react";
126
+ import { jsx } from "react/jsx-runtime";
127
+ var Editor = memo((props) => {
128
+ const {
129
+ onChange,
130
+ content,
131
+ readOnly = false,
132
+ field,
133
+ inline = false,
134
+ onFocus,
135
+ id,
136
+ name
137
+ } = props;
138
+ const { tiptap = {}, options } = field;
139
+ const { extensions = [] } = tiptap;
140
+ const loadedExtensions = useMemo(
141
+ () => [PuckRichText.configure(options), ...extensions],
142
+ [field, extensions]
143
+ );
144
+ const appStoreApi = useAppStoreApi();
145
+ const focusName = `${name}${inline ? "::inline" : ""}`;
146
+ const editor = useSyncedEditor({
147
+ content,
148
+ onChange,
149
+ extensions: loadedExtensions,
150
+ editable: !readOnly,
151
+ name: focusName,
152
+ onFocusChange: (editor2) => {
153
+ if (editor2) {
154
+ const s = appStoreApi.getState();
155
+ appStoreApi.setState({
156
+ currentRichText: {
157
+ field,
158
+ editor: editor2,
159
+ id,
160
+ inline
161
+ },
162
+ state: __spreadProps(__spreadValues({}, s.state), {
163
+ ui: __spreadProps(__spreadValues({}, s.state.ui), {
164
+ field: __spreadProps(__spreadValues({}, s.state.ui.field), {
165
+ focus: focusName
166
+ })
167
+ })
168
+ })
169
+ });
170
+ onFocus == null ? void 0 : onFocus(editor2);
171
+ }
172
+ }
173
+ });
174
+ const menuEditor = useAppStore((s) => {
175
+ var _a, _b;
176
+ if (!inline && ((_a = s.currentRichText) == null ? void 0 : _a.id) === id && ((_b = s.currentRichText) == null ? void 0 : _b.inlineComponentId)) {
177
+ return s.currentRichText.editor;
178
+ }
179
+ return editor;
180
+ });
181
+ if (!editor) return null;
182
+ return /* @__PURE__ */ jsx(
183
+ EditorInner,
184
+ __spreadProps(__spreadValues({}, props), {
185
+ editor,
186
+ menu: /* @__PURE__ */ jsx(
187
+ LoadedRichTextMenu,
188
+ {
189
+ field,
190
+ editor: menuEditor,
191
+ readOnly
192
+ }
193
+ ),
194
+ children: /* @__PURE__ */ jsx(EditorContent, { editor, className: "rich-text" })
195
+ })
196
+ );
197
+ });
198
+ Editor.displayName = "Editor";
199
+ export {
200
+ Editor
201
+ };
@@ -0,0 +1,101 @@
1
+ /* css-module:/home/runner/work/puck/puck/packages/core/components/RichTextEditor/styles.module.css/#css-module-data */
2
+ ._RichTextEditor_1elol_1 .ProseMirror {
3
+ white-space: pre-wrap;
4
+ word-wrap: break-word;
5
+ cursor: text;
6
+ outline: none;
7
+ position: relative;
8
+ }
9
+ ._RichTextEditor_1elol_1 .rich-text * {
10
+ white-space: pre-wrap;
11
+ user-select: auto;
12
+ -webkit-user-select: auto;
13
+ }
14
+ ._RichTextEditor_1elol_1 .rich-text blockquote {
15
+ margin: 1em 0;
16
+ padding: 0 1em;
17
+ border-left: 4px solid var(--puck-color-grey-09);
18
+ }
19
+ ._RichTextEditor_1elol_1 .rich-text code {
20
+ background-color: var(--puck-color-grey-11);
21
+ padding: 4px 8px;
22
+ border-radius: 4px;
23
+ }
24
+ ._RichTextEditor_1elol_1 .rich-text p:empty::before {
25
+ content: "\a0";
26
+ }
27
+ ._RichTextEditor_1elol_1 .rich-text pre code {
28
+ display: block;
29
+ padding: 8px 12px;
30
+ }
31
+ ._RichTextEditor_1elol_1 .rich-text > *:first-child,
32
+ ._RichTextEditor_1elol_1 .ProseMirror > *:first-child,
33
+ ._RichTextEditor_1elol_1 .rich-text * p:first-of-type {
34
+ margin-top: 0;
35
+ }
36
+ ._RichTextEditor_1elol_1 .rich-text > *:last-child,
37
+ ._RichTextEditor_1elol_1 .ProseMirror > *:last-child,
38
+ ._RichTextEditor_1elol_1 .rich-text * p:last-of-type {
39
+ margin-bottom: 0;
40
+ }
41
+ ._RichTextEditor--editor_1elol_50 {
42
+ background: var(--puck-color-white);
43
+ border-width: 1px;
44
+ border-style: solid;
45
+ border-color: var(--puck-color-grey-09);
46
+ border-radius: 4px;
47
+ box-sizing: border-box;
48
+ display: flex;
49
+ flex-direction: column;
50
+ font-family: inherit;
51
+ font-size: var(--puck-font-size-xxs);
52
+ resize: vertical;
53
+ transition: border-color 50ms ease-in;
54
+ width: 100%;
55
+ max-width: 100%;
56
+ min-height: 128px;
57
+ }
58
+ ._RichTextEditor--editor_1elol_50 .rich-text {
59
+ flex-grow: 1;
60
+ }
61
+ ._RichTextEditor--editor_1elol_50 .rich-text:not(:has(.ProseMirror)),
62
+ ._RichTextEditor--editor_1elol_50 .rich-text .ProseMirror {
63
+ height: 100%;
64
+ padding: 12px 15px;
65
+ }
66
+ ._RichTextEditor--editor_1elol_50 .rich-text ul,
67
+ ._RichTextEditor--editor_1elol_50 .rich-text ol {
68
+ padding-left: 24px;
69
+ }
70
+ ._RichTextEditor--editor_1elol_50 .rich-text li {
71
+ line-height: 1.5;
72
+ }
73
+ ._RichTextEditor--editor_1elol_50 .rich-text p {
74
+ margin-block: 12px;
75
+ }
76
+ ._RichTextEditor--editor_1elol_50 .rich-text ul {
77
+ list-style: disc;
78
+ }
79
+ ._RichTextEditor--editor_1elol_50 .rich-text ol {
80
+ list-style: decimal;
81
+ }
82
+ ._RichTextEditor--editor_1elol_50:focus-within {
83
+ border-color: var(--puck-color-grey-05);
84
+ outline: 2px solid var(--puck-color-azure-05);
85
+ transition: none;
86
+ }
87
+ ._RichTextEditor--editor_1elol_50._RichTextEditor--disabled_1elol_106 {
88
+ background: var(--puck-color-grey-11);
89
+ }
90
+ ._RichTextEditor_1elol_1:not(:focus-within):not(._RichTextEditor--isActive_1elol_110) .ProseMirror ::selection {
91
+ background-color: transparent;
92
+ }
93
+ ._RichTextEditor-menu_1elol_116 {
94
+ border-bottom: 1px solid var(--puck-color-grey-10);
95
+ position: sticky;
96
+ top: 0;
97
+ z-index: 1;
98
+ }
99
+ ._RichTextEditor--disabled_1elol_106 ._RichTextEditor-menu_1elol_116 {
100
+ border-bottom: 1px solid var(--puck-color-grey-09);
101
+ }