@hb-hellotech/hb-ui 2.2.0 → 2.2.1
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/App.d.ts.map +1 -1
- package/dist/components/business_comp/list_page_comp/hb_list_page_container/index.d.ts +3 -3
- package/dist/components/business_comp/list_page_comp/hb_list_page_container/src/HbListPageContainer.d.ts +1 -1
- package/dist/components/business_comp/list_page_comp/hb_list_page_container/src/type.d.ts +2 -2
- package/dist/components/business_comp/list_page_comp/index.d.ts.map +1 -1
- package/dist/components/business_comp/unlist_page_comp/index.d.ts +1 -1
- package/dist/components/business_comp/unlist_page_comp/index.d.ts.map +1 -1
- package/dist/components/func_comp/hb_func_comp_tree/src/tree.d.ts +24 -15
- package/dist/components/func_comp/hb_func_file_preview/src/file_preview.d.ts.map +1 -1
- package/dist/components/func_comp/hb_func_file_preview_safe/index.d.ts +43 -0
- package/dist/components/func_comp/hb_func_file_preview_safe/index.d.ts.map +1 -0
- package/dist/components/func_comp/hb_func_file_preview_safe/src/file_preview.d.ts +44 -0
- package/dist/components/func_comp/hb_func_file_preview_safe/src/file_preview.d.ts.map +1 -0
- package/dist/components/func_comp/hb_func_file_preview_safe/src/type.d.ts +4 -0
- package/dist/components/func_comp/hb_func_file_preview_safe/src/type.d.ts.map +1 -0
- package/dist/components/func_comp/index.d.ts +1 -1
- package/dist/components/func_comp/index.d.ts.map +1 -1
- package/dist/components/hooks/index.d.ts +6 -0
- package/dist/components/hooks/index.d.ts.map +1 -0
- package/dist/components/utils/triggerBrowserDownload.d.ts +5 -0
- package/dist/components/utils/triggerBrowserDownload.d.ts.map +1 -1
- package/dist/demo/HbFileViewSafe.d.ts +4 -0
- package/dist/demo/HbFileViewSafe.d.ts.map +1 -0
- package/dist/hb_component_lib.css +1 -1
- package/dist/hb_component_lib.js +2201 -2041
- package/dist/hb_component_lib.umd.cjs +3 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/hooks/useFilePreview.ts +181 -0
- package/hooks/useListFormItem.ts +27 -27
- package/hooks/useModalDrag.ts +65 -59
- package/package.json +86 -81
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AAOzC,OAAO,oBAAoB,CAAC;AAG5B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAE9C,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKnB,CAAC;AAEF,eAAO,MAAM,OAAO,GAAa,KAAK,GAAG,EAAE,UAAS,kBAAuB,SAa1E,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file PC 端供应商审批页:附件内嵌预览(FilePreview)、上一条/下一条、下载。
|
|
3
|
+
* @desc 与 `FilePreview` 配合;预览地址优先 `pcPreview`,其次 `mobilePreview`。
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { ref, computed, type Ref, type ComputedRef } from 'vue';
|
|
7
|
+
import { message } from 'ant-design-vue';
|
|
8
|
+
import { resolveAttachmentIndexInList } from '../src/components/func_comp/hb_func_file_preview/src/util';
|
|
9
|
+
import { triggerBrowserDownload } from '../src/components/utils/triggerBrowserDownload';
|
|
10
|
+
import { HbFileItem_Intf } from '../src/components/func_comp/hb_func_file_preview_safe/src/type';
|
|
11
|
+
|
|
12
|
+
export interface FilePreviewDetail {
|
|
13
|
+
// 附件列表
|
|
14
|
+
attachmentInfos: HbFileItem_Intf[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface UseFilePreviewResult {
|
|
18
|
+
filePreviewVisible: Ref<boolean>;
|
|
19
|
+
pdfPreviewUrlRef: Ref<string>;
|
|
20
|
+
previewFileNameRef: Ref<string>;
|
|
21
|
+
previewAttachmentIndexRef: Ref<number>;
|
|
22
|
+
hasPrevAttachment: ComputedRef<boolean>;
|
|
23
|
+
hasNextAttachment: ComputedRef<boolean>;
|
|
24
|
+
showAttachmentNavBar: ComputedRef<boolean>;
|
|
25
|
+
handlePreview: (record: HbFileItem_Intf, listIndex?: number) => void;
|
|
26
|
+
handleDownload: (record: HbFileItem_Intf) => void;
|
|
27
|
+
handleClosePreview: () => void;
|
|
28
|
+
goPrevAttachment: () => void;
|
|
29
|
+
goNextAttachment: () => void;
|
|
30
|
+
triggerBrowserDownload: (url: string, filename: string) => Promise<void>;
|
|
31
|
+
/** 顺序触发下载,间隔开以避免浏览器拦截连续多次程序化下载 */
|
|
32
|
+
handleBatchDownloadAttachment: () => Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @param detailRef 详情 ref,须含 `attachmentInfos`
|
|
37
|
+
*/
|
|
38
|
+
export function useFilePreview(
|
|
39
|
+
detailRef: Ref<FilePreviewDetail>
|
|
40
|
+
): UseFilePreviewResult {
|
|
41
|
+
const filePreviewVisible = ref(false);
|
|
42
|
+
const pdfPreviewUrlRef = ref('');
|
|
43
|
+
const previewFileNameRef = ref('');
|
|
44
|
+
const previewAttachmentIndexRef = ref(-1);
|
|
45
|
+
|
|
46
|
+
const getUrl = (row: HbFileItem_Intf) => row.previewUrl;
|
|
47
|
+
|
|
48
|
+
const hasPrevAttachment = computed(() => {
|
|
49
|
+
const list = detailRef.value.attachmentInfos;
|
|
50
|
+
const i = previewAttachmentIndexRef.value;
|
|
51
|
+
if (i <= 0) return false;
|
|
52
|
+
for (let j = i - 1; j >= 0; j--) {
|
|
53
|
+
if (getUrl(list[j])) return true;
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const hasNextAttachment = computed(() => {
|
|
59
|
+
const list = detailRef.value.attachmentInfos;
|
|
60
|
+
const i = previewAttachmentIndexRef.value;
|
|
61
|
+
if (i < 0 || i >= list.length - 1) return false;
|
|
62
|
+
for (let j = i + 1; j < list.length; j++) {
|
|
63
|
+
if (getUrl(list[j])) return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
const showAttachmentNavBar = computed(
|
|
69
|
+
() => detailRef.value.attachmentInfos.length > 1
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
const applyPreviewAtAttachmentIndex = (idx: number) => {
|
|
73
|
+
const list = detailRef.value.attachmentInfos;
|
|
74
|
+
const record = list[idx];
|
|
75
|
+
if (!record) return;
|
|
76
|
+
const url = getUrl(record);
|
|
77
|
+
if (!url) return;
|
|
78
|
+
previewAttachmentIndexRef.value = idx;
|
|
79
|
+
pdfPreviewUrlRef.value = url;
|
|
80
|
+
previewFileNameRef.value = record.attachmentDesc || '';
|
|
81
|
+
filePreviewVisible.value = true;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const goPrevAttachment = () => {
|
|
85
|
+
const list = detailRef.value.attachmentInfos;
|
|
86
|
+
const i = previewAttachmentIndexRef.value;
|
|
87
|
+
for (let j = i - 1; j >= 0; j--) {
|
|
88
|
+
if (getUrl(list[j])) {
|
|
89
|
+
applyPreviewAtAttachmentIndex(j);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const goNextAttachment = () => {
|
|
96
|
+
const list = detailRef.value.attachmentInfos;
|
|
97
|
+
const i = previewAttachmentIndexRef.value;
|
|
98
|
+
for (let j = i + 1; j < list.length; j++) {
|
|
99
|
+
if (getUrl(list[j])) {
|
|
100
|
+
applyPreviewAtAttachmentIndex(j);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const handleClosePreview = () => {
|
|
107
|
+
filePreviewVisible.value = false;
|
|
108
|
+
previewAttachmentIndexRef.value = -1;
|
|
109
|
+
pdfPreviewUrlRef.value = '';
|
|
110
|
+
previewFileNameRef.value = '';
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const handlePreview = (record: HbFileItem_Intf, listIndex?: number) => {
|
|
114
|
+
const url = getUrl(record);
|
|
115
|
+
if (!url) {
|
|
116
|
+
message.warning('暂无预览地址');
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const list = detailRef.value.attachmentInfos;
|
|
120
|
+
const idx = resolveAttachmentIndexInList(list, record, {
|
|
121
|
+
preferredIndex: listIndex,
|
|
122
|
+
});
|
|
123
|
+
if (idx >= 0) {
|
|
124
|
+
applyPreviewAtAttachmentIndex(idx);
|
|
125
|
+
} else {
|
|
126
|
+
previewAttachmentIndexRef.value = -1;
|
|
127
|
+
pdfPreviewUrlRef.value = url;
|
|
128
|
+
previewFileNameRef.value = record.attachmentDesc || '';
|
|
129
|
+
filePreviewVisible.value = true;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
const handleDownload = (record: HbFileItem_Intf) => {
|
|
134
|
+
const url = record.downloadUrl;
|
|
135
|
+
if (!url) {
|
|
136
|
+
message.warning('暂无下载地址');
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const name = record.attachmentDesc?.trim() || 'download';
|
|
140
|
+
void triggerBrowserDownload(url, name);
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/** 浏览器会限制同一次交互内连续多次 `a.click()` 下载,需分帧/延时顺序触发 */
|
|
144
|
+
const BATCH_DOWNLOAD_STAGGER_MS = 400;
|
|
145
|
+
|
|
146
|
+
const handleBatchDownloadAttachment = async () => {
|
|
147
|
+
const list = detailRef.value.attachmentInfos;
|
|
148
|
+
const items = list.filter((row) => Boolean(row.downloadUrl?.trim()));
|
|
149
|
+
if (items.length === 0) {
|
|
150
|
+
message.warning('暂无可下载附件');
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
for (let i = 0; i < items.length; i++) {
|
|
154
|
+
const row = items[i];
|
|
155
|
+
const name = row.attachmentDesc?.trim() || 'download';
|
|
156
|
+
void triggerBrowserDownload(row.downloadUrl!, name);
|
|
157
|
+
if (i < items.length - 1) {
|
|
158
|
+
await new Promise((r) =>
|
|
159
|
+
setTimeout(r, BATCH_DOWNLOAD_STAGGER_MS)
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
return {
|
|
166
|
+
filePreviewVisible,
|
|
167
|
+
pdfPreviewUrlRef,
|
|
168
|
+
previewFileNameRef,
|
|
169
|
+
previewAttachmentIndexRef,
|
|
170
|
+
hasPrevAttachment,
|
|
171
|
+
hasNextAttachment,
|
|
172
|
+
showAttachmentNavBar,
|
|
173
|
+
handlePreview,
|
|
174
|
+
handleDownload,
|
|
175
|
+
handleClosePreview,
|
|
176
|
+
goPrevAttachment,
|
|
177
|
+
goNextAttachment,
|
|
178
|
+
triggerBrowserDownload,
|
|
179
|
+
handleBatchDownloadAttachment,
|
|
180
|
+
};
|
|
181
|
+
}
|
package/hooks/useListFormItem.ts
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
export interface LocalShowList_intf {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
label?: string;
|
|
3
|
+
key: string;
|
|
4
|
+
isFixed?: boolean;
|
|
5
|
+
isActive?: boolean;
|
|
6
|
+
isLinked?: boolean;
|
|
7
|
+
// 用于多语言 设置 对应locales对象
|
|
8
|
+
labelLanguage?: string;
|
|
9
|
+
[key: string]: any;
|
|
10
10
|
}
|
|
11
11
|
import { ref } from 'vue';
|
|
12
12
|
|
|
13
13
|
// 用于处理搜索条件
|
|
14
14
|
const useListFormItem = (props: LocalShowList_intf[]) => {
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const formItems = ref<LocalShowList_intf[]>();
|
|
16
|
+
formItems.value = props.slice();
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
const DeepCloneFromItem = JSON.parse(JSON.stringify(formItems.value));
|
|
19
|
+
// queryParam是搜索方案点击后存储的搜索条件
|
|
20
|
+
const handleSearchCase = (queryParam: any) => {
|
|
21
|
+
const showFormItems: any = [];
|
|
22
|
+
const queryParamKeys = Object.keys(queryParam);
|
|
23
|
+
DeepCloneFromItem.forEach((item: LocalShowList_intf) => {
|
|
24
|
+
if (queryParamKeys.includes(item.key)) {
|
|
25
|
+
showFormItems.push(item);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
formItems.value = showFormItems;
|
|
29
|
+
};
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
return {
|
|
32
|
+
formItems,
|
|
33
|
+
DeepCloneFromItem,
|
|
34
|
+
handleSearchCase,
|
|
35
|
+
};
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
export default useListFormItem;
|
package/hooks/useModalDrag.ts
CHANGED
|
@@ -1,73 +1,79 @@
|
|
|
1
1
|
import { nextTick } from 'vue';
|
|
2
2
|
|
|
3
3
|
const useModalDrag = (container: string) => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
let canMove = true;
|
|
5
|
+
const start = () => {
|
|
6
|
+
nextTick(() => {
|
|
7
|
+
const modalWrap: any = document.querySelector(
|
|
8
|
+
`.${container} .ant-modal`
|
|
9
|
+
);
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
if (modalWrap) {
|
|
12
|
+
let isDragging = false;
|
|
13
|
+
const offset = { x: 0, y: 0 };
|
|
14
|
+
const modalHeader: any =
|
|
15
|
+
modalWrap.querySelector('.ant-modal-header');
|
|
16
|
+
const modalFooter: any =
|
|
17
|
+
modalWrap.querySelector('.ant-modal-footer');
|
|
18
|
+
if (modalHeader) {
|
|
19
|
+
modalHeader.style.cursor = 'move';
|
|
20
|
+
modalFooter.style.cursor = 'move';
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
modalHeader.addEventListener('mousedown', (e) => {
|
|
23
|
+
isDragging = true;
|
|
24
|
+
offset.x = e.clientX - modalWrap.offsetLeft;
|
|
25
|
+
offset.y = e.clientY - modalWrap.offsetTop;
|
|
26
|
+
document.body.style.userSelect = 'none';
|
|
27
|
+
});
|
|
28
|
+
modalFooter.addEventListener('mousedown', (e) => {
|
|
29
|
+
isDragging = true;
|
|
30
|
+
offset.x = e.clientX - modalWrap.offsetLeft;
|
|
31
|
+
offset.y = e.clientY - modalWrap.offsetTop;
|
|
32
|
+
document.body.style.userSelect = 'none';
|
|
33
|
+
});
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
document.addEventListener('mousemove', (e) => {
|
|
36
|
+
if (!isDragging || !canMove) return;
|
|
37
|
+
const left = e.clientX - offset.x;
|
|
38
|
+
const top = e.clientY - offset.y;
|
|
39
|
+
modalWrap.style.left = `${left}px`;
|
|
40
|
+
modalWrap.style.top = `${top}px`;
|
|
41
|
+
});
|
|
38
42
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
document.addEventListener('mouseup', () => {
|
|
44
|
+
isDragging = false;
|
|
45
|
+
document.body.style.userSelect = '';
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
};
|
|
47
51
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
const stop = () => {
|
|
53
|
+
canMove = false;
|
|
54
|
+
};
|
|
51
55
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
// 新增:重置模态框位置为居中
|
|
57
|
+
const resetPosition = () => {
|
|
58
|
+
nextTick(() => {
|
|
59
|
+
const modalWrap: any = document.querySelector(
|
|
60
|
+
`.${container} .ant-modal`
|
|
61
|
+
);
|
|
62
|
+
if (modalWrap) {
|
|
63
|
+
const windowWidth = window.innerWidth;
|
|
64
|
+
const windowHeight = window.innerHeight;
|
|
65
|
+
const modalWidth = modalWrap.offsetWidth;
|
|
66
|
+
const modalHeight = modalWrap.offsetHeight;
|
|
61
67
|
|
|
62
|
-
|
|
63
|
-
|
|
68
|
+
const left = (windowWidth - modalWidth) / 2;
|
|
69
|
+
const top = (windowHeight - modalHeight) / 2;
|
|
64
70
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
+
modalWrap.style.left = `${left}px`;
|
|
72
|
+
modalWrap.style.top = `${top}px`;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
return { start, stop, resetPosition };
|
|
71
77
|
};
|
|
72
78
|
|
|
73
79
|
export default useModalDrag;
|
package/package.json
CHANGED
|
@@ -1,85 +1,90 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
"name": "@hb-hellotech/hb-ui",
|
|
3
|
+
"version": "2.2.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/hb_component_lib.umd.cjs",
|
|
6
|
+
"module": "dist/hb_component_lib.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"author": "hello-tech",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/hb_component_lib.js",
|
|
13
|
+
"require": "./dist/hb_component_lib.umd.cjs"
|
|
14
|
+
},
|
|
15
|
+
"./dist/hb_component_lib.css": {
|
|
16
|
+
"import": "./dist/hb_component_lib.css",
|
|
17
|
+
"require": "./dist/hb_component_lib.css"
|
|
18
|
+
},
|
|
19
|
+
"./hooks/*": "./hooks/*"
|
|
14
20
|
},
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
"files": [
|
|
22
|
+
"package.json",
|
|
23
|
+
"README.md",
|
|
24
|
+
"LICENSE",
|
|
25
|
+
"dist",
|
|
26
|
+
"hooks"
|
|
27
|
+
],
|
|
28
|
+
"scripts": {
|
|
29
|
+
"dev": "vite --port 3003",
|
|
30
|
+
"pub": "npm publish --tag latest --access public --registry=https://registry.npmjs.org",
|
|
31
|
+
"build": "vite build",
|
|
32
|
+
"lint": "eslint ./src/**/*.{ts,vue}",
|
|
33
|
+
"lint:fix": "eslint ./src/**/*.{ts,vue} --fix",
|
|
34
|
+
"docs:dev": "vitepress dev docs --port 3001",
|
|
35
|
+
"docs:build": "vitepress build docs",
|
|
36
|
+
"docs:preview": "vitepress preview docs"
|
|
18
37
|
},
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
"
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
"markdown-it-container": "^4.0.0",
|
|
72
|
-
"path": "^0.12.7",
|
|
73
|
-
"prismjs": "^1.30.0",
|
|
74
|
-
"eslint": "^9.15.0",
|
|
75
|
-
"eslint-plugin-vue": "^9.31.0",
|
|
76
|
-
"globals": "^15.12.0",
|
|
77
|
-
"typescript": "^5.6.3",
|
|
78
|
-
"typescript-eslint": "^8.15.0",
|
|
79
|
-
"vite": "^7.1.12",
|
|
80
|
-
"vite-plugin-dts": "^4.5.4",
|
|
81
|
-
"vitepress": "^1.6.4",
|
|
82
|
-
"vue-eslint-parser": "^9.4.3",
|
|
83
|
-
"vue-tsc": "^2.1.10"
|
|
84
|
-
}
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@ant-design/icons-vue": "^6.1.0",
|
|
40
|
+
"@hb-hellotech/hb-ui": "1.2.5-beta.5",
|
|
41
|
+
"@rollup/plugin-alias": "^4.0.2",
|
|
42
|
+
"@types/node": "^18.11.7",
|
|
43
|
+
"@types/throttle-debounce": "^5.0.0",
|
|
44
|
+
"@vue-office/docx": "^1.6.3",
|
|
45
|
+
"@vue-office/excel": "^1.7.14",
|
|
46
|
+
"@vue-office/pdf": "^2.0.10",
|
|
47
|
+
"@vue-office/pptx": "^1.0.1",
|
|
48
|
+
"@vueuse/core": "^10.9.0",
|
|
49
|
+
"ant-design-vue": "^3.2.15",
|
|
50
|
+
"child_process": "^1.0.2",
|
|
51
|
+
"dayjs": "^1.11.18",
|
|
52
|
+
"less": "^4.1.3",
|
|
53
|
+
"lodash": "^4.17.21",
|
|
54
|
+
"lodash-es": "^4.17.23",
|
|
55
|
+
"rollup-plugin-external-globals": "^0.8.0",
|
|
56
|
+
"throttle-debounce": "^5.0.0",
|
|
57
|
+
"vite-plugin-libcss": "^1.0.5",
|
|
58
|
+
"vue": "^3.5.22",
|
|
59
|
+
"vue-demi": "^0.14.10",
|
|
60
|
+
"vue-files-preview": "^1.0.43",
|
|
61
|
+
"vue-i18n": "^9.2.2",
|
|
62
|
+
"vue-router": "^4.1.6",
|
|
63
|
+
"vuedraggable": "4.1.0"
|
|
64
|
+
},
|
|
65
|
+
"devDependencies": {
|
|
66
|
+
"@eslint/js": "^9.15.0",
|
|
67
|
+
"@types/lodash": "^4.17.13",
|
|
68
|
+
"@types/lodash-es": "^4.17.12",
|
|
69
|
+
"@vitejs/plugin-vue": "^6.0.1",
|
|
70
|
+
"@vue/runtime-core": "^3.5.22",
|
|
71
|
+
"chalk": "^5.6.2",
|
|
72
|
+
"consola": "^3.4.2",
|
|
73
|
+
"escape-html": "^1.0.3",
|
|
74
|
+
"eslint": "^9.15.0",
|
|
75
|
+
"eslint-plugin-vue": "^9.31.0",
|
|
76
|
+
"fs": "0.0.1-security",
|
|
77
|
+
"globals": "^15.12.0",
|
|
78
|
+
"markdown-it": "^14.1.0",
|
|
79
|
+
"markdown-it-container": "^4.0.0",
|
|
80
|
+
"path": "^0.12.7",
|
|
81
|
+
"prismjs": "^1.30.0",
|
|
82
|
+
"typescript": "^5.6.3",
|
|
83
|
+
"typescript-eslint": "^8.15.0",
|
|
84
|
+
"vite": "^7.1.12",
|
|
85
|
+
"vite-plugin-dts": "^4.5.4",
|
|
86
|
+
"vitepress": "^1.6.4",
|
|
87
|
+
"vue-eslint-parser": "^9.4.3",
|
|
88
|
+
"vue-tsc": "^2.1.10"
|
|
89
|
+
}
|
|
85
90
|
}
|