@report-designer/designer 0.1.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 (253) hide show
  1. package/dist/band-metadata.d.ts +8 -0
  2. package/dist/band-metadata.d.ts.map +1 -0
  3. package/dist/band-metadata.js +75 -0
  4. package/dist/band-metadata.js.map +1 -0
  5. package/dist/component-factory.d.ts +9 -0
  6. package/dist/component-factory.d.ts.map +1 -0
  7. package/dist/component-factory.js +141 -0
  8. package/dist/component-factory.js.map +1 -0
  9. package/dist/component-palette-model.d.ts +14 -0
  10. package/dist/component-palette-model.d.ts.map +1 -0
  11. package/dist/component-palette-model.js +21 -0
  12. package/dist/component-palette-model.js.map +1 -0
  13. package/dist/components/Canvas.d.ts +5 -0
  14. package/dist/components/Canvas.d.ts.map +1 -0
  15. package/dist/components/Canvas.js +2428 -0
  16. package/dist/components/Canvas.js.map +1 -0
  17. package/dist/components/ConditionalFormatManager.d.ts +8 -0
  18. package/dist/components/ConditionalFormatManager.d.ts.map +1 -0
  19. package/dist/components/ConditionalFormatManager.js +135 -0
  20. package/dist/components/ConditionalFormatManager.js.map +1 -0
  21. package/dist/components/Designer.d.ts +22 -0
  22. package/dist/components/Designer.d.ts.map +1 -0
  23. package/dist/components/Designer.js +115 -0
  24. package/dist/components/Designer.js.map +1 -0
  25. package/dist/components/ExpressionEditor.d.ts +10 -0
  26. package/dist/components/ExpressionEditor.d.ts.map +1 -0
  27. package/dist/components/ExpressionEditor.js +203 -0
  28. package/dist/components/ExpressionEditor.js.map +1 -0
  29. package/dist/components/LeftPanel.d.ts +11 -0
  30. package/dist/components/LeftPanel.d.ts.map +1 -0
  31. package/dist/components/LeftPanel.js +551 -0
  32. package/dist/components/LeftPanel.js.map +1 -0
  33. package/dist/components/PropertyEditor.d.ts +6 -0
  34. package/dist/components/PropertyEditor.d.ts.map +1 -0
  35. package/dist/components/PropertyEditor.js +1002 -0
  36. package/dist/components/PropertyEditor.js.map +1 -0
  37. package/dist/components/RibbonToolbar.d.ts +3 -0
  38. package/dist/components/RibbonToolbar.d.ts.map +1 -0
  39. package/dist/components/RibbonToolbar.js +179 -0
  40. package/dist/components/RibbonToolbar.js.map +1 -0
  41. package/dist/components/TextFormatEditor.d.ts +13 -0
  42. package/dist/components/TextFormatEditor.d.ts.map +1 -0
  43. package/dist/components/TextFormatEditor.js +199 -0
  44. package/dist/components/TextFormatEditor.js.map +1 -0
  45. package/dist/components/TextStyleLibraryDialog.d.ts +8 -0
  46. package/dist/components/TextStyleLibraryDialog.d.ts.map +1 -0
  47. package/dist/components/TextStyleLibraryDialog.js +367 -0
  48. package/dist/components/TextStyleLibraryDialog.js.map +1 -0
  49. package/dist/components/canvas/DesignerCanvasFrame.d.ts +10 -0
  50. package/dist/components/canvas/DesignerCanvasFrame.d.ts.map +1 -0
  51. package/dist/components/canvas/DesignerCanvasFrame.js +22 -0
  52. package/dist/components/canvas/DesignerCanvasFrame.js.map +1 -0
  53. package/dist/components/chart/ChartAxesPanel.d.ts +12 -0
  54. package/dist/components/chart/ChartAxesPanel.d.ts.map +1 -0
  55. package/dist/components/chart/ChartAxesPanel.js +71 -0
  56. package/dist/components/chart/ChartAxesPanel.js.map +1 -0
  57. package/dist/components/chart/ChartDataPanel.d.ts +21 -0
  58. package/dist/components/chart/ChartDataPanel.d.ts.map +1 -0
  59. package/dist/components/chart/ChartDataPanel.js +80 -0
  60. package/dist/components/chart/ChartDataPanel.js.map +1 -0
  61. package/dist/components/chart/ChartLabelPanel.d.ts +12 -0
  62. package/dist/components/chart/ChartLabelPanel.d.ts.map +1 -0
  63. package/dist/components/chart/ChartLabelPanel.js +34 -0
  64. package/dist/components/chart/ChartLabelPanel.js.map +1 -0
  65. package/dist/components/chart/ChartLegendPanel.d.ts +12 -0
  66. package/dist/components/chart/ChartLegendPanel.d.ts.map +1 -0
  67. package/dist/components/chart/ChartLegendPanel.js +48 -0
  68. package/dist/components/chart/ChartLegendPanel.js.map +1 -0
  69. package/dist/components/chart/ChartPropertyPanel.d.ts +26 -0
  70. package/dist/components/chart/ChartPropertyPanel.d.ts.map +1 -0
  71. package/dist/components/chart/ChartPropertyPanel.js +119 -0
  72. package/dist/components/chart/ChartPropertyPanel.js.map +1 -0
  73. package/dist/components/chart/ChartThemePanel.d.ts +9 -0
  74. package/dist/components/chart/ChartThemePanel.d.ts.map +1 -0
  75. package/dist/components/chart/ChartThemePanel.js +21 -0
  76. package/dist/components/chart/ChartThemePanel.js.map +1 -0
  77. package/dist/components/chart/ChartTitlePanel.d.ts +10 -0
  78. package/dist/components/chart/ChartTitlePanel.d.ts.map +1 -0
  79. package/dist/components/chart/ChartTitlePanel.js +45 -0
  80. package/dist/components/chart/ChartTitlePanel.js.map +1 -0
  81. package/dist/components/chart/ChartTypeStylePanel.d.ts +11 -0
  82. package/dist/components/chart/ChartTypeStylePanel.d.ts.map +1 -0
  83. package/dist/components/chart/ChartTypeStylePanel.js +37 -0
  84. package/dist/components/chart/ChartTypeStylePanel.js.map +1 -0
  85. package/dist/components/chart/ColorPaletteEditor.d.ts +10 -0
  86. package/dist/components/chart/ColorPaletteEditor.d.ts.map +1 -0
  87. package/dist/components/chart/ColorPaletteEditor.js +18 -0
  88. package/dist/components/chart/ColorPaletteEditor.js.map +1 -0
  89. package/dist/components/chart/chart-options.d.ts +119 -0
  90. package/dist/components/chart/chart-options.d.ts.map +1 -0
  91. package/dist/components/chart/chart-options.js +217 -0
  92. package/dist/components/chart/chart-options.js.map +1 -0
  93. package/dist/components/dialogs/BandWizardDialog.d.ts +8 -0
  94. package/dist/components/dialogs/BandWizardDialog.d.ts.map +1 -0
  95. package/dist/components/dialogs/BandWizardDialog.js +54 -0
  96. package/dist/components/dialogs/BandWizardDialog.js.map +1 -0
  97. package/dist/components/dialogs/GroupWizardDialog.d.ts +8 -0
  98. package/dist/components/dialogs/GroupWizardDialog.d.ts.map +1 -0
  99. package/dist/components/dialogs/GroupWizardDialog.js +70 -0
  100. package/dist/components/dialogs/GroupWizardDialog.js.map +1 -0
  101. package/dist/components/dialogs/JsonDataSourceDialog.d.ts +8 -0
  102. package/dist/components/dialogs/JsonDataSourceDialog.d.ts.map +1 -0
  103. package/dist/components/dialogs/JsonDataSourceDialog.js +67 -0
  104. package/dist/components/dialogs/JsonDataSourceDialog.js.map +1 -0
  105. package/dist/components/dialogs/PageSetupDialog.d.ts +8 -0
  106. package/dist/components/dialogs/PageSetupDialog.d.ts.map +1 -0
  107. package/dist/components/dialogs/PageSetupDialog.js +145 -0
  108. package/dist/components/dialogs/PageSetupDialog.js.map +1 -0
  109. package/dist/components/dialogs/dialog-utils.d.ts +6 -0
  110. package/dist/components/dialogs/dialog-utils.d.ts.map +1 -0
  111. package/dist/components/dialogs/dialog-utils.js +37 -0
  112. package/dist/components/dialogs/dialog-utils.js.map +1 -0
  113. package/dist/components/events/EventEditorDialog.d.ts +43 -0
  114. package/dist/components/events/EventEditorDialog.d.ts.map +1 -0
  115. package/dist/components/events/EventEditorDialog.js +271 -0
  116. package/dist/components/events/EventEditorDialog.js.map +1 -0
  117. package/dist/components/events/EventScriptEditor.d.ts +41 -0
  118. package/dist/components/events/EventScriptEditor.d.ts.map +1 -0
  119. package/dist/components/events/EventScriptEditor.js +140 -0
  120. package/dist/components/events/EventScriptEditor.js.map +1 -0
  121. package/dist/components/events/event-editor-utils.d.ts +18 -0
  122. package/dist/components/events/event-editor-utils.d.ts.map +1 -0
  123. package/dist/components/events/event-editor-utils.js +66 -0
  124. package/dist/components/events/event-editor-utils.js.map +1 -0
  125. package/dist/components/events/event-script-monaco.d.ts +74 -0
  126. package/dist/components/events/event-script-monaco.d.ts.map +1 -0
  127. package/dist/components/events/event-script-monaco.js +282 -0
  128. package/dist/components/events/event-script-monaco.js.map +1 -0
  129. package/dist/components/events/event-script-templates.d.ts +7 -0
  130. package/dist/components/events/event-script-templates.d.ts.map +1 -0
  131. package/dist/components/events/event-script-templates.js +100 -0
  132. package/dist/components/events/event-script-templates.js.map +1 -0
  133. package/dist/components/expression/ExpressionMonacoEditor.d.ts +16 -0
  134. package/dist/components/expression/ExpressionMonacoEditor.d.ts.map +1 -0
  135. package/dist/components/expression/ExpressionMonacoEditor.js +63 -0
  136. package/dist/components/expression/ExpressionMonacoEditor.js.map +1 -0
  137. package/dist/components/expression/InlineExpressionEditor.d.ts +10 -0
  138. package/dist/components/expression/InlineExpressionEditor.d.ts.map +1 -0
  139. package/dist/components/expression/InlineExpressionEditor.js +33 -0
  140. package/dist/components/expression/InlineExpressionEditor.js.map +1 -0
  141. package/dist/components/expression/expression-monaco.d.ts +34 -0
  142. package/dist/components/expression/expression-monaco.d.ts.map +1 -0
  143. package/dist/components/expression/expression-monaco.js +87 -0
  144. package/dist/components/expression/expression-monaco.js.map +1 -0
  145. package/dist/components/panels/DesignerLeftPanel.d.ts +11 -0
  146. package/dist/components/panels/DesignerLeftPanel.d.ts.map +1 -0
  147. package/dist/components/panels/DesignerLeftPanel.js +8 -0
  148. package/dist/components/panels/DesignerLeftPanel.js.map +1 -0
  149. package/dist/components/panels/DesignerPropertyPanel.d.ts +6 -0
  150. package/dist/components/panels/DesignerPropertyPanel.d.ts.map +1 -0
  151. package/dist/components/panels/DesignerPropertyPanel.js +441 -0
  152. package/dist/components/panels/DesignerPropertyPanel.js.map +1 -0
  153. package/dist/components/panels/PanelSearchBox.d.ts +9 -0
  154. package/dist/components/panels/PanelSearchBox.d.ts.map +1 -0
  155. package/dist/components/panels/PanelSearchBox.js +5 -0
  156. package/dist/components/panels/PanelSearchBox.js.map +1 -0
  157. package/dist/components/properties/BandPropertyGrid.d.ts +6 -0
  158. package/dist/components/properties/BandPropertyGrid.d.ts.map +1 -0
  159. package/dist/components/properties/BandPropertyGrid.js +504 -0
  160. package/dist/components/properties/BandPropertyGrid.js.map +1 -0
  161. package/dist/components/properties/BoxStyleEditors.d.ts +59 -0
  162. package/dist/components/properties/BoxStyleEditors.d.ts.map +1 -0
  163. package/dist/components/properties/BoxStyleEditors.js +87 -0
  164. package/dist/components/properties/BoxStyleEditors.js.map +1 -0
  165. package/dist/components/properties/FontEditor.d.ts +28 -0
  166. package/dist/components/properties/FontEditor.d.ts.map +1 -0
  167. package/dist/components/properties/FontEditor.js +22 -0
  168. package/dist/components/properties/FontEditor.js.map +1 -0
  169. package/dist/components/ribbon/DesignerRibbon.d.ts +3 -0
  170. package/dist/components/ribbon/DesignerRibbon.d.ts.map +1 -0
  171. package/dist/components/ribbon/DesignerRibbon.js +193 -0
  172. package/dist/components/ribbon/DesignerRibbon.js.map +1 -0
  173. package/dist/components/richtext/RichTextInlineEditor.d.ts +15 -0
  174. package/dist/components/richtext/RichTextInlineEditor.d.ts.map +1 -0
  175. package/dist/components/richtext/RichTextInlineEditor.js +94 -0
  176. package/dist/components/richtext/RichTextInlineEditor.js.map +1 -0
  177. package/dist/components/shell/DesignerShell.d.ts +12 -0
  178. package/dist/components/shell/DesignerShell.d.ts.map +1 -0
  179. package/dist/components/shell/DesignerShell.js +124 -0
  180. package/dist/components/shell/DesignerShell.js.map +1 -0
  181. package/dist/components/shell/DesignerStatusBar.d.ts +3 -0
  182. package/dist/components/shell/DesignerStatusBar.d.ts.map +1 -0
  183. package/dist/components/shell/DesignerStatusBar.js +23 -0
  184. package/dist/components/shell/DesignerStatusBar.js.map +1 -0
  185. package/dist/components/tree/ReportTree.d.ts +3 -0
  186. package/dist/components/tree/ReportTree.d.ts.map +1 -0
  187. package/dist/components/tree/ReportTree.js +17 -0
  188. package/dist/components/tree/ReportTree.js.map +1 -0
  189. package/dist/data-source-fields.d.ts +14 -0
  190. package/dist/data-source-fields.d.ts.map +1 -0
  191. package/dist/data-source-fields.js +49 -0
  192. package/dist/data-source-fields.js.map +1 -0
  193. package/dist/data-source-paths.d.ts +10 -0
  194. package/dist/data-source-paths.d.ts.map +1 -0
  195. package/dist/data-source-paths.js +61 -0
  196. package/dist/data-source-paths.js.map +1 -0
  197. package/dist/expression/expression-catalog.d.ts +39 -0
  198. package/dist/expression/expression-catalog.d.ts.map +1 -0
  199. package/dist/expression/expression-catalog.js +127 -0
  200. package/dist/expression/expression-catalog.js.map +1 -0
  201. package/dist/expression/expression-preview.d.ts +11 -0
  202. package/dist/expression/expression-preview.d.ts.map +1 -0
  203. package/dist/expression/expression-preview.js +58 -0
  204. package/dist/expression/expression-preview.js.map +1 -0
  205. package/dist/expression/expression-validation.d.ts +12 -0
  206. package/dist/expression/expression-validation.d.ts.map +1 -0
  207. package/dist/expression/expression-validation.js +85 -0
  208. package/dist/expression/expression-validation.js.map +1 -0
  209. package/dist/expression/function-catalog.d.ts +21 -0
  210. package/dist/expression/function-catalog.d.ts.map +1 -0
  211. package/dist/expression/function-catalog.js +96 -0
  212. package/dist/expression/function-catalog.js.map +1 -0
  213. package/dist/i18n/DesignerI18nProvider.d.ts +11 -0
  214. package/dist/i18n/DesignerI18nProvider.d.ts.map +1 -0
  215. package/dist/i18n/DesignerI18nProvider.js +32 -0
  216. package/dist/i18n/DesignerI18nProvider.js.map +1 -0
  217. package/dist/i18n/index.d.ts +3 -0
  218. package/dist/i18n/index.d.ts.map +1 -0
  219. package/dist/i18n/index.js +2 -0
  220. package/dist/i18n/index.js.map +1 -0
  221. package/dist/i18n/messages.d.ts +5 -0
  222. package/dist/i18n/messages.d.ts.map +1 -0
  223. package/dist/i18n/messages.js +1383 -0
  224. package/dist/i18n/messages.js.map +1 -0
  225. package/dist/index.d.ts +21 -0
  226. package/dist/index.d.ts.map +1 -0
  227. package/dist/index.js +18 -0
  228. package/dist/index.js.map +1 -0
  229. package/dist/page-settings.d.ts +21 -0
  230. package/dist/page-settings.d.ts.map +1 -0
  231. package/dist/page-settings.js +66 -0
  232. package/dist/page-settings.js.map +1 -0
  233. package/dist/report-structure.d.ts +20 -0
  234. package/dist/report-structure.d.ts.map +1 -0
  235. package/dist/report-structure.js +219 -0
  236. package/dist/report-structure.js.map +1 -0
  237. package/dist/store/designer-store.d.ts +161 -0
  238. package/dist/store/designer-store.d.ts.map +1 -0
  239. package/dist/store/designer-store.js +1851 -0
  240. package/dist/store/designer-store.js.map +1 -0
  241. package/dist/table/table-structure.d.ts +50 -0
  242. package/dist/table/table-structure.d.ts.map +1 -0
  243. package/dist/table/table-structure.js +251 -0
  244. package/dist/table/table-structure.js.map +1 -0
  245. package/dist/text-style-application.d.ts +11 -0
  246. package/dist/text-style-application.d.ts.map +1 -0
  247. package/dist/text-style-application.js +135 -0
  248. package/dist/text-style-application.js.map +1 -0
  249. package/dist/text-style-bindings.d.ts +16 -0
  250. package/dist/text-style-bindings.d.ts.map +1 -0
  251. package/dist/text-style-bindings.js +549 -0
  252. package/dist/text-style-bindings.js.map +1 -0
  253. package/package.json +70 -0
@@ -0,0 +1,94 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from 'react';
3
+ import { AlignCenterOutlined, AlignLeftOutlined, AlignRightOutlined, BoldOutlined, ClearOutlined, ItalicOutlined, OrderedListOutlined, SaveOutlined, StrikethroughOutlined, UnderlineOutlined, UnorderedListOutlined, } from '@ant-design/icons';
4
+ import { Button, ColorPicker, InputNumber, Select, Space, Tooltip } from 'antd';
5
+ import { getReportFontOptions, sanitizeRichHtml } from '@report-designer/core';
6
+ import { EditorContent, useEditor } from '@tiptap/react';
7
+ import StarterKit from '@tiptap/starter-kit';
8
+ import { Color, FontFamily, FontSize, TextStyle } from '@tiptap/extension-text-style';
9
+ import TextAlign from '@tiptap/extension-text-align';
10
+ import Underline from '@tiptap/extension-underline';
11
+ import Link from '@tiptap/extension-link';
12
+ import Placeholder from '@tiptap/extension-placeholder';
13
+ import { useDesignerI18n } from '../../i18n';
14
+ const FONT_SIZE_OPTIONS = [8, 9, 10, 11, 12, 14, 16, 18, 20, 24, 28, 32, 36, 48, 72].map(value => ({
15
+ label: String(value),
16
+ value,
17
+ }));
18
+ export const RichTextInlineEditor = ({ html, document, fonts, onSave, onCancel, }) => {
19
+ const { t } = useDesignerI18n();
20
+ const [fontSize, setFontSize] = useState(12);
21
+ const fontOptions = useMemo(() => getReportFontOptions(fonts), [fonts]);
22
+ const content = document ?? (html || '<p></p>');
23
+ const editor = useEditor({
24
+ immediatelyRender: false,
25
+ extensions: [
26
+ StarterKit.configure({
27
+ heading: false,
28
+ code: false,
29
+ codeBlock: false,
30
+ blockquote: false,
31
+ horizontalRule: false,
32
+ }),
33
+ TextStyle,
34
+ Color,
35
+ FontFamily,
36
+ FontSize,
37
+ TextAlign.configure({ types: ['paragraph'] }),
38
+ Underline,
39
+ Link.configure({ openOnClick: false, autolink: false, linkOnPaste: false }),
40
+ Placeholder.configure({ placeholder: '' }),
41
+ ],
42
+ content,
43
+ editorProps: {
44
+ attributes: {
45
+ 'aria-label': t('richText.editor'),
46
+ class: 'rd-richtext-inline-surface',
47
+ style: 'outline: none;',
48
+ },
49
+ },
50
+ });
51
+ const run = (command) => {
52
+ if (!editor)
53
+ return;
54
+ const chain = editor.chain().focus();
55
+ command(chain);
56
+ };
57
+ const applyFontFamily = (family) => {
58
+ run(chain => chain.setFontFamily(family).run());
59
+ };
60
+ const applyFontSize = (size) => {
61
+ if (!size)
62
+ return;
63
+ setFontSize(size);
64
+ run(chain => chain.setFontSize(`${size}px`).run());
65
+ };
66
+ const applyColor = (_, css) => {
67
+ run(chain => chain.setColor(css).run());
68
+ };
69
+ const save = () => {
70
+ if (!editor)
71
+ return;
72
+ onSave({
73
+ html: sanitizeRichHtml(editor.getHTML()),
74
+ document: editor.getJSON(),
75
+ });
76
+ };
77
+ const iconButton = (label, icon, onClick, active = false) => (_jsx(Tooltip, { title: label, children: _jsx(Button, { "aria-label": label, size: "small", type: active ? 'primary' : 'default', icon: icon, onMouseDown: event => event.preventDefault(), onClick: onClick }) }));
78
+ return (_jsxs("div", { "data-testid": "richtext-inline-editor", style: {
79
+ display: 'flex',
80
+ flexDirection: 'column',
81
+ width: '100%',
82
+ height: '100%',
83
+ minHeight: 96,
84
+ background: '#ffffff',
85
+ border: '1px solid #1677ff',
86
+ boxShadow: '0 4px 14px rgba(22,119,255,0.18)',
87
+ }, onPointerDown: event => event.stopPropagation(), onMouseDown: event => event.stopPropagation(), onContextMenu: event => event.stopPropagation(), children: [_jsxs(Space, { size: 4, wrap: true, style: {
88
+ flex: '0 0 auto',
89
+ padding: 4,
90
+ borderBottom: '1px solid #e5e7eb',
91
+ background: '#f8fafc',
92
+ }, children: [_jsx(Select, { "aria-label": t('richText.font'), size: "small", style: { width: 132 }, placeholder: t('richText.font'), options: fontOptions, onChange: applyFontFamily }), _jsx(InputNumber, { "aria-label": t('richText.fontSize'), size: "small", min: 6, max: 120, value: fontSize, controls: true, style: { width: 70 }, onChange: applyFontSize }), _jsx(ColorPicker, { size: "small", onChange: applyColor }), iconButton(t('richText.bold'), _jsx(BoldOutlined, {}), () => run(chain => chain.toggleBold().run()), Boolean(editor?.isActive('bold'))), iconButton(t('richText.italic'), _jsx(ItalicOutlined, {}), () => run(chain => chain.toggleItalic().run()), Boolean(editor?.isActive('italic'))), iconButton(t('richText.underline'), _jsx(UnderlineOutlined, {}), () => run(chain => chain.toggleUnderline().run()), Boolean(editor?.isActive('underline'))), iconButton(t('richText.strike'), _jsx(StrikethroughOutlined, {}), () => run(chain => chain.toggleStrike().run()), Boolean(editor?.isActive('strike'))), iconButton(t('richText.alignLeft'), _jsx(AlignLeftOutlined, {}), () => run(chain => chain.setTextAlign('left').run())), iconButton(t('richText.alignCenter'), _jsx(AlignCenterOutlined, {}), () => run(chain => chain.setTextAlign('center').run())), iconButton(t('richText.alignRight'), _jsx(AlignRightOutlined, {}), () => run(chain => chain.setTextAlign('right').run())), iconButton(t('richText.bulletList'), _jsx(UnorderedListOutlined, {}), () => run(chain => chain.toggleBulletList().run())), iconButton(t('richText.orderedList'), _jsx(OrderedListOutlined, {}), () => run(chain => chain.toggleOrderedList().run())), iconButton(t('richText.clearFormat'), _jsx(ClearOutlined, {}), () => run(chain => chain.unsetAllMarks().clearNodes().run())), _jsx(Button, { "aria-label": t('richText.save'), size: "small", type: "primary", icon: _jsx(SaveOutlined, {}), onClick: save, children: t('richText.save') }), _jsx(Button, { "aria-label": t('richText.cancel'), size: "small", onClick: onCancel, children: t('richText.cancel') })] }), _jsx("div", { style: { flex: 1, minHeight: 0, overflow: 'auto', padding: 4 }, children: _jsx(EditorContent, { editor: editor }) })] }));
93
+ };
94
+ //# sourceMappingURL=RichTextInlineEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichTextInlineEditor.js","sourceRoot":"","sources":["../../../src/components/richtext/RichTextInlineEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { ReportTemplate } from '@report-designer/core';
3
+ import type { ExpressionCatalogExtensions } from '../../expression/expression-catalog';
4
+ import '../../styles/designer-shell.css';
5
+ interface DesignerShellProps {
6
+ className?: string;
7
+ subreports?: Record<string, ReportTemplate>;
8
+ expressionExtensions?: ExpressionCatalogExtensions;
9
+ }
10
+ export declare const DesignerShell: React.FC<DesignerShellProps>;
11
+ export {};
12
+ //# sourceMappingURL=DesignerShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesignerShell.d.ts","sourceRoot":"","sources":["../../../src/components/shell/DesignerShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAiB5D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAEvF,OAAO,iCAAiC,CAAC;AAWzC,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;CACpD;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAsEtD,CAAC"}
@@ -0,0 +1,124 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { PushpinOutlined, RedoOutlined, SaveOutlined, UndoOutlined, } from '@ant-design/icons';
4
+ import { Button, Tooltip } from 'antd';
5
+ import { DesignerCanvasFrame } from '../canvas/DesignerCanvasFrame';
6
+ import { ConditionalFormatManager } from '../ConditionalFormatManager';
7
+ import { TextStyleLibraryDialog } from '../TextStyleLibraryDialog';
8
+ import { DesignerLeftPanel } from '../panels/DesignerLeftPanel';
9
+ import { DesignerPropertyPanel } from '../panels/DesignerPropertyPanel';
10
+ import { DesignerRibbon } from '../ribbon/DesignerRibbon';
11
+ import { useDesignerStore } from '../../store/designer-store';
12
+ import { useDesignerI18n } from '../../i18n';
13
+ import { DesignerStatusBar } from './DesignerStatusBar';
14
+ import '../../styles/designer-shell.css';
15
+ const LEFT_DOCK_STORAGE_KEY = 'rd-designer-left-panel-dock';
16
+ const PROPERTY_DOCK_STORAGE_KEY = 'rd-designer-property-panel-dock';
17
+ const LEFT_PANEL_WIDTH = '270px';
18
+ const PROPERTY_PANEL_WIDTH = '310px';
19
+ const DOCK_TAB_WIDTH = '30px';
20
+ export const DesignerShell = ({ className, subreports, expressionExtensions }) => {
21
+ const { t } = useDesignerI18n();
22
+ const templateName = useDesignerStore(s => s.template.name);
23
+ const undo = useDesignerStore(s => s.undo);
24
+ const redo = useDesignerStore(s => s.redo);
25
+ const canUndo = useDesignerStore(s => s.canUndo);
26
+ const canRedo = useDesignerStore(s => s.canRedo);
27
+ const textStyleLibraryOpen = useDesignerStore(s => s.textStyleLibraryOpen);
28
+ const closeTextStyleLibrary = useDesignerStore(s => s.closeTextStyleLibrary);
29
+ const conditionalFormatLibraryOpen = useDesignerStore(s => s.conditionalFormatLibraryOpen);
30
+ const closeConditionalFormatLibrary = useDesignerStore(s => s.closeConditionalFormatLibrary);
31
+ const [leftDockMode, setLeftDockMode] = usePersistentDockMode(LEFT_DOCK_STORAGE_KEY);
32
+ const [propertyDockMode, setPropertyDockMode] = usePersistentDockMode(PROPERTY_DOCK_STORAGE_KEY);
33
+ const [leftActiveTab, setLeftActiveTab] = React.useState('tree');
34
+ const leftColumnWidth = leftDockMode === 'pinned' ? LEFT_PANEL_WIDTH : DOCK_TAB_WIDTH;
35
+ const propertyColumnWidth = propertyDockMode === 'pinned' ? PROPERTY_PANEL_WIDTH : DOCK_TAB_WIDTH;
36
+ const leftDockTabs = [
37
+ { key: 'palette', label: t('leftPanel.components'), testId: 'designer-left-dock-tab-palette' },
38
+ { key: 'data', label: t('leftPanel.dictionary'), testId: 'designer-left-dock-tab-data' },
39
+ { key: 'tree', label: t('leftPanel.report'), testId: 'designer-left-dock-tab-tree' },
40
+ ];
41
+ const propertyDockTabs = [
42
+ { key: 'properties', label: t('shell.propertyPanel'), testId: 'designer-property-dock-tab-properties' },
43
+ ];
44
+ return (_jsxs("div", { className: className ? `rd-designer-shell ${className}` : 'rd-designer-shell', children: [_jsx(QuickAccess, { templateName: templateName, undo: undo, redo: redo, canUndo: canUndo(), canRedo: canRedo() }), _jsx(DesignerRibbon, {}), _jsxs("div", { className: "rd-designer-body", "data-testid": "designer-body", style: { gridTemplateColumns: `${leftColumnWidth} minmax(360px, 1fr) ${propertyColumnWidth}` }, children: [_jsx(DockablePanel, { side: "left", mode: leftDockMode, width: LEFT_PANEL_WIDTH, testId: "designer-left-dock", stripTestId: "designer-left-dock-strip", tabs: leftDockTabs, activeTabKey: leftActiveTab, pinTitle: t('shell.pinLeftPanel'), unpinTitle: t('shell.unpinLeftPanel'), onTabActivate: key => setLeftActiveTab(key), onModeChange: setLeftDockMode, children: _jsx(DesignerLeftPanel, { activeTab: leftActiveTab, expressionExtensions: expressionExtensions, onActiveTabChange: setLeftActiveTab }) }), _jsx(DesignerCanvasFrame, { subreports: subreports, expressionExtensions: expressionExtensions }), _jsx(DockablePanel, { side: "right", mode: propertyDockMode, width: PROPERTY_PANEL_WIDTH, testId: "designer-property-dock", stripTestId: "designer-property-dock-strip", tabs: propertyDockTabs, activeTabKey: "properties", pinTitle: t('shell.pinPropertyPanel'), unpinTitle: t('shell.unpinPropertyPanel'), onModeChange: setPropertyDockMode, children: _jsx(DesignerPropertyPanel, { expressionExtensions: expressionExtensions }) })] }), _jsx(DesignerStatusBar, {}), _jsx(TextStyleLibraryDialog, { open: textStyleLibraryOpen, onClose: closeTextStyleLibrary }), _jsx(ConditionalFormatManager, { open: conditionalFormatLibraryOpen, onClose: closeConditionalFormatLibrary })] }));
45
+ };
46
+ const DockablePanel = ({ children, mode, onModeChange, activeTabKey, onTabActivate, pinTitle, side, stripTestId, tabs, testId, unpinTitle, width, }) => {
47
+ const [open, setOpen] = React.useState(false);
48
+ const isAuto = mode === 'auto';
49
+ const isOpen = isAuto && open;
50
+ const pinButtonTitle = isAuto ? pinTitle : unpinTitle;
51
+ React.useEffect(() => {
52
+ if (!isAuto)
53
+ setOpen(false);
54
+ }, [isAuto]);
55
+ const showPanel = () => {
56
+ if (isAuto)
57
+ setOpen(true);
58
+ };
59
+ const hidePanel = () => {
60
+ if (isAuto)
61
+ setOpen(false);
62
+ };
63
+ const toggleMode = () => {
64
+ onModeChange(isAuto ? 'pinned' : 'auto');
65
+ };
66
+ const activateTab = (key) => {
67
+ onTabActivate?.(key);
68
+ showPanel();
69
+ };
70
+ const autoContentStyle = isAuto
71
+ ? {
72
+ ...(side === 'left' ? { left: DOCK_TAB_WIDTH } : { right: DOCK_TAB_WIDTH }),
73
+ opacity: isOpen ? 1 : 0,
74
+ visibility: isOpen ? 'visible' : 'hidden',
75
+ pointerEvents: isOpen ? 'auto' : 'none',
76
+ transform: isOpen ? 'translateX(0)' : `translateX(${side === 'left' ? '-8px' : '8px'})`,
77
+ }
78
+ : undefined;
79
+ const pinButtonVisible = !isAuto || isOpen;
80
+ const pinButtonStyle = {
81
+ opacity: pinButtonVisible ? 1 : 0,
82
+ visibility: pinButtonVisible ? 'visible' : 'hidden',
83
+ pointerEvents: pinButtonVisible ? 'auto' : 'none',
84
+ };
85
+ const pinButtonOrientationClass = isAuto ? 'rd-dock-pin-button-horizontal' : 'rd-dock-pin-button-vertical';
86
+ return (_jsxs("div", { className: `rd-dock-panel rd-dock-panel-${side} rd-dock-panel-${mode}${isOpen ? ' rd-dock-panel-open' : ''}`, "data-dock-mode": mode, "data-dock-open": isOpen ? 'true' : 'false', "data-testid": testId, onMouseEnter: showPanel, onMouseLeave: hidePanel, style: { ['--rd-dock-width']: width }, children: [_jsx("div", { className: "rd-dock-strip", "data-testid": stripTestId, onMouseEnter: showPanel, children: tabs.map(tab => (_jsx("button", { type: "button", className: `rd-dock-strip-tab${tab.key === activeTabKey ? ' rd-dock-strip-tab-active' : ''}`, "data-testid": tab.testId, title: tab.label, "aria-label": tab.label, onMouseEnter: () => activateTab(tab.key), onFocus: () => activateTab(tab.key), onClick: () => activateTab(tab.key), children: _jsx("span", { children: tab.label }) }, tab.key))) }), _jsxs("div", { className: "rd-dock-content", style: autoContentStyle, onMouseEnter: showPanel, children: [_jsx(Tooltip, { title: pinButtonTitle, children: _jsx(Button, { className: `rd-dock-pin-button ${pinButtonOrientationClass}`, "data-testid": `${testId}-pin-button`, size: "small", style: pinButtonStyle, type: "text", title: pinButtonTitle, "aria-label": pinButtonTitle, icon: _jsx(PushpinOutlined, { "aria-hidden": true }), onClick: toggleMode }) }), children] })] }));
87
+ };
88
+ function usePersistentDockMode(storageKey) {
89
+ const [mode, setMode] = React.useState(() => readDockMode(storageKey));
90
+ const updateMode = React.useCallback((nextMode) => {
91
+ setMode(nextMode);
92
+ try {
93
+ window.localStorage.setItem(storageKey, nextMode);
94
+ }
95
+ catch {
96
+ // Local storage can be unavailable in embedded or private contexts.
97
+ }
98
+ }, [storageKey]);
99
+ return [mode, updateMode];
100
+ }
101
+ function readDockMode(storageKey) {
102
+ try {
103
+ return window.localStorage.getItem(storageKey) === 'auto' ? 'auto' : 'pinned';
104
+ }
105
+ catch {
106
+ return 'pinned';
107
+ }
108
+ }
109
+ const QuickAccess = ({ templateName, undo, redo, canUndo, canRedo }) => {
110
+ const { t } = useDesignerI18n();
111
+ const saveTemplate = () => {
112
+ const currentTemplate = useDesignerStore.getState().template;
113
+ const json = JSON.stringify(currentTemplate, null, 2);
114
+ const blob = new Blob([json], { type: 'application/json' });
115
+ const url = URL.createObjectURL(blob);
116
+ const link = document.createElement('a');
117
+ link.href = url;
118
+ link.download = `${currentTemplate.name || 'report'}.json`;
119
+ link.click();
120
+ URL.revokeObjectURL(url);
121
+ };
122
+ return (_jsxs("header", { className: "rd-quick-access", "data-testid": "designer-quick-access", children: [_jsxs("div", { className: "rd-quick-access-buttons", children: [_jsx(Tooltip, { title: t('shell.save'), children: _jsx(Button, { size: "small", type: "text", icon: _jsx(SaveOutlined, {}), onClick: saveTemplate }) }), _jsx("span", { className: "rd-quick-access-separator" }), _jsx(Tooltip, { title: t('shell.undo'), children: _jsx(Button, { size: "small", type: "text", icon: _jsx(UndoOutlined, {}), disabled: !canUndo, onClick: undo }) }), _jsx(Tooltip, { title: t('shell.redo'), children: _jsx(Button, { size: "small", type: "text", icon: _jsx(RedoOutlined, {}), disabled: !canRedo, onClick: redo }) })] }), _jsx("div", { className: "rd-quick-access-title", children: templateName || t('shell.untitledReport') }), _jsx("div", { className: "rd-quick-access-meta", children: t('shell.designerName') })] }));
123
+ };
124
+ //# sourceMappingURL=DesignerShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesignerShell.js","sourceRoot":"","sources":["../../../src/components/shell/DesignerShell.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const DesignerStatusBar: React.FC;
3
+ //# sourceMappingURL=DesignerStatusBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesignerStatusBar.d.ts","sourceRoot":"","sources":["../../../src/components/shell/DesignerStatusBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAwCrC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useDesignerStore } from '../../store/designer-store';
3
+ import { formatUnitValue, getReportUnitSymbol } from '../../page-settings';
4
+ import { useDesignerI18n } from '../../i18n';
5
+ export const DesignerStatusBar = () => {
6
+ const { t } = useDesignerI18n();
7
+ const template = useDesignerStore(s => s.template);
8
+ const currentPageId = useDesignerStore(s => s.currentPageId);
9
+ const selectedComponentIds = useDesignerStore(s => s.selectedComponentIds);
10
+ const selectedBandId = useDesignerStore(s => s.selectedBandId);
11
+ const reportUnit = useDesignerStore(s => s.reportUnit);
12
+ const zoom = useDesignerStore(s => s.zoom);
13
+ const currentPage = template.pages.find(p => p.id === currentPageId) ?? template.pages[0];
14
+ const unitSymbol = getReportUnitSymbol(reportUnit);
15
+ const margins = currentPage?.margins ?? { top: 0, right: 0, bottom: 0, left: 0 };
16
+ const selectedLabel = selectedComponentIds.length > 0
17
+ ? t('status.selection.components', { count: selectedComponentIds.length })
18
+ : selectedBandId
19
+ ? t('status.selection.band')
20
+ : t('status.selection.none');
21
+ return (_jsxs("div", { className: "rd-status-bar", "data-testid": "designer-status-bar", children: [_jsx("div", { className: "rd-status-item", children: selectedLabel }), currentPage && (_jsxs(_Fragment, { children: [_jsx("div", { className: "rd-status-item", children: t('status.pageOf', { current: template.pages.findIndex(p => p.id === currentPage.id) + 1, total: template.pages.length }) }), _jsxs("div", { className: "rd-status-item", children: [formatUnitValue(currentPage.width, reportUnit), " x ", formatUnitValue(currentPage.height, reportUnit), " ", unitSymbol] }), _jsxs("div", { className: "rd-status-item", children: [t('status.margins'), " ", formatUnitValue(margins.top, reportUnit), "/", formatUnitValue(margins.right, reportUnit), "/", formatUnitValue(margins.bottom, reportUnit), "/", formatUnitValue(margins.left, reportUnit), " ", unitSymbol] })] })), _jsx("div", { className: "rd-status-spacer" }), _jsxs("div", { className: "rd-status-item", children: [t('status.grid'), " ", formatUnitValue(5, reportUnit), " ", unitSymbol] }), _jsx("div", { className: "rd-status-item", children: t('status.snapOn') }), _jsxs("div", { className: "rd-status-item", children: [Math.round(zoom * 100), "%"] })] }));
22
+ };
23
+ //# sourceMappingURL=DesignerStatusBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DesignerStatusBar.js","sourceRoot":"","sources":["../../../src/components/shell/DesignerStatusBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const ReportTree: React.FC;
3
+ //# sourceMappingURL=ReportTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportTree.d.ts","sourceRoot":"","sources":["../../../src/components/tree/ReportTree.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAoB9B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Tree } from 'antd';
3
+ import { useDesignerStore } from '../../store/designer-store';
4
+ export const ReportTree = () => {
5
+ const template = useDesignerStore(s => s.template);
6
+ const selectBand = useDesignerStore(s => s.selectBand);
7
+ const treeData = template.pages.map(page => ({
8
+ key: page.id,
9
+ title: page.id,
10
+ children: page.bands.map(band => ({
11
+ key: band.id,
12
+ title: `${band.type}${band.dataBand?.dataSourceId ?? band.dataSource ? ` (${band.dataBand?.dataSourceId ?? band.dataSource})` : ''}`,
13
+ })),
14
+ }));
15
+ return (_jsx(Tree, { treeData: treeData, defaultExpandAll: true, onSelect: (keys) => selectBand(String(keys[0] ?? '') || null) }));
16
+ };
17
+ //# sourceMappingURL=ReportTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReportTree.js","sourceRoot":"","sources":["../../../src/components/tree/ReportTree.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,CAAC,MAAM,UAAU,GAAa,GAAG,EAAE;IACvC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAe,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,GAAG,EAAE,IAAI,CAAC,EAAE;QACZ,KAAK,EAAE,IAAI,CAAC,EAAE;QACd,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,GAAG,EAAE,IAAI,CAAC,EAAE;YACZ,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,YAAY,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;SACrI,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,KAAC,IAAI,IACH,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,QAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,GAC7D,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { DataField, DataSource } from '@report-designer/core';
2
+ export interface FieldPathTreeNode {
3
+ key: string;
4
+ label: string;
5
+ path: string;
6
+ searchText: string;
7
+ sourceId: string;
8
+ field?: DataField;
9
+ children?: FieldPathTreeNode[];
10
+ }
11
+ export declare function formatDataFieldExpression(sourceId: string, fieldName: string): string;
12
+ export declare function formatDataFieldLabel(sourceId: string, fieldName: string): string;
13
+ export declare function buildFieldPathTree(source: DataSource): FieldPathTreeNode[];
14
+ //# sourceMappingURL=data-source-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source-fields.d.ts","sourceRoot":"","sources":["../src/data-source-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAErF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,iBAAiB,EAAE,CAgD1E"}
@@ -0,0 +1,49 @@
1
+ export function formatDataFieldExpression(sourceId, fieldName) {
2
+ return `{${fieldName}}`;
3
+ }
4
+ export function formatDataFieldLabel(sourceId, fieldName) {
5
+ return sourceId === 'root' ? fieldName : `${sourceId}.${fieldName}`;
6
+ }
7
+ export function buildFieldPathTree(source) {
8
+ const roots = [];
9
+ const rootBySegment = new Map();
10
+ for (const field of source.schema ?? source.fields ?? []) {
11
+ const segments = field.name.split('.').filter(Boolean);
12
+ if (segments.length === 0) {
13
+ continue;
14
+ }
15
+ let siblings = roots;
16
+ let siblingMap = rootBySegment;
17
+ let currentPath = '';
18
+ segments.forEach((segment, index) => {
19
+ currentPath = currentPath ? `${currentPath}.${segment}` : segment;
20
+ const isLeaf = index === segments.length - 1;
21
+ const key = `${source.id}.${currentPath}`;
22
+ let node = siblingMap.get(segment);
23
+ if (!node) {
24
+ node = {
25
+ key,
26
+ label: isLeaf ? field.label || segment : segment,
27
+ path: currentPath,
28
+ sourceId: source.id,
29
+ searchText: `${source.id} ${source.name ?? ''} ${currentPath} ${field.label ?? ''} ${field.type ?? ''}`.toLowerCase(),
30
+ children: isLeaf ? undefined : [],
31
+ };
32
+ siblings.push(node);
33
+ siblingMap.set(segment, node);
34
+ }
35
+ if (isLeaf) {
36
+ node.field = field;
37
+ node.label = field.label || segment;
38
+ node.searchText = `${source.id} ${source.name ?? ''} ${field.name} ${field.label ?? ''} ${field.type ?? ''}`.toLowerCase();
39
+ return;
40
+ }
41
+ node.children ??= [];
42
+ const map = new Map(node.children.map(child => [child.path.split('.').at(-1) ?? child.path, child]));
43
+ siblingMap = map;
44
+ siblings = node.children;
45
+ });
46
+ }
47
+ return roots;
48
+ }
49
+ //# sourceMappingURL=data-source-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source-fields.js","sourceRoot":"","sources":["../src/data-source-fields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { DataField, DataSource } from '@report-designer/core';
2
+ export interface ArrayPathOption {
3
+ value: string;
4
+ label: string;
5
+ }
6
+ export declare function getRootDataSource(dataSources: DataSource[]): DataSource | undefined;
7
+ export declare function getRootFields(dataSources: DataSource[]): DataField[];
8
+ export declare function getFieldsForPath(dataSources: DataSource[], arrayPath?: string): DataField[];
9
+ export declare function createArrayPathOptions(dataSources: DataSource[], rowsByPath?: Record<string, unknown[]>, existingPaths?: string[]): ArrayPathOption[];
10
+ //# sourceMappingURL=data-source-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source-paths.d.ts","sourceRoot":"","sources":["../src/data-source-paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,GAAG,SAAS,CAEnF;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,SAAS,EAAE,CAGpE;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAqB3F;AAED,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,UAAU,EAAE,EACzB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAM,EAC1C,aAAa,GAAE,MAAM,EAAO,GAC3B,eAAe,EAAE,CA0BnB"}
@@ -0,0 +1,61 @@
1
+ export function getRootDataSource(dataSources) {
2
+ return dataSources.find(source => source.id === 'root') ?? dataSources[0];
3
+ }
4
+ export function getRootFields(dataSources) {
5
+ const source = getRootDataSource(dataSources);
6
+ return source?.schema?.length ? source.schema : source?.fields ?? [];
7
+ }
8
+ export function getFieldsForPath(dataSources, arrayPath) {
9
+ const fields = getRootFields(dataSources);
10
+ const normalizedPath = normalizeArrayPath(arrayPath);
11
+ if (!normalizedPath || normalizedPath === 'root') {
12
+ return fields;
13
+ }
14
+ const directSource = dataSources.find(source => source.id === normalizedPath);
15
+ if (directSource?.fields?.length || directSource?.schema?.length) {
16
+ const directFields = directSource.schema?.length ? directSource.schema : directSource.fields ?? [];
17
+ if (directFields.some(field => !field.name.startsWith(`${normalizedPath}.`))) {
18
+ return directFields;
19
+ }
20
+ }
21
+ const prefix = `${normalizedPath}.`;
22
+ return fields
23
+ .filter(field => field.name.startsWith(prefix))
24
+ .map(field => ({
25
+ ...field,
26
+ name: field.name.slice(prefix.length),
27
+ path: field.path?.startsWith(prefix) ? field.path.slice(prefix.length) : field.path,
28
+ }));
29
+ }
30
+ export function createArrayPathOptions(dataSources, rowsByPath = {}, existingPaths = []) {
31
+ const paths = new Set();
32
+ Object.keys(rowsByPath).forEach(path => {
33
+ if (path && path !== 'root') {
34
+ paths.add(path);
35
+ }
36
+ });
37
+ existingPaths.forEach(path => {
38
+ if (path && path !== 'root') {
39
+ paths.add(path);
40
+ }
41
+ });
42
+ for (const field of getRootFields(dataSources)) {
43
+ const segments = field.name.split('.').filter(Boolean);
44
+ for (let length = 1; length < segments.length; length += 1) {
45
+ const candidate = segments.slice(0, length).join('.');
46
+ if (length === 1 || Object.prototype.hasOwnProperty.call(rowsByPath, candidate)) {
47
+ paths.add(candidate);
48
+ }
49
+ }
50
+ }
51
+ return Array.from(paths)
52
+ .sort((left, right) => left.localeCompare(right))
53
+ .map(path => ({ value: path, label: path }));
54
+ }
55
+ function normalizeArrayPath(path) {
56
+ if (!path) {
57
+ return undefined;
58
+ }
59
+ return path.startsWith('root.') ? path.slice(5) : path;
60
+ }
61
+ //# sourceMappingURL=data-source-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source-paths.js","sourceRoot":"","sources":["../src/data-source-paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { EvalContext } from '@report-designer/core';
2
+ import type { DesignerLocale } from '../i18n/messages';
3
+ import { type ExpressionFunctionMeta } from './function-catalog';
4
+ export type ExpressionRuntimeFunction = (args: unknown[], ctx: EvalContext) => unknown;
5
+ export interface ExpressionSystemVariableMeta {
6
+ name: string;
7
+ insertText?: string;
8
+ description: Record<DesignerLocale, string>;
9
+ previewValue?: unknown | ((ctx: ExpressionVariablePreviewContext) => unknown);
10
+ }
11
+ export interface ExpressionVariablePreviewContext {
12
+ templateName: string;
13
+ rowIndex: number;
14
+ date: Date;
15
+ }
16
+ export interface ExpressionFormatMeta {
17
+ name: string;
18
+ insertText: string;
19
+ detail: Record<DesignerLocale, string>;
20
+ description: Record<DesignerLocale, string>;
21
+ }
22
+ export interface ExpressionCatalogExtensions {
23
+ functions?: Array<ExpressionFunctionMeta & {
24
+ evaluate?: ExpressionRuntimeFunction;
25
+ }>;
26
+ variables?: ExpressionSystemVariableMeta[];
27
+ formats?: ExpressionFormatMeta[];
28
+ }
29
+ export interface ResolvedExpressionCatalog {
30
+ functions: ExpressionFunctionMeta[];
31
+ variables: ExpressionSystemVariableMeta[];
32
+ formats: ExpressionFormatMeta[];
33
+ runtimeFunctions: Record<string, ExpressionRuntimeFunction>;
34
+ }
35
+ export declare const BUILTIN_SYSTEM_VARIABLES: ExpressionSystemVariableMeta[];
36
+ export declare const BUILTIN_FORMAT_PATTERNS: ExpressionFormatMeta[];
37
+ export declare function resolveExpressionCatalog(extensions?: ExpressionCatalogExtensions): ResolvedExpressionCatalog;
38
+ export declare function getExpressionVariableValues(catalog: ResolvedExpressionCatalog, context: ExpressionVariablePreviewContext): Record<string, unknown>;
39
+ //# sourceMappingURL=expression-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expression-catalog.d.ts","sourceRoot":"","sources":["../../src/expression/expression-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC;AAEvF,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,gCAAgC,KAAK,OAAO,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,gCAAgC;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC,sBAAsB,GAAG;QAAE,QAAQ,CAAC,EAAE,yBAAyB,CAAA;KAAE,CAAC,CAAC;IACrF,SAAS,CAAC,EAAE,4BAA4B,EAAE,CAAC;IAC3C,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,sBAAsB,EAAE,CAAC;IACpC,SAAS,EAAE,4BAA4B,EAAE,CAAC;IAC1C,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CAC7D;AAED,eAAO,MAAM,wBAAwB,EAAE,4BAA4B,EAqClE,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,oBAAoB,EAYzD,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,UAAU,CAAC,EAAE,2BAA2B,GAAG,yBAAyB,CA+B5G;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,yBAAyB,EAClC,OAAO,EAAE,gCAAgC,GACxC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB"}