@jotforminc/dnd-builder 3.1.1 → 3.2.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 (125) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/index.d.ts +428 -0
  3. package/lib/cjs/components/AlignmentGuides.js +28 -18
  4. package/lib/cjs/components/AlignmentGuides.js.map +1 -1
  5. package/lib/cjs/components/Builder/ContextMenu.js +4 -1
  6. package/lib/cjs/components/Builder/ContextMenu.js.map +1 -1
  7. package/lib/cjs/components/Builder/DraggableLayer.js +1 -5
  8. package/lib/cjs/components/Builder/DraggableLayer.js.map +1 -1
  9. package/lib/cjs/components/Builder/Element.js +7 -4
  10. package/lib/cjs/components/Builder/Element.js.map +1 -1
  11. package/lib/cjs/components/Builder/Page.js +56 -62
  12. package/lib/cjs/components/Builder/Page.js.map +1 -1
  13. package/lib/cjs/components/Builder/Scene.js +30 -251
  14. package/lib/cjs/components/Builder/Scene.js.map +1 -1
  15. package/lib/cjs/components/Builder/SelectionBox.js +48 -0
  16. package/lib/cjs/components/Builder/SelectionBox.js.map +1 -0
  17. package/lib/cjs/components/DraggableItem/DraggableItem.js +78 -135
  18. package/lib/cjs/components/DraggableItem/DraggableItem.js.map +1 -1
  19. package/lib/cjs/components/DraggableItem/DraggableItemActions.js +69 -29
  20. package/lib/cjs/components/DraggableItem/DraggableItemActions.js.map +1 -1
  21. package/lib/cjs/components/DraggableItem/DraggableItemLayer.js +8 -8
  22. package/lib/cjs/components/DraggableItem/DraggableItemLayer.js.map +1 -1
  23. package/lib/cjs/components/PageItemResizer.js +37 -43
  24. package/lib/cjs/components/PageItemResizer.js.map +1 -1
  25. package/lib/cjs/components/Panels/AllSlidesPanel/AllSlidesPanel.js +1 -3
  26. package/lib/cjs/components/Panels/AllSlidesPanel/AllSlidesPanel.js.map +1 -1
  27. package/lib/cjs/components/Panels/AllSlidesPanel/PageList.js +0 -6
  28. package/lib/cjs/components/Panels/AllSlidesPanel/PageList.js.map +1 -1
  29. package/lib/cjs/components/Panels/LeftPanel/LeftPanel.js +1 -4
  30. package/lib/cjs/components/Panels/LeftPanel/LeftPanel.js.map +1 -1
  31. package/lib/cjs/components/Panels/LeftPanel/LeftPanelOpener.js +6 -7
  32. package/lib/cjs/components/Panels/LeftPanel/LeftPanelOpener.js.map +1 -1
  33. package/lib/cjs/components/Panels/RightPanel/RightPanel.js +7 -7
  34. package/lib/cjs/components/Panels/RightPanel/RightPanel.js.map +1 -1
  35. package/lib/cjs/components/Panels/RightPanel/RightPanelToggler.js +9 -10
  36. package/lib/cjs/components/Panels/RightPanel/RightPanelToggler.js.map +1 -1
  37. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanel.js +1 -3
  38. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanel.js.map +1 -1
  39. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanelToggler.js +8 -6
  40. package/lib/cjs/components/Panels/SlidesPanel/SlidesPanelToggler.js.map +1 -1
  41. package/lib/cjs/components/ReportItemsWrapper.js +5 -11
  42. package/lib/cjs/components/ReportItemsWrapper.js.map +1 -1
  43. package/lib/cjs/components/Settings/PageLayer/LayerDragOverlay.js +2 -4
  44. package/lib/cjs/components/Settings/PageLayer/LayerDragOverlay.js.map +1 -1
  45. package/lib/cjs/components/Settings/PageLayer/LayerItem.js +12 -7
  46. package/lib/cjs/components/Settings/PageLayer/LayerItem.js.map +1 -1
  47. package/lib/cjs/components/Settings/PageLayer/PageLayer.js +2 -4
  48. package/lib/cjs/components/Settings/PageLayer/PageLayer.js.map +1 -1
  49. package/lib/cjs/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js +3 -8
  50. package/lib/cjs/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js.map +1 -1
  51. package/lib/cjs/constants/texts.js +0 -1
  52. package/lib/cjs/constants/texts.js.map +1 -1
  53. package/lib/cjs/contexts/BuilderContext.js +47 -23
  54. package/lib/cjs/contexts/BuilderContext.js.map +1 -1
  55. package/lib/cjs/styles/_jfReportsPages.scss +8 -1
  56. package/lib/cjs/utils/functions.js +124 -34
  57. package/lib/cjs/utils/functions.js.map +1 -1
  58. package/lib/cjs/utils/hooks.js +7 -7
  59. package/lib/cjs/utils/hooks.js.map +1 -1
  60. package/lib/cjs/utils/useKeyboardActions.js +263 -0
  61. package/lib/cjs/utils/useKeyboardActions.js.map +1 -0
  62. package/lib/cjs/utils/useMarqueeSelection.js +156 -0
  63. package/lib/cjs/utils/useMarqueeSelection.js.map +1 -0
  64. package/lib/esm/components/AlignmentGuides.js +28 -18
  65. package/lib/esm/components/AlignmentGuides.js.map +1 -1
  66. package/lib/esm/components/Builder/ContextMenu.js +4 -1
  67. package/lib/esm/components/Builder/ContextMenu.js.map +1 -1
  68. package/lib/esm/components/Builder/DraggableLayer.js +1 -5
  69. package/lib/esm/components/Builder/DraggableLayer.js.map +1 -1
  70. package/lib/esm/components/Builder/Element.js +7 -4
  71. package/lib/esm/components/Builder/Element.js.map +1 -1
  72. package/lib/esm/components/Builder/Page.js +58 -64
  73. package/lib/esm/components/Builder/Page.js.map +1 -1
  74. package/lib/esm/components/Builder/Scene.js +32 -253
  75. package/lib/esm/components/Builder/Scene.js.map +1 -1
  76. package/lib/esm/components/Builder/SelectionBox.js +42 -0
  77. package/lib/esm/components/Builder/SelectionBox.js.map +1 -0
  78. package/lib/esm/components/DraggableItem/DraggableItem.js +80 -137
  79. package/lib/esm/components/DraggableItem/DraggableItem.js.map +1 -1
  80. package/lib/esm/components/DraggableItem/DraggableItemActions.js +72 -28
  81. package/lib/esm/components/DraggableItem/DraggableItemActions.js.map +1 -1
  82. package/lib/esm/components/DraggableItem/DraggableItemLayer.js +9 -9
  83. package/lib/esm/components/DraggableItem/DraggableItemLayer.js.map +1 -1
  84. package/lib/esm/components/PageItemResizer.js +38 -44
  85. package/lib/esm/components/PageItemResizer.js.map +1 -1
  86. package/lib/esm/components/Panels/AllSlidesPanel/AllSlidesPanel.js +2 -4
  87. package/lib/esm/components/Panels/AllSlidesPanel/AllSlidesPanel.js.map +1 -1
  88. package/lib/esm/components/Panels/AllSlidesPanel/PageList.js +0 -6
  89. package/lib/esm/components/Panels/AllSlidesPanel/PageList.js.map +1 -1
  90. package/lib/esm/components/Panels/LeftPanel/LeftPanel.js +3 -6
  91. package/lib/esm/components/Panels/LeftPanel/LeftPanel.js.map +1 -1
  92. package/lib/esm/components/Panels/LeftPanel/LeftPanelOpener.js +6 -7
  93. package/lib/esm/components/Panels/LeftPanel/LeftPanelOpener.js.map +1 -1
  94. package/lib/esm/components/Panels/RightPanel/RightPanel.js +7 -7
  95. package/lib/esm/components/Panels/RightPanel/RightPanel.js.map +1 -1
  96. package/lib/esm/components/Panels/RightPanel/RightPanelToggler.js +9 -10
  97. package/lib/esm/components/Panels/RightPanel/RightPanelToggler.js.map +1 -1
  98. package/lib/esm/components/Panels/SlidesPanel/SlidesPanel.js +2 -4
  99. package/lib/esm/components/Panels/SlidesPanel/SlidesPanel.js.map +1 -1
  100. package/lib/esm/components/Panels/SlidesPanel/SlidesPanelToggler.js +8 -6
  101. package/lib/esm/components/Panels/SlidesPanel/SlidesPanelToggler.js.map +1 -1
  102. package/lib/esm/components/ReportItemsWrapper.js +5 -11
  103. package/lib/esm/components/ReportItemsWrapper.js.map +1 -1
  104. package/lib/esm/components/Settings/PageLayer/LayerDragOverlay.js +2 -4
  105. package/lib/esm/components/Settings/PageLayer/LayerDragOverlay.js.map +1 -1
  106. package/lib/esm/components/Settings/PageLayer/LayerItem.js +12 -7
  107. package/lib/esm/components/Settings/PageLayer/LayerItem.js.map +1 -1
  108. package/lib/esm/components/Settings/PageLayer/PageLayer.js +2 -4
  109. package/lib/esm/components/Settings/PageLayer/PageLayer.js.map +1 -1
  110. package/lib/esm/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js +3 -8
  111. package/lib/esm/components/TextEditor/CustomToolbar/CustomToolbarWrapper.js.map +1 -1
  112. package/lib/esm/constants/texts.js +0 -1
  113. package/lib/esm/constants/texts.js.map +1 -1
  114. package/lib/esm/contexts/BuilderContext.js +47 -23
  115. package/lib/esm/contexts/BuilderContext.js.map +1 -1
  116. package/lib/esm/styles/_jfReportsPages.scss +8 -1
  117. package/lib/esm/utils/functions.js +121 -34
  118. package/lib/esm/utils/functions.js.map +1 -1
  119. package/lib/esm/utils/hooks.js +7 -7
  120. package/lib/esm/utils/hooks.js.map +1 -1
  121. package/lib/esm/utils/useKeyboardActions.js +261 -0
  122. package/lib/esm/utils/useKeyboardActions.js.map +1 -0
  123. package/lib/esm/utils/useMarqueeSelection.js +154 -0
  124. package/lib/esm/utils/useMarqueeSelection.js.map +1 -0
  125. package/package.json +11 -7
package/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [3.2.0](https://github.com/jotform/dnd-builder/compare/v3.1.1...v3.2.0) (2026-02-06)
6
+
7
+
8
+ ### Features
9
+
10
+ * **dnd-builder:** implement marquee selection for multiple items ([4b82867](https://github.com/jotform/dnd-builder/commit/4b82867f2ee185553a59affa1994fc46a5a13607))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * corrects item snapping with zoom changes ([e6e72bd](https://github.com/jotform/dnd-builder/commit/e6e72bd6da6cc6cd743e7790dbc969af817cd28f))
16
+ * **dnd-builder:** use item title as default value ([e3c8fb0](https://github.com/jotform/dnd-builder/commit/e3c8fb0ae0e532c7291201fbf7919df5aea33169))
17
+ * resetActiveElements method is updated ([48c3efd](https://github.com/jotform/dnd-builder/commit/48c3efd73b13dc9a5546d0ef79bba883e9b8f976))
18
+ * resets active elements to layout on panel open ([f508ca2](https://github.com/jotform/dnd-builder/commit/f508ca2c9721c998190160534d0e9ab73d12595b))
19
+ * rounds position values before service calls ([868a7dc](https://github.com/jotform/dnd-builder/commit/868a7dca0c72273362066a7585b1ce166ae32daf))
20
+ * sort lines ([dac6978](https://github.com/jotform/dnd-builder/commit/dac6978f45ded1c083a5134a0952461ec869f33c))
21
+
5
22
  ### [3.1.1](https://github.com/jotform/dnd-builder/compare/v3.1.0...v3.1.1) (2026-02-03)
6
23
 
7
24
 
package/index.d.ts ADDED
@@ -0,0 +1,428 @@
1
+ import { ComponentType, ReactNode, FC, SVGProps } from 'react';
2
+
3
+ // ============================================================================
4
+ // Common Types
5
+ // ============================================================================
6
+
7
+ export type Theme = 'lightMode' | 'darkMode';
8
+ export type Mode = 'customize' | 'preview' | 'print' | 'presentation';
9
+
10
+ export interface Position {
11
+ left: number;
12
+ top: number;
13
+ }
14
+
15
+ export interface Dimensions {
16
+ height: number;
17
+ width: number;
18
+ }
19
+
20
+ export interface ItemBase extends Position, Dimensions {
21
+ id: string;
22
+ pageID: string;
23
+ itemType: string;
24
+ isLocked?: boolean;
25
+ opacity?: number;
26
+ }
27
+
28
+ export interface PageItem extends ItemBase {
29
+ [key: string]: unknown;
30
+ }
31
+
32
+ export interface Page {
33
+ id: string;
34
+ order: number;
35
+ items: PageItem[];
36
+ backgroundColor?: string;
37
+ [key: string]: unknown;
38
+ }
39
+
40
+ export interface ReportSettings {
41
+ reportLayoutWidth?: number;
42
+ reportLayoutHeight?: number;
43
+ reportBackgroundColor?: string;
44
+ reportPageTransition?: 'noAnimation' | 'horizontalSlide' | 'verticalSlide' | 'scaleAndSlide' | 'scaleAndFade';
45
+ [key: string]: unknown;
46
+ }
47
+
48
+ // ============================================================================
49
+ // Left Panel Config
50
+ // ============================================================================
51
+
52
+ export interface LeftPanelElement {
53
+ itemType: string;
54
+ title: string;
55
+ }
56
+
57
+ export interface LeftPanelSection {
58
+ title: string;
59
+ elements: LeftPanelElement[];
60
+ }
61
+
62
+ export type LeftPanelConfig = LeftPanelSection[];
63
+
64
+ // ============================================================================
65
+ // Accepted Items
66
+ // ============================================================================
67
+
68
+ export interface ElementSetting {
69
+ key: string;
70
+ label?: string;
71
+ section: string;
72
+ type: string;
73
+ options?: unknown[];
74
+ range?: [number, number];
75
+ showWhen?: Record<string, unknown>;
76
+ hideWhen?: Record<string, unknown>;
77
+ [key: string]: unknown;
78
+ }
79
+
80
+ export interface ElementDetails {
81
+ itemType: string;
82
+ height: number;
83
+ width: number;
84
+ [key: string]: unknown;
85
+ }
86
+
87
+ export interface AcceptedItem<T = unknown> {
88
+ Component: ComponentType<{ item: T; isSelected?: boolean; onItemChange?: ItemChangeHandler }>;
89
+ itemType: string;
90
+ settings: ElementSetting[];
91
+ details: ElementDetails;
92
+ defaultItem?: Partial<T>;
93
+ }
94
+
95
+ export type AcceptedItems = Record<string, AcceptedItem>;
96
+
97
+ // ============================================================================
98
+ // Event Handlers
99
+ // ============================================================================
100
+
101
+ export type ItemChangeHandler = (
102
+ identifier: { id: string },
103
+ changes: Partial<PageItem>
104
+ ) => void;
105
+
106
+ export type ItemMoveHandler = (
107
+ identifier: { id: string },
108
+ position: Position & { pageID: string }
109
+ ) => void;
110
+
111
+ export type ItemResizeHandler = (
112
+ identifier: { id: string },
113
+ dimensions: Position & Dimensions & { pageID: string }
114
+ ) => void;
115
+
116
+ export type ItemAddHandler = (item: PageItem) => void;
117
+ export type ItemRemoveHandler = (item: PageItem) => void;
118
+ export type ItemsMoveHandler = (items: PageItem[]) => void;
119
+
120
+ export type PageAddHandler = () => void;
121
+ export type PageRemoveHandler = (pageID: string) => void;
122
+ export type PageChangeHandler = (pageID: string, changes: Partial<Page>) => void;
123
+ export type PageDuplicateHandler = (pageID: string) => void;
124
+ export type PageOrdersChangeHandler = (pageOrders: { id: string; order: number }[]) => void;
125
+
126
+ export type SettingChangeHandler = (changes: Partial<ReportSettings>) => void;
127
+ export type EventTriggerHandler = (eventName: string, itemType?: string) => void;
128
+ export type RightPanelsToggledHandler = (isOpen: boolean) => void;
129
+
130
+ export type ItemAccessor = (item: PageItem) => Record<string, unknown> | undefined;
131
+
132
+ // ============================================================================
133
+ // Presentation Bar Actions
134
+ // ============================================================================
135
+
136
+ export interface PresentationBarAction {
137
+ icon?: ReactNode;
138
+ label?: string;
139
+ onClick?: () => void;
140
+ [key: string]: unknown;
141
+ }
142
+
143
+ // ============================================================================
144
+ // Component Props
145
+ // ============================================================================
146
+
147
+ export interface CommonProps {
148
+ /** Items for to render in the report */
149
+ acceptedItems?: AcceptedItems;
150
+ /** Array of React components to render statically on each page (eg. watermark) */
151
+ additionalPageItems?: ReactNode[];
152
+ /** To pass in extra props to items selectively */
153
+ itemAccessor?: ItemAccessor;
154
+ /** To track and log user actions */
155
+ onAnEventTrigger?: EventTriggerHandler;
156
+ /** Array of pages with their settings and items */
157
+ pages?: Page[];
158
+ /** General report settings such as layout size and background color */
159
+ settings?: ReportSettings;
160
+ /** Theme */
161
+ theme?: Theme;
162
+ }
163
+
164
+ export interface BuilderProps extends CommonProps {
165
+ /** Array of strings representing item types that should have disabled interaction */
166
+ disableInteraction?: string[];
167
+ /** Last scroll position */
168
+ lastScrollPosition?: number;
169
+ /** Configuration for the left panel elements */
170
+ leftPanelConfig?: LeftPanelConfig;
171
+ /** Function called upon adding an item */
172
+ onItemAdd?: ItemAddHandler;
173
+ /** Function called upon editing an item */
174
+ onItemChange?: ItemChangeHandler;
175
+ /** Function called upon moving an item */
176
+ onItemMove?: ItemMoveHandler;
177
+ /** Function called upon removing an item */
178
+ onItemRemove?: ItemRemoveHandler;
179
+ /** Function called upon resizing an item */
180
+ onItemResize?: ItemResizeHandler;
181
+ /** Function called upon moving multiple items */
182
+ onItemsMove?: ItemsMoveHandler;
183
+ /** Function called upon adding a page */
184
+ onPageAdd?: PageAddHandler;
185
+ /** Function called upon editing a page */
186
+ onPageChange?: PageChangeHandler;
187
+ /** Function called upon duplicating a page */
188
+ onPageDuplicate?: PageDuplicateHandler;
189
+ /** Function called upon reordering pages */
190
+ onPageOrdersChange?: PageOrdersChangeHandler;
191
+ /** Function called upon removing a page */
192
+ onPageRemove?: PageRemoveHandler;
193
+ /** Function called when the slides or the right panel is toggled */
194
+ onRightPanelsToggled?: RightPanelsToggledHandler;
195
+ /** Function called upon editing a general report setting */
196
+ onSettingChange?: SettingChangeHandler;
197
+ /** Enable experimental features */
198
+ useExperimentalFeatures?: boolean;
199
+ }
200
+
201
+ export interface PreviewProps extends CommonProps {}
202
+
203
+ export interface PrintProps extends CommonProps {}
204
+
205
+ export interface PresentationProps extends CommonProps {
206
+ /** To pass in action definitions that will be rendered as buttons */
207
+ presentationBarActions?: PresentationBarAction[];
208
+ /** Flag for fixed action bar */
209
+ useFixedPresentationBar?: boolean;
210
+ }
211
+
212
+ export interface ReportProps extends BuilderProps, PresentationProps {
213
+ /** Conditionally rendering different modes */
214
+ mode?: Mode;
215
+ /** Texts used in the library - can be changed or translated */
216
+ reportsAppTexts?: ReportsAppTexts;
217
+ }
218
+
219
+ // ============================================================================
220
+ // Element Item Types
221
+ // ============================================================================
222
+
223
+ export interface RichTextItem extends ItemBase {
224
+ itemType: 'text';
225
+ fontFamily?: string;
226
+ value?: string;
227
+ }
228
+
229
+ export interface ImageItem extends ItemBase {
230
+ itemType: 'image';
231
+ url?: string;
232
+ defaultURL?: string;
233
+ roundedCorners?: number;
234
+ }
235
+
236
+ export interface ShapeItem extends ItemBase {
237
+ itemType: 'shapes';
238
+ shapeType?: 'rectangle' | 'ellipse' | 'line' | 'triangle' | 'star';
239
+ shapeFillColor?: string;
240
+ shapeFillShow?: 'on' | 'off';
241
+ shapeBorderColor?: string;
242
+ shapeBorderShow?: 'on' | 'off';
243
+ shapeBorderWidth?: string;
244
+ roundedCorners?: number;
245
+ lineType?: 'solid' | 'dashed' | 'dotted';
246
+ lineSize?: 'thin' | 'medium' | 'thick';
247
+ lineDirection?: 'horizontal' | 'vertical';
248
+ }
249
+
250
+ export interface ChartItem extends ItemBase {
251
+ itemType: 'graphic';
252
+ chartType?: 'pie' | 'column';
253
+ }
254
+
255
+ export interface IconItem extends ItemBase {
256
+ itemType: 'icon';
257
+ iconType?: string;
258
+ iconFillColor?: string;
259
+ }
260
+
261
+ // ============================================================================
262
+ // Element Components
263
+ // ============================================================================
264
+
265
+ export interface RichTextElementProps {
266
+ item?: RichTextItem;
267
+ isSelected?: boolean;
268
+ onItemChange?: ItemChangeHandler;
269
+ }
270
+
271
+ export interface ImageElementProps {
272
+ item?: ImageItem;
273
+ itemAccessor?: ItemAccessor;
274
+ }
275
+
276
+ export interface ShapeElementProps {
277
+ item?: ShapeItem;
278
+ }
279
+
280
+ export interface ChartElementProps {
281
+ item?: ChartItem;
282
+ }
283
+
284
+ export interface IconElementProps {
285
+ item?: IconItem;
286
+ }
287
+
288
+ // ============================================================================
289
+ // Texts
290
+ // ============================================================================
291
+
292
+ export interface ReportsAppTexts {
293
+ ADD_ELEMENT?: string;
294
+ ADD_LINK?: string;
295
+ ADD_NEW_PAGE?: string;
296
+ BACKGROUND_COLOR?: string;
297
+ CHART_ELEMENT?: string;
298
+ CHART_SETTINGS?: string;
299
+ CLICK_TO_EDIT_HEADER?: string;
300
+ CLICK_TO_EDIT_TEXT?: string;
301
+ DATACARD_SETTINGS?: string;
302
+ DELETE?: string;
303
+ DELETE_ITEM?: string;
304
+ DUPLICATE_ITEM?: string;
305
+ DUPLICATE_PAGE?: string;
306
+ ELEMENTS?: string;
307
+ FIT_TO_PAGE?: string;
308
+ FIT_TO_SCENE?: string;
309
+ GENERAL?: string;
310
+ GRID_SETTINGS?: string;
311
+ HEADER_SETTINGS?: string;
312
+ HEIGHT?: string;
313
+ ICON_SETTINGS?: string;
314
+ IMAGE_SETTINGS?: string;
315
+ ITEM_SETTINGS?: string;
316
+ LAYERS?: string;
317
+ LAYOUT_SETTINGS?: string;
318
+ LOCK_ITEM?: string;
319
+ MOVE_BACKWARDS?: string;
320
+ MOVE_FORWARDS?: string;
321
+ MOVE_PAGE_DOWNWARDS?: string;
322
+ MOVE_PAGE_UPWARDS?: string;
323
+ MOVE_TO_BACK?: string;
324
+ MOVE_TO_FRONT?: string;
325
+ NO_ELEMENT_IN_PAGE?: string;
326
+ NO_RESULT?: string;
327
+ ORIGINAL_SIZE?: string;
328
+ PAGE_ELEMENT?: string;
329
+ PAGE_SETTINGS?: string;
330
+ PAGE_STYLE?: string;
331
+ RECTANGLE?: string;
332
+ REMOVE_PAGE?: string;
333
+ SEARCH?: string;
334
+ SETTINGS?: string;
335
+ SHOW_ALL?: string;
336
+ SLIDES?: string;
337
+ TEXT_SETTINGS?: string;
338
+ TOGGLE_OFF?: string;
339
+ TOGGLE_ON?: string;
340
+ UNLOCK_ITEM?: string;
341
+ WIDTH?: string;
342
+ ZOOM_IN?: string;
343
+ ZOOM_OUT?: string;
344
+ [key: string]: string | undefined;
345
+ }
346
+
347
+ // ============================================================================
348
+ // Layout & Page Settings
349
+ // ============================================================================
350
+
351
+ export interface LayoutSettings {
352
+ itemType: string;
353
+ settings: ElementSetting[];
354
+ }
355
+
356
+ export interface PageSettings {
357
+ itemType: string;
358
+ settings: ElementSetting[];
359
+ }
360
+
361
+ // ============================================================================
362
+ // Report Icons
363
+ // ============================================================================
364
+
365
+ export interface ReportIconsType {
366
+ [key: string]: FC<SVGProps<SVGSVGElement>>;
367
+ }
368
+
369
+ // ============================================================================
370
+ // Exported Components
371
+ // ============================================================================
372
+
373
+ declare const Builder: FC<BuilderProps>;
374
+ declare const Preview: FC<PreviewProps>;
375
+ declare const Print: FC<PrintProps>;
376
+ declare const Presentation: FC<PresentationProps>;
377
+ declare const Report: FC<ReportProps>;
378
+
379
+ // ============================================================================
380
+ // Exported Elements
381
+ // ============================================================================
382
+
383
+ declare const RichText: AcceptedItem<RichTextItem>;
384
+ declare const Image: AcceptedItem<ImageItem>;
385
+ declare const Shapes: AcceptedItem<ShapeItem>;
386
+ declare const Chart: AcceptedItem<ChartItem>;
387
+ declare const Icon: AcceptedItem<IconItem>;
388
+ declare const StaticRichText: AcceptedItem<RichTextItem>;
389
+
390
+ // ============================================================================
391
+ // Exported Utilities
392
+ // ============================================================================
393
+
394
+ declare function generateId(length?: number): string;
395
+
396
+ // ============================================================================
397
+ // Exported Constants
398
+ // ============================================================================
399
+
400
+ declare const Layout: LayoutSettings;
401
+ declare const Page: PageSettings;
402
+ declare const ReportIcons: ReportIconsType;
403
+ declare const reportsAppTexts: ReportsAppTexts;
404
+
405
+ // ============================================================================
406
+ // Exports
407
+ // ============================================================================
408
+
409
+ export {
410
+ Builder,
411
+ Preview,
412
+ Print,
413
+ Presentation,
414
+ Report,
415
+ RichText,
416
+ Image,
417
+ Shapes,
418
+ Chart,
419
+ Icon,
420
+ StaticRichText,
421
+ generateId,
422
+ Layout,
423
+ Page,
424
+ ReportIcons,
425
+ reportsAppTexts,
426
+ };
427
+
428
+ export default Report;
@@ -1,8 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  require('core-js/modules/es.array.concat.js');
4
- require('core-js/modules/es.array.map.js');
5
- require('core-js/modules/es.object.keys.js');
4
+ require('core-js/modules/es.object.entries.js');
6
5
  require('core-js/modules/es.object.to-string.js');
7
6
  require('core-js/modules/es.regexp.to-string.js');
8
7
  var React = require('react');
@@ -16,40 +15,51 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
16
15
 
17
16
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
18
17
 
18
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
19
+
20
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
+
22
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
+
24
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
25
+
26
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
27
+
28
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
29
+
19
30
  var AlignmentGuides = function AlignmentGuides(_ref) {
20
31
  var axis = _ref.axis,
21
32
  _ref$guides = _ref.guides,
22
33
  guides = _ref$guides === void 0 ? {} : _ref$guides,
23
34
  _ref$matches = _ref.matches,
24
- matches = _ref$matches === void 0 ? {} : _ref$matches,
25
- _ref$show = _ref.show,
26
- show = _ref$show === void 0 ? false : _ref$show;
35
+ matches = _ref$matches === void 0 ? {} : _ref$matches;
27
36
  var zoom = BuilderContext.useBuilderStore(function (state) {
28
37
  return state.zoom;
29
38
  });
30
- if (Object.keys(matches).length === 0) return null;
31
39
  var styleKey = axis === 'x' ? 'left' : 'top';
32
- return Object.keys(guides).reduce(function (result, box) {
33
- var guideClassNames = show ? "guide ".concat(axis, "Axis active") : "guide ".concat(axis, "Axis");
34
- var yAxisGuidesForCurrentBox = guides[box][axis].map(function (position, index) {
35
- if (show && matches && matches[axis] && matches[axis].intersection && matches[axis].intersection === position) {
36
- return /*#__PURE__*/jsxRuntime.jsx("div", {
37
- className: guideClassNames,
40
+ return Object.entries(guides).reduce(function (accum, _ref2) {
41
+ var _ref3 = _slicedToArray(_ref2, 2),
42
+ box = _ref3[0],
43
+ positions = _ref3[1];
44
+
45
+ var shownGuides = positions[axis].reduce(function (acc, position, index) {
46
+ if (matches.intersection === position) {
47
+ acc.push( /*#__PURE__*/jsxRuntime.jsx("div", {
48
+ className: "guide ".concat(axis, "Axis active"),
38
49
  style: _defineProperty({}, styleKey, position / zoom)
39
- }, "".concat(position, "-").concat(index.toString(), "-").concat(box));
50
+ }, "".concat(position, "-").concat(index.toString(), "-").concat(box)));
40
51
  }
41
52
 
42
- return null;
43
- });
44
- return result.concat(yAxisGuidesForCurrentBox);
53
+ return acc;
54
+ }, []);
55
+ return accum.concat(shownGuides);
45
56
  }, []);
46
57
  };
47
58
 
48
59
  AlignmentGuides.propTypes = {
49
60
  axis: PropTypes__default['default'].oneOf(['x', 'y']).isRequired,
50
61
  guides: PropTypes__default['default'].shape({}),
51
- matches: PropTypes__default['default'].shape({}),
52
- show: PropTypes__default['default'].bool
62
+ matches: PropTypes__default['default'].shape({})
53
63
  };
54
64
  var AlignmentGuides$1 = /*#__PURE__*/React.memo(AlignmentGuides);
55
65
 
@@ -1 +1 @@
1
- {"version":3,"file":"AlignmentGuides.js","sources":["../../../src/components/AlignmentGuides.js"],"sourcesContent":["import { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useBuilderStore } from '../contexts/BuilderContext';\n\nconst AlignmentGuides = ({\n axis,\n guides = {},\n matches = {},\n show = false,\n}) => {\n const zoom = useBuilderStore(state => state.zoom);\n if (Object.keys(matches).length === 0) return null;\n const styleKey = axis === 'x' ? 'left' : 'top';\n\n return Object.keys(guides).reduce((result, box) => {\n const guideClassNames = show ? `guide ${axis}Axis active` : `guide ${axis}Axis`;\n const yAxisGuidesForCurrentBox = guides[box][axis].map((position, index) => {\n if (\n show\n && matches\n && matches[axis]\n && matches[axis].intersection\n && matches[axis].intersection === position\n ) {\n return (\n <div\n key={`${position}-${index.toString()}-${box}`}\n className={guideClassNames}\n style={{ [styleKey]: position / zoom }}\n />\n );\n }\n return null;\n });\n\n return result.concat(yAxisGuidesForCurrentBox);\n }, []);\n};\n\nAlignmentGuides.propTypes = {\n axis: PropTypes.oneOf(['x', 'y']).isRequired,\n guides: PropTypes.shape({}),\n matches: PropTypes.shape({}),\n show: PropTypes.bool,\n};\n\nexport default memo(AlignmentGuides);\n"],"names":["AlignmentGuides","axis","guides","matches","show","zoom","useBuilderStore","state","Object","keys","length","styleKey","reduce","result","box","guideClassNames","yAxisGuidesForCurrentBox","map","position","index","intersection","_jsx","toString","concat","propTypes","PropTypes","oneOf","isRequired","shape","bool","memo"],"mappings":";;;;;;;;;;;;;;;;;;AAIA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,OAKlB;AAAA,MAJJC,IAII,QAJJA,IAII;AAAA,yBAHJC,MAGI;AAAA,MAHJA,MAGI,4BAHK,EAGL;AAAA,0BAFJC,OAEI;AAAA,MAFJA,OAEI,6BAFM,EAEN;AAAA,uBADJC,IACI;AAAA,MADJA,IACI,0BADG,KACH;AACJ,MAAMC,IAAI,GAAGC,8BAAe,CAAC,UAAAC,KAAK;AAAA,WAAIA,KAAK,CAACF,IAAV;AAAA,GAAN,CAA5B;AACA,MAAIG,MAAM,CAACC,IAAP,CAAYN,OAAZ,EAAqBO,MAArB,KAAgC,CAApC,EAAuC,OAAO,IAAP;AACvC,MAAMC,QAAQ,GAAGV,IAAI,KAAK,GAAT,GAAe,MAAf,GAAwB,KAAzC;AAEA,SAAOO,MAAM,CAACC,IAAP,CAAYP,MAAZ,EAAoBU,MAApB,CAA2B,UAACC,MAAD,EAASC,GAAT,EAAiB;AACjD,QAAMC,eAAe,GAAGX,IAAI,mBAAYH,IAAZ,mCAAyCA,IAAzC,SAA5B;AACA,QAAMe,wBAAwB,GAAGd,MAAM,CAACY,GAAD,CAAN,CAAYb,IAAZ,EAAkBgB,GAAlB,CAAsB,UAACC,QAAD,EAAWC,KAAX,EAAqB;AAC1E,UACEf,IAAI,IACDD,OADH,IAEGA,OAAO,CAACF,IAAD,CAFV,IAGGE,OAAO,CAACF,IAAD,CAAP,CAAcmB,YAHjB,IAIGjB,OAAO,CAACF,IAAD,CAAP,CAAcmB,YAAd,KAA+BF,QALpC,EAME;AACA,4BACEG;AAEE,UAAA,SAAS,EAAEN,eAFb;AAGE,UAAA,KAAK,sBAAKJ,QAAL,EAAgBO,QAAQ,GAAGb,IAA3B;AAHP,qBACUa,QADV,cACsBC,KAAK,CAACG,QAAN,EADtB,cAC0CR,GAD1C,EADF;AAOD;;AACD,aAAO,IAAP;AACD,KAjBgC,CAAjC;AAmBA,WAAOD,MAAM,CAACU,MAAP,CAAcP,wBAAd,CAAP;AACD,GAtBM,EAsBJ,EAtBI,CAAP;AAuBD,CAjCD;;AAmCAhB,eAAe,CAACwB,SAAhB,GAA4B;AAC1BvB,EAAAA,IAAI,EAAEwB,6BAAS,CAACC,KAAV,CAAgB,CAAC,GAAD,EAAM,GAAN,CAAhB,EAA4BC,UADR;AAE1BzB,EAAAA,MAAM,EAAEuB,6BAAS,CAACG,KAAV,CAAgB,EAAhB,CAFkB;AAG1BzB,EAAAA,OAAO,EAAEsB,6BAAS,CAACG,KAAV,CAAgB,EAAhB,CAHiB;AAI1BxB,EAAAA,IAAI,EAAEqB,6BAAS,CAACI;AAJU,CAA5B;AAOA,qCAAeC,UAAI,CAAC9B,eAAD,CAAnB;;;;"}
1
+ {"version":3,"file":"AlignmentGuides.js","sources":["../../../src/components/AlignmentGuides.js"],"sourcesContent":["import { memo } from 'react';\nimport PropTypes from 'prop-types';\nimport { useBuilderStore } from '../contexts/BuilderContext';\n\nconst AlignmentGuides = ({\n axis,\n guides = {},\n matches = {},\n}) => {\n const zoom = useBuilderStore(state => state.zoom);\n const styleKey = axis === 'x' ? 'left' : 'top';\n\n return Object.entries(guides).reduce((accum, [box, positions]) => {\n const shownGuides = positions[axis].reduce((acc, position, index) => {\n if (matches.intersection === position) {\n acc.push(\n <div\n key={`${position}-${index.toString()}-${box}`}\n className={`guide ${axis}Axis active`}\n style={{ [styleKey]: position / zoom }}\n />,\n );\n }\n return acc;\n }, []);\n\n return accum.concat(shownGuides);\n }, []);\n};\n\nAlignmentGuides.propTypes = {\n axis: PropTypes.oneOf(['x', 'y']).isRequired,\n guides: PropTypes.shape({}),\n matches: PropTypes.shape({}),\n};\n\nexport default memo(AlignmentGuides);\n"],"names":["AlignmentGuides","axis","guides","matches","zoom","useBuilderStore","state","styleKey","Object","entries","reduce","accum","box","positions","shownGuides","acc","position","index","intersection","push","_jsx","toString","concat","propTypes","PropTypes","oneOf","isRequired","shape","memo"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,OAIlB;AAAA,MAHJC,IAGI,QAHJA,IAGI;AAAA,yBAFJC,MAEI;AAAA,MAFJA,MAEI,4BAFK,EAEL;AAAA,0BADJC,OACI;AAAA,MADJA,OACI,6BADM,EACN;AACJ,MAAMC,IAAI,GAAGC,8BAAe,CAAC,UAAAC,KAAK;AAAA,WAAIA,KAAK,CAACF,IAAV;AAAA,GAAN,CAA5B;AACA,MAAMG,QAAQ,GAAGN,IAAI,KAAK,GAAT,GAAe,MAAf,GAAwB,KAAzC;AAEA,SAAOO,MAAM,CAACC,OAAP,CAAeP,MAAf,EAAuBQ,MAAvB,CAA8B,UAACC,KAAD,SAA6B;AAAA;AAAA,QAApBC,GAAoB;AAAA,QAAfC,SAAe;;AAChE,QAAMC,WAAW,GAAGD,SAAS,CAACZ,IAAD,CAAT,CAAgBS,MAAhB,CAAuB,UAACK,GAAD,EAAMC,QAAN,EAAgBC,KAAhB,EAA0B;AACnE,UAAId,OAAO,CAACe,YAAR,KAAyBF,QAA7B,EAAuC;AACrCD,QAAAA,GAAG,CAACI,IAAJ,eACEC;AAEE,UAAA,SAAS,kBAAWnB,IAAX,gBAFX;AAGE,UAAA,KAAK,sBAAKM,QAAL,EAAgBS,QAAQ,GAAGZ,IAA3B;AAHP,qBACUY,QADV,cACsBC,KAAK,CAACI,QAAN,EADtB,cAC0CT,GAD1C,EADF;AAOD;;AACD,aAAOG,GAAP;AACD,KAXmB,EAWjB,EAXiB,CAApB;AAaA,WAAOJ,KAAK,CAACW,MAAN,CAAaR,WAAb,CAAP;AACD,GAfM,EAeJ,EAfI,CAAP;AAgBD,CAxBD;;AA0BAd,eAAe,CAACuB,SAAhB,GAA4B;AAC1BtB,EAAAA,IAAI,EAAEuB,6BAAS,CAACC,KAAV,CAAgB,CAAC,GAAD,EAAM,GAAN,CAAhB,EAA4BC,UADR;AAE1BxB,EAAAA,MAAM,EAAEsB,6BAAS,CAACG,KAAV,CAAgB,EAAhB,CAFkB;AAG1BxB,EAAAA,OAAO,EAAEqB,6BAAS,CAACG,KAAV,CAAgB,EAAhB;AAHiB,CAA5B;AAMA,qCAAeC,UAAI,CAAC5B,eAAD,CAAnB;;;;"}
@@ -264,7 +264,10 @@ var ContextMenu = function ContextMenu(_ref) {
264
264
  children: [/*#__PURE__*/jsxRuntime.jsx("span", {
265
265
  className: "contextMenu-icon",
266
266
  children: menuItem.icon
267
- }), menuItem.text]
267
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
268
+ className: "contextMenu-text",
269
+ children: menuItem.text
270
+ })]
268
271
  }, menuItem.text);
269
272
  })
270
273
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.js","sources":["../../../../src/components/Builder/ContextMenu.js"],"sourcesContent":["import {\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { useEventListener, useTranslatedTexts } from '../../utils/hooks';\nimport {\n collisionCheck,\n getContainerPositions,\n moveArrayItem,\n} from '../../utils/functions';\nimport * as icons from '../../utils/icons';\n\nimport withClickOutside from '../withClickOutside';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst ContextMenu = ({\n height = 1,\n item = {},\n items = [],\n onClickOutside = () => {},\n position = {},\n width = 1,\n}) => {\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemChange = usePropStore(state => state.onItemChange);\n const onItemRemove = usePropStore(state => state.onItemRemove);\n const onPageChange = usePropStore(state => state.onPageChange);\n const [positions, setPositions] = useState(position);\n const container = useRef(null);\n const itemIndex = items.findIndex(_item => _item.id === item.id);\n // Will be mutated.\n const orderArray = items.map(_item => _item.id);\n\n const removeFunc = () => {\n // TODO :: should listen to scroll event, not wheel\n onClickOutside();\n };\n\n useEventListener('wheel', removeFunc);\n\n useLayoutEffect(() => {\n setPositions(prev => {\n const newPosition = getContainerPositions(container.current, prev);\n return {\n ...prev,\n x: newPosition.x,\n y: newPosition.y,\n };\n });\n }, []);\n\n const moveToFront = () => {\n if (items.length !== itemIndex + 1) {\n moveArrayItem(orderArray, itemIndex, items.length - 1);\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveToBack = () => {\n if (itemIndex !== 0) {\n moveArrayItem(orderArray, itemIndex, 0);\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveForward = () => {\n if (items.length !== itemIndex + 1) {\n const colluddedItemIndex = collisionCheck(item, items, itemIndex, 1);\n if (colluddedItemIndex !== null) {\n moveArrayItem(orderArray, itemIndex, colluddedItemIndex);\n } else {\n moveArrayItem(orderArray, itemIndex, itemIndex + 1);\n }\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveBackward = () => {\n if (itemIndex !== 0) {\n const colluddedItemIndex = collisionCheck(item, items, itemIndex, -1);\n if (colluddedItemIndex) {\n moveArrayItem(orderArray, itemIndex, colluddedItemIndex);\n } else {\n moveArrayItem(orderArray, itemIndex, itemIndex - 1);\n }\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n\n onClickOutside();\n };\n\n const deleteItem = () => {\n onItemRemove(item);\n onClickOutside();\n onAnEventTrigger('removeItem', item.itemType);\n };\n\n const lockOrUnlockItem = () => {\n onItemChange({ id: item.id }, { isLocked: item.isLocked ? false : true });\n onClickOutside();\n };\n\n const fitToPage = () => {\n let _height = height;\n let _width = width;\n // Keep image ratio on fit\n if (item.itemType === 'image') {\n if (item.height > item.width) {\n _width = (item.width * _height) / item.height;\n } else if (item.width > item.height) {\n _height = (item.height * _width) / item.width;\n }\n }\n\n onItemChange({ id: item.id }, {\n height: _height,\n left: 0,\n top: 0,\n width: _width,\n });\n\n onClickOutside();\n onAnEventTrigger('fitToPage', item.itemType);\n };\n\n const {\n DELETE, FIT_TO_PAGE, LOCK_ITEM,\n MOVE_BACKWARDS, MOVE_FORWARDS,\n MOVE_TO_BACK, MOVE_TO_FRONT, UNLOCK_ITEM,\n } = useTranslatedTexts();\n\n const menuItems = [\n { func: moveToFront, icon: <icons.moveToFront />, text: MOVE_TO_FRONT },\n { func: moveForward, icon: <icons.moveToForward />, text: MOVE_FORWARDS },\n { func: moveBackward, icon: <icons.moveToBackward />, text: MOVE_BACKWARDS },\n { func: moveToBack, icon: <icons.moveToBack />, text: MOVE_TO_BACK },\n {\n func: lockOrUnlockItem,\n icon: item.isLocked ? (\n <icons.unlock className=\"icon-lock\" />\n ) : (\n <icons.lock className=\"icon-lock\" />\n ),\n text: item.isLocked ? UNLOCK_ITEM : LOCK_ITEM,\n },\n {\n func: fitToPage, icon: <icons.enterFullscreen className=\"icon-lock\" />, text: FIT_TO_PAGE,\n },\n {\n class: ' isDanger', func: deleteItem, icon: <icons.trash />, text: DELETE,\n },\n ];\n\n return (\n <div\n ref={container}\n className=\"contextMenu-wrapper\"\n style={{\n left: positions.x,\n top: positions.y,\n }}\n >\n {menuItems.map(menuItem => {\n const btnClass = `contextMenu-button jfReportButton${menuItem.class ? menuItem.class : ''}`;\n return (\n <button\n key={menuItem.text}\n className={btnClass}\n onClick={menuItem.func}\n type=\"button\"\n >\n <span className=\"contextMenu-icon\">\n {menuItem.icon}\n </span>\n {menuItem.text}\n </button>\n );\n })}\n </div>\n );\n};\n\nContextMenu.propTypes = {\n height: PropTypes.number,\n item: PropTypes.shape({\n height: PropTypes.number,\n id: PropTypes.string,\n isLocked: PropTypes.bool,\n itemType: PropTypes.string,\n left: PropTypes.number,\n pageID: PropTypes.string,\n top: PropTypes.number,\n width: PropTypes.number,\n }),\n items: PropTypes.arrayOf(PropTypes.shape({\n height: PropTypes.number,\n // id: PropTypes.string,\n left: PropTypes.number,\n top: PropTypes.number,\n width: PropTypes.number,\n })),\n onClickOutside: PropTypes.func,\n position: PropTypes.shape({}),\n width: PropTypes.number,\n};\n\nconst PortalContext = props => createPortal(<ContextMenu {...props} />, document.body);\n\nexport default withClickOutside(PortalContext);\n"],"names":["ContextMenu","height","item","items","onClickOutside","position","width","onAnEventTrigger","usePropStore","state","onItemChange","onItemRemove","onPageChange","useState","positions","setPositions","container","useRef","itemIndex","findIndex","_item","id","orderArray","map","removeFunc","useEventListener","useLayoutEffect","prev","newPosition","getContainerPositions","current","x","y","moveToFront","length","moveArrayItem","pageID","JSON","stringify","moveToBack","moveForward","colluddedItemIndex","collisionCheck","moveBackward","deleteItem","itemType","lockOrUnlockItem","isLocked","fitToPage","_height","_width","left","top","useTranslatedTexts","DELETE","FIT_TO_PAGE","LOCK_ITEM","MOVE_BACKWARDS","MOVE_FORWARDS","MOVE_TO_BACK","MOVE_TO_FRONT","UNLOCK_ITEM","menuItems","func","icon","_jsx","icons.moveToFront","text","icons.moveToForward","icons.moveToBackward","icons.moveToBack","icons.unlock","icons.lock","icons.enterFullscreen","class","icons.trash","menuItem","btnClass","_jsxs","propTypes","PropTypes","number","shape","string","bool","arrayOf","PortalContext","props","createPortal","document","body","withClickOutside"],"mappings":"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"}
1
+ {"version":3,"file":"ContextMenu.js","sources":["../../../../src/components/Builder/ContextMenu.js"],"sourcesContent":["import {\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { useEventListener, useTranslatedTexts } from '../../utils/hooks';\nimport {\n collisionCheck,\n getContainerPositions,\n moveArrayItem,\n} from '../../utils/functions';\nimport * as icons from '../../utils/icons';\n\nimport withClickOutside from '../withClickOutside';\nimport { usePropStore } from '../../contexts/PropContext';\n\nconst ContextMenu = ({\n height = 1,\n item = {},\n items = [],\n onClickOutside = () => {},\n position = {},\n width = 1,\n}) => {\n const onAnEventTrigger = usePropStore(state => state.onAnEventTrigger);\n const onItemChange = usePropStore(state => state.onItemChange);\n const onItemRemove = usePropStore(state => state.onItemRemove);\n const onPageChange = usePropStore(state => state.onPageChange);\n const [positions, setPositions] = useState(position);\n const container = useRef(null);\n const itemIndex = items.findIndex(_item => _item.id === item.id);\n // Will be mutated.\n const orderArray = items.map(_item => _item.id);\n\n const removeFunc = () => {\n // TODO :: should listen to scroll event, not wheel\n onClickOutside();\n };\n\n useEventListener('wheel', removeFunc);\n\n useLayoutEffect(() => {\n setPositions(prev => {\n const newPosition = getContainerPositions(container.current, prev);\n return {\n ...prev,\n x: newPosition.x,\n y: newPosition.y,\n };\n });\n }, []);\n\n const moveToFront = () => {\n if (items.length !== itemIndex + 1) {\n moveArrayItem(orderArray, itemIndex, items.length - 1);\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveToBack = () => {\n if (itemIndex !== 0) {\n moveArrayItem(orderArray, itemIndex, 0);\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveForward = () => {\n if (items.length !== itemIndex + 1) {\n const colluddedItemIndex = collisionCheck(item, items, itemIndex, 1);\n if (colluddedItemIndex !== null) {\n moveArrayItem(orderArray, itemIndex, colluddedItemIndex);\n } else {\n moveArrayItem(orderArray, itemIndex, itemIndex + 1);\n }\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n onClickOutside();\n };\n\n const moveBackward = () => {\n if (itemIndex !== 0) {\n const colluddedItemIndex = collisionCheck(item, items, itemIndex, -1);\n if (colluddedItemIndex) {\n moveArrayItem(orderArray, itemIndex, colluddedItemIndex);\n } else {\n moveArrayItem(orderArray, itemIndex, itemIndex - 1);\n }\n onPageChange({\n id: item.pageID,\n }, { items: JSON.stringify(orderArray) });\n }\n\n onClickOutside();\n };\n\n const deleteItem = () => {\n onItemRemove(item);\n onClickOutside();\n onAnEventTrigger('removeItem', item.itemType);\n };\n\n const lockOrUnlockItem = () => {\n onItemChange({ id: item.id }, { isLocked: item.isLocked ? false : true });\n onClickOutside();\n };\n\n const fitToPage = () => {\n let _height = height;\n let _width = width;\n // Keep image ratio on fit\n if (item.itemType === 'image') {\n if (item.height > item.width) {\n _width = (item.width * _height) / item.height;\n } else if (item.width > item.height) {\n _height = (item.height * _width) / item.width;\n }\n }\n\n onItemChange({ id: item.id }, {\n height: _height,\n left: 0,\n top: 0,\n width: _width,\n });\n\n onClickOutside();\n onAnEventTrigger('fitToPage', item.itemType);\n };\n\n const {\n DELETE, FIT_TO_PAGE, LOCK_ITEM,\n MOVE_BACKWARDS, MOVE_FORWARDS,\n MOVE_TO_BACK, MOVE_TO_FRONT, UNLOCK_ITEM,\n } = useTranslatedTexts();\n\n const menuItems = [\n { func: moveToFront, icon: <icons.moveToFront />, text: MOVE_TO_FRONT },\n { func: moveForward, icon: <icons.moveToForward />, text: MOVE_FORWARDS },\n { func: moveBackward, icon: <icons.moveToBackward />, text: MOVE_BACKWARDS },\n { func: moveToBack, icon: <icons.moveToBack />, text: MOVE_TO_BACK },\n {\n func: lockOrUnlockItem,\n icon: item.isLocked ? (\n <icons.unlock className=\"icon-lock\" />\n ) : (\n <icons.lock className=\"icon-lock\" />\n ),\n text: item.isLocked ? UNLOCK_ITEM : LOCK_ITEM,\n },\n {\n func: fitToPage, icon: <icons.enterFullscreen className=\"icon-lock\" />, text: FIT_TO_PAGE,\n },\n {\n class: ' isDanger', func: deleteItem, icon: <icons.trash />, text: DELETE,\n },\n ];\n\n return (\n <div\n ref={container}\n className=\"contextMenu-wrapper\"\n style={{\n left: positions.x,\n top: positions.y,\n }}\n >\n {menuItems.map(menuItem => {\n const btnClass = `contextMenu-button jfReportButton${menuItem.class ? menuItem.class : ''}`;\n return (\n <button\n key={menuItem.text}\n className={btnClass}\n onClick={menuItem.func}\n type=\"button\"\n >\n <span className=\"contextMenu-icon\">\n {menuItem.icon}\n </span>\n <span className=\"contextMenu-text\">\n {menuItem.text}\n </span>\n </button>\n );\n })}\n </div>\n );\n};\n\nContextMenu.propTypes = {\n height: PropTypes.number,\n item: PropTypes.shape({\n height: PropTypes.number,\n id: PropTypes.string,\n isLocked: PropTypes.bool,\n itemType: PropTypes.string,\n left: PropTypes.number,\n pageID: PropTypes.string,\n top: PropTypes.number,\n width: PropTypes.number,\n }),\n items: PropTypes.arrayOf(PropTypes.shape({\n height: PropTypes.number,\n // id: PropTypes.string,\n left: PropTypes.number,\n top: PropTypes.number,\n width: PropTypes.number,\n })),\n onClickOutside: PropTypes.func,\n position: PropTypes.shape({}),\n width: PropTypes.number,\n};\n\nconst PortalContext = props => createPortal(<ContextMenu {...props} />, document.body);\n\nexport default withClickOutside(PortalContext);\n"],"names":["ContextMenu","height","item","items","onClickOutside","position","width","onAnEventTrigger","usePropStore","state","onItemChange","onItemRemove","onPageChange","useState","positions","setPositions","container","useRef","itemIndex","findIndex","_item","id","orderArray","map","removeFunc","useEventListener","useLayoutEffect","prev","newPosition","getContainerPositions","current","x","y","moveToFront","length","moveArrayItem","pageID","JSON","stringify","moveToBack","moveForward","colluddedItemIndex","collisionCheck","moveBackward","deleteItem","itemType","lockOrUnlockItem","isLocked","fitToPage","_height","_width","left","top","useTranslatedTexts","DELETE","FIT_TO_PAGE","LOCK_ITEM","MOVE_BACKWARDS","MOVE_FORWARDS","MOVE_TO_BACK","MOVE_TO_FRONT","UNLOCK_ITEM","menuItems","func","icon","_jsx","icons.moveToFront","text","icons.moveToForward","icons.moveToBackward","icons.moveToBack","icons.unlock","icons.lock","icons.enterFullscreen","class","icons.trash","menuItem","btnClass","_jsxs","propTypes","PropTypes","number","shape","string","bool","arrayOf","PortalContext","props","createPortal","document","body","withClickOutside"],"mappings":"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"}
@@ -10,9 +10,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
10
10
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
11
11
 
12
12
  var DraggableLayer = function DraggableLayer(_ref) {
13
- var _ref$guides = _ref.guides,
14
- guides = _ref$guides === void 0 ? {} : _ref$guides,
15
- _ref$pageRefs = _ref.pageRefs,
13
+ var _ref$pageRefs = _ref.pageRefs,
16
14
  pageRefs = _ref$pageRefs === void 0 ? {} : _ref$pageRefs;
17
15
  var collectedProps = reactDnd.useDragLayer(function (monitor) {
18
16
  return {
@@ -30,13 +28,11 @@ var DraggableLayer = function DraggableLayer(_ref) {
30
28
 
31
29
  return /*#__PURE__*/jsxRuntime.jsx(DraggableItemLayer, {
32
30
  collectedProps: collectedProps,
33
- guides: guides,
34
31
  pageRefs: pageRefs
35
32
  });
36
33
  };
37
34
 
38
35
  DraggableLayer.propTypes = {
39
- guides: PropTypes__default['default'].shape({}),
40
36
  pageRefs: PropTypes__default['default'].shape({})
41
37
  };
42
38