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"