etudes 5.2.0 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/components/Accordion.js +171 -205
  2. package/components/BurgerButton.js +40 -94
  3. package/components/Carousel.js +87 -123
  4. package/components/Collection.js +84 -120
  5. package/components/Counter.js +32 -63
  6. package/components/CoverImage.js +24 -68
  7. package/components/CoverVideo.js +25 -69
  8. package/components/DebugConsole.js +27 -79
  9. package/components/Dial.js +28 -65
  10. package/components/Dropdown.js +86 -98
  11. package/components/FlatSVG.js +22 -71
  12. package/components/Image.js +21 -50
  13. package/components/MasonryGrid.js +122 -257
  14. package/components/Panorama.js +48 -92
  15. package/components/PanoramaSlider.js +57 -113
  16. package/components/RangeSlider.js +125 -182
  17. package/components/RotatingGallery.js +28 -59
  18. package/components/SelectableButton.js +10 -54
  19. package/components/Slider.js +108 -159
  20. package/components/StepwiseSlider.js +124 -176
  21. package/components/SwipeContainer.js +30 -73
  22. package/components/TextField.js +12 -49
  23. package/components/Video.js +31 -61
  24. package/components/WithTooltip.js +117 -111
  25. package/components/index.js +24 -0
  26. package/hooks/index.js +17 -0
  27. package/hooks/useClickOutsideEffect.js +8 -38
  28. package/hooks/useDragEffect.js +20 -53
  29. package/hooks/useDragValueEffect.js +31 -81
  30. package/hooks/useImageSize.js +16 -38
  31. package/hooks/useInterval.js +9 -41
  32. package/hooks/useLoadImageEffect.js +15 -48
  33. package/hooks/useLoadVideoMetadataEffect.js +15 -48
  34. package/hooks/useMounted.js +5 -25
  35. package/hooks/usePrevious.js +4 -9
  36. package/hooks/useRect.js +9 -29
  37. package/hooks/useResizeEffect.js +10 -44
  38. package/hooks/useScrollPositionEffect.js +19 -50
  39. package/hooks/useSearchParamState.js +12 -34
  40. package/hooks/useSize.js +9 -29
  41. package/hooks/useTimeout.js +8 -38
  42. package/hooks/useVideoSize.js +16 -38
  43. package/hooks/useViewportSize.js +7 -27
  44. package/operators/Conditional.js +6 -11
  45. package/operators/Each.js +6 -14
  46. package/operators/ExtractChild.js +9 -36
  47. package/operators/ExtractChildren.js +7 -34
  48. package/operators/Repeat.js +4 -37
  49. package/operators/index.js +5 -0
  50. package/package.json +27 -41
  51. package/providers/ScrollPositionProvider.js +37 -60
  52. package/providers/index.js +1 -0
  53. package/utils/asClassNameDict.js +1 -5
  54. package/utils/asComponentDict.js +11 -16
  55. package/utils/asStyleDict.js +1 -5
  56. package/utils/cloneStyledElement.js +14 -61
  57. package/utils/index.js +5 -22
  58. package/utils/styles.js +5 -21
  59. package/components/Accordion.d.ts +0 -219
  60. package/components/Accordion.js.map +0 -1
  61. package/components/BurgerButton.d.ts +0 -34
  62. package/components/BurgerButton.js.map +0 -1
  63. package/components/Carousel.d.ts +0 -53
  64. package/components/Carousel.js.map +0 -1
  65. package/components/Collection.d.ts +0 -171
  66. package/components/Collection.js.map +0 -1
  67. package/components/Counter.d.ts +0 -11
  68. package/components/Counter.js.map +0 -1
  69. package/components/CoverImage.d.ts +0 -28
  70. package/components/CoverImage.js.map +0 -1
  71. package/components/CoverVideo.d.ts +0 -28
  72. package/components/CoverVideo.js.map +0 -1
  73. package/components/DebugConsole.d.ts +0 -15
  74. package/components/DebugConsole.js.map +0 -1
  75. package/components/Dial.d.ts +0 -79
  76. package/components/Dial.js.map +0 -1
  77. package/components/Dropdown.d.ts +0 -109
  78. package/components/Dropdown.js.map +0 -1
  79. package/components/FlatSVG.d.ts +0 -72
  80. package/components/FlatSVG.js.map +0 -1
  81. package/components/Image.d.ts +0 -144
  82. package/components/Image.js.map +0 -1
  83. package/components/MasonryGrid.d.ts +0 -29
  84. package/components/MasonryGrid.js.map +0 -1
  85. package/components/Panorama.d.ts +0 -77
  86. package/components/Panorama.js.map +0 -1
  87. package/components/PanoramaSlider.d.ts +0 -71
  88. package/components/PanoramaSlider.js.map +0 -1
  89. package/components/RangeSlider.d.ts +0 -34
  90. package/components/RangeSlider.js.map +0 -1
  91. package/components/RotatingGallery.d.ts +0 -91
  92. package/components/RotatingGallery.js.map +0 -1
  93. package/components/SelectableButton.d.ts +0 -19
  94. package/components/SelectableButton.js.map +0 -1
  95. package/components/Slider.d.ts +0 -160
  96. package/components/Slider.js.map +0 -1
  97. package/components/StepwiseSlider.d.ts +0 -215
  98. package/components/StepwiseSlider.js.map +0 -1
  99. package/components/SwipeContainer.d.ts +0 -21
  100. package/components/SwipeContainer.js.map +0 -1
  101. package/components/TextField.d.ts +0 -21
  102. package/components/TextField.js.map +0 -1
  103. package/components/Video.d.ts +0 -38
  104. package/components/Video.js.map +0 -1
  105. package/components/WithTooltip.d.ts +0 -32
  106. package/components/WithTooltip.js.map +0 -1
  107. package/hooks/useClickOutsideEffect.d.ts +0 -2
  108. package/hooks/useClickOutsideEffect.js.map +0 -1
  109. package/hooks/useDragEffect.d.ts +0 -48
  110. package/hooks/useDragEffect.js.map +0 -1
  111. package/hooks/useDragValueEffect.d.ts +0 -56
  112. package/hooks/useDragValueEffect.js.map +0 -1
  113. package/hooks/useImageSize.d.ts +0 -21
  114. package/hooks/useImageSize.js.map +0 -1
  115. package/hooks/useInterval.d.ts +0 -18
  116. package/hooks/useInterval.js.map +0 -1
  117. package/hooks/useLoadImageEffect.d.ts +0 -43
  118. package/hooks/useLoadImageEffect.js.map +0 -1
  119. package/hooks/useLoadVideoMetadataEffect.d.ts +0 -35
  120. package/hooks/useLoadVideoMetadataEffect.js.map +0 -1
  121. package/hooks/useMounted.d.ts +0 -1
  122. package/hooks/useMounted.js.map +0 -1
  123. package/hooks/usePrevious.d.ts +0 -19
  124. package/hooks/usePrevious.js.map +0 -1
  125. package/hooks/useRect.d.ts +0 -11
  126. package/hooks/useRect.js.map +0 -1
  127. package/hooks/useResizeEffect.d.ts +0 -17
  128. package/hooks/useResizeEffect.js.map +0 -1
  129. package/hooks/useScrollPositionEffect.d.ts +0 -13
  130. package/hooks/useScrollPositionEffect.js.map +0 -1
  131. package/hooks/useSearchParamState.d.ts +0 -34
  132. package/hooks/useSearchParamState.js.map +0 -1
  133. package/hooks/useSize.d.ts +0 -10
  134. package/hooks/useSize.js.map +0 -1
  135. package/hooks/useTimeout.d.ts +0 -10
  136. package/hooks/useTimeout.js.map +0 -1
  137. package/hooks/useVideoSize.d.ts +0 -21
  138. package/hooks/useVideoSize.js.map +0 -1
  139. package/hooks/useViewportSize.d.ts +0 -7
  140. package/hooks/useViewportSize.js.map +0 -1
  141. package/operators/Conditional.d.ts +0 -5
  142. package/operators/Conditional.js.map +0 -1
  143. package/operators/Each.d.ts +0 -7
  144. package/operators/Each.js.map +0 -1
  145. package/operators/ExtractChild.d.ts +0 -8
  146. package/operators/ExtractChild.js.map +0 -1
  147. package/operators/ExtractChildren.d.ts +0 -6
  148. package/operators/ExtractChildren.js.map +0 -1
  149. package/operators/Repeat.d.ts +0 -11
  150. package/operators/Repeat.js.map +0 -1
  151. package/providers/ScrollPositionProvider.d.ts +0 -15
  152. package/providers/ScrollPositionProvider.js.map +0 -1
  153. package/utils/asClassNameDict.d.ts +0 -3
  154. package/utils/asClassNameDict.js.map +0 -1
  155. package/utils/asComponentDict.d.ts +0 -5
  156. package/utils/asComponentDict.js.map +0 -1
  157. package/utils/asStyleDict.d.ts +0 -4
  158. package/utils/asStyleDict.js.map +0 -1
  159. package/utils/cloneStyledElement.d.ts +0 -18
  160. package/utils/cloneStyledElement.js.map +0 -1
  161. package/utils/index.d.ts +0 -5
  162. package/utils/index.js.map +0 -1
  163. package/utils/styles.d.ts +0 -2
  164. package/utils/styles.js.map +0 -1
@@ -1,78 +1,36 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __rest = (this && this.__rest) || function (s, e) {
14
- var t = {};
15
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
- t[p] = s[p];
17
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
- t[p[i]] = s[p[i]];
21
- }
22
- return t;
23
- };
24
- var __read = (this && this.__read) || function (o, n) {
25
- var m = typeof Symbol === "function" && o[Symbol.iterator];
26
- if (!m) return o;
27
- var i = m.call(o), r, ar = [], e;
28
- try {
29
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
- }
31
- catch (error) { e = { error: error }; }
32
- finally {
33
- try {
34
- if (r && !r.done && (m = i["return"])) m.call(i);
35
- }
36
- finally { if (e) throw e.error; }
37
- }
38
- return ar;
39
- };
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.Panorama = void 0;
42
- var jsx_runtime_1 = require("react/jsx-runtime");
43
- var react_1 = require("react");
44
- var spase_1 = require("spase");
45
- var useDragValueEffect_1 = require("../hooks/useDragValueEffect");
46
- var useImageSize_1 = require("../hooks/useImageSize");
47
- var useRect_1 = require("../hooks/useRect");
48
- var utils_1 = require("../utils");
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef, useEffect, useRef, useState } from 'react';
3
+ import { Size } from 'spase';
4
+ import { useDragValueEffect } from '../hooks/useDragValueEffect.js';
5
+ import { useImageSize } from '../hooks/useImageSize.js';
6
+ import { useRect } from '../hooks/useRect.js';
7
+ import { asStyleDict } from '../utils/index.js';
49
8
  /**
50
9
  * A component containing a pannable 360° panorama image. The angle supports two-way binding.
51
10
  */
52
- exports.Panorama = (0, react_1.forwardRef)(function (_a, ref) {
53
- var _b = _a.angle, externalAngle = _b === void 0 ? 0 : _b, _c = _a.speed, speed = _c === void 0 ? 1 : _c, src = _a.src, _d = _a.zeroAnchor, zeroAnchor = _d === void 0 ? 0 : _d, onAngleChange = _a.onAngleChange, onPositionChange = _a.onPositionChange, onDragStart = _a.onDragStart, onDragEnd = _a.onDragEnd, onLoadImageStart = _a.onLoadImageStart, onLoadImageComplete = _a.onLoadImageComplete, onLoadImageError = _a.onLoadImageError, onImageSizeChange = _a.onImageSizeChange, props = __rest(_a, ["angle", "speed", "src", "zeroAnchor", "onAngleChange", "onPositionChange", "onDragStart", "onDragEnd", "onLoadImageStart", "onLoadImageComplete", "onLoadImageError", "onImageSizeChange"]);
54
- var mapDragPositionToDisplacement = function (currentPosition, dx, dy) {
55
- var newDisplacement = currentPosition - dx * speed;
11
+ export const Panorama = forwardRef(({ angle: externalAngle = 0, speed = 1, src, zeroAnchor = 0, onAngleChange, onPositionChange, onDragStart, onDragEnd, onLoadImageStart, onLoadImageComplete, onLoadImageError, onImageSizeChange, ...props }, ref) => {
12
+ const mapDragPositionToDisplacement = (currentPosition, dx, dy) => {
13
+ const newDisplacement = currentPosition - dx * speed;
56
14
  return newDisplacement;
57
15
  };
58
- var bodyRef = (0, react_1.useRef)(null);
59
- var bodyRect = (0, useRect_1.useRect)(bodyRef);
60
- var imageSize = (0, useImageSize_1.useImageSize)({ src: src }, {
16
+ const bodyRef = useRef(null);
17
+ const bodyRect = useRect(bodyRef);
18
+ const imageSize = useImageSize({ src }, {
61
19
  onLoadStart: onLoadImageStart,
62
20
  onLoadComplete: onLoadImageComplete,
63
21
  onLoadError: onLoadImageError,
64
22
  });
65
- var _e = __read((0, react_1.useState)(externalAngle), 2), angle = _e[0], setAngle = _e[1];
66
- var _f = (0, useDragValueEffect_1.useDragValueEffect)(bodyRef, {
23
+ const [angle, setAngle] = useState(externalAngle);
24
+ const { isDragging: [isDragging], value: [displacement, setDisplacement] } = useDragValueEffect(bodyRef, {
67
25
  initialValue: 0,
68
26
  transform: mapDragPositionToDisplacement,
69
- onDragStart: onDragStart,
70
- onDragEnd: onDragEnd,
71
- }), _g = __read(_f.isDragging, 1), isDragging = _g[0], _h = __read(_f.value, 2), displacement = _h[0], setDisplacement = _h[1];
72
- (0, react_1.useEffect)(function () {
27
+ onDragStart,
28
+ onDragEnd,
29
+ });
30
+ useEffect(() => {
73
31
  if (isDragging || !imageSize)
74
32
  return;
75
- var newDisplacement = getDisplacementFromAngle(externalAngle, imageSize, bodyRect.size, zeroAnchor);
33
+ const newDisplacement = getDisplacementFromAngle(externalAngle, imageSize, bodyRect.size, zeroAnchor);
76
34
  if (newDisplacement !== displacement) {
77
35
  setDisplacement(newDisplacement);
78
36
  }
@@ -80,31 +38,30 @@ exports.Panorama = (0, react_1.forwardRef)(function (_a, ref) {
80
38
  setAngle(externalAngle);
81
39
  }
82
40
  }, [externalAngle, imageSize, bodyRect.width, bodyRect.height, zeroAnchor]);
83
- (0, react_1.useEffect)(function () {
41
+ useEffect(() => {
84
42
  if (!isDragging || !imageSize)
85
43
  return;
86
- var newAngle = getAngleFromDisplacement(displacement, imageSize, bodyRect.size, zeroAnchor);
44
+ const newAngle = getAngleFromDisplacement(displacement, imageSize, bodyRect.size, zeroAnchor);
87
45
  if (angle !== newAngle) {
88
46
  setAngle(newAngle);
89
47
  }
90
48
  }, [displacement, imageSize, bodyRect.width, bodyRect.height, zeroAnchor]);
91
- (0, react_1.useEffect)(function () {
92
- onAngleChange === null || onAngleChange === void 0 ? void 0 : onAngleChange(angle, isDragging);
93
- onPositionChange === null || onPositionChange === void 0 ? void 0 : onPositionChange(angle / 360, isDragging);
49
+ useEffect(() => {
50
+ onAngleChange?.(angle, isDragging);
51
+ onPositionChange?.(angle / 360, isDragging);
94
52
  }, [angle]);
95
- (0, react_1.useEffect)(function () {
96
- onImageSizeChange === null || onImageSizeChange === void 0 ? void 0 : onImageSizeChange(imageSize);
97
- }, [imageSize === null || imageSize === void 0 ? void 0 : imageSize.width, imageSize === null || imageSize === void 0 ? void 0 : imageSize.height]);
98
- var fixedStyles = getFixedStyles({ src: src, displacement: displacement });
99
- return ((0, jsx_runtime_1.jsx)("div", __assign({}, props, { ref: ref, "data-component": 'panorama', children: (0, jsx_runtime_1.jsx)("div", { ref: bodyRef, style: fixedStyles.body }) })));
53
+ useEffect(() => {
54
+ onImageSizeChange?.(imageSize);
55
+ }, [imageSize?.width, imageSize?.height]);
56
+ const fixedStyles = getFixedStyles({ src, displacement });
57
+ return (_jsx("div", { ...props, ref: ref, "data-component": 'panorama', children: _jsx("div", { ref: bodyRef, style: fixedStyles.body }) }));
100
58
  });
101
- Object.defineProperty(exports.Panorama, 'displayName', { value: 'Panorama', writable: false });
102
- function getFixedStyles(_a) {
103
- var _b = _a.src, src = _b === void 0 ? '' : _b, _c = _a.displacement, displacement = _c === void 0 ? NaN : _c;
104
- return (0, utils_1.asStyleDict)({
59
+ Object.defineProperty(Panorama, 'displayName', { value: 'Panorama', writable: false });
60
+ function getFixedStyles({ src = '', displacement = NaN }) {
61
+ return asStyleDict({
105
62
  body: {
106
- backgroundImage: "url(".concat(src, ")"),
107
- backgroundPositionX: "".concat(-displacement, "px"),
63
+ backgroundImage: `url(${src})`,
64
+ backgroundPositionX: `${-displacement}px`,
108
65
  backgroundRepeat: 'repeat',
109
66
  backgroundSize: 'auto 100%',
110
67
  height: '100%',
@@ -114,27 +71,26 @@ function getFixedStyles(_a) {
114
71
  });
115
72
  }
116
73
  function getFilledImageSize(originalSize, sizeToFill) {
117
- var originalWidth = originalSize.width, originalHeight = originalSize.height;
118
- var filledHeignt = sizeToFill.height;
74
+ const { width: originalWidth, height: originalHeight } = originalSize;
75
+ const { height: filledHeignt } = sizeToFill;
119
76
  if (originalHeight <= 0)
120
- return new spase_1.Size();
121
- var aspectRatio = filledHeignt / originalHeight;
122
- var filledWidth = aspectRatio * originalWidth;
123
- return new spase_1.Size([filledWidth, filledHeignt]);
77
+ return new Size();
78
+ const aspectRatio = filledHeignt / originalHeight;
79
+ const filledWidth = aspectRatio * originalWidth;
80
+ return new Size([filledWidth, filledHeignt]);
124
81
  }
125
82
  function getDisplacementFromAngle(angle, originalImageSize, componentSize, zeroAnchor) {
126
- var imageWidth = getFilledImageSize(originalImageSize, componentSize).width;
127
- var componentWidth = componentSize.width;
128
- var offset = componentWidth * zeroAnchor;
83
+ const { width: imageWidth } = getFilledImageSize(originalImageSize, componentSize);
84
+ const { width: componentWidth } = componentSize;
85
+ const offset = componentWidth * zeroAnchor;
129
86
  return angle / 360 * imageWidth - offset;
130
87
  }
131
88
  function getAngleFromDisplacement(displacement, originalImageSize, componentSize, zeroAnchor) {
132
- var imageWidth = getFilledImageSize(originalImageSize, componentSize).width;
133
- var componentWidth = componentSize.width;
134
- var offset = componentWidth * zeroAnchor;
135
- var angle = (displacement + offset) % imageWidth / imageWidth * 360;
89
+ const { width: imageWidth } = getFilledImageSize(originalImageSize, componentSize);
90
+ const { width: componentWidth } = componentSize;
91
+ const offset = componentWidth * zeroAnchor;
92
+ let angle = (displacement + offset) % imageWidth / imageWidth * 360;
136
93
  while (angle < 0)
137
94
  angle += 360;
138
95
  return angle;
139
96
  }
140
- //# sourceMappingURL=Panorama.js.map
@@ -1,54 +1,10 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __rest = (this && this.__rest) || function (s, e) {
14
- var t = {};
15
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
- t[p] = s[p];
17
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
- t[p[i]] = s[p[i]];
21
- }
22
- return t;
23
- };
24
- var __read = (this && this.__read) || function (o, n) {
25
- var m = typeof Symbol === "function" && o[Symbol.iterator];
26
- if (!m) return o;
27
- var i = m.call(o), r, ar = [], e;
28
- try {
29
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
- }
31
- catch (error) { e = { error: error }; }
32
- finally {
33
- try {
34
- if (r && !r.done && (m = i["return"])) m.call(i);
35
- }
36
- finally { if (e) throw e.error; }
37
- }
38
- return ar;
39
- };
40
- var __importDefault = (this && this.__importDefault) || function (mod) {
41
- return (mod && mod.__esModule) ? mod : { "default": mod };
42
- };
43
- Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.PanoramaSliderIndicator = exports.PanoramaSliderReticle = exports.PanoramaSliderTrack = exports.PanoramaSlider = void 0;
45
- var jsx_runtime_1 = require("react/jsx-runtime");
46
- var clsx_1 = __importDefault(require("clsx"));
47
- var react_1 = require("react");
48
- var spase_1 = require("spase");
49
- var useRect_1 = require("../hooks/useRect");
50
- var utils_1 = require("../utils");
51
- var Panorama_1 = require("./Panorama");
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import clsx from 'clsx';
3
+ import { forwardRef, useRef, useState } from 'react';
4
+ import { Rect } from 'spase';
5
+ import { useRect } from '../hooks/useRect.js';
6
+ import { asComponentDict, asStyleDict, cloneStyledElement, styles } from '../utils/index.js';
7
+ import { Panorama } from './Panorama.js';
52
8
  /**
53
9
  * A slider for a {@link Panorama} component.
54
10
  *
@@ -58,80 +14,68 @@ var Panorama_1 = require("./Panorama");
58
14
  * backing {@link Panorama}.
59
15
  * @exports PanoramaSliderTrack The slide track.
60
16
  */
61
- exports.PanoramaSlider = (0, react_1.forwardRef)(function (_a, ref) {
62
- var _b, _c, _d, _e;
63
- var className = _a.className, style = _a.style, _f = _a.angle, angle = _f === void 0 ? 0 : _f, _g = _a.autoDimension, autoDimension = _g === void 0 ? 'width' : _g, children = _a.children, fov = _a.fov, _h = _a.speed, speed = _h === void 0 ? 1 : _h, src = _a.src, _j = _a.usesDefaultStyles, usesDefaultStyles = _j === void 0 ? false : _j, viewportSize = _a.viewportSize, _k = _a.zeroAnchor, zeroAnchor = _k === void 0 ? 0 : _k, onAngleChange = _a.onAngleChange, onDragEnd = _a.onDragEnd, onDragStart = _a.onDragStart, onLoadImageComplete = _a.onLoadImageComplete, onLoadImageError = _a.onLoadImageError, onLoadImageStart = _a.onLoadImageStart, onImageSizeChange = _a.onImageSizeChange, onPositionChange = _a.onPositionChange, props = __rest(_a, ["className", "style", "angle", "autoDimension", "children", "fov", "speed", "src", "usesDefaultStyles", "viewportSize", "zeroAnchor", "onAngleChange", "onDragEnd", "onDragStart", "onLoadImageComplete", "onLoadImageError", "onLoadImageStart", "onImageSizeChange", "onPositionChange"]);
64
- var getAspectRatio = function () {
17
+ export const PanoramaSlider = forwardRef(({ className, style, angle = 0, autoDimension = 'width', children, fov, speed = 1, src, usesDefaultStyles = false, viewportSize, zeroAnchor = 0, onAngleChange, onDragEnd, onDragStart, onLoadImageComplete, onLoadImageError, onLoadImageStart, onImageSizeChange, onPositionChange, ...props }, ref) => {
18
+ const getAspectRatio = () => {
65
19
  if (!imageSize)
66
20
  return 0;
67
- var width = imageSize.width, height = imageSize.height;
21
+ const { width, height } = imageSize;
68
22
  if (height === 0)
69
23
  return 0;
70
24
  return width / height;
71
25
  };
72
- var getReticleWidth = function () {
73
- var deg = Math.min(360, Math.max(0, fov !== null && fov !== void 0 ? fov : (viewportSize ? viewportSize.width / (viewportSize.height * aspectRatio) * 360 : 0)));
26
+ const getReticleWidth = () => {
27
+ const deg = Math.min(360, Math.max(0, fov ?? (viewportSize ? viewportSize.width / (viewportSize.height * aspectRatio) * 360 : 0)));
74
28
  return panoramaRect.width * (deg / 360);
75
29
  };
76
- var getAdjustedZeroAnchor = function () {
30
+ const getAdjustedZeroAnchor = () => {
77
31
  if (panoramaRect.width <= 0)
78
32
  return zeroAnchor;
79
33
  return ((panoramaRect.width - reticleWidth) * 0.5 + zeroAnchor * reticleWidth) / panoramaRect.width;
80
34
  };
81
- var dragStartHandler = function () {
35
+ const dragStartHandler = () => {
82
36
  setIsDragging(true);
83
- onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart();
37
+ onDragStart?.();
84
38
  };
85
- var dragEndHandler = function () {
39
+ const dragEndHandler = () => {
86
40
  setIsDragging(false);
87
- onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd();
41
+ onDragEnd?.();
88
42
  };
89
- var panoramaRef = (0, react_1.useRef)(null);
90
- var panoramaRect = (0, useRect_1.useRect)(panoramaRef);
91
- var _l = __read((0, react_1.useState)(), 2), imageSize = _l[0], setImageSize = _l[1];
92
- var _m = __read((0, react_1.useState)(false), 2), isDragging = _m[0], setIsDragging = _m[1];
93
- var aspectRatio = getAspectRatio();
94
- var reticleWidth = getReticleWidth();
95
- var adjustedZeroAnchor = getAdjustedZeroAnchor();
96
- var components = (0, utils_1.asComponentDict)(children, {
97
- track: exports.PanoramaSliderTrack,
98
- reticle: exports.PanoramaSliderReticle,
99
- indicator: exports.PanoramaSliderIndicator,
43
+ const panoramaRef = useRef(null);
44
+ const panoramaRect = useRect(panoramaRef);
45
+ const [imageSize, setImageSize] = useState();
46
+ const [isDragging, setIsDragging] = useState(false);
47
+ const aspectRatio = getAspectRatio();
48
+ const reticleWidth = getReticleWidth();
49
+ const adjustedZeroAnchor = getAdjustedZeroAnchor();
50
+ const components = asComponentDict(children, {
51
+ track: PanoramaSliderTrack,
52
+ reticle: PanoramaSliderReticle,
53
+ indicator: PanoramaSliderIndicator,
100
54
  });
101
- var fixedStyles = getFixedStyles({ autoDimension: autoDimension, panoramaRect: panoramaRect, aspectRatio: aspectRatio, reticleWidth: reticleWidth });
102
- var defaultStyles = usesDefaultStyles ? getDefaultStyles({ isDragging: isDragging }) : undefined;
103
- return ((0, jsx_runtime_1.jsxs)("div", __assign({}, props, { ref: ref, className: (0, clsx_1.default)(className, { dragging: isDragging }), "data-component": 'panorama-slider', style: (0, utils_1.styles)(style, fixedStyles.root), children: [(0, jsx_runtime_1.jsx)(Panorama_1.Panorama, { ref: panoramaRef, angle: angle, speed: speed, src: src, style: fixedStyles.panorama, zeroAnchor: adjustedZeroAnchor, onAngleChange: onAngleChange, onDragEnd: dragEndHandler, onDragStart: dragStartHandler, onImageSizeChange: setImageSize, onLoadImageComplete: onLoadImageComplete, onLoadImageError: onLoadImageError, onLoadImageStart: onLoadImageStart, onPositionChange: onPositionChange }), (0, jsx_runtime_1.jsx)("div", { style: fixedStyles.body, children: (0, jsx_runtime_1.jsxs)("div", { style: fixedStyles.controls, children: [(0, utils_1.cloneStyledElement)((_b = components.track) !== null && _b !== void 0 ? _b : (0, jsx_runtime_1.jsx)(exports.PanoramaSliderTrack, { style: defaultStyles === null || defaultStyles === void 0 ? void 0 : defaultStyles.track }), {
104
- style: (0, utils_1.styles)(fixedStyles.track),
105
- }), (0, utils_1.cloneStyledElement)((_c = components.reticle) !== null && _c !== void 0 ? _c : (0, jsx_runtime_1.jsx)(exports.PanoramaSliderReticle, { style: defaultStyles === null || defaultStyles === void 0 ? void 0 : defaultStyles.reticle }), {
106
- style: (0, utils_1.styles)(fixedStyles.reticle),
107
- }), (0, utils_1.cloneStyledElement)((_d = components.track) !== null && _d !== void 0 ? _d : (0, jsx_runtime_1.jsx)(exports.PanoramaSliderTrack, { style: defaultStyles === null || defaultStyles === void 0 ? void 0 : defaultStyles.track }), {
108
- style: (0, utils_1.styles)(fixedStyles.track),
109
- })] }) }), (0, utils_1.cloneStyledElement)((_e = components.indicator) !== null && _e !== void 0 ? _e : (0, jsx_runtime_1.jsx)(exports.PanoramaSliderIndicator, { style: defaultStyles === null || defaultStyles === void 0 ? void 0 : defaultStyles.indicator }), {
110
- style: (0, utils_1.styles)(fixedStyles.indicator),
111
- })] })));
112
- });
113
- Object.defineProperty(exports.PanoramaSlider, 'displayName', { value: 'PanoramaSlider', writable: false });
114
- exports.PanoramaSliderTrack = (0, react_1.forwardRef)(function (_a, ref) {
115
- var props = __rest(_a, []);
116
- return (0, jsx_runtime_1.jsx)("div", __assign({}, props, { ref: ref, "data-child": 'track' }));
117
- });
118
- exports.PanoramaSliderReticle = (0, react_1.forwardRef)(function (_a, ref) {
119
- var props = __rest(_a, []);
120
- return (0, jsx_runtime_1.jsx)("div", __assign({}, props, { ref: ref, "data-child": 'reticle' }));
55
+ const fixedStyles = getFixedStyles({ autoDimension, panoramaRect, aspectRatio, reticleWidth });
56
+ const defaultStyles = usesDefaultStyles ? getDefaultStyles({ isDragging }) : undefined;
57
+ return (_jsxs("div", { ...props, ref: ref, className: clsx(className, { dragging: isDragging }), "data-component": 'panorama-slider', style: styles(style, fixedStyles.root), children: [_jsx(Panorama, { ref: panoramaRef, angle: angle, speed: speed, src: src, style: fixedStyles.panorama, zeroAnchor: adjustedZeroAnchor, onAngleChange: onAngleChange, onDragEnd: dragEndHandler, onDragStart: dragStartHandler, onImageSizeChange: setImageSize, onLoadImageComplete: onLoadImageComplete, onLoadImageError: onLoadImageError, onLoadImageStart: onLoadImageStart, onPositionChange: onPositionChange }), _jsx("div", { style: fixedStyles.body, children: _jsxs("div", { style: fixedStyles.controls, children: [cloneStyledElement(components.track ?? _jsx(PanoramaSliderTrack, { style: defaultStyles?.track }), {
58
+ style: styles(fixedStyles.track),
59
+ }), cloneStyledElement(components.reticle ?? _jsx(PanoramaSliderReticle, { style: defaultStyles?.reticle }), {
60
+ style: styles(fixedStyles.reticle),
61
+ }), cloneStyledElement(components.track ?? _jsx(PanoramaSliderTrack, { style: defaultStyles?.track }), {
62
+ style: styles(fixedStyles.track),
63
+ })] }) }), cloneStyledElement(components.indicator ?? _jsx(PanoramaSliderIndicator, { style: defaultStyles?.indicator }), {
64
+ style: styles(fixedStyles.indicator),
65
+ })] }));
121
66
  });
122
- exports.PanoramaSliderIndicator = (0, react_1.forwardRef)(function (_a, ref) {
123
- var props = __rest(_a, []);
124
- return (0, jsx_runtime_1.jsx)("div", __assign({}, props, { ref: ref, "data-child": 'indicator' }));
125
- });
126
- function getDefaultStyles(_a) {
127
- var _b = _a.isDragging, isDragging = _b === void 0 ? false : _b;
128
- return (0, utils_1.asStyleDict)({
67
+ Object.defineProperty(PanoramaSlider, 'displayName', { value: 'PanoramaSlider', writable: false });
68
+ export const PanoramaSliderTrack = forwardRef(({ ...props }, ref) => _jsx("div", { ...props, ref: ref, "data-child": 'track' }));
69
+ export const PanoramaSliderReticle = forwardRef(({ ...props }, ref) => _jsx("div", { ...props, ref: ref, "data-child": 'reticle' }));
70
+ export const PanoramaSliderIndicator = forwardRef(({ ...props }, ref) => _jsx("div", { ...props, ref: ref, "data-child": 'indicator' }));
71
+ function getDefaultStyles({ isDragging = false }) {
72
+ return asStyleDict({
129
73
  track: {
130
74
  background: 'rgba(0, 0, 0, .7)',
131
75
  height: '100%',
132
76
  },
133
77
  reticle: {
134
- background: "rgba(0, 0, 0, ".concat(isDragging ? 0 : 0.3, ")"),
78
+ background: `rgba(0, 0, 0, ${isDragging ? 0 : 0.3})`,
135
79
  flex: '0 0 auto',
136
80
  height: '100%',
137
81
  transitionDuration: '100ms',
@@ -154,14 +98,15 @@ function getDefaultStyles(_a) {
154
98
  },
155
99
  });
156
100
  }
157
- function getFixedStyles(_a) {
158
- var _b = _a.autoDimension, autoDimension = _b === void 0 ? 'width' : _b, _c = _a.panoramaRect, panoramaRect = _c === void 0 ? new spase_1.Rect() : _c, _d = _a.aspectRatio, aspectRatio = _d === void 0 ? 0 : _d, _e = _a.reticleWidth, reticleWidth = _e === void 0 ? 0 : _e;
159
- return (0, utils_1.asStyleDict)({
160
- root: __assign({}, autoDimension === 'width' ? {
161
- width: "".concat(panoramaRect.height * aspectRatio, "px"),
162
- } : {
163
- height: "".concat(panoramaRect.width / aspectRatio, "px"),
164
- }),
101
+ function getFixedStyles({ autoDimension = 'width', panoramaRect = new Rect(), aspectRatio = 0, reticleWidth = 0 }) {
102
+ return asStyleDict({
103
+ root: {
104
+ ...autoDimension === 'width' ? {
105
+ width: `${panoramaRect.height * aspectRatio}px`,
106
+ } : {
107
+ height: `${panoramaRect.width / aspectRatio}px`,
108
+ },
109
+ },
165
110
  body: {
166
111
  height: '100%',
167
112
  left: '0',
@@ -190,11 +135,10 @@ function getFixedStyles(_a) {
190
135
  flex: '1 0 auto',
191
136
  },
192
137
  reticle: {
193
- width: "".concat(reticleWidth, "px"),
138
+ width: `${reticleWidth}px`,
194
139
  },
195
140
  indicator: {
196
- width: "".concat(reticleWidth, "px"),
141
+ width: `${reticleWidth}px`,
197
142
  },
198
143
  });
199
144
  }
200
- //# sourceMappingURL=PanoramaSlider.js.map