@payload-onpage/react 0.2.1 → 0.3.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 (217) hide show
  1. package/dist/OnPageClient.d.ts.map +1 -1
  2. package/dist/OnPageClient.js +9 -5
  3. package/dist/OnPageClient.js.map +1 -1
  4. package/dist/annotations.d.ts +1 -1
  5. package/dist/annotations.d.ts.map +1 -1
  6. package/dist/context.d.ts +19 -5
  7. package/dist/context.d.ts.map +1 -1
  8. package/dist/context.js +31 -7
  9. package/dist/context.js.map +1 -1
  10. package/dist/dom.d.ts +16 -12
  11. package/dist/dom.d.ts.map +1 -1
  12. package/dist/dom.js +16 -16
  13. package/dist/dom.js.map +1 -1
  14. package/dist/editor/FieldHost.d.ts.map +1 -1
  15. package/dist/editor/FieldHost.js +18 -11
  16. package/dist/editor/FieldHost.js.map +1 -1
  17. package/dist/editor/OnPageEditor.d.ts +15 -8
  18. package/dist/editor/OnPageEditor.d.ts.map +1 -1
  19. package/dist/editor/OnPageEditor.js +73 -103
  20. package/dist/editor/OnPageEditor.js.map +1 -1
  21. package/dist/editor/editTarget.d.ts +28 -0
  22. package/dist/editor/editTarget.d.ts.map +1 -0
  23. package/dist/editor/editTarget.js +20 -0
  24. package/dist/editor/editTarget.js.map +1 -0
  25. package/dist/editor/useClientDocs.d.ts +4 -0
  26. package/dist/editor/useClientDocs.d.ts.map +1 -0
  27. package/dist/editor/useClientDocs.js +16 -0
  28. package/dist/editor/useClientDocs.js.map +1 -0
  29. package/dist/editor/useEditorSession.d.ts +13 -0
  30. package/dist/editor/useEditorSession.d.ts.map +1 -0
  31. package/dist/editor/useEditorSession.js +30 -0
  32. package/dist/editor/useEditorSession.js.map +1 -0
  33. package/dist/editor/useFlash.d.ts +4 -0
  34. package/dist/editor/useFlash.d.ts.map +1 -0
  35. package/dist/editor/useFlash.js +16 -0
  36. package/dist/editor/useFlash.js.map +1 -0
  37. package/dist/editor/useGhosts.d.ts +5 -7
  38. package/dist/editor/useGhosts.d.ts.map +1 -1
  39. package/dist/editor/useGhosts.js.map +1 -1
  40. package/dist/editor/usePageEvents.d.ts.map +1 -1
  41. package/dist/editor/usePageEvents.js +16 -16
  42. package/dist/editor/usePageEvents.js.map +1 -1
  43. package/dist/editor-kit.d.ts +10 -6
  44. package/dist/editor-kit.d.ts.map +1 -1
  45. package/dist/editor-kit.js +8 -5
  46. package/dist/editor-kit.js.map +1 -1
  47. package/dist/editors/CheckboxEditor.d.ts +6 -1
  48. package/dist/editors/CheckboxEditor.d.ts.map +1 -1
  49. package/dist/editors/CheckboxEditor.js +6 -3
  50. package/dist/editors/CheckboxEditor.js.map +1 -1
  51. package/dist/editors/ColorEditor.d.ts +3 -1
  52. package/dist/editors/ColorEditor.d.ts.map +1 -1
  53. package/dist/editors/ColorEditor.js +9 -15
  54. package/dist/editors/ColorEditor.js.map +1 -1
  55. package/dist/editors/DateEditor.d.ts +3 -1
  56. package/dist/editors/DateEditor.d.ts.map +1 -1
  57. package/dist/editors/DateEditor.js +10 -12
  58. package/dist/editors/DateEditor.js.map +1 -1
  59. package/dist/editors/InlineText.d.ts +2 -2
  60. package/dist/editors/InlineText.d.ts.map +1 -1
  61. package/dist/editors/InlineText.js +2 -3
  62. package/dist/editors/InlineText.js.map +1 -1
  63. package/dist/editors/NumberEditor.d.ts +3 -1
  64. package/dist/editors/NumberEditor.d.ts.map +1 -1
  65. package/dist/editors/NumberEditor.js +9 -17
  66. package/dist/editors/NumberEditor.js.map +1 -1
  67. package/dist/editors/RelationshipEditor.d.ts +7 -1
  68. package/dist/editors/RelationshipEditor.d.ts.map +1 -1
  69. package/dist/editors/RelationshipEditor.js +10 -18
  70. package/dist/editors/RelationshipEditor.js.map +1 -1
  71. package/dist/editors/SelectEditor.d.ts +4 -1
  72. package/dist/editors/SelectEditor.d.ts.map +1 -1
  73. package/dist/editors/SelectEditor.js +8 -13
  74. package/dist/editors/SelectEditor.js.map +1 -1
  75. package/dist/editors/UploadEditor.d.ts +7 -1
  76. package/dist/editors/UploadEditor.d.ts.map +1 -1
  77. package/dist/editors/UploadEditor.js +5 -5
  78. package/dist/editors/UploadEditor.js.map +1 -1
  79. package/dist/editors/index.d.ts +0 -1
  80. package/dist/editors/index.d.ts.map +1 -1
  81. package/dist/editors/index.js +56 -16
  82. package/dist/editors/index.js.map +1 -1
  83. package/dist/editors/kit.d.ts +39 -0
  84. package/dist/editors/kit.d.ts.map +1 -0
  85. package/dist/editors/kit.js +44 -0
  86. package/dist/editors/kit.js.map +1 -0
  87. package/dist/editors/useDebouncedSearch.d.ts +10 -6
  88. package/dist/editors/useDebouncedSearch.d.ts.map +1 -1
  89. package/dist/editors/useDebouncedSearch.js +11 -7
  90. package/dist/editors/useDebouncedSearch.js.map +1 -1
  91. package/dist/geometry.d.ts +49 -0
  92. package/dist/geometry.d.ts.map +1 -0
  93. package/dist/geometry.js +48 -0
  94. package/dist/geometry.js.map +1 -0
  95. package/dist/hub.d.ts +4 -4
  96. package/dist/hub.d.ts.map +1 -1
  97. package/dist/hub.js.map +1 -1
  98. package/dist/index.d.ts +3 -3
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +2 -2
  101. package/dist/index.js.map +1 -1
  102. package/dist/layout.d.ts.map +1 -1
  103. package/dist/layout.js +4 -2
  104. package/dist/layout.js.map +1 -1
  105. package/dist/locators.d.ts +0 -2
  106. package/dist/locators.d.ts.map +1 -1
  107. package/dist/locators.js +10 -16
  108. package/dist/locators.js.map +1 -1
  109. package/dist/messages.d.ts +15 -2
  110. package/dist/messages.d.ts.map +1 -1
  111. package/dist/messages.js +5 -0
  112. package/dist/messages.js.map +1 -1
  113. package/dist/registry.d.ts +21 -2
  114. package/dist/registry.d.ts.map +1 -1
  115. package/dist/registry.js +31 -6
  116. package/dist/registry.js.map +1 -1
  117. package/dist/rowOps.d.ts +20 -0
  118. package/dist/rowOps.d.ts.map +1 -0
  119. package/dist/rowOps.js +48 -0
  120. package/dist/rowOps.js.map +1 -0
  121. package/dist/sanitize.d.ts +2 -0
  122. package/dist/sanitize.d.ts.map +1 -1
  123. package/dist/sanitize.js +3 -0
  124. package/dist/sanitize.js.map +1 -1
  125. package/dist/settings.d.ts +10 -0
  126. package/dist/settings.d.ts.map +1 -0
  127. package/dist/settings.js +30 -0
  128. package/dist/settings.js.map +1 -0
  129. package/dist/styles.d.ts +0 -4
  130. package/dist/styles.d.ts.map +1 -1
  131. package/dist/styles.js +2 -1
  132. package/dist/styles.js.map +1 -1
  133. package/dist/targets.d.ts +1 -1
  134. package/dist/targets.d.ts.map +1 -1
  135. package/dist/types.d.ts +71 -46
  136. package/dist/types.d.ts.map +1 -1
  137. package/dist/ui/BlockPicker.d.ts.map +1 -1
  138. package/dist/ui/BlockPicker.js +6 -5
  139. package/dist/ui/BlockPicker.js.map +1 -1
  140. package/dist/ui/Dialog.d.ts +0 -5
  141. package/dist/ui/Dialog.d.ts.map +1 -1
  142. package/dist/ui/Dialog.js +10 -6
  143. package/dist/ui/Dialog.js.map +1 -1
  144. package/dist/ui/Dock.d.ts +1 -6
  145. package/dist/ui/Dock.d.ts.map +1 -1
  146. package/dist/ui/Dock.js +46 -28
  147. package/dist/ui/Dock.js.map +1 -1
  148. package/dist/ui/Overlay.d.ts.map +1 -1
  149. package/dist/ui/Overlay.js +39 -37
  150. package/dist/ui/Overlay.js.map +1 -1
  151. package/dist/ui/PreviewToolbar.d.ts +3 -3
  152. package/dist/ui/PreviewToolbar.d.ts.map +1 -1
  153. package/dist/ui/PreviewToolbar.js +4 -6
  154. package/dist/ui/PreviewToolbar.js.map +1 -1
  155. package/dist/ui/SettingsPanel.d.ts +0 -9
  156. package/dist/ui/SettingsPanel.d.ts.map +1 -1
  157. package/dist/ui/SettingsPanel.js +36 -41
  158. package/dist/ui/SettingsPanel.js.map +1 -1
  159. package/dist/ui/ToolbarButton.d.ts +12 -0
  160. package/dist/ui/ToolbarButton.d.ts.map +1 -0
  161. package/dist/ui/ToolbarButton.js +7 -0
  162. package/dist/ui/ToolbarButton.js.map +1 -0
  163. package/dist/useEvent.d.ts +1 -1
  164. package/dist/useEvent.d.ts.map +1 -1
  165. package/dist/useEvent.js +3 -1
  166. package/dist/useEvent.js.map +1 -1
  167. package/dist/useIsClient.d.ts +5 -0
  168. package/dist/useIsClient.d.ts.map +1 -0
  169. package/dist/useIsClient.js +8 -0
  170. package/dist/useIsClient.js.map +1 -0
  171. package/package.json +2 -2
  172. package/src/OnPageClient.tsx +9 -5
  173. package/src/annotations.ts +1 -1
  174. package/src/context.tsx +53 -10
  175. package/src/dom.ts +17 -18
  176. package/src/editor/FieldHost.tsx +26 -11
  177. package/src/editor/OnPageEditor.tsx +103 -160
  178. package/src/editor/editTarget.ts +41 -0
  179. package/src/editor/useClientDocs.ts +19 -0
  180. package/src/editor/useEditorSession.ts +36 -0
  181. package/src/editor/useFlash.ts +18 -0
  182. package/src/editor/useGhosts.ts +5 -7
  183. package/src/editor/usePageEvents.ts +13 -14
  184. package/src/editor-kit.ts +10 -6
  185. package/src/editors/CheckboxEditor.tsx +11 -12
  186. package/src/editors/ColorEditor.tsx +15 -35
  187. package/src/editors/DateEditor.tsx +18 -37
  188. package/src/editors/InlineText.tsx +4 -5
  189. package/src/editors/NumberEditor.tsx +15 -36
  190. package/src/editors/RelationshipEditor.tsx +18 -36
  191. package/src/editors/SelectEditor.tsx +14 -22
  192. package/src/editors/UploadEditor.tsx +6 -6
  193. package/src/editors/index.ts +56 -16
  194. package/src/editors/kit.tsx +97 -0
  195. package/src/editors/useDebouncedSearch.ts +18 -10
  196. package/src/geometry.ts +62 -0
  197. package/src/hub.ts +5 -5
  198. package/src/index.ts +5 -2
  199. package/src/layout.ts +5 -2
  200. package/src/locators.ts +11 -14
  201. package/src/messages.ts +26 -5
  202. package/src/registry.ts +42 -8
  203. package/src/rowOps.ts +64 -0
  204. package/src/sanitize.ts +6 -0
  205. package/src/settings.ts +49 -0
  206. package/src/styles.ts +2 -1
  207. package/src/targets.ts +1 -1
  208. package/src/types.ts +78 -45
  209. package/src/ui/BlockPicker.tsx +6 -7
  210. package/src/ui/Dialog.tsx +9 -5
  211. package/src/ui/Dock.tsx +67 -50
  212. package/src/ui/Overlay.tsx +75 -102
  213. package/src/ui/PreviewToolbar.tsx +7 -15
  214. package/src/ui/SettingsPanel.tsx +84 -81
  215. package/src/ui/ToolbarButton.tsx +36 -0
  216. package/src/useEvent.ts +4 -2
  217. package/src/useIsClient.ts +15 -0
@@ -9,8 +9,6 @@
9
9
  */
10
10
  import { type Locator } from '@payload-onpage/core';
11
11
  export declare function annotations(): Locator;
12
- /** "layout.2.items.0.title" → ["layout.2", "layout.2.items.0"] (row paths, outermost first). */
13
- export declare function rowPrefixes(path: string): string[];
14
12
  export declare function stega(opts?: {
15
13
  inferRows?: boolean;
16
14
  }): Locator;
@@ -1 +1 @@
1
- {"version":3,"file":"locators.d.ts","sourceRoot":"","sources":["../src/locators.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAKL,KAAK,OAAO,EAGb,MAAM,sBAAsB,CAAA;AAI7B,wBAAgB,WAAW,IAAI,OAAO,CA2BrC;AAeD,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMlD;AAED,wBAAgB,KAAK,CAAC,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CA0GjE;AAED,4HAA4H;AAC5H,wBAAgB,SAAS,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CA4BzD"}
1
+ {"version":3,"file":"locators.d.ts","sourceRoot":"","sources":["../src/locators.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAQL,KAAK,OAAO,EAGb,MAAM,sBAAsB,CAAA;AAI7B,wBAAgB,WAAW,IAAI,OAAO,CA6BrC;AAeD,wBAAgB,KAAK,CAAC,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CA2GjE;AAED,4HAA4H;AAC5H,wBAAgB,SAAS,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CA4BzD"}
package/dist/locators.js CHANGED
@@ -7,7 +7,7 @@
7
7
  * inferred rows and lists for array/blocks content
8
8
  * composite() merge several; earlier locators win for the same element+path
9
9
  */
10
- import { parseRefKey, targetKey, stegaDecode, } from '@payload-onpage/core';
10
+ import { hasStegaMarker, isTargetKind, parseRefKey, rowPrefixes, targetKey, stegaDecode, } from '@payload-onpage/core';
11
11
  import { ATTR } from "./annotations.js";
12
12
  import { UI } from "./dom.js";
13
13
  export function annotations() {
@@ -21,12 +21,14 @@ export function annotations() {
21
21
  return;
22
22
  const label = el.getAttribute(ATTR.label) ?? undefined;
23
23
  const field = el.getAttribute(ATTR.field);
24
+ const kind = el.getAttribute(ATTR.kind);
24
25
  if (field)
25
26
  out.push({
26
27
  el,
27
28
  ref,
28
29
  path: field,
29
- kind: el.getAttribute(ATTR.kind) || 'field',
30
+ // Page markup is input: an unknown kind is treated as a plain field.
31
+ kind: isTargetKind(kind) ? kind : 'field',
30
32
  label,
31
33
  source: 'annotation',
32
34
  });
@@ -46,7 +48,7 @@ const SKIP_TAGS = new Set(['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEMPLATE', 'TEXTAREA'
46
48
  function commonAncestor(els) {
47
49
  if (!els.length)
48
50
  return null;
49
- let anc = els[0];
51
+ let anc = els[0] ?? null;
50
52
  for (const el of els.slice(1)) {
51
53
  while (anc && !anc.contains(el))
52
54
  anc = anc.parentElement;
@@ -55,15 +57,6 @@ function commonAncestor(els) {
55
57
  }
56
58
  return anc;
57
59
  }
58
- /** "layout.2.items.0.title" → ["layout.2", "layout.2.items.0"] (row paths, outermost first). */
59
- export function rowPrefixes(path) {
60
- const segs = path.split('.');
61
- const out = [];
62
- for (let i = 1; i < segs.length; i++)
63
- if (/^\d+$/.test(segs[i]) && i < segs.length - 1)
64
- out.push(segs.slice(0, i + 1).join('.'));
65
- return out;
66
- }
67
60
  export function stega(opts = {}) {
68
61
  const inferRows = opts.inferRows ?? true;
69
62
  return {
@@ -87,7 +80,7 @@ export function stega(opts = {}) {
87
80
  const walker = doc.createTreeWalker(root, 4 /* NodeFilter.SHOW_TEXT */);
88
81
  for (let n = walker.nextNode(); n; n = walker.nextNode()) {
89
82
  const text = n.nodeValue;
90
- if (!text || !text.includes('\u2063\u2062'))
83
+ if (!text || !hasStegaMarker(text))
91
84
  continue;
92
85
  const parent = n.parentElement;
93
86
  if (!parent || SKIP_TAGS.has(parent.tagName) || parent.closest(`[${UI}]`))
@@ -119,9 +112,10 @@ export function stega(opts = {}) {
119
112
  rich.set(k, [...(rich.get(k) ?? []), t]);
120
113
  }
121
114
  for (const group of rich.values()) {
115
+ const [first] = group;
122
116
  const el = commonAncestor(group.map((t) => t.el));
123
- if (el)
124
- out.push({ ...group[0], el });
117
+ if (first && el)
118
+ out.push({ ...first, el });
125
119
  }
126
120
  if (!inferRows)
127
121
  return out;
@@ -171,7 +165,7 @@ export function stega(opts = {}) {
171
165
  byList.set(k, entry);
172
166
  }
173
167
  for (const { ref, path, els } of byList.values()) {
174
- const anc = els.length > 1 ? commonAncestor(els) : els[0].parentElement;
168
+ const anc = els.length > 1 ? commonAncestor(els) : (els[0]?.parentElement ?? null);
175
169
  if (anc && anc !== root)
176
170
  rows.push({ el: anc, ref, path, kind: 'list', source: 'stega' });
177
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"locators.js","sourceRoot":"","sources":["../src/locators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locators.js","sourceRoot":"","sources":["../src/locators.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare const defaultMessages: {
7
7
  readonly 'dock.label': "Page editor";
8
8
  readonly 'dock.loading': "Loading editor…";
9
9
  readonly 'dock.unavailable': "{doc}: {error}";
10
+ readonly 'dock.saveFailed': "{doc}: {message}";
10
11
  readonly 'dock.nothing': "Nothing editable on this page";
11
12
  readonly 'dock.conflict': "{doc}: changed by someone else";
12
13
  readonly 'dock.saving': "Saving draft…";
@@ -44,6 +45,8 @@ export declare const defaultMessages: {
44
45
  readonly 'row.settings': "Settings";
45
46
  readonly 'row.delete': "Delete (undo with ⌘Z)";
46
47
  readonly 'row.addSection': "Add section";
48
+ readonly 'row.addSectionAbove': "Add section above";
49
+ readonly 'row.addSectionBelow': "Add section below";
47
50
  readonly 'row.addFirstSection': "Add a section";
48
51
  readonly 'row.addItem': "Add {item}";
49
52
  readonly 'row.toolbar': "{label} actions";
@@ -56,6 +59,7 @@ export declare const defaultMessages: {
56
59
  readonly 'common.apply': "Apply";
57
60
  readonly 'common.clear': "Clear";
58
61
  readonly 'common.remove': "Remove";
62
+ readonly 'common.removeItem': "Remove {item}";
59
63
  readonly 'common.none': "—";
60
64
  readonly 'common.selected': "{count} selected";
61
65
  readonly 'search.placeholder': "Search…";
@@ -81,6 +85,7 @@ export declare const defaultMessages: {
81
85
  readonly 'rt.italic': "Italic";
82
86
  readonly 'rt.underline': "Underline";
83
87
  readonly 'rt.link': "Link";
88
+ readonly 'rt.linkApply': "Apply";
84
89
  readonly 'rt.h2': "Heading 2";
85
90
  readonly 'rt.h3': "Heading 3";
86
91
  readonly 'rt.ul': "Bulleted list";
@@ -92,8 +97,16 @@ export declare const defaultMessages: {
92
97
  };
93
98
  export type MessageKey = keyof typeof defaultMessages;
94
99
  export type Messages = Partial<Record<MessageKey, string>>;
95
- /** Translate a message key (unknown keys are returned as-is, so plain text works too). */
96
- export type Translate = (key: MessageKey | (string & {}), vars?: Record<string, string | number>) => string;
100
+ /** The {placeholders} of a message: `Placeholders<'Saved {when}'>` is `'when'`. */
101
+ export type Placeholders<S extends string> = S extends `${string}{${infer Name}}${infer Rest}` ? Name | Placeholders<Rest> : never;
102
+ /** The variables a message needs, by key. */
103
+ export type MessageVars<K extends MessageKey> = Record<Placeholders<(typeof defaultMessages)[K]>, string | number>;
104
+ /**
105
+ * Translate a message key. A message with placeholders requires exactly those
106
+ * variables (`t('dock.saved', { ago })`); one without takes none. Unknown keys
107
+ * don't compile: show raw text without `t`.
108
+ */
109
+ export type Translate = <K extends MessageKey>(key: K, ...vars: [Placeholders<(typeof defaultMessages)[K]>] extends [never] ? [] : [vars: MessageVars<K>]) => string;
97
110
  export declare function createTranslate(overrides?: Messages): Translate;
98
111
  /** "5 seconds ago", "2 minutes ago", in the browser's language. */
99
112
  export declare function relativeTime(ts: number, now?: number, locale?: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuFlB,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,eAAe,CAAA;AACrD,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAC1D,0FAA0F;AAC1F,MAAM,MAAM,SAAS,GAAG,CACtB,GAAG,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EAC/B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACnC,MAAM,CAAA;AAEX,wBAAgB,eAAe,CAAC,SAAS,GAAE,QAAa,GAAG,SAAS,CAQnE;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,SAAa,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlF"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4FlB,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,eAAe,CAAA;AACrD,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAE1D,mFAAmF;AACnF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,GAC1F,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GACzB,KAAK,CAAA;AAET,6CAA6C;AAC7C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,UAAU,IAAI,MAAM,CACpD,YAAY,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EACzC,MAAM,GAAG,MAAM,CAChB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,UAAU,EAC3C,GAAG,EAAE,CAAC,EACN,GAAG,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAC/F,MAAM,CAAA;AAEX,wBAAgB,eAAe,CAAC,SAAS,GAAE,QAAa,GAAG,SAAS,CAQnE;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,SAAa,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlF"}
package/dist/messages.js CHANGED
@@ -7,6 +7,7 @@ export const defaultMessages = {
7
7
  'dock.label': 'Page editor',
8
8
  'dock.loading': 'Loading editor…',
9
9
  'dock.unavailable': '{doc}: {error}',
10
+ 'dock.saveFailed': '{doc}: {message}',
10
11
  'dock.nothing': 'Nothing editable on this page',
11
12
  'dock.conflict': '{doc}: changed by someone else',
12
13
  'dock.saving': 'Saving draft…',
@@ -44,6 +45,8 @@ export const defaultMessages = {
44
45
  'row.settings': 'Settings',
45
46
  'row.delete': 'Delete (undo with ⌘Z)',
46
47
  'row.addSection': 'Add section',
48
+ 'row.addSectionAbove': 'Add section above',
49
+ 'row.addSectionBelow': 'Add section below',
47
50
  'row.addFirstSection': 'Add a section',
48
51
  'row.addItem': 'Add {item}',
49
52
  'row.toolbar': '{label} actions',
@@ -56,6 +59,7 @@ export const defaultMessages = {
56
59
  'common.apply': 'Apply',
57
60
  'common.clear': 'Clear',
58
61
  'common.remove': 'Remove',
62
+ 'common.removeItem': 'Remove {item}',
59
63
  'common.none': '—',
60
64
  'common.selected': '{count} selected',
61
65
  'search.placeholder': 'Search…',
@@ -81,6 +85,7 @@ export const defaultMessages = {
81
85
  'rt.italic': 'Italic',
82
86
  'rt.underline': 'Underline',
83
87
  'rt.link': 'Link',
88
+ 'rt.linkApply': 'Apply',
84
89
  'rt.h2': 'Heading 2',
85
90
  'rt.h3': 'Heading 3',
86
91
  'rt.ul': 'Bulleted list',
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,28 @@
7
7
  * No match: the field isn't edited in place (it may still be in the row's
8
8
  * settings panel).
9
9
  */
10
- import type { SchemaField, TargetKind } from '@payload-onpage/core';
11
- import type { EditorRegistry } from './types.ts';
10
+ import type { FieldOf, SchemaField, SchemaFieldType, TargetKind } from '@payload-onpage/core';
11
+ import type { EditorRegistry, FieldEditorDef, FieldEditorProps } from './types.ts';
12
+ import type { ComponentType } from 'react';
13
+ /** Can this editor take this field? Its declared kinds, and never a list of values in place. */
14
+ export declare function canEdit(def: FieldEditorDef | undefined, field: SchemaField): def is FieldEditorDef;
12
15
  export declare function resolveEditor(editors: EditorRegistry, field: SchemaField, kind?: TargetKind): string | null;
13
16
  /** Merge registries left to right; `null` removes a default. */
14
17
  export declare function mergeEditors(...regs: Array<Record<string, EditorRegistry[string] | null> | undefined>): EditorRegistry;
18
+ /**
19
+ * Define a field editor typed by the field kinds it accepts:
20
+ *
21
+ * defineEditor({
22
+ * mode: 'popover',
23
+ * accepts: ['number'],
24
+ * normalize: (raw) => (typeof raw === 'number' ? raw : null),
25
+ * component: ({ field, value }) => … // field: NumberField, value: number | null
26
+ * })
27
+ */
28
+ export declare function defineEditor<T extends SchemaFieldType, V = unknown>(def: {
29
+ mode: FieldEditorDef['mode'];
30
+ accepts: readonly T[];
31
+ normalize?: (raw: unknown, field: FieldOf<T>) => V;
32
+ component: ComponentType<FieldEditorProps<FieldOf<T>, V>>;
33
+ }): FieldEditorDef;
15
34
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAKhD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE,UAAU,GAChB,MAAM,GAAG,IAAI,CAQf;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAC1B,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,GACxE,cAAc,CAUhB"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC7F,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAM1C,gGAAgG;AAChG,wBAAgB,OAAO,CACrB,GAAG,EAAE,cAAc,GAAG,SAAS,EAC/B,KAAK,EAAE,WAAW,GACjB,GAAG,IAAI,cAAc,CAIvB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE,UAAU,GAChB,MAAM,GAAG,IAAI,CASf;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAC1B,GAAG,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,GACxE,cAAc,CAUhB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,eAAe,EAAE,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE;IACxE,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC5B,OAAO,EAAE,SAAS,CAAC,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAClD,SAAS,EAAE,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;CAC1D,GAAG,cAAc,CAIjB"}
package/dist/registry.js CHANGED
@@ -1,15 +1,25 @@
1
1
  const KIND_EDITOR = { richtext: 'richText', media: 'upload' };
2
- const TEXTUAL = new Set(['text', 'textarea', 'email']);
2
+ /** Field types a "text" marker or annotation keeps as their own editor (email stays email). */
3
+ const TEXT_TYPES = new Set(['text', 'textarea', 'email']);
4
+ /** Can this editor take this field? Its declared kinds, and never a list of values in place. */
5
+ export function canEdit(def, field) {
6
+ if (!def)
7
+ return false;
8
+ if (def.accepts && !def.accepts.includes(field.type))
9
+ return false;
10
+ return !(def.mode === 'inline' && 'hasMany' in field && field.hasMany);
11
+ }
3
12
  export function resolveEditor(editors, field, kind) {
4
- if (field.editor && editors[field.editor])
13
+ const ok = (id) => !!id && canEdit(editors[id], field);
14
+ if (ok(field.editor))
5
15
  return field.editor;
6
- // A marker/annotation saying "text" keeps the field's own textual type (email stays email).
7
- if ((kind === 'text' || kind === 'textarea') && TEXTUAL.has(field.type) && editors[field.type])
16
+ if ((kind === 'text' || kind === 'textarea') && TEXT_TYPES.has(field.type) && ok(field.type))
8
17
  return field.type;
9
18
  const byKind = kind ? KIND_EDITOR[kind] : undefined;
10
- if (byKind && editors[byKind] && (byKind !== 'upload' || field.type === 'upload'))
19
+ // A "media" marker means the image picker only for upload fields (an <img alt> can show a text field).
20
+ if (ok(byKind) && (byKind !== 'upload' || field.type === 'upload'))
11
21
  return byKind;
12
- return editors[field.type] ? field.type : null;
22
+ return ok(field.type) ? field.type : null;
13
23
  }
14
24
  /** Merge registries left to right; `null` removes a default. */
15
25
  export function mergeEditors(...regs) {
@@ -26,4 +36,19 @@ export function mergeEditors(...regs) {
26
36
  }
27
37
  return out;
28
38
  }
39
+ /**
40
+ * Define a field editor typed by the field kinds it accepts:
41
+ *
42
+ * defineEditor({
43
+ * mode: 'popover',
44
+ * accepts: ['number'],
45
+ * normalize: (raw) => (typeof raw === 'number' ? raw : null),
46
+ * component: ({ field, value }) => … // field: NumberField, value: number | null
47
+ * })
48
+ */
49
+ export function defineEditor(def) {
50
+ // Widened once, here: resolveEditor only hands it fields whose type is in `accepts`,
51
+ // and FieldHost runs `normalize` before rendering.
52
+ return def;
53
+ }
29
54
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,GAAwC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;AAClG,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;AAEtD,MAAM,UAAU,aAAa,CAC3B,OAAuB,EACvB,KAAkB,EAClB,IAAiB;IAEjB,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAA;IAC9D,4FAA4F;IAC5F,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5F,OAAO,KAAK,CAAC,IAAI,CAAA;IACnB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACnD,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAA;IAChG,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AAChD,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAC1B,GAAG,IAAsE;IAEzE,MAAM,GAAG,GAAmB,EAAE,CAAA;IAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC;YAAE,SAAQ;QAChB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;;gBACZ,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,GAAwC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;AAClG,+FAA+F;AAC/F,MAAM,UAAU,GAAiC,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;AAEvF,gGAAgG;AAChG,MAAM,UAAU,OAAO,CACrB,GAA+B,EAC/B,KAAkB;IAElB,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAClE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAuB,EACvB,KAAkB,EAClB,IAAiB;IAEjB,MAAM,EAAE,GAAG,CAAC,EAAsB,EAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;IACxF,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAA;IACzC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,UAAU,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QAC1F,OAAO,KAAK,CAAC,IAAI,CAAA;IACnB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACnD,uGAAuG;IACvG,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAA;IACjF,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3C,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAC1B,GAAG,IAAsE;IAEzE,MAAM,GAAG,GAAmB,EAAE,CAAA;IAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC;YAAE,SAAQ;QAChB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;;gBACZ,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAyC,GAKpE;IACC,qFAAqF;IACrF,mDAAmD;IACnD,OAAO,GAAgC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Row operations on array and blocks fields, with one set of rules (bounds,
3
+ * `minRows`, `maxRows`) for the toolbar, the keyboard shortcuts, the block
4
+ * picker and "+ Add". Each returns where the selection should go, or null when
5
+ * the operation isn't allowed (nothing changes).
6
+ */
7
+ import { type EditorSession, type RowInfo, type RefKey } from '@payload-onpage/core';
8
+ import type { Selection } from './types.ts';
9
+ /** Insert a row into the list at `listPath`; returns the new row's selection. */
10
+ export declare function insertRow(session: EditorSession, key: RefKey, listPath: string, index: number, row: unknown): Selection;
11
+ export declare function rowOps(session: EditorSession, key: RefKey, info: RowInfo): {
12
+ canMove: (dir: -1 | 1) => boolean;
13
+ canDuplicate: boolean;
14
+ canRemove: boolean;
15
+ move(dir: -1 | 1): Selection | null;
16
+ duplicate(): Selection | null;
17
+ /** Removes the row; true when it did. */
18
+ remove(): boolean;
19
+ };
20
+ //# sourceMappingURL=rowOps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rowOps.d.ts","sourceRoot":"","sources":["../src/rowOps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,MAAM,EACZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAO3C,iFAAiF;AACjF,wBAAgB,SAAS,CACvB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,OAAO,GACX,SAAS,CAGX;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;mBAIjD,CAAC,CAAC,GAAG,CAAC;;;cAOhB,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI;iBAKtB,SAAS,GAAG,IAAI;IAK7B,yCAAyC;cAC/B,OAAO;EAMpB"}
package/dist/rowOps.js ADDED
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Row operations on array and blocks fields, with one set of rules (bounds,
3
+ * `minRows`, `maxRows`) for the toolbar, the keyboard shortcuts, the block
4
+ * picker and "+ Add". Each returns where the selection should go, or null when
5
+ * the operation isn't allowed (nothing changes).
6
+ */
7
+ import { cloneRow, insertItem, moveItem, removeItem, updateArray, } from '@payload-onpage/core';
8
+ const rowAt = (key, listPath, index) => ({
9
+ key,
10
+ path: `${listPath}.${index}`,
11
+ });
12
+ /** Insert a row into the list at `listPath`; returns the new row's selection. */
13
+ export function insertRow(session, key, listPath, index, row) {
14
+ session.apply(key, (d) => updateArray(d, listPath, (a) => insertItem(a, index, row)));
15
+ return rowAt(key, listPath, index);
16
+ }
17
+ export function rowOps(session, key, info) {
18
+ const { listPath, index, length, rowFields, listField } = info;
19
+ const apply = (fn) => session.apply(key, (d) => updateArray(d, listPath, fn));
20
+ const canMove = (dir) => index + dir >= 0 && index + dir < length;
21
+ const canDuplicate = listField.maxRows === undefined || length < listField.maxRows;
22
+ const canRemove = length > (listField.minRows ?? 0);
23
+ return {
24
+ canMove,
25
+ canDuplicate,
26
+ canRemove,
27
+ move(dir) {
28
+ if (!canMove(dir))
29
+ return null;
30
+ apply((a) => moveItem(a, index, index + dir));
31
+ return rowAt(key, listPath, index + dir);
32
+ },
33
+ duplicate() {
34
+ if (!canDuplicate)
35
+ return null;
36
+ apply((a) => insertItem(a, index + 1, cloneRow(a[index], rowFields)));
37
+ return rowAt(key, listPath, index + 1);
38
+ },
39
+ /** Removes the row; true when it did. */
40
+ remove() {
41
+ if (!canRemove)
42
+ return false;
43
+ apply((a) => removeItem(a, index));
44
+ return true;
45
+ },
46
+ };
47
+ }
48
+ //# sourceMappingURL=rowOps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rowOps.js","sourceRoot":"","sources":["../src/rowOps.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,UAAU,EACV,WAAW,GAIZ,MAAM,sBAAsB,CAAA;AAG7B,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,KAAa,EAAa,EAAE,CAAC,CAAC;IAC1E,GAAG;IACH,IAAI,EAAE,GAAG,QAAQ,IAAI,KAAK,EAAE;CAC7B,CAAC,CAAA;AAEF,iFAAiF;AACjF,MAAM,UAAU,SAAS,CACvB,OAAsB,EACtB,GAAW,EACX,QAAgB,EAChB,KAAa,EACb,GAAY;IAEZ,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACrF,OAAO,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,OAAsB,EAAE,GAAW,EAAE,IAAa;IACvE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;IAC9D,MAAM,KAAK,GAAG,CAAC,EAAkC,EAAE,EAAE,CACnD,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;IACzD,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,MAAM,CAAA;IACzE,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,CAAC,OAAO,CAAA;IAClF,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA;IACnD,OAAO;QACL,OAAO;QACP,YAAY;QACZ,SAAS;QACT,IAAI,CAAC,GAAW;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC9B,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAA;YAC7C,OAAO,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,GAAG,GAAG,CAAC,CAAA;QAC1C,CAAC;QACD,SAAS;YACP,IAAI,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAA;YAC9B,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;YACrE,OAAO,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QACxC,CAAC;QACD,yCAAyC;QACzC,MAAM;YACJ,IAAI,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAA;YAC5B,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;YAClC,OAAO,IAAI,CAAA;QACb,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,2 +1,4 @@
1
1
  export declare function sanitizeHtml(html: string): string;
2
+ /** Text made safe to put in HTML. */
3
+ export declare const escapeHtml: (s: string) => string;
2
4
  //# sourceMappingURL=sanitize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AA2BA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBjD"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AA2BA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBjD;AAED,qCAAqC;AACrC,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,KAAG,MAC0B,CAAA"}
package/dist/sanitize.js CHANGED
@@ -46,4 +46,7 @@ export function sanitizeHtml(html) {
46
46
  walk(tpl.content);
47
47
  return tpl.innerHTML;
48
48
  }
49
+ /** Text made safe to put in HTML. */
50
+ export const escapeHtml = (s) => s.replace(/[&<>"]/g, (c) => ESCAPES[c]);
51
+ const ESCAPES = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;' };
49
52
  //# sourceMappingURL=sanitize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC;IACnB,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,KAAK;IACL,MAAM;CACP,CAAC,CAAA;AACF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAEpG,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IAC9C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAA;IACpB,MAAM,IAAI,GAAG,CAAC,IAAgB,EAAE,EAAE;QAChC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACvC,EAAE,CAAC,MAAM,EAAE,CAAA;gBACX,SAAQ;YACV,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;gBACpC,IACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACrB,IAAI,KAAK,OAAO;oBAChB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACjD,CAAC;oBACD,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAA;QACV,CAAC;IACH,CAAC,CAAA;IACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACjB,OAAO,GAAG,CAAC,SAAS,CAAA;AACtB,CAAC"}
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC;IACnB,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,KAAK;IACL,MAAM;CACP,CAAC,CAAA;AACF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAEpG,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IAC9C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAA;IACpB,MAAM,IAAI,GAAG,CAAC,IAAgB,EAAE,EAAE;QAChC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACvC,EAAE,CAAC,MAAM,EAAE,CAAA;gBACX,SAAQ;YACV,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;gBACpC,IACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;oBACrB,IAAI,KAAK,OAAO;oBAChB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACjD,CAAC;oBACD,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,CAAA;QACV,CAAC;IACH,CAAC,CAAA;IACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACjB,OAAO,GAAG,CAAC,SAAS,CAAA;AACtB,CAAC;AAED,qCAAqC;AACrC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CAC9C,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAyB,CAAC,CAAC,CAAA;AAEjE,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAW,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Which fields of a row appear in its settings panel: values that aren't edited
3
+ * on the page itself (layout selects, toggles, numbers, links, images that
4
+ * aren't shown…). Fields shown on the page are edited there instead.
5
+ */
6
+ import type { SchemaField, RefKey } from '@payload-onpage/core';
7
+ import type { TargetIndex } from './types.ts';
8
+ export declare function settable(field: SchemaField, path: string, key: RefKey, targets: TargetIndex): boolean;
9
+ export declare const hasSettings: (fields: SchemaField[], path: string, key: RefKey, targets: TargetIndex) => boolean;
10
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAgB7C,wBAAgB,QAAQ,CACtB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,WAAW,GACnB,OAAO,CAcT;AAED,eAAO,MAAM,WAAW,GACtB,QAAQ,WAAW,EAAE,EACrB,MAAM,MAAM,EACZ,KAAK,MAAM,EACX,SAAS,WAAW,KACnB,OAA8D,CAAA"}
@@ -0,0 +1,30 @@
1
+ /** Row bookkeeping, never a setting. */
2
+ const SKIP = new Set(['id', 'blockType', 'blockName']);
3
+ /** Types shown in the panel when the page doesn't show them (choices and toggles always are). */
4
+ const PANEL_FIELD_TYPES = new Set([
5
+ 'text',
6
+ 'textarea',
7
+ 'email',
8
+ 'number',
9
+ 'date',
10
+ 'relationship',
11
+ 'upload',
12
+ ]);
13
+ export function settable(field, path, key, targets) {
14
+ if (SKIP.has(field.name))
15
+ return false;
16
+ const full = `${path}.${field.name}`;
17
+ switch (field.type) {
18
+ case 'select':
19
+ case 'radio':
20
+ case 'checkbox':
21
+ return true;
22
+ case 'group':
23
+ return field.fields.some((f) => settable(f, full, key, targets));
24
+ default:
25
+ // Shown on the page? Edit it there.
26
+ return PANEL_FIELD_TYPES.has(field.type) && !targets.find(key, full);
27
+ }
28
+ }
29
+ export const hasSettings = (fields, path, key, targets) => fields.some((f) => settable(f, path, key, targets));
30
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAQA,wCAAwC;AACxC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAEtD,iGAAiG;AACjG,MAAM,iBAAiB,GAAiC,IAAI,GAAG,CAAC;IAC9D,MAAM;IACN,UAAU;IACV,OAAO;IACP,QAAQ;IACR,MAAM;IACN,cAAc;IACd,QAAQ;CACT,CAAC,CAAA;AAEF,MAAM,UAAU,QAAQ,CACtB,KAAkB,EAClB,IAAY,EACZ,GAAW,EACX,OAAoB;IAEpB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACtC,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAA;IACpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,UAAU;YACb,OAAO,IAAI,CAAA;QACb,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;QAClE;YACE,oCAAoC;YACpC,OAAO,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACxE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,MAAqB,EACrB,IAAY,EACZ,GAAW,EACX,OAAoB,EACX,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA"}
package/dist/styles.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- /**
2
- * The editor's own styles, injected once. Everything is prefixed `po-` and set
3
- * explicitly, so the host site's CSS (and its absence) doesn't matter.
4
- */
5
1
  export declare const PO_Z = 2147483000;
6
2
  export declare const PO_CSS = "\n.po-layer{position:fixed;inset:0;pointer-events:none;z-index:2147483000;font:13px/1.35 system-ui,-apple-system,\"Segoe UI\",sans-serif;color:#0f172a}\n.po-layer *{box-sizing:border-box}\n.po-outline{position:fixed;border:2px solid #4f7cff;border-radius:4px;pointer-events:none;transition:all .06s ease-out}\n.po-outline.is-block{border-style:dashed;border-color:#4f7cff99}\n.po-outline.is-item{border-color:#22a06b}\n.po-chip{position:fixed;transform:translateY(-100%);background:#3b63e0;color:#fff;font-size:11px;font-weight:600;padding:2px 6px;border-radius:4px 4px 0 0;white-space:nowrap;pointer-events:none}\n.po-chip.is-item{background:#167a45}\n.po-bar{position:fixed;display:flex;gap:2px;padding:3px;background:#0f172a;border-radius:8px;box-shadow:0 6px 24px #0f172a40;pointer-events:auto}\n.po-bar.is-item{background:#14532d}\n.po-btn{all:unset;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:28px;height:28px;padding:0 8px;border-radius:6px;color:#fff;font:600 12px/1 system-ui,-apple-system,sans-serif;cursor:pointer;white-space:nowrap}\n.po-btn:hover{background:#ffffff1f}\n.po-btn:focus-visible{outline:2px solid #93c5fd;outline-offset:1px}\n.po-btn[disabled]{opacity:.35;cursor:default;background:none}\n.po-btn.is-danger:hover{background:#ef444455}\n.po-add{position:fixed;transform:translate(-50%,-50%);pointer-events:auto}\n.po-add .po-btn{background:#3b63e0;box-shadow:0 2px 10px #4f7cff66;height:24px;font-size:11px}\n.po-add .po-btn:hover{background:#2f5bd9}\n.po-add.is-item .po-btn{background:#167a45;box-shadow:0 2px 10px #167a4555}\n.po-panel{position:fixed;width:320px;max-height:min(70vh,560px);overflow:auto;background:#fff;color:#0f172a;border-radius:12px;box-shadow:0 20px 60px #0f172a40,0 0 0 1px #0f172a14;pointer-events:auto;padding:14px}\n.po-panel .po-h3{margin:0 0 10px;font:700 13px/1.2 system-ui,sans-serif}\n.po-panel .po-h4{margin:14px 0 6px;font:600 11px/1.2 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.06em;color:#64748b}\n.po-row{display:flex;flex-direction:column;gap:4px;margin:0 0 10px}\n.po-row label{font-weight:600;font-size:12px}\n.po-row small{color:#64748b;font-size:11px}\n.po-input,.po-select{all:unset;box-sizing:border-box;width:100%;height:32px;padding:0 10px;border:1px solid #cbd5e1;border-radius:8px;background:#fff;font:13px system-ui,sans-serif;color:#0f172a}\n.po-select{appearance:auto;-webkit-appearance:auto}\n.po-input:focus,.po-select:focus{border-color:#4f7cff;box-shadow:0 0 0 3px #4f7cff33}\n.po-check{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600}\n.po-seg{display:flex;flex-wrap:wrap;gap:4px}\n.po-seg button{all:unset;padding:5px 9px;border:1px solid #cbd5e1;border-radius:7px;font:12px system-ui,sans-serif;cursor:pointer;background:#fff}\n.po-seg button[aria-pressed=\"true\"]{background:#0f172a;color:#fff;border-color:#0f172a}\n.po-modal-bg{position:fixed;inset:0;background:#0f172a66;pointer-events:auto;display:flex;align-items:center;justify-content:center;padding:24px}\n.po-modal{width:min(880px,100%);max-height:85vh;display:flex;flex-direction:column;background:#fff;border-radius:14px;box-shadow:0 30px 80px #0f172a55;overflow:hidden}\n.po-modal header{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid #e2e8f0}\n.po-modal header .po-h3{margin:0;flex:1;font:700 14px system-ui,sans-serif}\n.po-modal .po-body{padding:14px 16px;overflow:auto}\n.po-modal .po-btn{color:#0f172a}\n.po-modal .po-btn:hover{background:#f1f5f9}\n.po-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}\n.po-tile{all:unset;display:flex;flex-direction:column;gap:6px;cursor:pointer;border-radius:10px;padding:6px;border:2px solid transparent}\n.po-tile:hover,.po-tile:focus-visible{border-color:#4f7cff;background:#f8fafc}\n.po-tile img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:6px;background:#f1f5f9}\n.po-tile span{font-size:11px;color:#475569;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.po-blocks{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}\n.po-blocks button{all:unset;padding:14px;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;font:600 13px system-ui,sans-serif}\n.po-blocks button:hover,.po-blocks button:focus-visible{border-color:#4f7cff;background:#f5f8ff}\n.po-dock{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);display:flex;align-items:center;gap:4px;padding:6px;background:#0f172a;color:#fff;border-radius:12px;box-shadow:0 12px 40px #0f172a55;pointer-events:auto;max-width:calc(100vw - 24px);flex-wrap:wrap}\n.po-dock .po-status{padding:0 10px;font-size:12px;opacity:.85;white-space:nowrap}\n.po-dock .po-status.is-bad{color:#fca5a5;opacity:1}\n.po-dock .po-sep{width:1px;height:20px;background:#ffffff26;margin:0 4px}\n.po-dock .po-primary{background:#3b63e0}\n.po-dock .po-primary:hover{background:#2f5bd9}\n.po-chip-locale{padding:2px 7px;border-radius:999px;background:#ffffff1f;font-size:11px;font-weight:700;text-transform:uppercase}\n.po-notice{position:fixed;left:50%;bottom:72px;transform:translateX(-50%);max-width:min(560px,calc(100vw - 24px));padding:8px 12px;border-radius:10px;background:#fffbeb;color:#78350f;border:1px solid #fcd34d;font-size:12px;pointer-events:auto}\n.po-doc-layer{position:absolute;top:0;left:0;width:0;height:0;overflow:visible;z-index:2147483000;pointer-events:none;font:13px/1.35 system-ui,-apple-system,\"Segoe UI\",sans-serif}\n.po-inline{position:absolute;pointer-events:auto;outline:2px solid #4f7cff;outline-offset:2px;border-radius:2px;background:transparent;white-space:pre-wrap;word-break:break-word;caret-color:currentColor;cursor:text}\n.po-inline:focus{outline-color:#4f7cff}\n.po-rt{position:absolute;pointer-events:auto}\n.po-rt-surface{outline:2px solid #4f7cff;outline-offset:6px;border-radius:2px;min-height:1.5em}\n.po-rt-surface:focus{outline:2px solid #4f7cff}\n.po-rt-toolbar{position:absolute;left:0;top:-48px;display:flex;gap:2px;padding:3px;background:#0f172a;border-radius:8px;box-shadow:0 6px 24px #0f172a40}\n.po-rt-toolbar .po-btn[aria-pressed=\"true\"]{background:#ffffff2e}\n.po-pop{position:fixed;min-width:220px;max-width:340px;background:#fff;color:#0f172a;border-radius:10px;box-shadow:0 14px 40px #0f172a40,0 0 0 1px #0f172a14;pointer-events:auto;padding:10px}\n.po-pop .po-row{margin-bottom:8px}\n.po-pop-list{display:flex;flex-direction:column;gap:2px;max-height:260px;overflow:auto}\n.po-pop-list button{all:unset;padding:7px 9px;border-radius:7px;cursor:pointer;font:13px system-ui,sans-serif}\n.po-pop-list button:hover,.po-pop-list button:focus-visible,.po-pop-list button[aria-selected=\"true\"]{background:#eef2ff}\n.po-ghost{position:absolute;pointer-events:none;white-space:pre-wrap;word-break:break-word}\n.po-docs{font-size:11px;padding:2px 7px;border-radius:999px;background:#ffffff1f}\n.po-frame-bg{position:fixed;inset:0;background:#0f172acc;pointer-events:auto;display:flex;flex-direction:column;align-items:center;padding:56px 16px 16px}\n.po-frame-bg iframe{background:#fff;border:0;border-radius:12px;box-shadow:0 30px 80px #0008;height:100%;max-width:100%}\n.po-badge{padding:2px 8px;border-radius:999px;background:#f59e0b;color:#111;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em}\n.po-b{font-weight:700}.po-i{font-style:italic}.po-u{text-decoration:underline}\n.po-opaque{display:inline-flex;align-items:center;gap:6px;margin:6px 0;padding:6px 10px;border:1px dashed #94a3b8;border-radius:8px;background:#f8fafc;color:#475569;font:12px system-ui,sans-serif;user-select:none}\nhtml[data-onpage-editing] [data-onpage-field]{cursor:pointer}\n[data-onpage-hidden=\"true\"]{visibility:hidden!important}\n.po-preview{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);display:flex;align-items:center;gap:6px;padding:6px;background:#0f172a;color:#fff;border-radius:12px;box-shadow:0 12px 40px #0f172a55;pointer-events:auto;max-width:calc(100vw - 24px);flex-wrap:wrap}\n.po-preview .po-status{padding:0 8px;font-size:12px;opacity:.85}\n.po-rel-item{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:6px;background:#f1f5f9;font-size:12px;margin:0 0 4px}\n.po-rel-item button{all:unset;cursor:pointer;margin-left:auto;padding:0 4px;color:#64748b}\n\n.po-dialog-head{display:flex;align-items:center;gap:8px;margin:0 0 10px}\n.po-modal .po-dialog-head{margin:0;padding:14px 16px;border-bottom:1px solid #e2e8f0}\n.po-dialog-head .po-h3{flex:1;margin:0;font:700 14px/1.2 system-ui,sans-serif}\n.po-close{color:#0f172a;min-width:24px;height:24px}\n.po-close:hover{background:#f1f5f9}\n.po-bar-label{cursor:default;opacity:.8}\n.po-muted{color:#64748b;margin:6px 0}\n.po-error{color:#b91c1c;margin:6px 0}\n.po-center{text-align:center;margin-top:12px}\n.po-actions{display:flex;gap:6px}\n.po-inline-row{flex-direction:row;align-items:center}\n.po-search{width:240px}\n.po-picker{cursor:pointer;display:flex;align-items:center}\n.po-group{border:0;margin:0;padding:0}\n.po-primary,.po-pop .po-primary,.po-panel .po-primary{background:#3b63e0;color:#fff}\n.po-primary:hover{background:#2f5bd9}\n.po-pop .po-btn,.po-panel .po-btn{color:#0f172a}\n.po-pop .po-btn.po-primary,.po-panel .po-btn.po-primary{color:#fff}\n.po-frame-close{all:unset;position:absolute;inset:0;cursor:pointer}\n.po-frame-bg iframe{position:relative}\n.po-input[aria-invalid=\"true\"]{border-color:#dc2626}\nhtml[data-onpage-editing] [data-onpage-focusable]:focus-visible{outline:2px solid #4f7cff;outline-offset:2px}\n@media (prefers-reduced-motion:reduce){.po-outline{transition:none}}\n";
7
3
  export declare function injectStyles(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,IAAI,aAAa,CAAA;AAE9B,eAAO,MAAM,MAAM,s5SAyGlB,CAAA;AAGD,wBAAgB,YAAY,SAO3B"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,IAAI,aAAa,CAAA;AAE9B,eAAO,MAAM,MAAM,s5SAyGlB,CAAA;AAGD,wBAAgB,YAAY,SAO3B"}
package/dist/styles.js CHANGED
@@ -2,6 +2,7 @@
2
2
  * The editor's own styles, injected once. Everything is prefixed `po-` and set
3
3
  * explicitly, so the host site's CSS (and its absence) doesn't matter.
4
4
  */
5
+ import { DOM_ATTR } from "./dom.js";
5
6
  export const PO_Z = 2147483000;
6
7
  export const PO_CSS = `
7
8
  .po-layer{position:fixed;inset:0;pointer-events:none;z-index:${PO_Z};font:13px/1.35 system-ui,-apple-system,"Segoe UI",sans-serif;color:#0f172a}
@@ -115,7 +116,7 @@ export function injectStyles() {
115
116
  return;
116
117
  injected = true;
117
118
  const el = document.createElement('style');
118
- el.setAttribute('data-onpage-styles', '');
119
+ el.setAttribute(DOM_ATTR.styles, '');
119
120
  el.textContent = PO_CSS;
120
121
  document.head.appendChild(el);
121
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAA;AAE9B,MAAM,CAAC,MAAM,MAAM,GAAG;+DACyC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yFAsDsB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD5F,CAAA;AAED,IAAI,QAAQ,GAAG,KAAK,CAAA;AACpB,MAAM,UAAU,YAAY;IAC1B,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAM;IACvD,QAAQ,GAAG,IAAI,CAAA;IACf,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC1C,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA;IACzC,EAAE,CAAC,WAAW,GAAG,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;AAC/B,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../src/styles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAA;AAE9B,MAAM,CAAC,MAAM,MAAM,GAAG;+DACyC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yFAsDsB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD5F,CAAA;AAED,IAAI,QAAQ,GAAG,KAAK,CAAA;AACpB,MAAM,UAAU,YAAY;IAC1B,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAM;IACvD,QAAQ,GAAG,IAAI,CAAA;IACf,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC1C,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACpC,EAAE,CAAC,WAAW,GAAG,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;AAC/B,CAAC"}
package/dist/targets.d.ts CHANGED
@@ -11,7 +11,7 @@ export declare const isRowTarget: (t: Target) => boolean;
11
11
  export declare function buildIndex(all: Target[]): TargetIndex;
12
12
  /** The innermost field target and all row targets (innermost first) at or above `el`. */
13
13
  export declare function targetsAt(index: TargetIndex, el: Element | null): {
14
- field?: Target;
14
+ field?: Target | undefined;
15
15
  rows: Target[];
16
16
  };
17
17
  export declare function useTargets(locator: Locator, root: () => ParentNode | null): TargetIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,OAAO,EAAa,KAAK,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,sBAAsB,CAAA;AAI5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAG7C,eAAO,MAAM,aAAa,GAAI,GAAG,MAAM,KAAG,OAAkC,CAAA;AAC5E,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,KAAG,OAA4B,CAAA;AAEpE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,WAAW,CAoBrD;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,OAAO,GAAG,IAAI,GACjB;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAUpC;AAYD,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,GAAG,IAAI,GAAG,WAAW,CAkCvF"}
1
+ {"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,OAAO,EAAa,KAAK,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,sBAAsB,CAAA;AAI5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAG7C,eAAO,MAAM,aAAa,GAAI,GAAG,MAAM,KAAG,OAAkC,CAAA;AAC5E,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,KAAG,OAA4B,CAAA;AAEpE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,WAAW,CAoBrD;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CACvB,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,OAAO,GAAG,IAAI,GACjB;IAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAUhD;AAYD,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,GAAG,IAAI,GAAG,WAAW,CAkCvF"}