Commit 4ff1c408dc1acfc49e0adc61dc2e539c0c198158
1 parent
3c3e640d
wip(form): perf form
Showing
45 changed files
with
918 additions
and
879 deletions
package.json
@@ -48,11 +48,11 @@ | @@ -48,11 +48,11 @@ | ||
48 | "devDependencies": { | 48 | "devDependencies": { |
49 | "@commitlint/cli": "^11.0.0", | 49 | "@commitlint/cli": "^11.0.0", |
50 | "@commitlint/config-conventional": "^11.0.0", | 50 | "@commitlint/config-conventional": "^11.0.0", |
51 | - "@iconify/json": "^1.1.275", | 51 | + "@iconify/json": "^1.1.276", |
52 | "@ls-lint/ls-lint": "^1.9.2", | 52 | "@ls-lint/ls-lint": "^1.9.2", |
53 | "@purge-icons/generated": "^0.4.1", | 53 | "@purge-icons/generated": "^0.4.1", |
54 | "@types/echarts": "^4.9.3", | 54 | "@types/echarts": "^4.9.3", |
55 | - "@types/fs-extra": "^9.0.5", | 55 | + "@types/fs-extra": "^9.0.6", |
56 | "@types/globrex": "^0.1.0", | 56 | "@types/globrex": "^0.1.0", |
57 | "@types/koa-static": "^4.0.1", | 57 | "@types/koa-static": "^4.0.1", |
58 | "@types/lodash-es": "^4.17.4", | 58 | "@types/lodash-es": "^4.17.4", |
@@ -102,7 +102,7 @@ | @@ -102,7 +102,7 @@ | ||
102 | "vite-plugin-html": "^1.0.0-beta.2", | 102 | "vite-plugin-html": "^1.0.0-beta.2", |
103 | "vite-plugin-mock": "^1.0.9", | 103 | "vite-plugin-mock": "^1.0.9", |
104 | "vite-plugin-purge-icons": "^0.4.5", | 104 | "vite-plugin-purge-icons": "^0.4.5", |
105 | - "vite-plugin-pwa": "^0.1.7", | 105 | + "vite-plugin-pwa": "^0.2.0", |
106 | "vue-eslint-parser": "^7.3.0", | 106 | "vue-eslint-parser": "^7.3.0", |
107 | "yargs": "^16.2.0" | 107 | "yargs": "^16.2.0" |
108 | }, | 108 | }, |
src/components/Basic/index.ts
1 | import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; | 1 | import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; |
2 | +import BasicArrow from './src/BasicArrow.vue'; | ||
2 | 3 | ||
3 | -export const BasicArrow = createAsyncComponent(() => import('./src/BasicArrow.vue')); | 4 | +export { BasicArrow }; |
5 | + | ||
6 | +// export const BasicArrow = createAsyncComponent(() => import('./src/BasicArrow.vue')); | ||
4 | export const BasicHelp = createAsyncComponent(() => import('./src/BasicHelp.vue')); | 7 | export const BasicHelp = createAsyncComponent(() => import('./src/BasicHelp.vue')); |
5 | export const BasicTitle = createAsyncComponent(() => import('./src/BasicTitle.vue')); | 8 | export const BasicTitle = createAsyncComponent(() => import('./src/BasicTitle.vue')); |
src/components/Container/src/collapse/CollapseContainer.vue
src/components/Form/src/BasicForm.vue
1 | <template> | 1 | <template> |
2 | <Form v-bind="{ ...$attrs, ...$props }" ref="formElRef" :model="formModel"> | 2 | <Form v-bind="{ ...$attrs, ...$props }" ref="formElRef" :model="formModel"> |
3 | - <Row :class="getProps.compact ? 'compact-form-row' : ''" :style="getRowWrapStyleRef"> | 3 | + <Row :class="getProps.compact ? 'compact-form-row' : ''" :style="getRowWrapStyle"> |
4 | <slot name="formHeader" /> | 4 | <slot name="formHeader" /> |
5 | <template v-for="schema in getSchema" :key="schema.field"> | 5 | <template v-for="schema in getSchema" :key="schema.field"> |
6 | <FormItem | 6 | <FormItem |
@@ -10,6 +10,7 @@ | @@ -10,6 +10,7 @@ | ||
10 | :formProps="getProps" | 10 | :formProps="getProps" |
11 | :allDefaultValues="defaultValueRef" | 11 | :allDefaultValues="defaultValueRef" |
12 | :formModel="formModel" | 12 | :formModel="formModel" |
13 | + :setFormModel="setFormModel" | ||
13 | > | 14 | > |
14 | <template #[item]="data" v-for="item in Object.keys($slots)"> | 15 | <template #[item]="data" v-for="item in Object.keys($slots)"> |
15 | <slot :name="item" v-bind="data" /> | 16 | <slot :name="item" v-bind="data" /> |
@@ -17,8 +18,9 @@ | @@ -17,8 +18,9 @@ | ||
17 | </FormItem> | 18 | </FormItem> |
18 | </template> | 19 | </template> |
19 | 20 | ||
21 | + <!-- --> | ||
20 | <FormAction | 22 | <FormAction |
21 | - v-bind="{ ...getActionPropsRef, ...advanceState }" | 23 | + v-bind="{ ...getProps, ...advanceState }" |
22 | @toggle-advanced="handleToggleAdvanced" | 24 | @toggle-advanced="handleToggleAdvanced" |
23 | /> | 25 | /> |
24 | <slot name="formFooter" /> | 26 | <slot name="formFooter" /> |
@@ -28,14 +30,12 @@ | @@ -28,14 +30,12 @@ | ||
28 | <script lang="ts"> | 30 | <script lang="ts"> |
29 | import type { FormActionType, FormProps, FormSchema } from './types/form'; | 31 | import type { FormActionType, FormProps, FormSchema } from './types/form'; |
30 | import type { AdvanceState } from './types/hooks'; | 32 | import type { AdvanceState } from './types/hooks'; |
31 | - import type { Ref, WatchStopHandle } from 'vue'; | ||
32 | - import type { ValidateFields } from 'ant-design-vue/lib/form/interface'; | 33 | + import type { CSSProperties, Ref, WatchStopHandle } from 'vue'; |
33 | 34 | ||
34 | import { defineComponent, reactive, ref, computed, unref, onMounted, watch, toRefs } from 'vue'; | 35 | import { defineComponent, reactive, ref, computed, unref, onMounted, watch, toRefs } from 'vue'; |
35 | import { Form, Row } from 'ant-design-vue'; | 36 | import { Form, Row } from 'ant-design-vue'; |
36 | - import FormItem from './FormItem'; | ||
37 | - import { basicProps } from './props'; | ||
38 | - import FormAction from './FormAction'; | 37 | + import FormItem from './components/FormItem'; |
38 | + import FormAction from './components/FormAction.vue'; | ||
39 | 39 | ||
40 | import { dateItemType } from './helper'; | 40 | import { dateItemType } from './helper'; |
41 | import moment from 'moment'; | 41 | import moment from 'moment'; |
@@ -44,7 +44,11 @@ | @@ -44,7 +44,11 @@ | ||
44 | 44 | ||
45 | import { useFormValues } from './hooks/useFormValues'; | 45 | import { useFormValues } from './hooks/useFormValues'; |
46 | import useAdvanced from './hooks/useAdvanced'; | 46 | import useAdvanced from './hooks/useAdvanced'; |
47 | - import { useFormAction } from './hooks/useFormAction'; | 47 | + import { useFormEvents } from './hooks/useFormEvents'; |
48 | + import { createFormContext } from './hooks/useFormContext'; | ||
49 | + | ||
50 | + import { basicProps } from './props'; | ||
51 | + | ||
48 | export default defineComponent({ | 52 | export default defineComponent({ |
49 | name: 'BasicForm', | 53 | name: 'BasicForm', |
50 | components: { FormItem, Form, Row, FormAction }, | 54 | components: { FormItem, Form, Row, FormAction }, |
@@ -52,12 +56,7 @@ | @@ -52,12 +56,7 @@ | ||
52 | props: basicProps, | 56 | props: basicProps, |
53 | emits: ['advanced-change', 'reset', 'submit', 'register'], | 57 | emits: ['advanced-change', 'reset', 'submit', 'register'], |
54 | setup(props, { emit }) { | 58 | setup(props, { emit }) { |
55 | - const formModel = reactive({}); | ||
56 | - | ||
57 | - const actionState = reactive({ | ||
58 | - resetAction: {}, | ||
59 | - submitAction: {}, | ||
60 | - }); | 59 | + const formModel = reactive<Recordable>({}); |
61 | 60 | ||
62 | const advanceState = reactive<AdvanceState>({ | 61 | const advanceState = reactive<AdvanceState>({ |
63 | isAdvanced: true, | 62 | isAdvanced: true, |
@@ -66,37 +65,24 @@ | @@ -66,37 +65,24 @@ | ||
66 | actionSpan: 6, | 65 | actionSpan: 6, |
67 | }); | 66 | }); |
68 | 67 | ||
69 | - const defaultValueRef = ref<any>({}); | 68 | + const defaultValueRef = ref<Recordable>({}); |
70 | const isInitedDefaultRef = ref(false); | 69 | const isInitedDefaultRef = ref(false); |
71 | const propsRef = ref<Partial<FormProps>>({}); | 70 | const propsRef = ref<Partial<FormProps>>({}); |
72 | const schemaRef = ref<Nullable<FormSchema[]>>(null); | 71 | const schemaRef = ref<Nullable<FormSchema[]>>(null); |
73 | const formElRef = ref<Nullable<FormActionType>>(null); | 72 | const formElRef = ref<Nullable<FormActionType>>(null); |
74 | 73 | ||
75 | - const getMergePropsRef = computed( | 74 | + // Get the basic configuration of the form |
75 | + const getProps = computed( | ||
76 | (): FormProps => { | 76 | (): FormProps => { |
77 | return deepMerge(cloneDeep(props), unref(propsRef)); | 77 | return deepMerge(cloneDeep(props), unref(propsRef)); |
78 | } | 78 | } |
79 | ); | 79 | ); |
80 | 80 | ||
81 | - const getRowWrapStyleRef = computed((): any => { | ||
82 | - const { baseRowStyle } = unref(getMergePropsRef); | ||
83 | - return baseRowStyle || {}; | ||
84 | - }); | ||
85 | - | ||
86 | - // ่ทๅ่กจๅๅบๆฌ้ ็ฝฎ | ||
87 | - const getProps = computed( | ||
88 | - (): FormProps => { | ||
89 | - return { | ||
90 | - ...unref(getMergePropsRef), | ||
91 | - resetButtonOptions: deepMerge( | ||
92 | - actionState.resetAction, | ||
93 | - unref(getMergePropsRef).resetButtonOptions || {} | ||
94 | - ), | ||
95 | - submitButtonOptions: deepMerge( | ||
96 | - actionState.submitAction, | ||
97 | - unref(getMergePropsRef).submitButtonOptions || {} | ||
98 | - ), | ||
99 | - }; | 81 | + // Get uniform row style |
82 | + const getRowWrapStyle = computed( | ||
83 | + (): CSSProperties => { | ||
84 | + const { baseRowStyle = {} } = unref(getProps); | ||
85 | + return baseRowStyle; | ||
100 | } | 86 | } |
101 | ); | 87 | ); |
102 | 88 | ||
@@ -120,18 +106,19 @@ | @@ -120,18 +106,19 @@ | ||
120 | return schemas as FormSchema[]; | 106 | return schemas as FormSchema[]; |
121 | }); | 107 | }); |
122 | 108 | ||
123 | - const { getActionPropsRef, handleToggleAdvanced } = useAdvanced({ | 109 | + const { handleToggleAdvanced } = useAdvanced({ |
124 | advanceState, | 110 | advanceState, |
125 | emit, | 111 | emit, |
126 | - getMergePropsRef, | ||
127 | getProps, | 112 | getProps, |
128 | getSchema, | 113 | getSchema, |
129 | formModel, | 114 | formModel, |
130 | defaultValueRef, | 115 | defaultValueRef, |
131 | }); | 116 | }); |
117 | + | ||
132 | const { transformDateFunc, fieldMapToTime } = toRefs(props); | 118 | const { transformDateFunc, fieldMapToTime } = toRefs(props); |
119 | + | ||
133 | const { handleFormValues, initDefault } = useFormValues({ | 120 | const { handleFormValues, initDefault } = useFormValues({ |
134 | - transformDateFuncRef: transformDateFunc as Ref<Fn<any>>, | 121 | + transformDateFuncRef: transformDateFunc, |
135 | fieldMapToTimeRef: fieldMapToTime, | 122 | fieldMapToTimeRef: fieldMapToTime, |
136 | defaultValueRef, | 123 | defaultValueRef, |
137 | getSchema, | 124 | getSchema, |
@@ -139,7 +126,7 @@ | @@ -139,7 +126,7 @@ | ||
139 | }); | 126 | }); |
140 | 127 | ||
141 | const { | 128 | const { |
142 | - // handleSubmit, | 129 | + handleSubmit, |
143 | setFieldsValue, | 130 | setFieldsValue, |
144 | clearValidate, | 131 | clearValidate, |
145 | validate, | 132 | validate, |
@@ -149,7 +136,8 @@ | @@ -149,7 +136,8 @@ | ||
149 | appendSchemaByField, | 136 | appendSchemaByField, |
150 | removeSchemaByFiled, | 137 | removeSchemaByFiled, |
151 | resetFields, | 138 | resetFields, |
152 | - } = useFormAction({ | 139 | + scrollToField, |
140 | + } = useFormEvents({ | ||
153 | emit, | 141 | emit, |
154 | getProps, | 142 | getProps, |
155 | formModel, | 143 | formModel, |
@@ -158,14 +146,19 @@ | @@ -158,14 +146,19 @@ | ||
158 | formElRef: formElRef as Ref<FormActionType>, | 146 | formElRef: formElRef as Ref<FormActionType>, |
159 | schemaRef: schemaRef as Ref<FormSchema[]>, | 147 | schemaRef: schemaRef as Ref<FormSchema[]>, |
160 | handleFormValues, | 148 | handleFormValues, |
161 | - actionState, | 149 | + }); |
150 | + | ||
151 | + createFormContext({ | ||
152 | + resetAction: resetFields, | ||
153 | + submitAction: handleSubmit, | ||
162 | }); | 154 | }); |
163 | 155 | ||
164 | watch( | 156 | watch( |
165 | - () => unref(getMergePropsRef).model, | 157 | + () => unref(getProps).model, |
166 | () => { | 158 | () => { |
167 | - if (!unref(getMergePropsRef).model) return; | ||
168 | - setFieldsValue(unref(getMergePropsRef).model); | 159 | + const { model } = unref(getProps); |
160 | + if (!model) return; | ||
161 | + setFieldsValue(model); | ||
169 | }, | 162 | }, |
170 | { | 163 | { |
171 | immediate: true, | 164 | immediate: true, |
@@ -178,16 +171,19 @@ | @@ -178,16 +171,19 @@ | ||
178 | if (unref(isInitedDefaultRef)) { | 171 | if (unref(isInitedDefaultRef)) { |
179 | return stopWatch(); | 172 | return stopWatch(); |
180 | } | 173 | } |
181 | - if (schema && schema.length) { | 174 | + if (schema?.length) { |
182 | initDefault(); | 175 | initDefault(); |
183 | isInitedDefaultRef.value = true; | 176 | isInitedDefaultRef.value = true; |
184 | } | 177 | } |
185 | } | 178 | } |
186 | ); | 179 | ); |
187 | 180 | ||
188 | - function setProps(formProps: Partial<FormProps>): void { | ||
189 | - const mergeProps = deepMerge(unref(propsRef) || {}, formProps); | ||
190 | - propsRef.value = mergeProps; | 181 | + async function setProps(formProps: Partial<FormProps>): Promise<void> { |
182 | + propsRef.value = deepMerge(unref(propsRef) || {}, formProps); | ||
183 | + } | ||
184 | + | ||
185 | + function setFormModel(key: string, value: any) { | ||
186 | + formModel[key] = value; | ||
191 | } | 187 | } |
192 | 188 | ||
193 | const formActionType: Partial<FormActionType> = { | 189 | const formActionType: Partial<FormActionType> = { |
@@ -199,8 +195,10 @@ | @@ -199,8 +195,10 @@ | ||
199 | removeSchemaByFiled, | 195 | removeSchemaByFiled, |
200 | appendSchemaByField, | 196 | appendSchemaByField, |
201 | clearValidate, | 197 | clearValidate, |
202 | - validateFields: validateFields as ValidateFields, | ||
203 | - validate: validate as ValidateFields, | 198 | + validateFields, |
199 | + validate, | ||
200 | + submit: handleSubmit, | ||
201 | + scrollToField: scrollToField, | ||
204 | }; | 202 | }; |
205 | 203 | ||
206 | onMounted(() => { | 204 | onMounted(() => { |
@@ -211,14 +209,14 @@ | @@ -211,14 +209,14 @@ | ||
211 | return { | 209 | return { |
212 | handleToggleAdvanced, | 210 | handleToggleAdvanced, |
213 | formModel, | 211 | formModel, |
214 | - getActionPropsRef, | ||
215 | defaultValueRef, | 212 | defaultValueRef, |
216 | advanceState, | 213 | advanceState, |
217 | - getRowWrapStyleRef, | 214 | + getRowWrapStyle, |
218 | getProps, | 215 | getProps, |
219 | formElRef, | 216 | formElRef, |
220 | getSchema, | 217 | getSchema, |
221 | formActionType, | 218 | formActionType, |
219 | + setFormModel, | ||
222 | ...formActionType, | 220 | ...formActionType, |
223 | }; | 221 | }; |
224 | }, | 222 | }, |
src/components/Form/src/FormAction.tsx deleted
100644 โ 0
1 | -import type { ColEx } from './types/index'; | ||
2 | - | ||
3 | -import { defineComponent, unref, computed, PropType } from 'vue'; | ||
4 | -import { Form, Col } from 'ant-design-vue'; | ||
5 | -import { Button } from '/@/components/Button'; | ||
6 | -import { BasicArrow } from '/@/components/Basic/index'; | ||
7 | - | ||
8 | -import { getSlot } from '/@/utils/helper/tsxHelper'; | ||
9 | -import { useI18n } from '/@/hooks/web/useI18n'; | ||
10 | -import { propTypes } from '/@/utils/propTypes'; | ||
11 | - | ||
12 | -const { t } = useI18n(); | ||
13 | - | ||
14 | -export default defineComponent({ | ||
15 | - name: 'BasicFormAction', | ||
16 | - props: { | ||
17 | - show: propTypes.bool.def(true), | ||
18 | - showResetButton: propTypes.bool.def(true), | ||
19 | - showSubmitButton: propTypes.bool.def(true), | ||
20 | - showAdvancedButton: propTypes.bool.def(true), | ||
21 | - resetButtonOptions: { | ||
22 | - type: Object as PropType<any>, | ||
23 | - default: {}, | ||
24 | - }, | ||
25 | - submitButtonOptions: { | ||
26 | - type: Object as PropType<any>, | ||
27 | - default: {}, | ||
28 | - }, | ||
29 | - actionColOptions: { | ||
30 | - type: Object as PropType<any>, | ||
31 | - default: {}, | ||
32 | - }, | ||
33 | - actionSpan: propTypes.number.def(6), | ||
34 | - isAdvanced: propTypes.bool, | ||
35 | - hideAdvanceBtn: propTypes.bool, | ||
36 | - }, | ||
37 | - emits: ['toggle-advanced'], | ||
38 | - setup(props, { slots, emit }) { | ||
39 | - const getResetBtnOptionsRef = computed(() => { | ||
40 | - return { | ||
41 | - text: t('component.form.resetButton'), | ||
42 | - ...props.resetButtonOptions, | ||
43 | - }; | ||
44 | - }); | ||
45 | - | ||
46 | - const getSubmitBtnOptionsRef = computed(() => { | ||
47 | - return { | ||
48 | - text: t('component.form.submitButton'), | ||
49 | - // htmlType: 'submit', | ||
50 | - ...props.submitButtonOptions, | ||
51 | - }; | ||
52 | - }); | ||
53 | - | ||
54 | - const actionColOpt = computed(() => { | ||
55 | - const { showAdvancedButton, actionSpan: span, actionColOptions } = props; | ||
56 | - const actionSpan = 24 - span; | ||
57 | - const advancedSpanObj = showAdvancedButton ? { span: actionSpan < 6 ? 24 : actionSpan } : {}; | ||
58 | - const actionColOpt: Partial<ColEx> = { | ||
59 | - span: showAdvancedButton ? 6 : 4, | ||
60 | - ...advancedSpanObj, | ||
61 | - ...actionColOptions, | ||
62 | - }; | ||
63 | - return actionColOpt; | ||
64 | - }); | ||
65 | - | ||
66 | - function toggleAdvanced() { | ||
67 | - emit('toggle-advanced'); | ||
68 | - } | ||
69 | - | ||
70 | - function renderAdvanceButton() { | ||
71 | - const { showAdvancedButton, hideAdvanceBtn, isAdvanced } = props; | ||
72 | - | ||
73 | - if (!showAdvancedButton || !!hideAdvanceBtn) { | ||
74 | - return null; | ||
75 | - } | ||
76 | - return ( | ||
77 | - <Button type="default" class="mr-2" onClick={toggleAdvanced}> | ||
78 | - {() => ( | ||
79 | - <> | ||
80 | - {isAdvanced ? t('component.form.putAway') : t('component.form.unfold')} | ||
81 | - <BasicArrow expand={!isAdvanced} top /> | ||
82 | - </> | ||
83 | - )} | ||
84 | - </Button> | ||
85 | - ); | ||
86 | - } | ||
87 | - | ||
88 | - function renderResetButton() { | ||
89 | - const { showResetButton } = props; | ||
90 | - if (!showResetButton) { | ||
91 | - return null; | ||
92 | - } | ||
93 | - return ( | ||
94 | - <Button type="default" class="mr-2" {...unref(getResetBtnOptionsRef)}> | ||
95 | - {() => unref(getResetBtnOptionsRef).text} | ||
96 | - </Button> | ||
97 | - ); | ||
98 | - } | ||
99 | - | ||
100 | - function renderSubmitButton() { | ||
101 | - const { showSubmitButton } = props; | ||
102 | - if (!showSubmitButton) { | ||
103 | - return null; | ||
104 | - } | ||
105 | - return ( | ||
106 | - <Button type="primary" {...unref(getSubmitBtnOptionsRef)}> | ||
107 | - {() => unref(getSubmitBtnOptionsRef).text} | ||
108 | - </Button> | ||
109 | - ); | ||
110 | - } | ||
111 | - | ||
112 | - return () => { | ||
113 | - if (!props.show) { | ||
114 | - return null; | ||
115 | - } | ||
116 | - | ||
117 | - return ( | ||
118 | - <Col {...unref(actionColOpt)} style={{ textAlign: 'right' }}> | ||
119 | - {() => ( | ||
120 | - <Form.Item> | ||
121 | - {() => ( | ||
122 | - <> | ||
123 | - {getSlot(slots, 'advanceBefore')} | ||
124 | - {renderAdvanceButton()} | ||
125 | - | ||
126 | - {getSlot(slots, 'resetBefore')} | ||
127 | - {renderResetButton()} | ||
128 | - | ||
129 | - {getSlot(slots, 'submitBefore')} | ||
130 | - {renderSubmitButton()} | ||
131 | - | ||
132 | - {getSlot(slots, 'submitAfter')} | ||
133 | - </> | ||
134 | - )} | ||
135 | - </Form.Item> | ||
136 | - )} | ||
137 | - </Col> | ||
138 | - ); | ||
139 | - }; | ||
140 | - }, | ||
141 | -}); |
src/components/Form/src/componentMap.ts
1 | -import { Component } from 'vue'; | 1 | +import type { Component } from 'vue'; |
2 | import type { ComponentType } from './types/index'; | 2 | import type { ComponentType } from './types/index'; |
3 | 3 | ||
4 | /** | 4 | /** |
@@ -17,10 +17,11 @@ import { | @@ -17,10 +17,11 @@ import { | ||
17 | TimePicker, | 17 | TimePicker, |
18 | TreeSelect, | 18 | TreeSelect, |
19 | } from 'ant-design-vue'; | 19 | } from 'ant-design-vue'; |
20 | + | ||
20 | import RadioButtonGroup from './components/RadioButtonGroup.vue'; | 21 | import RadioButtonGroup from './components/RadioButtonGroup.vue'; |
21 | import { BasicUpload } from '/@/components/Upload'; | 22 | import { BasicUpload } from '/@/components/Upload'; |
22 | 23 | ||
23 | -const componentMap = new Map<ComponentType, any>(); | 24 | +const componentMap = new Map<ComponentType, Component>(); |
24 | 25 | ||
25 | componentMap.set('Input', Input); | 26 | componentMap.set('Input', Input); |
26 | componentMap.set('InputGroup', Input.Group); | 27 | componentMap.set('InputGroup', Input.Group); |
src/components/Form/src/components/FormAction.vue
0 โ 100644
1 | +<template> | ||
2 | + <a-col | ||
3 | + v-bind="actionColOpt" | ||
4 | + class="mb-2" | ||
5 | + :style="{ textAlign: 'right' }" | ||
6 | + v-if="showActionButtonGroup" | ||
7 | + > | ||
8 | + <FormItem> | ||
9 | + <slot name="resetBefore" /> | ||
10 | + <Button | ||
11 | + type="default" | ||
12 | + class="mr-2" | ||
13 | + v-bind="getResetBtnOptions" | ||
14 | + @click="resetAction" | ||
15 | + v-if="showResetButton" | ||
16 | + > | ||
17 | + {{ getResetBtnOptions.text }} | ||
18 | + </Button> | ||
19 | + <slot name="submitBefore" /> | ||
20 | + | ||
21 | + <Button | ||
22 | + type="primary" | ||
23 | + class="mr-2" | ||
24 | + v-bind="getSubmitBtnOptions" | ||
25 | + @click="submitAction" | ||
26 | + v-if="showSubmitButton" | ||
27 | + > | ||
28 | + {{ getSubmitBtnOptions.text }} | ||
29 | + </Button> | ||
30 | + | ||
31 | + <slot name="advanceBefore" /> | ||
32 | + <Button | ||
33 | + type="link" | ||
34 | + size="small" | ||
35 | + @click="toggleAdvanced" | ||
36 | + v-if="showAdvancedButton && !hideAdvanceBtn" | ||
37 | + > | ||
38 | + {{ isAdvanced ? t('component.form.putAway') : t('component.form.unfold') }} | ||
39 | + <BasicArrow class="ml-1" :expand="!isAdvanced" top /> | ||
40 | + </Button> | ||
41 | + <slot name="advanceAfter" /> | ||
42 | + </FormItem> | ||
43 | + </a-col> | ||
44 | +</template> | ||
45 | +<script lang="ts"> | ||
46 | + import type { ColEx } from '../types/index'; | ||
47 | + import type { ButtonProps } from 'ant-design-vue/es/button/buttonTypes'; | ||
48 | + | ||
49 | + import { defineComponent, computed, PropType } from 'vue'; | ||
50 | + import { Form } from 'ant-design-vue'; | ||
51 | + import { Button } from '/@/components/Button'; | ||
52 | + import { BasicArrow } from '/@/components/Basic/index'; | ||
53 | + import { useFormContext } from '../hooks/useFormContext'; | ||
54 | + | ||
55 | + import { useI18n } from '/@/hooks/web/useI18n'; | ||
56 | + import { propTypes } from '/@/utils/propTypes'; | ||
57 | + | ||
58 | + type ButtonOptions = Partial<ButtonProps> & { text: string }; | ||
59 | + | ||
60 | + export default defineComponent({ | ||
61 | + name: 'BasicFormAction', | ||
62 | + components: { | ||
63 | + FormItem: Form, | ||
64 | + Button, | ||
65 | + BasicArrow, | ||
66 | + }, | ||
67 | + props: { | ||
68 | + showActionButtonGroup: propTypes.bool.def(true), | ||
69 | + showResetButton: propTypes.bool.def(true), | ||
70 | + showSubmitButton: propTypes.bool.def(true), | ||
71 | + showAdvancedButton: propTypes.bool.def(true), | ||
72 | + resetButtonOptions: { | ||
73 | + type: Object as PropType<ButtonOptions>, | ||
74 | + default: {}, | ||
75 | + }, | ||
76 | + submitButtonOptions: { | ||
77 | + type: Object as PropType<ButtonOptions>, | ||
78 | + default: {}, | ||
79 | + }, | ||
80 | + actionColOptions: { | ||
81 | + type: Object as PropType<Partial<ColEx>>, | ||
82 | + default: {}, | ||
83 | + }, | ||
84 | + actionSpan: propTypes.number.def(6), | ||
85 | + isAdvanced: propTypes.bool, | ||
86 | + hideAdvanceBtn: propTypes.bool, | ||
87 | + }, | ||
88 | + setup(props, { emit }) { | ||
89 | + const { t } = useI18n(); | ||
90 | + | ||
91 | + const actionColOpt = computed(() => { | ||
92 | + const { showAdvancedButton, actionSpan: span, actionColOptions } = props; | ||
93 | + const actionSpan = 24 - span; | ||
94 | + const advancedSpanObj = showAdvancedButton | ||
95 | + ? { span: actionSpan < 6 ? 24 : actionSpan } | ||
96 | + : {}; | ||
97 | + const actionColOpt: Partial<ColEx> = { | ||
98 | + span: showAdvancedButton ? 6 : 4, | ||
99 | + ...advancedSpanObj, | ||
100 | + ...actionColOptions, | ||
101 | + }; | ||
102 | + return actionColOpt; | ||
103 | + }); | ||
104 | + | ||
105 | + const getResetBtnOptions = computed( | ||
106 | + (): ButtonOptions => { | ||
107 | + return Object.assign( | ||
108 | + { | ||
109 | + text: t('component.form.resetButton'), | ||
110 | + }, | ||
111 | + props.resetButtonOptions | ||
112 | + ); | ||
113 | + } | ||
114 | + ); | ||
115 | + | ||
116 | + const getSubmitBtnOptions = computed(() => { | ||
117 | + return Object.assign( | ||
118 | + { | ||
119 | + text: t('component.form.submitButton'), | ||
120 | + }, | ||
121 | + props.submitButtonOptions | ||
122 | + ); | ||
123 | + }); | ||
124 | + | ||
125 | + function toggleAdvanced() { | ||
126 | + emit('toggle-advanced'); | ||
127 | + } | ||
128 | + | ||
129 | + return { | ||
130 | + t, | ||
131 | + actionColOpt, | ||
132 | + getResetBtnOptions, | ||
133 | + getSubmitBtnOptions, | ||
134 | + toggleAdvanced, | ||
135 | + ...useFormContext(), | ||
136 | + }; | ||
137 | + }, | ||
138 | + }); | ||
139 | +</script> |
src/components/Form/src/FormItem.tsx renamed to src/components/Form/src/components/FormItem.tsx
1 | -import type { PropType } from 'vue'; | ||
2 | -import type { FormActionType, FormProps } from './types/form'; | ||
3 | -import type { FormSchema } from './types/form'; | 1 | +import type { PropType, Ref } from 'vue'; |
2 | +import type { FormActionType, FormProps } from '../types/form'; | ||
3 | +import type { FormSchema } from '../types/form'; | ||
4 | import type { ValidationRule } from 'ant-design-vue/lib/form/Form'; | 4 | import type { ValidationRule } from 'ant-design-vue/lib/form/Form'; |
5 | import type { TableActionType } from '/@/components/Table'; | 5 | import type { TableActionType } from '/@/components/Table'; |
6 | +import type { ComponentType } from '../types'; | ||
6 | 7 | ||
7 | -import { defineComponent, computed, unref, toRef } from 'vue'; | 8 | +import { defineComponent, computed, unref, toRefs } from 'vue'; |
8 | import { Form, Col } from 'ant-design-vue'; | 9 | import { Form, Col } from 'ant-design-vue'; |
9 | -import { componentMap } from './componentMap'; | 10 | +import { componentMap } from '../componentMap'; |
10 | import { BasicHelp } from '/@/components/Basic'; | 11 | import { BasicHelp } from '/@/components/Basic'; |
11 | 12 | ||
12 | import { isBoolean, isFunction } from '/@/utils/is'; | 13 | import { isBoolean, isFunction } from '/@/utils/is'; |
13 | import { getSlot } from '/@/utils/helper/tsxHelper'; | 14 | import { getSlot } from '/@/utils/helper/tsxHelper'; |
14 | -import { createPlaceholderMessage } from './helper'; | 15 | +import { createPlaceholderMessage, setComponentRuleType } from '../helper'; |
15 | import { upperFirst, cloneDeep } from 'lodash-es'; | 16 | import { upperFirst, cloneDeep } from 'lodash-es'; |
16 | 17 | ||
17 | -import { useItemLabelWidth } from './hooks/useLabelWidth'; | ||
18 | -import { ComponentType } from './types'; | 18 | +import { useItemLabelWidth } from '../hooks/useLabelWidth'; |
19 | import { isNumber } from '/@/utils/is'; | 19 | import { isNumber } from '/@/utils/is'; |
20 | import { useI18n } from '/@/hooks/web/useI18n'; | 20 | import { useI18n } from '/@/hooks/web/useI18n'; |
21 | 21 | ||
@@ -32,13 +32,17 @@ export default defineComponent({ | @@ -32,13 +32,17 @@ export default defineComponent({ | ||
32 | default: {}, | 32 | default: {}, |
33 | }, | 33 | }, |
34 | allDefaultValues: { | 34 | allDefaultValues: { |
35 | - type: Object as PropType<any>, | 35 | + type: Object as PropType<Recordable>, |
36 | default: {}, | 36 | default: {}, |
37 | }, | 37 | }, |
38 | formModel: { | 38 | formModel: { |
39 | - type: Object as PropType<any>, | 39 | + type: Object as PropType<Recordable>, |
40 | default: {}, | 40 | default: {}, |
41 | }, | 41 | }, |
42 | + setFormModel: { | ||
43 | + type: Function as PropType<(key: string, value: any) => void>, | ||
44 | + default: null, | ||
45 | + }, | ||
42 | tableAction: { | 46 | tableAction: { |
43 | type: Object as PropType<TableActionType>, | 47 | type: Object as PropType<TableActionType>, |
44 | }, | 48 | }, |
@@ -48,10 +52,15 @@ export default defineComponent({ | @@ -48,10 +52,15 @@ export default defineComponent({ | ||
48 | }, | 52 | }, |
49 | setup(props, { slots }) { | 53 | setup(props, { slots }) { |
50 | const { t } = useI18n(); | 54 | const { t } = useI18n(); |
51 | - // @ts-ignore | ||
52 | - const itemLabelWidthRef = useItemLabelWidth(toRef(props, 'schema'), toRef(props, 'formProps')); | ||
53 | 55 | ||
54 | - const getValuesRef = computed(() => { | 56 | + const { schema, formProps } = toRefs(props) as { |
57 | + schema: Ref<FormSchema>; | ||
58 | + formProps: Ref<FormProps>; | ||
59 | + }; | ||
60 | + | ||
61 | + const itemLabelWidthProp = useItemLabelWidth(schema, formProps); | ||
62 | + | ||
63 | + const getValues = computed(() => { | ||
55 | const { allDefaultValues, formModel, schema } = props; | 64 | const { allDefaultValues, formModel, schema } = props; |
56 | const { mergeDynamicData } = props.formProps; | 65 | const { mergeDynamicData } = props.formProps; |
57 | return { | 66 | return { |
@@ -61,12 +70,12 @@ export default defineComponent({ | @@ -61,12 +70,12 @@ export default defineComponent({ | ||
61 | ...mergeDynamicData, | 70 | ...mergeDynamicData, |
62 | ...allDefaultValues, | 71 | ...allDefaultValues, |
63 | ...formModel, | 72 | ...formModel, |
64 | - }, | 73 | + } as Recordable, |
65 | schema: schema, | 74 | schema: schema, |
66 | }; | 75 | }; |
67 | }); | 76 | }); |
68 | 77 | ||
69 | - const getComponentsPropsRef = computed(() => { | 78 | + const getComponentsProps = computed(() => { |
70 | const { schema, tableAction, formModel, formActionType } = props; | 79 | const { schema, tableAction, formModel, formActionType } = props; |
71 | const { componentProps = {} } = schema; | 80 | const { componentProps = {} } = schema; |
72 | if (!isFunction(componentProps)) { | 81 | if (!isFunction(componentProps)) { |
@@ -75,19 +84,18 @@ export default defineComponent({ | @@ -75,19 +84,18 @@ export default defineComponent({ | ||
75 | return componentProps({ schema, tableAction, formModel, formActionType }) || {}; | 84 | return componentProps({ schema, tableAction, formModel, formActionType }) || {}; |
76 | }); | 85 | }); |
77 | 86 | ||
78 | - const getDisableRef = computed(() => { | 87 | + const getDisable = computed(() => { |
79 | const { disabled: globDisabled } = props.formProps; | 88 | const { disabled: globDisabled } = props.formProps; |
80 | const { dynamicDisabled } = props.schema; | 89 | const { dynamicDisabled } = props.schema; |
81 | - const { disabled: itemDisabled = false } = unref(getComponentsPropsRef); | 90 | + const { disabled: itemDisabled = false } = unref(getComponentsProps); |
82 | let disabled = !!globDisabled || itemDisabled; | 91 | let disabled = !!globDisabled || itemDisabled; |
83 | if (isBoolean(dynamicDisabled)) { | 92 | if (isBoolean(dynamicDisabled)) { |
84 | disabled = dynamicDisabled; | 93 | disabled = dynamicDisabled; |
85 | } | 94 | } |
86 | 95 | ||
87 | if (isFunction(dynamicDisabled)) { | 96 | if (isFunction(dynamicDisabled)) { |
88 | - disabled = dynamicDisabled(unref(getValuesRef)); | 97 | + disabled = dynamicDisabled(unref(getValues)); |
89 | } | 98 | } |
90 | - | ||
91 | return disabled; | 99 | return disabled; |
92 | }); | 100 | }); |
93 | 101 | ||
@@ -109,10 +117,10 @@ export default defineComponent({ | @@ -109,10 +117,10 @@ export default defineComponent({ | ||
109 | isIfShow = ifShow; | 117 | isIfShow = ifShow; |
110 | } | 118 | } |
111 | if (isFunction(show)) { | 119 | if (isFunction(show)) { |
112 | - isShow = show(unref(getValuesRef)); | 120 | + isShow = show(unref(getValues)); |
113 | } | 121 | } |
114 | if (isFunction(ifShow)) { | 122 | if (isFunction(ifShow)) { |
115 | - isIfShow = ifShow(unref(getValuesRef)); | 123 | + isIfShow = ifShow(unref(getValues)); |
116 | } | 124 | } |
117 | isShow = isShow && itemIsAdvanced; | 125 | isShow = isShow && itemIsAdvanced; |
118 | return { isShow, isIfShow }; | 126 | return { isShow, isIfShow }; |
@@ -129,7 +137,7 @@ export default defineComponent({ | @@ -129,7 +137,7 @@ export default defineComponent({ | ||
129 | } = props.schema; | 137 | } = props.schema; |
130 | 138 | ||
131 | if (isFunction(dynamicRules)) { | 139 | if (isFunction(dynamicRules)) { |
132 | - return dynamicRules(unref(getValuesRef)) as ValidationRule[]; | 140 | + return dynamicRules(unref(getValues)) as ValidationRule[]; |
133 | } | 141 | } |
134 | 142 | ||
135 | let rules: ValidationRule[] = cloneDeep(defRules) as ValidationRule[]; | 143 | let rules: ValidationRule[] = cloneDeep(defRules) as ValidationRule[]; |
@@ -151,23 +159,15 @@ export default defineComponent({ | @@ -151,23 +159,15 @@ export default defineComponent({ | ||
151 | const joinLabel = Reflect.has(props.schema, 'rulesMessageJoinLabel') | 159 | const joinLabel = Reflect.has(props.schema, 'rulesMessageJoinLabel') |
152 | ? rulesMessageJoinLabel | 160 | ? rulesMessageJoinLabel |
153 | : globalRulesMessageJoinLabel; | 161 | : globalRulesMessageJoinLabel; |
162 | + | ||
154 | rule.message = | 163 | rule.message = |
155 | rule.message || createPlaceholderMessage(component) + `${joinLabel ? label : ''}`; | 164 | rule.message || createPlaceholderMessage(component) + `${joinLabel ? label : ''}`; |
165 | + | ||
156 | if (component.includes('Input') || component.includes('Textarea')) { | 166 | if (component.includes('Input') || component.includes('Textarea')) { |
157 | rule.whitespace = true; | 167 | rule.whitespace = true; |
158 | } | 168 | } |
159 | - if ( | ||
160 | - component.includes('DatePicker') || | ||
161 | - component.includes('MonthPicker') || | ||
162 | - component.includes('WeekPicker') || | ||
163 | - component.includes('TimePicker') | ||
164 | - ) { | ||
165 | - rule.type = 'object'; | ||
166 | - } else if (component.includes('RangePicker') || component.includes('Upload')) { | ||
167 | - rule.type = 'array'; | ||
168 | - } else if (component.includes('InputNumber')) { | ||
169 | - rule.type = 'number'; | ||
170 | - } | 169 | + |
170 | + setComponentRuleType(rule, component); | ||
171 | } | 171 | } |
172 | } | 172 | } |
173 | 173 | ||
@@ -181,10 +181,12 @@ export default defineComponent({ | @@ -181,10 +181,12 @@ export default defineComponent({ | ||
181 | } | 181 | } |
182 | 182 | ||
183 | function handleValue(component: ComponentType, field: string) { | 183 | function handleValue(component: ComponentType, field: string) { |
184 | - const val = (props.formModel as any)[field]; | 184 | + const val = props.formModel[field]; |
185 | if (['Input', 'InputPassword', 'InputSearch', 'InputTextArea'].includes(component)) { | 185 | if (['Input', 'InputPassword', 'InputSearch', 'InputTextArea'].includes(component)) { |
186 | if (val && isNumber(val)) { | 186 | if (val && isNumber(val)) { |
187 | - (props.formModel as any)[field] = `${val}`; | 187 | + props.setFormModel(field, `${val}`); |
188 | + | ||
189 | + // props.formModel[field] = `${val}`; | ||
188 | return `${val}`; | 190 | return `${val}`; |
189 | } | 191 | } |
190 | return val; | 192 | return val; |
@@ -206,56 +208,59 @@ export default defineComponent({ | @@ -206,56 +208,59 @@ export default defineComponent({ | ||
206 | const eventKey = `on${upperFirst(changeEvent)}`; | 208 | const eventKey = `on${upperFirst(changeEvent)}`; |
207 | 209 | ||
208 | const on = { | 210 | const on = { |
209 | - [eventKey]: (e: any) => { | 211 | + [eventKey]: (e: Nullable<Recordable>) => { |
210 | if (propsData[eventKey]) { | 212 | if (propsData[eventKey]) { |
211 | propsData[eventKey](e); | 213 | propsData[eventKey](e); |
212 | } | 214 | } |
213 | 215 | ||
214 | const target = e ? e.target : null; | 216 | const target = e ? e.target : null; |
217 | + | ||
215 | const value = target ? (isCheck ? target.checked : target.value) : e; | 218 | const value = target ? (isCheck ? target.checked : target.value) : e; |
216 | - (props.formModel as any)[field] = value; | 219 | + props.setFormModel(field, value); |
220 | + // props.formModel[field] = value; | ||
217 | }, | 221 | }, |
218 | }; | 222 | }; |
219 | - const Comp = componentMap.get(component); | 223 | + const Comp = componentMap.get(component) as typeof defineComponent; |
220 | 224 | ||
221 | const { autoSetPlaceHolder, size } = props.formProps; | 225 | const { autoSetPlaceHolder, size } = props.formProps; |
222 | - const propsData: any = { | 226 | + const propsData: Recordable = { |
223 | allowClear: true, | 227 | allowClear: true, |
224 | getPopupContainer: (trigger: Element) => trigger.parentNode, | 228 | getPopupContainer: (trigger: Element) => trigger.parentNode, |
225 | size, | 229 | size, |
226 | - ...unref(getComponentsPropsRef), | ||
227 | - disabled: unref(getDisableRef), | 230 | + ...unref(getComponentsProps), |
231 | + disabled: unref(getDisable), | ||
228 | }; | 232 | }; |
229 | 233 | ||
230 | const isCreatePlaceholder = !propsData.disabled && autoSetPlaceHolder; | 234 | const isCreatePlaceholder = !propsData.disabled && autoSetPlaceHolder; |
231 | let placeholder; | 235 | let placeholder; |
232 | // RangePicker placeไธบๆฐ็ป | 236 | // RangePicker placeไธบๆฐ็ป |
233 | if (isCreatePlaceholder && component !== 'RangePicker' && component) { | 237 | if (isCreatePlaceholder && component !== 'RangePicker' && component) { |
234 | - placeholder = | ||
235 | - (unref(getComponentsPropsRef) && unref(getComponentsPropsRef).placeholder) || | ||
236 | - createPlaceholderMessage(component); | 238 | + placeholder = unref(getComponentsProps)?.placeholder || createPlaceholderMessage(component); |
237 | } | 239 | } |
238 | propsData.placeholder = placeholder; | 240 | propsData.placeholder = placeholder; |
239 | propsData.codeField = field; | 241 | propsData.codeField = field; |
240 | - propsData.formValues = unref(getValuesRef); | ||
241 | - const bindValue = { | 242 | + propsData.formValues = unref(getValues); |
243 | + | ||
244 | + const bindValue: Recordable = { | ||
242 | [valueField || (isCheck ? 'checked' : 'value')]: handleValue(component, field), | 245 | [valueField || (isCheck ? 'checked' : 'value')]: handleValue(component, field), |
243 | }; | 246 | }; |
244 | 247 | ||
248 | + const compAttr: Recordable = { | ||
249 | + ...propsData, | ||
250 | + ...on, | ||
251 | + ...bindValue, | ||
252 | + }; | ||
253 | + | ||
245 | if (!renderComponentContent) { | 254 | if (!renderComponentContent) { |
246 | - return <Comp {...propsData} {...on} {...bindValue} />; | 255 | + return <Comp {...compAttr} />; |
247 | } | 256 | } |
248 | const compSlot = isFunction(renderComponentContent) | 257 | const compSlot = isFunction(renderComponentContent) |
249 | - ? { ...renderComponentContent(unref(getValuesRef)) } | 258 | + ? { ...renderComponentContent(unref(getValues)) } |
250 | : { | 259 | : { |
251 | default: () => renderComponentContent, | 260 | default: () => renderComponentContent, |
252 | }; | 261 | }; |
253 | 262 | ||
254 | - return ( | ||
255 | - <Comp {...propsData} {...on} {...bindValue}> | ||
256 | - {compSlot} | ||
257 | - </Comp> | ||
258 | - ); | 263 | + return <Comp {...compAttr}>{compSlot}</Comp>; |
259 | } | 264 | } |
260 | 265 | ||
261 | function renderLabelHelpMessage() { | 266 | function renderLabelHelpMessage() { |
@@ -280,20 +285,22 @@ export default defineComponent({ | @@ -280,20 +285,22 @@ export default defineComponent({ | ||
280 | 285 | ||
281 | function renderItem() { | 286 | function renderItem() { |
282 | const { itemProps, slot, render, field } = props.schema; | 287 | const { itemProps, slot, render, field } = props.schema; |
283 | - const { labelCol, wrapperCol } = unref(itemLabelWidthRef); | 288 | + const { labelCol, wrapperCol } = unref(itemLabelWidthProp); |
284 | const { colon } = props.formProps; | 289 | const { colon } = props.formProps; |
290 | + | ||
285 | const getContent = () => { | 291 | const getContent = () => { |
286 | return slot | 292 | return slot |
287 | - ? getSlot(slots, slot, unref(getValuesRef)) | 293 | + ? getSlot(slots, slot, unref(getValues)) |
288 | : render | 294 | : render |
289 | - ? render(unref(getValuesRef)) | 295 | + ? render(unref(getValues)) |
290 | : renderComponent(); | 296 | : renderComponent(); |
291 | }; | 297 | }; |
298 | + | ||
292 | return ( | 299 | return ( |
293 | <Form.Item | 300 | <Form.Item |
294 | name={field} | 301 | name={field} |
295 | colon={colon} | 302 | colon={colon} |
296 | - {...(itemProps as any)} | 303 | + {...(itemProps as Recordable)} |
297 | label={renderLabelHelpMessage()} | 304 | label={renderLabelHelpMessage()} |
298 | rules={handleRules()} | 305 | rules={handleRules()} |
299 | labelCol={labelCol} | 306 | labelCol={labelCol} |
@@ -306,20 +313,23 @@ export default defineComponent({ | @@ -306,20 +313,23 @@ export default defineComponent({ | ||
306 | return () => { | 313 | return () => { |
307 | const { colProps = {}, colSlot, renderColContent, component } = props.schema; | 314 | const { colProps = {}, colSlot, renderColContent, component } = props.schema; |
308 | if (!componentMap.has(component)) return null; | 315 | if (!componentMap.has(component)) return null; |
316 | + | ||
309 | const { baseColProps = {} } = props.formProps; | 317 | const { baseColProps = {} } = props.formProps; |
310 | 318 | ||
311 | const realColProps = { ...baseColProps, ...colProps }; | 319 | const realColProps = { ...baseColProps, ...colProps }; |
312 | const { isIfShow, isShow } = getShow(); | 320 | const { isIfShow, isShow } = getShow(); |
321 | + | ||
313 | const getContent = () => { | 322 | const getContent = () => { |
314 | return colSlot | 323 | return colSlot |
315 | - ? getSlot(slots, colSlot, unref(getValuesRef)) | 324 | + ? getSlot(slots, colSlot, unref(getValues)) |
316 | : renderColContent | 325 | : renderColContent |
317 | - ? renderColContent(unref(getValuesRef)) | 326 | + ? renderColContent(unref(getValues)) |
318 | : renderItem(); | 327 | : renderItem(); |
319 | }; | 328 | }; |
329 | + | ||
320 | return ( | 330 | return ( |
321 | isIfShow && ( | 331 | isIfShow && ( |
322 | - <Col {...realColProps} class={!isShow ? 'hidden' : ''}> | 332 | + <Col {...realColProps} class={{ hidden: !isShow }}> |
323 | {() => getContent()} | 333 | {() => getContent()} |
324 | </Col> | 334 | </Col> |
325 | ) | 335 | ) |
src/components/Form/src/components/RadioButtonGroup.vue
1 | +<!-- | ||
2 | + * @Description:It is troublesome to implement radio button group in the form. So it is extracted independently as a separate component | ||
3 | +--> | ||
4 | + | ||
1 | <template> | 5 | <template> |
2 | - <RadioGroup v-bind="$attrs" v-model:value="valueRef" button-style="solid"> | 6 | + <RadioGroup v-bind="attrs" v-model:value="state" button-style="solid"> |
3 | <template v-for="item in getOptions" :key="`${item.value}`"> | 7 | <template v-for="item in getOptions" :key="`${item.value}`"> |
4 | <RadioButton :value="item.value"> {{ item.label }} </RadioButton> | 8 | <RadioButton :value="item.value"> {{ item.label }} </RadioButton> |
5 | </template> | 9 | </template> |
6 | </RadioGroup> | 10 | </RadioGroup> |
7 | </template> | 11 | </template> |
8 | <script lang="ts"> | 12 | <script lang="ts"> |
9 | - import { defineComponent, ref, PropType, watch, unref, computed } from 'vue'; | 13 | + import { defineComponent, PropType, computed } from 'vue'; |
10 | import { Radio } from 'ant-design-vue'; | 14 | import { Radio } from 'ant-design-vue'; |
11 | - import {} from 'ant-design-vue/es/radio/Group'; | ||
12 | import { isString } from '/@/utils/is'; | 15 | import { isString } from '/@/utils/is'; |
13 | - | 16 | + import { useRuleFormItem } from '/@/hooks/component/useFormItem'; |
17 | + import { useAttrs } from '/@/hooks/core/useAttrs'; | ||
14 | type OptionsItem = { label: string; value: string; disabled?: boolean }; | 18 | type OptionsItem = { label: string; value: string; disabled?: boolean }; |
15 | type RadioItem = string | OptionsItem; | 19 | type RadioItem = string | OptionsItem; |
20 | + | ||
16 | export default defineComponent({ | 21 | export default defineComponent({ |
17 | name: 'RadioButtonGroup', | 22 | name: 'RadioButtonGroup', |
18 | components: { | 23 | components: { |
@@ -28,34 +33,22 @@ | @@ -28,34 +33,22 @@ | ||
28 | default: () => [], | 33 | default: () => [], |
29 | }, | 34 | }, |
30 | }, | 35 | }, |
31 | - setup(props, { emit }) { | ||
32 | - const valueRef = ref(''); | ||
33 | - | ||
34 | - watch( | ||
35 | - () => props.value, | ||
36 | - (v = '') => { | ||
37 | - valueRef.value = v; | ||
38 | - }, | ||
39 | - { immediate: true } | ||
40 | - ); | ||
41 | - | ||
42 | - watch( | ||
43 | - () => unref(valueRef), | ||
44 | - () => { | ||
45 | - emit('change', valueRef.value); | ||
46 | - }, | ||
47 | - { immediate: true } | ||
48 | - ); | ||
49 | - | 36 | + setup(props) { |
37 | + const attrs = useAttrs(); | ||
38 | + // Embedded in the form, just use the hook binding to perform form verification | ||
39 | + const [state] = useRuleFormItem(props); | ||
40 | + // Processing options value | ||
50 | const getOptions = computed((): OptionsItem[] => { | 41 | const getOptions = computed((): OptionsItem[] => { |
51 | const { options } = props; | 42 | const { options } = props; |
52 | - if (!options || options.length === 0) return []; | 43 | + if (!options || options?.length === 0) return []; |
44 | + | ||
53 | const isStringArr = options.some((item) => isString(item)); | 45 | const isStringArr = options.some((item) => isString(item)); |
54 | if (!isStringArr) return options as OptionsItem[]; | 46 | if (!isStringArr) return options as OptionsItem[]; |
47 | + | ||
55 | return options.map((item) => ({ label: item, value: item })) as OptionsItem[]; | 48 | return options.map((item) => ({ label: item, value: item })) as OptionsItem[]; |
56 | }); | 49 | }); |
57 | 50 | ||
58 | - return { valueRef, getOptions }; | 51 | + return { state, getOptions, attrs }; |
59 | }, | 52 | }, |
60 | }); | 53 | }); |
61 | </script> | 54 | </script> |
src/components/Form/src/helper.ts
1 | +import type { ValidationRule } from 'ant-design-vue/lib/form/Form'; | ||
1 | import type { ComponentType } from './types/index'; | 2 | import type { ComponentType } from './types/index'; |
2 | import { useI18n } from '/@/hooks/web/useI18n'; | 3 | import { useI18n } from '/@/hooks/web/useI18n'; |
3 | 4 | ||
@@ -30,6 +31,16 @@ function genType() { | @@ -30,6 +31,16 @@ function genType() { | ||
30 | return ['DatePicker', 'MonthPicker', 'RangePicker', 'WeekPicker', 'TimePicker']; | 31 | return ['DatePicker', 'MonthPicker', 'RangePicker', 'WeekPicker', 'TimePicker']; |
31 | } | 32 | } |
32 | 33 | ||
34 | +export function setComponentRuleType(rule: ValidationRule, component: ComponentType) { | ||
35 | + if (['DatePicker', 'MonthPicker', 'WeekPicker', 'TimePicker'].includes(component)) { | ||
36 | + rule.type = 'object'; | ||
37 | + } else if (['RangePicker', 'Upload', 'CheckboxGroup', 'TimePicker'].includes(component)) { | ||
38 | + rule.type = 'array'; | ||
39 | + } else if (['InputNumber'].includes(component)) { | ||
40 | + rule.type = 'number'; | ||
41 | + } | ||
42 | +} | ||
43 | + | ||
33 | /** | 44 | /** |
34 | * ๆถ้ดๅญๆฎต | 45 | * ๆถ้ดๅญๆฎต |
35 | */ | 46 | */ |
src/components/Form/src/hooks/useAdvanced.ts
@@ -13,28 +13,28 @@ const BASIC_COL_LEN = 24; | @@ -13,28 +13,28 @@ const BASIC_COL_LEN = 24; | ||
13 | interface UseAdvancedContext { | 13 | interface UseAdvancedContext { |
14 | advanceState: AdvanceState; | 14 | advanceState: AdvanceState; |
15 | emit: EmitType; | 15 | emit: EmitType; |
16 | - getMergePropsRef: ComputedRef<FormProps>; | ||
17 | getProps: ComputedRef<FormProps>; | 16 | getProps: ComputedRef<FormProps>; |
18 | getSchema: ComputedRef<FormSchema[]>; | 17 | getSchema: ComputedRef<FormSchema[]>; |
19 | - formModel: any; | ||
20 | - defaultValueRef: Ref<any>; | 18 | + formModel: Recordable; |
19 | + defaultValueRef: Ref<Recordable>; | ||
21 | } | 20 | } |
22 | 21 | ||
23 | export default function ({ | 22 | export default function ({ |
24 | advanceState, | 23 | advanceState, |
25 | emit, | 24 | emit, |
26 | - getMergePropsRef, | ||
27 | getProps, | 25 | getProps, |
28 | getSchema, | 26 | getSchema, |
29 | formModel, | 27 | formModel, |
30 | defaultValueRef, | 28 | defaultValueRef, |
31 | }: UseAdvancedContext) { | 29 | }: UseAdvancedContext) { |
32 | const { realWidthRef, screenEnum, screenRef } = useBreakpoint(); | 30 | const { realWidthRef, screenEnum, screenRef } = useBreakpoint(); |
33 | - const getEmptySpanRef = computed((): number => { | 31 | + |
32 | + const getEmptySpan = computed((): number => { | ||
34 | if (!advanceState.isAdvanced) { | 33 | if (!advanceState.isAdvanced) { |
35 | return 0; | 34 | return 0; |
36 | } | 35 | } |
37 | - const emptySpan = unref(getMergePropsRef).emptySpan || 0; | 36 | + // For some special cases, you need to manually specify additional blank lines |
37 | + const emptySpan = unref(getProps).emptySpan || 0; | ||
38 | 38 | ||
39 | if (isNumber(emptySpan)) { | 39 | if (isNumber(emptySpan)) { |
40 | return emptySpan; | 40 | return emptySpan; |
@@ -49,27 +49,6 @@ export default function ({ | @@ -49,27 +49,6 @@ export default function ({ | ||
49 | return 0; | 49 | return 0; |
50 | }); | 50 | }); |
51 | 51 | ||
52 | - const getActionPropsRef = computed(() => { | ||
53 | - const { | ||
54 | - resetButtonOptions, | ||
55 | - submitButtonOptions, | ||
56 | - showActionButtonGroup, | ||
57 | - showResetButton, | ||
58 | - showSubmitButton, | ||
59 | - showAdvancedButton, | ||
60 | - actionColOptions, | ||
61 | - } = unref(getProps); | ||
62 | - return { | ||
63 | - resetButtonOptions, | ||
64 | - submitButtonOptions, | ||
65 | - show: showActionButtonGroup, | ||
66 | - showResetButton, | ||
67 | - showSubmitButton, | ||
68 | - showAdvancedButton, | ||
69 | - actionColOptions, | ||
70 | - }; | ||
71 | - }); | ||
72 | - | ||
73 | watch( | 52 | watch( |
74 | [() => unref(getSchema), () => advanceState.isAdvanced, () => unref(realWidthRef)], | 53 | [() => unref(getSchema), () => advanceState.isAdvanced, () => unref(realWidthRef)], |
75 | () => { | 54 | () => { |
@@ -90,6 +69,7 @@ export default function ({ | @@ -90,6 +69,7 @@ export default function ({ | ||
90 | parseInt(itemCol.sm as string) || | 69 | parseInt(itemCol.sm as string) || |
91 | (itemCol.span as number) || | 70 | (itemCol.span as number) || |
92 | BASIC_COL_LEN; | 71 | BASIC_COL_LEN; |
72 | + | ||
93 | const lgWidth = parseInt(itemCol.lg as string) || mdWidth; | 73 | const lgWidth = parseInt(itemCol.lg as string) || mdWidth; |
94 | const xlWidth = parseInt(itemCol.xl as string) || lgWidth; | 74 | const xlWidth = parseInt(itemCol.xl as string) || lgWidth; |
95 | const xxlWidth = parseInt(itemCol.xxl as string) || xlWidth; | 75 | const xxlWidth = parseInt(itemCol.xxl as string) || xlWidth; |
@@ -102,15 +82,16 @@ export default function ({ | @@ -102,15 +82,16 @@ export default function ({ | ||
102 | } else { | 82 | } else { |
103 | itemColSum += xxlWidth; | 83 | itemColSum += xxlWidth; |
104 | } | 84 | } |
85 | + | ||
105 | if (isLastAction) { | 86 | if (isLastAction) { |
106 | advanceState.hideAdvanceBtn = false; | 87 | advanceState.hideAdvanceBtn = false; |
107 | if (itemColSum <= BASIC_COL_LEN * 2) { | 88 | if (itemColSum <= BASIC_COL_LEN * 2) { |
108 | - // ๅฐไบ็ญไบ2่กๆถ๏ผไธๆพ็คบๆถ่ตทๅฑๅผๆ้ฎ | 89 | + // When less than or equal to 2 lines, the collapse and expand buttons are not displayed |
109 | advanceState.hideAdvanceBtn = true; | 90 | advanceState.hideAdvanceBtn = true; |
110 | advanceState.isAdvanced = true; | 91 | advanceState.isAdvanced = true; |
111 | } else if ( | 92 | } else if ( |
112 | itemColSum > BASIC_COL_LEN * 2 && | 93 | itemColSum > BASIC_COL_LEN * 2 && |
113 | - itemColSum <= BASIC_COL_LEN * (unref(getMergePropsRef).autoAdvancedLine || 3) | 94 | + itemColSum <= BASIC_COL_LEN * (unref(getProps).autoAdvancedLine || 3) |
114 | ) { | 95 | ) { |
115 | advanceState.hideAdvanceBtn = false; | 96 | advanceState.hideAdvanceBtn = false; |
116 | 97 | ||
@@ -168,13 +149,9 @@ export default function ({ | @@ -168,13 +149,9 @@ export default function ({ | ||
168 | } | 149 | } |
169 | } | 150 | } |
170 | 151 | ||
171 | - advanceState.actionSpan = (realItemColSum % BASIC_COL_LEN) + unref(getEmptySpanRef); | 152 | + advanceState.actionSpan = (realItemColSum % BASIC_COL_LEN) + unref(getEmptySpan); |
172 | 153 | ||
173 | - getAdvanced( | ||
174 | - unref(getActionPropsRef).actionColOptions || { span: BASIC_COL_LEN }, | ||
175 | - itemColSum, | ||
176 | - true | ||
177 | - ); | 154 | + getAdvanced(unref(getProps).actionColOptions || { span: BASIC_COL_LEN }, itemColSum, true); |
178 | 155 | ||
179 | emit('advanced-change'); | 156 | emit('advanced-change'); |
180 | } | 157 | } |
@@ -182,5 +159,6 @@ export default function ({ | @@ -182,5 +159,6 @@ export default function ({ | ||
182 | function handleToggleAdvanced() { | 159 | function handleToggleAdvanced() { |
183 | advanceState.isAdvanced = !advanceState.isAdvanced; | 160 | advanceState.isAdvanced = !advanceState.isAdvanced; |
184 | } | 161 | } |
185 | - return { getActionPropsRef, handleToggleAdvanced }; | 162 | + |
163 | + return { handleToggleAdvanced }; | ||
186 | } | 164 | } |
src/components/Form/src/hooks/useComponentRegister.ts
1 | import type { ComponentType } from '../types/index'; | 1 | import type { ComponentType } from '../types/index'; |
2 | import { tryOnUnmounted } from '/@/utils/helper/vueHelper'; | 2 | import { tryOnUnmounted } from '/@/utils/helper/vueHelper'; |
3 | import { add, del } from '../componentMap'; | 3 | import { add, del } from '../componentMap'; |
4 | -export function useComponentRegister(compName: ComponentType, comp: any) { | 4 | +import type { Component } from 'vue'; |
5 | + | ||
6 | +export function useComponentRegister(compName: ComponentType, comp: Component) { | ||
5 | add(compName, comp); | 7 | add(compName, comp); |
6 | tryOnUnmounted(() => { | 8 | tryOnUnmounted(() => { |
7 | del(compName); | 9 | del(compName); |
src/components/Form/src/hooks/useForm.ts
1 | -import { ref, onUnmounted, unref } from 'vue'; | 1 | +import { ref, onUnmounted, unref, nextTick } from 'vue'; |
2 | 2 | ||
3 | import { isInSetup } from '/@/utils/helper/vueHelper'; | 3 | import { isInSetup } from '/@/utils/helper/vueHelper'; |
4 | import { isProdMode } from '/@/utils/env'; | 4 | import { isProdMode } from '/@/utils/env'; |
5 | +import { error } from '/@/utils/log'; | ||
5 | 6 | ||
6 | import type { FormProps, FormActionType, UseFormReturnType, FormSchema } from '../types/form'; | 7 | import type { FormProps, FormActionType, UseFormReturnType, FormSchema } from '../types/form'; |
7 | import type { NamePath } from 'ant-design-vue/lib/form/interface'; | 8 | import type { NamePath } from 'ant-design-vue/lib/form/interface'; |
8 | 9 | ||
9 | -export declare type ValidateFields = (nameList?: NamePath[]) => Promise<any>; | 10 | +export declare type ValidateFields = (nameList?: NamePath[]) => Promise<Recordable>; |
10 | 11 | ||
11 | export function useForm(props?: Partial<FormProps>): UseFormReturnType { | 12 | export function useForm(props?: Partial<FormProps>): UseFormReturnType { |
12 | isInSetup(); | 13 | isInSetup(); |
13 | - const formRef = ref<FormActionType | null>(null); | ||
14 | - const loadedRef = ref<boolean | null>(false); | ||
15 | 14 | ||
16 | - function getForm() { | 15 | + const formRef = ref<Nullable<FormActionType>>(null); |
16 | + const loadedRef = ref<Nullable<boolean>>(false); | ||
17 | + | ||
18 | + async function getForm() { | ||
17 | const form = unref(formRef); | 19 | const form = unref(formRef); |
18 | if (!form) { | 20 | if (!form) { |
19 | - throw new Error('formRef is Null'); | 21 | + error( |
22 | + 'The form instance has not been obtained, please make sure that the form has been rendered when performing the form operation!' | ||
23 | + ); | ||
20 | } | 24 | } |
25 | + await nextTick(); | ||
21 | return form as FormActionType; | 26 | return form as FormActionType; |
22 | } | 27 | } |
23 | function register(instance: FormActionType) { | 28 | function register(instance: FormActionType) { |
@@ -27,45 +32,73 @@ export function useForm(props?: Partial<FormProps>): UseFormReturnType { | @@ -27,45 +32,73 @@ export function useForm(props?: Partial<FormProps>): UseFormReturnType { | ||
27 | loadedRef.value = null; | 32 | loadedRef.value = null; |
28 | }); | 33 | }); |
29 | if (unref(loadedRef) && isProdMode() && instance === unref(formRef)) return; | 34 | if (unref(loadedRef) && isProdMode() && instance === unref(formRef)) return; |
35 | + | ||
30 | formRef.value = instance; | 36 | formRef.value = instance; |
31 | props && instance.setProps(props); | 37 | props && instance.setProps(props); |
32 | loadedRef.value = true; | 38 | loadedRef.value = true; |
33 | } | 39 | } |
34 | 40 | ||
35 | const methods: FormActionType = { | 41 | const methods: FormActionType = { |
36 | - setProps: (formProps: Partial<FormProps>) => { | ||
37 | - getForm().setProps(formProps); | 42 | + scrollToField: async (name: NamePath, options?: ScrollOptions | undefined) => { |
43 | + const form = await getForm(); | ||
44 | + form.scrollToField(name, options); | ||
38 | }, | 45 | }, |
39 | - updateSchema: (data: Partial<FormSchema> | Partial<FormSchema>[]) => { | ||
40 | - getForm().updateSchema(data); | 46 | + setProps: async (formProps: Partial<FormProps>) => { |
47 | + const form = await getForm(); | ||
48 | + form.setProps(formProps); | ||
41 | }, | 49 | }, |
42 | - clearValidate: (name?: string | string[]) => { | ||
43 | - getForm().clearValidate(name); | 50 | + |
51 | + updateSchema: async (data: Partial<FormSchema> | Partial<FormSchema>[]) => { | ||
52 | + const form = await getForm(); | ||
53 | + form.updateSchema(data); | ||
54 | + }, | ||
55 | + | ||
56 | + clearValidate: async (name?: string | string[]) => { | ||
57 | + const form = await getForm(); | ||
58 | + form.clearValidate(name); | ||
44 | }, | 59 | }, |
60 | + | ||
45 | resetFields: async () => { | 61 | resetFields: async () => { |
46 | - await getForm().resetFields(); | 62 | + getForm().then(async (form) => { |
63 | + await form.resetFields(); | ||
64 | + }); | ||
47 | }, | 65 | }, |
48 | - removeSchemaByFiled: (field: string | string[]) => { | ||
49 | - getForm().removeSchemaByFiled(field); | 66 | + |
67 | + removeSchemaByFiled: async (field: string | string[]) => { | ||
68 | + const form = await getForm(); | ||
69 | + form.removeSchemaByFiled(field); | ||
50 | }, | 70 | }, |
51 | - getFieldsValue: () => { | ||
52 | - return getForm().getFieldsValue(); | 71 | + |
72 | + // TODO promisify | ||
73 | + getFieldsValue: <T>() => { | ||
74 | + return unref(formRef)?.getFieldsValue() as T; | ||
53 | }, | 75 | }, |
54 | - setFieldsValue: <T>(values: T) => { | ||
55 | - getForm().setFieldsValue<T>(values); | 76 | + |
77 | + setFieldsValue: async <T>(values: T) => { | ||
78 | + const form = await getForm(); | ||
79 | + form.setFieldsValue<T>(values); | ||
56 | }, | 80 | }, |
57 | - appendSchemaByField: (schema: FormSchema, prefixField?: string | undefined) => { | ||
58 | - getForm().appendSchemaByField(schema, prefixField); | 81 | + |
82 | + appendSchemaByField: async (schema: FormSchema, prefixField?: string | undefined) => { | ||
83 | + const form = await getForm(); | ||
84 | + form.appendSchemaByField(schema, prefixField); | ||
59 | }, | 85 | }, |
86 | + | ||
60 | submit: async (): Promise<any> => { | 87 | submit: async (): Promise<any> => { |
61 | - return getForm().submit(); | 88 | + const form = await getForm(); |
89 | + return form.submit(); | ||
90 | + }, | ||
91 | + | ||
92 | + validate: async (nameList?: NamePath[]): Promise<Recordable> => { | ||
93 | + const form = await getForm(); | ||
94 | + return form.validate(nameList); | ||
95 | + }, | ||
96 | + | ||
97 | + validateFields: async (nameList?: NamePath[]): Promise<Recordable> => { | ||
98 | + const form = await getForm(); | ||
99 | + return form.validateFields(nameList); | ||
62 | }, | 100 | }, |
63 | - validate: ((async (nameList?: NamePath[]): Promise<any> => { | ||
64 | - return getForm().validate(nameList); | ||
65 | - }) as any) as ValidateFields, | ||
66 | - validateFields: ((async (nameList?: NamePath[]): Promise<any> => { | ||
67 | - return getForm().validate(nameList); | ||
68 | - }) as any) as ValidateFields, | ||
69 | - } as FormActionType; | 101 | + }; |
102 | + | ||
70 | return [register, methods]; | 103 | return [register, methods]; |
71 | } | 104 | } |
src/components/Form/src/hooks/useFormContext.ts
0 โ 100644
1 | +import { InjectionKey } from 'vue'; | ||
2 | +import { createContext, useContext } from '/@/hooks/core/useContext'; | ||
3 | + | ||
4 | +export interface FormContextProps { | ||
5 | + resetAction: () => Promise<void>; | ||
6 | + submitAction: () => Promise<void>; | ||
7 | +} | ||
8 | + | ||
9 | +const key: InjectionKey<FormContextProps> = Symbol(); | ||
10 | + | ||
11 | +export function createFormContext(context: FormContextProps) { | ||
12 | + return createContext<FormContextProps>(context, key); | ||
13 | +} | ||
14 | + | ||
15 | +export function useFormContext() { | ||
16 | + return useContext<FormContextProps>(key); | ||
17 | +} |
src/components/Form/src/hooks/useFormAction.ts renamed to src/components/Form/src/hooks/useFormEvents.ts
@@ -9,22 +9,19 @@ import { deepMerge, unique } from '/@/utils'; | @@ -9,22 +9,19 @@ import { deepMerge, unique } from '/@/utils'; | ||
9 | import { dateItemType } from '../helper'; | 9 | import { dateItemType } from '../helper'; |
10 | import moment from 'moment'; | 10 | import moment from 'moment'; |
11 | import { cloneDeep } from 'lodash-es'; | 11 | import { cloneDeep } from 'lodash-es'; |
12 | +import { error } from '/@/utils/log'; | ||
12 | 13 | ||
13 | interface UseFormActionContext { | 14 | interface UseFormActionContext { |
14 | emit: EmitType; | 15 | emit: EmitType; |
15 | getProps: ComputedRef<FormProps>; | 16 | getProps: ComputedRef<FormProps>; |
16 | getSchema: ComputedRef<FormSchema[]>; | 17 | getSchema: ComputedRef<FormSchema[]>; |
17 | - formModel: any; | ||
18 | - defaultValueRef: Ref<any>; | 18 | + formModel: Recordable; |
19 | + defaultValueRef: Ref<Recordable>; | ||
19 | formElRef: Ref<FormActionType>; | 20 | formElRef: Ref<FormActionType>; |
20 | schemaRef: Ref<FormSchema[]>; | 21 | schemaRef: Ref<FormSchema[]>; |
21 | handleFormValues: Fn; | 22 | handleFormValues: Fn; |
22 | - actionState: { | ||
23 | - resetAction: any; | ||
24 | - submitAction: any; | ||
25 | - }; | ||
26 | } | 23 | } |
27 | -export function useFormAction({ | 24 | +export function useFormEvents({ |
28 | emit, | 25 | emit, |
29 | getProps, | 26 | getProps, |
30 | formModel, | 27 | formModel, |
@@ -33,34 +30,34 @@ export function useFormAction({ | @@ -33,34 +30,34 @@ export function useFormAction({ | ||
33 | formElRef, | 30 | formElRef, |
34 | schemaRef, | 31 | schemaRef, |
35 | handleFormValues, | 32 | handleFormValues, |
36 | - actionState, | ||
37 | }: UseFormActionContext) { | 33 | }: UseFormActionContext) { |
38 | - async function resetFields(): Promise<any> { | 34 | + async function resetFields(): Promise<void> { |
39 | const { resetFunc, submitOnReset } = unref(getProps); | 35 | const { resetFunc, submitOnReset } = unref(getProps); |
40 | resetFunc && isFunction(resetFunc) && (await resetFunc()); | 36 | resetFunc && isFunction(resetFunc) && (await resetFunc()); |
37 | + | ||
41 | const formEl = unref(formElRef); | 38 | const formEl = unref(formElRef); |
42 | if (!formEl) return; | 39 | if (!formEl) return; |
40 | + | ||
43 | Object.keys(formModel).forEach((key) => { | 41 | Object.keys(formModel).forEach((key) => { |
44 | - (formModel as any)[key] = defaultValueRef.value[key]; | 42 | + formModel[key] = defaultValueRef.value[key]; |
45 | }); | 43 | }); |
46 | clearValidate(); | 44 | clearValidate(); |
47 | emit('reset', toRaw(formModel)); | 45 | emit('reset', toRaw(formModel)); |
48 | - // return values; | ||
49 | submitOnReset && handleSubmit(); | 46 | submitOnReset && handleSubmit(); |
50 | } | 47 | } |
51 | 48 | ||
52 | /** | 49 | /** |
53 | - * @description: ่ฎพ็ฝฎ่กจๅๅผ | 50 | + * @description: Set form value |
54 | */ | 51 | */ |
55 | async function setFieldsValue(values: any): Promise<void> { | 52 | async function setFieldsValue(values: any): Promise<void> { |
56 | const fields = unref(getSchema) | 53 | const fields = unref(getSchema) |
57 | .map((item) => item.field) | 54 | .map((item) => item.field) |
58 | .filter(Boolean); | 55 | .filter(Boolean); |
59 | - // const formEl = unref(formElRef); | ||
60 | 56 | ||
61 | const validKeys: string[] = []; | 57 | const validKeys: string[] = []; |
62 | Object.keys(values).forEach((key) => { | 58 | Object.keys(values).forEach((key) => { |
63 | const element = values[key]; | 59 | const element = values[key]; |
60 | + // 0| '' is allow | ||
64 | if (element !== undefined && element !== null && fields.includes(key)) { | 61 | if (element !== undefined && element !== null && fields.includes(key)) { |
65 | // time type | 62 | // time type |
66 | if (itemIsDateType(key)) { | 63 | if (itemIsDateType(key)) { |
@@ -69,12 +66,12 @@ export function useFormAction({ | @@ -69,12 +66,12 @@ export function useFormAction({ | ||
69 | for (const ele of element) { | 66 | for (const ele of element) { |
70 | arr.push(moment(ele)); | 67 | arr.push(moment(ele)); |
71 | } | 68 | } |
72 | - (formModel as any)[key] = arr; | 69 | + formModel[key] = arr; |
73 | } else { | 70 | } else { |
74 | - (formModel as any)[key] = moment(element); | 71 | + formModel[key] = moment(element); |
75 | } | 72 | } |
76 | } else { | 73 | } else { |
77 | - (formModel as any)[key] = element; | 74 | + formModel[key] = element; |
78 | } | 75 | } |
79 | validKeys.push(key); | 76 | validKeys.push(key); |
80 | } | 77 | } |
@@ -84,19 +81,18 @@ export function useFormAction({ | @@ -84,19 +81,18 @@ export function useFormAction({ | ||
84 | /** | 81 | /** |
85 | * @description: Delete based on field name | 82 | * @description: Delete based on field name |
86 | */ | 83 | */ |
87 | - function removeSchemaByFiled(fields: string | string[]): void { | 84 | + async function removeSchemaByFiled(fields: string | string[]): Promise<void> { |
88 | const schemaList: FormSchema[] = cloneDeep(unref(getSchema)); | 85 | const schemaList: FormSchema[] = cloneDeep(unref(getSchema)); |
89 | - if (!fields) { | ||
90 | - return; | ||
91 | - } | ||
92 | - let fieldList: string[] = fields as string[]; | 86 | + if (!fields) return; |
87 | + | ||
88 | + let fieldList: string[] = isString(fields) ? [fields] : fields; | ||
93 | if (isString(fields)) { | 89 | if (isString(fields)) { |
94 | fieldList = [fields]; | 90 | fieldList = [fields]; |
95 | } | 91 | } |
96 | for (const field of fieldList) { | 92 | for (const field of fieldList) { |
97 | _removeSchemaByFiled(field, schemaList); | 93 | _removeSchemaByFiled(field, schemaList); |
98 | } | 94 | } |
99 | - schemaRef.value = schemaList as any; | 95 | + schemaRef.value = schemaList; |
100 | } | 96 | } |
101 | 97 | ||
102 | /** | 98 | /** |
@@ -114,27 +110,26 @@ export function useFormAction({ | @@ -114,27 +110,26 @@ export function useFormAction({ | ||
114 | /** | 110 | /** |
115 | * @description: Insert after a certain field, if not insert the last | 111 | * @description: Insert after a certain field, if not insert the last |
116 | */ | 112 | */ |
117 | - function appendSchemaByField(schema: FormSchema, prefixField?: string) { | 113 | + async function appendSchemaByField(schema: FormSchema, prefixField?: string, first = false) { |
118 | const schemaList: FormSchema[] = cloneDeep(unref(getSchema)); | 114 | const schemaList: FormSchema[] = cloneDeep(unref(getSchema)); |
119 | 115 | ||
120 | const index = schemaList.findIndex((schema) => schema.field === prefixField); | 116 | const index = schemaList.findIndex((schema) => schema.field === prefixField); |
121 | - const hasInList = schemaList.find((item) => item.field === schema.field); | 117 | + const hasInList = schemaList.some((item) => item.field === schema.field); |
122 | 118 | ||
123 | - if (hasInList) { | ||
124 | - return; | ||
125 | - } | ||
126 | - if (!prefixField || index === -1) { | ||
127 | - schemaList.push(schema); | ||
128 | - schemaRef.value = schemaList as any; | 119 | + if (!hasInList) return; |
120 | + | ||
121 | + if (!prefixField || index === -1 || first) { | ||
122 | + first ? schemaList.unshift(schema) : schemaList.push(schema); | ||
123 | + schemaRef.value = schemaList; | ||
129 | return; | 124 | return; |
130 | } | 125 | } |
131 | if (index !== -1) { | 126 | if (index !== -1) { |
132 | schemaList.splice(index + 1, 0, schema); | 127 | schemaList.splice(index + 1, 0, schema); |
133 | } | 128 | } |
134 | - schemaRef.value = schemaList as any; | 129 | + schemaRef.value = schemaList; |
135 | } | 130 | } |
136 | 131 | ||
137 | - function updateSchema(data: Partial<FormSchema> | Partial<FormSchema>[]) { | 132 | + async function updateSchema(data: Partial<FormSchema> | Partial<FormSchema>[]) { |
138 | let updateData: Partial<FormSchema>[] = []; | 133 | let updateData: Partial<FormSchema>[] = []; |
139 | if (isObject(data)) { | 134 | if (isObject(data)) { |
140 | updateData.push(data as FormSchema); | 135 | updateData.push(data as FormSchema); |
@@ -142,9 +137,13 @@ export function useFormAction({ | @@ -142,9 +137,13 @@ export function useFormAction({ | ||
142 | if (isArray(data)) { | 137 | if (isArray(data)) { |
143 | updateData = [...data]; | 138 | updateData = [...data]; |
144 | } | 139 | } |
140 | + | ||
145 | const hasField = updateData.every((item) => Reflect.has(item, 'field') && item.field); | 141 | const hasField = updateData.every((item) => Reflect.has(item, 'field') && item.field); |
142 | + | ||
146 | if (!hasField) { | 143 | if (!hasField) { |
147 | - throw new Error('Must pass in the `field` field!'); | 144 | + error( |
145 | + 'All children of the form Schema array that need to be updated must contain the `field` field' | ||
146 | + ); | ||
148 | } | 147 | } |
149 | const schema: FormSchema[] = []; | 148 | const schema: FormSchema[] = []; |
150 | updateData.forEach((item) => { | 149 | updateData.forEach((item) => { |
@@ -157,12 +156,12 @@ export function useFormAction({ | @@ -157,12 +156,12 @@ export function useFormAction({ | ||
157 | } | 156 | } |
158 | }); | 157 | }); |
159 | }); | 158 | }); |
160 | - schemaRef.value = unique(schema, 'field') as any; | 159 | + schemaRef.value = unique(schema, 'field'); |
161 | } | 160 | } |
162 | 161 | ||
163 | - function getFieldsValue(): any { | 162 | + function getFieldsValue(): Recordable { |
164 | const formEl = unref(formElRef); | 163 | const formEl = unref(formElRef); |
165 | - if (!formEl) return; | 164 | + if (!formEl) return {}; |
166 | return handleFormValues(toRaw(unref(formModel))); | 165 | return handleFormValues(toRaw(unref(formModel))); |
167 | } | 166 | } |
168 | 167 | ||
@@ -171,23 +170,24 @@ export function useFormAction({ | @@ -171,23 +170,24 @@ export function useFormAction({ | ||
171 | */ | 170 | */ |
172 | function itemIsDateType(key: string) { | 171 | function itemIsDateType(key: string) { |
173 | return unref(getSchema).some((item) => { | 172 | return unref(getSchema).some((item) => { |
174 | - return item.field === key ? dateItemType.includes(item.component!) : false; | 173 | + return item.field === key ? dateItemType.includes(item.component) : false; |
175 | }); | 174 | }); |
176 | } | 175 | } |
177 | 176 | ||
178 | - function validateFields(nameList?: NamePath[] | undefined) { | ||
179 | - if (!formElRef.value) return; | ||
180 | - return formElRef.value.validateFields(nameList); | 177 | + async function validateFields(nameList?: NamePath[] | undefined) { |
178 | + return await unref(formElRef)?.validateFields(nameList); | ||
179 | + } | ||
180 | + | ||
181 | + async function validate(nameList?: NamePath[] | undefined) { | ||
182 | + return await unref(formElRef)?.validate(nameList); | ||
181 | } | 183 | } |
182 | 184 | ||
183 | - function validate(nameList?: NamePath[] | undefined) { | ||
184 | - if (!formElRef.value) return; | ||
185 | - return formElRef.value.validate(nameList); | 185 | + async function clearValidate(name?: string | string[]) { |
186 | + await unref(formElRef)?.clearValidate(name); | ||
186 | } | 187 | } |
187 | 188 | ||
188 | - function clearValidate(name?: string | string[]) { | ||
189 | - if (!formElRef.value) return; | ||
190 | - formElRef.value.clearValidate(name); | 189 | + async function scrollToField(name: NamePath, options?: ScrollOptions | undefined) { |
190 | + await unref(formElRef)?.scrollToField(name, options); | ||
191 | } | 191 | } |
192 | 192 | ||
193 | /** | 193 | /** |
@@ -208,13 +208,6 @@ export function useFormAction({ | @@ -208,13 +208,6 @@ export function useFormAction({ | ||
208 | emit('submit', res); | 208 | emit('submit', res); |
209 | } catch (error) {} | 209 | } catch (error) {} |
210 | } | 210 | } |
211 | - actionState.resetAction = { | ||
212 | - onClick: resetFields, | ||
213 | - }; | ||
214 | - | ||
215 | - actionState.submitAction = { | ||
216 | - onClick: handleSubmit, | ||
217 | - }; | ||
218 | 211 | ||
219 | return { | 212 | return { |
220 | handleSubmit, | 213 | handleSubmit, |
@@ -227,5 +220,6 @@ export function useFormAction({ | @@ -227,5 +220,6 @@ export function useFormAction({ | ||
227 | removeSchemaByFiled, | 220 | removeSchemaByFiled, |
228 | resetFields, | 221 | resetFields, |
229 | setFieldsValue, | 222 | setFieldsValue, |
223 | + scrollToField, | ||
230 | }; | 224 | }; |
231 | } | 225 | } |
src/components/Form/src/hooks/useFormValues.ts
@@ -9,7 +9,7 @@ interface UseFormValuesContext { | @@ -9,7 +9,7 @@ interface UseFormValuesContext { | ||
9 | fieldMapToTimeRef: Ref<FieldMapToTime>; | 9 | fieldMapToTimeRef: Ref<FieldMapToTime>; |
10 | defaultValueRef: Ref<any>; | 10 | defaultValueRef: Ref<any>; |
11 | getSchema: ComputedRef<FormSchema[]>; | 11 | getSchema: ComputedRef<FormSchema[]>; |
12 | - formModel: any; | 12 | + formModel: Recordable; |
13 | } | 13 | } |
14 | export function useFormValues({ | 14 | export function useFormValues({ |
15 | transformDateFuncRef, | 15 | transformDateFuncRef, |
@@ -19,11 +19,11 @@ export function useFormValues({ | @@ -19,11 +19,11 @@ export function useFormValues({ | ||
19 | formModel, | 19 | formModel, |
20 | }: UseFormValuesContext) { | 20 | }: UseFormValuesContext) { |
21 | // Processing form values | 21 | // Processing form values |
22 | - function handleFormValues(values: Record<string, any>) { | 22 | + function handleFormValues(values: Recordable) { |
23 | if (!isObject(values)) { | 23 | if (!isObject(values)) { |
24 | return {}; | 24 | return {}; |
25 | } | 25 | } |
26 | - const resMap: Record<string, any> = {}; | 26 | + const res: Recordable = {}; |
27 | for (const item of Object.entries(values)) { | 27 | for (const item of Object.entries(values)) { |
28 | let [, value] = item; | 28 | let [, value] = item; |
29 | const [key] = item; | 29 | const [key] = item; |
@@ -41,15 +41,15 @@ export function useFormValues({ | @@ -41,15 +41,15 @@ export function useFormValues({ | ||
41 | if (isString(value)) { | 41 | if (isString(value)) { |
42 | value = value.trim(); | 42 | value = value.trim(); |
43 | } | 43 | } |
44 | - resMap[key] = value; | 44 | + res[key] = value; |
45 | } | 45 | } |
46 | - return handleRangeTimeValue(resMap); | 46 | + return handleRangeTimeValue(res); |
47 | } | 47 | } |
48 | 48 | ||
49 | /** | 49 | /** |
50 | * @description: Processing time interval parameters | 50 | * @description: Processing time interval parameters |
51 | */ | 51 | */ |
52 | - function handleRangeTimeValue(values: Record<string, any>) { | 52 | + function handleRangeTimeValue(values: Recordable) { |
53 | const fieldMapToTime = unref(fieldMapToTimeRef); | 53 | const fieldMapToTime = unref(fieldMapToTimeRef); |
54 | 54 | ||
55 | if (!fieldMapToTime || !Array.isArray(fieldMapToTime)) { | 55 | if (!fieldMapToTime || !Array.isArray(fieldMapToTime)) { |
@@ -65,6 +65,7 @@ export function useFormValues({ | @@ -65,6 +65,7 @@ export function useFormValues({ | ||
65 | 65 | ||
66 | values[startTimeKey] = moment(startTime).format(format); | 66 | values[startTimeKey] = moment(startTime).format(format); |
67 | values[endTimeKey] = moment(endTime).format(format); | 67 | values[endTimeKey] = moment(endTime).format(format); |
68 | + Reflect.deleteProperty(values, field); | ||
68 | } | 69 | } |
69 | 70 | ||
70 | return values; | 71 | return values; |
@@ -72,11 +73,11 @@ export function useFormValues({ | @@ -72,11 +73,11 @@ export function useFormValues({ | ||
72 | 73 | ||
73 | function initDefault() { | 74 | function initDefault() { |
74 | const schemas = unref(getSchema); | 75 | const schemas = unref(getSchema); |
75 | - const obj: Record<string, any> = {}; | 76 | + const obj: Recordable = {}; |
76 | schemas.forEach((item) => { | 77 | schemas.forEach((item) => { |
77 | if (item.defaultValue) { | 78 | if (item.defaultValue) { |
78 | obj[item.field] = item.defaultValue; | 79 | obj[item.field] = item.defaultValue; |
79 | - (formModel as any)[item.field] = item.defaultValue; | 80 | + formModel[item.field] = item.defaultValue; |
80 | } | 81 | } |
81 | }); | 82 | }); |
82 | defaultValueRef.value = obj; | 83 | defaultValueRef.value = obj; |
src/components/Form/src/hooks/useLabelWidth.ts
@@ -4,23 +4,8 @@ import type { FormProps, FormSchema } from '../types/form'; | @@ -4,23 +4,8 @@ import type { FormProps, FormSchema } from '../types/form'; | ||
4 | import { computed, unref } from 'vue'; | 4 | import { computed, unref } from 'vue'; |
5 | import { isNumber } from '/@/utils/is'; | 5 | import { isNumber } from '/@/utils/is'; |
6 | 6 | ||
7 | -// export function useGlobalLabelWidth(propsRef: ComputedRef<FormProps>) { | ||
8 | -// return computed(() => { | ||
9 | -// const { labelWidth, labelCol, wrapperCol } = unref(propsRef); | ||
10 | -// if (!labelWidth) { | ||
11 | -// return { labelCol, wrapperCol }; | ||
12 | -// } | ||
13 | - | ||
14 | -// const width = isNumber(labelWidth) ? `${labelWidth}px` : labelWidth; | ||
15 | -// return { | ||
16 | -// labelCol: { style: { width }, span: 1, ...labelCol }, | ||
17 | -// wrapperCol: { style: { width: `calc(100% - ${width})` }, span: 23, ...wrapperCol }, | ||
18 | -// }; | ||
19 | -// }); | ||
20 | -// } | ||
21 | - | ||
22 | export function useItemLabelWidth(schemaItemRef: Ref<FormSchema>, propsRef: Ref<FormProps>) { | 7 | export function useItemLabelWidth(schemaItemRef: Ref<FormSchema>, propsRef: Ref<FormProps>) { |
23 | - return computed((): any => { | 8 | + return computed(() => { |
24 | const schemaItem = unref(schemaItemRef); | 9 | const schemaItem = unref(schemaItemRef); |
25 | const { labelCol = {}, wrapperCol = {} } = schemaItem.itemProps || {}; | 10 | const { labelCol = {}, wrapperCol = {} } = schemaItem.itemProps || {}; |
26 | const { labelWidth, disabledLabelWidth } = schemaItem; | 11 | const { labelWidth, disabledLabelWidth } = schemaItem; |
@@ -29,7 +14,7 @@ export function useItemLabelWidth(schemaItemRef: Ref<FormSchema>, propsRef: Ref< | @@ -29,7 +14,7 @@ export function useItemLabelWidth(schemaItemRef: Ref<FormSchema>, propsRef: Ref< | ||
29 | labelWidth: globalLabelWidth, | 14 | labelWidth: globalLabelWidth, |
30 | labelCol: globalLabelCol, | 15 | labelCol: globalLabelCol, |
31 | wrapperCol: globWrapperCol, | 16 | wrapperCol: globWrapperCol, |
32 | - } = unref(propsRef) as any; | 17 | + } = unref(propsRef); |
33 | 18 | ||
34 | // If labelWidth is set globally, all items setting | 19 | // If labelWidth is set globally, all items setting |
35 | if ((!globalLabelWidth && !labelWidth && !globalLabelCol) || disabledLabelWidth) { | 20 | if ((!globalLabelWidth && !labelWidth && !globalLabelCol) || disabledLabelWidth) { |
src/components/Form/src/props.ts
1 | import type { FieldMapToTime, FormSchema } from './types/form'; | 1 | import type { FieldMapToTime, FormSchema } from './types/form'; |
2 | -import type { PropType } from 'vue'; | 2 | +import type { CSSProperties, PropType } from 'vue'; |
3 | import type { ColEx } from './types'; | 3 | import type { ColEx } from './types'; |
4 | -import { TableActionType } from '/@/components/Table'; | 4 | +import type { TableActionType } from '/@/components/Table'; |
5 | +import type { ButtonProps } from 'ant-design-vue/es/button/buttonTypes'; | ||
6 | + | ||
7 | +import { propTypes } from '/@/utils/propTypes'; | ||
5 | 8 | ||
6 | export const basicProps = { | 9 | export const basicProps = { |
7 | model: { | 10 | model: { |
8 | - type: Object as PropType<Record<string, any>>, | 11 | + type: Object as PropType<Recordable>, |
9 | default: {}, | 12 | default: {}, |
10 | }, | 13 | }, |
11 | // ๆ ็ญพๅฎฝๅบฆ ๅบๅฎๅฎฝๅบฆ | 14 | // ๆ ็ญพๅฎฝๅบฆ ๅบๅฎๅฎฝๅบฆ |
@@ -17,7 +20,7 @@ export const basicProps = { | @@ -17,7 +20,7 @@ export const basicProps = { | ||
17 | type: Array as PropType<FieldMapToTime>, | 20 | type: Array as PropType<FieldMapToTime>, |
18 | default: () => [], | 21 | default: () => [], |
19 | }, | 22 | }, |
20 | - compact: Boolean as PropType<boolean>, | 23 | + compact: propTypes.bool, |
21 | // ่กจๅ้ ็ฝฎ่งๅ | 24 | // ่กจๅ้ ็ฝฎ่งๅ |
22 | schemas: { | 25 | schemas: { |
23 | type: [Array] as PropType<FormSchema[]>, | 26 | type: [Array] as PropType<FormSchema[]>, |
@@ -25,98 +28,68 @@ export const basicProps = { | @@ -25,98 +28,68 @@ export const basicProps = { | ||
25 | required: true, | 28 | required: true, |
26 | }, | 29 | }, |
27 | mergeDynamicData: { | 30 | mergeDynamicData: { |
28 | - type: Object as PropType<any>, | 31 | + type: Object as PropType<Recordable>, |
29 | default: null, | 32 | default: null, |
30 | }, | 33 | }, |
31 | baseRowStyle: { | 34 | baseRowStyle: { |
32 | - type: Object as PropType<any>, | 35 | + type: Object as PropType<CSSProperties>, |
33 | }, | 36 | }, |
34 | baseColProps: { | 37 | baseColProps: { |
35 | - type: Object as PropType<any>, | ||
36 | - }, | ||
37 | - autoSetPlaceHolder: { | ||
38 | - type: Boolean, | ||
39 | - default: true, | ||
40 | - }, | ||
41 | - submitOnReset: { | ||
42 | - type: Boolean, | ||
43 | - default: false, | ||
44 | - }, | ||
45 | - size: { | ||
46 | - type: String as PropType<'default' | 'small' | 'large'>, | ||
47 | - default: 'default', | 38 | + type: Object as PropType<Partial<ColEx>>, |
48 | }, | 39 | }, |
40 | + autoSetPlaceHolder: propTypes.bool.def(true), | ||
41 | + submitOnReset: propTypes.bool, | ||
42 | + size: propTypes.oneOf(['default', 'small', 'large']).def('default'), | ||
49 | // ็ฆ็จ่กจๅ | 43 | // ็ฆ็จ่กจๅ |
50 | - disabled: Boolean as PropType<boolean>, | 44 | + disabled: propTypes.bool, |
51 | emptySpan: { | 45 | emptySpan: { |
52 | type: [Number, Object] as PropType<number>, | 46 | type: [Number, Object] as PropType<number>, |
53 | default: 0, | 47 | default: 0, |
54 | }, | 48 | }, |
55 | // ๆฏๅฆๆพ็คบๆถ่ตทๅฑๅผๆ้ฎ | 49 | // ๆฏๅฆๆพ็คบๆถ่ตทๅฑๅผๆ้ฎ |
56 | - showAdvancedButton: { type: Boolean as PropType<boolean>, default: false }, | 50 | + showAdvancedButton: propTypes.bool, |
57 | // ่ฝฌๅๆถ้ด | 51 | // ่ฝฌๅๆถ้ด |
58 | transformDateFunc: { | 52 | transformDateFunc: { |
59 | type: Function as PropType<Fn>, | 53 | type: Function as PropType<Fn>, |
60 | default: (date: any) => { | 54 | default: (date: any) => { |
61 | - return date._isAMomentObject ? date.format('YYYY-MM-DD HH:mm:ss') : date; | 55 | + return date._isAMomentObject ? date?.format('YYYY-MM-DD HH:mm:ss') : date; |
62 | }, | 56 | }, |
63 | }, | 57 | }, |
64 | - rulesMessageJoinLabel: { | ||
65 | - type: Boolean, | ||
66 | - default: true, | ||
67 | - }, | 58 | + rulesMessageJoinLabel: propTypes.bool.def(true), |
68 | // ่ถ ่ฟ3่ก่ชๅจๆๅ | 59 | // ่ถ ่ฟ3่ก่ชๅจๆๅ |
69 | - autoAdvancedLine: { | ||
70 | - type: Number as PropType<number>, | ||
71 | - default: 3, | ||
72 | - }, | 60 | + autoAdvancedLine: propTypes.number.def(3), |
73 | 61 | ||
74 | // ๆฏๅฆๆพ็คบๆไฝๆ้ฎ | 62 | // ๆฏๅฆๆพ็คบๆไฝๆ้ฎ |
75 | - showActionButtonGroup: { | ||
76 | - type: Boolean as PropType<boolean>, | ||
77 | - default: true, | ||
78 | - }, | 63 | + showActionButtonGroup: propTypes.bool.def(true), |
79 | // ๆไฝๅCol้ ็ฝฎ | 64 | // ๆไฝๅCol้ ็ฝฎ |
80 | - actionColOptions: Object as PropType<ColEx>, | 65 | + actionColOptions: Object as PropType<Partial<ColEx>>, |
81 | // ๆพ็คบ้็ฝฎๆ้ฎ | 66 | // ๆพ็คบ้็ฝฎๆ้ฎ |
82 | - showResetButton: { | ||
83 | - type: Boolean as PropType<boolean>, | ||
84 | - default: true, | ||
85 | - }, | 67 | + showResetButton: propTypes.bool.def(true), |
86 | // ้็ฝฎๆ้ฎ้ ็ฝฎ | 68 | // ้็ฝฎๆ้ฎ้ ็ฝฎ |
87 | - resetButtonOptions: Object as PropType<any>, | 69 | + resetButtonOptions: Object as PropType<Partial<ButtonProps>>, |
88 | 70 | ||
89 | // ๆพ็คบ็กฎ่ฎคๆ้ฎ | 71 | // ๆพ็คบ็กฎ่ฎคๆ้ฎ |
90 | - showSubmitButton: { | ||
91 | - type: Boolean as PropType<boolean>, | ||
92 | - default: true, | ||
93 | - }, | 72 | + showSubmitButton: propTypes.bool.def(true), |
94 | // ็กฎ่ฎคๆ้ฎ้ ็ฝฎ | 73 | // ็กฎ่ฎคๆ้ฎ้ ็ฝฎ |
95 | - submitButtonOptions: Object as PropType<any>, | 74 | + submitButtonOptions: Object as PropType<Partial<ButtonProps>>, |
96 | 75 | ||
97 | // ่ชๅฎไน้็ฝฎๅฝๆฐ | 76 | // ่ชๅฎไน้็ฝฎๅฝๆฐ |
98 | - resetFunc: Function as PropType<Fn>, | ||
99 | - submitFunc: Function as PropType<Fn>, | 77 | + resetFunc: Function as PropType<() => Promise<void>>, |
78 | + submitFunc: Function as PropType<() => Promise<void>>, | ||
100 | 79 | ||
101 | // ไปฅไธไธบ้ป่ฎคprops | 80 | // ไปฅไธไธบ้ป่ฎคprops |
102 | - hideRequiredMark: Boolean as PropType<boolean>, | 81 | + hideRequiredMark: propTypes.bool, |
103 | 82 | ||
104 | - labelCol: Object as PropType<ColEx>, | 83 | + labelCol: Object as PropType<Partial<ColEx>>, |
105 | 84 | ||
106 | - layout: { | ||
107 | - type: String as PropType<'horizontal' | 'vertical' | 'inline'>, | ||
108 | - default: 'horizontal', | ||
109 | - }, | 85 | + layout: propTypes.oneOf(['horizontal', 'vertical', 'inline']).def('horizontal'), |
110 | tableAction: { | 86 | tableAction: { |
111 | type: Object as PropType<TableActionType>, | 87 | type: Object as PropType<TableActionType>, |
112 | }, | 88 | }, |
113 | 89 | ||
114 | - wrapperCol: Object as PropType<any>, | 90 | + wrapperCol: Object as PropType<Partial<ColEx>>, |
115 | 91 | ||
116 | - colon: { | ||
117 | - type: Boolean as PropType<boolean>, | ||
118 | - default: false, | ||
119 | - }, | 92 | + colon: propTypes.bool, |
120 | 93 | ||
121 | - labelAlign: String as PropType<string>, | 94 | + labelAlign: propTypes.string, |
122 | }; | 95 | }; |
src/components/Form/src/types/form.ts
@@ -5,6 +5,7 @@ import type { ButtonProps as AntdButtonProps } from 'ant-design-vue/es/button/bu | @@ -5,6 +5,7 @@ import type { ButtonProps as AntdButtonProps } from 'ant-design-vue/es/button/bu | ||
5 | import type { FormItem } from './formItem'; | 5 | import type { FormItem } from './formItem'; |
6 | import type { ColEx, ComponentType } from './index'; | 6 | import type { ColEx, ComponentType } from './index'; |
7 | import type { TableActionType } from '/@/components/Table/src/types/table'; | 7 | import type { TableActionType } from '/@/components/Table/src/types/table'; |
8 | +import type { CSSProperties } from 'vue'; | ||
8 | 9 | ||
9 | export type FieldMapToTime = [string, [string, string], string?][]; | 10 | export type FieldMapToTime = [string, [string, string], string?][]; |
10 | 11 | ||
@@ -14,8 +15,8 @@ export type Rule = RuleObject & { | @@ -14,8 +15,8 @@ export type Rule = RuleObject & { | ||
14 | 15 | ||
15 | export interface RenderCallbackParams { | 16 | export interface RenderCallbackParams { |
16 | schema: FormSchema; | 17 | schema: FormSchema; |
17 | - values: any; | ||
18 | - model: any; | 18 | + values: Recordable; |
19 | + model: Recordable; | ||
19 | field: string; | 20 | field: string; |
20 | } | 21 | } |
21 | 22 | ||
@@ -25,18 +26,19 @@ export interface ButtonProps extends AntdButtonProps { | @@ -25,18 +26,19 @@ export interface ButtonProps extends AntdButtonProps { | ||
25 | 26 | ||
26 | export interface FormActionType { | 27 | export interface FormActionType { |
27 | submit: () => Promise<void>; | 28 | submit: () => Promise<void>; |
28 | - setFieldsValue: <T>(values: T) => void; | ||
29 | - resetFields: () => Promise<any>; | ||
30 | - getFieldsValue: () => any; | ||
31 | - clearValidate: (name?: string | string[]) => void; | ||
32 | - updateSchema: (data: Partial<FormSchema> | Partial<FormSchema>[]) => void; | ||
33 | - setProps: (formProps: Partial<FormProps>) => void; | ||
34 | - removeSchemaByFiled: (field: string | string[]) => void; | ||
35 | - appendSchemaByField: (schema: FormSchema, prefixField?: string) => void; | 29 | + setFieldsValue: <T>(values: T) => Promise<void>; |
30 | + resetFields: () => Promise<void>; | ||
31 | + getFieldsValue: () => Recordable; | ||
32 | + clearValidate: (name?: string | string[]) => Promise<void>; | ||
33 | + updateSchema: (data: Partial<FormSchema> | Partial<FormSchema>[]) => Promise<void>; | ||
34 | + setProps: (formProps: Partial<FormProps>) => Promise<void>; | ||
35 | + removeSchemaByFiled: (field: string | string[]) => Promise<void>; | ||
36 | + appendSchemaByField: (schema: FormSchema, prefixField?: string) => Promise<void>; | ||
36 | validateFields: (nameList?: NamePath[]) => Promise<any>; | 37 | validateFields: (nameList?: NamePath[]) => Promise<any>; |
37 | validate: (nameList?: NamePath[]) => Promise<any>; | 38 | validate: (nameList?: NamePath[]) => Promise<any>; |
38 | - scrollToField: (name: NamePath, options?: ScrollOptions) => void; | 39 | + scrollToField: (name: NamePath, options?: ScrollOptions) => Promise<void>; |
39 | } | 40 | } |
41 | + | ||
40 | export type RegisterFn = (formInstance: FormActionType) => void; | 42 | export type RegisterFn = (formInstance: FormActionType) => void; |
41 | 43 | ||
42 | export type UseFormReturnType = [RegisterFn, FormActionType]; | 44 | export type UseFormReturnType = [RegisterFn, FormActionType]; |
@@ -44,7 +46,7 @@ export type UseFormReturnType = [RegisterFn, FormActionType]; | @@ -44,7 +46,7 @@ export type UseFormReturnType = [RegisterFn, FormActionType]; | ||
44 | export interface FormProps { | 46 | export interface FormProps { |
45 | // layout?: 'vertical' | 'inline' | 'horizontal'; | 47 | // layout?: 'vertical' | 'inline' | 'horizontal'; |
46 | // Form value | 48 | // Form value |
47 | - model?: any; | 49 | + model?: Recordable; |
48 | // The width of all items in the entire form | 50 | // The width of all items in the entire form |
49 | labelWidth?: number | string; | 51 | labelWidth?: number | string; |
50 | // Submit form on reset | 52 | // Submit form on reset |
@@ -55,7 +57,7 @@ export interface FormProps { | @@ -55,7 +57,7 @@ export interface FormProps { | ||
55 | wrapperCol?: Partial<ColEx>; | 57 | wrapperCol?: Partial<ColEx>; |
56 | 58 | ||
57 | // General row style | 59 | // General row style |
58 | - baseRowStyle?: object; | 60 | + baseRowStyle?: CSSProperties; |
59 | 61 | ||
60 | // General col configuration | 62 | // General col configuration |
61 | baseColProps?: Partial<ColEx>; | 63 | baseColProps?: Partial<ColEx>; |
@@ -63,7 +65,7 @@ export interface FormProps { | @@ -63,7 +65,7 @@ export interface FormProps { | ||
63 | // Form configuration rules | 65 | // Form configuration rules |
64 | schemas?: FormSchema[]; | 66 | schemas?: FormSchema[]; |
65 | // Function values used to merge into dynamic control form items | 67 | // Function values used to merge into dynamic control form items |
66 | - mergeDynamicData?: any; | 68 | + mergeDynamicData?: Recordable; |
67 | // Compact mode for search forms | 69 | // Compact mode for search forms |
68 | compact?: boolean; | 70 | compact?: boolean; |
69 | // Blank line span | 71 | // Blank line span |
@@ -131,8 +133,8 @@ export interface FormSchema { | @@ -131,8 +133,8 @@ export interface FormSchema { | ||
131 | schema: FormSchema; | 133 | schema: FormSchema; |
132 | tableAction: TableActionType; | 134 | tableAction: TableActionType; |
133 | formActionType: FormActionType; | 135 | formActionType: FormActionType; |
134 | - formModel: any; | ||
135 | - }) => any) | 136 | + formModel: Recordable; |
137 | + }) => Recordable) | ||
136 | | object; | 138 | | object; |
137 | // Required | 139 | // Required |
138 | required?: boolean; | 140 | required?: boolean; |
src/components/Modal/src/useModalContext.ts
@@ -5,12 +5,12 @@ export interface ModalContextProps { | @@ -5,12 +5,12 @@ export interface ModalContextProps { | ||
5 | redoModalHeight: () => void; | 5 | redoModalHeight: () => void; |
6 | } | 6 | } |
7 | 7 | ||
8 | -const modalContextInjectKey: InjectionKey<ModalContextProps> = Symbol(); | 8 | +const key: InjectionKey<ModalContextProps> = Symbol(); |
9 | 9 | ||
10 | export function createModalContext(context: ModalContextProps) { | 10 | export function createModalContext(context: ModalContextProps) { |
11 | - return createContext<ModalContextProps>(context, modalContextInjectKey); | 11 | + return createContext<ModalContextProps>(context, key); |
12 | } | 12 | } |
13 | 13 | ||
14 | export function useModalContext() { | 14 | export function useModalContext() { |
15 | - return useContext<ModalContextProps>(modalContextInjectKey); | 15 | + return useContext<ModalContextProps>(key); |
16 | } | 16 | } |
src/components/Scrollbar/src/util.ts
@@ -39,7 +39,7 @@ function extend<T, K>(to: T, _from: K): T & K { | @@ -39,7 +39,7 @@ function extend<T, K>(to: T, _from: K): T & K { | ||
39 | return Object.assign(to, _from); | 39 | return Object.assign(to, _from); |
40 | } | 40 | } |
41 | 41 | ||
42 | -export function toObject<T>(arr: Array<T>): Record<string, T> { | 42 | +export function toObject<T>(arr: Array<T>): Recordable<T> { |
43 | const res = {}; | 43 | const res = {}; |
44 | for (let i = 0; i < arr.length; i++) { | 44 | for (let i = 0; i < arr.length; i++) { |
45 | if (arr[i]) { | 45 | if (arr[i]) { |
src/components/Table/src/BasicTable.vue
@@ -221,7 +221,7 @@ | @@ -221,7 +221,7 @@ | ||
221 | function handleTableChange( | 221 | function handleTableChange( |
222 | pagination: PaginationProps, | 222 | pagination: PaginationProps, |
223 | // @ts-ignore | 223 | // @ts-ignore |
224 | - filters: Partial<Record<string, string[]>>, | 224 | + filters: Partial<Recordable<string[]>>, |
225 | sorter: SorterResult | 225 | sorter: SorterResult |
226 | ) { | 226 | ) { |
227 | const { clearSelectOnPageChange, sortFn } = unref(getMergeProps); | 227 | const { clearSelectOnPageChange, sortFn } = unref(getMergeProps); |
src/components/Table/src/components/renderEditable.tsx
@@ -232,7 +232,7 @@ export function renderEditableRow({ | @@ -232,7 +232,7 @@ export function renderEditableRow({ | ||
232 | }; | 232 | }; |
233 | } | 233 | } |
234 | 234 | ||
235 | -export type EditRecordRow<T = { [key: string]: any }> = { | 235 | +export type EditRecordRow<T = Hash<any>> = { |
236 | editable: boolean; | 236 | editable: boolean; |
237 | onCancel: Fn; | 237 | onCancel: Fn; |
238 | onSubmit: Fn; | 238 | onSubmit: Fn; |
src/components/Table/src/types/column.ts
@@ -194,5 +194,5 @@ export interface ColumnProps<T> { | @@ -194,5 +194,5 @@ export interface ColumnProps<T> { | ||
194 | * such as slots: { filterIcon: 'XXX'} | 194 | * such as slots: { filterIcon: 'XXX'} |
195 | * @type object | 195 | * @type object |
196 | */ | 196 | */ |
197 | - slots?: Record<string, string>; | 197 | + slots?: Recordable<string>; |
198 | } | 198 | } |
src/components/Transition/src/CreateTransition.tsx
@@ -40,7 +40,7 @@ export function createSimpleTransition(name: string, origin = 'top center 0', mo | @@ -40,7 +40,7 @@ export function createSimpleTransition(name: string, origin = 'top center 0', mo | ||
40 | } | 40 | } |
41 | export function createJavascriptTransition( | 41 | export function createJavascriptTransition( |
42 | name: string, | 42 | name: string, |
43 | - functions: Record<string, any>, | 43 | + functions: Recordable, |
44 | mode: Mode = 'in-out' | 44 | mode: Mode = 'in-out' |
45 | ) { | 45 | ) { |
46 | return defineComponent({ | 46 | return defineComponent({ |
src/components/VirtualScroll/src/index.tsx
@@ -54,7 +54,7 @@ export default defineComponent({ | @@ -54,7 +54,7 @@ export default defineComponent({ | ||
54 | 54 | ||
55 | const getWrapStyleRef = computed( | 55 | const getWrapStyleRef = computed( |
56 | (): CSSProperties => { | 56 | (): CSSProperties => { |
57 | - const styles: Record<string, string> = {}; | 57 | + const styles: Recordable<string> = {}; |
58 | const height = convertToUnit(props.height); | 58 | const height = convertToUnit(props.height); |
59 | const minHeight = convertToUnit(props.minHeight); | 59 | const minHeight = convertToUnit(props.minHeight); |
60 | const minWidth = convertToUnit(props.minWidth); | 60 | const minWidth = convertToUnit(props.minWidth); |
src/components/util.tsx
@@ -40,7 +40,7 @@ const pattern = { | @@ -40,7 +40,7 @@ const pattern = { | ||
40 | } as const; | 40 | } as const; |
41 | 41 | ||
42 | function parseStyle(style: string) { | 42 | function parseStyle(style: string) { |
43 | - const styleMap: Dictionary<any> = {}; | 43 | + const styleMap: Recordable = {}; |
44 | 44 | ||
45 | for (const s of style.split(pattern.styleList)) { | 45 | for (const s of style.split(pattern.styleList)) { |
46 | let [key, val] = s.split(pattern.styleProp); | 46 | let [key, val] = s.split(pattern.styleProp); |
@@ -161,8 +161,8 @@ export function mergeClasses(target: any, source: any) { | @@ -161,8 +161,8 @@ export function mergeClasses(target: any, source: any) { | ||
161 | } | 161 | } |
162 | 162 | ||
163 | export function mergeListeners( | 163 | export function mergeListeners( |
164 | - target: { [key: string]: Function | Function[] } | undefined, | ||
165 | - source: { [key: string]: Function | Function[] } | undefined | 164 | + target: Indexable<Function | Function[]> | undefined, |
165 | + source: Indexable<Function | Function[]> | undefined | ||
166 | ) { | 166 | ) { |
167 | if (!target) return source; | 167 | if (!target) return source; |
168 | if (!source) return target; | 168 | if (!source) return target; |
src/directives/ripple/index.ts
@@ -154,7 +154,7 @@ function rippler({ | @@ -154,7 +154,7 @@ function rippler({ | ||
154 | setTimeout(() => { | 154 | setTimeout(() => { |
155 | let clearPosition = true; | 155 | let clearPosition = true; |
156 | for (let i = 0; i < el.childNodes.length; i++) { | 156 | for (let i = 0; i < el.childNodes.length; i++) { |
157 | - if ((el.childNodes[i] as any).className === 'ripple-container') { | 157 | + if ((el.childNodes[i] as Recordable).className === 'ripple-container') { |
158 | clearPosition = false; | 158 | clearPosition = false; |
159 | } | 159 | } |
160 | } | 160 | } |
@@ -173,7 +173,7 @@ function rippler({ | @@ -173,7 +173,7 @@ function rippler({ | ||
173 | clearRipple(); | 173 | clearRipple(); |
174 | } | 174 | } |
175 | 175 | ||
176 | - (el as any).setBackground = (bgColor: string) => { | 176 | + (el as Recordable).setBackground = (bgColor: string) => { |
177 | if (!bgColor) { | 177 | if (!bgColor) { |
178 | return; | 178 | return; |
179 | } | 179 | } |
@@ -181,8 +181,8 @@ function rippler({ | @@ -181,8 +181,8 @@ function rippler({ | ||
181 | }; | 181 | }; |
182 | } | 182 | } |
183 | 183 | ||
184 | -function setProps(modifiers: { [key: string]: any }, props: Record<string, any>) { | ||
185 | - modifiers.forEach((item: any) => { | 184 | +function setProps(modifiers: Hash<any>, props: Recordable) { |
185 | + modifiers.forEach((item: Recordable) => { | ||
186 | if (isNaN(Number(item))) props.event = item; | 186 | if (isNaN(Number(item))) props.event = item; |
187 | else props.transition = item; | 187 | else props.transition = item; |
188 | }); | 188 | }); |
src/hooks/component/useFormItem.ts
0 โ 100644
1 | +import type { UnwrapRef } from 'vue'; | ||
2 | +import { reactive, readonly, computed, getCurrentInstance } from 'vue'; | ||
3 | + | ||
4 | +import { isEqual } from 'lodash-es'; | ||
5 | + | ||
6 | +export function useRuleFormItem<T extends Indexable>( | ||
7 | + props: T, | ||
8 | + key: keyof T = 'value', | ||
9 | + changeEvent = 'change' | ||
10 | +) { | ||
11 | + const instance = getCurrentInstance(); | ||
12 | + const emit = instance?.emit; | ||
13 | + | ||
14 | + const innerState = reactive({ | ||
15 | + value: props[key], | ||
16 | + }); | ||
17 | + | ||
18 | + const defaultState = readonly(innerState); | ||
19 | + | ||
20 | + const setState = (val: UnwrapRef<T[keyof T]>) => { | ||
21 | + innerState.value = val as T[keyof T]; | ||
22 | + }; | ||
23 | + const state = computed({ | ||
24 | + get() { | ||
25 | + return innerState.value; | ||
26 | + }, | ||
27 | + set(value) { | ||
28 | + if (isEqual(value, defaultState.value)) return; | ||
29 | + innerState.value = value as T[keyof T]; | ||
30 | + emit?.(changeEvent, value); | ||
31 | + }, | ||
32 | + }); | ||
33 | + | ||
34 | + return [state, setState, defaultState]; | ||
35 | +} |
src/hooks/core/useAttrs.ts
0 โ 100644
1 | +import { getCurrentInstance, reactive, shallowRef, watchEffect } from 'vue'; | ||
2 | + | ||
3 | +interface Params { | ||
4 | + excludeListeners?: boolean; | ||
5 | + excludeKeys?: string[]; | ||
6 | +} | ||
7 | + | ||
8 | +const DEFAULT_EXCLUDE_KEYS = ['class', 'style']; | ||
9 | +const LISTENER_PREFIX = /^on[A-Z]/; | ||
10 | + | ||
11 | +export function entries<T>(obj: Hash<T>): [string, T][] { | ||
12 | + return Object.keys(obj).map((key: string) => [key, obj[key]]); | ||
13 | +} | ||
14 | + | ||
15 | +export function useAttrs(params: Params = {}) { | ||
16 | + const instance = getCurrentInstance(); | ||
17 | + if (!instance) return {}; | ||
18 | + | ||
19 | + const { excludeListeners = false, excludeKeys = [] } = params; | ||
20 | + const attrs = shallowRef({}); | ||
21 | + const allExcludeKeys = excludeKeys.concat(DEFAULT_EXCLUDE_KEYS); | ||
22 | + | ||
23 | + // Since attrs are not reactive, make it reactive instead of doing in `onUpdated` hook for better performance | ||
24 | + instance.attrs = reactive(instance.attrs); | ||
25 | + | ||
26 | + watchEffect(() => { | ||
27 | + const res = entries(instance.attrs).reduce((acm, [key, val]) => { | ||
28 | + if (!allExcludeKeys.includes(key) && !(excludeListeners && LISTENER_PREFIX.test(key))) { | ||
29 | + acm[key] = val; | ||
30 | + } | ||
31 | + | ||
32 | + return acm; | ||
33 | + }, {} as Hash<any>); | ||
34 | + | ||
35 | + attrs.value = res; | ||
36 | + }); | ||
37 | + | ||
38 | + return attrs; | ||
39 | +} |
src/hooks/event/useKeyPress.ts
@@ -23,7 +23,7 @@ export type EventOption = { | @@ -23,7 +23,7 @@ export type EventOption = { | ||
23 | const defaultEvents: keyEvent[] = ['keydown']; | 23 | const defaultEvents: keyEvent[] = ['keydown']; |
24 | 24 | ||
25 | // ้ฎ็ไบไปถ keyCode ๅซๅ | 25 | // ้ฎ็ไบไปถ keyCode ๅซๅ |
26 | -const aliasKeyCodeMap: Record<string, number | number[]> = { | 26 | +const aliasKeyCodeMap: Recordable<number | number[]> = { |
27 | esc: 27, | 27 | esc: 27, |
28 | tab: 9, | 28 | tab: 9, |
29 | enter: 13, | 29 | enter: 13, |
@@ -36,7 +36,7 @@ const aliasKeyCodeMap: Record<string, number | number[]> = { | @@ -36,7 +36,7 @@ const aliasKeyCodeMap: Record<string, number | number[]> = { | ||
36 | }; | 36 | }; |
37 | 37 | ||
38 | // ้ฎ็ไบไปถ key ๅซๅ | 38 | // ้ฎ็ไบไปถ key ๅซๅ |
39 | -const aliasKeyMap: Record<string, string | string[]> = { | 39 | +const aliasKeyMap: Recordable<string | string[]> = { |
40 | esc: 'Escape', | 40 | esc: 'Escape', |
41 | tab: 'Tab', | 41 | tab: 'Tab', |
42 | enter: 'Enter', | 42 | enter: 'Enter', |
@@ -50,7 +50,7 @@ const aliasKeyMap: Record<string, string | string[]> = { | @@ -50,7 +50,7 @@ const aliasKeyMap: Record<string, string | string[]> = { | ||
50 | }; | 50 | }; |
51 | 51 | ||
52 | // ไฟฎ้ฅฐ้ฎ | 52 | // ไฟฎ้ฅฐ้ฎ |
53 | -const modifierKey: Record<string, (event: KeyboardEvent) => boolean> = { | 53 | +const modifierKey: Recordable<(event: KeyboardEvent) => boolean> = { |
54 | ctrl: (event: KeyboardEvent) => event.ctrlKey, | 54 | ctrl: (event: KeyboardEvent) => event.ctrlKey, |
55 | shift: (event: KeyboardEvent) => event.shiftKey, | 55 | shift: (event: KeyboardEvent) => event.shiftKey, |
56 | alt: (event: KeyboardEvent) => event.altKey, | 56 | alt: (event: KeyboardEvent) => event.altKey, |
src/hooks/web/useI18n.ts
@@ -24,7 +24,7 @@ export function useI18n(namespace?: string) { | @@ -24,7 +24,7 @@ export function useI18n(namespace?: string) { | ||
24 | 24 | ||
25 | return { | 25 | return { |
26 | ...methods, | 26 | ...methods, |
27 | - t: (key: string, ...arg: any) => { | 27 | + t: (key: string, ...arg: any): string => { |
28 | if (!key) return ''; | 28 | if (!key) return ''; |
29 | return t(getKey(key), ...(arg as Parameters<typeof t>)); | 29 | return t(getKey(key), ...(arg as Parameters<typeof t>)); |
30 | }, | 30 | }, |
src/layouts/page/index.tsx
@@ -13,7 +13,7 @@ import { useMultipleTabSetting } from '/@/hooks/setting/useMultipleTabSetting'; | @@ -13,7 +13,7 @@ import { useMultipleTabSetting } from '/@/hooks/setting/useMultipleTabSetting'; | ||
13 | // import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; | 13 | // import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; |
14 | 14 | ||
15 | interface DefaultContext { | 15 | interface DefaultContext { |
16 | - Component: FunctionalComponent & { type: { [key: string]: any } }; | 16 | + Component: FunctionalComponent & { type: Indexable }; |
17 | route: RouteLocation; | 17 | route: RouteLocation; |
18 | } | 18 | } |
19 | 19 |
src/router/guard/permissionGuard.ts
@@ -40,7 +40,7 @@ export function createPermissionGuard(router: Router) { | @@ -40,7 +40,7 @@ export function createPermissionGuard(router: Router) { | ||
40 | return; | 40 | return; |
41 | } | 41 | } |
42 | // redirect login page | 42 | // redirect login page |
43 | - const redirectData: { path: string; replace: boolean; query?: { [key: string]: string } } = { | 43 | + const redirectData: { path: string; replace: boolean; query?: Indexable<string> } = { |
44 | path: LOGIN_PATH, | 44 | path: LOGIN_PATH, |
45 | replace: true, | 45 | replace: true, |
46 | }; | 46 | }; |
src/router/types.ts
@@ -48,7 +48,7 @@ export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> { | @@ -48,7 +48,7 @@ export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> { | ||
48 | component?: Component | string; | 48 | component?: Component | string; |
49 | components?: Component; | 49 | components?: Component; |
50 | children?: AppRouteRecordRaw[]; | 50 | children?: AppRouteRecordRaw[]; |
51 | - props?: Record<string, any>; | 51 | + props?: Recordable; |
52 | fullPath?: string; | 52 | fullPath?: string; |
53 | } | 53 | } |
54 | export interface MenuTag { | 54 | export interface MenuTag { |
src/settings/colorSetting.ts
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | export const HEADER_PRESET_BG_COLOR_LIST: string[] = [ | 2 | export const HEADER_PRESET_BG_COLOR_LIST: string[] = [ |
3 | '#ffffff', | 3 | '#ffffff', |
4 | '#009688', | 4 | '#009688', |
5 | - '#18bc9c', | 5 | + '#5172DC', |
6 | '#1E9FFF', | 6 | '#1E9FFF', |
7 | '#018ffb', | 7 | '#018ffb', |
8 | '#409eff', | 8 | '#409eff', |
src/types/global.d.ts
@@ -15,18 +15,20 @@ declare function parseInt(s: string | number, radix?: number): number; | @@ -15,18 +15,20 @@ declare function parseInt(s: string | number, radix?: number): number; | ||
15 | 15 | ||
16 | declare function parseFloat(string: string | number): number; | 16 | declare function parseFloat(string: string | number): number; |
17 | 17 | ||
18 | -declare type Dictionary<T> = Record<string, T>; | ||
19 | - | ||
20 | declare type Nullable<T> = T | null; | 18 | declare type Nullable<T> = T | null; |
21 | 19 | ||
20 | +declare type NonNullable<T> = T extends null | undefined ? never : T; | ||
21 | + | ||
22 | declare type RefType<T> = T | null; | 22 | declare type RefType<T> = T | null; |
23 | 23 | ||
24 | declare type CustomizedHTMLElement<T> = HTMLElement & T; | 24 | declare type CustomizedHTMLElement<T> = HTMLElement & T; |
25 | 25 | ||
26 | -declare type Indexable<T = any> = { | 26 | +declare type Indexable<T extends any = any> = { |
27 | [key: string]: T; | 27 | [key: string]: T; |
28 | }; | 28 | }; |
29 | 29 | ||
30 | +declare type Recordable<T extends any = any> = Record<string, T>; | ||
31 | + | ||
30 | declare type Hash<T> = Indexable<T>; | 32 | declare type Hash<T> = Indexable<T>; |
31 | 33 | ||
32 | declare type DeepPartial<T> = { | 34 | declare type DeepPartial<T> = { |
@@ -59,3 +61,5 @@ declare interface ComponentElRef<T extends HTMLElement = HTMLDivElement> { | @@ -59,3 +61,5 @@ declare interface ComponentElRef<T extends HTMLElement = HTMLDivElement> { | ||
59 | declare type ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null; | 61 | declare type ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null; |
60 | 62 | ||
61 | declare type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>; | 63 | declare type ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>; |
64 | + | ||
65 | +type IsSame<A, B> = A | B extends A & B ? true : false; |
src/utils/helper/persistent.ts
@@ -7,8 +7,8 @@ const ls = createStorage(localStorage); | @@ -7,8 +7,8 @@ const ls = createStorage(localStorage); | ||
7 | const ss = createStorage(); | 7 | const ss = createStorage(); |
8 | 8 | ||
9 | interface CacheStore { | 9 | interface CacheStore { |
10 | - local: Record<string, any>; | ||
11 | - session: Record<string, any>; | 10 | + local: Recordable; |
11 | + session: Recordable; | ||
12 | } | 12 | } |
13 | 13 | ||
14 | /** | 14 | /** |
src/utils/helper/tsxHelper.tsx
@@ -35,7 +35,7 @@ export function extendSlots(slots: Slots, excludeKeys: string[] = []) { | @@ -35,7 +35,7 @@ export function extendSlots(slots: Slots, excludeKeys: string[] = []) { | ||
35 | } | 35 | } |
36 | 36 | ||
37 | // Get events on attrs | 37 | // Get events on attrs |
38 | -export function getListeners(attrs: Record<string, unknown>) { | 38 | +export function getListeners(attrs: Recordable<unknown>) { |
39 | const listeners: any = {}; | 39 | const listeners: any = {}; |
40 | Object.keys(attrs).forEach((key) => { | 40 | Object.keys(attrs).forEach((key) => { |
41 | if (/^on/.test(key)) { | 41 | if (/^on/.test(key)) { |
src/utils/helper/vueHelper.ts
@@ -9,6 +9,7 @@ import { | @@ -9,6 +9,7 @@ import { | ||
9 | reactive, | 9 | reactive, |
10 | ComponentInternalInstance, | 10 | ComponentInternalInstance, |
11 | } from 'vue'; | 11 | } from 'vue'; |
12 | +import { error } from '../log'; | ||
12 | 13 | ||
13 | export function explicitComputed<T, S>(source: WatchSource<S>, fn: () => T) { | 14 | export function explicitComputed<T, S>(source: WatchSource<S>, fn: () => T) { |
14 | const v = reactive<any>({ value: fn() }); | 15 | const v = reactive<any>({ value: fn() }); |
@@ -39,6 +40,6 @@ export function tryTsxEmit<T extends any = ComponentInternalInstance>( | @@ -39,6 +40,6 @@ export function tryTsxEmit<T extends any = ComponentInternalInstance>( | ||
39 | 40 | ||
40 | export function isInSetup() { | 41 | export function isInSetup() { |
41 | if (!getCurrentInstance()) { | 42 | if (!getCurrentInstance()) { |
42 | - throw new Error('Please put useForm function in the setup function!'); | 43 | + error('Please put useForm function in the setup function!'); |
43 | } | 44 | } |
44 | } | 45 | } |
src/utils/http/axios/types.ts
@@ -35,7 +35,7 @@ export interface Result<T = any> { | @@ -35,7 +35,7 @@ export interface Result<T = any> { | ||
35 | // multipart/form-data๏ผไธไผ ๆไปถ | 35 | // multipart/form-data๏ผไธไผ ๆไปถ |
36 | export interface UploadFileParams { | 36 | export interface UploadFileParams { |
37 | // ๅ ถไปๅๆฐ | 37 | // ๅ ถไปๅๆฐ |
38 | - data?: { [key: string]: any }; | 38 | + data?: Indexable; |
39 | // ๆไปถๅๆฐ็ๆฅๅฃๅญๆฎตๅ | 39 | // ๆไปถๅๆฐ็ๆฅๅฃๅญๆฎตๅ |
40 | name?: string; | 40 | name?: string; |
41 | // ๆไปถ | 41 | // ๆไปถ |
src/utils/index.ts
@@ -38,7 +38,7 @@ export function setObjToUrlParams(baseUrl: string, obj: any): string { | @@ -38,7 +38,7 @@ export function setObjToUrlParams(baseUrl: string, obj: any): string { | ||
38 | return url; | 38 | return url; |
39 | } | 39 | } |
40 | 40 | ||
41 | -export function deepMerge<T = any>(src: any, target: any): T { | 41 | +export function deepMerge<T = any>(src: any = {}, target: any = {}): T { |
42 | let key: string; | 42 | let key: string; |
43 | for (key in target) { | 43 | for (key in target) { |
44 | src[key] = isObject(src[key]) ? deepMerge(src[key], target[key]) : (src[key] = target[key]); | 44 | src[key] = isObject(src[key]) ? deepMerge(src[key], target[key]) : (src[key] = target[key]); |
src/utils/log.ts
@@ -3,3 +3,7 @@ const projectName = import.meta.env.VITE_GLOB_APP_TITLE; | @@ -3,3 +3,7 @@ const projectName = import.meta.env.VITE_GLOB_APP_TITLE; | ||
3 | export function warn(message: string) { | 3 | export function warn(message: string) { |
4 | console.warn(`[${projectName} warn]:${message}`); | 4 | console.warn(`[${projectName} warn]:${message}`); |
5 | } | 5 | } |
6 | + | ||
7 | +export function error(message: string) { | ||
8 | + throw new Error(`[${projectName} error]:${message}`); | ||
9 | +} |
src/views/demo/form/RuleForm.vue
@@ -84,12 +84,15 @@ | @@ -84,12 +84,15 @@ | ||
84 | required: true, | 84 | required: true, |
85 | // @ts-ignore | 85 | // @ts-ignore |
86 | validator: async (rule, value) => { | 86 | validator: async (rule, value) => { |
87 | + if (!value) { | ||
88 | + return Promise.reject('ๅผไธ่ฝไธบ็ฉบ'); | ||
89 | + } | ||
87 | if (value === '1') { | 90 | if (value === '1') { |
88 | return Promise.reject('ๅผไธ่ฝไธบ1'); | 91 | return Promise.reject('ๅผไธ่ฝไธบ1'); |
89 | } | 92 | } |
90 | return Promise.resolve(); | 93 | return Promise.resolve(); |
91 | }, | 94 | }, |
92 | - trigger: 'blur', | 95 | + trigger: 'change', |
93 | }, | 96 | }, |
94 | ], | 97 | ], |
95 | }, | 98 | }, |
yarn.lock
@@ -35,7 +35,7 @@ | @@ -35,7 +35,7 @@ | ||
35 | "@types/lodash" "^4.14.165" | 35 | "@types/lodash" "^4.14.165" |
36 | lodash "^4.17.15" | 36 | lodash "^4.17.15" |
37 | 37 | ||
38 | -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3": | 38 | +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": |
39 | version "7.10.4" | 39 | version "7.10.4" |
40 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" | 40 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" |
41 | integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== | 41 | integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== |
@@ -47,7 +47,7 @@ | @@ -47,7 +47,7 @@ | ||
47 | resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" | 47 | resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" |
48 | integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== | 48 | integrity sha512-YaxPMGs/XIWtYqrdEOZOCPsVWfEoriXopnsz3/i7apYPXQ3698UFhS6dVT1KN5qOsWmVgw/FOrmQgpRaZayGsw== |
49 | 49 | ||
50 | -"@babel/core@>=7.9.0", "@babel/core@^7.8.4": | 50 | +"@babel/core@>=7.9.0", "@babel/core@^7.11.1": |
51 | version "7.12.10" | 51 | version "7.12.10" |
52 | resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" | 52 | resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" |
53 | integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== | 53 | integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== |
@@ -167,7 +167,7 @@ | @@ -167,7 +167,7 @@ | ||
167 | dependencies: | 167 | dependencies: |
168 | "@babel/types" "^7.12.7" | 168 | "@babel/types" "^7.12.7" |
169 | 169 | ||
170 | -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": | 170 | +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.5": |
171 | version "7.12.5" | 171 | version "7.12.5" |
172 | resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" | 172 | resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" |
173 | integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== | 173 | integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== |
@@ -246,11 +246,21 @@ | @@ -246,11 +246,21 @@ | ||
246 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" | 246 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" |
247 | integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== | 247 | integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== |
248 | 248 | ||
249 | +"@babel/helper-validator-identifier@^7.12.11": | ||
250 | + version "7.12.11" | ||
251 | + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" | ||
252 | + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== | ||
253 | + | ||
249 | "@babel/helper-validator-option@^7.12.1": | 254 | "@babel/helper-validator-option@^7.12.1": |
250 | version "7.12.1" | 255 | version "7.12.1" |
251 | resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" | 256 | resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" |
252 | integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== | 257 | integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== |
253 | 258 | ||
259 | +"@babel/helper-validator-option@^7.12.11": | ||
260 | + version "7.12.11" | ||
261 | + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz#d66cb8b7a3e7fe4c6962b32020a131ecf0847f4f" | ||
262 | + integrity sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw== | ||
263 | + | ||
254 | "@babel/helper-wrap-function@^7.10.4": | 264 | "@babel/helper-wrap-function@^7.10.4": |
255 | version "7.12.3" | 265 | version "7.12.3" |
256 | resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" | 266 | resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" |
@@ -498,10 +508,10 @@ | @@ -498,10 +508,10 @@ | ||
498 | dependencies: | 508 | dependencies: |
499 | "@babel/helper-plugin-utils" "^7.10.4" | 509 | "@babel/helper-plugin-utils" "^7.10.4" |
500 | 510 | ||
501 | -"@babel/plugin-transform-block-scoping@^7.12.1": | ||
502 | - version "7.12.1" | ||
503 | - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" | ||
504 | - integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== | 511 | +"@babel/plugin-transform-block-scoping@^7.12.11": |
512 | + version "7.12.12" | ||
513 | + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca" | ||
514 | + integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ== | ||
505 | dependencies: | 515 | dependencies: |
506 | "@babel/helper-plugin-utils" "^7.10.4" | 516 | "@babel/helper-plugin-utils" "^7.10.4" |
507 | 517 | ||
@@ -724,16 +734,16 @@ | @@ -724,16 +734,16 @@ | ||
724 | "@babel/helper-create-regexp-features-plugin" "^7.12.1" | 734 | "@babel/helper-create-regexp-features-plugin" "^7.12.1" |
725 | "@babel/helper-plugin-utils" "^7.10.4" | 735 | "@babel/helper-plugin-utils" "^7.10.4" |
726 | 736 | ||
727 | -"@babel/preset-env@^7.8.4": | ||
728 | - version "7.12.10" | ||
729 | - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.10.tgz#ca981b95f641f2610531bd71948656306905e6ab" | ||
730 | - integrity sha512-Gz9hnBT/tGeTE2DBNDkD7BiWRELZt+8lSysHuDwmYXUIvtwZl0zI+D6mZgXZX0u8YBlLS4tmai9ONNY9tjRgRA== | 737 | +"@babel/preset-env@^7.11.0": |
738 | + version "7.12.11" | ||
739 | + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.11.tgz#55d5f7981487365c93dbbc84507b1c7215e857f9" | ||
740 | + integrity sha512-j8Tb+KKIXKYlDBQyIOy4BLxzv1NUOwlHfZ74rvW+Z0Gp4/cI2IMDPBWAgWceGcE7aep9oL/0K9mlzlMGxA8yNw== | ||
731 | dependencies: | 741 | dependencies: |
732 | "@babel/compat-data" "^7.12.7" | 742 | "@babel/compat-data" "^7.12.7" |
733 | "@babel/helper-compilation-targets" "^7.12.5" | 743 | "@babel/helper-compilation-targets" "^7.12.5" |
734 | "@babel/helper-module-imports" "^7.12.5" | 744 | "@babel/helper-module-imports" "^7.12.5" |
735 | "@babel/helper-plugin-utils" "^7.10.4" | 745 | "@babel/helper-plugin-utils" "^7.10.4" |
736 | - "@babel/helper-validator-option" "^7.12.1" | 746 | + "@babel/helper-validator-option" "^7.12.11" |
737 | "@babel/plugin-proposal-async-generator-functions" "^7.12.1" | 747 | "@babel/plugin-proposal-async-generator-functions" "^7.12.1" |
738 | "@babel/plugin-proposal-class-properties" "^7.12.1" | 748 | "@babel/plugin-proposal-class-properties" "^7.12.1" |
739 | "@babel/plugin-proposal-dynamic-import" "^7.12.1" | 749 | "@babel/plugin-proposal-dynamic-import" "^7.12.1" |
@@ -762,7 +772,7 @@ | @@ -762,7 +772,7 @@ | ||
762 | "@babel/plugin-transform-arrow-functions" "^7.12.1" | 772 | "@babel/plugin-transform-arrow-functions" "^7.12.1" |
763 | "@babel/plugin-transform-async-to-generator" "^7.12.1" | 773 | "@babel/plugin-transform-async-to-generator" "^7.12.1" |
764 | "@babel/plugin-transform-block-scoped-functions" "^7.12.1" | 774 | "@babel/plugin-transform-block-scoped-functions" "^7.12.1" |
765 | - "@babel/plugin-transform-block-scoping" "^7.12.1" | 775 | + "@babel/plugin-transform-block-scoping" "^7.12.11" |
766 | "@babel/plugin-transform-classes" "^7.12.1" | 776 | "@babel/plugin-transform-classes" "^7.12.1" |
767 | "@babel/plugin-transform-computed-properties" "^7.12.1" | 777 | "@babel/plugin-transform-computed-properties" "^7.12.1" |
768 | "@babel/plugin-transform-destructuring" "^7.12.1" | 778 | "@babel/plugin-transform-destructuring" "^7.12.1" |
@@ -792,7 +802,7 @@ | @@ -792,7 +802,7 @@ | ||
792 | "@babel/plugin-transform-unicode-escapes" "^7.12.1" | 802 | "@babel/plugin-transform-unicode-escapes" "^7.12.1" |
793 | "@babel/plugin-transform-unicode-regex" "^7.12.1" | 803 | "@babel/plugin-transform-unicode-regex" "^7.12.1" |
794 | "@babel/preset-modules" "^0.1.3" | 804 | "@babel/preset-modules" "^0.1.3" |
795 | - "@babel/types" "^7.12.10" | 805 | + "@babel/types" "^7.12.11" |
796 | core-js-compat "^3.8.0" | 806 | core-js-compat "^3.8.0" |
797 | semver "^5.5.0" | 807 | semver "^5.5.0" |
798 | 808 | ||
@@ -847,6 +857,15 @@ | @@ -847,6 +857,15 @@ | ||
847 | lodash "^4.17.19" | 857 | lodash "^4.17.19" |
848 | to-fast-properties "^2.0.0" | 858 | to-fast-properties "^2.0.0" |
849 | 859 | ||
860 | +"@babel/types@^7.12.11": | ||
861 | + version "7.12.12" | ||
862 | + resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" | ||
863 | + integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== | ||
864 | + dependencies: | ||
865 | + "@babel/helper-validator-identifier" "^7.12.11" | ||
866 | + lodash "^4.17.19" | ||
867 | + to-fast-properties "^2.0.0" | ||
868 | + | ||
850 | "@commitlint/cli@^11.0.0": | 869 | "@commitlint/cli@^11.0.0": |
851 | version "11.0.0" | 870 | version "11.0.0" |
852 | resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-11.0.0.tgz#698199bc52afed50aa28169237758fa14a67b5d3" | 871 | resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-11.0.0.tgz#698199bc52afed50aa28169237758fa14a67b5d3" |
@@ -1004,32 +1023,38 @@ | @@ -1004,32 +1023,38 @@ | ||
1004 | minimatch "^3.0.4" | 1023 | minimatch "^3.0.4" |
1005 | strip-json-comments "^3.1.1" | 1024 | strip-json-comments "^3.1.1" |
1006 | 1025 | ||
1007 | -"@hapi/address@2.x.x": | 1026 | +"@hapi/address@^2.1.2": |
1008 | version "2.1.4" | 1027 | version "2.1.4" |
1009 | resolved "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" | 1028 | resolved "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" |
1010 | integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== | 1029 | integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== |
1011 | 1030 | ||
1012 | -"@hapi/bourne@1.x.x": | ||
1013 | - version "1.3.2" | ||
1014 | - resolved "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" | ||
1015 | - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== | 1031 | +"@hapi/formula@^1.2.0": |
1032 | + version "1.2.0" | ||
1033 | + resolved "https://registry.npmjs.org/@hapi/formula/-/formula-1.2.0.tgz#994649c7fea1a90b91a0a1e6d983523f680e10cd" | ||
1034 | + integrity sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA== | ||
1016 | 1035 | ||
1017 | -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": | 1036 | +"@hapi/hoek@^8.2.4", "@hapi/hoek@^8.3.0": |
1018 | version "8.5.1" | 1037 | version "8.5.1" |
1019 | resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" | 1038 | resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" |
1020 | integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== | 1039 | integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== |
1021 | 1040 | ||
1022 | -"@hapi/joi@^15.1.0": | ||
1023 | - version "15.1.1" | ||
1024 | - resolved "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" | ||
1025 | - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== | 1041 | +"@hapi/joi@^16.1.8": |
1042 | + version "16.1.8" | ||
1043 | + resolved "https://registry.npmjs.org/@hapi/joi/-/joi-16.1.8.tgz#84c1f126269489871ad4e2decc786e0adef06839" | ||
1044 | + integrity sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg== | ||
1026 | dependencies: | 1045 | dependencies: |
1027 | - "@hapi/address" "2.x.x" | ||
1028 | - "@hapi/bourne" "1.x.x" | ||
1029 | - "@hapi/hoek" "8.x.x" | ||
1030 | - "@hapi/topo" "3.x.x" | 1046 | + "@hapi/address" "^2.1.2" |
1047 | + "@hapi/formula" "^1.2.0" | ||
1048 | + "@hapi/hoek" "^8.2.4" | ||
1049 | + "@hapi/pinpoint" "^1.0.2" | ||
1050 | + "@hapi/topo" "^3.1.3" | ||
1051 | + | ||
1052 | +"@hapi/pinpoint@^1.0.2": | ||
1053 | + version "1.0.2" | ||
1054 | + resolved "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-1.0.2.tgz#025b7a36dbbf4d35bf1acd071c26b20ef41e0d13" | ||
1055 | + integrity sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ== | ||
1031 | 1056 | ||
1032 | -"@hapi/topo@3.x.x": | 1057 | +"@hapi/topo@^3.1.3": |
1033 | version "3.1.6" | 1058 | version "3.1.6" |
1034 | resolved "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" | 1059 | resolved "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" |
1035 | integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== | 1060 | integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== |
@@ -1051,10 +1076,10 @@ | @@ -1051,10 +1076,10 @@ | ||
1051 | resolved "https://registry.npmjs.org/@iconify/iconify/-/iconify-2.0.0-rc.4.tgz#46098fb544a4eb3af724219e4955c9022801835e" | 1076 | resolved "https://registry.npmjs.org/@iconify/iconify/-/iconify-2.0.0-rc.4.tgz#46098fb544a4eb3af724219e4955c9022801835e" |
1052 | integrity sha512-YCSECbeXKFJEIVkKgKMjUzJ439ysufmL/a31B1j7dCvnHaBWsX9J4XehhJgg/aTy3yvhHaVhI6xt1kSMZP799A== | 1077 | integrity sha512-YCSECbeXKFJEIVkKgKMjUzJ439ysufmL/a31B1j7dCvnHaBWsX9J4XehhJgg/aTy3yvhHaVhI6xt1kSMZP799A== |
1053 | 1078 | ||
1054 | -"@iconify/json@^1.1.275": | ||
1055 | - version "1.1.275" | ||
1056 | - resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.275.tgz#ac9a706cdc7c9e64ab8e8bb09ae770f551f7496f" | ||
1057 | - integrity sha512-Nt6tXJpZFd/gFRV24BvmlIdxnbMxgshIKFPQwOWgeVjKiOKEwiBKjXUzBE74As7/Olps/ac1gEB40N9/DGOJ3Q== | 1079 | +"@iconify/json@^1.1.276": |
1080 | + version "1.1.276" | ||
1081 | + resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.276.tgz#c8d51751abc84cc73a466f55bc2f352686451786" | ||
1082 | + integrity sha512-Ra/mGT+n38vhi/i1cjsPYOmSR2d6rNIXZ+OsrIWp9J35zAPQ93sSTQMpTyxZdLu3QxU0vYwtcaC7h/Y1/3H3wg== | ||
1058 | 1083 | ||
1059 | "@intlify/core-base@9.0.0-beta.14": | 1084 | "@intlify/core-base@9.0.0-beta.14": |
1060 | version "9.0.0-beta.14" | 1085 | version "9.0.0-beta.14" |
@@ -1170,6 +1195,14 @@ | @@ -1170,6 +1195,14 @@ | ||
1170 | dependencies: | 1195 | dependencies: |
1171 | "@iconify/iconify" ">=2.0.0-rc.1" | 1196 | "@iconify/iconify" ">=2.0.0-rc.1" |
1172 | 1197 | ||
1198 | +"@rollup/plugin-babel@^5.2.0": | ||
1199 | + version "5.2.2" | ||
1200 | + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.2.2.tgz#e5623a01dd8e37e004ba87f2de218c611727d9b2" | ||
1201 | + integrity sha512-MjmH7GvFT4TW8xFdIeFS3wqIX646y5tACdxkTO+khbHvS3ZcVJL6vkAHLw2wqPmkhwCfWHoNsp15VYNwW6JEJA== | ||
1202 | + dependencies: | ||
1203 | + "@babel/helper-module-imports" "^7.10.4" | ||
1204 | + "@rollup/pluginutils" "^3.1.0" | ||
1205 | + | ||
1173 | "@rollup/plugin-commonjs@^16.0.0": | 1206 | "@rollup/plugin-commonjs@^16.0.0": |
1174 | version "16.0.0" | 1207 | version "16.0.0" |
1175 | resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz#169004d56cd0f0a1d0f35915d31a036b0efe281f" | 1208 | resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz#169004d56cd0f0a1d0f35915d31a036b0efe281f" |
@@ -1214,31 +1247,31 @@ | @@ -1214,31 +1247,31 @@ | ||
1214 | is-module "^1.0.0" | 1247 | is-module "^1.0.0" |
1215 | resolve "^1.19.0" | 1248 | resolve "^1.19.0" |
1216 | 1249 | ||
1217 | -"@rollup/plugin-node-resolve@^7.1.1": | ||
1218 | - version "7.1.3" | ||
1219 | - resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" | ||
1220 | - integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== | 1250 | +"@rollup/plugin-node-resolve@^11.0.1": |
1251 | + version "11.0.1" | ||
1252 | + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.0.1.tgz#d3765eec4bccf960801439a999382aed2dca959b" | ||
1253 | + integrity sha512-ltlsj/4Bhwwhb+Nb5xCz/6vieuEj2/BAkkqVIKmZwC7pIdl8srmgmglE4S0jFlZa32K4qvdQ6NHdmpRKD/LwoQ== | ||
1221 | dependencies: | 1254 | dependencies: |
1222 | - "@rollup/pluginutils" "^3.0.8" | ||
1223 | - "@types/resolve" "0.0.8" | 1255 | + "@rollup/pluginutils" "^3.1.0" |
1256 | + "@types/resolve" "1.17.1" | ||
1224 | builtin-modules "^3.1.0" | 1257 | builtin-modules "^3.1.0" |
1258 | + deepmerge "^4.2.2" | ||
1225 | is-module "^1.0.0" | 1259 | is-module "^1.0.0" |
1226 | - resolve "^1.14.2" | 1260 | + resolve "^1.19.0" |
1227 | 1261 | ||
1228 | -"@rollup/plugin-node-resolve@^8.4.0": | ||
1229 | - version "8.4.0" | ||
1230 | - resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-8.4.0.tgz#261d79a680e9dc3d86761c14462f24126ba83575" | ||
1231 | - integrity sha512-LFqKdRLn0ShtQyf6SBYO69bGE1upV6wUhBX0vFOUnLAyzx5cwp8svA0eHUnu8+YU57XOkrMtfG63QOpQx25pHQ== | 1262 | +"@rollup/plugin-node-resolve@^9.0.0": |
1263 | + version "9.0.0" | ||
1264 | + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6" | ||
1265 | + integrity sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg== | ||
1232 | dependencies: | 1266 | dependencies: |
1233 | "@rollup/pluginutils" "^3.1.0" | 1267 | "@rollup/pluginutils" "^3.1.0" |
1234 | "@types/resolve" "1.17.1" | 1268 | "@types/resolve" "1.17.1" |
1235 | builtin-modules "^3.1.0" | 1269 | builtin-modules "^3.1.0" |
1236 | - deep-freeze "^0.0.1" | ||
1237 | deepmerge "^4.2.2" | 1270 | deepmerge "^4.2.2" |
1238 | is-module "^1.0.0" | 1271 | is-module "^1.0.0" |
1239 | resolve "^1.17.0" | 1272 | resolve "^1.17.0" |
1240 | 1273 | ||
1241 | -"@rollup/plugin-replace@^2.3.1", "@rollup/plugin-replace@^2.3.3": | 1274 | +"@rollup/plugin-replace@^2.3.3", "@rollup/plugin-replace@^2.3.4": |
1242 | version "2.3.4" | 1275 | version "2.3.4" |
1243 | resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca" | 1276 | resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz#7dd84c17755d62b509577f2db37eb524d7ca88ca" |
1244 | integrity sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ== | 1277 | integrity sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ== |
@@ -1286,7 +1319,7 @@ | @@ -1286,7 +1319,7 @@ | ||
1286 | remark "^13.0.0" | 1319 | remark "^13.0.0" |
1287 | unist-util-find-all-after "^3.0.2" | 1320 | unist-util-find-all-after "^3.0.2" |
1288 | 1321 | ||
1289 | -"@surma/rollup-plugin-off-main-thread@^1.1.1": | 1322 | +"@surma/rollup-plugin-off-main-thread@^1.4.1": |
1290 | version "1.4.2" | 1323 | version "1.4.2" |
1291 | resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" | 1324 | resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" |
1292 | integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== | 1325 | integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== |
@@ -1367,10 +1400,10 @@ | @@ -1367,10 +1400,10 @@ | ||
1367 | "@types/qs" "*" | 1400 | "@types/qs" "*" |
1368 | "@types/serve-static" "*" | 1401 | "@types/serve-static" "*" |
1369 | 1402 | ||
1370 | -"@types/fs-extra@^9.0.5": | ||
1371 | - version "9.0.5" | ||
1372 | - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.5.tgz#2afb76a43a4bef80a363b94b314d0ca1694fc4f8" | ||
1373 | - integrity sha512-wr3t7wIW1c0A2BIJtdVp4EflriVaVVAsCAIHVzzh8B+GiFv9X1xeJjCs4upRXtzp7kQ6lP5xvskjoD4awJ1ZeA== | 1403 | +"@types/fs-extra@^9.0.6": |
1404 | + version "9.0.6" | ||
1405 | + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.6.tgz#488e56b77299899a608b8269719c1d133027a6ab" | ||
1406 | + integrity sha512-ecNRHw4clCkowNOBJH1e77nvbPxHYnWIXMv1IAoG/9+MYGkgoyr3Ppxr7XYFNL41V422EDhyV4/4SSK8L2mlig== | ||
1374 | dependencies: | 1407 | dependencies: |
1375 | "@types/node" "*" | 1408 | "@types/node" "*" |
1376 | 1409 | ||
@@ -1518,13 +1551,6 @@ | @@ -1518,13 +1551,6 @@ | ||
1518 | resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" | 1551 | resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" |
1519 | integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== | 1552 | integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== |
1520 | 1553 | ||
1521 | -"@types/resolve@0.0.8": | ||
1522 | - version "0.0.8" | ||
1523 | - resolved "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" | ||
1524 | - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== | ||
1525 | - dependencies: | ||
1526 | - "@types/node" "*" | ||
1527 | - | ||
1528 | "@types/resolve@1.17.1": | 1554 | "@types/resolve@1.17.1": |
1529 | version "1.17.1" | 1555 | version "1.17.1" |
1530 | resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" | 1556 | resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" |
@@ -1841,7 +1867,7 @@ acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: | @@ -1841,7 +1867,7 @@ acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: | ||
1841 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" | 1867 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" |
1842 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== | 1868 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== |
1843 | 1869 | ||
1844 | -acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: | 1870 | +acorn@^7.1.1, acorn@^7.4.0: |
1845 | version "7.4.1" | 1871 | version "7.4.1" |
1846 | resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" | 1872 | resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" |
1847 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== | 1873 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== |
@@ -2105,13 +2131,6 @@ axios@^0.21.1: | @@ -2105,13 +2131,6 @@ axios@^0.21.1: | ||
2105 | dependencies: | 2131 | dependencies: |
2106 | follow-redirects "^1.10.0" | 2132 | follow-redirects "^1.10.0" |
2107 | 2133 | ||
2108 | -babel-extract-comments@^1.0.0: | ||
2109 | - version "1.0.0" | ||
2110 | - resolved "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" | ||
2111 | - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== | ||
2112 | - dependencies: | ||
2113 | - babylon "^6.18.0" | ||
2114 | - | ||
2115 | babel-helper-vue-jsx-merge-props@^2.0.3: | 2134 | babel-helper-vue-jsx-merge-props@^2.0.3: |
2116 | version "2.0.3" | 2135 | version "2.0.3" |
2117 | resolved "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" | 2136 | resolved "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" |
@@ -2124,32 +2143,6 @@ babel-plugin-dynamic-import-node@^2.3.3: | @@ -2124,32 +2143,6 @@ babel-plugin-dynamic-import-node@^2.3.3: | ||
2124 | dependencies: | 2143 | dependencies: |
2125 | object.assign "^4.1.0" | 2144 | object.assign "^4.1.0" |
2126 | 2145 | ||
2127 | -babel-plugin-syntax-object-rest-spread@^6.8.0: | ||
2128 | - version "6.13.0" | ||
2129 | - resolved "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" | ||
2130 | - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= | ||
2131 | - | ||
2132 | -babel-plugin-transform-object-rest-spread@^6.26.0: | ||
2133 | - version "6.26.0" | ||
2134 | - resolved "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" | ||
2135 | - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= | ||
2136 | - dependencies: | ||
2137 | - babel-plugin-syntax-object-rest-spread "^6.8.0" | ||
2138 | - babel-runtime "^6.26.0" | ||
2139 | - | ||
2140 | -babel-runtime@^6.26.0: | ||
2141 | - version "6.26.0" | ||
2142 | - resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" | ||
2143 | - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= | ||
2144 | - dependencies: | ||
2145 | - core-js "^2.4.0" | ||
2146 | - regenerator-runtime "^0.11.0" | ||
2147 | - | ||
2148 | -babylon@^6.18.0: | ||
2149 | - version "6.18.0" | ||
2150 | - resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" | ||
2151 | - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== | ||
2152 | - | ||
2153 | bail@^1.0.0: | 2146 | bail@^1.0.0: |
2154 | version "1.0.5" | 2147 | version "1.0.5" |
2155 | resolved "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" | 2148 | resolved "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" |
@@ -2950,11 +2943,6 @@ core-js-compat@^3.8.0: | @@ -2950,11 +2943,6 @@ core-js-compat@^3.8.0: | ||
2950 | browserslist "^4.15.0" | 2943 | browserslist "^4.15.0" |
2951 | semver "7.0.0" | 2944 | semver "7.0.0" |
2952 | 2945 | ||
2953 | -core-js@^2.4.0: | ||
2954 | - version "2.6.12" | ||
2955 | - resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" | ||
2956 | - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== | ||
2957 | - | ||
2958 | core-js@^3.6.1, core-js@^3.6.5: | 2946 | core-js@^3.6.1, core-js@^3.6.5: |
2959 | version "3.8.1" | 2947 | version "3.8.1" |
2960 | resolved "https://registry.npmjs.org/core-js/-/core-js-3.8.1.tgz#f51523668ac8a294d1285c3b9db44025fda66d47" | 2948 | resolved "https://registry.npmjs.org/core-js/-/core-js-3.8.1.tgz#f51523668ac8a294d1285c3b9db44025fda66d47" |
@@ -3010,10 +2998,10 @@ crypto-es@^1.2.6: | @@ -3010,10 +2998,10 @@ crypto-es@^1.2.6: | ||
3010 | resolved "https://registry.npmjs.org/crypto-es/-/crypto-es-1.2.6.tgz#468f3573a5d7b82e3b63b0004f55f905a6d3b12c" | 2998 | resolved "https://registry.npmjs.org/crypto-es/-/crypto-es-1.2.6.tgz#468f3573a5d7b82e3b63b0004f55f905a6d3b12c" |
3011 | integrity sha512-PQnrovdr5ibmOxqAh/Vy+A30RokHom7kb9Z61EPwfASfbcJCrCG4+vNNegmebNVHiXvS7WjYpHDePxnE/biEbA== | 2999 | integrity sha512-PQnrovdr5ibmOxqAh/Vy+A30RokHom7kb9Z61EPwfASfbcJCrCG4+vNNegmebNVHiXvS7WjYpHDePxnE/biEbA== |
3012 | 3000 | ||
3013 | -crypto-random-string@^1.0.0: | ||
3014 | - version "1.0.0" | ||
3015 | - resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" | ||
3016 | - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= | 3001 | +crypto-random-string@^2.0.0: |
3002 | + version "2.0.0" | ||
3003 | + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" | ||
3004 | + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== | ||
3017 | 3005 | ||
3018 | cssesc@^3.0.0: | 3006 | cssesc@^3.0.0: |
3019 | version "3.0.0" | 3007 | version "3.0.0" |
@@ -3094,6 +3082,13 @@ debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3 | @@ -3094,6 +3082,13 @@ debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3 | ||
3094 | dependencies: | 3082 | dependencies: |
3095 | ms "2.1.2" | 3083 | ms "2.1.2" |
3096 | 3084 | ||
3085 | +debug@^4.3.2: | ||
3086 | + version "4.3.2" | ||
3087 | + resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" | ||
3088 | + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== | ||
3089 | + dependencies: | ||
3090 | + ms "2.1.2" | ||
3091 | + | ||
3097 | debug@~3.1.0: | 3092 | debug@~3.1.0: |
3098 | version "3.1.0" | 3093 | version "3.1.0" |
3099 | resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" | 3094 | resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" |
@@ -3129,11 +3124,6 @@ deep-equal@~1.0.1: | @@ -3129,11 +3124,6 @@ deep-equal@~1.0.1: | ||
3129 | resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" | 3124 | resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" |
3130 | integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= | 3125 | integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= |
3131 | 3126 | ||
3132 | -deep-freeze@^0.0.1: | ||
3133 | - version "0.0.1" | ||
3134 | - resolved "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" | ||
3135 | - integrity sha1-OgsABd4YZygZ39OM0x+RF5yJPoQ= | ||
3136 | - | ||
3137 | deep-is@^0.1.3: | 3127 | deep-is@^0.1.3: |
3138 | version "0.1.3" | 3128 | version "0.1.3" |
3139 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" | 3129 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" |
@@ -3912,7 +3902,7 @@ fresh@~0.5.2: | @@ -3912,7 +3902,7 @@ fresh@~0.5.2: | ||
3912 | resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" | 3902 | resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" |
3913 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= | 3903 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= |
3914 | 3904 | ||
3915 | -fs-extra@8.1.0, fs-extra@^8.1.0: | 3905 | +fs-extra@8.1.0: |
3916 | version "8.1.0" | 3906 | version "8.1.0" |
3917 | resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" | 3907 | resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" |
3918 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== | 3908 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== |
@@ -4863,15 +4853,7 @@ isobject@^3.0.0, isobject@^3.0.1: | @@ -4863,15 +4853,7 @@ isobject@^3.0.0, isobject@^3.0.1: | ||
4863 | resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" | 4853 | resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" |
4864 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= | 4854 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= |
4865 | 4855 | ||
4866 | -jest-worker@^24.9.0: | ||
4867 | - version "24.9.0" | ||
4868 | - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" | ||
4869 | - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== | ||
4870 | - dependencies: | ||
4871 | - merge-stream "^2.0.0" | ||
4872 | - supports-color "^6.1.0" | ||
4873 | - | ||
4874 | -jest-worker@^26.0.0, jest-worker@^26.2.1: | 4856 | +jest-worker@^26.2.1: |
4875 | version "26.6.2" | 4857 | version "26.6.2" |
4876 | resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" | 4858 | resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" |
4877 | integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== | 4859 | integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== |
@@ -5265,7 +5247,7 @@ lodash.map@^4.5.1: | @@ -5265,7 +5247,7 @@ lodash.map@^4.5.1: | ||
5265 | resolved "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" | 5247 | resolved "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" |
5266 | integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= | 5248 | integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= |
5267 | 5249 | ||
5268 | -lodash.template@^4.0.2, lodash.template@^4.5.0: | 5250 | +lodash.template@^4.0.2: |
5269 | version "4.5.0" | 5251 | version "4.5.0" |
5270 | resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" | 5252 | resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" |
5271 | integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== | 5253 | integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== |
@@ -6440,6 +6422,11 @@ pretty-bytes@^5.3.0: | @@ -6440,6 +6422,11 @@ pretty-bytes@^5.3.0: | ||
6440 | resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" | 6422 | resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" |
6441 | integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== | 6423 | integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== |
6442 | 6424 | ||
6425 | +pretty-bytes@^5.4.1: | ||
6426 | + version "5.5.0" | ||
6427 | + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.5.0.tgz#0cecda50a74a941589498011cf23275aa82b339e" | ||
6428 | + integrity sha512-p+T744ZyjjiaFlMUZZv6YPC5JrkNj8maRmPaQCWFJFplUAzpIUTRaTcS+7wmZtUoFXHtESJb23ISliaWyz3SHA== | ||
6429 | + | ||
6443 | printj@~1.1.0, printj@~1.1.2: | 6430 | printj@~1.1.0, printj@~1.1.2: |
6444 | version "1.1.2" | 6431 | version "1.1.2" |
6445 | resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" | 6432 | resolved "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" |
@@ -6667,11 +6654,6 @@ regenerate@^1.4.0: | @@ -6667,11 +6654,6 @@ regenerate@^1.4.0: | ||
6667 | resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" | 6654 | resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" |
6668 | integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== | 6655 | integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== |
6669 | 6656 | ||
6670 | -regenerator-runtime@^0.11.0: | ||
6671 | - version "0.11.1" | ||
6672 | - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" | ||
6673 | - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== | ||
6674 | - | ||
6675 | regenerator-runtime@^0.13.4: | 6657 | regenerator-runtime@^0.13.4: |
6676 | version "0.13.7" | 6658 | version "0.13.7" |
6677 | resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" | 6659 | resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" |
@@ -6824,7 +6806,7 @@ resolve-url@^0.2.1: | @@ -6824,7 +6806,7 @@ resolve-url@^0.2.1: | ||
6824 | resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" | 6806 | resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" |
6825 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= | 6807 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= |
6826 | 6808 | ||
6827 | -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0: | 6809 | +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.19.0: |
6828 | version "1.19.0" | 6810 | version "1.19.0" |
6829 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" | 6811 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" |
6830 | integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== | 6812 | integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== |
@@ -6865,14 +6847,6 @@ rimraf@^3.0.2: | @@ -6865,14 +6847,6 @@ rimraf@^3.0.2: | ||
6865 | dependencies: | 6847 | dependencies: |
6866 | glob "^7.1.3" | 6848 | glob "^7.1.3" |
6867 | 6849 | ||
6868 | -rollup-plugin-babel@^4.3.3: | ||
6869 | - version "4.4.0" | ||
6870 | - resolved "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" | ||
6871 | - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== | ||
6872 | - dependencies: | ||
6873 | - "@babel/helper-module-imports" "^7.0.0" | ||
6874 | - rollup-pluginutils "^2.8.1" | ||
6875 | - | ||
6876 | rollup-plugin-dynamic-import-variables@^1.1.0: | 6850 | rollup-plugin-dynamic-import-variables@^1.1.0: |
6877 | version "1.1.0" | 6851 | version "1.1.0" |
6878 | resolved "https://registry.npmjs.org/rollup-plugin-dynamic-import-variables/-/rollup-plugin-dynamic-import-variables-1.1.0.tgz#4981d38907a471b35234398a09047bef47a2006a" | 6852 | resolved "https://registry.npmjs.org/rollup-plugin-dynamic-import-variables/-/rollup-plugin-dynamic-import-variables-1.1.0.tgz#4981d38907a471b35234398a09047bef47a2006a" |
@@ -6900,28 +6874,7 @@ rollup-plugin-purge-icons@^0.4.5: | @@ -6900,28 +6874,7 @@ rollup-plugin-purge-icons@^0.4.5: | ||
6900 | "@purge-icons/core" "^0.4.5" | 6874 | "@purge-icons/core" "^0.4.5" |
6901 | "@purge-icons/generated" "^0.4.1" | 6875 | "@purge-icons/generated" "^0.4.1" |
6902 | 6876 | ||
6903 | -rollup-plugin-terser@^5.3.1: | ||
6904 | - version "5.3.1" | ||
6905 | - resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" | ||
6906 | - integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== | ||
6907 | - dependencies: | ||
6908 | - "@babel/code-frame" "^7.5.5" | ||
6909 | - jest-worker "^24.9.0" | ||
6910 | - rollup-pluginutils "^2.8.2" | ||
6911 | - serialize-javascript "^4.0.0" | ||
6912 | - terser "^4.6.2" | ||
6913 | - | ||
6914 | -rollup-plugin-terser@^6.1.0: | ||
6915 | - version "6.1.0" | ||
6916 | - resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-6.1.0.tgz#071866585aea104bfbb9dd1019ac523e63c81e45" | ||
6917 | - integrity sha512-4fB3M9nuoWxrwm39habpd4hvrbrde2W2GG4zEGPQg1YITNkM3Tqur5jSuXlWNzbv/2aMLJ+dZJaySc3GCD8oDw== | ||
6918 | - dependencies: | ||
6919 | - "@babel/code-frame" "^7.8.3" | ||
6920 | - jest-worker "^26.0.0" | ||
6921 | - serialize-javascript "^3.0.0" | ||
6922 | - terser "^4.7.0" | ||
6923 | - | ||
6924 | -rollup-plugin-terser@^7.0.2: | 6877 | +rollup-plugin-terser@^7.0.0, rollup-plugin-terser@^7.0.2: |
6925 | version "7.0.2" | 6878 | version "7.0.2" |
6926 | resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" | 6879 | resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" |
6927 | integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== | 6880 | integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== |
@@ -6955,18 +6908,18 @@ rollup-plugin-web-worker-loader@^1.3.1: | @@ -6955,18 +6908,18 @@ rollup-plugin-web-worker-loader@^1.3.1: | ||
6955 | resolved "https://registry.npmjs.org/rollup-plugin-web-worker-loader/-/rollup-plugin-web-worker-loader-1.5.0.tgz#df21973426c6f95b238a84698ae27f8d8aab6b83" | 6908 | resolved "https://registry.npmjs.org/rollup-plugin-web-worker-loader/-/rollup-plugin-web-worker-loader-1.5.0.tgz#df21973426c6f95b238a84698ae27f8d8aab6b83" |
6956 | integrity sha512-Zx5l370yGDje35rFkM/wbT4dMIq2+kSBdLWQpqLkBuxmrQJcx0umA05kSbNRzccFsudQH4FKYCK8GtSBQRQBBg== | 6909 | integrity sha512-Zx5l370yGDje35rFkM/wbT4dMIq2+kSBdLWQpqLkBuxmrQJcx0umA05kSbNRzccFsudQH4FKYCK8GtSBQRQBBg== |
6957 | 6910 | ||
6958 | -rollup-plugin-workbox@^5.2.1: | ||
6959 | - version "5.2.1" | ||
6960 | - resolved "https://registry.npmjs.org/rollup-plugin-workbox/-/rollup-plugin-workbox-5.2.1.tgz#371b0753667df03886742ec072281525803c2c75" | ||
6961 | - integrity sha512-C+yIoYkZ3VUcJTZpOH2zbaarHCwy8eQod987eS8hXE6qwfMLDqV3RkLYNplnO0PcMi+3JgZPiE6d1zuXgwkO7Q== | 6911 | +rollup-plugin-workbox@^6.1.0: |
6912 | + version "6.1.0" | ||
6913 | + resolved "https://registry.npmjs.org/rollup-plugin-workbox/-/rollup-plugin-workbox-6.1.0.tgz#120cde36547769fc8cc45eae97a338c4017ed936" | ||
6914 | + integrity sha512-BqeEBj53fiqNLjiiyVvuBlic3Apg2Us1mpTkn3zgqaipJoAOC3soi+W9vrOQcm190lHLo9WNvi1wQg/M7olJHg== | ||
6962 | dependencies: | 6915 | dependencies: |
6963 | - "@rollup/plugin-node-resolve" "^8.4.0" | ||
6964 | - "@rollup/plugin-replace" "^2.3.3" | ||
6965 | - pretty-bytes "^5.3.0" | ||
6966 | - rollup-plugin-terser "^6.1.0" | ||
6967 | - workbox-build "^5.0.0" | 6916 | + "@rollup/plugin-node-resolve" "^11.0.1" |
6917 | + "@rollup/plugin-replace" "^2.3.4" | ||
6918 | + pretty-bytes "^5.4.1" | ||
6919 | + rollup-plugin-terser "^7.0.2" | ||
6920 | + workbox-build "^6.0.2" | ||
6968 | 6921 | ||
6969 | -rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: | 6922 | +rollup-pluginutils@^2.8.2: |
6970 | version "2.8.2" | 6923 | version "2.8.2" |
6971 | resolved "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" | 6924 | resolved "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" |
6972 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== | 6925 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== |
@@ -6981,14 +6934,12 @@ rollup@^0.63.4: | @@ -6981,14 +6934,12 @@ rollup@^0.63.4: | ||
6981 | "@types/estree" "0.0.39" | 6934 | "@types/estree" "0.0.39" |
6982 | "@types/node" "*" | 6935 | "@types/node" "*" |
6983 | 6936 | ||
6984 | -rollup@^1.31.1: | ||
6985 | - version "1.32.1" | ||
6986 | - resolved "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" | ||
6987 | - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== | ||
6988 | - dependencies: | ||
6989 | - "@types/estree" "*" | ||
6990 | - "@types/node" "*" | ||
6991 | - acorn "^7.1.0" | 6937 | +rollup@^2.25.0: |
6938 | + version "2.35.1" | ||
6939 | + resolved "https://registry.npmjs.org/rollup/-/rollup-2.35.1.tgz#e6bc8d10893556a638066f89e8c97f422d03968c" | ||
6940 | + integrity sha512-q5KxEyWpprAIcainhVy6HfRttD9kutQpHbeqDTWnqAFNJotiojetK6uqmcydNMymBEtC4I8bCYR+J3mTMqeaUA== | ||
6941 | + optionalDependencies: | ||
6942 | + fsevents "~2.1.2" | ||
6992 | 6943 | ||
6993 | rollup@^2.32.1, rollup@^2.34.1: | 6944 | rollup@^2.32.1, rollup@^2.34.1: |
6994 | version "2.34.2" | 6945 | version "2.34.2" |
@@ -7087,13 +7038,6 @@ semver@^7.2.1, semver@^7.3.2: | @@ -7087,13 +7038,6 @@ semver@^7.2.1, semver@^7.3.2: | ||
7087 | dependencies: | 7038 | dependencies: |
7088 | lru-cache "^6.0.0" | 7039 | lru-cache "^6.0.0" |
7089 | 7040 | ||
7090 | -serialize-javascript@^3.0.0: | ||
7091 | - version "3.1.0" | ||
7092 | - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz#8bf3a9170712664ef2561b44b691eafe399214ea" | ||
7093 | - integrity sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg== | ||
7094 | - dependencies: | ||
7095 | - randombytes "^2.1.0" | ||
7096 | - | ||
7097 | serialize-javascript@^4.0.0: | 7041 | serialize-javascript@^4.0.0: |
7098 | version "4.0.0" | 7042 | version "4.0.0" |
7099 | resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" | 7043 | resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" |
@@ -7448,13 +7392,10 @@ strip-bom@^3.0.0: | @@ -7448,13 +7392,10 @@ strip-bom@^3.0.0: | ||
7448 | resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" | 7392 | resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" |
7449 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= | 7393 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= |
7450 | 7394 | ||
7451 | -strip-comments@^1.0.2: | ||
7452 | - version "1.0.2" | ||
7453 | - resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" | ||
7454 | - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== | ||
7455 | - dependencies: | ||
7456 | - babel-extract-comments "^1.0.0" | ||
7457 | - babel-plugin-transform-object-rest-spread "^6.26.0" | 7395 | +strip-comments@^2.0.1: |
7396 | + version "2.0.1" | ||
7397 | + resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" | ||
7398 | + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== | ||
7458 | 7399 | ||
7459 | strip-final-newline@^2.0.0: | 7400 | strip-final-newline@^2.0.0: |
7460 | version "2.0.0" | 7401 | version "2.0.0" |
@@ -7689,11 +7630,6 @@ tasksfile@^5.1.1: | @@ -7689,11 +7630,6 @@ tasksfile@^5.1.1: | ||
7689 | "@pawelgalazka/shell" "2.0.0" | 7630 | "@pawelgalazka/shell" "2.0.0" |
7690 | chalk "2.3.0" | 7631 | chalk "2.3.0" |
7691 | 7632 | ||
7692 | -temp-dir@^1.0.0: | ||
7693 | - version "1.0.0" | ||
7694 | - resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" | ||
7695 | - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= | ||
7696 | - | ||
7697 | temp-dir@^2.0.0: | 7633 | temp-dir@^2.0.0: |
7698 | version "2.0.0" | 7634 | version "2.0.0" |
7699 | resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" | 7635 | resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" |
@@ -7707,16 +7643,17 @@ tempfile@^3.0.0: | @@ -7707,16 +7643,17 @@ tempfile@^3.0.0: | ||
7707 | temp-dir "^2.0.0" | 7643 | temp-dir "^2.0.0" |
7708 | uuid "^3.3.2" | 7644 | uuid "^3.3.2" |
7709 | 7645 | ||
7710 | -tempy@^0.3.0: | ||
7711 | - version "0.3.0" | ||
7712 | - resolved "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" | ||
7713 | - integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== | 7646 | +tempy@^0.6.0: |
7647 | + version "0.6.0" | ||
7648 | + resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" | ||
7649 | + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== | ||
7714 | dependencies: | 7650 | dependencies: |
7715 | - temp-dir "^1.0.0" | ||
7716 | - type-fest "^0.3.1" | ||
7717 | - unique-string "^1.0.0" | 7651 | + is-stream "^2.0.0" |
7652 | + temp-dir "^2.0.0" | ||
7653 | + type-fest "^0.16.0" | ||
7654 | + unique-string "^2.0.0" | ||
7718 | 7655 | ||
7719 | -terser@^4.6.2, terser@^4.6.3, terser@^4.7.0: | 7656 | +terser@^4.6.3: |
7720 | version "4.8.0" | 7657 | version "4.8.0" |
7721 | resolved "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" | 7658 | resolved "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" |
7722 | integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== | 7659 | integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== |
@@ -7898,16 +7835,16 @@ type-fest@^0.11.0: | @@ -7898,16 +7835,16 @@ type-fest@^0.11.0: | ||
7898 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" | 7835 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" |
7899 | integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== | 7836 | integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== |
7900 | 7837 | ||
7838 | +type-fest@^0.16.0: | ||
7839 | + version "0.16.0" | ||
7840 | + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" | ||
7841 | + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== | ||
7842 | + | ||
7901 | type-fest@^0.18.0: | 7843 | type-fest@^0.18.0: |
7902 | version "0.18.1" | 7844 | version "0.18.1" |
7903 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" | 7845 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" |
7904 | integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== | 7846 | integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== |
7905 | 7847 | ||
7906 | -type-fest@^0.3.1: | ||
7907 | - version "0.3.1" | ||
7908 | - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" | ||
7909 | - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== | ||
7910 | - | ||
7911 | type-fest@^0.6.0: | 7848 | type-fest@^0.6.0: |
7912 | version "0.6.0" | 7849 | version "0.6.0" |
7913 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" | 7850 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" |
@@ -7998,12 +7935,12 @@ uniq@^1.0.1: | @@ -7998,12 +7935,12 @@ uniq@^1.0.1: | ||
7998 | resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" | 7935 | resolved "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" |
7999 | integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= | 7936 | integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= |
8000 | 7937 | ||
8001 | -unique-string@^1.0.0: | ||
8002 | - version "1.0.0" | ||
8003 | - resolved "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" | ||
8004 | - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= | 7938 | +unique-string@^2.0.0: |
7939 | + version "2.0.0" | ||
7940 | + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" | ||
7941 | + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== | ||
8005 | dependencies: | 7942 | dependencies: |
8006 | - crypto-random-string "^1.0.0" | 7943 | + crypto-random-string "^2.0.0" |
8007 | 7944 | ||
8008 | unist-util-find-all-after@^3.0.2: | 7945 | unist-util-find-all-after@^3.0.2: |
8009 | version "3.0.2" | 7946 | version "3.0.2" |
@@ -8159,14 +8096,14 @@ vite-plugin-purge-icons@^0.4.5: | @@ -8159,14 +8096,14 @@ vite-plugin-purge-icons@^0.4.5: | ||
8159 | "@purge-icons/generated" "^0.4.1" | 8096 | "@purge-icons/generated" "^0.4.1" |
8160 | rollup-plugin-purge-icons "^0.4.5" | 8097 | rollup-plugin-purge-icons "^0.4.5" |
8161 | 8098 | ||
8162 | -vite-plugin-pwa@^0.1.7: | ||
8163 | - version "0.1.7" | ||
8164 | - resolved "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.1.7.tgz#3e13faf2d61b1f5a1b341f6b08f32216ffae1f55" | ||
8165 | - integrity sha512-S5Hc1x/rcfb6cgKjlW7yxSTv1er6fquzGZt/+xC1wavSBa7Qf6wdf6QzYiYdwmUom5yUSDEawc2gEYgq5SsZFg== | 8099 | +vite-plugin-pwa@^0.2.0: |
8100 | + version "0.2.0" | ||
8101 | + resolved "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.2.0.tgz#e9368530c97537bdad7279f05de061ab9b024cce" | ||
8102 | + integrity sha512-OBNhlSqvqH9af9i8HsetmaRTrUjit3UP0rx33Sr0iBapM0gtuAmTjS4JPdSM54cGC1aVaIC3Rn3sY9wL0uxBrw== | ||
8166 | dependencies: | 8103 | dependencies: |
8167 | - debug "^4.3.0" | 8104 | + debug "^4.3.2" |
8168 | fast-glob "^3.2.4" | 8105 | fast-glob "^3.2.4" |
8169 | - rollup-plugin-workbox "^5.2.1" | 8106 | + rollup-plugin-workbox "^6.1.0" |
8170 | 8107 | ||
8171 | vite@^1.0.0-rc.13: | 8108 | vite@^1.0.0-rc.13: |
8172 | version "1.0.0-rc.13" | 8109 | version "1.0.0-rc.13" |
@@ -8354,146 +8291,160 @@ wordwrap@^1.0.0: | @@ -8354,146 +8291,160 @@ wordwrap@^1.0.0: | ||
8354 | resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" | 8291 | resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" |
8355 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= | 8292 | integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= |
8356 | 8293 | ||
8357 | -workbox-background-sync@^5.1.4: | ||
8358 | - version "5.1.4" | ||
8359 | - resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" | ||
8360 | - integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== | 8294 | +workbox-background-sync@^6.0.2: |
8295 | + version "6.0.2" | ||
8296 | + resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.0.2.tgz#9205f5ef7fbf68203b925bdc85bdaa31a34fbbe6" | ||
8297 | + integrity sha512-KQU2ntvbvFoBvCRm+EDpWAaykt4u/oaF5j3C6io0dZVWhFc/ZwgYDii8fb34LTenug3VPWQELdw9dNBCoP4b0w== | ||
8361 | dependencies: | 8298 | dependencies: |
8362 | - workbox-core "^5.1.4" | 8299 | + workbox-core "^6.0.2" |
8363 | 8300 | ||
8364 | -workbox-broadcast-update@^5.1.4: | ||
8365 | - version "5.1.4" | ||
8366 | - resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" | ||
8367 | - integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== | 8301 | +workbox-broadcast-update@^6.0.2: |
8302 | + version "6.0.2" | ||
8303 | + resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.0.2.tgz#fc034277e631e4193dcee9f6b0a77e415b4ddefb" | ||
8304 | + integrity sha512-yCXYEln7nU8FkMDysYQPirpgFXtsdBtxruHbvZzRsxMHvAELf3j/o6Ufae1zjl8XanLF696sqSNxehpCGSD6tw== | ||
8368 | dependencies: | 8305 | dependencies: |
8369 | - workbox-core "^5.1.4" | 8306 | + workbox-core "^6.0.2" |
8370 | 8307 | ||
8371 | -workbox-build@^5.0.0: | ||
8372 | - version "5.1.4" | ||
8373 | - resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" | ||
8374 | - integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== | 8308 | +workbox-build@^6.0.2: |
8309 | + version "6.0.2" | ||
8310 | + resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-6.0.2.tgz#a23eebd6556cf473fedda77c08421b2d093efc32" | ||
8311 | + integrity sha512-Dukbt+p62Yzb12SXAmycTYvHngJ8aRtXy3hymsC8B6gxTCZmCZ0u5JuKhu7lNLbDwDkYE78lhFvT9SF+MXFz5A== | ||
8375 | dependencies: | 8312 | dependencies: |
8376 | - "@babel/core" "^7.8.4" | ||
8377 | - "@babel/preset-env" "^7.8.4" | ||
8378 | - "@babel/runtime" "^7.8.4" | ||
8379 | - "@hapi/joi" "^15.1.0" | ||
8380 | - "@rollup/plugin-node-resolve" "^7.1.1" | ||
8381 | - "@rollup/plugin-replace" "^2.3.1" | ||
8382 | - "@surma/rollup-plugin-off-main-thread" "^1.1.1" | 8313 | + "@babel/core" "^7.11.1" |
8314 | + "@babel/preset-env" "^7.11.0" | ||
8315 | + "@babel/runtime" "^7.11.2" | ||
8316 | + "@hapi/joi" "^16.1.8" | ||
8317 | + "@rollup/plugin-babel" "^5.2.0" | ||
8318 | + "@rollup/plugin-node-resolve" "^9.0.0" | ||
8319 | + "@rollup/plugin-replace" "^2.3.3" | ||
8320 | + "@surma/rollup-plugin-off-main-thread" "^1.4.1" | ||
8383 | common-tags "^1.8.0" | 8321 | common-tags "^1.8.0" |
8384 | fast-json-stable-stringify "^2.1.0" | 8322 | fast-json-stable-stringify "^2.1.0" |
8385 | - fs-extra "^8.1.0" | 8323 | + fs-extra "^9.0.1" |
8386 | glob "^7.1.6" | 8324 | glob "^7.1.6" |
8387 | - lodash.template "^4.5.0" | 8325 | + lodash "^4.17.20" |
8388 | pretty-bytes "^5.3.0" | 8326 | pretty-bytes "^5.3.0" |
8389 | - rollup "^1.31.1" | ||
8390 | - rollup-plugin-babel "^4.3.3" | ||
8391 | - rollup-plugin-terser "^5.3.1" | 8327 | + rollup "^2.25.0" |
8328 | + rollup-plugin-terser "^7.0.0" | ||
8392 | source-map "^0.7.3" | 8329 | source-map "^0.7.3" |
8393 | source-map-url "^0.4.0" | 8330 | source-map-url "^0.4.0" |
8394 | stringify-object "^3.3.0" | 8331 | stringify-object "^3.3.0" |
8395 | - strip-comments "^1.0.2" | ||
8396 | - tempy "^0.3.0" | 8332 | + strip-comments "^2.0.1" |
8333 | + tempy "^0.6.0" | ||
8397 | upath "^1.2.0" | 8334 | upath "^1.2.0" |
8398 | - workbox-background-sync "^5.1.4" | ||
8399 | - workbox-broadcast-update "^5.1.4" | ||
8400 | - workbox-cacheable-response "^5.1.4" | ||
8401 | - workbox-core "^5.1.4" | ||
8402 | - workbox-expiration "^5.1.4" | ||
8403 | - workbox-google-analytics "^5.1.4" | ||
8404 | - workbox-navigation-preload "^5.1.4" | ||
8405 | - workbox-precaching "^5.1.4" | ||
8406 | - workbox-range-requests "^5.1.4" | ||
8407 | - workbox-routing "^5.1.4" | ||
8408 | - workbox-strategies "^5.1.4" | ||
8409 | - workbox-streams "^5.1.4" | ||
8410 | - workbox-sw "^5.1.4" | ||
8411 | - workbox-window "^5.1.4" | ||
8412 | - | ||
8413 | -workbox-cacheable-response@^5.1.4: | ||
8414 | - version "5.1.4" | ||
8415 | - resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" | ||
8416 | - integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== | ||
8417 | - dependencies: | ||
8418 | - workbox-core "^5.1.4" | ||
8419 | - | ||
8420 | -workbox-core@^5.1.4: | ||
8421 | - version "5.1.4" | ||
8422 | - resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" | ||
8423 | - integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== | ||
8424 | - | ||
8425 | -workbox-expiration@^5.1.4: | ||
8426 | - version "5.1.4" | ||
8427 | - resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" | ||
8428 | - integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== | ||
8429 | - dependencies: | ||
8430 | - workbox-core "^5.1.4" | ||
8431 | - | ||
8432 | -workbox-google-analytics@^5.1.4: | ||
8433 | - version "5.1.4" | ||
8434 | - resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" | ||
8435 | - integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== | ||
8436 | - dependencies: | ||
8437 | - workbox-background-sync "^5.1.4" | ||
8438 | - workbox-core "^5.1.4" | ||
8439 | - workbox-routing "^5.1.4" | ||
8440 | - workbox-strategies "^5.1.4" | ||
8441 | - | ||
8442 | -workbox-navigation-preload@^5.1.4: | ||
8443 | - version "5.1.4" | ||
8444 | - resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" | ||
8445 | - integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== | ||
8446 | - dependencies: | ||
8447 | - workbox-core "^5.1.4" | ||
8448 | - | ||
8449 | -workbox-precaching@^5.1.4: | ||
8450 | - version "5.1.4" | ||
8451 | - resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" | ||
8452 | - integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== | ||
8453 | - dependencies: | ||
8454 | - workbox-core "^5.1.4" | ||
8455 | - | ||
8456 | -workbox-range-requests@^5.1.4: | ||
8457 | - version "5.1.4" | ||
8458 | - resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" | ||
8459 | - integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== | ||
8460 | - dependencies: | ||
8461 | - workbox-core "^5.1.4" | ||
8462 | - | ||
8463 | -workbox-routing@^5.1.4: | ||
8464 | - version "5.1.4" | ||
8465 | - resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" | ||
8466 | - integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== | ||
8467 | - dependencies: | ||
8468 | - workbox-core "^5.1.4" | ||
8469 | - | ||
8470 | -workbox-strategies@^5.1.4: | ||
8471 | - version "5.1.4" | ||
8472 | - resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" | ||
8473 | - integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== | ||
8474 | - dependencies: | ||
8475 | - workbox-core "^5.1.4" | ||
8476 | - workbox-routing "^5.1.4" | ||
8477 | - | ||
8478 | -workbox-streams@^5.1.4: | ||
8479 | - version "5.1.4" | ||
8480 | - resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" | ||
8481 | - integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== | ||
8482 | - dependencies: | ||
8483 | - workbox-core "^5.1.4" | ||
8484 | - workbox-routing "^5.1.4" | ||
8485 | - | ||
8486 | -workbox-sw@^5.1.4: | ||
8487 | - version "5.1.4" | ||
8488 | - resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" | ||
8489 | - integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== | ||
8490 | - | ||
8491 | -workbox-window@^5.1.4: | ||
8492 | - version "5.1.4" | ||
8493 | - resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" | ||
8494 | - integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== | ||
8495 | - dependencies: | ||
8496 | - workbox-core "^5.1.4" | 8335 | + workbox-background-sync "^6.0.2" |
8336 | + workbox-broadcast-update "^6.0.2" | ||
8337 | + workbox-cacheable-response "^6.0.2" | ||
8338 | + workbox-core "^6.0.2" | ||
8339 | + workbox-expiration "^6.0.2" | ||
8340 | + workbox-google-analytics "^6.0.2" | ||
8341 | + workbox-navigation-preload "^6.0.2" | ||
8342 | + workbox-precaching "^6.0.2" | ||
8343 | + workbox-range-requests "^6.0.2" | ||
8344 | + workbox-recipes "^6.0.2" | ||
8345 | + workbox-routing "^6.0.2" | ||
8346 | + workbox-strategies "^6.0.2" | ||
8347 | + workbox-streams "^6.0.2" | ||
8348 | + workbox-sw "^6.0.2" | ||
8349 | + workbox-window "^6.0.2" | ||
8350 | + | ||
8351 | +workbox-cacheable-response@^6.0.2: | ||
8352 | + version "6.0.2" | ||
8353 | + resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.0.2.tgz#00b1133c4c846a2874f32ae14206c0636bacfd87" | ||
8354 | + integrity sha512-OrgFiYWkmFXDIbNRYSu+fchcfoZqyJ4yZbdc8WKUjr9v/MghKHfR9u7UI077xBkjno5J3YNpbwx73/no3HkrzA== | ||
8355 | + dependencies: | ||
8356 | + workbox-core "^6.0.2" | ||
8357 | + | ||
8358 | +workbox-core@^6.0.2: | ||
8359 | + version "6.0.2" | ||
8360 | + resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-6.0.2.tgz#2f865cfe633890b4210fd6d6fdb049a6daed0914" | ||
8361 | + integrity sha512-Ksl6qeikGb+BOCILoCUJGxwlEQOeeqdpOnpOr9UDt3NtacPYbfYBmpYpKArw5DFWK+5geBsFqgUUlXThlCYfKQ== | ||
8362 | + | ||
8363 | +workbox-expiration@^6.0.2: | ||
8364 | + version "6.0.2" | ||
8365 | + resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.0.2.tgz#ac01e8d17f48daa31dc0872c09ee6f4d2cf28ccb" | ||
8366 | + integrity sha512-6+nbR18cklAdI3BPT675ytftXPwnVbXGR8mPWNWTJtl5y2urRYv56ZOJLD7FBFVkZ8EjWiRhNP/A0fkxgdKtWQ== | ||
8367 | + dependencies: | ||
8368 | + workbox-core "^6.0.2" | ||
8369 | + | ||
8370 | +workbox-google-analytics@^6.0.2: | ||
8371 | + version "6.0.2" | ||
8372 | + resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.0.2.tgz#7e3641adb30a3acb25006b244035631cf6f65019" | ||
8373 | + integrity sha512-xmYJurR1M6Pzc2SBM/E7AgwmBszhu/YYDzBnU+HJPZFLbTG97ASIJyTXV1vcczA/dNaS0miIf0cFqneozVlDRw== | ||
8374 | + dependencies: | ||
8375 | + workbox-background-sync "^6.0.2" | ||
8376 | + workbox-core "^6.0.2" | ||
8377 | + workbox-routing "^6.0.2" | ||
8378 | + workbox-strategies "^6.0.2" | ||
8379 | + | ||
8380 | +workbox-navigation-preload@^6.0.2: | ||
8381 | + version "6.0.2" | ||
8382 | + resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.0.2.tgz#bfd9c61096be921b830153a3004b7212220748dc" | ||
8383 | + integrity sha512-7+ojLrjXmTFZBfGmUQIcBWB+xrFgXLMJGNQAtxT7Ta9A23rEWo8jqAgeuwAylebcORUlM+ztgYTV7eGp+AD+Yg== | ||
8384 | + dependencies: | ||
8385 | + workbox-core "^6.0.2" | ||
8386 | + | ||
8387 | +workbox-precaching@^6.0.2: | ||
8388 | + version "6.0.2" | ||
8389 | + resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.0.2.tgz#cb45f290b0604bef1d9fc96bf42df82385d54e54" | ||
8390 | + integrity sha512-sqKWL2emzmGnfJpna+9RjUkUiqQO++AKfwljCbgkHg8wBbVLy/rnui3eelKgAI7D8R31LJFfiZkY/kXmwkjtlQ== | ||
8391 | + dependencies: | ||
8392 | + workbox-core "^6.0.2" | ||
8393 | + workbox-routing "^6.0.2" | ||
8394 | + workbox-strategies "^6.0.2" | ||
8395 | + | ||
8396 | +workbox-range-requests@^6.0.2: | ||
8397 | + version "6.0.2" | ||
8398 | + resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.0.2.tgz#3b50cbe8ddaaed7e3bfaa2dfdcd6a22e02fe7770" | ||
8399 | + integrity sha512-qCrDbH9AzDbCErde71Nys2iNZO9I9M9Jgl/9/Q67dGQVwFsEq73SuIzS2DGIBKqtIdC5QUigC3d7XJONajclUQ== | ||
8400 | + dependencies: | ||
8401 | + workbox-core "^6.0.2" | ||
8402 | + | ||
8403 | +workbox-recipes@^6.0.2: | ||
8404 | + version "6.0.2" | ||
8405 | + resolved "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.0.2.tgz#ad4b3f26a71a7396004c4f617af318f3fd072208" | ||
8406 | + integrity sha512-ewZIHO4jYE6bnEeUIYS6joQy3l+MydpOsVr2F6EpE8ps++z1ScbSdLtJU+yu6WuO3lH44HFZLeFxYQqYm50QAA== | ||
8407 | + dependencies: | ||
8408 | + workbox-cacheable-response "^6.0.2" | ||
8409 | + workbox-core "^6.0.2" | ||
8410 | + workbox-expiration "^6.0.2" | ||
8411 | + workbox-precaching "^6.0.2" | ||
8412 | + workbox-routing "^6.0.2" | ||
8413 | + workbox-strategies "^6.0.2" | ||
8414 | + | ||
8415 | +workbox-routing@^6.0.2: | ||
8416 | + version "6.0.2" | ||
8417 | + resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.0.2.tgz#8380bc322a2b1c44978df8ff6ae4e4d723f4e3f8" | ||
8418 | + integrity sha512-iQ9ch3fL1YpztDLfHNURaHQ0ispgPCdzWmZZhtSHUyy/+YkTlIiDVTbOQCIpHIrWlKQiim6X3K2ItIy1FW9+wA== | ||
8419 | + dependencies: | ||
8420 | + workbox-core "^6.0.2" | ||
8421 | + | ||
8422 | +workbox-strategies@^6.0.2: | ||
8423 | + version "6.0.2" | ||
8424 | + resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.0.2.tgz#f4383e2e5d46c1546e6e08048c9f5c9a7beb5137" | ||
8425 | + integrity sha512-HjLnYCVS60U7OKhl5NIq8NAQXrotJQRDakmIONnRlQIlP2If/kAiQSUP3QCHMq4EeXGiF+/CdlR1/bhYBHZzZg== | ||
8426 | + dependencies: | ||
8427 | + workbox-core "^6.0.2" | ||
8428 | + | ||
8429 | +workbox-streams@^6.0.2: | ||
8430 | + version "6.0.2" | ||
8431 | + resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.0.2.tgz#07c19025af309ad3475e737018a05ed538bffacd" | ||
8432 | + integrity sha512-bckftu/iMlg5LFXPZ6NX/FUc/w4illgxSuwtsZkQAO6Uen1EeegjfLyenO01/dwoyc3D/AlZepMdhv87XhE7HQ== | ||
8433 | + dependencies: | ||
8434 | + workbox-core "^6.0.2" | ||
8435 | + workbox-routing "^6.0.2" | ||
8436 | + | ||
8437 | +workbox-sw@^6.0.2: | ||
8438 | + version "6.0.2" | ||
8439 | + resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.0.2.tgz#cd1b8b02ceaaf1abe5804936158a87ec605d271e" | ||
8440 | + integrity sha512-EoOjbyy5bpoBoSqt2PIeDOZ/JJ41f+WJjb979PkfIUWw4F+F/w2uKJJrMA5fk+nWnVge83Fwy8nF3dWNsqOrdg== | ||
8441 | + | ||
8442 | +workbox-window@^6.0.2: | ||
8443 | + version "6.0.2" | ||
8444 | + resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-6.0.2.tgz#9b47fdb7c088aa4e8b7d0c6cfda17c8bfca6bf7f" | ||
8445 | + integrity sha512-I/X+qUh1AwN9x/MxFbXsPn7DA27BMtzkXo55w1tBD8V54fv8nUCeC5E4RpXt/mlgdSwBztnURCQTWsdhTrSUjg== | ||
8446 | + dependencies: | ||
8447 | + workbox-core "^6.0.2" | ||
8497 | 8448 | ||
8498 | wrap-ansi@^5.1.0: | 8449 | wrap-ansi@^5.1.0: |
8499 | version "5.1.0" | 8450 | version "5.1.0" |