@whitesev/pops 2.4.6 → 2.4.7
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/dist/index.amd.js +578 -571
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +578 -571
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +578 -571
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +578 -571
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +578 -571
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +578 -571
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/types/PopsDOMUtilsEventType.d.ts +252 -252
- package/dist/types/src/types/animation.d.ts +19 -19
- package/dist/types/src/types/button.d.ts +187 -187
- package/dist/types/src/types/components.d.ts +210 -210
- package/dist/types/src/types/event.d.ts +63 -63
- package/dist/types/src/types/global.d.ts +25 -25
- package/dist/types/src/types/icon.d.ts +32 -32
- package/dist/types/src/types/inst.d.ts +24 -24
- package/dist/types/src/types/main.d.ts +111 -111
- package/dist/types/src/types/mask.d.ts +49 -49
- package/dist/types/src/types/position.d.ts +60 -60
- package/index.ts +3 -0
- package/package.json +4 -2
- package/src/Pops.ts +206 -0
- package/src/PopsAnimation.ts +32 -0
- package/src/PopsCSS.ts +51 -0
- package/src/PopsCore.ts +64 -0
- package/src/PopsIcon.ts +95 -0
- package/src/PopsInst.ts +21 -0
- package/src/components/alert/config.ts +62 -0
- package/src/components/alert/index.css +0 -0
- package/src/components/alert/index.ts +163 -0
- package/src/components/alert/types/index.ts +23 -0
- package/src/components/confirm/config.ts +90 -0
- package/src/components/confirm/index.css +0 -0
- package/src/components/confirm/index.ts +166 -0
- package/src/components/confirm/types/index.ts +17 -0
- package/src/components/drawer/config.ts +89 -0
- package/src/components/drawer/index.css +37 -0
- package/src/components/drawer/index.ts +237 -0
- package/src/components/drawer/types/index.ts +61 -0
- package/src/components/folder/config.ts +147 -0
- package/src/components/folder/folderIcon.ts +28 -0
- package/src/components/folder/index.css +303 -0
- package/src/components/folder/index.ts +929 -0
- package/src/components/folder/types/index.ts +97 -0
- package/src/components/iframe/config.ts +60 -0
- package/src/components/iframe/index.css +76 -0
- package/src/components/iframe/index.ts +334 -0
- package/src/components/iframe/types/index.ts +139 -0
- package/src/components/loading/config.ts +29 -0
- package/src/components/loading/index.css +66 -0
- package/src/components/loading/index.ts +99 -0
- package/src/components/loading/types/index.ts +34 -0
- package/src/components/panel/config.ts +519 -0
- package/src/components/panel/handlerComponents.ts +2900 -0
- package/src/components/panel/index.css +1222 -0
- package/src/components/panel/index.ts +207 -0
- package/src/components/panel/types/components-button.ts +68 -0
- package/src/components/panel/types/components-common.ts +50 -0
- package/src/components/panel/types/components-deepMenu.ts +84 -0
- package/src/components/panel/types/components-forms.ts +44 -0
- package/src/components/panel/types/components-input.ts +78 -0
- package/src/components/panel/types/components-own.ts +30 -0
- package/src/components/panel/types/components-select.ts +93 -0
- package/src/components/panel/types/components-selectMultiple.ts +130 -0
- package/src/components/panel/types/components-slider.ts +77 -0
- package/src/components/panel/types/components-switch.ts +56 -0
- package/src/components/panel/types/components-textarea.ts +68 -0
- package/src/components/panel/types/index.ts +177 -0
- package/src/components/prompt/config.ts +94 -0
- package/src/components/prompt/index.css +34 -0
- package/src/components/prompt/index.ts +216 -0
- package/src/components/prompt/types/index.ts +55 -0
- package/src/components/rightClickMenu/config.ts +98 -0
- package/src/components/rightClickMenu/index.css +112 -0
- package/src/components/rightClickMenu/index.ts +602 -0
- package/src/components/rightClickMenu/types/index.ts +97 -0
- package/src/components/searchSuggestion/config.ts +56 -0
- package/src/components/searchSuggestion/index.ts +856 -0
- package/src/components/searchSuggestion/types/index.ts +239 -0
- package/src/components/tooltip/config.ts +34 -0
- package/src/components/tooltip/index.css +199 -0
- package/src/components/tooltip/index.ts +604 -0
- package/src/components/tooltip/types/index.ts +117 -0
- package/src/config/CommonCSSClassName.ts +17 -0
- package/src/config/GlobalConfig.ts +63 -0
- package/src/css/animation.css +987 -0
- package/src/css/button.css +551 -0
- package/src/css/common.css +48 -0
- package/src/css/index.css +253 -0
- package/src/css/ninePalaceGridPosition.css +50 -0
- package/src/css/scrollbar.css +22 -0
- package/src/handler/PopsElementHandler.ts +304 -0
- package/src/handler/PopsHandler.ts +589 -0
- package/src/svg/arrowLeft.svg +4 -0
- package/src/svg/arrowRight.svg +4 -0
- package/src/svg/chromeFilled.svg +11 -0
- package/src/svg/circleClose.svg +8 -0
- package/src/svg/close.svg +5 -0
- package/src/svg/cpu.svg +8 -0
- package/src/svg/delete.svg +5 -0
- package/src/svg/documentCopy.svg +5 -0
- package/src/svg/edit.svg +8 -0
- package/src/svg/eleme.svg +5 -0
- package/src/svg/elemePlus.svg +5 -0
- package/src/svg/headset.svg +5 -0
- package/src/svg/hide.svg +8 -0
- package/src/svg/keyboard.svg +8 -0
- package/src/svg/loading.svg +5 -0
- package/src/svg/max.svg +5 -0
- package/src/svg/min.svg +5 -0
- package/src/svg/mise.svg +5 -0
- package/src/svg/monitor.svg +5 -0
- package/src/svg/next.svg +5 -0
- package/src/svg/picture.svg +8 -0
- package/src/svg/prev.svg +5 -0
- package/src/svg/search.svg +5 -0
- package/src/svg/share.svg +5 -0
- package/src/svg/upload.svg +5 -0
- package/src/svg/videoPause.svg +5 -0
- package/src/svg/videoPlay.svg +5 -0
- package/src/svg/view.svg +5 -0
- package/src/types/PopsDOMUtilsEventType.d.ts +252 -0
- package/src/types/animation.d.ts +19 -0
- package/src/types/button.d.ts +187 -0
- package/src/types/components.d.ts +210 -0
- package/src/types/event.d.ts +63 -0
- package/src/types/global.d.ts +25 -0
- package/src/types/icon.d.ts +32 -0
- package/src/types/inst.d.ts +24 -0
- package/src/types/main.d.ts +111 -0
- package/src/types/mask.d.ts +49 -0
- package/src/types/position.d.ts +60 -0
- package/src/utils/PopsDOMUtils.ts +2408 -0
- package/src/utils/PopsDOMUtilsEventsConfig.ts +4 -0
- package/src/utils/PopsInstanceUtils.ts +688 -0
- package/src/utils/PopsMathUtils.ts +71 -0
- package/src/utils/PopsSafeUtils.ts +22 -0
- package/src/utils/PopsUtils.ts +406 -0
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
import type { PopsAlertDetails } from "../components/alert/types";
|
|
2
|
+
import type { PopsConfirmDetails } from "../components/confirm/types";
|
|
3
|
+
import type { PopsDrawerDetails } from "../components/drawer/types";
|
|
4
|
+
import type { PopsFolderDetails } from "../components/folder/types";
|
|
5
|
+
import type { PopsIframeDetails } from "../components/iframe/types";
|
|
6
|
+
import type { PopsLoadingDetails } from "../components/loading/types";
|
|
7
|
+
import type { PopsPanelDetails } from "../components/panel/types";
|
|
8
|
+
import type { PopsPromptDetails } from "../components/prompt/types/index";
|
|
9
|
+
import { PopsCore } from "../PopsCore";
|
|
10
|
+
import { PopsAnimation } from "../PopsAnimation";
|
|
11
|
+
import { PopsInstData } from "../PopsInst";
|
|
12
|
+
import type { PopsCommonConfig } from "../types/components";
|
|
13
|
+
import type { PopsEventDetails, PopsHandlerEventDetails } from "../types/event";
|
|
14
|
+
import type { PopsInstCommonConfig } from "../types/inst";
|
|
15
|
+
import type { PopsInstStoreType, PopsType, PopsSupportAnimDetailsType, PopsSupportOnlyDetails } from "../types/main";
|
|
16
|
+
import { popsDOMUtils } from "../utils/PopsDOMUtils";
|
|
17
|
+
import { PopsInstanceUtils } from "../utils/PopsInstanceUtils";
|
|
18
|
+
import { popsUtils } from "../utils/PopsUtils";
|
|
19
|
+
|
|
20
|
+
export const PopsHandler = {
|
|
21
|
+
/**
|
|
22
|
+
* 创建shadow
|
|
23
|
+
*/
|
|
24
|
+
handlerShadow(config: Pick<PopsCommonConfig, "useShadowRoot">) {
|
|
25
|
+
const $shadowContainer = document.createElement("div");
|
|
26
|
+
$shadowContainer.className = "pops-shadow-container";
|
|
27
|
+
if (config.useShadowRoot) {
|
|
28
|
+
const $shadowRoot = $shadowContainer.attachShadow({ mode: "open" });
|
|
29
|
+
return {
|
|
30
|
+
$shadowContainer,
|
|
31
|
+
$shadowRoot,
|
|
32
|
+
};
|
|
33
|
+
} else {
|
|
34
|
+
return {
|
|
35
|
+
$shadowContainer,
|
|
36
|
+
$shadowRoot: $shadowContainer,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
/**
|
|
41
|
+
* 处理初始化
|
|
42
|
+
* @param $styleParent style元素的父元素
|
|
43
|
+
* @param css 添加进ShadowRoot的CSS
|
|
44
|
+
*/
|
|
45
|
+
handleInit(
|
|
46
|
+
$styleParent?: ShadowRoot | HTMLElement,
|
|
47
|
+
css?:
|
|
48
|
+
| string
|
|
49
|
+
| string[]
|
|
50
|
+
| {
|
|
51
|
+
name?: string;
|
|
52
|
+
css: string;
|
|
53
|
+
}[]
|
|
54
|
+
) {
|
|
55
|
+
PopsAnimation.init();
|
|
56
|
+
if (!arguments.length) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if ($styleParent == null) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (css == null) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (typeof css === "string") {
|
|
67
|
+
if (css.trim() === "") {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
css = [
|
|
71
|
+
{
|
|
72
|
+
css: css,
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
} else {
|
|
76
|
+
css = css.map((item) => {
|
|
77
|
+
if (typeof item === "string") {
|
|
78
|
+
return {
|
|
79
|
+
css: item,
|
|
80
|
+
};
|
|
81
|
+
} else {
|
|
82
|
+
return item;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
for (const cssItem of css) {
|
|
87
|
+
const $css = popsDOMUtils.createElement(
|
|
88
|
+
"style",
|
|
89
|
+
{},
|
|
90
|
+
{
|
|
91
|
+
"data-type": "PopsHandler.handleInit",
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
$css.textContent = cssItem.css;
|
|
95
|
+
if (typeof cssItem.name === "string") {
|
|
96
|
+
$css.setAttribute("data-name", cssItem.name);
|
|
97
|
+
}
|
|
98
|
+
$styleParent.appendChild($css);
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
/**
|
|
102
|
+
* 处理遮罩层
|
|
103
|
+
*
|
|
104
|
+
* + 设置遮罩层的点击事件
|
|
105
|
+
* @param details 传递的配置
|
|
106
|
+
*/
|
|
107
|
+
handleMask(
|
|
108
|
+
details = {} as {
|
|
109
|
+
type: "alert" | "confirm" | "prompt" | "loading" | "iframe" | "drawer" | "folder" | "panel";
|
|
110
|
+
guid: string;
|
|
111
|
+
config:
|
|
112
|
+
| Required<PopsAlertDetails>
|
|
113
|
+
| Required<PopsLoadingDetails>
|
|
114
|
+
| Required<PopsIframeDetails>
|
|
115
|
+
| Required<PopsDrawerDetails>
|
|
116
|
+
| Required<PopsPanelDetails>
|
|
117
|
+
| Required<PopsFolderDetails>;
|
|
118
|
+
animElement: HTMLElement;
|
|
119
|
+
maskHTML: string;
|
|
120
|
+
}
|
|
121
|
+
) {
|
|
122
|
+
const result = {
|
|
123
|
+
maskElement: popsDOMUtils.parseTextToDOM<HTMLDivElement>(details.maskHTML),
|
|
124
|
+
};
|
|
125
|
+
let isMaskClick = false;
|
|
126
|
+
/**
|
|
127
|
+
* 点击其它区域的事件
|
|
128
|
+
* @param event
|
|
129
|
+
*/
|
|
130
|
+
function clickEvent(event: MouseEvent | PointerEvent) {
|
|
131
|
+
popsDOMUtils.preventEvent(event);
|
|
132
|
+
// 获取该类型实例存储列表
|
|
133
|
+
const targetInst = PopsInstData[details.type];
|
|
134
|
+
function originalRun() {
|
|
135
|
+
if (details.config.mask!.clickEvent!.toClose) {
|
|
136
|
+
/* 关闭 */
|
|
137
|
+
return PopsInstanceUtils.close(details.type, targetInst, details.guid, details.config, details.animElement);
|
|
138
|
+
} else if (details.config.mask!.clickEvent!.toHide) {
|
|
139
|
+
/* 隐藏 */
|
|
140
|
+
return PopsInstanceUtils.hide(
|
|
141
|
+
details.type,
|
|
142
|
+
targetInst,
|
|
143
|
+
details.guid,
|
|
144
|
+
details.config,
|
|
145
|
+
details.animElement,
|
|
146
|
+
result.maskElement
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (typeof details.config.mask.clickCallBack === "function") {
|
|
151
|
+
details.config.mask.clickCallBack(originalRun, details.config);
|
|
152
|
+
} else {
|
|
153
|
+
originalRun();
|
|
154
|
+
}
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
// 判断是否启用了遮罩层点击动作
|
|
158
|
+
if (details.config.mask.clickEvent!.toClose || details.config.mask.clickEvent!.toHide) {
|
|
159
|
+
/**
|
|
160
|
+
* 判断点击的元素是否是动画层的元素
|
|
161
|
+
* @param element
|
|
162
|
+
* @returns
|
|
163
|
+
*/
|
|
164
|
+
function isAnimElement(element: HTMLElement) {
|
|
165
|
+
return Boolean(
|
|
166
|
+
element?.localName?.toLowerCase() === "div" &&
|
|
167
|
+
element.className &&
|
|
168
|
+
element.className === "pops-anim" &&
|
|
169
|
+
element.hasAttribute("anim")
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
/* 判断按下的元素是否是pops-anim */
|
|
173
|
+
popsDOMUtils.on(details.animElement, ["touchstart", "mousedown"], void 0, (event) => {
|
|
174
|
+
const $click = event.composedPath()[0] as HTMLElement;
|
|
175
|
+
isMaskClick = isAnimElement($click);
|
|
176
|
+
});
|
|
177
|
+
/* 如果有动画层,在动画层上监听点击事件 */
|
|
178
|
+
popsDOMUtils.on<MouseEvent | PointerEvent>(details.animElement, "click", void 0, (event) => {
|
|
179
|
+
const $click = event.composedPath()[0] as HTMLElement;
|
|
180
|
+
if (isAnimElement($click) && isMaskClick) {
|
|
181
|
+
return clickEvent(event);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
/* 在遮罩层监听点击事件 */
|
|
185
|
+
/* 如果有动画层,那么该点击事件触发不了 */
|
|
186
|
+
popsDOMUtils.on<MouseEvent | PointerEvent>(result.maskElement, "click", void 0, (event) => {
|
|
187
|
+
isMaskClick = true;
|
|
188
|
+
clickEvent(event);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
return result;
|
|
192
|
+
},
|
|
193
|
+
/**
|
|
194
|
+
* 处理获取元素
|
|
195
|
+
* @param animElement
|
|
196
|
+
* @param type
|
|
197
|
+
*/
|
|
198
|
+
handleQueryElement(animElement: HTMLDivElement, type: PopsSupportAnimDetailsType) {
|
|
199
|
+
return {
|
|
200
|
+
/**
|
|
201
|
+
* 主元素
|
|
202
|
+
*/
|
|
203
|
+
popsElement: animElement.querySelector<HTMLDivElement>(".pops[type-value")!,
|
|
204
|
+
/**
|
|
205
|
+
* 确认按钮
|
|
206
|
+
*/
|
|
207
|
+
btnOkElement: animElement.querySelector<HTMLDivElement>(`.pops-${type}-btn-ok`)!,
|
|
208
|
+
/**
|
|
209
|
+
* 取消按钮
|
|
210
|
+
*/
|
|
211
|
+
btnCancelElement: animElement.querySelector<HTMLDivElement>(`.pops-${type}-btn-cancel`)!,
|
|
212
|
+
/**
|
|
213
|
+
* 其它按钮
|
|
214
|
+
*/
|
|
215
|
+
btnOtherElement: animElement.querySelector<HTMLDivElement>(`.pops-${type}-btn-other`)!,
|
|
216
|
+
/**
|
|
217
|
+
* 标题元素
|
|
218
|
+
*/
|
|
219
|
+
titleElement: animElement.querySelector<HTMLDivElement>(`.pops-${type}-title`)!,
|
|
220
|
+
/**
|
|
221
|
+
* 输入框元素
|
|
222
|
+
*/
|
|
223
|
+
inputElement: animElement.querySelector<HTMLTextAreaElement>(`.pops-${type}-content textarea[pops]`)
|
|
224
|
+
? animElement.querySelector<HTMLTextAreaElement>(`.pops-${type}-content textarea[pops]`)!
|
|
225
|
+
: animElement.querySelector<HTMLInputElement>(`.pops-${type}-content input[pops]`)!,
|
|
226
|
+
/**
|
|
227
|
+
* 顶部按钮控制层元素
|
|
228
|
+
*/
|
|
229
|
+
headerControlsElement: animElement.querySelector<HTMLDivElement>(".pops-header-controls")!,
|
|
230
|
+
/**
|
|
231
|
+
* iframe元素
|
|
232
|
+
*/
|
|
233
|
+
iframeElement: animElement.querySelector<HTMLIFrameElement>("iframe[pops]")!,
|
|
234
|
+
/**
|
|
235
|
+
* 加载中元素
|
|
236
|
+
*/
|
|
237
|
+
loadingElement: animElement.querySelector<HTMLDivElement>(".pops-loading")!,
|
|
238
|
+
/**
|
|
239
|
+
* 内容元素
|
|
240
|
+
*/
|
|
241
|
+
contentElement: animElement.querySelector<HTMLDivElement>(`.pops-${type}-content`)!,
|
|
242
|
+
/**
|
|
243
|
+
* panel的右侧容器元素
|
|
244
|
+
*/
|
|
245
|
+
panelSectionWrapper: animElement.querySelector<HTMLDivElement>(`.pops-${type}-section-wrapper`)!,
|
|
246
|
+
/**
|
|
247
|
+
* 内容侧边栏容器元素
|
|
248
|
+
*/
|
|
249
|
+
contentAsideElement: animElement.querySelector<HTMLDivElement>(`.pops-${type}-content aside.pops-${type}-aside`)!,
|
|
250
|
+
/**
|
|
251
|
+
* 内容主要区域容器元素
|
|
252
|
+
*/
|
|
253
|
+
contentSectionContainerElement: animElement.querySelector<HTMLDivElement>(
|
|
254
|
+
`.pops-${type}-content section.pops-${type}-container`
|
|
255
|
+
)!,
|
|
256
|
+
/**
|
|
257
|
+
* 内容加载中元素
|
|
258
|
+
*/
|
|
259
|
+
contentLoadingElement: animElement.querySelector<HTMLDivElement>(`.pops-${type}-content-global-loading`)!,
|
|
260
|
+
/**
|
|
261
|
+
* 顶部缩小按钮
|
|
262
|
+
*/
|
|
263
|
+
headerMinBtnElement: animElement.querySelector<HTMLDivElement>(".pops-header-control[data-type='min']")!,
|
|
264
|
+
/**
|
|
265
|
+
* 顶部放大按钮
|
|
266
|
+
*/
|
|
267
|
+
headerMaxBtnElement: animElement.querySelector<HTMLDivElement>(".pops-header-control[data-type='max']")!,
|
|
268
|
+
/**
|
|
269
|
+
* 顶部恢复原样按钮
|
|
270
|
+
*/
|
|
271
|
+
headerMiseBtnElement: animElement.querySelector<HTMLDivElement>(".pops-header-control[data-type='mise']")!,
|
|
272
|
+
/**
|
|
273
|
+
* 顶部关闭按钮
|
|
274
|
+
*/
|
|
275
|
+
headerCloseBtnElement: animElement.querySelector<HTMLDivElement>(".pops-header-control[data-type='close']")!,
|
|
276
|
+
/**
|
|
277
|
+
* 文件夹列表元素
|
|
278
|
+
*/
|
|
279
|
+
folderListElement: animElement.querySelector<HTMLDivElement>(".pops-folder-list")!,
|
|
280
|
+
/**
|
|
281
|
+
* 文件夹列表顶部元素
|
|
282
|
+
*/
|
|
283
|
+
folderListHeaderElement: animElement.querySelector<HTMLDivElement>(
|
|
284
|
+
".pops-folder-list .pops-folder-list-table__header-div"
|
|
285
|
+
)!,
|
|
286
|
+
/**
|
|
287
|
+
* 文件夹列表行元素
|
|
288
|
+
*/
|
|
289
|
+
folderListHeaderRowElement: animElement.querySelector<HTMLTableRowElement>(
|
|
290
|
+
".pops-folder-list .pops-folder-list-table__header-div .pops-folder-list-table__header-row"
|
|
291
|
+
)!,
|
|
292
|
+
/**
|
|
293
|
+
* 文件夹列表tbody元素
|
|
294
|
+
*/
|
|
295
|
+
folderListBodyElement: animElement.querySelector<HTMLTableElement>(
|
|
296
|
+
".pops-folder-list .pops-folder-list-table__body-div tbody"
|
|
297
|
+
)!,
|
|
298
|
+
/**
|
|
299
|
+
* 文件夹列表primary元素
|
|
300
|
+
*/
|
|
301
|
+
folderFileListBreadcrumbPrimaryElement: animElement.querySelector<HTMLDivElement>(
|
|
302
|
+
".pops-folder-list .pops-folder-file-list-breadcrumb-primary"
|
|
303
|
+
)!,
|
|
304
|
+
/**
|
|
305
|
+
* 文件夹排序按钮-文件名
|
|
306
|
+
*/
|
|
307
|
+
folderListSortFileNameElement: animElement.querySelector<HTMLDivElement>(
|
|
308
|
+
'.pops-folder-list-table__sort[data-sort="fileName"]'
|
|
309
|
+
)!,
|
|
310
|
+
/**
|
|
311
|
+
* 文件夹排序按钮-修改时间
|
|
312
|
+
*/
|
|
313
|
+
folderListSortLatestTimeElement: animElement.querySelector<HTMLDivElement>(
|
|
314
|
+
'.pops-folder-list-table__sort[data-sort="latestTime"]'
|
|
315
|
+
)!,
|
|
316
|
+
/**
|
|
317
|
+
* 文件夹排序按钮-文件大小
|
|
318
|
+
*/
|
|
319
|
+
folderListSortFileSizeElement: animElement.querySelector<HTMLDivElement>(
|
|
320
|
+
'.pops-folder-list-table__sort[data-sort="fileSize"]'
|
|
321
|
+
)!,
|
|
322
|
+
};
|
|
323
|
+
},
|
|
324
|
+
/**
|
|
325
|
+
* 获取事件配置
|
|
326
|
+
* @param guid
|
|
327
|
+
* @param $shadowContainer
|
|
328
|
+
* @param $shadowRoot
|
|
329
|
+
* @param mode 当前弹窗类型
|
|
330
|
+
* @param animElement 动画层
|
|
331
|
+
* @param popsElement 主元素
|
|
332
|
+
* @param maskElement 遮罩层
|
|
333
|
+
* @param config 当前配置
|
|
334
|
+
*/
|
|
335
|
+
handleEventDetails(
|
|
336
|
+
guid: string,
|
|
337
|
+
$shadowContainer: HTMLDivElement,
|
|
338
|
+
$shadowRoot: ShadowRoot | HTMLElement,
|
|
339
|
+
mode: PopsInstStoreType,
|
|
340
|
+
animElement: HTMLDivElement,
|
|
341
|
+
popsElement: HTMLDivElement,
|
|
342
|
+
maskElement: HTMLDivElement,
|
|
343
|
+
config:
|
|
344
|
+
| PopsAlertDetails
|
|
345
|
+
| PopsDrawerDetails
|
|
346
|
+
| PopsPromptDetails
|
|
347
|
+
| PopsConfirmDetails
|
|
348
|
+
| PopsIframeDetails
|
|
349
|
+
| PopsLoadingDetails
|
|
350
|
+
| PopsPanelDetails
|
|
351
|
+
| PopsFolderDetails
|
|
352
|
+
): PopsEventDetails {
|
|
353
|
+
return {
|
|
354
|
+
$shadowContainer: $shadowContainer,
|
|
355
|
+
$shadowRoot: $shadowRoot,
|
|
356
|
+
element: animElement,
|
|
357
|
+
animElement: animElement,
|
|
358
|
+
popsElement: popsElement,
|
|
359
|
+
maskElement: maskElement,
|
|
360
|
+
mode: mode,
|
|
361
|
+
guid: guid,
|
|
362
|
+
close() {
|
|
363
|
+
return PopsInstanceUtils.close(mode, PopsInstData[mode], guid, config, animElement);
|
|
364
|
+
},
|
|
365
|
+
hide() {
|
|
366
|
+
return PopsInstanceUtils.hide(mode, PopsInstData[mode], guid, config, animElement, maskElement);
|
|
367
|
+
},
|
|
368
|
+
show() {
|
|
369
|
+
return PopsInstanceUtils.show(mode, PopsInstData[mode], guid, config, animElement, maskElement);
|
|
370
|
+
},
|
|
371
|
+
};
|
|
372
|
+
},
|
|
373
|
+
/**
|
|
374
|
+
* 获取loading的事件配置
|
|
375
|
+
* @param guid
|
|
376
|
+
* @param mode 当前弹窗类型
|
|
377
|
+
* @param animElement 动画层
|
|
378
|
+
* @param popsElement 主元素
|
|
379
|
+
* @param maskElement 遮罩层
|
|
380
|
+
* @param config 当前配置
|
|
381
|
+
*/
|
|
382
|
+
handleLoadingEventDetails(
|
|
383
|
+
guid: string,
|
|
384
|
+
mode: "loading",
|
|
385
|
+
animElement: HTMLDivElement,
|
|
386
|
+
popsElement: HTMLDivElement,
|
|
387
|
+
maskElement: HTMLDivElement,
|
|
388
|
+
config:
|
|
389
|
+
| PopsAlertDetails
|
|
390
|
+
| PopsDrawerDetails
|
|
391
|
+
| PopsPromptDetails
|
|
392
|
+
| PopsConfirmDetails
|
|
393
|
+
| PopsIframeDetails
|
|
394
|
+
| PopsLoadingDetails
|
|
395
|
+
| PopsPanelDetails
|
|
396
|
+
| PopsFolderDetails
|
|
397
|
+
): Omit<PopsEventDetails, "$shadowContainer" | "$shadowRoot"> {
|
|
398
|
+
return {
|
|
399
|
+
element: animElement,
|
|
400
|
+
animElement: animElement,
|
|
401
|
+
popsElement: popsElement,
|
|
402
|
+
maskElement: maskElement,
|
|
403
|
+
mode: mode,
|
|
404
|
+
guid: guid,
|
|
405
|
+
close() {
|
|
406
|
+
return PopsInstanceUtils.close(mode, PopsInstData[mode], guid, config, animElement);
|
|
407
|
+
},
|
|
408
|
+
hide() {
|
|
409
|
+
return PopsInstanceUtils.hide(mode, PopsInstData[mode], guid, config, animElement, maskElement);
|
|
410
|
+
},
|
|
411
|
+
show() {
|
|
412
|
+
return PopsInstanceUtils.show(mode, PopsInstData[mode], guid, config, animElement, maskElement);
|
|
413
|
+
},
|
|
414
|
+
};
|
|
415
|
+
},
|
|
416
|
+
/**
|
|
417
|
+
* 处理返回的配置,针对popsHandler.handleEventDetails
|
|
418
|
+
*/
|
|
419
|
+
handleResultDetails<T>(details: T): Omit<T, "type" | "function"> {
|
|
420
|
+
const resultDetails = Object.assign({}, details);
|
|
421
|
+
popsUtils.delete(resultDetails, "type");
|
|
422
|
+
popsUtils.delete(resultDetails, "function");
|
|
423
|
+
return resultDetails;
|
|
424
|
+
},
|
|
425
|
+
/**
|
|
426
|
+
* 处理点击事件
|
|
427
|
+
* @param type 当前按钮类型
|
|
428
|
+
* @param $btn 按钮元素
|
|
429
|
+
* @param eventDetails 事件配置,由popsHandler.handleEventDetails创建的
|
|
430
|
+
* @param callback 点击回调
|
|
431
|
+
*/
|
|
432
|
+
handleClickEvent(
|
|
433
|
+
type: "cancel" | "close" | "ok" | "other",
|
|
434
|
+
$btn: HTMLElement,
|
|
435
|
+
eventDetails: PopsEventDetails,
|
|
436
|
+
callback: (details: PopsHandlerEventDetails, event: PointerEvent | MouseEvent) => void
|
|
437
|
+
) {
|
|
438
|
+
popsDOMUtils.on<PointerEvent | MouseEvent>(
|
|
439
|
+
$btn,
|
|
440
|
+
"click",
|
|
441
|
+
(event) => {
|
|
442
|
+
const extraParam = {
|
|
443
|
+
type: type,
|
|
444
|
+
};
|
|
445
|
+
callback(Object.assign(eventDetails, extraParam), event);
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
capture: true,
|
|
449
|
+
}
|
|
450
|
+
);
|
|
451
|
+
},
|
|
452
|
+
/**
|
|
453
|
+
* 全局监听键盘事件
|
|
454
|
+
* @param keyName 键名|键值
|
|
455
|
+
* @param otherKeyList 组合按键,数组类型,包含ctrl、shift、alt和meta(win键或mac的cmd键)
|
|
456
|
+
* @param callback 回调函数
|
|
457
|
+
*/
|
|
458
|
+
handleKeyboardEvent(keyName: string | number, otherKeyList: string[] = [], callback: (event: KeyboardEvent) => void) {
|
|
459
|
+
const keyboardEvent = function (event: KeyboardEvent) {
|
|
460
|
+
const _keyName = event.code || event.key;
|
|
461
|
+
const _keyValue = event.charCode || event.keyCode || event.which;
|
|
462
|
+
if (otherKeyList.includes("ctrl") && !event.ctrlKey) {
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
if (otherKeyList.includes("alt") && !event.altKey) {
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
if (otherKeyList.includes("meta") && !event.metaKey) {
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
if (otherKeyList.includes("shift") && !event.shiftKey) {
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
if (typeof keyName === "string" && keyName === _keyName) {
|
|
475
|
+
callback && callback(event);
|
|
476
|
+
} else if (typeof keyName === "number" && keyName === _keyValue) {
|
|
477
|
+
callback && callback(event);
|
|
478
|
+
}
|
|
479
|
+
};
|
|
480
|
+
popsDOMUtils.on(PopsCore.globalThis, "keydown", keyboardEvent, {
|
|
481
|
+
capture: true,
|
|
482
|
+
});
|
|
483
|
+
return {
|
|
484
|
+
removeKeyboardEvent() {
|
|
485
|
+
popsDOMUtils.off(globalThis, "keydown", keyboardEvent, {
|
|
486
|
+
capture: true,
|
|
487
|
+
});
|
|
488
|
+
},
|
|
489
|
+
};
|
|
490
|
+
},
|
|
491
|
+
/**
|
|
492
|
+
* 处理prompt的点击事件
|
|
493
|
+
* @param type 触发事件类型
|
|
494
|
+
* @param inputElement 输入框
|
|
495
|
+
* @param $btn 按钮元素
|
|
496
|
+
* @param eventDetails 事件配置,由popsHandler.handleEventDetails创建的
|
|
497
|
+
* @param callback 点击回调
|
|
498
|
+
*/
|
|
499
|
+
handlePromptClickEvent(
|
|
500
|
+
type: "ok" | "close" | "cancel" | "other",
|
|
501
|
+
inputElement: HTMLInputElement | HTMLTextAreaElement,
|
|
502
|
+
$btn: HTMLElement,
|
|
503
|
+
eventDetails: PopsEventDetails,
|
|
504
|
+
callback: (
|
|
505
|
+
details: PopsEventDetails & {
|
|
506
|
+
type: any;
|
|
507
|
+
text: string;
|
|
508
|
+
},
|
|
509
|
+
event: MouseEvent | PointerEvent
|
|
510
|
+
) => void
|
|
511
|
+
) {
|
|
512
|
+
popsDOMUtils.on<MouseEvent | PointerEvent>(
|
|
513
|
+
$btn,
|
|
514
|
+
"click",
|
|
515
|
+
(event) => {
|
|
516
|
+
// 额外参数
|
|
517
|
+
const extraParam = {
|
|
518
|
+
type: type,
|
|
519
|
+
text: inputElement.value,
|
|
520
|
+
};
|
|
521
|
+
callback(Object.assign(eventDetails, extraParam), event);
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
capture: true,
|
|
525
|
+
}
|
|
526
|
+
);
|
|
527
|
+
},
|
|
528
|
+
/**
|
|
529
|
+
* 把配置的z-index配置转为数字
|
|
530
|
+
* @param zIndex
|
|
531
|
+
*/
|
|
532
|
+
handleZIndex(zIndex: number | (() => number)): number {
|
|
533
|
+
if (typeof zIndex === "function") {
|
|
534
|
+
return zIndex();
|
|
535
|
+
} else {
|
|
536
|
+
return zIndex;
|
|
537
|
+
}
|
|
538
|
+
},
|
|
539
|
+
/**
|
|
540
|
+
* 处理config.only
|
|
541
|
+
* @param type 当前弹窗类型
|
|
542
|
+
* @param config 配置
|
|
543
|
+
*/
|
|
544
|
+
handleOnly<T extends Required<PopsSupportOnlyDetails[keyof PopsSupportOnlyDetails]>>(type: PopsType, config: T): T {
|
|
545
|
+
if (config.only) {
|
|
546
|
+
// .loading
|
|
547
|
+
// .tooltip
|
|
548
|
+
// .rightClickMenu
|
|
549
|
+
// 单独处理
|
|
550
|
+
if (type === "loading" || type === "tooltip" || type === "rightClickMenu") {
|
|
551
|
+
const inst = PopsInstData[type as keyof typeof PopsInstData];
|
|
552
|
+
if (inst) {
|
|
553
|
+
PopsInstanceUtils.removeInstance([inst], "", true);
|
|
554
|
+
}
|
|
555
|
+
} else {
|
|
556
|
+
PopsInstanceUtils.removeInstance(
|
|
557
|
+
[
|
|
558
|
+
PopsInstData.alert,
|
|
559
|
+
PopsInstData.confirm,
|
|
560
|
+
PopsInstData.prompt,
|
|
561
|
+
PopsInstData.iframe,
|
|
562
|
+
PopsInstData.drawer,
|
|
563
|
+
PopsInstData.folder,
|
|
564
|
+
PopsInstData.panel,
|
|
565
|
+
],
|
|
566
|
+
"",
|
|
567
|
+
true
|
|
568
|
+
);
|
|
569
|
+
}
|
|
570
|
+
} else {
|
|
571
|
+
// 对配置进行处理
|
|
572
|
+
// 选择配置的z-index和已有的pops实例的最大z-index值
|
|
573
|
+
const originZIndex = config.zIndex;
|
|
574
|
+
config.zIndex = () => {
|
|
575
|
+
const { zIndex: maxZIndex } = PopsInstanceUtils.getPopsMaxZIndex(PopsHandler.handleZIndex(originZIndex) + 100);
|
|
576
|
+
return maxZIndex;
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
return config;
|
|
580
|
+
},
|
|
581
|
+
/**
|
|
582
|
+
* 处理把已创建的元素保存到内部环境中
|
|
583
|
+
* @param type 当前弹窗类型
|
|
584
|
+
* @param value
|
|
585
|
+
*/
|
|
586
|
+
handlePush(type: PopsInstStoreType, value: PopsInstCommonConfig) {
|
|
587
|
+
PopsInstData[type].push(value);
|
|
588
|
+
},
|
|
589
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" data-type="arrowLeft">
|
|
2
|
+
<path
|
|
3
|
+
d="M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"></path>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" data-type="arrowRight">
|
|
2
|
+
<path
|
|
3
|
+
d="M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"></path>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" xml:space="preserve" data-type="chromeFilled">
|
|
2
|
+
<path
|
|
3
|
+
d="M938.67 512.01c0-44.59-6.82-87.6-19.54-128H682.67a212.372 212.372 0 0 1 42.67 128c.06 38.71-10.45 76.7-30.42 109.87l-182.91 316.8c235.65-.01 426.66-191.02 426.66-426.67z"
|
|
4
|
+
fill="currentColor"></path>
|
|
5
|
+
<path
|
|
6
|
+
d="M576.79 401.63a127.92 127.92 0 0 0-63.56-17.6c-22.36-.22-44.39 5.43-63.89 16.38s-35.79 26.82-47.25 46.02a128.005 128.005 0 0 0-2.16 127.44l1.24 2.13a127.906 127.906 0 0 0 46.36 46.61 127.907 127.907 0 0 0 63.38 17.44c22.29.2 44.24-5.43 63.68-16.33a127.94 127.94 0 0 0 47.16-45.79v-.01l1.11-1.92a127.984 127.984 0 0 0 .29-127.46 127.957 127.957 0 0 0-46.36-46.91z"
|
|
7
|
+
fill="currentColor"></path>
|
|
8
|
+
<path
|
|
9
|
+
d="M394.45 333.96A213.336 213.336 0 0 1 512 298.67h369.58A426.503 426.503 0 0 0 512 85.34a425.598 425.598 0 0 0-171.74 35.98 425.644 425.644 0 0 0-142.62 102.22l118.14 204.63a213.397 213.397 0 0 1 78.67-94.21zM512.01 938.68H512zM414.76 701.95a213.284 213.284 0 0 1-89.54-86.81L142.48 298.6c-36.35 62.81-57.13 135.68-57.13 213.42 0 203.81 142.93 374.22 333.95 416.55h.04l118.19-204.71a213.315 213.315 0 0 1-122.77-21.91z"
|
|
10
|
+
fill="currentColor"></path>
|
|
11
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" data-type="circleClose">
|
|
2
|
+
<path
|
|
3
|
+
fill="currentColor"
|
|
4
|
+
d="m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"></path>
|
|
5
|
+
<path
|
|
6
|
+
fill="currentColor"
|
|
7
|
+
d="M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"></path>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-type="close">
|
|
2
|
+
<path
|
|
3
|
+
fill="currentColor"
|
|
4
|
+
d="M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"></path>
|
|
5
|
+
</svg>
|
package/src/svg/cpu.svg
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path
|
|
3
|
+
fill="currentColor"
|
|
4
|
+
d="M320 256a64 64 0 0 0-64 64v384a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V320a64 64 0 0 0-64-64H320zm0-64h384a128 128 0 0 1 128 128v384a128 128 0 0 1-128 128H320a128 128 0 0 1-128-128V320a128 128 0 0 1 128-128z"></path>
|
|
5
|
+
<path
|
|
6
|
+
fill="currentColor"
|
|
7
|
+
d="M512 64a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32zm160 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32zm-320 0a32 32 0 0 1 32 32v128h-64V96a32 32 0 0 1 32-32zm160 896a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32zm160 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32zm-320 0a32 32 0 0 1-32-32V800h64v128a32 32 0 0 1-32 32zM64 512a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32zm0-160a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32zm0 320a32 32 0 0 1 32-32h128v64H96a32 32 0 0 1-32-32zm896-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32zm0-160a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32zm0 320a32 32 0 0 1-32 32H800v-64h128a32 32 0 0 1 32 32z"></path>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path
|
|
3
|
+
fill="currentColor"
|
|
4
|
+
d="M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z"></path>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path
|
|
3
|
+
fill="currentColor"
|
|
4
|
+
d="M128 320v576h576V320H128zm-32-64h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V288a32 32 0 0 1 32-32zM960 96v704a32 32 0 0 1-32 32h-96v-64h64V128H384v64h-64V96a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32zM256 672h320v64H256v-64zm0-192h320v64H256v-64z"></path>
|
|
5
|
+
</svg>
|
package/src/svg/edit.svg
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path
|
|
3
|
+
fill="currentColor"
|
|
4
|
+
d="M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640V512z"></path>
|
|
5
|
+
<path
|
|
6
|
+
fill="currentColor"
|
|
7
|
+
d="m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z"></path>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path
|
|
3
|
+
fill="currentColor"
|
|
4
|
+
d="M300.032 188.8c174.72-113.28 408-63.36 522.24 109.44 5.76 10.56 11.52 20.16 17.28 30.72v.96a22.4 22.4 0 0 1-7.68 26.88l-352.32 228.48c-9.6 6.72-22.08 3.84-28.8-5.76l-18.24-27.84a54.336 54.336 0 0 1 16.32-74.88l225.6-146.88c9.6-6.72 12.48-19.2 5.76-28.8-.96-1.92-1.92-3.84-3.84-4.8a267.84 267.84 0 0 0-315.84-17.28c-123.84 81.6-159.36 247.68-78.72 371.52a268.096 268.096 0 0 0 370.56 78.72 54.336 54.336 0 0 1 74.88 16.32l17.28 26.88c5.76 9.6 3.84 21.12-4.8 27.84-8.64 7.68-18.24 14.4-28.8 21.12a377.92 377.92 0 0 1-522.24-110.4c-113.28-174.72-63.36-408 111.36-522.24zm526.08 305.28a22.336 22.336 0 0 1 28.8 5.76l23.04 35.52a63.232 63.232 0 0 1-18.24 87.36l-35.52 23.04c-9.6 6.72-22.08 3.84-28.8-5.76l-46.08-71.04c-6.72-9.6-3.84-22.08 5.76-28.8l71.04-46.08z"></path>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path
|
|
3
|
+
d="M839.7 734.7c0 33.3-17.9 41-17.9 41S519.7 949.8 499.2 960c-10.2 5.1-20.5 5.1-30.7 0 0 0-314.9-184.3-325.1-192-5.1-5.1-10.2-12.8-12.8-20.5V368.6c0-17.9 20.5-28.2 20.5-28.2L466 158.6c12.8-5.1 25.6-5.1 38.4 0 0 0 279 161.3 309.8 179.2 17.9 7.7 28.2 25.6 25.6 46.1-.1-5-.1 317.5-.1 350.8zM714.2 371.2c-64-35.8-217.6-125.4-217.6-125.4-7.7-5.1-20.5-5.1-30.7 0L217.6 389.1s-17.9 10.2-17.9 23v297c0 5.1 5.1 12.8 7.7 17.9 7.7 5.1 256 148.5 256 148.5 7.7 5.1 17.9 5.1 25.6 0 15.4-7.7 250.9-145.9 250.9-145.9s12.8-5.1 12.8-30.7v-74.2l-276.5 169v-64c0-17.9 7.7-30.7 20.5-46.1L745 535c5.1-7.7 10.2-20.5 10.2-30.7v-66.6l-279 169v-69.1c0-15.4 5.1-30.7 17.9-38.4l220.1-128zM919 135.7c0-5.1-5.1-7.7-7.7-7.7h-58.9V66.6c0-5.1-5.1-5.1-10.2-5.1l-30.7 5.1c-5.1 0-5.1 2.6-5.1 5.1V128h-56.3c-5.1 0-5.1 5.1-7.7 5.1v38.4h69.1v64c0 5.1 5.1 5.1 10.2 5.1l30.7-5.1c5.1 0 5.1-2.6 5.1-5.1v-56.3h64l-2.5-38.4z"
|
|
4
|
+
fill="currentColor"></path>
|
|
5
|
+
</svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path
|
|
3
|
+
fill="currentColor"
|
|
4
|
+
d="M896 529.152V512a384 384 0 1 0-768 0v17.152A128 128 0 0 1 320 640v128a128 128 0 1 1-256 0V512a448 448 0 1 1 896 0v256a128 128 0 1 1-256 0V640a128 128 0 0 1 192-110.848zM896 640a64 64 0 0 0-128 0v128a64 64 0 0 0 128 0V640zm-768 0v128a64 64 0 0 0 128 0V640a64 64 0 1 0-128 0z"></path>
|
|
5
|
+
</svg>
|