pds-dev-kit-web-test 2.5.323 → 2.5.325

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 (68) hide show
  1. package/dist/src/common/hooks/useTooltip.js +1 -1
  2. package/dist/src/common/utils/SystemUIPositionGenerator/hoverTypeSystemUICssGenerator.js +1 -1
  3. package/dist/src/desktop/components/BasicButtonGroup/BasicButtonGroup.js +1 -1
  4. package/dist/src/sub/DynamicLayout/CompositionEditor/CompositionEditor.d.ts +20 -0
  5. package/dist/src/sub/DynamicLayout/CompositionEditor/CompositionEditor.js +1116 -0
  6. package/dist/src/sub/DynamicLayout/CompositionRenderer/ComponentBlockMatcher.js +1 -1
  7. package/dist/src/sub/DynamicLayout/CompositionRenderer/Composition.d.ts +4 -2
  8. package/dist/src/sub/DynamicLayout/CompositionRenderer/Composition.js +32 -36
  9. package/dist/src/sub/DynamicLayout/components/EditModeSectionMatcher/SectionBox.js +1 -4
  10. package/dist/src/sub/DynamicLayout/components/Section/CustomSection.d.ts +2 -2
  11. package/dist/src/sub/DynamicLayout/components/Section/sectionContext.d.ts +2 -2
  12. package/dist/src/sub/DynamicLayout/compositionActionTypes.d.ts +139 -0
  13. package/dist/src/sub/DynamicLayout/compositionActionTypes.js +2 -0
  14. package/dist/src/sub/DynamicLayout/mock_composition.d.ts +3 -0
  15. package/dist/src/sub/DynamicLayout/mock_composition.js +755 -0
  16. package/dist/src/sub/DynamicLayout/mock_contentsCarousel.d.ts +2 -0
  17. package/dist/src/sub/DynamicLayout/mock_contentsCarousel.js +326 -0
  18. package/dist/src/sub/DynamicLayout/mock_slideBanner.d.ts +2 -0
  19. package/dist/src/sub/DynamicLayout/mock_slideBanner.js +318 -0
  20. package/dist/src/sub/DynamicLayout/mocks.d.ts +5 -1
  21. package/dist/src/sub/DynamicLayout/mocks.js +34 -10
  22. package/dist/src/sub/DynamicLayout/sections/CustomSection/CustomSection.js +3 -2
  23. package/dist/src/sub/DynamicLayout/sections/CustomSection/FlexGridItem.js +8 -2
  24. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/ComponentBlockMatcher.js +8 -3
  25. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/Button/Button.js +1 -21
  26. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/ContentsCarousel.d.ts +4 -4
  27. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/ContentsCarousel.js +144 -2
  28. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/ContentsCarouselCore.d.ts +17 -0
  29. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/ContentsCarouselCore.js +39 -0
  30. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/components/CustomNavigation.d.ts +31 -0
  31. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/components/CustomNavigation.js +168 -0
  32. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/components/CustomPagination.d.ts +26 -0
  33. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/components/CustomPagination.js +185 -0
  34. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/components/CustomProgressbar.d.ts +19 -0
  35. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/components/CustomProgressbar.js +73 -0
  36. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/contentsCarouselUtils.d.ts +50 -0
  37. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/contentsCarouselUtils.js +919 -0
  38. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/index.d.ts +1 -0
  39. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/index.js +8 -0
  40. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/types.d.ts +90 -0
  41. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/ContentsCarousel/types.js +2 -0
  42. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/SlideBanner.d.ts +8 -0
  43. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/SlideBanner.js +143 -0
  44. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/SlideBannerCore.d.ts +15 -0
  45. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/SlideBannerCore.js +39 -0
  46. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/components/CustomNavigation.d.ts +31 -0
  47. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/components/CustomNavigation.js +168 -0
  48. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/components/CustomPagination.d.ts +26 -0
  49. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/components/CustomPagination.js +185 -0
  50. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/components/CustomProgressbar.d.ts +19 -0
  51. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/components/CustomProgressbar.js +73 -0
  52. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/index.d.ts +1 -0
  53. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/index.js +8 -0
  54. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/slideBannerUtils.d.ts +48 -0
  55. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/slideBannerUtils.js +855 -0
  56. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/types.d.ts +80 -0
  57. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/SlideBanner/types.js +2 -0
  58. package/dist/src/sub/DynamicLayout/sections/CustomSection/components/ComponentBlock/componentBlocks/types.d.ts +27 -0
  59. package/dist/src/sub/DynamicLayout/sections/CustomSection/types.d.ts +16 -7
  60. package/dist/src/sub/DynamicLayout/sections/CustomSection/types.js +2 -1
  61. package/dist/src/sub/DynamicLayout/sections/CustomSection/util/parseCompositionPlacement.d.ts +20 -0
  62. package/dist/src/sub/DynamicLayout/sections/CustomSection/util/parseCompositionPlacement.js +22 -0
  63. package/dist/src/sub/DynamicLayout/sections/CustomSection/util/parseJsonProperties.d.ts +2 -2
  64. package/dist/src/sub/DynamicLayout/sections/CustomSection/util/parseProperties.d.ts +2 -2
  65. package/dist/src/sub/DynamicLayout/sections/CustomSection/util/types.d.ts +33 -1
  66. package/dist/src/sub/DynamicLayout/types.d.ts +29 -2
  67. package/package.json +3 -3
  68. package/release-note.md +3 -3
@@ -0,0 +1,1116 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ var jsx_runtime_1 = require("react/jsx-runtime");
54
+ var publ_echo_1 = require("publ-echo");
55
+ var group_1 = require("publ-echo/dist/lib/GridLayoutEditor/group");
56
+ var renderHelpers_1 = require("publ-echo/dist/lib/GridLayoutEditor/utils/renderHelpers");
57
+ var react_1 = __importStar(require("react"));
58
+ var ErrorBoundary_1 = require("../../DynamicLayout/components/Section/ErrorBoundary");
59
+ var gleStyles_1 = require("../../DynamicLayout/gleStyles");
60
+ var styled_components_1 = __importDefault(require("styled-components"));
61
+ var Section_1 = require("../components/Section");
62
+ var ComponentBlockMatcher_1 = __importDefault(require("../CompositionRenderer/ComponentBlockMatcher"));
63
+ var S_HiddenCover_1 = require("../sections/CustomSection/components/ComponentBlock/componentBlocks/components/S_HiddenCover");
64
+ var clsx_1 = require("../sections/CustomSection/newUtils/clsx");
65
+ var group_2 = require("../sections/CustomSection/newUtils/group");
66
+ var util_1 = require("../sections/CustomSection/util");
67
+ var parseSectionPadding_1 = __importDefault(require("../sections/CustomSection/util/layoutPropParsers/parseSectionPadding"));
68
+ var parseCompositionPlacement_1 = __importDefault(require("../sections/CustomSection/util/parseCompositionPlacement"));
69
+ var Responsive = (0, publ_echo_1.WidthProvider)(publ_echo_1.ResponsiveGridEditor);
70
+ var CompositionEditor = (0, react_1.forwardRef)(function CompositionEditorCanvas(props, ref) {
71
+ var _a, _b, _c, _d, _e, _f;
72
+ var _g = props.editorProps, device = _g.device, shortcutKeyMode = _g.shortcutKeyMode, compositionActionHandler = _g.compositionActionHandler;
73
+ // const GLE_MIN_WIDTH_DESKTOP_PX = `${GRID_CELL_MIN * cols}px`;
74
+ // const GLE_MIN_WIDTH_MOBILE_PX = `${GRID_CELL_MIN * rows}px`;
75
+ var editingSectionId = props.compositionData.id;
76
+ var mode = 'EDIT';
77
+ var _h = props.compositionData, componentBlocks = _h.componentBlocks, jsonProperties = _h.jsonProperties;
78
+ var sectionPedigree = jsonProperties === null || jsonProperties === void 0 ? void 0 : jsonProperties.pedigree;
79
+ var _j = (0, react_1.useState)(sectionPedigree), pedigreeState = _j[0], setPedigreeState = _j[1];
80
+ (0, react_1.useEffect)(function () {
81
+ setPedigreeState(sectionPedigree);
82
+ }, [sectionPedigree]);
83
+ var _k = jsonProperties, _l = _k.data, CB_PLACEMENT_PROP_COMPOSITION = _l.CB_PLACEMENT_PROP_COMPOSITION, CB_LAYOUT_PROP_PADDING = _l.CB_LAYOUT_PROP_PADDING, CB_CONTENT_PROP_COMPOSITION = _l.CB_CONTENT_PROP_COMPOSITION, zOrders = _k.zOrders;
84
+ var _m = (0, react_1.useState)(null), selectedBlockId = _m[0], setSelectedBlockId = _m[1];
85
+ var gleRef = (0, react_1.useRef)(null);
86
+ var _o = (0, react_1.useState)(50), rowHeight = _o[0], setRowHeight = _o[1];
87
+ var _p = (0, react_1.useState)(16), baseFontSize = _p[0], setBaseFontSize = _p[1];
88
+ var isMobile = device === 'MOBILE';
89
+ var isEditMode = mode === 'EDIT';
90
+ var layoutByDevice = device === 'DESKTOP' ? 'lg' : 'sm';
91
+ var colsDesktop = (_a = CB_PLACEMENT_PROP_COMPOSITION.CB_PLACEMENT_PROP_COMPOSITION_SPEC_COLS) !== null && _a !== void 0 ? _a : 24;
92
+ var colsMobile = (_b = CB_PLACEMENT_PROP_COMPOSITION['CB_PLACEMENT_PROP_COMPOSITION_SPEC_COLS:MOBILE']) !== null && _b !== void 0 ? _b : 8;
93
+ var rowsDesktop = (_c = CB_PLACEMENT_PROP_COMPOSITION.CB_PLACEMENT_PROP_COMPOSITION_SPEC_ROWS) !== null && _c !== void 0 ? _c : 26;
94
+ var rowsMobile = (_d = CB_PLACEMENT_PROP_COMPOSITION['CB_PLACEMENT_PROP_COMPOSITION_SPEC_ROWS:MOBILE']) !== null && _d !== void 0 ? _d : 26;
95
+ var rows = isMobile ? rowsMobile : rowsDesktop;
96
+ var cols = isMobile ? colsMobile : colsDesktop;
97
+ var canvasWidth = 50 * cols;
98
+ var _q = (0, react_1.useState)(function () {
99
+ var _a = (0, util_1.parsePlacement)(componentBlocks !== null && componentBlocks !== void 0 ? componentBlocks : [], zOrders), lg = _a.lg, sm = _a.sm;
100
+ return {
101
+ lg: lg,
102
+ sm: sm
103
+ };
104
+ }), layouts = _q[0], setLayouts = _q[1];
105
+ var _r = (0, react_1.useState)('ROOT'), editingGroupBlock = _r[0], setEditingGroupBlock = _r[1];
106
+ var _s = (0, react_1.useState)([]), bulkBlockIds = _s[0], setBulkBlockIds = _s[1];
107
+ (0, react_1.useEffect)(function () {
108
+ if (editingGroupBlock) {
109
+ var found = (0, group_1.findBlockByBlockId)(sectionPedigree, editingGroupBlock);
110
+ if (!found) {
111
+ setEditingGroupBlock('ROOT');
112
+ return;
113
+ }
114
+ if (found.type === 'GROUP_BLOCK' && found.children.length === 0) {
115
+ setEditingGroupBlock('ROOT');
116
+ return;
117
+ }
118
+ }
119
+ }, [editingGroupBlock, sectionPedigree]);
120
+ var newblock = bulkBlockIds.length > 0
121
+ ? (0, group_1.addBulkToTarget)(pedigreeState, editingGroupBlock, bulkBlockIds)
122
+ : pedigreeState;
123
+ (0, react_1.useImperativeHandle)(ref, function () {
124
+ return {
125
+ selectCB: function (blockId) {
126
+ setSelectedBlockId(blockId);
127
+ },
128
+ selectCBInBulk: function (blockIds) {
129
+ setBulkBlockIds(blockIds);
130
+ },
131
+ selectGroup: function (groupBlockId) {
132
+ setBulkBlockIds([]);
133
+ setSelectedBlockId(groupBlockId);
134
+ }
135
+ };
136
+ }, [componentBlocks]);
137
+ (0, react_1.useLayoutEffect)(function () {
138
+ var parsedLayouts = (0, util_1.parsePlacement)(componentBlocks !== null && componentBlocks !== void 0 ? componentBlocks : [], zOrders);
139
+ setLayouts(function (prev) {
140
+ var _a;
141
+ var _b;
142
+ var group = (0, group_2.getGroupCB)(prev[layoutByDevice]);
143
+ var groupedCBIds = (_b = group === null || group === void 0 ? void 0 : group.childrenIds) !== null && _b !== void 0 ? _b : [];
144
+ var filteredLayout = (0, group_2.filterItemsById)(parsedLayouts[layoutByDevice], groupedCBIds);
145
+ if (group === null || group === void 0 ? void 0 : group.groupLayouts) {
146
+ var groupCbs = parsedLayouts[layoutByDevice].filter(function (each) {
147
+ return groupedCBIds.includes(each.i);
148
+ });
149
+ if (groupCbs.length > 0) {
150
+ var newGroupLayout = (0, group_2.getGroupForMultiple)(groupCbs);
151
+ filteredLayout.push(newGroupLayout);
152
+ }
153
+ }
154
+ return __assign(__assign({}, prev), (_a = {}, _a[layoutByDevice] = filteredLayout, _a));
155
+ });
156
+ }, [componentBlocks, group_2.getGroupCB, layoutByDevice, zOrders]);
157
+ (0, react_1.useEffect)(function () {
158
+ if (editingSectionId !== props.compositionData.id) {
159
+ setSelectedBlockId(null);
160
+ setBulkBlockIds([]);
161
+ setEditingGroupBlock('ROOT');
162
+ }
163
+ }, [editingSectionId]);
164
+ var workDir = (_e = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _e !== void 0 ? _e : '/ROOT';
165
+ (0, react_1.useEffect)(function () {
166
+ compositionActionHandler &&
167
+ compositionActionHandler({
168
+ type: '@COMPOSITION/WORKDIR_CHANGED',
169
+ payload: {
170
+ workDir: workDir
171
+ }
172
+ });
173
+ }, [workDir]);
174
+ // NOTE: 추후에 event를 외부에서 전달받게하거나, 아예 상태를 끌어올리거나 해야합니다.
175
+ (0, react_1.useLayoutEffect)(function () {
176
+ var _a, _b, _c, _d, _e, _f;
177
+ if (props.compositionData.id !== editingSectionId) {
178
+ return;
179
+ }
180
+ if (!shortcutKeyMode) {
181
+ return;
182
+ }
183
+ if (shortcutKeyMode === 'SELECT_ALL') {
184
+ makeAllInOneGroup();
185
+ return;
186
+ }
187
+ // esc
188
+ if (shortcutKeyMode === 'MANUAL_BULK_BREAK') {
189
+ if (selectedBlockId &&
190
+ editingGroupBlock !== selectedBlockId &&
191
+ editingGroupBlock !== 'ROOT') {
192
+ setSelectedBlockId(null);
193
+ compositionActionHandler &&
194
+ compositionActionHandler({
195
+ type: '@COMPOSITION/BLOCK_CLICKED',
196
+ payload: {
197
+ block: {
198
+ blockId: editingGroupBlock,
199
+ type: 'GROUP_BLOCK',
200
+ workDir: (_a = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _a !== void 0 ? _a : 'NOT-FOUND',
201
+ childrenBlockIds: (_b = (0, group_1.findDirectChildrenBlockIds)(newblock, editingGroupBlock)) !== null && _b !== void 0 ? _b : [],
202
+ childrenCBIds: (_c = (0, group_1.findDirectChildrenCbIds)(newblock, editingGroupBlock)) !== null && _c !== void 0 ? _c : []
203
+ }
204
+ }
205
+ });
206
+ return;
207
+ }
208
+ if (bulkBlockIds.length > 0) {
209
+ setBulkBlockIds([]);
210
+ setSelectedBlockId(null);
211
+ compositionActionHandler &&
212
+ compositionActionHandler({
213
+ type: '@COMPOSITION/BLOCK_CLICKED',
214
+ payload: {
215
+ block: {
216
+ blockId: editingGroupBlock,
217
+ type: 'GROUP_BLOCK',
218
+ workDir: (_d = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _d !== void 0 ? _d : 'NOT-FOUND',
219
+ childrenBlockIds: (_e = (0, group_1.findDirectChildrenBlockIds)(newblock, editingGroupBlock)) !== null && _e !== void 0 ? _e : [],
220
+ childrenCBIds: (_f = (0, group_1.findDirectChildrenCbIds)(newblock, editingGroupBlock)) !== null && _f !== void 0 ? _f : []
221
+ }
222
+ }
223
+ });
224
+ return;
225
+ }
226
+ if (editingGroupBlock !== 'ROOT') {
227
+ setEditingGroupBlock('ROOT');
228
+ setSelectedBlockId(null);
229
+ compositionActionHandler &&
230
+ compositionActionHandler({
231
+ type: '@COMPOSITION/BULK_DISMISSED',
232
+ payload: {
233
+ message: 'MANUAL_BULK_BREAK_OR_ESC',
234
+ editingGroupBlock: 'ROOT'
235
+ }
236
+ });
237
+ return;
238
+ }
239
+ if (editingGroupBlock === 'ROOT') {
240
+ setSelectedBlockId(null);
241
+ compositionActionHandler &&
242
+ compositionActionHandler({
243
+ type: '@COMPOSITION/BULK_DISMISSED',
244
+ payload: {
245
+ message: 'MANUAL_BULK_BREAK_OR_ESC',
246
+ editingGroupBlock: 'ROOT'
247
+ }
248
+ });
249
+ }
250
+ }
251
+ }, [shortcutKeyMode, setSelectedBlockId]);
252
+ (0, react_1.useLayoutEffect)(function () {
253
+ var _a;
254
+ if (props.compositionData.id !== editingSectionId) {
255
+ return;
256
+ }
257
+ if (shortcutKeyMode === 'MANUAL_COLLISION_SELECT') {
258
+ if (!selectedBlockId || selectedBlockId === 'BULK') {
259
+ return;
260
+ }
261
+ var selectedCBId = selectedBlockId ? (0, group_1.formatBlockIdToCbId)(selectedBlockId) : undefined;
262
+ if (!selectedCBId) {
263
+ return;
264
+ }
265
+ var bulks_1 = getCollisionGroupIds(selectedCBId);
266
+ if (selectedBlockId) {
267
+ bulks_1.push(selectedBlockId);
268
+ }
269
+ setBulkBlockIds(function (prev) {
270
+ var set = new Set(__spreadArray(__spreadArray([], prev, true), bulks_1, true));
271
+ return Array.from(set);
272
+ });
273
+ setSelectedBlockId(null);
274
+ var newBulkCBIds = bulks_1
275
+ .map(function (id) { return (0, group_1.formatBlockIdToCbId)(id); })
276
+ .filter(function (each) { return each !== null; });
277
+ var childrenCBIds = [];
278
+ if (newBulkCBIds.length === 0) {
279
+ var oneCB = (0, group_1.findOneComponentBlock)(newblock, bulks_1[0]);
280
+ childrenCBIds = oneCB ? [oneCB] : [];
281
+ }
282
+ else {
283
+ childrenCBIds = newBulkCBIds;
284
+ }
285
+ var groupDisabled = getWorkDirDirectChildrenLength() === __spreadArray(__spreadArray([], bulkBlockIds, true), bulks_1, true).length;
286
+ compositionActionHandler &&
287
+ compositionActionHandler({
288
+ type: '@COMPOSITION/BLOCK_CLICKED',
289
+ payload: {
290
+ block: {
291
+ type: 'BULK',
292
+ blockId: 'BULK',
293
+ childrenBlockIds: bulks_1,
294
+ workDir: (_a = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _a !== void 0 ? _a : 'NOT-FOUND',
295
+ childrenCBIds: childrenCBIds,
296
+ groupDisabled: groupDisabled && editingGroupBlock !== 'ROOT'
297
+ }
298
+ }
299
+ });
300
+ return;
301
+ }
302
+ }, [
303
+ selectedBlockId,
304
+ shortcutKeyMode,
305
+ compositionActionHandler,
306
+ bulkBlockIds,
307
+ setSelectedBlockId
308
+ ]);
309
+ var makeAllInOneGroup = function () {
310
+ var _a, _b, _c, _d, _e;
311
+ var allRootChildIds = (0, group_1.findDirectChildrenBlockIds)(pedigreeState, editingGroupBlock);
312
+ if (allRootChildIds.length === 1) {
313
+ var block = (0, group_1.findBlockByBlockId)(newblock, allRootChildIds[0]);
314
+ if (!block) {
315
+ return;
316
+ }
317
+ setSelectedBlockId(block.blockId);
318
+ setBulkBlockIds([]);
319
+ if (block.type === 'COMPONENT_BLOCK') {
320
+ compositionActionHandler &&
321
+ compositionActionHandler({
322
+ type: '@COMPOSITION/BLOCK_CLICKED',
323
+ payload: {
324
+ block: {
325
+ blockId: block.blockId,
326
+ type: block.type,
327
+ cbId: block.componentBlockId,
328
+ workDir: (_a = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _a !== void 0 ? _a : 'NOT-FOUND'
329
+ }
330
+ }
331
+ });
332
+ return;
333
+ }
334
+ if (block.type === 'GROUP_BLOCK') {
335
+ compositionActionHandler &&
336
+ compositionActionHandler({
337
+ type: '@COMPOSITION/BLOCK_CLICKED',
338
+ payload: {
339
+ block: {
340
+ blockId: block.blockId,
341
+ type: 'GROUP_BLOCK',
342
+ workDir: (_b = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _b !== void 0 ? _b : 'NOT-FOUND',
343
+ childrenBlockIds: (_c = (0, group_1.findDirectChildrenBlockIds)(newblock, block.blockId)) !== null && _c !== void 0 ? _c : [],
344
+ childrenCBIds: (_d = (0, group_1.findDirectChildrenCbIds)(newblock, block.blockId)) !== null && _d !== void 0 ? _d : []
345
+ }
346
+ }
347
+ });
348
+ }
349
+ return;
350
+ }
351
+ setBulkBlockIds(allRootChildIds);
352
+ var newBulkCBIds = allRootChildIds
353
+ .map(function (id) { return (0, group_1.formatBlockIdToCbId)(id); })
354
+ .filter(function (each) { return each !== null; });
355
+ var childrenCBIds = [];
356
+ if (newBulkCBIds.length === 0) {
357
+ var oneCB = (0, group_1.findOneComponentBlock)(newblock, allRootChildIds[0]);
358
+ childrenCBIds = oneCB ? [oneCB] : [];
359
+ }
360
+ else {
361
+ childrenCBIds = newBulkCBIds;
362
+ }
363
+ var groupDisabled = getWorkDirDirectChildrenLength() === allRootChildIds.length;
364
+ compositionActionHandler &&
365
+ compositionActionHandler({
366
+ type: '@COMPOSITION/BLOCK_CLICKED',
367
+ payload: {
368
+ block: {
369
+ type: 'BULK',
370
+ blockId: 'BULK',
371
+ childrenBlockIds: allRootChildIds,
372
+ workDir: (_e = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _e !== void 0 ? _e : 'NOT-FOUND',
373
+ childrenCBIds: childrenCBIds,
374
+ groupDisabled: groupDisabled && editingGroupBlock !== 'ROOT'
375
+ }
376
+ }
377
+ });
378
+ };
379
+ var getCollisionGroupIds = function (cdId1) {
380
+ var layoutItem = (0, renderHelpers_1.getLayoutItem)(layouts[layoutByDevice], cdId1.toString());
381
+ if (!layoutItem) {
382
+ return [];
383
+ }
384
+ var allCollisions = (0, renderHelpers_1.getAllCollisions)(layouts[layoutByDevice], layoutItem);
385
+ var allCollisionsCbIds = allCollisions.map(function (each) { return Number(each.i); });
386
+ var workDirChildrenBlockIds = (0, group_1.findDirectChildrenBlockIds)(newblock, editingGroupBlock);
387
+ var collisions = workDirChildrenBlockIds.filter(function (each) {
388
+ var cbId = (0, group_1.formatBlockIdToCbId)(each);
389
+ var allCollisions = (0, group_1.findAllChildrenCbIds)(newblock, each);
390
+ if (cbId !== null && allCollisionsCbIds.includes(cbId)) {
391
+ return true;
392
+ }
393
+ var hasCollision = allCollisions.some(function (each) { return allCollisionsCbIds.includes(each); });
394
+ return hasCollision;
395
+ });
396
+ return __spreadArray(__spreadArray([], collisions, true), [(0, group_1.formatCbIdToBlockId)(cdId1)], false);
397
+ };
398
+ var _t = (0, parseCompositionPlacement_1.default)({
399
+ isMobile: isMobile,
400
+ compositionProps: CB_PLACEMENT_PROP_COMPOSITION
401
+ }), minHeight = _t.minHeight, isFullWidth = _t.isFullWidth;
402
+ var customSectionStyles = {
403
+ minHeight: "".concat(minHeight, "vh"),
404
+ width: "".concat(canvasWidth, "px"),
405
+ maxWidth: isFullWidth ? '' : "".concat(canvasWidth, "px")
406
+ };
407
+ var breakpoint = device === 'MOBILE' ? 'sm' : 'lg';
408
+ var onClickCB = function (id) {
409
+ var _a, _b, _c, _d, _e, _f, _g;
410
+ var blockId = (0, group_1.formatCbIdToBlockId)(id);
411
+ if (!isEditMode) {
412
+ return;
413
+ }
414
+ var added = (function () {
415
+ if (selectedBlockId === editingGroupBlock) {
416
+ return [blockId];
417
+ }
418
+ if (selectedBlockId === 'BULK') {
419
+ return [blockId];
420
+ }
421
+ return selectedBlockId ? [selectedBlockId, blockId] : [blockId];
422
+ })();
423
+ if (shortcutKeyMode === 'BULK_SELECT') {
424
+ setBulkBlockIds(function (prev) {
425
+ var set = new Set(__spreadArray(__spreadArray([], prev, true), added, true));
426
+ return Array.from(set);
427
+ });
428
+ setSelectedBlockId(null);
429
+ var newBulkBlockIds = Array.from(new Set(__spreadArray(__spreadArray([], bulkBlockIds, true), added, true)));
430
+ var newBulkCBIds = newBulkBlockIds
431
+ .map(function (id) { return (0, group_1.formatBlockIdToCbId)(id); })
432
+ .filter(function (each) { return each !== null; });
433
+ var childrenCBIds = [];
434
+ if (newBulkCBIds.length === 0) {
435
+ var oneCB = (0, group_1.findOneComponentBlock)(newblock, newBulkBlockIds[0]);
436
+ childrenCBIds = oneCB ? [oneCB] : [];
437
+ }
438
+ else {
439
+ childrenCBIds = newBulkCBIds;
440
+ }
441
+ var groupDisabled = getWorkDirDirectChildrenLength() === __spreadArray(__spreadArray([], bulkBlockIds, true), added, true).length;
442
+ compositionActionHandler &&
443
+ compositionActionHandler({
444
+ type: '@COMPOSITION/BLOCK_CLICKED',
445
+ payload: {
446
+ block: {
447
+ type: 'BULK',
448
+ blockId: 'BULK',
449
+ childrenBlockIds: newBulkBlockIds,
450
+ childrenCBIds: childrenCBIds,
451
+ workDir: (_a = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _a !== void 0 ? _a : 'NOT-FOUND',
452
+ groupDisabled: groupDisabled && editingGroupBlock !== 'ROOT'
453
+ }
454
+ }
455
+ });
456
+ return;
457
+ }
458
+ if (shortcutKeyMode === 'COLLISION_SELECT') {
459
+ var bulks = getCollisionGroupIds(id);
460
+ var newBulksSet = new Set(__spreadArray(__spreadArray(__spreadArray([], bulkBlockIds, true), added, true), bulks, true));
461
+ var newBulks = Array.from(newBulksSet);
462
+ if (newBulks.length === 1) {
463
+ var blockId_1 = newBulks[0];
464
+ setSelectedBlockId(blockId_1);
465
+ setBulkBlockIds([]);
466
+ compositionActionHandler &&
467
+ compositionActionHandler({
468
+ type: '@COMPOSITION/BLOCK_CLICKED',
469
+ payload: {
470
+ block: {
471
+ type: 'COMPONENT_BLOCK',
472
+ blockId: blockId_1,
473
+ cbId: id,
474
+ workDir: (_b = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _b !== void 0 ? _b : 'NOT-FOUND'
475
+ }
476
+ }
477
+ });
478
+ return;
479
+ }
480
+ setBulkBlockIds(newBulks);
481
+ setSelectedBlockId(null);
482
+ var newBulkCBIds = newBulks
483
+ .map(function (id) { return (0, group_1.formatBlockIdToCbId)(id); })
484
+ .filter(function (each) { return each !== null; });
485
+ var childrenCBIds = [];
486
+ if (newBulkCBIds.length === 0) {
487
+ var oneCB = (0, group_1.findOneComponentBlock)(newblock, bulks[0]);
488
+ childrenCBIds = oneCB ? [oneCB] : [];
489
+ }
490
+ else {
491
+ childrenCBIds = newBulkCBIds;
492
+ }
493
+ var groupDisabled = getWorkDirDirectChildrenLength() === newBulks.length;
494
+ compositionActionHandler &&
495
+ compositionActionHandler({
496
+ type: '@COMPOSITION/BLOCK_CLICKED',
497
+ payload: {
498
+ block: {
499
+ type: 'BULK',
500
+ blockId: 'BULK',
501
+ childrenBlockIds: newBulks,
502
+ workDir: (_c = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _c !== void 0 ? _c : 'NOT-FOUND',
503
+ childrenCBIds: childrenCBIds,
504
+ groupDisabled: groupDisabled && editingGroupBlock !== 'ROOT'
505
+ }
506
+ }
507
+ });
508
+ return;
509
+ }
510
+ var blockType = blockId.startsWith('GB_') ? 'GROUP_BLOCK' : 'COMPONENT_BLOCK';
511
+ setSelectedBlockId(blockId);
512
+ setBulkBlockIds([]);
513
+ if (blockType === 'COMPONENT_BLOCK') {
514
+ compositionActionHandler &&
515
+ compositionActionHandler({
516
+ type: '@COMPOSITION/BLOCK_CLICKED',
517
+ payload: {
518
+ block: {
519
+ blockId: blockId,
520
+ type: blockType,
521
+ cbId: id,
522
+ workDir: (_d = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _d !== void 0 ? _d : 'NOT-FOUND'
523
+ }
524
+ }
525
+ });
526
+ return;
527
+ }
528
+ if (blockType === 'GROUP_BLOCK') {
529
+ compositionActionHandler &&
530
+ compositionActionHandler({
531
+ type: '@COMPOSITION/BLOCK_CLICKED',
532
+ payload: {
533
+ block: {
534
+ blockId: blockId,
535
+ type: 'GROUP_BLOCK',
536
+ workDir: (_e = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _e !== void 0 ? _e : 'NOT-FOUND',
537
+ childrenBlockIds: (_f = (0, group_1.findDirectChildrenBlockIds)(newblock, blockId)) !== null && _f !== void 0 ? _f : [],
538
+ childrenCBIds: (_g = (0, group_1.findDirectChildrenCbIds)(newblock, blockId)) !== null && _g !== void 0 ? _g : []
539
+ }
540
+ }
541
+ });
542
+ }
543
+ };
544
+ var onContextMenuCB = function (id, e) {
545
+ var _a;
546
+ var blockId = (0, group_1.formatCbIdToBlockId)(id);
547
+ if (!isEditMode) {
548
+ return;
549
+ }
550
+ if (selectedBlockId === 'BULK' && blockId !== selectedBlockId) {
551
+ setBulkBlockIds([]);
552
+ }
553
+ // if (!['COLLISION_SELECT', 'BULK_SELECT'].includes(shortcutKeyMode ?? '')) {
554
+ // if (blockId !== selectedBlockId) {
555
+ // setBulkBlockIds([]);
556
+ // }
557
+ // }
558
+ setSelectedBlockId(blockId);
559
+ if (compositionActionHandler) {
560
+ compositionActionHandler({
561
+ type: '@COMPOSITION/CB_RIGHT_CLICKED',
562
+ payload: {
563
+ e: e,
564
+ block: {
565
+ blockId: blockId,
566
+ cbId: id,
567
+ type: 'COMPONENT_BLOCK',
568
+ workDir: (_a = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _a !== void 0 ? _a : 'NOT-FOUND'
569
+ }
570
+ }
571
+ });
572
+ }
573
+ };
574
+ var onLayoutChange = function (props) {
575
+ if (!isEditMode) {
576
+ return;
577
+ }
578
+ if (compositionActionHandler) {
579
+ compositionActionHandler({
580
+ type: '@COMPOSITION/PLACEMENT_CHANGED',
581
+ payload: props
582
+ });
583
+ }
584
+ setLayouts(props.layouts);
585
+ };
586
+ var onDragStart = function (props) {
587
+ compositionActionHandler &&
588
+ compositionActionHandler({
589
+ type: '@COMPOSITION/CB_DRAG_START',
590
+ payload: __assign({}, props)
591
+ });
592
+ };
593
+ var onDragStop = function (props) {
594
+ var _a, _b, _c;
595
+ if (!isEditMode || !props.item) {
596
+ return;
597
+ }
598
+ var item = props.item, prev = props.prev;
599
+ var isShiftOn = shortcutKeyMode === 'BULK_SELECT' || shortcutKeyMode === 'COLLISION_SELECT';
600
+ if (isLayoutPlacementSame(item, prev) && isShiftOn) {
601
+ setTimeout(function () {
602
+ onClickCB(Number(item.i));
603
+ }, 0);
604
+ return;
605
+ }
606
+ // NOTE 미사용시 삭제
607
+ // if (item.i === 'BULK' && props.compositionData.item.groupLayouts) {
608
+ // setSelectedBlockId('BULK');
609
+ // const outerBasedChildrenPositions = props.compositionData.item.groupLayouts.map((cb) => ({
610
+ // ...cb,
611
+ // x: item.x + cb.x,
612
+ // y: item.y + cb.y
613
+ // }));
614
+ // compositionActionHandler &&
615
+ // compositionActionHandler({
616
+ // type: '@COMPOSITION/BULK_DRAG_STOP',
617
+ // payload: {
618
+ // updatedBlocks: props.compositionData.
619
+ // ...props,
620
+ // outerBasedChildrenPositions,
621
+ // workDir: getBlockWorkDirPath(newblock, editingGroupBlock) ?? 'NOT-FOUND'
622
+ // }
623
+ // });
624
+ // return;
625
+ // }
626
+ var numberId = Number((_a = props.item) === null || _a === void 0 ? void 0 : _a.i);
627
+ var blockId = (0, group_1.formatCbIdToBlockId)(numberId);
628
+ var isIdNumber = !Number.isNaN(numberId);
629
+ if (blockId) {
630
+ if ((0, group_2.getGroupCB)(layouts[layoutByDevice])) {
631
+ setTimeout(function () {
632
+ setBulkBlockIds([]);
633
+ }, 100);
634
+ }
635
+ setSelectedBlockId(blockId);
636
+ }
637
+ if (isLayoutPlacementSame(item, prev)) {
638
+ // 확인 필요.. 그룹과 벌크
639
+ compositionActionHandler &&
640
+ compositionActionHandler({
641
+ type: '@COMPOSITION/BLOCK_CLICKED',
642
+ payload: {
643
+ block: {
644
+ blockId: blockId,
645
+ cbId: numberId,
646
+ type: 'COMPONENT_BLOCK',
647
+ workDir: (_b = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _b !== void 0 ? _b : 'NOT-FOUND'
648
+ }
649
+ }
650
+ });
651
+ return;
652
+ }
653
+ if (compositionActionHandler && isIdNumber) {
654
+ compositionActionHandler({
655
+ type: '@COMPOSITION/CB_DRAG_STOP',
656
+ payload: __assign(__assign({}, props), { blockId: blockId, workDir: (_c = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _c !== void 0 ? _c : 'NOT-FOUND' })
657
+ });
658
+ }
659
+ };
660
+ var onResizeStop = function (props) {
661
+ var _a;
662
+ var prev = props.prev, item = props.item;
663
+ if (!isEditMode || !item) {
664
+ return;
665
+ }
666
+ var numberId = Number(item.i);
667
+ var isIdNumber = !Number.isNaN(numberId);
668
+ if (isLayoutPlacementSame(item, prev)) {
669
+ return;
670
+ }
671
+ if (isIdNumber) {
672
+ var blockId = (0, group_1.formatCbIdToBlockId)(numberId);
673
+ setSelectedBlockId(blockId);
674
+ }
675
+ if (compositionActionHandler && isIdNumber) {
676
+ compositionActionHandler({
677
+ type: '@COMPOSITION/CB_RESIZE_STOP',
678
+ payload: __assign(__assign({}, props), { blockId: (0, group_1.formatCbIdToBlockId)(numberId), workDir: (_a = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _a !== void 0 ? _a : 'NOT-FOUND' })
679
+ });
680
+ }
681
+ };
682
+ var onAutoFitContent = function (props) {
683
+ var _a;
684
+ var prev = props.prev, item = props.item;
685
+ if (!isEditMode || !item) {
686
+ return;
687
+ }
688
+ var numberId = Number(item.i);
689
+ var isIdNumber = !Number.isNaN(numberId);
690
+ if (isLayoutPlacementSame(item, prev)) {
691
+ return;
692
+ }
693
+ if (isIdNumber) {
694
+ var blockId = (0, group_1.formatCbIdToBlockId)(numberId);
695
+ setSelectedBlockId(blockId);
696
+ }
697
+ if (compositionActionHandler && isIdNumber) {
698
+ compositionActionHandler({
699
+ type: '@COMPOSITION/CB_AUTO_FIT_CONTENT',
700
+ payload: __assign(__assign({}, props), { details: { hadPaddingChanged: props.hasPaddingChanged }, blockId: (0, group_1.formatCbIdToBlockId)(numberId), workDir: (_a = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _a !== void 0 ? _a : 'NOT-FOUND' })
701
+ });
702
+ }
703
+ };
704
+ var onClickSection = function (e) {
705
+ if (!isEditMode) {
706
+ return;
707
+ }
708
+ if (editingGroupBlock !== 'ROOT') {
709
+ onClickGroup(e, editingGroupBlock);
710
+ return;
711
+ }
712
+ setBulkBlockIds([]);
713
+ setSelectedBlockId(null);
714
+ compositionActionHandler &&
715
+ compositionActionHandler({
716
+ type: '@COMPOSITION/SECTION_RIGHT_CLICKED',
717
+ payload: {
718
+ sectionId: props.compositionData.id,
719
+ e: e
720
+ }
721
+ });
722
+ };
723
+ var onContextGroup = function (e, blockId, isEditingGroup) {
724
+ var _a, _b, _c;
725
+ setSelectedBlockId(blockId);
726
+ var block = (0, group_1.findBlockByBlockId)(newblock, blockId);
727
+ if ((block === null || block === void 0 ? void 0 : block.type) === 'COMPONENT_BLOCK') {
728
+ return;
729
+ }
730
+ compositionActionHandler &&
731
+ compositionActionHandler({
732
+ type: '@COMPOSITION/GROUP_RIGHT_CLICKED',
733
+ payload: {
734
+ block: {
735
+ blockId: blockId,
736
+ type: 'GROUP_BLOCK',
737
+ workDir: (_a = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _a !== void 0 ? _a : 'NOT-FOUND',
738
+ childrenBlockIds: (_b = (0, group_1.findDirectChildrenBlockIds)(newblock, blockId)) !== null && _b !== void 0 ? _b : [],
739
+ childrenCBIds: (_c = (0, group_1.findDirectChildrenCbIds)(newblock, blockId)) !== null && _c !== void 0 ? _c : []
740
+ },
741
+ e: e,
742
+ isEditingGroup: isEditingGroup
743
+ }
744
+ });
745
+ };
746
+ var onContextSection = function (e) {
747
+ if (editingGroupBlock !== 'ROOT') {
748
+ e.preventDefault();
749
+ return;
750
+ }
751
+ if (!isEditMode) {
752
+ return;
753
+ }
754
+ if ((0, group_2.getGroupCB)(layouts[layoutByDevice])) {
755
+ setBulkBlockIds([]);
756
+ }
757
+ setSelectedBlockId(null);
758
+ compositionActionHandler &&
759
+ compositionActionHandler({
760
+ type: '@COMPOSITION/SECTION_RIGHT_CLICKED',
761
+ payload: {
762
+ sectionId: props.compositionData.id,
763
+ e: e
764
+ }
765
+ });
766
+ };
767
+ var onWidthChange = function (width) {
768
+ var responsiveFontMode =
769
+ // NOTE: local환경에서 CB_CONTENT_PROP_COMPOSITION이 없는 경우가 있음.
770
+ !!(CB_CONTENT_PROP_COMPOSITION === null || CB_CONTENT_PROP_COMPOSITION === void 0 ? void 0 : CB_CONTENT_PROP_COMPOSITION.CB_CONTENT_PROP_COMPOSITION_SPEC_VARIABLEROOTFONTSIZE);
771
+ if (device === 'MOBILE') {
772
+ // const cellWidth = width / rows;
773
+ var cellWidth_1 = 50;
774
+ setRowHeight(cellWidth_1 * 0.56);
775
+ // baseFontSize !== 16 && setBaseFontSize(width * 0.0133);
776
+ responsiveFontMode ? setBaseFontSize(width * 0.0421) : setBaseFontSize(16);
777
+ return;
778
+ }
779
+ // const cellWidth = width / cols;
780
+ var cellWidth = 50;
781
+ setRowHeight(cellWidth * 0.56);
782
+ responsiveFontMode ? setBaseFontSize(width * 0.0133) : setBaseFontSize(16);
783
+ };
784
+ var padding = (0, parseSectionPadding_1.default)(CB_LAYOUT_PROP_PADDING, device);
785
+ var breakpoints = device === 'DESKTOP' ? { lg: 100, sm: 0 } : { lg: 1200, sm: 480 };
786
+ var innerRef = (0, react_1.useRef)(null);
787
+ var clickOneCBInBulk = function (id) {
788
+ var _a, _b;
789
+ var blockId = (0, group_1.formatCbIdToBlockId)(id);
790
+ if (shortcutKeyMode === 'COLLISION_SELECT') {
791
+ return;
792
+ }
793
+ if (shortcutKeyMode === 'BULK_SELECT') {
794
+ if (bulkBlockIds.length <= 2) {
795
+ var oneLastBlockId = bulkBlockIds.filter(function (each) { return each !== blockId; })[0];
796
+ setBulkBlockIds([]);
797
+ if (!oneLastBlockId) {
798
+ return;
799
+ }
800
+ var cbId = (0, group_1.formatBlockIdToCbId)(oneLastBlockId);
801
+ if (!cbId) {
802
+ return;
803
+ }
804
+ setSelectedBlockId(oneLastBlockId);
805
+ compositionActionHandler &&
806
+ compositionActionHandler({
807
+ type: '@COMPOSITION/BLOCK_CLICKED',
808
+ payload: {
809
+ block: {
810
+ blockId: oneLastBlockId,
811
+ cbId: cbId,
812
+ type: 'COMPONENT_BLOCK',
813
+ workDir: (_a = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _a !== void 0 ? _a : 'NOT-FOUND'
814
+ }
815
+ }
816
+ });
817
+ return;
818
+ }
819
+ var filtered = bulkBlockIds.filter(function (each) { return each !== blockId; });
820
+ setBulkBlockIds(filtered);
821
+ var groupDisabled = getWorkDirDirectChildrenLength() === filtered.length;
822
+ var newBulkCBIds = filtered
823
+ .map(function (id) { return (0, group_1.formatBlockIdToCbId)(id); })
824
+ .filter(function (each) { return each !== null; });
825
+ compositionActionHandler &&
826
+ compositionActionHandler({
827
+ type: '@COMPOSITION/BLOCK_CLICKED',
828
+ payload: {
829
+ block: {
830
+ type: 'BULK',
831
+ blockId: 'BULK',
832
+ childrenBlockIds: filtered,
833
+ workDir: (_b = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _b !== void 0 ? _b : 'NOT-FOUND',
834
+ childrenCBIds: newBulkCBIds,
835
+ groupDisabled: groupDisabled && editingGroupBlock !== 'ROOT'
836
+ }
837
+ }
838
+ });
839
+ }
840
+ };
841
+ var showSectionHiddenCover = (function () {
842
+ if (mode === 'EDIT') {
843
+ var visibilityKey = device === 'DESKTOP'
844
+ ? 'CB_CONTENT_PROP_VISIBILITY_SPEC_DESKTOP'
845
+ : 'CB_CONTENT_PROP_VISIBILITY_SPEC_MOBILEWEB';
846
+ var isSectionVisible = jsonProperties === null || jsonProperties === void 0 ? void 0 : jsonProperties.data.CB_CONTENT_PROP_VISIBILITY[visibilityKey];
847
+ // 가시성 상태를 반전하여 숨겨진 커버를 표시할지 결정
848
+ var shouldShowHiddenCover = !isSectionVisible;
849
+ return shouldShowHiddenCover;
850
+ }
851
+ return false;
852
+ })();
853
+ var onDoubleClickGroup = function (e, id) {
854
+ e.stopPropagation();
855
+ if (id === 'BULK') {
856
+ return;
857
+ }
858
+ setEditingGroupBlock(id);
859
+ };
860
+ var onDoubleClickOutsideGroup = function () {
861
+ setEditingGroupBlock('ROOT');
862
+ setSelectedBlockId(null);
863
+ };
864
+ var onClickGroup = function (e, id) {
865
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
866
+ e.stopPropagation();
867
+ if (id === 'BULK') {
868
+ return;
869
+ }
870
+ if (editingGroupBlock === id && shortcutKeyMode === 'BULK_SELECT') {
871
+ return;
872
+ }
873
+ if (bulkBlockIds.includes(id) && shortcutKeyMode === 'BULK_SELECT') {
874
+ if (bulkBlockIds.length <= 2) {
875
+ var oneLastBlockId = bulkBlockIds.filter(function (each) { return each !== id; })[0];
876
+ setBulkBlockIds([]);
877
+ setSelectedBlockId(oneLastBlockId);
878
+ compositionActionHandler &&
879
+ compositionActionHandler({
880
+ type: '@COMPOSITION/BLOCK_CLICKED',
881
+ payload: {
882
+ block: {
883
+ blockId: oneLastBlockId,
884
+ type: 'GROUP_BLOCK',
885
+ workDir: (_a = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _a !== void 0 ? _a : 'NOT-FOUND',
886
+ childrenBlockIds: (_b = (0, group_1.findDirectChildrenBlockIds)(newblock, oneLastBlockId)) !== null && _b !== void 0 ? _b : [],
887
+ childrenCBIds: (_c = (0, group_1.findDirectChildrenCbIds)(newblock, oneLastBlockId)) !== null && _c !== void 0 ? _c : []
888
+ }
889
+ }
890
+ });
891
+ return;
892
+ }
893
+ var newBulkBlockIds_1 = bulkBlockIds.filter(function (each) { return each !== id; });
894
+ var newBulkCBIds_1 = newBulkBlockIds_1
895
+ .map(function (id) { return (0, group_1.formatBlockIdToCbId)(id); })
896
+ .filter(function (each) { return each !== null; });
897
+ var childrenCBIds_1 = [];
898
+ if (newBulkCBIds_1.length === 0) {
899
+ var oneCB = (0, group_1.findOneComponentBlock)(newblock, newBulkBlockIds_1[0]);
900
+ childrenCBIds_1 = oneCB ? [oneCB] : [];
901
+ }
902
+ else {
903
+ childrenCBIds_1 = newBulkCBIds_1;
904
+ }
905
+ setBulkBlockIds(newBulkBlockIds_1);
906
+ var groupDisabled = getWorkDirDirectChildrenLength() === newBulkBlockIds_1.length;
907
+ compositionActionHandler &&
908
+ compositionActionHandler({
909
+ type: '@COMPOSITION/BLOCK_CLICKED',
910
+ payload: {
911
+ block: {
912
+ blockId: 'BULK',
913
+ type: 'BULK',
914
+ childrenBlockIds: newBulkBlockIds_1,
915
+ childrenCBIds: childrenCBIds_1,
916
+ workDir: (_d = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _d !== void 0 ? _d : 'NOT-FOUND',
917
+ groupDisabled: groupDisabled && editingGroupBlock !== 'ROOT'
918
+ }
919
+ }
920
+ });
921
+ return;
922
+ }
923
+ if (shortcutKeyMode === 'BULK_SELECT') {
924
+ var added = (function () {
925
+ if (selectedBlockId === editingGroupBlock) {
926
+ return [id];
927
+ }
928
+ return selectedBlockId ? [selectedBlockId, id] : [id];
929
+ })();
930
+ if (bulkBlockIds.length === 0 && added.length === 1) {
931
+ setSelectedBlockId(id);
932
+ setBulkBlockIds([]);
933
+ compositionActionHandler &&
934
+ compositionActionHandler({
935
+ type: '@COMPOSITION/BLOCK_CLICKED',
936
+ payload: {
937
+ block: {
938
+ blockId: id,
939
+ type: 'GROUP_BLOCK',
940
+ workDir: (_e = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _e !== void 0 ? _e : 'NOT-FOUND',
941
+ childrenBlockIds: (_f = (0, group_1.findDirectChildrenBlockIds)(newblock, id)) !== null && _f !== void 0 ? _f : [],
942
+ childrenCBIds: (_g = (0, group_1.findDirectChildrenCbIds)(newblock, id)) !== null && _g !== void 0 ? _g : []
943
+ }
944
+ }
945
+ });
946
+ return;
947
+ }
948
+ var newBulkBlockIds_2 = Array.from(new Set(__spreadArray(__spreadArray([], bulkBlockIds, true), added, true)));
949
+ var newBulkCBIds_2 = newBulkBlockIds_2
950
+ .map(function (id) { return (0, group_1.formatBlockIdToCbId)(id); })
951
+ .filter(function (each) { return each !== null; });
952
+ setBulkBlockIds(newBulkBlockIds_2);
953
+ setSelectedBlockId(null);
954
+ var childrenCBIds_2 = [];
955
+ if (newBulkCBIds_2.length === 0) {
956
+ var oneCB = (0, group_1.findOneComponentBlock)(newblock, newBulkBlockIds_2[0]);
957
+ childrenCBIds_2 = oneCB ? [oneCB] : [];
958
+ }
959
+ else {
960
+ childrenCBIds_2 = newBulkCBIds_2;
961
+ }
962
+ var groupDisabled = getWorkDirDirectChildrenLength() === newBulkBlockIds_2.length;
963
+ compositionActionHandler &&
964
+ compositionActionHandler({
965
+ type: '@COMPOSITION/BLOCK_CLICKED',
966
+ payload: {
967
+ block: {
968
+ blockId: 'BULK',
969
+ type: 'BULK',
970
+ childrenBlockIds: newBulkBlockIds_2,
971
+ childrenCBIds: childrenCBIds_2,
972
+ workDir: (_h = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _h !== void 0 ? _h : 'NOT-FOUND',
973
+ groupDisabled: groupDisabled && editingGroupBlock !== 'ROOT'
974
+ }
975
+ }
976
+ });
977
+ return;
978
+ }
979
+ setBulkBlockIds([]);
980
+ setSelectedBlockId(id);
981
+ var newBulkBlockIds = (0, group_1.findDirectChildrenBlockIds)(newblock, id);
982
+ var newBulkCBIds = newBulkBlockIds
983
+ .map(function (id) { return (0, group_1.formatBlockIdToCbId)(id); })
984
+ .filter(function (each) { return each !== null; });
985
+ var childrenCBIds = [];
986
+ if (newBulkCBIds.length === 0) {
987
+ var oneCB = (0, group_1.findOneComponentBlock)(newblock, newBulkBlockIds[0]);
988
+ childrenCBIds = oneCB ? [oneCB] : [];
989
+ }
990
+ else {
991
+ childrenCBIds = newBulkCBIds;
992
+ }
993
+ compositionActionHandler &&
994
+ compositionActionHandler({
995
+ type: '@COMPOSITION/BLOCK_CLICKED',
996
+ payload: {
997
+ block: {
998
+ blockId: id,
999
+ type: 'GROUP_BLOCK',
1000
+ workDir: (_j = (0, group_1.getBlockWorkDirPath)(newblock, editingGroupBlock)) !== null && _j !== void 0 ? _j : 'NOT-FOUND',
1001
+ childrenBlockIds: newBulkBlockIds,
1002
+ childrenCBIds: childrenCBIds
1003
+ }
1004
+ }
1005
+ });
1006
+ };
1007
+ var onBulkDragStop = function (_a) {
1008
+ var _b;
1009
+ var updatedItems = _a.updatedItems, item = _a.item;
1010
+ if ((item === null || item === void 0 ? void 0 : item.i) === 'BULK') {
1011
+ compositionActionHandler &&
1012
+ compositionActionHandler({
1013
+ type: '@COMPOSITION/BULK_DRAG_STOP',
1014
+ payload: {
1015
+ updatedBlocks: updatedItems.map(function (i) { return ({
1016
+ cbId: Number(i.id),
1017
+ blockId: (0, group_1.formatCbIdToBlockId)(Number(i.id)),
1018
+ x: i.x,
1019
+ y: i.y
1020
+ }); })
1021
+ }
1022
+ });
1023
+ return;
1024
+ }
1025
+ if (item) {
1026
+ compositionActionHandler &&
1027
+ compositionActionHandler({
1028
+ type: '@COMPOSITION/GROUP_DRAG_STOP',
1029
+ payload: {
1030
+ workDir: (_b = (0, group_1.getBlockWorkDirPath)(newblock, item.i)) !== null && _b !== void 0 ? _b : 'NOT-FOUND',
1031
+ updatedBlocks: updatedItems.map(function (i) { return ({
1032
+ cbId: Number(i.id),
1033
+ blockId: (0, group_1.formatCbIdToBlockId)(Number(i.id)),
1034
+ x: i.x,
1035
+ y: i.y
1036
+ }); })
1037
+ }
1038
+ });
1039
+ }
1040
+ };
1041
+ (0, react_1.useLayoutEffect)(function () {
1042
+ if (innerRef.current) {
1043
+ innerRef.current.setAttribute('data-section-id', props.compositionData.id.toString());
1044
+ }
1045
+ }, []);
1046
+ function getWorkDirDirectChildrenLength() {
1047
+ var ids = (0, group_1.findDirectChildrenBlockIds)(newblock, editingGroupBlock).filter(function (each) { return each !== 'BULK'; });
1048
+ return ids.length + bulkBlockIds.length;
1049
+ }
1050
+ var editableCBIDs = (0, group_1.findDirectChildrenCbIds)(newblock, editingGroupBlock);
1051
+ return ((0, jsx_runtime_1.jsx)(ErrorBoundary_1.ErrorBoundary, { children: (0, jsx_runtime_1.jsxs)(gleStyles_1.S_gleStyles, __assign({ isBulkMode: shortcutKeyMode === 'BULK_SELECT' }, { children: [showSectionHiddenCover && (0, jsx_runtime_1.jsx)(S_HiddenCover_1.S_HiddenCover, {}), (0, jsx_runtime_1.jsx)(S_COMPOSITIONWrapper, __assign({ ref: gleRef, "x-dlayout-section-type": "NO_NAME", onClick: onClickSection, onContextMenu: function (e) {
1052
+ e.stopPropagation();
1053
+ e.preventDefault();
1054
+ onContextSection(e);
1055
+ } }, { children: (0, jsx_runtime_1.jsx)(Section_1.CustomSection, __assign({}, props.compositionData, { isMobile: isMobile, overrideStyles: {
1056
+ minHeight: customSectionStyles.minHeight,
1057
+ paddingTop: padding.top,
1058
+ paddingBottom: padding.bottom,
1059
+ paddingRight: padding.right,
1060
+ paddingLeft: padding.left
1061
+ } }, { children: (0, jsx_runtime_1.jsx)(Responsive, __assign({ sectionId: props.compositionData.id.toString(), innerRef: innerRef, className: (0, clsx_1.clsx)({
1062
+ 'selected-grid-layout': editingSectionId === props.compositionData.id
1063
+ }), allowOverlap: true, layouts: layouts, resizeHandles: ['nw', 'e', 'n', 'ne', 's', 'se', 'sw', 'w'], breakpoints: breakpoints, breakpoint: breakpoint, cols: { lg: colsDesktop, sm: colsMobile }, rowHeight: rowHeight, margin: [10, 10], style: {
1064
+ width: customSectionStyles.width,
1065
+ maxWidth: customSectionStyles.maxWidth,
1066
+ // minWidth: isMobile ? GLE_MIN_WIDTH_MOBILE_PX : GLE_MIN_WIDTH_DESKTOP_PX,
1067
+ fontSize: "".concat(baseFontSize, "px")
1068
+ }, onLayoutChange: onLayoutChange, onDragStart: onDragStart, onDragStop: onDragStop, onResizeStop: onResizeStop, onDragStopForGroup: onBulkDragStop, onFitToContent: onAutoFitContent, onWidthChange: onWidthChange, minNbRow: rows, isDraggable: isEditMode, isResizable: isEditMode, zoom: props.editorProps.zoomScale,
1069
+ // GROUP
1070
+ selectedGroupBlock: (_f = selectedBlockId === null || selectedBlockId === void 0 ? void 0 : selectedBlockId.toString()) !== null && _f !== void 0 ? _f : 'ROOT', editingGroupBlock: editingGroupBlock, blockStructure: newblock, bulkIds: bulkBlockIds, onDoubleClickGroup: onDoubleClickGroup, onClickGroup: onClickGroup, onDoubleClickOutsideGroup: onDoubleClickOutsideGroup, onContextGroup: onContextGroup }, { children: layouts[layoutByDevice].map(function (each, index) {
1071
+ var matchedCB = componentBlocks === null || componentBlocks === void 0 ? void 0 : componentBlocks.find(function (cb) { return cb.id.toString() === each.i; });
1072
+ var isInBulk = bulkBlockIds.includes((0, group_1.formatCbIdToBlockId)(Number(each.i)));
1073
+ if (!matchedCB) {
1074
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
1075
+ }
1076
+ return ((0, jsx_runtime_1.jsx)("div", __assign({ className: (0, clsx_1.clsx)({
1077
+ 'react-grid-item-selected': selectedBlockId === (0, group_1.formatCbIdToBlockId)(matchedCB.id)
1078
+ }) }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ className: (0, clsx_1.clsx)({
1079
+ 'grid-item-child': true
1080
+ }), style: {
1081
+ width: '100%',
1082
+ height: '100%'
1083
+ }, onClick: function (e) {
1084
+ e.stopPropagation();
1085
+ if (isInBulk) {
1086
+ clickOneCBInBulk(matchedCB.id);
1087
+ return;
1088
+ }
1089
+ if (editingGroupBlock !== 'ROOT') {
1090
+ if (!editableCBIDs.includes(matchedCB.id)) {
1091
+ e.preventDefault();
1092
+ return;
1093
+ }
1094
+ }
1095
+ onClickCB(matchedCB.id);
1096
+ }, onContextMenu: function (e) {
1097
+ e.stopPropagation();
1098
+ e.preventDefault();
1099
+ onContextMenuCB(matchedCB.id, e);
1100
+ } }, { children: (0, jsx_runtime_1.jsx)(ErrorBoundary_1.ErrorBoundary, { children: (0, jsx_runtime_1.jsx)(ComponentBlockMatcher_1.default, { cbProps: matchedCB, device: device, rowHeight: rowHeight, index: index }) }) })) }), each.i));
1101
+ }) })) })) }))] })) }));
1102
+ });
1103
+ function isLayoutPlacementSame(current, prev) {
1104
+ if (!prev) {
1105
+ return false;
1106
+ }
1107
+ return (prev.w === current.w &&
1108
+ prev.h === current.h &&
1109
+ prev.x === current.x &&
1110
+ prev.y === current.y &&
1111
+ prev.z === current.z &&
1112
+ prev.i === current.i);
1113
+ }
1114
+ var S_COMPOSITIONWrapper = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: relative;\n"], ["\n position: relative;\n"])));
1115
+ exports.default = react_1.default.memo(CompositionEditor);
1116
+ var templateObject_1;