@ioca/react 1.3.3 → 1.3.4

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 (187) hide show
  1. package/lib/components/button/button.js +1 -1
  2. package/lib/components/button/button.js.map +1 -1
  3. package/lib/components/checkbox/checkbox.js +1 -1
  4. package/lib/components/checkbox/checkbox.js.map +1 -1
  5. package/lib/components/datagrid/datagrid.js +1 -1
  6. package/lib/components/datagrid/datagrid.js.map +1 -1
  7. package/lib/components/datagrid/resize.js +1 -1
  8. package/lib/components/datagrid/resize.js.map +1 -1
  9. package/lib/components/drawer/drawer.js +1 -1
  10. package/lib/components/drawer/drawer.js.map +1 -1
  11. package/lib/components/image/image.js +1 -1
  12. package/lib/components/image/image.js.map +1 -1
  13. package/lib/components/image/list.js +1 -1
  14. package/lib/components/image/list.js.map +1 -1
  15. package/lib/components/input/number.js +1 -1
  16. package/lib/components/input/number.js.map +1 -1
  17. package/lib/components/input/range.js +1 -1
  18. package/lib/components/input/range.js.map +1 -1
  19. package/lib/components/modal/hookModal.js.map +1 -1
  20. package/lib/components/modal/modal.js +1 -1
  21. package/lib/components/modal/modal.js.map +1 -1
  22. package/lib/components/modal/useModal.js +1 -1
  23. package/lib/components/modal/useModal.js.map +1 -1
  24. package/lib/components/picker/colors/index.js +1 -1
  25. package/lib/components/picker/colors/index.js.map +1 -1
  26. package/lib/components/popup/popup.js +1 -1
  27. package/lib/components/popup/popup.js.map +1 -1
  28. package/lib/components/progress/progress.js +1 -1
  29. package/lib/components/progress/progress.js.map +1 -1
  30. package/lib/components/radio/radio.js +1 -1
  31. package/lib/components/radio/radio.js.map +1 -1
  32. package/lib/components/resizable/resizable.js +1 -1
  33. package/lib/components/resizable/resizable.js.map +1 -1
  34. package/lib/components/swiper/swiper.js +1 -1
  35. package/lib/components/swiper/swiper.js.map +1 -1
  36. package/lib/components/tabs/tabs.js +1 -1
  37. package/lib/components/tabs/tabs.js.map +1 -1
  38. package/lib/components/text/number.js +1 -1
  39. package/lib/components/text/number.js.map +1 -1
  40. package/lib/components/text/time.js +1 -1
  41. package/lib/components/text/time.js.map +1 -1
  42. package/lib/components/upload/renderFile.js +1 -1
  43. package/lib/components/upload/renderFile.js.map +1 -1
  44. package/lib/components/upload/upload.js +1 -1
  45. package/lib/components/upload/upload.js.map +1 -1
  46. package/lib/components/video/video.js +1 -1
  47. package/lib/components/video/video.js.map +1 -1
  48. package/lib/css/index.css +1 -1
  49. package/lib/css/index.css.map +1 -1
  50. package/lib/js/usePreview/index.js +1 -1
  51. package/lib/js/usePreview/index.js.map +1 -1
  52. package/lib/js/usePreview/type.js.map +1 -1
  53. package/lib/js/utils.js +1 -1
  54. package/lib/js/utils.js.map +1 -1
  55. package/lib/types/components/affix/affix.d.ts +2 -0
  56. package/lib/types/components/affix/index.d.ts +2 -0
  57. package/lib/types/components/affix/totop.d.ts +2 -0
  58. package/lib/types/components/affix/type.d.ts +2 -0
  59. package/lib/types/components/badge/badge.d.ts +2 -0
  60. package/lib/types/components/badge/index.d.ts +2 -0
  61. package/lib/types/components/badge/type.d.ts +2 -0
  62. package/lib/types/components/button/button.d.ts +2 -0
  63. package/lib/types/components/button/group.d.ts +2 -0
  64. package/lib/types/components/button/index.d.ts +2 -0
  65. package/lib/types/components/button/toggle.d.ts +2 -0
  66. package/lib/types/components/button/type.d.ts +2 -0
  67. package/lib/types/components/card/card.d.ts +2 -0
  68. package/lib/types/components/card/index.d.ts +2 -0
  69. package/lib/types/components/card/type.d.ts +2 -0
  70. package/lib/types/components/checkbox/checkbox.d.ts +2 -0
  71. package/lib/types/components/checkbox/index.d.ts +2 -0
  72. package/lib/types/components/checkbox/item.d.ts +2 -0
  73. package/lib/types/components/checkbox/type.d.ts +2 -0
  74. package/lib/types/components/collapse/collapse.d.ts +2 -0
  75. package/lib/types/components/collapse/index.d.ts +2 -0
  76. package/lib/types/components/collapse/item.d.ts +2 -0
  77. package/lib/types/components/collapse/type.d.ts +2 -0
  78. package/lib/types/components/datagrid/datagrid.d.ts +2 -0
  79. package/lib/types/components/datagrid/index.d.ts +2 -0
  80. package/lib/types/components/datagrid/type.d.ts +2 -0
  81. package/lib/types/components/description/description.d.ts +2 -0
  82. package/lib/types/components/description/index.d.ts +2 -0
  83. package/lib/types/components/description/type.d.ts +2 -0
  84. package/lib/types/components/drawer/drawer.d.ts +2 -0
  85. package/lib/types/components/drawer/index.d.ts +2 -0
  86. package/lib/types/components/drawer/type.d.ts +2 -0
  87. package/lib/types/components/dropdown/dropdown.d.ts +2 -0
  88. package/lib/types/components/dropdown/index.d.ts +2 -0
  89. package/lib/types/components/dropdown/type.d.ts +2 -0
  90. package/lib/types/components/editor/editor.d.ts +2 -0
  91. package/lib/types/components/editor/index.d.ts +2 -0
  92. package/lib/types/components/editor/type.d.ts +2 -0
  93. package/lib/types/components/flex/flex.d.ts +2 -0
  94. package/lib/types/components/flex/index.d.ts +2 -0
  95. package/lib/types/components/flex/type.d.ts +2 -0
  96. package/lib/types/components/form/field.d.ts +2 -0
  97. package/lib/types/components/form/form.d.ts +2 -0
  98. package/lib/types/components/form/index.d.ts +2 -0
  99. package/lib/types/components/form/type.d.ts +2 -0
  100. package/lib/types/components/form/useForm.d.ts +2 -0
  101. package/lib/types/components/icon/icon.d.ts +2 -0
  102. package/lib/types/components/icon/index.d.ts +2 -0
  103. package/lib/types/components/icon/type.d.ts +2 -0
  104. package/lib/types/components/image/image.d.ts +2 -0
  105. package/lib/types/components/image/index.d.ts +2 -0
  106. package/lib/types/components/image/list.d.ts +2 -0
  107. package/lib/types/components/image/type.d.ts +2 -0
  108. package/lib/types/components/input/index.d.ts +2 -0
  109. package/lib/types/components/input/input.d.ts +2 -0
  110. package/lib/types/components/input/number.d.ts +2 -0
  111. package/lib/types/components/input/range.d.ts +2 -0
  112. package/lib/types/components/input/textarea.d.ts +2 -0
  113. package/lib/types/components/input/type.d.ts +2 -0
  114. package/lib/types/components/list/index.d.ts +2 -0
  115. package/lib/types/components/list/list.d.ts +2 -0
  116. package/lib/types/components/list/type.d.ts +2 -0
  117. package/lib/types/components/loading/index.d.ts +2 -0
  118. package/lib/types/components/loading/loading.d.ts +2 -0
  119. package/lib/types/components/loading/type.d.ts +2 -0
  120. package/lib/types/components/message/index.d.ts +2 -0
  121. package/lib/types/components/message/message.d.ts +2 -0
  122. package/lib/types/components/message/type.d.ts +2 -0
  123. package/lib/types/components/modal/index.d.ts +2 -0
  124. package/lib/types/components/modal/modal.d.ts +2 -0
  125. package/lib/types/components/modal/type.d.ts +2 -0
  126. package/lib/types/components/modal/useModal.d.ts +2 -0
  127. package/lib/types/components/pagination/index.d.ts +2 -0
  128. package/lib/types/components/pagination/pagination.d.ts +2 -0
  129. package/lib/types/components/pagination/type.d.ts +2 -0
  130. package/lib/types/components/picker/colors/index.d.ts +2 -0
  131. package/lib/types/components/picker/dates/index.d.ts +2 -0
  132. package/lib/types/components/picker/time/index.d.ts +2 -0
  133. package/lib/types/components/picker/type.d.ts +2 -0
  134. package/lib/types/components/popconfirm/index.d.ts +2 -0
  135. package/lib/types/components/popconfirm/popconfirm.d.ts +2 -0
  136. package/lib/types/components/popconfirm/type.d.ts +2 -0
  137. package/lib/types/components/popup/index.d.ts +2 -0
  138. package/lib/types/components/popup/popup.d.ts +2 -0
  139. package/lib/types/components/popup/type.d.ts +2 -0
  140. package/lib/types/components/progress/index.d.ts +2 -0
  141. package/lib/types/components/progress/progress.d.ts +2 -0
  142. package/lib/types/components/progress/type.d.ts +2 -0
  143. package/lib/types/components/radio/index.d.ts +2 -0
  144. package/lib/types/components/radio/item.d.ts +2 -0
  145. package/lib/types/components/radio/radio.d.ts +2 -0
  146. package/lib/types/components/radio/type.d.ts +2 -0
  147. package/lib/types/components/resizable/index.d.ts +2 -0
  148. package/lib/types/components/resizable/resizable.d.ts +2 -0
  149. package/lib/types/components/resizable/type.d.ts +2 -0
  150. package/lib/types/components/select/index.d.ts +2 -0
  151. package/lib/types/components/select/select.d.ts +2 -0
  152. package/lib/types/components/select/type.d.ts +2 -0
  153. package/lib/types/components/step/index.d.ts +2 -0
  154. package/lib/types/components/step/item.d.ts +2 -0
  155. package/lib/types/components/step/step.d.ts +2 -0
  156. package/lib/types/components/step/type.d.ts +2 -0
  157. package/lib/types/components/swiper/index.d.ts +2 -0
  158. package/lib/types/components/swiper/item.d.ts +2 -0
  159. package/lib/types/components/swiper/swiper.d.ts +2 -0
  160. package/lib/types/components/swiper/type.d.ts +2 -0
  161. package/lib/types/components/tabs/index.d.ts +2 -0
  162. package/lib/types/components/tabs/item.d.ts +2 -0
  163. package/lib/types/components/tabs/tabs.d.ts +2 -0
  164. package/lib/types/components/tabs/type.d.ts +2 -0
  165. package/lib/types/components/tag/index.d.ts +2 -0
  166. package/lib/types/components/tag/tag.d.ts +2 -0
  167. package/lib/types/components/tag/type.d.ts +2 -0
  168. package/lib/types/components/text/highlight.d.ts +2 -0
  169. package/lib/types/components/text/index.d.ts +2 -0
  170. package/lib/types/components/text/number.d.ts +2 -0
  171. package/lib/types/components/text/text.d.ts +2 -0
  172. package/lib/types/components/text/time.d.ts +2 -0
  173. package/lib/types/components/text/type.d.ts +2 -0
  174. package/lib/types/components/tree/index.d.ts +2 -0
  175. package/lib/types/components/tree/tree.d.ts +2 -0
  176. package/lib/types/components/tree/type.d.ts +2 -0
  177. package/lib/types/components/upload/index.d.ts +2 -0
  178. package/lib/types/components/upload/type.d.ts +2 -0
  179. package/lib/types/components/upload/upload.d.ts +2 -0
  180. package/lib/types/components/video/index.d.ts +2 -0
  181. package/lib/types/components/video/type.d.ts +2 -0
  182. package/lib/types/components/video/video.d.ts +2 -0
  183. package/lib/types/index.d.ts +2 -0
  184. package/lib/types/js/usePreview/index.d.ts +2 -0
  185. package/lib/types/js/usePreview/type.d.ts +4 -11
  186. package/lib/types/type/index.d.ts +2 -0
  187. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"popup.js","sources":["../../../packages/components/popup/popup.tsx"],"sourcesContent":["import { useMouseUp, useResizeObserver } from \"@p/js/hooks\";\nimport { getPointPosition, getPosition } from \"@p/js/utils\";\nimport { useCreation, useReactive } from \"ahooks\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tisValidElement,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPopup } from \"./type\";\n\nexport default function Popup(props: IPopup) {\n\tconst {\n\t\tvisible = false,\n\t\tcontent,\n\t\ttrigger = \"hover\",\n\t\tgap = 12,\n\t\toffset = 8,\n\t\tfixed,\n\t\tposition = \"top\",\n\t\tshowDelay = 16,\n\t\thideDelay = 12,\n\t\ttouchable,\n\t\tarrow = true,\n\t\talign,\n\t\tfitSize,\n\t\twatchResize,\n\t\tclickOutside = true,\n\t\tdisabled,\n\t\treferToWindow,\n\t\tstyle,\n\t\tclassName,\n\t\tgetContainer,\n\t\tchildren,\n\t\tonVisibleChange,\n\t} = props;\n\n\tconst triggerRef = useRef<HTMLElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst statusRef = useRef<string>(\"\");\n\tconst state = useReactive<{\n\t\tshow: boolean;\n\t\tstyle: CSSProperties;\n\t\tarrowProps: Record<string, any>;\n\t}>({\n\t\tshow: false,\n\t\tstyle: { position: fixed ? \"fixed\" : \"absolute\" },\n\t\tarrowProps: {},\n\t});\n\n\tuseMouseUp((e) => {\n\t\tif (!triggerRef.current || !contentRef.current || !clickOutside) return;\n\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst isContain =\n\t\t\ttriggerRef.current.contains(tar) ||\n\t\t\tcontentRef.current.contains(tar);\n\n\t\tif (!state.show || isContain) return;\n\n\t\thandleToggle(false);\n\t});\n\n\tconst clearTimer = () => {\n\t\tif (!timerRef.current) return;\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst handleShow = () => {\n\t\tif (disabled) return;\n\t\tif (\n\t\t\tstate.show &&\n\t\t\t(trigger !== \"hover\" || (trigger === \"hover\" && !touchable))\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tstate.show = true;\n\t\tstatusRef.current = \"showing\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (statusRef.current !== \"showing\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\t\ttriggerRef.current,\n\t\t\t\tcontentRef.current,\n\t\t\t\t{\n\t\t\t\t\tposition,\n\t\t\t\t\tgap,\n\t\t\t\t\toffset,\n\t\t\t\t\talign,\n\t\t\t\t\trefWindow: referToWindow,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tstate.style = {\n\t\t\t\t...state.style,\n\t\t\t\topacity: 1,\n\t\t\t\ttransform: \"none\",\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t};\n\t\t\tstate.arrowProps = {\n\t\t\t\tleft: arrowX,\n\t\t\t\ttop: arrowY,\n\t\t\t\tpos: arrowPos,\n\t\t\t};\n\t\t\tonVisibleChange?.(true);\n\t\t\tclearTimer();\n\t\t\tstatusRef.current = \"\";\n\t\t}, showDelay);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!state.show) return;\n\n\t\tstatusRef.current = \"hiding\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (statusRef.current !== \"hiding\") {\n\t\t\t\tclearTimer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.style = {\n\t\t\t\t...state.style,\n\t\t\t\topacity: 0,\n\t\t\t\ttransform: \"translate(0, 2px)\",\n\t\t\t};\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.show = false;\n\t\t\t\tclearTimer();\n\t\t\t\tonVisibleChange?.(false);\n\t\t\t\tstatusRef.current = \"\";\n\t\t\t}, 160);\n\t\t}, hideDelay);\n\t};\n\n\tconst handleToggle = (action?: boolean) => {\n\t\tif (action !== undefined) {\n\t\t\taction ? handleShow() : handleHide();\n\t\t\treturn;\n\t\t}\n\n\t\tstate.show ? handleHide() : handleShow();\n\t};\n\tconst eventMaps = useCreation(\n\t\t() => ({\n\t\t\tclick: {\n\t\t\t\tonClick: () => handleToggle(true),\n\t\t\t},\n\t\t\thover: {\n\t\t\t\tonMouseEnter: () => handleToggle(true),\n\t\t\t\tonMouseLeave: () => handleToggle(false),\n\t\t\t},\n\t\t\tfocus: {\n\t\t\t\tonFocus: () => handleToggle(true),\n\t\t\t\tonBlur: () => handleToggle(false),\n\t\t\t},\n\t\t\tcontextmenu: {\n\t\t\t\tonContextMenu: (e: MouseEvent) => {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\tif (state.show) {\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstate.style = {\n\t\t\t\t\t\t\t...state.style,\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\ttop,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.show = true;\n\n\t\t\t\t\ttimerRef.current = setTimeout(() => {\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstate.style = {\n\t\t\t\t\t\t\t...state.style,\n\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\ttransform: \"none\",\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\ttop,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tclearTimer();\n\t\t\t\t\t\tonVisibleChange?.(true);\n\t\t\t\t\t}, showDelay);\n\t\t\t\t},\n\t\t\t},\n\t\t\tnone: {},\n\t\t}),\n\t\t[]\n\t);\n\n\tconst contentTouch = useMemo(() => {\n\t\tif (!touchable) return {};\n\t\tconst events: { [key: string]: () => void } = {};\n\n\t\tif (trigger === \"hover\") {\n\t\t\tevents[\"onMouseEnter\"] = () => {\n\t\t\t\tclearTimer();\n\t\t\t};\n\t\t\tevents[\"onMouseLeave\"] = () => handleToggle(false);\n\t\t}\n\n\t\treturn events;\n\t}, [touchable, trigger]);\n\n\tconst computePosition = () => {\n\t\tif (!state.show) return;\n\n\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\ttriggerRef.current,\n\t\t\tcontentRef.current,\n\t\t\t{\n\t\t\t\tposition,\n\t\t\t\tgap,\n\t\t\t\toffset,\n\t\t\t\talign,\n\t\t\t\trefWindow: referToWindow,\n\t\t\t}\n\t\t);\n\n\t\tObject.assign(state, {\n\t\t\tstyle: { ...state.style, left, top },\n\t\t\tarrowProps: { left: arrowX, top: arrowY, pos: arrowPos },\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (trigger === \"contextmenu\") return;\n\t\tconst { observe, unobserve, disconnect } = useResizeObserver();\n\n\t\ttriggerRef.current && observe(triggerRef.current, computePosition);\n\n\t\tif (!watchResize || !contentRef.current) return;\n\n\t\tobserve(contentRef.current, computePosition);\n\n\t\treturn () => {\n\t\t\tif (!watchResize || !contentRef.current) return;\n\n\t\t\tunobserve(contentRef.current);\n\t\t\ttriggerRef.current && unobserve(triggerRef.current);\n\t\t\tdisconnect();\n\t\t};\n\t}, [watchResize, contentRef.current, triggerRef.current]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!fitSize || !state.show) return;\n\n\t\tconst vertical = [\"top\", \"bottom\"].includes(position);\n\t\tconst size =\n\t\t\ttriggerRef.current?.[vertical ? \"offsetWidth\" : \"offsetHeight\"];\n\t\tstate.style = { ...state.style, [vertical ? \"width\" : \"height\"]: size };\n\t}, [state.show, fitSize]);\n\n\tuseLayoutEffect(() => {\n\t\thandleToggle(visible);\n\t}, [visible]);\n\n\treturn (\n\t\t<>\n\t\t\t{Children.map(children, (child) => {\n\t\t\t\tif (!isValidElement(child)) return;\n\n\t\t\t\tconst { className, ...restProps } = child.props as any;\n\t\t\t\tObject.keys(eventMaps[trigger]).map((evt) => {\n\t\t\t\t\tif (!restProps[evt]) return;\n\t\t\t\t\tconst fn = eventMaps[trigger][evt];\n\n\t\t\t\t\teventMaps[trigger][evt] = (e) => {\n\t\t\t\t\t\tfn();\n\t\t\t\t\t\trestProps[evt](e);\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn cloneElement(child, {\n\t\t\t\t\tref: triggerRef,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps,\n\t\t\t\t\t...eventMaps[trigger],\n\t\t\t\t});\n\t\t\t})}\n\n\t\t\t{state.show && (\n\t\t\t\t<Content\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tarrow={arrow && trigger !== \"contextmenu\"}\n\t\t\t\t\tstyle={{ ...style, ...state.style }}\n\t\t\t\t\tarrowProps={state.arrowProps}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\t{...contentTouch}\n\t\t\t\t\ttrigger={triggerRef.current as HTMLElement}\n\t\t\t\t\tgetContainer={getContainer}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Content>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"],"names":["Popup","props","visible","content","trigger","gap","offset","fixed","position","showDelay","hideDelay","touchable","arrow","align","fitSize","watchResize","clickOutside","disabled","referToWindow","style","className","getContainer","children","onVisibleChange","triggerRef","useRef","contentRef","timerRef","statusRef","state","useReactive","show","arrowProps","useMouseUp","e","current","tar","target","isContain","contains","handleToggle","clearTimer","clearTimeout","handleShow","setTimeout","left","top","arrowX","arrowY","arrowPos","getPosition","refWindow","opacity","transform","pos","handleHide","action","undefined","eventMaps","useCreation","click","onClick","hover","onMouseEnter","onMouseLeave","focus","onFocus","onBlur","contextmenu","onContextMenu","preventDefault","stopPropagation","getPointPosition","none","contentTouch","useMemo","events","computePosition","Object","assign","useEffect","observe","unobserve","disconnect","useResizeObserver","useLayoutEffect","vertical","includes","size","_jsxs","_Fragment","Children","map","child","isValidElement","restProps","keys","evt","fn","cloneElement","ref","_jsx","Content"],"mappings":"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"}
1
+ {"version":3,"file":"popup.js","sources":["../../../packages/components/popup/popup.tsx"],"sourcesContent":["import { useCreation, useReactive } from \"ahooks\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tMouseEvent,\n\tcloneElement,\n\tisValidElement,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport { useMouseUp, useResizeObserver } from \"../../js/hooks\";\nimport { getPointPosition, getPosition } from \"../../js/utils\";\nimport Content from \"./content\";\nimport \"./index.css\";\nimport { IPopup } from \"./type\";\n\nexport default function Popup(props: IPopup) {\n\tconst {\n\t\tvisible = false,\n\t\tcontent,\n\t\ttrigger = \"hover\",\n\t\tgap = 12,\n\t\toffset = 8,\n\t\tfixed,\n\t\tposition = \"top\",\n\t\tshowDelay = 16,\n\t\thideDelay = 12,\n\t\ttouchable,\n\t\tarrow = true,\n\t\talign,\n\t\tfitSize,\n\t\twatchResize,\n\t\tclickOutside = true,\n\t\tdisabled,\n\t\treferToWindow,\n\t\tstyle,\n\t\tclassName,\n\t\tgetContainer,\n\t\tchildren,\n\t\tonVisibleChange,\n\t} = props;\n\n\tconst triggerRef = useRef<HTMLElement>(null);\n\tconst contentRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst statusRef = useRef<string>(\"\");\n\tconst state = useReactive<{\n\t\tshow: boolean;\n\t\tstyle: CSSProperties;\n\t\tarrowProps: Record<string, any>;\n\t}>({\n\t\tshow: false,\n\t\tstyle: { position: fixed ? \"fixed\" : \"absolute\" },\n\t\tarrowProps: {},\n\t});\n\n\tuseMouseUp((e) => {\n\t\tif (!triggerRef.current || !contentRef.current || !clickOutside) return;\n\n\t\tconst tar = e.target as HTMLElement;\n\t\tconst isContain =\n\t\t\ttriggerRef.current.contains(tar) ||\n\t\t\tcontentRef.current.contains(tar);\n\n\t\tif (!state.show || isContain) return;\n\n\t\thandleToggle(false);\n\t});\n\n\tconst clearTimer = () => {\n\t\tif (!timerRef.current) return;\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst handleShow = () => {\n\t\tif (disabled) return;\n\t\tif (\n\t\t\tstate.show &&\n\t\t\t(trigger !== \"hover\" || (trigger === \"hover\" && !touchable))\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tstate.show = true;\n\t\tstatusRef.current = \"showing\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (statusRef.current !== \"showing\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\t\ttriggerRef.current,\n\t\t\t\tcontentRef.current,\n\t\t\t\t{\n\t\t\t\t\tposition,\n\t\t\t\t\tgap,\n\t\t\t\t\toffset,\n\t\t\t\t\talign,\n\t\t\t\t\trefWindow: referToWindow,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tstate.style = {\n\t\t\t\t...state.style,\n\t\t\t\topacity: 1,\n\t\t\t\ttransform: \"none\",\n\t\t\t\tleft,\n\t\t\t\ttop,\n\t\t\t};\n\t\t\tstate.arrowProps = {\n\t\t\t\tleft: arrowX,\n\t\t\t\ttop: arrowY,\n\t\t\t\tpos: arrowPos,\n\t\t\t};\n\t\t\tonVisibleChange?.(true);\n\t\t\tclearTimer();\n\t\t\tstatusRef.current = \"\";\n\t\t}, showDelay);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!state.show) return;\n\n\t\tstatusRef.current = \"hiding\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (statusRef.current !== \"hiding\") {\n\t\t\t\tclearTimer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.style = {\n\t\t\t\t...state.style,\n\t\t\t\topacity: 0,\n\t\t\t\ttransform: \"translate(0, 2px)\",\n\t\t\t};\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.show = false;\n\t\t\t\tclearTimer();\n\t\t\t\tonVisibleChange?.(false);\n\t\t\t\tstatusRef.current = \"\";\n\t\t\t}, 160);\n\t\t}, hideDelay);\n\t};\n\n\tconst handleToggle = (action?: boolean) => {\n\t\tif (action !== undefined) {\n\t\t\taction ? handleShow() : handleHide();\n\t\t\treturn;\n\t\t}\n\n\t\tstate.show ? handleHide() : handleShow();\n\t};\n\tconst eventMaps = useCreation(\n\t\t() => ({\n\t\t\tclick: {\n\t\t\t\tonClick: () => handleToggle(true),\n\t\t\t},\n\t\t\thover: {\n\t\t\t\tonMouseEnter: () => handleToggle(true),\n\t\t\t\tonMouseLeave: () => handleToggle(false),\n\t\t\t},\n\t\t\tfocus: {\n\t\t\t\tonFocus: () => handleToggle(true),\n\t\t\t\tonBlur: () => handleToggle(false),\n\t\t\t},\n\t\t\tcontextmenu: {\n\t\t\t\tonContextMenu: (e: MouseEvent) => {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\n\t\t\t\t\tif (state.show) {\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstate.style = {\n\t\t\t\t\t\t\t...state.style,\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\ttop,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate.show = true;\n\n\t\t\t\t\ttimerRef.current = setTimeout(() => {\n\t\t\t\t\t\tconst [left, top] = getPointPosition(\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\tcontentRef.current as HTMLElement\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstate.style = {\n\t\t\t\t\t\t\t...state.style,\n\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\ttransform: \"none\",\n\t\t\t\t\t\t\tleft,\n\t\t\t\t\t\t\ttop,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tclearTimer();\n\t\t\t\t\t\tonVisibleChange?.(true);\n\t\t\t\t\t}, showDelay);\n\t\t\t\t},\n\t\t\t},\n\t\t\tnone: {},\n\t\t}),\n\t\t[]\n\t);\n\n\tconst contentTouch = useMemo(() => {\n\t\tif (!touchable) return {};\n\t\tconst events: { [key: string]: () => void } = {};\n\n\t\tif (trigger === \"hover\") {\n\t\t\tevents[\"onMouseEnter\"] = () => {\n\t\t\t\tclearTimer();\n\t\t\t};\n\t\t\tevents[\"onMouseLeave\"] = () => handleToggle(false);\n\t\t}\n\n\t\treturn events;\n\t}, [touchable, trigger]);\n\n\tconst computePosition = () => {\n\t\tif (!state.show) return;\n\n\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\ttriggerRef.current,\n\t\t\tcontentRef.current,\n\t\t\t{\n\t\t\t\tposition,\n\t\t\t\tgap,\n\t\t\t\toffset,\n\t\t\t\talign,\n\t\t\t\trefWindow: referToWindow,\n\t\t\t}\n\t\t);\n\n\t\tObject.assign(state, {\n\t\t\tstyle: { ...state.style, left, top },\n\t\t\tarrowProps: { left: arrowX, top: arrowY, pos: arrowPos },\n\t\t});\n\t};\n\n\tuseEffect(() => {\n\t\tif (trigger === \"contextmenu\") return;\n\t\tconst { observe, unobserve, disconnect } = useResizeObserver();\n\n\t\ttriggerRef.current && observe(triggerRef.current, computePosition);\n\n\t\tif (!watchResize || !contentRef.current) return;\n\n\t\tobserve(contentRef.current, computePosition);\n\n\t\treturn () => {\n\t\t\tif (!watchResize || !contentRef.current) return;\n\n\t\t\tunobserve(contentRef.current);\n\t\t\ttriggerRef.current && unobserve(triggerRef.current);\n\t\t\tdisconnect();\n\t\t};\n\t}, [watchResize, contentRef.current, triggerRef.current]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!fitSize || !state.show) return;\n\n\t\tconst vertical = [\"top\", \"bottom\"].includes(position);\n\t\tconst size =\n\t\t\ttriggerRef.current?.[vertical ? \"offsetWidth\" : \"offsetHeight\"];\n\t\tstate.style = { ...state.style, [vertical ? \"width\" : \"height\"]: size };\n\t}, [state.show, fitSize]);\n\n\tuseLayoutEffect(() => {\n\t\thandleToggle(visible);\n\t}, [visible]);\n\n\treturn (\n\t\t<>\n\t\t\t{Children.map(children, (child) => {\n\t\t\t\tif (!isValidElement(child)) return;\n\n\t\t\t\tconst { className, ...restProps } = child.props as any;\n\t\t\t\tObject.keys(eventMaps[trigger]).map((evt) => {\n\t\t\t\t\tif (!restProps[evt]) return;\n\t\t\t\t\tconst fn = eventMaps[trigger][evt];\n\n\t\t\t\t\teventMaps[trigger][evt] = (e) => {\n\t\t\t\t\t\tfn();\n\t\t\t\t\t\trestProps[evt](e);\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn cloneElement(child, {\n\t\t\t\t\tref: triggerRef,\n\t\t\t\t\tclassName,\n\t\t\t\t\t...restProps,\n\t\t\t\t\t...eventMaps[trigger],\n\t\t\t\t});\n\t\t\t})}\n\n\t\t\t{state.show && (\n\t\t\t\t<Content\n\t\t\t\t\tref={contentRef}\n\t\t\t\t\tarrow={arrow && trigger !== \"contextmenu\"}\n\t\t\t\t\tstyle={{ ...style, ...state.style }}\n\t\t\t\t\tarrowProps={state.arrowProps}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\t{...contentTouch}\n\t\t\t\t\ttrigger={triggerRef.current as HTMLElement}\n\t\t\t\t\tgetContainer={getContainer}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Content>\n\t\t\t)}\n\t\t</>\n\t);\n}\n"],"names":["Popup","props","visible","content","trigger","gap","offset","fixed","position","showDelay","hideDelay","touchable","arrow","align","fitSize","watchResize","clickOutside","disabled","referToWindow","style","className","getContainer","children","onVisibleChange","triggerRef","useRef","contentRef","timerRef","statusRef","state","useReactive","show","arrowProps","useMouseUp","e","current","tar","target","isContain","contains","handleToggle","clearTimer","clearTimeout","handleShow","setTimeout","left","top","arrowX","arrowY","arrowPos","getPosition","refWindow","opacity","transform","pos","handleHide","action","undefined","eventMaps","useCreation","click","onClick","hover","onMouseEnter","onMouseLeave","focus","onFocus","onBlur","contextmenu","onContextMenu","preventDefault","stopPropagation","getPointPosition","none","contentTouch","useMemo","events","computePosition","Object","assign","useEffect","observe","unobserve","disconnect","useResizeObserver","useLayoutEffect","vertical","includes","size","_jsxs","_Fragment","Children","map","child","isValidElement","restProps","keys","evt","fn","cloneElement","ref","_jsx","Content"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as r}from"react/jsx-runtime";import{useMouseMove as t,useMouseUp as i}from"../../js/hooks.js";import{useReactive as a}from"ahooks";import n from"classnames";import{useRef as l,useMemo as s,useEffect as o}from"react";import g from"./circle.js";import u from"./line.js";const c=c=>{const{value:m=0,lineWidth:d=8,circleSize:h=40,precision:p=0,style:v,draggable:f=!0,type:b="line",barClass:C,vertical:j,label:x,labelInline:z,className:y,renderCursor:D,onChange:M,onDraggingChange:N}=c,S=l(null),W=a({value:m,dragging:!1,size:0,start:0}),k=j?"pageY":"pageX",w=j?"top":"left",B=j?"height":"width",F=s((()=>{let e=+W.value.toFixed(p);return e=Math.min(100,e),e=Math.max(0,e),e}),[W.value,p]),I=e=>{if(!S.current||!f)return;e.touches&&(e=e.touches[0]);const r=S.current.getBoundingClientRect(),t=100*(e[k]-r[w])/r[B];Object.assign(W,{value:j?100-t:t,size:r[B],start:r[w],dragging:!0}),N?.(!0)};return t((e=>{if(!W.dragging||!f)return;e.preventDefault(),e.touches&&(e=e.touches[0]);const{start:r,size:t}=W,i=e[k]-r;if(i<0||i>t)return;const a=100*(e[k]-r)/t;W.value=j?100-a:a})),i((()=>{W.dragging&&f&&(M?.(F),W.dragging=!1,N?.(!1))})),o((()=>{W.value=m>100?100:m<0?0:m}),[m]),e("div",{className:n("i-input-label",y,{"i-input-inline":z}),style:v,children:[x&&r("span",{className:"i-input-label-text",children:x}),"line"===b&&r(u,{ref:S,vertical:j,lineWidth:d,barClass:C,dragging:W.dragging,value:W.value,renderCursor:D,onMouseDown:I,onTouchStart:I}),"circle"===b&&r(g,{value:W.value,circleSize:h,lineWidth:d})]})};export{c as default};
1
+ import{jsxs as e,jsx as r}from"react/jsx-runtime";import{useReactive as t}from"ahooks";import i from"classnames";import{useRef as a,useMemo as n,useEffect as l}from"react";import{useMouseMove as s,useMouseUp as o}from"../../js/hooks.js";import g from"./circle.js";import u from"./line.js";const c=c=>{const{value:m=0,lineWidth:d=8,circleSize:h=40,precision:p=0,style:v,draggable:f=!0,type:b="line",barClass:C,vertical:j,label:x,labelInline:z,className:y,renderCursor:D,onChange:M,onDraggingChange:N}=c,S=a(null),W=t({value:m,dragging:!1,size:0,start:0}),k=j?"pageY":"pageX",w=j?"top":"left",B=j?"height":"width",F=n((()=>{let e=+W.value.toFixed(p);return e=Math.min(100,e),e=Math.max(0,e),e}),[W.value,p]),I=e=>{if(!S.current||!f)return;e.touches&&(e=e.touches[0]);const r=S.current.getBoundingClientRect(),t=100*(e[k]-r[w])/r[B];Object.assign(W,{value:j?100-t:t,size:r[B],start:r[w],dragging:!0}),N?.(!0)};return s((e=>{if(!W.dragging||!f)return;e.preventDefault(),e.touches&&(e=e.touches[0]);const{start:r,size:t}=W,i=e[k]-r;if(i<0||i>t)return;const a=100*(e[k]-r)/t;W.value=j?100-a:a})),o((()=>{W.dragging&&f&&(M?.(F),W.dragging=!1,N?.(!1))})),l((()=>{W.value=m>100?100:m<0?0:m}),[m]),e("div",{className:i("i-input-label",y,{"i-input-inline":z}),style:v,children:[x&&r("span",{className:"i-input-label-text",children:x}),"line"===b&&r(u,{ref:S,vertical:j,lineWidth:d,barClass:C,dragging:W.dragging,value:W.value,renderCursor:D,onMouseDown:I,onTouchStart:I}),"circle"===b&&r(g,{value:W.value,circleSize:h,lineWidth:d})]})};export{c as default};
2
2
  //# sourceMappingURL=progress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sources":["../../../packages/components/progress/progress.tsx"],"sourcesContent":["import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport Circle from \"./circle\";\nimport \"./index.css\";\nimport Line from \"./line\";\nimport { IProgress } from \"./type\";\n\nconst Progress = (props: IProgress) => {\n\tconst {\n\t\tvalue = 0,\n\t\tlineWidth = 8,\n\t\tcircleSize = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tvertical,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t\tonDraggingChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\tsize: 0,\n\t\tstart: 0,\n\t});\n\n\tconst pageXY = vertical ? \"pageY\" : \"pageX\";\n\tconst rectTL = vertical ? \"top\" : \"left\";\n\tconst rectWH = vertical ? \"height\" : \"width\";\n\n\tconst toFixedValue = useMemo(() => {\n\t\tlet value = +state.value.toFixed(precision);\n\t\tvalue = Math.min(100, value);\n\t\tvalue = Math.max(0, value);\n\n\t\treturn value;\n\t}, [state.value, precision]);\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!ref.current || !draggable) return;\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst rect = ref.current.getBoundingClientRect();\n\t\tconst value = ((e[pageXY] - rect[rectTL]) * 100) / rect[rectWH];\n\n\t\tObject.assign(state, {\n\t\t\tvalue: vertical ? 100 - value : value,\n\t\t\tsize: rect[rectWH],\n\t\t\tstart: rect[rectTL],\n\t\t\tdragging: true,\n\t\t});\n\t\tonDraggingChange?.(true);\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !draggable) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst { start, size } = state;\n\t\tconst offset = e[pageXY] - start;\n\n\t\tif (offset < 0 || offset > size) return;\n\n\t\tconst value = ((e[pageXY] - start) * 100) / size;\n\t\tstate.value = vertical ? 100 - value : value;\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging || !draggable) return;\n\n\t\tonChange?.(toFixedValue);\n\t\tstate.dragging = false;\n\t\tonDraggingChange?.(false);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (value > 100) {\n\t\t\tstate.value = 100;\n\t\t\treturn;\n\t\t}\n\n\t\tif (value < 0) {\n\t\t\tstate.value = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t{type === \"line\" && (\n\t\t\t\t<Line\n\t\t\t\t\tref={ref}\n\t\t\t\t\tvertical={vertical}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t\tbarClass={barClass}\n\t\t\t\t\tdragging={state.dragging}\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\trenderCursor={renderCursor}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{type === \"circle\" && (\n\t\t\t\t<Circle\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tcircleSize={circleSize}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Progress;\n"],"names":["Progress","props","value","lineWidth","circleSize","precision","style","draggable","type","barClass","vertical","label","labelInline","className","renderCursor","onChange","onDraggingChange","ref","useRef","state","useReactive","dragging","size","start","pageXY","rectTL","rectWH","toFixedValue","useMemo","toFixed","Math","min","max","handleMouseDown","e","current","touches","rect","getBoundingClientRect","Object","assign","useMouseMove","preventDefault","offset","useMouseUp","useEffect","_jsxs","classNames","children","_jsx","Line","onMouseDown","onTouchStart","Circle"],"mappings":"iSAUA,MAAMA,EAAYC,IACjB,MAAMC,MACLA,EAAQ,EAACC,UACTA,EAAY,EAACC,WACbA,EAAa,GAAEC,UACfA,EAAY,EAACC,MACbA,EAAKC,UACLA,GAAY,EAAIC,KAChBA,EAAO,OAAMC,SACbA,EAAQC,SACRA,EAAQC,MACRA,EAAKC,YACLA,EAAWC,UACXA,EAASC,aACTA,EAAYC,SACZA,EAAQC,iBACRA,GACGf,EAEEgB,EAAMC,EAAuB,MAC7BC,EAAQC,EAAY,CACzBlB,QACAmB,UAAU,EACVC,KAAM,EACNC,MAAO,IAGFC,EAASd,EAAW,QAAU,QAC9Be,EAASf,EAAW,MAAQ,OAC5BgB,EAAShB,EAAW,SAAW,QAE/BiB,EAAeC,GAAQ,KAC5B,IAAI1B,GAASiB,EAAMjB,MAAM2B,QAAQxB,GAIjC,OAHAH,EAAQ4B,KAAKC,IAAI,IAAK7B,GACtBA,EAAQ4B,KAAKE,IAAI,EAAG9B,GAEbA,CAAK,GACV,CAACiB,EAAMjB,MAAOG,IAEX4B,EAAmBC,IACxB,IAAKjB,EAAIkB,UAAY5B,EAAW,OAE5B2B,EAAEE,UACLF,EAAIA,EAAEE,QAAQ,IAGf,MAAMC,EAAOpB,EAAIkB,QAAQG,wBACnBpC,EAAsC,KAA5BgC,EAAEV,GAAUa,EAAKZ,IAAkBY,EAAKX,GAExDa,OAAOC,OAAOrB,EAAO,CACpBjB,MAAOQ,EAAW,IAAMR,EAAQA,EAChCoB,KAAMe,EAAKX,GACXH,MAAOc,EAAKZ,GACZJ,UAAU,IAEXL,KAAmB,EAAK,EA6CzB,OAjBAyB,GAzByBP,IACxB,IAAKf,EAAME,WAAad,EAAW,OACnC2B,EAAEQ,iBAEER,EAAEE,UACLF,EAAIA,EAAEE,QAAQ,IAGf,MAAMb,MAAEA,EAAKD,KAAEA,GAASH,EAClBwB,EAAST,EAAEV,GAAUD,EAE3B,GAAIoB,EAAS,GAAKA,EAASrB,EAAM,OAEjC,MAAMpB,EAA+B,KAArBgC,EAAEV,GAAUD,GAAgBD,EAC5CH,EAAMjB,MAAQQ,EAAW,IAAMR,EAAQA,CAAK,IAY7C0C,GATsB,KAChBzB,EAAME,UAAad,IAExBQ,IAAWY,GACXR,EAAME,UAAW,EACjBL,KAAmB,GAAM,IAM1B6B,GAAU,KAER1B,EAAMjB,MADHA,EAAQ,IACG,IAIXA,EAAQ,EACG,EAIDA,CAAK,GACjB,CAACA,IAGH4C,SACCjC,UAAWkC,EAAW,gBAAiBlC,EAAW,CACjD,iBAAkBD,IAEnBN,MAAOA,EAEN0C,SAAA,CAAArC,GAASsC,EAAM,OAAA,CAAApC,UAAU,qBAAoBmC,SAAErC,IAEtC,SAATH,GACAyC,EAACC,EACA,CAAAjC,IAAKA,EACLP,SAAUA,EACVP,UAAWA,EACXM,SAAUA,EACVY,SAAUF,EAAME,SAChBnB,MAAOiB,EAAMjB,MACbY,aAAcA,EACdqC,YAAalB,EACbmB,aAAcnB,IAIN,WAATzB,GACAyC,EAACI,EACA,CAAAnD,MAAOiB,EAAMjB,MACbE,WAAYA,EACZD,UAAWA,MAGR"}
1
+ {"version":3,"file":"progress.js","sources":["../../../packages/components/progress/progress.tsx"],"sourcesContent":["import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo, useRef } from \"react\";\nimport \"../../css/input.css\";\nimport { useMouseMove, useMouseUp } from \"../../js/hooks\";\nimport Circle from \"./circle\";\nimport \"./index.css\";\nimport Line from \"./line\";\nimport { IProgress } from \"./type\";\n\nconst Progress = (props: IProgress) => {\n\tconst {\n\t\tvalue = 0,\n\t\tlineWidth = 8,\n\t\tcircleSize = 40,\n\t\tprecision = 0,\n\t\tstyle,\n\t\tdraggable = true,\n\t\ttype = \"line\",\n\t\tbarClass,\n\t\tvertical,\n\t\tlabel,\n\t\tlabelInline,\n\t\tclassName,\n\t\trenderCursor,\n\t\tonChange,\n\t\tonDraggingChange,\n\t} = props;\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\tconst state = useReactive({\n\t\tvalue,\n\t\tdragging: false,\n\t\tsize: 0,\n\t\tstart: 0,\n\t});\n\n\tconst pageXY = vertical ? \"pageY\" : \"pageX\";\n\tconst rectTL = vertical ? \"top\" : \"left\";\n\tconst rectWH = vertical ? \"height\" : \"width\";\n\n\tconst toFixedValue = useMemo(() => {\n\t\tlet value = +state.value.toFixed(precision);\n\t\tvalue = Math.min(100, value);\n\t\tvalue = Math.max(0, value);\n\n\t\treturn value;\n\t}, [state.value, precision]);\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!ref.current || !draggable) return;\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst rect = ref.current.getBoundingClientRect();\n\t\tconst value = ((e[pageXY] - rect[rectTL]) * 100) / rect[rectWH];\n\n\t\tObject.assign(state, {\n\t\t\tvalue: vertical ? 100 - value : value,\n\t\t\tsize: rect[rectWH],\n\t\t\tstart: rect[rectTL],\n\t\t\tdragging: true,\n\t\t});\n\t\tonDraggingChange?.(true);\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !draggable) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst { start, size } = state;\n\t\tconst offset = e[pageXY] - start;\n\n\t\tif (offset < 0 || offset > size) return;\n\n\t\tconst value = ((e[pageXY] - start) * 100) / size;\n\t\tstate.value = vertical ? 100 - value : value;\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.dragging || !draggable) return;\n\n\t\tonChange?.(toFixedValue);\n\t\tstate.dragging = false;\n\t\tonDraggingChange?.(false);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseEffect(() => {\n\t\tif (value > 100) {\n\t\t\tstate.value = 100;\n\t\t\treturn;\n\t\t}\n\n\t\tif (value < 0) {\n\t\t\tstate.value = 0;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\"i-input-label\", className, {\n\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t})}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{label && <span className='i-input-label-text'>{label}</span>}\n\n\t\t\t{type === \"line\" && (\n\t\t\t\t<Line\n\t\t\t\t\tref={ref}\n\t\t\t\t\tvertical={vertical}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t\tbarClass={barClass}\n\t\t\t\t\tdragging={state.dragging}\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\trenderCursor={renderCursor}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{type === \"circle\" && (\n\t\t\t\t<Circle\n\t\t\t\t\tvalue={state.value}\n\t\t\t\t\tcircleSize={circleSize}\n\t\t\t\t\tlineWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default Progress;\n"],"names":["Progress","props","value","lineWidth","circleSize","precision","style","draggable","type","barClass","vertical","label","labelInline","className","renderCursor","onChange","onDraggingChange","ref","useRef","state","useReactive","dragging","size","start","pageXY","rectTL","rectWH","toFixedValue","useMemo","toFixed","Math","min","max","handleMouseDown","e","current","touches","rect","getBoundingClientRect","Object","assign","useMouseMove","preventDefault","offset","useMouseUp","useEffect","_jsxs","classNames","children","_jsx","Line","onMouseDown","onTouchStart","Circle"],"mappings":"iSAUA,MAAMA,EAAYC,IACjB,MAAMC,MACLA,EAAQ,EAACC,UACTA,EAAY,EAACC,WACbA,EAAa,GAAEC,UACfA,EAAY,EAACC,MACbA,EAAKC,UACLA,GAAY,EAAIC,KAChBA,EAAO,OAAMC,SACbA,EAAQC,SACRA,EAAQC,MACRA,EAAKC,YACLA,EAAWC,UACXA,EAASC,aACTA,EAAYC,SACZA,EAAQC,iBACRA,GACGf,EAEEgB,EAAMC,EAAuB,MAC7BC,EAAQC,EAAY,CACzBlB,QACAmB,UAAU,EACVC,KAAM,EACNC,MAAO,IAGFC,EAASd,EAAW,QAAU,QAC9Be,EAASf,EAAW,MAAQ,OAC5BgB,EAAShB,EAAW,SAAW,QAE/BiB,EAAeC,GAAQ,KAC5B,IAAI1B,GAASiB,EAAMjB,MAAM2B,QAAQxB,GAIjC,OAHAH,EAAQ4B,KAAKC,IAAI,IAAK7B,GACtBA,EAAQ4B,KAAKE,IAAI,EAAG9B,GAEbA,CAAK,GACV,CAACiB,EAAMjB,MAAOG,IAEX4B,EAAmBC,IACxB,IAAKjB,EAAIkB,UAAY5B,EAAW,OAE5B2B,EAAEE,UACLF,EAAIA,EAAEE,QAAQ,IAGf,MAAMC,EAAOpB,EAAIkB,QAAQG,wBACnBpC,EAAsC,KAA5BgC,EAAEV,GAAUa,EAAKZ,IAAkBY,EAAKX,GAExDa,OAAOC,OAAOrB,EAAO,CACpBjB,MAAOQ,EAAW,IAAMR,EAAQA,EAChCoB,KAAMe,EAAKX,GACXH,MAAOc,EAAKZ,GACZJ,UAAU,IAEXL,KAAmB,EAAK,EA6CzB,OAjBAyB,GAzByBP,IACxB,IAAKf,EAAME,WAAad,EAAW,OACnC2B,EAAEQ,iBAEER,EAAEE,UACLF,EAAIA,EAAEE,QAAQ,IAGf,MAAMb,MAAEA,EAAKD,KAAEA,GAASH,EAClBwB,EAAST,EAAEV,GAAUD,EAE3B,GAAIoB,EAAS,GAAKA,EAASrB,EAAM,OAEjC,MAAMpB,EAA+B,KAArBgC,EAAEV,GAAUD,GAAgBD,EAC5CH,EAAMjB,MAAQQ,EAAW,IAAMR,EAAQA,CAAK,IAY7C0C,GATsB,KAChBzB,EAAME,UAAad,IAExBQ,IAAWY,GACXR,EAAME,UAAW,EACjBL,KAAmB,GAAM,IAM1B6B,GAAU,KAER1B,EAAMjB,MADHA,EAAQ,IACG,IAIXA,EAAQ,EACG,EAIDA,CAAK,GACjB,CAACA,IAGH4C,SACCjC,UAAWkC,EAAW,gBAAiBlC,EAAW,CACjD,iBAAkBD,IAEnBN,MAAOA,EAEN0C,SAAA,CAAArC,GAASsC,EAAM,OAAA,CAAApC,UAAU,qBAAoBmC,SAAErC,IAEtC,SAATH,GACAyC,EAACC,EACA,CAAAjC,IAAKA,EACLP,SAAUA,EACVP,UAAWA,EACXM,SAAUA,EACVY,SAAUF,EAAME,SAChBnB,MAAOiB,EAAMjB,MACbY,aAAcA,EACdqC,YAAalB,EACbmB,aAAcnB,IAIN,WAATzB,GACAyC,EAACI,EACA,CAAAnD,MAAOiB,EAAMjB,MACbE,WAAYA,EACZD,UAAWA,MAGR"}
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as a}from"react/jsx-runtime";import{formatOption as i}from"../../js/utils.js";import{useReactive as l}from"ahooks";import n from"classnames";import{useMemo as o,useEffect as r}from"react";import s from"./item.js";function t(t){const{label:m,name:d,options:u,value:c,type:p="default",status:b="normal",message:v,optionInline:h=!0,labelInline:f,disabled:N,required:g,className:j,renderItem:I,onChange:k}=t,x=l({value:c}),y=o((()=>i(u)),[u]),C=(e,a)=>{x.value=e,k?.(e,a)};return r((()=>{x.value=c}),[c]),e("div",{className:n("i-radio i-input-label",{[`i-radio-${b}`]:"normal"!==b,"i-input-inline":f},j),children:[m&&e("span",{className:"i-input-label-text",children:[g&&a("span",{className:"error",children:"*"}),m,v&&a("p",{className:"i-radio-message",children:v})]}),a("div",{className:n("i-radio-options",{"i-options-block":!h,"i-radio-options-button":"button"===p}),children:y.map((e=>{const i=x.value===e.value;return a(s,{name:d,value:e.value,checked:i,type:p,disabled:N||e.disabled,onChange:C,children:I??e.label},e.value)}))})]})}t.Item=s;export{t as default};
1
+ import{jsxs as e,jsx as a}from"react/jsx-runtime";import{useReactive as i}from"ahooks";import l from"classnames";import{useMemo as n,useEffect as o}from"react";import{formatOption as r}from"../../js/utils.js";import s from"./item.js";function t(t){const{label:m,name:d,options:u,value:c,type:p="default",status:b="normal",message:v,optionInline:h=!0,labelInline:f,disabled:N,required:g,className:j,renderItem:I,onChange:k}=t,x=i({value:c}),y=n((()=>r(u)),[u]),C=(e,a)=>{x.value=e,k?.(e,a)};return o((()=>{x.value=c}),[c]),e("div",{className:l("i-radio i-input-label",{[`i-radio-${b}`]:"normal"!==b,"i-input-inline":f},j),children:[m&&e("span",{className:"i-input-label-text",children:[g&&a("span",{className:"error",children:"*"}),m,v&&a("p",{className:"i-radio-message",children:v})]}),a("div",{className:l("i-radio-options",{"i-options-block":!h,"i-radio-options-button":"button"===p}),children:y.map((e=>{const i=x.value===e.value;return a(s,{name:d,value:e.value,checked:i,type:p,disabled:N||e.disabled,onChange:C,children:I??e.label},e.value)}))})]})}t.Item=s;export{t as default};
2
2
  //# sourceMappingURL=radio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio.js","sources":["../../../packages/components/radio/radio.tsx"],"sourcesContent":["import { formatOption } from \"@p/js/utils\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport \"./index.css\";\nimport RadioItem from \"./item\";\nimport { IRadio } from \"./type\";\n\nfunction Radio(props: IRadio) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions,\n\t\tvalue,\n\t\ttype = \"default\",\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\trequired,\n\t\tclassName,\n\t\trenderItem,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (value, e) => {\n\t\tstate.value = value;\n\t\tonChange?.(value, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-radio i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-radio-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-radio-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-radio-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-radio-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\tconst checked = state.value === option.value;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<RadioItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderItem ?? option.label}\n\t\t\t\t\t\t</RadioItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nRadio.Item = RadioItem;\n\nexport default Radio;\n"],"names":["Radio","props","label","name","options","value","type","status","message","optionInline","labelInline","disabled","required","className","renderItem","onChange","state","useReactive","formattedOptions","useMemo","formatOption","handleChange","e","useEffect","_jsxs","classNames","children","_jsx","map","option","checked","RadioItem","Item"],"mappings":"0OASA,SAASA,EAAMC,GACd,MAAMC,MACLA,EAAKC,KACLA,EAAIC,QACJA,EAAOC,MACPA,EAAKC,KACLA,EAAO,UAASC,OAChBA,EAAS,SAAQC,QACjBA,EAAOC,aACPA,GAAe,EAAIC,YACnBA,EAAWC,SACXA,EAAQC,SACRA,EAAQC,UACRA,EAASC,WACTA,EAAUC,SACVA,GACGd,EAEEe,EAAQC,EAAY,CACzBZ,UAGKa,EAAmBC,GAAQ,IAAMC,EAAahB,IAAU,CAACA,IAEzDiB,EAAe,CAAChB,EAAOiB,KAC5BN,EAAMX,MAAQA,EACdU,IAAWV,EAAOiB,EAAE,EAOrB,OAJAC,GAAU,KACTP,EAAMX,MAAQA,CAAK,GACjB,CAACA,IAGHmB,EACC,MAAA,CAAAX,UAAWY,EACV,wBACA,CACC,CAAC,WAAWlB,KAAsB,WAAXA,EACvB,iBAAkBG,GAEnBG,GACAa,SAAA,CAEAxB,GACAsB,EAAM,OAAA,CAAAX,UAAU,+BACdD,GAAYe,UAAMd,UAAU,QAAgBa,SAAA,MAC5CxB,EAEAM,GAAWmB,EAAA,IAAA,CAAGd,UAAU,2BAAmBL,OAI9CmB,EACC,MAAA,CAAAd,UAAWY,EAAW,kBAAmB,CACxC,mBAAoBhB,EACpB,yBAAmC,WAATH,IACzBoB,SAEDR,EAAiBU,KAAKC,IACtB,MAAMC,EAAUd,EAAMX,QAAUwB,EAAOxB,MAEvC,OACCsB,EAACI,EAAS,CAET5B,KAAMA,EACNE,MAAOwB,EAAOxB,MACdyB,QAASA,EACTxB,KAAMA,EACNK,SAAUA,GAAYkB,EAAOlB,SAC7BI,SAAUM,EAAYK,SAErBZ,GAAce,EAAO3B,OARjB2B,EAAOxB,MASD,QAMlB,CAEAL,EAAMgC,KAAOD"}
1
+ {"version":3,"file":"radio.js","sources":["../../../packages/components/radio/radio.tsx"],"sourcesContent":["import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useEffect, useMemo } from \"react\";\nimport \"../../css/input.css\";\nimport { formatOption } from \"../../js/utils\";\nimport \"./index.css\";\nimport RadioItem from \"./item\";\nimport { IRadio } from \"./type\";\n\nfunction Radio(props: IRadio) {\n\tconst {\n\t\tlabel,\n\t\tname,\n\t\toptions,\n\t\tvalue,\n\t\ttype = \"default\",\n\t\tstatus = \"normal\",\n\t\tmessage,\n\t\toptionInline = true,\n\t\tlabelInline,\n\t\tdisabled,\n\t\trequired,\n\t\tclassName,\n\t\trenderItem,\n\t\tonChange,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tvalue,\n\t});\n\n\tconst formattedOptions = useMemo(() => formatOption(options), [options]);\n\n\tconst handleChange = (value, e) => {\n\t\tstate.value = value;\n\t\tonChange?.(value, e);\n\t};\n\n\tuseEffect(() => {\n\t\tstate.value = value;\n\t}, [value]);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-radio i-input-label\",\n\t\t\t\t{\n\t\t\t\t\t[`i-radio-${status}`]: status !== \"normal\",\n\t\t\t\t\t\"i-input-inline\": labelInline,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t{label && (\n\t\t\t\t<span className='i-input-label-text'>\n\t\t\t\t\t{required && <span className='error'>*</span>}\n\t\t\t\t\t{label}\n\n\t\t\t\t\t{message && <p className='i-radio-message'>{message}</p>}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-radio-options\", {\n\t\t\t\t\t\"i-options-block\": !optionInline,\n\t\t\t\t\t\"i-radio-options-button\": type === \"button\",\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{formattedOptions.map((option) => {\n\t\t\t\t\tconst checked = state.value === option.value;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<RadioItem\n\t\t\t\t\t\t\tkey={option.value as string}\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\tdisabled={disabled || option.disabled}\n\t\t\t\t\t\t\tonChange={handleChange}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{renderItem ?? option.label}\n\t\t\t\t\t\t</RadioItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nRadio.Item = RadioItem;\n\nexport default Radio;\n"],"names":["Radio","props","label","name","options","value","type","status","message","optionInline","labelInline","disabled","required","className","renderItem","onChange","state","useReactive","formattedOptions","useMemo","formatOption","handleChange","e","useEffect","_jsxs","classNames","children","_jsx","map","option","checked","RadioItem","Item"],"mappings":"0OASA,SAASA,EAAMC,GACd,MAAMC,MACLA,EAAKC,KACLA,EAAIC,QACJA,EAAOC,MACPA,EAAKC,KACLA,EAAO,UAASC,OAChBA,EAAS,SAAQC,QACjBA,EAAOC,aACPA,GAAe,EAAIC,YACnBA,EAAWC,SACXA,EAAQC,SACRA,EAAQC,UACRA,EAASC,WACTA,EAAUC,SACVA,GACGd,EAEEe,EAAQC,EAAY,CACzBZ,UAGKa,EAAmBC,GAAQ,IAAMC,EAAahB,IAAU,CAACA,IAEzDiB,EAAe,CAAChB,EAAOiB,KAC5BN,EAAMX,MAAQA,EACdU,IAAWV,EAAOiB,EAAE,EAOrB,OAJAC,GAAU,KACTP,EAAMX,MAAQA,CAAK,GACjB,CAACA,IAGHmB,EACC,MAAA,CAAAX,UAAWY,EACV,wBACA,CACC,CAAC,WAAWlB,KAAsB,WAAXA,EACvB,iBAAkBG,GAEnBG,GACAa,SAAA,CAEAxB,GACAsB,EAAM,OAAA,CAAAX,UAAU,+BACdD,GAAYe,UAAMd,UAAU,QAAgBa,SAAA,MAC5CxB,EAEAM,GAAWmB,EAAA,IAAA,CAAGd,UAAU,2BAAmBL,OAI9CmB,EACC,MAAA,CAAAd,UAAWY,EAAW,kBAAmB,CACxC,mBAAoBhB,EACpB,yBAAmC,WAATH,IACzBoB,SAEDR,EAAiBU,KAAKC,IACtB,MAAMC,EAAUd,EAAMX,QAAUwB,EAAOxB,MAEvC,OACCsB,EAACI,EAAS,CAET5B,KAAMA,EACNE,MAAOwB,EAAOxB,MACdyB,QAASA,EACTxB,KAAMA,EACNK,SAAUA,GAAYkB,EAAOlB,SAC7BI,SAAUM,EAAYK,SAErBZ,GAAce,EAAO3B,OARjB2B,EAAOxB,MASD,QAMlB,CAEAL,EAAMgC,KAAOD"}
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as i}from"react/jsx-runtime";import{useMouseUp as t,useMouseMove as s}from"../../js/hooks.js";import{useReactive as r}from"ahooks";import a from"classnames";import{useRef as n}from"react";const o=o=>{const{other:l,children:c,vertical:h,height:m,size:z="auto",minSize:d=0,maxSize:g="100%",style:u,line:f,className:p,asPercent:v,onResize:b,onResizeComplete:x}=o,N=r({size:z,resizing:!1,start:0,total:0}),j=n(null),w=()=>{const e=j.current?.getBoundingClientRect();if(e){if(N.resizing=!0,h)return N.total=e.height,void(N.start=e.top);N.total=e.width,N.start=e.left}};return t((()=>{N.resizing&&(N.resizing=!1,x?.(N.size))})),s((e=>{if(!N.resizing)return;e.preventDefault(),e.touches&&(e=e.touches[0]);const i=e[h?"pageY":"pageX"]-N.start;N.size=v?i/N.total*100+"%":i,b?.(N.size)})),e("div",{ref:j,className:a("i-resizable",p,{"i-resizable-vertical":h}),style:{...u,height:m},children:[i("div",{className:"i-resizable-a",style:{[h?"height":"width"]:N.size,[h?"minHeight":"minWidth"]:d,[h?"maxHeight":"maxWidth"]:g},children:l}),i("div",{className:a("i-resizable-line",{"i-resizable-resizing":N.resizing}),onMouseDown:w,onTouchStart:w,onContextMenu:e=>e.preventDefault(),children:i("div",{className:"i-resizable-line-node",children:f})}),i("div",{className:"i-resizable-b",children:c})]})};export{o as default};
1
+ import{jsxs as e,jsx as i}from"react/jsx-runtime";import{useReactive as t}from"ahooks";import s from"classnames";import{useRef as r}from"react";import{useMouseUp as a,useMouseMove as n}from"../../js/hooks.js";const o=o=>{const{other:l,children:c,vertical:h,height:m,size:z="auto",minSize:d=0,maxSize:g="100%",style:u,line:f,className:p,asPercent:v,onResize:b,onResizeComplete:x}=o,N=t({size:z,resizing:!1,start:0,total:0}),j=r(null),w=()=>{const e=j.current?.getBoundingClientRect();if(e){if(N.resizing=!0,h)return N.total=e.height,void(N.start=e.top);N.total=e.width,N.start=e.left}};return a((()=>{N.resizing&&(N.resizing=!1,x?.(N.size))})),n((e=>{if(!N.resizing)return;e.preventDefault(),e.touches&&(e=e.touches[0]);const i=e[h?"pageY":"pageX"]-N.start;N.size=v?i/N.total*100+"%":i,b?.(N.size)})),e("div",{ref:j,className:s("i-resizable",p,{"i-resizable-vertical":h}),style:{...u,height:m},children:[i("div",{className:"i-resizable-a",style:{[h?"height":"width"]:N.size,[h?"minHeight":"minWidth"]:d,[h?"maxHeight":"maxWidth"]:g},children:l}),i("div",{className:s("i-resizable-line",{"i-resizable-resizing":N.resizing}),onMouseDown:w,onTouchStart:w,onContextMenu:e=>e.preventDefault(),children:i("div",{className:"i-resizable-line-node",children:f})}),i("div",{className:"i-resizable-b",children:c})]})};export{o as default};
2
2
  //# sourceMappingURL=resizable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resizable.js","sources":["../../../packages/components/resizable/resizable.tsx"],"sourcesContent":["import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useRef } from \"react\";\nimport \"./index.css\";\nimport { IResizable } from \"./type\";\n\nconst Resizable = (props: IResizable) => {\n\tconst {\n\t\tother,\n\t\tchildren,\n\t\tvertical,\n\t\theight,\n\t\tsize = \"auto\",\n\t\tminSize = 0,\n\t\tmaxSize = \"100%\",\n\t\tstyle,\n\t\tline,\n\t\tclassName,\n\t\tasPercent,\n\t\tonResize,\n\t\tonResizeComplete,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tsize,\n\t\tresizing: false,\n\t\tstart: 0,\n\t\ttotal: 0,\n\t});\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst handleMouseDown = () => {\n\t\tconst rect = ref.current?.getBoundingClientRect();\n\t\tif (!rect) return;\n\n\t\tstate.resizing = true;\n\n\t\tif (vertical) {\n\t\t\tstate.total = rect.height;\n\t\t\tstate.start = rect.top;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.total = rect.width;\n\t\tstate.start = rect.left;\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst d = e[vertical ? \"pageY\" : \"pageX\"];\n\t\tconst offset = d - state.start;\n\n\t\tstate.size = asPercent ? `${(offset / state.total) * 100}%` : offset;\n\t\tonResize?.(state.size);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t\tonResizeComplete?.(state.size);\n\t};\n\n\tuseMouseUp(handleMouseUp);\n\tuseMouseMove(handleMouseMove);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-resizable\", className, {\n\t\t\t\t[`i-resizable-vertical`]: vertical,\n\t\t\t})}\n\t\t\tstyle={{ ...style, height }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-resizable-a'\n\t\t\t\tstyle={{\n\t\t\t\t\t[vertical ? \"height\" : \"width\"]: state.size,\n\t\t\t\t\t[vertical ? \"minHeight\" : \"minWidth\"]: minSize,\n\t\t\t\t\t[vertical ? \"maxHeight\" : \"maxWidth\"]: maxSize,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{other}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-resizable-line\", {\n\t\t\t\t\t[`i-resizable-resizing`]: state.resizing,\n\t\t\t\t})}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t<div className='i-resizable-line-node'>{line}</div>\n\t\t\t</div>\n\n\t\t\t<div className='i-resizable-b'>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Resizable;\n"],"names":["Resizable","props","other","children","vertical","height","size","minSize","maxSize","style","line","className","asPercent","onResize","onResizeComplete","state","useReactive","resizing","start","total","ref","useRef","handleMouseDown","rect","current","getBoundingClientRect","top","width","left","useMouseUp","useMouseMove","e","preventDefault","touches","offset","_jsxs","classNames","_jsx","onMouseDown","onTouchStart","onContextMenu"],"mappings":"iNAOA,MAAMA,EAAaC,IAClB,MAAMC,MACLA,EAAKC,SACLA,EAAQC,SACRA,EAAQC,OACRA,EAAMC,KACNA,EAAO,OAAMC,QACbA,EAAU,EAACC,QACXA,EAAU,OAAMC,MAChBA,EAAKC,KACLA,EAAIC,UACJA,EAASC,UACTA,EAASC,SACTA,EAAQC,iBACRA,GACGb,EAEEc,EAAQC,EAAY,CACzBV,OACAW,UAAU,EACVC,MAAO,EACPC,MAAO,IAGFC,EAAMC,EAAuB,MAE7BC,EAAkB,KACvB,MAAMC,EAAOH,EAAII,SAASC,wBAC1B,GAAKF,EAAL,CAIA,GAFAR,EAAME,UAAW,EAEbb,EAGH,OAFAW,EAAMI,MAAQI,EAAKlB,YACnBU,EAAMG,MAAQK,EAAKG,KAIpBX,EAAMI,MAAQI,EAAKI,MACnBZ,EAAMG,MAAQK,EAAKK,IAXR,CAWY,EA6BxB,OAHAC,GAPsB,KAChBd,EAAME,WAEXF,EAAME,UAAW,EACjBH,IAAmBC,EAAMT,MAAK,IAI/BwB,GAxByBC,IACxB,IAAKhB,EAAME,SAAU,OAErBc,EAAEC,iBAEED,EAAEE,UACLF,EAAIA,EAAEE,QAAQ,IAGf,MACMC,EADIH,EAAE3B,EAAW,QAAU,SACdW,EAAMG,MAEzBH,EAAMT,KAAOM,EAAgBsB,EAASnB,EAAMI,MAAS,IAA5B,IAAqCe,EAC9DrB,IAAWE,EAAMT,KAAK,IActB6B,EAAA,MAAA,CACCf,IAAKA,EACLT,UAAWyB,EAAW,cAAezB,EAAW,CAC/C,uBAA0BP,IAE3BK,MAAO,IAAKA,EAAOJ,UAAQF,SAAA,CAE3BkC,SACC1B,UAAU,gBACVF,MAAO,CACN,CAACL,EAAW,SAAW,SAAUW,EAAMT,KACvC,CAACF,EAAW,YAAc,YAAaG,EACvC,CAACH,EAAW,YAAc,YAAaI,GAGvCL,SAAAD,IAGFmC,EAAA,MAAA,CACC1B,UAAWyB,EAAW,mBAAoB,CACzC,uBAA0BrB,EAAME,WAEjCqB,YAAahB,EACbiB,aAAcjB,EACdkB,cAAgBT,GAAMA,EAAEC,iBAAgB7B,SAExCkC,SAAK1B,UAAU,wBAAyBR,SAAAO,MAGzC2B,EAAK,MAAA,CAAA1B,UAAU,gBAAeR,SAAEA,MAC3B"}
1
+ {"version":3,"file":"resizable.js","sources":["../../../packages/components/resizable/resizable.tsx"],"sourcesContent":["import { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { useRef } from \"react\";\nimport { useMouseMove, useMouseUp } from \"../../js/hooks\";\nimport \"./index.css\";\nimport { IResizable } from \"./type\";\n\nconst Resizable = (props: IResizable) => {\n\tconst {\n\t\tother,\n\t\tchildren,\n\t\tvertical,\n\t\theight,\n\t\tsize = \"auto\",\n\t\tminSize = 0,\n\t\tmaxSize = \"100%\",\n\t\tstyle,\n\t\tline,\n\t\tclassName,\n\t\tasPercent,\n\t\tonResize,\n\t\tonResizeComplete,\n\t} = props;\n\n\tconst state = useReactive({\n\t\tsize,\n\t\tresizing: false,\n\t\tstart: 0,\n\t\ttotal: 0,\n\t});\n\n\tconst ref = useRef<HTMLDivElement>(null);\n\n\tconst handleMouseDown = () => {\n\t\tconst rect = ref.current?.getBoundingClientRect();\n\t\tif (!rect) return;\n\n\t\tstate.resizing = true;\n\n\t\tif (vertical) {\n\t\t\tstate.total = rect.height;\n\t\t\tstate.start = rect.top;\n\t\t\treturn;\n\t\t}\n\n\t\tstate.total = rect.width;\n\t\tstate.start = rect.left;\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.resizing) return;\n\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst d = e[vertical ? \"pageY\" : \"pageX\"];\n\t\tconst offset = d - state.start;\n\n\t\tstate.size = asPercent ? `${(offset / state.total) * 100}%` : offset;\n\t\tonResize?.(state.size);\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tif (!state.resizing) return;\n\n\t\tstate.resizing = false;\n\t\tonResizeComplete?.(state.size);\n\t};\n\n\tuseMouseUp(handleMouseUp);\n\tuseMouseMove(handleMouseMove);\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tclassName={classNames(\"i-resizable\", className, {\n\t\t\t\t[`i-resizable-vertical`]: vertical,\n\t\t\t})}\n\t\t\tstyle={{ ...style, height }}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-resizable-a'\n\t\t\t\tstyle={{\n\t\t\t\t\t[vertical ? \"height\" : \"width\"]: state.size,\n\t\t\t\t\t[vertical ? \"minHeight\" : \"minWidth\"]: minSize,\n\t\t\t\t\t[vertical ? \"maxHeight\" : \"maxWidth\"]: maxSize,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{other}\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-resizable-line\", {\n\t\t\t\t\t[`i-resizable-resizing`]: state.resizing,\n\t\t\t\t})}\n\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t>\n\t\t\t\t<div className='i-resizable-line-node'>{line}</div>\n\t\t\t</div>\n\n\t\t\t<div className='i-resizable-b'>{children}</div>\n\t\t</div>\n\t);\n};\n\nexport default Resizable;\n"],"names":["Resizable","props","other","children","vertical","height","size","minSize","maxSize","style","line","className","asPercent","onResize","onResizeComplete","state","useReactive","resizing","start","total","ref","useRef","handleMouseDown","rect","current","getBoundingClientRect","top","width","left","useMouseUp","useMouseMove","e","preventDefault","touches","offset","_jsxs","classNames","_jsx","onMouseDown","onTouchStart","onContextMenu"],"mappings":"iNAOA,MAAMA,EAAaC,IAClB,MAAMC,MACLA,EAAKC,SACLA,EAAQC,SACRA,EAAQC,OACRA,EAAMC,KACNA,EAAO,OAAMC,QACbA,EAAU,EAACC,QACXA,EAAU,OAAMC,MAChBA,EAAKC,KACLA,EAAIC,UACJA,EAASC,UACTA,EAASC,SACTA,EAAQC,iBACRA,GACGb,EAEEc,EAAQC,EAAY,CACzBV,OACAW,UAAU,EACVC,MAAO,EACPC,MAAO,IAGFC,EAAMC,EAAuB,MAE7BC,EAAkB,KACvB,MAAMC,EAAOH,EAAII,SAASC,wBAC1B,GAAKF,EAAL,CAIA,GAFAR,EAAME,UAAW,EAEbb,EAGH,OAFAW,EAAMI,MAAQI,EAAKlB,YACnBU,EAAMG,MAAQK,EAAKG,KAIpBX,EAAMI,MAAQI,EAAKI,MACnBZ,EAAMG,MAAQK,EAAKK,IAXR,CAWY,EA6BxB,OAHAC,GAPsB,KAChBd,EAAME,WAEXF,EAAME,UAAW,EACjBH,IAAmBC,EAAMT,MAAK,IAI/BwB,GAxByBC,IACxB,IAAKhB,EAAME,SAAU,OAErBc,EAAEC,iBAEED,EAAEE,UACLF,EAAIA,EAAEE,QAAQ,IAGf,MACMC,EADIH,EAAE3B,EAAW,QAAU,SACdW,EAAMG,MAEzBH,EAAMT,KAAOM,EAAgBsB,EAASnB,EAAMI,MAAS,IAA5B,IAAqCe,EAC9DrB,IAAWE,EAAMT,KAAK,IActB6B,EAAA,MAAA,CACCf,IAAKA,EACLT,UAAWyB,EAAW,cAAezB,EAAW,CAC/C,uBAA0BP,IAE3BK,MAAO,IAAKA,EAAOJ,UAAQF,SAAA,CAE3BkC,SACC1B,UAAU,gBACVF,MAAO,CACN,CAACL,EAAW,SAAW,SAAUW,EAAMT,KACvC,CAACF,EAAW,YAAc,YAAaG,EACvC,CAACH,EAAW,YAAc,YAAaI,GAGvCL,SAAAD,IAGFmC,EAAA,MAAA,CACC1B,UAAWyB,EAAW,mBAAoB,CACzC,uBAA0BrB,EAAME,WAEjCqB,YAAahB,EACbiB,aAAcjB,EACdkB,cAAgBT,GAAMA,EAAEC,iBAAgB7B,SAExCkC,SAAK1B,UAAU,wBAAyBR,SAAAO,MAGzC2B,EAAK,MAAA,CAAA1B,UAAU,gBAAeR,SAAEA,MAC3B"}
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as r,Fragment as t}from"react/jsx-runtime";import{useMouseMove as i,useMouseUp as n}from"../../js/hooks.js";import{clamp as s}from"../../js/utils.js";import{KeyboardArrowLeftRound as a,KeyboardArrowRightRound as o}from"@ricons/material";import{useReactive as c}from"ahooks";import l from"classnames";import{useRef as u,useMemo as d,Children as m,useImperativeHandle as p,useEffect as f}from"react";import g from"../icon/icon.js";import h from"./item.js";const w=w=>{const{ref:v,type:T="normal",initial:y=0,display:b=1,scroll:j=1,loop:x=!0,vertical:N,prev:k=e(g,{icon:e(a,{}),size:"2em"}),next:M=e(g,{icon:e(o,{}),size:"2em"}),duration:S=600,interval:$=3e3,autoplay:I,pauseOnHover:z,arrow:C=!0,reverse:H,draggable:O,dragOffset:D=40,gap:X=0,itemHeight:Y,indicator:A,fixedIndicator:P,style:W,className:B,children:L,renderIndicator:q,onBeforeSwipe:E,onAfterSwipe:F,onItemClick:G}=w,J=u(null),K=u(null),Q=`all ${S/1e3}s`,R=c({current:y,swipable:!0,transition:"fade"===T?"none":Q,dragStart:0,dragging:!1,initialized:!1}),U=d((()=>m.map(L,(e=>{if(e.type===h)return e}))),[L]),[V,Z,_,ee,re]=d((()=>{const e="normal"===T&&x&&U.length>b?b+1:0;let r=[];if(e<=0)r=[...U];else{const t=U.slice(0,e);r=[...U.slice(-e),...U,...t]}const t=r.length/b*100+"%";return[r,e,U.length,r.length,t]}),[b,x,T,U]),te=d((()=>-100*(R.current+Z)/ee),[R.current,ee]),ie=d((()=>{if(_<=b||"fade"===T)return;return`translate3d(${N?`0, ${te}%`:`${te}%, 0`}, 0)`}),[te,N,b,_,T]),ne=d((()=>{if(N&&Y)return{height:Y*b}}),[N,Y,b]),se=d((()=>Array.from({length:Math.ceil((_-b)/j)+1})),[x,A]),ae=()=>{clearTimeout(K.current),K.current=null},oe=e=>{if(!R.swipable||e===R.current)return;R.swipable=!1,E?.(R.current);let r=!1,t=e;const i=_-b;return x?e>i?(r=!0,e=_,t=0):e<0&&(r=!0,e=-b,t=i):(t=s(t,0,i),e=t),setTimeout((()=>{R.swipable=!0}),S+32),"fade"===T?(R.current=t,void F?.(t)):(R.current=e,r?void setTimeout((()=>{R.transition="none",R.current=t,F?.(t),I&&(K.current=setTimeout(ce,$)),setTimeout((()=>{R.transition=Q}),60)}),S+20):(I&&(K.current=setTimeout(ce,$)),void setTimeout((()=>{F?.(t)}),S+12)))},ce=()=>{oe(H?R.current-j:R.current+j)},le=()=>{oe(H?R.current+j:R.current-j)},ue=e=>{O&&R.swipable&&"fade"!==T&&(e.stopPropagation(),e.preventDefault(),e.touches&&(e=e.touches[0]),Object.assign(R,{dragStart:N?e.clientY:e.clientX,dragging:!0,transition:"none"}))};return i((e=>{if(!R.dragging||!J.current)return;e.preventDefault(),e.touches&&(e=e.touches[0]);const r=61.8*((N?e.clientY:e.clientX)-R.dragStart)/J.current[N?"offsetHeight":"offsetWidth"]+te;J.current.style.transform=`translate3d(${N?`0, ${r}%`:`${r}%, 0`}, 0)`})),n((e=>{if(!R.dragging||!J.current)return;e.changedTouches&&(e=e.changedTouches[0]);const r=N?e.clientY:e.clientX,t=J.current[N?"offsetHeight":"offsetWidth"]/ee,i=.618*(r-R.dragStart),n=Math.abs(i);if(n>D){const e=Math.floor(n/t)+(n%t-D>0?1:0);let r=R.current+(i>0?-e:e);oe(r)}J.current.style.transform=ie||"",Object.assign(R,{dragging:!1,transition:Q})})),p(v,(()=>({swipeTo:oe,swipeNext:ce,swipePrev:le}))),f((()=>{if(I)return K.current=setTimeout(ce,$),()=>{clearTimeout(K.current),K.current=null}}),[I,$]),r("div",{style:W,className:l("i-swiper",{"i-swiper-vertical":N,"i-swiper-initialized":R.initialized},B),children:[r("div",{className:"i-swiper-track",style:ne,onMouseOver:()=>{z&&ae()},onMouseLeave:()=>{z&&(ae(),K.current=setTimeout(ce,$))},children:[e("div",{ref:J,className:l("i-swiper-list",{"i-swiper-fade":"fade"===T}),style:{[N?"height":"width"]:re,transform:ie,transition:R.transition},onMouseDown:ue,onTouchStart:ue,children:V.map(((r,t)=>{const{props:i}=r;return e(h,{index:t,itemIndex:(t-Z+_)%_,active:t-Z===R.current,type:T,gap:X,transition:Q,itemHeight:Y,vertical:N,onItemClick:G,...i},t)}))}),C&&r(t,{children:[(x||0!==R.current)&&e("a",{className:"i-swiper-arrow i-swiper-prev",onClick:le,children:k}),(x||R.current<_-b)&&e("a",{className:"i-swiper-arrow i-swiper-next",onClick:ce,children:M})]})]}),A&&e("div",{className:l("i-swiper-indicators",{"i-swiper-indicators-fixed":P}),children:se.map(((r,t)=>e("a",{className:l("i-swiper-indicator",{"i-indicator-active":t===Math[x?"floor":"ceil"]((R.current+_)%_/j)}),onClick:()=>oe(t*j),children:q?.(t)},t)))})]})};w.Item=h;export{w as default};
1
+ import{jsx as e,jsxs as r,Fragment as t}from"react/jsx-runtime";import{KeyboardArrowLeftRound as i,KeyboardArrowRightRound as n}from"@ricons/material";import{useReactive as s}from"ahooks";import a from"classnames";import{useRef as o,useMemo as c,Children as l,useImperativeHandle as u,useEffect as d}from"react";import{useMouseMove as m,useMouseUp as p}from"../../js/hooks.js";import{clamp as f}from"../../js/utils.js";import g from"../icon/icon.js";import h from"./item.js";const w=w=>{const{ref:v,type:T="normal",initial:y=0,display:b=1,scroll:j=1,loop:x=!0,vertical:N,prev:k=e(g,{icon:e(i,{}),size:"2em"}),next:M=e(g,{icon:e(n,{}),size:"2em"}),duration:S=600,interval:$=3e3,autoplay:I,pauseOnHover:z,arrow:C=!0,reverse:H,draggable:O,dragOffset:D=40,gap:X=0,itemHeight:Y,indicator:A,fixedIndicator:P,style:W,className:B,children:L,renderIndicator:q,onBeforeSwipe:E,onAfterSwipe:F,onItemClick:G}=w,J=o(null),K=o(null),Q=`all ${S/1e3}s`,R=s({current:y,swipable:!0,transition:"fade"===T?"none":Q,dragStart:0,dragging:!1,initialized:!1}),U=c((()=>l.map(L,(e=>{if(e.type===h)return e}))),[L]),[V,Z,_,ee,re]=c((()=>{const e="normal"===T&&x&&U.length>b?b+1:0;let r=[];if(e<=0)r=[...U];else{const t=U.slice(0,e);r=[...U.slice(-e),...U,...t]}const t=r.length/b*100+"%";return[r,e,U.length,r.length,t]}),[b,x,T,U]),te=c((()=>-100*(R.current+Z)/ee),[R.current,ee]),ie=c((()=>{if(_<=b||"fade"===T)return;return`translate3d(${N?`0, ${te}%`:`${te}%, 0`}, 0)`}),[te,N,b,_,T]),ne=c((()=>{if(N&&Y)return{height:Y*b}}),[N,Y,b]),se=c((()=>Array.from({length:Math.ceil((_-b)/j)+1})),[x,A]),ae=()=>{clearTimeout(K.current),K.current=null},oe=e=>{if(!R.swipable||e===R.current)return;R.swipable=!1,E?.(R.current);let r=!1,t=e;const i=_-b;return x?e>i?(r=!0,e=_,t=0):e<0&&(r=!0,e=-b,t=i):(t=f(t,0,i),e=t),setTimeout((()=>{R.swipable=!0}),S+32),"fade"===T?(R.current=t,void F?.(t)):(R.current=e,r?void setTimeout((()=>{R.transition="none",R.current=t,F?.(t),I&&(K.current=setTimeout(ce,$)),setTimeout((()=>{R.transition=Q}),60)}),S+20):(I&&(K.current=setTimeout(ce,$)),void setTimeout((()=>{F?.(t)}),S+12)))},ce=()=>{oe(H?R.current-j:R.current+j)},le=()=>{oe(H?R.current+j:R.current-j)},ue=e=>{O&&R.swipable&&"fade"!==T&&(e.stopPropagation(),e.preventDefault(),e.touches&&(e=e.touches[0]),Object.assign(R,{dragStart:N?e.clientY:e.clientX,dragging:!0,transition:"none"}))};return m((e=>{if(!R.dragging||!J.current)return;e.preventDefault(),e.touches&&(e=e.touches[0]);const r=61.8*((N?e.clientY:e.clientX)-R.dragStart)/J.current[N?"offsetHeight":"offsetWidth"]+te;J.current.style.transform=`translate3d(${N?`0, ${r}%`:`${r}%, 0`}, 0)`})),p((e=>{if(!R.dragging||!J.current)return;e.changedTouches&&(e=e.changedTouches[0]);const r=N?e.clientY:e.clientX,t=J.current[N?"offsetHeight":"offsetWidth"]/ee,i=.618*(r-R.dragStart),n=Math.abs(i);if(n>D){const e=Math.floor(n/t)+(n%t-D>0?1:0);let r=R.current+(i>0?-e:e);oe(r)}J.current.style.transform=ie||"",Object.assign(R,{dragging:!1,transition:Q})})),u(v,(()=>({swipeTo:oe,swipeNext:ce,swipePrev:le}))),d((()=>{if(I)return K.current=setTimeout(ce,$),()=>{clearTimeout(K.current),K.current=null}}),[I,$]),r("div",{style:W,className:a("i-swiper",{"i-swiper-vertical":N,"i-swiper-initialized":R.initialized},B),children:[r("div",{className:"i-swiper-track",style:ne,onMouseOver:()=>{z&&ae()},onMouseLeave:()=>{z&&(ae(),K.current=setTimeout(ce,$))},children:[e("div",{ref:J,className:a("i-swiper-list",{"i-swiper-fade":"fade"===T}),style:{[N?"height":"width"]:re,transform:ie,transition:R.transition},onMouseDown:ue,onTouchStart:ue,children:V.map(((r,t)=>{const{props:i}=r;return e(h,{index:t,itemIndex:(t-Z+_)%_,active:t-Z===R.current,type:T,gap:X,transition:Q,itemHeight:Y,vertical:N,onItemClick:G,...i},t)}))}),C&&r(t,{children:[(x||0!==R.current)&&e("a",{className:"i-swiper-arrow i-swiper-prev",onClick:le,children:k}),(x||R.current<_-b)&&e("a",{className:"i-swiper-arrow i-swiper-next",onClick:ce,children:M})]})]}),A&&e("div",{className:a("i-swiper-indicators",{"i-swiper-indicators-fixed":P}),children:se.map(((r,t)=>e("a",{className:a("i-swiper-indicator",{"i-indicator-active":t===Math[x?"floor":"ceil"]((R.current+_)%_/j)}),onClick:()=>oe(t*j),children:q?.(t)},t)))})]})};w.Item=h;export{w as default};
2
2
  //# sourceMappingURL=swiper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"swiper.js","sources":["../../../packages/components/swiper/swiper.tsx"],"sourcesContent":["import { useMouseMove, useMouseUp } from \"@p/js/hooks\";\nimport { clamp } from \"@p/js/utils\";\nimport {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport {\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { CompositionSwiper, ISwiper } from \"./type\";\n\nconst Swiper = ((props: ISwiper) => {\n\tconst {\n\t\tref,\n\t\ttype = \"normal\",\n\t\tinitial = 0,\n\t\tdisplay = 1,\n\t\tscroll = 1,\n\t\tloop = true,\n\t\tvertical,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} size='2em' />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} size='2em' />,\n\t\tduration = 600,\n\t\tinterval = 3000,\n\t\tautoplay,\n\t\tpauseOnHover,\n\t\tarrow = true,\n\t\treverse,\n\t\tdraggable,\n\t\tdragOffset = 40,\n\t\tgap = 0,\n\t\titemHeight,\n\t\tindicator,\n\t\tfixedIndicator,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\trenderIndicator,\n\t\tonBeforeSwipe,\n\t\tonAfterSwipe,\n\t\tonItemClick,\n\t} = props;\n\n\tconst listRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst transition = `all ${duration / 1000}s`;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\tswipable: true,\n\t\ttransition: type === \"fade\" ? \"none\" : transition,\n\t\tdragStart: 0,\n\t\tdragging: false,\n\t\tinitialized: false,\n\t});\n\n\tconst items = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type !== Item) return;\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\tconst [displayItems, extra, size, total, listSize] = useMemo(() => {\n\t\tconst extra =\n\t\t\ttype === \"normal\" && loop && items.length > display\n\t\t\t\t? display + 1\n\t\t\t\t: 0;\n\t\tlet list: any = [];\n\n\t\tif (extra <= 0) {\n\t\t\tlist = [...items];\n\t\t} else {\n\t\t\tconst head = items.slice(0, extra);\n\t\t\tconst tail = items.slice(-extra);\n\t\t\tlist = [...tail, ...items, ...head];\n\t\t}\n\n\t\tconst listSize = `${(list.length / display) * 100}%`;\n\n\t\treturn [list, extra, items.length, list.length, listSize];\n\t}, [display, loop, type, items]);\n\n\tconst offsetPercent = useMemo(\n\t\t() => (-100 * (state.current + extra)) / total,\n\t\t[state.current, total]\n\t);\n\n\tconst position = useMemo(() => {\n\t\tif (size <= display || type === \"fade\") return;\n\n\t\tconst offset = vertical\n\t\t\t? `0, ${offsetPercent}%`\n\t\t\t: `${offsetPercent}%, 0`;\n\t\treturn `translate3d(${offset}, 0)`;\n\t}, [offsetPercent, vertical, display, size, type]);\n\n\tconst trackStyle = useMemo(() => {\n\t\tif (!vertical || !itemHeight) return;\n\n\t\treturn {\n\t\t\theight: itemHeight * display,\n\t\t};\n\t}, [vertical, itemHeight, display]);\n\n\tconst indicatorsLoop = useMemo(() => {\n\t\treturn Array.from({\n\t\t\tlength: Math.ceil((size - display) / scroll) + 1,\n\t\t});\n\t}, [loop, indicator]);\n\n\tconst clearTimer = () => {\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst swipeTo = (i: number) => {\n\t\tif (!state.swipable || i === state.current) return;\n\t\tstate.swipable = false;\n\t\tonBeforeSwipe?.(state.current);\n\n\t\tlet reset = false;\n\t\tlet next = i;\n\t\tconst lastDisplay = size - display;\n\n\t\tif (loop) {\n\t\t\tif (i > lastDisplay) {\n\t\t\t\treset = true;\n\t\t\t\ti = size;\n\t\t\t\tnext = 0;\n\t\t\t} else if (i < 0) {\n\t\t\t\treset = true;\n\t\t\t\ti = -display;\n\t\t\t\tnext = lastDisplay;\n\t\t\t}\n\t\t} else {\n\t\t\tnext = clamp(next, 0, lastDisplay);\n\t\t\ti = next;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.swipable = true;\n\t\t}, duration + 32);\n\n\t\tif (type === \"fade\") {\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\treturn;\n\t\t}\n\n\t\tstate.current = i;\n\n\t\tif (!reset) {\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tonAfterSwipe?.(next);\n\t\t\t}, duration + 12);\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.transition = \"none\";\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.transition = transition;\n\t\t\t}, 60);\n\t\t}, duration + 20);\n\t};\n\tconst swipeNext = () => {\n\t\tswipeTo(reverse ? state.current - scroll : state.current + scroll);\n\t};\n\n\tconst swipePrev = () => {\n\t\tswipeTo(reverse ? state.current + scroll : state.current - scroll);\n\t};\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!draggable || !state.swipable || type === \"fade\") return;\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tObject.assign(state, {\n\t\t\tdragStart: vertical ? e.clientY : e.clientX,\n\t\t\tdragging: true,\n\t\t\ttransition: \"none\",\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst offset =\n\t\t\t((dragEnd - state.dragStart) * 61.8) /\n\t\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] +\n\t\t\toffsetPercent;\n\n\t\tlistRef.current.style.transform = `translate3d(${\n\t\t\tvertical ? `0, ${offset}%` : `${offset}%, 0`\n\t\t}, 0)`;\n\t};\n\n\tconst handleMouseUp = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\n\t\tif (e.changedTouches) {\n\t\t\te = e.changedTouches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst part =\n\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] / total;\n\t\tconst offset = (dragEnd - state.dragStart) * 0.618;\n\t\tconst absOffset = Math.abs(offset);\n\n\t\tif (absOffset > dragOffset) {\n\t\t\tconst base = Math.floor(absOffset / part);\n\t\t\tconst mod = (absOffset % part) - dragOffset > 0 ? 1 : 0;\n\t\t\tconst p = base + mod;\n\n\t\t\tlet to = state.current + (offset > 0 ? -p : p);\n\n\t\t\tswipeTo(to);\n\t\t}\n\n\t\tlistRef.current.style.transform = position || \"\";\n\n\t\tObject.assign(state, {\n\t\t\tdragging: false,\n\t\t\ttransition,\n\t\t});\n\t};\n\n\tconst handleMouseOver = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tswipeTo,\n\t\tswipeNext,\n\t\tswipePrev,\n\t}));\n\n\tuseEffect(() => {\n\t\tif (!autoplay) return;\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\n\t\treturn () => {\n\t\t\tclearTimeout(timerRef.current);\n\t\t\ttimerRef.current = null;\n\t\t};\n\t}, [autoplay, interval]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-swiper\",\n\t\t\t\t{\n\t\t\t\t\t\"i-swiper-vertical\": vertical,\n\t\t\t\t\t\"i-swiper-initialized\": state.initialized,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-swiper-track'\n\t\t\t\tstyle={trackStyle}\n\t\t\t\tonMouseOver={handleMouseOver}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={listRef}\n\t\t\t\t\tclassName={classNames(\"i-swiper-list\", {\n\t\t\t\t\t\t\"i-swiper-fade\": type === \"fade\",\n\t\t\t\t\t})}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t[vertical ? \"height\" : \"width\"]: listSize,\n\t\t\t\t\t\ttransform: position,\n\t\t\t\t\t\ttransition: state.transition,\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t>\n\t\t\t\t\t{displayItems.map((item, i) => {\n\t\t\t\t\t\tconst { props: itemProps } = item;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\titemIndex={(i - extra + size) % size}\n\t\t\t\t\t\t\t\tactive={i - extra === state.current}\n\t\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\t\tgap={gap}\n\t\t\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\t\t\titemHeight={itemHeight}\n\t\t\t\t\t\t\t\tvertical={vertical}\n\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t{...itemProps}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{arrow && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{(loop || state.current !== 0) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-prev'\n\t\t\t\t\t\t\t\tonClick={swipePrev}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{prev}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{(loop || state.current < size - display) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-next'\n\t\t\t\t\t\t\t\tonClick={swipeNext}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{next}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{indicator && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-swiper-indicators\", {\n\t\t\t\t\t\t\"i-swiper-indicators-fixed\": fixedIndicator,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{indicatorsLoop.map((_, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-swiper-indicator\", {\n\t\t\t\t\t\t\t\t\t\"i-indicator-active\":\n\t\t\t\t\t\t\t\t\t\ti ===\n\t\t\t\t\t\t\t\t\t\tMath[loop ? \"floor\" : \"ceil\"](\n\t\t\t\t\t\t\t\t\t\t\t((state.current + size) % size) /\n\t\t\t\t\t\t\t\t\t\t\t\tscroll\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => swipeTo(i * scroll)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderIndicator?.(i)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}) as CompositionSwiper;\n\nSwiper.Item = Item;\n\nexport default Swiper;\n"],"names":["Swiper","props","ref","type","initial","display","scroll","loop","vertical","prev","_jsx","Icon","icon","KeyboardArrowLeftRound","size","next","KeyboardArrowRightRound","duration","interval","autoplay","pauseOnHover","arrow","reverse","draggable","dragOffset","gap","itemHeight","indicator","fixedIndicator","style","className","children","renderIndicator","onBeforeSwipe","onAfterSwipe","onItemClick","listRef","useRef","timerRef","transition","state","useReactive","current","swipable","dragStart","dragging","initialized","items","useMemo","Children","map","node","Item","displayItems","extra","total","listSize","length","list","head","slice","offsetPercent","position","trackStyle","height","indicatorsLoop","Array","from","Math","ceil","clearTimer","clearTimeout","swipeTo","i","reset","lastDisplay","clamp","setTimeout","swipeNext","swipePrev","handleMouseDown","e","stopPropagation","preventDefault","touches","Object","assign","clientY","clientX","useMouseMove","offset","transform","useMouseUp","changedTouches","dragEnd","part","absOffset","abs","p","floor","to","useImperativeHandle","useEffect","_jsxs","classNames","onMouseOver","onMouseLeave","onMouseDown","onTouchStart","item","itemProps","index","itemIndex","active","_Fragment","onClick","_"],"mappings":"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"}
1
+ {"version":3,"file":"swiper.js","sources":["../../../packages/components/swiper/swiper.tsx"],"sourcesContent":["import {\n\tKeyboardArrowLeftRound,\n\tKeyboardArrowRightRound,\n} from \"@ricons/material\";\nimport { useReactive } from \"ahooks\";\nimport classNames from \"classnames\";\nimport {\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseRef,\n} from \"react\";\nimport { useMouseMove, useMouseUp } from \"../../js/hooks\";\nimport { clamp } from \"../../js/utils\";\nimport Icon from \"../icon\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { CompositionSwiper, ISwiper } from \"./type\";\n\nconst Swiper = ((props: ISwiper) => {\n\tconst {\n\t\tref,\n\t\ttype = \"normal\",\n\t\tinitial = 0,\n\t\tdisplay = 1,\n\t\tscroll = 1,\n\t\tloop = true,\n\t\tvertical,\n\t\tprev = <Icon icon={<KeyboardArrowLeftRound />} size='2em' />,\n\t\tnext = <Icon icon={<KeyboardArrowRightRound />} size='2em' />,\n\t\tduration = 600,\n\t\tinterval = 3000,\n\t\tautoplay,\n\t\tpauseOnHover,\n\t\tarrow = true,\n\t\treverse,\n\t\tdraggable,\n\t\tdragOffset = 40,\n\t\tgap = 0,\n\t\titemHeight,\n\t\tindicator,\n\t\tfixedIndicator,\n\t\tstyle,\n\t\tclassName,\n\t\tchildren,\n\t\trenderIndicator,\n\t\tonBeforeSwipe,\n\t\tonAfterSwipe,\n\t\tonItemClick,\n\t} = props;\n\n\tconst listRef = useRef<HTMLDivElement>(null);\n\tconst timerRef = useRef<any>(null);\n\tconst transition = `all ${duration / 1000}s`;\n\tconst state = useReactive({\n\t\tcurrent: initial,\n\t\tswipable: true,\n\t\ttransition: type === \"fade\" ? \"none\" : transition,\n\t\tdragStart: 0,\n\t\tdragging: false,\n\t\tinitialized: false,\n\t});\n\n\tconst items = useMemo(() => {\n\t\treturn Children.map(children, (node: any) => {\n\t\t\tif (node.type !== Item) return;\n\n\t\t\treturn node;\n\t\t});\n\t}, [children]);\n\n\tconst [displayItems, extra, size, total, listSize] = useMemo(() => {\n\t\tconst extra =\n\t\t\ttype === \"normal\" && loop && items.length > display\n\t\t\t\t? display + 1\n\t\t\t\t: 0;\n\t\tlet list: any = [];\n\n\t\tif (extra <= 0) {\n\t\t\tlist = [...items];\n\t\t} else {\n\t\t\tconst head = items.slice(0, extra);\n\t\t\tconst tail = items.slice(-extra);\n\t\t\tlist = [...tail, ...items, ...head];\n\t\t}\n\n\t\tconst listSize = `${(list.length / display) * 100}%`;\n\n\t\treturn [list, extra, items.length, list.length, listSize];\n\t}, [display, loop, type, items]);\n\n\tconst offsetPercent = useMemo(\n\t\t() => (-100 * (state.current + extra)) / total,\n\t\t[state.current, total]\n\t);\n\n\tconst position = useMemo(() => {\n\t\tif (size <= display || type === \"fade\") return;\n\n\t\tconst offset = vertical\n\t\t\t? `0, ${offsetPercent}%`\n\t\t\t: `${offsetPercent}%, 0`;\n\t\treturn `translate3d(${offset}, 0)`;\n\t}, [offsetPercent, vertical, display, size, type]);\n\n\tconst trackStyle = useMemo(() => {\n\t\tif (!vertical || !itemHeight) return;\n\n\t\treturn {\n\t\t\theight: itemHeight * display,\n\t\t};\n\t}, [vertical, itemHeight, display]);\n\n\tconst indicatorsLoop = useMemo(() => {\n\t\treturn Array.from({\n\t\t\tlength: Math.ceil((size - display) / scroll) + 1,\n\t\t});\n\t}, [loop, indicator]);\n\n\tconst clearTimer = () => {\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t};\n\n\tconst swipeTo = (i: number) => {\n\t\tif (!state.swipable || i === state.current) return;\n\t\tstate.swipable = false;\n\t\tonBeforeSwipe?.(state.current);\n\n\t\tlet reset = false;\n\t\tlet next = i;\n\t\tconst lastDisplay = size - display;\n\n\t\tif (loop) {\n\t\t\tif (i > lastDisplay) {\n\t\t\t\treset = true;\n\t\t\t\ti = size;\n\t\t\t\tnext = 0;\n\t\t\t} else if (i < 0) {\n\t\t\t\treset = true;\n\t\t\t\ti = -display;\n\t\t\t\tnext = lastDisplay;\n\t\t\t}\n\t\t} else {\n\t\t\tnext = clamp(next, 0, lastDisplay);\n\t\t\ti = next;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.swipable = true;\n\t\t}, duration + 32);\n\n\t\tif (type === \"fade\") {\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\treturn;\n\t\t}\n\n\t\tstate.current = i;\n\n\t\tif (!reset) {\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tonAfterSwipe?.(next);\n\t\t\t}, duration + 12);\n\t\t\treturn;\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tstate.transition = \"none\";\n\t\t\tstate.current = next;\n\t\t\tonAfterSwipe?.(next);\n\t\t\tif (autoplay) {\n\t\t\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t\t\t}\n\t\t\tsetTimeout(() => {\n\t\t\t\tstate.transition = transition;\n\t\t\t}, 60);\n\t\t}, duration + 20);\n\t};\n\tconst swipeNext = () => {\n\t\tswipeTo(reverse ? state.current - scroll : state.current + scroll);\n\t};\n\n\tconst swipePrev = () => {\n\t\tswipeTo(reverse ? state.current + scroll : state.current - scroll);\n\t};\n\n\tconst handleMouseDown = (e) => {\n\t\tif (!draggable || !state.swipable || type === \"fade\") return;\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tObject.assign(state, {\n\t\t\tdragStart: vertical ? e.clientY : e.clientX,\n\t\t\tdragging: true,\n\t\t\ttransition: \"none\",\n\t\t});\n\t};\n\n\tconst handleMouseMove = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\t\te.preventDefault();\n\n\t\tif (e.touches) {\n\t\t\te = e.touches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst offset =\n\t\t\t((dragEnd - state.dragStart) * 61.8) /\n\t\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] +\n\t\t\toffsetPercent;\n\n\t\tlistRef.current.style.transform = `translate3d(${\n\t\t\tvertical ? `0, ${offset}%` : `${offset}%, 0`\n\t\t}, 0)`;\n\t};\n\n\tconst handleMouseUp = (e) => {\n\t\tif (!state.dragging || !listRef.current) return;\n\n\t\tif (e.changedTouches) {\n\t\t\te = e.changedTouches[0];\n\t\t}\n\n\t\tconst dragEnd = vertical ? e.clientY : e.clientX;\n\t\tconst part =\n\t\t\tlistRef.current[vertical ? \"offsetHeight\" : \"offsetWidth\"] / total;\n\t\tconst offset = (dragEnd - state.dragStart) * 0.618;\n\t\tconst absOffset = Math.abs(offset);\n\n\t\tif (absOffset > dragOffset) {\n\t\t\tconst base = Math.floor(absOffset / part);\n\t\t\tconst mod = (absOffset % part) - dragOffset > 0 ? 1 : 0;\n\t\t\tconst p = base + mod;\n\n\t\t\tlet to = state.current + (offset > 0 ? -p : p);\n\n\t\t\tswipeTo(to);\n\t\t}\n\n\t\tlistRef.current.style.transform = position || \"\";\n\n\t\tObject.assign(state, {\n\t\t\tdragging: false,\n\t\t\ttransition,\n\t\t});\n\t};\n\n\tconst handleMouseOver = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tif (!pauseOnHover) return;\n\t\tclearTimer();\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\t};\n\n\tuseMouseMove(handleMouseMove);\n\tuseMouseUp(handleMouseUp);\n\n\tuseImperativeHandle(ref, () => ({\n\t\tswipeTo,\n\t\tswipeNext,\n\t\tswipePrev,\n\t}));\n\n\tuseEffect(() => {\n\t\tif (!autoplay) return;\n\t\ttimerRef.current = setTimeout(swipeNext, interval);\n\n\t\treturn () => {\n\t\t\tclearTimeout(timerRef.current);\n\t\t\ttimerRef.current = null;\n\t\t};\n\t}, [autoplay, interval]);\n\n\treturn (\n\t\t<div\n\t\t\tstyle={style}\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-swiper\",\n\t\t\t\t{\n\t\t\t\t\t\"i-swiper-vertical\": vertical,\n\t\t\t\t\t\"i-swiper-initialized\": state.initialized,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName='i-swiper-track'\n\t\t\t\tstyle={trackStyle}\n\t\t\t\tonMouseOver={handleMouseOver}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={listRef}\n\t\t\t\t\tclassName={classNames(\"i-swiper-list\", {\n\t\t\t\t\t\t\"i-swiper-fade\": type === \"fade\",\n\t\t\t\t\t})}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t[vertical ? \"height\" : \"width\"]: listSize,\n\t\t\t\t\t\ttransform: position,\n\t\t\t\t\t\ttransition: state.transition,\n\t\t\t\t\t}}\n\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\tonTouchStart={handleMouseDown}\n\t\t\t\t>\n\t\t\t\t\t{displayItems.map((item, i) => {\n\t\t\t\t\t\tconst { props: itemProps } = item;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tindex={i}\n\t\t\t\t\t\t\t\titemIndex={(i - extra + size) % size}\n\t\t\t\t\t\t\t\tactive={i - extra === state.current}\n\t\t\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\t\t\tgap={gap}\n\t\t\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\t\t\titemHeight={itemHeight}\n\t\t\t\t\t\t\t\tvertical={vertical}\n\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t{...itemProps}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\n\t\t\t\t{arrow && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{(loop || state.current !== 0) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-prev'\n\t\t\t\t\t\t\t\tonClick={swipePrev}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{prev}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{(loop || state.current < size - display) && (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tclassName='i-swiper-arrow i-swiper-next'\n\t\t\t\t\t\t\t\tonClick={swipeNext}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{next}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{indicator && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={classNames(\"i-swiper-indicators\", {\n\t\t\t\t\t\t\"i-swiper-indicators-fixed\": fixedIndicator,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t{indicatorsLoop.map((_, i) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-swiper-indicator\", {\n\t\t\t\t\t\t\t\t\t\"i-indicator-active\":\n\t\t\t\t\t\t\t\t\t\ti ===\n\t\t\t\t\t\t\t\t\t\tMath[loop ? \"floor\" : \"ceil\"](\n\t\t\t\t\t\t\t\t\t\t\t((state.current + size) % size) /\n\t\t\t\t\t\t\t\t\t\t\t\tscroll\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => swipeTo(i * scroll)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{renderIndicator?.(i)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}) as CompositionSwiper;\n\nSwiper.Item = Item;\n\nexport default Swiper;\n"],"names":["Swiper","props","ref","type","initial","display","scroll","loop","vertical","prev","_jsx","Icon","icon","KeyboardArrowLeftRound","size","next","KeyboardArrowRightRound","duration","interval","autoplay","pauseOnHover","arrow","reverse","draggable","dragOffset","gap","itemHeight","indicator","fixedIndicator","style","className","children","renderIndicator","onBeforeSwipe","onAfterSwipe","onItemClick","listRef","useRef","timerRef","transition","state","useReactive","current","swipable","dragStart","dragging","initialized","items","useMemo","Children","map","node","Item","displayItems","extra","total","listSize","length","list","head","slice","offsetPercent","position","trackStyle","height","indicatorsLoop","Array","from","Math","ceil","clearTimer","clearTimeout","swipeTo","i","reset","lastDisplay","clamp","setTimeout","swipeNext","swipePrev","handleMouseDown","e","stopPropagation","preventDefault","touches","Object","assign","clientY","clientX","useMouseMove","offset","transform","useMouseUp","changedTouches","dragEnd","part","absOffset","abs","p","floor","to","useImperativeHandle","useEffect","_jsxs","classNames","onMouseOver","onMouseLeave","onMouseDown","onTouchStart","item","itemProps","index","itemIndex","active","_Fragment","onClick","_"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useIntersectionObserver as r}from"../../js/hooks.js";import{MoreHorizRound as a}from"@ricons/material";import{useReactive as i,useSize as n}from"ahooks";import s from"classnames";import{pick as o}from"radash";import{useRef as c,useEffect as l,Children as v,useImperativeHandle as d}from"react";import"../button/index.js";import p from"../icon/icon.js";import m from"../popup/popup.js";import f from"../utils/helpericon/helpericon.js";import b from"./item.js";import u from"../button/button.js";const h=b=>{const{ref:h,active:y,tabs:k,type:g="default",prepend:N,append:j,children:w,className:x,vertical:T,toggable:$,navsJustify:C="start",bar:D=!0,hideMore:I,barClass:M,renderMore:S=()=>t(u,{flat:!0,square:!0,size:"small",children:t(p,{icon:t(a,{})})}),onTabChange:A,...L}=b,O=c([]),E=c(null),H=c(null),P=i({active:y,prevActive:void 0,barStyle:{},cachedTabs:[],overflow:!1,more:[],tabs:[]}),{observe:W,unobserve:q}=r(),z=n(H);l((()=>{if(!k)return w?void(P.tabs=v.map(w,((e,t)=>{const{key:r,props:a}=e,{title:i,children:n,content:s,keepDOM:c}=a,l=n?"string"==typeof n?n:o(n,["props","type","$$typeof","ref"]):s;return{key:r||String(t),title:i,content:l,keepDOM:c}}))):void(P.tabs=[]);P.tabs=k.map(((e,t)=>["string","number"].includes(typeof e)?{key:e,title:e}:(void 0===e.key&&(e.key=t),e)))}),[w,k]);const B=e=>{const{key:t}=e,r=P.tabs.findIndex((e=>e.key===t));if(r>-1)return void X(P.tabs[r].key??r);const a=P.tabs.length,i=e.key??a;P.tabs.push({...e,key:i}),X(i)},J=e=>{const t=P.tabs.findIndex((t=>t.key===e));if(t<0)return;if(P.tabs.splice(t,1),P.active!==e)return;const r=P.tabs[t]||P.tabs[t-1];X(P.prevActive??r?.key??"")},X=e=>{if(e===P.active){if(!$)return;return A?.(void 0,e),P.active=void 0,void(P.barStyle={height:0,width:0})}P.prevActive=P.active,A?.(e,P.active),P.active=e};return l((()=>{if(!z||I)return;const{scrollHeight:e,scrollWidth:t}=H.current,{width:r,height:a}=z;P.overflow=e>a||t>r,P.overflow&&O.current.map(((e,t)=>{e&&W(e,((e,r)=>{P.tabs[t]&&(P.tabs[t].intersecting=r,P.more=P.tabs.filter((e=>!e.intersecting)))}))}))}),[z,I,P.tabs.length]),l((()=>{if(!D||"pane"===g||void 0===P.active)return;const e=P.tabs.findIndex((e=>e.key===P.active));setTimeout((()=>{const t=O.current[e];if(!t)return;if(P.tabs[e].keepDOM&&P.active){P.cachedTabs.findIndex((e=>e===P.active))<0&&P.cachedTabs.unshift(P.active)}const{offsetHeight:r,offsetLeft:a,offsetTop:i,offsetWidth:n}=t,s="line"===g;P.barStyle={height:!T&&s?".25em":r,width:T&&s?".25em":n,transform:`translate(${a}px, ${i}px)`}}),16)}),[P.active,D,z]),l((()=>{void 0!==y&&P.active!==y&&X(y)}),[y]),l((()=>{if(!I)return()=>{O.current?.map(q)}}),[P.tabs.length]),l((()=>{if(!H.current||T)return;const e=e=>{e.stopPropagation(),e.preventDefault(),T||H.current?.scrollBy({left:e.deltaY+e.deltaX})};return H.current.addEventListener("wheel",e,{passive:!1}),()=>{H.current&&H.current.removeEventListener("wheel",e)}}),[H.current]),d(h,(()=>({open:X,close:J,add:B,navs:H}))),e("div",{className:s("i-tabs",{flex:T,[`i-tabs-${g}`]:"default"!==g},x),...L,children:[e("div",{className:s("i-tab-navs-container",{"i-tab-navs-vertical":T}),children:[N,e("div",{ref:H,className:s("i-tab-navs",`justify-${C}`),children:[P.tabs.map(((r,a)=>{const{title:i,key:n=a,closable:o}=r;return e("a",{ref:e=>O.current[a]=e,className:s("i-tab-nav",{"i-tab-active":P.active===n}),onClick:()=>X(n),children:[i,o&&t(f,{as:"i",active:!0,className:"i-tab-nav-close",onClick:e=>{e.stopPropagation(),J(n)}})]},n)})),D&&t("span",{ref:E,className:s("i-tab-navs-bar",M),style:P.barStyle})]}),!I&&P.overflow&&P.more.length>0&&t(m,{arrow:!1,position:T?"right":"bottom",align:"end",touchable:!0,hideDelay:500,content:t("div",{className:"i-tabs-morelist pd-4",children:P.more.map(((e,r)=>{const{key:a=r,title:i}=e,n=P.active===a;return t("a",{className:s("i-tab-nav",{"i-tab-active":n}),onClick:()=>X(a),children:i},a)}))}),children:S(P.more)}),j]}),t("div",{className:"i-tab-contents",children:P.tabs.map(((e,r)=>{const{key:a=r,content:i}=e,n=P.active===a;return(n||void 0!==a&&P.cachedTabs.includes(a))&&t("div",{className:s("i-tab-content",{"i-tab-active":n}),children:i},a)}))})]})};h.Item=b;export{h as default};
1
+ import{jsxs as e,jsx as t}from"react/jsx-runtime";import{MoreHorizRound as r}from"@ricons/material";import{useReactive as a,useSize as i}from"ahooks";import n from"classnames";import{pick as s}from"radash";import{useRef as o,useEffect as c,Children as l,useImperativeHandle as v}from"react";import{useIntersectionObserver as d}from"../../js/hooks.js";import"../button/index.js";import p from"../icon/icon.js";import m from"../popup/popup.js";import f from"../utils/helpericon/helpericon.js";import b from"./item.js";import u from"../button/button.js";const h=b=>{const{ref:h,active:y,tabs:k,type:g="default",prepend:N,append:j,children:w,className:x,vertical:T,toggable:$,navsJustify:C="start",bar:D=!0,hideMore:I,barClass:M,renderMore:S=()=>t(u,{flat:!0,square:!0,size:"small",children:t(p,{icon:t(r,{})})}),onTabChange:A,...L}=b,O=o([]),E=o(null),H=o(null),P=a({active:y,prevActive:void 0,barStyle:{},cachedTabs:[],overflow:!1,more:[],tabs:[]}),{observe:W,unobserve:q}=d(),z=i(H);c((()=>{if(!k)return w?void(P.tabs=l.map(w,((e,t)=>{const{key:r,props:a}=e,{title:i,children:n,content:o,keepDOM:c}=a,l=n?"string"==typeof n?n:s(n,["props","type","$$typeof","ref"]):o;return{key:r||String(t),title:i,content:l,keepDOM:c}}))):void(P.tabs=[]);P.tabs=k.map(((e,t)=>["string","number"].includes(typeof e)?{key:e,title:e}:(void 0===e.key&&(e.key=t),e)))}),[w,k]);const B=e=>{const{key:t}=e,r=P.tabs.findIndex((e=>e.key===t));if(r>-1)return void X(P.tabs[r].key??r);const a=P.tabs.length,i=e.key??a;P.tabs.push({...e,key:i}),X(i)},J=e=>{const t=P.tabs.findIndex((t=>t.key===e));if(t<0)return;if(P.tabs.splice(t,1),P.active!==e)return;const r=P.tabs[t]||P.tabs[t-1];X(P.prevActive??r?.key??"")},X=e=>{if(e===P.active){if(!$)return;return A?.(void 0,e),P.active=void 0,void(P.barStyle={height:0,width:0})}P.prevActive=P.active,A?.(e,P.active),P.active=e};return c((()=>{if(!z||I)return;const{scrollHeight:e,scrollWidth:t}=H.current,{width:r,height:a}=z;P.overflow=e>a||t>r,P.overflow&&O.current.map(((e,t)=>{e&&W(e,((e,r)=>{P.tabs[t]&&(P.tabs[t].intersecting=r,P.more=P.tabs.filter((e=>!e.intersecting)))}))}))}),[z,I,P.tabs.length]),c((()=>{if(!D||"pane"===g||void 0===P.active)return;const e=P.tabs.findIndex((e=>e.key===P.active));setTimeout((()=>{const t=O.current[e];if(!t)return;if(P.tabs[e].keepDOM&&P.active){P.cachedTabs.findIndex((e=>e===P.active))<0&&P.cachedTabs.unshift(P.active)}const{offsetHeight:r,offsetLeft:a,offsetTop:i,offsetWidth:n}=t,s="line"===g;P.barStyle={height:!T&&s?".25em":r,width:T&&s?".25em":n,transform:`translate(${a}px, ${i}px)`}}),16)}),[P.active,D,z]),c((()=>{void 0!==y&&P.active!==y&&X(y)}),[y]),c((()=>{if(!I)return()=>{O.current?.map(q)}}),[P.tabs.length]),c((()=>{if(!H.current||T)return;const e=e=>{e.stopPropagation(),e.preventDefault(),T||H.current?.scrollBy({left:e.deltaY+e.deltaX})};return H.current.addEventListener("wheel",e,{passive:!1}),()=>{H.current&&H.current.removeEventListener("wheel",e)}}),[H.current]),v(h,(()=>({open:X,close:J,add:B,navs:H}))),e("div",{className:n("i-tabs",{flex:T,[`i-tabs-${g}`]:"default"!==g},x),...L,children:[e("div",{className:n("i-tab-navs-container",{"i-tab-navs-vertical":T}),children:[N,e("div",{ref:H,className:n("i-tab-navs",`justify-${C}`),children:[P.tabs.map(((r,a)=>{const{title:i,key:s=a,closable:o}=r;return e("a",{ref:e=>O.current[a]=e,className:n("i-tab-nav",{"i-tab-active":P.active===s}),onClick:()=>X(s),children:[i,o&&t(f,{as:"i",active:!0,className:"i-tab-nav-close",onClick:e=>{e.stopPropagation(),J(s)}})]},s)})),D&&t("span",{ref:E,className:n("i-tab-navs-bar",M),style:P.barStyle})]}),!I&&P.overflow&&P.more.length>0&&t(m,{arrow:!1,position:T?"right":"bottom",align:"end",touchable:!0,hideDelay:500,content:t("div",{className:"i-tabs-morelist pd-4",children:P.more.map(((e,r)=>{const{key:a=r,title:i}=e,s=P.active===a;return t("a",{className:n("i-tab-nav",{"i-tab-active":s}),onClick:()=>X(a),children:i},a)}))}),children:S(P.more)}),j]}),t("div",{className:"i-tab-contents",children:P.tabs.map(((e,r)=>{const{key:a=r,content:i}=e,s=P.active===a;return(s||void 0!==a&&P.cachedTabs.includes(a))&&t("div",{className:n("i-tab-content",{"i-tab-active":s}),children:i},a)}))})]})};h.Item=b;export{h as default};
2
2
  //# sourceMappingURL=tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sources":["../../../packages/components/tabs/tabs.tsx"],"sourcesContent":["import { useIntersectionObserver } from \"@p/js/hooks\";\nimport { MoreHorizRound } from \"@ricons/material\";\nimport { useReactive, useSize } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { pick } from \"radash\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n} from \"react\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport { CompositionTabs, ITabItem, ITabs, TTabKey } from \"./type\";\n\ntype TState = {\n\tactive?: TTabKey;\n\tprevActive?: TTabKey;\n\tbarStyle: CSSProperties;\n\tcachedTabs: TTabKey[];\n\toverflow: boolean;\n\tmore: ITabItem[];\n\ttabs: ITabItem[];\n};\n\nconst Tabs = ((props: ITabs) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttabs: items,\n\t\ttype = \"default\",\n\t\tprepend,\n\t\tappend,\n\t\tchildren,\n\t\tclassName,\n\t\tvertical,\n\t\ttoggable,\n\t\tnavsJustify = \"start\",\n\t\tbar = true,\n\t\thideMore,\n\t\tbarClass,\n\t\trenderMore = () => (\n\t\t\t<Button flat square size='small'>\n\t\t\t\t<Icon icon={<MoreHorizRound />} />\n\t\t\t</Button>\n\t\t),\n\t\tonTabChange,\n\t\t...rest\n\t} = props;\n\n\tconst navRefs = useRef<HTMLElement[]>([]);\n\tconst barRef = useRef<HTMLSpanElement>(null);\n\tconst navsRef = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<TState>({\n\t\tactive,\n\t\tprevActive: undefined,\n\t\tbarStyle: {},\n\t\tcachedTabs: [],\n\t\toverflow: false,\n\t\tmore: [],\n\t\ttabs: [],\n\t});\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst size = useSize(navsRef);\n\n\tuseEffect(() => {\n\t\tif (!items) {\n\t\t\tif (!children) {\n\t\t\t\tstate.tabs = [];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.tabs = Children.map(children, (node, i) => {\n\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\tkey?: TTabKey;\n\t\t\t\t\tprops?: any;\n\t\t\t\t};\n\t\t\t\tconst { title, children, content, keepDOM } = nodeProps;\n\n\t\t\t\tconst cloned = children\n\t\t\t\t\t? typeof children === \"string\"\n\t\t\t\t\t\t? children\n\t\t\t\t\t\t: pick(children, [\"props\", \"type\", \"$$typeof\", \"ref\"])\n\t\t\t\t\t: content;\n\n\t\t\t\treturn {\n\t\t\t\t\tkey: key || String(i),\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent: cloned,\n\t\t\t\t\tkeepDOM,\n\t\t\t\t};\n\t\t\t}) as ITabItem[];\n\n\t\t\treturn;\n\t\t}\n\n\t\tstate.tabs = items.map((item, i) => {\n\t\t\tif ([\"string\", \"number\"].includes(typeof item)) {\n\t\t\t\treturn { key: item, title: item };\n\t\t\t}\n\t\t\tif (item.key === undefined) {\n\t\t\t\titem.key = i;\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\t}, [children, items]);\n\n\tconst add = (tab: ITabItem) => {\n\t\tconst { key } = tab;\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i > -1) {\n\t\t\topen(state.tabs[i].key ?? i);\n\t\t\treturn;\n\t\t}\n\n\t\tconst l = state.tabs.length;\n\t\tconst tkey = tab.key ?? l;\n\t\tstate.tabs.push({ ...tab, key: tkey });\n\t\topen(tkey);\n\t};\n\n\tconst close = (key: TTabKey) => {\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i < 0) return;\n\n\t\tstate.tabs.splice(i, 1);\n\n\t\tif (state.active !== key) return;\n\n\t\tconst next = state.tabs[i] || state.tabs[i - 1];\n\t\topen(state.prevActive ?? next?.key ?? \"\");\n\t};\n\n\tconst open = (key: TTabKey) => {\n\t\tif (key === state.active) {\n\t\t\tif (!toggable) return;\n\n\t\t\tonTabChange?.(undefined, key);\n\t\t\tstate.active = undefined;\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\tstate.prevActive = state.active;\n\t\tonTabChange?.(key, state.active);\n\t\tstate.active = key;\n\t};\n\n\tuseEffect(() => {\n\t\tif (!size || hideMore) return;\n\t\tconst { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\n\t\tconst { width, height } = size;\n\n\t\tstate.overflow = scrollHeight > height || scrollWidth > width;\n\n\t\tif (!state.overflow) return;\n\n\t\tnavRefs.current.map((nav, i) => {\n\t\t\tif (!nav) return;\n\t\t\tobserve(nav, (tar: HTMLElement, visible: boolean) => {\n\t\t\t\tif (!state.tabs[i]) return;\n\t\t\t\tstate.tabs[i].intersecting = visible;\n\t\t\t\tstate.more = state.tabs.filter((tab) => !tab.intersecting);\n\t\t\t});\n\t\t});\n\t}, [size, hideMore, state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!bar || type === \"pane\" || state.active === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = state.tabs.findIndex((tab) => tab.key === state.active);\n\n\t\tsetTimeout(() => {\n\t\t\tconst nav = navRefs.current[index];\n\n\t\t\tif (!nav) return;\n\n\t\t\tif (state.tabs[index].keepDOM && state.active) {\n\t\t\t\tconst i = state.cachedTabs.findIndex((k) => k === state.active);\n\t\t\t\ti < 0 && state.cachedTabs.unshift(state.active);\n\t\t\t}\n\n\t\t\tconst { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\n\t\t\tconst isLine = type === \"line\";\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: !vertical && isLine ? \".25em\" : offsetHeight,\n\t\t\t\twidth: vertical && isLine ? \".25em\" : offsetWidth,\n\t\t\t\ttransform: `translate(${offsetLeft}px, ${offsetTop}px)`,\n\t\t\t};\n\t\t}, 16);\n\t}, [state.active, bar, size]);\n\n\tuseEffect(() => {\n\t\tif (active === undefined || state.active === active) return;\n\n\t\topen(active);\n\t}, [active]);\n\n\tuseEffect(() => {\n\t\tif (hideMore) return;\n\t\treturn () => {\n\t\t\tnavRefs.current?.map(unobserve);\n\t\t};\n\t}, [state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!navsRef.current || vertical) return;\n\n\t\tconst handleMouseWheel = (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\n\t\t\tif (vertical) return;\n\n\t\t\tnavsRef.current?.scrollBy({\n\t\t\t\tleft: e.deltaY + e.deltaX,\n\t\t\t});\n\t\t};\n\n\t\tnavsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!navsRef.current) return;\n\t\t\tnavsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, [navsRef.current]);\n\n\tuseImperativeHandle(ref, () => ({\n\t\topen,\n\t\tclose,\n\t\tadd,\n\t\tnavs: navsRef,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tabs\",\n\t\t\t\t{ flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-tab-navs-container\", {\n\t\t\t\t\t\"i-tab-navs-vertical\": vertical,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend}\n\n\t\t\t\t<div\n\t\t\t\t\tref={navsRef}\n\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\"i-tab-navs\",\n\t\t\t\t\t\t`justify-${navsJustify}`\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\t\tconst { title, key = i, closable } = tab;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tref={(ref) => (navRefs.current[i] = ref as any)}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": state.active === key,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\t\t\tas='i'\n\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{bar && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tref={barRef}\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\n\t\t\t\t\t\t\tstyle={state.barStyle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{!hideMore && state.overflow && state.more.length > 0 && (\n\t\t\t\t\t<Popup\n\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\n\t\t\t\t\t\talign='end'\n\t\t\t\t\t\ttouchable\n\t\t\t\t\t\thideDelay={500}\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\n\t\t\t\t\t\t\t\t{state.more.map((tab, i) => {\n\t\t\t\t\t\t\t\t\tconst { key = i, title } = tab;\n\t\t\t\t\t\t\t\t\tconst isActive = state.active === key;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderMore(state.more)}\n\t\t\t\t\t</Popup>\n\t\t\t\t)}\n\n\t\t\t\t{append}\n\t\t\t</div>\n\n\t\t\t<div className='i-tab-contents'>\n\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\tconst { key = i, content } = tab;\n\t\t\t\t\tconst isActive = state.active === key;\n\t\t\t\t\tconst show =\n\t\t\t\t\t\tisActive ||\n\t\t\t\t\t\t(key !== undefined && state.cachedTabs.includes(key));\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tshow && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n"],"names":["Tabs","props","ref","active","tabs","items","type","prepend","append","children","className","vertical","toggable","navsJustify","bar","hideMore","barClass","renderMore","_jsx","Button","flat","square","size","Icon","icon","MoreHorizRound","onTabChange","rest","navRefs","useRef","barRef","navsRef","state","useReactive","prevActive","undefined","barStyle","cachedTabs","overflow","more","observe","unobserve","useIntersectionObserver","useSize","useEffect","Children","map","node","i","key","nodeProps","title","content","keepDOM","cloned","pick","String","item","includes","add","tab","findIndex","t","open","l","length","tkey","push","close","splice","next","height","width","scrollHeight","scrollWidth","current","nav","tar","visible","intersecting","filter","index","setTimeout","k","unshift","offsetHeight","offsetLeft","offsetTop","offsetWidth","isLine","transform","handleMouseWheel","e","stopPropagation","preventDefault","scrollBy","left","deltaY","deltaX","addEventListener","passive","removeEventListener","useImperativeHandle","navs","_jsxs","classNames","flex","closable","onClick","Helpericon","as","style","Popup","arrow","position","align","touchable","hideDelay","isActive","Item","TabItem"],"mappings":"uiBA8BA,MAAMA,EAASC,IACd,MAAMC,IACLA,EAAGC,OACHA,EACAC,KAAMC,EAAKC,KACXA,EAAO,UAASC,QAChBA,EAAOC,OACPA,EAAMC,SACNA,EAAQC,UACRA,EAASC,SACTA,EAAQC,SACRA,EAAQC,YACRA,EAAc,QAAOC,IACrBA,GAAM,EAAIC,SACVA,EAAQC,SACRA,EAAQC,WACRA,EAAa,IACZC,EAACC,EAAO,CAAAC,QAAKC,QAAM,EAACC,KAAK,QACxBb,SAAAS,EAACK,EAAI,CAACC,KAAMN,EAACO,EAAc,CAAA,OAE5BC,YACDA,KACGC,GACA1B,EAEE2B,EAAUC,EAAsB,IAChCC,EAASD,EAAwB,MACjCE,EAAUF,EAAuB,MACjCG,EAAQC,EAAoB,CACjC9B,SACA+B,gBAAYC,EACZC,SAAU,CAAE,EACZC,WAAY,GACZC,UAAU,EACVC,KAAM,GACNnC,KAAM,MAEDoC,QAAEA,EAAOC,UAAEA,GAAcC,IACzBpB,EAAOqB,EAAQZ,GAErBa,GAAU,KACT,IAAKvC,EACJ,OAAKI,OAKLuB,EAAM5B,KAAOyC,EAASC,IAAIrC,GAAU,CAACsC,EAAMC,KAC1C,MAAMC,IAAEA,EAAKhD,MAAOiD,GAAcH,GAI5BI,MAAEA,EAAK1C,SAAEA,EAAQ2C,QAAEA,EAAOC,QAAEA,GAAYH,EAExCI,EAAS7C,EACQ,iBAAbA,EACNA,EACA8C,EAAK9C,EAAU,CAAC,QAAS,OAAQ,WAAY,QAC9C2C,EAEH,MAAO,CACNH,IAAKA,GAAOO,OAAOR,GACnBG,QACAC,QAASE,EACTD,UACA,UAtBDrB,EAAM5B,KAAO,IA4Bf4B,EAAM5B,KAAOC,EAAMyC,KAAI,CAACW,EAAMT,IACzB,CAAC,SAAU,UAAUU,gBAAgBD,GACjC,CAAER,IAAKQ,EAAMN,MAAOM,SAEXtB,IAAbsB,EAAKR,MACRQ,EAAKR,IAAMD,GAELS,IACN,GACA,CAAChD,EAAUJ,IAEd,MAAMsD,EAAOC,IACZ,MAAMX,IAAEA,GAAQW,EACVZ,EAAIhB,EAAM5B,KAAKyD,WAAWC,GAAMA,EAAEb,MAAQA,IAEhD,GAAID,GAAI,EAEP,YADAe,EAAK/B,EAAM5B,KAAK4C,GAAGC,KAAOD,GAI3B,MAAMgB,EAAIhC,EAAM5B,KAAK6D,OACfC,EAAON,EAAIX,KAAOe,EACxBhC,EAAM5B,KAAK+D,KAAK,IAAKP,EAAKX,IAAKiB,IAC/BH,EAAKG,EAAK,EAGLE,EAASnB,IACd,MAAMD,EAAIhB,EAAM5B,KAAKyD,WAAWC,GAAMA,EAAEb,MAAQA,IAEhD,GAAID,EAAI,EAAG,OAIX,GAFAhB,EAAM5B,KAAKiE,OAAOrB,EAAG,GAEjBhB,EAAM7B,SAAW8C,EAAK,OAE1B,MAAMqB,EAAOtC,EAAM5B,KAAK4C,IAAMhB,EAAM5B,KAAK4C,EAAI,GAC7Ce,EAAK/B,EAAME,YAAcoC,GAAMrB,KAAO,GAAG,EAGpCc,EAAQd,IACb,GAAIA,IAAQjB,EAAM7B,OAAQ,CACzB,IAAKS,EAAU,OASf,OAPAc,SAAcS,EAAWc,GACzBjB,EAAM7B,YAASgC,OAEfH,EAAMI,SAAW,CAChBmC,OAAQ,EACRC,MAAO,IAKTxC,EAAME,WAAaF,EAAM7B,OACzBuB,IAAcuB,EAAKjB,EAAM7B,QACzB6B,EAAM7B,OAAS8C,CAAG,EA8FnB,OA3FAL,GAAU,KACT,IAAKtB,GAAQP,EAAU,OACvB,MAAM0D,aAAEA,EAAYC,YAAEA,GAAgB3C,EAAQ4C,SACxCH,MAAEA,EAAKD,OAAEA,GAAWjD,EAE1BU,EAAMM,SAAWmC,EAAeF,GAAUG,EAAcF,EAEnDxC,EAAMM,UAEXV,EAAQ+C,QAAQ7B,KAAI,CAAC8B,EAAK5B,KACpB4B,GACLpC,EAAQoC,GAAK,CAACC,EAAkBC,KAC1B9C,EAAM5B,KAAK4C,KAChBhB,EAAM5B,KAAK4C,GAAG+B,aAAeD,EAC7B9C,EAAMO,KAAOP,EAAM5B,KAAK4E,QAAQpB,IAASA,EAAImB,eAAa,GACzD,GACD,GACA,CAACzD,EAAMP,EAAUiB,EAAM5B,KAAK6D,SAE/BrB,GAAU,KACT,IAAK9B,GAAgB,SAATR,QAAoC6B,IAAjBH,EAAM7B,OACpC,OAGD,MAAM8E,EAAQjD,EAAM5B,KAAKyD,WAAWD,GAAQA,EAAIX,MAAQjB,EAAM7B,SAE9D+E,YAAW,KACV,MAAMN,EAAMhD,EAAQ+C,QAAQM,GAE5B,IAAKL,EAAK,OAEV,GAAI5C,EAAM5B,KAAK6E,GAAO5B,SAAWrB,EAAM7B,OAAQ,CACpC6B,EAAMK,WAAWwB,WAAWsB,GAAMA,IAAMnD,EAAM7B,SACpD,GAAK6B,EAAMK,WAAW+C,QAAQpD,EAAM7B,QAGzC,MAAMkF,aAAEA,EAAYC,WAAEA,EAAUC,UAAEA,EAASC,YAAEA,GAAgBZ,EACvDa,EAAkB,SAATnF,EAEf0B,EAAMI,SAAW,CAChBmC,QAAS5D,GAAY8E,EAAS,QAAUJ,EACxCb,MAAO7D,GAAY8E,EAAS,QAAUD,EACtCE,UAAW,aAAaJ,QAAiBC,OACzC,GACC,GAAG,GACJ,CAACvD,EAAM7B,OAAQW,EAAKQ,IAEvBsB,GAAU,UACMT,IAAXhC,GAAwB6B,EAAM7B,SAAWA,GAE7C4D,EAAK5D,EAAO,GACV,CAACA,IAEJyC,GAAU,KACT,IAAI7B,EACJ,MAAO,KACNa,EAAQ+C,SAAS7B,IAAIL,EAAU,CAC/B,GACC,CAACT,EAAM5B,KAAK6D,SAEfrB,GAAU,KACT,IAAKb,EAAQ4C,SAAWhE,EAAU,OAElC,MAAMgF,EAAoBC,IACzBA,EAAEC,kBACFD,EAAEE,iBAEEnF,GAEJoB,EAAQ4C,SAASoB,SAAS,CACzBC,KAAMJ,EAAEK,OAASL,EAAEM,QAClB,EAOH,OAJAnE,EAAQ4C,QAAQwB,iBAAiB,QAASR,EAAkB,CAC3DS,SAAS,IAGH,KACDrE,EAAQ4C,SACb5C,EAAQ4C,QAAQ0B,oBAAoB,QAASV,EAAiB,CAC9D,GACC,CAAC5D,EAAQ4C,UAEZ2B,EAAoBpG,GAAK,KAAO,CAC/B6D,OACAK,QACAT,MACA4C,KAAMxE,MAINyE,EAAA,MAAA,CACC9F,UAAW+F,EACV,SACA,CAAEC,KAAM/F,EAAU,CAAC,UAAUL,KAAkB,YAATA,GACtCI,MAEGiB,EAAIlB,SAAA,CAER+F,SACC9F,UAAW+F,EAAW,uBAAwB,CAC7C,sBAAuB9F,IAGvBF,SAAA,CAAAF,EAEDiG,EAAA,MAAA,CACCtG,IAAK6B,EACLrB,UAAW+F,EACV,aACA,WAAW5F,KACXJ,SAAA,CAEAuB,EAAM5B,KAAK0C,KAAI,CAACc,EAAKZ,KACrB,MAAMG,MAAEA,EAAKF,IAAEA,EAAMD,EAAC2D,SAAEA,GAAa/C,EAErC,OACC4C,EAEC,IAAA,CAAAtG,IAAMA,GAAS0B,EAAQ+C,QAAQ3B,GAAK9C,EACpCQ,UAAW+F,EAAW,YAAa,CAClC,eAAgBzE,EAAM7B,SAAW8C,IAElC2D,QAAS,IAAM7C,EAAKd,GAEnBxC,SAAA,CAAA0C,EAEAwD,GACAzF,EAAC2F,EAAU,CACVC,GAAG,IACH3G,QACA,EAAAO,UAAU,kBACVkG,QAAUhB,IACTA,EAAEC,kBACFzB,EAAMnB,EAAI,MAhBRA,EAoBF,IAILnC,GACAI,EAAA,OAAA,CACChB,IAAK4B,EACLpB,UAAW+F,EAAW,iBAAkBzF,GACxC+F,MAAO/E,EAAMI,eAKdrB,GAAYiB,EAAMM,UAAYN,EAAMO,KAAK0B,OAAS,GACnD/C,EAAC8F,EACA,CAAAC,OAAO,EACPC,SAAUvG,EAAW,QAAU,SAC/BwG,MAAM,MACNC,WAAS,EACTC,UAAW,IACXjE,QACClC,SAAKR,UAAU,uBACbD,SAAAuB,EAAMO,KAAKO,KAAI,CAACc,EAAKZ,KACrB,MAAMC,IAAEA,EAAMD,EAACG,MAAEA,GAAUS,EACrB0D,EAAWtF,EAAM7B,SAAW8C,EAElC,OACC/B,EAEC,IAAA,CAAAR,UAAW+F,EAAW,YAAa,CAClC,eAAgBa,IAEjBV,QAAS,IAAM7C,EAAKd,YAEnBE,GANIF,EAOF,MAMPxC,SAAAQ,EAAWe,EAAMO,QAInB/B,KAGFU,EAAK,MAAA,CAAAR,UAAU,iBACbD,SAAAuB,EAAM5B,KAAK0C,KAAI,CAACc,EAAKZ,KACrB,MAAMC,IAAEA,EAAMD,EAACI,QAAEA,GAAYQ,EACvB0D,EAAWtF,EAAM7B,SAAW8C,EAKlC,OAHCqE,QACSnF,IAARc,GAAqBjB,EAAMK,WAAWqB,SAAST,KAI/C/B,EAAA,MAAA,CAECR,UAAW+F,EAAW,gBAAiB,CACtC,eAAgBa,aAGhBlE,GALIH,EAON,QAMN,EAEDjD,EAAKuH,KAAOC"}
1
+ {"version":3,"file":"tabs.js","sources":["../../../packages/components/tabs/tabs.tsx"],"sourcesContent":["import { MoreHorizRound } from \"@ricons/material\";\nimport { useReactive, useSize } from \"ahooks\";\nimport classNames from \"classnames\";\nimport { pick } from \"radash\";\nimport {\n\tCSSProperties,\n\tChildren,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n} from \"react\";\nimport { useIntersectionObserver } from \"../../js/hooks\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport { CompositionTabs, ITabItem, ITabs, TTabKey } from \"./type\";\n\ntype TState = {\n\tactive?: TTabKey;\n\tprevActive?: TTabKey;\n\tbarStyle: CSSProperties;\n\tcachedTabs: TTabKey[];\n\toverflow: boolean;\n\tmore: ITabItem[];\n\ttabs: ITabItem[];\n};\n\nconst Tabs = ((props: ITabs) => {\n\tconst {\n\t\tref,\n\t\tactive,\n\t\ttabs: items,\n\t\ttype = \"default\",\n\t\tprepend,\n\t\tappend,\n\t\tchildren,\n\t\tclassName,\n\t\tvertical,\n\t\ttoggable,\n\t\tnavsJustify = \"start\",\n\t\tbar = true,\n\t\thideMore,\n\t\tbarClass,\n\t\trenderMore = () => (\n\t\t\t<Button flat square size='small'>\n\t\t\t\t<Icon icon={<MoreHorizRound />} />\n\t\t\t</Button>\n\t\t),\n\t\tonTabChange,\n\t\t...rest\n\t} = props;\n\n\tconst navRefs = useRef<HTMLElement[]>([]);\n\tconst barRef = useRef<HTMLSpanElement>(null);\n\tconst navsRef = useRef<HTMLDivElement>(null);\n\tconst state = useReactive<TState>({\n\t\tactive,\n\t\tprevActive: undefined,\n\t\tbarStyle: {},\n\t\tcachedTabs: [],\n\t\toverflow: false,\n\t\tmore: [],\n\t\ttabs: [],\n\t});\n\tconst { observe, unobserve } = useIntersectionObserver();\n\tconst size = useSize(navsRef);\n\n\tuseEffect(() => {\n\t\tif (!items) {\n\t\t\tif (!children) {\n\t\t\t\tstate.tabs = [];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tstate.tabs = Children.map(children, (node, i) => {\n\t\t\t\tconst { key, props: nodeProps } = node as {\n\t\t\t\t\tkey?: TTabKey;\n\t\t\t\t\tprops?: any;\n\t\t\t\t};\n\t\t\t\tconst { title, children, content, keepDOM } = nodeProps;\n\n\t\t\t\tconst cloned = children\n\t\t\t\t\t? typeof children === \"string\"\n\t\t\t\t\t\t? children\n\t\t\t\t\t\t: pick(children, [\"props\", \"type\", \"$$typeof\", \"ref\"])\n\t\t\t\t\t: content;\n\n\t\t\t\treturn {\n\t\t\t\t\tkey: key || String(i),\n\t\t\t\t\ttitle,\n\t\t\t\t\tcontent: cloned,\n\t\t\t\t\tkeepDOM,\n\t\t\t\t};\n\t\t\t}) as ITabItem[];\n\n\t\t\treturn;\n\t\t}\n\n\t\tstate.tabs = items.map((item, i) => {\n\t\t\tif ([\"string\", \"number\"].includes(typeof item)) {\n\t\t\t\treturn { key: item, title: item };\n\t\t\t}\n\t\t\tif (item.key === undefined) {\n\t\t\t\titem.key = i;\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\t}, [children, items]);\n\n\tconst add = (tab: ITabItem) => {\n\t\tconst { key } = tab;\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i > -1) {\n\t\t\topen(state.tabs[i].key ?? i);\n\t\t\treturn;\n\t\t}\n\n\t\tconst l = state.tabs.length;\n\t\tconst tkey = tab.key ?? l;\n\t\tstate.tabs.push({ ...tab, key: tkey });\n\t\topen(tkey);\n\t};\n\n\tconst close = (key: TTabKey) => {\n\t\tconst i = state.tabs.findIndex((t) => t.key === key);\n\n\t\tif (i < 0) return;\n\n\t\tstate.tabs.splice(i, 1);\n\n\t\tif (state.active !== key) return;\n\n\t\tconst next = state.tabs[i] || state.tabs[i - 1];\n\t\topen(state.prevActive ?? next?.key ?? \"\");\n\t};\n\n\tconst open = (key: TTabKey) => {\n\t\tif (key === state.active) {\n\t\t\tif (!toggable) return;\n\n\t\t\tonTabChange?.(undefined, key);\n\t\t\tstate.active = undefined;\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\tstate.prevActive = state.active;\n\t\tonTabChange?.(key, state.active);\n\t\tstate.active = key;\n\t};\n\n\tuseEffect(() => {\n\t\tif (!size || hideMore) return;\n\t\tconst { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\n\t\tconst { width, height } = size;\n\n\t\tstate.overflow = scrollHeight > height || scrollWidth > width;\n\n\t\tif (!state.overflow) return;\n\n\t\tnavRefs.current.map((nav, i) => {\n\t\t\tif (!nav) return;\n\t\t\tobserve(nav, (tar: HTMLElement, visible: boolean) => {\n\t\t\t\tif (!state.tabs[i]) return;\n\t\t\t\tstate.tabs[i].intersecting = visible;\n\t\t\t\tstate.more = state.tabs.filter((tab) => !tab.intersecting);\n\t\t\t});\n\t\t});\n\t}, [size, hideMore, state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!bar || type === \"pane\" || state.active === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = state.tabs.findIndex((tab) => tab.key === state.active);\n\n\t\tsetTimeout(() => {\n\t\t\tconst nav = navRefs.current[index];\n\n\t\t\tif (!nav) return;\n\n\t\t\tif (state.tabs[index].keepDOM && state.active) {\n\t\t\t\tconst i = state.cachedTabs.findIndex((k) => k === state.active);\n\t\t\t\ti < 0 && state.cachedTabs.unshift(state.active);\n\t\t\t}\n\n\t\t\tconst { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\n\t\t\tconst isLine = type === \"line\";\n\n\t\t\tstate.barStyle = {\n\t\t\t\theight: !vertical && isLine ? \".25em\" : offsetHeight,\n\t\t\t\twidth: vertical && isLine ? \".25em\" : offsetWidth,\n\t\t\t\ttransform: `translate(${offsetLeft}px, ${offsetTop}px)`,\n\t\t\t};\n\t\t}, 16);\n\t}, [state.active, bar, size]);\n\n\tuseEffect(() => {\n\t\tif (active === undefined || state.active === active) return;\n\n\t\topen(active);\n\t}, [active]);\n\n\tuseEffect(() => {\n\t\tif (hideMore) return;\n\t\treturn () => {\n\t\t\tnavRefs.current?.map(unobserve);\n\t\t};\n\t}, [state.tabs.length]);\n\n\tuseEffect(() => {\n\t\tif (!navsRef.current || vertical) return;\n\n\t\tconst handleMouseWheel = (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\n\t\t\tif (vertical) return;\n\n\t\t\tnavsRef.current?.scrollBy({\n\t\t\t\tleft: e.deltaY + e.deltaX,\n\t\t\t});\n\t\t};\n\n\t\tnavsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n\t\t\tpassive: false,\n\t\t});\n\n\t\treturn () => {\n\t\t\tif (!navsRef.current) return;\n\t\t\tnavsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n\t\t};\n\t}, [navsRef.current]);\n\n\tuseImperativeHandle(ref, () => ({\n\t\topen,\n\t\tclose,\n\t\tadd,\n\t\tnavs: navsRef,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-tabs\",\n\t\t\t\t{ flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={classNames(\"i-tab-navs-container\", {\n\t\t\t\t\t\"i-tab-navs-vertical\": vertical,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{prepend}\n\n\t\t\t\t<div\n\t\t\t\t\tref={navsRef}\n\t\t\t\t\tclassName={classNames(\n\t\t\t\t\t\t\"i-tab-navs\",\n\t\t\t\t\t\t`justify-${navsJustify}`\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\t\tconst { title, key = i, closable } = tab;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tref={(ref) => (navRefs.current[i] = ref as any)}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": state.active === key,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\n\t\t\t\t\t\t\t\t{closable && (\n\t\t\t\t\t\t\t\t\t<Helpericon\n\t\t\t\t\t\t\t\t\t\tas='i'\n\t\t\t\t\t\t\t\t\t\tactive\n\t\t\t\t\t\t\t\t\t\tclassName='i-tab-nav-close'\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tclose(key);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\n\t\t\t\t\t{bar && (\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tref={barRef}\n\t\t\t\t\t\t\tclassName={classNames(\"i-tab-navs-bar\", barClass)}\n\t\t\t\t\t\t\tstyle={state.barStyle}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t{!hideMore && state.overflow && state.more.length > 0 && (\n\t\t\t\t\t<Popup\n\t\t\t\t\t\tarrow={false}\n\t\t\t\t\t\tposition={vertical ? \"right\" : \"bottom\"}\n\t\t\t\t\t\talign='end'\n\t\t\t\t\t\ttouchable\n\t\t\t\t\t\thideDelay={500}\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t<div className='i-tabs-morelist pd-4'>\n\t\t\t\t\t\t\t\t{state.more.map((tab, i) => {\n\t\t\t\t\t\t\t\t\tconst { key = i, title } = tab;\n\t\t\t\t\t\t\t\t\tconst isActive = state.active === key;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-nav\", {\n\t\t\t\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => open(key)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderMore(state.more)}\n\t\t\t\t\t</Popup>\n\t\t\t\t)}\n\n\t\t\t\t{append}\n\t\t\t</div>\n\n\t\t\t<div className='i-tab-contents'>\n\t\t\t\t{state.tabs.map((tab, i) => {\n\t\t\t\t\tconst { key = i, content } = tab;\n\t\t\t\t\tconst isActive = state.active === key;\n\t\t\t\t\tconst show =\n\t\t\t\t\t\tisActive ||\n\t\t\t\t\t\t(key !== undefined && state.cachedTabs.includes(key));\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\tshow && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={classNames(\"i-tab-content\", {\n\t\t\t\t\t\t\t\t\t\"i-tab-active\": isActive,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n"],"names":["Tabs","props","ref","active","tabs","items","type","prepend","append","children","className","vertical","toggable","navsJustify","bar","hideMore","barClass","renderMore","_jsx","Button","flat","square","size","Icon","icon","MoreHorizRound","onTabChange","rest","navRefs","useRef","barRef","navsRef","state","useReactive","prevActive","undefined","barStyle","cachedTabs","overflow","more","observe","unobserve","useIntersectionObserver","useSize","useEffect","Children","map","node","i","key","nodeProps","title","content","keepDOM","cloned","pick","String","item","includes","add","tab","findIndex","t","open","l","length","tkey","push","close","splice","next","height","width","scrollHeight","scrollWidth","current","nav","tar","visible","intersecting","filter","index","setTimeout","k","unshift","offsetHeight","offsetLeft","offsetTop","offsetWidth","isLine","transform","handleMouseWheel","e","stopPropagation","preventDefault","scrollBy","left","deltaY","deltaX","addEventListener","passive","removeEventListener","useImperativeHandle","navs","_jsxs","classNames","flex","closable","onClick","Helpericon","as","style","Popup","arrow","position","align","touchable","hideDelay","isActive","Item","TabItem"],"mappings":"uiBA8BA,MAAMA,EAASC,IACd,MAAMC,IACLA,EAAGC,OACHA,EACAC,KAAMC,EAAKC,KACXA,EAAO,UAASC,QAChBA,EAAOC,OACPA,EAAMC,SACNA,EAAQC,UACRA,EAASC,SACTA,EAAQC,SACRA,EAAQC,YACRA,EAAc,QAAOC,IACrBA,GAAM,EAAIC,SACVA,EAAQC,SACRA,EAAQC,WACRA,EAAa,IACZC,EAACC,EAAO,CAAAC,QAAKC,QAAM,EAACC,KAAK,QACxBb,SAAAS,EAACK,EAAI,CAACC,KAAMN,EAACO,EAAc,CAAA,OAE5BC,YACDA,KACGC,GACA1B,EAEE2B,EAAUC,EAAsB,IAChCC,EAASD,EAAwB,MACjCE,EAAUF,EAAuB,MACjCG,EAAQC,EAAoB,CACjC9B,SACA+B,gBAAYC,EACZC,SAAU,CAAE,EACZC,WAAY,GACZC,UAAU,EACVC,KAAM,GACNnC,KAAM,MAEDoC,QAAEA,EAAOC,UAAEA,GAAcC,IACzBpB,EAAOqB,EAAQZ,GAErBa,GAAU,KACT,IAAKvC,EACJ,OAAKI,OAKLuB,EAAM5B,KAAOyC,EAASC,IAAIrC,GAAU,CAACsC,EAAMC,KAC1C,MAAMC,IAAEA,EAAKhD,MAAOiD,GAAcH,GAI5BI,MAAEA,EAAK1C,SAAEA,EAAQ2C,QAAEA,EAAOC,QAAEA,GAAYH,EAExCI,EAAS7C,EACQ,iBAAbA,EACNA,EACA8C,EAAK9C,EAAU,CAAC,QAAS,OAAQ,WAAY,QAC9C2C,EAEH,MAAO,CACNH,IAAKA,GAAOO,OAAOR,GACnBG,QACAC,QAASE,EACTD,UACA,UAtBDrB,EAAM5B,KAAO,IA4Bf4B,EAAM5B,KAAOC,EAAMyC,KAAI,CAACW,EAAMT,IACzB,CAAC,SAAU,UAAUU,gBAAgBD,GACjC,CAAER,IAAKQ,EAAMN,MAAOM,SAEXtB,IAAbsB,EAAKR,MACRQ,EAAKR,IAAMD,GAELS,IACN,GACA,CAAChD,EAAUJ,IAEd,MAAMsD,EAAOC,IACZ,MAAMX,IAAEA,GAAQW,EACVZ,EAAIhB,EAAM5B,KAAKyD,WAAWC,GAAMA,EAAEb,MAAQA,IAEhD,GAAID,GAAI,EAEP,YADAe,EAAK/B,EAAM5B,KAAK4C,GAAGC,KAAOD,GAI3B,MAAMgB,EAAIhC,EAAM5B,KAAK6D,OACfC,EAAON,EAAIX,KAAOe,EACxBhC,EAAM5B,KAAK+D,KAAK,IAAKP,EAAKX,IAAKiB,IAC/BH,EAAKG,EAAK,EAGLE,EAASnB,IACd,MAAMD,EAAIhB,EAAM5B,KAAKyD,WAAWC,GAAMA,EAAEb,MAAQA,IAEhD,GAAID,EAAI,EAAG,OAIX,GAFAhB,EAAM5B,KAAKiE,OAAOrB,EAAG,GAEjBhB,EAAM7B,SAAW8C,EAAK,OAE1B,MAAMqB,EAAOtC,EAAM5B,KAAK4C,IAAMhB,EAAM5B,KAAK4C,EAAI,GAC7Ce,EAAK/B,EAAME,YAAcoC,GAAMrB,KAAO,GAAG,EAGpCc,EAAQd,IACb,GAAIA,IAAQjB,EAAM7B,OAAQ,CACzB,IAAKS,EAAU,OASf,OAPAc,SAAcS,EAAWc,GACzBjB,EAAM7B,YAASgC,OAEfH,EAAMI,SAAW,CAChBmC,OAAQ,EACRC,MAAO,IAKTxC,EAAME,WAAaF,EAAM7B,OACzBuB,IAAcuB,EAAKjB,EAAM7B,QACzB6B,EAAM7B,OAAS8C,CAAG,EA8FnB,OA3FAL,GAAU,KACT,IAAKtB,GAAQP,EAAU,OACvB,MAAM0D,aAAEA,EAAYC,YAAEA,GAAgB3C,EAAQ4C,SACxCH,MAAEA,EAAKD,OAAEA,GAAWjD,EAE1BU,EAAMM,SAAWmC,EAAeF,GAAUG,EAAcF,EAEnDxC,EAAMM,UAEXV,EAAQ+C,QAAQ7B,KAAI,CAAC8B,EAAK5B,KACpB4B,GACLpC,EAAQoC,GAAK,CAACC,EAAkBC,KAC1B9C,EAAM5B,KAAK4C,KAChBhB,EAAM5B,KAAK4C,GAAG+B,aAAeD,EAC7B9C,EAAMO,KAAOP,EAAM5B,KAAK4E,QAAQpB,IAASA,EAAImB,eAAa,GACzD,GACD,GACA,CAACzD,EAAMP,EAAUiB,EAAM5B,KAAK6D,SAE/BrB,GAAU,KACT,IAAK9B,GAAgB,SAATR,QAAoC6B,IAAjBH,EAAM7B,OACpC,OAGD,MAAM8E,EAAQjD,EAAM5B,KAAKyD,WAAWD,GAAQA,EAAIX,MAAQjB,EAAM7B,SAE9D+E,YAAW,KACV,MAAMN,EAAMhD,EAAQ+C,QAAQM,GAE5B,IAAKL,EAAK,OAEV,GAAI5C,EAAM5B,KAAK6E,GAAO5B,SAAWrB,EAAM7B,OAAQ,CACpC6B,EAAMK,WAAWwB,WAAWsB,GAAMA,IAAMnD,EAAM7B,SACpD,GAAK6B,EAAMK,WAAW+C,QAAQpD,EAAM7B,QAGzC,MAAMkF,aAAEA,EAAYC,WAAEA,EAAUC,UAAEA,EAASC,YAAEA,GAAgBZ,EACvDa,EAAkB,SAATnF,EAEf0B,EAAMI,SAAW,CAChBmC,QAAS5D,GAAY8E,EAAS,QAAUJ,EACxCb,MAAO7D,GAAY8E,EAAS,QAAUD,EACtCE,UAAW,aAAaJ,QAAiBC,OACzC,GACC,GAAG,GACJ,CAACvD,EAAM7B,OAAQW,EAAKQ,IAEvBsB,GAAU,UACMT,IAAXhC,GAAwB6B,EAAM7B,SAAWA,GAE7C4D,EAAK5D,EAAO,GACV,CAACA,IAEJyC,GAAU,KACT,IAAI7B,EACJ,MAAO,KACNa,EAAQ+C,SAAS7B,IAAIL,EAAU,CAC/B,GACC,CAACT,EAAM5B,KAAK6D,SAEfrB,GAAU,KACT,IAAKb,EAAQ4C,SAAWhE,EAAU,OAElC,MAAMgF,EAAoBC,IACzBA,EAAEC,kBACFD,EAAEE,iBAEEnF,GAEJoB,EAAQ4C,SAASoB,SAAS,CACzBC,KAAMJ,EAAEK,OAASL,EAAEM,QAClB,EAOH,OAJAnE,EAAQ4C,QAAQwB,iBAAiB,QAASR,EAAkB,CAC3DS,SAAS,IAGH,KACDrE,EAAQ4C,SACb5C,EAAQ4C,QAAQ0B,oBAAoB,QAASV,EAAiB,CAC9D,GACC,CAAC5D,EAAQ4C,UAEZ2B,EAAoBpG,GAAK,KAAO,CAC/B6D,OACAK,QACAT,MACA4C,KAAMxE,MAINyE,EAAA,MAAA,CACC9F,UAAW+F,EACV,SACA,CAAEC,KAAM/F,EAAU,CAAC,UAAUL,KAAkB,YAATA,GACtCI,MAEGiB,EAAIlB,SAAA,CAER+F,SACC9F,UAAW+F,EAAW,uBAAwB,CAC7C,sBAAuB9F,IAGvBF,SAAA,CAAAF,EAEDiG,EAAA,MAAA,CACCtG,IAAK6B,EACLrB,UAAW+F,EACV,aACA,WAAW5F,KACXJ,SAAA,CAEAuB,EAAM5B,KAAK0C,KAAI,CAACc,EAAKZ,KACrB,MAAMG,MAAEA,EAAKF,IAAEA,EAAMD,EAAC2D,SAAEA,GAAa/C,EAErC,OACC4C,EAEC,IAAA,CAAAtG,IAAMA,GAAS0B,EAAQ+C,QAAQ3B,GAAK9C,EACpCQ,UAAW+F,EAAW,YAAa,CAClC,eAAgBzE,EAAM7B,SAAW8C,IAElC2D,QAAS,IAAM7C,EAAKd,GAEnBxC,SAAA,CAAA0C,EAEAwD,GACAzF,EAAC2F,EAAU,CACVC,GAAG,IACH3G,QACA,EAAAO,UAAU,kBACVkG,QAAUhB,IACTA,EAAEC,kBACFzB,EAAMnB,EAAI,MAhBRA,EAoBF,IAILnC,GACAI,EAAA,OAAA,CACChB,IAAK4B,EACLpB,UAAW+F,EAAW,iBAAkBzF,GACxC+F,MAAO/E,EAAMI,eAKdrB,GAAYiB,EAAMM,UAAYN,EAAMO,KAAK0B,OAAS,GACnD/C,EAAC8F,EACA,CAAAC,OAAO,EACPC,SAAUvG,EAAW,QAAU,SAC/BwG,MAAM,MACNC,WAAS,EACTC,UAAW,IACXjE,QACClC,SAAKR,UAAU,uBACbD,SAAAuB,EAAMO,KAAKO,KAAI,CAACc,EAAKZ,KACrB,MAAMC,IAAEA,EAAMD,EAACG,MAAEA,GAAUS,EACrB0D,EAAWtF,EAAM7B,SAAW8C,EAElC,OACC/B,EAEC,IAAA,CAAAR,UAAW+F,EAAW,YAAa,CAClC,eAAgBa,IAEjBV,QAAS,IAAM7C,EAAKd,YAEnBE,GANIF,EAOF,MAMPxC,SAAAQ,EAAWe,EAAMO,QAInB/B,KAGFU,EAAK,MAAA,CAAAR,UAAU,iBACbD,SAAAuB,EAAM5B,KAAK0C,KAAI,CAACc,EAAKZ,KACrB,MAAMC,IAAEA,EAAMD,EAACI,QAAEA,GAAYQ,EACvB0D,EAAWtF,EAAM7B,SAAW8C,EAKlC,OAHCqE,QACSnF,IAARc,GAAqBjB,EAAMK,WAAWqB,SAAST,KAI/C/B,EAAA,MAAA,CAECR,UAAW+F,EAAW,gBAAiB,CACtC,eAAgBa,aAGhBlE,GALIH,EAON,QAMN,EAEDjD,EAAKuH,KAAOC"}
@@ -1,2 +1,2 @@
1
- import{jsx as t}from"react/jsx-runtime";import{formatNumber as o,animate as r}from"../../js/utils.js";import{useState as i,useMemo as n,useEffect as e}from"react";import s from"./text.js";function u(u){const{count:d,to:m,decimal:a,thousand:c=",",duration:f=2400,easing:p,...j}=u,[l,x]=i(d),h=n((()=>{if(void 0===l)return;const t=l.toFixed(a);return c?o(l,{precision:a,thousand:c}):t}),[l,c]);return e((()=>{void 0!==d&&void 0!==m&&r(d,m,f,(t=>x(d+t)),p)}),[m]),e((()=>x(d)),[d]),t(s,{...j,children:h})}export{u as default};
1
+ import{jsx as t}from"react/jsx-runtime";import{useState as o,useMemo as r,useEffect as i}from"react";import{formatNumber as n,animate as e}from"../../js/utils.js";import s from"./text.js";function u(u){const{count:d,to:m,decimal:a,thousand:c=",",duration:f=2400,easing:p,...j}=u,[l,x]=o(d),h=r((()=>{if(void 0===l)return;const t=l.toFixed(a);return c?n(l,{precision:a,thousand:c}):t}),[l,c]);return i((()=>{void 0!==d&&void 0!==m&&e(d,m,f,(t=>x(d+t)),p)}),[m]),i((()=>x(d)),[d]),t(s,{...j,children:h})}export{u as default};
2
2
  //# sourceMappingURL=number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sources":["../../../packages/components/text/number.tsx"],"sourcesContent":["import { animate, formatNumber } from \"@p/js/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport Text from \"./text\";\nimport { ITextNumber } from \"./type\";\n\nexport default function Number(props: ITextNumber) {\n\tconst {\n\t\tcount,\n\t\tto,\n\t\tdecimal,\n\t\tthousand = \",\",\n\t\tduration = 2400,\n\t\teasing,\n\t\t...restProps\n\t} = props;\n\tconst [n, setN] = useState(count);\n\n\tconst number = useMemo(() => {\n\t\tif (n === undefined) return;\n\n\t\tconst z = n.toFixed(decimal);\n\n\t\tif (!thousand) return z;\n\n\t\treturn formatNumber(n, { precision: decimal, thousand });\n\t}, [n, thousand]);\n\n\tuseEffect(() => {\n\t\tif (count === undefined || to === undefined) return;\n\n\t\tanimate(count, to, duration, (v) => setN(count + v), easing);\n\t}, [to]);\n\n\tuseEffect(() => setN(count), [count]);\n\n\treturn <Text {...restProps}>{number}</Text>;\n}\n"],"names":["Number","props","count","to","decimal","thousand","duration","easing","restProps","n","setN","useState","number","useMemo","undefined","z","toFixed","formatNumber","precision","useEffect","animate","v","_jsx","Text","children"],"mappings":"4LAKwB,SAAAA,EAAOC,GAC9B,MAAMC,MACLA,EAAKC,GACLA,EAAEC,QACFA,EAAOC,SACPA,EAAW,IAAGC,SACdA,EAAW,KAAIC,OACfA,KACGC,GACAP,GACGQ,EAAGC,GAAQC,EAAST,GAErBU,EAASC,GAAQ,KACtB,QAAUC,IAANL,EAAiB,OAErB,MAAMM,EAAIN,EAAEO,QAAQZ,GAEpB,OAAKC,EAEEY,EAAaR,EAAG,CAAES,UAAWd,EAASC,aAFvBU,CAEkC,GACtD,CAACN,EAAGJ,IAUP,OARAc,GAAU,UACKL,IAAVZ,QAA8BY,IAAPX,GAE3BiB,EAAQlB,EAAOC,EAAIG,GAAWe,GAAMX,EAAKR,EAAQmB,IAAId,EAAO,GAC1D,CAACJ,IAEJgB,GAAU,IAAMT,EAAKR,IAAQ,CAACA,IAEvBoB,EAACC,EAAI,IAAKf,EAAYgB,SAAAZ,GAC9B"}
1
+ {"version":3,"file":"number.js","sources":["../../../packages/components/text/number.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { animate, formatNumber } from \"../../js/utils\";\nimport Text from \"./text\";\nimport { ITextNumber } from \"./type\";\n\nexport default function Number(props: ITextNumber) {\n\tconst {\n\t\tcount,\n\t\tto,\n\t\tdecimal,\n\t\tthousand = \",\",\n\t\tduration = 2400,\n\t\teasing,\n\t\t...restProps\n\t} = props;\n\tconst [n, setN] = useState(count);\n\n\tconst number = useMemo(() => {\n\t\tif (n === undefined) return;\n\n\t\tconst z = n.toFixed(decimal);\n\n\t\tif (!thousand) return z;\n\n\t\treturn formatNumber(n, { precision: decimal, thousand });\n\t}, [n, thousand]);\n\n\tuseEffect(() => {\n\t\tif (count === undefined || to === undefined) return;\n\n\t\tanimate(count, to, duration, (v) => setN(count + v), easing);\n\t}, [to]);\n\n\tuseEffect(() => setN(count), [count]);\n\n\treturn <Text {...restProps}>{number}</Text>;\n}\n"],"names":["Number","props","count","to","decimal","thousand","duration","easing","restProps","n","setN","useState","number","useMemo","undefined","z","toFixed","formatNumber","precision","useEffect","animate","v","_jsx","Text","children"],"mappings":"4LAKwB,SAAAA,EAAOC,GAC9B,MAAMC,MACLA,EAAKC,GACLA,EAAEC,QACFA,EAAOC,SACPA,EAAW,IAAGC,SACdA,EAAW,KAAIC,OACfA,KACGC,GACAP,GACGQ,EAAGC,GAAQC,EAAST,GAErBU,EAASC,GAAQ,KACtB,QAAUC,IAANL,EAAiB,OAErB,MAAMM,EAAIN,EAAEO,QAAQZ,GAEpB,OAAKC,EAEEY,EAAaR,EAAG,CAAES,UAAWd,EAASC,aAFvBU,CAEkC,GACtD,CAACN,EAAGJ,IAUP,OARAc,GAAU,UACKL,IAAVZ,QAA8BY,IAAPX,GAE3BiB,EAAQlB,EAAOC,EAAIG,GAAWe,GAAMX,EAAKR,EAAQmB,IAAId,EAAO,GAC1D,CAACJ,IAEJgB,GAAU,IAAMT,EAAKR,IAAQ,CAACA,IAEvBoB,EAACC,EAAI,IAAKf,EAAYgB,SAAAZ,GAC9B"}
@@ -1,2 +1,2 @@
1
- import{jsx as r}from"react/jsx-runtime";import{formatTime as t}from"../../js/utils.js";import{useMemo as o}from"react";import e from"./text.js";function i(i){const{seconds:s,zero:m,units:n,...u}=i,c=o((()=>void 0===s?"":t(s,{zero:m,units:n})),[s]);return r(e,{...u,children:c})}export{i as default};
1
+ import{jsx as r}from"react/jsx-runtime";import{useMemo as t}from"react";import{formatTime as o}from"../../js/utils.js";import e from"./text.js";function i(i){const{seconds:s,zero:m,units:n,...u}=i,c=t((()=>void 0===s?"":o(s,{zero:m,units:n})),[s]);return r(e,{...u,children:c})}export{i as default};
2
2
  //# sourceMappingURL=time.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","sources":["../../../packages/components/text/time.tsx"],"sourcesContent":["import { formatTime } from \"@p/js/utils\";\nimport { useMemo } from \"react\";\nimport Text from \"./text\";\nimport { ITextTime } from \"./type\";\n\nexport default function Number(props: ITextTime) {\n\tconst { seconds, zero, units, ...restProps } = props;\n\n\tconst text = useMemo(() => {\n\t\tif (seconds === undefined) return \"\";\n\n\t\treturn formatTime(seconds, {\n\t\t\tzero,\n\t\t\tunits,\n\t\t});\n\t}, [seconds]);\n\n\treturn <Text {...restProps}>{text}</Text>;\n}\n"],"names":["Number","props","seconds","zero","units","restProps","text","useMemo","undefined","formatTime","_jsx","Text","children"],"mappings":"gJAKwB,SAAAA,EAAOC,GAC9B,MAAMC,QAAEA,EAAOC,KAAEA,EAAIC,MAAEA,KAAUC,GAAcJ,EAEzCK,EAAOC,GAAQ,SACJC,IAAZN,EAA8B,GAE3BO,EAAWP,EAAS,CAC1BC,OACAC,WAEC,CAACF,IAEJ,OAAOQ,EAACC,EAAI,IAAKN,EAAYO,SAAAN,GAC9B"}
1
+ {"version":3,"file":"time.js","sources":["../../../packages/components/text/time.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { formatTime } from \"../../js/utils\";\nimport Text from \"./text\";\nimport { ITextTime } from \"./type\";\n\nexport default function Number(props: ITextTime) {\n\tconst { seconds, zero, units, ...restProps } = props;\n\n\tconst text = useMemo(() => {\n\t\tif (seconds === undefined) return \"\";\n\n\t\treturn formatTime(seconds, {\n\t\t\tzero,\n\t\t\tunits,\n\t\t});\n\t}, [seconds]);\n\n\treturn <Text {...restProps}>{text}</Text>;\n}\n"],"names":["Number","props","seconds","zero","units","restProps","text","useMemo","undefined","formatTime","_jsx","Text","children"],"mappings":"gJAKwB,SAAAA,EAAOC,GAC9B,MAAMC,QAAEA,EAAOC,KAAEA,EAAIC,MAAEA,KAAUC,GAAcJ,EAEzCK,EAAOC,GAAQ,SACJC,IAAZN,EAA8B,GAE3BO,EAAWP,EAAS,CAC1BC,OACAC,WAEC,CAACF,IAEJ,OAAOQ,EAACC,EAAI,IAAKN,EAAYO,SAAAN,GAC9B"}
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as r,Fragment as i}from"react/jsx-runtime";import{TFileType as o}from"../../js/usePreview/type.js";import{getFileType as t,formatBytes as a}from"../../js/utils.js";import{ListAltRound as s}from"@ricons/material";import{title as n}from"radash";import l from"react-easy-sort";import m from"../icon/icon.js";import"../image/index.js";import c from"../utils/helpericon/helpericon.js";import d from"../image/image.js";const p=r=>{const{sortable:i,onSortEnd:o,itemProps:t,...a}=r,s={className:"i-upload-list",onClick:e=>{e.stopPropagation(),e.preventDefault()}};return i?e(l,{draggedItemClassName:"i-upload-item-dragged",onSortEnd:o,...s,...a}):e("div",{...s,...a})},f=l=>{const{ref:p,mode:f,index:u,file:v,renderItem:h,onRemove:g,onPreview:j}=l;if(!v)return"";const{id:N,name:k,size:C,url:D,src:P}=v,w=t(k,v.type);if(h)return h(v,u);const x=e(c,{active:!0,className:"i-upload-delete",onClick:e=>{e.stopPropagation(),e.preventDefault(),g(u)}});if("card"===f){let t=e(i,{});switch(w){case o.IMAGE:t=e(d,{lazyload:!0,src:D||P,fit:"cover",onMouseDown:e=>e.preventDefault()});break;case o.VIDEO:t=e("video",{src:D||P,preload:"none"});break;default:t=r(i,{children:[e(m,{icon:e(s,{})}),e("span",{className:"i-upload-file-name",children:n(k)})]})}return r("div",{ref:p,title:k,className:"i-upload-item-card",onClick:()=>j?.(u),children:[t,x]})}return r("div",{ref:p,className:"i-upload-item",onClick:()=>j?.(u),children:[e("span",{children:k}),e("i",{className:"i-upload-size",children:a(C??0)}),x]},N)};export{p as ListContainer,f as default};
1
+ import{jsx as e,jsxs as r,Fragment as i}from"react/jsx-runtime";import{ListAltRound as o}from"@ricons/material";import{title as t}from"radash";import a from"react-easy-sort";import{TFileType as s}from"../../js/usePreview/type.js";import{getFileType as n,formatBytes as l}from"../../js/utils.js";import m from"../icon/icon.js";import"../image/index.js";import c from"../utils/helpericon/helpericon.js";import d from"../image/image.js";const p=r=>{const{sortable:i,onSortEnd:o,itemProps:t,...s}=r,n={className:"i-upload-list",onClick:e=>{e.stopPropagation(),e.preventDefault()}};return i?e(a,{draggedItemClassName:"i-upload-item-dragged",onSortEnd:o,...n,...s}):e("div",{...n,...s})},f=a=>{const{ref:p,mode:f,index:u,file:v,renderItem:h,onRemove:g,onPreview:j}=a;if(!v)return"";const{id:N,name:k,size:C,url:D,src:P}=v,w=n(k,v.type);if(h)return h(v,u);const x=e(c,{active:!0,className:"i-upload-delete",onClick:e=>{e.stopPropagation(),e.preventDefault(),g(u)}});if("card"===f){let a=e(i,{});switch(w){case s.IMAGE:a=e(d,{lazyload:!0,src:D||P,fit:"cover",onMouseDown:e=>e.preventDefault()});break;case s.VIDEO:a=e("video",{src:D||P,preload:"none"});break;default:a=r(i,{children:[e(m,{icon:e(o,{})}),e("span",{className:"i-upload-file-name",children:t(k)})]})}return r("div",{ref:p,title:k,className:"i-upload-item-card",onClick:()=>j?.(u),children:[a,x]})}return r("div",{ref:p,className:"i-upload-item",onClick:()=>j?.(u),children:[e("span",{children:k}),e("i",{className:"i-upload-size",children:l(C??0)}),x]},N)};export{p as ListContainer,f as default};
2
2
  //# sourceMappingURL=renderFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderFile.js","sources":["../../../packages/components/upload/renderFile.tsx"],"sourcesContent":["import { TFileType } from \"@p/js/usePreview/type\";\nimport { formatBytes, getFileType } from \"@p/js/utils\";\nimport { ListAltRound } from \"@ricons/material\";\nimport { title } from \"radash\";\nimport { RefObject } from \"react\";\nimport SortableContainer from \"react-easy-sort\";\nimport Icon from \"../icon\";\nimport Image from \"../image\";\nimport Helpericon from \"../utils/helpericon\";\nimport { IUploadItem } from \"./type\";\n\nexport const ListContainer = (props) => {\n\tconst { sortable, onSortEnd, itemProps, ...restProps } = props;\n\tconst customProps = {\n\t\tclassName: \"i-upload-list\",\n\t\tonClick: (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t};\n\n\tif (!sortable) {\n\t\treturn <div {...customProps} {...restProps} />;\n\t}\n\treturn (\n\t\t<SortableContainer\n\t\t\tdraggedItemClassName='i-upload-item-dragged'\n\t\t\tonSortEnd={onSortEnd}\n\t\t\t{...customProps}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nconst FileListItem = (\n\tprops: IUploadItem & { ref?: RefObject<HTMLDivElement | null> }\n) => {\n\tconst { ref, mode, index, file, renderItem, onRemove, onPreview } = props;\n\n\tif (!file) return \"\";\n\n\tconst { id, name, size, url, src } = file;\n\tconst type = getFileType(name, file.type);\n\n\tif (renderItem) {\n\t\treturn renderItem(file, index);\n\t}\n\n\tconst CloseBtn = (\n\t\t<Helpericon\n\t\t\tactive\n\t\t\tclassName='i-upload-delete'\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\tonRemove(index);\n\t\t\t}}\n\t\t/>\n\t);\n\n\tswitch (mode) {\n\t\tcase \"card\":\n\t\t\tlet node = <></>;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase TFileType.IMAGE:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tlazyload\n\t\t\t\t\t\t\tsrc={url || src}\n\t\t\t\t\t\t\tfit='cover'\n\t\t\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase TFileType.VIDEO:\n\t\t\t\t\tnode = <video src={url || src} preload='none' />;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Icon icon={<ListAltRound />} />\n\t\t\t\t\t\t\t<span className='i-upload-file-name'>\n\t\t\t\t\t\t\t\t{title(name)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttitle={name}\n\t\t\t\t\tclassName='i-upload-item-card'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t{node}\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tkey={id}\n\t\t\t\t\tclassName='i-upload-item'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t<span>{name}</span>\n\n\t\t\t\t\t<i className='i-upload-size'>{formatBytes(size ?? 0)}</i>\n\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t}\n};\n\nexport default FileListItem;\n"],"names":["ListContainer","props","sortable","onSortEnd","itemProps","restProps","customProps","className","onClick","e","stopPropagation","preventDefault","_jsx","SortableContainer","draggedItemClassName","FileListItem","ref","mode","index","file","renderItem","onRemove","onPreview","id","name","size","url","src","type","getFileType","CloseBtn","Helpericon","active","node","_Fragment","TFileType","IMAGE","Image","lazyload","fit","onMouseDown","VIDEO","preload","_jsxs","children","Icon","icon","ListAltRound","title","formatBytes"],"mappings":"kbAWa,MAAAA,EAAiBC,IAC7B,MAAMC,SAAEA,EAAQC,UAAEA,EAASC,UAAEA,KAAcC,GAAcJ,EACnDK,EAAc,CACnBC,UAAW,gBACXC,QAAUC,IACTA,EAAEC,kBACFD,EAAEE,gBAAgB,GAIpB,OAAKT,EAIJU,EAACC,EACA,CAAAC,qBAAqB,wBACrBX,UAAWA,KACPG,KACAD,IAPEO,EAAS,MAAA,IAAAN,KAAiBD,GAQ/B,EAIEU,EACLd,IAEA,MAAMe,IAAEA,EAAGC,KAAEA,EAAIC,MAAEA,EAAKC,KAAEA,EAAIC,WAAEA,EAAUC,SAAEA,EAAQC,UAAEA,GAAcrB,EAEpE,IAAKkB,EAAM,MAAO,GAElB,MAAMI,GAAEA,EAAEC,KAAEA,EAAIC,KAAEA,EAAIC,IAAEA,EAAGC,IAAEA,GAAQR,EAC/BS,EAAOC,EAAYL,EAAML,EAAKS,MAEpC,GAAIR,EACH,OAAOA,EAAWD,EAAMD,GAGzB,MAAMY,EACLlB,EAACmB,GACAC,QAAM,EACNzB,UAAU,kBACVC,QAAUC,IACTA,EAAEC,kBACFD,EAAEE,iBACFU,EAASH,EAAM,IAKlB,GACM,SADED,EACP,CACC,IAAIgB,EAAOrB,EAAAsB,EAAA,IAEX,OAAQN,GACP,KAAKO,EAAUC,MACdH,EACCrB,EAACyB,EACA,CAAAC,UACA,EAAAX,IAAKD,GAAOC,EACZY,IAAI,QACJC,YAAc/B,GAAMA,EAAEE,mBAGxB,MACD,KAAKwB,EAAUM,MACdR,EAAOrB,EAAA,QAAA,CAAOe,IAAKD,GAAOC,EAAKe,QAAQ,SACvC,MACD,QACCT,EACCU,EAAAT,EAAA,CAAAU,SAAA,CACChC,EAACiC,GAAKC,KAAMlC,EAACmC,EAAe,CAAA,KAC5BnC,EAAM,OAAA,CAAAL,UAAU,qBACdqC,SAAAI,EAAMxB,QAOZ,OACCmB,EAAA,MAAA,CACC3B,IAAKA,EACLgC,MAAOxB,EACPjB,UAAU,qBACVC,QAAS,IAAMc,IAAYJ,GAAM0B,SAAA,CAEhCX,EACAH,IACI,CAGP,OACCa,EACC,MAAA,CAAA3B,IAAKA,EAELT,UAAU,gBACVC,QAAS,IAAMc,IAAYJ,GAAM0B,SAAA,CAEjChC,mBAAOY,IAEPZ,EAAG,IAAA,CAAAL,UAAU,gBAAeqC,SAAEK,EAAYxB,GAAQ,KAEjDK,IARIP"}
1
+ {"version":3,"file":"renderFile.js","sources":["../../../packages/components/upload/renderFile.tsx"],"sourcesContent":["import { ListAltRound } from \"@ricons/material\";\nimport { title } from \"radash\";\nimport { RefObject } from \"react\";\nimport SortableContainer from \"react-easy-sort\";\nimport { TFileType } from \"../../js/usePreview/type\";\nimport { formatBytes, getFileType } from \"../../js/utils\";\nimport Icon from \"../icon\";\nimport Image from \"../image\";\nimport Helpericon from \"../utils/helpericon\";\nimport { IUploadItem } from \"./type\";\n\nexport const ListContainer = (props) => {\n\tconst { sortable, onSortEnd, itemProps, ...restProps } = props;\n\tconst customProps = {\n\t\tclassName: \"i-upload-list\",\n\t\tonClick: (e) => {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\t\t},\n\t};\n\n\tif (!sortable) {\n\t\treturn <div {...customProps} {...restProps} />;\n\t}\n\treturn (\n\t\t<SortableContainer\n\t\t\tdraggedItemClassName='i-upload-item-dragged'\n\t\t\tonSortEnd={onSortEnd}\n\t\t\t{...customProps}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n};\n\nconst FileListItem = (\n\tprops: IUploadItem & { ref?: RefObject<HTMLDivElement | null> }\n) => {\n\tconst { ref, mode, index, file, renderItem, onRemove, onPreview } = props;\n\n\tif (!file) return \"\";\n\n\tconst { id, name, size, url, src } = file;\n\tconst type = getFileType(name, file.type);\n\n\tif (renderItem) {\n\t\treturn renderItem(file, index);\n\t}\n\n\tconst CloseBtn = (\n\t\t<Helpericon\n\t\t\tactive\n\t\t\tclassName='i-upload-delete'\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\tonRemove(index);\n\t\t\t}}\n\t\t/>\n\t);\n\n\tswitch (mode) {\n\t\tcase \"card\":\n\t\t\tlet node = <></>;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase TFileType.IMAGE:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\tlazyload\n\t\t\t\t\t\t\tsrc={url || src}\n\t\t\t\t\t\t\tfit='cover'\n\t\t\t\t\t\t\tonMouseDown={(e) => e.preventDefault()}\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase TFileType.VIDEO:\n\t\t\t\t\tnode = <video src={url || src} preload='none' />;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnode = (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Icon icon={<ListAltRound />} />\n\t\t\t\t\t\t\t<span className='i-upload-file-name'>\n\t\t\t\t\t\t\t\t{title(name)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\ttitle={name}\n\t\t\t\t\tclassName='i-upload-item-card'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t{node}\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn (\n\t\t\t\t<div\n\t\t\t\t\tref={ref}\n\t\t\t\t\tkey={id}\n\t\t\t\t\tclassName='i-upload-item'\n\t\t\t\t\tonClick={() => onPreview?.(index)}\n\t\t\t\t>\n\t\t\t\t\t<span>{name}</span>\n\n\t\t\t\t\t<i className='i-upload-size'>{formatBytes(size ?? 0)}</i>\n\n\t\t\t\t\t{CloseBtn}\n\t\t\t\t</div>\n\t\t\t);\n\t}\n};\n\nexport default FileListItem;\n"],"names":["ListContainer","props","sortable","onSortEnd","itemProps","restProps","customProps","className","onClick","e","stopPropagation","preventDefault","_jsx","SortableContainer","draggedItemClassName","FileListItem","ref","mode","index","file","renderItem","onRemove","onPreview","id","name","size","url","src","type","getFileType","CloseBtn","Helpericon","active","node","_Fragment","TFileType","IMAGE","Image","lazyload","fit","onMouseDown","VIDEO","preload","_jsxs","children","Icon","icon","ListAltRound","title","formatBytes"],"mappings":"kbAWa,MAAAA,EAAiBC,IAC7B,MAAMC,SAAEA,EAAQC,UAAEA,EAASC,UAAEA,KAAcC,GAAcJ,EACnDK,EAAc,CACnBC,UAAW,gBACXC,QAAUC,IACTA,EAAEC,kBACFD,EAAEE,gBAAgB,GAIpB,OAAKT,EAIJU,EAACC,EACA,CAAAC,qBAAqB,wBACrBX,UAAWA,KACPG,KACAD,IAPEO,EAAS,MAAA,IAAAN,KAAiBD,GAQ/B,EAIEU,EACLd,IAEA,MAAMe,IAAEA,EAAGC,KAAEA,EAAIC,MAAEA,EAAKC,KAAEA,EAAIC,WAAEA,EAAUC,SAAEA,EAAQC,UAAEA,GAAcrB,EAEpE,IAAKkB,EAAM,MAAO,GAElB,MAAMI,GAAEA,EAAEC,KAAEA,EAAIC,KAAEA,EAAIC,IAAEA,EAAGC,IAAEA,GAAQR,EAC/BS,EAAOC,EAAYL,EAAML,EAAKS,MAEpC,GAAIR,EACH,OAAOA,EAAWD,EAAMD,GAGzB,MAAMY,EACLlB,EAACmB,GACAC,QAAM,EACNzB,UAAU,kBACVC,QAAUC,IACTA,EAAEC,kBACFD,EAAEE,iBACFU,EAASH,EAAM,IAKlB,GACM,SADED,EACP,CACC,IAAIgB,EAAOrB,EAAAsB,EAAA,IAEX,OAAQN,GACP,KAAKO,EAAUC,MACdH,EACCrB,EAACyB,EACA,CAAAC,UACA,EAAAX,IAAKD,GAAOC,EACZY,IAAI,QACJC,YAAc/B,GAAMA,EAAEE,mBAGxB,MACD,KAAKwB,EAAUM,MACdR,EAAOrB,EAAA,QAAA,CAAOe,IAAKD,GAAOC,EAAKe,QAAQ,SACvC,MACD,QACCT,EACCU,EAAAT,EAAA,CAAAU,SAAA,CACChC,EAACiC,GAAKC,KAAMlC,EAACmC,EAAe,CAAA,KAC5BnC,EAAM,OAAA,CAAAL,UAAU,qBACdqC,SAAAI,EAAMxB,QAOZ,OACCmB,EAAA,MAAA,CACC3B,IAAKA,EACLgC,MAAOxB,EACPjB,UAAU,qBACVC,QAAS,IAAMc,IAAYJ,GAAM0B,SAAA,CAEhCX,EACAH,IACI,CAGP,OACCa,EACC,MAAA,CAAA3B,IAAKA,EAELT,UAAU,gBACVC,QAAS,IAAMc,IAAYJ,GAAM0B,SAAA,CAEjChC,mBAAOY,IAEPZ,EAAG,IAAA,CAAAL,UAAU,gBAAeqC,SAAEK,EAAYxB,GAAQ,KAEjDK,IARIP"}
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as s}from"react/jsx-runtime";import{arrayMove as i}from"../../js/utils.js";import l from"../../js/usePreview/index.js";import{PlusSharp as t}from"@ricons/material";import{useReactive as a}from"ahooks";import r from"classnames";import{uid as n}from"radash";import{useRef as o,useMemo as m,useEffect as d,useImperativeHandle as c}from"react";import{SortableItem as f}from"react-easy-sort";import"../button/index.js";import u from"../icon/icon.js";import p from"../input/container.js";import b,{ListContainer as h}from"./renderFile.js";import g from"../button/button.js";const j=j=>{const{ref:v,label:y,labelInline:N,value:U,files:x=[],initialFiles:L,placeholder:F,status:O="normal",message:R,className:z,style:I,children:C,defaultText:P="Upload",mode:k="default",cardSize:w="4em",disabled:S,sortable:q,limit:A=(j.multiple?1/0:1),multiple:E,renderItem:T,shouldUpload:$=()=>!0,uploader:B,onChange:D,onFilesChange:G,onUpload:H,...J}=j,K=a({files:x,value:U,status:O,message:R}),M=o(null),Q=l(),V=m((()=>C||e(g,"card"===k?{className:"i-upload-card-btn color-5",square:!0,flat:!0,outline:!0,disabled:S,children:e(u,{icon:e(t,{})})}:{className:"i-upload-btn",disabled:S,children:P})),[k,C]),W=e=>{const[...s]=K.files,i=s.splice(e,1);URL.revokeObjectURL(i[0]?.src||""),K.files=s,G?.(s,i),D?.(s),M.current&&(M.current.value="")},X=async e=>{if(!B)return;const s=e.filter($),i=Promise.all(s.map(B));return H?.(i)},Y=e=>{Q({items:K.files,initial:e})},Z=e=>{e&&(K.files=e.map((e=>({...e,id:e.id??n(7)}))))};return d((()=>{Object.assign(K,{status:O,message:R})}),[O,R]),d((()=>{K.files=U?.filter?.((e=>!!e.id))??[]}),[U]),d((()=>{Z(L)}),[]),c(v,(()=>({getFileList:()=>K.files,setFileList:Z})),[]),e(p,{as:"div",label:y,labelInline:N,className:r("i-input-label-file",z),style:I,children:s("div",{className:r("i-upload-inner",{[`i-upload-${k}`]:"default"!==k}),style:{"--upload-card-size":w},children:[e(h,{sortable:q,onSortEnd:(e,s)=>{const[...l]=K.files;K.files=i(l,e,s),D?.(K.files)},children:K.files.map(((s,i)=>{const l=e(b,{index:i,file:s,mode:k,renderItem:T,onRemove:W,onPreview:Y},i);return q?e(f,{children:l},i):l}))}),K.message&&e("span",{className:"i-upload-message",children:K.message}),K.files.length<A&&s("label",{children:[e("input",{...J,disabled:S,ref:M,type:"file",className:"i-input-file-hidden",multiple:E,onChange:e=>{const s=Array.from(e.target.files||[]),{files:i}=K,l=[];s.map((e=>{const{id:s,name:t,size:a,type:r}=e,o=i.find((e=>{const{name:s,size:i,type:l}=e;return s===t&&i===a&&l===r})),m=URL.createObjectURL(e);Object.assign(e,{id:s??n(7),src:m??e.name,url:m??e.name}),!o&&l.push(e)}));const t=[...i,...l];Object.assign(K,{files:E?t.slice(0,A):[t.at(-1)],status:O,message:R}),G?.(K.files,l,e),D?.(K.files,e),X(l),M.current&&(M.current.value="")}}),V]})]})})};export{j as default};
1
+ import{jsx as e,jsxs as s}from"react/jsx-runtime";import{PlusSharp as i}from"@ricons/material";import{useReactive as l}from"ahooks";import t from"classnames";import{uid as a}from"radash";import{useRef as r,useMemo as n,useEffect as o,useImperativeHandle as m}from"react";import{SortableItem as d}from"react-easy-sort";import c from"../../js/usePreview/index.js";import{arrayMove as f}from"../../js/utils.js";import"../button/index.js";import u from"../icon/icon.js";import p from"../input/container.js";import b,{ListContainer as h}from"./renderFile.js";import g from"../button/button.js";const j=j=>{const{ref:v,label:y,labelInline:N,value:U,files:x=[],initialFiles:L,placeholder:F,status:O="normal",message:R,className:z,style:I,children:C,defaultText:P="Upload",mode:k="default",cardSize:w="4em",disabled:S,sortable:q,limit:A=(j.multiple?1/0:1),multiple:E,renderItem:T,shouldUpload:$=()=>!0,uploader:B,onChange:D,onFilesChange:G,onUpload:H,...J}=j,K=l({files:x,value:U,status:O,message:R}),M=r(null),Q=c(),V=n((()=>C||e(g,"card"===k?{className:"i-upload-card-btn color-5",square:!0,flat:!0,outline:!0,disabled:S,children:e(u,{icon:e(i,{})})}:{className:"i-upload-btn",disabled:S,children:P})),[k,C]),W=e=>{const[...s]=K.files,i=s.splice(e,1);URL.revokeObjectURL(i[0]?.src||""),K.files=s,G?.(s,i),D?.(s),M.current&&(M.current.value="")},X=async e=>{if(!B)return;const s=e.filter($),i=Promise.all(s.map(B));return H?.(i)},Y=e=>{Q({items:K.files,initial:e})},Z=e=>{e&&(K.files=e.map((e=>({...e,id:e.id??a(7)}))))};return o((()=>{Object.assign(K,{status:O,message:R})}),[O,R]),o((()=>{K.files=U?.filter?.((e=>!!e.id))??[]}),[U]),o((()=>{Z(L)}),[]),m(v,(()=>({getFileList:()=>K.files,setFileList:Z})),[]),e(p,{as:"div",label:y,labelInline:N,className:t("i-input-label-file",z),style:I,children:s("div",{className:t("i-upload-inner",{[`i-upload-${k}`]:"default"!==k}),style:{"--upload-card-size":w},children:[e(h,{sortable:q,onSortEnd:(e,s)=>{const[...i]=K.files;K.files=f(i,e,s),D?.(K.files)},children:K.files.map(((s,i)=>{const l=e(b,{index:i,file:s,mode:k,renderItem:T,onRemove:W,onPreview:Y},i);return q?e(d,{children:l},i):l}))}),K.message&&e("span",{className:"i-upload-message",children:K.message}),K.files.length<A&&s("label",{children:[e("input",{...J,disabled:S,ref:M,type:"file",className:"i-input-file-hidden",multiple:E,onChange:e=>{const s=Array.from(e.target.files||[]),{files:i}=K,l=[];s.map((e=>{const{id:s,name:t,size:r,type:n}=e,o=i.find((e=>{const{name:s,size:i,type:l}=e;return s===t&&i===r&&l===n})),m=URL.createObjectURL(e);Object.assign(e,{id:s??a(7),src:m??e.name,url:m??e.name}),!o&&l.push(e)}));const t=[...i,...l];Object.assign(K,{files:E?t.slice(0,A):[t.at(-1)],status:O,message:R}),G?.(K.files,l,e),D?.(K.files,e),X(l),M.current&&(M.current.value="")}}),V]})]})})};export{j as default};
2
2
  //# sourceMappingURL=upload.js.map