eli-video-interview 1.2.39 → 1.2.40-alpha.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 (223) hide show
  1. package/esm/components/react-photo-view/Photo.css +14 -0
  2. package/esm/components/react-photo-view/Photo.d.ts +18 -0
  3. package/esm/components/react-photo-view/Photo.js +54 -0
  4. package/esm/components/react-photo-view/PhotoBox.css +18 -0
  5. package/esm/components/react-photo-view/PhotoBox.d.ts +22 -0
  6. package/esm/components/react-photo-view/PhotoBox.js +302 -0
  7. package/esm/components/react-photo-view/PhotoPage.d.ts +9 -0
  8. package/esm/components/react-photo-view/PhotoPage.js +77 -0
  9. package/esm/components/react-photo-view/PhotoProvider.d.ts +14 -0
  10. package/esm/components/react-photo-view/PhotoProvider.js +98 -0
  11. package/esm/components/react-photo-view/PhotoSlider.css +125 -0
  12. package/esm/components/react-photo-view/PhotoSlider.d.ts +12 -0
  13. package/esm/components/react-photo-view/PhotoSlider.js +262 -0
  14. package/esm/components/react-photo-view/PhotoView.d.ts +30 -0
  15. package/esm/components/react-photo-view/PhotoView.js +48 -0
  16. package/esm/components/react-photo-view/components/ArrowLeft.d.ts +3 -0
  17. package/esm/components/react-photo-view/components/ArrowLeft.js +18 -0
  18. package/esm/components/react-photo-view/components/ArrowRight.d.ts +3 -0
  19. package/esm/components/react-photo-view/components/ArrowRight.js +18 -0
  20. package/esm/components/react-photo-view/components/CloseIcon.d.ts +3 -0
  21. package/esm/components/react-photo-view/components/CloseIcon.js +16 -0
  22. package/esm/components/react-photo-view/components/PreventScroll.d.ts +1 -0
  23. package/esm/components/react-photo-view/components/PreventScroll.js +12 -0
  24. package/esm/components/react-photo-view/components/SlidePortal.css +10 -0
  25. package/esm/components/react-photo-view/components/SlidePortal.d.ts +7 -0
  26. package/esm/components/react-photo-view/components/SlidePortal.js +30 -0
  27. package/esm/components/react-photo-view/components/Spinner.css +23 -0
  28. package/esm/components/react-photo-view/components/Spinner.d.ts +4 -0
  29. package/esm/components/react-photo-view/components/Spinner.js +29 -0
  30. package/esm/components/react-photo-view/hooks/useAdjacentImages.d.ts +5 -0
  31. package/esm/components/react-photo-view/hooks/useAdjacentImages.js +14 -0
  32. package/esm/components/react-photo-view/hooks/useAnimationOrigin.d.ts +6 -0
  33. package/esm/components/react-photo-view/hooks/useAnimationOrigin.js +72 -0
  34. package/esm/components/react-photo-view/hooks/useAnimationPosition.d.ts +2 -0
  35. package/esm/components/react-photo-view/hooks/useAnimationPosition.js +28 -0
  36. package/esm/components/react-photo-view/hooks/useAnimationVisible.d.ts +6 -0
  37. package/esm/components/react-photo-view/hooks/useAnimationVisible.js +49 -0
  38. package/esm/components/react-photo-view/hooks/useContinuousTap.d.ts +8 -0
  39. package/esm/components/react-photo-view/hooks/useContinuousTap.js +36 -0
  40. package/esm/components/react-photo-view/hooks/useDebounceCallback.d.ts +10 -0
  41. package/esm/components/react-photo-view/hooks/useDebounceCallback.js +48 -0
  42. package/esm/components/react-photo-view/hooks/useEventListener.d.ts +1 -0
  43. package/esm/components/react-photo-view/hooks/useEventListener.js +18 -0
  44. package/esm/components/react-photo-view/hooks/useForkedVariable.d.ts +5 -0
  45. package/esm/components/react-photo-view/hooks/useForkedVariable.js +17 -0
  46. package/esm/components/react-photo-view/hooks/useInitial.d.ts +1 -0
  47. package/esm/components/react-photo-view/hooks/useInitial.js +9 -0
  48. package/esm/components/react-photo-view/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
  49. package/esm/components/react-photo-view/hooks/useIsomorphicLayoutEffect.js +3 -0
  50. package/esm/components/react-photo-view/hooks/useMethods.d.ts +4 -0
  51. package/esm/components/react-photo-view/hooks/useMethods.js +35 -0
  52. package/esm/components/react-photo-view/hooks/useMountedRef.d.ts +3 -0
  53. package/esm/components/react-photo-view/hooks/useMountedRef.js +12 -0
  54. package/esm/components/react-photo-view/hooks/useScrollPosition.d.ts +4 -0
  55. package/esm/components/react-photo-view/hooks/useScrollPosition.js +157 -0
  56. package/esm/components/react-photo-view/hooks/useSetState.d.ts +2 -0
  57. package/esm/components/react-photo-view/hooks/useSetState.js +15 -0
  58. package/esm/components/react-photo-view/hooks/useTargetScale.d.ts +4 -0
  59. package/esm/components/react-photo-view/hooks/useTargetScale.js +70 -0
  60. package/esm/components/react-photo-view/index.d.ts +4 -0
  61. package/esm/components/react-photo-view/index.js +4 -0
  62. package/esm/components/react-photo-view/photo-context.d.ts +11 -0
  63. package/esm/components/react-photo-view/photo-context.js +2 -0
  64. package/esm/components/react-photo-view/types.d.ts +196 -0
  65. package/esm/components/react-photo-view/types.js +1 -0
  66. package/esm/components/react-photo-view/utils/edgeHandle.d.ts +15 -0
  67. package/esm/components/react-photo-view/utils/edgeHandle.js +40 -0
  68. package/esm/components/react-photo-view/utils/getMultipleTouchPosition.d.ts +5 -0
  69. package/esm/components/react-photo-view/utils/getMultipleTouchPosition.js +11 -0
  70. package/esm/components/react-photo-view/utils/getPositionOnMoveOrScale.d.ts +9 -0
  71. package/esm/components/react-photo-view/utils/getPositionOnMoveOrScale.js +31 -0
  72. package/esm/components/react-photo-view/utils/getRotateSize.d.ts +4 -0
  73. package/esm/components/react-photo-view/utils/getRotateSize.js +11 -0
  74. package/esm/components/react-photo-view/utils/getSuitableImageSize.d.ts +10 -0
  75. package/esm/components/react-photo-view/utils/getSuitableImageSize.js +42 -0
  76. package/esm/components/react-photo-view/utils/isTouchDevice.d.ts +5 -0
  77. package/esm/components/react-photo-view/utils/isTouchDevice.js +5 -0
  78. package/esm/components/react-photo-view/utils/limitTarget.d.ts +5 -0
  79. package/esm/components/react-photo-view/utils/limitTarget.js +12 -0
  80. package/esm/components/react-photo-view/variables.d.ts +48 -0
  81. package/esm/components/react-photo-view/variables.js +48 -0
  82. package/esm/constants/ai-question.d.ts +9 -0
  83. package/esm/constants/ai-question.js +33 -4
  84. package/esm/enum/ai-question.d.ts +5 -2
  85. package/esm/enum/ai-question.js +3 -0
  86. package/esm/modules/ai-ability/Root.js +15 -4
  87. package/esm/modules/ai-ability-select/Root.js +2 -2
  88. package/esm/modules/ai-ability-select/interface.d.ts +1 -0
  89. package/esm/modules/ai-question/components/BootVideo/index.js +1 -1
  90. package/esm/modules/ai-question/components/QuestionModel/Item.js +14 -9
  91. package/esm/modules/ai-question/components/QuestionTemplate/AiEvaluation.js +10 -5
  92. package/esm/modules/ai-question/components/QuestionUpdate/Chioce.d.ts +17 -0
  93. package/esm/modules/ai-question/components/QuestionUpdate/Chioce.js +96 -0
  94. package/esm/modules/ai-question/components/QuestionUpdate/Form.js +42 -12
  95. package/esm/modules/ai-question/components/QuestionUpdate/RandomQuestion.js +14 -4
  96. package/esm/modules/ai-question/components/QuestionUpdate/const.js +4 -0
  97. package/esm/modules/ai-question/components/QuestionUpdate/index.js +12 -14
  98. package/esm/modules/ai-question/components/QuestionUpdate/interface.d.ts +8 -0
  99. package/esm/modules/ai-question/components/QuestionUpdate/styled.d.ts +15 -0
  100. package/esm/modules/ai-question/components/QuestionUpdate/styled.js +53 -1
  101. package/esm/modules/ai-report/components/ScoreReport/Score.js +4 -1
  102. package/esm/modules/ai-report/components/VideoQuestion/BodyImages.d.ts +7 -0
  103. package/esm/modules/ai-report/components/VideoQuestion/BodyImages.js +40 -0
  104. package/esm/modules/ai-report/components/VideoQuestion/QuestionItem.js +5 -3
  105. package/esm/modules/ai-report/components/VideoQuestion/SingleChoice.d.ts +8 -0
  106. package/esm/modules/ai-report/components/VideoQuestion/SingleChoice.js +25 -0
  107. package/esm/modules/ai-report/components/VideoQuestion/styled.d.ts +1 -0
  108. package/esm/modules/ai-report/components/VideoQuestion/styled.js +7 -1
  109. package/esm/modules/ai-report/interface.d.ts +19 -0
  110. package/esm/services/ai-ability.d.ts +1 -1
  111. package/esm/services/ai-ability.js +1 -1
  112. package/lib/components/react-photo-view/Photo.css +14 -0
  113. package/lib/components/react-photo-view/Photo.d.ts +18 -0
  114. package/lib/components/react-photo-view/Photo.js +60 -0
  115. package/lib/components/react-photo-view/PhotoBox.css +18 -0
  116. package/lib/components/react-photo-view/PhotoBox.d.ts +22 -0
  117. package/lib/components/react-photo-view/PhotoBox.js +308 -0
  118. package/lib/components/react-photo-view/PhotoPage.d.ts +9 -0
  119. package/lib/components/react-photo-view/PhotoPage.js +79 -0
  120. package/lib/components/react-photo-view/PhotoProvider.d.ts +14 -0
  121. package/lib/components/react-photo-view/PhotoProvider.js +104 -0
  122. package/lib/components/react-photo-view/PhotoSlider.css +125 -0
  123. package/lib/components/react-photo-view/PhotoSlider.d.ts +12 -0
  124. package/lib/components/react-photo-view/PhotoSlider.js +268 -0
  125. package/lib/components/react-photo-view/PhotoView.d.ts +30 -0
  126. package/lib/components/react-photo-view/PhotoView.js +53 -0
  127. package/lib/components/react-photo-view/components/ArrowLeft.d.ts +3 -0
  128. package/lib/components/react-photo-view/components/ArrowLeft.js +20 -0
  129. package/lib/components/react-photo-view/components/ArrowRight.d.ts +3 -0
  130. package/lib/components/react-photo-view/components/ArrowRight.js +20 -0
  131. package/lib/components/react-photo-view/components/CloseIcon.d.ts +3 -0
  132. package/lib/components/react-photo-view/components/CloseIcon.js +18 -0
  133. package/lib/components/react-photo-view/components/PreventScroll.d.ts +1 -0
  134. package/lib/components/react-photo-view/components/PreventScroll.js +15 -0
  135. package/lib/components/react-photo-view/components/SlidePortal.css +10 -0
  136. package/lib/components/react-photo-view/components/SlidePortal.d.ts +7 -0
  137. package/lib/components/react-photo-view/components/SlidePortal.js +32 -0
  138. package/lib/components/react-photo-view/components/Spinner.css +23 -0
  139. package/lib/components/react-photo-view/components/Spinner.d.ts +4 -0
  140. package/lib/components/react-photo-view/components/Spinner.js +31 -0
  141. package/lib/components/react-photo-view/hooks/useAdjacentImages.d.ts +5 -0
  142. package/lib/components/react-photo-view/hooks/useAdjacentImages.js +17 -0
  143. package/lib/components/react-photo-view/hooks/useAnimationOrigin.d.ts +6 -0
  144. package/lib/components/react-photo-view/hooks/useAnimationOrigin.js +78 -0
  145. package/lib/components/react-photo-view/hooks/useAnimationPosition.d.ts +2 -0
  146. package/lib/components/react-photo-view/hooks/useAnimationPosition.js +34 -0
  147. package/lib/components/react-photo-view/hooks/useAnimationVisible.d.ts +6 -0
  148. package/lib/components/react-photo-view/hooks/useAnimationVisible.js +55 -0
  149. package/lib/components/react-photo-view/hooks/useContinuousTap.d.ts +8 -0
  150. package/lib/components/react-photo-view/hooks/useContinuousTap.js +42 -0
  151. package/lib/components/react-photo-view/hooks/useDebounceCallback.d.ts +10 -0
  152. package/lib/components/react-photo-view/hooks/useDebounceCallback.js +51 -0
  153. package/lib/components/react-photo-view/hooks/useEventListener.d.ts +1 -0
  154. package/lib/components/react-photo-view/hooks/useEventListener.js +21 -0
  155. package/lib/components/react-photo-view/hooks/useForkedVariable.d.ts +5 -0
  156. package/lib/components/react-photo-view/hooks/useForkedVariable.js +20 -0
  157. package/lib/components/react-photo-view/hooks/useInitial.d.ts +1 -0
  158. package/lib/components/react-photo-view/hooks/useInitial.js +12 -0
  159. package/lib/components/react-photo-view/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
  160. package/lib/components/react-photo-view/hooks/useIsomorphicLayoutEffect.js +5 -0
  161. package/lib/components/react-photo-view/hooks/useMethods.d.ts +4 -0
  162. package/lib/components/react-photo-view/hooks/useMethods.js +38 -0
  163. package/lib/components/react-photo-view/hooks/useMountedRef.d.ts +3 -0
  164. package/lib/components/react-photo-view/hooks/useMountedRef.js +14 -0
  165. package/lib/components/react-photo-view/hooks/useScrollPosition.d.ts +4 -0
  166. package/lib/components/react-photo-view/hooks/useScrollPosition.js +163 -0
  167. package/lib/components/react-photo-view/hooks/useSetState.d.ts +2 -0
  168. package/lib/components/react-photo-view/hooks/useSetState.js +18 -0
  169. package/lib/components/react-photo-view/hooks/useTargetScale.d.ts +4 -0
  170. package/lib/components/react-photo-view/hooks/useTargetScale.js +76 -0
  171. package/lib/components/react-photo-view/index.d.ts +4 -0
  172. package/lib/components/react-photo-view/index.js +12 -0
  173. package/lib/components/react-photo-view/photo-context.d.ts +11 -0
  174. package/lib/components/react-photo-view/photo-context.js +4 -0
  175. package/lib/components/react-photo-view/types.d.ts +196 -0
  176. package/lib/components/react-photo-view/types.js +2 -0
  177. package/lib/components/react-photo-view/utils/edgeHandle.d.ts +15 -0
  178. package/lib/components/react-photo-view/utils/edgeHandle.js +45 -0
  179. package/lib/components/react-photo-view/utils/getMultipleTouchPosition.d.ts +5 -0
  180. package/lib/components/react-photo-view/utils/getMultipleTouchPosition.js +14 -0
  181. package/lib/components/react-photo-view/utils/getPositionOnMoveOrScale.d.ts +9 -0
  182. package/lib/components/react-photo-view/utils/getPositionOnMoveOrScale.js +34 -0
  183. package/lib/components/react-photo-view/utils/getRotateSize.d.ts +4 -0
  184. package/lib/components/react-photo-view/utils/getRotateSize.js +14 -0
  185. package/lib/components/react-photo-view/utils/getSuitableImageSize.d.ts +10 -0
  186. package/lib/components/react-photo-view/utils/getSuitableImageSize.js +48 -0
  187. package/lib/components/react-photo-view/utils/isTouchDevice.d.ts +5 -0
  188. package/lib/components/react-photo-view/utils/isTouchDevice.js +7 -0
  189. package/lib/components/react-photo-view/utils/limitTarget.d.ts +5 -0
  190. package/lib/components/react-photo-view/utils/limitTarget.js +17 -0
  191. package/lib/components/react-photo-view/variables.d.ts +48 -0
  192. package/lib/components/react-photo-view/variables.js +51 -0
  193. package/lib/constants/ai-question.d.ts +9 -0
  194. package/lib/constants/ai-question.js +34 -5
  195. package/lib/enum/ai-question.d.ts +5 -2
  196. package/lib/enum/ai-question.js +3 -0
  197. package/lib/modules/ai-ability/Root.js +15 -4
  198. package/lib/modules/ai-ability-select/Root.js +2 -2
  199. package/lib/modules/ai-ability-select/interface.d.ts +1 -0
  200. package/lib/modules/ai-question/components/BootVideo/index.js +1 -1
  201. package/lib/modules/ai-question/components/QuestionModel/Item.js +11 -6
  202. package/lib/modules/ai-question/components/QuestionTemplate/AiEvaluation.js +8 -3
  203. package/lib/modules/ai-question/components/QuestionUpdate/Chioce.d.ts +17 -0
  204. package/lib/modules/ai-question/components/QuestionUpdate/Chioce.js +103 -0
  205. package/lib/modules/ai-question/components/QuestionUpdate/Form.js +40 -10
  206. package/lib/modules/ai-question/components/QuestionUpdate/RandomQuestion.js +12 -2
  207. package/lib/modules/ai-question/components/QuestionUpdate/const.js +4 -0
  208. package/lib/modules/ai-question/components/QuestionUpdate/index.js +11 -13
  209. package/lib/modules/ai-question/components/QuestionUpdate/interface.d.ts +8 -0
  210. package/lib/modules/ai-question/components/QuestionUpdate/styled.d.ts +15 -0
  211. package/lib/modules/ai-question/components/QuestionUpdate/styled.js +53 -1
  212. package/lib/modules/ai-report/components/ScoreReport/Score.js +4 -1
  213. package/lib/modules/ai-report/components/VideoQuestion/BodyImages.d.ts +7 -0
  214. package/lib/modules/ai-report/components/VideoQuestion/BodyImages.js +45 -0
  215. package/lib/modules/ai-report/components/VideoQuestion/QuestionItem.js +4 -2
  216. package/lib/modules/ai-report/components/VideoQuestion/SingleChoice.d.ts +8 -0
  217. package/lib/modules/ai-report/components/VideoQuestion/SingleChoice.js +27 -0
  218. package/lib/modules/ai-report/components/VideoQuestion/styled.d.ts +1 -0
  219. package/lib/modules/ai-report/components/VideoQuestion/styled.js +8 -2
  220. package/lib/modules/ai-report/interface.d.ts +19 -0
  221. package/lib/services/ai-ability.d.ts +1 -1
  222. package/lib/services/ai-ability.js +1 -1
  223. package/package.json +2 -2
@@ -0,0 +1,29 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
24
+ import './Spinner.css';
25
+ function Spinner(_a) {
26
+ var className = _a.className, props = __rest(_a, ["className"]);
27
+ return (_jsx("div", __assign({ className: "PhotoView__Spinner ".concat(className) }, props, { children: _jsxs("svg", __assign({ viewBox: "0 0 32 32", width: "36", height: "36", fill: "white" }, { children: [_jsx("path", { opacity: ".25", d: "M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4" }), _jsx("path", { d: "M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z" })] })) })));
28
+ }
29
+ export default Spinner;
@@ -0,0 +1,5 @@
1
+ import type { DataType } from '../types';
2
+ /**
3
+ * 截取相邻三张图片
4
+ */
5
+ export default function useAdjacentImages(images: DataType[], index: number, loop: boolean): DataType[];
@@ -0,0 +1,14 @@
1
+ import { useMemo } from 'react';
2
+ /**
3
+ * 截取相邻三张图片
4
+ */
5
+ export default function useAdjacentImages(images, index, loop) {
6
+ return useMemo(function () {
7
+ var imageLength = images.length;
8
+ if (loop) {
9
+ var connected = images.concat(images).concat(images);
10
+ return connected.slice(imageLength + index - 1, imageLength + index + 2);
11
+ }
12
+ return images.slice(Math.max(index - 1, 0), Math.min(index + 2, imageLength + 1));
13
+ }, [images, index, loop]);
14
+ }
@@ -0,0 +1,6 @@
1
+ import type { MutableRefObject } from 'react';
2
+ import type { EasingMode, OriginRectType } from '../types';
3
+ export default function useAnimationOrigin(visible: boolean | undefined, originRef: MutableRefObject<HTMLElement | null> | undefined, loaded: boolean, speed: number, updateEasing: (pause: boolean) => void): [
4
+ easingMode: EasingMode,
5
+ originRect: OriginRectType
6
+ ];
@@ -0,0 +1,72 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+ import { maxWaitAnimationTime } from '../variables';
3
+ import useMethods from './useMethods';
4
+ var initialRect = {
5
+ T: 0,
6
+ L: 0,
7
+ W: 0,
8
+ H: 0,
9
+ // 图像填充方式
10
+ FIT: undefined,
11
+ };
12
+ export default function useAnimationOrigin(visible, originRef, loaded, speed, updateEasing) {
13
+ var _a = useState(initialRect), originRect = _a[0], updateOriginRect = _a[1];
14
+ // 动画状态
15
+ var _b = useState(0), easingMode = _b[0], updateEasingMode = _b[1];
16
+ var initialTime = useRef();
17
+ var fn = useMethods({
18
+ OK: function () { return visible && updateEasingMode(4); },
19
+ });
20
+ useEffect(function () {
21
+ // 记录初始打开的时间
22
+ if (!initialTime.current) {
23
+ initialTime.current = Date.now();
24
+ }
25
+ if (!loaded) {
26
+ return;
27
+ }
28
+ handleUpdateOrigin(originRef, updateOriginRect);
29
+ // 打开动画处理
30
+ if (visible) {
31
+ // 小于最大允许动画时间,则执行缩放动画
32
+ if (Date.now() - initialTime.current < maxWaitAnimationTime) {
33
+ updateEasingMode(1);
34
+ // 延时执行动画,保持 transition 生效
35
+ requestAnimationFrame(function () {
36
+ updateEasingMode(2);
37
+ requestAnimationFrame(function () { return handleToShape(3); });
38
+ });
39
+ setTimeout(fn.OK, speed);
40
+ return;
41
+ }
42
+ // 超出则不执行
43
+ updateEasingMode(4);
44
+ return;
45
+ }
46
+ // 关闭动画处理
47
+ handleToShape(5);
48
+ }, [visible, loaded]);
49
+ function handleToShape(currentShape) {
50
+ updateEasing(false);
51
+ updateEasingMode(currentShape);
52
+ }
53
+ return [easingMode, originRect];
54
+ }
55
+ /**
56
+ * 更新缩略图位置信息
57
+ */
58
+ function handleUpdateOrigin(originRef, updateOriginRect) {
59
+ var element = originRef && originRef.current;
60
+ if (element && element.nodeType === 1) {
61
+ // 获取触发时节点位置
62
+ var _a = element.getBoundingClientRect(), top_1 = _a.top, left = _a.left, width = _a.width, height = _a.height;
63
+ var isImage = element.tagName === 'IMG';
64
+ updateOriginRect({
65
+ T: top_1,
66
+ L: left,
67
+ W: width,
68
+ H: height,
69
+ FIT: isImage ? getComputedStyle(element).objectFit : undefined,
70
+ });
71
+ }
72
+ }
@@ -0,0 +1,2 @@
1
+ import type { MutableRefObject } from 'react';
2
+ export default function useAnimationPosition(visible: boolean | undefined, originRef: MutableRefObject<HTMLElement | null> | undefined, loaded: boolean, x: number, y: number, width: number, height: number, scale: number, speed: number, updateEasing: (pause: boolean) => void): readonly [number, number, number, number, number, 0 | 1, import("../types").EasingMode, "fill" | "contain" | "cover" | undefined];
@@ -0,0 +1,28 @@
1
+ import useAnimationOrigin from './useAnimationOrigin';
2
+ import useTargetScale from './useTargetScale';
3
+ export default function useAnimationPosition(visible, originRef, loaded, x, y, width, height, scale, speed, updateEasing) {
4
+ // 延迟更新 width/height
5
+ var _a = useTargetScale(width, height, scale, speed, updateEasing), autoWidth = _a[0], autoHeight = _a[1], autoScale = _a[2];
6
+ // 动画源处理
7
+ var _b = useAnimationOrigin(visible, originRef, loaded, speed, updateEasing), easingMode = _b[0], originRect = _b[1];
8
+ // 计算动画位置
9
+ var T = originRect.T, L = originRect.L, W = originRect.W, H = originRect.H, FIT = originRect.FIT;
10
+ // 偏移量,x: 0, y: 0 居中为初始
11
+ var centerWidth = window.innerWidth / 2;
12
+ var centerHeight = window.innerHeight / 2;
13
+ var offsetX = centerWidth - (width * scale) / 2;
14
+ var offsetY = centerHeight - (height * scale) / 2;
15
+ // 缩略图状态
16
+ var miniMode = easingMode < 3 || easingMode > 4;
17
+ // 有缩略图时,则为缩略图的位置,否则居中
18
+ var translateX = miniMode ? (W ? L : centerWidth) : x + offsetX;
19
+ var translateY = miniMode ? (W ? T : centerHeight) : y + offsetY;
20
+ // 最小值缩放
21
+ var minScale = W / (width * scale) || 0.01;
22
+ // 适应 objectFit 保持缩略图宽高比
23
+ var currentHeight = miniMode && FIT ? autoWidth * (H / W) : autoHeight;
24
+ // 初始加载情况无缩放
25
+ var currentScale = easingMode === 0 ? autoScale : miniMode ? minScale : autoScale;
26
+ var opacity = miniMode ? (FIT ? 1 : 0) : 1;
27
+ return [translateX, translateY, autoWidth, currentHeight, currentScale, opacity, easingMode, FIT];
28
+ }
@@ -0,0 +1,6 @@
1
+ import type { ActiveAnimationType } from '../types';
2
+ /**
3
+ * 动画关闭处理真实关闭状态
4
+ * 通过 onAnimationEnd 回调实现 leaveCallback
5
+ */
6
+ export default function useAnimationVisible(visible: boolean | undefined, afterClose?: () => void): [realVisible: boolean | undefined, activeAnimation: ActiveAnimationType, onAnimationEnd: () => void];
@@ -0,0 +1,49 @@
1
+ import { useReducer, useRef } from 'react';
2
+ import useForkedVariable from './useForkedVariable';
3
+ /**
4
+ * 动画关闭处理真实关闭状态
5
+ * 通过 onAnimationEnd 回调实现 leaveCallback
6
+ */
7
+ export default function useAnimationVisible(visible, afterClose) {
8
+ var _a = useReducer(function (c) { return !c; }, false), handleRender = _a[1];
9
+ var activeAnimation = useRef(0);
10
+ // 可见状态分支
11
+ var _b = useForkedVariable(visible, function (modify) {
12
+ // 可见状态:设置进入动画
13
+ if (visible) {
14
+ modify(visible);
15
+ activeAnimation.current = 1;
16
+ }
17
+ else {
18
+ activeAnimation.current = 2;
19
+ }
20
+ }), realVisible = _b[0], modifyRealVisible = _b[1];
21
+ function onAnimationEnd() {
22
+ // 动画结束后触发渲染
23
+ handleRender();
24
+ // 结束动画:设置隐藏状态
25
+ if (activeAnimation.current === 2) {
26
+ modifyRealVisible(false);
27
+ // 触发隐藏回调
28
+ if (afterClose) {
29
+ afterClose();
30
+ }
31
+ }
32
+ // 重置状态
33
+ activeAnimation.current = 0;
34
+ }
35
+ return [
36
+ /**
37
+ * 真实可见状态
38
+ */
39
+ realVisible,
40
+ /**
41
+ * 正在进行的动画
42
+ */
43
+ activeAnimation.current,
44
+ /**
45
+ * 动画结束后回调
46
+ */
47
+ onAnimationEnd,
48
+ ];
49
+ }
@@ -0,0 +1,8 @@
1
+ export declare type TapFuncType<T> = (...args: T[]) => void;
2
+ /**
3
+ * 单击和双击事件处理
4
+ * @param singleTap - 单击事件
5
+ * @param doubleTap - 双击事件
6
+ * @return invokeTap
7
+ */
8
+ export default function useContinuousTap<T>(singleTap: TapFuncType<T>, doubleTap: TapFuncType<T>): TapFuncType<T>;
@@ -0,0 +1,36 @@
1
+ import { useRef } from 'react';
2
+ import useDebounceCallback from './useDebounceCallback';
3
+ /**
4
+ * 单击和双击事件处理
5
+ * @param singleTap - 单击事件
6
+ * @param doubleTap - 双击事件
7
+ * @return invokeTap
8
+ */
9
+ export default function useContinuousTap(singleTap, doubleTap) {
10
+ // 当前连续点击次数
11
+ var continuousClick = useRef(0);
12
+ var debounceTap = useDebounceCallback(function () {
13
+ var args = [];
14
+ for (var _i = 0; _i < arguments.length; _i++) {
15
+ args[_i] = arguments[_i];
16
+ }
17
+ continuousClick.current = 0;
18
+ singleTap.apply(void 0, args);
19
+ }, {
20
+ wait: 300,
21
+ });
22
+ return function invokeTap() {
23
+ var args = [];
24
+ for (var _i = 0; _i < arguments.length; _i++) {
25
+ args[_i] = arguments[_i];
26
+ }
27
+ continuousClick.current += 1;
28
+ debounceTap.apply(void 0, args);
29
+ // 双击
30
+ if (continuousClick.current >= 2) {
31
+ debounceTap.cancel();
32
+ continuousClick.current = 0;
33
+ doubleTap.apply(void 0, args);
34
+ }
35
+ };
36
+ }
@@ -0,0 +1,10 @@
1
+ interface DebounceCallback<CallbackArguments extends any[]> {
2
+ (...args: CallbackArguments): void;
3
+ cancel: () => void;
4
+ }
5
+ export default function useDebounceCallback<CallbackArguments extends any[]>(callback: (...args: CallbackArguments) => void, { leading, maxWait, wait, }: {
6
+ leading?: boolean;
7
+ maxWait?: number;
8
+ wait?: number;
9
+ }): DebounceCallback<CallbackArguments>;
10
+ export {};
@@ -0,0 +1,48 @@
1
+ import { useCallback, useRef } from 'react';
2
+ export default function useDebounceCallback(callback, _a) {
3
+ var _b = _a.leading, leading = _b === void 0 ? false : _b, maxWait = _a.maxWait, _c = _a.wait, wait = _c === void 0 ? maxWait || 0 : _c;
4
+ var callbackRef = useRef(callback);
5
+ callbackRef.current = callback;
6
+ var prev = useRef(0);
7
+ var trailingTimeout = useRef();
8
+ var clearTrailing = function () { return trailingTimeout.current && clearTimeout(trailingTimeout.current); };
9
+ var fn = useCallback(function () {
10
+ var args = [];
11
+ for (var _i = 0; _i < arguments.length; _i++) {
12
+ args[_i] = arguments[_i];
13
+ }
14
+ var now = Date.now();
15
+ function call() {
16
+ prev.current = now;
17
+ clearTrailing();
18
+ callbackRef.current.apply(null, args);
19
+ }
20
+ var last = prev.current;
21
+ var offset = now - last;
22
+ // leading
23
+ if (last === 0) {
24
+ if (leading) {
25
+ call();
26
+ }
27
+ prev.current = now;
28
+ }
29
+ // body
30
+ if (maxWait !== undefined) {
31
+ if (offset > maxWait) {
32
+ call();
33
+ return;
34
+ }
35
+ }
36
+ else if (offset < wait) {
37
+ prev.current = now;
38
+ }
39
+ // trailing
40
+ clearTrailing();
41
+ trailingTimeout.current = setTimeout(function () {
42
+ call();
43
+ prev.current = 0;
44
+ }, wait);
45
+ }, [wait, maxWait, leading]);
46
+ fn.cancel = clearTrailing;
47
+ return fn;
48
+ }
@@ -0,0 +1 @@
1
+ export default function useEventListener<K extends keyof WindowEventMap>(type: K | undefined, fn: (evt: WindowEventMap[K]) => void, options?: AddEventListenerOptions): void;
@@ -0,0 +1,18 @@
1
+ import { useEffect, useRef } from 'react';
2
+ export default function useEventListener(type, fn, options) {
3
+ var latest = useRef(fn);
4
+ latest.current = fn;
5
+ useEffect(function () {
6
+ function wrapper(evt) {
7
+ latest.current(evt);
8
+ }
9
+ if (type) {
10
+ window.addEventListener(type, wrapper, options);
11
+ }
12
+ return function () {
13
+ if (type) {
14
+ window.removeEventListener(type, wrapper);
15
+ }
16
+ };
17
+ }, [type]);
18
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 逻辑分叉变量处理
3
+ * 此 hook 不触发额外渲染
4
+ */
5
+ export default function useForkedVariable<T>(initial: T, updater: (modify: (variable: T) => void) => void): readonly [T, (next: T) => void];
@@ -0,0 +1,17 @@
1
+ import { useMemo, useRef } from 'react';
2
+ /**
3
+ * 逻辑分叉变量处理
4
+ * 此 hook 不触发额外渲染
5
+ */
6
+ export default function useForkedVariable(initial, updater) {
7
+ // 初始分叉变量
8
+ var forkedRef = useRef(initial);
9
+ function modify(next) {
10
+ forkedRef.current = next;
11
+ }
12
+ useMemo(function () {
13
+ // 参数变化之后同步内部分叉变量
14
+ updater(modify);
15
+ }, [initial]);
16
+ return [forkedRef.current, modify];
17
+ }
@@ -0,0 +1 @@
1
+ export default function useInitial<T extends (...args: any) => any>(callback: T): ReturnType<T>;
@@ -0,0 +1,9 @@
1
+ import { useRef } from 'react';
2
+ export default function useInitial(callback) {
3
+ var current = useRef({ sign: false, fn: undefined }).current;
4
+ if (!current.sign) {
5
+ current.sign = true;
6
+ current.fn = callback();
7
+ }
8
+ return current.fn;
9
+ }
@@ -0,0 +1,3 @@
1
+ import { useEffect } from 'react';
2
+ declare const _default: typeof useEffect;
3
+ export default _default;
@@ -0,0 +1,3 @@
1
+ import { useEffect, useLayoutEffect } from 'react';
2
+ var isSSR = typeof window === 'undefined' || /ServerSideRendering/.test(navigator && navigator.userAgent);
3
+ export default isSSR ? useEffect : useLayoutEffect;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Hook of persistent methods
3
+ */
4
+ export default function useMethods<T extends Record<string, (...args: any[]) => any>>(fn: T): T;
@@ -0,0 +1,35 @@
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
9
+ };
10
+ import { useRef } from 'react';
11
+ /**
12
+ * Hook of persistent methods
13
+ */
14
+ export default function useMethods(fn) {
15
+ var current = useRef({
16
+ fn: fn,
17
+ curr: undefined,
18
+ }).current;
19
+ current.fn = fn;
20
+ if (!current.curr) {
21
+ var curr_1 = Object.create(null);
22
+ Object.keys(fn).forEach(function (key) {
23
+ curr_1[key] = function () {
24
+ var _a;
25
+ var args = [];
26
+ for (var _i = 0; _i < arguments.length; _i++) {
27
+ args[_i] = arguments[_i];
28
+ }
29
+ return (_a = current.fn[key]).call.apply(_a, __spreadArray([current.fn], args, false));
30
+ };
31
+ });
32
+ current.curr = curr_1;
33
+ }
34
+ return current.curr;
35
+ }
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ declare const useMountedRef: () => import("react").MutableRefObject<boolean>;
3
+ export default useMountedRef;
@@ -0,0 +1,12 @@
1
+ import { useEffect, useRef } from 'react';
2
+ var useMountedRef = function () {
3
+ var mountedRef = useRef(false);
4
+ useEffect(function () {
5
+ mountedRef.current = true;
6
+ return function () {
7
+ mountedRef.current = false;
8
+ };
9
+ }, []);
10
+ return mountedRef;
11
+ };
12
+ export default useMountedRef;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * 物理滚动到具体位置
3
+ */
4
+ export default function useScrollPosition<C extends (spatial: number) => boolean>(callbackX: C, callbackY: C, callbackS: C): (x: number, y: number, lastX: number, lastY: number, width: number, height: number, scale: number, safeScale: number, lastScale: number, rotate: number, touchedTime: number) => void;
@@ -0,0 +1,157 @@
1
+ import { computePositionEdge } from '../utils/edgeHandle';
2
+ import getPositionOnMoveOrScale from '../utils/getPositionOnMoveOrScale';
3
+ import getRotateSize from '../utils/getRotateSize';
4
+ import { defaultSpeed, maxTouchTime } from '../variables';
5
+ import useMethods from './useMethods';
6
+ // 触边运动反馈
7
+ var rebound = function (start, bound, callback) {
8
+ return easeOutMove(start, bound, callback, defaultSpeed / 4, function (t) { return t; }, function () { return easeOutMove(bound, start, callback); });
9
+ };
10
+ /**
11
+ * 物理滚动到具体位置
12
+ */
13
+ export default function useScrollPosition(callbackX, callbackY, callbackS) {
14
+ var callback = useMethods({
15
+ X: function (spatial) { return callbackX(spatial); },
16
+ Y: function (spatial) { return callbackY(spatial); },
17
+ S: function (spatial) { return callbackS(spatial); },
18
+ });
19
+ return function (x, y, lastX, lastY, width, height, scale, safeScale, lastScale, rotate, touchedTime) {
20
+ var _a = getRotateSize(rotate, width, height), currentWidth = _a[0], currentHeight = _a[1];
21
+ // 开始状态下边缘触发状态
22
+ var _b = computePositionEdge(x, safeScale, currentWidth, window.innerWidth), beginEdgeX = _b[0], beginX = _b[1];
23
+ var _c = computePositionEdge(y, safeScale, currentHeight, window.innerHeight), beginEdgeY = _c[0], beginY = _c[1];
24
+ var moveTime = Date.now() - touchedTime;
25
+ // 时间过长、超出安全范围的情况下不执行滚动逻辑,恢复安全范围
26
+ if (moveTime >= maxTouchTime || safeScale !== scale || Math.abs(lastScale - scale) > 1) {
27
+ // 计算中心缩放点
28
+ var _d = getPositionOnMoveOrScale(x, y, width, height, scale, safeScale), nextX = _d.x, nextY = _d.y;
29
+ var targetX = beginEdgeX ? beginX : nextX !== x ? nextX : null;
30
+ var targetY = beginEdgeY ? beginY : nextY !== y ? nextY : null;
31
+ if (targetX !== null) {
32
+ easeOutMove(x, targetX, callback.X);
33
+ }
34
+ if (targetY !== null) {
35
+ easeOutMove(y, targetY, callback.Y);
36
+ }
37
+ if (safeScale !== scale) {
38
+ easeOutMove(scale, safeScale, callback.S);
39
+ }
40
+ return;
41
+ }
42
+ // 初始速度
43
+ var speedX = (x - lastX) / moveTime;
44
+ var speedY = (y - lastY) / moveTime;
45
+ var speedT = Math.sqrt(Math.pow(speedX, 2) + Math.pow(speedY, 2));
46
+ // 是否接触到边缘
47
+ var edgeX = false;
48
+ var edgeY = false;
49
+ scrollMove(speedT, function (spatial) {
50
+ var nextX = x + spatial * (speedX / speedT);
51
+ var nextY = y + spatial * (speedY / speedT);
52
+ var _a = computePositionEdge(nextX, scale, currentWidth, window.innerWidth), isEdgeX = _a[0], currentX = _a[1];
53
+ var _b = computePositionEdge(nextY, scale, currentHeight, window.innerHeight), isEdgeY = _b[0], currentY = _b[1];
54
+ if (isEdgeX && !edgeX) {
55
+ edgeX = true;
56
+ if (beginEdgeX) {
57
+ easeOutMove(nextX, currentX, callback.X);
58
+ }
59
+ else {
60
+ rebound(currentX, nextX + (nextX - currentX), callback.X);
61
+ }
62
+ }
63
+ if (isEdgeY && !edgeY) {
64
+ edgeY = true;
65
+ if (beginEdgeY) {
66
+ easeOutMove(nextY, currentY, callback.Y);
67
+ }
68
+ else {
69
+ rebound(currentY, nextY + (nextY - currentY), callback.Y);
70
+ }
71
+ }
72
+ // 同时接触边缘的情况下停止滚动
73
+ if (edgeX && edgeY) {
74
+ return false;
75
+ }
76
+ var resultX = edgeX || callback.X(currentX);
77
+ var resultY = edgeY || callback.Y(currentY);
78
+ return resultX && resultY;
79
+ });
80
+ };
81
+ }
82
+ // 加速度
83
+ var acceleration = -0.001;
84
+ // 阻力
85
+ var resistance = 0.0002;
86
+ /**
87
+ * 通过速度滚动到停止
88
+ */
89
+ function scrollMove(initialSpeed, callback) {
90
+ var v = initialSpeed;
91
+ var s = 0;
92
+ var lastTime = undefined;
93
+ var frameId = 0;
94
+ var calcMove = function (now) {
95
+ if (!lastTime) {
96
+ lastTime = now;
97
+ }
98
+ var dt = now - lastTime;
99
+ var direction = Math.sign(initialSpeed);
100
+ var a = direction * acceleration;
101
+ var f = Math.sign(-v) * Math.pow(v, 2) * resistance;
102
+ var ds = v * dt + ((a + f) * Math.pow(dt, 2)) / 2;
103
+ v = v + (a + f) * dt;
104
+ s = s + ds;
105
+ // move to s
106
+ lastTime = now;
107
+ if (direction * v <= 0) {
108
+ caf();
109
+ return;
110
+ }
111
+ if (callback(s)) {
112
+ raf();
113
+ return;
114
+ }
115
+ caf();
116
+ };
117
+ raf();
118
+ function raf() {
119
+ frameId = requestAnimationFrame(calcMove);
120
+ }
121
+ function caf() {
122
+ cancelAnimationFrame(frameId);
123
+ }
124
+ }
125
+ /**
126
+ * 缓动函数
127
+ */
128
+ var easeOutQuart = function (x) { return 1 - Math.pow((1 - x), 4); };
129
+ /**
130
+ * 缓动回调
131
+ */
132
+ function easeOutMove(start, end, callback, speed, easing, complete) {
133
+ if (speed === void 0) { speed = defaultSpeed; }
134
+ if (easing === void 0) { easing = easeOutQuart; }
135
+ var distance = end - start;
136
+ if (distance === 0) {
137
+ return;
138
+ }
139
+ var startTime = Date.now();
140
+ var frameId = 0;
141
+ var calcMove = function () {
142
+ var time = Math.min(1, (Date.now() - startTime) / speed);
143
+ var result = callback(start + easing(time) * distance);
144
+ if (result && time < 1) {
145
+ raf();
146
+ return;
147
+ }
148
+ cancelAnimationFrame(frameId);
149
+ if (time >= 1 && complete) {
150
+ complete();
151
+ }
152
+ };
153
+ raf();
154
+ function raf() {
155
+ frameId = requestAnimationFrame(calcMove);
156
+ }
157
+ }
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export default function useSetState<S extends Record<string, any>>(initialState: S): [S & Partial<S>, import("react").Dispatch<Partial<S> | ((state: S) => Partial<S>)>];
@@ -0,0 +1,15 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { useReducer } from 'react';
13
+ export default function useSetState(initialState) {
14
+ return useReducer(function (state, action) { return (__assign(__assign({}, state), (typeof action === 'function' ? action(state) : action))); }, initialState);
15
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * 目标缩放延迟处理
3
+ */
4
+ export default function useTargetScale(realWidth: number, realHeight: number, realScale: number, speed: number, updateEasing: (pause: boolean) => void): readonly [number, number, number];