@pantheon-systems/puck-css 0.13.0 → 0.14.0

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 (130) hide show
  1. package/dist/core/index.d.ts +1 -1
  2. package/dist/core/index.d.ts.map +1 -1
  3. package/dist/core/plugin-types.d.ts +9 -0
  4. package/dist/core/plugin-types.d.ts.map +1 -1
  5. package/dist/core/types.d.ts +6 -0
  6. package/dist/core/types.d.ts.map +1 -1
  7. package/dist/data/data-list-block/builtin-components/cards.d.ts +1 -0
  8. package/dist/data/data-list-block/builtin-components/cards.d.ts.map +1 -1
  9. package/dist/data/data-list-block/builtin-components/cards.js +16 -16
  10. package/dist/data/data-list-block/builtin-components/cards.js.map +1 -1
  11. package/dist/data/data-list-block/builtin-components/listing.d.ts +1 -0
  12. package/dist/data/data-list-block/builtin-components/listing.d.ts.map +1 -1
  13. package/dist/data/data-list-block/builtin-components/listing.js +4 -3
  14. package/dist/data/data-list-block/builtin-components/listing.js.map +1 -1
  15. package/dist/data/data-list-block/builtin-components/rows.d.ts +1 -0
  16. package/dist/data/data-list-block/builtin-components/rows.d.ts.map +1 -1
  17. package/dist/data/data-list-block/builtin-components/rows.js +3 -3
  18. package/dist/data/data-list-block/builtin-components/rows.js.map +1 -1
  19. package/dist/data/data-list-block/create-data-list-block.d.ts +1 -0
  20. package/dist/data/data-list-block/create-data-list-block.d.ts.map +1 -1
  21. package/dist/data/data-list-block/create-data-list-block.js +7 -4
  22. package/dist/data/data-list-block/create-data-list-block.js.map +1 -1
  23. package/dist/data/data-list-block/data-list.css +314 -0
  24. package/dist/data/fields.d.ts.map +1 -1
  25. package/dist/data/fields.js +7 -2
  26. package/dist/data/fields.js.map +1 -1
  27. package/dist/data/paths.d.ts +6 -0
  28. package/dist/data/paths.d.ts.map +1 -1
  29. package/dist/data/paths.js +3 -0
  30. package/dist/data/paths.js.map +1 -1
  31. package/dist/data/query-provider.d.ts +14 -0
  32. package/dist/data/query-provider.d.ts.map +1 -1
  33. package/dist/data/query-provider.js +20 -9
  34. package/dist/data/query-provider.js.map +1 -1
  35. package/dist/data/utils.d.ts +14 -0
  36. package/dist/data/utils.d.ts.map +1 -1
  37. package/dist/data/utils.js +19 -1
  38. package/dist/data/utils.js.map +1 -1
  39. package/dist/editor/P1PuckProvider.d.ts.map +1 -1
  40. package/dist/editor/P1PuckProvider.js +15 -5
  41. package/dist/editor/P1PuckProvider.js.map +1 -1
  42. package/dist/editor/components/VersionBannerOverride.d.ts +7 -1
  43. package/dist/editor/components/VersionBannerOverride.d.ts.map +1 -1
  44. package/dist/editor/components/VersionBannerOverride.js +15 -10
  45. package/dist/editor/components/VersionBannerOverride.js.map +1 -1
  46. package/dist/editor/composePlugins.d.ts +9 -3
  47. package/dist/editor/composePlugins.d.ts.map +1 -1
  48. package/dist/editor/composePlugins.js +3 -8
  49. package/dist/editor/composePlugins.js.map +1 -1
  50. package/dist/editor/defaultPlugins.d.ts.map +1 -1
  51. package/dist/editor/defaultPlugins.js +2 -0
  52. package/dist/editor/defaultPlugins.js.map +1 -1
  53. package/dist/editor/freshFieldTypes.d.ts +12 -0
  54. package/dist/editor/freshFieldTypes.d.ts.map +1 -0
  55. package/dist/editor/freshFieldTypes.js +11 -0
  56. package/dist/editor/freshFieldTypes.js.map +1 -0
  57. package/dist/editor/plugin/P1Plugin.d.ts +10 -0
  58. package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
  59. package/dist/editor/plugin/P1Plugin.js +1 -1
  60. package/dist/editor/plugin/P1Plugin.js.map +1 -1
  61. package/dist/editor/stablePluginDeps.d.ts +9 -0
  62. package/dist/editor/stablePluginDeps.d.ts.map +1 -0
  63. package/dist/editor/stablePluginDeps.js +15 -0
  64. package/dist/editor/stablePluginDeps.js.map +1 -0
  65. package/dist/editor/useP1Editor.d.ts +8 -0
  66. package/dist/editor/useP1Editor.d.ts.map +1 -1
  67. package/dist/editor/useP1Editor.js +42 -6
  68. package/dist/editor/useP1Editor.js.map +1 -1
  69. package/dist/editor/useP1Plugin.d.ts +3 -1
  70. package/dist/editor/useP1Plugin.d.ts.map +1 -1
  71. package/dist/editor/useP1Plugin.js +6 -0
  72. package/dist/editor/useP1Plugin.js.map +1 -1
  73. package/dist/features/content-type-templates/permissions/role-permissions.d.ts +8 -0
  74. package/dist/features/content-type-templates/permissions/role-permissions.d.ts.map +1 -1
  75. package/dist/features/content-type-templates/permissions/role-permissions.js +3 -0
  76. package/dist/features/content-type-templates/permissions/role-permissions.js.map +1 -1
  77. package/dist/features/localization/authority.d.ts +26 -0
  78. package/dist/features/localization/authority.d.ts.map +1 -0
  79. package/dist/features/localization/authority.js +17 -0
  80. package/dist/features/localization/authority.js.map +1 -0
  81. package/dist/features/localization/index.d.ts +11 -0
  82. package/dist/features/localization/index.d.ts.map +1 -0
  83. package/dist/features/localization/index.js +7 -0
  84. package/dist/features/localization/index.js.map +1 -0
  85. package/dist/features/localization/prop-target.d.ts +26 -0
  86. package/dist/features/localization/prop-target.d.ts.map +1 -0
  87. package/dist/features/localization/prop-target.js +15 -0
  88. package/dist/features/localization/prop-target.js.map +1 -0
  89. package/dist/features/localization/puck-overrides.d.ts +12 -0
  90. package/dist/features/localization/puck-overrides.d.ts.map +1 -0
  91. package/dist/features/localization/puck-overrides.js +12 -0
  92. package/dist/features/localization/puck-overrides.js.map +1 -0
  93. package/dist/features/localization/relation.d.ts +14 -0
  94. package/dist/features/localization/relation.d.ts.map +1 -0
  95. package/dist/features/localization/relation.js +7 -0
  96. package/dist/features/localization/relation.js.map +1 -0
  97. package/dist/features/localization/translatable.d.ts +24 -0
  98. package/dist/features/localization/translatable.d.ts.map +1 -0
  99. package/dist/features/localization/translatable.js +30 -0
  100. package/dist/features/localization/translatable.js.map +1 -0
  101. package/dist/features/localization/types.d.ts +17 -0
  102. package/dist/features/localization/types.d.ts.map +1 -0
  103. package/dist/features/localization/types.js +2 -0
  104. package/dist/features/localization/types.js.map +1 -0
  105. package/dist/features/localization/ui/AuthorityFieldControl.d.ts +32 -0
  106. package/dist/features/localization/ui/AuthorityFieldControl.d.ts.map +1 -0
  107. package/dist/features/localization/ui/AuthorityFieldControl.js +36 -0
  108. package/dist/features/localization/ui/AuthorityFieldControl.js.map +1 -0
  109. package/dist/features/localization/ui/TranslatabilityToggle.d.ts +17 -0
  110. package/dist/features/localization/ui/TranslatabilityToggle.d.ts.map +1 -0
  111. package/dist/features/localization/ui/TranslatabilityToggle.js +16 -0
  112. package/dist/features/localization/ui/TranslatabilityToggle.js.map +1 -0
  113. package/dist/features/localization/useLocalizationData.d.ts +37 -0
  114. package/dist/features/localization/useLocalizationData.d.ts.map +1 -0
  115. package/dist/features/localization/useLocalizationData.js +88 -0
  116. package/dist/features/localization/useLocalizationData.js.map +1 -0
  117. package/dist/p1/editor/hooks/useLiveEditorContext.d.ts.map +1 -1
  118. package/dist/p1/editor/hooks/useLiveEditorContext.js +2 -1
  119. package/dist/p1/editor/hooks/useLiveEditorContext.js.map +1 -1
  120. package/dist/pds/components/PageNotFound.d.ts +27 -0
  121. package/dist/pds/components/PageNotFound.d.ts.map +1 -0
  122. package/dist/pds/components/PageNotFound.js +24 -0
  123. package/dist/pds/components/PageNotFound.js.map +1 -0
  124. package/dist/pds/components/PageNotFound.module.css +51 -0
  125. package/dist/pds/index.d.ts +2 -0
  126. package/dist/pds/index.d.ts.map +1 -1
  127. package/dist/pds/index.js +1 -0
  128. package/dist/pds/index.js.map +1 -1
  129. package/package.json +3 -3
  130. package/src/data/data-list-block/data-list.css +314 -0
@@ -0,0 +1,314 @@
1
+ /**
2
+ * DataListBlock presentation styles.
3
+ *
4
+ * Plain CSS with semantic, consumer-overridable class names — deliberately no
5
+ * Tailwind, so rendering never depends on a consumer's utility build scanning
6
+ * this package. Every colour, space, radius, and type value routes through a
7
+ * `--p1-datalist-*` property so a host can retheme the block without touching
8
+ * these rules; each one resolves to the matching PDS token, then to a literal
9
+ * for hosts that don't load PDS (the published page is one of those).
10
+ *
11
+ * Deliberately absent: `font-family`. These components render on the customer's
12
+ * own site, so type inherits from their page. Pinning it to the PDS font would
13
+ * also make the editor canvas — where PDS *is* loaded — disagree with the
14
+ * published page it is previewing.
15
+ */
16
+
17
+ .p1-datalist,
18
+ .p1-datalist-cards,
19
+ .p1-datalist-listing,
20
+ .p1-datalist-rows {
21
+ /* Colour. PDS resolves foreground to two tiers, so subtitle and teaser share
22
+ `foreground-default-secondary`; they stay separate properties here so a host
23
+ that wants them distinct can say so. */
24
+ --p1-datalist-color-text: var(--pds-color-foreground-default, #0f172a);
25
+ --p1-datalist-color-text-muted: var(--pds-color-foreground-default-secondary, #64748b);
26
+ --p1-datalist-color-text-body: var(--pds-color-foreground-default-secondary, #475569);
27
+ --p1-datalist-color-border: var(--pds-color-border-default, #e2e8f0);
28
+ --p1-datalist-color-surface-muted: var(--pds-color-surface-default-secondary, #f1f5f9);
29
+ --p1-datalist-color-scrim: rgb(0 0 0 / 0.5);
30
+ --p1-datalist-color-backdrop-text: var(--pds-color-foreground-reverse, #ffffff);
31
+
32
+ /* Space */
33
+ --p1-datalist-space-item-gap: var(--pds-spacing-m, 1rem);
34
+ --p1-datalist-space-group-gap: var(--pds-spacing-xl, 1.5rem);
35
+ --p1-datalist-space-card-padding: var(--pds-spacing-s, 0.75rem);
36
+ --p1-datalist-space-listing-padding: var(--pds-spacing-m, 1rem);
37
+ --p1-datalist-space-row-padding: var(--pds-spacing-s, 0.75rem);
38
+ --p1-datalist-space-row-padding-compact: var(--pds-spacing-2xs, 0.5rem);
39
+ --p1-datalist-space-row-gap: var(--pds-spacing-s, 0.75rem);
40
+ --p1-datalist-space-empty-padding: var(--pds-spacing-2xl, 2rem);
41
+ --p1-datalist-space-text-tight: var(--pds-spacing-4xs, 0.25rem);
42
+ --p1-datalist-space-text-loose: var(--pds-spacing-2xs, 0.5rem);
43
+
44
+ /* Line & radius */
45
+ --p1-datalist-border-width: var(--pds-border-width-default, 1px);
46
+ --p1-datalist-border-width-placeholder: var(--pds-border-width-thicker, 2px);
47
+ --p1-datalist-radius: var(--pds-border-radius-card, 0.5rem);
48
+ --p1-datalist-radius-thumbnail: var(--pds-border-radius-default, 0.25rem);
49
+
50
+ /* Type */
51
+ --p1-datalist-font-size-s: var(--pds-typography-size-s, 0.875rem);
52
+ --p1-datalist-font-size-l: var(--pds-typography-size-l, 1.125rem);
53
+ --p1-datalist-font-size-xl: var(--pds-typography-size-xl, 1.25rem);
54
+ --p1-datalist-font-weight-bold: var(--pds-typography-fw-bold, 700);
55
+ --p1-datalist-font-weight-semibold: var(--pds-typography-fw-semibold, 600);
56
+ }
57
+
58
+ /* ============================================
59
+ Block shell (heading, groups, empty state)
60
+ ============================================ */
61
+
62
+ .p1-datalist__heading {
63
+ margin: 0 0 var(--p1-datalist-space-item-gap);
64
+ font-size: var(--p1-datalist-font-size-xl);
65
+ font-weight: var(--p1-datalist-font-weight-bold);
66
+ color: var(--p1-datalist-color-text);
67
+ }
68
+
69
+ .p1-datalist__empty {
70
+ padding: var(--p1-datalist-space-empty-padding);
71
+ border: var(--p1-datalist-border-width-placeholder) dashed
72
+ var(--p1-datalist-color-border);
73
+ border-radius: var(--p1-datalist-radius);
74
+ text-align: center;
75
+ color: var(--p1-datalist-color-text-muted);
76
+ }
77
+
78
+ .p1-datalist__groups {
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: var(--p1-datalist-space-group-gap);
82
+ }
83
+
84
+ .p1-datalist__group-label {
85
+ margin: 0 0 var(--p1-datalist-space-card-padding);
86
+ font-size: var(--p1-datalist-font-size-l);
87
+ font-weight: var(--p1-datalist-font-weight-semibold);
88
+ color: var(--p1-datalist-color-text-body);
89
+ }
90
+
91
+ .p1-datalist__more {
92
+ margin-top: var(--p1-datalist-space-card-padding);
93
+ font-size: var(--p1-datalist-font-size-s);
94
+ text-align: center;
95
+ color: var(--p1-datalist-color-text-muted);
96
+ }
97
+
98
+ /* ============================================
99
+ Shared item primitives
100
+ ============================================ */
101
+
102
+ .p1-datalist-media {
103
+ overflow: hidden;
104
+ background: var(--p1-datalist-color-surface-muted);
105
+ }
106
+
107
+ .p1-datalist-media__img {
108
+ display: block;
109
+ width: 100%;
110
+ height: 100%;
111
+ object-fit: cover;
112
+ }
113
+
114
+ .p1-datalist-item__icon {
115
+ display: inline-block;
116
+ margin-bottom: var(--p1-datalist-space-text-tight);
117
+ font-size: var(--p1-datalist-font-size-l);
118
+ }
119
+
120
+ .p1-datalist-item__title {
121
+ font-weight: var(--p1-datalist-font-weight-bold);
122
+ color: var(--p1-datalist-color-text);
123
+ }
124
+
125
+ .p1-datalist-item__subtitle {
126
+ margin-top: var(--p1-datalist-space-text-tight);
127
+ font-size: var(--p1-datalist-font-size-s);
128
+ color: var(--p1-datalist-color-text-muted);
129
+ }
130
+
131
+ .p1-datalist-item__teaser {
132
+ margin-top: var(--p1-datalist-space-text-loose);
133
+ font-size: var(--p1-datalist-font-size-s);
134
+ color: var(--p1-datalist-color-text-body);
135
+ }
136
+
137
+ /* ============================================
138
+ Grid mode — Cards
139
+ ============================================ */
140
+
141
+ .p1-datalist-cards {
142
+ display: grid;
143
+ gap: var(--p1-datalist-space-item-gap);
144
+ grid-template-columns: repeat(3, minmax(0, 1fr));
145
+ }
146
+
147
+ .p1-datalist-cards[data-columns='1'] { grid-template-columns: repeat(1, minmax(0, 1fr)); }
148
+ .p1-datalist-cards[data-columns='2'] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
149
+ .p1-datalist-cards[data-columns='3'] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
150
+ .p1-datalist-cards[data-columns='4'] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
151
+ .p1-datalist-cards[data-columns='5'] { grid-template-columns: repeat(5, minmax(0, 1fr)); }
152
+ .p1-datalist-cards[data-columns='6'] { grid-template-columns: repeat(6, minmax(0, 1fr)); }
153
+
154
+ .p1-datalist-cards__card {
155
+ position: relative;
156
+ overflow: hidden;
157
+ border: var(--p1-datalist-border-width) solid var(--p1-datalist-color-border);
158
+ border-radius: var(--p1-datalist-radius);
159
+ }
160
+
161
+ .p1-datalist-cards__card--horizontal {
162
+ display: flex;
163
+ }
164
+
165
+ .p1-datalist-cards__backdrop {
166
+ position: absolute;
167
+ inset: 0;
168
+ background-position: center;
169
+ background-size: cover;
170
+ }
171
+
172
+ .p1-datalist-cards__scrim {
173
+ position: absolute;
174
+ inset: 0;
175
+ background: var(--p1-datalist-color-scrim);
176
+ }
177
+
178
+ .p1-datalist-cards__body {
179
+ position: relative;
180
+ }
181
+
182
+ .p1-datalist-cards__body--horizontal {
183
+ flex: 1;
184
+ min-width: 0;
185
+ }
186
+
187
+ .p1-datalist-cards__body--backdrop {
188
+ z-index: 1;
189
+ color: var(--p1-datalist-color-backdrop-text);
190
+ }
191
+
192
+ /* Backdrop cards sit on an image, so the text tokens give way to the
193
+ overlay colour rather than the surface palette. */
194
+ .p1-datalist-cards__body--backdrop .p1-datalist-item__title,
195
+ .p1-datalist-cards__body--backdrop .p1-datalist-item__subtitle,
196
+ .p1-datalist-cards__body--backdrop .p1-datalist-item__teaser {
197
+ color: inherit;
198
+ }
199
+
200
+ .p1-datalist-cards__content {
201
+ flex: 1;
202
+ padding: var(--p1-datalist-space-card-padding);
203
+ }
204
+
205
+ .p1-datalist-cards__media--stacked {
206
+ width: 100%;
207
+ aspect-ratio: 4 / 3;
208
+ }
209
+
210
+ .p1-datalist-cards__media--side {
211
+ width: 6rem;
212
+ height: auto;
213
+ flex-shrink: 0;
214
+ }
215
+
216
+ /* ============================================
217
+ List mode — Listing
218
+ ============================================ */
219
+
220
+ .p1-datalist-listing {
221
+ display: flex;
222
+ flex-direction: column;
223
+ gap: var(--p1-datalist-space-item-gap);
224
+ }
225
+
226
+ .p1-datalist-listing--narrow {
227
+ max-width: 42rem;
228
+ margin-inline: auto;
229
+ }
230
+
231
+ .p1-datalist-listing__item {
232
+ display: flex;
233
+ overflow: hidden;
234
+ border: var(--p1-datalist-border-width) solid var(--p1-datalist-color-border);
235
+ border-radius: var(--p1-datalist-radius);
236
+ }
237
+
238
+ .p1-datalist-listing__item--reversed {
239
+ flex-direction: row-reverse;
240
+ }
241
+
242
+ .p1-datalist-listing__media {
243
+ width: 12rem;
244
+ height: auto;
245
+ flex-shrink: 0;
246
+ }
247
+
248
+ .p1-datalist-listing__content {
249
+ flex: 1;
250
+ padding: var(--p1-datalist-space-listing-padding);
251
+ }
252
+
253
+ .p1-datalist-listing__content .p1-datalist-item__title {
254
+ font-size: var(--p1-datalist-font-size-l);
255
+ }
256
+
257
+ .p1-datalist-listing__content .p1-datalist-item__teaser {
258
+ font-size: inherit;
259
+ }
260
+
261
+ /* ============================================
262
+ Table mode — Rows
263
+ ============================================ */
264
+
265
+ .p1-datalist-rows {
266
+ border: var(--p1-datalist-border-width) solid var(--p1-datalist-color-border);
267
+ border-radius: var(--p1-datalist-radius);
268
+ }
269
+
270
+ .p1-datalist-rows__row {
271
+ display: flex;
272
+ align-items: center;
273
+ gap: var(--p1-datalist-space-row-gap);
274
+ padding: var(--p1-datalist-space-row-padding);
275
+ }
276
+
277
+ .p1-datalist-rows[data-density='compact'] .p1-datalist-rows__row {
278
+ padding: var(--p1-datalist-space-row-padding-compact);
279
+ }
280
+
281
+ .p1-datalist-rows[data-density='compact'] .p1-datalist-rows__content {
282
+ font-size: var(--p1-datalist-font-size-s);
283
+ }
284
+
285
+ .p1-datalist-rows__row + .p1-datalist-rows__row {
286
+ border-top: var(--p1-datalist-border-width) solid
287
+ var(--p1-datalist-color-border);
288
+ }
289
+
290
+ .p1-datalist-rows__media {
291
+ width: 46px;
292
+ height: 46px;
293
+ flex-shrink: 0;
294
+ border-radius: var(--p1-datalist-radius-thumbnail);
295
+ }
296
+
297
+ .p1-datalist-rows__content {
298
+ flex: 1;
299
+ min-width: 0;
300
+ }
301
+
302
+ .p1-datalist-rows__content .p1-datalist-item__icon {
303
+ margin-bottom: 0;
304
+ margin-right: var(--p1-datalist-space-text-tight);
305
+ font-size: var(--p1-datalist-font-size-s);
306
+ }
307
+
308
+ .p1-datalist-rows__content .p1-datalist-item__subtitle {
309
+ margin-top: 0;
310
+ }
311
+
312
+ .p1-datalist-rows__content .p1-datalist-item__teaser {
313
+ margin-top: var(--p1-datalist-space-text-tight);
314
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/data/fields.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAAE,EAAE,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IAAE,EAAE,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AAgB/D,eAAO,MAAM,aAAa,EAAE,mBAkB3B,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACvC,mBAAmB,CAwBrB;AAED,eAAO,MAAM,eAAe,EAAE,eAM7B,CAAC;AAEF,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEjF,OAAO,EACL,mBAAmB,EACnB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,SAAS,EACT,WAAW,EACX,wBAAwB,EACxB,UAAU,GACX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,OAAO,EACP,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,GACb,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/data/fields.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAErE,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAAE,EAAE,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AACvE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IAAE,EAAE,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC;AA4B/D,eAAO,MAAM,aAAa,EAAE,mBAkB3B,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,SAAS,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACvC,mBAAmB,CAwBrB;AAED,eAAO,MAAM,eAAe,EAAE,eAM7B,CAAC;AAEF,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEjF,OAAO,EACL,mBAAmB,EACnB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,SAAS,EACT,WAAW,EACX,wBAAwB,EACxB,UAAU,GACX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,OAAO,EACP,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,YAAY,GACb,MAAM,4BAA4B,CAAC"}
@@ -1,7 +1,12 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { RichTextMenu } from "@puckeditor/core";
4
- const defaultRichtextMenu = () => (_jsxs(RichTextMenu, { children: [_jsxs(RichTextMenu.Group, { children: [_jsx(RichTextMenu.Bold, {}), _jsx(RichTextMenu.Italic, {}), _jsx(RichTextMenu.Underline, {})] }), _jsxs(RichTextMenu.Group, { children: [_jsx(RichTextMenu.BulletList, {}), _jsx(RichTextMenu.OrderedList, {})] })] }));
3
+ import React from "react";
4
+ const LazyRichTextMenu = React.lazy(() => import("@puckeditor/core").then(({ RichTextMenu }) => ({
5
+ default: function DefaultRichTextMenu() {
6
+ return (_jsxs(RichTextMenu, { children: [_jsxs(RichTextMenu.Group, { children: [_jsx(RichTextMenu.Bold, {}), _jsx(RichTextMenu.Italic, {}), _jsx(RichTextMenu.Underline, {})] }), _jsxs(RichTextMenu.Group, { children: [_jsx(RichTextMenu.BulletList, {}), _jsx(RichTextMenu.OrderedList, {})] })] }));
7
+ },
8
+ })));
9
+ const defaultRichtextMenu = () => (_jsx(React.Suspense, { fallback: null, children: _jsx(LazyRichTextMenu, {}) }));
5
10
  export const richtextField = {
6
11
  type: "richtext",
7
12
  contentEditable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/data/fields.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQhD,MAAM,mBAAmB,GAAgC,GAAG,EAAE,CAAC,CAC7D,MAAC,YAAY,eACX,MAAC,YAAY,CAAC,KAAK,eACjB,KAAC,YAAY,CAAC,IAAI,KAAG,EACrB,KAAC,YAAY,CAAC,MAAM,KAAG,EACvB,KAAC,YAAY,CAAC,SAAS,KAAG,IACP,EACrB,MAAC,YAAY,CAAC,KAAK,eACjB,KAAC,YAAY,CAAC,UAAU,KAAG,EAC3B,KAAC,YAAY,CAAC,WAAW,KAAG,IACT,IACR,CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAwB;IAChD,IAAI,EAAE,UAAU;IAChB,eAAe,EAAE,IAAI;IAUrB,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;IAC7B,EAAE,EAAE;QACF,YAAY,EACV,6KAA6K;KAChL;IACD,UAAU,EAAE,mBAAmB;CAChC,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,SAAwC;IAExC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAC;IAE5C,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,EAAE,GAAG,SACQ,CAAC;IAEvE,MAAM,MAAM,GAAgE;QAC1E,GAAG,aAAa;QAChB,GAAG,IAAI;KACR,CAAC;IAKF,IAAI,aAAa,CAAC,EAAE,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,EAAE,EAAE,GAAG,UAAU,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,WAAW,GAAI,aAAuD,CAAC,OAAO,CAAC;IACrF,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,eAAe,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,IAAI,EAAE,MAAM;IACZ,eAAe,EAAE,IAAI;IACrB,EAAE,EAAE;QACF,YAAY,EAAE,oDAAoD;KACnE;CACF,CAAC;AAEF,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAEjF,OAAO,EACL,mBAAmB,EACnB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,SAAS,EACT,WAAW,EACX,wBAAwB,EACxB,UAAU,GACX,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,OAAO,EACP,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/data/fields.tsx"],"names":[],"mappings":"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"}
@@ -19,4 +19,10 @@ export declare function hasStaticAssetExtension(path: string): boolean;
19
19
  * Returns `null` when the input is invalid, reserved, or unrenderable.
20
20
  */
21
21
  export declare function normalizePath(path: unknown): string | null;
22
+ /**
23
+ * Add the leading slash that page paths carry everywhere they are validated.
24
+ * Document records identify a page by its slug alone ("blog"), so a path read
25
+ * off one has to be converted before it can be used as a page path.
26
+ */
27
+ export declare function ensureLeadingSlash(path: string): string;
22
28
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/data/paths.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAMzG;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAUD,eAAO,MAAM,UAAU,QAA2B,CAAC;AAInD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE1D;AAYD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO7D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAU1D"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/data/paths.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAMzG;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAUD,eAAO,MAAM,UAAU,QAA2B,CAAC;AAInD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE1D;AAYD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO7D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAU1D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -47,4 +47,7 @@ export function normalizePath(path) {
47
47
  }
48
48
  return normalized;
49
49
  }
50
+ export function ensureLeadingSlash(path) {
51
+ return path.startsWith("/") ? path : `/${path}`;
52
+ }
50
53
  //# sourceMappingURL=paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/data/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/data/paths.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,19 @@
1
+ import { QueryClient } from "@tanstack/react-query";
1
2
  import { type ReactNode } from "react";
2
3
  export declare function P1QueryProvider({ children }: {
3
4
  children: ReactNode;
4
5
  }): import("react").JSX.Element;
6
+ /**
7
+ * The QueryClient that SDK internals fetch through, kept out of react-query's
8
+ * own context on purpose: a host application's client would govern SDK requests
9
+ * through its retry and staleTime defaults, share a key namespace with them, and
10
+ * drop their state on any clear() or broad invalidation of its own. Callers pass
11
+ * this client to useQuery and useMutation explicitly, so a host component
12
+ * rendered inside the editor still resolves the host's client from context.
13
+ */
14
+ export declare const P1SdkQueryClientContext: import("react").Context<QueryClient | null>;
15
+ export declare function P1SdkQueryProvider({ children }: {
16
+ children: ReactNode;
17
+ }): import("react").JSX.Element;
18
+ export declare function useP1SdkQueryClient(): QueryClient;
5
19
  //# sourceMappingURL=query-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-provider.d.ts","sourceRoot":"","sources":["../../src/data/query-provider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjD,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAcpE"}
1
+ {"version":3,"file":"query-provider.d.ts","sourceRoot":"","sources":["../../src/data/query-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAS5E,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAIpE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,6CAA0C,CAAC;AAE/E,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAMvE;AAED,wBAAgB,mBAAmB,IAAI,WAAW,CAQjD"}
@@ -1,16 +1,27 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
4
- import { useState } from "react";
4
+ import { createContext, useContext, useState } from "react";
5
+ const QUERY_DEFAULTS = {
6
+ queries: {
7
+ staleTime: 30_000,
8
+ refetchOnWindowFocus: false,
9
+ },
10
+ };
5
11
  export function P1QueryProvider({ children }) {
6
- const [client] = useState(() => new QueryClient({
7
- defaultOptions: {
8
- queries: {
9
- staleTime: 30_000,
10
- refetchOnWindowFocus: false,
11
- },
12
- },
13
- }));
12
+ const [client] = useState(() => new QueryClient({ defaultOptions: QUERY_DEFAULTS }));
14
13
  return _jsx(QueryClientProvider, { client: client, children: children });
15
14
  }
15
+ export const P1SdkQueryClientContext = createContext(null);
16
+ export function P1SdkQueryProvider({ children }) {
17
+ const [client] = useState(() => new QueryClient({ defaultOptions: QUERY_DEFAULTS }));
18
+ return (_jsx(P1SdkQueryClientContext.Provider, { value: client, children: children }));
19
+ }
20
+ export function useP1SdkQueryClient() {
21
+ const client = useContext(P1SdkQueryClientContext);
22
+ if (client === null) {
23
+ throw new Error("useP1SdkQueryClient must be used within a P1SdkQueryProvider");
24
+ }
25
+ return client;
26
+ }
16
27
  //# sourceMappingURL=query-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-provider.js","sourceRoot":"","sources":["../../src/data/query-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAEjD,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAA2B;IACnE,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CACvB,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;QACd,cAAc,EAAE;YACd,OAAO,EAAE;gBACP,SAAS,EAAE,MAAM;gBACjB,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF,CAAC,CACL,CAAC;IAEF,OAAO,KAAC,mBAAmB,IAAC,MAAM,EAAE,MAAM,YAAG,QAAQ,GAAuB,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"query-provider.js","sourceRoot":"","sources":["../../src/data/query-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAE5E,MAAM,cAAc,GAAG;IACrB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM;QACjB,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAA2B;IACnE,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IAErF,OAAO,KAAC,mBAAmB,IAAC,MAAM,EAAE,MAAM,YAAG,QAAQ,GAAuB,CAAC;AAC/E,CAAC;AAUD,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAqB,IAAI,CAAC,CAAC;AAE/E,MAAM,UAAU,kBAAkB,CAAC,EAAE,QAAQ,EAA2B;IACtE,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IAErF,OAAO,CACL,KAAC,uBAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAAG,QAAQ,GAAoC,CAC/F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC;IAEnD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,5 +1,19 @@
1
1
  /** Returns true when the error represents a tombstoned document (HTTP 410). */
2
2
  export declare function isDocumentGoneError(err: unknown): boolean;
3
+ /** Returns true when the error carries an HTTP 404 status, whatever the request was for. */
4
+ export declare function isNotFoundStatus(err: unknown): boolean;
5
+ /**
6
+ * Thrown when a path resolves to no document. Only the path lookup itself may raise
7
+ * this: a 404 from a later call in the same load says nothing about whether the page
8
+ * exists, and must not be mistaken for a missing one.
9
+ */
10
+ export declare class DocumentPathNotFoundError extends Error {
11
+ readonly path: string;
12
+ name: string;
13
+ constructor(path: string);
14
+ }
15
+ /** Returns true when the error represents a path with no document behind it. */
16
+ export declare function isDocumentNotFoundError(err: unknown): boolean;
3
17
  /** Safely coerce an unknown value to string — returns "" for null, undefined, and non-primitives. */
4
18
  export declare function rawValueToString(value: unknown): string;
5
19
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/data/utils.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKvD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/data/utils.ts"],"names":[],"mappings":"AAIA,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED;;;;GAIG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;aAGtB,IAAI,EAAE,MAAM;IAF/B,IAAI,SAA+B;gBAEhB,IAAI,EAAE,MAAM;CAIzC;AAED,gFAAgF;AAChF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE7D;AAED,qGAAqG;AACrG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKvD"}
@@ -1,5 +1,23 @@
1
+ function hasStatus(err, status) {
2
+ return err instanceof Error && "status" in err && err.status === status;
3
+ }
1
4
  export function isDocumentGoneError(err) {
2
- return err instanceof Error && "status" in err && err.status === 410;
5
+ return hasStatus(err, 410);
6
+ }
7
+ export function isNotFoundStatus(err) {
8
+ return hasStatus(err, 404);
9
+ }
10
+ export class DocumentPathNotFoundError extends Error {
11
+ path;
12
+ name = "DocumentPathNotFoundError";
13
+ constructor(path) {
14
+ super(`No document at path: ${path}`);
15
+ this.path = path;
16
+ Object.setPrototypeOf(this, DocumentPathNotFoundError.prototype);
17
+ }
18
+ }
19
+ export function isDocumentNotFoundError(err) {
20
+ return err instanceof DocumentPathNotFoundError;
3
21
  }
4
22
  export function rawValueToString(value) {
5
23
  if (value == null)
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/data/utils.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAO,GAAG,YAAY,KAAK,IAAI,QAAQ,IAAI,GAAG,IAAK,GAA0B,CAAC,MAAM,KAAK,GAAG,CAAC;AAC/F,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/data/utils.ts"],"names":[],"mappings":"AAAA,SAAS,SAAS,CAAC,GAAY,EAAE,MAAc;IAC7C,OAAO,GAAG,YAAY,KAAK,IAAI,QAAQ,IAAI,GAAG,IAAK,GAA0B,CAAC,MAAM,KAAK,MAAM,CAAC;AAClG,CAAC;AAGD,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAOD,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAGtB;IAFnB,IAAI,GAAG,2BAA2B,CAAC;IAE5C,YAA4B,IAAY;QACtC,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QADZ,SAAI,GAAJ,IAAI,CAAQ;QAEtC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;CACF;AAGD,MAAM,UAAU,uBAAuB,CAAC,GAAY;IAClD,OAAO,GAAG,YAAY,yBAAyB,CAAC;AAClD,CAAC;AAGD,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"P1PuckProvider.d.ts","sourceRoot":"","sources":["../../src/editor/P1PuckProvider.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AAUjF,OAAO,KAAK,EAAE,YAAY,EAAiE,MAAM,kBAAkB,CAAC;AAWpH,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAYhE,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtD;;;;OAIG;IACH,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,eAAe,CAAC;CACjC;AAyBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAM7E"}
1
+ {"version":3,"file":"P1PuckProvider.d.ts","sourceRoot":"","sources":["../../src/editor/P1PuckProvider.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AAUjF,OAAO,KAAK,EAAE,YAAY,EAAiE,MAAM,kBAAkB,CAAC;AAYpH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAkBhE,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtD;;;;OAIG;IACH,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,eAAe,CAAC;CACjC;AAyBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAM7E"}
@@ -4,6 +4,7 @@ import isEqual from 'lodash.isequal';
4
4
  import { P1PuckContext } from '../core/P1PuckContext.js';
5
5
  import { NotificationProvider, useNotifications } from '../core/NotificationContext.js';
6
6
  import { PresenceContext } from '../core/PresenceContext.js';
7
+ import { P1SdkQueryProvider } from '../data/query-provider.js';
7
8
  import { debounce } from '../core/utils/debounce.js';
8
9
  import { describeRequestFailure } from '../core/utils/requestError.js';
9
10
  import { withRetry } from '../core/utils/retry.js';
@@ -11,8 +12,10 @@ import { resolveFeatureConfig } from '../core/featureConfig.js';
11
12
  import { createPuckPermissions } from '../features/content-type-templates/permissions/createPuckPermissions.js';
12
13
  import { useTemplateList } from '../features/content-type-templates/hooks/useTemplateList.js';
13
14
  import { presenceIdentityKey } from '../collaboration/utils/presenceIdentity.js';
15
+ import { DocumentPathNotFoundError, isNotFoundStatus } from '../data/utils.js';
14
16
  import { DEFAULT_CCR_FEATURE_PLUGINS } from './defaultPlugins.js';
15
- import { resolveActivePlugins, composeProviders } from './composePlugins.js';
17
+ import { resolveActivePlugins, composeProviders, collectPuckPlugins, } from './composePlugins.js';
18
+ import { useStablePluginDeps } from './stablePluginDeps.js';
16
19
  import { snapshotToPuckData } from './utils/snapshotToPuckData.js';
17
20
  import { useDocuments } from './useDocuments.js';
18
21
  import { useRealtime } from './useRealtime.js';
@@ -623,7 +626,11 @@ function P1PuckProviderInner({ client, siteId, branchId: initialBranchId, userId
623
626
  setDocumentLoading(true);
624
627
  commitCurrentData(null, null);
625
628
  try {
626
- const doc = await userClient.documents.getByPath(siteId, path.startsWith('/') ? path.slice(1) : path, branchId);
629
+ const doc = await userClient.documents
630
+ .getByPath(siteId, path.startsWith('/') ? path.slice(1) : path, branchId)
631
+ .catch((err) => {
632
+ throw isNotFoundStatus(err) ? new DocumentPathNotFoundError(path) : err;
633
+ });
627
634
  if (thisRequestId !== loadRequestIdRef.current) {
628
635
  console.debug('[P1PuckProvider] Stale loadDocument — skipping (after getByPath)');
629
636
  return;
@@ -1276,14 +1283,15 @@ function P1PuckProviderInner({ client, siteId, branchId: initialBranchId, userId
1276
1283
  const plugins = featurePlugins ?? DEFAULT_CCR_FEATURE_PLUGINS;
1277
1284
  return resolveActivePlugins(plugins, resolvedFeatureConfig);
1278
1285
  }, [featurePlugins, resolvedFeatureConfig]);
1279
- const pluginDeps = useMemo(() => ({
1286
+ const pluginDeps = useStablePluginDeps({
1280
1287
  client: userClient,
1281
1288
  siteId,
1282
1289
  branchId,
1283
1290
  userId,
1284
1291
  config: resolvedFeatureConfig,
1285
- }), [userClient, siteId, branchId, userId, resolvedFeatureConfig]);
1292
+ });
1286
1293
  const ComposedPluginProviders = useMemo(() => composeProviders(activePlugins, resolvedFeatureConfig, pluginDeps), [activePlugins, resolvedFeatureConfig, pluginDeps]);
1294
+ const featurePuckPlugins = useMemo(() => collectPuckPlugins(activePlugins, pluginDeps), [activePlugins, pluginDeps]);
1287
1295
  const EMPTY_PUCK_DATA = useMemo(() => ({ content: [], root: { props: {} } }), []);
1288
1296
  const lastGoodDataRef = useRef(EMPTY_PUCK_DATA);
1289
1297
  if (currentDocument && currentData) {
@@ -1357,6 +1365,7 @@ function P1PuckProviderInner({ client, siteId, branchId: initialBranchId, userId
1357
1365
  conflicts,
1358
1366
  dismissConflict,
1359
1367
  featureConfig: resolvedFeatureConfig,
1368
+ featurePuckPlugins,
1360
1369
  _realtimeDataCaptureRef: enableRealtime ? realtimeDataCaptureRef : null,
1361
1370
  _onRealtimeDataCapture: enableRealtime ? handleRealtimeDataCapture : null,
1362
1371
  userRole,
@@ -1432,6 +1441,7 @@ function P1PuckProviderInner({ client, siteId, branchId: initialBranchId, userId
1432
1441
  dismissConflict,
1433
1442
  enableRealtime,
1434
1443
  resolvedFeatureConfig,
1444
+ featurePuckPlugins,
1435
1445
  userRole,
1436
1446
  branchTemplates,
1437
1447
  templatesLoading,
@@ -1441,6 +1451,6 @@ function P1PuckProviderInner({ client, siteId, branchId: initialBranchId, userId
1441
1451
  resolvePermissions,
1442
1452
  ]);
1443
1453
  const wrappedChildren = presenceContextValue ? (_jsx(PresenceContext.Provider, { value: presenceContextValue, children: children })) : (children);
1444
- return (_jsx(P1PuckContext.Provider, { value: contextValue, children: _jsx(ComposedPluginProviders, { children: wrappedChildren }) }));
1454
+ return (_jsx(P1SdkQueryProvider, { children: _jsx(P1PuckContext.Provider, { value: contextValue, children: _jsx(ComposedPluginProviders, { children: wrappedChildren }) }) }));
1445
1455
  }
1446
1456
  //# sourceMappingURL=P1PuckProvider.js.map