diff --git a/app/helpers/admin-page-helper.php b/app/helpers/admin-page-helper.php index 7b7a8fe..daac685 100644 --- a/app/helpers/admin-page-helper.php +++ b/app/helpers/admin-page-helper.php @@ -79,6 +79,8 @@ class AdminPageHelper extends ViteHelper public function enqueue_common_scripts() { + wp_enqueue_media(); + wp_enqueue_style('style.css', get_template_directory_uri() . '/style.css'); wp_enqueue_style('fontawesome-free', 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.3/css/all.min.css'); diff --git a/package.json b/package.json index e3466a8..67f3e56 100644 --- a/package.json +++ b/package.json @@ -30,12 +30,16 @@ "@formatjs/intl": "^1.13.2", "@material/button": "^12.0.0-canary.068fd5028.0", "@material/card": "^12.0.0-canary.068fd5028.0", + "@material/checkbox": "^12.0.0-canary.e1703bed9.0", "@material/chips": "^12.0.0-canary.068fd5028.0", "@material/dialog": "^12.0.0-canary.068fd5028.0", "@material/elevation": "^12.0.0-canary.068fd5028.0", + "@material/form-field": "^12.0.0-canary.e1703bed9.0", "@material/list": "^12.0.0-canary.068fd5028.0", "@material/menu": "^12.0.0-canary.068fd5028.0", + "@material/radio": "^12.0.0-canary.9f68a932e.0", "@material/ripple": "^12.0.0-canary.068fd5028.0", + "@material/switch": "^12.0.0-canary.9f68a932e.0", "@material/tab-bar": "^12.0.0-canary.22d29cbb4.0", "@material/textfield": "^12.0.0-canary.068fd5028.0", "@material/theme": "^12.0.0-canary.068fd5028.0", @@ -95,7 +99,8 @@ "vite": "^2.4.2", "vite-plugin-svgicon": "^1.0.0-alpha.0", "vue-jest": "^5.0.0-alpha.10", - "vue-tsc": "^0.2.0" + "vue-tsc": "^0.2.0", + "wp-types": "^2.10.0" }, "engines": { "npm": "please-use-yarn", diff --git a/src/admin/Core.vue b/src/admin/Core.vue index f562c01..4635ac0 100644 --- a/src/admin/Core.vue +++ b/src/admin/Core.vue @@ -16,32 +16,49 @@ v-for="(tabKey, tabKeyIndex) in tabKeys" :key="tabKeyIndex" > -
-

{{ options[tabKey].title }}

+
+

{{ options[tabKey].title }}

+

{{ options[tabKey].desc }}

- {{ option.namespace }} +
+
+ + + +
+ + diff --git a/src/admin/README.md b/src/admin/README.md deleted file mode 100644 index 965b49f..0000000 --- a/src/admin/README.md +++ /dev/null @@ -1 +0,0 @@ -# The admin's panel sub-project diff --git a/src/admin/components/MediaPicker.vue b/src/admin/components/MediaPicker.vue new file mode 100644 index 0000000..c372c59 --- /dev/null +++ b/src/admin/components/MediaPicker.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/src/admin/index.scss b/src/admin/index.scss index 4e4ff14..5e10920 100644 --- a/src/admin/index.scss +++ b/src/admin/index.scss @@ -2,13 +2,18 @@ @use '@material/elevation/mdc-elevation'; @use '@material/button/mdc-button'; @use "@material/textfield/mdc-text-field"; -@use '@material/chips/deprecated/mdc-chips'; -@use '@material/list/mdc-list'; +// @use '@material/chips/deprecated/mdc-chips'; +// @use '@material/list/mdc-list'; @use '@material/card/mdc-card'; -// local only @use "@material/tab-bar/mdc-tab-bar"; @use "@material/tab-scroller/mdc-tab-scroller"; @use "@material/tab-indicator/mdc-tab-indicator"; @use "@material/tab/mdc-tab"; -@use '@material/typography/mdc-typography'; +// @use '@material/typography/mdc-typography'; + +@use "@material/checkbox/mdc-checkbox"; +// @use "@material/form-field/mdc-form-field"; +@use "@material/radio/mdc-radio"; +// @use "@material/switch/deprecated/mdc-switch"; +@use '@material/switch/styles'; diff --git a/src/admin/options.ts b/src/admin/options.ts index 46e5698..7b61e09 100644 --- a/src/admin/options.ts +++ b/src/admin/options.ts @@ -1,11 +1,15 @@ export interface Options { [tag: string]: { title: string + desc?: string icon: string options: Array<{ namespace: string + title: string + desc?: string type: string default: any + binds?: { [key: string]: any } }> } } @@ -13,17 +17,87 @@ export interface Options { const options: Options = { basic: { title: 'Basic', + desc: 'The basic options', icon: 'fas fa-address-card', options: [ { namespace: 'basic.siteTitle', + title: 'Site title', + desc: 'The site title', type: 'string', default: 'Opps', }, { - namespace: 'basic.userName', - type: 'string', - default: 'Mashiro', + namespace: 'basic.switcher', + title: 'Switcher', + type: 'switcher', + default: true, + binds: { + positiveLabel: 'current on', + negativeLabel: 'current off', + disabled: false, + }, + }, + { + namespace: 'basic.chooseTest', + title: 'Choose Test', + desc: 'wooooo', + type: 'choose', + default: NaN, + binds: { + options: [ + { label: 'op 1', disabled: false }, + { label: 'op 2', disabled: false }, + { label: 'op 3', disabled: false }, + { label: 'op 4', disabled: true }, + ], + max: 2, + }, + }, + { + namespace: 'basic.optionsTest', + title: 'Option Test', + desc: 'wooooo', + type: 'selection', + default: [true, false, true], + binds: { + options: [ + { label: 'op 1', disabled: false }, + { label: 'op 2', disabled: false }, + { label: 'op 3', disabled: false }, + { label: 'op 4', disabled: true }, + ], + max: 2, + }, + }, + { + namespace: 'basic.longString', + title: 'Long string', + desc: 'A long string', + type: 'longString', + default: 'Opps', + }, + { + namespace: 'basic.mediaPicker', + title: 'Image picker', + desc: 'Media picker', + type: 'mediaPicker', + default: [ + { + id: 0, + url: 'https://view.moezx.cc/images/2021/07/02/d5ab73174d18652d890e2f4d1b9bef8f.gif', + }, + { + id: 0, + url: 'https://view.moezx.cc/images/2021/07/02/a90553bf5b67770e87a89b2ce204eaa7.gif', + }, + ], + binds: { + title: 'Select Media', + button: 'Use this media', + type: 'image', + multiple: true, + }, }, ], }, @@ -31,8 +105,14 @@ const options: Options = { title: 'Social', icon: 'fas fa-users', options: [ - { namespace: 'social.github', type: 'string', default: 'mashirozx' }, - { namespace: 'social.weibo', type: 'string', default: 'mashirozx' }, + { + namespace: 'social.github', + title: 'Github username', + desc: 'Your Github username', + type: 'string', + default: 'mashirozx', + }, + { namespace: 'social.weibo', title: 'Weibo username', type: 'string', default: 'mashirozx' }, ], }, other: { @@ -41,6 +121,7 @@ const options: Options = { options: [ { namespace: 'other.hello', + title: 'Hello world', type: 'string', default: 'world', }, diff --git a/src/admin/store.ts b/src/admin/store.ts index 2804224..bb95fb2 100644 --- a/src/admin/store.ts +++ b/src/admin/store.ts @@ -35,5 +35,5 @@ export default function auth(): object { // return data // } - return { config, setConfig } + return { config, updateOption } } diff --git a/src/admin/validator.ts b/src/admin/validator.ts new file mode 100644 index 0000000..28e314c --- /dev/null +++ b/src/admin/validator.ts @@ -0,0 +1,20 @@ +import logger from '@/utils/logger' +export default function validator(value: T, type: string): { pass: boolean; msg?: string } { + switch (type) { + case 'string': + case 'longString': + return { pass: typeof value === 'string' } + case 'choose': + return { pass: typeof value === 'number' } + case 'switcher': + return { pass: typeof value === 'boolean' } + case 'selection': + return { pass: value instanceof Array } + case 'mediaPicker': + return { pass: value instanceof Array } + default: + const msg = `No such type ${type}` + logger('error', msg) + return { pass: false, msg } + } +} diff --git a/src/components/checkbox/Checkbox.vue b/src/components/checkbox/Checkbox.vue new file mode 100644 index 0000000..693703f --- /dev/null +++ b/src/components/checkbox/Checkbox.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/src/components/checkbox/Selection.vue b/src/components/checkbox/Selection.vue new file mode 100644 index 0000000..834d87d --- /dev/null +++ b/src/components/checkbox/Selection.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/components/inputs/OutlinedInput.vue b/src/components/inputs/OutlinedInput.vue index ff1bfed..f57328f 100644 --- a/src/components/inputs/OutlinedInput.vue +++ b/src/components/inputs/OutlinedInput.vue @@ -3,6 +3,7 @@ :class="[ 'mdc-text-field', 'mdc-text-field--outlined', + { 'mdc-text-field--no-label': !$props.label }, { 'mdc-text-field--with-leading-icon': $props.leadingIcon }, { 'mdc-text-field--with-trailing-icon': $props.trailingIcon }, ]" @@ -10,7 +11,7 @@ > - + {{ $props.label }} @@ -37,8 +38,9 @@ diff --git a/src/components/radio/RadioButton.vue b/src/components/radio/RadioButton.vue new file mode 100644 index 0000000..a97ff92 --- /dev/null +++ b/src/components/radio/RadioButton.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/components/switcher/Switcher.vue b/src/components/switcher/Switcher.vue new file mode 100644 index 0000000..4607585 --- /dev/null +++ b/src/components/switcher/Switcher.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/src/components/tabBar/TabBar.vue b/src/components/tabBar/TabBar.vue index 3a29eae..1e5b353 100644 --- a/src/components/tabBar/TabBar.vue +++ b/src/components/tabBar/TabBar.vue @@ -33,7 +33,8 @@ import { defineComponent, onMounted, watch } from 'vue' import { useState } from '@/hooks' import { MD5 } from 'crypto-js' -import { useElementRef, useMDCTabBar } from '@/hooks' +import { useElementRef } from '@/hooks' +import useMDCTabBar from '@/hooks/mdc/useMDCTabBar' export default defineComponent({ props: { diff --git a/src/hooks/index.ts b/src/hooks/index.ts index 2f8c1aa..cc0b8ea 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -7,7 +7,7 @@ import useResizeObserver from './useResizeObserver' import useReachElementSide from './useReachElementSide' import { useElementRef, useElementRefs } from './useElementRef' import useOffsetDistance from './useOffsetDistance' -import { useMDCRipple, useMDCDialog, useMDCTextField, useMDCTabBar } from './mdc' +import useMDCRipple from './mdc/useMDCRipple' export { useState, @@ -22,9 +22,6 @@ export { useWindowResize, useResizeObserver, useMDCRipple, - useMDCDialog, - useMDCTextField, - useMDCTabBar, useReachElementSide, useElementRef, useElementRefs, diff --git a/src/hooks/mdc.ts b/src/hooks/mdc.ts deleted file mode 100644 index 7c20514..0000000 --- a/src/hooks/mdc.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { ref, Ref, watch, onBeforeUnmount } from 'vue' -import { MDCRipple } from '@material/ripple' -import { MDCDialog } from '@material/dialog' -import { MDCTextField } from '@material/textfield' -import { MDCTabBar } from '@material/tab-bar' - -export const useMDCRipple = ( - elementRef: El extends Element ? Element : Ref, - unbounded = false -) => { - const rippleRef: Ref = ref(null) - - if (elementRef instanceof Element) { - rippleRef.value = new MDCRipple(elementRef) - } else { - watch(elementRef, (element) => { - if (element) { - rippleRef.value = new MDCRipple(element) - if (unbounded) rippleRef.value.unbounded = true - } - }) - } - - onBeforeUnmount(() => { - rippleRef.value?.destroy() - }) - - return rippleRef -} - -export const useMDCDialog = ( - elementRef: El extends Element ? Element : Ref -) => { - const dialogRef: Ref = ref(null) - - if (elementRef instanceof Element) { - dialogRef.value = new MDCDialog(elementRef) - } else { - watch(elementRef, (element) => { - if (element) { - dialogRef.value = new MDCDialog(element) - } - }) - } - - onBeforeUnmount(() => { - dialogRef.value?.destroy() - }) - - return dialogRef -} - -export const useMDCTextField = ( - elementRef: El extends Element ? Element : Ref -) => { - const textFieldRef: Ref = ref(null) - - if (elementRef instanceof Element) { - textFieldRef.value = new MDCTextField(elementRef) - } else { - watch(elementRef, (element) => { - if (element) { - textFieldRef.value = new MDCTextField(element) - } - }) - } - - onBeforeUnmount(() => { - textFieldRef.value?.destroy() - }) - - return textFieldRef -} - -export const useMDCTabBar = ( - elementRef: El extends Element ? Element : Ref -) => { - const tabBarRef: Ref = ref(null) - - if (elementRef instanceof Element) { - tabBarRef.value = new MDCTabBar(elementRef) - } else { - watch(elementRef, (element) => { - if (element) { - tabBarRef.value = new MDCTabBar(element) - } - }) - } - - onBeforeUnmount(() => { - tabBarRef.value?.destroy() - }) - - return tabBarRef -} diff --git a/src/hooks/mdc/useMDCCheckbox.ts b/src/hooks/mdc/useMDCCheckbox.ts new file mode 100644 index 0000000..cc7b1f2 --- /dev/null +++ b/src/hooks/mdc/useMDCCheckbox.ts @@ -0,0 +1,24 @@ +import { ref, Ref, watch, onBeforeUnmount } from 'vue' +import { MDCCheckbox } from '@material/checkbox' + +const useMDCCheckbox = (elementRef: El extends Element ? Element : Ref) => { + const mdcRef: Ref = ref(null) + + if (elementRef instanceof Element) { + mdcRef.value = new MDCCheckbox(elementRef) + } else { + watch(elementRef, (element) => { + if (element) { + mdcRef.value = new MDCCheckbox(element) + } + }) + } + + onBeforeUnmount(() => { + mdcRef.value?.destroy() + }) + + return mdcRef +} + +export default useMDCCheckbox diff --git a/src/hooks/mdc/useMDCDialog.ts b/src/hooks/mdc/useMDCDialog.ts new file mode 100644 index 0000000..27b04a5 --- /dev/null +++ b/src/hooks/mdc/useMDCDialog.ts @@ -0,0 +1,24 @@ +import { ref, Ref, watch, onBeforeUnmount } from 'vue' +import { MDCDialog } from '@material/dialog' + +const useMDCDialog = (elementRef: El extends Element ? Element : Ref) => { + const mdcRef: Ref = ref(null) + + if (elementRef instanceof Element) { + mdcRef.value = new MDCDialog(elementRef) + } else { + watch(elementRef, (element) => { + if (element) { + mdcRef.value = new MDCDialog(element) + } + }) + } + + onBeforeUnmount(() => { + mdcRef.value?.destroy() + }) + + return mdcRef +} + +export default useMDCDialog diff --git a/src/hooks/mdc/useMDCRadio.ts b/src/hooks/mdc/useMDCRadio.ts new file mode 100644 index 0000000..37c0453 --- /dev/null +++ b/src/hooks/mdc/useMDCRadio.ts @@ -0,0 +1,24 @@ +import { ref, Ref, watch, onBeforeUnmount } from 'vue' +import { MDCRadio } from '@material/radio' + +const useMDCRadio = (elementRef: El extends Element ? Element : Ref) => { + const mdcRef: Ref = ref(null) + + if (elementRef instanceof Element) { + mdcRef.value = new MDCRadio(elementRef) + } else { + watch(elementRef, (element) => { + if (element) { + mdcRef.value = new MDCRadio(element) + } + }) + } + + onBeforeUnmount(() => { + mdcRef.value?.destroy() + }) + + return mdcRef +} + +export default useMDCRadio diff --git a/src/hooks/mdc/useMDCRipple.ts b/src/hooks/mdc/useMDCRipple.ts new file mode 100644 index 0000000..d00604a --- /dev/null +++ b/src/hooks/mdc/useMDCRipple.ts @@ -0,0 +1,28 @@ +import { ref, Ref, watch, onBeforeUnmount } from 'vue' +import { MDCRipple } from '@material/ripple' + +const useMDCRipple = ( + elementRef: El extends Element ? Element : Ref, + unbounded = false +) => { + const rippleRef: Ref = ref(null) + + if (elementRef instanceof Element) { + rippleRef.value = new MDCRipple(elementRef) + } else { + watch(elementRef, (element) => { + if (element) { + rippleRef.value = new MDCRipple(element) + if (unbounded) rippleRef.value.unbounded = true + } + }) + } + + onBeforeUnmount(() => { + rippleRef.value?.destroy() + }) + + return rippleRef +} + +export default useMDCRipple diff --git a/src/hooks/mdc/useMDCSwitch.ts b/src/hooks/mdc/useMDCSwitch.ts new file mode 100644 index 0000000..62fe70b --- /dev/null +++ b/src/hooks/mdc/useMDCSwitch.ts @@ -0,0 +1,24 @@ +import { ref, Ref, watch, onBeforeUnmount } from 'vue' +import { MDCSwitch } from '@material/switch' + +const useMDCSwitch = (elementRef: El extends Element ? Element : Ref) => { + const mdcRef: Ref = ref(null) + + if (elementRef instanceof Element) { + mdcRef.value = new MDCSwitch(elementRef as HTMLButtonElement) + } else { + watch(elementRef, (element) => { + if (element) { + mdcRef.value = new MDCSwitch(element as HTMLButtonElement) + } + }) + } + + onBeforeUnmount(() => { + mdcRef.value?.destroy() + }) + + return mdcRef +} + +export default useMDCSwitch diff --git a/src/hooks/mdc/useMDCTabBar.ts b/src/hooks/mdc/useMDCTabBar.ts new file mode 100644 index 0000000..3ef06e1 --- /dev/null +++ b/src/hooks/mdc/useMDCTabBar.ts @@ -0,0 +1,24 @@ +import { ref, Ref, watch, onBeforeUnmount } from 'vue' +import { MDCTabBar } from '@material/tab-bar' + +const useMDCTabBar = (elementRef: El extends Element ? Element : Ref) => { + const tabBarRef: Ref = ref(null) + + if (elementRef instanceof Element) { + tabBarRef.value = new MDCTabBar(elementRef) + } else { + watch(elementRef, (element) => { + if (element) { + tabBarRef.value = new MDCTabBar(element) + } + }) + } + + onBeforeUnmount(() => { + tabBarRef.value?.destroy() + }) + + return tabBarRef +} + +export default useMDCTabBar diff --git a/src/hooks/mdc/useMDCTextField.ts b/src/hooks/mdc/useMDCTextField.ts new file mode 100644 index 0000000..4057654 --- /dev/null +++ b/src/hooks/mdc/useMDCTextField.ts @@ -0,0 +1,24 @@ +import { ref, Ref, watch, onBeforeUnmount } from 'vue' +import { MDCTextField } from '@material/textfield' + +const useMDCTextField = (elementRef: El extends Element ? Element : Ref) => { + const textFieldRef: Ref = ref(null) + + if (elementRef instanceof Element) { + textFieldRef.value = new MDCTextField(elementRef) + } else { + watch(elementRef, (element) => { + if (element) { + textFieldRef.value = new MDCTextField(element) + } + }) + } + + onBeforeUnmount(() => { + textFieldRef.value?.destroy() + }) + + return textFieldRef +} + +export default useMDCTextField diff --git a/src/utils/uniqueHash.ts b/src/utils/uniqueHash.ts new file mode 100644 index 0000000..6304df7 --- /dev/null +++ b/src/utils/uniqueHash.ts @@ -0,0 +1,5 @@ +import { MD5 } from 'crypto-js' + +export default function () { + return MD5(Math.random().toString()).toString().slice(0, 8) +} diff --git a/src/utils/urlHelper.ts b/src/utils/urlHelper.ts new file mode 100644 index 0000000..00fe9d6 --- /dev/null +++ b/src/utils/urlHelper.ts @@ -0,0 +1,13 @@ +export const isUrl = (url: string): { state: boolean; msg?: any } => { + try { + new URL(url) + } catch (error) { + return { + state: false, + msg: error, + } + } + return { + state: true, + } +} diff --git a/yarn.lock b/yarn.lock index d14c2fb..0efcb3a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -685,6 +685,20 @@ dependencies: tslib "^2.1.0" +"@material/animation@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/animation/download/@material/animation-12.0.0-canary.9f68a932e.0.tgz#8deafa2e91db38d4f4ec4303c1eeba8a7e6b1586" + integrity sha1-jer6LpHbONT07EMDwe66in5rFYY= + dependencies: + tslib "^2.1.0" + +"@material/animation@12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/animation/download/@material/animation-12.0.0-canary.e1703bed9.0.tgz#d3f758c0ae65223b9459cfc3c35cd1313bb377bc" + integrity sha1-0/dYwK5lIjuUWc/Dw1zRMTuzd7w= + dependencies: + tslib "^2.1.0" + "@material/base@12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/base/download/@material/base-12.0.0-canary.068fd5028.0.tgz#ba4403e153550bfd44c6f4d74af27c43be94b23b" @@ -699,6 +713,20 @@ dependencies: tslib "^2.1.0" +"@material/base@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/base/download/@material/base-12.0.0-canary.9f68a932e.0.tgz#416b1ea1646de2585b9f6334b721eb32f27e1b62" + integrity sha1-QWseoWRt4lhbn2M0tyHrMvJ+G2I= + dependencies: + tslib "^2.1.0" + +"@material/base@12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/base/download/@material/base-12.0.0-canary.e1703bed9.0.tgz#b516620d7217a18955e694589c230d536ec04acd" + integrity sha1-tRZiDXIXoYlV5pRYnCMNU27ASs0= + dependencies: + tslib "^2.1.0" + "@material/button@12.0.0-canary.068fd5028.0", "@material/button@^12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/button/download/@material/button-12.0.0-canary.068fd5028.0.tgz#dea53b2914e4bd48c94fd8d6c3915c377ff6a326" @@ -745,6 +773,21 @@ "@material/touch-target" "12.0.0-canary.068fd5028.0" tslib "^2.1.0" +"@material/checkbox@^12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/checkbox/download/@material/checkbox-12.0.0-canary.e1703bed9.0.tgz#97956408491070c2ffdf1bb718af23a35b5370c0" + integrity sha1-l5VkCEkQcML/3xu3GK8jo1tTcMA= + dependencies: + "@material/animation" "12.0.0-canary.e1703bed9.0" + "@material/base" "12.0.0-canary.e1703bed9.0" + "@material/density" "12.0.0-canary.e1703bed9.0" + "@material/dom" "12.0.0-canary.e1703bed9.0" + "@material/feature-targeting" "12.0.0-canary.e1703bed9.0" + "@material/ripple" "12.0.0-canary.e1703bed9.0" + "@material/theme" "12.0.0-canary.e1703bed9.0" + "@material/touch-target" "12.0.0-canary.e1703bed9.0" + tslib "^2.1.0" + "@material/chips@^12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/chips/download/@material/chips-12.0.0-canary.068fd5028.0.tgz#92f1f6fa3aef8906a34b3fe9e3f351861d0ab6df" @@ -779,6 +822,20 @@ dependencies: tslib "^2.1.0" +"@material/density@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/density/download/@material/density-12.0.0-canary.9f68a932e.0.tgz#e1aba9fb3242c3e94223700da4cbf6178bfe3170" + integrity sha1-4aup+zJCw+lCI3ANpMv2F4v+MXA= + dependencies: + tslib "^2.1.0" + +"@material/density@12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/density/download/@material/density-12.0.0-canary.e1703bed9.0.tgz#6f73f9a73dbc607c20f06a4dfa69bc041fac9a31" + integrity sha1-b3P5pz28YHwg8GpN+mm8BB+smjE= + dependencies: + tslib "^2.1.0" + "@material/dialog@^12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/dialog/download/@material/dialog-12.0.0-canary.068fd5028.0.tgz#ad0990c32b4c3538ce469297ca2b7f1f71abc84a" @@ -815,6 +872,22 @@ "@material/feature-targeting" "12.0.0-canary.22d29cbb4.0" tslib "^2.1.0" +"@material/dom@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/dom/download/@material/dom-12.0.0-canary.9f68a932e.0.tgz#e9baf1e7622cad75689245a703165e7d3c3eb16b" + integrity sha1-6brx52IsrXVokkWnAxZefTw+sWs= + dependencies: + "@material/feature-targeting" "12.0.0-canary.9f68a932e.0" + tslib "^2.1.0" + +"@material/dom@12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/dom/download/@material/dom-12.0.0-canary.e1703bed9.0.tgz#46fddbf9a0171409f144d5df618a4fc3887cc432" + integrity sha1-Rv3b+aAXFAnxRNXfYYpPw4h8xDI= + dependencies: + "@material/feature-targeting" "12.0.0-canary.e1703bed9.0" + tslib "^2.1.0" + "@material/elevation@12.0.0-canary.068fd5028.0", "@material/elevation@^12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/elevation/download/@material/elevation-12.0.0-canary.068fd5028.0.tgz#0c670ae52c8f83491b06e31c95917c7ea37ca9ea" @@ -837,6 +910,17 @@ "@material/theme" "12.0.0-canary.22d29cbb4.0" tslib "^2.1.0" +"@material/elevation@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/elevation/download/@material/elevation-12.0.0-canary.9f68a932e.0.tgz#3bd2d5b30b27e43f5f4d822abe0693e52c6ce297" + integrity sha1-O9LVswsn5D9fTYIqvgaT5Sxs4pc= + dependencies: + "@material/animation" "12.0.0-canary.9f68a932e.0" + "@material/base" "12.0.0-canary.9f68a932e.0" + "@material/feature-targeting" "12.0.0-canary.9f68a932e.0" + "@material/theme" "12.0.0-canary.9f68a932e.0" + tslib "^2.1.0" + "@material/feature-targeting@12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/feature-targeting/download/@material/feature-targeting-12.0.0-canary.068fd5028.0.tgz#e043d1f549bfd1a6e647486a354dcb7b04c7afb3" @@ -851,6 +935,20 @@ dependencies: tslib "^2.1.0" +"@material/feature-targeting@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/feature-targeting/download/@material/feature-targeting-12.0.0-canary.9f68a932e.0.tgz#8ec6b30b59558f8a84f63aa00dd2ce870ff6844c" + integrity sha1-jsazC1lVj4qE9jqgDdLOhw/2hEw= + dependencies: + tslib "^2.1.0" + +"@material/feature-targeting@12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/feature-targeting/download/@material/feature-targeting-12.0.0-canary.e1703bed9.0.tgz#ce6d8a3111c1b20ecaab13c73c975fa8bd9d59b6" + integrity sha1-zm2KMRHBsg7KqxPHPJdfqL2dWbY= + dependencies: + tslib "^2.1.0" + "@material/floating-label@12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/floating-label/download/@material/floating-label-12.0.0-canary.068fd5028.0.tgz#db76cda2d1de4482ddca5df854e1c1e5efe73ac5" @@ -865,6 +963,19 @@ "@material/typography" "12.0.0-canary.068fd5028.0" tslib "^2.1.0" +"@material/form-field@^12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/form-field/download/@material/form-field-12.0.0-canary.e1703bed9.0.tgz#82788ff08eeed0494598bde00b73992f14c7a585" + integrity sha1-gniP8I7u0ElFmL3gC3OZLxTHpYU= + dependencies: + "@material/base" "12.0.0-canary.e1703bed9.0" + "@material/feature-targeting" "12.0.0-canary.e1703bed9.0" + "@material/ripple" "12.0.0-canary.e1703bed9.0" + "@material/rtl" "12.0.0-canary.e1703bed9.0" + "@material/theme" "12.0.0-canary.e1703bed9.0" + "@material/typography" "12.0.0-canary.e1703bed9.0" + tslib "^2.1.0" + "@material/icon-button@12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/icon-button/download/@material/icon-button-12.0.0-canary.068fd5028.0.tgz#eccd2bc14fd984817ae090e9c09433b1e94e1f46" @@ -949,6 +1060,21 @@ "@material/theme" "12.0.0-canary.068fd5028.0" tslib "^2.1.0" +"@material/radio@^12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/radio/download/@material/radio-12.0.0-canary.9f68a932e.0.tgz#8c329ccb1057aafff079cf28a2efeb01d341d156" + integrity sha1-jDKcyxBXqv/wec8oou/rAdNB0VY= + dependencies: + "@material/animation" "12.0.0-canary.9f68a932e.0" + "@material/base" "12.0.0-canary.9f68a932e.0" + "@material/density" "12.0.0-canary.9f68a932e.0" + "@material/dom" "12.0.0-canary.9f68a932e.0" + "@material/feature-targeting" "12.0.0-canary.9f68a932e.0" + "@material/ripple" "12.0.0-canary.9f68a932e.0" + "@material/theme" "12.0.0-canary.9f68a932e.0" + "@material/touch-target" "12.0.0-canary.9f68a932e.0" + tslib "^2.1.0" + "@material/ripple@12.0.0-canary.068fd5028.0", "@material/ripple@^12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/ripple/download/@material/ripple-12.0.0-canary.068fd5028.0.tgz#e1570b1e45b47bdb6166198abb47236bce3be689" @@ -973,6 +1099,30 @@ "@material/theme" "12.0.0-canary.22d29cbb4.0" tslib "^2.1.0" +"@material/ripple@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/ripple/download/@material/ripple-12.0.0-canary.9f68a932e.0.tgz#cd923b2560250698215775cd67bd446b6a5e5e9b" + integrity sha1-zZI7JWAlBpghV3XNZ71Ea2peXps= + dependencies: + "@material/animation" "12.0.0-canary.9f68a932e.0" + "@material/base" "12.0.0-canary.9f68a932e.0" + "@material/dom" "12.0.0-canary.9f68a932e.0" + "@material/feature-targeting" "12.0.0-canary.9f68a932e.0" + "@material/theme" "12.0.0-canary.9f68a932e.0" + tslib "^2.1.0" + +"@material/ripple@12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/ripple/download/@material/ripple-12.0.0-canary.e1703bed9.0.tgz#2fc99d599b4d4fc67834e62e3abc06719a561652" + integrity sha1-L8mdWZtNT8Z4NOYuOrwGcZpWFlI= + dependencies: + "@material/animation" "12.0.0-canary.e1703bed9.0" + "@material/base" "12.0.0-canary.e1703bed9.0" + "@material/dom" "12.0.0-canary.e1703bed9.0" + "@material/feature-targeting" "12.0.0-canary.e1703bed9.0" + "@material/theme" "12.0.0-canary.e1703bed9.0" + tslib "^2.1.0" + "@material/rtl@12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/rtl/download/@material/rtl-12.0.0-canary.068fd5028.0.tgz#e7a24ffdc7ef2419433a29c9fed4a0bd79e9086b" @@ -989,6 +1139,22 @@ "@material/theme" "12.0.0-canary.22d29cbb4.0" tslib "^2.1.0" +"@material/rtl@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/rtl/download/@material/rtl-12.0.0-canary.9f68a932e.0.tgz#268bff8f0d9d6eb43803269ecd401b5a7e69c909" + integrity sha1-Jov/jw2dbrQ4AyaezUAbWn5pyQk= + dependencies: + "@material/theme" "12.0.0-canary.9f68a932e.0" + tslib "^2.1.0" + +"@material/rtl@12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/rtl/download/@material/rtl-12.0.0-canary.e1703bed9.0.tgz#52c0a7b09ce2dc52cac5df126e56be36ef8557fa" + integrity sha1-UsCnsJzi3FLKxd8Sbla+Nu+FV/o= + dependencies: + "@material/theme" "12.0.0-canary.e1703bed9.0" + tslib "^2.1.0" + "@material/shape@12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/shape/download/@material/shape-12.0.0-canary.068fd5028.0.tgz#e68f58979314a23a3486105a8f91482b8c8e9130" @@ -999,6 +1165,34 @@ "@material/theme" "12.0.0-canary.068fd5028.0" tslib "^2.1.0" +"@material/shape@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/shape/download/@material/shape-12.0.0-canary.9f68a932e.0.tgz#cb0466b1e8409c3c9e6143fe6d28d6d97d9ee11a" + integrity sha1-ywRmsehAnDyeYUP+bSjW2X2e4Ro= + dependencies: + "@material/feature-targeting" "12.0.0-canary.9f68a932e.0" + "@material/rtl" "12.0.0-canary.9f68a932e.0" + "@material/theme" "12.0.0-canary.9f68a932e.0" + tslib "^2.1.0" + +"@material/switch@^12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/switch/download/@material/switch-12.0.0-canary.9f68a932e.0.tgz#2089bcad64039c7d93917faa321392f5dd7dc5cd" + integrity sha1-IIm8rWQDnH2TkX+qMhOS9d19xc0= + dependencies: + "@material/animation" "12.0.0-canary.9f68a932e.0" + "@material/base" "12.0.0-canary.9f68a932e.0" + "@material/density" "12.0.0-canary.9f68a932e.0" + "@material/dom" "12.0.0-canary.9f68a932e.0" + "@material/elevation" "12.0.0-canary.9f68a932e.0" + "@material/feature-targeting" "12.0.0-canary.9f68a932e.0" + "@material/ripple" "12.0.0-canary.9f68a932e.0" + "@material/rtl" "12.0.0-canary.9f68a932e.0" + "@material/shape" "12.0.0-canary.9f68a932e.0" + "@material/theme" "12.0.0-canary.9f68a932e.0" + "@material/tokens" "12.0.0-canary.9f68a932e.0" + tslib "^2.1.0" + "@material/tab-bar@^12.0.0-canary.22d29cbb4.0": version "12.0.0-canary.22d29cbb4.0" resolved "https://registry.nlark.com/@material/tab-bar/download/@material/tab-bar-12.0.0-canary.22d29cbb4.0.tgz#294a67f387e80cccade1700ab15ae79d9faee394" @@ -1090,6 +1284,29 @@ "@material/feature-targeting" "12.0.0-canary.22d29cbb4.0" tslib "^2.1.0" +"@material/theme@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/theme/download/@material/theme-12.0.0-canary.9f68a932e.0.tgz#58cc520689b3c3c3a2852c42117376b0c363cf75" + integrity sha1-WMxSBomzw8OihSxCEXN2sMNjz3U= + dependencies: + "@material/feature-targeting" "12.0.0-canary.9f68a932e.0" + tslib "^2.1.0" + +"@material/theme@12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/theme/download/@material/theme-12.0.0-canary.e1703bed9.0.tgz#f898b0ba756c183219750776b3e13b91e5ed1de8" + integrity sha1-+JiwunVsGDIZdQd2s+E7keXtHeg= + dependencies: + "@material/feature-targeting" "12.0.0-canary.e1703bed9.0" + tslib "^2.1.0" + +"@material/tokens@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/tokens/download/@material/tokens-12.0.0-canary.9f68a932e.0.tgz#3e3b906ad0145c80fdca5b8e362939f177866b29" + integrity sha1-PjuQatAUXID9yluONik58XeGayk= + dependencies: + "@material/elevation" "12.0.0-canary.9f68a932e.0" + "@material/touch-target@12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/touch-target/download/@material/touch-target-12.0.0-canary.068fd5028.0.tgz#542c3fa5e729fe542c21a8668a5fdd820b05e415" @@ -1099,6 +1316,24 @@ "@material/feature-targeting" "12.0.0-canary.068fd5028.0" tslib "^2.1.0" +"@material/touch-target@12.0.0-canary.9f68a932e.0": + version "12.0.0-canary.9f68a932e.0" + resolved "https://registry.nlark.com/@material/touch-target/download/@material/touch-target-12.0.0-canary.9f68a932e.0.tgz#c8d4a5c292fbf0d6442fd31e4b6eb77915f94087" + integrity sha1-yNSlwpL78NZEL9MeS263eRX5QIc= + dependencies: + "@material/base" "12.0.0-canary.9f68a932e.0" + "@material/feature-targeting" "12.0.0-canary.9f68a932e.0" + tslib "^2.1.0" + +"@material/touch-target@12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/touch-target/download/@material/touch-target-12.0.0-canary.e1703bed9.0.tgz#2df8ab02cfe7cd5ddf951338c77ae5a890c78c8b" + integrity sha1-LfirAs/nzV3flRM4x3rlqJDHjIs= + dependencies: + "@material/base" "12.0.0-canary.e1703bed9.0" + "@material/feature-targeting" "12.0.0-canary.e1703bed9.0" + tslib "^2.1.0" + "@material/typography@12.0.0-canary.068fd5028.0", "@material/typography@^12.0.0-canary.068fd5028.0": version "12.0.0-canary.068fd5028.0" resolved "https://registry.nlark.com/@material/typography/download/@material/typography-12.0.0-canary.068fd5028.0.tgz#3a3e536239cd1e55eec9921229877ef9cde4f288" @@ -1117,6 +1352,15 @@ "@material/theme" "12.0.0-canary.22d29cbb4.0" tslib "^2.1.0" +"@material/typography@12.0.0-canary.e1703bed9.0": + version "12.0.0-canary.e1703bed9.0" + resolved "https://registry.nlark.com/@material/typography/download/@material/typography-12.0.0-canary.e1703bed9.0.tgz#f82960566f8afc7eafce0c60eda6fc60ef5e4839" + integrity sha1-+ClgVm+K/H6vzgxg7ab8YO9eSDk= + dependencies: + "@material/feature-targeting" "12.0.0-canary.e1703bed9.0" + "@material/theme" "12.0.0-canary.e1703bed9.0" + tslib "^2.1.0" + "@nodelib/fs.scandir@2.1.4": version "2.1.4" resolved "https://registry.npm.taobao.org/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.4.tgz?cache=0&sync_timestamp=1609074618762&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40nodelib%2Ffs.scandir%2Fdownload%2F%40nodelib%2Ffs.scandir-2.1.4.tgz" @@ -6699,7 +6943,7 @@ typescript-vscode-sh-plugin@^0.6.14: resolved "https://registry.nlark.com/typescript-vscode-sh-plugin/download/typescript-vscode-sh-plugin-0.6.14.tgz#a81031b502f6346a26ea49ce082438c3e353bb38" integrity sha1-qBAxtQL2NGom6knOCCQ4w+NTuzg= -typescript@^4.0, typescript@^4.3.5: +typescript@>=3, typescript@^4.0, typescript@^4.3.5: version "4.3.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== @@ -7392,6 +7636,13 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz?cache=0&sync_timestamp=1589683603678&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fword-wrap%2Fdownload%2Fword-wrap-1.2.3.tgz" integrity sha1-YQY29rH3A4kb00dxzLF/uTtHB5w= +wp-types@^2.10.0: + version "2.10.0" + resolved "https://registry.nlark.com/wp-types/download/wp-types-2.10.0.tgz#f816346d37026563fe97bf502d4a5da3397c60f9" + integrity sha1-+BY0bTcCZWP+l79QLUpdozl8YPk= + dependencies: + typescript ">=3" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"