@ioca/react 1.5.13 → 1.5.15
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.
- package/lib/cjs/components/dropdown/dropdown.js +6 -3
- package/lib/cjs/components/dropdown/dropdown.js.map +1 -1
- package/lib/cjs/components/dropdown/item.js +20 -4
- package/lib/cjs/components/dropdown/item.js.map +1 -1
- package/lib/cjs/components/editor/editor.js +27 -11
- package/lib/cjs/components/editor/editor.js.map +1 -1
- package/lib/cjs/components/loading/loading.js +4 -3
- package/lib/cjs/components/loading/loading.js.map +1 -1
- package/lib/cjs/components/popup/popup.js +7 -17
- package/lib/cjs/components/popup/popup.js.map +1 -1
- package/lib/cjs/components/scroll/index.js +10 -0
- package/lib/cjs/components/scroll/index.js.map +1 -0
- package/lib/cjs/components/scroll/scroll.js +78 -0
- package/lib/cjs/components/scroll/scroll.js.map +1 -0
- package/lib/cjs/components/upload/upload.js +5 -5
- package/lib/cjs/components/upload/upload.js.map +1 -1
- package/lib/cjs/index.js +2 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/js/hooks.js +8 -6
- package/lib/cjs/js/hooks.js.map +1 -1
- package/lib/css/colors.css +784 -784
- package/lib/css/index.css +1 -1
- package/lib/css/index.css.map +1 -1
- package/lib/es/components/dropdown/dropdown.js +7 -5
- package/lib/es/components/dropdown/dropdown.js.map +1 -1
- package/lib/es/components/dropdown/item.js +20 -4
- package/lib/es/components/dropdown/item.js.map +1 -1
- package/lib/es/components/editor/editor.js +27 -11
- package/lib/es/components/editor/editor.js.map +1 -1
- package/lib/es/components/loading/loading.js +4 -3
- package/lib/es/components/loading/loading.js.map +1 -1
- package/lib/es/components/popup/popup.js +7 -17
- package/lib/es/components/popup/popup.js.map +1 -1
- package/lib/es/components/scroll/index.js +6 -0
- package/lib/es/components/scroll/index.js.map +1 -0
- package/lib/es/components/scroll/scroll.js +70 -0
- package/lib/es/components/scroll/scroll.js.map +1 -0
- package/lib/es/components/upload/upload.js +7 -7
- package/lib/es/components/upload/upload.js.map +1 -1
- package/lib/es/index.js +1 -0
- package/lib/es/index.js.map +1 -1
- package/lib/es/js/hooks.js +8 -6
- package/lib/es/js/hooks.js.map +1 -1
- package/lib/index.js +140 -51
- package/lib/types/components/dropdown/dropdown.d.ts +1 -1
- package/lib/types/components/editor/type.d.ts +1 -1
- package/lib/types/components/scroll/index.d.ts +5 -0
- package/lib/types/components/scroll/scroll.d.ts +6 -0
- package/lib/types/components/scroll/type.d.ts +7 -0
- package/lib/types/components/upload/type.d.ts +1 -0
- package/lib/types/index.d.ts +1 -0
- 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
|
-
|
|
28
|
-
|
|
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(
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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 (
|
|
210
|
-
const
|
|
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 ? \"	\" : \"\\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 ? \"	\" : \"\\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 ??
|
|
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
|
|
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 (!
|
|
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.
|
|
349
|
-
pageY: e.
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|