@ioca/react 1.5.11 → 1.5.13

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 (47) hide show
  1. package/lib/cjs/components/affix/affix.js +38 -29
  2. package/lib/cjs/components/affix/affix.js.map +1 -1
  3. package/lib/cjs/components/affix/totop.js +1 -1
  4. package/lib/cjs/components/affix/totop.js.map +1 -1
  5. package/lib/cjs/components/editor/editor.js +5 -0
  6. package/lib/cjs/components/editor/editor.js.map +1 -1
  7. package/lib/cjs/components/editor/memtion.js +45 -3
  8. package/lib/cjs/components/editor/memtion.js.map +1 -1
  9. package/lib/cjs/components/list/list.js +3 -3
  10. package/lib/cjs/components/list/list.js.map +1 -1
  11. package/lib/cjs/components/picker/colors/index.js +7 -3
  12. package/lib/cjs/components/picker/colors/index.js.map +1 -1
  13. package/lib/cjs/components/progress/circle.js +3 -3
  14. package/lib/cjs/components/progress/circle.js.map +1 -1
  15. package/lib/cjs/components/tabs/navs.js.map +1 -1
  16. package/lib/cjs/components/tabs/tabs.js.map +1 -1
  17. package/lib/cjs/components/upload/upload.js +8 -2
  18. package/lib/cjs/components/upload/upload.js.map +1 -1
  19. package/lib/css/index.css +1 -1
  20. package/lib/css/index.css.map +1 -1
  21. package/lib/es/components/affix/affix.js +39 -30
  22. package/lib/es/components/affix/affix.js.map +1 -1
  23. package/lib/es/components/affix/totop.js +1 -1
  24. package/lib/es/components/affix/totop.js.map +1 -1
  25. package/lib/es/components/editor/editor.js +5 -0
  26. package/lib/es/components/editor/editor.js.map +1 -1
  27. package/lib/es/components/editor/memtion.js +46 -4
  28. package/lib/es/components/editor/memtion.js.map +1 -1
  29. package/lib/es/components/list/list.js +4 -4
  30. package/lib/es/components/list/list.js.map +1 -1
  31. package/lib/es/components/picker/colors/index.js +6 -3
  32. package/lib/es/components/picker/colors/index.js.map +1 -1
  33. package/lib/es/components/progress/circle.js +3 -3
  34. package/lib/es/components/progress/circle.js.map +1 -1
  35. package/lib/es/components/tabs/navs.js.map +1 -1
  36. package/lib/es/components/tabs/tabs.js.map +1 -1
  37. package/lib/es/components/upload/upload.js +8 -2
  38. package/lib/es/components/upload/upload.js.map +1 -1
  39. package/lib/index.js +106 -44
  40. package/lib/types/components/affix/totop.d.ts +7 -2
  41. package/lib/types/components/affix/type.d.ts +1 -1
  42. package/lib/types/components/list/item.d.ts +6 -0
  43. package/lib/types/components/list/list.d.ts +3 -5
  44. package/lib/types/components/picker/type.d.ts +4 -1
  45. package/lib/types/components/tabs/type.d.ts +1 -1
  46. package/lib/types/components/upload/type.d.ts +1 -0
  47. package/package.json +97 -97
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sources":["../../../../packages/components/list/list.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Children, cloneElement } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\n\nconst List = (props: IList) => {\n\tconst { label, type, border, className, children, ...restProps } = props;\n\n\treturn (\n\t\t<ul className={classNames(\"i-list\", className)} {...restProps}>\n\t\t\t{Children.map(children, (node: any, i) => {\n\t\t\t\tconst renderLabel =\n\t\t\t\t\ttypeof label === \"function\" ? label(i) : label;\n\n\t\t\t\tconst { type, props: nodeProps } = node;\n\n\t\t\t\tif (type === Item) {\n\t\t\t\t\treturn cloneElement(node, {\n\t\t\t\t\t\tlabel: renderLabel,\n\t\t\t\t\t\t...nodeProps,\n\t\t\t\t\t\ttype: props.type,\n\t\t\t\t\t\tborder,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn node;\n\t\t\t})}\n\t\t</ul>\n\t);\n};\n\nList.Item = Item;\n\nexport default List;\n"],"names":["_jsx"],"mappings":";;;;;AAMA,MAAM,IAAI,GAAG,CAAC,KAAY,KAAI;AAC7B,IAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK;IAExE,QACCA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAA,GAAM,SAAS,YAC3D,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAS,EAAE,CAAC,KAAI;AACxC,YAAA,MAAM,WAAW,GAChB,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;YAE/C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;AAEvC,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;gBAClB,OAAO,YAAY,CAAC,IAAI,EAAE;AACzB,oBAAA,KAAK,EAAE,WAAW;AAClB,oBAAA,GAAG,SAAS;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM;AACN,iBAAA,CAAC;YACH;AAEA,YAAA,OAAO,IAAI;QACZ,CAAC,CAAC,EAAA,CACE;AAEP;AAEA,IAAI,CAAC,IAAI,GAAG,IAAI;;;;"}
1
+ {"version":3,"file":"list.js","sources":["../../../../packages/components/list/list.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Children, cloneElement, forwardRef } from \"react\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IList } from \"./type\";\n\nconst List = forwardRef<HTMLUListElement, IList>((props, ref) => {\n const { label, type, border, className, children, ...restProps } = props;\n\n return (\n <ul\n ref={ref}\n className={classNames(\"i-list\", className)}\n {...restProps}\n >\n {Children.map(children, (node: any, i) => {\n const renderLabel =\n typeof label === \"function\" ? label(i) : label;\n\n const { type, props: nodeProps } = node;\n\n if (type === Item) {\n return cloneElement(node, {\n label: renderLabel,\n ...nodeProps,\n type: props.type,\n border,\n });\n }\n\n return node;\n })}\n </ul>\n );\n}) as typeof List & { Item: typeof Item };\n\nList.Item = Item;\n\nexport default List;\n"],"names":["_jsx"],"mappings":";;;;;AAMA,MAAM,IAAI,GAAG,UAAU,CAA0B,CAAC,KAAK,EAAE,GAAG,KAAI;AAC5D,IAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK;AAExE,IAAA,QACIA,GAAA,CAAA,IAAA,EAAA,EACI,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAA,GACtC,SAAS,EAAA,QAAA,EAEZ,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAS,EAAE,CAAC,KAAI;AACrC,YAAA,MAAM,WAAW,GACb,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;YAElD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;AAEvC,YAAA,IAAI,IAAI,KAAK,IAAI,EAAE;gBACf,OAAO,YAAY,CAAC,IAAI,EAAE;AACtB,oBAAA,KAAK,EAAE,WAAW;AAClB,oBAAA,GAAG,SAAS;oBACZ,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,MAAM;AACT,iBAAA,CAAC;YACN;AAEA,YAAA,OAAO,IAAI;QACf,CAAC,CAAC,EAAA,CACD;AAEb,CAAC;AAED,IAAI,CAAC,IAAI,GAAG,IAAI;;;;"}
@@ -1,5 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import ColorsPanel from '@rc-component/color-picker';
3
+ import classNames from 'classnames';
3
4
  import { useState, useEffect } from 'react';
4
5
  import InputContainer from '../../input/container.js';
5
6
  import Popup from '../../popup/popup.js';
@@ -7,7 +8,7 @@ import Footer, { ColorMethods } from './footer.js';
7
8
  import Handle from './handle.js';
8
9
 
9
10
  function ColorPicker(props) {
10
- const { value, type = "HEX", disabledAlpha, children, usePanel, handle = "both", placeholder = "Colors", popupProps, onChange, label, required, ...restProps } = props;
11
+ const { value, type = "HEX", disabledAlpha, children, usePanel, handle = "both", placeholder = "Colors", popupProps, onChange, label, required, className, style, ...restProps } = props;
11
12
  const [colorType, setColorType] = useState(type);
12
13
  const [colorValue, setColorValue] = useState(value);
13
14
  const [syncValue, setSyncValue] = useState(value);
@@ -51,9 +52,11 @@ function ColorPicker(props) {
51
52
  if (usePanel) {
52
53
  return (jsx(InputContainer, { label: label, required: required, children: jsx(ColorsPanel, { ...restProps, value: value, onChange: onChange }) }));
53
54
  }
54
- return (jsx(InputContainer, { label: label, required: required, children: jsx(Popup, { trigger: "click", touchable: true, position: "bottom", ...popupProps, visible: visible, content: jsx(ColorsPanel, { ...restProps, value: syncValue, disabledAlpha: disabledAlpha, panelRender: (panel) => {
55
+ return (jsx(InputContainer, { label: label, required: required, className: classNames("i-colorpicker", className), style: style, children: jsx(Popup, { trigger: "click", touchable: true, position: "bottom", ...popupProps, visible: visible, content: jsx(ColorsPanel, { ...restProps, value: syncValue, disabledAlpha: disabledAlpha, panelRender: (panel) => {
55
56
  return (jsxs(Fragment, { children: [panel, jsx(Footer, { value: colorValue, type: colorType, onTypeChange: handleTypeChange, onChange: handleValueChange, onOk: handleOk })] }));
56
- }, onChange: handleChange, onChangeComplete: handleComplete }), onVisibleChange: handleVisibleChange, children: children ?? (jsx(Handle, { color: value, handle: handle, placeholder: placeholder })) }) }));
57
+ }, onChange: handleChange, onChangeComplete: handleComplete }), onVisibleChange: handleVisibleChange, children: typeof children === "function"
58
+ ? children({ type: colorType, value: colorValue })
59
+ : (children ?? (jsx(Handle, { color: value, handle: handle, placeholder: placeholder }))) }) }));
57
60
  }
58
61
 
59
62
  export { ColorPicker as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../packages/components/picker/colors/index.tsx"],"sourcesContent":["import ColorsPanel from \"@rc-component/color-picker\";\nimport { useEffect, useState } from \"react\";\nimport InputContainer from \"../../input/container\";\nimport Popup from \"../../popup\";\nimport { IColorPicker } from \"../type\";\nimport Footer, { ColorMethods } from \"./footer\";\nimport Handle from \"./handle\";\nimport \"./index.css\";\n\nexport default function ColorPicker(props: IColorPicker) {\n const {\n value,\n type = \"HEX\",\n disabledAlpha,\n children,\n usePanel,\n handle = \"both\",\n placeholder = \"Colors\",\n popupProps,\n onChange,\n label,\n required,\n ...restProps\n } = props;\n\n const [colorType, setColorType] = useState(type);\n const [colorValue, setColorValue] = useState(value);\n const [syncValue, setSyncValue] = useState(value);\n const [visible, setVisible] = useState<boolean | undefined>(\n popupProps?.visible,\n );\n\n const handleChange = (target) => {\n setSyncValue(target);\n };\n\n const handleComplete = (target) => {\n const method = ColorMethods[colorType];\n\n if (target.a !== 1) {\n target.a = parseFloat(target.a.toFixed(3));\n }\n\n setColorValue(target[method]?.());\n };\n\n const handleVisibleChange = (v: boolean) => {\n setVisible(v);\n popupProps?.onVisibleChange?.(v);\n };\n\n const handleTypeChange = (t) => {\n const method = ColorMethods[t];\n\n setColorType(t);\n setColorValue(syncValue?.[method]?.());\n };\n\n const handleValueChange = (v) => {\n setColorValue(v);\n setSyncValue(v);\n };\n\n const handleOk = () => {\n onChange?.(colorValue);\n setVisible(false);\n };\n\n useEffect(() => {\n setSyncValue(value);\n setColorValue(value);\n }, [value]);\n\n useEffect(() => {\n if (popupProps?.visible !== undefined) {\n setVisible(popupProps.visible);\n }\n }, [popupProps?.visible]);\n\n if (usePanel) {\n return (\n <InputContainer label={label} required={required}>\n <ColorsPanel {...restProps} value={value} onChange={onChange} />\n </InputContainer>\n );\n }\n\n return (\n <InputContainer label={label} required={required}>\n <Popup\n trigger=\"click\"\n touchable\n position=\"bottom\"\n {...popupProps}\n visible={visible}\n content={\n <ColorsPanel\n {...restProps}\n value={syncValue}\n disabledAlpha={disabledAlpha}\n panelRender={(panel) => {\n return (\n <>\n {panel}\n <Footer\n value={colorValue}\n type={colorType}\n onTypeChange={handleTypeChange}\n onChange={handleValueChange}\n onOk={handleOk}\n />\n </>\n );\n }}\n onChange={handleChange}\n onChangeComplete={handleComplete}\n />\n }\n onVisibleChange={handleVisibleChange}\n >\n {children ?? (\n <Handle\n color={value}\n handle={handle}\n placeholder={placeholder}\n />\n )}\n </Popup>\n </InputContainer>\n );\n}\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../packages/components/picker/colors/index.tsx"],"sourcesContent":["import ColorsPanel from \"@rc-component/color-picker\";\nimport classNames from \"classnames\";\nimport { useEffect, useState } from \"react\";\nimport InputContainer from \"../../input/container\";\nimport Popup from \"../../popup\";\nimport { IColorPicker } from \"../type\";\nimport Footer, { ColorMethods } from \"./footer\";\nimport Handle from \"./handle\";\nimport \"./index.css\";\n\nexport default function ColorPicker(props: IColorPicker) {\n const {\n value,\n type = \"HEX\",\n disabledAlpha,\n children,\n usePanel,\n handle = \"both\",\n placeholder = \"Colors\",\n popupProps,\n onChange,\n label,\n required,\n className,\n style,\n ...restProps\n } = props;\n\n const [colorType, setColorType] = useState(type);\n const [colorValue, setColorValue] = useState(value);\n const [syncValue, setSyncValue] = useState(value);\n const [visible, setVisible] = useState<boolean | undefined>(\n popupProps?.visible,\n );\n\n const handleChange = (target) => {\n setSyncValue(target);\n };\n\n const handleComplete = (target) => {\n const method = ColorMethods[colorType];\n\n if (target.a !== 1) {\n target.a = parseFloat(target.a.toFixed(3));\n }\n\n setColorValue(target[method]?.());\n };\n\n const handleVisibleChange = (v: boolean) => {\n setVisible(v);\n popupProps?.onVisibleChange?.(v);\n };\n\n const handleTypeChange = (t) => {\n const method = ColorMethods[t];\n\n setColorType(t);\n setColorValue(syncValue?.[method]?.());\n };\n\n const handleValueChange = (v) => {\n setColorValue(v);\n setSyncValue(v);\n };\n\n const handleOk = () => {\n onChange?.(colorValue);\n setVisible(false);\n };\n\n useEffect(() => {\n setSyncValue(value);\n setColorValue(value);\n }, [value]);\n\n useEffect(() => {\n if (popupProps?.visible !== undefined) {\n setVisible(popupProps.visible);\n }\n }, [popupProps?.visible]);\n\n if (usePanel) {\n return (\n <InputContainer label={label} required={required}>\n <ColorsPanel {...restProps} value={value} onChange={onChange} />\n </InputContainer>\n );\n }\n\n return (\n <InputContainer\n label={label}\n required={required}\n className={classNames(\"i-colorpicker\", className)}\n style={style}\n >\n <Popup\n trigger=\"click\"\n touchable\n position=\"bottom\"\n {...popupProps}\n visible={visible}\n content={\n <ColorsPanel\n {...restProps}\n value={syncValue}\n disabledAlpha={disabledAlpha}\n panelRender={(panel) => {\n return (\n <>\n {panel}\n <Footer\n value={colorValue}\n type={colorType}\n onTypeChange={handleTypeChange}\n onChange={handleValueChange}\n onOk={handleOk}\n />\n </>\n );\n }}\n onChange={handleChange}\n onChangeComplete={handleComplete}\n />\n }\n onVisibleChange={handleVisibleChange}\n >\n {typeof children === \"function\"\n ? children({ type: colorType, value: colorValue })\n : (children ?? (\n <Handle\n color={value}\n handle={handle}\n placeholder={placeholder}\n />\n ))}\n </Popup>\n </InputContainer>\n );\n}\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -3,9 +3,9 @@ import Text from '../text/text.js';
3
3
 
4
4
  function Circle(props) {
5
5
  const { value, circleSize = 40, lineWidth = 8 } = props;
6
- return (jsxs("div", { className: 'i-progress-circle', children: [jsxs("svg", { width: circleSize, height: circleSize, children: [jsx("circle", { cx: circleSize / 2, cy: circleSize / 2, r: circleSize / 2 - lineWidth / 2, fill: 'none', stroke: 'var(--background-opacity-2)', strokeWidth: lineWidth }), jsx("circle", { cx: circleSize / 2, cy: circleSize / 2, r: circleSize / 2 - lineWidth / 2, fill: 'none', stroke: 'var(--color-main)', strokeWidth: lineWidth, strokeDasharray: 100, pathLength: 100, className: 'i-progress-circle-path', strokeLinecap: 'round', style: {
7
- strokeDashoffset: `calc(100 - ${value})`,
8
- } })] }), jsxs("span", { className: 'i-progress-circle-value', children: [jsx("span", { children: value }), jsx(Text, { size: '.81em', className: 'color-7', children: "%" })] })] }));
6
+ return (jsxs("div", { className: "i-progress-circle", children: [jsxs("svg", { width: circleSize, height: circleSize, children: [jsx("circle", { cx: circleSize / 2, cy: circleSize / 2, r: circleSize / 2 - lineWidth / 2, fill: "none", stroke: "var(--color-main-0)", strokeWidth: lineWidth }), jsx("circle", { cx: circleSize / 2, cy: circleSize / 2, r: circleSize / 2 - lineWidth / 2, fill: "none", stroke: "var(--color-main)", strokeWidth: lineWidth, strokeDasharray: 100, pathLength: 100, className: "i-progress-circle-path", strokeLinecap: "round", style: {
7
+ strokeDashoffset: 100 - (value ?? 0),
8
+ } })] }), jsxs("span", { className: "i-progress-circle-value", children: [jsx("span", { children: value }), jsx(Text, { size: ".81em", className: "color-5", children: "%" })] })] }));
9
9
  }
10
10
 
11
11
  export { Circle as default };
@@ -1 +1 @@
1
- {"version":3,"file":"circle.js","sources":["../../../../packages/components/progress/circle.tsx"],"sourcesContent":["import Text from \"../text\";\nimport { IProgress } from \"./type\";\n\nexport default function Circle(\n\tprops: Pick<IProgress, \"value\" | \"circleSize\" | \"lineWidth\">\n) {\n\tconst { value, circleSize = 40, lineWidth = 8 } = props;\n\n\treturn (\n\t\t<div className='i-progress-circle'>\n\t\t\t<svg width={circleSize} height={circleSize}>\n\t\t\t\t<circle\n\t\t\t\t\tcx={circleSize / 2}\n\t\t\t\t\tcy={circleSize / 2}\n\t\t\t\t\tr={circleSize / 2 - lineWidth / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--background-opacity-2)'\n\t\t\t\t\tstrokeWidth={lineWidth}\n\t\t\t\t/>\n\t\t\t\t<circle\n\t\t\t\t\tcx={circleSize / 2}\n\t\t\t\t\tcy={circleSize / 2}\n\t\t\t\t\tr={circleSize / 2 - lineWidth / 2}\n\t\t\t\t\tfill='none'\n\t\t\t\t\tstroke='var(--color-main)'\n\t\t\t\t\tstrokeWidth={lineWidth}\n\t\t\t\t\tstrokeDasharray={100}\n\t\t\t\t\tpathLength={100}\n\t\t\t\t\tclassName='i-progress-circle-path'\n\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tstrokeDashoffset: `calc(100 - ${value})`,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</svg>\n\n\t\t\t<span className='i-progress-circle-value'>\n\t\t\t\t<span>{value}</span>\n\t\t\t\t<Text size='.81em' className='color-7'>\n\t\t\t\t\t%\n\t\t\t\t</Text>\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n"],"names":["_jsxs","_jsx"],"mappings":";;;AAGc,SAAU,MAAM,CAC7B,KAA4D,EAAA;AAE5D,IAAA,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,KAAK;IAEvD,QACCA,cAAK,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,CACjCA,IAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,aACzCC,GAAA,CAAA,QAAA,EAAA,EACC,EAAE,EAAE,UAAU,GAAG,CAAC,EAClB,EAAE,EAAE,UAAU,GAAG,CAAC,EAClB,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,EACjC,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,6BAA6B,EACpC,WAAW,EAAE,SAAS,EAAA,CACrB,EACFA,gBACC,EAAE,EAAE,UAAU,GAAG,CAAC,EAClB,EAAE,EAAE,UAAU,GAAG,CAAC,EAClB,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,EACjC,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,mBAAmB,EAC1B,WAAW,EAAE,SAAS,EACtB,eAAe,EAAE,GAAG,EACpB,UAAU,EAAE,GAAG,EACf,SAAS,EAAC,wBAAwB,EAClC,aAAa,EAAC,OAAO,EACrB,KAAK,EAAE;4BACN,gBAAgB,EAAE,CAAA,WAAA,EAAc,KAAK,CAAA,CAAA,CAAG;yBACxC,EAAA,CACA,CAAA,EAAA,CACG,EAEND,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,KAAK,EAAA,CAAQ,EACpBA,GAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAA,QAAA,EAAA,GAAA,EAAA,CAE/B,CAAA,EAAA,CACD,CAAA,EAAA,CACF;AAER;;;;"}
1
+ {"version":3,"file":"circle.js","sources":["../../../../packages/components/progress/circle.tsx"],"sourcesContent":["import Text from \"../text\";\nimport { IProgress } from \"./type\";\n\nexport default function Circle(\n props: Pick<IProgress, \"value\" | \"circleSize\" | \"lineWidth\">,\n) {\n const { value, circleSize = 40, lineWidth = 8 } = props;\n\n return (\n <div className=\"i-progress-circle\">\n <svg width={circleSize} height={circleSize}>\n <circle\n cx={circleSize / 2}\n cy={circleSize / 2}\n r={circleSize / 2 - lineWidth / 2}\n fill=\"none\"\n stroke=\"var(--color-main-0)\"\n strokeWidth={lineWidth}\n />\n <circle\n cx={circleSize / 2}\n cy={circleSize / 2}\n r={circleSize / 2 - lineWidth / 2}\n fill=\"none\"\n stroke=\"var(--color-main)\"\n strokeWidth={lineWidth}\n strokeDasharray={100}\n pathLength={100}\n className=\"i-progress-circle-path\"\n strokeLinecap=\"round\"\n style={{\n strokeDashoffset: 100 - (value ?? 0),\n }}\n />\n </svg>\n\n <span className=\"i-progress-circle-value\">\n <span>{value}</span>\n <Text size=\".81em\" className=\"color-5\">\n %\n </Text>\n </span>\n </div>\n );\n}\n"],"names":["_jsxs","_jsx"],"mappings":";;;AAGc,SAAU,MAAM,CAC1B,KAA4D,EAAA;AAE5D,IAAA,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,EAAE,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,KAAK;IAEvD,QACIA,cAAK,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,CAC9BA,IAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,aACtCC,GAAA,CAAA,QAAA,EAAA,EACI,EAAE,EAAE,UAAU,GAAG,CAAC,EAClB,EAAE,EAAE,UAAU,GAAG,CAAC,EAClB,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,EACjC,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,qBAAqB,EAC5B,WAAW,EAAE,SAAS,EAAA,CACxB,EACFA,gBACI,EAAE,EAAE,UAAU,GAAG,CAAC,EAClB,EAAE,EAAE,UAAU,GAAG,CAAC,EAClB,CAAC,EAAE,UAAU,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,EACjC,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,mBAAmB,EAC1B,WAAW,EAAE,SAAS,EACtB,eAAe,EAAE,GAAG,EACpB,UAAU,EAAE,GAAG,EACf,SAAS,EAAC,wBAAwB,EAClC,aAAa,EAAC,OAAO,EACrB,KAAK,EAAE;AACH,4BAAA,gBAAgB,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC;yBACvC,EAAA,CACH,CAAA,EAAA,CACA,EAEND,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACrCC,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,KAAK,EAAA,CAAQ,EACpBA,GAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAA,QAAA,EAAA,GAAA,EAAA,CAE/B,CAAA,EAAA,CACJ,CAAA,EAAA,CACL;AAEd;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"navs.js","sources":["../../../../packages/components/tabs/navs.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport type { CSSProperties, KeyboardEvent, ReactNode, RefObject } from \"react\";\nimport { memo } from \"react\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport { ITabItem } from \"./type\";\n\ninterface ITabsNavsProps {\n tabs: ITabItem[];\n moreTabs: ITabItem[];\n activeKey?: string;\n vertical?: boolean;\n overflow?: boolean;\n hideMore?: boolean;\n navsJustify?: \"start\" | \"center\" | \"end\";\n bar?: boolean;\n barClass?: string;\n barStyle?: CSSProperties;\n navsRef: RefObject<HTMLDivElement>;\n renderMore: (moreTabs: ITabItem[]) => ReactNode;\n setNavRef: (index: number, node: HTMLAnchorElement | null) => void;\n onOpen: (key: string) => void;\n onClose: (key: string) => void;\n onMoreTabClick: (key: string) => void;\n onKeyAction: (e: KeyboardEvent<HTMLElement>, action: () => void) => void;\n}\n\nconst TabsNavs = (props: ITabsNavsProps) => {\n const {\n tabs,\n moreTabs,\n activeKey,\n vertical,\n overflow,\n hideMore,\n navsJustify = \"start\",\n bar,\n barClass,\n barStyle,\n navsRef,\n renderMore,\n setNavRef,\n onOpen,\n onClose,\n onMoreTabClick,\n onKeyAction,\n } = props;\n\n return (\n <>\n <div\n ref={navsRef}\n className={classNames(\"i-tab-navs\", `justify-${navsJustify}`)}\n role=\"tablist\"\n aria-orientation={vertical ? \"vertical\" : \"horizontal\"}\n >\n {tabs.map((tab, i) => {\n const { title, key = `${i}`, closable } = tab;\n const isActive = activeKey === key;\n\n return (\n <a\n key={key}\n ref={(node) => setNavRef(i, node)}\n className={classNames(\"i-tab-nav\", {\n \"i-tab-active\": isActive,\n })}\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n aria-selected={isActive}\n onClick={() => onOpen(key)}\n onKeyDown={(e) => onKeyAction(e, () => onOpen(key))}\n >\n {title}\n\n {closable && (\n <Helpericon\n as=\"i\"\n active\n className=\"i-tab-nav-close\"\n role=\"button\"\n tabIndex={0}\n aria-label=\"关闭标签页\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onClose(key);\n }}\n onKeyDown={(e) =>\n onKeyAction(e, () => onClose(key))\n }\n />\n )}\n </a>\n );\n })}\n\n {bar && (\n <span\n className={classNames(\"i-tab-navs-bar\", barClass)}\n style={barStyle}\n />\n )}\n </div>\n\n {!hideMore && overflow && moreTabs.length > 0 && (\n <Popup\n arrow={false}\n position={vertical ? \"right\" : \"bottom\"}\n align=\"end\"\n touchable\n hideDelay={500}\n content={\n <div className=\"i-tabs-morelist pd-4\">\n {moreTabs.map((tab, i) => {\n const { key = `${i}`, title } = tab;\n const isActive = activeKey === key;\n\n return (\n <a\n key={key}\n className={classNames(\"i-tab-nav\", {\n \"i-tab-active\": isActive,\n })}\n role=\"button\"\n tabIndex={0}\n onClick={() => onMoreTabClick(key)}\n onKeyDown={(e) =>\n onKeyAction(e, () =>\n onMoreTabClick(key),\n )\n }\n >\n {title}\n </a>\n );\n })}\n </div>\n }\n >\n {renderMore(moreTabs)}\n </Popup>\n )}\n </>\n );\n};\n\nexport default memo(TabsNavs);\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"navs.js","sources":["../../../../packages/components/tabs/navs.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport type { CSSProperties, KeyboardEvent, ReactNode, RefObject } from \"react\";\nimport { memo } from \"react\";\nimport Popup from \"../popup\";\nimport Helpericon from \"../utils/helpericon\";\nimport { ITabItem } from \"./type\";\n\ninterface ITabsNavsProps {\n tabs: ITabItem[];\n moreTabs: ITabItem[];\n activeKey?: string;\n vertical?: boolean;\n overflow?: boolean;\n hideMore?: boolean;\n navsJustify?: \"start\" | \"center\" | \"end\";\n bar?: boolean;\n barClass?: string;\n barStyle?: CSSProperties;\n navsRef: RefObject<HTMLDivElement | null>;\n renderMore: (moreTabs: ITabItem[]) => ReactNode;\n setNavRef: (index: number, node: HTMLAnchorElement | null) => void;\n onOpen: (key: string) => void;\n onClose: (key: string) => void;\n onMoreTabClick: (key: string) => void;\n onKeyAction: (e: KeyboardEvent<HTMLElement>, action: () => void) => void;\n}\n\nconst TabsNavs = (props: ITabsNavsProps) => {\n const {\n tabs,\n moreTabs,\n activeKey,\n vertical,\n overflow,\n hideMore,\n navsJustify = \"start\",\n bar,\n barClass,\n barStyle,\n navsRef,\n renderMore,\n setNavRef,\n onOpen,\n onClose,\n onMoreTabClick,\n onKeyAction,\n } = props;\n\n return (\n <>\n <div\n ref={navsRef}\n className={classNames(\"i-tab-navs\", `justify-${navsJustify}`)}\n role=\"tablist\"\n aria-orientation={vertical ? \"vertical\" : \"horizontal\"}\n >\n {tabs.map((tab, i) => {\n const { title, key = `${i}`, closable } = tab;\n const isActive = activeKey === key;\n\n return (\n <a\n key={key}\n ref={(node) => setNavRef(i, node)}\n className={classNames(\"i-tab-nav\", {\n \"i-tab-active\": isActive,\n })}\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n aria-selected={isActive}\n onClick={() => onOpen(key)}\n onKeyDown={(e) => onKeyAction(e, () => onOpen(key))}\n >\n {title}\n\n {closable && (\n <Helpericon\n as=\"i\"\n active\n className=\"i-tab-nav-close\"\n role=\"button\"\n tabIndex={0}\n aria-label=\"关闭标签页\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onClose(key);\n }}\n onKeyDown={(e) =>\n onKeyAction(e, () => onClose(key))\n }\n />\n )}\n </a>\n );\n })}\n\n {bar && (\n <span\n className={classNames(\"i-tab-navs-bar\", barClass)}\n style={barStyle}\n />\n )}\n </div>\n\n {!hideMore && overflow && moreTabs.length > 0 && (\n <Popup\n arrow={false}\n position={vertical ? \"right\" : \"bottom\"}\n align=\"end\"\n touchable\n hideDelay={500}\n content={\n <div className=\"i-tabs-morelist pd-4\">\n {moreTabs.map((tab, i) => {\n const { key = `${i}`, title } = tab;\n const isActive = activeKey === key;\n\n return (\n <a\n key={key}\n className={classNames(\"i-tab-nav\", {\n \"i-tab-active\": isActive,\n })}\n role=\"button\"\n tabIndex={0}\n onClick={() => onMoreTabClick(key)}\n onKeyDown={(e) =>\n onKeyAction(e, () =>\n onMoreTabClick(key),\n )\n }\n >\n {title}\n </a>\n );\n })}\n </div>\n }\n >\n {renderMore(moreTabs)}\n </Popup>\n )}\n </>\n );\n};\n\nexport default memo(TabsNavs);\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sources":["../../../../packages/components/tabs/tabs.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport {\n CSSProperties,\n KeyboardEvent,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useIntersectionObserver, useSize } from \"../../js/hooks\";\nimport TabsContents from \"./contents\";\nimport {\n defaultRenderMore,\n emptyBarStyle,\n getParsedTabs,\n isSameTabs,\n} from \"./helper\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport TabsNavs from \"./navs\";\nimport { CompositionTabs, ITabItem, ITabs } from \"./type\";\nconst Tabs = ((props: ITabs) => {\n const {\n ref,\n active,\n tabs: items,\n type = \"default\",\n prepend,\n append,\n children,\n className,\n vertical,\n toggable,\n navsJustify = \"start\",\n navsClass,\n bar = true,\n hideMore,\n barClass,\n renderMore = defaultRenderMore,\n onTabChange,\n ...rest\n } = props;\n\n const navRefs = useRef<(HTMLAnchorElement | null)[]>([]);\n const navsRef = useRef<HTMLDivElement>(null);\n const contentsRef = useRef<Map<string, ReactNode>>(new Map());\n const [activeKey, setActiveKey] = useState<string | undefined>(active);\n const [prevActiveKey, setPrevActiveKey] = useState<string | undefined>(\n undefined,\n );\n const [barStyle, setBarStyle] = useState<CSSProperties>({});\n const [cachedTabs, setCachedTabs] = useState<string[]>([]);\n const [overflow, setOverflow] = useState(false);\n const [tabs, setTabs] = useState<ITabItem[]>([]);\n const { observe, unobserve } = useIntersectionObserver();\n const size = useSize(navsRef);\n\n const tabsRef = useRef<ITabItem[]>(tabs);\n tabsRef.current = tabs;\n const activeKeyRef = useRef<string | undefined>(activeKey);\n activeKeyRef.current = activeKey;\n const prevActiveKeyRef = useRef<string | undefined>(prevActiveKey);\n prevActiveKeyRef.current = prevActiveKey;\n const sourceKeysRef = useRef<Set<string>>(new Set());\n const hiddenSourceKeysRef = useRef<Set<string>>(new Set());\n const parsedTabs = useMemo(\n () => getParsedTabs(items, children),\n [children, items],\n );\n\n useEffect(() => {\n const prevContents = new Map(contentsRef.current);\n const nextContents = new Map(parsedTabs.contents);\n const sourceTabs = parsedTabs.tabs;\n const sourceKeys = parsedTabs.keys;\n\n hiddenSourceKeysRef.current.forEach((key) => {\n if (!sourceKeys.has(key)) {\n hiddenSourceKeysRef.current.delete(key);\n }\n });\n\n const dynamicTabs = tabsRef.current.filter((tab) => {\n const key = String(tab.key);\n return !sourceKeysRef.current.has(key) && !sourceKeys.has(key);\n });\n\n dynamicTabs.forEach((tab) => {\n const key = String(tab.key);\n nextContents.set(key, prevContents.get(key));\n });\n\n sourceKeysRef.current = sourceKeys;\n contentsRef.current = nextContents;\n const nextTabs = [\n ...sourceTabs.filter(\n (tab) => !hiddenSourceKeysRef.current.has(String(tab.key)),\n ),\n ...dynamicTabs,\n ];\n\n setTabs((currentTabs) =>\n isSameTabs(currentTabs, nextTabs) ? currentTabs : nextTabs,\n );\n }, [parsedTabs]);\n\n const add = (tab: ITabItem, position?: number) => {\n const currentTabs = tabsRef.current;\n const tkey = String(tab.key ?? currentTabs.length);\n const i = currentTabs.findIndex((t) => t.key === tkey);\n\n if (i > -1) {\n open(currentTabs[i].key ?? `${i}`);\n return;\n }\n\n contentsRef.current.set(tkey, tab.content);\n const { content, ...rest } = tab;\n setTabs((ts) => {\n const nextTabs = [...ts];\n const index =\n position === undefined\n ? nextTabs.length\n : Math.max(0, Math.min(position, nextTabs.length));\n nextTabs.splice(index, 0, { ...rest, key: tkey });\n return nextTabs;\n });\n open(tkey);\n };\n\n const close = (key: string) => {\n const currentTabs = tabsRef.current;\n const i = currentTabs.findIndex((t) => t.key === key);\n\n if (i < 0) return;\n\n if (sourceKeysRef.current.has(key)) {\n hiddenSourceKeysRef.current.add(key);\n } else {\n contentsRef.current.delete(key);\n }\n const nextTabs = [...currentTabs];\n nextTabs.splice(i, 1);\n setTabs(nextTabs);\n\n if (activeKeyRef.current !== key) return;\n\n const next = nextTabs[i] || nextTabs[i - 1];\n const prev = prevActiveKeyRef.current;\n const nextKey =\n prev && nextTabs.some((t) => t.key === prev) ? prev : next?.key;\n open(nextKey ?? \"\");\n };\n\n const open = (key: string) => {\n const nextKey = key || undefined;\n\n if (nextKey === undefined) {\n onTabChange?.(undefined, activeKey);\n setPrevActiveKey(activeKey);\n setActiveKey(undefined);\n setBarStyle(emptyBarStyle);\n return;\n }\n\n if (nextKey === activeKey) {\n if (!toggable) return;\n\n onTabChange?.(undefined, key);\n setActiveKey(undefined);\n setBarStyle(emptyBarStyle);\n return;\n }\n\n setPrevActiveKey(activeKey);\n onTabChange?.(nextKey, activeKey);\n setActiveKey(nextKey);\n };\n\n const handleKeyAction = (\n e: KeyboardEvent<HTMLElement>,\n action: () => void,\n ) => {\n if (![\"Enter\", \" \"].includes(e.key)) return;\n e.preventDefault();\n action();\n };\n\n const scrollToTab = (key: string) => {\n const index = tabsRef.current.findIndex((tab) => tab.key === key);\n const nav = navRefs.current[index];\n\n nav?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n };\n\n const handleMoreTabClick = (key: string) => {\n open(key);\n scrollToTab(key);\n };\n\n const setNavRef = (index: number, node: HTMLAnchorElement | null) => {\n navRefs.current[index] = node;\n };\n\n const getContent = (key: string) => contentsRef.current.get(key);\n\n useEffect(() => {\n if (!size || hideMore || !observe || !unobserve) return;\n const { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\n const { width, height } = size;\n\n const nextOverflow = scrollHeight > height || scrollWidth > width;\n setOverflow((v) => (v === nextOverflow ? v : nextOverflow));\n\n if (!nextOverflow) {\n setTabs((ts) => {\n let changed = false;\n const next = ts.map((t) => {\n if (\n t.intersecting === undefined ||\n t.intersecting === true\n ) {\n return t;\n }\n changed = true;\n return { ...t, intersecting: true };\n });\n return changed ? next : ts;\n });\n return;\n }\n\n const observed: HTMLElement[] = [];\n\n navRefs.current.forEach((nav, i) => {\n if (!nav) return;\n observed.push(nav);\n observe(nav, (_tar: HTMLElement, visible: boolean) => {\n setTabs((ts) => {\n if (!ts[i]) return ts;\n if (ts[i]?.intersecting === visible) return ts;\n return ts.map((t, idx) =>\n idx === i ? { ...t, intersecting: visible } : t,\n );\n });\n });\n });\n\n return () => {\n observed.forEach((el) => unobserve(el));\n };\n }, [size, hideMore, tabs.length, observe, unobserve]);\n\n useEffect(() => {\n if (!bar || type === \"pane\" || activeKey === undefined) {\n return;\n }\n\n const index = tabs.findIndex((tab) => tab.key === activeKey);\n\n const timer = window.setTimeout(() => {\n const nav = navRefs.current[index];\n\n if (!nav) return;\n\n if (tabs[index]?.keepDOM && activeKey) {\n setCachedTabs((keys) => {\n if (keys.includes(activeKey)) return keys;\n return [activeKey, ...keys];\n });\n }\n\n const { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\n const isLine = type === \"line\";\n\n setBarStyle({\n height: !vertical && isLine ? \".25em\" : offsetHeight * 0.5,\n width: vertical && isLine ? \".25em\" : offsetWidth,\n transform: `translate(${offsetLeft}px, ${offsetTop}px)`,\n });\n }, 16);\n\n return () => {\n window.clearTimeout(timer);\n };\n }, [activeKey, bar, size, tabs, type, vertical]);\n\n useEffect(() => {\n if (active === undefined || activeKey === active) return;\n\n setPrevActiveKey(activeKey);\n setActiveKey(active);\n }, [active]);\n\n useEffect(() => {\n if (!navsRef.current || vertical) return;\n\n const handleMouseWheel = (e) => {\n e.stopPropagation();\n e.preventDefault();\n\n if (vertical) return;\n\n navsRef.current?.scrollBy({\n left: e.deltaY + e.deltaX,\n });\n };\n\n navsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n passive: false,\n });\n\n return () => {\n if (!navsRef.current) return;\n navsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n };\n }, [vertical]);\n\n useImperativeHandle(ref, () => ({\n open,\n close,\n add,\n navs: navsRef,\n }));\n\n const cachedTabKeySet = useMemo(() => new Set(cachedTabs), [cachedTabs]);\n const moreTabs = useMemo(\n () =>\n !hideMore && overflow\n ? tabs.filter((tab) => tab.intersecting === false)\n : [],\n [hideMore, overflow, tabs],\n );\n\n return (\n <div\n className={classNames(\n \"i-tabs\",\n { flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n className,\n )}\n {...rest}\n >\n <div\n className={classNames(\"i-tab-navs-container\", navsClass, {\n \"i-tab-navs-vertical\": vertical,\n })}\n >\n {prepend}\n\n <TabsNavs\n tabs={tabs}\n moreTabs={moreTabs}\n activeKey={activeKey}\n vertical={vertical}\n overflow={overflow}\n hideMore={hideMore}\n navsJustify={navsJustify}\n bar={bar}\n barClass={barClass}\n barStyle={barStyle}\n navsRef={navsRef}\n renderMore={renderMore}\n setNavRef={setNavRef}\n onOpen={open}\n onClose={close}\n onMoreTabClick={handleMoreTabClick}\n onKeyAction={handleKeyAction}\n />\n\n {append}\n </div>\n\n <TabsContents\n tabs={tabs}\n activeKey={activeKey}\n cachedTabKeySet={cachedTabKeySet}\n getContent={getContent}\n />\n </div>\n );\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n"],"names":["_jsxs","_jsx","TabItem"],"mappings":"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"}
1
+ {"version":3,"file":"tabs.js","sources":["../../../../packages/components/tabs/tabs.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport {\n CSSProperties,\n KeyboardEvent,\n ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useIntersectionObserver, useSize } from \"../../js/hooks\";\nimport TabsContents from \"./contents\";\nimport {\n defaultRenderMore,\n emptyBarStyle,\n getParsedTabs,\n isSameTabs,\n} from \"./helper\";\nimport \"./index.css\";\nimport TabItem from \"./item\";\nimport TabsNavs from \"./navs\";\nimport { CompositionTabs, ITabItem, ITabs } from \"./type\";\nconst Tabs = ((props: ITabs) => {\n const {\n ref,\n active,\n tabs: items,\n type = \"default\",\n prepend,\n append,\n children,\n className,\n vertical,\n toggable,\n navsJustify = \"start\",\n navsClass,\n bar = true,\n hideMore,\n barClass,\n renderMore = defaultRenderMore,\n onTabChange,\n ...rest\n } = props;\n\n const navRefs = useRef<(HTMLAnchorElement | null)[]>([]);\n const navsRef = useRef<HTMLDivElement>(null);\n const contentsRef = useRef<Map<string, ReactNode>>(new Map());\n const [activeKey, setActiveKey] = useState<string | undefined>(active);\n const [prevActiveKey, setPrevActiveKey] = useState<string | undefined>(\n undefined,\n );\n const [barStyle, setBarStyle] = useState<CSSProperties>({});\n const [cachedTabs, setCachedTabs] = useState<string[]>([]);\n const [overflow, setOverflow] = useState(false);\n const [tabs, setTabs] = useState<ITabItem[]>([]);\n const { observe, unobserve } = useIntersectionObserver();\n const size = useSize(navsRef);\n\n const tabsRef = useRef<ITabItem[]>(tabs);\n tabsRef.current = tabs;\n const activeKeyRef = useRef<string | undefined>(activeKey);\n activeKeyRef.current = activeKey;\n const prevActiveKeyRef = useRef<string | undefined>(prevActiveKey);\n prevActiveKeyRef.current = prevActiveKey;\n const sourceKeysRef = useRef<Set<string>>(new Set());\n const hiddenSourceKeysRef = useRef<Set<string>>(new Set());\n const parsedTabs = useMemo(\n () => getParsedTabs(items, children),\n [children, items],\n );\n\n useEffect(() => {\n const prevContents = new Map(contentsRef.current);\n const nextContents = new Map(parsedTabs.contents);\n const sourceTabs = parsedTabs.tabs;\n const sourceKeys = parsedTabs.keys;\n\n hiddenSourceKeysRef.current.forEach((key) => {\n if (!sourceKeys.has(key)) {\n hiddenSourceKeysRef.current.delete(key);\n }\n });\n\n const dynamicTabs = tabsRef.current.filter((tab) => {\n const key = String(tab.key);\n return !sourceKeysRef.current.has(key) && !sourceKeys.has(key);\n });\n\n dynamicTabs.forEach((tab) => {\n const key = String(tab.key);\n nextContents.set(key, prevContents.get(key));\n });\n\n sourceKeysRef.current = sourceKeys;\n contentsRef.current = nextContents;\n const nextTabs = [\n ...sourceTabs.filter(\n (tab) => !hiddenSourceKeysRef.current.has(String(tab.key)),\n ),\n ...dynamicTabs,\n ];\n\n setTabs((currentTabs) =>\n isSameTabs(currentTabs, nextTabs) ? currentTabs : nextTabs,\n );\n }, [parsedTabs]);\n\n const add = (tab: ITabItem, position?: number) => {\n const currentTabs = tabsRef.current;\n const tkey = String(tab.key ?? currentTabs.length);\n const i = currentTabs.findIndex((t) => t.key === tkey);\n\n if (i > -1) {\n open(currentTabs[i].key ?? `${i}`);\n return;\n }\n\n contentsRef.current.set(tkey, tab.content);\n const { content, ...rest } = tab;\n setTabs((ts) => {\n const nextTabs = [...ts];\n const index =\n position === undefined\n ? nextTabs.length\n : Math.max(0, Math.min(position, nextTabs.length));\n nextTabs.splice(index, 0, { ...rest, key: tkey });\n return nextTabs;\n });\n open(tkey);\n };\n\n const close = (key: string) => {\n const currentTabs = tabsRef.current;\n const i = currentTabs.findIndex((t) => t.key === key);\n\n if (i < 0) return;\n\n if (sourceKeysRef.current.has(key)) {\n hiddenSourceKeysRef.current.add(key);\n } else {\n contentsRef.current.delete(key);\n }\n const nextTabs = [...currentTabs];\n nextTabs.splice(i, 1);\n setTabs(nextTabs);\n\n if (activeKeyRef.current !== key) return;\n\n const next = nextTabs[i] || nextTabs[i - 1];\n const prev = prevActiveKeyRef.current;\n const nextKey =\n prev && nextTabs.some((t) => t.key === prev) ? prev : next?.key;\n open(nextKey ?? \"\");\n };\n\n const open = (key: string) => {\n const nextKey = key || undefined;\n\n if (nextKey === undefined) {\n onTabChange?.(undefined, activeKey);\n setPrevActiveKey(activeKey);\n setActiveKey(undefined);\n setBarStyle(emptyBarStyle);\n return;\n }\n\n if (nextKey === activeKey) {\n if (!toggable) return;\n\n onTabChange?.(undefined, key);\n setActiveKey(undefined);\n setBarStyle(emptyBarStyle);\n return;\n }\n\n setPrevActiveKey(activeKey);\n onTabChange?.(nextKey, activeKey);\n setActiveKey(nextKey);\n };\n\n const handleKeyAction = (\n e: KeyboardEvent<HTMLElement>,\n action: () => void,\n ) => {\n if (![\"Enter\", \" \"].includes(e.key)) return;\n e.preventDefault();\n action();\n };\n\n const scrollToTab = (key: string) => {\n const index = tabsRef.current.findIndex((tab) => tab.key === key);\n const nav = navRefs.current[index];\n\n nav?.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n };\n\n const handleMoreTabClick = (key: string) => {\n open(key);\n scrollToTab(key);\n };\n\n const setNavRef = (index: number, node: HTMLAnchorElement | null) => {\n navRefs.current[index] = node;\n };\n\n const getContent = (key: string) => contentsRef.current.get(key);\n\n useEffect(() => {\n if (!size || hideMore || !observe || !unobserve) return;\n const { scrollHeight, scrollWidth } = navsRef.current as HTMLElement;\n const { width, height } = size;\n\n const nextOverflow = scrollHeight > height || scrollWidth > width;\n setOverflow((v) => (v === nextOverflow ? v : nextOverflow));\n\n if (!nextOverflow) {\n setTabs((ts) => {\n let changed = false;\n const next = ts.map((t) => {\n if (\n t.intersecting === undefined ||\n t.intersecting === true\n ) {\n return t;\n }\n changed = true;\n return { ...t, intersecting: true };\n });\n return changed ? next : ts;\n });\n return;\n }\n\n const observed: HTMLElement[] = [];\n\n navRefs.current.forEach((nav, i) => {\n if (!nav) return;\n observed.push(nav);\n observe(nav, (_tar: HTMLElement, visible: boolean) => {\n setTabs((ts) => {\n if (!ts[i]) return ts;\n if (ts[i]?.intersecting === visible) return ts;\n return ts.map((t, idx) =>\n idx === i ? { ...t, intersecting: visible } : t,\n );\n });\n });\n });\n\n return () => {\n observed.forEach((el) => unobserve(el));\n };\n }, [size, hideMore, tabs.length, observe, unobserve]);\n\n useEffect(() => {\n if (!bar || type === \"pane\" || activeKey === undefined) {\n return;\n }\n\n const index = tabs.findIndex((tab) => tab.key === activeKey);\n\n const timer = window.setTimeout(() => {\n const nav = navRefs.current[index];\n\n if (!nav) return;\n\n if (tabs[index]?.keepDOM && activeKey) {\n setCachedTabs((keys) => {\n if (keys.includes(activeKey)) return keys;\n return [activeKey, ...keys];\n });\n }\n\n const { offsetHeight, offsetLeft, offsetTop, offsetWidth } = nav;\n const isLine = type === \"line\";\n\n setBarStyle({\n height: !vertical && isLine ? \".25em\" : offsetHeight * 0.5,\n width: vertical && isLine ? \".25em\" : offsetWidth,\n transform: `translate(${offsetLeft}px, ${offsetTop}px)`,\n });\n }, 16);\n\n return () => {\n window.clearTimeout(timer);\n };\n }, [activeKey, bar, size, tabs, type, vertical]);\n\n useEffect(() => {\n if (active === undefined || activeKey === active) return;\n\n setPrevActiveKey(activeKey);\n setActiveKey(active);\n }, [active]);\n\n useEffect(() => {\n if (!navsRef.current || vertical) return;\n\n const handleMouseWheel = (e: WheelEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n if (vertical) return;\n\n navsRef.current?.scrollBy({\n left: e.deltaY + e.deltaX,\n });\n };\n\n navsRef.current.addEventListener(\"wheel\", handleMouseWheel, {\n passive: false,\n });\n\n return () => {\n if (!navsRef.current) return;\n navsRef.current.removeEventListener(\"wheel\", handleMouseWheel);\n };\n }, [vertical]);\n\n useImperativeHandle(ref, () => ({\n open,\n close,\n add,\n navs: navsRef,\n }));\n\n const cachedTabKeySet = useMemo(() => new Set(cachedTabs), [cachedTabs]);\n const moreTabs = useMemo(\n () =>\n !hideMore && overflow\n ? tabs.filter((tab) => tab.intersecting === false)\n : [],\n [hideMore, overflow, tabs],\n );\n\n return (\n <div\n className={classNames(\n \"i-tabs\",\n { flex: vertical, [`i-tabs-${type}`]: type !== \"default\" },\n className,\n )}\n {...rest}\n >\n <div\n className={classNames(\"i-tab-navs-container\", navsClass, {\n \"i-tab-navs-vertical\": vertical,\n })}\n >\n {prepend}\n\n <TabsNavs\n tabs={tabs}\n moreTabs={moreTabs}\n activeKey={activeKey}\n vertical={vertical}\n overflow={overflow}\n hideMore={hideMore}\n navsJustify={navsJustify}\n bar={bar}\n barClass={barClass}\n barStyle={barStyle}\n navsRef={navsRef}\n renderMore={renderMore}\n setNavRef={setNavRef}\n onOpen={open}\n onClose={close}\n onMoreTabClick={handleMoreTabClick}\n onKeyAction={handleKeyAction}\n />\n\n {append}\n </div>\n\n <TabsContents\n tabs={tabs}\n activeKey={activeKey}\n cachedTabKeySet={cachedTabKeySet}\n getContent={getContent}\n />\n </div>\n );\n}) as CompositionTabs;\n\nTabs.Item = TabItem;\n\nexport default Tabs;\n"],"names":["_jsxs","_jsx","TabItem"],"mappings":"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"}
@@ -4,6 +4,7 @@ import classNames from 'classnames';
4
4
  import { uid } from 'radash';
5
5
  import { useState, useMemo, useRef, useCallback } from 'react';
6
6
  import { SortableItem } from 'react-easy-sort';
7
+ import { createPortal } from 'react-dom';
7
8
  import usePreview from '../../js/usePreview/index.js';
8
9
  import { arrayMove } from '../../js/utils.js';
9
10
  import Button from '../button/button.js';
@@ -32,7 +33,7 @@ const normalizeFiles = (files) => (files ?? []).map((item) => {
32
33
  };
33
34
  });
34
35
  const Upload = (props) => {
35
- const { label, labelInline, value, files, placeholder, status = "normal", message, className, style, children, droppable, dropbox, defaultButtonProps, mode = "default", cardSize = "3.2em", disabled, sortable, limit = props.multiple ? Infinity : 1, multiple, renderItem, shouldUpload = () => true, uploader, onChange, onFilesChange, onUpload, onRemove, ...restProps } = props;
36
+ const { label, labelInline, value, files, placeholder, status = "normal", message, className, style, children, droppable, dropbox, getDropboxContainer, defaultButtonProps, mode = "default", cardSize = "3.2em", disabled, sortable, limit = props.multiple ? Infinity : 1, multiple, renderItem, shouldUpload = () => true, uploader, onChange, onFilesChange, onUpload, onRemove, ...restProps } = props;
36
37
  const [internalFileList, setInternalFileList] = useState([]);
37
38
  const isControlled = useMemo(() => value !== undefined || files !== undefined, [value, files]);
38
39
  const fileList = isControlled
@@ -142,7 +143,12 @@ const Upload = (props) => {
142
143
  return node;
143
144
  return jsx(SortableItem, { children: node }, key);
144
145
  }) }), uploadMessage && (jsx("span", { className: "i-upload-message", children: uploadMessage })), fileList.length < limit &&
145
- (droppable ? (jsx(Dropbox, { multiple: multiple, accept: restProps.accept, disabled: disabled, onChange: handleChange, onDropFiles: handleDropFiles, children: dropbox })) : (jsxs("label", { children: [jsx("input", { ...restProps, disabled: disabled, ref: inputRef, type: "file", className: "i-input-file-hidden", multiple: multiple, onChange: handleChange }), trigger] })))] }) }));
146
+ (droppable ? ((() => {
147
+ const node = (jsx(Dropbox, { multiple: multiple, accept: restProps.accept, disabled: disabled, onChange: handleChange, onDropFiles: handleDropFiles, children: dropbox }));
148
+ return getDropboxContainer
149
+ ? createPortal(node, getDropboxContainer())
150
+ : node;
151
+ })()) : (jsxs("label", { children: [jsx("input", { ...restProps, disabled: disabled, ref: inputRef, type: "file", className: "i-input-file-hidden", multiple: multiple, onChange: handleChange }), trigger] })))] }) }));
146
152
  };
147
153
 
148
154
  export { Upload as default };
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sources":["../../../../packages/components/upload/upload.tsx"],"sourcesContent":["import { DriveFolderUploadOutlined, PlusSharp } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport {\n ChangeEvent,\n CSSProperties,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { SortableItem } from \"react-easy-sort\";\nimport usePreview from \"../../js/usePreview\";\nimport { TPreviewItem } from \"../../js/usePreview/type\";\nimport { arrayMove } from \"../../js/utils\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport InputContainer from \"../input/container\";\nimport Dropbox from \"./dropbox\";\nimport \"./index.css\";\nimport FileListItem, { ListContainer } from \"./renderFile\";\nimport { IFile, IUpload } from \"./type\";\n\nconst normalizeFiles = (files?: IFile[] | File[]) =>\n (files ?? []).map((item) => {\n const file = item as IFile;\n if (item instanceof File) {\n const src = file.src ?? URL.createObjectURL(item);\n Object.assign(item, {\n id: file.id ?? uid(7),\n src,\n url: file.url ?? src,\n });\n return item;\n }\n const src = file.src ?? file.name;\n return {\n ...(file as object),\n id: file.id ?? uid(7),\n src,\n url: file.url ?? src,\n } as IFile;\n });\n\nconst Upload = (props: IUpload) => {\n const {\n label,\n labelInline,\n value,\n files,\n placeholder,\n status = \"normal\",\n message,\n className,\n style,\n children,\n droppable,\n dropbox,\n defaultButtonProps,\n mode = \"default\",\n cardSize = \"3.2em\",\n disabled,\n sortable,\n limit = props.multiple ? Infinity : 1,\n multiple,\n renderItem,\n shouldUpload = () => true,\n uploader,\n onChange,\n onFilesChange,\n onUpload,\n onRemove,\n ...restProps\n } = props;\n\n const [internalFileList, setInternalFileList] = useState<IFile[]>([]);\n const isControlled = useMemo(\n () => value !== undefined || files !== undefined,\n [value, files],\n );\n const fileList = isControlled\n ? normalizeFiles(value ?? files ?? [])\n : internalFileList;\n\n const uploadMessage = message;\n const inputRef = useRef<HTMLInputElement>(null);\n const preview = usePreview();\n const defBtnProps = useMemo(\n () => ({\n children: (\n <>\n <Icon icon={<DriveFolderUploadOutlined />} /> 上传\n </>\n ),\n ...defaultButtonProps,\n }),\n [defaultButtonProps],\n );\n\n const trigger = useMemo(() => {\n if (children) return children;\n\n switch (mode) {\n case \"card\":\n return (\n <Button\n className=\"i-upload-card-btn color-5\"\n square\n flat\n outline\n disabled={disabled}\n >\n <Icon icon={<PlusSharp />} />\n </Button>\n );\n default:\n return (\n <Button\n {...defBtnProps}\n className={classNames(\n \"i-upload-btn\",\n defBtnProps.className,\n )}\n disabled={disabled}\n />\n );\n }\n }, [mode, children, disabled, defBtnProps]);\n\n const handleUpload = useCallback(\n async (files: IFile[]) => {\n if (!uploader) return;\n\n const shouldUploadFiles = files.filter(shouldUpload);\n const result = await Promise.all(shouldUploadFiles.map(uploader));\n\n return onUpload?.(result);\n },\n [uploader, shouldUpload, onUpload],\n );\n\n const processFiles = useCallback(\n (inputFiles: IFile[]) => {\n const before = fileList;\n const changed: IFile[] = [];\n\n inputFiles.forEach((file) => {\n const { id, name, size, type } = file;\n const same = before.some(\n (pf) =>\n pf.name === name &&\n pf.size === size &&\n pf.type === type,\n );\n const src = URL.createObjectURL(file);\n\n Object.assign(file, {\n id: id ?? uid(7),\n src: src ?? file.name,\n url: src ?? file.name,\n });\n if (!same) changed.push(file);\n });\n\n const after = [...before, ...changed];\n const last = after.at(-1);\n const nextFiles: IFile[] = multiple\n ? (after.slice(0, limit) as IFile[])\n : last\n ? [last as IFile]\n : [];\n\n return { nextFiles, changed };\n },\n [fileList, multiple, limit],\n );\n\n const applyFiles = useCallback(\n (\n nextFiles: IFile[],\n changed: IFile[],\n e?: ChangeEvent<HTMLInputElement>,\n ) => {\n if (!isControlled) setInternalFileList(nextFiles as IFile[]);\n onFilesChange?.(nextFiles as IFile[], changed as IFile[], e);\n onChange?.(nextFiles, e);\n handleUpload(changed);\n },\n [isControlled, onFilesChange, onChange, handleUpload],\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const inputFiles = Array.from(e.target.files || []) as IFile[];\n const { nextFiles, changed } = processFiles(inputFiles);\n\n applyFiles(nextFiles, changed, e);\n if (inputRef.current) inputRef.current.value = \"\";\n },\n [processFiles, applyFiles],\n );\n\n const handleDropFiles = useCallback(\n (files: File[]) => {\n const { nextFiles, changed } = processFiles(files as IFile[]);\n applyFiles(nextFiles, changed);\n },\n [processFiles, applyFiles],\n );\n\n const handleRemove = useCallback(\n (i: number) => {\n const files = [...fileList];\n const changed = files.splice(i, 1);\n URL.revokeObjectURL((changed[0] as IFile)?.src || \"\");\n\n if (!isControlled) setInternalFileList(files as IFile[]);\n onFilesChange?.(files as IFile[], changed as IFile[]);\n onChange?.(files);\n onRemove?.(changed[0] as IFile);\n\n if (inputRef.current) inputRef.current.value = \"\";\n },\n [fileList, isControlled, onFilesChange, onChange, onRemove],\n );\n\n const handlePreview = useCallback(\n (i: number) => {\n preview({\n items: fileList as unknown as TPreviewItem[],\n initial: i,\n });\n },\n [fileList, preview],\n );\n\n const handleSortEnd = useCallback(\n (before: number, after: number) => {\n const files = [...fileList];\n const nextFiles = arrayMove(files, before, after);\n if (!isControlled) setInternalFileList(nextFiles);\n onFilesChange?.(nextFiles, []);\n onChange?.(nextFiles);\n },\n [fileList, isControlled, onFilesChange, onChange],\n );\n\n return (\n <InputContainer\n as=\"div\"\n label={label}\n labelInline={labelInline}\n className={classNames(\"i-input-label-file\", className)}\n style={style}\n >\n <div\n className={classNames(\"i-upload-inner\", {\n [`i-upload-${mode}`]: mode !== \"default\",\n })}\n style={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\n >\n <ListContainer sortable={sortable} onSortEnd={handleSortEnd}>\n {fileList.map((file, i) => {\n const f = file as IFile;\n const key = f.id ?? i;\n const node = (\n <FileListItem\n key={key}\n index={i}\n file={f}\n mode={mode}\n renderItem={renderItem}\n onRemove={handleRemove}\n onPreview={handlePreview}\n />\n );\n\n if (!sortable) return node;\n\n return <SortableItem key={key}>{node}</SortableItem>;\n })}\n </ListContainer>\n\n {uploadMessage && (\n <span className=\"i-upload-message\">{uploadMessage}</span>\n )}\n\n {fileList.length < limit &&\n (droppable ? (\n <Dropbox\n multiple={multiple}\n accept={restProps.accept}\n disabled={disabled}\n onChange={handleChange}\n onDropFiles={handleDropFiles}\n >\n {dropbox}\n </Dropbox>\n ) : (\n <label>\n <input\n {...restProps}\n disabled={disabled}\n ref={inputRef}\n type=\"file\"\n className=\"i-input-file-hidden\"\n multiple={multiple}\n onChange={handleChange}\n />\n {trigger}\n </label>\n ))}\n </div>\n </InputContainer>\n );\n};\n\nexport default Upload;\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;;;;;;AAuBA,MAAM,cAAc,GAAG,CAAC,KAAwB,KAC5C,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KAAI;IACvB,MAAM,IAAI,GAAG,IAAa;AAC1B,IAAA,IAAI,IAAI,YAAY,IAAI,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AACjD,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YAChB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;YACrB,GAAG;AACH,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG;AACvB,SAAA,CAAC;AACF,QAAA,OAAO,IAAI;IACf;IACA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI;IACjC,OAAO;AACH,QAAA,GAAI,IAAe;QACnB,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QACrB,GAAG;AACH,QAAA,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG;KACd;AACd,CAAC,CAAC;AAEN,MAAM,MAAM,GAAG,CAAC,KAAc,KAAI;AAC9B,IAAA,MAAM,EACF,KAAK,EACL,WAAW,EACX,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,GAAG,QAAQ,EACjB,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EACP,kBAAkB,EAClB,IAAI,GAAG,SAAS,EAChB,QAAQ,GAAG,OAAO,EAClB,QAAQ,EACR,QAAQ,EACR,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,EACrC,QAAQ,EACR,UAAU,EACV,YAAY,GAAG,MAAM,IAAI,EACzB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,GAAG,SAAS,EACf,GAAG,KAAK;IAET,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAU,EAAE,CAAC;IACrE,MAAM,YAAY,GAAG,OAAO,CACxB,MAAM,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAChD,CAAC,KAAK,EAAE,KAAK,CAAC,CACjB;IACD,MAAM,QAAQ,GAAG;UACX,cAAc,CAAC,KAAK,IAAI,KAAK,IAAI,EAAE;UACnC,gBAAgB;IAEtB,MAAM,aAAa,GAAG,OAAO;AAC7B,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC;AAC/C,IAAA,MAAM,OAAO,GAAG,UAAU,EAAE;AAC5B,IAAA,MAAM,WAAW,GAAG,OAAO,CACvB,OAAO;AACH,QAAA,QAAQ,GACJA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACIC,GAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAEA,GAAA,CAAC,yBAAyB,EAAA,EAAA,CAAG,EAAA,CAAI,qBAC9C,CACN;AACD,QAAA,GAAG,kBAAkB;AACxB,KAAA,CAAC,EACF,CAAC,kBAAkB,CAAC,CACvB;AAED,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,MAAK;AACzB,QAAA,IAAI,QAAQ;AAAE,YAAA,OAAO,QAAQ;QAE7B,QAAQ,IAAI;AACR,YAAA,KAAK,MAAM;AACP,gBAAA,QACIA,GAAA,CAAC,MAAM,EAAA,EACH,SAAS,EAAC,2BAA2B,EACrC,MAAM,EAAA,IAAA,EACN,IAAI,EAAA,IAAA,EACJ,OAAO,EAAA,IAAA,EACP,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAElBA,GAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAEA,GAAA,CAAC,SAAS,EAAA,EAAA,CAAG,EAAA,CAAI,EAAA,CACxB;AAEjB,YAAA;gBACI,QACIA,IAAC,MAAM,EAAA,EAAA,GACC,WAAW,EACf,SAAS,EAAE,UAAU,CACjB,cAAc,EACd,WAAW,CAAC,SAAS,CACxB,EACD,QAAQ,EAAE,QAAQ,EAAA,CACpB;;IAGlB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE3C,MAAM,YAAY,GAAG,WAAW,CAC5B,OAAO,KAAc,KAAI;AACrB,QAAA,IAAI,CAAC,QAAQ;YAAE;QAEf,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;AACpD,QAAA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAEjE,QAAA,OAAO,QAAQ,GAAG,MAAM,CAAC;IAC7B,CAAC,EACD,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CACrC;AAED,IAAA,MAAM,YAAY,GAAG,WAAW,CAC5B,CAAC,UAAmB,KAAI;QACpB,MAAM,MAAM,GAAG,QAAQ;QACvB,MAAM,OAAO,GAAY,EAAE;AAE3B,QAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACxB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI;AACrC,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CACpB,CAAC,EAAE,KACC,EAAE,CAAC,IAAI,KAAK,IAAI;gBAChB,EAAE,CAAC,IAAI,KAAK,IAAI;AAChB,gBAAA,EAAE,CAAC,IAAI,KAAK,IAAI,CACvB;YACD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AAErC,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;AAChB,gBAAA,EAAE,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;AAChB,gBAAA,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI;AACrB,gBAAA,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI;AACxB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,QAAA,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAY;cACpB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK;AACvB,cAAE;kBACE,CAAC,IAAa;kBACd,EAAE;AAEV,QAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;IACjC,CAAC,EACD,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAC9B;IAED,MAAM,UAAU,GAAG,WAAW,CAC1B,CACI,SAAkB,EAClB,OAAgB,EAChB,CAAiC,KACjC;AACA,QAAA,IAAI,CAAC,YAAY;YAAE,mBAAmB,CAAC,SAAoB,CAAC;QAC5D,aAAa,GAAG,SAAoB,EAAE,OAAkB,EAAE,CAAC,CAAC;AAC5D,QAAA,QAAQ,GAAG,SAAS,EAAE,CAAC,CAAC;QACxB,YAAY,CAAC,OAAO,CAAC;IACzB,CAAC,EACD,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CACxD;AAED,IAAA,MAAM,YAAY,GAAG,WAAW,CAC5B,CAAC,CAAgC,KAAI;AACjC,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAY;QAC9D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,UAAU,CAAC;AAEvD,QAAA,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACjC,IAAI,QAAQ,CAAC,OAAO;AAAE,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE;AACrD,IAAA,CAAC,EACD,CAAC,YAAY,EAAE,UAAU,CAAC,CAC7B;AAED,IAAA,MAAM,eAAe,GAAG,WAAW,CAC/B,CAAC,KAAa,KAAI;QACd,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,KAAgB,CAAC;AAC7D,QAAA,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC;AAClC,IAAA,CAAC,EACD,CAAC,YAAY,EAAE,UAAU,CAAC,CAC7B;AAED,IAAA,MAAM,YAAY,GAAG,WAAW,CAC5B,CAAC,CAAS,KAAI;AACV,QAAA,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAClC,QAAA,GAAG,CAAC,eAAe,CAAE,OAAO,CAAC,CAAC,CAAW,EAAE,GAAG,IAAI,EAAE,CAAC;AAErD,QAAA,IAAI,CAAC,YAAY;YAAE,mBAAmB,CAAC,KAAgB,CAAC;AACxD,QAAA,aAAa,GAAG,KAAgB,EAAE,OAAkB,CAAC;AACrD,QAAA,QAAQ,GAAG,KAAK,CAAC;AACjB,QAAA,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAU,CAAC;QAE/B,IAAI,QAAQ,CAAC,OAAO;AAAE,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE;AACrD,IAAA,CAAC,EACD,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAC9D;AAED,IAAA,MAAM,aAAa,GAAG,WAAW,CAC7B,CAAC,CAAS,KAAI;AACV,QAAA,OAAO,CAAC;AACJ,YAAA,KAAK,EAAE,QAAqC;AAC5C,YAAA,OAAO,EAAE,CAAC;AACb,SAAA,CAAC;AACN,IAAA,CAAC,EACD,CAAC,QAAQ,EAAE,OAAO,CAAC,CACtB;IAED,MAAM,aAAa,GAAG,WAAW,CAC7B,CAAC,MAAc,EAAE,KAAa,KAAI;AAC9B,QAAA,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC;QAC3B,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AACjD,QAAA,IAAI,CAAC,YAAY;YAAE,mBAAmB,CAAC,SAAS,CAAC;AACjD,QAAA,aAAa,GAAG,SAAS,EAAE,EAAE,CAAC;AAC9B,QAAA,QAAQ,GAAG,SAAS,CAAC;IACzB,CAAC,EACD,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,CACpD;AAED,IAAA,QACIA,GAAA,CAAC,cAAc,EAAA,EACX,EAAE,EAAC,KAAK,EACR,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAAE,SAAS,CAAC,EACtD,KAAK,EAAE,KAAK,EAAA,QAAA,EAEZF,cACI,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE;AACpC,gBAAA,CAAC,YAAY,IAAI,CAAA,CAAE,GAAG,IAAI,KAAK,SAAS;AAC3C,aAAA,CAAC,EACF,KAAK,EAAE,EAAE,CAAC,oBAAoB,GAAG,QAAQ,EAAmB,EAAA,QAAA,EAAA,CAE5DE,GAAA,CAAC,aAAa,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,YACtD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;wBACtB,MAAM,CAAC,GAAG,IAAa;AACvB,wBAAA,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;AACrB,wBAAA,MAAM,IAAI,IACNA,GAAA,CAAC,YAAY,EAAA,EAET,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,EAAA,EANnB,GAAG,CAOV,CACL;AAED,wBAAA,IAAI,CAAC,QAAQ;AAAE,4BAAA,OAAO,IAAI;AAE1B,wBAAA,OAAOA,IAAC,YAAY,EAAA,EAAA,QAAA,EAAY,IAAI,EAAA,EAAV,GAAG,CAAuB;AACxD,oBAAA,CAAC,CAAC,EAAA,CACU,EAEf,aAAa,KACVA,cAAM,SAAS,EAAC,kBAAkB,EAAA,QAAA,EAAE,aAAa,GAAQ,CAC5D,EAEA,QAAQ,CAAC,MAAM,GAAG,KAAK;AACpB,qBAAC,SAAS,IACNA,GAAA,CAAC,OAAO,EAAA,EACJ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,SAAS,CAAC,MAAM,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,eAAe,EAAA,QAAA,EAE3B,OAAO,EAAA,CACF,KAEVF,IAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CACIE,GAAA,CAAA,OAAA,EAAA,EAAA,GACQ,SAAS,EACb,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,qBAAqB,EAC/B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,EAAA,CACxB,EACD,OAAO,IACJ,CACX,CAAC,CAAA,EAAA,CACJ,EAAA,CACO;AAEzB;;;;"}
1
+ {"version":3,"file":"upload.js","sources":["../../../../packages/components/upload/upload.tsx"],"sourcesContent":["import { DriveFolderUploadOutlined, PlusSharp } from \"@ricons/material\";\nimport classNames from \"classnames\";\nimport { uid } from \"radash\";\nimport {\n ChangeEvent,\n CSSProperties,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { SortableItem } from \"react-easy-sort\";\nimport { createPortal } from \"react-dom\";\nimport usePreview from \"../../js/usePreview\";\nimport { TPreviewItem } from \"../../js/usePreview/type\";\nimport { arrayMove } from \"../../js/utils\";\nimport Button from \"../button\";\nimport Icon from \"../icon\";\nimport InputContainer from \"../input/container\";\nimport Dropbox from \"./dropbox\";\nimport \"./index.css\";\nimport FileListItem, { ListContainer } from \"./renderFile\";\nimport { IFile, IUpload } from \"./type\";\n\nconst normalizeFiles = (files?: IFile[] | File[]) =>\n (files ?? []).map((item) => {\n const file = item as IFile;\n if (item instanceof File) {\n const src = file.src ?? URL.createObjectURL(item);\n Object.assign(item, {\n id: file.id ?? uid(7),\n src,\n url: file.url ?? src,\n });\n return item;\n }\n const src = file.src ?? file.name;\n return {\n ...(file as object),\n id: file.id ?? uid(7),\n src,\n url: file.url ?? src,\n } as IFile;\n });\n\nconst Upload = (props: IUpload) => {\n const {\n label,\n labelInline,\n value,\n files,\n placeholder,\n status = \"normal\",\n message,\n className,\n style,\n children,\n droppable,\n dropbox,\n getDropboxContainer,\n defaultButtonProps,\n mode = \"default\",\n cardSize = \"3.2em\",\n disabled,\n sortable,\n limit = props.multiple ? Infinity : 1,\n multiple,\n renderItem,\n shouldUpload = () => true,\n uploader,\n onChange,\n onFilesChange,\n onUpload,\n onRemove,\n ...restProps\n } = props;\n\n const [internalFileList, setInternalFileList] = useState<IFile[]>([]);\n const isControlled = useMemo(\n () => value !== undefined || files !== undefined,\n [value, files],\n );\n const fileList = isControlled\n ? normalizeFiles(value ?? files ?? [])\n : internalFileList;\n\n const uploadMessage = message;\n const inputRef = useRef<HTMLInputElement>(null);\n const preview = usePreview();\n const defBtnProps = useMemo(\n () => ({\n children: (\n <>\n <Icon icon={<DriveFolderUploadOutlined />} /> 上传\n </>\n ),\n ...defaultButtonProps,\n }),\n [defaultButtonProps],\n );\n\n const trigger = useMemo(() => {\n if (children) return children;\n\n switch (mode) {\n case \"card\":\n return (\n <Button\n className=\"i-upload-card-btn color-5\"\n square\n flat\n outline\n disabled={disabled}\n >\n <Icon icon={<PlusSharp />} />\n </Button>\n );\n default:\n return (\n <Button\n {...defBtnProps}\n className={classNames(\n \"i-upload-btn\",\n defBtnProps.className,\n )}\n disabled={disabled}\n />\n );\n }\n }, [mode, children, disabled, defBtnProps]);\n\n const handleUpload = useCallback(\n async (files: IFile[]) => {\n if (!uploader) return;\n\n const shouldUploadFiles = files.filter(shouldUpload);\n const result = await Promise.all(shouldUploadFiles.map(uploader));\n\n return onUpload?.(result);\n },\n [uploader, shouldUpload, onUpload],\n );\n\n const processFiles = useCallback(\n (inputFiles: IFile[]) => {\n const before = fileList;\n const changed: IFile[] = [];\n\n inputFiles.forEach((file) => {\n const { id, name, size, type } = file;\n const same = before.some(\n (pf) =>\n pf.name === name &&\n pf.size === size &&\n pf.type === type,\n );\n const src = URL.createObjectURL(file);\n\n Object.assign(file, {\n id: id ?? uid(7),\n src: src ?? file.name,\n url: src ?? file.name,\n });\n if (!same) changed.push(file);\n });\n\n const after = [...before, ...changed];\n const last = after.at(-1);\n const nextFiles: IFile[] = multiple\n ? (after.slice(0, limit) as IFile[])\n : last\n ? [last as IFile]\n : [];\n\n return { nextFiles, changed };\n },\n [fileList, multiple, limit],\n );\n\n const applyFiles = useCallback(\n (\n nextFiles: IFile[],\n changed: IFile[],\n e?: ChangeEvent<HTMLInputElement>,\n ) => {\n if (!isControlled) setInternalFileList(nextFiles as IFile[]);\n onFilesChange?.(nextFiles as IFile[], changed as IFile[], e);\n onChange?.(nextFiles, e);\n handleUpload(changed);\n },\n [isControlled, onFilesChange, onChange, handleUpload],\n );\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const inputFiles = Array.from(e.target.files || []) as IFile[];\n const { nextFiles, changed } = processFiles(inputFiles);\n\n applyFiles(nextFiles, changed, e);\n if (inputRef.current) inputRef.current.value = \"\";\n },\n [processFiles, applyFiles],\n );\n\n const handleDropFiles = useCallback(\n (files: File[]) => {\n const { nextFiles, changed } = processFiles(files as IFile[]);\n applyFiles(nextFiles, changed);\n },\n [processFiles, applyFiles],\n );\n\n const handleRemove = useCallback(\n (i: number) => {\n const files = [...fileList];\n const changed = files.splice(i, 1);\n URL.revokeObjectURL((changed[0] as IFile)?.src || \"\");\n\n if (!isControlled) setInternalFileList(files as IFile[]);\n onFilesChange?.(files as IFile[], changed as IFile[]);\n onChange?.(files);\n onRemove?.(changed[0] as IFile);\n\n if (inputRef.current) inputRef.current.value = \"\";\n },\n [fileList, isControlled, onFilesChange, onChange, onRemove],\n );\n\n const handlePreview = useCallback(\n (i: number) => {\n preview({\n items: fileList as unknown as TPreviewItem[],\n initial: i,\n });\n },\n [fileList, preview],\n );\n\n const handleSortEnd = useCallback(\n (before: number, after: number) => {\n const files = [...fileList];\n const nextFiles = arrayMove(files, before, after);\n if (!isControlled) setInternalFileList(nextFiles);\n onFilesChange?.(nextFiles, []);\n onChange?.(nextFiles);\n },\n [fileList, isControlled, onFilesChange, onChange],\n );\n\n return (\n <InputContainer\n as=\"div\"\n label={label}\n labelInline={labelInline}\n className={classNames(\"i-input-label-file\", className)}\n style={style}\n >\n <div\n className={classNames(\"i-upload-inner\", {\n [`i-upload-${mode}`]: mode !== \"default\",\n })}\n style={{ [\"--upload-card-size\"]: cardSize } as CSSProperties}\n >\n <ListContainer sortable={sortable} onSortEnd={handleSortEnd}>\n {fileList.map((file, i) => {\n const f = file as IFile;\n const key = f.id ?? i;\n const node = (\n <FileListItem\n key={key}\n index={i}\n file={f}\n mode={mode}\n renderItem={renderItem}\n onRemove={handleRemove}\n onPreview={handlePreview}\n />\n );\n\n if (!sortable) return node;\n\n return <SortableItem key={key}>{node}</SortableItem>;\n })}\n </ListContainer>\n\n {uploadMessage && (\n <span className=\"i-upload-message\">{uploadMessage}</span>\n )}\n\n {fileList.length < limit &&\n (droppable ? (\n (() => {\n const node = (\n <Dropbox\n multiple={multiple}\n accept={restProps.accept}\n disabled={disabled}\n onChange={handleChange}\n onDropFiles={handleDropFiles}\n >\n {dropbox}\n </Dropbox>\n );\n return getDropboxContainer\n ? createPortal(node, getDropboxContainer())\n : node;\n })()\n ) : (\n <label>\n <input\n {...restProps}\n disabled={disabled}\n ref={inputRef}\n type=\"file\"\n className=\"i-input-file-hidden\"\n multiple={multiple}\n onChange={handleChange}\n />\n {trigger}\n </label>\n ))}\n </div>\n </InputContainer>\n );\n};\n\nexport default Upload;\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}