@instructure/platform-block-content-editor 1.0.0 → 2.0.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 (195) hide show
  1. package/README.md +199 -0
  2. package/dist/components/blocks/LayoutContainer/LayoutContainer.d.ts.map +1 -1
  3. package/dist/contexts/AIActionContext.d.ts +38 -0
  4. package/dist/contexts/AIActionContext.d.ts.map +1 -0
  5. package/dist/contexts/BlockEditorApiContext.d.ts +78 -0
  6. package/dist/contexts/BlockEditorApiContext.d.ts.map +1 -1
  7. package/dist/contexts/RichTextEditorContext.d.ts +28 -0
  8. package/dist/contexts/RichTextEditorContext.d.ts.map +1 -0
  9. package/dist/editor/BlockContentEditor.d.ts +43 -0
  10. package/dist/editor/BlockContentEditor.d.ts.map +1 -0
  11. package/dist/editor/ai/BlockAIMenu.d.ts +17 -0
  12. package/dist/editor/ai/BlockAIMenu.d.ts.map +1 -0
  13. package/dist/editor/ai/BlockAIMenuContent.d.ts +17 -0
  14. package/dist/editor/ai/BlockAIMenuContent.d.ts.map +1 -0
  15. package/dist/editor/ai/PreviewBlockModal.d.ts +29 -0
  16. package/dist/editor/ai/PreviewBlockModal.d.ts.map +1 -0
  17. package/dist/editor/ai/aiMenuStyles.d.ts +23 -0
  18. package/dist/editor/ai/aiMenuStyles.d.ts.map +1 -0
  19. package/dist/editor/ai/aiTranslations.d.ts +79 -0
  20. package/dist/editor/ai/aiTranslations.d.ts.map +1 -0
  21. package/dist/editor/ai/aiTypes.d.ts +13 -0
  22. package/dist/editor/ai/aiTypes.d.ts.map +1 -0
  23. package/dist/editor/ai/constants.d.ts +8 -0
  24. package/dist/editor/ai/constants.d.ts.map +1 -0
  25. package/dist/editor/ai/index.d.ts +7 -0
  26. package/dist/editor/ai/index.d.ts.map +1 -0
  27. package/dist/editor/ai/useBlockAIPopover.d.ts +30 -0
  28. package/dist/editor/ai/useBlockAIPopover.d.ts.map +1 -0
  29. package/dist/editor/ai/useGenerateAltText.d.ts +11 -0
  30. package/dist/editor/ai/useGenerateAltText.d.ts.map +1 -0
  31. package/dist/editor/canvas/DesignerArea.d.ts +38 -0
  32. package/dist/editor/canvas/DesignerArea.d.ts.map +1 -0
  33. package/dist/editor/canvas/DesignerCanvas.d.ts +35 -0
  34. package/dist/editor/canvas/DesignerCanvas.d.ts.map +1 -0
  35. package/dist/editor/canvas/DropGridOverlay.d.ts +24 -0
  36. package/dist/editor/canvas/DropGridOverlay.d.ts.map +1 -0
  37. package/dist/editor/canvas/GridDndContext.d.ts +11 -0
  38. package/dist/editor/canvas/GridDndContext.d.ts.map +1 -0
  39. package/dist/editor/canvas/GridDndProvider.d.ts +17 -0
  40. package/dist/editor/canvas/GridDndProvider.d.ts.map +1 -0
  41. package/dist/editor/canvas/GridItemChild.d.ts +44 -0
  42. package/dist/editor/canvas/GridItemChild.d.ts.map +1 -0
  43. package/dist/editor/canvas/GridItemContainer.d.ts +49 -0
  44. package/dist/editor/canvas/GridItemContainer.d.ts.map +1 -0
  45. package/dist/editor/canvas/GridViewer.d.ts +114 -0
  46. package/dist/editor/canvas/GridViewer.d.ts.map +1 -0
  47. package/dist/editor/canvas/TwoColumnDesigner.d.ts +34 -0
  48. package/dist/editor/canvas/TwoColumnDesigner.d.ts.map +1 -0
  49. package/dist/editor/canvas/canvasStyles.d.ts +36 -0
  50. package/dist/editor/canvas/canvasStyles.d.ts.map +1 -0
  51. package/dist/editor/canvas/canvasTranslations.d.ts +64 -0
  52. package/dist/editor/canvas/canvasTranslations.d.ts.map +1 -0
  53. package/dist/editor/canvas/index.d.ts +5 -0
  54. package/dist/editor/canvas/index.d.ts.map +1 -0
  55. package/dist/editor/document/constants.d.ts +23 -0
  56. package/dist/editor/document/constants.d.ts.map +1 -0
  57. package/dist/editor/document/designerItemAction.d.ts +16 -0
  58. package/dist/editor/document/designerItemAction.d.ts.map +1 -0
  59. package/dist/editor/document/utils.d.ts +172 -0
  60. package/dist/editor/document/utils.d.ts.map +1 -0
  61. package/dist/editor/document/utils.test.d.ts +2 -0
  62. package/dist/editor/document/utils.test.d.ts.map +1 -0
  63. package/dist/editor/history/types.d.ts +25 -0
  64. package/dist/editor/history/types.d.ts.map +1 -0
  65. package/dist/editor/history/undoRedoManager.d.ts +3 -0
  66. package/dist/editor/history/undoRedoManager.d.ts.map +1 -0
  67. package/dist/editor/history/undoRedoManager.test.d.ts +2 -0
  68. package/dist/editor/history/undoRedoManager.test.d.ts.map +1 -0
  69. package/dist/editor/history/useUndoRedo.d.ts +11 -0
  70. package/dist/editor/history/useUndoRedo.d.ts.map +1 -0
  71. package/dist/editor/history/useUndoRedo.test.d.ts +2 -0
  72. package/dist/editor/history/useUndoRedo.test.d.ts.map +1 -0
  73. package/dist/editor/index.d.ts +16 -0
  74. package/dist/editor/index.d.ts.map +1 -0
  75. package/dist/editor/preview/PreviewArea.d.ts +28 -0
  76. package/dist/editor/preview/PreviewArea.d.ts.map +1 -0
  77. package/dist/editor/preview/constants.d.ts +9 -0
  78. package/dist/editor/preview/constants.d.ts.map +1 -0
  79. package/dist/editor/preview/index.d.ts +3 -0
  80. package/dist/editor/preview/index.d.ts.map +1 -0
  81. package/dist/editor/preview/previewStyles.d.ts +19 -0
  82. package/dist/editor/preview/previewStyles.d.ts.map +1 -0
  83. package/dist/editor/sidebar/DesignerNav.d.ts +28 -0
  84. package/dist/editor/sidebar/DesignerNav.d.ts.map +1 -0
  85. package/dist/editor/sidebar/form/ComponentEditorForm.d.ts +12 -0
  86. package/dist/editor/sidebar/form/ComponentEditorForm.d.ts.map +1 -0
  87. package/dist/editor/sidebar/form/FormFieldWrapper.d.ts +13 -0
  88. package/dist/editor/sidebar/form/FormFieldWrapper.d.ts.map +1 -0
  89. package/dist/editor/sidebar/form/fieldRendererUtils.d.ts +24 -0
  90. package/dist/editor/sidebar/form/fieldRendererUtils.d.ts.map +1 -0
  91. package/dist/editor/sidebar/form/fieldRenderers.d.ts +6 -0
  92. package/dist/editor/sidebar/form/fieldRenderers.d.ts.map +1 -0
  93. package/dist/editor/sidebar/form/formTranslations.d.ts +92 -0
  94. package/dist/editor/sidebar/form/formTranslations.d.ts.map +1 -0
  95. package/dist/editor/sidebar/form/formUtils.d.ts +7 -0
  96. package/dist/editor/sidebar/form/formUtils.d.ts.map +1 -0
  97. package/dist/editor/sidebar/form/index.d.ts +7 -0
  98. package/dist/editor/sidebar/form/index.d.ts.map +1 -0
  99. package/dist/editor/sidebar/form/knowledgeCheckEditor.d.ts +10 -0
  100. package/dist/editor/sidebar/form/knowledgeCheckEditor.d.ts.map +1 -0
  101. package/dist/editor/sidebar/form/renderers/AltTextFieldRenderer.d.ts +4 -0
  102. package/dist/editor/sidebar/form/renderers/AltTextFieldRenderer.d.ts.map +1 -0
  103. package/dist/editor/sidebar/form/renderers/AnswerArrayFieldRenderer.d.ts +4 -0
  104. package/dist/editor/sidebar/form/renderers/AnswerArrayFieldRenderer.d.ts.map +1 -0
  105. package/dist/editor/sidebar/form/renderers/ObjectArrayFieldRenderer.d.ts +4 -0
  106. package/dist/editor/sidebar/form/renderers/ObjectArrayFieldRenderer.d.ts.map +1 -0
  107. package/dist/editor/sidebar/form/uploaders/FileUploader.d.ts +24 -0
  108. package/dist/editor/sidebar/form/uploaders/FileUploader.d.ts.map +1 -0
  109. package/dist/editor/sidebar/form/uploaders/ImageUploader.d.ts +8 -0
  110. package/dist/editor/sidebar/form/uploaders/ImageUploader.d.ts.map +1 -0
  111. package/dist/editor/sidebar/form/uploaders/VideoUploader.d.ts +8 -0
  112. package/dist/editor/sidebar/form/uploaders/VideoUploader.d.ts.map +1 -0
  113. package/dist/editor/sidebar/panel/DesignerSideBar.d.ts +18 -0
  114. package/dist/editor/sidebar/panel/DesignerSideBar.d.ts.map +1 -0
  115. package/dist/editor/sidebar/panel/MobileToolOverlay.d.ts +13 -0
  116. package/dist/editor/sidebar/panel/MobileToolOverlay.d.ts.map +1 -0
  117. package/dist/editor/sidebar/panel/MobileToolbar.d.ts +10 -0
  118. package/dist/editor/sidebar/panel/MobileToolbar.d.ts.map +1 -0
  119. package/dist/editor/sidebar/panel/ToolBody.d.ts +11 -0
  120. package/dist/editor/sidebar/panel/ToolBody.d.ts.map +1 -0
  121. package/dist/editor/sidebar/panel/ToolContentContainer.d.ts +27 -0
  122. package/dist/editor/sidebar/panel/ToolContentContainer.d.ts.map +1 -0
  123. package/dist/editor/sidebar/panel/ToolHeader.d.ts +24 -0
  124. package/dist/editor/sidebar/panel/ToolHeader.d.ts.map +1 -0
  125. package/dist/editor/sidebar/panel/ToolHeaderActionsContext.d.ts +8 -0
  126. package/dist/editor/sidebar/panel/ToolHeaderActionsContext.d.ts.map +1 -0
  127. package/dist/editor/sidebar/panel/ToolIconButtons.d.ts +19 -0
  128. package/dist/editor/sidebar/panel/ToolIconButtons.d.ts.map +1 -0
  129. package/dist/editor/sidebar/panel/ToolWrapper.d.ts +16 -0
  130. package/dist/editor/sidebar/panel/ToolWrapper.d.ts.map +1 -0
  131. package/dist/editor/sidebar/panel/constants.d.ts +23 -0
  132. package/dist/editor/sidebar/panel/constants.d.ts.map +1 -0
  133. package/dist/editor/sidebar/panel/index.d.ts +5 -0
  134. package/dist/editor/sidebar/panel/index.d.ts.map +1 -0
  135. package/dist/editor/sidebar/panel/panelStyles.d.ts +29 -0
  136. package/dist/editor/sidebar/panel/panelStyles.d.ts.map +1 -0
  137. package/dist/editor/sidebar/panel/types.d.ts +83 -0
  138. package/dist/editor/sidebar/panel/types.d.ts.map +1 -0
  139. package/dist/editor/sidebar/panel/useFocusReturn.d.ts +8 -0
  140. package/dist/editor/sidebar/panel/useFocusReturn.d.ts.map +1 -0
  141. package/dist/editor/sidebar/sidebarTranslations.d.ts +53 -0
  142. package/dist/editor/sidebar/sidebarTranslations.d.ts.map +1 -0
  143. package/dist/editor/sidebar/tray/BlockTray.d.ts +30 -0
  144. package/dist/editor/sidebar/tray/BlockTray.d.ts.map +1 -0
  145. package/dist/editor/sidebar/tray/ComponentsTray.d.ts +4 -0
  146. package/dist/editor/sidebar/tray/ComponentsTray.d.ts.map +1 -0
  147. package/dist/editor/sidebar/tray/InteractiveTray.d.ts +4 -0
  148. package/dist/editor/sidebar/tray/InteractiveTray.d.ts.map +1 -0
  149. package/dist/editor/sidebar/tray/LayoutTray.d.ts +4 -0
  150. package/dist/editor/sidebar/tray/LayoutTray.d.ts.map +1 -0
  151. package/dist/editor/sidebar/tray/SharedTrayComponents.d.ts +64 -0
  152. package/dist/editor/sidebar/tray/SharedTrayComponents.d.ts.map +1 -0
  153. package/dist/editor/sidebar/tray/TemplatesPanel.d.ts +4 -0
  154. package/dist/editor/sidebar/tray/TemplatesPanel.d.ts.map +1 -0
  155. package/dist/editor/sidebar/tray/TrayDragLayer.d.ts +14 -0
  156. package/dist/editor/sidebar/tray/TrayDragLayer.d.ts.map +1 -0
  157. package/dist/editor/sidebar/tray/blockDefinitions.d.ts +11 -0
  158. package/dist/editor/sidebar/tray/blockDefinitions.d.ts.map +1 -0
  159. package/dist/editor/sidebar/tray/index.d.ts +9 -0
  160. package/dist/editor/sidebar/tray/index.d.ts.map +1 -0
  161. package/dist/editor/sidebar/tray/trayStyles.d.ts +20 -0
  162. package/dist/editor/sidebar/tray/trayStyles.d.ts.map +1 -0
  163. package/dist/editor/sidebar/useDesignerSelectionFocus.d.ts +51 -0
  164. package/dist/editor/sidebar/useDesignerSelectionFocus.d.ts.map +1 -0
  165. package/dist/editor/state/applyTemplatePatch.d.ts +46 -0
  166. package/dist/editor/state/applyTemplatePatch.d.ts.map +1 -0
  167. package/dist/editor/state/applyTemplatePatch.test.d.ts +2 -0
  168. package/dist/editor/state/applyTemplatePatch.test.d.ts.map +1 -0
  169. package/dist/editor/state/useBlockEditorState.d.ts +57 -0
  170. package/dist/editor/state/useBlockEditorState.d.ts.map +1 -0
  171. package/dist/editor/state/useBlockEditorState.test.d.ts +2 -0
  172. package/dist/editor/state/useBlockEditorState.test.d.ts.map +1 -0
  173. package/dist/editor/validation/templateDataValidator.d.ts +48 -0
  174. package/dist/editor/validation/templateDataValidator.d.ts.map +1 -0
  175. package/dist/editor/validation/templateDataValidator.test.d.ts +2 -0
  176. package/dist/editor/validation/templateDataValidator.test.d.ts.map +1 -0
  177. package/dist/index.d.ts +4 -1
  178. package/dist/index.d.ts.map +1 -1
  179. package/dist/index.js +14270 -1868
  180. package/dist/registry/blockRegistry.d.ts +8 -0
  181. package/dist/registry/blockRegistry.d.ts.map +1 -1
  182. package/dist/registry/defineBlock.d.ts +5 -0
  183. package/dist/registry/defineBlock.d.ts.map +1 -1
  184. package/dist/schema/index.d.ts +1 -1
  185. package/dist/schema/index.d.ts.map +1 -1
  186. package/dist/schema/zodExtensions.d.ts +2 -0
  187. package/dist/schema/zodExtensions.d.ts.map +1 -1
  188. package/dist/utils/useMediaQuery.d.ts +7 -0
  189. package/dist/utils/useMediaQuery.d.ts.map +1 -0
  190. package/dist/viewer/Viewer.d.ts +3 -1
  191. package/dist/viewer/Viewer.d.ts.map +1 -1
  192. package/dist/viewer/viewerStyles.d.ts +12 -0
  193. package/dist/viewer/viewerStyles.d.ts.map +1 -0
  194. package/locales/en.json +123 -1
  195. package/package.json +34 -1
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Strings the package owns for the settings form (the schema-driven block editor). Consumed
3
+ * via `useBlockTranslations(DesignerFormEnglish)`, the same mechanism blocks and the designer
4
+ * chrome use; the host overrides by placing a `BlockTranslationsProvider` above the sidebar.
5
+ *
6
+ * `%{name}` markers are interpolated by `translate('<key>', { … })`.
7
+ */
8
+ export interface DesignerFormTranslations {
9
+ /** Array-item paging: previous button. */
10
+ previous: string;
11
+ /** Array-item paging: next button. */
12
+ next: string;
13
+ /** Array-item title/subtitle, e.g. "Accordion 2". Interpolates `%{itemName}` and `%{number}`. */
14
+ itemSubtitle: string;
15
+ /** Fallback noun for an array item with no configured name. */
16
+ defaultItemName: string;
17
+ /** Drag-handle screen-reader label for an array item. */
18
+ dragToReorderItem: string;
19
+ /** Edit-button screen-reader label for an array item. */
20
+ editItem: string;
21
+ /** Remove-button screen-reader label for an array item. */
22
+ removeItem: string;
23
+ /** Manage-layer collapse row label, e.g. "Manage Accordions". */
24
+ manageLabel: string;
25
+ /** Manage-layer collapse row count, e.g. "6 Accordions". */
26
+ countLabel: string;
27
+ /** Empty-state text for an array-of-objects field. */
28
+ noItemsYet: string;
29
+ /** Add-button label for an array-of-objects field, e.g. "Add accordion". */
30
+ addItem: string;
31
+ /** True/false question: the True answer label. */
32
+ answerTrue: string;
33
+ /** True/false question: the False answer label. */
34
+ answerFalse: string;
35
+ /** Multiple-choice answer label, e.g. "Option A". */
36
+ optionLabel: string;
37
+ /** Multiple-choice answer remove-button screen-reader label. */
38
+ removeOption: string;
39
+ /** Multiple-choice add-answer button. */
40
+ addOption: string;
41
+ /** Primitive string-array item label, e.g. "Item 1". */
42
+ arrayItemLabel: string;
43
+ /** Primitive string-array item remove button. */
44
+ remove: string;
45
+ /** Primitive string-array add button. */
46
+ addPrimitiveItem: string;
47
+ /** File-drop zone secondary instruction. */
48
+ dragAndDropOrBrowse: string;
49
+ /** File-drop zone button. */
50
+ chooseFile: string;
51
+ /** Shown while an existing asset's preview is loading. */
52
+ loadingPreview: string;
53
+ /** Generic upload-failure message. */
54
+ uploadFailed: string;
55
+ /** Image uploader: drop-zone heading. */
56
+ uploadImage: string;
57
+ /** Image uploader: accepted types line. */
58
+ imageAcceptedTypes: string;
59
+ /** Image uploader: max-size line. */
60
+ imageMaxSize: string;
61
+ /** Image uploader: replace-button screen-reader label. */
62
+ replaceImage: string;
63
+ /** Image uploader: uploading state. */
64
+ uploadingImage: string;
65
+ /** Image uploader: over-size error. */
66
+ imageSizeError: string;
67
+ /** Video uploader: drop-zone heading. */
68
+ uploadVideo: string;
69
+ /** Video uploader: accepted types line. */
70
+ videoAcceptedTypes: string;
71
+ /** Video uploader: max-size line. */
72
+ videoMaxSize: string;
73
+ /** Video uploader: replace-button screen-reader label. */
74
+ replaceVideo: string;
75
+ /** Video uploader: uploading state. */
76
+ uploadingVideo: string;
77
+ /** Video uploader: over-size error. */
78
+ videoSizeError: string;
79
+ /** Video uploader: source toggle label. */
80
+ videoSource: string;
81
+ /** Video uploader: file source option. */
82
+ sourceFile: string;
83
+ /** Video uploader: link source option. */
84
+ sourceLink: string;
85
+ /** Video uploader: link input label. */
86
+ videoLink: string;
87
+ /** Video uploader: link input placeholder. */
88
+ videoLinkPlaceholder: string;
89
+ }
90
+ /** English bundled with this package — also the source for `locales/en.json`. */
91
+ export declare const DesignerFormEnglish: DesignerFormTranslations;
92
+ //# sourceMappingURL=formTranslations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formTranslations.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/form/formTranslations.ts"],"names":[],"mappings":"AAkBA;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACvC,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,iGAAiG;IACjG,YAAY,EAAE,MAAM,CAAA;IACpB,+DAA+D;IAC/D,eAAe,EAAE,MAAM,CAAA;IACvB,yDAAyD;IACzD,iBAAiB,EAAE,MAAM,CAAA;IACzB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAA;IAClB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAA;IACnB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAA;IAClB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAA;IAClB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAA;IACnB,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAA;IACtB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,CAAA;IACxB,4CAA4C;IAC5C,mBAAmB,EAAE,MAAM,CAAA;IAC3B,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAA;IACtB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,2CAA2C;IAC3C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAA;IACpB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,2CAA2C;IAC3C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAA;IACpB,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAA;IACpB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAA;IACnB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,EAAE,wBAyCjC,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The one-based subtitle for an array-item edit view (e.g. "Accordion 2"), reusing the same
3
+ * `itemSubtitle` string as an item's inline display label so the list and the paging header
4
+ * agree. `translate` is the resolver from `useBlockTranslations(DesignerFormEnglish)`.
5
+ */
6
+ export declare function getItemSubtitle(translate: (key: 'itemSubtitle', vars?: Record<string, unknown>) => string, fieldName: string, itemName: string | undefined, fieldLabel: string | undefined, index: number): string;
7
+ //# sourceMappingURL=formUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formUtils.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/form/formUtils.ts"],"names":[],"mappings":"AAkBA;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,EAC1E,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,MAAM,GACZ,MAAM,CAKR"}
@@ -0,0 +1,7 @@
1
+ export { ComponentEditorForm, type ComponentEditorFormProps } from './ComponentEditorForm';
2
+ export { FormFieldWrapper } from './FormFieldWrapper';
3
+ export { fieldRendererRegistry, getFieldRenderer } from './fieldRenderers';
4
+ export type { FieldRenderFn, FieldRenderProps } from './fieldRendererUtils';
5
+ export { getItemSubtitle } from './formUtils';
6
+ export { DesignerFormEnglish, type DesignerFormTranslations } from './formTranslations';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/form/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC1E,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { KnowledgeCheckAnswer, QuestionType } from '../../../components/blocks/KnowledgeCheck';
2
+ export type { KnowledgeCheckAnswer, QuestionType };
3
+ /** Question type: Multiple choice or True/False. */
4
+ export declare const QuestionTypeEnum: {
5
+ readonly MULTIPLE_CHOICE: "Multiple choice";
6
+ readonly TRUE_FALSE: "True or false";
7
+ };
8
+ /** Default answers for a new multiple-choice question in the editor. */
9
+ export declare const DEFAULT_MULTIPLE_CHOICE_ANSWERS: KnowledgeCheckAnswer[];
10
+ //# sourceMappingURL=knowledgeCheckEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledgeCheckEditor.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/form/knowledgeCheckEditor.ts"],"names":[],"mappings":"AAkBA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAA;AAEnG,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,CAAA;AAElD,oDAAoD;AACpD,eAAO,MAAM,gBAAgB;;;CAGoB,CAAA;AAEjD,wEAAwE;AACxE,eAAO,MAAM,+BAA+B,EAAE,oBAAoB,EAIjE,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { ReactElement } from 'react';
2
+ import { FieldRenderProps } from '../fieldRendererUtils';
3
+ export declare function AltTextFieldRenderer({ metadata, control, fieldError, onFieldChange, setValue, disabled, }: FieldRenderProps): ReactElement;
4
+ //# sourceMappingURL=AltTextFieldRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AltTextFieldRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/editor/sidebar/form/renderers/AltTextFieldRenderer.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AASzC,OAAO,EAAE,KAAK,gBAAgB,EAAoB,MAAM,uBAAuB,CAAA;AAE/E,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,OAAO,EACP,UAAU,EACV,aAAa,EACb,QAAQ,EACR,QAAQ,GACT,EAAE,gBAAgB,GAAG,YAAY,CAuGjC"}
@@ -0,0 +1,4 @@
1
+ import { ReactElement } from 'react';
2
+ import { FieldRenderProps } from '../fieldRendererUtils';
3
+ export declare function AnswerArrayFieldRenderer({ metadata, control, fieldError, onFieldChange, }: FieldRenderProps): ReactElement;
4
+ //# sourceMappingURL=AnswerArrayFieldRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnswerArrayFieldRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/editor/sidebar/form/renderers/AnswerArrayFieldRenderer.tsx"],"names":[],"mappings":"AA2BA,OAAO,EAAE,KAAK,YAAY,EAA4B,MAAM,OAAO,CAAA;AAQnE,OAAO,EAAE,KAAK,gBAAgB,EAAgC,MAAM,uBAAuB,CAAA;AAU3F,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,OAAO,EACP,UAAU,EACV,aAAa,GACd,EAAE,gBAAgB,GAAG,YAAY,CAmLjC"}
@@ -0,0 +1,4 @@
1
+ import { ReactElement } from 'react';
2
+ import { FieldRenderProps } from '../fieldRendererUtils';
3
+ export declare function ObjectArrayFieldRenderer({ metadata, control, fieldError, onFieldChange, isManageLayer, }: FieldRenderProps): ReactElement;
4
+ //# sourceMappingURL=ObjectArrayFieldRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectArrayFieldRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/editor/sidebar/form/renderers/ObjectArrayFieldRenderer.tsx"],"names":[],"mappings":"AAyCA,OAAO,EAAsB,KAAK,YAAY,EAAwB,MAAM,OAAO,CAAA;AAWnF,OAAO,EAAE,KAAK,gBAAgB,EAAgC,MAAM,uBAAuB,CAAA;AAuG3F,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,OAAO,EACP,UAAU,EACV,aAAa,EACb,aAAa,GACd,EAAE,gBAAgB,GAAG,YAAY,CAwIjC"}
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from 'react';
2
+ import { Control, FieldValues } from 'react-hook-form';
3
+ import { ResolvedUploadedFile } from '../../../../contexts/BlockEditorApiContext';
4
+ export interface FileUploaderConfig {
5
+ acceptedExtensions: string[];
6
+ maxFileSizeBytes: number;
7
+ uploadLabel: string;
8
+ acceptedTypesLabel: string;
9
+ maxSizeLabel: string;
10
+ replaceScreenReaderLabel: string;
11
+ uploadingLabel: string;
12
+ sizeErrorLabel: string;
13
+ }
14
+ export type FileUploaderMediaType = 'image' | 'video';
15
+ export interface FileUploaderProps {
16
+ control: Control<FieldValues>;
17
+ onFieldChange: () => void;
18
+ config: FileUploaderConfig;
19
+ renderPreview: (file: ResolvedUploadedFile) => ReactNode;
20
+ header?: ReactNode;
21
+ mediaType?: FileUploaderMediaType;
22
+ }
23
+ export declare function FileUploader({ control, onFieldChange, config, renderPreview, header, mediaType, }: FileUploaderProps): import("react/jsx-runtime").JSX.Element;
24
+ //# sourceMappingURL=FileUploader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/editor/sidebar/form/uploaders/FileUploader.tsx"],"names":[],"mappings":"AAyBA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,OAAO,CAAA;AACxD,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,WAAW,EAAiB,MAAM,iBAAiB,CAAA;AAE/E,OAAO,EACL,KAAK,oBAAoB,EAG1B,MAAM,4CAA4C,CAAA;AAGnD,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,wBAAwB,EAAE,MAAM,CAAA;IAChC,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,OAAO,CAAA;AAErD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC7B,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,MAAM,EAAE,kBAAkB,CAAA;IAC1B,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,SAAS,CAAA;IACxD,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,SAAS,CAAC,EAAE,qBAAqB,CAAA;CAClC;AAOD,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,aAAa,EACb,MAAM,EACN,aAAa,EACb,MAAM,EACN,SAAmB,GACpB,EAAE,iBAAiB,2CAgInB"}
@@ -0,0 +1,8 @@
1
+ import { Control, FieldValues } from 'react-hook-form';
2
+ interface ImageUploaderProps {
3
+ control: Control<FieldValues>;
4
+ onFieldChange: () => void;
5
+ }
6
+ export declare function ImageUploader({ control, onFieldChange }: ImageUploaderProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=ImageUploader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageUploader.d.ts","sourceRoot":"","sources":["../../../../../src/editor/sidebar/form/uploaders/ImageUploader.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAQ3D,UAAU,kBAAkB;IAC1B,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC7B,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,kBAAkB,2CA2C3E"}
@@ -0,0 +1,8 @@
1
+ import { Control, FieldValues } from 'react-hook-form';
2
+ interface VideoUploaderProps {
3
+ control: Control<FieldValues>;
4
+ onFieldChange: () => void;
5
+ }
6
+ export declare function VideoUploader({ control, onFieldChange }: VideoUploaderProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=VideoUploader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoUploader.d.ts","sourceRoot":"","sources":["../../../../../src/editor/sidebar/form/uploaders/VideoUploader.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,OAAO,EAAc,KAAK,WAAW,EAAiB,MAAM,iBAAiB,CAAA;AAS3F,UAAU,kBAAkB;IAC1B,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAC7B,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,kBAAkB,2CAsF3E"}
@@ -0,0 +1,18 @@
1
+ import { Ref } from 'react';
2
+ import { DesignerSideBarProps, ToolPanelHandle } from './types';
3
+ /**
4
+ * The designer sidebar: a collapsible tool panel on desktop (icon rail + resizable content)
5
+ * and a slide-up overlay + bottom toolbar on mobile. Built-in trays and any host tools are
6
+ * supplied through `tools`. Each open tool gets its own `DesignerNavProvider` (keyed by tool
7
+ * id, so switching tools resets navigation) and `ToolHeaderActionsProvider`.
8
+ */
9
+ declare function DesignerSideBarInner<ID extends string>({ tools: unsortedTools, initialSelectedToolId, height, toolStyle, isFullScreenMode, hasExpandPanelButton, onToolChange, onFullWidthChange, isPanelResizeEnabled, selectedToolId: controlledSelectedToolId, onSelectedToolIdChange, view, onViewChange, renderContentInActiveLayoutOnly, controlledExpandedWidth, contentKey, onBack, }: DesignerSideBarProps<ID>, ref: Ref<ToolPanelHandle<ID>>): import("react/jsx-runtime").JSX.Element;
10
+ /**
11
+ * `forwardRef` erases the generic, so re-assert it on the exported component: callers keep
12
+ * `Tool<ID>` inference and a typed imperative handle.
13
+ */
14
+ export declare const DesignerSideBar: <ID extends string>(props: DesignerSideBarProps<ID> & {
15
+ ref?: Ref<ToolPanelHandle<ID>>;
16
+ }) => ReturnType<typeof DesignerSideBarInner>;
17
+ export {};
18
+ //# sourceMappingURL=DesignerSideBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesignerSideBar.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/DesignerSideBar.tsx"],"names":[],"mappings":"AAuBA,OAAO,EAIL,KAAK,GAAG,EAQT,MAAM,OAAO,CAAA;AAYd,OAAO,KAAK,EAAE,oBAAoB,EAAQ,eAAe,EAAE,MAAM,SAAS,CAAA;AA6C1E;;;;;GAKG;AACH,iBAAS,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAC7C,EACE,KAAK,EAAE,aAAa,EACpB,qBAAqB,EACrB,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,oBAA2B,EAC3B,cAAc,EAAE,wBAAwB,EACxC,sBAAsB,EACtB,IAAI,EACJ,YAAY,EACZ,+BAAsC,EACtC,uBAAuB,EACvB,UAAU,EACV,MAAM,GACP,EAAE,oBAAoB,CAAC,EAAE,CAAC,EAC3B,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,2CA0W9B;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAuC,CAAC,EAAE,SAAS,MAAM,EACnF,KAAK,EAAE,oBAAoB,CAAC,EAAE,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAA;CAAE,KACjE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { ReactNode } from 'react';
2
+ interface MobileToolOverlayProps {
3
+ isOpen: boolean;
4
+ children: ReactNode;
5
+ }
6
+ /**
7
+ * The compact-viewport slide-up sheet holding a tool's content. Carries the
8
+ * `data-tool-panel` marker so the canvas↔panel focus coordination treats focus moving into
9
+ * it as staying "in the panel" (see `useDesignerSelectionFocus`).
10
+ */
11
+ export declare function MobileToolOverlay({ isOpen, children }: MobileToolOverlayProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=MobileToolOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileToolOverlay.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/MobileToolOverlay.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAUrD,UAAU,sBAAsB;IAC9B,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CAU7E"}
@@ -0,0 +1,10 @@
1
+ import { Tool } from './types';
2
+ interface MobileToolbarProps<ID extends string> {
3
+ tools: Tool<ID>[];
4
+ selectedToolId: string | null;
5
+ onToolClick: (toolId: string) => void;
6
+ }
7
+ /** The fixed bottom toolbar shown on compact viewports in place of the desktop rail. */
8
+ export declare function MobileToolbar<ID extends string>({ tools, selectedToolId, onToolClick, }: MobileToolbarProps<ID>): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=MobileToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileToolbar.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/MobileToolbar.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC,UAAU,kBAAkB,CAAC,EAAE,SAAS,MAAM;IAC5C,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,EAC/C,KAAK,EACL,cAAc,EACd,WAAW,GACZ,EAAE,kBAAkB,CAAC,EAAE,CAAC,2CAWxB"}
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ import { ToolStyle } from './types';
3
+ interface ToolBodyProps {
4
+ children: ReactNode;
5
+ darkSurface?: boolean;
6
+ toolStyle?: ToolStyle;
7
+ }
8
+ /** The scrollable content region below the header. */
9
+ export declare function ToolBody({ children, darkSurface, toolStyle }: ToolBodyProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=ToolBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolBody.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/ToolBody.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,UAAU,aAAa;IACrB,QAAQ,EAAE,SAAS,CAAA;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,sDAAsD;AACtD,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAmB,EAAE,SAAS,EAAE,EAAE,aAAa,2CAanF"}
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from 'react';
2
+ import { ToolStyle, ToolVariant } from './types';
3
+ interface ToolContentContainerProps {
4
+ id?: string;
5
+ headingId?: string;
6
+ icon: ReactNode;
7
+ title: string;
8
+ variant?: ToolVariant;
9
+ onClose?: () => void;
10
+ onBack?: () => void;
11
+ onToggleFullWidth?: () => void;
12
+ isFullWidth?: boolean;
13
+ isFullScreen?: boolean;
14
+ toolStyle?: ToolStyle;
15
+ skipInitialFocus?: boolean;
16
+ onAfterInitialFocus?: () => void;
17
+ children: ReactNode;
18
+ }
19
+ /**
20
+ * Wraps a tool's content with the header and scrollable body, and owns focus lifecycle:
21
+ * focus the close button on open (or the container when there is none), the back button on
22
+ * forward navigation, the close button on backward navigation. Escape closes the tool
23
+ * (ignoring Escape bubbling up from portaled descendants like popovers).
24
+ */
25
+ export declare function ToolContentContainer({ id, headingId, icon, title, variant, onClose, onBack, onToggleFullWidth, isFullWidth, isFullScreen, toolStyle, skipInitialFocus, onAfterInitialFocus, children, }: ToolContentContainerProps): import("react/jsx-runtime").JSX.Element;
26
+ export {};
27
+ //# sourceMappingURL=ToolContentContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolContentContainer.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/ToolContentContainer.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,SAAS,EAAkC,MAAM,OAAO,CAAA;AAMtE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErD,UAAU,yBAAyB;IACjC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;IAChC,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,EAAE,EACF,SAAS,EACT,IAAI,EACJ,KAAK,EACL,OAAmB,EACnB,OAAO,EACP,MAAM,EACN,iBAAiB,EACjB,WAAmB,EACnB,YAAoB,EACpB,SAAS,EACT,gBAAwB,EACxB,mBAAmB,EACnB,QAAQ,GACT,EAAE,yBAAyB,2CA+G3B"}
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from 'react';
2
+ interface ToolHeaderProps {
3
+ headingId?: string;
4
+ icon: ReactNode;
5
+ title: string;
6
+ subtitle?: string;
7
+ showBackButton?: boolean;
8
+ onBack?: () => void;
9
+ onClose?: () => void;
10
+ onToggleFullWidth?: () => void;
11
+ isFullWidth?: boolean;
12
+ headerActions?: ReactNode;
13
+ darkSurface?: boolean;
14
+ closeButtonElementRef?: (el: Element | null) => void;
15
+ backButtonElementRef?: (el: Element | null) => void;
16
+ }
17
+ /**
18
+ * The tool header: a back button (or the tool icon) beside the title, and a right cluster
19
+ * of host-injected `headerActions`, the full-width toggle, and the close button. The title
20
+ * shows `subtitle` when navigated into a sub-view, otherwise the tool `title`.
21
+ */
22
+ export declare function ToolHeader({ headingId, icon, title, subtitle, showBackButton, onBack, onClose, onToggleFullWidth, isFullWidth, headerActions, darkSurface, closeButtonElementRef, backButtonElementRef, }: ToolHeaderProps): import("react/jsx-runtime").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=ToolHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolHeader.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/ToolHeader.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAYrD,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAA;IACpD,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAA;CACpD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,cAAc,EACd,MAAM,EACN,OAAO,EACP,iBAAiB,EACjB,WAAmB,EACnB,aAAa,EACb,WAAmB,EACnB,qBAAqB,EACrB,oBAAoB,GACrB,EAAE,eAAe,2CA2EjB"}
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from 'react';
2
+ import { ToolHeaderActionsContextValue } from './types';
3
+ export declare function ToolHeaderActionsProvider({ children }: {
4
+ children: ReactNode;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ /** Access the header-action slot. Throws outside a `ToolHeaderActionsProvider`. */
7
+ export declare function useToolHeaderActions(): ToolHeaderActionsContextValue;
8
+ //# sourceMappingURL=ToolHeaderActionsContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolHeaderActionsContext.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/ToolHeaderActionsContext.tsx"],"names":[],"mappings":"AAkBA;;;;;;GAMG;AAEH,OAAO,EAAiB,KAAK,SAAS,EAAiC,MAAM,OAAO,CAAA;AACpF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAA;AAI5D,wBAAgB,yBAAyB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAS9E;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,IAAI,6BAA6B,CAMpE"}
@@ -0,0 +1,19 @@
1
+ import { Tool } from './types';
2
+ interface ToolIconButtonsProps<ID extends string> {
3
+ tools: Tool<ID>[];
4
+ selectedToolId: string | null;
5
+ onToolClick: (toolId: string) => void;
6
+ direction?: 'column' | 'row';
7
+ contentId?: string;
8
+ }
9
+ /**
10
+ * The rail of tool icon buttons, shared by the desktop panel and the mobile toolbar. The
11
+ * active tool reads as a filled button; the rest are ghost. Only the active tool carries
12
+ * `aria-controls`, tying it to the open content region — that region only exists while a tool
13
+ * is open, so a collapsed button must not reference a missing id. (`aria-expanded` is passed
14
+ * too, but the wrapping `Tooltip` strips it from the trigger, so `aria-controls` is what
15
+ * actually lands.)
16
+ */
17
+ export declare function ToolIconButtons<ID extends string>({ tools, selectedToolId, onToolClick, direction, contentId, }: ToolIconButtonsProps<ID>): import("react/jsx-runtime").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=ToolIconButtons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolIconButtons.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/ToolIconButtons.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC,UAAU,oBAAoB,CAAC,EAAE,SAAS,MAAM;IAC9C,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,SAAS,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,EACjD,KAAK,EACL,cAAc,EACd,WAAW,EACX,SAAoB,EACpB,SAAS,GACV,EAAE,oBAAoB,CAAC,EAAE,CAAC,2CAgC1B"}
@@ -0,0 +1,16 @@
1
+ import { ReactNode } from 'react';
2
+ interface ToolWrapperProps {
3
+ isOpen: boolean;
4
+ contentWidth: number;
5
+ isResizing: boolean;
6
+ isFullWidth: boolean;
7
+ children: ReactNode;
8
+ }
9
+ /**
10
+ * Animates the tool content area open/closed beside the icon rail. Width is applied inline
11
+ * (it varies per render); the resizing/full-width states toggle modifier classes so the
12
+ * transition and flex-fill come from the stylesheet.
13
+ */
14
+ export declare function ToolWrapper({ isOpen, contentWidth, isResizing, isFullWidth, children, }: ToolWrapperProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=ToolWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolWrapper.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/ToolWrapper.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,UAAU,gBAAgB;IACxB,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,YAAY,EACZ,UAAU,EACV,WAAW,EACX,QAAQ,GACT,EAAE,gBAAgB,2CAgBlB"}
@@ -0,0 +1,23 @@
1
+ /** Surface treatments a tool's content can request. `dark-surface` lets a host tool (e.g. an
2
+ * AI assistant, added in a later step) render light-on-dark; built-in trays use `default`. */
3
+ export declare const TOOL_VARIANTS: {
4
+ readonly DEFAULT: "default";
5
+ readonly DARK_SURFACE: "dark-surface";
6
+ };
7
+ /** Panel widths (px). The icon rail is always visible; the content area expands beside it. */
8
+ export declare const TOOL_PANEL_DIMENSIONS: {
9
+ readonly COLLAPSED_WIDTH: 48;
10
+ readonly EXPANDED_WIDTH: 368;
11
+ readonly ICON_BAR_WIDTH: 48;
12
+ readonly MIN_EXPANDED_WIDTH: 280;
13
+ readonly MAX_EXPANDED_WIDTH: 800;
14
+ };
15
+ /**
16
+ * Below this viewport width the panel drops its desktop rail for the mobile slide-up
17
+ * overlay + bottom toolbar. The panel is editor *chrome*, not a block, so a viewport query
18
+ * is correct here (blocks size to their container instead). Mirrors canvas-horizon's
19
+ * `breakpoints.medium`.
20
+ */
21
+ export declare const FULL_LAYOUT_MIN_WIDTH = "768px";
22
+ export declare const FULL_LAYOUT_MQ = "(min-width: 768px)";
23
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/constants.ts"],"names":[],"mappings":"AAkBA;8FAC8F;AAC9F,eAAO,MAAM,aAAa;;;CAGhB,CAAA;AAEV,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB;;;;;;CAMxB,CAAA;AAEV;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,UAAU,CAAA;AAC5C,eAAO,MAAM,cAAc,uBAA0C,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { DesignerSideBar } from './DesignerSideBar';
2
+ export { TOOL_PANEL_DIMENSIONS, TOOL_VARIANTS } from './constants';
3
+ export { ToolHeaderActionsProvider, useToolHeaderActions, } from './ToolHeaderActionsContext';
4
+ export type { DesignerSideBarProps, Tool, ToolPanelHandle, ToolStyle, ToolVariant, } from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/index.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,oBAAoB,EACpB,IAAI,EACJ,eAAe,EACf,SAAS,EACT,WAAW,GACZ,MAAM,SAAS,CAAA"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The sidebar tool panel's chrome CSS: the desktop wrapper + resize handle, the animated
3
+ * content wrapper, the content/body surfaces, and the mobile slide-up overlay + bottom
4
+ * toolbar. None of it is expressible in InstUI props — it needs media queries,
5
+ * `:focus-visible`, reduced-motion and animated widths — so, like the canvas chrome, it is
6
+ * injected once as a global stylesheet keyed by stable class names. Widths and transforms
7
+ * that vary per render are applied inline; the `--resizing`/`--full-width`/`--open`
8
+ * modifier classes toggle the rest.
9
+ */
10
+ export declare const PANEL_CLASS: {
11
+ readonly panel: "bce-tool-panel";
12
+ readonly panelResizing: "bce-tool-panel--resizing";
13
+ readonly panelFullWidth: "bce-tool-panel--full-width";
14
+ readonly dragHandle: "bce-tool-drag-handle";
15
+ readonly wrapper: "bce-tool-wrapper";
16
+ readonly wrapperResizing: "bce-tool-wrapper--resizing";
17
+ readonly wrapperFullWidth: "bce-tool-wrapper--full-width";
18
+ readonly content: "bce-tool-content";
19
+ readonly contentDark: "bce-tool-content--dark";
20
+ readonly contentFullScreen: "bce-tool-content--full-screen";
21
+ readonly body: "bce-tool-body";
22
+ readonly bodyDark: "bce-tool-body--dark";
23
+ readonly mobileOverlay: "bce-tool-mobile-overlay";
24
+ readonly mobileOverlayOpen: "bce-tool-mobile-overlay--open";
25
+ readonly mobileToolbar: "bce-tool-mobile-toolbar";
26
+ };
27
+ /** Mounts the tool-panel chrome stylesheet once, under the sidebar. */
28
+ export declare function PanelChromeStyles(): import("react/jsx-runtime").JSX.Element;
29
+ //# sourceMappingURL=panelStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panelStyles.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/panelStyles.tsx"],"names":[],"mappings":"AAqBA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;CAgBd,CAAA;AAsBV,uEAAuE;AACvE,wBAAgB,iBAAiB,4CA6JhC"}
@@ -0,0 +1,83 @@
1
+ import { ReactNode } from 'react';
2
+ import { DesignerNavState } from '../DesignerNav';
3
+ import { TOOL_VARIANTS } from './constants';
4
+ export type ToolVariant = (typeof TOOL_VARIANTS)[keyof typeof TOOL_VARIANTS];
5
+ /**
6
+ * One entry in the sidebar's icon rail. The built-in trays are supplied as tools by the
7
+ * package; a host appends its own (an AI assistant, a widget tray) through the same array —
8
+ * this is the sidebar's host-tool slot.
9
+ *
10
+ * `icon`/`activeIcon` are `@instructure/ui-icons` elements (InstUI icons are components, not
11
+ * string names), matching the tray's `BlockDefinition.icon`.
12
+ */
13
+ export interface Tool<ID extends string> {
14
+ id: ID;
15
+ /** Rail tooltip + header title, already translated. */
16
+ title: string;
17
+ /** Rail position, lowest first; ties keep the given array order. Omitted sorts after every
18
+ * tool that sets one, in the order given — a host tool with no `priority` renders last. */
19
+ priority?: number;
20
+ icon: ReactNode;
21
+ /** Shown in the rail while this tool is active; falls back to `icon`. */
22
+ activeIcon?: ReactNode;
23
+ /** Surface treatment for the content area. Defaults to `default`. */
24
+ variant?: ToolVariant;
25
+ /** Background override for the content surface (e.g. a host tool's branded panel). */
26
+ background?: string;
27
+ /** Seed width (px) when this tool opens; clamped to min/max, overridden once the user resizes. */
28
+ expandedWidth?: number;
29
+ content?: ReactNode;
30
+ /** Root view this tool's navigation starts at. Defaults to `main`. */
31
+ defaultView?: string;
32
+ /** Set `false` to hide the header close button (e.g. a permanently docked tool). */
33
+ hasCloseButton?: boolean;
34
+ }
35
+ /** Imperative handle for opening a tool from outside (e.g. a host toolbar button). */
36
+ export interface ToolPanelHandle<ID extends string> {
37
+ openTool: (toolId: ID) => void;
38
+ }
39
+ export interface DesignerSideBarProps<ID extends string> {
40
+ tools: Tool<ID>[];
41
+ /** Uncontrolled: the tool open on first render. Ignored when `selectedToolId` is set. */
42
+ initialSelectedToolId?: ID;
43
+ /** Panel height; defaults to `100%`. */
44
+ height?: number | string;
45
+ /** Padding/overflow overrides for the content body. */
46
+ toolStyle?: ToolStyle;
47
+ /** Renders the active tool's content full-screen (fixed overlay). */
48
+ isFullScreenMode?: boolean;
49
+ /** Shows the rail collapse/expand toggle once a tool has been opened. */
50
+ hasExpandPanelButton?: boolean;
51
+ onToolChange?: (toolId: ID | null) => void;
52
+ onFullWidthChange?: (isFullWidth: boolean) => void;
53
+ /** Enables the drag-to-resize handle + full-width toggle. Defaults to `true`. */
54
+ isPanelResizeEnabled?: boolean;
55
+ /** Controlled: the open tool (or `null`). Parent owns selection when provided. */
56
+ selectedToolId?: ID | null;
57
+ onSelectedToolIdChange?: (toolId: ID | null) => void;
58
+ /** Controlled navigation view within the open tool. Parent owns it when provided. */
59
+ view?: DesignerNavState;
60
+ onViewChange?: (view: DesignerNavState) => void;
61
+ /** Render content only in the active layout (desktop XOR mobile) so a singleton like an
62
+ * RCE field does not double-mount across the two layouts. Defaults to `true`. */
63
+ renderContentInActiveLayoutOnly?: boolean;
64
+ /** Overrides the expanded width while set (e.g. widen for an RCE field); restores the
65
+ * user's width when cleared. */
66
+ controlledExpandedWidth?: number;
67
+ /** Extra key mixed into the open tool's content remount — pass the id of the entity being
68
+ * edited (e.g. the selected block) so navigation history resets when it changes, instead of
69
+ * leaking a previous block's sub-view into the Back button. */
70
+ contentKey?: string;
71
+ /** Fired when the header back button returns to the root view (no navigation history left). */
72
+ onBack?: () => void;
73
+ }
74
+ export interface ToolStyle {
75
+ padding?: number | string;
76
+ overflow?: 'auto' | 'scroll' | 'hidden' | 'visible';
77
+ }
78
+ /** Header-action slot: a tool's content injects buttons into the panel header via this. */
79
+ export interface ToolHeaderActionsContextValue {
80
+ setHeaderActions: (actions: ReactNode) => void;
81
+ headerActions: ReactNode;
82
+ }
83
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/types.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAA;AAE5E;;;;;;;GAOG;AACH,MAAM,WAAW,IAAI,CAAC,EAAE,SAAS,MAAM;IACrC,EAAE,EAAE,EAAE,CAAA;IACN,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAA;IACb;+FAC2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,SAAS,CAAA;IACf,yEAAyE;IACzE,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,qEAAqE;IACrE,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kGAAkG;IAClG,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oFAAoF;IACpF,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,sFAAsF;AACtF,MAAM,WAAW,eAAe,CAAC,EAAE,SAAS,MAAM;IAChD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,oBAAoB,CAAC,EAAE,SAAS,MAAM;IACrD,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;IACjB,yFAAyF;IACzF,qBAAqB,CAAC,EAAE,EAAE,CAAA;IAC1B,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,uDAAuD;IACvD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,yEAAyE;IACzE,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,CAAA;IAC1C,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAA;IAClD,iFAAiF;IACjF,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,kFAAkF;IAClF,cAAc,CAAC,EAAE,EAAE,GAAG,IAAI,CAAA;IAC1B,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,CAAA;IACpD,qFAAqF;IACrF,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC/C;qFACiF;IACjF,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC;oCACgC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC;;mEAE+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;CACpD;AAED,2FAA2F;AAC3F,MAAM,WAAW,6BAA6B;IAC5C,gBAAgB,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,CAAA;IAC9C,aAAa,EAAE,SAAS,CAAA;CACzB"}
@@ -0,0 +1,8 @@
1
+ import { RefObject } from 'react';
2
+ /**
3
+ * Returns focus to `returnRef` when `active` goes from true to false — i.e. when the panel
4
+ * closes, focus goes back to whatever opened it (the rail button captured in `returnRef`).
5
+ * Does nothing on open, or when the ref is empty.
6
+ */
7
+ export declare function useFocusReturn(active: boolean, returnRef: RefObject<HTMLElement | null>): void;
8
+ //# sourceMappingURL=useFocusReturn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFocusReturn.d.ts","sourceRoot":"","sources":["../../../../src/editor/sidebar/panel/useFocusReturn.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAA;AAEzD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,CAQ9F"}