@ioca/react 1.5.13 → 1.5.14

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 (48) hide show
  1. package/lib/cjs/components/dropdown/dropdown.js +6 -3
  2. package/lib/cjs/components/dropdown/dropdown.js.map +1 -1
  3. package/lib/cjs/components/dropdown/item.js +20 -4
  4. package/lib/cjs/components/dropdown/item.js.map +1 -1
  5. package/lib/cjs/components/editor/editor.js +27 -11
  6. package/lib/cjs/components/editor/editor.js.map +1 -1
  7. package/lib/cjs/components/loading/loading.js +4 -3
  8. package/lib/cjs/components/loading/loading.js.map +1 -1
  9. package/lib/cjs/components/popup/popup.js +7 -17
  10. package/lib/cjs/components/popup/popup.js.map +1 -1
  11. package/lib/cjs/components/scroll/index.js +10 -0
  12. package/lib/cjs/components/scroll/index.js.map +1 -0
  13. package/lib/cjs/components/scroll/scroll.js +78 -0
  14. package/lib/cjs/components/scroll/scroll.js.map +1 -0
  15. package/lib/cjs/components/upload/upload.js +5 -5
  16. package/lib/cjs/components/upload/upload.js.map +1 -1
  17. package/lib/cjs/index.js +2 -0
  18. package/lib/cjs/index.js.map +1 -1
  19. package/lib/css/colors.css +784 -784
  20. package/lib/css/index.css +1 -1
  21. package/lib/css/index.css.map +1 -1
  22. package/lib/es/components/dropdown/dropdown.js +7 -5
  23. package/lib/es/components/dropdown/dropdown.js.map +1 -1
  24. package/lib/es/components/dropdown/item.js +20 -4
  25. package/lib/es/components/dropdown/item.js.map +1 -1
  26. package/lib/es/components/editor/editor.js +27 -11
  27. package/lib/es/components/editor/editor.js.map +1 -1
  28. package/lib/es/components/loading/loading.js +4 -3
  29. package/lib/es/components/loading/loading.js.map +1 -1
  30. package/lib/es/components/popup/popup.js +7 -17
  31. package/lib/es/components/popup/popup.js.map +1 -1
  32. package/lib/es/components/scroll/index.js +6 -0
  33. package/lib/es/components/scroll/index.js.map +1 -0
  34. package/lib/es/components/scroll/scroll.js +70 -0
  35. package/lib/es/components/scroll/scroll.js.map +1 -0
  36. package/lib/es/components/upload/upload.js +7 -7
  37. package/lib/es/components/upload/upload.js.map +1 -1
  38. package/lib/es/index.js +1 -0
  39. package/lib/es/index.js.map +1 -1
  40. package/lib/index.js +132 -45
  41. package/lib/types/components/dropdown/dropdown.d.ts +1 -1
  42. package/lib/types/components/editor/type.d.ts +1 -1
  43. package/lib/types/components/scroll/index.d.ts +5 -0
  44. package/lib/types/components/scroll/scroll.d.ts +6 -0
  45. package/lib/types/components/scroll/type.d.ts +7 -0
  46. package/lib/types/components/upload/type.d.ts +1 -0
  47. package/lib/types/index.d.ts +1 -0
  48. package/package.json +1 -1
@@ -8,12 +8,14 @@ var list = require('../list/list.js');
8
8
  var popup = require('../popup/popup.js');
9
9
  var item = require('./item.js');
10
10
 
11
+ const DropdownCloseCtx = react.createContext(null);
11
12
  const Dropdown = (props) => {
12
13
  const { visible, width, content, children, ...restProps } = props;
13
14
  const [active, setActive] = react.useState(visible);
14
15
  if (!content) {
15
16
  return children;
16
17
  }
18
+ const close = () => setActive(false);
17
19
  const handleVisibleChange = (v) => {
18
20
  setActive(v);
19
21
  if (props.onVisibleChange) {
@@ -23,11 +25,12 @@ const Dropdown = (props) => {
23
25
  react.useEffect(() => {
24
26
  setActive(visible);
25
27
  }, [visible]);
26
- return (jsxRuntime.jsx(popup.default, { trigger: 'click', position: 'bottom', content: jsxRuntime.jsx(list.default, { className: 'i-dropdown-content', style: { minWidth: width }, children: typeof content === "function"
27
- ? content(() => setActive(false))
28
- : content }), ...restProps, touchable: true, visible: active, onVisibleChange: handleVisibleChange, children: children }));
28
+ return (jsxRuntime.jsx(popup.default, { trigger: 'click', position: 'bottom', content: jsxRuntime.jsx(DropdownCloseCtx.Provider, { value: close, children: jsxRuntime.jsx(list.default, { className: 'i-dropdown-content', style: { minWidth: width }, children: typeof content === "function"
29
+ ? content(close)
30
+ : content }) }), ...restProps, touchable: true, visible: active, onVisibleChange: handleVisibleChange, children: children }));
29
31
  };
30
32
  Dropdown.Item = item.default;
31
33
 
34
+ exports.DropdownCloseCtx = DropdownCloseCtx;
32
35
  exports.default = Dropdown;
33
36
  //# sourceMappingURL=dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.js","sources":["../../../../packages/components/dropdown/dropdown.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport List from \"../list\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IDropdown } from \"./type\";\n\nconst Dropdown = (props: IDropdown) => {\n\tconst { visible, width, content, children, ...restProps } = props;\n\tconst [active, setActive] = useState(visible);\n\n\tif (!content) {\n\t\treturn children;\n\t}\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tsetActive(v);\n\t\tif (props.onVisibleChange) {\n\t\t\tprops.onVisibleChange(v);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tsetActive(visible);\n\t}, [visible]);\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tcontent={\n\t\t\t\t<List\n\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\tstyle={{ minWidth: width }}\n\t\t\t\t>\n\t\t\t\t\t{typeof content === \"function\"\n\t\t\t\t\t\t? content(() => setActive(false))\n\t\t\t\t\t\t: content}\n\t\t\t\t</List>\n\t\t\t}\n\t\t\t{...restProps}\n\t\t\ttouchable\n\t\t\tvisible={active}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nDropdown.Item = Item;\n\nexport default Dropdown;\n"],"names":["useState","useEffect","_jsx","Popup","List","Item"],"mappings":";;;;;;;;;;AAOA,MAAM,QAAQ,GAAG,CAAC,KAAgB,KAAI;AACrC,IAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK;IACjE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGA,cAAQ,CAAC,OAAO,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE;AACb,QAAA,OAAO,QAAQ;IAChB;AAEA,IAAA,MAAM,mBAAmB,GAAG,CAAC,CAAU,KAAI;QAC1C,SAAS,CAAC,CAAC,CAAC;AACZ,QAAA,IAAI,KAAK,CAAC,eAAe,EAAE;AAC1B,YAAA,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QACzB;AACD,IAAA,CAAC;IAEDC,eAAS,CAAC,MAAK;QACd,SAAS,CAAC,OAAO,CAAC;AACnB,IAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAEb,IAAA,QACCC,cAAA,CAACC,aAAK,EAAA,EACL,OAAO,EAAC,OAAO,EACf,QAAQ,EAAC,QAAQ,EACjB,OAAO,EACND,cAAA,CAACE,YAAI,EAAA,EACJ,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAA,QAAA,EAEzB,OAAO,OAAO,KAAK;kBACjB,OAAO,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC;AAChC,kBAAE,OAAO,EAAA,CACJ,KAEJ,SAAS,EACb,SAAS,EAAA,IAAA,EACT,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,mBAAmB,YAEnC,QAAQ,EAAA,CACF;AAEV;AAEA,QAAQ,CAAC,IAAI,GAAGC,YAAI;;;;"}
1
+ {"version":3,"file":"dropdown.js","sources":["../../../../packages/components/dropdown/dropdown.tsx"],"sourcesContent":["import { createContext, useEffect, useState } from \"react\";\nimport List from \"../list\";\nimport Popup from \"../popup\";\nimport \"./index.css\";\nimport Item from \"./item\";\nimport { IDropdown } from \"./type\";\n\nexport const DropdownCloseCtx = createContext<(() => void) | null>(null);\n\nconst Dropdown = (props: IDropdown) => {\n\tconst { visible, width, content, children, ...restProps } = props;\n\tconst [active, setActive] = useState(visible);\n\n\tif (!content) {\n\t\treturn children;\n\t}\n\n\tconst close = () => setActive(false);\n\n\tconst handleVisibleChange = (v: boolean) => {\n\t\tsetActive(v);\n\t\tif (props.onVisibleChange) {\n\t\t\tprops.onVisibleChange(v);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tsetActive(visible);\n\t}, [visible]);\n\n\treturn (\n\t\t<Popup\n\t\t\ttrigger='click'\n\t\t\tposition='bottom'\n\t\t\tcontent={\n\t\t\t\t<DropdownCloseCtx.Provider value={close}>\n\t\t\t\t\t<List\n\t\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\t\tstyle={{ minWidth: width }}\n\t\t\t\t\t>\n\t\t\t\t\t\t{typeof content === \"function\"\n\t\t\t\t\t\t\t? content(close)\n\t\t\t\t\t\t\t: content}\n\t\t\t\t\t</List>\n\t\t\t\t</DropdownCloseCtx.Provider>\n\t\t\t}\n\t\t\t{...restProps}\n\t\t\ttouchable\n\t\t\tvisible={active}\n\t\t\tonVisibleChange={handleVisibleChange}\n\t\t>\n\t\t\t{children}\n\t\t</Popup>\n\t);\n};\n\nDropdown.Item = Item;\n\nexport default Dropdown;\n"],"names":["createContext","useState","useEffect","_jsx","Popup","List","Item"],"mappings":";;;;;;;;;;MAOa,gBAAgB,GAAGA,mBAAa,CAAsB,IAAI;AAEvE,MAAM,QAAQ,GAAG,CAAC,KAAgB,KAAI;AACrC,IAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK;IACjE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGC,cAAQ,CAAC,OAAO,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE;AACb,QAAA,OAAO,QAAQ;IAChB;IAEA,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC;AAEpC,IAAA,MAAM,mBAAmB,GAAG,CAAC,CAAU,KAAI;QAC1C,SAAS,CAAC,CAAC,CAAC;AACZ,QAAA,IAAI,KAAK,CAAC,eAAe,EAAE;AAC1B,YAAA,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QACzB;AACD,IAAA,CAAC;IAEDC,eAAS,CAAC,MAAK;QACd,SAAS,CAAC,OAAO,CAAC;AACnB,IAAA,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAEb,IAAA,QACCC,cAAA,CAACC,aAAK,IACL,OAAO,EAAC,OAAO,EACf,QAAQ,EAAC,QAAQ,EACjB,OAAO,EACND,eAAC,gBAAgB,CAAC,QAAQ,EAAA,EAAC,KAAK,EAAE,KAAK,YACtCA,cAAA,CAACE,YAAI,IACJ,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAEzB,OAAO,OAAO,KAAK;AACnB,sBAAE,OAAO,CAAC,KAAK;sBACb,OAAO,EAAA,CACJ,EAAA,CACoB,KAEzB,SAAS,EACb,SAAS,EAAA,IAAA,EACT,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,mBAAmB,YAEnC,QAAQ,EAAA,CACF;AAEV;AAEA,QAAQ,CAAC,IAAI,GAAGC,YAAI;;;;;"}
@@ -3,19 +3,35 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
6
7
  var list = require('../list/list.js');
7
8
  var popup = require('../popup/popup.js');
9
+ var dropdown = require('./dropdown.js');
8
10
 
9
11
  const { Item: ListItem } = list.default;
10
12
  const Item = (props) => {
11
- const { more, moreProps, onClick, ...restProps } = props;
12
- const Li = (jsxRuntime.jsx(ListItem, { onClick: (e) => {
13
+ const { more, moreProps, onClick, ref: itemRef, children, ...restProps } = props;
14
+ const close = react.useContext(dropdown.DropdownCloseCtx);
15
+ const liRef = react.useRef(null);
16
+ const [position, setPosition] = react.useState("right");
17
+ const { position: morePosition, onVisibleChange: moreOnVisibleChange, width: moreWidth, ...restMoreProps } = moreProps ?? {};
18
+ const effectivePosition = morePosition ?? position;
19
+ const handleVisibleChange = (v) => {
20
+ if (v && liRef.current) {
21
+ const rect = liRef.current.getBoundingClientRect();
22
+ setPosition(rect.left > window.innerWidth / 2 ? "left" : "right");
23
+ }
24
+ moreOnVisibleChange?.(v);
25
+ };
26
+ const Li = (jsxRuntime.jsx(ListItem, { ref: itemRef ?? liRef, onClick: (e) => {
13
27
  e.stopPropagation();
28
+ if (!more)
29
+ close?.();
14
30
  onClick?.(e);
15
- }, ...restProps }));
31
+ }, ...restProps, children: children }));
16
32
  if (!more)
17
33
  return Li;
18
- return (jsxRuntime.jsx(popup.default, { position: 'right', touchable: true, arrow: false, align: 'start', offset: 10, hideDelay: 240, ...moreProps, content: jsxRuntime.jsx(list.default, { className: 'i-dropdown-content', onClick: (e) => e.stopPropagation(), children: more }), children: Li }));
34
+ return (jsxRuntime.jsx(popup.default, { ...restMoreProps, position: effectivePosition, touchable: true, arrow: false, align: "start", offset: 11, hideDelay: 240, onVisibleChange: handleVisibleChange, content: jsxRuntime.jsx(list.default, { className: "i-dropdown-content", style: { minWidth: moreWidth }, onClick: (e) => e.stopPropagation(), children: more }), children: Li }));
19
35
  };
20
36
 
21
37
  exports.default = Item;
@@ -1 +1 @@
1
- {"version":3,"file":"item.js","sources":["../../../../packages/components/dropdown/item.tsx"],"sourcesContent":["import List from \"../list\";\nimport Popup from \"../popup\";\nimport { IDropItem } from \"./type\";\n\nconst { Item: ListItem } = List;\n\nconst Item = (props: IDropItem) => {\n\tconst { more, moreProps, onClick, ...restProps } = props;\n\tconst Li = (\n\t\t<ListItem\n\t\t\tonClick={(e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\tonClick?.(e);\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t/>\n\t);\n\n\tif (!more) return Li;\n\n\treturn (\n\t\t<Popup\n\t\t\tposition='right'\n\t\t\ttouchable\n\t\t\tarrow={false}\n\t\t\talign='start'\n\t\t\toffset={10}\n\t\t\thideDelay={240}\n\t\t\t{...moreProps}\n\t\t\tcontent={\n\t\t\t\t<List\n\t\t\t\t\tclassName='i-dropdown-content'\n\t\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t\t>\n\t\t\t\t\t{more}\n\t\t\t\t</List>\n\t\t\t}\n\t\t>\n\t\t\t{Li}\n\t\t</Popup>\n\t);\n};\n\nexport default Item;\n"],"names":["List","_jsx","Popup"],"mappings":";;;;;;;;AAIA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAGA,YAAI;AAE/B,MAAM,IAAI,GAAG,CAAC,KAAgB,KAAI;AACjC,IAAA,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK;IACxD,MAAM,EAAE,IACPC,cAAA,CAAC,QAAQ,EAAA,EACR,OAAO,EAAE,CAAC,CAAC,KAAI;YACd,CAAC,CAAC,eAAe,EAAE;AACnB,YAAA,OAAO,GAAG,CAAC,CAAC;AACb,QAAA,CAAC,EAAA,GACG,SAAS,EAAA,CACZ,CACF;AAED,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;IAEpB,QACCA,cAAA,CAACC,aAAK,EAAA,EACL,QAAQ,EAAC,OAAO,EAChB,SAAS,EAAA,IAAA,EACT,KAAK,EAAE,KAAK,EACZ,KAAK,EAAC,OAAO,EACb,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,GAAG,EAAA,GACV,SAAS,EACb,OAAO,EACND,cAAA,CAACD,YAAI,EAAA,EACJ,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EAAA,QAAA,EAElC,IAAI,EAAA,CACC,EAAA,QAAA,EAGP,EAAE,EAAA,CACI;AAEV;;;;"}
1
+ {"version":3,"file":"item.js","sources":["../../../../packages/components/dropdown/item.tsx"],"sourcesContent":["import { useContext, useRef, useState } from \"react\";\nimport List from \"../list\";\nimport Popup from \"../popup\";\nimport { DropdownCloseCtx } from \"./dropdown\";\nimport { IDropItem } from \"./type\";\n\nconst { Item: ListItem } = List;\n\nconst Item = (props: IDropItem) => {\n const {\n more,\n moreProps,\n onClick,\n ref: itemRef,\n children,\n ...restProps\n } = props;\n const close = useContext(DropdownCloseCtx);\n const liRef = useRef<HTMLLIElement>(null);\n const [position, setPosition] = useState<\"left\" | \"right\">(\"right\");\n\n const {\n position: morePosition,\n onVisibleChange: moreOnVisibleChange,\n width: moreWidth,\n ...restMoreProps\n } = moreProps ?? {};\n const effectivePosition = morePosition ?? position;\n\n const handleVisibleChange = (v: boolean) => {\n if (v && liRef.current) {\n const rect = liRef.current.getBoundingClientRect();\n setPosition(rect.left > window.innerWidth / 2 ? \"left\" : \"right\");\n }\n moreOnVisibleChange?.(v);\n };\n\n const Li = (\n <ListItem\n ref={itemRef ?? liRef}\n onClick={(e) => {\n e.stopPropagation();\n if (!more) close?.();\n onClick?.(e);\n }}\n {...restProps}\n >\n {children}\n </ListItem>\n );\n\n if (!more) return Li;\n\n return (\n <Popup\n {...restMoreProps}\n position={effectivePosition}\n touchable\n arrow={false}\n align=\"start\"\n offset={11}\n hideDelay={240}\n onVisibleChange={handleVisibleChange}\n content={\n <List\n className=\"i-dropdown-content\"\n style={{ minWidth: moreWidth }}\n onClick={(e) => e.stopPropagation()}\n >\n {more}\n </List>\n }\n >\n {Li}\n </Popup>\n );\n};\n\nexport default Item;\n"],"names":["List","useContext","DropdownCloseCtx","useRef","useState","_jsx","Popup"],"mappings":";;;;;;;;;;AAMA,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAGA,YAAI;AAE/B,MAAM,IAAI,GAAG,CAAC,KAAgB,KAAI;AAC9B,IAAA,MAAM,EACF,IAAI,EACJ,SAAS,EACT,OAAO,EACP,GAAG,EAAE,OAAO,EACZ,QAAQ,EACR,GAAG,SAAS,EACf,GAAG,KAAK;AACT,IAAA,MAAM,KAAK,GAAGC,gBAAU,CAACC,yBAAgB,CAAC;AAC1C,IAAA,MAAM,KAAK,GAAGC,YAAM,CAAgB,IAAI,CAAC;IACzC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGC,cAAQ,CAAmB,OAAO,CAAC;IAEnE,MAAM,EACF,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,mBAAmB,EACpC,KAAK,EAAE,SAAS,EAChB,GAAG,aAAa,EACnB,GAAG,SAAS,IAAI,EAAE;AACnB,IAAA,MAAM,iBAAiB,GAAG,YAAY,IAAI,QAAQ;AAElD,IAAA,MAAM,mBAAmB,GAAG,CAAC,CAAU,KAAI;AACvC,QAAA,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE;YACpB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE;AAClD,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC;QACrE;AACA,QAAA,mBAAmB,GAAG,CAAC,CAAC;AAC5B,IAAA,CAAC;AAED,IAAA,MAAM,EAAE,IACJC,cAAA,CAAC,QAAQ,IACL,GAAG,EAAE,OAAO,IAAI,KAAK,EACrB,OAAO,EAAE,CAAC,CAAC,KAAI;YACX,CAAC,CAAC,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI;gBAAE,KAAK,IAAI;AACpB,YAAA,OAAO,GAAG,CAAC,CAAC;AAChB,QAAA,CAAC,KACG,SAAS,EAAA,QAAA,EAEZ,QAAQ,EAAA,CACF,CACd;AAED,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;AAEpB,IAAA,QACIA,cAAA,CAACC,aAAK,EAAA,EAAA,GACE,aAAa,EACjB,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAA,IAAA,EACT,KAAK,EAAE,KAAK,EACZ,KAAK,EAAC,OAAO,EACb,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,GAAG,EACd,eAAe,EAAE,mBAAmB,EACpC,OAAO,EACHD,cAAA,CAACL,YAAI,EAAA,EACD,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAC9B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EAAA,QAAA,EAElC,IAAI,EAAA,CACF,EAAA,QAAA,EAGV,EAAE,EAAA,CACC;AAEhB;;;;"}
@@ -32,7 +32,13 @@ const Editor = (props) => {
32
32
  const [memtionRect, setMemtionRect] = react.useState(null);
33
33
  const [memtionKeyword, setMemtionKeyword] = react.useState("");
34
34
  const [memtionActiveIndex, setMemtionActiveIndex] = react.useState(0);
35
- const memtionOptions = react.useMemo(() => memtion.filterMemtionOptions(memtion$1?.options ?? [], memtionKeyword), [memtion$1?.options, memtionKeyword]);
35
+ const [activeMemtionIndex, setActiveMemtionIndex] = react.useState(-1);
36
+ const memtionOptions = react.useMemo(() => {
37
+ if (activeMemtionIndex < 0 || !memtion$1?.length)
38
+ return [];
39
+ const active = memtion$1?.[activeMemtionIndex];
40
+ return memtion.filterMemtionOptions(active?.options ?? [], memtionKeyword);
41
+ }, [memtion$1, memtionKeyword, activeMemtionIndex]);
36
42
  const sanitizeValue = (nextValue) => {
37
43
  if (isPlaintextMode) {
38
44
  return nextValue === "\n" ? "" : nextValue;
@@ -87,18 +93,20 @@ const Editor = (props) => {
87
93
  setMemtionRect(null);
88
94
  setMemtionKeyword("");
89
95
  setMemtionActiveIndex(0);
96
+ setActiveMemtionIndex(-1);
90
97
  };
91
98
  const syncEditorState = () => {
92
99
  selectionRef.current = null;
93
100
  hideMemtion();
94
101
  };
95
102
  const insertMemtion = (option) => {
103
+ const activeMemtion = memtion$1?.[activeMemtionIndex];
96
104
  const replaceRange = memtion.getMemtionReplaceRange(memtionTriggerRangeRef.current, selectionRef.current);
97
105
  const range = memtion.insertMemtionOption({
98
106
  editor: editorRef.current,
99
107
  range: replaceRange,
100
108
  mode,
101
- memtion: memtion$1,
109
+ memtion: activeMemtion,
102
110
  option,
103
111
  sanitizeValue,
104
112
  });
@@ -134,7 +142,6 @@ const Editor = (props) => {
134
142
  editorRef.current?.dispatchEvent(new Event("input", { bubbles: true }));
135
143
  return;
136
144
  }
137
- const memtionKey = memtion$1?.key ?? "@";
138
145
  if (memtionVisible && e.key === " ") {
139
146
  hideMemtion();
140
147
  }
@@ -154,11 +161,15 @@ const Editor = (props) => {
154
161
  return;
155
162
  }
156
163
  }
157
- if (memtion$1 && e.key === memtionKey) {
158
- rememberSelection();
159
- memtionTriggerRangeRef.current =
160
- selectionRef.current?.cloneRange() ?? null;
161
- pendingMemtionRef.current = true;
164
+ if (memtion$1?.length) {
165
+ const matchedIndex = memtion$1.findIndex((m) => e.key === m.key);
166
+ if (matchedIndex >= 0) {
167
+ rememberSelection();
168
+ memtionTriggerRangeRef.current =
169
+ selectionRef.current?.cloneRange() ?? null;
170
+ pendingMemtionRef.current = true;
171
+ setActiveMemtionIndex(matchedIndex);
172
+ }
162
173
  }
163
174
  switch (e.key) {
164
175
  case "Tab":
@@ -206,8 +217,13 @@ const Editor = (props) => {
206
217
  setEditorValue(nextValue);
207
218
  }
208
219
  rememberSelection();
209
- if (memtion$1 && (pendingMemtionRef.current || memtionVisible)) {
210
- const memtionKey = memtion$1?.key ?? "@";
220
+ if (activeMemtionIndex >= 0 && (pendingMemtionRef.current || memtionVisible)) {
221
+ const active = memtion$1?.[activeMemtionIndex];
222
+ if (!active) {
223
+ hideMemtion();
224
+ return;
225
+ }
226
+ const memtionKey = active.key ?? "@";
211
227
  const memtionText = memtion.getMemtionText(memtionTriggerRangeRef.current, selectionRef.current);
212
228
  if (!memtionText.startsWith(memtionKey) || /\s/.test(memtionText)) {
213
229
  hideMemtion();
@@ -262,7 +278,7 @@ const Editor = (props) => {
262
278
  ...style,
263
279
  [autosize ? "minHeight" : "height"]: height,
264
280
  width,
265
- }, children: [!hideControl && (jsxRuntime.jsx("div", { className: "i-editor-controls", children: controls$1 })), memtion$1 && (jsxRuntime.jsx(memtion.default, { visible: memtionVisible, rect: memtionRect, options: memtionOptions, activeIndex: memtionActiveIndex, onActiveChange: setMemtionActiveIndex, onSelect: insertMemtion })), jsxRuntime.jsx("div", { ref: handleRef, className: "i-editor-content", "data-placeholder": placeholder, contentEditable: isPlaintextMode ? "plaintext-only" : true, onFocus: handleFocus, onBlur: handleBlur, onMouseUp: handleMouseUp, onPaste: handlePaste, onInput: handleInput, onKeyUp: handleKeyUp, onKeyDown: handleKeyDown, ...restProps })] }));
281
+ }, children: [!hideControl && (jsxRuntime.jsx("div", { className: "i-editor-controls", children: controls$1 })), memtion$1?.length && (jsxRuntime.jsx(memtion.default, { visible: memtionVisible, rect: memtionRect, options: memtionOptions, activeIndex: memtionActiveIndex, onActiveChange: setMemtionActiveIndex, onSelect: insertMemtion })), jsxRuntime.jsx("div", { ref: handleRef, className: "i-editor-content", "data-placeholder": placeholder, contentEditable: isPlaintextMode ? "plaintext-only" : true, onFocus: handleFocus, onBlur: handleBlur, onMouseUp: handleMouseUp, onPaste: handlePaste, onInput: handleInput, onKeyUp: handleKeyUp, onKeyDown: handleKeyDown, ...restProps })] }));
266
282
  };
267
283
 
268
284
  exports.default = Editor;
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","sources":["../../../../packages/components/editor/editor.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport Memtion, {\n filterMemtionOptions,\n getMemtionReplaceRange,\n getMemtionText,\n getSelectionRect,\n insertMemtionOption,\n removeAdjacentMemtionTag,\n sanitizePlaintextOnMemtionHtml,\n} from \"./memtion\";\nimport { IEditor, IEditorMemtionOption } from \"./type\";\n\nconst controlBtnProps: IButton = {\n square: true,\n flat: true,\n size: \"small\",\n};\n\nconst Editor = (props: IEditor) => {\n const {\n ref,\n value = \"\",\n width,\n height = \"10em\",\n placeholder,\n autosize,\n border = true,\n mode = \"rich\",\n hideControl,\n addtionControls,\n memtion,\n className,\n style,\n onChange,\n onEnter,\n onFocus,\n onBlur,\n onPaste,\n onMouseUp,\n onKeyUp,\n onKeyDown,\n ...restProps\n } = props;\n const editorRef = useRef<HTMLDivElement>(null);\n const selectionRef = useRef<Range | null>(null);\n const memtionTriggerRangeRef = useRef<Range | null>(null);\n const pendingMemtionRef = useRef(false);\n const isPlaintextMode = mode === \"plaintext\";\n const isRichMode = mode === \"rich\";\n const isPlaintextOnMemtionMode = mode === \"plaintextOnMemtion\";\n const [memtionVisible, setMemtionVisible] = useState(false);\n const [memtionRect, setMemtionRect] = useState<DOMRect | null>(null);\n const [memtionKeyword, setMemtionKeyword] = useState(\"\");\n const [memtionActiveIndex, setMemtionActiveIndex] = useState(0);\n const memtionOptions = useMemo(\n () => filterMemtionOptions(memtion?.options ?? [], memtionKeyword),\n [memtion?.options, memtionKeyword],\n );\n\n const sanitizeValue = (nextValue: string) => {\n if (isPlaintextMode) {\n return nextValue === \"\\n\" ? \"\" : nextValue;\n }\n\n const safeHtml = isPlaintextOnMemtionMode\n ? sanitizePlaintextOnMemtionHtml(xss(nextValue, xssOptions))\n : xss(nextValue, xssOptions);\n\n return safeHtml === \"<br>\" ? \"\" : safeHtml;\n };\n\n const syncHeight = () => {\n if (autosize && editorRef.current) {\n editorRef.current.style.height = `${editorRef.current.scrollHeight}px`;\n }\n };\n\n const rememberSelection = () => {\n if (!editorRef.current) return;\n\n const selection = window.getSelection();\n if (!selection?.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n const container = range.commonAncestorContainer;\n const parent =\n container.nodeType === Node.ELEMENT_NODE\n ? (container as Element)\n : container.parentElement;\n\n if (!parent || !editorRef.current.contains(parent)) return;\n\n selectionRef.current = range.cloneRange();\n };\n\n const setEditorValue = (nextValue: string) => {\n if (!editorRef.current) return;\n\n const safeValue = sanitizeValue(nextValue);\n\n if (isPlaintextMode) {\n editorRef.current.textContent = safeValue;\n return;\n }\n\n editorRef.current.innerHTML = safeValue;\n };\n\n const getEditorValue = (sanitize = false) => {\n const nextValue = !editorRef.current\n ? \"\"\n : isPlaintextMode\n ? (editorRef.current.textContent ?? \"\")\n : editorRef.current.innerHTML;\n\n return sanitize ? sanitizeValue(nextValue) : nextValue;\n };\n\n const hideMemtion = () => {\n pendingMemtionRef.current = false;\n memtionTriggerRangeRef.current = null;\n setMemtionVisible(false);\n setMemtionRect(null);\n setMemtionKeyword(\"\");\n setMemtionActiveIndex(0);\n };\n\n const syncEditorState = () => {\n selectionRef.current = null;\n hideMemtion();\n };\n\n const insertMemtion = (option: IEditorMemtionOption) => {\n const replaceRange = getMemtionReplaceRange(\n memtionTriggerRangeRef.current,\n selectionRef.current,\n );\n\n const range = insertMemtionOption({\n editor: editorRef.current,\n range: replaceRange,\n mode,\n memtion,\n option,\n sanitizeValue,\n });\n\n if (!range || !editorRef.current) return;\n\n selectionRef.current = range.cloneRange();\n hideMemtion();\n editorRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\n };\n\n const handlePaste = (e) => {\n onPaste?.(e);\n\n if (e.defaultPrevented) return;\n\n e.preventDefault();\n\n const html = e.clipboardData.getData(\"text/html\");\n const text = e.clipboardData.getData(\"text/plain\");\n const pasteValue = isPlaintextMode\n ? text\n : html\n ? sanitizeValue(html)\n : text;\n\n exec(isPlaintextMode ? \"insertText\" : \"insertHTML\", false, pasteValue);\n };\n\n const handleKeyDown = (e) => {\n onKeyDown?.(e);\n\n if (e.defaultPrevented) return;\n\n if (\n !isPlaintextMode &&\n (e.key === \"Backspace\" || e.key === \"Delete\") &&\n removeAdjacentMemtionTag(editorRef.current, e.key)\n ) {\n e.preventDefault();\n rememberSelection();\n editorRef.current?.dispatchEvent(\n new Event(\"input\", { bubbles: true }),\n );\n return;\n }\n\n const memtionKey = memtion?.key ?? \"@\";\n if (memtionVisible && e.key === \" \") {\n hideMemtion();\n }\n\n if (memtionVisible && memtionOptions.length) {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setMemtionActiveIndex((index) =>\n index + 1 >= memtionOptions.length ? 0 : index + 1,\n );\n return;\n case \"ArrowUp\":\n e.preventDefault();\n setMemtionActiveIndex((index) =>\n index - 1 < 0 ? memtionOptions.length - 1 : index - 1,\n );\n return;\n case \"Enter\":\n e.preventDefault();\n insertMemtion(memtionOptions[memtionActiveIndex]);\n return;\n default:\n break;\n }\n }\n\n if (memtion && e.key === memtionKey) {\n rememberSelection();\n memtionTriggerRangeRef.current =\n selectionRef.current?.cloneRange() ?? null;\n pendingMemtionRef.current = true;\n }\n\n switch (e.key) {\n case \"Tab\":\n e.preventDefault();\n exec(\n isRichMode ? \"insertHTML\" : \"insertText\",\n false,\n isRichMode ? \"&#09;\" : \"\\t\",\n );\n break;\n case \"Enter\":\n if (e.shiftKey) {\n break;\n }\n if (!onEnter) break;\n e.preventDefault();\n onEnter(e);\n break;\n default:\n break;\n }\n };\n\n useEffect(() => {\n if (!editorRef.current) return;\n const nextValue = sanitizeValue(value);\n if (getEditorValue(true) === nextValue) return;\n\n setEditorValue(nextValue);\n syncEditorState();\n syncHeight();\n }, [autosize, mode, value]);\n\n useEffect(() => {\n if (!memtionOptions.length) {\n setMemtionActiveIndex(0);\n return;\n }\n\n setMemtionActiveIndex((index) =>\n index >= memtionOptions.length ? 0 : index,\n );\n }, [memtionOptions]);\n\n const handleInput = (e) => {\n const rawValue = getEditorValue();\n let nextValue = sanitizeValue(rawValue);\n\n if (\n isPlaintextOnMemtionMode &&\n rawValue !== nextValue &&\n editorRef.current\n ) {\n setEditorValue(nextValue);\n }\n\n if (!nextValue && rawValue && editorRef.current) {\n nextValue = \"\";\n setEditorValue(nextValue);\n }\n\n rememberSelection();\n\n if (memtion && (pendingMemtionRef.current || memtionVisible)) {\n const memtionKey = memtion?.key ?? \"@\";\n const memtionText = getMemtionText(\n memtionTriggerRangeRef.current,\n selectionRef.current,\n );\n\n if (!memtionText.startsWith(memtionKey) || /\\s/.test(memtionText)) {\n hideMemtion();\n } else {\n const keyword = memtionText.slice(memtionKey.length);\n pendingMemtionRef.current = false;\n setMemtionRect(getSelectionRect(selectionRef.current));\n setMemtionKeyword(keyword);\n setMemtionActiveIndex(0);\n setMemtionVisible(true);\n }\n }\n\n syncHeight();\n\n onChange?.(nextValue, e);\n };\n\n const handleFocus = (e) => {\n rememberSelection();\n onFocus?.(e);\n };\n\n const handleBlur = (e) => {\n hideMemtion();\n onBlur?.(e);\n };\n\n const handleMouseUp = (e) => {\n rememberSelection();\n onMouseUp?.(e);\n };\n\n const handleKeyUp = (e) => {\n rememberSelection();\n onKeyUp?.(e);\n };\n\n const handleRef = (node: HTMLDivElement | null) => {\n editorRef.current = node;\n\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n\n if (ref) {\n ref.current = node;\n }\n };\n\n const getSelection = useCallback(\n () => selectionRef.current?.cloneRange() ?? null,\n [],\n );\n\n const controls = useMemo(\n () =>\n getControls({\n controlBtnProps,\n addtionControls,\n getSelection,\n }),\n [addtionControls, getSelection],\n );\n\n return (\n <div\n className={classNames(\"i-editor\", className, {\n \"i-editor-borderless\": !border,\n })}\n style={{\n ...style,\n [autosize ? \"minHeight\" : \"height\"]: height,\n width,\n }}\n >\n {!hideControl && (\n <div className=\"i-editor-controls\">{controls}</div>\n )}\n\n {memtion && (\n <Memtion\n visible={memtionVisible}\n rect={memtionRect}\n options={memtionOptions}\n activeIndex={memtionActiveIndex}\n onActiveChange={setMemtionActiveIndex}\n onSelect={insertMemtion}\n />\n )}\n\n <div\n ref={handleRef}\n className=\"i-editor-content\"\n data-placeholder={placeholder}\n contentEditable={isPlaintextMode ? \"plaintext-only\" : true}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onPaste={handlePaste}\n onInput={handleInput}\n onKeyUp={handleKeyUp}\n onKeyDown={handleKeyDown}\n {...restProps}\n />\n </div>\n );\n};\n\nexport default Editor;\n"],"names":["memtion","useRef","useState","useMemo","filterMemtionOptions","sanitizePlaintextOnMemtionHtml","xss","xssOptions","getMemtionReplaceRange","insertMemtionOption","exec","removeAdjacentMemtionTag","useEffect","getMemtionText","getSelectionRect","useCallback","controls","getControls","_jsxs","classNames","_jsx","Memtion"],"mappings":"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"}
1
+ {"version":3,"file":"editor.js","sources":["../../../../packages/components/editor/editor.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport xss from \"xss\";\nimport { IButton } from \"../button/type\";\nimport getControls, { exec, xssOptions } from \"./controls\";\nimport \"./index.css\";\nimport Memtion, {\n filterMemtionOptions,\n getMemtionReplaceRange,\n getMemtionText,\n getSelectionRect,\n insertMemtionOption,\n removeAdjacentMemtionTag,\n sanitizePlaintextOnMemtionHtml,\n} from \"./memtion\";\nimport { IEditor, IEditorMemtionOption } from \"./type\";\n\nconst controlBtnProps: IButton = {\n square: true,\n flat: true,\n size: \"small\",\n};\n\nconst Editor = (props: IEditor) => {\n const {\n ref,\n value = \"\",\n width,\n height = \"10em\",\n placeholder,\n autosize,\n border = true,\n mode = \"rich\",\n hideControl,\n addtionControls,\n memtion,\n className,\n style,\n onChange,\n onEnter,\n onFocus,\n onBlur,\n onPaste,\n onMouseUp,\n onKeyUp,\n onKeyDown,\n ...restProps\n } = props;\n const editorRef = useRef<HTMLDivElement>(null);\n const selectionRef = useRef<Range | null>(null);\n const memtionTriggerRangeRef = useRef<Range | null>(null);\n const pendingMemtionRef = useRef(false);\n const isPlaintextMode = mode === \"plaintext\";\n const isRichMode = mode === \"rich\";\n const isPlaintextOnMemtionMode = mode === \"plaintextOnMemtion\";\n const [memtionVisible, setMemtionVisible] = useState(false);\n const [memtionRect, setMemtionRect] = useState<DOMRect | null>(null);\n const [memtionKeyword, setMemtionKeyword] = useState(\"\");\n const [memtionActiveIndex, setMemtionActiveIndex] = useState(0);\n const [activeMemtionIndex, setActiveMemtionIndex] = useState(-1);\n const memtionOptions = useMemo(\n () => {\n if (activeMemtionIndex < 0 || !memtion?.length) return [];\n const active = memtion?.[activeMemtionIndex];\n return filterMemtionOptions(active?.options ?? [], memtionKeyword);\n },\n [memtion, memtionKeyword, activeMemtionIndex],\n );\n\n const sanitizeValue = (nextValue: string) => {\n if (isPlaintextMode) {\n return nextValue === \"\\n\" ? \"\" : nextValue;\n }\n\n const safeHtml = isPlaintextOnMemtionMode\n ? sanitizePlaintextOnMemtionHtml(xss(nextValue, xssOptions))\n : xss(nextValue, xssOptions);\n\n return safeHtml === \"<br>\" ? \"\" : safeHtml;\n };\n\n const syncHeight = () => {\n if (autosize && editorRef.current) {\n editorRef.current.style.height = `${editorRef.current.scrollHeight}px`;\n }\n };\n\n const rememberSelection = () => {\n if (!editorRef.current) return;\n\n const selection = window.getSelection();\n if (!selection?.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n const container = range.commonAncestorContainer;\n const parent =\n container.nodeType === Node.ELEMENT_NODE\n ? (container as Element)\n : container.parentElement;\n\n if (!parent || !editorRef.current.contains(parent)) return;\n\n selectionRef.current = range.cloneRange();\n };\n\n const setEditorValue = (nextValue: string) => {\n if (!editorRef.current) return;\n\n const safeValue = sanitizeValue(nextValue);\n\n if (isPlaintextMode) {\n editorRef.current.textContent = safeValue;\n return;\n }\n\n editorRef.current.innerHTML = safeValue;\n };\n\n const getEditorValue = (sanitize = false) => {\n const nextValue = !editorRef.current\n ? \"\"\n : isPlaintextMode\n ? (editorRef.current.textContent ?? \"\")\n : editorRef.current.innerHTML;\n\n return sanitize ? sanitizeValue(nextValue) : nextValue;\n };\n\n const hideMemtion = () => {\n pendingMemtionRef.current = false;\n memtionTriggerRangeRef.current = null;\n setMemtionVisible(false);\n setMemtionRect(null);\n setMemtionKeyword(\"\");\n setMemtionActiveIndex(0);\n setActiveMemtionIndex(-1);\n };\n\n const syncEditorState = () => {\n selectionRef.current = null;\n hideMemtion();\n };\n\n const insertMemtion = (option: IEditorMemtionOption) => {\n const activeMemtion = memtion?.[activeMemtionIndex];\n const replaceRange = getMemtionReplaceRange(\n memtionTriggerRangeRef.current,\n selectionRef.current,\n );\n\n const range = insertMemtionOption({\n editor: editorRef.current,\n range: replaceRange,\n mode,\n memtion: activeMemtion,\n option,\n sanitizeValue,\n });\n\n if (!range || !editorRef.current) return;\n\n selectionRef.current = range.cloneRange();\n hideMemtion();\n editorRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\n };\n\n const handlePaste = (e) => {\n onPaste?.(e);\n\n if (e.defaultPrevented) return;\n\n e.preventDefault();\n\n const html = e.clipboardData.getData(\"text/html\");\n const text = e.clipboardData.getData(\"text/plain\");\n const pasteValue = isPlaintextMode\n ? text\n : html\n ? sanitizeValue(html)\n : text;\n\n exec(isPlaintextMode ? \"insertText\" : \"insertHTML\", false, pasteValue);\n };\n\n const handleKeyDown = (e) => {\n onKeyDown?.(e);\n\n if (e.defaultPrevented) return;\n\n if (\n !isPlaintextMode &&\n (e.key === \"Backspace\" || e.key === \"Delete\") &&\n removeAdjacentMemtionTag(editorRef.current, e.key)\n ) {\n e.preventDefault();\n rememberSelection();\n editorRef.current?.dispatchEvent(\n new Event(\"input\", { bubbles: true }),\n );\n return;\n }\n\n if (memtionVisible && e.key === \" \") {\n hideMemtion();\n }\n\n if (memtionVisible && memtionOptions.length) {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setMemtionActiveIndex((index) =>\n index + 1 >= memtionOptions.length ? 0 : index + 1,\n );\n return;\n case \"ArrowUp\":\n e.preventDefault();\n setMemtionActiveIndex((index) =>\n index - 1 < 0 ? memtionOptions.length - 1 : index - 1,\n );\n return;\n case \"Enter\":\n e.preventDefault();\n insertMemtion(memtionOptions[memtionActiveIndex]);\n return;\n default:\n break;\n }\n }\n\n if (memtion?.length) {\n const matchedIndex = memtion.findIndex((m) => e.key === m.key);\n if (matchedIndex >= 0) {\n rememberSelection();\n memtionTriggerRangeRef.current =\n selectionRef.current?.cloneRange() ?? null;\n pendingMemtionRef.current = true;\n setActiveMemtionIndex(matchedIndex);\n }\n }\n\n switch (e.key) {\n case \"Tab\":\n e.preventDefault();\n exec(\n isRichMode ? \"insertHTML\" : \"insertText\",\n false,\n isRichMode ? \"&#09;\" : \"\\t\",\n );\n break;\n case \"Enter\":\n if (e.shiftKey) {\n break;\n }\n if (!onEnter) break;\n e.preventDefault();\n onEnter(e);\n break;\n default:\n break;\n }\n };\n\n useEffect(() => {\n if (!editorRef.current) return;\n const nextValue = sanitizeValue(value);\n if (getEditorValue(true) === nextValue) return;\n\n setEditorValue(nextValue);\n syncEditorState();\n syncHeight();\n }, [autosize, mode, value]);\n\n useEffect(() => {\n if (!memtionOptions.length) {\n setMemtionActiveIndex(0);\n return;\n }\n\n setMemtionActiveIndex((index) =>\n index >= memtionOptions.length ? 0 : index,\n );\n }, [memtionOptions]);\n\n const handleInput = (e) => {\n const rawValue = getEditorValue();\n let nextValue = sanitizeValue(rawValue);\n\n if (\n isPlaintextOnMemtionMode &&\n rawValue !== nextValue &&\n editorRef.current\n ) {\n setEditorValue(nextValue);\n }\n\n if (!nextValue && rawValue && editorRef.current) {\n nextValue = \"\";\n setEditorValue(nextValue);\n }\n\n rememberSelection();\n\n if (activeMemtionIndex >= 0 && (pendingMemtionRef.current || memtionVisible)) {\n const active = memtion?.[activeMemtionIndex];\n if (!active) { hideMemtion(); return; }\n const memtionKey = active.key ?? \"@\";\n const memtionText = getMemtionText(\n memtionTriggerRangeRef.current,\n selectionRef.current,\n );\n\n if (!memtionText.startsWith(memtionKey) || /\\s/.test(memtionText)) {\n hideMemtion();\n } else {\n const keyword = memtionText.slice(memtionKey.length);\n pendingMemtionRef.current = false;\n setMemtionRect(getSelectionRect(selectionRef.current));\n setMemtionKeyword(keyword);\n setMemtionActiveIndex(0);\n setMemtionVisible(true);\n }\n }\n\n syncHeight();\n\n onChange?.(nextValue, e);\n };\n\n const handleFocus = (e) => {\n rememberSelection();\n onFocus?.(e);\n };\n\n const handleBlur = (e) => {\n hideMemtion();\n onBlur?.(e);\n };\n\n const handleMouseUp = (e) => {\n rememberSelection();\n onMouseUp?.(e);\n };\n\n const handleKeyUp = (e) => {\n rememberSelection();\n onKeyUp?.(e);\n };\n\n const handleRef = (node: HTMLDivElement | null) => {\n editorRef.current = node;\n\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n\n if (ref) {\n ref.current = node;\n }\n };\n\n const getSelection = useCallback(\n () => selectionRef.current?.cloneRange() ?? null,\n [],\n );\n\n const controls = useMemo(\n () =>\n getControls({\n controlBtnProps,\n addtionControls,\n getSelection,\n }),\n [addtionControls, getSelection],\n );\n\n return (\n <div\n className={classNames(\"i-editor\", className, {\n \"i-editor-borderless\": !border,\n })}\n style={{\n ...style,\n [autosize ? \"minHeight\" : \"height\"]: height,\n width,\n }}\n >\n {!hideControl && (\n <div className=\"i-editor-controls\">{controls}</div>\n )}\n\n {memtion?.length && (\n <Memtion\n visible={memtionVisible}\n rect={memtionRect}\n options={memtionOptions}\n activeIndex={memtionActiveIndex}\n onActiveChange={setMemtionActiveIndex}\n onSelect={insertMemtion}\n />\n )}\n\n <div\n ref={handleRef}\n className=\"i-editor-content\"\n data-placeholder={placeholder}\n contentEditable={isPlaintextMode ? \"plaintext-only\" : true}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onPaste={handlePaste}\n onInput={handleInput}\n onKeyUp={handleKeyUp}\n onKeyDown={handleKeyDown}\n {...restProps}\n />\n </div>\n );\n};\n\nexport default Editor;\n"],"names":["memtion","useRef","useState","useMemo","filterMemtionOptions","sanitizePlaintextOnMemtionHtml","xss","xssOptions","getMemtionReplaceRange","insertMemtionOption","exec","removeAdjacentMemtionTag","useEffect","getMemtionText","getSelectionRect","useCallback","controls","getControls","_jsxs","classNames","_jsx","Memtion"],"mappings":"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"}
@@ -11,14 +11,15 @@ var classNames__default = /*#__PURE__*/_interopDefaultCompat(classNames);
11
11
 
12
12
  const Loading = (props) => {
13
13
  const { icon, text, size, absolute, style, className, ...restProps } = props;
14
+ const iconSize = size != null
15
+ ? { fontSize: typeof size === "number" ? `${size}px` : size }
16
+ : undefined;
14
17
  return (jsxRuntime.jsxs("div", { className: classNames__default("i-loading-container", {
15
18
  absolute,
16
19
  }, className), style: {
17
20
  ...style,
18
21
  inset: absolute ? 0 : "unset",
19
- }, ...restProps, children: [icon ?? (jsxRuntime.jsx("svg", { width: '24', height: '24', stroke: '#000', viewBox: '0 0 24 24', xmlns: 'http://www.w3.org/2000/svg', className: 'i-loading-icon', style: {
20
- fontSize: size,
21
- }, children: jsxRuntime.jsx("circle", { cx: '12', cy: '12', r: '9.5', fill: 'none', strokeWidth: '3', strokeLinecap: 'round', strokeDasharray: 40, strokeDashoffset: 0 }) })), text] }));
22
+ }, ...restProps, children: [icon ?? jsxRuntime.jsx("span", { className: "i-loading-icon", style: iconSize }), text] }));
22
23
  };
23
24
 
24
25
  exports.default = Loading;
@@ -1 +1 @@
1
- {"version":3,"file":"loading.js","sources":["../../../../packages/components/loading/loading.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n\tconst { icon, text, size, absolute, style, className, ...restProps } =\n\t\tprops;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={classNames(\n\t\t\t\t\"i-loading-container\",\n\t\t\t\t{\n\t\t\t\t\tabsolute,\n\t\t\t\t},\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tstyle={{\n\t\t\t\t...style,\n\t\t\t\tinset: absolute ? 0 : \"unset\",\n\t\t\t}}\n\t\t\t{...restProps}\n\t\t>\n\t\t\t{icon ?? (\n\t\t\t\t<svg\n\t\t\t\t\twidth='24'\n\t\t\t\t\theight='24'\n\t\t\t\t\tstroke='#000'\n\t\t\t\t\tviewBox='0 0 24 24'\n\t\t\t\t\txmlns='http://www.w3.org/2000/svg'\n\t\t\t\t\tclassName='i-loading-icon'\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontSize: size,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<circle\n\t\t\t\t\t\tcx='12'\n\t\t\t\t\t\tcy='12'\n\t\t\t\t\t\tr='9.5'\n\t\t\t\t\t\tfill='none'\n\t\t\t\t\t\tstrokeWidth='3'\n\t\t\t\t\t\tstrokeLinecap='round'\n\t\t\t\t\t\tstrokeDasharray={40}\n\t\t\t\t\t\tstrokeDashoffset={0}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t)}\n\n\t\t\t{text}\n\t\t</div>\n\t);\n};\n\nexport default Loading;\n"],"names":["_jsxs","classNames","_jsx"],"mappings":";;;;;;;;;;;AAIA,MAAM,OAAO,GAAG,CAAC,KAAe,KAAI;AACnC,IAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GACnE,KAAK;AAEN,IAAA,QACCA,eAAA,CAAA,KAAA,EAAA,EACC,SAAS,EAAEC,mBAAU,CACpB,qBAAqB,EACrB;YACC,QAAQ;AACR,SAAA,EACD,SAAS,CACT,EACD,KAAK,EAAE;AACN,YAAA,GAAG,KAAK;YACR,KAAK,EAAE,QAAQ,GAAG,CAAC,GAAG,OAAO;AAC7B,SAAA,EAAA,GACG,SAAS,EAAA,QAAA,EAAA,CAEZ,IAAI,KACJC,cAAA,CAAA,KAAA,EAAA,EACC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE;AACN,oBAAA,QAAQ,EAAE,IAAI;AACd,iBAAA,EAAA,QAAA,EAEDA,2BACC,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,IAAI,EACP,CAAC,EAAC,KAAK,EACP,IAAI,EAAC,MAAM,EACX,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,eAAe,EAAE,EAAE,EACnB,gBAAgB,EAAE,CAAC,GAClB,EAAA,CACG,CACN,EAEA,IAAI,CAAA,EAAA,CACA;AAER;;;;"}
1
+ {"version":3,"file":"loading.js","sources":["../../../../packages/components/loading/loading.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport \"./index.css\";\nimport { ILoading } from \"./type\";\n\nconst Loading = (props: ILoading) => {\n const { icon, text, size, absolute, style, className, ...restProps } =\n props;\n const iconSize = size != null\n ? { fontSize: typeof size === \"number\" ? `${size}px` : size }\n : undefined;\n\n return (\n <div\n className={classNames(\n \"i-loading-container\",\n {\n absolute,\n },\n className,\n )}\n style={{\n ...style,\n inset: absolute ? 0 : \"unset\",\n }}\n {...restProps}\n >\n {icon ?? <span className=\"i-loading-icon\" style={iconSize}></span>}\n\n {text}\n </div>\n );\n};\n\nexport default Loading;\n"],"names":["_jsxs","classNames","_jsx"],"mappings":";;;;;;;;;;;AAIA,MAAM,OAAO,GAAG,CAAC,KAAe,KAAI;AAChC,IAAA,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAChE,KAAK;AACT,IAAA,MAAM,QAAQ,GAAG,IAAI,IAAI;AACrB,UAAE,EAAE,QAAQ,EAAE,OAAO,IAAI,KAAK,QAAQ,GAAG,GAAG,IAAI,CAAA,EAAA,CAAI,GAAG,IAAI;UACzD,SAAS;AAEf,IAAA,QACIA,eAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAEC,mBAAU,CACjB,qBAAqB,EACrB;YACI,QAAQ;AACX,SAAA,EACD,SAAS,CACZ,EACD,KAAK,EAAE;AACH,YAAA,GAAG,KAAK;YACR,KAAK,EAAE,QAAQ,GAAG,CAAC,GAAG,OAAO;AAChC,SAAA,EAAA,GACG,SAAS,EAAA,QAAA,EAAA,CAEZ,IAAI,IAAIC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,gBAAgB,EAAC,KAAK,EAAE,QAAQ,EAAA,CAAS,EAEjE,IAAI,CAAA,EAAA,CACH;AAEd;;;;"}
@@ -33,19 +33,7 @@ function Popup(props) {
33
33
  const [show, setShow] = react.useState(false);
34
34
  const showRef = react.useRef(false);
35
35
  showRef.current = show;
36
- const latestRef = react.useRef({
37
- disabled,
38
- trigger,
39
- touchable,
40
- showDelay,
41
- hideDelay,
42
- position,
43
- gap,
44
- offset,
45
- align,
46
- fitSize,
47
- onVisibleChange,
48
- });
36
+ const latestRef = react.useRef({});
49
37
  latestRef.current = {
50
38
  disabled,
51
39
  trigger,
@@ -99,9 +87,8 @@ function Popup(props) {
99
87
  };
100
88
  const applyFitSize = () => {
101
89
  const o = latestRef.current;
102
- const triggerEl = triggerRef.current;
103
90
  const contentEl = contentRef.current;
104
- if (!triggerEl || !contentEl)
91
+ if (!contentEl)
105
92
  return;
106
93
  const vertical = ["top", "bottom"].includes(o.position);
107
94
  const key = vertical ? "width" : "height";
@@ -109,6 +96,9 @@ function Popup(props) {
109
96
  contentEl.style[key] = "";
110
97
  return;
111
98
  }
99
+ const triggerEl = triggerRef.current;
100
+ if (!triggerEl)
101
+ return;
112
102
  const size = triggerEl[vertical ? "offsetWidth" : "offsetHeight"];
113
103
  contentEl.style[key] =
114
104
  typeof size === "number" ? `${size}px` : "";
@@ -345,8 +335,8 @@ function Popup(props) {
345
335
  e.stopPropagation();
346
336
  setTriggerEl(e);
347
337
  pointRef.current = {
348
- pageX: e.pageX,
349
- pageY: e.pageY,
338
+ pageX: e.clientX,
339
+ pageY: e.clientY,
350
340
  };
351
341
  if (showRef.current) {
352
342
  ensureBaseStyle();
@@ -1 +1 @@
1
- {"version":3,"file":"popup.js","sources":["../../../../packages/components/popup/popup.tsx"],"sourcesContent":["import { debounce } from \"radash\";\nimport {\n\tChildren,\n\tMouseEvent,\n\tRef,\n\tcloneElement,\n\tisValidElement,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\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\nconst REACT_FORWARD_REF = Symbol.for(\"react.forward_ref\");\nconst REACT_FRAGMENT = Symbol.for(\"react.fragment\");\n\nconst canAttachRef = (el: any) => {\n\tif (!isValidElement(el)) return false;\n\tconst t: any = el.type;\n\tif (typeof t === \"string\") return true;\n\tif (t?.prototype?.isReactComponent) return true;\n\tif (t?.$$typeof === REACT_FORWARD_REF) return true;\n\treturn false;\n};\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\tposition = \"top\",\n\t\tshowDelay = 16,\n\t\thideDelay = 12,\n\t\ttouchable,\n\t\tarrow = true,\n\t\talign = \"center\",\n\t\tfitSize,\n\t\tdisabled,\n\t\tstyle,\n\t\tclassName,\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 afterHideTimerRef = useRef<any>(null);\n\tconst rafRef = useRef<number | null>(null);\n\n\tconst [show, setShow] = useState(false);\n\tconst showRef = useRef(false);\n\tshowRef.current = show;\n\n\tconst latestRef = useRef({\n\t\tdisabled,\n\t\ttrigger,\n\t\ttouchable,\n\t\tshowDelay,\n\t\thideDelay,\n\t\tposition,\n\t\tgap,\n\t\toffset,\n\t\talign,\n\t\tfitSize,\n\t\tonVisibleChange,\n\t});\n\tlatestRef.current = {\n\t\tdisabled,\n\t\ttrigger,\n\t\ttouchable,\n\t\tshowDelay,\n\t\thideDelay,\n\t\tposition,\n\t\tgap,\n\t\toffset,\n\t\talign,\n\t\tfitSize,\n\t\tonVisibleChange,\n\t};\n\n\tconst phaseRef = useRef<\"\" | \"showing\" | \"hiding\">(\"\");\n\tconst lastPosRef = useRef<{ left: number; top: number } | null>(null);\n\tconst lastArrowRef = useRef<{\n\t\tleft: number;\n\t\ttop: number;\n\t\ttransform: string;\n\t} | null>(null);\n\tconst arrowElRef = useRef<HTMLElement | null>(null);\n\tconst pointRef = useRef<{ pageX: number; pageY: number } | null>(null);\n\n\tconst clearTimer = () => {\n\t\tif (!timerRef.current) return;\n\t\tclearTimeout(timerRef.current);\n\t\ttimerRef.current = null;\n\t\tphaseRef.current = \"\";\n\t};\n\n\tconst clearAllTimers = () => {\n\t\tclearTimer();\n\t\tif (afterHideTimerRef.current) {\n\t\t\tclearTimeout(afterHideTimerRef.current);\n\t\t\tafterHideTimerRef.current = null;\n\t\t}\n\t\tif (rafRef.current !== null) {\n\t\t\tcancelAnimationFrame(rafRef.current);\n\t\t\trafRef.current = null;\n\t\t}\n\t};\n\n\tconst setContentVisible = (visible: boolean) => {\n\t\tconst el = contentRef.current;\n\t\tif (!el) return;\n\t\tel.style.opacity = visible ? \"1\" : \"0\";\n\t\tel.style.transform = visible ? \"none\" : \"translate(0, 2px)\";\n\t};\n\n\tconst ensureBaseStyle = () => {\n\t\tconst el = contentRef.current;\n\t\tif (!el) return;\n\t\tconst pos = \"fixed\";\n\t\tif (el.style.position !== pos) el.style.position = pos;\n\t};\n\n\tconst applyFitSize = () => {\n\t\tconst o = latestRef.current;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\n\t\tconst vertical = [\"top\", \"bottom\"].includes(o.position);\n\t\tconst key = vertical ? \"width\" : \"height\";\n\t\tif (!o.fitSize) {\n\t\t\t(contentEl.style as any)[key] = \"\";\n\t\t\treturn;\n\t\t}\n\n\t\tconst size = triggerEl[vertical ? \"offsetWidth\" : \"offsetHeight\"];\n\t\t(contentEl.style as any)[key] =\n\t\t\ttypeof size === \"number\" ? `${size}px` : \"\";\n\t};\n\n\tconst applyArrow = (arrowX: number, arrowY: number, arrowPos: string) => {\n\t\tconst contentEl = contentRef.current;\n\t\tif (!contentEl) return;\n\n\t\tconst arrowEl =\n\t\t\tarrowElRef.current ??\n\t\t\t(contentEl.querySelector(\".i-popup-arrow\") as HTMLElement | null);\n\t\tarrowElRef.current = arrowEl;\n\t\tif (!arrowEl) return;\n\n\t\tlet left = arrowX ?? 0;\n\t\tlet top = arrowY ?? 0;\n\t\tlet transform = \"\";\n\n\t\tswitch (arrowPos) {\n\t\t\tcase \"left\":\n\t\t\t\tleft += 2;\n\t\t\t\ttransform = `translate(-100%, -50%) rotate(180deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"right\":\n\t\t\t\tleft -= 2;\n\t\t\t\ttransform = `translate(0, -50%)`;\n\t\t\t\tbreak;\n\t\t\tcase \"top\":\n\t\t\t\ttop -= 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(-90deg)`;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\ttop += 2;\n\t\t\t\ttransform = `translate(-50%, -50%) rotate(90deg)`;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst prev = lastArrowRef.current;\n\t\tif (\n\t\t\tprev &&\n\t\t\tprev.left === left &&\n\t\t\tprev.top === top &&\n\t\t\tprev.transform === transform\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tlastArrowRef.current = { left, top, transform };\n\t\tarrowEl.style.left = `${left}px`;\n\t\tarrowEl.style.top = `${top}px`;\n\t\tarrowEl.style.transform = transform;\n\t};\n\n\tconst applyLeftTop = (left: number, top: number) => {\n\t\tconst contentEl = contentRef.current;\n\t\tif (!contentEl) return;\n\n\t\tconst prev = lastPosRef.current;\n\t\tif (prev && prev.left === left && prev.top === top) return;\n\n\t\tlastPosRef.current = { left, top };\n\t\tcontentEl.style.left = `${left}px`;\n\t\tcontentEl.style.top = `${top}px`;\n\t};\n\n\tconst computeRelativePosition = () => {\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\n\t\tconst o = latestRef.current;\n\t\tapplyFitSize();\n\n\t\tconst [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n\t\t\ttriggerEl,\n\t\t\tcontentEl,\n\t\t\t{\n\t\t\t\tposition: o.position,\n\t\t\t\tgap: o.gap,\n\t\t\t\toffset: o.offset,\n\t\t\t\talign: o.align,\n\t\t\t\trefWindow: true,\n\t\t\t},\n\t\t);\n\n\t\tapplyLeftTop(left, top);\n\t\tapplyArrow(arrowX, arrowY, arrowPos);\n\t};\n\n\tconst computePointPosition = () => {\n\t\tconst contentEl = contentRef.current as HTMLElement | null;\n\t\tif (!contentEl) return;\n\t\tconst point = pointRef.current;\n\t\tif (!point) return;\n\n\t\tconst [left, top] = getPointPosition(point as any, contentEl);\n\t\tapplyLeftTop(left, top);\n\t};\n\n\tconst scheduleComputePosition = () => {\n\t\tif (!showRef.current) return;\n\t\tif (rafRef.current !== null) return;\n\t\trafRef.current = requestAnimationFrame(() => {\n\t\t\trafRef.current = null;\n\t\t\tif (!showRef.current) return;\n\t\t\tensureBaseStyle();\n\n\t\t\tif (latestRef.current.trigger === \"contextmenu\") {\n\t\t\t\tcomputePointPosition();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcomputeRelativePosition();\n\t\t});\n\t};\n\n\tconst handleShow = () => {\n\t\tconst opts = latestRef.current;\n\t\tif (opts.disabled) return;\n\t\tclearAllTimers();\n\t\tif (\n\t\t\tshowRef.current &&\n\t\t\t(opts.trigger !== \"hover\" ||\n\t\t\t\t(opts.trigger === \"hover\" && !opts.touchable))\n\t\t) {\n\t\t\tensureBaseStyle();\n\t\t\tcomputeRelativePosition();\n\t\t\tsetContentVisible(true);\n\t\t\treturn;\n\t\t}\n\n\t\tphaseRef.current = \"showing\";\n\t\tif (!showRef.current) {\n\t\t\tlastPosRef.current = null;\n\t\t\tlastArrowRef.current = null;\n\t\t\tarrowElRef.current = null;\n\t\t\tsetShow(true);\n\t\t}\n\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (phaseRef.current !== \"showing\") return;\n\n\t\t\trafRef.current = requestAnimationFrame(() => {\n\t\t\t\trafRef.current = null;\n\t\t\t\tif (phaseRef.current !== \"showing\") return;\n\t\t\t\tif (!contentRef.current) return;\n\n\t\t\t\tensureBaseStyle();\n\t\t\t\tif (opts.trigger === \"contextmenu\") {\n\t\t\t\t\tcomputePointPosition();\n\t\t\t\t} else {\n\t\t\t\t\tcomputeRelativePosition();\n\t\t\t\t}\n\t\t\t\tsetContentVisible(true);\n\t\t\t\topts.onVisibleChange?.(true);\n\t\t\t\tclearTimer();\n\t\t\t\tphaseRef.current = \"\";\n\t\t\t});\n\t\t}, opts.showDelay);\n\t};\n\n\tconst handleHide = () => {\n\t\tif (!showRef.current) return;\n\n\t\tclearAllTimers();\n\t\tphaseRef.current = \"hiding\";\n\t\ttimerRef.current = setTimeout(() => {\n\t\t\tif (phaseRef.current !== \"hiding\") {\n\t\t\t\tclearTimer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetContentVisible(false);\n\n\t\t\tafterHideTimerRef.current = setTimeout(() => {\n\t\t\t\tafterHideTimerRef.current = null;\n\t\t\t\tsetShow(false);\n\t\t\t\tclearAllTimers();\n\t\t\t\tlatestRef.current.onVisibleChange?.(false);\n\t\t\t\tphaseRef.current = \"\";\n\t\t\t}, 160);\n\t\t}, latestRef.current.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\t\tshowRef.current ? handleHide() : handleShow();\n\t};\n\n\tconst hideRef = useRef(handleHide);\n\tconst toggleRef = useRef(handleToggle);\n\thideRef.current = handleHide;\n\ttoggleRef.current = handleToggle;\n\n\tconst doHide = useMemo(() => () => hideRef.current(), []);\n\tconst doToggle = useMemo(\n\t\t() => (action?: boolean) => toggleRef.current(action),\n\t\t[],\n\t);\n\n\tconst mergeRefs = useMemo(() => {\n\t\treturn (...refs: Array<Ref<HTMLElement> | undefined>) => {\n\t\t\treturn (node: HTMLElement | null) => {\n\t\t\t\tfor (const ref of refs) {\n\t\t\t\t\tif (!ref) continue;\n\t\t\t\t\tif (typeof ref === \"function\") {\n\t\t\t\t\t\tref(node);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t(ref as any).current = node;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t};\n\t}, []);\n\n\tconst triggerEvents = useMemo(() => {\n\t\tconst setTriggerEl = (e: any) => {\n\t\t\tconst el = e?.currentTarget as HTMLElement | null | undefined;\n\t\t\tif (el) triggerRef.current = el;\n\t\t};\n\n\t\tswitch (trigger) {\n\t\t\tcase \"click\":\n\t\t\t\treturn {\n\t\t\t\t\tonClick: (e: any) => {\n\t\t\t\t\t\tsetTriggerEl(e);\n\t\t\t\t\t\tdoToggle(true);\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tcase \"hover\":\n\t\t\t\treturn {\n\t\t\t\t\tonMouseEnter: (e: any) => {\n\t\t\t\t\t\tsetTriggerEl(e);\n\t\t\t\t\t\tdoToggle(true);\n\t\t\t\t\t},\n\t\t\t\t\tonMouseLeave: (e: any) => {\n\t\t\t\t\t\tsetTriggerEl(e);\n\t\t\t\t\t\tdoToggle(false);\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tcase \"focus\":\n\t\t\t\treturn {\n\t\t\t\t\tonFocus: (e: any) => {\n\t\t\t\t\t\tsetTriggerEl(e);\n\t\t\t\t\t\tdoToggle(true);\n\t\t\t\t\t},\n\t\t\t\t\tonBlur: (e: any) => {\n\t\t\t\t\t\tsetTriggerEl(e);\n\t\t\t\t\t\tdoToggle(false);\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tcase \"contextmenu\":\n\t\t\t\treturn {\n\t\t\t\t\tonContextMenu: (e: MouseEvent) => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tsetTriggerEl(e);\n\n\t\t\t\t\t\tpointRef.current = {\n\t\t\t\t\t\t\tpageX: (e as any).pageX,\n\t\t\t\t\t\t\tpageY: (e as any).pageY,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (showRef.current) {\n\t\t\t\t\t\t\tensureBaseStyle();\n\t\t\t\t\t\t\tcomputePointPosition();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tclearAllTimers();\n\t\t\t\t\t\tphaseRef.current = \"showing\";\n\t\t\t\t\t\tlastPosRef.current = null;\n\t\t\t\t\t\tlastArrowRef.current = null;\n\t\t\t\t\t\tarrowElRef.current = null;\n\t\t\t\t\t\tsetShow(true);\n\n\t\t\t\t\t\ttimerRef.current = setTimeout(() => {\n\t\t\t\t\t\t\tif (phaseRef.current !== \"showing\") return;\n\t\t\t\t\t\t\tif (!contentRef.current) return;\n\n\t\t\t\t\t\t\tensureBaseStyle();\n\t\t\t\t\t\t\tcomputePointPosition();\n\t\t\t\t\t\t\tsetContentVisible(true);\n\t\t\t\t\t\t\tclearTimer();\n\t\t\t\t\t\t\tlatestRef.current.onVisibleChange?.(true);\n\t\t\t\t\t\t\tphaseRef.current = \"\";\n\t\t\t\t\t\t}, latestRef.current.showDelay);\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\treturn {};\n\t\t}\n\t}, [doToggle]);\n\n\tconst triggerNode = useMemo(() => {\n\t\tconst events = triggerEvents as any;\n\t\tconst eventKeys = Object.keys(events);\n\t\tconst items = Children.toArray(children);\n\n\t\tlet attachedRef = false;\n\t\tlet cloned = false;\n\n\t\tconst nextItems = items.map((item) => {\n\t\t\tif (!isValidElement(item)) return item;\n\t\t\tif ((item as any).type === REACT_FRAGMENT) return item;\n\n\t\t\tconst attachRef = !attachedRef && canAttachRef(item);\n\t\t\tif (attachRef) attachedRef = true;\n\n\t\t\tif (!attachRef && eventKeys.length === 0) return item;\n\n\t\t\tconst patchedProps: Record<string, any> = {};\n\n\t\t\tfor (const evt of eventKeys) {\n\t\t\t\tconst ours = events[evt];\n\t\t\t\tconst theirs = (item.props as any)?.[evt];\n\t\t\t\tpatchedProps[evt] =\n\t\t\t\t\ttypeof theirs === \"function\"\n\t\t\t\t\t\t? (e: any) => {\n\t\t\t\t\t\t\t\tours(e);\n\t\t\t\t\t\t\t\ttheirs(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: ours;\n\t\t\t}\n\n\t\t\tif (attachRef) {\n\t\t\t\tpatchedProps.ref = mergeRefs((item as any).ref, triggerRef as any);\n\t\t\t}\n\n\t\t\tcloned = true;\n\t\t\treturn cloneElement(item as any, patchedProps);\n\t\t});\n\n\t\tif (!cloned) return children;\n\t\treturn nextItems.length === 1 ? nextItems[0] : <>{nextItems}</>;\n\t}, [children, triggerEvents, mergeRefs]);\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 { observe, unobserve, disconnect } = useResizeObserver();\n\tuseEffect(() => {\n\t\tif (!observe) return;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (triggerEl) observe(triggerEl, scheduleComputePosition);\n\t\tif (contentEl) observe(contentEl, scheduleComputePosition);\n\t\treturn () => {\n\t\t\tif (contentEl) unobserve(contentEl);\n\t\t\tif (triggerEl) unobserve(triggerEl);\n\t\t\tdisconnect();\n\t\t};\n\t}, [trigger, observe, unobserve, disconnect, show]);\n\n\tuseLayoutEffect(() => {\n\t\tif (!show) return;\n\t\tensureBaseStyle();\n\t\tif (latestRef.current.trigger === \"contextmenu\") {\n\t\t\tcomputePointPosition();\n\t\t} else {\n\t\t\tcomputeRelativePosition();\n\t\t}\n\t}, [show]);\n\n\tuseLayoutEffect(() => {\n\t\tdoToggle(visible);\n\t}, [visible]);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tclearAllTimers();\n\t\t};\n\t}, []);\n\n\tconst mouseUpHandlerRef = useRef<(e: any) => void>(() => {});\n\tmouseUpHandlerRef.current = (e) => {\n\t\tif (!showRef.current) return;\n\t\tconst triggerEl = triggerRef.current;\n\t\tconst contentEl = contentRef.current;\n\t\tif (!triggerEl || !contentEl) return;\n\t\tconst tar = e.target as HTMLElement;\n\t\tif (triggerEl.contains(tar) || contentEl.contains(tar)) return;\n\t\tdoHide();\n\t};\n\tconst onGlobalMouseUp = useMemo(\n\t\t() => (e: any) => mouseUpHandlerRef.current(e),\n\t\t[],\n\t);\n\tuseMouseUp(onGlobalMouseUp);\n\n\tuseEffect(() => {\n\t\tif (!show) return;\n\t\tif (typeof window === \"undefined\") return;\n\n\t\tconst onScrollOrResize = debounce({ delay: 160 }, () => {\n\t\t\tscheduleComputePosition();\n\t\t});\n\n\t\twindow.addEventListener(\"scroll\", onScrollOrResize, {\n\t\t\tpassive: true,\n\t\t\tcapture: true,\n\t\t});\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener(\"scroll\", onScrollOrResize, true);\n\t\t};\n\t}, [show]);\n\n\treturn (\n\t\t<>\n\t\t\t{triggerNode}\n\n\t\t\t{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={{\n\t\t\t\t\t\t...style,\n\t\t\t\t\t\tposition: \"fixed\",\n\t\t\t\t\t}}\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>\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":["isValidElement","content","useRef","useState","getPosition","getPointPosition","useMemo","Children","cloneElement","_jsx","_Fragment","useResizeObserver","useEffect","useLayoutEffect","useMouseUp","debounce","_jsxs","Content"],"mappings":"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"}
1
+ {"version":3,"file":"popup.js","sources":["../../../../packages/components/popup/popup.tsx"],"sourcesContent":["import { debounce } from \"radash\";\nimport {\n Children,\n MouseEvent,\n Ref,\n cloneElement,\n isValidElement,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\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\nconst REACT_FORWARD_REF = Symbol.for(\"react.forward_ref\");\nconst REACT_FRAGMENT = Symbol.for(\"react.fragment\");\n\nconst canAttachRef = (el: any) => {\n if (!isValidElement(el)) return false;\n const t: any = el.type;\n if (typeof t === \"string\") return true;\n if (t?.prototype?.isReactComponent) return true;\n if (t?.$$typeof === REACT_FORWARD_REF) return true;\n return false;\n};\n\nexport default function Popup(props: IPopup) {\n const {\n visible = false,\n content,\n trigger = \"hover\",\n gap = 12,\n offset = 8,\n position = \"top\",\n showDelay = 16,\n hideDelay = 12,\n touchable,\n arrow = true,\n align = \"center\",\n fitSize,\n disabled,\n style,\n className,\n children,\n onVisibleChange,\n } = props;\n\n const triggerRef = useRef<HTMLElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const timerRef = useRef<any>(null);\n const afterHideTimerRef = useRef<any>(null);\n const rafRef = useRef<number | null>(null);\n\n const [show, setShow] = useState(false);\n const showRef = useRef(false);\n showRef.current = show;\n\n const latestRef = useRef<Record<string, any>>({});\n latestRef.current = {\n disabled,\n trigger,\n touchable,\n showDelay,\n hideDelay,\n position,\n gap,\n offset,\n align,\n fitSize,\n onVisibleChange,\n };\n\n const phaseRef = useRef<\"\" | \"showing\" | \"hiding\">(\"\");\n const lastPosRef = useRef<{ left: number; top: number } | null>(null);\n const lastArrowRef = useRef<{\n left: number;\n top: number;\n transform: string;\n } | null>(null);\n const arrowElRef = useRef<HTMLElement | null>(null);\n const pointRef = useRef<{ pageX: number; pageY: number } | null>(null);\n\n const clearTimer = () => {\n if (!timerRef.current) return;\n clearTimeout(timerRef.current);\n timerRef.current = null;\n phaseRef.current = \"\";\n };\n\n const clearAllTimers = () => {\n clearTimer();\n if (afterHideTimerRef.current) {\n clearTimeout(afterHideTimerRef.current);\n afterHideTimerRef.current = null;\n }\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n\n const setContentVisible = (visible: boolean) => {\n const el = contentRef.current;\n if (!el) return;\n el.style.opacity = visible ? \"1\" : \"0\";\n el.style.transform = visible ? \"none\" : \"translate(0, 2px)\";\n };\n\n const ensureBaseStyle = () => {\n const el = contentRef.current;\n if (!el) return;\n const pos = \"fixed\";\n if (el.style.position !== pos) el.style.position = pos;\n };\n\n const applyFitSize = () => {\n const o = latestRef.current;\n const contentEl = contentRef.current;\n if (!contentEl) return;\n\n const vertical = [\"top\", \"bottom\"].includes(o.position);\n const key = vertical ? \"width\" : \"height\";\n if (!o.fitSize) {\n (contentEl.style as any)[key] = \"\";\n return;\n }\n\n const triggerEl = triggerRef.current;\n if (!triggerEl) return;\n\n const size = triggerEl[vertical ? \"offsetWidth\" : \"offsetHeight\"];\n (contentEl.style as any)[key] =\n typeof size === \"number\" ? `${size}px` : \"\";\n };\n\n const applyArrow = (arrowX: number, arrowY: number, arrowPos: string) => {\n const contentEl = contentRef.current;\n if (!contentEl) return;\n\n const arrowEl =\n arrowElRef.current ??\n (contentEl.querySelector(\".i-popup-arrow\") as HTMLElement | null);\n arrowElRef.current = arrowEl;\n if (!arrowEl) return;\n\n let left = arrowX ?? 0;\n let top = arrowY ?? 0;\n let transform = \"\";\n\n switch (arrowPos) {\n case \"left\":\n left += 2;\n transform = `translate(-100%, -50%) rotate(180deg)`;\n break;\n case \"right\":\n left -= 2;\n transform = `translate(0, -50%)`;\n break;\n case \"top\":\n top -= 2;\n transform = `translate(-50%, -50%) rotate(-90deg)`;\n break;\n case \"bottom\":\n top += 2;\n transform = `translate(-50%, -50%) rotate(90deg)`;\n break;\n default:\n break;\n }\n\n const prev = lastArrowRef.current;\n if (\n prev &&\n prev.left === left &&\n prev.top === top &&\n prev.transform === transform\n ) {\n return;\n }\n\n lastArrowRef.current = { left, top, transform };\n arrowEl.style.left = `${left}px`;\n arrowEl.style.top = `${top}px`;\n arrowEl.style.transform = transform;\n };\n\n const applyLeftTop = (left: number, top: number) => {\n const contentEl = contentRef.current;\n if (!contentEl) return;\n\n const prev = lastPosRef.current;\n if (prev && prev.left === left && prev.top === top) return;\n\n lastPosRef.current = { left, top };\n contentEl.style.left = `${left}px`;\n contentEl.style.top = `${top}px`;\n };\n\n const computeRelativePosition = () => {\n const triggerEl = triggerRef.current;\n const contentEl = contentRef.current;\n if (!triggerEl || !contentEl) return;\n\n const o = latestRef.current;\n applyFitSize();\n\n const [left, top, { arrowX, arrowY, arrowPos }] = getPosition(\n triggerEl,\n contentEl,\n {\n position: o.position,\n gap: o.gap,\n offset: o.offset,\n align: o.align,\n refWindow: true,\n },\n );\n\n applyLeftTop(left, top);\n applyArrow(arrowX, arrowY, arrowPos);\n };\n\n const computePointPosition = () => {\n const contentEl = contentRef.current as HTMLElement | null;\n if (!contentEl) return;\n const point = pointRef.current;\n if (!point) return;\n\n const [left, top] = getPointPosition(point as any, contentEl);\n applyLeftTop(left, top);\n };\n\n const scheduleComputePosition = () => {\n if (!showRef.current) return;\n if (rafRef.current !== null) return;\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n if (!showRef.current) return;\n ensureBaseStyle();\n\n if (latestRef.current.trigger === \"contextmenu\") {\n computePointPosition();\n return;\n }\n\n computeRelativePosition();\n });\n };\n\n const handleShow = () => {\n const opts = latestRef.current;\n if (opts.disabled) return;\n clearAllTimers();\n if (\n showRef.current &&\n (opts.trigger !== \"hover\" ||\n (opts.trigger === \"hover\" && !opts.touchable))\n ) {\n ensureBaseStyle();\n computeRelativePosition();\n setContentVisible(true);\n return;\n }\n\n phaseRef.current = \"showing\";\n if (!showRef.current) {\n lastPosRef.current = null;\n lastArrowRef.current = null;\n arrowElRef.current = null;\n setShow(true);\n }\n\n timerRef.current = setTimeout(() => {\n if (phaseRef.current !== \"showing\") return;\n\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n if (phaseRef.current !== \"showing\") return;\n if (!contentRef.current) return;\n\n ensureBaseStyle();\n if (opts.trigger === \"contextmenu\") {\n computePointPosition();\n } else {\n computeRelativePosition();\n }\n setContentVisible(true);\n opts.onVisibleChange?.(true);\n clearTimer();\n phaseRef.current = \"\";\n });\n }, opts.showDelay);\n };\n\n const handleHide = () => {\n if (!showRef.current) return;\n\n clearAllTimers();\n phaseRef.current = \"hiding\";\n timerRef.current = setTimeout(() => {\n if (phaseRef.current !== \"hiding\") {\n clearTimer();\n return;\n }\n\n setContentVisible(false);\n\n afterHideTimerRef.current = setTimeout(() => {\n afterHideTimerRef.current = null;\n setShow(false);\n clearAllTimers();\n latestRef.current.onVisibleChange?.(false);\n phaseRef.current = \"\";\n }, 160);\n }, latestRef.current.hideDelay);\n };\n\n const handleToggle = (action?: boolean) => {\n if (action !== undefined) {\n action ? handleShow() : handleHide();\n return;\n }\n showRef.current ? handleHide() : handleShow();\n };\n\n const hideRef = useRef(handleHide);\n const toggleRef = useRef(handleToggle);\n hideRef.current = handleHide;\n toggleRef.current = handleToggle;\n\n const doHide = useMemo(() => () => hideRef.current(), []);\n const doToggle = useMemo(\n () => (action?: boolean) => toggleRef.current(action),\n [],\n );\n\n const mergeRefs = useMemo(() => {\n return (...refs: Array<Ref<HTMLElement> | undefined>) => {\n return (node: HTMLElement | null) => {\n for (const ref of refs) {\n if (!ref) continue;\n if (typeof ref === \"function\") {\n ref(node);\n } else {\n (ref as any).current = node;\n }\n }\n };\n };\n }, []);\n\n const triggerEvents = useMemo(() => {\n const setTriggerEl = (e: any) => {\n const el = e?.currentTarget as HTMLElement | null | undefined;\n if (el) triggerRef.current = el;\n };\n\n switch (trigger) {\n case \"click\":\n return {\n onClick: (e: any) => {\n setTriggerEl(e);\n doToggle(true);\n },\n };\n case \"hover\":\n return {\n onMouseEnter: (e: any) => {\n setTriggerEl(e);\n doToggle(true);\n },\n onMouseLeave: (e: any) => {\n setTriggerEl(e);\n doToggle(false);\n },\n };\n case \"focus\":\n return {\n onFocus: (e: any) => {\n setTriggerEl(e);\n doToggle(true);\n },\n onBlur: (e: any) => {\n setTriggerEl(e);\n doToggle(false);\n },\n };\n case \"contextmenu\":\n return {\n onContextMenu: (e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setTriggerEl(e);\n\n pointRef.current = {\n pageX: (e as any).clientX,\n pageY: (e as any).clientY,\n };\n\n if (showRef.current) {\n ensureBaseStyle();\n computePointPosition();\n return;\n }\n\n clearAllTimers();\n phaseRef.current = \"showing\";\n lastPosRef.current = null;\n lastArrowRef.current = null;\n arrowElRef.current = null;\n setShow(true);\n\n timerRef.current = setTimeout(() => {\n if (phaseRef.current !== \"showing\") return;\n if (!contentRef.current) return;\n\n ensureBaseStyle();\n computePointPosition();\n setContentVisible(true);\n clearTimer();\n latestRef.current.onVisibleChange?.(true);\n phaseRef.current = \"\";\n }, latestRef.current.showDelay);\n },\n };\n default:\n return {};\n }\n }, [doToggle]);\n\n const triggerNode = useMemo(() => {\n const events = triggerEvents as any;\n const eventKeys = Object.keys(events);\n const items = Children.toArray(children);\n\n let attachedRef = false;\n let cloned = false;\n\n const nextItems = items.map((item) => {\n if (!isValidElement(item)) return item;\n if ((item as any).type === REACT_FRAGMENT) return item;\n\n const attachRef = !attachedRef && canAttachRef(item);\n if (attachRef) attachedRef = true;\n\n if (!attachRef && eventKeys.length === 0) return item;\n\n const patchedProps: Record<string, any> = {};\n\n for (const evt of eventKeys) {\n const ours = events[evt];\n const theirs = (item.props as any)?.[evt];\n patchedProps[evt] =\n typeof theirs === \"function\"\n ? (e: any) => {\n ours(e);\n theirs(e);\n }\n : ours;\n }\n\n if (attachRef) {\n patchedProps.ref = mergeRefs(\n (item as any).ref,\n triggerRef as any,\n );\n }\n\n cloned = true;\n return cloneElement(item as any, patchedProps);\n });\n\n if (!cloned) return children;\n return nextItems.length === 1 ? nextItems[0] : <>{nextItems}</>;\n }, [children, triggerEvents, mergeRefs]);\n\n const contentTouch = useMemo(() => {\n if (!touchable) return {};\n const events: { [key: string]: () => void } = {};\n\n if (trigger === \"hover\") {\n events[\"onMouseEnter\"] = () => {\n clearTimer();\n };\n events[\"onMouseLeave\"] = () => handleToggle(false);\n }\n\n return events;\n }, [touchable, trigger]);\n\n const { observe, unobserve, disconnect } = useResizeObserver();\n useEffect(() => {\n if (!observe) return;\n const triggerEl = triggerRef.current;\n const contentEl = contentRef.current;\n if (triggerEl) observe(triggerEl, scheduleComputePosition);\n if (contentEl) observe(contentEl, scheduleComputePosition);\n return () => {\n if (contentEl) unobserve(contentEl);\n if (triggerEl) unobserve(triggerEl);\n disconnect();\n };\n }, [trigger, observe, unobserve, disconnect, show]);\n\n useLayoutEffect(() => {\n if (!show) return;\n ensureBaseStyle();\n if (latestRef.current.trigger === \"contextmenu\") {\n computePointPosition();\n } else {\n computeRelativePosition();\n }\n }, [show]);\n\n useLayoutEffect(() => {\n doToggle(visible);\n }, [visible]);\n\n useEffect(() => {\n return () => {\n clearAllTimers();\n };\n }, []);\n\n const mouseUpHandlerRef = useRef<((e: any) => void)>(() => {});\n mouseUpHandlerRef.current = (e) => {\n if (!showRef.current) return;\n const triggerEl = triggerRef.current;\n const contentEl = contentRef.current;\n if (!triggerEl || !contentEl) return;\n const tar = e.target as HTMLElement;\n if (triggerEl.contains(tar) || contentEl.contains(tar)) return;\n doHide();\n };\n const onGlobalMouseUp = useMemo(\n () => (e: any) => mouseUpHandlerRef.current(e),\n [],\n );\n useMouseUp(onGlobalMouseUp);\n\n useEffect(() => {\n if (!show) return;\n if (typeof window === \"undefined\") return;\n\n const onScrollOrResize = debounce({ delay: 160 }, () => {\n scheduleComputePosition();\n });\n\n window.addEventListener(\"scroll\", onScrollOrResize, {\n passive: true,\n capture: true,\n });\n\n return () => {\n window.removeEventListener(\"scroll\", onScrollOrResize, true);\n };\n }, [show]);\n\n return (\n <>\n {triggerNode}\n\n {show && (\n <Content\n ref={contentRef}\n arrow={arrow && trigger !== \"contextmenu\"}\n style={{\n ...style,\n position: \"fixed\",\n }}\n className={className}\n {...contentTouch}\n trigger={triggerRef.current as HTMLElement}\n >\n {content}\n </Content>\n )}\n </>\n );\n}\n"],"names":["isValidElement","content","useRef","useState","getPosition","getPointPosition","useMemo","Children","cloneElement","_jsx","_Fragment","useResizeObserver","useEffect","useLayoutEffect","useMouseUp","debounce","_jsxs","Content"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var scroll = require('./scroll.js');
6
+
7
+
8
+
9
+ exports.default = scroll.default;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}