@next-buildr/editor 2.0.0 → 3.0.0-rc.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 (645) hide show
  1. package/README.md +7 -0
  2. package/UPGRADING.md +322 -0
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/app/builder-editor.test.js +223 -18
  5. package/dist/app/config.d.ts +27 -4
  6. package/dist/app/config.d.ts.map +1 -1
  7. package/dist/app/config.js +4 -3
  8. package/dist/app/contracts.d.ts +40 -0
  9. package/dist/app/contracts.d.ts.map +1 -0
  10. package/dist/app/contracts.js +4 -0
  11. package/dist/app/editor-app.d.ts.map +1 -1
  12. package/dist/app/editor-app.js +316 -24
  13. package/dist/app/editor-app.test.js +144 -6
  14. package/dist/app/layout.d.ts +11 -2
  15. package/dist/app/layout.d.ts.map +1 -1
  16. package/dist/app/layout.js +170 -9
  17. package/dist/app/manifest.d.ts +7 -2
  18. package/dist/app/manifest.d.ts.map +1 -1
  19. package/dist/app/manifest.js +16 -4
  20. package/dist/app/shell-panels.d.ts +15 -0
  21. package/dist/app/shell-panels.d.ts.map +1 -1
  22. package/dist/app/small-screen.test.js +2 -2
  23. package/dist/app/stage-slots.d.ts +9 -0
  24. package/dist/app/stage-slots.d.ts.map +1 -0
  25. package/dist/app/stage-slots.js +10 -0
  26. package/dist/app/status-info.d.ts +2 -3
  27. package/dist/app/status-info.d.ts.map +1 -1
  28. package/dist/app/status-info.js +49 -16
  29. package/dist/canvas-host/canvas-frame.d.ts +13 -1
  30. package/dist/canvas-host/canvas-frame.d.ts.map +1 -1
  31. package/dist/canvas-host/canvas-frame.js +96 -8
  32. package/dist/canvas-host/canvas-frame.test.js +156 -3
  33. package/dist/canvas-host/host.d.ts +6 -0
  34. package/dist/canvas-host/host.d.ts.map +1 -1
  35. package/dist/canvas-host/host.js +116 -4
  36. package/dist/canvas-host/host.test.js +195 -6
  37. package/dist/clipboard/clipboard.d.ts +1 -1
  38. package/dist/clipboard/clipboard.d.ts.map +1 -1
  39. package/dist/clipboard/clipboard.js +5 -0
  40. package/dist/clipboard/clipboard.test.js +21 -1
  41. package/dist/clipboard/format.d.ts +3 -1
  42. package/dist/clipboard/format.d.ts.map +1 -1
  43. package/dist/clipboard/react.d.ts +1 -1
  44. package/dist/clipboard/react.d.ts.map +1 -1
  45. package/dist/clipboard/react.js +49 -3
  46. package/dist/dialogs/external-source.d.ts +15 -0
  47. package/dist/dialogs/external-source.d.ts.map +1 -0
  48. package/dist/dialogs/external-source.js +18 -0
  49. package/dist/dialogs/index.d.ts +4 -0
  50. package/dist/dialogs/index.d.ts.map +1 -1
  51. package/dist/dialogs/index.js +2 -0
  52. package/dist/dialogs/media-picker/index.d.ts +2 -2
  53. package/dist/dialogs/media-picker/index.d.ts.map +1 -1
  54. package/dist/dialogs/media-picker/index.js +1 -1
  55. package/dist/dialogs/media-picker/media-picker.d.ts +5 -0
  56. package/dist/dialogs/media-picker/media-picker.d.ts.map +1 -1
  57. package/dist/dialogs/media-picker/media-picker.js +67 -5
  58. package/dist/dialogs/media-picker/media-picker.test.js +72 -1
  59. package/dist/dialogs/media-picker/media-ref.d.ts +15 -0
  60. package/dist/dialogs/media-picker/media-ref.d.ts.map +1 -1
  61. package/dist/dialogs/media-picker/media-ref.js +29 -0
  62. package/dist/dialogs/remove-confirm.d.ts +14 -0
  63. package/dist/dialogs/remove-confirm.d.ts.map +1 -0
  64. package/dist/dialogs/remove-confirm.js +42 -0
  65. package/dist/dialogs/remove-confirm.test.d.ts +2 -0
  66. package/dist/dialogs/remove-confirm.test.d.ts.map +1 -0
  67. package/dist/dialogs/remove-confirm.test.js +118 -0
  68. package/dist/dnd/dnd-react.test.js +11 -2
  69. package/dist/dnd/dnd.test.js +23 -0
  70. package/dist/dnd/engine.d.ts +4 -2
  71. package/dist/dnd/engine.d.ts.map +1 -1
  72. package/dist/dnd/engine.js +6 -0
  73. package/dist/dnd/move-to-dialog.d.ts +4 -3
  74. package/dist/dnd/move-to-dialog.d.ts.map +1 -1
  75. package/dist/dnd/move-to-dialog.js +67 -10
  76. package/dist/dnd/react.d.ts.map +1 -1
  77. package/dist/dnd/react.js +5 -0
  78. package/dist/i18n/diagnostics.d.ts +22 -0
  79. package/dist/i18n/diagnostics.d.ts.map +1 -0
  80. package/dist/i18n/diagnostics.js +153 -0
  81. package/dist/i18n/diagnostics.test.d.ts +2 -0
  82. package/dist/i18n/diagnostics.test.d.ts.map +1 -0
  83. package/dist/i18n/diagnostics.test.js +74 -0
  84. package/dist/i18n/label-catalog.d.ts +20 -0
  85. package/dist/i18n/label-catalog.d.ts.map +1 -0
  86. package/dist/i18n/label-catalog.js +1 -0
  87. package/dist/i18n/locale-name.d.ts +7 -0
  88. package/dist/i18n/locale-name.d.ts.map +1 -0
  89. package/dist/i18n/locale-name.js +31 -0
  90. package/dist/i18n/localize-manifest.d.ts +11 -0
  91. package/dist/i18n/localize-manifest.d.ts.map +1 -0
  92. package/dist/i18n/localize-manifest.js +78 -0
  93. package/dist/i18n/localize-manifest.test.d.ts +2 -0
  94. package/dist/i18n/localize-manifest.test.d.ts.map +1 -0
  95. package/dist/i18n/localize-manifest.test.js +71 -0
  96. package/dist/messages/catalogs.test.d.ts +2 -0
  97. package/dist/messages/catalogs.test.d.ts.map +1 -0
  98. package/dist/messages/catalogs.test.js +80 -0
  99. package/dist/messages/en/app.d.ts +8 -0
  100. package/dist/messages/en/app.d.ts.map +1 -0
  101. package/dist/messages/en/app.js +7 -0
  102. package/dist/messages/en/blocks.d.ts +54 -0
  103. package/dist/messages/en/blocks.d.ts.map +1 -0
  104. package/dist/messages/en/blocks.js +53 -0
  105. package/dist/messages/en/canvas.d.ts +31 -0
  106. package/dist/messages/en/canvas.d.ts.map +1 -0
  107. package/dist/messages/en/canvas.js +30 -0
  108. package/dist/messages/en/clipboard.d.ts +13 -0
  109. package/dist/messages/en/clipboard.d.ts.map +1 -0
  110. package/dist/messages/en/clipboard.js +12 -0
  111. package/dist/messages/en/colorPicker.d.ts +20 -0
  112. package/dist/messages/en/colorPicker.d.ts.map +1 -0
  113. package/dist/messages/en/colorPicker.js +19 -0
  114. package/dist/messages/en/diagnostics.d.ts +40 -0
  115. package/dist/messages/en/diagnostics.d.ts.map +1 -0
  116. package/dist/messages/en/diagnostics.js +39 -0
  117. package/dist/messages/en/dialogs/common.d.ts +6 -0
  118. package/dist/messages/en/dialogs/common.d.ts.map +1 -0
  119. package/dist/messages/en/dialogs/common.js +5 -0
  120. package/dist/messages/en/dialogs/conflict.d.ts +15 -0
  121. package/dist/messages/en/dialogs/conflict.d.ts.map +1 -0
  122. package/dist/messages/en/dialogs/conflict.js +14 -0
  123. package/dist/messages/en/dialogs/delete.d.ts +19 -0
  124. package/dist/messages/en/dialogs/delete.d.ts.map +1 -0
  125. package/dist/messages/en/dialogs/delete.js +18 -0
  126. package/dist/messages/en/dialogs/pageOptions.d.ts +9 -0
  127. package/dist/messages/en/dialogs/pageOptions.d.ts.map +1 -0
  128. package/dist/messages/en/dialogs/pageOptions.js +8 -0
  129. package/dist/messages/en/dialogs/publish.d.ts +15 -0
  130. package/dist/messages/en/dialogs/publish.d.ts.map +1 -0
  131. package/dist/messages/en/dialogs/publish.js +14 -0
  132. package/dist/messages/en/dnd.d.ts +19 -0
  133. package/dist/messages/en/dnd.d.ts.map +1 -0
  134. package/dist/messages/en/dnd.js +18 -0
  135. package/dist/messages/en/editor.d.ts +30 -0
  136. package/dist/messages/en/editor.d.ts.map +1 -0
  137. package/dist/messages/en/editor.js +29 -0
  138. package/dist/messages/en/external.d.ts +6 -0
  139. package/dist/messages/en/external.d.ts.map +1 -0
  140. package/dist/messages/en/external.js +5 -0
  141. package/dist/messages/en/insert.d.ts +25 -0
  142. package/dist/messages/en/insert.d.ts.map +1 -0
  143. package/dist/messages/en/insert.js +24 -0
  144. package/dist/messages/en/inspector.d.ts +176 -0
  145. package/dist/messages/en/inspector.d.ts.map +1 -0
  146. package/dist/messages/en/inspector.js +175 -0
  147. package/dist/messages/en/issues.d.ts +36 -0
  148. package/dist/messages/en/issues.d.ts.map +1 -0
  149. package/dist/messages/en/issues.js +35 -0
  150. package/dist/messages/en/layers.d.ts +29 -0
  151. package/dist/messages/en/layers.d.ts.map +1 -0
  152. package/dist/messages/en/layers.js +28 -0
  153. package/dist/messages/en/leftPanel.d.ts +15 -0
  154. package/dist/messages/en/leftPanel.d.ts.map +1 -0
  155. package/dist/messages/en/leftPanel.js +14 -0
  156. package/dist/messages/en/list.d.ts +9 -0
  157. package/dist/messages/en/list.d.ts.map +1 -0
  158. package/dist/messages/en/list.js +8 -0
  159. package/dist/messages/en/locale.d.ts +4 -0
  160. package/dist/messages/en/locale.d.ts.map +1 -0
  161. package/dist/messages/en/locale.js +3 -0
  162. package/dist/messages/en/media.d.ts +51 -0
  163. package/dist/messages/en/media.d.ts.map +1 -0
  164. package/dist/messages/en/media.js +50 -0
  165. package/dist/messages/en/menu.d.ts +12 -0
  166. package/dist/messages/en/menu.d.ts.map +1 -0
  167. package/dist/messages/en/menu.js +11 -0
  168. package/dist/messages/en/patterns.d.ts +24 -0
  169. package/dist/messages/en/patterns.d.ts.map +1 -0
  170. package/dist/messages/en/patterns.js +23 -0
  171. package/dist/messages/en/preview.d.ts +8 -0
  172. package/dist/messages/en/preview.d.ts.map +1 -0
  173. package/dist/messages/en/preview.js +7 -0
  174. package/dist/messages/en/publish.d.ts +19 -0
  175. package/dist/messages/en/publish.d.ts.map +1 -0
  176. package/dist/messages/en/publish.js +18 -0
  177. package/dist/messages/en/richText.d.ts +21 -0
  178. package/dist/messages/en/richText.d.ts.map +1 -0
  179. package/dist/messages/en/richText.js +20 -0
  180. package/dist/messages/en/sample.d.ts +5 -0
  181. package/dist/messages/en/sample.d.ts.map +1 -0
  182. package/dist/messages/en/sample.js +4 -0
  183. package/dist/messages/en/save.d.ts +15 -0
  184. package/dist/messages/en/save.d.ts.map +1 -0
  185. package/dist/messages/en/save.js +14 -0
  186. package/dist/messages/en/shortcut.d.ts +36 -0
  187. package/dist/messages/en/shortcut.d.ts.map +1 -0
  188. package/dist/messages/en/shortcut.js +35 -0
  189. package/dist/messages/en/statusBar.d.ts +14 -0
  190. package/dist/messages/en/statusBar.d.ts.map +1 -0
  191. package/dist/messages/en/statusBar.js +13 -0
  192. package/dist/messages/en/structure.d.ts +28 -0
  193. package/dist/messages/en/structure.d.ts.map +1 -0
  194. package/dist/messages/en/structure.js +27 -0
  195. package/dist/messages/en/style.d.ts +168 -0
  196. package/dist/messages/en/style.d.ts.map +1 -0
  197. package/dist/messages/en/style.js +167 -0
  198. package/dist/messages/en/styleField.d.ts +301 -0
  199. package/dist/messages/en/styleField.d.ts.map +1 -0
  200. package/dist/messages/en/styleField.js +300 -0
  201. package/dist/messages/en/styleOption.d.ts +128 -0
  202. package/dist/messages/en/styleOption.d.ts.map +1 -0
  203. package/dist/messages/en/styleOption.js +127 -0
  204. package/dist/messages/en/styleSection.d.ts +16 -0
  205. package/dist/messages/en/styleSection.d.ts.map +1 -0
  206. package/dist/messages/en/styleSection.js +15 -0
  207. package/dist/messages/en/toast.d.ts +22 -0
  208. package/dist/messages/en/toast.d.ts.map +1 -0
  209. package/dist/messages/en/toast.js +21 -0
  210. package/dist/messages/en/toolbar.d.ts +47 -0
  211. package/dist/messages/en/toolbar.d.ts.map +1 -0
  212. package/dist/messages/en/toolbar.js +46 -0
  213. package/dist/messages/en/translation.d.ts +7 -0
  214. package/dist/messages/en/translation.d.ts.map +1 -0
  215. package/dist/messages/en/translation.js +6 -0
  216. package/dist/messages/en/ui.d.ts +4 -0
  217. package/dist/messages/en/ui.d.ts.map +1 -0
  218. package/dist/messages/en/ui.js +3 -0
  219. package/dist/messages/en/values.d.ts +45 -0
  220. package/dist/messages/en/values.d.ts.map +1 -0
  221. package/dist/messages/en/values.js +44 -0
  222. package/dist/messages/en.d.ts +1298 -202
  223. package/dist/messages/en.d.ts.map +1 -1
  224. package/dist/messages/en.js +82 -330
  225. package/dist/messages/index.d.ts +12 -0
  226. package/dist/messages/index.d.ts.map +1 -1
  227. package/dist/messages/index.js +28 -1
  228. package/dist/messages/pl/app.d.ts +8 -0
  229. package/dist/messages/pl/app.d.ts.map +1 -0
  230. package/dist/messages/pl/app.js +7 -0
  231. package/dist/messages/pl/blocks.d.ts +54 -0
  232. package/dist/messages/pl/blocks.d.ts.map +1 -0
  233. package/dist/messages/pl/blocks.js +53 -0
  234. package/dist/messages/pl/canvas.d.ts +31 -0
  235. package/dist/messages/pl/canvas.d.ts.map +1 -0
  236. package/dist/messages/pl/canvas.js +30 -0
  237. package/dist/messages/pl/clipboard.d.ts +13 -0
  238. package/dist/messages/pl/clipboard.d.ts.map +1 -0
  239. package/dist/messages/pl/clipboard.js +12 -0
  240. package/dist/messages/pl/colorPicker.d.ts +20 -0
  241. package/dist/messages/pl/colorPicker.d.ts.map +1 -0
  242. package/dist/messages/pl/colorPicker.js +19 -0
  243. package/dist/messages/pl/componentLabels.d.ts +9 -0
  244. package/dist/messages/pl/componentLabels.d.ts.map +1 -0
  245. package/dist/messages/pl/componentLabels.js +308 -0
  246. package/dist/messages/pl/diagnostics.d.ts +39 -0
  247. package/dist/messages/pl/diagnostics.d.ts.map +1 -0
  248. package/dist/messages/pl/diagnostics.js +38 -0
  249. package/dist/messages/pl/dialogs/common.d.ts +6 -0
  250. package/dist/messages/pl/dialogs/common.d.ts.map +1 -0
  251. package/dist/messages/pl/dialogs/common.js +5 -0
  252. package/dist/messages/pl/dialogs/conflict.d.ts +15 -0
  253. package/dist/messages/pl/dialogs/conflict.d.ts.map +1 -0
  254. package/dist/messages/pl/dialogs/conflict.js +14 -0
  255. package/dist/messages/pl/dialogs/delete.d.ts +19 -0
  256. package/dist/messages/pl/dialogs/delete.d.ts.map +1 -0
  257. package/dist/messages/pl/dialogs/delete.js +18 -0
  258. package/dist/messages/pl/dialogs/pageOptions.d.ts +9 -0
  259. package/dist/messages/pl/dialogs/pageOptions.d.ts.map +1 -0
  260. package/dist/messages/pl/dialogs/pageOptions.js +8 -0
  261. package/dist/messages/pl/dialogs/publish.d.ts +15 -0
  262. package/dist/messages/pl/dialogs/publish.d.ts.map +1 -0
  263. package/dist/messages/pl/dialogs/publish.js +14 -0
  264. package/dist/messages/pl/dnd.d.ts +19 -0
  265. package/dist/messages/pl/dnd.d.ts.map +1 -0
  266. package/dist/messages/pl/dnd.js +18 -0
  267. package/dist/messages/pl/editor.d.ts +30 -0
  268. package/dist/messages/pl/editor.d.ts.map +1 -0
  269. package/dist/messages/pl/editor.js +29 -0
  270. package/dist/messages/pl/external.d.ts +6 -0
  271. package/dist/messages/pl/external.d.ts.map +1 -0
  272. package/dist/messages/pl/external.js +5 -0
  273. package/dist/messages/pl/insert.d.ts +25 -0
  274. package/dist/messages/pl/insert.d.ts.map +1 -0
  275. package/dist/messages/pl/insert.js +24 -0
  276. package/dist/messages/pl/inspector.d.ts +176 -0
  277. package/dist/messages/pl/inspector.d.ts.map +1 -0
  278. package/dist/messages/pl/inspector.js +175 -0
  279. package/dist/messages/pl/issues.d.ts +36 -0
  280. package/dist/messages/pl/issues.d.ts.map +1 -0
  281. package/dist/messages/pl/issues.js +35 -0
  282. package/dist/messages/pl/layers.d.ts +29 -0
  283. package/dist/messages/pl/layers.d.ts.map +1 -0
  284. package/dist/messages/pl/layers.js +28 -0
  285. package/dist/messages/pl/leftPanel.d.ts +15 -0
  286. package/dist/messages/pl/leftPanel.d.ts.map +1 -0
  287. package/dist/messages/pl/leftPanel.js +14 -0
  288. package/dist/messages/pl/list.d.ts +9 -0
  289. package/dist/messages/pl/list.d.ts.map +1 -0
  290. package/dist/messages/pl/list.js +8 -0
  291. package/dist/messages/pl/locale.d.ts +4 -0
  292. package/dist/messages/pl/locale.d.ts.map +1 -0
  293. package/dist/messages/pl/locale.js +3 -0
  294. package/dist/messages/pl/media.d.ts +51 -0
  295. package/dist/messages/pl/media.d.ts.map +1 -0
  296. package/dist/messages/pl/media.js +50 -0
  297. package/dist/messages/pl/menu.d.ts +12 -0
  298. package/dist/messages/pl/menu.d.ts.map +1 -0
  299. package/dist/messages/pl/menu.js +11 -0
  300. package/dist/messages/pl/patterns.d.ts +24 -0
  301. package/dist/messages/pl/patterns.d.ts.map +1 -0
  302. package/dist/messages/pl/patterns.js +23 -0
  303. package/dist/messages/pl/preview.d.ts +8 -0
  304. package/dist/messages/pl/preview.d.ts.map +1 -0
  305. package/dist/messages/pl/preview.js +7 -0
  306. package/dist/messages/pl/publish.d.ts +19 -0
  307. package/dist/messages/pl/publish.d.ts.map +1 -0
  308. package/dist/messages/pl/publish.js +18 -0
  309. package/dist/messages/pl/richText.d.ts +21 -0
  310. package/dist/messages/pl/richText.d.ts.map +1 -0
  311. package/dist/messages/pl/richText.js +20 -0
  312. package/dist/messages/pl/sample.d.ts +5 -0
  313. package/dist/messages/pl/sample.d.ts.map +1 -0
  314. package/dist/messages/pl/sample.js +4 -0
  315. package/dist/messages/pl/save.d.ts +15 -0
  316. package/dist/messages/pl/save.d.ts.map +1 -0
  317. package/dist/messages/pl/save.js +14 -0
  318. package/dist/messages/pl/shortcut.d.ts +36 -0
  319. package/dist/messages/pl/shortcut.d.ts.map +1 -0
  320. package/dist/messages/pl/shortcut.js +35 -0
  321. package/dist/messages/pl/statusBar.d.ts +14 -0
  322. package/dist/messages/pl/statusBar.d.ts.map +1 -0
  323. package/dist/messages/pl/statusBar.js +13 -0
  324. package/dist/messages/pl/structure.d.ts +28 -0
  325. package/dist/messages/pl/structure.d.ts.map +1 -0
  326. package/dist/messages/pl/structure.js +27 -0
  327. package/dist/messages/pl/style.d.ts +168 -0
  328. package/dist/messages/pl/style.d.ts.map +1 -0
  329. package/dist/messages/pl/style.js +167 -0
  330. package/dist/messages/pl/styleField.d.ts +301 -0
  331. package/dist/messages/pl/styleField.d.ts.map +1 -0
  332. package/dist/messages/pl/styleField.js +300 -0
  333. package/dist/messages/pl/styleOption.d.ts +128 -0
  334. package/dist/messages/pl/styleOption.d.ts.map +1 -0
  335. package/dist/messages/pl/styleOption.js +127 -0
  336. package/dist/messages/pl/styleSection.d.ts +16 -0
  337. package/dist/messages/pl/styleSection.d.ts.map +1 -0
  338. package/dist/messages/pl/styleSection.js +15 -0
  339. package/dist/messages/pl/toast.d.ts +22 -0
  340. package/dist/messages/pl/toast.d.ts.map +1 -0
  341. package/dist/messages/pl/toast.js +21 -0
  342. package/dist/messages/pl/toolbar.d.ts +47 -0
  343. package/dist/messages/pl/toolbar.d.ts.map +1 -0
  344. package/dist/messages/pl/toolbar.js +46 -0
  345. package/dist/messages/pl/translation.d.ts +7 -0
  346. package/dist/messages/pl/translation.d.ts.map +1 -0
  347. package/dist/messages/pl/translation.js +6 -0
  348. package/dist/messages/pl/ui.d.ts +4 -0
  349. package/dist/messages/pl/ui.d.ts.map +1 -0
  350. package/dist/messages/pl/ui.js +3 -0
  351. package/dist/messages/pl/values.d.ts +45 -0
  352. package/dist/messages/pl/values.d.ts.map +1 -0
  353. package/dist/messages/pl/values.js +44 -0
  354. package/dist/messages/pl.d.ts.map +1 -1
  355. package/dist/messages/pl.js +82 -325
  356. package/dist/messages/plural.test.d.ts +2 -0
  357. package/dist/messages/plural.test.d.ts.map +1 -0
  358. package/dist/messages/plural.test.js +50 -0
  359. package/dist/panels/breadcrumbs/breadcrumbs.d.ts +1 -1
  360. package/dist/panels/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  361. package/dist/panels/breadcrumbs/breadcrumbs.js +10 -3
  362. package/dist/panels/breadcrumbs/breadcrumbs.test.js +9 -2
  363. package/dist/panels/index.d.ts +3 -0
  364. package/dist/panels/index.d.ts.map +1 -1
  365. package/dist/panels/index.js +1 -0
  366. package/dist/panels/insert/catalog.d.ts +21 -1
  367. package/dist/panels/insert/catalog.d.ts.map +1 -1
  368. package/dist/panels/insert/catalog.js +85 -3
  369. package/dist/panels/insert/catalog.order.test.js +106 -1
  370. package/dist/panels/insert/index.d.ts +1 -0
  371. package/dist/panels/insert/index.d.ts.map +1 -1
  372. package/dist/panels/insert/insert-panel.d.ts +14 -4
  373. package/dist/panels/insert/insert-panel.d.ts.map +1 -1
  374. package/dist/panels/insert/insert-panel.js +128 -69
  375. package/dist/panels/insert/insert-panel.test.js +278 -37
  376. package/dist/panels/insert/target.d.ts +5 -1
  377. package/dist/panels/insert/target.d.ts.map +1 -1
  378. package/dist/panels/insert/target.js +11 -1
  379. package/dist/panels/inspector/author-fields.d.ts +21 -0
  380. package/dist/panels/inspector/author-fields.d.ts.map +1 -0
  381. package/dist/panels/inspector/author-fields.js +191 -0
  382. package/dist/panels/inspector/author-fields.test.d.ts +2 -0
  383. package/dist/panels/inspector/author-fields.test.d.ts.map +1 -0
  384. package/dist/panels/inspector/author-fields.test.js +237 -0
  385. package/dist/panels/inspector/controls/external-link.d.ts +24 -0
  386. package/dist/panels/inspector/controls/external-link.d.ts.map +1 -0
  387. package/dist/panels/inspector/controls/external-link.js +43 -0
  388. package/dist/panels/inspector/controls/external-link.test.d.ts +2 -0
  389. package/dist/panels/inspector/controls/external-link.test.d.ts.map +1 -0
  390. package/dist/panels/inspector/controls/external-link.test.js +105 -0
  391. package/dist/panels/inspector/controls/index.d.ts +1 -0
  392. package/dist/panels/inspector/controls/index.d.ts.map +1 -1
  393. package/dist/panels/inspector/controls/index.js +1 -0
  394. package/dist/panels/inspector/controls/media.d.ts +3 -1
  395. package/dist/panels/inspector/controls/media.d.ts.map +1 -1
  396. package/dist/panels/inspector/controls/media.js +8 -3
  397. package/dist/panels/inspector/controls/rich-text.d.ts.map +1 -1
  398. package/dist/panels/inspector/controls/rich-text.js +36 -6
  399. package/dist/panels/inspector/controls/textarea.d.ts +7 -2
  400. package/dist/panels/inspector/controls/textarea.d.ts.map +1 -1
  401. package/dist/panels/inspector/controls/textarea.js +37 -2
  402. package/dist/panels/inspector/default-hint.d.ts +13 -0
  403. package/dist/panels/inspector/default-hint.d.ts.map +1 -0
  404. package/dist/panels/inspector/default-hint.js +30 -0
  405. package/dist/panels/inspector/default-hint.test.d.ts +2 -0
  406. package/dist/panels/inspector/default-hint.test.d.ts.map +1 -0
  407. package/dist/panels/inspector/default-hint.test.js +46 -0
  408. package/dist/panels/inspector/index.d.ts +3 -3
  409. package/dist/panels/inspector/index.d.ts.map +1 -1
  410. package/dist/panels/inspector/index.js +2 -2
  411. package/dist/panels/inspector/inspector.d.ts +20 -2
  412. package/dist/panels/inspector/inspector.d.ts.map +1 -1
  413. package/dist/panels/inspector/inspector.js +246 -26
  414. package/dist/panels/inspector/inspector.test.js +276 -11
  415. package/dist/panels/inspector/props-panel.d.ts +36 -0
  416. package/dist/panels/inspector/props-panel.d.ts.map +1 -1
  417. package/dist/panels/inspector/props-panel.js +99 -17
  418. package/dist/panels/inspector/props-panel.test.d.ts +2 -0
  419. package/dist/panels/inspector/props-panel.test.d.ts.map +1 -0
  420. package/dist/panels/inspector/props-panel.test.js +17 -0
  421. package/dist/panels/inspector/scrub-label.d.ts +14 -0
  422. package/dist/panels/inspector/scrub-label.d.ts.map +1 -0
  423. package/dist/panels/inspector/scrub-label.js +75 -0
  424. package/dist/panels/inspector/scrub-label.test.d.ts +2 -0
  425. package/dist/panels/inspector/scrub-label.test.d.ts.map +1 -0
  426. package/dist/panels/inspector/scrub-label.test.js +132 -0
  427. package/dist/panels/inspector/styles/background-media.d.ts +28 -0
  428. package/dist/panels/inspector/styles/background-media.d.ts.map +1 -0
  429. package/dist/panels/inspector/styles/background-media.js +78 -0
  430. package/dist/panels/inspector/styles/box-model.d.ts +13 -16
  431. package/dist/panels/inspector/styles/box-model.d.ts.map +1 -1
  432. package/dist/panels/inspector/styles/box-model.js +10 -25
  433. package/dist/panels/inspector/styles/color-input.d.ts +3 -0
  434. package/dist/panels/inspector/styles/color-input.d.ts.map +1 -0
  435. package/dist/panels/inspector/styles/color-input.js +72 -0
  436. package/dist/panels/inspector/styles/gradient-fields.d.ts +9 -0
  437. package/dist/panels/inspector/styles/gradient-fields.d.ts.map +1 -0
  438. package/dist/panels/inspector/styles/gradient-fields.js +50 -0
  439. package/dist/panels/inspector/styles/index.d.ts +2 -0
  440. package/dist/panels/inspector/styles/index.d.ts.map +1 -1
  441. package/dist/panels/inspector/styles/index.js +2 -0
  442. package/dist/panels/inspector/styles/model.d.ts +27 -5
  443. package/dist/panels/inspector/styles/model.d.ts.map +1 -1
  444. package/dist/panels/inspector/styles/model.js +101 -3
  445. package/dist/panels/inspector/styles/motion-rows.d.ts +17 -0
  446. package/dist/panels/inspector/styles/motion-rows.d.ts.map +1 -0
  447. package/dist/panels/inspector/styles/motion-rows.js +117 -0
  448. package/dist/panels/inspector/styles/number-input.d.ts +4 -0
  449. package/dist/panels/inspector/styles/number-input.d.ts.map +1 -0
  450. package/dist/panels/inspector/styles/number-input.js +12 -0
  451. package/dist/panels/inspector/styles/option-label.d.ts +7 -0
  452. package/dist/panels/inspector/styles/option-label.d.ts.map +1 -0
  453. package/dist/panels/inspector/styles/option-label.js +9 -0
  454. package/dist/panels/inspector/styles/property-label.d.ts +9 -0
  455. package/dist/panels/inspector/styles/property-label.d.ts.map +1 -0
  456. package/dist/panels/inspector/styles/property-label.js +11 -0
  457. package/dist/panels/inspector/styles/section-state.d.ts +22 -0
  458. package/dist/panels/inspector/styles/section-state.d.ts.map +1 -0
  459. package/dist/panels/inspector/styles/section-state.js +96 -0
  460. package/dist/panels/inspector/styles/section.d.ts +25 -0
  461. package/dist/panels/inspector/styles/section.d.ts.map +1 -0
  462. package/dist/panels/inspector/styles/section.js +43 -0
  463. package/dist/panels/inspector/styles/sections-context.d.ts +13 -0
  464. package/dist/panels/inspector/styles/sections-context.d.ts.map +1 -0
  465. package/dist/panels/inspector/styles/sections-context.js +19 -0
  466. package/dist/panels/inspector/styles/sections-context.test.d.ts +2 -0
  467. package/dist/panels/inspector/styles/sections-context.test.d.ts.map +1 -0
  468. package/dist/panels/inspector/styles/sections-context.test.js +18 -0
  469. package/dist/panels/inspector/styles/sections-toggle.d.ts +6 -0
  470. package/dist/panels/inspector/styles/sections-toggle.d.ts.map +1 -0
  471. package/dist/panels/inspector/styles/sections-toggle.js +18 -0
  472. package/dist/panels/inspector/styles/segments.d.ts +3 -0
  473. package/dist/panels/inspector/styles/segments.d.ts.map +1 -1
  474. package/dist/panels/inspector/styles/segments.js +11 -4
  475. package/dist/panels/inspector/styles/sides-editor.d.ts +1 -1
  476. package/dist/panels/inspector/styles/sides-editor.d.ts.map +1 -1
  477. package/dist/panels/inspector/styles/sides-editor.js +33 -4
  478. package/dist/panels/inspector/styles/style-inspector.d.ts +3 -1
  479. package/dist/panels/inspector/styles/style-inspector.d.ts.map +1 -1
  480. package/dist/panels/inspector/styles/style-inspector.js +610 -42
  481. package/dist/panels/inspector/styles/style-inspector.test.js +694 -14
  482. package/dist/panels/inspector/styles/token-picker.d.ts +1 -1
  483. package/dist/panels/inspector/styles/token-picker.d.ts.map +1 -1
  484. package/dist/panels/inspector/styles/token-picker.js +10 -3
  485. package/dist/panels/inspector/styles/widgets.d.ts +116 -0
  486. package/dist/panels/inspector/styles/widgets.d.ts.map +1 -0
  487. package/dist/panels/inspector/styles/widgets.js +304 -0
  488. package/dist/panels/inspector/styles/widgets.test.d.ts +2 -0
  489. package/dist/panels/inspector/styles/widgets.test.d.ts.map +1 -0
  490. package/dist/panels/inspector/styles/widgets.test.js +247 -0
  491. package/dist/panels/inspector/values/value-editor.d.ts +1 -1
  492. package/dist/panels/inspector/values/value-editor.d.ts.map +1 -1
  493. package/dist/panels/inspector/values/value-editor.js +9 -8
  494. package/dist/panels/inspector/values/values.test.js +9 -3
  495. package/dist/panels/issues/collect.d.ts +2 -0
  496. package/dist/panels/issues/collect.d.ts.map +1 -1
  497. package/dist/panels/issues/collect.js +1 -0
  498. package/dist/panels/issues/index.d.ts +1 -0
  499. package/dist/panels/issues/index.d.ts.map +1 -1
  500. package/dist/panels/issues/index.js +1 -0
  501. package/dist/panels/issues/issues-panel.d.ts +4 -3
  502. package/dist/panels/issues/issues-panel.d.ts.map +1 -1
  503. package/dist/panels/issues/issues-panel.js +22 -35
  504. package/dist/panels/issues/path.d.ts +7 -0
  505. package/dist/panels/issues/path.d.ts.map +1 -0
  506. package/dist/panels/issues/path.js +21 -0
  507. package/dist/panels/layers/flatten.d.ts +16 -2
  508. package/dist/panels/layers/flatten.d.ts.map +1 -1
  509. package/dist/panels/layers/flatten.js +48 -4
  510. package/dist/panels/layers/layers-panel.d.ts +5 -2
  511. package/dist/panels/layers/layers-panel.d.ts.map +1 -1
  512. package/dist/panels/layers/layers-panel.js +177 -35
  513. package/dist/panels/layers/layers-panel.test.js +173 -15
  514. package/dist/panels/left-panel.d.ts +17 -0
  515. package/dist/panels/left-panel.d.ts.map +1 -0
  516. package/dist/panels/left-panel.js +47 -0
  517. package/dist/panels/left-panel.test.d.ts +2 -0
  518. package/dist/panels/left-panel.test.d.ts.map +1 -0
  519. package/dist/panels/left-panel.test.js +77 -0
  520. package/dist/persistence/persistence.test.js +9 -3
  521. package/dist/persistence/react.d.ts.map +1 -1
  522. package/dist/persistence/react.js +2 -2
  523. package/dist/preview/preview.d.ts +8 -0
  524. package/dist/preview/preview.d.ts.map +1 -1
  525. package/dist/preview/preview.js +21 -1
  526. package/dist/preview/preview.test.js +18 -1
  527. package/dist/shortcuts/actions.d.ts +13 -2
  528. package/dist/shortcuts/actions.d.ts.map +1 -1
  529. package/dist/shortcuts/actions.js +70 -15
  530. package/dist/shortcuts/help.d.ts +11 -0
  531. package/dist/shortcuts/help.d.ts.map +1 -0
  532. package/dist/shortcuts/help.js +77 -0
  533. package/dist/shortcuts/index.d.ts +5 -2
  534. package/dist/shortcuts/index.d.ts.map +1 -1
  535. package/dist/shortcuts/index.js +3 -1
  536. package/dist/shortcuts/map.d.ts +1 -1
  537. package/dist/shortcuts/map.d.ts.map +1 -1
  538. package/dist/shortcuts/map.js +14 -8
  539. package/dist/shortcuts/navigation.d.ts +13 -0
  540. package/dist/shortcuts/navigation.d.ts.map +1 -0
  541. package/dist/shortcuts/navigation.js +48 -0
  542. package/dist/shortcuts/shortcuts.d.ts +12 -1
  543. package/dist/shortcuts/shortcuts.d.ts.map +1 -1
  544. package/dist/shortcuts/shortcuts.js +61 -14
  545. package/dist/shortcuts/shortcuts.test.js +206 -5
  546. package/dist/store/create-store.d.ts.map +1 -1
  547. package/dist/store/create-store.js +19 -1
  548. package/dist/store/index.d.ts +4 -1
  549. package/dist/store/index.d.ts.map +1 -1
  550. package/dist/store/index.js +3 -1
  551. package/dist/store/react.d.ts +4 -0
  552. package/dist/store/react.d.ts.map +1 -1
  553. package/dist/store/react.js +7 -0
  554. package/dist/store/store.test.js +24 -0
  555. package/dist/store/structure-lock.d.ts +16 -0
  556. package/dist/store/structure-lock.d.ts.map +1 -0
  557. package/dist/store/structure-lock.js +43 -0
  558. package/dist/store/structure-lock.test.d.ts +2 -0
  559. package/dist/store/structure-lock.test.d.ts.map +1 -0
  560. package/dist/store/structure-lock.test.js +49 -0
  561. package/dist/store/types.d.ts +9 -0
  562. package/dist/store/types.d.ts.map +1 -1
  563. package/dist/store/view.d.ts +20 -0
  564. package/dist/store/view.d.ts.map +1 -0
  565. package/dist/store/view.js +17 -0
  566. package/dist/store/view.test.d.ts +2 -0
  567. package/dist/store/view.test.d.ts.map +1 -0
  568. package/dist/store/view.test.js +103 -0
  569. package/dist/styles/tokens.test.js +88 -9
  570. package/dist/styles.css +4112 -586
  571. package/dist/toolbar/brand.d.ts +2 -2
  572. package/dist/toolbar/brand.d.ts.map +1 -1
  573. package/dist/toolbar/brand.js +4 -4
  574. package/dist/toolbar/breakpoint-control.d.ts +4 -0
  575. package/dist/toolbar/breakpoint-control.d.ts.map +1 -1
  576. package/dist/toolbar/breakpoint-control.js +11 -4
  577. package/dist/toolbar/editable-title.d.ts +4 -1
  578. package/dist/toolbar/editable-title.d.ts.map +1 -1
  579. package/dist/toolbar/editable-title.js +2 -2
  580. package/dist/toolbar/editable-title.test.js +10 -0
  581. package/dist/toolbar/locale-chip.d.ts +10 -0
  582. package/dist/toolbar/locale-chip.d.ts.map +1 -0
  583. package/dist/toolbar/locale-chip.js +27 -0
  584. package/dist/toolbar/locale-switcher.d.ts.map +1 -1
  585. package/dist/toolbar/locale-switcher.js +4 -1
  586. package/dist/toolbar/more-menu.d.ts +26 -4
  587. package/dist/toolbar/more-menu.d.ts.map +1 -1
  588. package/dist/toolbar/more-menu.js +60 -13
  589. package/dist/toolbar/page-chip.d.ts +10 -0
  590. package/dist/toolbar/page-chip.d.ts.map +1 -0
  591. package/dist/toolbar/page-chip.js +12 -0
  592. package/dist/toolbar/page-options-dialog.d.ts +16 -0
  593. package/dist/toolbar/page-options-dialog.d.ts.map +1 -0
  594. package/dist/toolbar/page-options-dialog.js +13 -0
  595. package/dist/toolbar/panel-toggles.d.ts +3 -2
  596. package/dist/toolbar/panel-toggles.d.ts.map +1 -1
  597. package/dist/toolbar/panel-toggles.js +9 -4
  598. package/dist/toolbar/publish-dialog.d.ts +3 -0
  599. package/dist/toolbar/publish-dialog.d.ts.map +1 -1
  600. package/dist/toolbar/publish-dialog.js +34 -7
  601. package/dist/toolbar/publish.test.js +63 -19
  602. package/dist/toolbar/safe-history.d.ts +3 -0
  603. package/dist/toolbar/safe-history.d.ts.map +1 -0
  604. package/dist/toolbar/safe-history.js +5 -0
  605. package/dist/toolbar/sample-picker.d.ts +24 -4
  606. package/dist/toolbar/sample-picker.d.ts.map +1 -1
  607. package/dist/toolbar/sample-picker.js +42 -18
  608. package/dist/toolbar/toolbar-centre.d.ts +3 -11
  609. package/dist/toolbar/toolbar-centre.d.ts.map +1 -1
  610. package/dist/toolbar/toolbar-centre.js +4 -5
  611. package/dist/toolbar/toolbar-left.d.ts +4 -7
  612. package/dist/toolbar/toolbar-left.d.ts.map +1 -1
  613. package/dist/toolbar/toolbar-left.js +13 -11
  614. package/dist/toolbar/toolbar-right.d.ts +21 -6
  615. package/dist/toolbar/toolbar-right.d.ts.map +1 -1
  616. package/dist/toolbar/toolbar-right.js +28 -14
  617. package/dist/toolbar/toolbar.d.ts +23 -17
  618. package/dist/toolbar/toolbar.d.ts.map +1 -1
  619. package/dist/toolbar/toolbar.js +28 -11
  620. package/dist/toolbar/toolbar.test.js +238 -23
  621. package/dist/toolbar/use-overflow-level.d.ts +2 -1
  622. package/dist/toolbar/use-overflow-level.d.ts.map +1 -1
  623. package/dist/toolbar/use-overflow-level.js +9 -3
  624. package/dist/toolbar/zoom-menu.d.ts +5 -1
  625. package/dist/toolbar/zoom-menu.d.ts.map +1 -1
  626. package/dist/toolbar/zoom-menu.js +3 -2
  627. package/dist/ui/icon.d.ts +53 -0
  628. package/dist/ui/icon.d.ts.map +1 -1
  629. package/dist/ui/icon.js +58 -1
  630. package/dist/ui/icon.test.js +101 -3
  631. package/dist/ui/index.d.ts +4 -3
  632. package/dist/ui/index.d.ts.map +1 -1
  633. package/dist/ui/index.js +3 -2
  634. package/dist/ui/primitives.d.ts +97 -14
  635. package/dist/ui/primitives.d.ts.map +1 -1
  636. package/dist/ui/primitives.js +108 -22
  637. package/dist/ui/primitives.test.js +204 -3
  638. package/dist/ui/structure-locked.d.ts +9 -0
  639. package/dist/ui/structure-locked.d.ts.map +1 -0
  640. package/dist/ui/structure-locked.js +28 -0
  641. package/dist/ui/toast.d.ts +3 -1
  642. package/dist/ui/toast.d.ts.map +1 -1
  643. package/dist/ui/toast.js +21 -5
  644. package/dist/ui/toast.test.js +34 -0
  645. package/package.json +6 -4
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  // @vitest-environment jsdom
3
- import { createRegistryMeta, createSeededIdGenerator, defineTemplate, p, s, toManifest, } from '@next-buildr/core';
3
+ import { createRegistryMeta, createSeededIdGenerator, defineTemplate, p, s, toManifest, validateDocument, } from '@next-buildr/core';
4
4
  import { act } from 'react';
5
5
  import { createRoot } from 'react-dom/client';
6
6
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
@@ -81,6 +81,7 @@ const fixture = () => ({
81
81
  let container;
82
82
  let root;
83
83
  beforeEach(() => {
84
+ localStorage.clear();
84
85
  container = document.createElement('div');
85
86
  document.body.append(container);
86
87
  root = createRoot(container);
@@ -89,7 +90,7 @@ afterEach(() => {
89
90
  act(() => root.unmount());
90
91
  document.body.innerHTML = '';
91
92
  });
92
- async function mount(readOnly = false, locale = 'en', reg = registry, man = manifest) {
93
+ async function mount(readOnly = false, locale = 'en', reg = registry, man = manifest, props = {}) {
93
94
  const store = createEditorStore({
94
95
  doc: fixture(),
95
96
  registry: reg,
@@ -97,11 +98,22 @@ async function mount(readOnly = false, locale = 'en', reg = registry, man = mani
97
98
  validationDelayMs: null,
98
99
  readOnly,
99
100
  });
100
- await act(async () => root.render(_jsx(MessagesProvider, { locale: locale, children: _jsx(ManifestProvider, { manifest: man, children: _jsx(EditorStoreProvider, { store: store, children: _jsx(ToastProvider, { children: _jsx(InsertPanel, {}) }) }) }) })));
101
+ await act(async () => root.render(_jsx(MessagesProvider, { locale: locale, children: _jsx(ManifestProvider, { manifest: man, children: _jsx(EditorStoreProvider, { store: store, children: _jsx(ToastProvider, { children: _jsx(InsertPanel, { ...props }) }) }) }) })));
101
102
  return store;
102
103
  }
103
104
  const button = (label) => [...container.querySelectorAll('button')].find((b) => b.querySelector('.bd-insert-label')?.textContent === label);
104
105
  const click = (label) => act(async () => button(label).click());
106
+ const switchMode = (label) => act(async () => {
107
+ [...container.querySelectorAll('.bd-segment')]
108
+ .find((b) => b.textContent === label)
109
+ ?.click();
110
+ });
111
+ const typeQuery = (value) => act(async () => {
112
+ const input = container.querySelector('input');
113
+ const set = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set;
114
+ set?.call(input, value);
115
+ input.dispatchEvent(new Event('input', { bubbles: true }));
116
+ });
105
117
  const notice = () => container.querySelector('.bd-toast-text')?.textContent;
106
118
  const children = (store, id) => store.getState().doc.nodes[id]?.slots?.['default'] ?? [];
107
119
  describe('tile icons', () => {
@@ -121,6 +133,28 @@ describe('catalog', () => {
121
133
  expect(components.map((c) => c.label)).toEqual(['Box', 'Text']);
122
134
  expect(templates.map((t) => t.label)).toEqual(['Evil', 'Hero']);
123
135
  });
136
+ it('leaves a template with insertable: false out of the palette and out of search', () => {
137
+ const withHidden = toManifest(createRegistryMeta({
138
+ components: registry.list(),
139
+ templates: [
140
+ ...registry.listTemplates(),
141
+ defineTemplate({
142
+ id: 'site/legacy',
143
+ version: 1,
144
+ label: 'Legacy',
145
+ category: 'sections',
146
+ insertable: false,
147
+ lock: 'none',
148
+ tree: { type: 'buildr/box' },
149
+ }),
150
+ ],
151
+ }));
152
+ const { templates } = paletteItems(withHidden);
153
+ expect(templates.map((t) => t.label)).toEqual(['Evil', 'Hero']);
154
+ expect(filterItems(templates, 'legacy')).toEqual([]);
155
+ // Hidden, not removed: the manifest still carries it for host code and existing documents.
156
+ expect(withHidden.templates['site/legacy']?.insertable).toBe(false);
157
+ });
124
158
  it('searches by label, type, keyword and every word', () => {
125
159
  const { components } = paletteItems(manifest);
126
160
  expect(filterItems(components, 'para').map((c) => c.label)).toEqual(['Text']);
@@ -137,30 +171,103 @@ describe('catalog', () => {
137
171
  expect(safeThumbnail('//evil.example.com/a.png')).toBeUndefined();
138
172
  expect(safeThumbnail('data:text/html,<script>')).toBeUndefined();
139
173
  expect(safeThumbnail(undefined)).toBeUndefined();
174
+ const wireframe = `data:image/svg+xml,${encodeURIComponent("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 100'><path fill='#d1d5db' d='M1 2h3v4h-3z'/></svg>")}`;
175
+ expect(safeThumbnail(wireframe)).toBe(wireframe);
176
+ expect(safeThumbnail('data:image/svg+xml,%3Csvg onload=alert(1)%3E')).toBeUndefined();
177
+ expect(safeThumbnail('data:image/svg+xml,%broken')).toBeUndefined();
178
+ });
179
+ });
180
+ describe('a registry where everything is insertable: false', () => {
181
+ const allHidden = createRegistryMeta({
182
+ components: registry
183
+ .list()
184
+ .map((m) => m.capabilities?.root === true
185
+ ? m
186
+ : { ...m, capabilities: { ...m.capabilities, insertable: false } }),
187
+ templates: registry.listTemplates().map((t) => ({ ...t, insertable: false })),
188
+ });
189
+ const allHiddenManifest = toManifest(allHidden);
190
+ it('has an empty palette in both modes', () => {
191
+ expect(paletteItems(allHiddenManifest)).toEqual({ components: [], templates: [] });
192
+ });
193
+ it('opens the panel with no tiles and no error', async () => {
194
+ await mount(false, 'en', allHidden, allHiddenManifest);
195
+ expect(container.querySelectorAll('.bd-insert-label')).toHaveLength(0);
196
+ await switchMode('Patterns');
197
+ expect(container.querySelectorAll('.bd-insert-label')).toHaveLength(0);
198
+ await typeQuery('hero');
199
+ expect(container.querySelectorAll('.bd-insert-label')).toHaveLength(0);
200
+ });
201
+ it('still validates a document that holds the hidden components', async () => {
202
+ const store = await mount(false, 'en', allHidden, allHiddenManifest);
203
+ expect(store.getState().doc.nodes['boxNode001']?.type).toBe('buildr/box');
204
+ const stored = {
205
+ ...fixture(),
206
+ components: { 'buildr/page': 1, 'buildr/box': 1, 'buildr/text': 1 },
207
+ };
208
+ const result = validateDocument(stored, { registry: allHidden });
209
+ expect(result.issues.filter((issue) => issue.blocking)).toEqual([]);
210
+ expect(result.ok).toBe(true);
140
211
  });
141
212
  });
142
213
  describe('category headings', () => {
143
214
  const custom = createRegistryMeta({
144
215
  components: [
145
216
  meta('buildr/page', { capabilities: { root: true }, slots: { default: {} } }),
146
- meta('buildr/button', { label: 'Button', category: 'ui' }),
147
- meta('buildr/list', { label: 'List', category: 'cms' }),
148
- meta('buildr/quote', { label: 'Quote', category: 'blog' }),
217
+ meta('buildr/alert', { label: 'Alert', category: 'ui' }),
218
+ meta('buildr/faq', { label: 'Faq', category: 'cms' }),
219
+ meta('buildr/loop', { label: 'Loop', category: 'cms' }),
220
+ meta('buildr/pagination', { label: 'Pagination', category: 'cms' }),
221
+ meta('buildr/rich-text', { label: 'Rich text' }),
222
+ meta('buildr/post', { label: 'Post', category: 'blog' }),
149
223
  ],
150
224
  templates: [],
151
225
  });
152
226
  const customManifest = toManifest(custom);
153
227
  const headings = () => [...container.querySelectorAll('[role=group]')].map((g) => g.getAttribute('aria-label'));
154
- it('names ui and cms in capitals and title-cases a custom category', async () => {
228
+ it('names ui in capitals, hides cms and title-cases a custom category', async () => {
155
229
  await mount(false, 'en', custom, customManifest);
156
- expect(headings()).toEqual(['UI', 'CMS', 'Blog']);
230
+ expect(headings()).toEqual(['UI', 'Blog']);
157
231
  expect(container.querySelector('.bd-insert-category-name')?.textContent).toBe('UI');
158
232
  });
233
+ it('hides rich text and all cms blocks from sections and search, keeping custom blocks', async () => {
234
+ await mount(false, 'en', custom, customManifest);
235
+ const hidden = ['buildr/rich-text', 'buildr/loop', 'buildr/pagination', 'buildr/faq'];
236
+ for (const id of hidden) {
237
+ expect(container.querySelector(`[data-id="${id}"]`)).toBeNull();
238
+ }
239
+ expect(button('Post')).toBeDefined();
240
+ for (const query of ['rich', 'loop', 'pagination', 'faq', 'buildr/']) {
241
+ await typeQuery(query);
242
+ for (const id of hidden) {
243
+ expect(container.querySelector(`[data-id="${id}"]`)).toBeNull();
244
+ }
245
+ }
246
+ await typeQuery('post');
247
+ expect(button('Post')).toBeDefined();
248
+ });
249
+ it('renders a shared block in two sections and once in search', async () => {
250
+ const reg = createRegistryMeta({
251
+ components: [meta('buildr/button', { label: 'Button' })],
252
+ templates: [],
253
+ });
254
+ await mount(false, 'en', reg, toManifest(reg));
255
+ expect(headings()).toEqual(['Content', 'Forms']);
256
+ expect(container.querySelectorAll('[data-id="buildr/button"]')).toHaveLength(2);
257
+ await typeQuery('button');
258
+ expect(container.querySelectorAll('[data-id="buildr/button"]')).toHaveLength(1);
259
+ });
260
+ it('shows mapped content before unmapped categories without recent blocks', async () => {
261
+ await mount();
262
+ expect(headings()).toEqual(['Content', 'Layout']);
263
+ expect(container.textContent).not.toContain('Recently used');
264
+ expect(container.querySelector('#bd-insert-recent')).toBeNull();
265
+ });
159
266
  it('uses the Polish catalog', async () => {
160
267
  await mount(false, 'pl', custom, customManifest);
161
- expect(headings()).toEqual(['UI', 'CMS', 'Blog']);
268
+ expect(headings()).toEqual(['UI', 'Blog']);
162
269
  await mount(false, 'pl');
163
- expect(headings()).toEqual(['Układ', 'Treść', 'Sections']);
270
+ expect(headings()).toEqual(['Tre\u015b\u0107', 'Uk\u0142ad']);
164
271
  });
165
272
  });
166
273
  describe('InsertPanel', () => {
@@ -168,10 +275,26 @@ describe('InsertPanel', () => {
168
275
  await mount();
169
276
  expect(await axe(container)).toHaveNoViolations();
170
277
  const groups = [...container.querySelectorAll('[role=group]')].map((g) => g.getAttribute('aria-label'));
171
- expect(groups).toEqual(['Layout', 'Content', 'Sections']);
278
+ expect(groups).toEqual(['Content', 'Layout']);
279
+ await switchMode('Patterns');
280
+ expect(await axe(container)).toHaveNoViolations();
281
+ expect([...container.querySelectorAll('[role=group]')].map((g) => g.getAttribute('aria-label'))).toEqual(['Pattern category']);
172
282
  expect(container.querySelector('img')?.getAttribute('src')).toBe('/thumbs/hero.png');
173
283
  expect(container.querySelectorAll('img')).toHaveLength(1);
174
284
  });
285
+ it('keeps the selection chip in sync without changing the document', async () => {
286
+ const store = await mount();
287
+ const before = store.getState().doc;
288
+ const chip = () => container.querySelector('.bd-insert-target')?.textContent;
289
+ expect(chip()).toBe('Insert at the end of the page');
290
+ await act(async () => store.select('boxNode001'));
291
+ expect(chip()).toBe('Insert after: Box');
292
+ await act(async () => store.select('root'));
293
+ expect(chip()).toBe('Insert after: Page');
294
+ expect(store.getState().doc).toBe(before);
295
+ await act(async () => store.clearSelection());
296
+ expect(chip()).toBe('Insert at the end of the page');
297
+ });
175
298
  it('inserts into the selected container, at the end, and selects the new node', async () => {
176
299
  const store = await mount();
177
300
  await act(async () => store.select('boxNode001'));
@@ -196,6 +319,7 @@ describe('InsertPanel', () => {
196
319
  it('inserts a template as one undo step', async () => {
197
320
  const store = await mount();
198
321
  await act(async () => store.select('boxNode002'));
322
+ await switchMode('Patterns');
199
323
  await click('Hero');
200
324
  const [box] = children(store, 'boxNode002');
201
325
  const inserted = store.getState().doc.nodes[box];
@@ -230,12 +354,12 @@ describe('InsertPanel', () => {
230
354
  await type('paragraph');
231
355
  expect(container.querySelectorAll('.bd-insert-item')).toHaveLength(1);
232
356
  await type('zzzz');
233
- expect(container.querySelector('.bd-insert-empty')?.textContent).toBe('Nothing matches the search.');
357
+ expect(container.querySelector('.bd-insert-empty')?.textContent).toContain('No blocks match “zzzz”');
234
358
  });
235
359
  it('is operable with the keyboard alone (real buttons in tab order)', async () => {
236
360
  await mount();
237
361
  const items = [...container.querySelectorAll('.bd-insert-item')];
238
- expect(items.length).toBe(4);
362
+ expect(items.length).toBe(2);
239
363
  for (const item of items) {
240
364
  expect(item.tagName).toBe('BUTTON');
241
365
  expect(item.tabIndex).toBe(0);
@@ -247,31 +371,14 @@ describe('InsertPanel (PB-125)', () => {
247
371
  target.dispatchEvent(new KeyboardEvent('keydown', { key, bubbles: true, cancelable: true }));
248
372
  });
249
373
  const named = (name) => [...container.querySelectorAll('button')].find((b) => b.getAttribute('aria-label') === name);
250
- it('collapses a category and reports it with aria-expanded and a count', async () => {
374
+ it('keeps every section visible without accordion controls', async () => {
375
+ localStorage.setItem('buildr.editor.insert.collapsed', '["components:content"]');
251
376
  await mount();
252
- const toggle = [...container.querySelectorAll('.bd-insert-category-toggle')].find((b) => b.textContent?.includes('Layout'));
253
- expect(toggle.getAttribute('aria-expanded')).toBe('true');
254
- expect(toggle.querySelector('.bd-insert-count')?.textContent).toBe('1');
255
- await act(async () => toggle.click());
256
- expect(toggle.getAttribute('aria-expanded')).toBe('false');
257
- const list = container.querySelector(`#${toggle.getAttribute('aria-controls')}`);
258
- expect(list.hidden).toBe(true);
259
- await act(async () => toggle.click());
260
- expect(list.hidden).toBe(false);
261
- });
262
- it('remembers the list view', async () => {
263
- localStorage.removeItem('buildr.editor.insert.view');
264
- await mount();
265
- expect(container.querySelector('.bd-insert')?.getAttribute('data-view')).toBe('grid');
266
- await act(async () => named('List view').click());
267
- expect(container.querySelector('.bd-insert')?.getAttribute('data-view')).toBe('list');
268
- expect(named('List view').getAttribute('aria-pressed')).toBe('true');
269
- expect(localStorage.getItem('buildr.editor.insert.view')).toBe('list');
270
- act(() => root.unmount());
271
- root = createRoot(container);
272
- await mount();
273
- expect(container.querySelector('.bd-insert')?.getAttribute('data-view')).toBe('list');
274
- localStorage.removeItem('buildr.editor.insert.view');
377
+ expect(container.querySelector('.bd-insert-category button')).toBeNull();
378
+ expect(container.querySelector('[aria-expanded], [aria-controls]')).toBeNull();
379
+ expect(container.querySelectorAll('.bd-insert-group ul:not([hidden])')).toHaveLength(2);
380
+ expect(button('Text')).toBeDefined();
381
+ expect(button('Box')).toBeDefined();
275
382
  });
276
383
  it('focuses the search on "/" only when no text field has focus', async () => {
277
384
  await mount();
@@ -301,6 +408,73 @@ describe('InsertPanel (PB-125)', () => {
301
408
  expect(container.querySelector('.bd-insert-empty')).toBeNull();
302
409
  });
303
410
  });
411
+ describe('InsertPanel (PB-157)', () => {
412
+ it('switches between blocks and patterns, uncontrolled', async () => {
413
+ await mount();
414
+ expect(container.querySelector('.bd-insert')?.getAttribute('data-mode')).toBe('blocks');
415
+ await switchMode('Patterns');
416
+ expect(container.querySelector('.bd-insert')?.getAttribute('data-mode')).toBe('patterns');
417
+ expect(button('Hero')).toBeDefined();
418
+ expect(button('Box')).toBeUndefined();
419
+ expect(container.querySelector('.bd-insert-category-toggle')).toBeNull();
420
+ expect(container.querySelector('input')?.getAttribute('aria-label')).toBe('Search patterns');
421
+ await switchMode('Blocks');
422
+ expect(button('Box')).toBeDefined();
423
+ });
424
+ it('follows the mode prop and reports a change', async () => {
425
+ const seen = [];
426
+ await mount(false, 'en', registry, manifest, {
427
+ mode: 'patterns',
428
+ onModeChange: (m) => seen.push(m),
429
+ });
430
+ expect(button('Hero')).toBeDefined();
431
+ await switchMode('Blocks');
432
+ expect(seen).toEqual(['blocks']);
433
+ });
434
+ it('shows search results with a plural count, highlight and category', async () => {
435
+ await mount();
436
+ await typeQuery('tex');
437
+ expect(container.querySelector('.bd-insert-results-count')?.textContent).toBe('1 result');
438
+ expect(container.querySelector('mark')?.textContent).toBe('Tex');
439
+ expect(container.querySelector('.bd-insert-result-cat')?.textContent).toBe('Content');
440
+ expect(container.querySelector('[role=group]')).toBeNull();
441
+ await typeQuery('o');
442
+ expect(container.querySelector('.bd-insert-results-count')?.textContent).toBe('2 results');
443
+ });
444
+ it('offers patterns when a search finds no block', async () => {
445
+ await mount();
446
+ await typeQuery('zzzz');
447
+ await act(async () => container.querySelector('.bd-insert-link').click());
448
+ expect(container.querySelector('.bd-insert')?.getAttribute('data-mode')).toBe('patterns');
449
+ });
450
+ it('does not restore or write recently used blocks', async () => {
451
+ localStorage.setItem('buildr.editor.insert.recent', '["buildr/text"]');
452
+ const store = await mount();
453
+ await act(async () => store.select('boxNode001'));
454
+ await click('Box');
455
+ expect(container.textContent).not.toContain('Recently used');
456
+ expect(localStorage.getItem('buildr.editor.insert.recent')).toBe('["buildr/text"]');
457
+ });
458
+ });
459
+ describe('pattern filters', () => {
460
+ it('filters pattern cards with manifest categories without accordions', async () => {
461
+ await mount(false, 'pl', registry, manifest, { mode: 'patterns' });
462
+ const chips = [
463
+ ...container.querySelectorAll('.bd-pattern-filters button'),
464
+ ];
465
+ expect(chips.map((chip) => chip.textContent)).toEqual(['Wszystkie', 'Sections', 'Moje wzorce']);
466
+ expect(chips[0]?.getAttribute('aria-pressed')).toBe('true');
467
+ expect(container.querySelectorAll('.bd-pattern-list .bd-insert-desc')).toHaveLength(2);
468
+ await act(async () => chips[2]?.click());
469
+ expect(chips[2]?.getAttribute('aria-pressed')).toBe('true');
470
+ expect(container.querySelector('.bd-pattern-list')).toBeNull();
471
+ expect(container.querySelector('.bd-insert-shell')?.textContent).toBe('Brak wzorców');
472
+ await act(async () => chips[1]?.click());
473
+ expect(container.querySelectorAll('.bd-pattern-list .bd-insert-item')).toHaveLength(2);
474
+ expect(container.querySelector('.bd-insert-category-toggle')).toBeNull();
475
+ expect(await axe(container)).toHaveNoViolations();
476
+ });
477
+ });
304
478
  describe('versions', () => {
305
479
  it('stamps what it inserts with the versions of the registry', async () => {
306
480
  const v2 = createRegistryMeta({
@@ -321,3 +495,70 @@ describe('versions', () => {
321
495
  expect(children(store, 'root')).toHaveLength(3);
322
496
  });
323
497
  });
498
+ describe('canvas insertion target', () => {
499
+ it('shows the Polish target, inserts at its index and clears it with undo/redo intact', async () => {
500
+ const store = await mount(false, 'pl');
501
+ await act(async () => {
502
+ store.select('boxNode002');
503
+ store.view
504
+ .getState()
505
+ .setInsertionTarget({ parentId: 'boxNode001', slot: 'default', index: 0 });
506
+ });
507
+ expect(container.querySelector('.bd-insert-target')?.textContent).toContain('Wstaw do: Box \u00b7 pozycja 1');
508
+ const before = store.getState().doc;
509
+ await click('Tekst');
510
+ const inserted = children(store, 'boxNode001')[0];
511
+ expect(children(store, 'boxNode001')).toEqual([inserted, 'textNodeA1']);
512
+ expect(children(store, 'boxNode002')).toEqual([]);
513
+ expect(store.view.getState().insertionTarget).toBeNull();
514
+ await act(async () => store.undo());
515
+ expect(store.getState().doc).toEqual(before);
516
+ await act(async () => store.redo());
517
+ expect(children(store, 'boxNode001')[0]).toBe(inserted);
518
+ });
519
+ it('uses the gap for patterns and blocks', async () => {
520
+ const store = await mount();
521
+ await act(async () => store.select('boxNode002'));
522
+ await click('Text');
523
+ await act(async () => store.view
524
+ .getState()
525
+ .setInsertionTarget({ parentId: 'boxNode001', slot: 'default', index: 0 }));
526
+ await click('Text');
527
+ expect(children(store, 'boxNode001')).toHaveLength(2);
528
+ expect(store.view.getState().insertionTarget).toBeNull();
529
+ await switchMode('Patterns');
530
+ await act(async () => store.view
531
+ .getState()
532
+ .setInsertionTarget({ parentId: 'boxNode001', slot: 'default', index: 1 }));
533
+ await click('Hero');
534
+ const id = children(store, 'boxNode001')[1];
535
+ expect(store.getState().doc.nodes[id]?.source?.template).toBe('site/hero');
536
+ expect(store.view.getState().insertionTarget).toBeNull();
537
+ });
538
+ it.each([
539
+ { parentId: 'missing', slot: 'default', index: 0 },
540
+ { parentId: 'boxNode001', slot: 'missing', index: 0 },
541
+ { parentId: 'boxNode001', slot: 'default', index: 99 },
542
+ { parentId: 'root', slot: 'default', index: 0 },
543
+ ])('falls back to selection for an invalid target %j', async (target) => {
544
+ const store = await mount();
545
+ await act(async () => {
546
+ store.select('boxNode002');
547
+ store.view.getState().setInsertionTarget(target);
548
+ });
549
+ await click('Text');
550
+ expect(children(store, 'boxNode002')).toHaveLength(1);
551
+ expect(children(store, 'boxNode001')).toEqual(['textNodeA1']);
552
+ expect(store.view.getState().insertionTarget).toBeNull();
553
+ });
554
+ it('clears the chip with Escape or its dismiss button', async () => {
555
+ const store = await mount();
556
+ const target = { parentId: 'boxNode001', slot: 'default', index: 0 };
557
+ await act(async () => store.view.getState().setInsertionTarget(target));
558
+ await act(async () => document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true })));
559
+ expect(store.view.getState().insertionTarget).toBeNull();
560
+ await act(async () => store.view.getState().setInsertionTarget(target));
561
+ await act(async () => container.querySelector('[aria-label="Clear insertion target"]').click());
562
+ expect(store.view.getState().insertionTarget).toBeNull();
563
+ });
564
+ });
@@ -13,5 +13,9 @@ export type Placement = {
13
13
  * ancestor in turn. With no selection, inside the root. `canInsert` decides every candidate, so the
14
14
  * result is always a position the `node.insert` command will accept.
15
15
  */
16
- export declare function placeInsertion(doc: BuilderDocument, registry: RegistryMeta, selectedId: NodeId | null, what: string | BuilderFragment): Placement;
16
+ export declare function placeInsertion(doc: BuilderDocument, registry: RegistryMeta, selectedId: NodeId | null, what: string | BuilderFragment, insertionTarget?: {
17
+ readonly parentId: NodeId;
18
+ readonly slot: string;
19
+ readonly index: number;
20
+ } | null): Placement;
17
21
  //# sourceMappingURL=target.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../../src/panels/insert/target.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EAGpB,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,qDAAqD;AACrD,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,IAAI,EAAE,MAAM,GAAG,eAAe,GAC7B,SAAS,CAsCX"}
1
+ {"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../../src/panels/insert/target.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EAGpB,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAE3B,qDAAqD;AACrD,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEhE;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,IAAI,EAAE,MAAM,GAAG,eAAe,EAC9B,eAAe,CAAC,EAAE;IAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GAAG,IAAI,GACP,SAAS,CAgDX"}
@@ -5,7 +5,7 @@ import { canInsert, createIndex, } from '@next-buildr/core';
5
5
  * ancestor in turn. With no selection, inside the root. `canInsert` decides every candidate, so the
6
6
  * result is always a position the `node.insert` command will accept.
7
7
  */
8
- export function placeInsertion(doc, registry, selectedId, what) {
8
+ export function placeInsertion(doc, registry, selectedId, what, insertionTarget) {
9
9
  const index = createIndex(doc);
10
10
  let firstReason;
11
11
  const attempt = (target) => {
@@ -15,6 +15,16 @@ export function placeInsertion(doc, registry, selectedId, what) {
15
15
  firstReason ??= verdict.error;
16
16
  return undefined;
17
17
  };
18
+ if (insertionTarget != null) {
19
+ const target = {
20
+ parentId: insertionTarget.parentId,
21
+ slot: insertionTarget.slot,
22
+ at: insertionTarget.index,
23
+ };
24
+ const found = attempt(target);
25
+ if (found !== undefined)
26
+ return found;
27
+ }
18
28
  const inside = (id) => {
19
29
  const node = Object.hasOwn(doc.nodes, id) ? doc.nodes[id] : undefined;
20
30
  if (node === undefined)
@@ -0,0 +1,21 @@
1
+ import { type PageNode } from '@next-buildr/core';
2
+ interface FieldProps {
3
+ readonly node: PageNode;
4
+ readonly disabled: boolean;
5
+ }
6
+ /** Adds " (line N)" to a CSS problem that quotes a piece of the source: the first line it appears on. */
7
+ export declare function describeCssProblem(source: string, message: string, line: string): string;
8
+ /** Why a CSS source cannot be stored; empty when it can (or when it is empty). */
9
+ export declare function cssProblems(source: string): readonly string[];
10
+ /** Custom CSS for the block: a code field that applies when it loses focus (or with Ctrl+Enter) and only when valid. */
11
+ export declare function CssField({ node, disabled }: FieldProps): import("react").JSX.Element;
12
+ /** CSS classes of the block, as a space-separated list. */
13
+ export declare function ClassesField({ node, disabled }: FieldProps): import("react").JSX.Element;
14
+ /** HTML attributes of the block as name and value rows; a row applies once its name and value are valid. */
15
+ export declare function AttributesField({ node, disabled }: FieldProps): import("react").JSX.Element;
16
+ /** What the Advanced tab says while the host has not enabled author code: a quiet note, no fields. */
17
+ export declare function AuthorOffNote({ held }: {
18
+ readonly held: boolean;
19
+ }): import("react").JSX.Element;
20
+ export {};
21
+ //# sourceMappingURL=author-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"author-fields.d.ts","sourceRoot":"","sources":["../../../src/panels/inspector/author-fields.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAa3B,UAAU,UAAU;IAClB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAID,yGAAyG;AACzG,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKxF;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAE7D;AAmCD,wHAAwH;AACxH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,UAAU,+BA8FtD;AAID,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,UAAU,+BAkE1D;AAkCD,4GAA4G;AAC5G,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,UAAU,+BAkG7D;AAED,sGAAsG;AACtG,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,+BAQjE"}