@solostylist/image-editor 1.0.13 → 1.0.15

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 (132) hide show
  1. package/lib/actions/add-filter.js +2 -1
  2. package/lib/actions/enable-text-content-edit.js +2 -1
  3. package/lib/actions/set-canvas-size.d.ts.map +1 -1
  4. package/lib/actions/set-crop.js +6 -1
  5. package/lib/actions/set-shown-image-dimensions.js +3 -2
  6. package/lib/components/app/index.d.ts.map +1 -1
  7. package/lib/components/app/index.js +111 -41
  8. package/lib/components/assembly-point/index.d.ts +1 -2
  9. package/lib/components/assembly-point/index.d.ts.map +1 -1
  10. package/lib/components/assembly-point/index.js +1 -5
  11. package/lib/components/common/annotation-options/index.js +3 -3
  12. package/lib/components/common/annotation-options/shadow-fields.js +2 -2
  13. package/lib/components/common/color-picker-modal/index.js +1 -1
  14. package/lib/components/common/icon-wrapper/index.js +1 -1
  15. package/lib/components/common/image-preview-tile/index.js +1 -1
  16. package/lib/components/common/slider/index.js +4 -4
  17. package/lib/components/feedback-popup/index.js +2 -2
  18. package/lib/components/layers/design-layer/index.d.ts.map +1 -1
  19. package/lib/components/layers/design-layer/index.js +11 -8
  20. package/lib/components/layers/transformers-layer/crop-transformer.js +3 -2
  21. package/lib/components/layers/transformers-layer/index.js +3 -2
  22. package/lib/components/main-canvas/canvas-node.d.ts.map +1 -1
  23. package/lib/components/main-canvas/canvas-node.js +8 -6
  24. package/lib/components/main-canvas/index.d.ts.map +1 -1
  25. package/lib/components/main-canvas/index.js +135 -33
  26. package/lib/components/main-canvas/touch-zooming-events.js +3 -2
  27. package/lib/components/node-controls/index.d.ts.map +1 -1
  28. package/lib/components/node-controls/index.js +4 -3
  29. package/lib/components/tabs/index.d.ts.map +1 -1
  30. package/lib/components/tabs/index.js +165 -23
  31. package/lib/components/tabs-drawer/index.d.ts +3 -3
  32. package/lib/components/tabs-drawer/index.d.ts.map +1 -1
  33. package/lib/components/tabs-drawer/index.js +66 -43
  34. package/lib/components/tools/crop/crop.d.ts.map +1 -1
  35. package/lib/components/tools/crop/crop.js +3 -3
  36. package/lib/components/tools/filters/filter-item.d.ts +4 -3
  37. package/lib/components/tools/filters/filter-item.d.ts.map +1 -1
  38. package/lib/components/tools/filters/filter-item.js +4 -1
  39. package/lib/components/tools/filters/filters.constants.d.ts +2 -2
  40. package/lib/components/tools/filters/filters.constants.d.ts.map +1 -1
  41. package/lib/components/tools/filters/filters.d.ts +4 -1
  42. package/lib/components/tools/filters/filters.d.ts.map +1 -1
  43. package/lib/components/tools/filters/filters.js +9 -3
  44. package/lib/components/tools/image/image-options.js +5 -4
  45. package/lib/components/tools/image/images-gallery.js +1 -1
  46. package/lib/components/tools/pen/pen-options.js +4 -3
  47. package/lib/components/tools/resize/resize.d.ts +1 -1
  48. package/lib/components/tools/resize/resize.d.ts.map +1 -1
  49. package/lib/components/tools/resize/resize.js +5 -2
  50. package/lib/components/tools/rotate/rotate-options.js +1 -1
  51. package/lib/components/tools/text/text-options/handle-text-change-area.d.ts.map +1 -1
  52. package/lib/components/tools/text/text-options/text-alignment-fields.js +1 -1
  53. package/lib/components/tools/text/text-options/text-controls.js +8 -6
  54. package/lib/components/tools/tools.constants.d.ts +2 -2
  55. package/lib/components/tools/tools.constants.d.ts.map +1 -1
  56. package/lib/components/tools/watermark/watermark-padding.js +2 -1
  57. package/lib/components/tools/watermark/watermark.js +9 -8
  58. package/lib/components/tools-bar/index.d.ts.map +1 -1
  59. package/lib/components/tools-bar/index.js +47 -22
  60. package/lib/components/tools-bar/tools-bar-item-button.d.ts.map +1 -1
  61. package/lib/components/tools-bar/tools-bar-item-button.js +8 -3
  62. package/lib/components/topbar/canvas-zooming.d.ts.map +1 -1
  63. package/lib/components/topbar/canvas-zooming.js +5 -5
  64. package/lib/components/topbar/confirmation-modal.js +2 -2
  65. package/lib/components/topbar/image-dimensions-and-display-toggle.d.ts.map +1 -1
  66. package/lib/components/topbar/image-dimensions-and-display-toggle.js +8 -6
  67. package/lib/components/topbar/index.d.ts.map +1 -1
  68. package/lib/components/topbar/index.js +33 -24
  69. package/lib/components/topbar/redo-button.js +1 -1
  70. package/lib/components/topbar/reset-button.js +1 -1
  71. package/lib/components/topbar/save-button.js +9 -6
  72. package/lib/components/topbar/topbar-action-buttons.d.ts +3 -0
  73. package/lib/components/topbar/topbar-action-buttons.d.ts.map +1 -0
  74. package/lib/components/topbar/topbar-action-buttons.js +27 -0
  75. package/lib/components/topbar/undo-button.js +1 -1
  76. package/lib/context/app-provider.d.ts.map +1 -1
  77. package/lib/context/app-provider.js +8 -6
  78. package/lib/context/app-reducer.js +2 -1
  79. package/lib/context/default-config.d.ts.map +1 -1
  80. package/lib/context/default-config.js +1 -1
  81. package/lib/context/default-translations.d.ts +1 -0
  82. package/lib/context/default-translations.d.ts.map +1 -1
  83. package/lib/context/default-translations.js +465 -113
  84. package/lib/context/get-initial-app-state.js +4 -4
  85. package/lib/custom/filters/moon.d.ts.map +1 -1
  86. package/lib/demo/app.d.ts.map +1 -1
  87. package/lib/demo/app.js +62 -18
  88. package/lib/hooks/index.d.ts +1 -0
  89. package/lib/hooks/index.d.ts.map +1 -1
  90. package/lib/hooks/index.js +2 -1
  91. package/lib/hooks/use-annotation/get-new-annotation-preview.js +2 -2
  92. package/lib/hooks/use-annotation/index.d.ts.map +1 -1
  93. package/lib/hooks/use-annotation/index.js +15 -2
  94. package/lib/hooks/use-annotation-events.d.ts.map +1 -1
  95. package/lib/hooks/use-app-reducer.d.ts.map +1 -1
  96. package/lib/hooks/use-app-reducer.js +2 -1
  97. package/lib/hooks/use-image-editor-actions.d.ts +16 -0
  98. package/lib/hooks/use-image-editor-actions.d.ts.map +1 -0
  99. package/lib/hooks/use-image-editor-actions.js +147 -0
  100. package/lib/hooks/use-resize-observer.d.ts.map +1 -1
  101. package/lib/hooks/use-resize-observer.js +2 -3
  102. package/lib/hooks/use-transformed-img-data.d.ts +1 -1
  103. package/lib/hooks/use-transformed-img-data.d.ts.map +1 -1
  104. package/lib/hooks/use-transformed-img-data.js +13 -9
  105. package/lib/types/actions.d.ts +0 -7
  106. package/lib/types/actions.d.ts.map +1 -1
  107. package/lib/types/config.d.ts +52 -3
  108. package/lib/types/config.d.ts.map +1 -1
  109. package/lib/types/state.d.ts +1 -1
  110. package/lib/types/state.d.ts.map +1 -1
  111. package/lib/utils/calculate-zoom-data.js +5 -4
  112. package/lib/utils/crop-image.d.ts +3 -1
  113. package/lib/utils/crop-image.d.ts.map +1 -1
  114. package/lib/utils/crop-image.js +10 -4
  115. package/lib/utils/extract-current-design-state.js +3 -2
  116. package/lib/utils/filter-str-to-class.js +2 -1
  117. package/lib/utils/finetunes-strs-to-classes.js +2 -1
  118. package/lib/utils/get-file-full-name.d.ts.map +1 -1
  119. package/lib/utils/get-file-full-name.js +3 -3
  120. package/lib/utils/get-pointer-offset-position-bounded-to-object.js +2 -1
  121. package/lib/utils/get-proper-dimensions.js +3 -2
  122. package/lib/utils/is-same-image.d.ts +1 -1
  123. package/lib/utils/is-same-image.d.ts.map +1 -1
  124. package/lib/utils/load-image.d.ts +1 -1
  125. package/lib/utils/load-image.d.ts.map +1 -1
  126. package/lib/utils/load-image.js +1 -3
  127. package/lib/utils/restrict-number.js +2 -2
  128. package/lib/utils/serialize-design-state.js +5 -3
  129. package/lib/utils/translator.d.ts +4 -1
  130. package/lib/utils/translator.d.ts.map +1 -1
  131. package/lib/utils/translator.js +11 -2
  132. package/package.json +14 -5
@@ -12,6 +12,7 @@ import { endTouchesZooming, zoomOnTouchesMove } from "./touch-zooming-events";
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
13
  var ZOOM_DELTA_TO_SCALE_CONVERT_FACTOR = 0.006;
14
14
  var CanvasNode = function CanvasNode(_ref) {
15
+ var _zoom$factor2, _zoom$x, _zoom$y, _zoom$factor3;
15
16
  var children = _ref.children;
16
17
  useStrictMode(true);
17
18
  var canvasRef = useRef(null);
@@ -78,11 +79,12 @@ var CanvasNode = function CanvasNode(_ref) {
78
79
  };
79
80
  };
80
81
  var handleZoom = function handleZoom(e) {
82
+ var _zoom$factor;
81
83
  e.evt.preventDefault();
82
84
  var stage = e.currentTarget;
83
85
  var pointer = stage.getPointerPosition();
84
86
  if (!pointer) return;
85
- var newScale = (zoom.factor || defaultZoomFactor) + e.evt.deltaY * -ZOOM_DELTA_TO_SCALE_CONVERT_FACTOR;
87
+ var newScale = ((_zoom$factor = zoom.factor) !== null && _zoom$factor !== void 0 ? _zoom$factor : defaultZoomFactor) + e.evt.deltaY * -ZOOM_DELTA_TO_SCALE_CONVERT_FACTOR;
86
88
  saveZoom(_objectSpread(_objectSpread({}, pointer), {}, {
87
89
  factor: newScale
88
90
  }));
@@ -147,7 +149,7 @@ var CanvasNode = function CanvasNode(_ref) {
147
149
  }
148
150
  };
149
151
  }, [tabId, zoom.factor, defaultZoomFactor]);
150
- var zoomedResponsiveCanvasScale = canvasScale * (isZoomEnabled && zoom.factor || defaultZoomFactor);
152
+ var zoomedResponsiveCanvasScale = canvasScale * (isZoomEnabled ? (_zoom$factor2 = zoom.factor) !== null && _zoom$factor2 !== void 0 ? _zoom$factor2 : defaultZoomFactor : defaultZoomFactor);
151
153
  return _jsx(Stage, {
152
154
  tabIndex: -1,
153
155
  ref: canvasRef,
@@ -155,9 +157,9 @@ var CanvasNode = function CanvasNode(_ref) {
155
157
  height: canvasHeight,
156
158
  scaleX: zoomedResponsiveCanvasScale,
157
159
  scaleY: zoomedResponsiveCanvasScale,
158
- x: isZoomEnabled && zoom.x || null,
159
- y: isZoomEnabled && zoom.y || null,
160
- zoomFactor: isZoomEnabled && zoom.factor || defaultZoomFactor,
160
+ x: isZoomEnabled ? (_zoom$x = zoom.x) !== null && _zoom$x !== void 0 ? _zoom$x : null : null,
161
+ y: isZoomEnabled ? (_zoom$y = zoom.y) !== null && _zoom$y !== void 0 ? _zoom$y : null : null,
162
+ zoomFactor: isZoomEnabled ? (_zoom$factor3 = zoom.factor) !== null && _zoom$factor3 !== void 0 ? _zoom$factor3 : defaultZoomFactor : defaultZoomFactor,
161
163
  onWheel: isZoomEnabled ? handleZoom : undefined,
162
164
  onTap: clearSelections,
163
165
  onClick: clearSelections,
@@ -171,7 +173,7 @@ var CanvasNode = function CanvasNode(_ref) {
171
173
  onDragEnd: handleCanvasDragEnd,
172
174
  style: _objectSpread(_objectSpread({}, cursorStyle), {}, {
173
175
  outline: 'none',
174
- backgroundColor: 'var(--s-palette-background-paper)'
176
+ backgroundColor: 'transparent'
175
177
  }),
176
178
  children: children
177
179
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/main-canvas/index.tsx"],"names":[],"mappings":"AAYA,QAAA,MAAM,UAAU,+CA0Df,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/main-canvas/index.tsx"],"names":[],"mappings":"AAaA,QAAA,MAAM,UAAU,+CAqLf,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,56 +1,158 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
1
  import { useCallback, useEffect, useRef } from 'react';
3
2
  import { Box } from '@mui/material';
4
3
  import { SET_CANVAS_SIZE } from "../../actions";
5
4
  import { DesignLayer, TransformersLayer } from "../layers";
6
5
  import NodeControls from "../node-controls";
7
6
  import { AppProviderOverridenValue } from "../../context";
8
- import { useResizeObserver, useStore } from "../../hooks";
7
+ import { useStore } from "../../hooks";
8
+ import { TOOLS_IDS } from "../../utils/constants";
9
9
  import CanvasNode from "./canvas-node";
10
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  var MainCanvas = function MainCanvas() {
12
12
  var _providedAppContext$o;
13
- var _useResizeObserver = useResizeObserver(),
14
- _useResizeObserver2 = _slicedToArray(_useResizeObserver, 1),
15
- observeResize = _useResizeObserver2[0];
16
13
  var providedAppContext = useStore();
17
14
  var canvasContainerRef = useRef(null);
15
+ var contextRef = useRef(providedAppContext);
16
+ useEffect(function () {
17
+ contextRef.current = providedAppContext;
18
+ });
18
19
  var setNewCanvasSize = useCallback(function (_ref) {
19
- var containerWidth = _ref.width,
20
- containerHeight = _ref.height;
21
- providedAppContext.dispatch({
20
+ var _ctx$config$cropTopOf;
21
+ var width = _ref.width,
22
+ height = _ref.height;
23
+ var ctx = contextRef.current;
24
+ var previousCanvasWidth = ctx.canvasWidth;
25
+ var previousCanvasHeight = ctx.canvasHeight;
26
+ var cropOffset = (_ctx$config$cropTopOf = ctx.config.cropTopOffset) !== null && _ctx$config$cropTopOf !== void 0 ? _ctx$config$cropTopOf : 56;
27
+ var isCropping = ctx.toolId === TOOLS_IDS.CROP;
28
+ var effectiveHeight = isCropping ? height - cropOffset : height;
29
+ var hasSizeChanged = width !== previousCanvasWidth || effectiveHeight !== previousCanvasHeight;
30
+ if (!hasSizeChanged) return;
31
+ ctx.dispatch({
22
32
  type: SET_CANVAS_SIZE,
23
33
  payload: {
24
- canvasWidth: containerWidth,
25
- canvasHeight: containerHeight
34
+ canvasWidth: width,
35
+ canvasHeight: effectiveHeight
26
36
  }
27
37
  });
28
38
  }, []);
29
39
  useEffect(function () {
30
- observeResize(canvasContainerRef.current, setNewCanvasSize);
31
- }, []);
32
- return _jsxs(Box, {
33
- height: "calc(100vh - 60px - 120px)",
34
- position: "relative",
40
+ var container = canvasContainerRef.current;
41
+ if (!container) return;
42
+ var debounceTimer;
43
+ var ro = new ResizeObserver(function () {
44
+ clearTimeout(debounceTimer);
45
+ debounceTimer = setTimeout(function () {
46
+ setNewCanvasSize({
47
+ width: container.offsetWidth,
48
+ height: container.offsetHeight
49
+ });
50
+ }, 100);
51
+ });
52
+ ro.observe(container);
53
+ return function () {
54
+ clearTimeout(debounceTimer);
55
+ ro.disconnect();
56
+ };
57
+ }, [setNewCanvasSize]);
58
+ var _providedAppContext$c = providedAppContext.config,
59
+ canvasAreaHeight = _providedAppContext$c.canvasAreaHeight,
60
+ showCanvasCenter = _providedAppContext$c.showCanvasCenter,
61
+ cropTopOffset = _providedAppContext$c.cropTopOffset,
62
+ defaultToolId = _providedAppContext$c.defaultToolId,
63
+ toolId = providedAppContext.toolId,
64
+ originalImage = providedAppContext.originalImage;
65
+ var lastToolIdRef = useRef(toolId !== null && toolId !== void 0 ? toolId : null);
66
+ useEffect(function () {
67
+ if (toolId) {
68
+ lastToolIdRef.current = toolId;
69
+ }
70
+ }, [toolId]);
71
+ useEffect(function () {
72
+ if (originalImage) {
73
+ var _ref2;
74
+ lastToolIdRef.current = (_ref2 = toolId !== null && toolId !== void 0 ? toolId : defaultToolId) !== null && _ref2 !== void 0 ? _ref2 : null;
75
+ }
76
+ }, [originalImage, defaultToolId, toolId]);
77
+ var cropOffset = cropTopOffset !== null && cropTopOffset !== void 0 ? cropTopOffset : 56;
78
+ return _jsx(Box, {
79
+ height: canvasAreaHeight !== null && canvasAreaHeight !== void 0 ? canvasAreaHeight : '100%',
80
+ minHeight: 0,
35
81
  flexGrow: 1,
36
- ref: canvasContainerRef,
37
- children: [!providedAppContext.textIdOfEditableContent && _jsx(NodeControls, {}), providedAppContext.isShowOriginalImage && _jsx("img", {
38
- style: {
39
- maxWidth: '98%',
40
- maxHeight: '98%',
41
- position: 'absolute',
42
- top: '50%',
43
- left: '50%',
44
- transform: 'translate(-50%, -50%)',
45
- zIndex: 2
46
- },
47
- src: (_providedAppContext$o = providedAppContext.originalImage) === null || _providedAppContext$o === void 0 ? void 0 : _providedAppContext$o.src
48
- }), _jsx(CanvasNode, {
49
- children: _jsxs(AppProviderOverridenValue, {
50
- overridingValue: providedAppContext,
51
- children: [_jsx(DesignLayer, {}), _jsx(TransformersLayer, {})]
52
- })
53
- })]
82
+ width: 'calc(100% - var(--s-image-editor-tabs-width, 0px))',
83
+ sx: {
84
+ paddingTop: "".concat(cropOffset, "px"),
85
+ transition: 'all 0.2s ease'
86
+ },
87
+ children: _jsxs(Box, {
88
+ height: canvasAreaHeight !== null && canvasAreaHeight !== void 0 ? canvasAreaHeight : '100%',
89
+ minHeight: 0,
90
+ position: "relative",
91
+ flexGrow: 1,
92
+ ref: canvasContainerRef,
93
+ width: '100%',
94
+ children: [!providedAppContext.textIdOfEditableContent && _jsx(NodeControls, {}), providedAppContext.isShowOriginalImage && _jsx("img", {
95
+ alt: "",
96
+ style: {
97
+ maxWidth: '98%',
98
+ maxHeight: '98%',
99
+ position: 'absolute',
100
+ top: '50%',
101
+ left: '50%',
102
+ transform: 'translate(-50%, -50%)',
103
+ zIndex: 2
104
+ },
105
+ src: (_providedAppContext$o = providedAppContext.originalImage) === null || _providedAppContext$o === void 0 ? void 0 : _providedAppContext$o.src
106
+ }), showCanvasCenter && _jsxs(Box, {
107
+ sx: {
108
+ position: 'absolute',
109
+ top: '50%',
110
+ left: '50%',
111
+ transform: 'translate(-50%, -50%)',
112
+ zIndex: 3,
113
+ pointerEvents: 'none',
114
+ width: 24,
115
+ height: 24
116
+ },
117
+ children: [_jsx(Box, {
118
+ sx: {
119
+ position: 'absolute',
120
+ top: '50%',
121
+ left: 0,
122
+ right: 0,
123
+ height: '1px',
124
+ backgroundColor: 'rgba(255, 0, 0, 0.7)',
125
+ transform: 'translateY(-50%)'
126
+ }
127
+ }), _jsx(Box, {
128
+ sx: {
129
+ position: 'absolute',
130
+ left: '50%',
131
+ top: 0,
132
+ bottom: 0,
133
+ width: '1px',
134
+ backgroundColor: 'rgba(255, 0, 0, 0.7)',
135
+ transform: 'translateX(-50%)'
136
+ }
137
+ }), _jsx(Box, {
138
+ sx: {
139
+ position: 'absolute',
140
+ top: '50%',
141
+ left: '50%',
142
+ width: 6,
143
+ height: 6,
144
+ borderRadius: '50%',
145
+ backgroundColor: 'rgba(255, 0, 0, 0.9)',
146
+ transform: 'translate(-50%, -50%)'
147
+ }
148
+ })]
149
+ }), _jsx(CanvasNode, {
150
+ children: _jsxs(AppProviderOverridenValue, {
151
+ overridingValue: providedAppContext,
152
+ children: [_jsx(DesignLayer, {}), _jsx(TransformersLayer, {})]
153
+ })
154
+ })]
155
+ })
54
156
  });
55
157
  };
56
158
  export default MainCanvas;
@@ -14,6 +14,7 @@ function getCenter(p1, p2) {
14
14
  var lastCenter = null;
15
15
  var lastDist = 0;
16
16
  export var zoomOnTouchesMove = function zoomOnTouchesMove(e, saveZoomFn) {
17
+ var _stageCanvas$attrs$zo;
17
18
  e.evt.preventDefault();
18
19
  var touch1 = e.evt.touches[0];
19
20
  var touch2 = e.evt.touches[1];
@@ -41,12 +42,12 @@ export var zoomOnTouchesMove = function zoomOnTouchesMove(e, saveZoomFn) {
41
42
  if (!lastDist) {
42
43
  lastDist = dist;
43
44
  }
44
- var currentZoomFactor = stageCanvas.attrs.zoomFactor || DEFAULT_ZOOM_FACTOR;
45
+ var currentZoomFactor = (_stageCanvas$attrs$zo = stageCanvas.attrs.zoomFactor) !== null && _stageCanvas$attrs$zo !== void 0 ? _stageCanvas$attrs$zo : DEFAULT_ZOOM_FACTOR;
45
46
  var pointTo = {
46
47
  x: (newCenter.x - stageCanvas.x()) / currentZoomFactor,
47
48
  y: (newCenter.y - stageCanvas.y()) / currentZoomFactor
48
49
  };
49
- var scale = (currentZoomFactor || DEFAULT_ZOOM_FACTOR) * (dist / lastDist);
50
+ var scale = (currentZoomFactor !== null && currentZoomFactor !== void 0 ? currentZoomFactor : DEFAULT_ZOOM_FACTOR) * (dist / lastDist);
50
51
  var dx = newCenter.x - lastCenter.x;
51
52
  var dy = newCenter.y - lastCenter.y;
52
53
  var newPos = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/node-controls/index.tsx"],"names":[],"mappings":"AAiBA,QAAA,MAAM,YAAY,sDAoFjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/node-controls/index.tsx"],"names":[],"mappings":"AAiBA,QAAA,MAAM,YAAY,sDA4EjB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import { ContentCopy, DeleteOutlined } from '@mui/icons-material';
3
- import { SFlexBox, SIconButton } from '@solostylist/ui-kit/core';
3
+ import { SFlexBox, SIconButton } from '@solostylist/ui-kit';
4
4
  import { useEffect, useMemo, useState } from 'react';
5
5
  import { DUPLICATE_ANNOTATIONS, REMOVE_ANNOTATIONS } from "../../actions";
6
6
  import { useStore } from "../../hooks";
@@ -8,6 +8,7 @@ import { NODES_TRANSFORMER_ID, WATERMARK_ANNOTATION_ID } from "../../utils/const
8
8
  import debounce from "../../utils/debounce";
9
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  var NodeControls = function NodeControls() {
11
+ var _position$top, _position$left;
11
12
  var _useStore = useStore(),
12
13
  _useStore$selectionsI = _useStore.selectionsIds,
13
14
  selectionsIds = _useStore$selectionsI === void 0 ? [] : _useStore$selectionsI,
@@ -64,8 +65,8 @@ var NodeControls = function NodeControls() {
64
65
  borderRadius: 4,
65
66
  alignItems: 'center',
66
67
  justifyContent: 'center',
67
- top: (position.top || 0) + 8,
68
- left: (position.left || 0) + 4,
68
+ top: ((_position$top = position.top) !== null && _position$top !== void 0 ? _position$top : 0) + 8,
69
+ left: ((_position$left = position.left) !== null && _position$left !== void 0 ? _position$left : 0) + 4,
69
70
  transform: 'translateX(-50%)',
70
71
  gap: 1,
71
72
  p: 1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/index.tsx"],"names":[],"mappings":"AASA,UAAU,SAAS;IACjB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,QAAA,MAAM,IAAI,GAAI,oBAAoB,SAAS,mDAkE1C,CAAC;AAEF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/index.tsx"],"names":[],"mappings":"AAmBA,UAAU,SAAS;IACjB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,QAAA,MAAM,IAAI,GAAI,oBAAoB,SAAS,mDAiM1C,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -1,9 +1,16 @@
1
- import { STabs } from '@solostylist/ui-kit/core';
2
- import { useCallback, useMemo } from 'react';
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';
6
+ import ChevronRightIcon from '@mui/icons-material/ChevronRight';
7
+ import { Box, ListItem, ListItemButton, ListItemIcon, ListItemText, Typography } from '@mui/material';
8
+ import { SIconButton } from '@solostylist/ui-kit';
9
+ import { useCallback, useEffect, useMemo, useState } from 'react';
3
10
  import { SELECT_TAB } from "../../actions";
4
11
  import { useStore } from "../../hooks";
5
12
  import { AVAILABLE_TABS } from "./tabs.constants";
6
- import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
14
  var Tabs = function Tabs(_ref) {
8
15
  var toggleMainMenu = _ref.toggleMainMenu;
9
16
  var _useStore = useStore(),
@@ -14,8 +21,12 @@ var Tabs = function Tabs(_ref) {
14
21
  _useStore$config = _useStore.config,
15
22
  defaultTabId = _useStore$config.defaultTabId,
16
23
  tabsIds = _useStore$config.tabsIds;
17
- var currentTabId = tabId || defaultTabId;
18
- var selectTab = useCallback(function (event, newTabId) {
24
+ var _useState = useState(false),
25
+ _useState2 = _slicedToArray(_useState, 2),
26
+ open = _useState2[0],
27
+ setOpen = _useState2[1];
28
+ var currentTabId = tabId !== null && tabId !== void 0 ? tabId : defaultTabId;
29
+ var selectTab = useCallback(function (newTabId) {
19
30
  dispatch({
20
31
  type: SELECT_TAB,
21
32
  payload: {
@@ -26,7 +37,7 @@ var Tabs = function Tabs(_ref) {
26
37
  }, [dispatch, toggleMainMenu]);
27
38
  var chosenTabsConfig = useMemo(function () {
28
39
  var tabs = [];
29
- var tabsIdsArray = Array.isArray(tabsIds) ? tabsIds : Object.keys(tabsIds || {});
40
+ var tabsIdsArray = Array.isArray(tabsIds) ? tabsIds : Object.keys(tabsIds !== null && tabsIds !== void 0 ? tabsIds : {});
30
41
  if (tabsIdsArray.length > 0) {
31
42
  AVAILABLE_TABS.forEach(function (tab) {
32
43
  var index = tabsIdsArray.indexOf(tab.id);
@@ -39,29 +50,160 @@ var Tabs = function Tabs(_ref) {
39
50
  }
40
51
  return (tabs.length > 0 ? tabs : AVAILABLE_TABS).filter(function (tab) {
41
52
  return Boolean(tab);
42
- }).map(function (tab) {
43
- return {
44
- label: t(tab.labelKey),
45
- icon: _jsx(tab.icon, {}),
46
- value: tab.id,
47
- iconPosition: 'top'
48
- };
49
53
  });
50
- }, [tabsIds, t]);
54
+ }, [tabsIds]);
55
+ useEffect(function () {
56
+ var width = open ? 240 : 64;
57
+ document.documentElement.style.setProperty('--s-image-editor-tabs-width', "".concat(width, "px"));
58
+ return function () {
59
+ document.documentElement.style.removeProperty('--s-image-editor-tabs-width');
60
+ };
61
+ }, [open]);
51
62
  if (chosenTabsConfig.length <= 1) {
52
63
  return null;
53
64
  }
54
- return _jsx(STabs, {
65
+ return _jsxs(Box, {
55
66
  sx: {
56
- minWidth: 120,
57
- width: 120
67
+ width: open ? '240px' : '60px',
68
+ flexShrink: 0,
69
+ height: '100%',
70
+ borderRight: '1px solid var(--s-palette-divider)',
71
+ backgroundColor: 'var(--s-palette-background-default)',
72
+ transition: 'width 0.3s ease',
73
+ display: 'flex',
74
+ flexDirection: 'column',
75
+ overflow: 'hidden',
76
+ '--s-image-editor-tabs-width': open ? '240px' : '60px'
58
77
  },
59
- tabs: chosenTabsConfig,
60
- activeTab: currentTabId,
61
- onTabChange: selectTab,
62
- orientation: "vertical",
63
- variant: "scrollable",
64
- scrollButtons: "auto"
78
+ children: [_jsxs(Box, {
79
+ sx: {
80
+ display: 'flex',
81
+ alignItems: 'center',
82
+ justifyContent: 'space-between',
83
+ padding: '12px 10px',
84
+ borderBottom: '1px solid var(--s-palette-divider)',
85
+ flexShrink: 0
86
+ },
87
+ children: [open && _jsx(Typography, {
88
+ variant: "subtitle2",
89
+ noWrap: true,
90
+ sx: {
91
+ fontWeight: 600
92
+ },
93
+ children: t('tabs')
94
+ }), _jsx(SIconButton, {
95
+ onClick: function onClick() {
96
+ return setOpen(function (prev) {
97
+ return !prev;
98
+ });
99
+ },
100
+ sx: {
101
+ marginLeft: open ? 'auto' : '0',
102
+ width: 32,
103
+ height: 32
104
+ },
105
+ children: open ? _jsx(ChevronLeftIcon, {
106
+ fontSize: "small"
107
+ }) : _jsx(ChevronRightIcon, {
108
+ fontSize: "small"
109
+ })
110
+ })]
111
+ }), _jsx(Box, {
112
+ sx: {
113
+ overflowY: 'auto',
114
+ overflowX: 'hidden',
115
+ flex: 1
116
+ },
117
+ children: _jsx(Box, {
118
+ sx: {
119
+ p: '8px',
120
+ display: 'flex',
121
+ flexDirection: 'column'
122
+ },
123
+ children: chosenTabsConfig.map(function (tab) {
124
+ var Icon = tab.icon;
125
+ var isActive = currentTabId === tab.id;
126
+ if (!open) {
127
+ return _jsx(SIconButton, {
128
+ onClick: function onClick() {
129
+ return selectTab(tab.id);
130
+ },
131
+ tooltipOptions: {
132
+ title: t(tab.labelKey),
133
+ placement: 'right'
134
+ },
135
+ sx: _objectSpread(_objectSpread({
136
+ width: '40px',
137
+ height: '40px',
138
+ mb: '4px',
139
+ borderRadius: '8px',
140
+ color: isActive ? 'var(--s-palette-text-primary)' : 'var(--s-palette-text-secondary)'
141
+ }, isActive && {
142
+ bgcolor: 'var(--s-palette-action-selected)'
143
+ }), {}, {
144
+ '&:hover': {
145
+ bgcolor: isActive ? 'var(--s-palette-action-selected)' : 'var(--s-palette-action-hover)'
146
+ }
147
+ }),
148
+ children: _jsx(Icon, {
149
+ sx: {
150
+ fontSize: '18px',
151
+ color: 'inherit'
152
+ }
153
+ })
154
+ }, tab.id);
155
+ }
156
+ return _jsx(ListItem, {
157
+ disablePadding: true,
158
+ sx: {
159
+ mb: 0.5
160
+ },
161
+ children: _jsxs(ListItemButton, {
162
+ selected: isActive,
163
+ onClick: function onClick() {
164
+ return selectTab(tab.id);
165
+ },
166
+ sx: {
167
+ py: 0.75,
168
+ px: 1.5,
169
+ gap: 1.5,
170
+ borderRadius: 1,
171
+ minHeight: '40px',
172
+ backgroundColor: isActive ? 'var(--s-palette-action-selected) !important' : 'transparent',
173
+ color: isActive ? 'var(--s-palette-text-primary)' : 'var(--s-palette-text-secondary)',
174
+ '&:hover': {
175
+ bgcolor: isActive ? 'var(--s-palette-action-selected)' : 'var(--s-palette-action-hover)',
176
+ color: 'var(--s-palette-text-primary)'
177
+ }
178
+ },
179
+ children: [_jsx(ListItemIcon, {
180
+ sx: {
181
+ minWidth: 'auto',
182
+ color: 'inherit'
183
+ },
184
+ children: _jsx(Icon, {
185
+ sx: {
186
+ fontSize: '20px',
187
+ color: 'inherit'
188
+ }
189
+ })
190
+ }), _jsx(ListItemText, {
191
+ primary: _jsx(Typography, {
192
+ variant: "body2",
193
+ noWrap: true,
194
+ sx: {
195
+ color: 'inherit',
196
+ fontWeight: 500,
197
+ lineHeight: '28px'
198
+ },
199
+ children: t(tab.labelKey)
200
+ })
201
+ })]
202
+ })
203
+ }, tab.id);
204
+ })
205
+ })
206
+ })]
65
207
  });
66
208
  };
67
209
  export default Tabs;
@@ -1,6 +1,6 @@
1
- interface TabsDrawerProps {
1
+ interface STabsDrawerProps {
2
2
  toggleMainMenu?: (open: boolean) => void;
3
3
  }
4
- declare const TabsDrawer: ({ toggleMainMenu }: TabsDrawerProps) => import("react/jsx-runtime").JSX.Element;
5
- export default TabsDrawer;
4
+ declare const STabsDrawer: ({ toggleMainMenu }: STabsDrawerProps) => import("react/jsx-runtime").JSX.Element;
5
+ export default STabsDrawer;
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/tabs-drawer/index.tsx"],"names":[],"mappings":"AAYA,UAAU,eAAe;IACvB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,QAAA,MAAM,UAAU,GAAI,oBAA+B,eAAe,4CA8GjE,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/tabs-drawer/index.tsx"],"names":[],"mappings":"AAcA,UAAU,gBAAgB;IACxB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,QAAA,MAAM,WAAW,GAAI,oBAA+B,gBAAgB,4CAsInE,CAAC;AAEF,eAAe,WAAW,CAAC"}