@para-ui/core 4.0.0-rc.4 → 4.0.0-rc.6
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/AutoBox/index.js +72 -85
- package/AutoTips/index.js +72 -95
- package/Badge/index.js +17 -16
- package/Breadcrumbs/index.js +57 -73
- package/Button/index.js +90 -118
- package/ButtonGroup/index.js +30 -33
- package/Carousel/index.js +29 -33
- package/Cascader/index.js +9 -10
- package/Checkbox/index.js +28 -35
- package/CheckboxGroup/index.js +43 -58
- package/Collapse/index.js +52 -49
- package/CollapseBox/index.js +65 -70
- package/CollapseLayout/index.js +106 -101
- package/ColorPicker/index.js +3 -3
- package/ComboSelect/index.js +260 -337
- package/ComboSelect/lang/en_US.d.ts +1 -0
- package/ComboSelect/lang/index.d.ts +2 -0
- package/ComboSelect/lang/zh_CN.d.ts +1 -0
- package/ComboSelect/utils.d.ts +6 -0
- package/Container/index.js +17 -21
- package/CopyText/index.js +50 -83
- package/DatePicker/index.js +24 -27
- package/Descriptions/index.js +50 -59
- package/Desktop/index.js +161 -180
- package/DragVerify/index.js +77 -113
- package/Drawer/index.js +80 -95
- package/Dropdown/index.js +3 -3
- package/DynamicMultiBox/index.js +222 -224
- package/DynamicMultiBox/interface.d.ts +7 -0
- package/Empty/index.js +26 -28
- package/Form/index.js +70 -74
- package/FormItem/index.js +18 -15
- package/FunctionModal/index.js +7 -14
- package/GlobalContext/index.js +17 -20
- package/Help/index.js +9 -12
- package/HelperText/index.js +11 -11
- package/InputLang/index.js +104 -124
- package/InputNumber/index.js +62 -81
- package/Label/index.js +19 -21
- package/Loading/index.js +11 -10
- package/Menu/index.js +302 -371
- package/Message/index.js +104 -113
- package/Modal/index.js +122 -148
- package/MultiBox/index.d.ts +5 -0
- package/MultiBox/index.js +111 -115
- package/Notification/index.js +105 -103
- package/OperateBtn/index.d.ts +3 -0
- package/OperateBtn/index.js +77 -107
- package/PageHeader/index.js +327 -406
- package/Pagination/index.js +107 -137
- package/ParauiProvider/index.js +20 -22
- package/PasswordRules/index.js +36 -40
- package/PopConfirm/index.js +60 -77
- package/Popover/index.js +12 -12
- package/Progress/index.js +72 -74
- package/Querying/index.js +22 -23
- package/README.md +2 -0
- package/Radio/index.js +27 -34
- package/RadioGroup/index.js +38 -52
- package/Search/index.js +34 -43
- package/Select/index.js +281 -345
- package/SelectInput/index.js +8 -13
- package/Selector/index.js +582 -796
- package/SelectorPicker/index.js +113 -134
- package/SingleBox/index.d.ts +5 -0
- package/SingleBox/index.js +92 -88
- package/Slider/index.js +46 -57
- package/Status/index.js +14 -13
- package/Stepper/index.js +24 -25
- package/Styles/theme.scss +9 -9
- package/Switch/index.js +32 -35
- package/Table/index.js +360 -494
- package/Tabs/index.js +100 -100
- package/Tag/index.js +64 -82
- package/TextEditor/index.js +78 -100
- package/TextField/index.js +142 -183
- package/TimePicker/index.js +29 -28
- package/Timeline/index.js +50 -47
- package/Title/index.js +32 -34
- package/ToggleButton/index.js +29 -29
- package/Tooltip/index.js +52 -56
- package/Transfer/index.js +117 -154
- package/Tree/index.js +9 -10
- package/Upload/index.js +125 -143
- package/Upload/interface.d.ts +2 -0
- package/_verture/{constant-0d9802f7.js → constant-5317fc89.js} +2 -2
- package/_verture/{index-5a7e2438.js → index-3cdaba96.js} +967 -934
- package/_verture/{index-b1f80962.js → index-4fafd0a0.js} +6 -8
- package/_verture/{index-024bbc9b.js → index-775ad32d.js} +29 -25
- package/_verture/{index-05f7bf11.js → index-c568f272.js} +2 -2
- package/_verture/{index-232d890b.js → index-d63bd287.js} +1 -1
- package/_verture/index-da9097d3.js +239 -0
- package/_verture/{index-9331b116.js → index-e0f9064d.js} +125 -134
- package/_verture/intl-f2f27722.js +69 -0
- package/_verture/{modalContext-736ff215.js → modalContext-8534f23d.js} +36 -64
- package/_verture/{slicedToArray-a8206399.js → slicedToArray-75fa4188.js} +15 -2
- package/_verture/{toConsumableArray-8f4c9589.js → toConsumableArray-c7a8028f.js} +1 -1
- package/_verture/{useFormatMessage-703f8b20.js → useFormatMessage-eb13cf56.js} +5 -4
- package/_verture/{useGlobalProps-1b846a65.js → useGlobalProps-1e416658.js} +4 -3
- package/_verture/{usePopupContainer-87febeb9.js → usePopupContainer-635f66f4.js} +16 -15
- package/_verture/{util-7e1fb1e2.js → util-82646c4f.js} +5 -4
- package/_verture/utils-c17b5265.js +97 -0
- package/index.js +24 -23
- package/locale/en-US.d.ts +1 -0
- package/locale/index.d.ts +2 -0
- package/locale/index.js +10 -8
- package/locale/zh-CN.d.ts +1 -0
- package/package.json +11 -10
- package/umd/AutoBox.js +9 -8
- package/umd/AutoTips.js +9 -8
- package/umd/Badge.js +1 -1
- package/umd/Breadcrumbs.js +9 -8
- package/umd/Button.js +9 -8
- package/umd/ButtonGroup.js +9 -8
- package/umd/Carousel.js +5 -5
- package/umd/Cascader.js +9 -8
- package/umd/Checkbox.js +9 -8
- package/umd/CheckboxGroup.js +9 -8
- package/umd/Collapse.js +8 -7
- package/umd/CollapseBox.js +1 -1
- package/umd/CollapseLayout.js +4 -4
- package/umd/ColorPicker.js +1 -1
- package/umd/ComboSelect.js +9 -8
- package/umd/Container.js +1 -1
- package/umd/CopyText.js +9 -8
- package/umd/DatePicker.js +9 -8
- package/umd/Descriptions.js +9 -8
- package/umd/Desktop.js +9 -8
- package/umd/DragVerify.js +4 -4
- package/umd/Drawer.js +9 -8
- package/umd/Dropdown.js +6 -5
- package/umd/DynamicMultiBox.js +11 -10
- package/umd/Empty.js +1 -1
- package/umd/Form.js +9 -8
- package/umd/FormItem.js +9 -8
- package/umd/FunctionModal.js +9 -8
- package/umd/GlobalContext.js +1 -1
- package/umd/Help.js +9 -8
- package/umd/HelperText.js +1 -1
- package/umd/InputLang.js +9 -8
- package/umd/InputNumber.js +9 -8
- package/umd/Label.js +9 -8
- package/umd/Loading.js +4 -4
- package/umd/Menu.js +4 -4
- package/umd/Message.js +4 -4
- package/umd/Modal.js +9 -8
- package/umd/MultiBox.js +9 -8
- package/umd/Notification.js +8 -7
- package/umd/OperateBtn.js +9 -8
- package/umd/PageHeader.js +9 -8
- package/umd/Pagination.js +9 -8
- package/umd/ParauiProvider.js +1 -1
- package/umd/PasswordRules.js +4 -4
- package/umd/PopConfirm.js +9 -8
- package/umd/Popover.js +9 -8
- package/umd/Progress.js +5 -5
- package/umd/Querying.js +1 -1
- package/umd/Radio.js +9 -8
- package/umd/RadioGroup.js +9 -8
- package/umd/Search.js +9 -8
- package/umd/Select.js +9 -8
- package/umd/SelectInput.js +9 -8
- package/umd/Selector.js +9 -8
- package/umd/SelectorPicker.js +9 -8
- package/umd/SingleBox.js +9 -8
- package/umd/Slider.js +6 -5
- package/umd/Status.js +4 -4
- package/umd/Stepper.js +9 -8
- package/umd/Switch.js +9 -8
- package/umd/Table.js +9 -8
- package/umd/Tabs.js +9 -8
- package/umd/Tag.js +9 -8
- package/umd/TextEditor.js +22 -21
- package/umd/TextField.js +9 -8
- package/umd/TimePicker.js +9 -8
- package/umd/Timeline.js +1 -1
- package/umd/Title.js +9 -8
- package/umd/ToggleButton.js +9 -8
- package/umd/Tooltip.js +9 -8
- package/umd/Transfer.js +10 -9
- package/umd/Tree.js +9 -8
- package/umd/Upload.js +10 -9
- package/umd/locale.js +1 -1
- package/_verture/index-e9007d6a.js +0 -236
- package/_verture/intl-5c1ec055.js +0 -81
- package/_verture/unsupportedIterableToArray-cb478f24.js +0 -16
- package/_verture/utils-418da0a4.js +0 -73
- /package/_verture/{typeof-c310ee4a.js → typeof-b240b062.js} +0 -0
package/Desktop/index.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import { _ as _toConsumableArray } from '../_verture/toConsumableArray-8f4c9589.js';
|
|
2
|
-
import { _ as _slicedToArray } from '../_verture/slicedToArray-a8206399.js';
|
|
3
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
2
|
import React__default, { useRef, useState, useMemo } from 'react';
|
|
5
3
|
import { TextField } from '../TextField/index.js';
|
|
6
4
|
import { DeepClone } from '@paraview/lib';
|
|
7
|
-
import { $ as $prefixCls } from '../_verture/constant-
|
|
5
|
+
import { $ as $prefixCls } from '../_verture/constant-5317fc89.js';
|
|
8
6
|
import AutoTips from '../AutoTips/index.js';
|
|
9
7
|
import NavigateBefore from '@para-ui/icons/Left';
|
|
10
8
|
import { Button } from '../Button/index.js';
|
|
11
9
|
import ReactDOM from 'react-dom';
|
|
12
10
|
import { Tooltip } from '../Tooltip/index.js';
|
|
13
|
-
import { u as useFormatMessage } from '../_verture/useFormatMessage-
|
|
11
|
+
import { u as useFormatMessage } from '../_verture/useFormatMessage-eb13cf56.js';
|
|
14
12
|
import { s as styleInject } from '../_verture/style-inject.es-300983ab.js';
|
|
15
|
-
import '../_verture/unsupportedIterableToArray-cb478f24.js';
|
|
16
|
-
import '../_verture/typeof-adeedc13.js';
|
|
17
13
|
import '../_verture/tslib.es6-55ed4bd2.js';
|
|
18
14
|
import '../Label/index.js';
|
|
19
15
|
import '../Help/index.js';
|
|
@@ -25,11 +21,11 @@ import '@para-ui/icons/CloseCircleF';
|
|
|
25
21
|
import '../Loading/index.js';
|
|
26
22
|
import '@para-ui/icons/LoadingF';
|
|
27
23
|
import '../HelperText/index.js';
|
|
28
|
-
import '../_verture/useGlobalProps-
|
|
24
|
+
import '../_verture/useGlobalProps-1e416658.js';
|
|
29
25
|
import '@para-ui/core/GlobalContext';
|
|
30
|
-
import '../_verture/index-
|
|
26
|
+
import '../_verture/index-da9097d3.js';
|
|
31
27
|
import 'rc-dropdown';
|
|
32
|
-
import '../_verture/usePopupContainer-
|
|
28
|
+
import '../_verture/usePopupContainer-635f66f4.js';
|
|
33
29
|
import 'dayjs';
|
|
34
30
|
import 'rc-tooltip';
|
|
35
31
|
import 'rc-tooltip/lib/placements';
|
|
@@ -49,31 +45,31 @@ var zh = {
|
|
|
49
45
|
};
|
|
50
46
|
|
|
51
47
|
var localeJson = {
|
|
52
|
-
zh
|
|
53
|
-
en
|
|
48
|
+
zh,
|
|
49
|
+
en
|
|
54
50
|
};
|
|
55
51
|
|
|
56
52
|
var css_248z = "@charset \"UTF-8\";\n/**\n* @author linhd\n* @date 2023/4/11 14:16\n* @description 最新色卡\n*/\n.paraui-v4-desktop {\n width: 100%;\n height: 100%;\n}\n.paraui-v4-desktop .paraui-v4-cp {\n cursor: pointer;\n font-size: 14px;\n font-weight: 700;\n color: rgb(29, 33, 38);\n}\n.paraui-v4-desktop .desktop-title-input {\n max-width: 440px;\n min-width: 200px;\n}\n.paraui-v4-desktop .desktop-title-input-btn {\n margin-left: 10px;\n}\n.paraui-v4-desktop .desktop-title-wrapper {\n display: flex;\n flex: 1;\n width: 100%;\n position: relative;\n}\n.paraui-v4-desktop .desktop-title {\n display: flex;\n height: 20px;\n line-height: 20px;\n font-size: 14px;\n margin: 20px 0;\n}\n.paraui-v4-desktop .desktop-title > .desktop-backlist {\n display: flex;\n align-items: center;\n}\n.paraui-v4-desktop .desktop-title > .desktop-backlist .desktop-back-hotarea {\n width: 38px;\n height: 30px;\n display: flex;\n align-items: center;\n cursor: pointer;\n flex-shrink: 0;\n}\n.paraui-v4-desktop .desktop-title > .desktop-backlist .desktop-back-hotarea svg {\n color: rgb(29, 33, 38);\n}\n.paraui-v4-desktop .desktop-title > .desktop-backlist .desktop-back-hotarea:hover svg {\n color: rgb(46, 101, 230);\n}\n.paraui-v4-desktop .desktop-title > div {\n width: 100%;\n text-align: center;\n color: rgb(29, 33, 38);\n font-weight: 600;\n font-size: 14px;\n}\n.paraui-v4-desktop .desktop-title > div > span {\n cursor: pointer;\n font-weight: bold;\n}\n.paraui-v4-desktop .pd-lr38 {\n padding: 0 38px;\n}\n.paraui-v4-desktop .desktop-box {\n position: relative;\n width: 100%;\n height: calc(100% - 50px);\n}\n.paraui-v4-desktop .desktop-box .desktop-item {\n position: absolute;\n top: 0;\n left: 0;\n transition: top 0.5s, left 0.5s;\n user-select: none;\n cursor: pointer;\n background-color: white;\n border-radius: 8px;\n}\n.paraui-v4-desktop .desktop-box .desktop-item .item-name {\n text-align: center;\n position: absolute;\n font-size: 14px;\n z-index: 0;\n width: 100%;\n padding: 0 5px;\n color: rgb(29, 33, 38);\n}\n.paraui-v4-desktop .desktop-box .desktop-item .item-dir-body {\n width: 100px;\n margin: 25px auto 10px;\n}\n.paraui-v4-desktop .desktop-box .desktop-item .item-dir-body svg {\n display: block;\n}\n.paraui-v4-desktop .desktop-box .desktop-item .item-dir-body img {\n width: 100%;\n height: 100%;\n}\n.paraui-v4-desktop .desktop-box .desktop-item .item-dir-name {\n margin: 0 auto;\n color: rgb(29, 33, 38);\n font-size: 14px;\n max-width: 180px;\n text-align: center;\n}\n.paraui-v4-desktop .desktop-box .desktop-item .item-body {\n text-align: center;\n display: flex;\n justify-content: center;\n}\n.paraui-v4-desktop .desktop-box .desktop-item .item-body svg {\n display: block;\n}\n.paraui-v4-desktop .desktop-box .desktop-item .item-body img {\n height: 70px;\n margin-top: 25px;\n margin-bottom: 10px;\n pointer-events: none;\n}\n.paraui-v4-desktop .desktop-box .item-disable {\n box-shadow: none;\n cursor: not-allowed;\n position: relative;\n}\n.paraui-v4-desktop .desktop-box .item-disable::before {\n display: block;\n content: \"\";\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.5);\n z-index: 1;\n}\n.paraui-v4-desktop .desktop-box [drag-item=true] {\n z-index: 2;\n transition: none;\n}\n.paraui-v4-desktop .desktop-box [impact=true] {\n background-color: rgb(247, 248, 250);\n}\n.paraui-v4-desktop .desktop-box [in-dir=true] {\n display: none !important;\n}\n.paraui-v4-desktop .desktop-box .img-box {\n display: inline-block;\n width: 100%;\n text-align: center;\n margin-top: 10px;\n}\n.paraui-v4-desktop .desktop-box .img-box > img {\n width: 100px;\n height: 100px;\n user-drag: none;\n}\n.paraui-v4-desktop .desktop-box .desktop-dir .img-box {\n display: inline-block;\n}\n.paraui-v4-desktop .desktop-box .desktop-dir .img-box > img {\n width: 40px;\n height: 40px;\n margin: 5px 15px;\n}\n.paraui-v4-desktop .menu-list {\n position: absolute;\n box-shadow: 4px 4px 6px #dcdde3;\n background-color: #ffffff;\n font-size: 14px;\n border-radius: 4px;\n z-index: 10;\n display: none;\n transition: background-color 0.2s;\n}\n.paraui-v4-desktop .menu-list .menu-item {\n padding: 5px 15px;\n cursor: pointer;\n}\n.paraui-v4-desktop .menu-list .menu-item:hover {\n background-color: rgb(246, 246, 246);\n}";
|
|
57
53
|
styleInject(css_248z);
|
|
58
54
|
|
|
59
55
|
/** 默认图标 */
|
|
60
|
-
var Icon = 'data:image/png;base64,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';
|
|
61
|
-
|
|
56
|
+
const Icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJsAAACbCAYAAAB1YemMAAAgAElEQVR4nO2dB5jc1L32f9LMVtu7XveGAWNMgiEYQguEEmwMtjFggimB0Lmk3EAogfRiIEBukksJuUAI5KN3MNhgG0ILLXRi0ww24IYrrrve3RnpfI800syRRtJImrKzxu/zaFfl6Oico3f+7RQpbAXTaKwDRkrbMGAIMBRoAZqtradPa62XttXAcmAJsBj4CFgAfPJr2tJf5tb+0pFtGo2NwJ7AN4AxwG7AKCBR5kd3AO8D7wCvA68Y+7+mLVXm51YNtniyTaOxHtgPGGdte1SAWHlQENYpxfprHrcDLwJPK/BP4LVfsFmvdNkqhS2SbNNo7AMcARwNjAd6VOrZPqSSrnvvW2lXAo8Djxr/f0Z7RyXKXClsMWSzJNhk4GRgIpAs5/OKJFWYtBuA6QrcATx1Me3dXuJ1e7JNo3EX4AfASUBTqfPPEENxHdv77rRe93pfL3QviOw5JeNo3ArcfBEdiyNWoWrQLck2jcakpSJ/BBxYijyrhFSF0mrAQwpcewGdL3hWpIrRrcg2jcZa4BTgp8AOcfLoJqTKng9I+xJwGYhZPyYl6AboFmSbRmMNcLZFsm3C3LMFkcqVVnGX723g5+eSeiLvlipDVZNtGo1G+b4NXGEFXPPQNaQSjnPlIWAeqXzLYaV/XkFc8kPSr+TdVCWoWrJNo/HrwF+AfXGRKogk3sdbDqnUvJTu9OJ24Gc/QFvqk7TLUHVku5SGZlB+D3xPQTjatjpIFZ2AlIdU0rm8vFuBXxmOxDlomk9WFUdVke0yGqYANygwQD7vJE3wCytElHJKNUpEqvgEdEJFvAmceTb62z5JKoqqINvlNPQ2VKaSiZWZqE5SBUqTwPRlJlVAemF0/v8WuOqszH6XocvJdgX1Y4HbrFEWJvyIEmQjeV3fkkiluOqanz7fhHCp3H8DJ54Bn/hkU3Z0GdmupN5o619Yvzq1GklVTgJ6lY3SkCogb9YrcNap8IDPI8qKLiHbVdT3A+5S4FDnFX9SBcWovK5vSaTKr2NBUhXImz8DF58CFXUeKk62P1C/M4iZCmznVYjqJJXzWjciVUDePA0cdzKs8cmi5Kgo2f5I3QTgHqPDPBqphEmH/LSK9b96SRVEnDCk8vuRxUnvkdYYQTzxOzDfJ/uSomJk+xN1RnfTDVixsy8LqfzL6H1/mUgVdO0LBY46HsresV8Rsv2Z2ksUwyfIYiupwpAq2LyITKqgZ242VOpxMMMnSUlQdrJdTe1VhjGaOepupAry/Nxl9H5WlZEqqIzGXIhTj4W7fW4vGmUl2zXUGtLskmogVYHAZ965riZVmLRlULm6AqccA3f6ZF0Uyka2a6m5UoFLcme2kipu2grbcSbhji4D4cpCtutIGoHa32wlVbS0XeAc+B0b8bejjyqxDVdysl1P8kxjrDw+pAoTKK0zZwMLc0pUA8I8rs1uGRsrKd2nW0+wO/7SlgFiTE3qtP4bx4YV3GZdj/PCSkXAcpIqKgEDjo3mOnRyZqphSVBSsv2VhDF9bnqm+6kwqVRzmrkwp5y3IMx9Y8p5UlFRauvB2GrqUBJJSNRCIomSTGZyUa2pn8Z/PRMIF/Z/LW1tKUQ6s+mpdvRUByLdaRKwzWrNjda2SfpJfMlIFXRtnTGZexJ84PG4yCgZ2W4gMcaacNvoVXgscvVDMMDaeptcSUJ9D5T6nlDfE6WuAZK1pSpWDrrlCQsNvb0drbMNvbMNrSPzX9d1k3CbrBZeZ0nDLwmpgtJ+bAxgnVCCnoaSkO1GEn2BN4Bt7XO2TWVMHhiMMBfNGIggoajQ2ITSoxkamzPSq1ywCWaWRWQsEcWSX5rIyTJdmOTTOlrROjaZ/w0p2WqRbq0l/bytxC2GVEHXnzNU6mGZ319sFE22v6Eaeu1J4GD7nGrOShEMNyUYqGoC0asP9OxjEg2lbE5wBrrIqXCDVF4EM/7ruX1Fk8+Dlmoj3bGRdPsmtHS7ydMvrG2dZSd2Bam6kIBXj4fz80+HR9Fv/WbUK0GYIY5e5vw6YYq3WkVB9GhBNPWFHr0rQjBsKWYTR5Ekmi3ddGlfk6ReNg8rH82egC7Q0ylSnZtIdWxAS3eYWay1lita7ypGBTzFkuYV0Ys+fizc53FLKBTFgL+jHKrA7IGg7GRJMRI1iN4D0Jv7l8f2kuGrJmWCOUmUL8Xk8zmCOYmpZ/PT9RSp1CY6Ozah62nT2VhjEc9emKMaJFOhe4OuB9ighjUx5hBY6JMkELHJdicMGgDv7wS9DW9S1Dag9xmSUZfdQE3ahDJv1fV8YgrhJKmim+cUIbL3ptMddBgSL9VhHhuLc6y0Funo5qQKes7LxioEB+ciTaERmxWfwrJ+MNgkWd+h6AbJygk3wZClmA+R5PPkiORNMDN2ksnTloomwYxTupPESOkRCKHT0dFGR2qzud9ukW6tR3OUSt1VgFRBaX97IPzOJ1tfxCLbXPjLCEX5YXrgCHTDJisXItthFK0mbYJlSCmc5LIlnn1OuMms05lqpz3djq5r5k9/taVm5SWIuhGp/J5jVG2vb2Zm44dGZLK9BqNHwtxE/+GK1jIo6u2eUPv3o/aEKZlLwiaYBYMsirSfhZBiEf77GW5K98kEsUiVPXZfl5/lSJPbV+Q8lNz9mkE2LY1u2HlWELk9QvgkzDVt0yZz61i2jM0ffMDmhQsR6XQpSRWUjxHq2nf/COo08hpm/WFGTV2jkmoZGPVWXyj9+lD/32eVLL9qQI2rDL0rUCaRSrHh5ZdZ98wzrHn8cTa++mopSOU4J10zViw415rPEAqRJNs8OG8EXJ0aPLI0NpolqZJf3ZGej5ZlVMuXGpvnz2fFrbey/G9/I71mTckknoSNCuy0D3wepp39Blrk4XmoHWCMtk3WFkc0PWNHKbqeGbio6U41txUlQ8OoUWx3xRXs9dlnbH/lldT262eSRrFevP3fa1M8Nne6BPRSI0i20GQbCLf2gnqtV0yHwE0wXdq0LXbN4qpAokcPhl5yCbt/+CGDzj4bVVWzhJFJ5UfAhCut6kx7whuwV5h6hiLbXBg4CE4w9vWeEawPWYoZhDK8RINcirVvkmyrZKsUkn36MOKmm9j5ySepHTQoUKoVOlac+38MU4VQZGuE2+qMtIqCXu/33QkLDjWp56SYInJSzCaduYkAH20ryoGmQw5hl7ffpumgg3xJ5SXxAtTugW/D4UWT7U0YOsCauS7qevj3DniqSZlglhSzSWYR0d62orKoGTiQUU8+SZ+pU0PbcQVsud8WTbYWuLXGckaEMdbMRbBQalKXJJkmJIJJ57ei4lBqatj+nnvod/rpvoTyk2qJ/PT7zC0g3QLJ9gEM6J/5KkqGWzV1AWpSD1CTtgQT5j2y1FOMter0rWq0y6CqDL/5ZnpPnlyMVLO3XwZVI5BsdfCXGllxJmoC1KQIVpOSdDO6gQySmUSzpdtWdC3h7r2XxjFjPAkVIUSy//sBnqkv2V6DRAscLQf5hJE8qyZ1TzXptMNkguk5ghlzBWyymoTbSrauhtrQwPD77yfZq1fsuJu1XeRXFV+y9YGfNVq9LlnJJsiRLEswp5rMESynJjOSTXMS0+j51izSiapZ9vVLjdqRIxl83XVxpZp9/piPwLPT3LdvtDnz9RQnFCSVFzC6IuoYsS6w2cSaNXQeOxWxbJmrQx7XrDC/faT0AekUkXebw58X3ueF67zxc9xg+11GV1RjI0rPntSNHEn9HnvQ87DDqN9ll3CVD0Dzqaey/pZb2Pz88/lllcoT0NVlcOoM4Pc+1534EPbYHt5QXE3YPmAEItloN0fmX+AYMYtgBcaIqbvuTOO/ZkdqFG32kyTGjytqoKb+7rt0jh2HWLs2U34lDMnkUSklJph0zatWxqUNGrRb2bdaJLTT1u+2G30vuIDmk06CRPyvXHbMm8dnu+1mOYH58GtxSU0aS6mOHOGyjzzVaCNc6vkQm0Ch1aTtMGhWs2goumZOp8tNLdatQYjRoD30MJ0XXhyvNe3Kjx5N7aPTURobcuPkCmwKQpq3IG2KyOXhIlMmbiQllc7bI6Ds36Sf1MDicLMKPZRMmp7WxG37no533mHZqafyyV570fHWW7HbpW6XXWiaOjWqrSan2V6Bg/La2+thTXCI3FjZfS1tGftavjeZ9UotW8wcrm0TzLpHaE6CGcciroMgSN9wA6nL86R1JKh7703t/fdBbY0v0RQHyXAOqJQJJkmlPJL5EIwCBHMUxYLR+91svbkGi3DyS0+99RaLvvENNtx6a+x2afnpT1EVpRhn4TvuPPPIthCm9gDPyZyKMTDPjotlCaY5jX0lQx5FpC0pZnmstiSTCSb07NDqyLDeVurSy0lf/9fYjWo2wrhDqTFejKl6bILhQzDhlIJBBPORYu7znnARLJveOm+QrI8l4epcEs4kREcHK888k3XXXBOrTerGjKF+v/1iOwsKHLs4U7RcO7sfUgP/LdwSzd4xltH3VZO6h5rUnaQyiWZ1vFskU6wAcWQIS0IqgtSFP0G7u7hlxRLHTqXm2uuC1WQRBAujJt1SzE9C2qhVMoRTrcGate4XLwRrzj+f1oceitUmvU45JYoX6iZjb0XSkHiRrQH28gpEKLYajaQm7bCG5pBiZnpry9lu0aHYs52ETudZZ6M9/nisfGwkzjqb5LRL/dWk3Bb4k6NYNemXv9d9Bsn6Kpnuo6RFOgc5hGD1GWeQXrIkcns0Gv2miYRTYnpIODfhpOPJcn4Osr0P+9ZCg00BdwMp6c4cwaKoSeEimJK7xySpHifOJhxvVDEmEp90EvoLxS0Nm7jk5yR+fH44KeY6X0o1GUQwd/4Gyfpa/ZX25nj++vWsveCCyG2htrSYYZUQpPKTcpOXS03gIFsNnK9n/UaPh+spD4K5jH0/NankvE8zD123SKYHvJEgCEstSXZVWyudx0xBf+edOBlmkbzqTyROOa3L1aT7njwCS9IzIRHOq6O8/YEHSM2dG7kt6saODUMqP0IOU2CMnZeDbEn4phyU0FwNp+jpADUp8tWkbLuZKs+SYkLkpJuI1zdqlssrXLF+HalJExALF0TO09EWN/4ddfLRXa4m8SAY0ixCRTqtWBNrPEkhBK033BC5HWr33DMMqYKOx9p5Zcn2lrn6GYNzpn5mk50Fs39TT4VXkxLBslLM3nSZaPFCH/lb5rxYtZLUYeMRy4r45KaqkrzzHtRvHZIjmQfBKqEm7WvuXgXhele2NmryMORVS7pFRXLUqKiq033sWHDIRBKOwqKJXXDdQ52adptFsgz5wqhJ4UMwSxLGchDkNyay+dibWPQpqUmHI1avjpG3hbo6kvc/DHvsmRHGYQlWBjWJdF44f7a4BQTWInmKJCzMe1euJP3ee5GaIDFqVFTV6XYoDlib0eo5siVgqlxw975d0YzdJiRPMme3BapJm2g2+YTlTZLftRMeTpK5JZ14fx7pKUdAa2vcB0BTEzUznkAdtZP39TAECyCZF8Hc+SERTPPYvN6bATtYqkvPSM+bF6n6Sl2dOWEmBKn8YnDG13x2w2Wz7emlQuV984Z0ykdN6h5qMje2zdYfdrhCEbI3GR2ZihaO6uuv/pvUsUdDqoh17Pr1IzHnnyjDhuXOFWOHedl5Hk3hRzAv7eMlJJAmS9v2t/g81BRPB9SePcOQykFA12ZMaHaQbZj7V+KuoGI5CeHVpItg7nCF25uMBJckCwi6iqefIn3yiUUN0lSGDiUx6yno178iajKIYFGu2S9Z2Atcb9gQue7GWLeQpMpuCScRc2R7yxxRRL3wqJiQKq+bQcJMV1RkNSlJsSzBAq3lEIjQ+S0efhDtB+fEe46d7047kZz5BEpzc1FqMsgOc0spL5PGvR8k7WStZN7T3By94m1tviRLhJNyJtns8WyHaVIiW+Sq0r5ik41MH6kwfFf7JdsBJotg2daT3kLQGDHR2YFY9Fmk+otNG/MI5pW9Q1r8/WZzNbnElX+I9CwZyh5fJ/Hgw2iTJkJ7u6tQPuVBaipXmaJuuPpc9BB52WnMd7rNNtErvXFjfleTXz29nahd2uwPGL8Jf1HhhzUW+/y2Gjs6rSZI1dZma+kgkvAjGHkkc+8rQWlKOEYscdX/oF7gO3o5FMSj09GO/Takc/56EMHk8nhteJBItkZ1n/2o2/D580nuuGP4era20mrZbG4Eeebu88b3ZVWr0DsXEtfycSbk4a0m8+2w4OZQCo0R87HD3GpMPi9rba+ovvbTi9Fv/XvoBvdszCOPQr3pZhRFiRWuKKWaDLsp22wTiWhmuefPj+QQBIRHRppqVIfhsvr0UqMOlWp5ofL37BRH6wZLMEd6r3S2FIuoJgPVmAxjKfrvnWOqVHXKMUEpA6Gedpo5yle/8AKHFCu1mvSScHqE++z95hNOiFxH8eGHnhJM8dl3X5OOdzQlmwZ90gG/KC8pZ3qkQYMKPfb9wxVdMEZM09BPOhHx9D+jtH0elPPPR/n5L7LldRv6UcMV7jR+Eq6QZMx7fjJJ8znRHSTx73/H6q7ykIDbm2RLQ093IwmfBssGNaSJL9WmJj0J5pV/RyfalKMRr75aFOHUyy5DOeecQBXp15alVJN++Rv/m884g9oddohcN/HMM1FJ5SfZB5vnnwORcDkFYZwFpSbpq9/8vc8Cxr7P+Uhq0q2hA/I30b8/iaefRdl556Bcg6HrpE48kfR998VSk17HxWxyXslBg9hx3jySfSMud7Z8OekhQzK2eEAyryb1wBz1TWhOR/zF2f/d0s1fTRJeirnOV6Tze+UqtMMPg0WLwjWbF1SVmjvugMMOi6Um/dSjn7oMKxH12lq2ueuu6EQzmuaeeywn0Nm8Xj+gEBikdsI2UcS6o9L2qkXlVJNhCVaAwH73ZNMvWYI2biwU03FfU0P9ww/DvvvGjviHUY9BnqtjP5lk+G230fNb34pVHf222+KQyhPmxDAdhoQhlvCqlLClm4tgFR5K7Udgv/vyCGyn/+hj9PHjY3XpZOvZ0ECPJ56AXXctuR0WZaOlhRGPPkrL8cfHqod48UVEjOmAAdKvt2HX9XM3hJe49jVA7dnsMaa0lUpNhiGYJ4E9Or/1t94ifeSRsHlz5IbOlqt3b5pmzUIZMaKgWoyiGsPu95w4ka++9RbNEybEroN+2WWB12Oo1AajC6FnkCiWpZrXtcz6y91ATUrXCvVNpp97jk5DIpjTFONBHTKE3nPmIAYNKlo1hiGaoTKbJk1ix2efZdTMmdRtu23ssusvv4yYNSuv+YtUqbXJNDRqUtDWHcjVXcea64WrGUeMpD3b38djFOS/4FwxalG+urMrsXc+gfDL3yc/RwNu2oT+8cfZY+2xx9BPP536224L+/Q8JHbYgb5z5rDigAPQ1q93PK92993NDn23KxX22LAP1eZm6kaMoHGPPWgaO5Zkv36xy5qFprHu+983v7BYLNykTAoXoTQXkdzEUiRSZiWBBkmpp9ZBMh/yyVAGDyH5evzlAkqCVIr2Y45BmzEj+1LTt9+O6NOHhquvjv2Eml13pd/jj7P80EPR2tpyZDJW8H78cdPGqyZ8fu21aO+8Y85BrQtZrrCSThUFxLmfWpWvpS11GltNVgMMT/K++1AOOMBR383XXMPmSy8tqoDGzPIBDzyAqK3N5rvphRdYPHWq+VWWasH6N9/k9Z/9zFywZqPPqwqjUv3SGfJoXZChGioEYggGvbioflWgoYHGGTNgzBhHfTf++te0XX99USVsnDCBAf/4B5qqZvPeMHMmS04/vSqqnlq7llePO45UR4fxxUWzjG0xSeUHVYUvgjzRMF6TKd1ETrp5wqM0DkO/SqA0NdFrzhwYOdJR7/XnnsvmIpd4aDrxRAYaakrKd82dd7L03HO7tPLa5s28dMQRbFiwwCyT/d3U1gBCxXhlrYZkWxVEtLQP+bykXSqI/hZCRfW7GGr//vR+8kkYNixXR11nzWmnsdmIoRWBPj/8If2nTXN4o8uvu46lvy24sntZoLW388rUqax86SXH+/zUevdtRT5Ues0b1QSsCLLR/IglPK6lhPQx46jhiipDYrvtaJk1C9G3b7aO6c5OVhx7LO0vvlhUYQf96lf0Pe88xw968e9+Z5Kukkht2MC/Dj+cpTNn5oVjDJItsf7r0UjlJ/02qPvBQt8Yms+5oOvtUmgqUtC1ClEzerTpSeo9euQI19bG0kmT6IixlIGMba6+mj6nnOJowwXnnceqOyvzdcKNH37IU/vvz/LnnvMVMsbykcY38OXwdhEqdZ0ZsEiiaoVIFjbYmLLst0gzv3uVIqpTHtTtvTcDHnnE9CSzhFu/nkXjx9O5oLglHkbccgvNkyfn2l0I3j/9dNbMnFnWOn16xx3M2nNP1s6bFxgobkfhUxSTbHrxMmGpSbZaaDe61L0e7Ec0976Q9tt1j4IFRfXV+Ou/VgKN48Yx4K670BOJbJ07ly/n0/HjSRkLQMeEsRzVTvfeS6+DDsoROZVi7nHHse5f/yp5zTYtXMgzEybw4ne/S4fxFWYPTZU2eWBsqvn/E5Q86VYIPtJvmSXZWK9lvr3i64UGqVG3NDRskE5XKNy387sb2G8Gen372wy84QY0JfejND6TveDww9HWro2drzEnc/Sjj9K4++45Ire18ebkyWwscjUmG22LF/PGj3/MjNGjWTprlo9dniGZniUb5n4HCgtRPT85HjHutsQim7I897DCdpnwIJp7axe5z7sX6vzuJnyj5ayzGHDFFY66t86dy0cTJ6IX0XGfbGpi9zlzqNtxx2xbd6xfzyvjx9MWV1ULwYqnn+blU0/lkZEjee+aa+hsb3eUPZ0ll5olmm6RTN7/GNWUbu3hSOVHvs9syTY/99Bgb9TrvPBRr+2SdCvU+d1dMOCSS+h/0UWONln/yivMnzKlqN6Amn79+PpTT1FjhVvM9lu5kpfGjaN9abjVmAwJ9uldd/Hvs8/moeHDmTN2LB/ddhupzk5fNSlLMc1zy9hun1jSLQSp/PCBObuqHl7VUE5QEWYhVHTzIXJfqbtTPkxHfYdhD1pLcQaN9ozTg9DxyCN0PvecI098/gddi5XG+OU0NaFv2JD9wayZPZv5J5/MTkbgV/Wb0huMhuHD2Wv2bF48+GA6Vq0y02769FOeP+QQ+u63n/OlqirpzZtJbdxI29KlrJ8/n3Rra7Y8SD/m3NBW9xBXJfT+fBIYYe5Oaf2QiJhvkq0HzNLgzyqKRTDFGn3rTSJ5hEihjnojTtNLqrz7l6DHJJtBtE1XX+1JXt2Vfyn3g7YVRt9qSwujYiy6Z6PXzjuzz4wZ/GvsWNKbNpn5GkQytkLPl+uPJa2wCCMT0E0yPQQJ16OwFJU69FBkc0m6xT2tHgT2RXu/LvOFg6xIDeOB+jkTwqVmN/s4FPK5qAgb+/NT/YUcHXnf3YsSlNeSG29kwS8Dv4RYEC17782+06dnwy2FnDS3N6lHVJO6Y1OkY+f+eyRNySa/r5Aq1fR0svK+F8oXGSMxV0gRonGDXmTWu7JeWBBRS0m2oK0QCXPGc6GX6n9tweWX89n//m9RhBtwyCHsc/fdCCnc4h8dyNlhbm/Sm2CK4x7v/XxSfo7KBtNDjRxIeA2ZbD0R7+a80Zyz4Cc1/BrAi6C6RTg/SRLHGy0UXI67H0Y6hsn/vQsvZMk//hGjZjkMO+YY9rzxRke4xfksJes5OqVUEKGCNvIIpjvUqeGZZqRbFAh4w0G2RsRsuQIZ0qiBasitYuR0XuGRIEkSFWHCL+FVTzBxgn50vvtC8PZZZ7F8+vSiCLfDmWey+x/+4BuukKWYTDKnCgxWk4UIJs8a/ZiE2V5pj7IGqNRXHWRLoNySK7D7VxMuBOL963PuKx7n4qhRPwkaVhp5ESysmgxNYk3j1eOPZ9Uzz8ThWRajL7qI0RdfUjY1qRcgmIw2FJaRMKVbyGDuu73AdK2zZBtLakULojWf5c5uLC/pFiQRvNSs4vFioiJISobZj6Maw+7L+RqDEV+cMoW1b7xRFOH2uupKdjzrzJDq0N/uKiTFwuATEsgRxQJOwrP2jiMg1AxzNckddotkv5cVVqrY+3ZPqPyLiku2KGoyzBZHShYirNEb8OyECWz48MMYNc3hwBtvYPtvH+OK8BdSjdHUZBgsQjXbNBXu3WXFuots+l1OktliV81KuLTHiw6jYoVrv951PSqMkRdBkiaOHRZ1KyTV5a1t1SqeGjfODMDGhaKqHHr3nQwZN66gmswRL5qaDINOFD53STcfGK8hu0yUi2ziphrzkxpuzwaHbpcb2quBwyy/hfVxVvtcVOhCeBI5qp1WrJoMk8be37RkidmF1F7EEg9qTQ1HPPIAA/bZJ7Sa1EtAMDc+tRwFN1yq9PkmWJctu5z2G6Q7BqF/liOZHW9zGpNuqeYmnjuoK1z32PclrN6FOJJNzrOQmoyqGgvdWwxh13w4n9kTJpqjZOOipkcPjp45nZbRo0OpyXJgiRWp0LztNBuPygd5nXi9EY/okq2Wk2o26YKlWtBL87qvTurOioJC0qUUqjGKmgza3J3fK15/g9lTjkHr6IhNg4a+fZg6ewa9tt225GoyDDajsNay3QLwiHwpj2w9EJfWWp880xwSDsl+8yeS34vzI4ZufXo6Krye1dVq0lnf4Kj+oqefZc4JJ0nLjkVHr6FDOPGfT1Dfv39FCObG0mCyvdwMjiXg88g2ltQXQ9AWCkm65XumiudLiEIyN0mjQniQIqxqDFKXha4V2k+72ixXR+cYMYOEHz3yKE+d+V9FvfCWHUZw0pwZ1DU3FZVPHCy17Daf0Mft7iw9x8L0QfwNl92WH/D1dhbCSAPhQYyoiEokP0L69f9GyT/OGDG7HPP+cRvPXXhxUS994JivcfxjD1LT2FgOTuXBlqIryPXbyhCZaSj3ue/zJFsD4k89M995zGs43eVeF5IQXirJvSoca3AAAAwVSURBVJUjzhZHTYZxJHLPCFaTUaL6r/75Wl75/VVFvH4YfsD+HHPv7aa3Wg542YJGfb+wVKnLSZjeAmvcxfAk21hS6WHoZjBO5Em4nBrwe6lB6syt/rx+GWEQ1PcaVU1G24LVZKGuIb9wxTO/+C1v3VTctxl2PGICk2+5AZTS2G5hnI3VFg9c+KtXWt8hpb3Rz7Mj/U61aYdD8BxG7ifNvEgnX4uKsJKoWGdBizhGzG1S5Ijo3PdSq0/84Dzeu+/B2OQwsOvJJ3Lon64sKo8ozsZKy2GU8IHcayDDl2zjSb03DO1T+9jbbnM6C2HVplfaqAgjxcKoQ/98SqcmvdLY5ZHDFbqmM/27Z7JwzlMxWiSHfc7/Efte9ONI98QNmRiSzRYclhq9vsXHMgocLN8f/ef2vttZcDa+/0v0ki5eajUq3JIxCsmDyupVx8KEKqwmwwZdtc5O7p9yAktfKe7bDOP+5/d87dSTA9OUIia3QRqGRsZOu8UvbSDZJpK6ezB6tm9FJpguOQu58W/hDHCva1ERxvuNqyb1vHq69/3VZFiCBb3gVFsbd088mlXzon1i240j/nY9O0wYn3e+lDG5zPyErCq9pk/AWjQFpwENRv+NnLG3GlGlRvZXqW6CZJ2DpugxomgqsXJqslSd3+1r13HX4UeyduEnkdvGhuGZTn3wbobus1dZexbWZeprNF/gyjgFyXYEnX8diJ7tTJVDHjnP1Hnej2h+y2/pMaa+KQUklr+tVkjNRd28pVgpOr83Ll3G3YcdSeuKlbHzSDY0cPyMh+i7U7Sv8YVFb3Sj18lI/VIfqdPdC6He8jD0C+Rjt/svj38LstH8yBEnzrazGXyOrybzVaPioQ69PMfodlgx+OLjBdx56CQ6iui4b+zXl5PmPGZ2b5UKfdA5hA6Opp2B6EKFEwtlHYpsk+i8dRh6diCWe5KFJpHOz0bzOxfXZjMWGD4Q2M1n5G/0qL5TTeZCFKrLVivPGLEgrJz7LvdMnGJOSo6L5uHb8J1Z04vu1hqAzng6OIp2tjVbyyTRY4OM3qsCCK2/BqOdLifOSSU36fw76oM81TgwKmoohwlm+WSJFMcOi+ZNlmOMWBAWv/gyDxz7HfQilngYsMvOnPDYA6ZqjQLjvW+PxmTamUQ7Q6U3pkBKgVPDZBeabBNIPTkC7TX72Kk6nZ5pUEe9F9HiqFEbSmZGPwcDB6HQEND5HZ50lVOTUfDx47OZfup/5a/MEwFGt9aUO28xl+sqhFoEu5LiWDZzMB3089BBCbhicAFbzUYky7wP+uQeVp8pjheCJEFyzoKfF1oKNeqFbRAYI/S/jjBmi3kSqJCt5u6KquQYsSDYz59393088aMLi8rrK1OOZOL/XeN7vT8636ST49nMnqRsByAPKqwaDL/xzciFSKvw3YHe+n3UppUYq6M6kVv3I/fNdJvJXuuBIB3Xbbcd/U47LUpREMbyBG+/nc3HhmraFfAVhEmalWZHcUby6pLk9Sack2AFFtgvO/zKsOy1N0zptt23DoxdhMFf3938vv1nz2YWHaxBMAqN/elkN1L0NVssGAmY/KfMWs+hEKsl/07950tRB9nHCYRZ2Mx/nWR2X8t+CDfh8cFcrw/o2ue80st5JVzq1/3bs0cgGMs8vUmCuSQdywa4V/TJ3de1X2Wo5PONJxn210jSDEeLJHkS8MgQmBL1eZExi5qv/Yfk2+3W8ALjtSVdm0G6HPnCk8xNqiAiKgGEE67/xqTaeSR4k6S5Io+Q7u5qglW6DIaa3J40I9CM4WSR71eNlb+h72DvifG+iLWY7R3oK76P2rwS9RuZM4pdCGmRJjw3r2W28ElrN7/7Hve9IJfCuW//T5geq8D4dstAc52xzBj6rrbDKqGqjdwHobMLKVNNjiZthjDijnxTYcoQY8m2GOWIjVup+2Qxie3s+3PSTbfUauZ/0pRyGWkUpFLl8+5jv301pDp1n8P8gomxDFTCXOju82i+UmxUitx1CIw1LIeim6qyviifP4cE/L8hEM3AtlBUzZ+gZuB8kovWoxgxVjOzZJZgOeLlyOetQt1qNKzdZh+7EaRO3fv28VpzhZ6EubTA0vwxWkWj3CQz2mEgminBBqOZYYpSP1GFRUMh9odMiy7PDGqO+g81j9jKOyERzbbbkpaz4CZPIYdBJpWXpJPP+0kvCkg3fOy7RSRYjGoSb5U1ZisqykmwJoRJqP4WwVos77E08isfRvBWhe2HhOgpCMijeDxI7f+9S/J7dka2R5pPOj2UGo3qLBRSp17SLUwamXzLLdIZoZTVlr3n1fNRaoIZ6q/F3HSz07vFIpmhKcKYDCWCSMBRQ+CxYrIrWcvcSd3LC0jsi/nibZLJdputUkUsz9QtzbxUcVwyycdR8tiIYg6vMf5vQmUTirmkVIe56ErmYxUpqYl1yR2os3IxyFRn/Tc2I4Da09p6WZ58UDnD/KiKhQqXD4Xi1m71MXlioS/6AZtRFi1DHSyvemQ0rWqFR1QzMi8irz4ue6Pue+R0XurUhjtMQoRzful7mYSwJUymtoVIHZb08n5Q2eVrXueKhQpzSkE0onZXBeFwc0aWNqYvuvGZymwXUbmX35KPhUtUe4ntIFEeNn0xebhDMqUqU5hrUaHAu0PhsFLlV1J//3BSK7dD26MZ0ZE/BbA8y2+573cjzouuFkKGvSfq88NAgWUK7FFkNg6UPLg0idT8kaQPMDrsvYblRO2oD7P8lntOQCUkTyUJGVSmMhFtrQK7DSXyWs2BKEskcxKp13YifVgjQtNdEq5cy28FjY3rKlUY5hmlUqelIp1FtFFDjVl6JUbZwuZHkPrnV0zCkdYcY9zKt/yWTMbuZpvFeUaYZ0V5ZjmJRjnJhkW4UaT364FIOUfMFh7VG3a0r9vRkElXCclTbkKGfX6xkk3JrOhdNqJRbrKRIdxrI9G+1oxo9Vp+yzn40l+KBZHMz5lwo1ySpxL2XdD1YtWpkllHbcSwMhKNSpCNDOE+2B59u76I1e6h43qAsxCGWF7Lb1XaWQhCqQkZVZIVUqcKvG4RbVPh2hSHygx1yMxhWD0UfZuh6O+Uc/ktN0m9gqFudAUhyxl7C/uDUOD2YbDXsNKNzA9ExchGhnDtJ9E5ZgT6LUIakl3q5bfc95dC7ZSakGFQqtibxzmhwPnD4JSIRSoKxYZkYmMmyTMWo9yYgqS7oz5onFucUb3l7qgPc90+LkX/bZj0fs8SsFGBscOsL+VVEl1GNgNzSG6/Gl5YC0O8OurDjH0LM/6tFB311UbIQul9nmXYZwcNC1j8pZyoqBp1YzzpT75DeuhwxD04ehgKq1Q/tRp0f7Wowkr2Tlj/jer/3LLPuoRodLVkk/EUiQNXI6ZvQvSOMqo3aPaWl4pVqkQVlkJCFsrP2hYChwx1LRPfFehSySZjHNrzA6HvEJR7FRTh55kGjfoI47W60dWSJ04eIfMzVuyeNhR2qAaiUU2STcazKLtsRExfByMKSbKgiTF+0q2YSTJEkDxd5Szo8BKZkbVlDdJGRVWSzcaz8L318Md26FGqUb02GatFFZbSWdBhmQ6nDzF8rypEVZPNwIugpuGqDXBuGmqjeqp+NlzYGfXuc+79KiHkBh1+MhhuoopR9WSz8TLUp+EvrfBdzUW6QqrTL013dxZ0WKfDHwbDFXQDdBuy2XgVkhpcsRm+r1nqNSrpyhl788uvlKTWYaUOvx4EN+a3UPWi25FNxutwVgp+1mk5EkEz6v22anEWCuUhzI8O87qAnwyC5wq3TvWhW5PNxtvwFR2u1OFQHRoLeaZuB6KabTMdVutwvw6/HGR8KqobY4sgm4x3YbKASwTsqUJdUDdWtToLOqzX4RkdfjMQ/hO9FaoTWxzZZMyHsQqcq8I3FegT1J9aCmchKE3QdQG6lglbzDIM/oHwUXE1r05s0WST8Qn0VOGMBExJwC5J6FMDald01GuQ1mG5gJd1uEvAowMqNKasK/GlIZsXVsC+KhydhN1rYIcEDFShUbW68YpVp3qGVBt1+FzARzq8IODh/rCgYpWsInypyeaHtdBTga8pMFrAUMVYXQJarIXJMT9skmm7TgGtImO4GysBGCGJBcI0HfmgX4nnXXZrAP8fU2SSHI+S6FwAAAAASUVORK5CYII=';
|
|
57
|
+
const defaultMatrix = {
|
|
62
58
|
width: 190,
|
|
63
59
|
height: 150,
|
|
64
60
|
gapX: 20,
|
|
65
61
|
gapY: 20
|
|
66
62
|
};
|
|
67
63
|
/** 当前页面渲染map对象 */
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
64
|
+
let map = [];
|
|
65
|
+
let resizeTimeout;
|
|
66
|
+
let saveTimeout;
|
|
67
|
+
let dragData;
|
|
68
|
+
const impactBorder = 0.3; // 左右碰撞边界阈值 < 0.5,当0.5时则无中心碰撞 | impactBorder | 100% - impactBorder * 2 | impactBorder |
|
|
69
|
+
let dragLock = false;
|
|
70
|
+
let dirItem;
|
|
71
|
+
let contextMenuData;
|
|
72
|
+
const Dir = () => {
|
|
77
73
|
return jsx(Fragment, {
|
|
78
74
|
children: jsxs("svg", Object.assign({
|
|
79
75
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -96,36 +92,21 @@ var Dir = function Dir() {
|
|
|
96
92
|
}))
|
|
97
93
|
});
|
|
98
94
|
};
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
sort =
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
var _useState5 = useState('_'),
|
|
115
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
116
|
-
dir = _useState6[0],
|
|
117
|
-
setDir = _useState6[1]; // _ 显示列表页, key显示文件夹
|
|
118
|
-
var _useState7 = useState(false),
|
|
119
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
120
|
-
showInput = _useState8[0],
|
|
121
|
-
setShowInput = _useState8[1]; // 显示文件夹名字输入框
|
|
122
|
-
var _useState9 = useState(''),
|
|
123
|
-
_useState10 = _slicedToArray(_useState9, 2),
|
|
124
|
-
inputValue = _useState10[0],
|
|
125
|
-
setInputValue = _useState10[1]; // 文件夹名字
|
|
126
|
-
var sortJson = sort[dir] || {};
|
|
127
|
-
var intl = useFormatMessage('Drawer', localeJson);
|
|
128
|
-
var texts = {
|
|
95
|
+
const Desktop = props => {
|
|
96
|
+
const desktopRef = useRef();
|
|
97
|
+
const menuRef = useRef();
|
|
98
|
+
const {
|
|
99
|
+
sort = {},
|
|
100
|
+
tipMaxWidth = 500
|
|
101
|
+
} = props;
|
|
102
|
+
const [line, setLine] = useState(0); // 每行个数
|
|
103
|
+
const [data, setData] = useState([]); // 数据源
|
|
104
|
+
const [dir, setDir] = useState('_'); // _ 显示列表页, key显示文件夹
|
|
105
|
+
const [showInput, setShowInput] = useState(false); // 显示文件夹名字输入框
|
|
106
|
+
const [inputValue, setInputValue] = useState(''); // 文件夹名字
|
|
107
|
+
const sortJson = sort[dir] || {};
|
|
108
|
+
const intl = useFormatMessage('Drawer', localeJson);
|
|
109
|
+
const texts = {
|
|
129
110
|
createDir: intl({
|
|
130
111
|
id: 'createDir'
|
|
131
112
|
}),
|
|
@@ -136,19 +117,19 @@ var Desktop = function Desktop(props) {
|
|
|
136
117
|
id: 'outDir'
|
|
137
118
|
})
|
|
138
119
|
};
|
|
139
|
-
React__default.useEffect(
|
|
140
|
-
document.addEventListener('resize',
|
|
120
|
+
React__default.useEffect(() => {
|
|
121
|
+
document.addEventListener('resize', () => {
|
|
141
122
|
clearTimeout(resizeTimeout);
|
|
142
|
-
resizeTimeout = setTimeout(
|
|
123
|
+
resizeTimeout = setTimeout(() => {
|
|
143
124
|
setLine(getLine());
|
|
144
125
|
}, 200);
|
|
145
126
|
});
|
|
146
|
-
window.addEventListener('mousedown',
|
|
127
|
+
window.addEventListener('mousedown', e => {
|
|
147
128
|
if (e.target.closest('.menu-list')) return;
|
|
148
129
|
if (menuRef.current) menuRef.current.style.display = 'none';
|
|
149
130
|
});
|
|
150
131
|
}, []);
|
|
151
|
-
React__default.useEffect(
|
|
132
|
+
React__default.useEffect(() => {
|
|
152
133
|
setLine(getLine());
|
|
153
134
|
setData(props.data);
|
|
154
135
|
}, [props.data]);
|
|
@@ -156,10 +137,10 @@ var Desktop = function Desktop(props) {
|
|
|
156
137
|
* 计算每行个数
|
|
157
138
|
* @return number
|
|
158
139
|
*/
|
|
159
|
-
|
|
160
|
-
|
|
140
|
+
const getLine = () => {
|
|
141
|
+
const desktop = desktopRef.current;
|
|
161
142
|
if (desktop) {
|
|
162
|
-
|
|
143
|
+
const rect = desktop.getBoundingClientRect();
|
|
163
144
|
return rect.width / (defaultMatrix.width + defaultMatrix.gapX) | 0;
|
|
164
145
|
}
|
|
165
146
|
return 1;
|
|
@@ -168,10 +149,10 @@ var Desktop = function Desktop(props) {
|
|
|
168
149
|
* 点击事件
|
|
169
150
|
* @param e 元素
|
|
170
151
|
*/
|
|
171
|
-
|
|
152
|
+
const onClick = e => {
|
|
172
153
|
if (dragLock) return;
|
|
173
|
-
|
|
174
|
-
|
|
154
|
+
const key = e.currentTarget.getAttribute('data-key');
|
|
155
|
+
const mapItem = getMapItem(key);
|
|
175
156
|
if (mapItem.disable) return false;
|
|
176
157
|
if (mapItem.type !== 'dir') {
|
|
177
158
|
props.onClick && props.onClick(mapItem);
|
|
@@ -184,11 +165,11 @@ var Desktop = function Desktop(props) {
|
|
|
184
165
|
* 右键菜单
|
|
185
166
|
* @param e 元素
|
|
186
167
|
*/
|
|
187
|
-
|
|
168
|
+
const onContextMenu = e => {
|
|
188
169
|
if (dir === '_') return;
|
|
189
170
|
e.preventDefault();
|
|
190
171
|
if (dragLock) return;
|
|
191
|
-
|
|
172
|
+
const key = e.currentTarget.getAttribute('data-key');
|
|
192
173
|
contextMenuData = getMapItem(key);
|
|
193
174
|
setPoint(menuRef.current, e.pageX, e.pageY);
|
|
194
175
|
menuRef.current.style.display = 'block';
|
|
@@ -197,20 +178,18 @@ var Desktop = function Desktop(props) {
|
|
|
197
178
|
* 移出文件夹
|
|
198
179
|
* @param e 元素
|
|
199
180
|
*/
|
|
200
|
-
|
|
181
|
+
const outDir = e => {
|
|
201
182
|
if (dir === '_') return;
|
|
202
|
-
|
|
203
|
-
sortItem.children = sortItem.children.filter(
|
|
204
|
-
return key !== contextMenuData.key;
|
|
205
|
-
});
|
|
183
|
+
const sortItem = getSortRootItem(dirItem.key);
|
|
184
|
+
sortItem.children = sortItem.children.filter(key => key !== contextMenuData.key);
|
|
206
185
|
onSort();
|
|
207
186
|
if (sortItem.children.length > 0) {
|
|
208
|
-
|
|
187
|
+
const dom = getItemByKey(contextMenuData.key);
|
|
209
188
|
if (dom) dom.style.display = 'none';
|
|
210
|
-
|
|
211
|
-
|
|
189
|
+
let i = contextMenuData.index;
|
|
190
|
+
const l = map.length - 1;
|
|
212
191
|
for (; i < l; i++) {
|
|
213
|
-
|
|
192
|
+
const item = map[i + 1];
|
|
214
193
|
setNewPoint(item, i);
|
|
215
194
|
}
|
|
216
195
|
map.pop();
|
|
@@ -225,7 +204,7 @@ var Desktop = function Desktop(props) {
|
|
|
225
204
|
/**
|
|
226
205
|
* 返回列表
|
|
227
206
|
*/
|
|
228
|
-
|
|
207
|
+
const backList = () => {
|
|
229
208
|
dirItem = null;
|
|
230
209
|
setShowInput(false);
|
|
231
210
|
setDir('_');
|
|
@@ -234,7 +213,7 @@ var Desktop = function Desktop(props) {
|
|
|
234
213
|
* 文件夹dom
|
|
235
214
|
* @param displayName
|
|
236
215
|
*/
|
|
237
|
-
|
|
216
|
+
const createDir = displayName => {
|
|
238
217
|
return jsxs(Fragment, {
|
|
239
218
|
children: [jsx("div", Object.assign({
|
|
240
219
|
className: 'item-dir-body'
|
|
@@ -256,10 +235,10 @@ var Desktop = function Desktop(props) {
|
|
|
256
235
|
* @param type 文件夹 / 单个组件
|
|
257
236
|
* @return ReactNode
|
|
258
237
|
*/
|
|
259
|
-
|
|
238
|
+
const getItem = (item, index, type) => {
|
|
260
239
|
map[index] = getItemData(item, index, type);
|
|
261
240
|
item = map[index];
|
|
262
|
-
|
|
241
|
+
const style = {
|
|
263
242
|
left: "".concat(map[index].point.x, "px"),
|
|
264
243
|
top: "".concat(map[index].point.y, "px"),
|
|
265
244
|
width: defaultMatrix.width,
|
|
@@ -302,9 +281,9 @@ var Desktop = function Desktop(props) {
|
|
|
302
281
|
* @param index 下标
|
|
303
282
|
* @param type 文件夹 / 单个组件
|
|
304
283
|
*/
|
|
305
|
-
|
|
284
|
+
const getItemData = (item, index, type) => {
|
|
306
285
|
return {
|
|
307
|
-
index
|
|
286
|
+
index,
|
|
308
287
|
data: item,
|
|
309
288
|
key: item.key,
|
|
310
289
|
icon: item.icon,
|
|
@@ -320,11 +299,11 @@ var Desktop = function Desktop(props) {
|
|
|
320
299
|
* 获取位置大小
|
|
321
300
|
* @param index 下标
|
|
322
301
|
*/
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
302
|
+
const getPoint = index => {
|
|
303
|
+
const w = defaultMatrix.width + defaultMatrix.gapX;
|
|
304
|
+
const h = defaultMatrix.height + defaultMatrix.gapY;
|
|
305
|
+
const indexX = index % line; // X行
|
|
306
|
+
const indexY = index / line | 0; // Y行
|
|
328
307
|
return {
|
|
329
308
|
x: indexX * w,
|
|
330
309
|
y: indexY * h,
|
|
@@ -332,9 +311,9 @@ var Desktop = function Desktop(props) {
|
|
|
332
311
|
height: defaultMatrix.height
|
|
333
312
|
};
|
|
334
313
|
};
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
props.data.forEach(
|
|
314
|
+
const getAppMap = () => {
|
|
315
|
+
const appmap = {};
|
|
316
|
+
props.data.forEach(item => {
|
|
338
317
|
if (dir === '_') {
|
|
339
318
|
appmap[item.key] = item;
|
|
340
319
|
} else {
|
|
@@ -347,24 +326,26 @@ var Desktop = function Desktop(props) {
|
|
|
347
326
|
* 渲染应用列表
|
|
348
327
|
* @return ReactNode
|
|
349
328
|
*/
|
|
350
|
-
|
|
329
|
+
const getList = React__default.useMemo(() => {
|
|
351
330
|
if (line === 0) return null;
|
|
352
331
|
map = [];
|
|
353
332
|
// 存在排序数据
|
|
354
333
|
if (sortJson.length > 0) {
|
|
355
334
|
//dataMap
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
335
|
+
const appmap = getAppMap();
|
|
336
|
+
let index = 0;
|
|
337
|
+
let list1 = sortJson.map(sortItem => {
|
|
338
|
+
const {
|
|
339
|
+
key,
|
|
340
|
+
type
|
|
341
|
+
} = sortItem;
|
|
361
342
|
if (!appmap[key] && type !== 'dir') return;
|
|
362
|
-
|
|
343
|
+
const item = Object.assign({}, appmap[key]);
|
|
363
344
|
delete appmap[key];
|
|
364
|
-
|
|
345
|
+
let app;
|
|
365
346
|
if (type === 'dir') {
|
|
366
|
-
|
|
367
|
-
sortItem.children.forEach(
|
|
347
|
+
let isNull = true;
|
|
348
|
+
sortItem.children.forEach(child => {
|
|
368
349
|
if (appmap[child]) {
|
|
369
350
|
isNull = false;
|
|
370
351
|
delete appmap[child];
|
|
@@ -378,30 +359,30 @@ var Desktop = function Desktop(props) {
|
|
|
378
359
|
});
|
|
379
360
|
//if (dir === '_') {
|
|
380
361
|
// 是否存在排序列表之外的应用
|
|
381
|
-
|
|
362
|
+
const newapp = Object.keys(appmap);
|
|
382
363
|
if (newapp.length > 0) {
|
|
383
|
-
|
|
384
|
-
|
|
364
|
+
const list2 = newapp.map(key => {
|
|
365
|
+
const item = appmap[key];
|
|
385
366
|
return getItem(item, map.length);
|
|
386
367
|
});
|
|
387
|
-
list1 = [
|
|
368
|
+
list1 = [...list1, ...list2];
|
|
388
369
|
}
|
|
389
370
|
//}
|
|
390
371
|
return list1;
|
|
391
372
|
}
|
|
392
373
|
// 文件夹内部渲染
|
|
393
374
|
if (dir !== '_' && dirItem) {
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
return dirItem.children.map(
|
|
397
|
-
if (!
|
|
398
|
-
|
|
399
|
-
|
|
375
|
+
const appmap = getAppMap();
|
|
376
|
+
let index = 0;
|
|
377
|
+
return dirItem.children.map(key => {
|
|
378
|
+
if (!appmap[key]) return null; // 过滤已经不存在的应用
|
|
379
|
+
const app = getItem(appmap[key], index);
|
|
380
|
+
index++;
|
|
400
381
|
return app;
|
|
401
382
|
});
|
|
402
383
|
}
|
|
403
384
|
// 默认渲染
|
|
404
|
-
return props.data.map(
|
|
385
|
+
return props.data.map((item, index) => {
|
|
405
386
|
return getItem(item, index);
|
|
406
387
|
});
|
|
407
388
|
}, [data, line, dir]);
|
|
@@ -409,14 +390,14 @@ var Desktop = function Desktop(props) {
|
|
|
409
390
|
* mouseDown
|
|
410
391
|
* @param e 元素
|
|
411
392
|
*/
|
|
412
|
-
|
|
393
|
+
const onMouseDown = e => {
|
|
413
394
|
if (dragLock) return;
|
|
414
395
|
//reset();
|
|
415
|
-
|
|
396
|
+
const target = e.target.closest('.desktop-item');
|
|
416
397
|
if (!target) return;
|
|
417
|
-
|
|
398
|
+
const index = target.getAttribute('data-index');
|
|
418
399
|
dragData = Object.assign(Object.assign({}, map[index]), {
|
|
419
|
-
target
|
|
400
|
+
target,
|
|
420
401
|
start: {
|
|
421
402
|
x: e.pageX,
|
|
422
403
|
y: e.pageY
|
|
@@ -430,29 +411,29 @@ var Desktop = function Desktop(props) {
|
|
|
430
411
|
* 拖拽目标
|
|
431
412
|
* @param e {MouseEvent} 元素
|
|
432
413
|
*/
|
|
433
|
-
|
|
414
|
+
const onMouseMove = e => {
|
|
434
415
|
if (Math.abs(dragData.start.x - e.pageX) > 3) dragLock = true;
|
|
435
|
-
|
|
436
|
-
|
|
416
|
+
const x = dragData.point.x + (e.pageX - dragData.start.x);
|
|
417
|
+
const y = dragData.point.y + (e.pageY - dragData.start.y) + desktopRef.current.scrollTop;
|
|
437
418
|
setPoint(dragData.target, x, y);
|
|
438
419
|
// 计算光标碰撞
|
|
439
420
|
//const list = Object.keys(map);
|
|
440
|
-
|
|
421
|
+
const dragRect = {
|
|
441
422
|
// 矩阵
|
|
442
|
-
x
|
|
443
|
-
y
|
|
423
|
+
x,
|
|
424
|
+
y,
|
|
444
425
|
w: dragData.point.x + dragData.point.width,
|
|
445
426
|
h: dragData.point.y + dragData.point.height,
|
|
446
427
|
width: dragData.point.width,
|
|
447
428
|
height: dragData.point.height
|
|
448
429
|
};
|
|
449
|
-
|
|
430
|
+
const dragCentre = {
|
|
450
431
|
// 拖拽矩形中心点
|
|
451
432
|
x: dragRect.x + dragRect.width / 2,
|
|
452
433
|
y: dragRect.y + dragRect.height / 2
|
|
453
434
|
};
|
|
454
|
-
for (
|
|
455
|
-
|
|
435
|
+
for (let i = 0, l = map.length; i < l; i++) {
|
|
436
|
+
const item = map[i];
|
|
456
437
|
if (!item || String(item.key) === String(dragData.key)) continue;
|
|
457
438
|
if (item.parent && dir !== item.parent) continue;
|
|
458
439
|
/*
|
|
@@ -460,42 +441,42 @@ var Desktop = function Desktop(props) {
|
|
|
460
441
|
* | |
|
|
461
442
|
* |_____w,h
|
|
462
443
|
*/
|
|
463
|
-
|
|
444
|
+
const rect = {
|
|
464
445
|
// 矩阵
|
|
465
446
|
x: item.point.x,
|
|
466
447
|
y: item.point.y,
|
|
467
448
|
w: item.point.x + item.point.width,
|
|
468
449
|
h: item.point.y + item.point.height
|
|
469
450
|
};
|
|
470
|
-
|
|
451
|
+
let border = impactBorder;
|
|
471
452
|
// 中心点矩阵碰撞检测
|
|
472
453
|
if (checkPointRange(dragCentre, rect)) {
|
|
473
|
-
|
|
454
|
+
const impactDom = getItemByKey(item.key);
|
|
474
455
|
if (!impactDom) continue;
|
|
475
456
|
reset('impact');
|
|
476
457
|
impactDom.setAttribute('impact', 'true');
|
|
477
458
|
dragData.impact = {
|
|
478
459
|
data: item,
|
|
479
|
-
rect
|
|
460
|
+
rect
|
|
480
461
|
};
|
|
481
462
|
dragData.impact = {
|
|
482
463
|
data: item,
|
|
483
|
-
rect
|
|
464
|
+
rect
|
|
484
465
|
};
|
|
485
466
|
if (dragData.data.type === 'dir' || dir !== '_') {
|
|
486
467
|
border = 0.5;
|
|
487
468
|
}
|
|
488
469
|
// 计算碰撞位置,左,中,右
|
|
489
|
-
|
|
470
|
+
const dragCentre = {
|
|
490
471
|
// 拖拽矩形中心点
|
|
491
472
|
x: dragRect.x + dragRect.width / 2,
|
|
492
473
|
y: dragRect.y + dragRect.height / 2
|
|
493
474
|
};
|
|
494
|
-
|
|
495
|
-
if (
|
|
475
|
+
const width = item.point.width;
|
|
476
|
+
if (dragCentre.x < rect.x + width * border) {
|
|
496
477
|
dragData.position = 'left';
|
|
497
478
|
setPoint(impactDom, rect.x + 50);
|
|
498
|
-
} else if (
|
|
479
|
+
} else if (dragCentre.x > rect.w - width * border) {
|
|
499
480
|
dragData.position = 'right';
|
|
500
481
|
setPoint(impactDom, rect.x - 50);
|
|
501
482
|
} else {
|
|
@@ -511,24 +492,24 @@ var Desktop = function Desktop(props) {
|
|
|
511
492
|
* @param point {x: number, y: number}
|
|
512
493
|
* @param rect {x: number, y: number, w: number, h: number}
|
|
513
494
|
*/
|
|
514
|
-
|
|
495
|
+
const checkPointRange = (point, rect) => {
|
|
515
496
|
if (point.x > rect.x && point.y > rect.y && point.x < rect.w && point.y < rect.h) return point;
|
|
516
497
|
};
|
|
517
498
|
/**
|
|
518
499
|
* 拖拽目标
|
|
519
500
|
* @param e {MouseEvent} 元素
|
|
520
501
|
*/
|
|
521
|
-
|
|
502
|
+
const onMouseUp = e => {
|
|
522
503
|
window.removeEventListener('mousemove', onMouseMove);
|
|
523
504
|
window.removeEventListener('mouseup', onMouseUp);
|
|
524
|
-
setTimeout(
|
|
505
|
+
setTimeout(() => {
|
|
525
506
|
dragLock = false;
|
|
526
507
|
//ckeckPoint();
|
|
527
508
|
}, 100);
|
|
528
509
|
if (dragData.impact) {
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
510
|
+
const dragMapData = Object.assign({}, map[dragData.index]);
|
|
511
|
+
const impact = dragData.impact.data;
|
|
512
|
+
const impactDom = getItemByKey(impact.key);
|
|
532
513
|
if (impact.index - dragData.index === -1 && dragData.position === 'right' ||
|
|
533
514
|
// 相邻右侧碰撞
|
|
534
515
|
impact.index - dragData.index === 1 && dragData.position === 'left' ||
|
|
@@ -539,10 +520,10 @@ var Desktop = function Desktop(props) {
|
|
|
539
520
|
reset();
|
|
540
521
|
return;
|
|
541
522
|
}
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
523
|
+
let index = impact.index;
|
|
524
|
+
let t;
|
|
525
|
+
let l = dragData.index;
|
|
526
|
+
let i = index;
|
|
546
527
|
if (index > dragData.index) {
|
|
547
528
|
// 碰撞目标在拖拽目标右侧
|
|
548
529
|
t = 'R';
|
|
@@ -566,13 +547,13 @@ var Desktop = function Desktop(props) {
|
|
|
566
547
|
}
|
|
567
548
|
Object.assign({}, map[index]);
|
|
568
549
|
// 顺延坐标
|
|
569
|
-
|
|
550
|
+
let temp;
|
|
570
551
|
if (dragData.position === 'centre') {
|
|
571
552
|
// 文件夹处理
|
|
572
553
|
i = dragData.index;
|
|
573
554
|
l = map.length - 1;
|
|
574
555
|
for (; i < l; i++) {
|
|
575
|
-
|
|
556
|
+
const item = map[i + 1];
|
|
576
557
|
setNewPoint(item, i);
|
|
577
558
|
}
|
|
578
559
|
map.pop();
|
|
@@ -580,14 +561,14 @@ var Desktop = function Desktop(props) {
|
|
|
580
561
|
temp = Object.assign({}, map[l]); // 备份移动节点
|
|
581
562
|
if (t === 'R') {
|
|
582
563
|
for (; l < i; l++) {
|
|
583
|
-
|
|
584
|
-
setNewPoint(
|
|
564
|
+
const item = map[l + 1];
|
|
565
|
+
setNewPoint(item, l);
|
|
585
566
|
}
|
|
586
567
|
}
|
|
587
568
|
if (t === 'L') {
|
|
588
569
|
for (; l > i; l--) {
|
|
589
|
-
|
|
590
|
-
setNewPoint(
|
|
570
|
+
const item = map[l - 1];
|
|
571
|
+
setNewPoint(item, l);
|
|
591
572
|
}
|
|
592
573
|
}
|
|
593
574
|
setNewPoint(temp, i);
|
|
@@ -608,21 +589,21 @@ var Desktop = function Desktop(props) {
|
|
|
608
589
|
* @param dragMapData 碰撞对象
|
|
609
590
|
* @param t 方向
|
|
610
591
|
*/
|
|
611
|
-
|
|
592
|
+
const newDir = (item, dragMapData, t) => {
|
|
612
593
|
if (t === 'R') item.index--;
|
|
613
|
-
|
|
594
|
+
const key = "dir_".concat(item.key).concat(Math.random() * 1000000 | 0);
|
|
614
595
|
map[item.index] = Object.assign(Object.assign({}, item), {
|
|
615
|
-
key
|
|
596
|
+
key,
|
|
616
597
|
point: getPoint(item.index),
|
|
617
598
|
type: 'dir',
|
|
618
599
|
displayName: texts.createDir,
|
|
619
600
|
children: [item.key, dragMapData.key]
|
|
620
601
|
});
|
|
621
|
-
|
|
602
|
+
const dirDom = getItemByKey(item.key);
|
|
622
603
|
dirDom === null || dirDom === void 0 ? void 0 : dirDom.setAttribute('data-key', key);
|
|
623
604
|
dirDom === null || dirDom === void 0 ? void 0 : dirDom.classList.add('desktop-dir');
|
|
624
605
|
ReactDOM.render(createDir(map[item.index].displayName || ''), dirDom);
|
|
625
|
-
|
|
606
|
+
const dragDataDom = getItemByKey(dragData.key);
|
|
626
607
|
dragDataDom === null || dragDataDom === void 0 ? void 0 : dragDataDom.setAttribute('in-dir', 'true');
|
|
627
608
|
};
|
|
628
609
|
/**
|
|
@@ -630,20 +611,20 @@ var Desktop = function Desktop(props) {
|
|
|
630
611
|
* @param item {mapProps} 当前数据
|
|
631
612
|
* @param dragMapData 碰撞对象
|
|
632
613
|
*/
|
|
633
|
-
|
|
634
|
-
|
|
614
|
+
const addDir = (item, dragMapData) => {
|
|
615
|
+
const mapItem = getMapItem(item.key);
|
|
635
616
|
if (!mapItem) return;
|
|
636
617
|
mapItem.children.push(dragMapData.key);
|
|
637
|
-
|
|
618
|
+
const dragDataDom = getItemByKey(dragData.key);
|
|
638
619
|
dragDataDom === null || dragDataDom === void 0 ? void 0 : dragDataDom.setAttribute('in-dir', 'true');
|
|
639
620
|
};
|
|
640
621
|
/**
|
|
641
622
|
* 获取数据
|
|
642
623
|
* @param key 键值
|
|
643
624
|
*/
|
|
644
|
-
|
|
625
|
+
const getMapItem = key => {
|
|
645
626
|
if (!key) return null;
|
|
646
|
-
for (
|
|
627
|
+
for (let i = 0, l = map.length; i < l; i++) {
|
|
647
628
|
if (map[i].key === key) return map[i];
|
|
648
629
|
}
|
|
649
630
|
return null;
|
|
@@ -654,11 +635,11 @@ var Desktop = function Desktop(props) {
|
|
|
654
635
|
* @param next 下一个节点索引
|
|
655
636
|
* @param point 位置
|
|
656
637
|
*/
|
|
657
|
-
|
|
638
|
+
const setNewPoint = (item, next, point) => {
|
|
658
639
|
// item 当前节点,下一个节点索引
|
|
659
640
|
if (!item) return;
|
|
660
641
|
if (!point) point = getPoint(next);
|
|
661
|
-
|
|
642
|
+
const dom = getItemByKey(item.key);
|
|
662
643
|
if (!dom) return;
|
|
663
644
|
setPoint(dom, point === null || point === void 0 ? void 0 : point.x, point === null || point === void 0 ? void 0 : point.y);
|
|
664
645
|
// 重新创建索引
|
|
@@ -670,11 +651,11 @@ var Desktop = function Desktop(props) {
|
|
|
670
651
|
/**
|
|
671
652
|
* 复位
|
|
672
653
|
*/
|
|
673
|
-
|
|
654
|
+
const reset = type => {
|
|
674
655
|
var _a, _b, _c;
|
|
675
656
|
switch (type) {
|
|
676
657
|
case 'impact':
|
|
677
|
-
|
|
658
|
+
const impactDom = document.querySelector('[impact="true"]');
|
|
678
659
|
if (!impactDom) return;
|
|
679
660
|
if (dragData && dragData.impact) {
|
|
680
661
|
setPoint(impactDom, dragData.impact.rect.x, dragData.impact.rect.y);
|
|
@@ -703,17 +684,17 @@ var Desktop = function Desktop(props) {
|
|
|
703
684
|
* @param x 左
|
|
704
685
|
* @param y 上
|
|
705
686
|
*/
|
|
706
|
-
|
|
687
|
+
const setPoint = (dom, x, y) => {
|
|
707
688
|
if (!dom) return;
|
|
708
689
|
if (x !== undefined || x !== null) dom.style.left = "".concat(x, "px");
|
|
709
690
|
if (y !== undefined || y !== null) dom.style.top = "".concat(y, "px");
|
|
710
691
|
};
|
|
711
692
|
/** 排序 */
|
|
712
|
-
|
|
693
|
+
const onSort = () => {
|
|
713
694
|
if (!props.onSort) return;
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
map.forEach(
|
|
695
|
+
const data = [];
|
|
696
|
+
let index = 0;
|
|
697
|
+
map.forEach(item => {
|
|
717
698
|
data[index] = {
|
|
718
699
|
key: item.key,
|
|
719
700
|
type: item.type
|
|
@@ -723,47 +704,47 @@ var Desktop = function Desktop(props) {
|
|
|
723
704
|
if (item.parent !== undefined) data[index].parent = item.parent;
|
|
724
705
|
index++;
|
|
725
706
|
});
|
|
726
|
-
|
|
707
|
+
const sortData = DeepClone(sort);
|
|
727
708
|
if (data.length > 0) sortData[dir] = data;
|
|
728
709
|
props.onSort && props.onSort(sortData);
|
|
729
710
|
};
|
|
730
711
|
/**
|
|
731
712
|
* 点击文件夹名字
|
|
732
713
|
*/
|
|
733
|
-
|
|
714
|
+
const clickDirName = () => {
|
|
734
715
|
setShowInput(true);
|
|
735
716
|
setInputValue(dirItem.displayName || texts.createDir);
|
|
736
717
|
};
|
|
737
718
|
/**
|
|
738
719
|
* 失去焦点设置文件夹名字
|
|
739
720
|
*/
|
|
740
|
-
|
|
721
|
+
const saveTitle = () => {
|
|
741
722
|
dirItem.displayName = inputValue || texts.createDir;
|
|
742
723
|
setShowInput(false);
|
|
743
|
-
|
|
724
|
+
const sortItem = getSortRootItem(dirItem.key);
|
|
744
725
|
sortItem.displayName = inputValue || texts.createDir;
|
|
745
726
|
onSort();
|
|
746
727
|
};
|
|
747
728
|
/**
|
|
748
729
|
* 通过key查询排序对象所在节点
|
|
749
730
|
*/
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
for (
|
|
753
|
-
|
|
731
|
+
const getSortRootItem = key => {
|
|
732
|
+
const sortList = sort['_'] || [];
|
|
733
|
+
for (let i = 0, l = sortList.length; i < l; i++) {
|
|
734
|
+
const sortItem = sortList[i];
|
|
754
735
|
if (sortItem.key === key) return sortItem;
|
|
755
736
|
}
|
|
756
737
|
};
|
|
757
738
|
/**
|
|
758
739
|
* 改变输入框
|
|
759
740
|
*/
|
|
760
|
-
|
|
741
|
+
const changeInput = event => {
|
|
761
742
|
setInputValue(event.target.value);
|
|
762
743
|
};
|
|
763
744
|
/**
|
|
764
745
|
* 文件夹头部
|
|
765
746
|
*/
|
|
766
|
-
|
|
747
|
+
const DirTitleMemo = useMemo(() => {
|
|
767
748
|
return dir !== '_' && jsx("div", Object.assign({
|
|
768
749
|
className: "desktop-title"
|
|
769
750
|
}, {
|
|
@@ -814,7 +795,7 @@ var Desktop = function Desktop(props) {
|
|
|
814
795
|
/**
|
|
815
796
|
* 拖拽内容
|
|
816
797
|
*/
|
|
817
|
-
|
|
798
|
+
const DragMemo = useMemo(() => {
|
|
818
799
|
return jsx("div", Object.assign({
|
|
819
800
|
ref: desktopRef,
|
|
820
801
|
className: 'desktop-box',
|
|
@@ -827,8 +808,8 @@ var Desktop = function Desktop(props) {
|
|
|
827
808
|
* 处理class
|
|
828
809
|
* @return {string}
|
|
829
810
|
*/
|
|
830
|
-
|
|
831
|
-
|
|
811
|
+
const handClass = () => {
|
|
812
|
+
let str = "".concat($prefixCls, "-desktop");
|
|
832
813
|
if (props.className) str += " ".concat(props.className);
|
|
833
814
|
return str;
|
|
834
815
|
};
|
|
@@ -853,7 +834,7 @@ var Desktop = function Desktop(props) {
|
|
|
853
834
|
}))]
|
|
854
835
|
}));
|
|
855
836
|
};
|
|
856
|
-
|
|
837
|
+
const getItemByKey = key => {
|
|
857
838
|
return document.querySelector("[data-key=\"".concat(key, "\"]"));
|
|
858
839
|
};
|
|
859
840
|
|