seat-editor 1.3.20 → 1.4.2

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 (107) hide show
  1. package/dist/features/board/index.d.ts +1 -1
  2. package/dist/features/board/index.jsx +76 -24
  3. package/dist/features/side-tool/index.d.ts +1 -1
  4. package/dist/features/side-tool/index.jsx +41 -3
  5. package/dist/seat-editor.css +1 -1
  6. package/package.json +1 -1
  7. package/dist/app/constant.d.ts +0 -23
  8. package/dist/app/constant.js +0 -34
  9. package/dist/app/layout.d.ts +0 -6
  10. package/dist/app/layout.js +0 -22
  11. package/dist/app/layout.jsx +0 -27
  12. package/dist/app/new-board/page.d.ts +0 -1
  13. package/dist/app/new-board/page.js +0 -7
  14. package/dist/app/new-board/page.jsx +0 -12
  15. package/dist/app/old-board/page.d.ts +0 -2
  16. package/dist/app/old-board/page.js +0 -377
  17. package/dist/app/old-board/page.jsx +0 -510
  18. package/dist/app/only-view/constant.d.ts +0 -40
  19. package/dist/app/only-view/constant.js +0 -1336
  20. package/dist/app/only-view/page.d.ts +0 -2
  21. package/dist/app/only-view/page.js +0 -41
  22. package/dist/app/only-view/page.jsx +0 -40
  23. package/dist/app/page.d.ts +0 -2
  24. package/dist/app/page.js +0 -8
  25. package/dist/app/page.jsx +0 -9
  26. package/dist/components/button-tools/index.d.ts +0 -11
  27. package/dist/components/button-tools/index.js +0 -11
  28. package/dist/components/button-tools/index.jsx +0 -17
  29. package/dist/components/form-tools/label.d.ts +0 -2
  30. package/dist/components/form-tools/label.js +0 -7
  31. package/dist/components/form-tools/label.jsx +0 -44
  32. package/dist/components/form-tools/shape.d.ts +0 -2
  33. package/dist/components/form-tools/shape.js +0 -7
  34. package/dist/components/form-tools/shape.jsx +0 -43
  35. package/dist/components/input/number-indicator.d.ts +0 -7
  36. package/dist/components/input/number-indicator.js +0 -27
  37. package/dist/components/input/number-indicator.jsx +0 -36
  38. package/dist/components/joystick/index.d.ts +0 -11
  39. package/dist/components/joystick/index.js +0 -48
  40. package/dist/components/joystick/index.jsx +0 -49
  41. package/dist/components/layer/index.d.ts +0 -19
  42. package/dist/components/layer/index.js +0 -276
  43. package/dist/components/layer/index.jsx +0 -361
  44. package/dist/components/lib/index.d.ts +0 -8
  45. package/dist/components/lib/index.js +0 -28
  46. package/dist/components/lib/index.jsx +0 -33
  47. package/dist/components/modal-preview/index.d.ts +0 -4
  48. package/dist/components/modal-preview/index.js +0 -10
  49. package/dist/components/modal-preview/index.jsx +0 -11
  50. package/dist/features/board/board-slice.d.ts +0 -14
  51. package/dist/features/board/board-slice.js +0 -52
  52. package/dist/features/board/index.js +0 -586
  53. package/dist/features/navbar/index.d.ts +0 -2
  54. package/dist/features/navbar/index.js +0 -6
  55. package/dist/features/navbar/index.jsx +0 -5
  56. package/dist/features/package/index.d.ts +0 -26
  57. package/dist/features/package/index.js +0 -44
  58. package/dist/features/package/index.jsx +0 -49
  59. package/dist/features/panel/index.d.ts +0 -11
  60. package/dist/features/panel/index.js +0 -79
  61. package/dist/features/panel/index.jsx +0 -87
  62. package/dist/features/panel/panel-slice.d.ts +0 -16
  63. package/dist/features/panel/panel-slice.js +0 -31
  64. package/dist/features/panel/select-tool.d.ts +0 -4
  65. package/dist/features/panel/select-tool.js +0 -36
  66. package/dist/features/panel/select-tool.jsx +0 -45
  67. package/dist/features/panel/square-circle-tool.d.ts +0 -2
  68. package/dist/features/panel/square-circle-tool.js +0 -8
  69. package/dist/features/panel/square-circle-tool.jsx +0 -10
  70. package/dist/features/panel/table-seat-circle.d.ts +0 -2
  71. package/dist/features/panel/table-seat-circle.js +0 -9
  72. package/dist/features/panel/table-seat-circle.jsx +0 -31
  73. package/dist/features/panel/text-tool.d.ts +0 -2
  74. package/dist/features/panel/text-tool.js +0 -7
  75. package/dist/features/panel/text-tool.jsx +0 -22
  76. package/dist/features/panel/upload-tool.d.ts +0 -13
  77. package/dist/features/panel/upload-tool.js +0 -121
  78. package/dist/features/panel/upload-tool.jsx +0 -135
  79. package/dist/features/side-tool/index.js +0 -207
  80. package/dist/features/side-tool/side-tool-slice.d.ts +0 -12
  81. package/dist/features/side-tool/side-tool-slice.js +0 -20
  82. package/dist/features/theme/theme-slice.d.ts +0 -12
  83. package/dist/features/theme/theme-slice.js +0 -15
  84. package/dist/features/view/index.d.ts +0 -19
  85. package/dist/features/view/index.js +0 -197
  86. package/dist/features/view/index.jsx +0 -204
  87. package/dist/hooks/use-redux.d.ts +0 -4
  88. package/dist/hooks/use-redux.js +0 -3
  89. package/dist/index.d.ts +0 -7
  90. package/dist/index.js +0 -7
  91. package/dist/libs/middleware.d.ts +0 -2
  92. package/dist/libs/middleware.js +0 -5
  93. package/dist/libs/rootReducer.d.ts +0 -12
  94. package/dist/libs/rootReducer.js +0 -14
  95. package/dist/libs/store.d.ts +0 -18
  96. package/dist/libs/store.js +0 -19
  97. package/dist/provider/antd-provider.d.ts +0 -4
  98. package/dist/provider/antd-provider.js +0 -43
  99. package/dist/provider/antd-provider.jsx +0 -46
  100. package/dist/provider/redux-provider.d.ts +0 -3
  101. package/dist/provider/redux-provider.js +0 -7
  102. package/dist/provider/redux-provider.jsx +0 -6
  103. package/dist/provider/store-provider.d.ts +0 -4
  104. package/dist/provider/store-provider.js +0 -9
  105. package/dist/provider/store-provider.jsx +0 -10
  106. package/dist/utils/injectCss.d.ts +0 -1
  107. package/dist/utils/injectCss.js +0 -13
@@ -1,5 +1,5 @@
1
1
  interface BoardTemplateProps {
2
2
  onSelectComponent?: (items: any) => void;
3
3
  }
4
- declare const BoardTemplate: ({ onSelectComponent }: BoardTemplateProps) => import("react/jsx-runtime").JSX.Element;
4
+ declare const BoardTemplate: ({ onSelectComponent }: BoardTemplateProps) => import("react").JSX.Element;
5
5
  export default BoardTemplate;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { useCallback, useEffect, useRef, useState } from "react";
3
- import { TransformWrapper, TransformComponent, } from "react-zoom-pan-pinch";
3
+ import { TransformWrapper, TransformComponent, MiniMap, } from "react-zoom-pan-pinch";
4
4
  import { useAppSelector, useAppDispatch } from "../../hooks/use-redux";
5
5
  import Layers from "../../components/layer";
6
6
  import { throttle } from "lodash";
@@ -126,14 +126,16 @@ const BoardTemplate = ({ onSelectComponent }) => {
126
126
  fontColor: activeTool === "text" ? "#DADADA" : undefined,
127
127
  });
128
128
  const handleMouseDown = (e, item, direction) => {
129
+ console.log("handleMouseDown", e, item, direction);
129
130
  if (activeTool === "select" && direction) {
130
131
  setResizeDirection(direction);
131
132
  setIsDragging(true);
132
133
  }
133
- if (activeTool === "select") {
134
+ if (activeTool === "select" && !direction && !moveComponent) {
134
135
  if (e) {
135
136
  dispatch({ type: "panel/setShow", payload: false });
136
137
  setMoveComponent(true);
138
+ setIsDragging(true);
137
139
  // dispatch({ type: "panel/setSelectedComponent", payload: null });
138
140
  // setSelectedComponent(null)
139
141
  const rectBox = (e === null || e === void 0 ? void 0 : e.target).getBoundingClientRect();
@@ -145,7 +147,7 @@ const BoardTemplate = ({ onSelectComponent }) => {
145
147
  }
146
148
  };
147
149
  const handleMouseUp = () => {
148
- if (activeTool === "select") {
150
+ if (activeTool === "select" && selectedComponent) {
149
151
  setMoveComponent(false);
150
152
  dispatch({ type: "panel/setShow", payload: false });
151
153
  dispatch({ type: "panel/setSelectedComponent", payload: null });
@@ -188,7 +190,7 @@ const BoardTemplate = ({ onSelectComponent }) => {
188
190
  ].includes(activeTool)) {
189
191
  return;
190
192
  }
191
- const { x, y } = getSvgCoords(event);
193
+ const { x, y } = getSvgCoords(e);
192
194
  setStartPoint({ x, y });
193
195
  handleAddComponent(createShape(x, y, theme === null || theme === void 0 ? void 0 : theme.primaryColor));
194
196
  };
@@ -212,7 +214,7 @@ const BoardTemplate = ({ onSelectComponent }) => {
212
214
  "table-seat-square",
213
215
  "text",
214
216
  ].includes(activeTool)) {
215
- const { x, y } = getSvgCoords(event);
217
+ const { x, y } = getSvgCoords(e);
216
218
  setShadowShape([createShape(x, y, theme === null || theme === void 0 ? void 0 : theme.primaryColor)]);
217
219
  return;
218
220
  }
@@ -220,8 +222,9 @@ const BoardTemplate = ({ onSelectComponent }) => {
220
222
  selectedComponent &&
221
223
  moveComponent &&
222
224
  dragOffset &&
223
- !isTouching.current &&
225
+ // !isTouching.current &&
224
226
  !resizeDirection) {
227
+ console.log("masukk");
225
228
  const workspaceRect = e.currentTarget.getBoundingClientRect();
226
229
  const newX = e.clientX - workspaceRect.left - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.x);
227
230
  const newY = e.clientY - workspaceRect.top - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.y);
@@ -354,8 +357,10 @@ const BoardTemplate = ({ onSelectComponent }) => {
354
357
  }
355
358
  };
356
359
  const handleSelectComponent = (items) => {
357
- if (activeTool === "select" && !isDragging) {
358
- setIsDragging(false);
360
+ if (activeTool === "select") {
361
+ console.log("handleSelectComponent", items);
362
+ setIsDragging(true);
363
+ setMoveComponent(false);
359
364
  onSelectComponent && onSelectComponent(items);
360
365
  setSelectedComponent(items);
361
366
  dispatch({ type: "panel/setSelectedComponent", payload: items });
@@ -427,12 +432,14 @@ const BoardTemplate = ({ onSelectComponent }) => {
427
432
  // }
428
433
  }
429
434
  };
435
+ const [isMove, setIsMove] = useState(false);
430
436
  const handleTouchMove = (e) => {
431
437
  if (activeTool === "select" &&
432
438
  moveComponent &&
433
439
  isTouching.current &&
434
440
  !resizeDirection) {
435
441
  setIsDragging(true);
442
+ setIsMove(true);
436
443
  const touch = e.touches[0];
437
444
  const svg = e.currentTarget.ownerSVGElement;
438
445
  if (!svg)
@@ -442,22 +449,26 @@ const BoardTemplate = ({ onSelectComponent }) => {
442
449
  pt.y = touch.clientY;
443
450
  const cursorpt = pt.matrixTransform(screenCTMRef.current);
444
451
  requestAnimationFrame(() => {
445
- setComponentsState((prev) => {
446
- return prev.map((component) => {
447
- if (component.id === selectedComponent.id) {
448
- return Object.assign(Object.assign({}, component), { x: cursorpt.x - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.x), y: cursorpt.y - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.y) });
449
- }
450
- return component;
452
+ if ((selectedComponent === null || selectedComponent === void 0 ? void 0 : selectedComponent.shape) != "background") {
453
+ setComponentsState((prev) => {
454
+ return prev.map((component) => {
455
+ if (component.id === selectedComponent.id) {
456
+ return Object.assign(Object.assign({}, component), { x: cursorpt.x - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.x), y: cursorpt.y - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.y) });
457
+ }
458
+ return component;
459
+ });
451
460
  });
452
- });
453
- setExtraComponentsState((prev) => {
454
- return prev.map((component) => {
455
- if (component.id === selectedComponent.id) {
456
- return Object.assign(Object.assign({}, component), { x: cursorpt.x - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.x), y: cursorpt.y - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.y) });
457
- }
458
- return component;
461
+ }
462
+ if ((selectedComponent === null || selectedComponent === void 0 ? void 0 : selectedComponent.shape) == "background") {
463
+ setExtraComponentsState((prev) => {
464
+ return prev.map((component) => {
465
+ if (component.id === selectedComponent.id) {
466
+ return Object.assign(Object.assign({}, component), { x: cursorpt.x - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.x), y: cursorpt.y - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.y) });
467
+ }
468
+ return component;
469
+ });
459
470
  });
460
- });
471
+ }
461
472
  setSelectedComponent(Object.assign(Object.assign({}, selectedComponent), { x: cursorpt.x - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.x), y: cursorpt.y - (dragOffset === null || dragOffset === void 0 ? void 0 : dragOffset.y) }));
462
473
  });
463
474
  // updateComponentRef({
@@ -565,6 +576,44 @@ const BoardTemplate = ({ onSelectComponent }) => {
565
576
  return "grab";
566
577
  }
567
578
  };
579
+ const renderMiniMap = () => {
580
+ return (<MiniMap width={250} height={250}>
581
+ <div className="w-full h-full">
582
+ <svg id="workspace" width="100%" height="100%" viewBox={`0 0 ${widthBoard} ${heightBoard}`} className="h-screen w-full" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid meet" style={{
583
+ background: "#f5f5f5",
584
+ display: "block",
585
+ }}>
586
+ <Layers shadowShape={shadowShape} components={[...extraComponentsState, ...componentsState]} activeTool={activeTool} onClick={handleSelectComponent} onMouseDown={handleMouseDown} onMouseUp={handleMouseUp}
587
+ // onBlur={handleUnSelectComponent}
588
+ selectedComponent={selectedComponent} onTouchStart={(e, item, direction) => handleTouchStart(e, item, direction)} onTouchMove={(e) => handleTouchMove(e)} onTouchEnd={handleTouchEnd}/>
589
+ </svg>
590
+ </div>
591
+ </MiniMap>);
592
+ };
593
+ const handelZoomIn = () => {
594
+ var _a;
595
+ if (activeTool !== "grab") {
596
+ dispatch({
597
+ type: "tool/setActiveTool",
598
+ payload: "grab",
599
+ });
600
+ }
601
+ (_a = transformRef.current) === null || _a === void 0 ? void 0 : _a.zoomIn();
602
+ };
603
+ const handleZoomOut = () => {
604
+ var _a;
605
+ if (activeTool !== "grab") {
606
+ dispatch({
607
+ type: "tool/setActiveTool",
608
+ payload: "grab",
609
+ });
610
+ }
611
+ (_a = transformRef.current) === null || _a === void 0 ? void 0 : _a.zoomOut();
612
+ };
613
+ // activeTool === "select" &&
614
+ // moveComponent &&
615
+ // isTouching.current &&
616
+ // !resizeDirection
568
617
  return (<>
569
618
  <ModalPreview>
570
619
  <LayerView statusKey="status"/>
@@ -574,12 +623,15 @@ const BoardTemplate = ({ onSelectComponent }) => {
574
623
  }} ref={containerRef}>
575
624
  <div className="absolute bottom-5 left-1/2 transform -translate-x-1/2 z-10">
576
625
  <div className="flex gap-2">
577
- <Button icon={<ZoomIn />} onClick={() => { var _a; return (_a = transformRef.current) === null || _a === void 0 ? void 0 : _a.zoomIn(); }}/>
578
- <Button icon={<ZoomOut />} onClick={() => { var _a; return (_a = transformRef.current) === null || _a === void 0 ? void 0 : _a.zoomOut(); }}/>
626
+ <Button icon={<ZoomIn />} onClick={handelZoomIn}/>
627
+ <Button icon={<ZoomOut />} onClick={handleZoomOut}/>
579
628
  </div>
580
629
  </div>
581
630
  <TransformWrapper ref={transformRef} panning={{ disabled: activeTool === "select" }} centerZoomedOut={true} onTransformed={({ state: { scale } }) => setScale(scale)} minScale={1} // sangat kecil = bisa zoom out jauh
582
631
  maxScale={1000} initialScale={1} pinch={{ step: 1 }} smooth={true} doubleClick={{ step: 1, disabled: activeTool === "select" }} disablePadding>
632
+ {scale > 1 && (<div className="absolute bottom-[60px] left-1/2 transform -translate-x-1/2 z-10">
633
+ {renderMiniMap()}
634
+ </div>)}
583
635
  <TransformComponent wrapperStyle={{
584
636
  width: "100%",
585
637
  height: "100%",
@@ -1,4 +1,4 @@
1
1
  declare const SideTool: ({ dragOnly }: {
2
2
  dragOnly?: boolean;
3
- }) => import("react/jsx-runtime").JSX.Element;
3
+ }) => import("react").JSX.Element;
4
4
  export default SideTool;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Circle, CopyPlus, Eye, EyeOff, Image, Layers2, MousePointer, PaintBucket, Ratio, SquareMousePointer, Trash, Type, Upload, Hand } from "lucide-react";
2
+ import { Circle, CopyPlus, Eye, EyeOff, Image, Layers2, MousePointer, PaintBucket, Ratio, SquareMousePointer, Trash, Type, Upload, Hand, Layers } from "lucide-react";
3
3
  import ButtonTools from "../../components/button-tools";
4
4
  import { Divider, ColorPicker, Button, } from "antd";
5
5
  import { useAppDispatch, useAppSelector } from "../../hooks/use-redux";
@@ -9,7 +9,7 @@ const SideTool = ({ dragOnly }) => {
9
9
  const dispatch = useAppDispatch();
10
10
  const { active } = useAppSelector((state) => state.tool);
11
11
  const { selectedComponent } = useAppSelector((state) => state.panel);
12
- const { components } = useAppSelector((state) => state.board);
12
+ const { components, extraComponents } = useAppSelector((state) => state.board);
13
13
  const [preview, setPreview] = useState(false);
14
14
  const tools = [
15
15
  {
@@ -123,6 +123,7 @@ const SideTool = ({ dragOnly }) => {
123
123
  type: "panel/setSelectedComponent",
124
124
  payload: newComponent,
125
125
  });
126
+ dispatch({ type: "board/setFlagChange", payload: true });
126
127
  };
127
128
  function swapOneStepById(arr, id, direction) {
128
129
  const index = arr.findIndex((item) => (item === null || item === void 0 ? void 0 : item.id) === id);
@@ -138,11 +139,38 @@ const SideTool = ({ dragOnly }) => {
138
139
  return newArr;
139
140
  }
140
141
  const handleOverride = () => {
142
+ if ((selectedComponent === null || selectedComponent === void 0 ? void 0 : selectedComponent.shape) === "background") {
143
+ const setNewExtraComponents = swapOneStepById(extraComponents, selectedComponent === null || selectedComponent === void 0 ? void 0 : selectedComponent.id, "right");
144
+ dispatch({
145
+ type: "board/setNewExtraComponents",
146
+ payload: setNewExtraComponents,
147
+ });
148
+ dispatch({ type: "board/setFlagChange", payload: true });
149
+ return;
150
+ }
141
151
  const newArr = swapOneStepById(components, selectedComponent === null || selectedComponent === void 0 ? void 0 : selectedComponent.id, "right");
142
152
  dispatch({
143
153
  type: "board/setNewComponents",
144
154
  payload: newArr,
145
155
  });
156
+ dispatch({ type: "board/setFlagChange", payload: true });
157
+ };
158
+ const handleOverrideLeft = () => {
159
+ if ((selectedComponent === null || selectedComponent === void 0 ? void 0 : selectedComponent.shape) === "background") {
160
+ const setNewExtraComponents = swapOneStepById(extraComponents, selectedComponent === null || selectedComponent === void 0 ? void 0 : selectedComponent.id, "left");
161
+ dispatch({
162
+ type: "board/setNewExtraComponents",
163
+ payload: setNewExtraComponents,
164
+ });
165
+ dispatch({ type: "board/setFlagChange", payload: true });
166
+ return;
167
+ }
168
+ const newArr = swapOneStepById(components, selectedComponent === null || selectedComponent === void 0 ? void 0 : selectedComponent.id, "left");
169
+ dispatch({
170
+ type: "board/setNewComponents",
171
+ payload: newArr,
172
+ });
173
+ dispatch({ type: "board/setFlagChange", payload: true });
146
174
  };
147
175
  return (<div className="h-full left-0 flex flex-col items-center border-r-2 border-gray-300 bg-white px-2 pt-4">
148
176
  {tools === null || tools === void 0 ? void 0 : tools.map((tool) => (<ButtonTools key={tool.id} buttonProps={{
@@ -183,7 +211,17 @@ const SideTool = ({ dragOnly }) => {
183
211
  type: "text",
184
212
  name: "override",
185
213
  }} items={[]} popoverProps={{
186
- content: <div>Override</div>,
214
+ content: <div>Override Right</div>,
215
+ trigger: "hover",
216
+ placement: "right",
217
+ }}/>
218
+ <ButtonTools buttonProps={{
219
+ onClick: () => handleOverrideLeft(),
220
+ icon: <Layers />,
221
+ type: "text",
222
+ name: "override",
223
+ }} items={[]} popoverProps={{
224
+ content: <div>Override Left</div>,
187
225
  trigger: "hover",
188
226
  placement: "right",
189
227
  }}/>
@@ -1 +1 @@
1
- *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.bottom-2{bottom:.5rem}.bottom-5{bottom:1.25rem}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.z-10{z-index:10}.mb-2{margin-bottom:.5rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.block{display:block}.flex{display:flex}.table{display:table}.hidden{display:none}.h-3{height:.75rem}.h-\[500px\]{height:500px}.h-full{height:100%}.h-screen{height:100vh}.max-h-screen{max-height:100vh}.w-16{width:4rem}.w-3{width:.75rem}.w-\[300px\]{width:300px}.w-full{width:100%}.flex-1{flex:1 1 0%}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.border{border-width:1px}.border-2{border-width:2px}.border-r-2{border-right-width:2px}.border-dashed{border-style:dashed}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-bottom:1rem}.pt-4,.py-4{padding-top:1rem}.text-center{text-align:center}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.heading-s{font-size:20px;font-weight:600;line-height:24px;letter-spacing:-.0006em}.text-sm{font-size:12px;font-weight:500;line-height:16px;letter-spacing:0}.divider-dashed{border-top:1px dashed var(--netral-04);width:100%;margin:16px 0}:root{--background:#fff;--foreground:#171717;--primary-color:#181e49;--secondary-color:#f0f2f5;--background-color:#f5f5f5;--success-color:#63cc47;--netral-03:#ededed;--netral-04:#e0e0e0;--netral-05:#c2c2c2;--netral-06:#9e9e9e;--netral-07:#757575;--netral-08:#616161;--netral-09:#404040;--netral-10:#0a0a0a;--danger:#cb3a31;--accent:#ff9800;--info:#3267e3}@media (prefers-color-scheme:dark){:root{--background:#0a0a0a;--foreground:#ededed}}body{color:var(--foreground);background:var(--background);font-family:Arial,Helvetica,sans-serif}.custom-styles .excalidraw{--color-primary:#fcc6d9;--color-primary-darker:#f783ac;--color-primary-darkest:#e64980;--color-primary-light:#f2a9c4}.custom-styles .excalidraw.theme--dark{--color-primary:#d494aa;--color-primary-darker:#d64c7e;--color-primary-darkest:#e86e99;--color-primary-light:#dcbec9}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.ant-drawer-mask{background:none!important}
1
+ *,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.bottom-2{bottom:.5rem}.bottom-5{bottom:1.25rem}.bottom-\[60px\]{bottom:60px}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.z-10{z-index:10}.mb-2{margin-bottom:.5rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.block{display:block}.flex{display:flex}.table{display:table}.hidden{display:none}.h-3{height:.75rem}.h-\[500px\]{height:500px}.h-full{height:100%}.h-screen{height:100vh}.max-h-screen{max-height:100vh}.w-16{width:4rem}.w-3{width:.75rem}.w-\[300px\]{width:300px}.w-full{width:100%}.flex-1{flex:1 1 0%}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.border{border-width:1px}.border-2{border-width:2px}.border-r-2{border-right-width:2px}.border-dashed{border-style:dashed}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-bottom:1rem}.pt-4,.py-4{padding-top:1rem}.text-center{text-align:center}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.heading-s{font-size:20px;font-weight:600;line-height:24px;letter-spacing:-.0006em}.text-sm{font-size:12px;font-weight:500;line-height:16px;letter-spacing:0}.divider-dashed{border-top:1px dashed var(--netral-04);width:100%;margin:16px 0}:root{--background:#fff;--foreground:#171717;--primary-color:#181e49;--secondary-color:#f0f2f5;--background-color:#f5f5f5;--success-color:#63cc47;--netral-03:#ededed;--netral-04:#e0e0e0;--netral-05:#c2c2c2;--netral-06:#9e9e9e;--netral-07:#757575;--netral-08:#616161;--netral-09:#404040;--netral-10:#0a0a0a;--danger:#cb3a31;--accent:#ff9800;--info:#3267e3}@media (prefers-color-scheme:dark){:root{--background:#0a0a0a;--foreground:#ededed}}body{color:var(--foreground);background:var(--background);font-family:Arial,Helvetica,sans-serif}.custom-styles .excalidraw{--color-primary:#fcc6d9;--color-primary-darker:#f783ac;--color-primary-darkest:#e64980;--color-primary-light:#f2a9c4}.custom-styles .excalidraw.theme--dark{--color-primary:#d494aa;--color-primary-darker:#d64c7e;--color-primary-darkest:#e86e99;--color-primary-light:#dcbec9}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.ant-drawer-mask{background:none!important}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seat-editor",
3
- "version": "1.3.20",
3
+ "version": "1.4.2",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,23 +0,0 @@
1
- export declare const constantData: ({
2
- id: number;
3
- x: number;
4
- y: number;
5
- width: number;
6
- height: number;
7
- rotation: number;
8
- shape: string;
9
- src: string;
10
- color?: undefined;
11
- pax?: undefined;
12
- } | {
13
- id: number;
14
- x: number;
15
- y: number;
16
- width: number;
17
- height: number;
18
- color: string;
19
- pax: string;
20
- rotation: number;
21
- shape: string;
22
- src?: undefined;
23
- })[];