diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..572d509
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,18 @@
+
+
+
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..c97eb38
--- /dev/null
+++ b/main.js
@@ -0,0 +1,33 @@
+import App from './App'
+
+import TnIcon from '@/uni_modules/tuniaoui-vue3/components/icon/src/icon.vue'
+import TnNavbar from '@/uni_modules/tuniaoui-vue3/components/navbar/src/navbar.vue'
+import TnButton from '@/uni_modules/tuniaoui-vue3/components/button/src/button.vue'
+import TnTitle from '@/uni_modules/tuniaoui-vue3/components/title/src/title.vue'
+
+// #ifndef VUE3
+import Vue from 'vue'
+import './uni.promisify.adaptor'
+Vue.config.productionTip = false
+App.mpType = 'app'
+const app = new Vue({
+ ...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import { createSSRApp } from 'vue'
+export function createApp() {
+ const app = createSSRApp(App)
+
+ app.component('TnIcon', TnIcon)
+ app.component('TnNavbar', TnNavbar)
+ app.component('TnButton', TnButton)
+ app.component('TnTitle', TnTitle)
+
+ return {
+ app
+ }
+}
+// #endif
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..49a6cfb
--- /dev/null
+++ b/package.json
@@ -0,0 +1,6 @@
+{
+ "dependencies": {
+ "crypto-js": "^4.2.0",
+ "dayjs": "^1.11.11"
+ }
+}
diff --git a/uni.promisify.adaptor.js b/uni.promisify.adaptor.js
new file mode 100644
index 0000000..47fbce1
--- /dev/null
+++ b/uni.promisify.adaptor.js
@@ -0,0 +1,10 @@
+uni.addInterceptor({
+ returnValue (res) {
+ if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
+ return res;
+ }
+ return new Promise((resolve, reject) => {
+ res.then((res) => res[0] ? reject(res[0]) : resolve(res[1]));
+ });
+ },
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/constants/event.ts b/uni_modules/tuniaoui-vue3/constants/event.ts
new file mode 100644
index 0000000..643495d
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/constants/event.ts
@@ -0,0 +1,3 @@
+export const UPDATE_MODEL_EVENT = 'update:modelValue'
+export const CHANGE_EVENT = 'change'
+export const INPUT_EVENT = 'input'
diff --git a/uni_modules/tuniaoui-vue3/constants/img-mode.ts b/uni_modules/tuniaoui-vue3/constants/img-mode.ts
new file mode 100644
index 0000000..24ac3e6
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/constants/img-mode.ts
@@ -0,0 +1,18 @@
+export const componentImgModes = [
+ 'scaleToFill',
+ 'aspectFit',
+ 'aspectFill',
+ 'widthFix',
+ 'heightFix',
+ 'top',
+ 'bottom',
+ 'center',
+ 'left',
+ 'right',
+ 'top left',
+ 'top right',
+ 'bottom left',
+ 'bottom right',
+] as const
+
+export type ComponentImgMode = (typeof componentImgModes)[number]
diff --git a/uni_modules/tuniaoui-vue3/constants/index.ts b/uni_modules/tuniaoui-vue3/constants/index.ts
new file mode 100644
index 0000000..4c37c27
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/constants/index.ts
@@ -0,0 +1,8 @@
+export * from './size'
+export * from './shape'
+export * from './img-mode'
+export * from './types'
+export * from './color'
+export * from './key'
+export * from './event'
+export * from './z-index'
diff --git a/uni_modules/tuniaoui-vue3/hooks/use-selector-query/index.ts b/uni_modules/tuniaoui-vue3/hooks/use-selector-query/index.ts
new file mode 100644
index 0000000..3aabd1b
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/hooks/use-selector-query/index.ts
@@ -0,0 +1,75 @@
+import { getCurrentInstance } from 'vue'
+import { debugWarn } from '../../utils'
+
+import type { ComponentInternalInstance } from 'vue'
+
+export const useSelectorQuery = (
+ instance?: ComponentInternalInstance | null
+) => {
+ let query: UniApp.SelectorQuery | null = null
+
+ if (!instance) {
+ instance = getCurrentInstance()
+ }
+ if (!instance) {
+ debugWarn('useSelectorQuery', 'useSelectorQuery必须在setup函数中使用')
+ }
+
+ // #ifndef MP-ALIPAY || APP-PLUS
+ query = uni.createSelectorQuery().in(instance)
+ // #endif
+ // #ifdef APP-PLUS
+ query = uni.createSelectorQuery().in((instance as any).ctx.$scope)
+ // #endif
+ // #ifdef MP-ALIPAY
+ query = uni.createSelectorQuery().in(null)
+ // #endif
+
+ const getSelectorNodeInfo = (selector: string): Promise => {
+ return new Promise((resolve, reject) => {
+ if (query) {
+ query
+ .select(selector)
+ .boundingClientRect((res) => {
+ const selectRes: UniApp.NodeInfo = res as UniApp.NodeInfo
+ if (selectRes) {
+ resolve(selectRes)
+ } else {
+ reject(new Error(`未找到对应节点: ${selector}`))
+ }
+ })
+ .exec()
+ } else {
+ reject(new Error('未找到对应的SelectorQuery实例'))
+ }
+ })
+ }
+
+ const getSelectorNodeInfos = (
+ selector: string
+ ): Promise => {
+ return new Promise((resolve, reject) => {
+ if (query) {
+ query
+ .selectAll(selector)
+ .boundingClientRect((res) => {
+ const selectRes: UniApp.NodeInfo[] = res as UniApp.NodeInfo[]
+ if (selectRes && selectRes.length > 0) {
+ resolve(selectRes)
+ } else {
+ reject(new Error(`未找到对应节点: ${selector}`))
+ }
+ })
+ .exec()
+ } else {
+ reject(new Error('未找到对应的SelectorQuery实例'))
+ }
+ })
+ }
+
+ return {
+ query,
+ getSelectorNodeInfo,
+ getSelectorNodeInfos,
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/icon-source/index.css b/uni_modules/tuniaoui-vue3/icon-source/index.css
new file mode 100644
index 0000000..65ba15f
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/icon-source/index.css
@@ -0,0 +1 @@
+@font-face{font-family:tuniaoFont;src:url(//at.alicdn.com/t/c/font_3063751_iwryckzvhu8.woff?t=1704782260205) format("woff"),url(//at.alicdn.com/t/c/font_3063751_iwryckzvhu8.ttf?t=1704782260205) format("truetype")}[class*=tn-icon-]{font-family:tuniaoFont!important;font-style:normal;-webkit-font-smoothing:antialiased;text-align:center;text-decoration:none}.tn-icon-stroller:before{content:"\ea53"}.tn-icon-baby-girl:before{content:"\ea54"}.tn-icon-baby-boy:before{content:"\ea55"}.tn-icon-clothing-male:before{content:"\ea56"}.tn-icon-clothing-female:before{content:"\ea57"}.tn-icon-boy:before{content:"\ea58"}.tn-icon-girl:before{content:"\ea59"}.tn-icon-building:before{content:"\ea5a"}.tn-icon-mansion:before{content:"\ea5b"}.tn-icon-restroom-female-circle-fill:before{content:"\ea5c"}.tn-icon-restroom-male-circle-fill:before{content:"\ea5d"}.tn-icon-restroom-female-fill:before{content:"\ea5e"}.tn-icon-restroom-male-fill:before{content:"\ea5f"}.tn-icon-leaf:before{content:"\ea60"}.tn-icon-pacman:before{content:"\ea52"}.tn-icon-ad:before{content:"\ea4e"}.tn-icon-ad-fill:before{content:"\ea4f"}.tn-icon-ad-no:before{content:"\ea50"}.tn-icon-ad-no-fill:before{content:"\ea51"}.tn-icon-text-new:before{content:"\ea4d"}.tn-icon-menu-set:before{content:"\ea4b"}.tn-icon-menu-set-fill:before{content:"\ea4c"}.tn-icon-discord:before{content:"\ea48"}.tn-icon-android:before{content:"\ea49"}.tn-icon-tissue:before{content:"\ea4a"}.tn-icon-carousel:before{content:"\ea47"}.tn-icon-dandelion:before{content:"\ea46"}.tn-icon-coworker:before{content:"\ea40"}.tn-icon-world:before{content:"\ea41"}.tn-icon-discern:before{content:"\ea42"}.tn-icon-chat:before{content:"\ea43"}.tn-icon-reduce-lack:before{content:"\ea44"}.tn-icon-add-lack:before{content:"\ea45"}.tn-icon-left-circle-simple:before{content:"\ea38"}.tn-icon-left-circle-simple-fill:before{content:"\ea39"}.tn-icon-down-circle-simple:before{content:"\ea3a"}.tn-icon-down-circle-simple-fill:before{content:"\ea3b"}.tn-icon-right-circle-simple-fill:before{content:"\ea3c"}.tn-icon-right-circle-simple:before{content:"\ea3d"}.tn-icon-up-circle-simple:before{content:"\ea3e"}.tn-icon-up-circle-simple-fill:before{content:"\ea3f"}.tn-icon-my-love:before{content:"\ea35"}.tn-icon-address-fill:before{content:"\ea36"}.tn-icon-address:before{content:"\ea37"}.tn-icon-like-lack-fill:before{content:"\ea32"}.tn-icon-oa:before{content:"\ea33"}.tn-icon-like-break-fill:before{content:"\ea34"}.tn-icon-signal:before{content:"\ea2e"}.tn-icon-help-question:before{content:"\ea2f"}.tn-icon-radioactivity:before{content:"\ea30"}.tn-icon-signal-no:before{content:"\ea31"}.tn-icon-dice-face:before{content:"\ea2d"}.tn-icon-vip-diamond:before{content:"\e9c9"}.tn-icon-video-square:before{content:"\e9ca"}.tn-icon-vip-diamond-fill:before{content:"\ea29"}.tn-icon-vr:before{content:"\ea2a"}.tn-icon-vr-fill:before{content:"\ea2b"}.tn-icon-video-square-fill:before{content:"\ea2c"}.tn-icon-arrivals:before{content:"\ea27"}.tn-icon-departures:before{content:"\ea28"}.tn-icon-parking:before{content:"\ea26"}.tn-icon-fireworks:before{content:"\ea25"}.tn-icon-cloud-fill:before{content:"\ea23"}.tn-icon-cloud:before{content:"\ea24"}.tn-icon-snowflake:before{content:"\e949"}.tn-icon-prohibit:before{content:"\ea22"}.tn-icon-honeycomb-fill:before{content:"\ea20"}.tn-icon-honeycomb:before{content:"\ea21"}.tn-icon-starry:before{content:"\ea1e"}.tn-icon-vscode:before{content:"\ea1f"}.tn-icon-tips-fill:before{content:"\ea1b"}.tn-icon-tip:before{content:"\ea1c"}.tn-icon-tips:before{content:"\ea1d"}.tn-icon-write-feather-fill:before{content:"\ea19"}.tn-icon-write-feather:before{content:"\ea1a"}.tn-icon-eat:before{content:"\e98b"}.tn-icon-eat-fill:before{content:"\e98c"}.tn-icon-eat-west:before{content:"\ea0f"}.tn-icon-eat-west-fill:before{content:"\ea10"}.tn-icon-eat-other:before{content:"\ea11"}.tn-icon-eat-other-fill:before{content:"\ea12"}.tn-icon-food-fill:before{content:"\ea13"}.tn-icon-food:before{content:"\ea14"}.tn-icon-folder-reduce:before{content:"\ea15"}.tn-icon-folder-add-fill:before{content:"\ea16"}.tn-icon-folder-reduce-fill:before{content:"\ea17"}.tn-icon-folder-add:before{content:"\ea18"}.tn-icon-fold:before{content:"\ea0d"}.tn-icon-unfold:before{content:"\ea0e"}.tn-icon-refresh-simple:before{content:"\ea0c"}.tn-icon-assign-fill:before{content:"\ea0a"}.tn-icon-assign:before{content:"\ea0b"}.tn-icon-praise-simple:before{content:"\ea06"}.tn-icon-praise-simple-fill:before{content:"\ea07"}.tn-icon-tread-simple-fill:before{content:"\ea08"}.tn-icon-tread-simple:before{content:"\ea09"}.tn-icon-fish:before{content:"\ea05"}.tn-icon-pushpin-fill:before{content:"\ea03"}.tn-icon-pushpin:before{content:"\ea04"}.tn-icon-equal:before{content:"\ea00"}.tn-icon-equal-fill:before{content:"\ea01"}.tn-icon-totop-simple:before{content:"\ea02"}.tn-icon-floral-fill:before{content:"\e9fe"}.tn-icon-floral:before{content:"\e9ff"}.tn-icon-my-job:before{content:"\e9f9"}.tn-icon-my-job-fill:before{content:"\e9fa"}.tn-icon-my-formal:before{content:"\e9fb"}.tn-icon-my-formal-fill:before{content:"\e9fc"}.tn-icon-history:before{content:"\e9fd"}.tn-icon-seafox:before{content:"\e9f8"}.tn-icon-norm-fill:before{content:"\e9f6"}.tn-icon-norm:before{content:"\e9f7"}.tn-icon-cargoship:before{content:"\e9f5"}.tn-icon-menu-grille-fill:before{content:"\e9f3"}.tn-icon-menu-grille:before{content:"\e9f4"}.tn-icon-piggy-bank:before{content:"\e9ef"}.tn-icon-skull-fill:before{content:"\e9f0"}.tn-icon-skull:before{content:"\e9f1"}.tn-icon-piggy-bank-fill:before{content:"\e9f2"}.tn-icon-next-song:before{content:"\e9eb"}.tn-icon-previous-song:before{content:"\e9ec"}.tn-icon-previous-song-fill:before{content:"\e9ed"}.tn-icon-next-song-fill:before{content:"\e9ee"}.tn-icon-ai:before{content:"\e9e9"}.tn-icon-ai-fill:before{content:"\e9ea"}.tn-icon-headset-fill:before{content:"\e9e8"}.tn-icon-reduce-rhombus-fill:before{content:"\e9e6"}.tn-icon-reduce-rhombus:before{content:"\e9e7"}.tn-icon-umbrella-fill:before{content:"\e9a1"}.tn-icon-footprint-fill:before{content:"\e992"}.tn-icon-folder:before{content:"\e9df"}.tn-icon-folder-fill:before{content:"\e9e0"}.tn-icon-folder-download-fill:before{content:"\e9e1"}.tn-icon-pyramid:before{content:"\e9e2"}.tn-icon-folder-upload:before{content:"\e9e3"}.tn-icon-folder-download:before{content:"\e9e4"}.tn-icon-folder-upload-fill:before{content:"\e9e5"}.tn-icon-hotspot:before{content:"\e9dc"}.tn-icon-router:before{content:"\e9dd"}.tn-icon-router-fill:before{content:"\e9de"}.tn-icon-menu-rhombus:before{content:"\e9da"}.tn-icon-menu-rhombus-fill:before{content:"\e9db"}.tn-icon-plane-fill:before{content:"\e9d8"}.tn-icon-plane:before{content:"\e9d9"}.tn-icon-spiral:before{content:"\e9d2"}.tn-icon-lotus:before{content:"\e9d3"}.tn-icon-koi:before{content:"\e9d4"}.tn-icon-koi-fill:before{content:"\e9d5"}.tn-icon-add-rhombus-fill:before{content:"\e9d6"}.tn-icon-add-rhombus:before{content:"\e9d7"}.tn-icon-bookmark:before{content:"\e9ce"}.tn-icon-bookmark-fill:before{content:"\e9cf"}.tn-icon-refresh:before{content:"\e9d0"}.tn-icon-refresh-square:before{content:"\e9d1"}.tn-icon-tread-fill:before{content:"\e9cb"}.tn-icon-audio:before{content:"\e9cc"}.tn-icon-tread:before{content:"\e9cd"}.tn-icon-play:before{content:"\e9c8"}.tn-icon-inventory-fill:before{content:"\e9c3"}.tn-icon-percent-fill:before{content:"\e9c4"}.tn-icon-percent:before{content:"\e9c5"}.tn-icon-inventory:before{content:"\e9c6"}.tn-icon-activity:before{content:"\e9c7"}.tn-icon-qr-code-circle:before{content:"\e9c2"}.tn-icon-task-fill:before{content:"\e9c0"}.tn-icon-task:before{content:"\e9c1"}.tn-icon-text-best:before{content:"\e9be"}.tn-icon-text-free:before{content:"\e9bf"}.tn-icon-text-zgs:before{content:"\e8ff"}.tn-icon-text-xzx:before{content:"\e9ba"}.tn-icon-text-like:before{content:"\e9bb"}.tn-icon-text-sale:before{content:"\e9bc"}.tn-icon-text-hot:before{content:"\e9bd"}.tn-icon-home-leaf:before{content:"\e9b8"}.tn-icon-home-leaf-fill:before{content:"\e9b9"}.tn-icon-service-simple-fill:before{content:"\e9b6"}.tn-icon-service-simple:before{content:"\e9b7"}.tn-icon-meteor-fill:before{content:"\e9b4"}.tn-icon-meteor:before{content:"\e9b5"}.tn-icon-dice-five:before{content:"\e9ae"}.tn-icon-dice-one:before{content:"\e9af"}.tn-icon-dice-three:before{content:"\e9b0"}.tn-icon-dice-six:before{content:"\e9b1"}.tn-icon-dice-four:before{content:"\e9b2"}.tn-icon-dice-two:before{content:"\e9b3"}.tn-icon-theme-fill:before{content:"\e938"}.tn-icon-theme:before{content:"\e9ad"}.tn-icon-download-simple:before{content:"\e9ab"}.tn-icon-upload-simple:before{content:"\e9ac"}.tn-icon-on:before{content:"\e9a9"}.tn-icon-off:before{content:"\e9aa"}.tn-icon-my-circle:before{content:"\e9a7"}.tn-icon-my-circle-fill:before{content:"\e9a8"}.tn-icon-temperature-f:before{content:"\e9a5"}.tn-icon-temperature-c:before{content:"\e9a6"}.tn-icon-sunrise:before{content:"\e9a3"}.tn-icon-sunset:before{content:"\e9a4"}.tn-icon-password:before{content:"\e9a0"}.tn-icon-umbrella:before{content:"\e9a2"}.tn-icon-unite:before{content:"\e999"}.tn-icon-unite-fill:before{content:"\e99a"}.tn-icon-global:before{content:"\e99b"}.tn-icon-reload-home:before{content:"\e99c"}.tn-icon-reload-planet:before{content:"\e99d"}.tn-icon-reload-home-fill:before{content:"\e99e"}.tn-icon-reload-planet-fill:before{content:"\e99f"}.tn-icon-route:before{content:"\e997"}.tn-icon-route-fill:before{content:"\e998"}.tn-icon-my-simple-fill:before{content:"\e98e"}.tn-icon-my-simple:before{content:"\e98f"}.tn-icon-around-fill:before{content:"\e990"}.tn-icon-around:before{content:"\e991"}.tn-icon-footprint:before{content:"\e993"}.tn-icon-my-lack-fill:before{content:"\e994"}.tn-icon-my-lack:before{content:"\e995"}.tn-icon-bigscreen:before{content:"\e996"}.tn-icon-escalator:before{content:"\e98d"}.tn-icon-suitcase:before{content:"\e989"}.tn-icon-suitcase-fill:before{content:"\e98a"}.tn-icon-add-square-fill:before{content:"\e904"}.tn-icon-cute:before{content:"\e988"}.tn-icon-compress:before{content:"\e96e"}.tn-icon-expend:before{content:"\e96f"}.tn-icon-windows:before{content:"\e970"}.tn-icon-trademark:before{content:"\e971"}.tn-icon-tailor:before{content:"\e972"}.tn-icon-move:before{content:"\e973"}.tn-icon-pillow:before{content:"\e974"}.tn-icon-bathtub:before{content:"\e975"}.tn-icon-buy:before{content:"\e976"}.tn-icon-buy-fill:before{content:"\e977"}.tn-icon-allday:before{content:"\e978"}.tn-icon-home-love-fill:before{content:"\e979"}.tn-icon-home-love:before{content:"\e97a"}.tn-icon-gesture-two:before{content:"\e97b"}.tn-icon-gesture-four:before{content:"\e97c"}.tn-icon-gesture-five:before{content:"\e97d"}.tn-icon-gesture-one:before{content:"\e97e"}.tn-icon-gesture-three:before{content:"\e97f"}.tn-icon-gesture-dropdown:before{content:"\e980"}.tn-icon-plant-fill:before{content:"\e981"}.tn-icon-plant:before{content:"\e982"}.tn-icon-pillow-fill:before{content:"\e983"}.tn-icon-bathtub-fill:before{content:"\e984"}.tn-icon-wheelchair:before{content:"\e985"}.tn-icon-narrow-all:before{content:"\e986"}.tn-icon-fullscreen-all:before{content:"\e987"}.tn-icon-close-square-fill:before{content:"\e945"}.tn-icon-add-square:before{content:"\e962"}.tn-icon-close-square:before{content:"\e963"}.tn-icon-my-reduce:before{content:"\e964"}.tn-icon-square-fill:before{content:"\e965"}.tn-icon-pay-fill:before{content:"\e966"}.tn-icon-commissary:before{content:"\e967"}.tn-icon-commissary-fill:before{content:"\e968"}.tn-icon-notice-no-fill:before{content:"\e969"}.tn-icon-cross-fill:before{content:"\e96a"}.tn-icon-nintendo-switch:before{content:"\e96b"}.tn-icon-mammoth:before{content:"\e96c"}.tn-icon-open:before{content:"\e96d"}.tn-icon-bed-fill:before{content:"\e916"}.tn-icon-bed:before{content:"\e961"}.tn-icon-menu-flex-fill:before{content:"\e956"}.tn-icon-menu-flex:before{content:"\e957"}.tn-icon-logistics-fill:before{content:"\e958"}.tn-icon-ghost-fill:before{content:"\e959"}.tn-icon-keyboard-circle-fill:before{content:"\e95a"}.tn-icon-brand-fill:before{content:"\e95b"}.tn-icon-clear-fill:before{content:"\e95c"}.tn-icon-mouse-fill:before{content:"\e95d"}.tn-icon-brand:before{content:"\e95e"}.tn-icon-monitor-fill:before{content:"\e95f"}.tn-icon-covid-19-fill:before{content:"\e960"}.tn-icon-install-fill:before{content:"\e936"}.tn-icon-install:before{content:"\e955"}.tn-icon-restroom-female:before{content:"\e953"}.tn-icon-restroom-male:before{content:"\e954"}.tn-icon-first:before{content:"\e950"}.tn-icon-third:before{content:"\e951"}.tn-icon-second:before{content:"\e952"}.tn-icon-ninja:before{content:"\e94b"}.tn-icon-program:before{content:"\e94c"}.tn-icon-program-fill:before{content:"\e94d"}.tn-icon-circle-more:before{content:"\e94e"}.tn-icon-windmill:before{content:"\e94f"}.tn-icon-alien:before{content:"\e946"}.tn-icon-taichi:before{content:"\e947"}.tn-icon-knot:before{content:"\e948"}.tn-icon-whale:before{content:"\e94a"}.tn-icon-dragon:before{content:"\e944"}.tn-icon-home-in-fill:before{content:"\e942"}.tn-icon-home-in:before{content:"\e943"}.tn-icon-home-loading:before{content:"\e940"}.tn-icon-home-loading-fill:before{content:"\e941"}.tn-icon-cell:before{content:"\e93b"}.tn-icon-loading:before{content:"\e93c"}.tn-icon-orange:before{content:"\e93d"}.tn-icon-bigbug:before{content:"\e93e"}.tn-icon-dinosaur:before{content:"\e93f"}.tn-icon-dna:before{content:"\e931"}.tn-icon-chain:before{content:"\e932"}.tn-icon-email:before{content:"\e933"}.tn-icon-education:before{content:"\e934"}.tn-icon-english:before{content:"\e935"}.tn-icon-seal:before{content:"\e937"}.tn-icon-book:before{content:"\e939"}.tn-icon-email-fill:before{content:"\e93a"}.tn-icon-maths:before{content:"\e92f"}.tn-icon-molecule:before{content:"\e930"}.tn-icon-ghost:before{content:"\e92d"}.tn-icon-money-fill:before{content:"\e92e"}.tn-icon-menu-alone:before{content:"\e929"}.tn-icon-menu-alone-fill:before{content:"\e92a"}.tn-icon-tree:before{content:"\e92b"}.tn-icon-rabbit:before{content:"\e92c"}.tn-icon-block-fill:before{content:"\e925"}.tn-icon-block:before{content:"\e926"}.tn-icon-menu-classify:before{content:"\e927"}.tn-icon-menu-classify-fill:before{content:"\e928"}.tn-icon-home-totop-fill:before{content:"\e923"}.tn-icon-home-totop:before{content:"\e924"}.tn-icon-petal:before{content:"\e920"}.tn-icon-clover-fill:before{content:"\e921"}.tn-icon-clover:before{content:"\e922"}.tn-icon-heartbeat:before{content:"\e917"}.tn-icon-paperbag:before{content:"\e918"}.tn-icon-paperbag-fill:before{content:"\e919"}.tn-icon-menu-match:before{content:"\e91a"}.tn-icon-menu-match-fill:before{content:"\e91b"}.tn-icon-sofa-fill:before{content:"\e91c"}.tn-icon-fullscreen:before{content:"\e91d"}.tn-icon-narrow:before{content:"\e91e"}.tn-icon-smallscreen:before{content:"\e91f"}.tn-icon-payment-wechat:before{content:"\e90a"}.tn-icon-cursor:before{content:"\e912"}.tn-icon-cursor-fill:before{content:"\e913"}.tn-icon-check:before{content:"\e914"}.tn-icon-payment-alipay:before{content:"\e915"}.tn-icon-dashboard:before{content:"\e90b"}.tn-icon-module:before{content:"\e90c"}.tn-icon-at-sign:before{content:"\e90d"}.tn-icon-copyright:before{content:"\e90e"}.tn-icon-pin:before{content:"\e90f"}.tn-icon-module-fill:before{content:"\e910"}.tn-icon-dashboard-fill:before{content:"\e911"}.tn-icon-birthday:before{content:"\e905"}.tn-icon-sofa:before{content:"\e906"}.tn-icon-iot:before{content:"\e907"}.tn-icon-monitor:before{content:"\e908"}.tn-icon-iot-fill:before{content:"\e909"}.tn-icon-tabs-smile:before{content:"\e900"}.tn-icon-huawei:before{content:"\e901"}.tn-icon-iphone:before{content:"\e902"}.tn-icon-tiktok:before{content:"\e903"}.tn-icon-sword-fill:before{content:"\e8fa"}.tn-icon-job-fill:before{content:"\e8fb"}.tn-icon-rocket-fill:before{content:"\e8fc"}.tn-icon-totop:before{content:"\e8fd"}.tn-icon-totop-fill:before{content:"\e8fe"}.tn-icon-logout:before{content:"\e8f8"}.tn-icon-login:before{content:"\e8f9"}.tn-icon-expand:before{content:"\e8f7"}.tn-icon-bug:before{content:"\e8e3"}.tn-icon-bug-fill:before{content:"\e8e4"}.tn-icon-company-fill:before{content:"\e8e5"}.tn-icon-edit-write-fill:before{content:"\e8e6"}.tn-icon-menu-circle-fill:before{content:"\e8e7"}.tn-icon-level-fill:before{content:"\e8e8"}.tn-icon-menu-fill:before{content:"\e8e9"}.tn-icon-science-fill:before{content:"\e8ea"}.tn-icon-deploy-fill:before{content:"\e8eb"}.tn-icon-menu-more-fill:before{content:"\e8ec"}.tn-icon-search-menu-fill:before{content:"\e8ed"}.tn-icon-organizatio-fill:before{content:"\e8ee"}.tn-icon-platform-fill:before{content:"\e8ef"}.tn-icon-platform:before{content:"\e8f0"}.tn-icon-search-list-fill:before{content:"\e8f1"}.tn-icon-menu-sort-fill:before{content:"\e8f2"}.tn-icon-cube-fill:before{content:"\e8f3"}.tn-icon-menu-sorts-fill:before{content:"\e8f4"}.tn-icon-server-fill:before{content:"\e8f5"}.tn-icon-menu-list-fill:before{content:"\e8f6"}.tn-icon-errands:before{content:"\e8df"}.tn-icon-errands-fill:before{content:"\e8e0"}.tn-icon-delivery-fill:before{content:"\e8e1"}.tn-icon-delivery:before{content:"\e8e2"}.tn-icon-vip-text:before{content:"\e8dc"}.tn-icon-panda:before{content:"\e8dd"}.tn-icon-logo-shangpu:before{content:"\e8de"}.tn-icon-mouse:before{content:"\e8db"}.tn-icon-notebook-fill:before{content:"\e8da"}.tn-icon-headset:before{content:"\e8d8"}.tn-icon-shears:before{content:"\e8d9"}.tn-icon-notebook:before{content:"\e8d7"}.tn-icon-battery-empty:before{content:"\e8d1"}.tn-icon-battery-low:before{content:"\e8d2"}.tn-icon-battery-mid:before{content:"\e8d3"}.tn-icon-battery-high:before{content:"\e8d4"}.tn-icon-battery-full:before{content:"\e8d5"}.tn-icon-bluetooth:before{content:"\e8d6"}.tn-icon-science:before{content:"\e8cf"}.tn-icon-clip:before{content:"\e8d0"}.tn-icon-con-aquarius:before{content:"\e8c2"}.tn-icon-con-pisces:before{content:"\e8c3"}.tn-icon-con-aries:before{content:"\e8c4"}.tn-icon-con-taurus:before{content:"\e8c5"}.tn-icon-con-gemini:before{content:"\e8c6"}.tn-icon-con-cancer:before{content:"\e8c7"}.tn-icon-con-leo:before{content:"\e8c8"}.tn-icon-con-virgo:before{content:"\e8c9"}.tn-icon-con-libra:before{content:"\e8ca"}.tn-icon-con-scorpio:before{content:"\e8cb"}.tn-icon-con-sagittarius:before{content:"\e8cc"}.tn-icon-con-apricorn:before{content:"\e8cd"}.tn-icon-constellation:before{content:"\e8ce"}.tn-icon-wea-cloud-more:before{content:"\e8b9"}.tn-icon-wea-cloud:before{content:"\e8ba"}.tn-icon-wea-cloud-sun:before{content:"\e8bb"}.tn-icon-wea-rain:before{content:"\e8bc"}.tn-icon-wea-rain-middle:before{content:"\e8bd"}.tn-icon-wea-rain-heavy:before{content:"\e8be"}.tn-icon-wea-snow:before{content:"\e8bf"}.tn-icon-wea-wind:before{content:"\e8c0"}.tn-icon-wea-sun:before{content:"\e8c1"}.tn-icon-empty-data:before{content:"\e8ab"}.tn-icon-empty-message:before{content:"\e8ac"}.tn-icon-empty-cart:before{content:"\e8ad"}.tn-icon-empty-history:before{content:"\e8ae"}.tn-icon-empty-favor:before{content:"\e8af"}.tn-icon-empty-list:before{content:"\e8b0"}.tn-icon-empty-network:before{content:"\e8b1"}.tn-icon-empty-search:before{content:"\e8b2"}.tn-icon-empty-order:before{content:"\e8b3"}.tn-icon-empty-comment:before{content:"\e8b4"}.tn-icon-empty-coupon:before{content:"\e8b5"}.tn-icon-empty-address:before{content:"\e8b6"}.tn-icon-empty-permission:before{content:"\e8b7"}.tn-icon-empty-page:before{content:"\e8b8"}.tn-icon-job:before{content:"\e8aa"}.tn-icon-rocket:before{content:"\e8a5"}.tn-icon-sword:before{content:"\e8a6"}.tn-icon-notice-no:before{content:"\e8a7"}.tn-icon-notice-fill:before{content:"\e8a8"}.tn-icon-notice:before{content:"\e8a9"}.tn-icon-font:before{content:"\e8a4"}.tn-icon-chemistry:before{content:"\e8a3"}.tn-icon-biology:before{content:"\e8a2"}.tn-icon-level:before{content:"\e8a0"}.tn-icon-deploy:before{content:"\e8a1"}.tn-icon-server:before{content:"\e89f"}.tn-icon-cube:before{content:"\e89e"}.tn-icon-organizatio:before{content:"\e89d"}.tn-icon-company:before{content:"\e89c"}.tn-icon-pharmacy:before{content:"\e89b"}.tn-icon-medical:before{content:"\e89a"}.tn-icon-my-add:before{content:"\e898"}.tn-icon-my:before{content:"\e897"}.tn-icon-my-fill:before{content:"\e896"}.tn-icon-trust:before{content:"\e895"}.tn-icon-trust-fill:before{content:"\e894"}.tn-icon-moon:before{content:"\e893"}.tn-icon-moon-fill:before{content:"\e892"}.tn-icon-funds:before{content:"\e891"}.tn-icon-funds-fill:before{content:"\e890"}.tn-icon-signpost:before{content:"\e88f"}.tn-icon-signpost-fill:before{content:"\e88e"}.tn-icon-vip:before{content:"\e88d"}.tn-icon-vip-fill:before{content:"\e88c"}.tn-icon-hardware:before{content:"\e88b"}.tn-icon-hardware-fill:before{content:"\e88a"}.tn-icon-honor:before{content:"\e889"}.tn-icon-honor-fill:before{content:"\e888"}.tn-icon-count:before{content:"\e887"}.tn-icon-count-fill:before{content:"\e886"}.tn-icon-discover-planet:before{content:"\e885"}.tn-icon-discover-planet-fill:before{content:"\e884"}.tn-icon-discover:before{content:"\e883"}.tn-icon-discover-fill:before{content:"\e882"}.tn-icon-home:before{content:"\e881"}.tn-icon-home-fill:before{content:"\e880"}.tn-icon-home-vertical:before{content:"\e87f"}.tn-icon-home-vertical-fill:before{content:"\e87e"}.tn-icon-home-smile:before{content:"\e87d"}.tn-icon-home-smile-fill:before{content:"\e87c"}.tn-icon-home-capsule:before{content:"\e87b"}.tn-icon-home-capsule-fill:before{content:"\e87a"}.tn-icon-focus:before{content:"\e878"}.tn-icon-all:before{content:"\e877"}.tn-icon-assort-fill:before{content:"\e876"}.tn-icon-assort:before{content:"\e875"}.tn-icon-menu-list:before{content:"\e874"}.tn-icon-menu-sorts:before{content:"\e873"}.tn-icon-menu-sort:before{content:"\e872"}.tn-icon-menu-more:before{content:"\e871"}.tn-icon-menu:before{content:"\e870"}.tn-icon-menu-circle:before{content:"\e86f"}.tn-icon-search-menu:before{content:"\e86e"}.tn-icon-search-list:before{content:"\e86d"}.tn-icon-search:before{content:"\e86c"}.tn-icon-link:before{content:"\e86b"}.tn-icon-code:before{content:"\e869"}.tn-icon-computer:before{content:"\e868"}.tn-icon-computer-fill:before{content:"\e867"}.tn-icon-ipad:before{content:"\e866"}.tn-icon-ipad-fill:before{content:"\e865"}.tn-icon-phone:before{content:"\e864"}.tn-icon-phone-fill:before{content:"\e863"}.tn-icon-tel:before{content:"\e862"}.tn-icon-tel-circle-fill:before{content:"\e860"}.tn-icon-tel-circle:before{content:"\e861"}.tn-icon-watercup:before{content:"\e85f"}.tn-icon-gloves-fill:before{content:"\e85d"}.tn-icon-gloves:before{content:"\e85e"}.tn-icon-covid-19:before{content:"\e85c"}.tn-icon-sport-jog:before{content:"\e858"}.tn-icon-sport-run:before{content:"\e859"}.tn-icon-sport-swim:before{content:"\e85a"}.tn-icon-sport-cycle:before{content:"\e85b"}.tn-icon-airplane:before{content:"\e857"}.tn-icon-train:before{content:"\e855"}.tn-icon-steamship:before{content:"\e856"}.tn-icon-bus:before{content:"\e854"}.tn-icon-balancecar:before{content:"\e853"}.tn-icon-electromobile:before{content:"\e852"}.tn-icon-zodiac-zhu:before{content:"\e851"}.tn-icon-zodiac-gou:before{content:"\e850"}.tn-icon-zodiac-ji:before{content:"\e84f"}.tn-icon-zodiac-hou:before{content:"\e84e"}.tn-icon-zodiac-yang:before{content:"\e84d"}.tn-icon-zodiac-ma:before{content:"\e84c"}.tn-icon-zodiac-she:before{content:"\e84b"}.tn-icon-zodiac-long:before{content:"\e84a"}.tn-icon-zodiac-tu:before{content:"\e849"}.tn-icon-zodiac-hu:before{content:"\e848"}.tn-icon-zodiac-niu:before{content:"\e847"}.tn-icon-zodiac-shu:before{content:"\e846"}.tn-icon-lucky-money:before{content:"\e844"}.tn-icon-lucky-money-fill:before{content:"\e845"}.tn-icon-prize:before{content:"\e842"}.tn-icon-gift:before{content:"\e843"}.tn-icon-pay:before{content:"\e841"}.tn-icon-refund:before{content:"\e840"}.tn-icon-money:before{content:"\e83f"}.tn-icon-power:before{content:"\e83e"}.tn-icon-fingerprint:before{content:"\e83d"}.tn-icon-qr-beibei:before{content:"\e83c"}.tn-icon-qr-code:before{content:"\e83b"}.tn-icon-qr-barcode:before{content:"\e83a"}.tn-icon-scan:before{content:"\e839"}.tn-icon-revoke:before{content:"\e837"}.tn-icon-filter:before{content:"\e838"}.tn-icon-upload:before{content:"\e835"}.tn-icon-download:before{content:"\e836"}.tn-icon-fork:before{content:"\e832"}.tn-icon-relation:before{content:"\e833"}.tn-icon-master:before{content:"\e834"}.tn-icon-facebook:before{content:"\e82e"}.tn-icon-google:before{content:"\e82f"}.tn-icon-linkedin:before{content:"\e830"}.tn-icon-twitter:before{content:"\e831"}.tn-icon-logo-tuniao:before{content:"\e82d"}.tn-icon-sina:before{content:"\e82b"}.tn-icon-taobao:before{content:"\e82c"}.tn-icon-gitee:before{content:"\e82a"}.tn-icon-github:before{content:"\e829"}.tn-icon-dingtalk:before{content:"\e828"}.tn-icon-alipay:before{content:"\e827"}.tn-icon-qq:before{content:"\e826"}.tn-icon-moments:before{content:"\e825"}.tn-icon-wechat:before{content:"\e824"}.tn-icon-wechat-fill:before{content:"\e823"}.tn-icon-service:before{content:"\e821"}.tn-icon-service-fill:before{content:"\e822"}.tn-icon-team:before{content:"\e81f"}.tn-icon-team-fill:before{content:"\e820"}.tn-icon-emoji-sad:before{content:"\e81e"}.tn-icon-emoji-sad-fill:before{content:"\e81d"}.tn-icon-emoji-general:before{content:"\e81b"}.tn-icon-emoji-general-fill:before{content:"\e818"}.tn-icon-emoji-good:before{content:"\e817"}.tn-icon-emoji-good-fill:before{content:"\e816"}.tn-icon-clock:before{content:"\e812"}.tn-icon-clock-fill:before{content:"\e813"}.tn-icon-time-fill:before{content:"\e7d9"}.tn-icon-time:before{content:"\e7dc"}.tn-icon-delete:before{content:"\e7d6"}.tn-icon-delete-fill:before{content:"\e7d7"}.tn-icon-clear:before{content:"\e7d5"}.tn-icon-set:before{content:"\e7d1"}.tn-icon-set-fill:before{content:"\e7d2"}.tn-icon-keyboard-circle:before{content:"\e810"}.tn-icon-keyboard:before{content:"\e811"}.tn-icon-wifi-no:before{content:"\e81c"}.tn-icon-wifi:before{content:"\e7d0"}.tn-icon-creative-stop:before{content:"\e819"}.tn-icon-creative-stop-fill:before{content:"\e81a"}.tn-icon-creative-fill:before{content:"\e80e"}.tn-icon-creative:before{content:"\e80f"}.tn-icon-trophy-fill:before{content:"\e80a"}.tn-icon-trophy:before{content:"\e80b"}.tn-icon-game-fill:before{content:"\e808"}.tn-icon-game:before{content:"\e809"}.tn-icon-tag-fill:before{content:"\e806"}.tn-icon-tag:before{content:"\e807"}.tn-icon-logistics:before{content:"\e7cf"}.tn-icon-taxi-fill:before{content:"\e800"}.tn-icon-taxi:before{content:"\e805"}.tn-icon-flag:before{content:"\e7f5"}.tn-icon-flag-fill:before{content:"\e7ff"}.tn-icon-baby:before{content:"\e7f1"}.tn-icon-baby-fill:before{content:"\e7f4"}.tn-icon-shop:before{content:"\e7cd"}.tn-icon-shop-fill:before{content:"\e7ce"}.tn-icon-coupon-fill:before{content:"\e7c8"}.tn-icon-coupon:before{content:"\e7c9"}.tn-icon-shopbag-fill:before{content:"\e7c6"}.tn-icon-shopbag:before{content:"\e7c7"}.tn-icon-basket-fill:before{content:"\e7c4"}.tn-icon-basket:before{content:"\e7c5"}.tn-icon-cart-fill:before{content:"\e7c2"}.tn-icon-cart:before{content:"\e7c3"}.tn-icon-ticket:before{content:"\e7f8"}.tn-icon-ticket-fill:before{content:"\e7fe"}.tn-icon-receipt:before{content:"\e7f6"}.tn-icon-receipt-fill:before{content:"\e7f7"}.tn-icon-cardbag:before{content:"\e7fa"}.tn-icon-cardbag-fill:before{content:"\e7fd"}.tn-icon-bankcard-fill:before{content:"\e7d3"}.tn-icon-bankcard:before{content:"\e7d4"}.tn-icon-identity:before{content:"\e7cb"}.tn-icon-identity-fill:before{content:"\e7cc"}.tn-icon-calendar:before{content:"\e7c0"}.tn-icon-calendar-fill:before{content:"\e7c1"}.tn-icon-order:before{content:"\e7be"}.tn-icon-order-fill:before{content:"\e7bf"}.tn-icon-image:before{content:"\e7bc"}.tn-icon-image-fill:before{content:"\e7bd"}.tn-icon-image-text:before{content:"\e7bb"}.tn-icon-image-text-fill:before{content:"\e7ba"}.tn-icon-data:before{content:"\e7b9"}.tn-icon-data-fill:before{content:"\e7b8"}.tn-icon-statistics:before{content:"\e7b7"}.tn-icon-statistics-fill:before{content:"\e7b6"}.tn-icon-trusty-fill:before{content:"\e801"}.tn-icon-trusty:before{content:"\e802"}.tn-icon-safe-fill:before{content:"\e803"}.tn-icon-safe:before{content:"\e804"}.tn-icon-edit:before{content:"\e7b5"}.tn-icon-edit-form:before{content:"\e7b4"}.tn-icon-edit-write:before{content:"\e7b3"}.tn-icon-write-fill:before{content:"\e7b1"}.tn-icon-write:before{content:"\e7b2"}.tn-icon-eye-hide:before{content:"\e7af"}.tn-icon-eye-close:before{content:"\e7b0"}.tn-icon-eye:before{content:"\e7ad"}.tn-icon-eye-fill:before{content:"\e7ae"}.tn-icon-unlock:before{content:"\e7da"}.tn-icon-lock:before{content:"\e7db"}.tn-icon-sex:before{content:"\e7ac"}.tn-icon-sex-female:before{content:"\e7ab"}.tn-icon-sex-male:before{content:"\e7aa"}.tn-icon-circle-lack:before{content:"\e7a8"}.tn-icon-circle-arrow:before{content:"\e7a9"}.tn-icon-circle-fill:before{content:"\e7a4"}.tn-icon-circle:before{content:"\e7a3"}.tn-icon-copy-fill:before{content:"\e7a1"}.tn-icon-copy:before{content:"\e7a2"}.tn-icon-square:before{content:"\e7a0"}.tn-icon-group-double:before{content:"\e79e"}.tn-icon-group-square:before{content:"\e79f"}.tn-icon-group-triangle:before{content:"\e795"}.tn-icon-group-circle:before{content:"\e796"}.tn-icon-group-null:before{content:"\e797"}.tn-icon-share-triangle:before{content:"\e792"}.tn-icon-share-square:before{content:"\e790"}.tn-icon-share-circle:before{content:"\e791"}.tn-icon-share:before{content:"\e78f"}.tn-icon-send-fill:before{content:"\e793"}.tn-icon-send:before{content:"\e794"}.tn-icon-light-fill:before{content:"\e78d"}.tn-icon-light:before{content:"\e78e"}.tn-icon-praise-fill:before{content:"\e7eb"}.tn-icon-praise:before{content:"\e7f0"}.tn-icon-star-fill:before{content:"\e78b"}.tn-icon-star:before{content:"\e78c"}.tn-icon-caring:before{content:"\e789"}.tn-icon-caring-fill:before{content:"\e78a"}.tn-icon-fire:before{content:"\e787"}.tn-icon-fire-fill:before{content:"\e788"}.tn-icon-topic:before{content:"\e786"}.tn-icon-topics:before{content:"\e784"}.tn-icon-topics-fill:before{content:"\e785"}.tn-icon-like-break:before{content:"\e782"}.tn-icon-like-lack:before{content:"\e783"}.tn-icon-like:before{content:"\e781"}.tn-icon-like-fill:before{content:"\e780"}.tn-icon-reply:before{content:"\e7a6"}.tn-icon-reply-fill:before{content:"\e7a7"}.tn-icon-comment-fill:before{content:"\e79c"}.tn-icon-comment:before{content:"\e79d"}.tn-icon-message-fill:before{content:"\e798"}.tn-icon-message:before{content:"\e799"}.tn-icon-flower-fill:before{content:"\e77e"}.tn-icon-flower:before{content:"\e77f"}.tn-icon-location-fill:before{content:"\e77c"}.tn-icon-location:before{content:"\e77d"}.tn-icon-map-fill:before{content:"\e77a"}.tn-icon-map:before{content:"\e77b"}.tn-icon-camera:before{content:"\e774"}.tn-icon-camera-fill:before{content:"\e775"}.tn-icon-live-stream:before{content:"\e7fb"}.tn-icon-live-stream-fill:before{content:"\e7fc"}.tn-icon-sing:before{content:"\e7f9"}.tn-icon-music-fill:before{content:"\e7ec"}.tn-icon-music-stop:before{content:"\e7ed"}.tn-icon-video-fill:before{content:"\e7e9"}.tn-icon-video:before{content:"\e7ea"}.tn-icon-voice-fill:before{content:"\e7e7"}.tn-icon-voice:before{content:"\e7e8"}.tn-icon-previous-fill:before{content:"\e7f2"}.tn-icon-next-fill:before{content:"\e7f3"}.tn-icon-play-fill:before{content:"\e7ee"}.tn-icon-stop:before{content:"\e7ef"}.tn-icon-backspace:before{content:"\e814"}.tn-icon-backspace-fill:before{content:"\e815"}.tn-icon-sound-close-fill:before{content:"\e778"}.tn-icon-sound-close:before{content:"\e779"}.tn-icon-sound-fill:before{content:"\e776"}.tn-icon-sound:before{content:"\e777"}.tn-icon-sound-reduce-fill:before{content:"\e7e5"}.tn-icon-sound-reduce:before{content:"\e7e6"}.tn-icon-sound-add:before{content:"\e80c"}.tn-icon-sound-add-fill:before{content:"\e80d"}.tn-icon-sequence-vertical:before{content:"\e79a"}.tn-icon-sequence:before{content:"\e79b"}.tn-icon-align-center:before{content:"\e7e1"}.tn-icon-align-right:before{content:"\e7e2"}.tn-icon-align-left:before{content:"\e7e3"}.tn-icon-align:before{content:"\e7e4"}.tn-icon-title:before{content:"\e772"}.tn-icon-sort:before{content:"\e773"}.tn-icon-more-vertical:before{content:"\e770"}.tn-icon-more-horizontal:before{content:"\e771"}.tn-icon-more-circle:before{content:"\e76e"}.tn-icon-more-circle-fill:before{content:"\e76f"}.tn-icon-warning:before{content:"\e76c"}.tn-icon-warning-fill:before{content:"\e76d"}.tn-icon-zoom-out:before{content:"\e76a"}.tn-icon-zoom-out-fill:before{content:"\e76b"}.tn-icon-zoom-in-fill:before{content:"\e768"}.tn-icon-zoom-in:before{content:"\e769"}.tn-icon-success-square:before{content:"\e763"}.tn-icon-success-circle-fill:before{content:"\e764"}.tn-icon-success-circle:before{content:"\e765"}.tn-icon-success-square-fill:before{content:"\e766"}.tn-icon-success:before{content:"\e767"}.tn-icon-close-fill:before{content:"\e760"}.tn-icon-close:before{content:"\e761"}.tn-icon-close-circle:before{content:"\e762"}.tn-icon-help:before{content:"\e75e"}.tn-icon-help-fill:before{content:"\e75f"}.tn-icon-tip-fill:before{content:"\e75d"}.tn-icon-left:before{content:"\e7e0"}.tn-icon-left-triangle:before{content:"\e757"}.tn-icon-left-fill:before{content:"\e758"}.tn-icon-left-double:before{content:"\e759"}.tn-icon-left-circle:before{content:"\e75a"}.tn-icon-left-arrow:before{content:"\e75b"}.tn-icon-down:before{content:"\e7df"}.tn-icon-down-arrow:before{content:"\e752"}.tn-icon-down-circle:before{content:"\e753"}.tn-icon-down-double:before{content:"\e754"}.tn-icon-down-fill:before{content:"\e755"}.tn-icon-down-triangle:before{content:"\e756"}.tn-icon-right:before{content:"\e7de"}.tn-icon-right-fill:before{content:"\e74d"}.tn-icon-right-arrow:before{content:"\e74e"}.tn-icon-right-double:before{content:"\e74f"}.tn-icon-right-triangle:before{content:"\e750"}.tn-icon-right-circle:before{content:"\e751"}.tn-icon-up:before{content:"\e7dd"}.tn-icon-up-arrow:before{content:"\e748"}.tn-icon-up-circle:before{content:"\e749"}.tn-icon-up-triangle:before{content:"\e74a"}.tn-icon-up-double:before{content:"\e74b"}.tn-icon-up-fill:before{content:"\e74c"}.tn-icon-add-circle:before{content:"\e740"}.tn-icon-add:before{content:"\e741"}.tn-icon-add-fill:before{content:"\e742"}.tn-icon-reduce:before{content:"\e743"}.tn-icon-reduce-square-fill:before{content:"\e744"}.tn-icon-reduce-square:before{content:"\e745"}.tn-icon-reduce-circle:before{content:"\e746"}.tn-icon-reduce-circle-fill:before{content:"\e747"}
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/async-validator/README.md b/uni_modules/tuniaoui-vue3/libs/async-validator/README.md
new file mode 100644
index 0000000..598c3dc
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/async-validator/README.md
@@ -0,0 +1,472 @@
+# async-validator
+
+[![NPM version][npm-image]][npm-url]
+[![build status][travis-image]][travis-url]
+[![Test coverage][coveralls-image]][coveralls-url]
+[![node version][node-image]][node-url]
+[![npm download][download-image]][download-url]
+[![npm bundle size (minified + gzip)][bundlesize-image]][bundlesize-url]
+
+[npm-image]: https://img.shields.io/npm/v/async-validator.svg?style=flat-square
+[npm-url]: https://npmjs.org/package/async-validator
+[travis-image]:https://app.travis-ci.com/yiminghe/async-validator.svg?branch=master
+[travis-url]: https://app.travis-ci.com/github/yiminghe/async-validator
+[coveralls-image]: https://img.shields.io/coveralls/yiminghe/async-validator.svg?style=flat-square
+[coveralls-url]: https://coveralls.io/r/yiminghe/async-validator?branch=master
+[node-image]: https://img.shields.io/badge/node.js-%3E=4.0.0-green.svg?style=flat-square
+[node-url]: https://nodejs.org/download/
+[download-image]: https://img.shields.io/npm/dm/async-validator.svg?style=flat-square
+[download-url]: https://npmjs.org/package/async-validator
+[bundlesize-image]: https://img.shields.io/bundlephobia/minzip/async-validator.svg?label=gzip%20size
+[bundlesize-url]: https://bundlephobia.com/result?p=async-validator
+
+Validate form asynchronous. A variation of https://github.com/freeformsystems/async-validate
+
+## Install
+
+```bash
+npm i async-validator
+```
+
+## Usage
+
+Basic usage involves defining a descriptor, assigning it to a schema and passing the object to be validated and a callback function to the `validate` method of the schema:
+
+```js
+import Schema from 'async-validator';
+const descriptor = {
+ name: {
+ type: 'string',
+ required: true,
+ validator: (rule, value) => value === 'muji',
+ },
+ age: {
+ type: 'number',
+ asyncValidator: (rule, value) => {
+ return new Promise((resolve, reject) => {
+ if (value < 18) {
+ reject('too young'); // reject with error message
+ } else {
+ resolve();
+ }
+ });
+ },
+ },
+};
+const validator = new Schema(descriptor);
+validator.validate({ name: 'muji' }, (errors, fields) => {
+ if (errors) {
+ // validation failed, errors is an array of all errors
+ // fields is an object keyed by field name with an array of
+ // errors per field
+ return handleErrors(errors, fields);
+ }
+ // validation passed
+});
+
+// PROMISE USAGE
+validator.validate({ name: 'muji', age: 16 }).then(() => {
+ // validation passed or without error message
+}).catch(({ errors, fields }) => {
+ return handleErrors(errors, fields);
+});
+```
+
+## API
+
+### Validate
+
+```js
+function(source, [options], callback): Promise
+```
+
+* `source`: The object to validate (required).
+* `options`: An object describing processing options for the validation (optional).
+* `callback`: A callback function to invoke when validation completes (optional).
+
+The method will return a Promise object like:
+* `then()`,validation passed
+* `catch({ errors, fields })`,validation failed, errors is an array of all errors, fields is an object keyed by field name with an array of errors per field
+
+### Options
+
+* `suppressWarning`: Boolean, whether to suppress internal warning about invalid value.
+
+* `first`: Boolean, Invoke `callback` when the first validation rule generates an error,
+no more validation rules are processed.
+If your validation involves multiple asynchronous calls (for example, database queries) and you only need the first error use this option.
+
+* `firstFields`: Boolean|String[], Invoke `callback` when the first validation rule of the specified field generates an error,
+no more validation rules of the same field are processed. `true` means all fields.
+
+### Rules
+
+Rules may be functions that perform validation.
+
+```js
+function(rule, value, callback, source, options)
+```
+
+* `rule`: The validation rule in the source descriptor that corresponds to the field name being validated. It is always assigned a `field` property with the name of the field being validated.
+* `value`: The value of the source object property being validated.
+* `callback`: A callback function to invoke once validation is complete. It expects to be passed an array of `Error` instances to indicate validation failure. If the check is synchronous, you can directly return a ` false ` or ` Error ` or ` Error Array `.
+* `source`: The source object that was passed to the `validate` method.
+* `options`: Additional options.
+* `options.messages`: The object containing validation error messages, will be deep merged with defaultMessages.
+
+The options passed to `validate` or `asyncValidate` are passed on to the validation functions so that you may reference transient data (such as model references) in validation functions. However, some option names are reserved; if you use these properties of the options object they are overwritten. The reserved properties are `messages`, `exception` and `error`.
+
+```js
+import Schema from 'async-validator';
+const descriptor = {
+ name(rule, value, callback, source, options) {
+ const errors = [];
+ if (!/^[a-z0-9]+$/.test(value)) {
+ errors.push(new Error(
+ util.format('%s must be lowercase alphanumeric characters', rule.field),
+ ));
+ }
+ return errors;
+ },
+};
+const validator = new Schema(descriptor);
+validator.validate({ name: 'Firstname' }, (errors, fields) => {
+ if (errors) {
+ return handleErrors(errors, fields);
+ }
+ // validation passed
+});
+```
+
+It is often useful to test against multiple validation rules for a single field, to do so make the rule an array of objects, for example:
+
+```js
+const descriptor = {
+ email: [
+ { type: 'string', required: true, pattern: Schema.pattern.email },
+ {
+ validator(rule, value, callback, source, options) {
+ const errors = [];
+ // test if email address already exists in a database
+ // and add a validation error to the errors array if it does
+ return errors;
+ },
+ },
+ ],
+};
+```
+
+#### Type
+
+Indicates the `type` of validator to use. Recognised type values are:
+
+* `string`: Must be of type `string`. `This is the default type.`
+* `number`: Must be of type `number`.
+* `boolean`: Must be of type `boolean`.
+* `method`: Must be of type `function`.
+* `regexp`: Must be an instance of `RegExp` or a string that does not generate an exception when creating a new `RegExp`.
+* `integer`: Must be of type `number` and an integer.
+* `float`: Must be of type `number` and a floating point number.
+* `array`: Must be an array as determined by `Array.isArray`.
+* `object`: Must be of type `object` and not `Array.isArray`.
+* `enum`: Value must exist in the `enum`.
+* `date`: Value must be valid as determined by `Date`
+* `url`: Must be of type `url`.
+* `hex`: Must be of type `hex`.
+* `email`: Must be of type `email`.
+* `any`: Can be any type.
+
+#### Required
+
+The `required` rule property indicates that the field must exist on the source object being validated.
+
+#### Pattern
+
+The `pattern` rule property indicates a regular expression that the value must match to pass validation.
+
+#### Range
+
+A range is defined using the `min` and `max` properties. For `string` and `array` types comparison is performed against the `length`, for `number` types the number must not be less than `min` nor greater than `max`.
+
+#### Length
+
+To validate an exact length of a field specify the `len` property. For `string` and `array` types comparison is performed on the `length` property, for the `number` type this property indicates an exact match for the `number`, ie, it may only be strictly equal to `len`.
+
+If the `len` property is combined with the `min` and `max` range properties, `len` takes precedence.
+
+#### Enumerable
+
+> Since version 3.0.0 if you want to validate the values `0` or `false` inside `enum` types, you have to include them explicitly.
+
+To validate a value from a list of possible values use the `enum` type with a `enum` property listing the valid values for the field, for example:
+
+```js
+const descriptor = {
+ role: { type: 'enum', enum: ['admin', 'user', 'guest'] },
+};
+```
+
+#### Whitespace
+
+It is typical to treat required fields that only contain whitespace as errors. To add an additional test for a string that consists solely of whitespace add a `whitespace` property to a rule with a value of `true`. The rule must be a `string` type.
+
+You may wish to sanitize user input instead of testing for whitespace, see [transform](#transform) for an example that would allow you to strip whitespace.
+
+
+#### Deep Rules
+
+If you need to validate deep object properties you may do so for validation rules that are of the `object` or `array` type by assigning nested rules to a `fields` property of the rule.
+
+```js
+const descriptor = {
+ address: {
+ type: 'object',
+ required: true,
+ fields: {
+ street: { type: 'string', required: true },
+ city: { type: 'string', required: true },
+ zip: { type: 'string', required: true, len: 8, message: 'invalid zip' },
+ },
+ },
+ name: { type: 'string', required: true },
+};
+const validator = new Schema(descriptor);
+validator.validate({ address: {} }, (errors, fields) => {
+ // errors for address.street, address.city, address.zip
+});
+```
+
+Note that if you do not specify the `required` property on the parent rule it is perfectly valid for the field not to be declared on the source object and the deep validation rules will not be executed as there is nothing to validate against.
+
+Deep rule validation creates a schema for the nested rules so you can also specify the `options` passed to the `schema.validate()` method.
+
+```js
+const descriptor = {
+ address: {
+ type: 'object',
+ required: true,
+ options: { first: true },
+ fields: {
+ street: { type: 'string', required: true },
+ city: { type: 'string', required: true },
+ zip: { type: 'string', required: true, len: 8, message: 'invalid zip' },
+ },
+ },
+ name: { type: 'string', required: true },
+};
+const validator = new Schema(descriptor);
+
+validator.validate({ address: {} })
+ .catch(({ errors, fields }) => {
+ // now only errors for street and name
+ });
+```
+
+The parent rule is also validated so if you have a set of rules such as:
+
+```js
+const descriptor = {
+ roles: {
+ type: 'array',
+ required: true,
+ len: 3,
+ fields: {
+ 0: { type: 'string', required: true },
+ 1: { type: 'string', required: true },
+ 2: { type: 'string', required: true },
+ },
+ },
+};
+```
+
+And supply a source object of `{ roles: ['admin', 'user'] }` then two errors will be created. One for the array length mismatch and one for the missing required array entry at index 2.
+
+#### defaultField
+
+The `defaultField` property can be used with the `array` or `object` type for validating all values of the container.
+It may be an `object` or `array` containing validation rules. For example:
+
+```js
+const descriptor = {
+ urls: {
+ type: 'array',
+ required: true,
+ defaultField: { type: 'url' },
+ },
+};
+```
+
+Note that `defaultField` is expanded to `fields`, see [deep rules](#deep-rules).
+
+#### Transform
+
+Sometimes it is necessary to transform a value before validation, possibly to coerce the value or to sanitize it in some way. To do this add a `transform` function to the validation rule. The property is transformed prior to validation and returned as promise result or callback result when pass validation.
+
+```js
+import Schema from 'async-validator';
+const descriptor = {
+ name: {
+ type: 'string',
+ required: true,
+ pattern: /^[a-z]+$/,
+ transform(value) {
+ return value.trim();
+ },
+ },
+};
+const validator = new Schema(descriptor);
+const source = { name: ' user ' };
+
+validator.validate(source)
+ .then((data) => assert.equal(data.name, 'user'));
+
+validator.validate(source,(errors, data)=>{
+ assert.equal(data.name, 'user'));
+});
+```
+
+Without the `transform` function validation would fail due to the pattern not matching as the input contains leading and trailing whitespace, but by adding the transform function validation passes and the field value is sanitized at the same time.
+
+
+#### Messages
+
+Depending upon your application requirements, you may need i18n support or you may prefer different validation error messages.
+
+The easiest way to achieve this is to assign a `message` to a rule:
+
+```js
+{ name: { type: 'string', required: true, message: 'Name is required' } }
+```
+
+Message can be any type, such as jsx format.
+
+```js
+{ name: { type: 'string', required: true, message: 'Name is required' } }
+```
+
+Message can also be a function, e.g. if you use vue-i18n:
+```js
+{ name: { type: 'string', required: true, message: () => this.$t( 'name is required' ) } }
+```
+
+Potentially you may require the same schema validation rules for different languages, in which case duplicating the schema rules for each language does not make sense.
+
+In this scenario you could just provide your own messages for the language and assign it to the schema:
+
+```js
+import Schema from 'async-validator';
+const cn = {
+ required: '%s 必填',
+};
+const descriptor = { name: { type: 'string', required: true } };
+const validator = new Schema(descriptor);
+// deep merge with defaultMessages
+validator.messages(cn);
+...
+```
+
+If you are defining your own validation functions it is better practice to assign the message strings to a messages object and then access the messages via the `options.messages` property within the validation function.
+
+#### asyncValidator
+
+You can customize the asynchronous validation function for the specified field:
+
+```js
+const fields = {
+ asyncField: {
+ asyncValidator(rule, value, callback) {
+ ajax({
+ url: 'xx',
+ value: value,
+ }).then(function(data) {
+ callback();
+ }, function(error) {
+ callback(new Error(error));
+ });
+ },
+ },
+
+ promiseField: {
+ asyncValidator(rule, value) {
+ return ajax({
+ url: 'xx',
+ value: value,
+ });
+ },
+ },
+};
+```
+
+#### validator
+
+You can custom validate function for specified field:
+
+```js
+const fields = {
+ field: {
+ validator(rule, value, callback) {
+ return value === 'test';
+ },
+ message: 'Value is not equal to "test".',
+ },
+
+ field2: {
+ validator(rule, value, callback) {
+ return new Error(`${value} is not equal to 'test'.`);
+ },
+ },
+
+ arrField: {
+ validator(rule, value) {
+ return [
+ new Error('Message 1'),
+ new Error('Message 2'),
+ ];
+ },
+ },
+};
+```
+
+## FAQ
+
+### How to avoid global warning
+
+```js
+import Schema from 'async-validator';
+Schema.warning = function(){};
+```
+
+or
+```js
+globalThis.ASYNC_VALIDATOR_NO_WARNING = 1;
+```
+
+### How to check if it is `true`
+
+Use `enum` type passing `true` as option.
+
+```js
+{
+ type: 'enum',
+ enum: [true],
+ message: '',
+}
+```
+
+## Test Case
+
+```bash
+npm test
+```
+
+## Coverage
+
+```bash
+npm run coverage
+```
+
+Open coverage/ dir
+
+## License
+
+Everything is [MIT](https://en.wikipedia.org/wiki/MIT_License).
diff --git a/uni_modules/tuniaoui-vue3/libs/async-validator/rule/type.ts b/uni_modules/tuniaoui-vue3/libs/async-validator/rule/type.ts
new file mode 100644
index 0000000..a6c37d6
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/async-validator/rule/type.ts
@@ -0,0 +1,109 @@
+import type { ExecuteRule, Value } from '../interface';
+import { format } from '../util';
+import required from './required';
+import getUrlRegex from './url';
+/* eslint max-len:0 */
+
+const pattern = {
+ // http://emailregex.com/
+ email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,
+ // url: new RegExp(
+ // '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$',
+ // 'i',
+ // ),
+ hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i,
+};
+
+const types = {
+ integer(value: Value) {
+ return types.number(value) && parseInt(value, 10) === value;
+ },
+ float(value: Value) {
+ return types.number(value) && !types.integer(value);
+ },
+ array(value: Value) {
+ return Array.isArray(value);
+ },
+ regexp(value: Value) {
+ if (value instanceof RegExp) {
+ return true;
+ }
+ try {
+ return !!new RegExp(value);
+ } catch (e) {
+ return false;
+ }
+ },
+ date(value: Value) {
+ return (
+ typeof value.getTime === 'function' &&
+ typeof value.getMonth === 'function' &&
+ typeof value.getYear === 'function' &&
+ !isNaN(value.getTime())
+ );
+ },
+ number(value: Value) {
+ if (isNaN(value)) {
+ return false;
+ }
+ return typeof value === 'number';
+ },
+ object(value: Value) {
+ return typeof value === 'object' && !types.array(value);
+ },
+ method(value: Value) {
+ return typeof value === 'function';
+ },
+ email(value: Value) {
+ return (
+ typeof value === 'string' &&
+ value.length <= 320 &&
+ !!value.match(pattern.email)
+ );
+ },
+ url(value: Value) {
+ return (
+ typeof value === 'string' &&
+ value.length <= 2048 &&
+ !!value.match(getUrlRegex())
+ );
+ },
+ hex(value: Value) {
+ return typeof value === 'string' && !!value.match(pattern.hex);
+ },
+};
+
+const type: ExecuteRule = (rule, value, source, errors, options) => {
+ if (rule.required && value === undefined) {
+ required(rule, value, source, errors, options);
+ return;
+ }
+ const custom = [
+ 'integer',
+ 'float',
+ 'array',
+ 'regexp',
+ 'object',
+ 'method',
+ 'email',
+ 'number',
+ 'date',
+ 'url',
+ 'hex',
+ ];
+ const ruleType = rule.type;
+ if (custom.indexOf(ruleType) > -1) {
+ if (!types[ruleType](value)) {
+ errors.push(
+ format(options.messages.types[ruleType], rule.fullField, rule.type),
+ );
+ }
+ // straight typeof check
+ } else if (ruleType && typeof value !== rule.type) {
+ errors.push(
+ format(options.messages.types[ruleType], rule.fullField, rule.type),
+ );
+ }
+};
+
+export default type;
diff --git a/uni_modules/tuniaoui-vue3/libs/async-validator/rule/whitespace.ts b/uni_modules/tuniaoui-vue3/libs/async-validator/rule/whitespace.ts
new file mode 100644
index 0000000..a1fa204
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/async-validator/rule/whitespace.ts
@@ -0,0 +1,21 @@
+import type { ExecuteRule } from '../interface';
+import { format } from '../util';
+
+/**
+ * Rule for validating whitespace.
+ *
+ * @param rule The validation rule.
+ * @param value The value of the field on the source object.
+ * @param source The source object being validated.
+ * @param errors An array of errors that this rule may add
+ * validation errors to.
+ * @param options The validation options.
+ * @param options.messages The validation messages.
+ */
+const whitespace: ExecuteRule = (rule, value, source, errors, options) => {
+ if (/^\s+$/.test(value) || value === '') {
+ errors.push(format(options.messages.whitespace, rule.fullField));
+ }
+};
+
+export default whitespace;
diff --git a/uni_modules/tuniaoui-vue3/libs/async-validator/util.ts b/uni_modules/tuniaoui-vue3/libs/async-validator/util.ts
new file mode 100644
index 0000000..c53e91f
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/async-validator/util.ts
@@ -0,0 +1,309 @@
+/* eslint no-console:0 */
+
+import type {
+ ValidateError,
+ ValidateOption,
+ RuleValuePackage,
+ InternalRuleItem,
+ SyncErrorType,
+ RuleType,
+ Value,
+ Values,
+} from './interface';
+
+const formatRegExp = /%[sdj%]/g;
+
+declare var ASYNC_VALIDATOR_NO_WARNING;
+
+export let warning: (type: string, errors: SyncErrorType[]) => void = () => {};
+
+// don't print warning message when in production env or node runtime
+if (
+ typeof process !== 'undefined' &&
+ process.env &&
+ process.env.NODE_ENV !== 'production' &&
+ typeof window !== 'undefined' &&
+ typeof document !== 'undefined'
+) {
+ warning = (type, errors) => {
+ if (
+ typeof console !== 'undefined' &&
+ console.warn &&
+ typeof ASYNC_VALIDATOR_NO_WARNING === 'undefined'
+ ) {
+ if (errors.every(e => typeof e === 'string')) {
+ console.warn(type, errors);
+ }
+ }
+ };
+}
+
+export function convertFieldsError(
+ errors: ValidateError[],
+): Record {
+ if (!errors || !errors.length) return null;
+ const fields = {};
+ errors.forEach(error => {
+ const field = error.field;
+ fields[field] = fields[field] || [];
+ fields[field].push(error);
+ });
+ return fields;
+}
+
+export function format(
+ template: ((...args: any[]) => string) | string,
+ ...args: any[]
+): string {
+ let i = 0;
+ const len = args.length;
+ if (typeof template === 'function') {
+ return template.apply(null, args);
+ }
+ if (typeof template === 'string') {
+ let str = template.replace(formatRegExp, x => {
+ if (x === '%%') {
+ return '%';
+ }
+ if (i >= len) {
+ return x;
+ }
+ switch (x) {
+ case '%s':
+ return String(args[i++]);
+ case '%d':
+ return (Number(args[i++]) as unknown) as string;
+ case '%j':
+ try {
+ return JSON.stringify(args[i++]);
+ } catch (_) {
+ return '[Circular]';
+ }
+ break;
+ default:
+ return x;
+ }
+ });
+ return str;
+ }
+ return template;
+}
+
+function isNativeStringType(type: string) {
+ return (
+ type === 'string' ||
+ type === 'url' ||
+ type === 'hex' ||
+ type === 'email' ||
+ type === 'date' ||
+ type === 'pattern'
+ );
+}
+
+export function isEmptyValue(value: Value, type?: string) {
+ if (value === undefined || value === null) {
+ return true;
+ }
+ if (type === 'array' && Array.isArray(value) && !value.length) {
+ return true;
+ }
+ if (isNativeStringType(type) && typeof value === 'string' && !value) {
+ return true;
+ }
+ return false;
+}
+
+export function isEmptyObject(obj: object) {
+ return Object.keys(obj).length === 0;
+}
+
+function asyncParallelArray(
+ arr: RuleValuePackage[],
+ func: ValidateFunc,
+ callback: (errors: ValidateError[]) => void,
+) {
+ const results: ValidateError[] = [];
+ let total = 0;
+ const arrLength = arr.length;
+
+ function count(errors: ValidateError[]) {
+ results.push(...(errors || []));
+ total++;
+ if (total === arrLength) {
+ callback(results);
+ }
+ }
+
+ arr.forEach(a => {
+ func(a, count);
+ });
+}
+
+function asyncSerialArray(
+ arr: RuleValuePackage[],
+ func: ValidateFunc,
+ callback: (errors: ValidateError[]) => void,
+) {
+ let index = 0;
+ const arrLength = arr.length;
+
+ function next(errors: ValidateError[]) {
+ if (errors && errors.length) {
+ callback(errors);
+ return;
+ }
+ const original = index;
+ index = index + 1;
+ if (original < arrLength) {
+ func(arr[original], next);
+ } else {
+ callback([]);
+ }
+ }
+
+ next([]);
+}
+
+function flattenObjArr(objArr: Record) {
+ const ret: RuleValuePackage[] = [];
+ Object.keys(objArr).forEach(k => {
+ ret.push(...(objArr[k] || []));
+ });
+ return ret;
+}
+
+export class AsyncValidationError extends Error {
+ errors: ValidateError[];
+ fields: Record;
+
+ constructor(
+ errors: ValidateError[],
+ fields: Record,
+ ) {
+ super('Async Validation Error');
+ this.errors = errors;
+ this.fields = fields;
+ }
+}
+
+type ValidateFunc = (
+ data: RuleValuePackage,
+ doIt: (errors: ValidateError[]) => void,
+) => void;
+
+export function asyncMap(
+ objArr: Record,
+ option: ValidateOption,
+ func: ValidateFunc,
+ callback: (errors: ValidateError[]) => void,
+ source: Values,
+): Promise {
+ if (option.first) {
+ const pending = new Promise((resolve, reject) => {
+ const next = (errors: ValidateError[]) => {
+ callback(errors);
+ return errors.length
+ ? reject(new AsyncValidationError(errors, convertFieldsError(errors)))
+ : resolve(source);
+ };
+ const flattenArr = flattenObjArr(objArr);
+ asyncSerialArray(flattenArr, func, next);
+ });
+ pending.catch(e => e);
+ return pending;
+ }
+ const firstFields =
+ option.firstFields === true
+ ? Object.keys(objArr)
+ : option.firstFields || [];
+
+ const objArrKeys = Object.keys(objArr);
+ const objArrLength = objArrKeys.length;
+ let total = 0;
+ const results: ValidateError[] = [];
+ const pending = new Promise((resolve, reject) => {
+ const next = (errors: ValidateError[]) => {
+ results.push.apply(results, errors);
+ total++;
+ if (total === objArrLength) {
+ callback(results);
+ return results.length
+ ? reject(
+ new AsyncValidationError(results, convertFieldsError(results)),
+ )
+ : resolve(source);
+ }
+ };
+ if (!objArrKeys.length) {
+ callback(results);
+ resolve(source);
+ }
+ objArrKeys.forEach(key => {
+ const arr = objArr[key];
+ if (firstFields.indexOf(key) !== -1) {
+ asyncSerialArray(arr, func, next);
+ } else {
+ asyncParallelArray(arr, func, next);
+ }
+ });
+ });
+ pending.catch(e => e);
+ return pending;
+}
+
+function isErrorObj(
+ obj: ValidateError | string | (() => string),
+): obj is ValidateError {
+ return !!(obj && (obj as ValidateError).message !== undefined);
+}
+
+function getValue(value: Values, path: string[]) {
+ let v = value;
+ for (let i = 0; i < path.length; i++) {
+ if (v == undefined) {
+ return v;
+ }
+ v = v[path[i]];
+ }
+ return v;
+}
+
+export function complementError(rule: InternalRuleItem, source: Values) {
+ return (oe: ValidateError | (() => string) | string): ValidateError => {
+ let fieldValue;
+ if (rule.fullFields) {
+ fieldValue = getValue(source, rule.fullFields);
+ } else {
+ fieldValue = source[(oe as any).field || rule.fullField];
+ }
+ if (isErrorObj(oe)) {
+ oe.field = oe.field || rule.fullField;
+ oe.fieldValue = fieldValue;
+ return oe;
+ }
+ return {
+ message: typeof oe === 'function' ? oe() : oe,
+ fieldValue,
+ field: ((oe as unknown) as ValidateError).field || rule.fullField,
+ };
+ };
+}
+
+export function deepMerge(target: T, source: Partial): T {
+ if (source) {
+ for (const s in source) {
+ if (source.hasOwnProperty(s)) {
+ const value = source[s];
+ if (typeof value === 'object' && typeof target[s] === 'object') {
+ target[s] = {
+ ...target[s],
+ ...value,
+ };
+ } else {
+ target[s] = value;
+ }
+ }
+ }
+ }
+ return target;
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/async-validator/validator/boolean.ts b/uni_modules/tuniaoui-vue3/libs/async-validator/validator/boolean.ts
new file mode 100644
index 0000000..ad50195
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/async-validator/validator/boolean.ts
@@ -0,0 +1,21 @@
+import { isEmptyValue } from '../util';
+import rules from '../rule';
+import type { ExecuteValidator } from '../interface';
+
+const boolean: ExecuteValidator = (rule, value, callback, source, options) => {
+ const errors: string[] = [];
+ const validate =
+ rule.required || (!rule.required && source.hasOwnProperty(rule.field));
+ if (validate) {
+ if (isEmptyValue(value) && !rule.required) {
+ return callback();
+ }
+ rules.required(rule, value, source, errors, options);
+ if (value !== undefined) {
+ rules.type(rule, value, source, errors, options);
+ }
+ }
+ callback(errors);
+};
+
+export default boolean;
diff --git a/uni_modules/tuniaoui-vue3/libs/async-validator/validator/integer.ts b/uni_modules/tuniaoui-vue3/libs/async-validator/validator/integer.ts
new file mode 100644
index 0000000..9a40778
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/async-validator/validator/integer.ts
@@ -0,0 +1,22 @@
+import type { ExecuteValidator } from '../interface';
+import rules from '../rule';
+import { isEmptyValue } from '../util';
+
+const integer: ExecuteValidator = (rule, value, callback, source, options) => {
+ const errors: string[] = [];
+ const validate =
+ rule.required || (!rule.required && source.hasOwnProperty(rule.field));
+ if (validate) {
+ if (isEmptyValue(value) && !rule.required) {
+ return callback();
+ }
+ rules.required(rule, value, source, errors, options);
+ if (value !== undefined) {
+ rules.type(rule, value, source, errors, options);
+ rules.range(rule, value, source, errors, options);
+ }
+ }
+ callback(errors);
+};
+
+export default integer;
diff --git a/uni_modules/tuniaoui-vue3/libs/async-validator/validator/string.ts b/uni_modules/tuniaoui-vue3/libs/async-validator/validator/string.ts
new file mode 100644
index 0000000..cf3868a
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/async-validator/validator/string.ts
@@ -0,0 +1,26 @@
+import type { ExecuteValidator } from '../interface';
+import rules from '../rule';
+import { isEmptyValue } from '../util';
+
+const string: ExecuteValidator = (rule, value, callback, source, options) => {
+ const errors: string[] = [];
+ const validate =
+ rule.required || (!rule.required && source.hasOwnProperty(rule.field));
+ if (validate) {
+ if (isEmptyValue(value, 'string') && !rule.required) {
+ return callback();
+ }
+ rules.required(rule, value, source, errors, options, 'string');
+ if (!isEmptyValue(value, 'string')) {
+ rules.type(rule, value, source, errors, options);
+ rules.range(rule, value, source, errors, options);
+ rules.pattern(rule, value, source, errors, options);
+ if (rule.whitespace === true) {
+ rules.whitespace(rule, value, source, errors, options);
+ }
+ }
+ }
+ callback(errors);
+};
+
+export default string;
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/CHANGELOG.md b/uni_modules/tuniaoui-vue3/libs/dayjs/CHANGELOG.md
new file mode 100644
index 0000000..6252fd8
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/CHANGELOG.md
@@ -0,0 +1,887 @@
+## [1.11.8](https://github.com/iamkun/dayjs/compare/v1.11.7...v1.11.8) (2023-06-02)
+
+
+### Bug Fixes
+
+* .format add padding to 'YYYY' ([#2231](https://github.com/iamkun/dayjs/issues/2231)) ([00c223b](https://github.com/iamkun/dayjs/commit/00c223b7e92970d07557133994fcb225a6d4c960))
+* Added .valueOf method to Duration class ([#2226](https://github.com/iamkun/dayjs/issues/2226)) ([9b4fcfd](https://github.com/iamkun/dayjs/commit/9b4fcfde35b39693894be1821b6c7222fac98657))
+* timezone type mark `date` parameter as optional ([#2222](https://github.com/iamkun/dayjs/issues/2222)) ([b87aa0e](https://github.com/iamkun/dayjs/commit/b87aa0ed9a748c478a66ef48230cd1d6350d7b8a))
+* type file first parameter date is optional in isSame(), isBefore(), isAfter() ([#2272](https://github.com/iamkun/dayjs/issues/2272)) ([4d56f3e](https://github.com/iamkun/dayjs/commit/4d56f3eb2b3770879d60f824590bf1b32f237d47))
+
+## [1.11.7](https://github.com/iamkun/dayjs/compare/v1.11.6...v1.11.7) (2022-12-06)
+
+
+### Bug Fixes
+
+* Add locale (zh-tw) meridiem ([#2149](https://github.com/iamkun/dayjs/issues/2149)) ([1e9ba76](https://github.com/iamkun/dayjs/commit/1e9ba761ff4e3f2759106dfe1aa9054d5826451c))
+* update fa locale ([#2151](https://github.com/iamkun/dayjs/issues/2151)) ([1c26732](https://github.com/iamkun/dayjs/commit/1c267321a1a01b4947e1482bac67d67ebc7c3dfa))
+
+## [1.11.6](https://github.com/iamkun/dayjs/compare/v1.11.5...v1.11.6) (2022-10-21)
+
+
+### Bug Fixes
+
+* add BigIntSupport plugin ([#2087](https://github.com/iamkun/dayjs/issues/2087)) ([f6dce48](https://github.com/iamkun/dayjs/commit/f6dce48a9e39677718b087867d9fd901d5078155))
+* Fix objectSupport collides with Duration plugin - issue [#2027](https://github.com/iamkun/dayjs/issues/2027) ([#2038](https://github.com/iamkun/dayjs/issues/2038)) ([c9370ea](https://github.com/iamkun/dayjs/commit/c9370ea96bf420439ee7eaa4146e8ed643160312))
+
+## [1.11.5](https://github.com/iamkun/dayjs/compare/v1.11.4...v1.11.5) (2022-08-12)
+
+
+### Bug Fixes
+
+* ordinal for nl not working ([#2011](https://github.com/iamkun/dayjs/issues/2011)) ([c93c85e](https://github.com/iamkun/dayjs/commit/c93c85eaa11564a1aae2d823480a417812c01bf4))
+* wrong ordinal for french locale ([#2010](https://github.com/iamkun/dayjs/issues/2010)) ([dd192a7](https://github.com/iamkun/dayjs/commit/dd192a72fc5d26ce56481e89b0c1ccf5f939be0c))
+
+## [1.11.4](https://github.com/iamkun/dayjs/compare/v1.11.3...v1.11.4) (2022-07-19)
+
+
+### Bug Fixes
+
+* correct past property in ku (kurdish) locale ([#1916](https://github.com/iamkun/dayjs/issues/1916)) ([74e82b9](https://github.com/iamkun/dayjs/commit/74e82b9da5ec8b90361fc27ac7c8b63faf354502))
+* fix French [fr] local ordinal ([#1932](https://github.com/iamkun/dayjs/issues/1932)) ([8f09834](https://github.com/iamkun/dayjs/commit/8f09834a88b8e7f8353c6e7473d4711596890a8c))
+* fix objectSupport plugin ConfigTypeMap type ([#1441](https://github.com/iamkun/dayjs/issues/1441)) ([#1990](https://github.com/iamkun/dayjs/issues/1990)) ([fd51fe4](https://github.com/iamkun/dayjs/commit/fd51fe4f7fa799d8c598343e71fa59299ec4cf93))
+* fix type error to add ordianl property in InstanceLocaleDataReturn and GlobalLocaleDataReturn types ([#1931](https://github.com/iamkun/dayjs/issues/1931)) ([526f0ae](https://github.com/iamkun/dayjs/commit/526f0ae549ffbeeb9ef1099ca23964791fc59743))
+* update locale ar-* meridiem function ([#1954](https://github.com/iamkun/dayjs/issues/1954)) ([3d31611](https://github.com/iamkun/dayjs/commit/3d316117f04362d31f4e8bd349620b8414ce5d0c))
+* zh-tw / zh-hk locale ordinal error ([#1976](https://github.com/iamkun/dayjs/issues/1976)) ([0a1bd08](https://github.com/iamkun/dayjs/commit/0a1bd08e736be7d4e378aaca280caa6543f8066d))
+
+## [1.11.3](https://github.com/iamkun/dayjs/compare/v1.11.2...v1.11.3) (2022-06-06)
+
+
+### Bug Fixes
+
+* customParseFormat plugin to parse comma as a separator character ([#1913](https://github.com/iamkun/dayjs/issues/1913)) ([41b1405](https://github.com/iamkun/dayjs/commit/41b1405971e099431211ae6c2a100cd797da4427))
+* update Dutch [nl] locale ordinal ([#1908](https://github.com/iamkun/dayjs/issues/1908)) ([5da98f8](https://github.com/iamkun/dayjs/commit/5da98f8085d2d2847d79e38c795082703a14f24b))
+
+## [1.11.2](https://github.com/iamkun/dayjs/compare/v1.11.1...v1.11.2) (2022-05-06)
+
+
+### Bug Fixes
+
+* add OpUnitType (week) to quarterOfYear startOf/endOf types ([#1865](https://github.com/iamkun/dayjs/issues/1865)) ([400bc3e](https://github.com/iamkun/dayjs/commit/400bc3e8915e0c58e7abbfd3a1235364b1abaf3e))
+* Fix type issue with ManipulateType ([#1864](https://github.com/iamkun/dayjs/issues/1864)) ([d033dfc](https://github.com/iamkun/dayjs/commit/d033dfcfc1d2ced39b2733898e8d85ad5984c9e9))
+* fix UTC plugin .valueOf not taking DST into account ([#1448](https://github.com/iamkun/dayjs/issues/1448)) ([27d1c50](https://github.com/iamkun/dayjs/commit/27d1c506100ae6624f258c21cc06b24768ced733))
+
+## [1.11.1](https://github.com/iamkun/dayjs/compare/v1.11.0...v1.11.1) (2022-04-15)
+
+
+### Bug Fixes
+
+* add Bengali (Bangladesh) [bn-bd] locale ([#1806](https://github.com/iamkun/dayjs/issues/1806)) ([840ed76](https://github.com/iamkun/dayjs/commit/840ed76eedc085afefc4dedd05f31d44196b63b0))
+* refactor replace deprecated String.prototype.substr() ([#1836](https://github.com/iamkun/dayjs/issues/1836)) ([627fa39](https://github.com/iamkun/dayjs/commit/627fa393e4daf83c92431162dbe18534b23fcbae))
+* Update German [de] locale, adds the abbreviations for month including a . in the end, as in September -> Sept. ([#1831](https://github.com/iamkun/dayjs/issues/1831)) ([4e2802c](https://github.com/iamkun/dayjs/commit/4e2802cc3bec2941ffb737a15fb531c90951eafe))
+* update Italian (Switzerland) [it-ch] locale relativeTime ([#1829](https://github.com/iamkun/dayjs/issues/1829)) ([8e6d11d](https://github.com/iamkun/dayjs/commit/8e6d11d053393d97bee1ba411adb2d82de1a58c4))
+* update Kurdish [ku] locale strings and formatted output contains non-standard kurdish characters ([#1848](https://github.com/iamkun/dayjs/issues/1848)) ([a597d0b](https://github.com/iamkun/dayjs/commit/a597d0b1b8dd28e626f8c59d326622088f7b51e7))
+* update locale bo [Tibetan]: corrected the orders in formats ([#1823](https://github.com/iamkun/dayjs/issues/1823)) ([e790516](https://github.com/iamkun/dayjs/commit/e79051617af6787358f6c9b5443d987b8b53a9e1))
+
+# [1.11.0](https://github.com/iamkun/dayjs/compare/v1.10.8...v1.11.0) (2022-03-14)
+
+
+### Bug Fixes
+
+* Add Kirundi (rn) locale ([#1793](https://github.com/iamkun/dayjs/issues/1793)) ([74e5247](https://github.com/iamkun/dayjs/commit/74e5247227a779fffde39bdfcd1ee19911496709))
+* add missing date shorthand D type definition ([#1752](https://github.com/iamkun/dayjs/issues/1752)) ([b045baf](https://github.com/iamkun/dayjs/commit/b045baf1646a81f7e4f446f355d02d5fb0ef4aa7))
+* Add relative time to Galician (gl) and fix ordinals ([#1800](https://github.com/iamkun/dayjs/issues/1800)) ([dcbf170](https://github.com/iamkun/dayjs/commit/dcbf1708400624addfbddbc71e0f6a9ac15fa961))
+* update German locales (de-at, de-ch) ([#1775](https://github.com/iamkun/dayjs/issues/1775)) ([f9055a7](https://github.com/iamkun/dayjs/commit/f9055a77bf3d84c575e5fcf99e21611138ba64d7))
+* update Icelandic [is] locale relativeTime config ([#1796](https://github.com/iamkun/dayjs/issues/1796)) ([76f9e17](https://github.com/iamkun/dayjs/commit/76f9e1756de7e99c01e471dab30ea074b9ec9629))
+* Update index.d.ts note ([#1716](https://github.com/iamkun/dayjs/issues/1716)) ([5a108ff](https://github.com/iamkun/dayjs/commit/5a108ff3159c53fd270ea7638f33c35c934d6457))
+* Update locale German [de] monthsShort ([#1746](https://github.com/iamkun/dayjs/issues/1746)) ([4a7b7d0](https://github.com/iamkun/dayjs/commit/4a7b7d07c885bb9338514c234dbb708e24e9863e))
+* update meridiem function to Kurdish (ku) locale ([#1725](https://github.com/iamkun/dayjs/issues/1725)) ([efd3904](https://github.com/iamkun/dayjs/commit/efd3904ff8cbf0a4fc064911dda76fc86b669f7b))
+* update updateLocal plugin typescript types ([#1692](https://github.com/iamkun/dayjs/issues/1692)) ([c7a3f73](https://github.com/iamkun/dayjs/commit/c7a3f73064dbb63b4d365b2ad4c792f075f4d8d8))
+
+
+### Features
+
+* Fallback to language only locale + support uppercase locales ([#1524](https://github.com/iamkun/dayjs/issues/1524)) ([9138dc2](https://github.com/iamkun/dayjs/commit/9138dc28206875372da4fb74c64716437cd11b95))
+
+## [1.10.8](https://github.com/iamkun/dayjs/compare/v1.10.7...v1.10.8) (2022-02-28)
+
+
+### Bug Fixes
+
+* set locale pt, pt-br correct weekdays and months ([#1697](https://github.com/iamkun/dayjs/issues/1697)) ([e019301](https://github.com/iamkun/dayjs/commit/e01930171c8235f58a114236f146086428f99569))
+
+## [1.10.7](https://github.com/iamkun/dayjs/compare/v1.10.6...v1.10.7) (2021-09-10)
+
+
+### Bug Fixes
+
+* Add Spanish (Mexico) [es-mx] locale ([#1614](https://github.com/iamkun/dayjs/issues/1614)) ([3393f2a](https://github.com/iamkun/dayjs/commit/3393f2ad55346d55902683a2e31c6f253d96c8c2))
+* Add Arabic (Iraq) [ar-iq] locale ([#1627](https://github.com/iamkun/dayjs/issues/1627)) ([b5a1391](https://github.com/iamkun/dayjs/commit/b5a1391011b247d08863d291542db5937b23b427))
+* add format object type to type file ([#1572](https://github.com/iamkun/dayjs/issues/1572)) ([5a79cc6](https://github.com/iamkun/dayjs/commit/5a79cc6408e825d9e123629eb44fc19c996d7751))
+* duration plugin when parsing duration from ISO string, set missing components to 0 instead of NaN ([#1611](https://github.com/iamkun/dayjs/issues/1611)) ([252585b](https://github.com/iamkun/dayjs/commit/252585b4b2bd59508150e21bb994908a9d78f9b0))
+* narrow type for `add` and `subtract` ([#1576](https://github.com/iamkun/dayjs/issues/1576)) ([1686962](https://github.com/iamkun/dayjs/commit/16869621b1a42563064dbf87f80c1ebfd74c1188))
+* update customParseFormat plugin strict x X parsing ([#1571](https://github.com/iamkun/dayjs/issues/1571)) ([08adda5](https://github.com/iamkun/dayjs/commit/08adda54edbcca38601f57841921d0f87f84e49e))
+* update Lithuanian [lt] locale spelling for single month ([#1609](https://github.com/iamkun/dayjs/issues/1609)) ([255dc54](https://github.com/iamkun/dayjs/commit/255dc54d9295de135a9037ce6ca13cae4bfd2cfb))
+* Update Norwegian Bokmål [nb] local yearStart 4 ([#1608](https://github.com/iamkun/dayjs/issues/1608)) ([7a8467c](https://github.com/iamkun/dayjs/commit/7a8467c0b7d59821f7e19d4a6973bcda8e4c19b1))
+* update plugin advancedFormat `isValid` validation ([#1566](https://github.com/iamkun/dayjs/issues/1566)) ([755fc8b](https://github.com/iamkun/dayjs/commit/755fc8bb1c532eb991459f180eee81367d12016c))
+* update Sinhalese [si] locale month name ([#1475](https://github.com/iamkun/dayjs/issues/1475)) ([63de2a8](https://github.com/iamkun/dayjs/commit/63de2a8b7dcd7e68c132c85d88572d4c9d296907))
+* update utcOffset plugin type file ([#1604](https://github.com/iamkun/dayjs/issues/1604)) ([f68e4b1](https://github.com/iamkun/dayjs/commit/f68e4b1a29fc33542f74cde10ec6d9fb045ca37e))
+
+## [1.10.6](https://github.com/iamkun/dayjs/compare/v1.10.5...v1.10.6) (2021-07-06)
+
+
+### Bug Fixes
+
+* add invalid date string override ([#1465](https://github.com/iamkun/dayjs/issues/1465)) ([#1470](https://github.com/iamkun/dayjs/issues/1470)) ([06f88f4](https://github.com/iamkun/dayjs/commit/06f88f425828b1ce96b737332d25145a95a4ee9d))
+* add sv-fi Finland Swedish locale ([#1522](https://github.com/iamkun/dayjs/issues/1522)) ([8e32164](https://github.com/iamkun/dayjs/commit/8e32164855cff724642e24c37a631eb4c4d760c8))
+* customParseFormat support parsing X x timestamp ([#1567](https://github.com/iamkun/dayjs/issues/1567)) ([eb087f5](https://github.com/iamkun/dayjs/commit/eb087f52861313b8dd8a5c1b77858665ec72859e))
+* dayjs ConfigTypeMap add null & undefined ([#1560](https://github.com/iamkun/dayjs/issues/1560)) ([b5e40e6](https://github.com/iamkun/dayjs/commit/b5e40e6f16abeaea6a0facfa466d20aefaa8a444))
+* Fix DayOfYear plugin when using BadMutable plugin ([#1511](https://github.com/iamkun/dayjs/issues/1511)) ([0b0c6a3](https://github.com/iamkun/dayjs/commit/0b0c6a31ec9c0aff991b0e8dd6eed116201274cc))
+* Implement ordinal in Bulgarian translation (fixes [#1501](https://github.com/iamkun/dayjs/issues/1501)) ([#1502](https://github.com/iamkun/dayjs/issues/1502)) ([b728da5](https://github.com/iamkun/dayjs/commit/b728da5ed9ed08210004ed20ce5fcd52a92de7da))
+* more strict delimiter in REGEX_PARSE ([#1555](https://github.com/iamkun/dayjs/issues/1555)) ([bfdab5c](https://github.com/iamkun/dayjs/commit/bfdab5c0d45a5736b68e8e1b1354fc021e05f607))
+* parameter type ([#1549](https://github.com/iamkun/dayjs/issues/1549)) ([f369844](https://github.com/iamkun/dayjs/commit/f369844dd69d253c4c7cbf68150939db3db233be))
+* update customParseFormat plugin to custom two-digit year parse function ([#1421](https://github.com/iamkun/dayjs/issues/1421)) ([bb5df55](https://github.com/iamkun/dayjs/commit/bb5df55cd3975dc7638b8f4e762afa470b6620f7))
+* update names of weekdays and months in Bulgarian [bg] to lowercase ([#1438](https://github.com/iamkun/dayjs/issues/1438)) ([b246210](https://github.com/iamkun/dayjs/commit/b24621091fec9cf6704de21e4b323f6f0c4abbf1))
+* update type file `.diff` ([#1505](https://github.com/iamkun/dayjs/issues/1505)) ([6508494](https://github.com/iamkun/dayjs/commit/6508494a4e62977b4397baaeef293d1bcf3c7235))
+* update UTC plugin type file for strict parsing ([#1443](https://github.com/iamkun/dayjs/issues/1443)) ([b4f28df](https://github.com/iamkun/dayjs/commit/b4f28df219fe63202dffdbeeaec5677c4d2c9111))
+
+## [1.10.5](https://github.com/iamkun/dayjs/compare/v1.10.4...v1.10.5) (2021-05-26)
+
+
+### Bug Fixes
+
+* add meridiem in ar locales ([#1375](https://github.com/iamkun/dayjs/issues/1375)) ([319f616](https://github.com/iamkun/dayjs/commit/319f616e572a03b984013d04d1b3a18ffd5b1190))
+* Added Zulu support to customParseFormat ([#1359](https://github.com/iamkun/dayjs/issues/1359)) ([1138a3f](https://github.com/iamkun/dayjs/commit/1138a3f0a76592c6d72fb86c4399e133fa41e2ec))
+* fix Bengali [bn] locale monthsShort error ([a0e6c0c](https://github.com/iamkun/dayjs/commit/a0e6c0cf3e1828020dfa11432c6716990f6ed5e0))
+* fix missing types for ArraySupport plugin ([#1401](https://github.com/iamkun/dayjs/issues/1401)) ([b1abdc4](https://github.com/iamkun/dayjs/commit/b1abdc40ee6c9d18ff46c311a114e0755677ea6f))
+* fix Ukrainian [uk] locale ([#1463](https://github.com/iamkun/dayjs/issues/1463)) ([0fdac93](https://github.com/iamkun/dayjs/commit/0fdac93ff2531542301b76952be9b084b2e2dfa0))
+* hotfix for `Duration` types ([#1357](https://github.com/iamkun/dayjs/issues/1357)) ([855b7b3](https://github.com/iamkun/dayjs/commit/855b7b3d049a3903794f91db3419f167c00dabd2)), closes [#1354](https://github.com/iamkun/dayjs/issues/1354)
+* timezone plugin DST error ([#1352](https://github.com/iamkun/dayjs/issues/1352)) ([71bed15](https://github.com/iamkun/dayjs/commit/71bed155edf32bff24379930ac684fc783538d8f))
+* Update duration plugin change string to number ([#1394](https://github.com/iamkun/dayjs/issues/1394)) ([e1546d1](https://github.com/iamkun/dayjs/commit/e1546d1a0cdb97ae92cf11efe61d94707af6a3a3))
+* update Duration plugin to support no-argument ([#1400](https://github.com/iamkun/dayjs/issues/1400)) ([8d9a5ae](https://github.com/iamkun/dayjs/commit/8d9a5ae0749e1b4e76babd4deeaa3b1d9776c29b))
+* Update Finnish [fi] locale to set yearStart ([#1378](https://github.com/iamkun/dayjs/issues/1378)) ([f3370bd](https://github.com/iamkun/dayjs/commit/f3370bda4e435118f714c8a7daf5c88cfc4b69ba))
+* update Russian [ru] locale meridiem and unit tests ([#1403](https://github.com/iamkun/dayjs/issues/1403)) ([f10f39d](https://github.com/iamkun/dayjs/commit/f10f39de7db70244a3c35e4a421090a12972457b))
+* update Russian [ru] locale yearStart config ([#1372](https://github.com/iamkun/dayjs/issues/1372)) ([5052515](https://github.com/iamkun/dayjs/commit/5052515fe35b2444201ef8ef87220b1876a94d0a))
+* update Slovenian [sl] locale to set correct ordinal ([#1386](https://github.com/iamkun/dayjs/issues/1386)) ([cb4f746](https://github.com/iamkun/dayjs/commit/cb4f74633b3020d6dbf19548c8cb13613dafca18))
+* update Spanish [es] locale to change month names to lowercase ([#1414](https://github.com/iamkun/dayjs/issues/1414)) ([9c20e77](https://github.com/iamkun/dayjs/commit/9c20e77caf7b1b5eccf418175203b198d4e29535))
+* update Swedish [sv] locale to set correct yearStart ([#1385](https://github.com/iamkun/dayjs/issues/1385)) ([66c5935](https://github.com/iamkun/dayjs/commit/66c59354964ef456bcd5f6152819618f44978082))
+* update UTC plugin to support string argument like +HH:mm ([#1395](https://github.com/iamkun/dayjs/issues/1395)) ([656127c](https://github.com/iamkun/dayjs/commit/656127cc44eda50923a1ac755602863fc32b9e69))
+
+## [1.10.4](https://github.com/iamkun/dayjs/compare/v1.10.3...v1.10.4) (2021-01-22)
+
+
+### Bug Fixes
+
+* Correct handling negative duration ([#1317](https://github.com/iamkun/dayjs/issues/1317)) ([3f5c085](https://github.com/iamkun/dayjs/commit/3f5c085608182472f20b84766b10949945663e44))
+* Improve `Duration` types ([#1338](https://github.com/iamkun/dayjs/issues/1338)) ([4aca4b1](https://github.com/iamkun/dayjs/commit/4aca4b1b584a15de1146d929f95c944594032f20))
+* parse a string for MMM month format with underscore delimiter ([#1349](https://github.com/iamkun/dayjs/issues/1349)) ([82ef9a3](https://github.com/iamkun/dayjs/commit/82ef9a304f06287ac0a14c4da9a7fe6152b5fec9))
+* Update Bengali [bn] locale ([#1329](https://github.com/iamkun/dayjs/issues/1329)) ([02d96ec](https://github.com/iamkun/dayjs/commit/02d96ec7189f62d6ef8987135919cbb5ceff20a6))
+* update locale Portuguese [pt] yearStart ([#1345](https://github.com/iamkun/dayjs/issues/1345)) ([5c785d5](https://github.com/iamkun/dayjs/commit/5c785d528cc08811638d7cbfc7fc158d67b32d75))
+* update Polish [pl] locale yearStart ([#1348](https://github.com/iamkun/dayjs/issues/1348)) ([e93e6b8](https://github.com/iamkun/dayjs/commit/e93e6b8ffa61036b26382f1763e3864d4a7d5df5))
+* Update Slovenian [sl] relativeTime locale ([#1333](https://github.com/iamkun/dayjs/issues/1333)) ([fe5f1d0](https://github.com/iamkun/dayjs/commit/fe5f1d0afbe57b70339e268047e6c3028ca3d59b))
+
+## [1.10.3](https://github.com/iamkun/dayjs/compare/v1.10.2...v1.10.3) (2021-01-09)
+
+
+### Bug Fixes
+
+* fix customParseFormat plugin strict mode parse meridiem bug ([#1321](https://github.com/iamkun/dayjs/issues/1321)) ([e49eeef](https://github.com/iamkun/dayjs/commit/e49eeefbe8acb36419d36ca2e7ed8bc152f73ac1))
+* fix weekYear plugin missing locale bug ([#1319](https://github.com/iamkun/dayjs/issues/1319)) ([344bdc0](https://github.com/iamkun/dayjs/commit/344bdc0eed6843edb05723dc7853a41833d88f08)), closes [#1304](https://github.com/iamkun/dayjs/issues/1304)
+* update advancedFormat plugin to add format options for iso week and weekyear ([#1309](https://github.com/iamkun/dayjs/issues/1309)) ([2c54c64](https://github.com/iamkun/dayjs/commit/2c54c6441871a175ac9b95e41e4cd075dbac10cb))
+* update devHelper to add dev warning setting locale before loading ([c5cc893](https://github.com/iamkun/dayjs/commit/c5cc89355e1e206ca72433c19c40cb528690b04f))
+* update German [de] locale yearStart ([1858df8](https://github.com/iamkun/dayjs/commit/1858df8008de56570680723df89b36a8cbc970ef)), closes [#1264](https://github.com/iamkun/dayjs/issues/1264)
+
+## [1.10.2](https://github.com/iamkun/dayjs/compare/v1.10.1...v1.10.2) (2021-01-05)
+
+
+### Bug Fixes
+
+* fix parse regex bug ([#1307](https://github.com/iamkun/dayjs/issues/1307)) ([db2b6a5](https://github.com/iamkun/dayjs/commit/db2b6a5ea8e70f9fda645d113ca33495aa96b616)), closes [#1305](https://github.com/iamkun/dayjs/issues/1305)
+* remove module entry in package.json to revert 1.10.1 change ([#1314](https://github.com/iamkun/dayjs/issues/1314)) ([824dcb8](https://github.com/iamkun/dayjs/commit/824dcb8dfcccf14f64b6a2741a00fcdfe53dcd98))
+* update devHelper add warning "passing Year as a Number will be parsed as a Unix timestamp" ([#1315](https://github.com/iamkun/dayjs/issues/1315)) ([b0dda31](https://github.com/iamkun/dayjs/commit/b0dda3139e25441ab4e7c1f4f192dee0ecce6ef8))
+
+## [1.10.1](https://github.com/iamkun/dayjs/compare/v1.10.0...v1.10.1) (2021-01-03)
+
+
+### Bug Fixes
+
+* fix typescript type error UnitTypeLongPlural ([#1302](https://github.com/iamkun/dayjs/issues/1302)) ([bfaabe4](https://github.com/iamkun/dayjs/commit/bfaabe4f398c11564eca6cda7c8aded22e1b231a)), closes [#1300](https://github.com/iamkun/dayjs/issues/1300)
+
+# [1.10.0](https://github.com/iamkun/dayjs/compare/v1.9.8...v1.10.0) (2021-01-03)
+
+
+### Bug Fixes
+
+* add ordinal to localeData plugin ([#1266](https://github.com/iamkun/dayjs/issues/1266)) ([fd229fa](https://github.com/iamkun/dayjs/commit/fd229fa5bd26bcba810e2535eb937ea8d99106c2))
+* add preParsePostFormat plugin & update Arabic [ar] locale ([#1255](https://github.com/iamkun/dayjs/issues/1255)) ([f2e4790](https://github.com/iamkun/dayjs/commit/f2e479006a9a49bc0917f8620101d40ac645f7f2))
+* add type support for plural forms of units ([#1289](https://github.com/iamkun/dayjs/issues/1289)) ([de49bb1](https://github.com/iamkun/dayjs/commit/de49bb100badfb92b9a5933cc568841f340a923f))
+* escape last period to match only milliseconds ([#1239](https://github.com/iamkun/dayjs/issues/1239)) ([#1295](https://github.com/iamkun/dayjs/issues/1295)) ([64037e6](https://github.com/iamkun/dayjs/commit/64037e6a8cf303dcfd2b954f309bd9691f87fffc))
+
+
+### Features
+
+* add ES6 Module Support, package.json module point to "esm/index.js" ([#1298](https://github.com/iamkun/dayjs/issues/1298)) ([f63375d](https://github.com/iamkun/dayjs/commit/f63375dea89becbd3bb2bb8ea7289c58c752bfed)), closes [#598](https://github.com/iamkun/dayjs/issues/598) [#313](https://github.com/iamkun/dayjs/issues/313)
+
+## [1.9.8](https://github.com/iamkun/dayjs/compare/v1.9.7...v1.9.8) (2020-12-27)
+
+
+### Bug Fixes
+
+* fix Ukrainian [uk] locale typo ([1605cc0](https://github.com/iamkun/dayjs/commit/1605cc0f6fe0e9c46a92d529bc9cd6e130432337))
+* update Hebrew [he] locale for double units ([#1287](https://github.com/iamkun/dayjs/issues/1287)) ([1c4b0da](https://github.com/iamkun/dayjs/commit/1c4b0da1468522e59dc9ee646d10dd2b31477d99))
+* update zh locale meridiem "noon" ([0e7ff3d](https://github.com/iamkun/dayjs/commit/0e7ff3dd29ca3aed85cb76dfcb8298d326e26542))
+* update zh-cn locale definition of noon ([#1278](https://github.com/iamkun/dayjs/issues/1278)) ([d5930b9](https://github.com/iamkun/dayjs/commit/d5930b96ff884f4176ca3fcb1bc95e8f1ec75c71))
+
+## [1.9.7](https://github.com/iamkun/dayjs/compare/v1.9.6...v1.9.7) (2020-12-05)
+
+
+### Bug Fixes
+
+* add duration.format to format a Duration ([#1202](https://github.com/iamkun/dayjs/issues/1202)) ([9a859a1](https://github.com/iamkun/dayjs/commit/9a859a147ba223a1eeff0f2bb6f33d97e0ccc6c7))
+* Add function handling for relativeTime.future and relativeTime.past ([#1197](https://github.com/iamkun/dayjs/issues/1197)) ([ef1979c](https://github.com/iamkun/dayjs/commit/ef1979ce85c61fe2d759ef3c37cb6aaf2358094f))
+* avoid install installed plugin ([#1214](https://github.com/iamkun/dayjs/issues/1214)) ([a92eb6c](https://github.com/iamkun/dayjs/commit/a92eb6c4dc1437ec920e69484d52984f5921a8ea))
+* avoid memory leak after installing a plugin too many times ([b8d2e32](https://github.com/iamkun/dayjs/commit/b8d2e32a9eb59661a7ed6200daa070687becaebd))
+* fix diff bug when UTC plugin enabled ([#1201](https://github.com/iamkun/dayjs/issues/1201)) ([9544ed2](https://github.com/iamkun/dayjs/commit/9544ed2a6c466b8308d26b33a388a6737435a1f4)), closes [#1200](https://github.com/iamkun/dayjs/issues/1200)
+* fix startOf/endOf bug in timezone plugin ([#1229](https://github.com/iamkun/dayjs/issues/1229)) ([eb5fbc4](https://github.com/iamkun/dayjs/commit/eb5fbc4c7d1b62a8615d2f263b404a9515d8e15c))
+* fix utc plugin diff edge case ([#1187](https://github.com/iamkun/dayjs/issues/1187)) ([971b3d4](https://github.com/iamkun/dayjs/commit/971b3d40b4c9403165138f1034e2223cd97c3abf))
+* update customParseFormat plugin to parse 2-digit offset ([#1209](https://github.com/iamkun/dayjs/issues/1209)) ([b56936a](https://github.com/iamkun/dayjs/commit/b56936ab77b8f6289a1b77d49307b495c4bf9f91)), closes [#1205](https://github.com/iamkun/dayjs/issues/1205)
+* Update timezone plugin type definition ([#1221](https://github.com/iamkun/dayjs/issues/1221)) ([34cfb92](https://github.com/iamkun/dayjs/commit/34cfb920b9653ad44d4b31fe49e533692a3ce01b))
+
+## [1.9.6](https://github.com/iamkun/dayjs/compare/v1.9.5...v1.9.6) (2020-11-10)
+
+
+### Bug Fixes
+
+* fix customParseFormat plugin parsing date bug ([#1198](https://github.com/iamkun/dayjs/issues/1198)) ([50f05ad](https://github.com/iamkun/dayjs/commit/50f05ad3addf27827c5657ae7519514e40d9faec)), closes [#1194](https://github.com/iamkun/dayjs/issues/1194)
+* Update lv (Latvian) locale relative time ([#1192](https://github.com/iamkun/dayjs/issues/1192)) ([6d6c684](https://github.com/iamkun/dayjs/commit/6d6c6841b13ba4f7e69de92caf132a3592c5253a))
+
+## [1.9.5](https://github.com/iamkun/dayjs/compare/v1.9.4...v1.9.5) (2020-11-05)
+
+
+### Bug Fixes
+
+* customParseFormat plugin supports parsing localizedFormats ([#1110](https://github.com/iamkun/dayjs/issues/1110)) ([402b603](https://github.com/iamkun/dayjs/commit/402b603aa3ee4199786950bc88b3fdc6b527aa35))
+* fix customParseFormat plugin parse meridiem bug ([#1169](https://github.com/iamkun/dayjs/issues/1169)) ([9e8f8d9](https://github.com/iamkun/dayjs/commit/9e8f8d96c69d557f4d267f42567c25ae9e7ab227)), closes [#1168](https://github.com/iamkun/dayjs/issues/1168)
+* fix devHelper error in umd bundle in browser ([#1165](https://github.com/iamkun/dayjs/issues/1165)) ([d11b5ee](https://github.com/iamkun/dayjs/commit/d11b5ee7dc11af671355f65ccda00f6ba42cc725))
+* fix utc plugin diff bug in DST ([#1171](https://github.com/iamkun/dayjs/issues/1171)) ([f8da3fe](https://github.com/iamkun/dayjs/commit/f8da3fe7e50c84c0502bf5be0b364910922dbd79)), closes [#1097](https://github.com/iamkun/dayjs/issues/1097) [#1021](https://github.com/iamkun/dayjs/issues/1021)
+* isoWeek plugin type ([#1177](https://github.com/iamkun/dayjs/issues/1177)) ([c3d0436](https://github.com/iamkun/dayjs/commit/c3d0436b06f74989e3a2c751a5d170f8072c4aad))
+* update localeData plugin to support meridiem ([#1174](https://github.com/iamkun/dayjs/issues/1174)) ([fdb09e4](https://github.com/iamkun/dayjs/commit/fdb09e4074cc7e8f6196846f18d3566c1f9e8fcd)), closes [#1172](https://github.com/iamkun/dayjs/issues/1172)
+* update timezone plugin parse Date instance / timestamp logic & remove useless test ([#1183](https://github.com/iamkun/dayjs/issues/1183)) ([a7f858b](https://github.com/iamkun/dayjs/commit/a7f858bb70ad81f718ba35c479e84b54eace48b2))
+
+## [1.9.4](https://github.com/iamkun/dayjs/compare/v1.9.3...v1.9.4) (2020-10-23)
+
+
+### Bug Fixes
+
+* Add descriptions to types ([#1148](https://github.com/iamkun/dayjs/issues/1148)) ([9a407a1](https://github.com/iamkun/dayjs/commit/9a407a140b089345a387d1aceab4d0d1635229c7))
+* add devHelper plugin ([#1163](https://github.com/iamkun/dayjs/issues/1163)) ([de49dc8](https://github.com/iamkun/dayjs/commit/de49dc80c83b85de4170571b64412bd60ada221b))
+* Fix Hungarian (hu) locale ([#1112](https://github.com/iamkun/dayjs/issues/1112)) ([ab13754](https://github.com/iamkun/dayjs/commit/ab13754f43c5033dacaa0eb2042dc4ab1a7a2754))
+* fix minMax plugin parsing empty array bug ([#1062](https://github.com/iamkun/dayjs/issues/1062)) ([368108b](https://github.com/iamkun/dayjs/commit/368108bc6d5cb1542f711b8eba722bd4dfaab0cd))
+* update adding/subtracting Duration from Dayjs object ([#1156](https://github.com/iamkun/dayjs/issues/1156)) ([f861aca](https://github.com/iamkun/dayjs/commit/f861acac3e83e28d3a4a96312c71119fd6b544fc))
+* update en-NZ locale to use proper ordinal formatting function ([#1143](https://github.com/iamkun/dayjs/issues/1143)) ([fcdbc58](https://github.com/iamkun/dayjs/commit/fcdbc5880710456a29b2bacf250542230bf48b99))
+* update localeData plugin type ([#1116](https://github.com/iamkun/dayjs/issues/1116)) ([ee5a4ec](https://github.com/iamkun/dayjs/commit/ee5a4ec41edddfb57d103c35182dc635c9264a10))
+* update timezone plugin to support custom parse format ([#1160](https://github.com/iamkun/dayjs/issues/1160)) ([48cbf31](https://github.com/iamkun/dayjs/commit/48cbf3118ba5427de428777c2e025896db654f2e)), closes [#1159](https://github.com/iamkun/dayjs/issues/1159)
+* update timezone plugin to support keepLocalTime ([#1161](https://github.com/iamkun/dayjs/issues/1161)) ([1d429e5](https://github.com/iamkun/dayjs/commit/1d429e5fe4467ebddcf81b43cf6f36e5e3be944c)), closes [#1149](https://github.com/iamkun/dayjs/issues/1149)
+
+## [1.9.3](https://github.com/iamkun/dayjs/compare/v1.9.2...v1.9.3) (2020-10-13)
+
+
+### Bug Fixes
+
+* fix localizedFormat export error ([#1133](https://github.com/iamkun/dayjs/issues/1133)) ([deecd6a](https://github.com/iamkun/dayjs/commit/deecd6ab8a2f4173ee7046f6b568b41fd2677531)), closes [#1132](https://github.com/iamkun/dayjs/issues/1132)
+
+## [1.9.2](https://github.com/iamkun/dayjs/compare/v1.9.1...v1.9.2) (2020-10-13)
+
+
+### Bug Fixes
+
+* add arraySupport plugin ([#1129](https://github.com/iamkun/dayjs/issues/1129)) ([be505c2](https://github.com/iamkun/dayjs/commit/be505c2c540261027342cecc55d8919a3d18d893))
+* export type of duration plugin ([#1094](https://github.com/iamkun/dayjs/issues/1094)) ([2c92e71](https://github.com/iamkun/dayjs/commit/2c92e71bf55d09601120cdf433da7a19cc8abff6))
+* Fix LocaleData plugin longDateFormat lowercase error ([#1101](https://github.com/iamkun/dayjs/issues/1101)) ([7937ccd](https://github.com/iamkun/dayjs/commit/7937ccdeac47d094a60e65ebb62a6020b81c46f4))
+* Fix objectSupport plugin bug in UTC ([#1107](https://github.com/iamkun/dayjs/issues/1107)) ([fe90bb6](https://github.com/iamkun/dayjs/commit/fe90bb6944f2ff1969ca975954d303b449dfa95b)), closes [#1105](https://github.com/iamkun/dayjs/issues/1105)
+* fix Serbian locale grammar (sr, sr-cyrl) ([#1108](https://github.com/iamkun/dayjs/issues/1108)) ([cc87eff](https://github.com/iamkun/dayjs/commit/cc87eff8b75b0d86ce0956516319d402bccae6c0))
+* Fix typo for "monday" in arabic ([#1067](https://github.com/iamkun/dayjs/issues/1067)) ([2e1e426](https://github.com/iamkun/dayjs/commit/2e1e42650124f30282dc4d710798d576b928f1c7))
+* support dayjs.add(Duration), dayjs.subtract(Duration) ([#1099](https://github.com/iamkun/dayjs/issues/1099)) ([b1a0294](https://github.com/iamkun/dayjs/commit/b1a02942c5238203aaa04ce9a074c73742324ab7))
+* update Breton [br] locale relativeTime config ([#1103](https://github.com/iamkun/dayjs/issues/1103)) ([b038bfd](https://github.com/iamkun/dayjs/commit/b038bfdb128889d677c95534d2be29cc30c9e72f))
+* update Catalan [ca] locale ordinal ([73da380](https://github.com/iamkun/dayjs/commit/73da38024c8b550bdcfbe3ff7e578e742c7aecf2))
+* update German [de] locale relativeTime config ([#1109](https://github.com/iamkun/dayjs/issues/1109)) ([f6e771b](https://github.com/iamkun/dayjs/commit/f6e771b70f93d19ebb12e6b794aa4628a1796248))
+* update localeData plugin to add longDateFormat to global localeData ([#1106](https://github.com/iamkun/dayjs/issues/1106)) ([16937d1](https://github.com/iamkun/dayjs/commit/16937d16e053b8c1d4a607622fa2fdbfd9809832))
+* Update objectSupport plugin to return current date time while parsing empty object ([f56783e](https://github.com/iamkun/dayjs/commit/f56783e14d8cf50916b015e7188b23bb6fbca839))
+
+## [1.9.1](https://github.com/iamkun/dayjs/compare/v1.9.0...v1.9.1) (2020-09-28)
+
+
+### Bug Fixes
+
+* Fix objectSupport plugin to get the correct result (zero-based month) ([#1089](https://github.com/iamkun/dayjs/issues/1089)) ([f95ac15](https://github.com/iamkun/dayjs/commit/f95ac15a4577ae5a3d1ce353872a2cd9fc454bc2))
+
+# [1.9.0](https://github.com/iamkun/dayjs/compare/v1.8.36...v1.9.0) (2020-09-28)
+
+
+### Bug Fixes
+
+* Add `setDefault` typing to timezone.d.ts ([#1057](https://github.com/iamkun/dayjs/issues/1057)) ([c0f0886](https://github.com/iamkun/dayjs/commit/c0f088620f17260e6e3ebce7697d561b5623f5f3))
+* fix DST bug in utc plugin ([#1053](https://github.com/iamkun/dayjs/issues/1053)) ([3d73543](https://github.com/iamkun/dayjs/commit/3d7354361f042ced1176d91f9ae9edffe6173425))
+* Fix optional type for timezone plugin ([#1081](https://github.com/iamkun/dayjs/issues/1081)) ([a6ebcf2](https://github.com/iamkun/dayjs/commit/a6ebcf283a83273562dce5663155e3b3a12ea9a5)), closes [#1079](https://github.com/iamkun/dayjs/issues/1079)
+* Fix timezone plugin conversion bug ([#1073](https://github.com/iamkun/dayjs/issues/1073)) ([16816a3](https://github.com/iamkun/dayjs/commit/16816a31ff43220aca9d1d179df6b729182abb55))
+* update duration plugin type file ([#1065](https://github.com/iamkun/dayjs/issues/1065)) ([94af9af](https://github.com/iamkun/dayjs/commit/94af9af27c5bc182cbb24f1845e561dd1d82d776))
+* update timezone plugin to support getting offset name e.g. EST ([#1069](https://github.com/iamkun/dayjs/issues/1069)) ([cbb755e](https://github.com/iamkun/dayjs/commit/cbb755e5c68d49c5678291f3ce832b32831a056e))
+* update utc plugin to support keepLocalTime `.utc(true)` ([#1080](https://github.com/iamkun/dayjs/issues/1080)) ([5ce4e0d](https://github.com/iamkun/dayjs/commit/5ce4e0d2f552f3645262537ff7afdc946f5a7e72))
+
+
+### Features
+
+* Correct casing for en-sg locale name ([#1048](https://github.com/iamkun/dayjs/issues/1048)) ([2edaddc](https://github.com/iamkun/dayjs/commit/2edaddc22a7eb914f915531f389766217acd7034))
+
+## [1.8.36](https://github.com/iamkun/dayjs/compare/v1.8.35...v1.8.36) (2020-09-17)
+
+
+### Bug Fixes
+
+* Add Amharic (am) locale ([#1046](https://github.com/iamkun/dayjs/issues/1046)) ([cdc49a1](https://github.com/iamkun/dayjs/commit/cdc49a1911c74b7ea96ed222f42796d53715cfed))
+* Export Duration type in duration plugin ([#1043](https://github.com/iamkun/dayjs/issues/1043)) ([0f20c3a](https://github.com/iamkun/dayjs/commit/0f20c3ac75d9ac1026a15a7bb343d3a150d9b30f))
+* Fix duration plugin parsing milliseconds bug ([#1042](https://github.com/iamkun/dayjs/issues/1042)) ([fe2301b](https://github.com/iamkun/dayjs/commit/fe2301b22318886aaa89ed1620e0a118e98c2b8a))
+* Timezone plugin set default timezone ([#1033](https://github.com/iamkun/dayjs/issues/1033)) ([0c2050a](https://github.com/iamkun/dayjs/commit/0c2050a152da708b01edd6150a5013f642b14576))
+* Timezone plugin should have the same behavior in latest ICU version ([#1032](https://github.com/iamkun/dayjs/issues/1032)) ([de31592](https://github.com/iamkun/dayjs/commit/de315921575cc50c38464b27d0338e30a54d8e2a))
+* Update Finnish (fi) locale ([#963](https://github.com/iamkun/dayjs/issues/963)) ([cf8b6a0](https://github.com/iamkun/dayjs/commit/cf8b6a096f24b54cbdb95675ac386d8ac85ea616))
+* Update Polish (pl) , Hungarian (hr) and Lithuanian (lt) localization ([#1045](https://github.com/iamkun/dayjs/issues/1045)) ([638fd39](https://github.com/iamkun/dayjs/commit/638fd394fc24f4188390faf387da6b156e7c6320))
+
+## [1.8.35](https://github.com/iamkun/dayjs/compare/v1.8.34...v1.8.35) (2020-09-02)
+
+
+### Bug Fixes
+
+* Fix BadMutable plugin bug in .diff ([#1023](https://github.com/iamkun/dayjs/issues/1023)) ([40ab6d9](https://github.com/iamkun/dayjs/commit/40ab6d9a53e8047cfca63c611c25dd045372d021))
+* fix LocaleData plugin to support instance.weekdays() API ([#1019](https://github.com/iamkun/dayjs/issues/1019)) ([a09d259](https://github.com/iamkun/dayjs/commit/a09d259a407b81d1cb6bb5623fad551c775d8674)), closes [#1017](https://github.com/iamkun/dayjs/issues/1017)
+* Update Dutch (nl) locale to set correct yearStart ([1533a2c](https://github.com/iamkun/dayjs/commit/1533a2cc1475270032da2d87b19fc3d62327e6e3))
+
+## [1.8.34](https://github.com/iamkun/dayjs/compare/v1.8.33...v1.8.34) (2020-08-20)
+
+
+### Bug Fixes
+
+* Fix Timezone plugin to preserve milliseconds while changing timezone ([#1003](https://github.com/iamkun/dayjs/issues/1003)) ([5f446ed](https://github.com/iamkun/dayjs/commit/5f446eda770fa97e895c81a8195b3ba5d082cef0)), closes [#1002](https://github.com/iamkun/dayjs/issues/1002)
+* support parsing unlimited decimals of millisecond ([#1010](https://github.com/iamkun/dayjs/issues/1010)) ([d1bdd36](https://github.com/iamkun/dayjs/commit/d1bdd36a56e3d1786523a180e3fc18068f609135)), closes [#544](https://github.com/iamkun/dayjs/issues/544)
+* update Duration plugin to support global locale ([#1008](https://github.com/iamkun/dayjs/issues/1008)) ([1c49c83](https://github.com/iamkun/dayjs/commit/1c49c83e79811eede13db6372b5d65db598aee77)), closes [#1007](https://github.com/iamkun/dayjs/issues/1007)
+
+## [1.8.33](https://github.com/iamkun/dayjs/compare/v1.8.32...v1.8.33) (2020-08-10)
+
+
+### Bug Fixes
+
+* Add PluralGetSet plugin for plural getters/setters ([#996](https://github.com/iamkun/dayjs/issues/996)) ([f76e3ce](https://github.com/iamkun/dayjs/commit/f76e3ce2fbe5d3e9ed9121086baf55eb0cc4d355))
+* Add typescript type defs in esm build ([#985](https://github.com/iamkun/dayjs/issues/985)) ([50e3b3c](https://github.com/iamkun/dayjs/commit/50e3b3c6719cb0b4ec6eff394dacd63d5db8f253))
+* Fix isoWeek Plugin cal bug in UTC mode ([#993](https://github.com/iamkun/dayjs/issues/993)) ([f2e5f32](https://github.com/iamkun/dayjs/commit/f2e5f327aaf12b4572296ec6e107ecc05fcf76e7))
+* Fix Timezone plugin parsing js date, Day.js object, timestamp bug && update type file ([#994](https://github.com/iamkun/dayjs/issues/994)) ([22f3d49](https://github.com/iamkun/dayjs/commit/22f3d49405da98db6da56d1673eebcd01b57554b)), closes [#992](https://github.com/iamkun/dayjs/issues/992) [#989](https://github.com/iamkun/dayjs/issues/989)
+* Fix Timezone plugin UTCOffset rounding bug ([#987](https://github.com/iamkun/dayjs/issues/987)) ([b07182b](https://github.com/iamkun/dayjs/commit/b07182bbdf5aef7f6bf1e88fcd38432e2b8ee465)), closes [#986](https://github.com/iamkun/dayjs/issues/986)
+* Fix UTC plugin bug while comparing an utc instance to a local one ([#995](https://github.com/iamkun/dayjs/issues/995)) ([747c0fb](https://github.com/iamkun/dayjs/commit/747c0fb4eba6353755b5dad3417fd8d5a408c378))
+* Update pt-br locale weekStart 0 ([#984](https://github.com/iamkun/dayjs/issues/984)) ([0f881c1](https://github.com/iamkun/dayjs/commit/0f881c18efb02b9d0ba7f76cba92bb504226fa95))
+
+## [1.8.32](https://github.com/iamkun/dayjs/compare/v1.8.31...v1.8.32) (2020-08-04)
+
+
+### Bug Fixes
+
+* Add Experimental Timezone Plugin ([#974](https://github.com/iamkun/dayjs/issues/974)) ([e69caba](https://github.com/iamkun/dayjs/commit/e69caba1b0957241a855aa0ae38db899fa2c3795))
+* fix parse date string error e.g. '2020/9/30' ([#980](https://github.com/iamkun/dayjs/issues/980)) ([231790d](https://github.com/iamkun/dayjs/commit/231790da62af0494732960c2c50d86ae9bf63ec6)), closes [#979](https://github.com/iamkun/dayjs/issues/979)
+* update monthDiff function to get more accurate results ([19e8a7f](https://github.com/iamkun/dayjs/commit/19e8a7f2f7582b717f49d446822e39603694433c))
+* Update UTC plugin to support keepLocalTime ([#973](https://github.com/iamkun/dayjs/issues/973)) ([9f488e5](https://github.com/iamkun/dayjs/commit/9f488e5aca92f0b4c2951459436829d79f86d8d7))
+
+## [1.8.31](https://github.com/iamkun/dayjs/compare/v1.8.30...v1.8.31) (2020-07-29)
+
+
+### Bug Fixes
+
+* Rollback LocalePresetType to string ([#968](https://github.com/iamkun/dayjs/issues/968)) ([b342bd3](https://github.com/iamkun/dayjs/commit/b342bd3d84987d6c7587a0c4590d614fb0e670d7))
+* Update Regex to parse 'YYYY' correctly ([#969](https://github.com/iamkun/dayjs/issues/969)) ([70c1239](https://github.com/iamkun/dayjs/commit/70c123990dcc6bd479fa2b5d7f9985127872a826))
+
+## [1.8.30](https://github.com/iamkun/dayjs/compare/v1.8.29...v1.8.30) (2020-07-22)
+
+
+### Bug Fixes
+
+* Add Haitian Creole (ht) and Spanish Puerto Rico (es-pr) locale configs ([#958](https://github.com/iamkun/dayjs/issues/958)) ([b2642e2](https://github.com/iamkun/dayjs/commit/b2642e2d1f87734a34808c66e5176cb18bc0414d))
+* Fix UTC plugin wrong hour bug while adding month or year ([#957](https://github.com/iamkun/dayjs/issues/957)) ([28ae070](https://github.com/iamkun/dayjs/commit/28ae070024ff26685c88ce4cc8747307e86923c9))
+* Update French (fr) locale to set correct yearStart ([14ab808](https://github.com/iamkun/dayjs/commit/14ab808a7b7e226f2eb2cbe894916a18ed5d967d)), closes [#956](https://github.com/iamkun/dayjs/issues/956)
+
+## [1.8.29](https://github.com/iamkun/dayjs/compare/v1.8.28...v1.8.29) (2020-07-02)
+
+
+### Bug Fixes
+
+* Duration plugin supports parse ISO string with week (W) ([#950](https://github.com/iamkun/dayjs/issues/950)) ([f0fc12a](https://github.com/iamkun/dayjs/commit/f0fc12adadcab53fb0577ad8f5e2f1cf784fd8f5))
+* LocaleData plugin supports locale order ([#938](https://github.com/iamkun/dayjs/issues/938)) ([62f429d](https://github.com/iamkun/dayjs/commit/62f429db73a0a069b1267231dea172b85f4b90e3)), closes [#936](https://github.com/iamkun/dayjs/issues/936)
+* Update type definition to support array format ([#945](https://github.com/iamkun/dayjs/issues/945)) ([81d4740](https://github.com/iamkun/dayjs/commit/81d4740511d47e34f891b21afeb0449ef8a28688)), closes [#944](https://github.com/iamkun/dayjs/issues/944)
+* Update type definition to support strict mode ([#951](https://github.com/iamkun/dayjs/issues/951)) ([8d54f3f](https://github.com/iamkun/dayjs/commit/8d54f3f7d4d161e72c767fa09699e70a2b3d681c))
+
+## [1.8.28](https://github.com/iamkun/dayjs/compare/v1.8.27...v1.8.28) (2020-05-28)
+
+
+### Bug Fixes
+
+* Fix CustomParseFormat plugin month index error ([#918](https://github.com/iamkun/dayjs/issues/918)) ([fa2ec7f](https://github.com/iamkun/dayjs/commit/fa2ec7fcb980dcd2c7498dafe2f9ca2e52d735cf)), closes [#915](https://github.com/iamkun/dayjs/issues/915)
+* Update Ukrainian (uk) locale monthFormat and monthStandalone ([#899](https://github.com/iamkun/dayjs/issues/899)) ([a08756e](https://github.com/iamkun/dayjs/commit/a08756e80bd1d7126fca28c5ad9e382613fc86c4))
+
+## [1.8.27](https://github.com/iamkun/dayjs/compare/v1.8.26...v1.8.27) (2020-05-14)
+
+
+### Bug Fixes
+
+* Add Kinyarwanda (rw) locale ([#903](https://github.com/iamkun/dayjs/issues/903)) ([f355235](https://github.com/iamkun/dayjs/commit/f355235a836540d77880959fb1b614c87e9f7b3e))
+* Add plugin objectSupport ([#887](https://github.com/iamkun/dayjs/issues/887)) ([52dfb13](https://github.com/iamkun/dayjs/commit/52dfb13a6b84f0a753cc5761192b92416f440961))
+* Add Turkmen (tk) locale ([#893](https://github.com/iamkun/dayjs/issues/893)) ([a9ca8dc](https://github.com/iamkun/dayjs/commit/a9ca8dcbbd0964c5b9abb4e8a2d620c983cf091a))
+* Fix CustomParseFormat plugin set locale error ([#896](https://github.com/iamkun/dayjs/issues/896)) ([8035c8a](https://github.com/iamkun/dayjs/commit/8035c8a760549b631252252718db3cdc4ab2f68f))
+* Fix locale month function bug ([#908](https://github.com/iamkun/dayjs/issues/908)) ([bf347c3](https://github.com/iamkun/dayjs/commit/bf347c36e401f50727fb5afcc537497b54b90d6b))
+* Update CustomParseFormat plugin to support Array formats ([#906](https://github.com/iamkun/dayjs/issues/906)) ([97856c6](https://github.com/iamkun/dayjs/commit/97856c603ef5fbbeb1cf8a42387479e56a77dbe8))
+
+## [1.8.26](https://github.com/iamkun/dayjs/compare/v1.8.25...v1.8.26) (2020-04-30)
+
+
+### Bug Fixes
+
+* Fix Duration plugin `.toISOString` format bug ([#889](https://github.com/iamkun/dayjs/issues/889)) ([058d624](https://github.com/iamkun/dayjs/commit/058d624808fd2be024ae846bcb2e03885f39b556)), closes [#888](https://github.com/iamkun/dayjs/issues/888)
+* Fix WeekOfYear plugin bug while using BadMutable plugin ([#884](https://github.com/iamkun/dayjs/issues/884)) ([2977438](https://github.com/iamkun/dayjs/commit/2977438458542573a4500e21f7ba5d1f8442960e))
+* Update CustomParseFormat plugin strict mode ([#882](https://github.com/iamkun/dayjs/issues/882)) ([db642ac](https://github.com/iamkun/dayjs/commit/db642ac73e52e00d8c41546b2935c9e691cf66e0))
+* Update RelativeTime plugin default config ([#883](https://github.com/iamkun/dayjs/issues/883)) ([0606f42](https://github.com/iamkun/dayjs/commit/0606f425aef8ccbfc3da3e43cba368130603b0cc))
+
+## [1.8.25](https://github.com/iamkun/dayjs/compare/v1.8.24...v1.8.25) (2020-04-21)
+
+
+### Bug Fixes
+
+* Fix CustomParseFormat plugin of parsing only YYYY / YYYY-MM bug ([#873](https://github.com/iamkun/dayjs/issues/873)) ([3cea04d](https://github.com/iamkun/dayjs/commit/3cea04d33d54d44bbdd3d026b5c7f67ebf176116)), closes [#849](https://github.com/iamkun/dayjs/issues/849)
+* Fix Duration plugin get seconds ([#867](https://github.com/iamkun/dayjs/issues/867)) ([62b092d](https://github.com/iamkun/dayjs/commit/62b092d9f9a3db5506ef01f798bdf211f163f53f))
+* Fix type definition of locale ([9790b85](https://github.com/iamkun/dayjs/commit/9790b853e6113243a7f4a81dd12c6509e406a102))
+* Fix UTC plugin startOf, endOf bug ([#872](https://github.com/iamkun/dayjs/issues/872)) ([4141084](https://github.com/iamkun/dayjs/commit/4141084ba96d35cadcda3f1e661bf1d0f6c8e4de)), closes [#809](https://github.com/iamkun/dayjs/issues/809) [#808](https://github.com/iamkun/dayjs/issues/808)
+
+## [1.8.24](https://github.com/iamkun/dayjs/compare/v1.8.23...v1.8.24) (2020-04-10)
+
+
+### Bug Fixes
+
+* Add config option to RelativeTime plugin ([#851](https://github.com/iamkun/dayjs/issues/851)) ([bd24034](https://github.com/iamkun/dayjs/commit/bd24034b95bfc656024b75ef3f3c986708845fed))
+* add Duration plugin ([#858](https://github.com/iamkun/dayjs/issues/858)) ([d568273](https://github.com/iamkun/dayjs/commit/d568273223199ca0497f238e2cc3a8d3dcf32d0f))
+* Add en-in, en-tt locales ([#855](https://github.com/iamkun/dayjs/issues/855)) ([c39fb96](https://github.com/iamkun/dayjs/commit/c39fb96e2a9102c14b004c14a6c073af9d266f2f))
+* add isToday, isTomorrow, isYesterday plugins ([#857](https://github.com/iamkun/dayjs/issues/857)) ([fc08ab6](https://github.com/iamkun/dayjs/commit/fc08ab68f8a28269802deeab9d6b0473b92cdc51))
+* Add option callback to Calendar plugin ([#839](https://github.com/iamkun/dayjs/issues/839)) ([b25be90](https://github.com/iamkun/dayjs/commit/b25be9094325295310c8fc5e617fb058be8a5f68))
+* Fix monthsShort for locale fr ([#862](https://github.com/iamkun/dayjs/issues/862)) ([d2de9a0](https://github.com/iamkun/dayjs/commit/d2de9a0b44b830038ed0094f79bfd40726311f2a))
+* Update Breton locale (br) meridiem config ([#856](https://github.com/iamkun/dayjs/issues/856)) ([a2a6672](https://github.com/iamkun/dayjs/commit/a2a66720abb788a8f1cffbfd0929b35579f29c72))
+* Update Ukrainian (uk) locale relative time ([#842](https://github.com/iamkun/dayjs/issues/842)) ([578bc1a](https://github.com/iamkun/dayjs/commit/578bc1a23c6e737783bbac3da12c0ed5d1edcf82))
+
+## [1.8.23](https://github.com/iamkun/dayjs/compare/v1.8.22...v1.8.23) (2020-03-16)
+
+
+### Bug Fixes
+
+* Add Chinese (zh) locale ([f9b8945](https://github.com/iamkun/dayjs/commit/f9b89453166d8b53d33b1d7eefd9942022552e6e))
+* Fix IsoWeek plugin typescript definition ([#828](https://github.com/iamkun/dayjs/issues/828)) ([30aab0c](https://github.com/iamkun/dayjs/commit/30aab0c7bce85dfac0ae208a891def30f88b5cb4))
+* Update Arabic (ar) locale relative time ([#836](https://github.com/iamkun/dayjs/issues/836)) ([14044c6](https://github.com/iamkun/dayjs/commit/14044c6fda1229e3f0e5473d3f886bd79589b15f))
+* Update Slovak (sk) locale, Czech (cs) locale ([#833](https://github.com/iamkun/dayjs/issues/833)) ([f0d451f](https://github.com/iamkun/dayjs/commit/f0d451f795e9ebf752cd854d51b25b11de2343a3))
+* Update Thai (th) locale relativeTime ([#826](https://github.com/iamkun/dayjs/issues/826)) ([63b7c03](https://github.com/iamkun/dayjs/commit/63b7c03a6dbb0507d60776e8bad6cccde3828b88)), closes [#816](https://github.com/iamkun/dayjs/issues/816)
+
+## [1.8.22](https://github.com/iamkun/dayjs/compare/v1.8.21...v1.8.22) (2020-03-08)
+
+
+### Bug Fixes
+
+* Add IsoWeek plugin ([#811](https://github.com/iamkun/dayjs/issues/811)) ([28a2207](https://github.com/iamkun/dayjs/commit/28a2207ef9849afbac15dd29267b2e7a09cd3c16))
+* Fix unsupported locale fallback to previous one ([#819](https://github.com/iamkun/dayjs/issues/819)) ([4868715](https://github.com/iamkun/dayjs/commit/48687152cf5bee6a4c1b8ceea4bda8b9bab9be10))
+
+## [1.8.21](https://github.com/iamkun/dayjs/compare/v1.8.20...v1.8.21) (2020-02-26)
+
+
+### Bug Fixes
+
+* Set + Get accept 'D' as the short version of 'date' ([#795](https://github.com/iamkun/dayjs/issues/795)) ([523c038](https://github.com/iamkun/dayjs/commit/523c03880fa8bbad83214494ad02cd606cdb8b30))
+* Update DayOfYear plugin type ([#799](https://github.com/iamkun/dayjs/issues/799)) ([5809652](https://github.com/iamkun/dayjs/commit/5809652e40245b7759827d9bf317abdcfa75a330))
+* Update fi (Finnish) locale relativeTime ([#797](https://github.com/iamkun/dayjs/issues/797)) ([4a470fb](https://github.com/iamkun/dayjs/commit/4a470fbd6fef9e051727d0f26d53cc050b85935d))
+
+## [1.8.20](https://github.com/iamkun/dayjs/compare/v1.8.19...v1.8.20) (2020-02-04)
+
+
+### Bug Fixes
+
+* Add Bislama Locale (bi) ([#780](https://github.com/iamkun/dayjs/issues/780)) ([9ac6ab4](https://github.com/iamkun/dayjs/commit/9ac6ab481bc883dd4ecc02caab12c8b2fc218a42))
+* Fix weekOfYear plugin to support yearStart locale for better week number result ([#769](https://github.com/iamkun/dayjs/issues/769)) ([f00db36](https://github.com/iamkun/dayjs/commit/f00db36e70bc7beaca1abadeb30a9b1fbb3261ee))
+* Update et (Estonian) locale relativeTime ([#790](https://github.com/iamkun/dayjs/issues/790)) ([d8e0f45](https://github.com/iamkun/dayjs/commit/d8e0f45f6cd2d5e5704b9797929227454c92d1a5))
+* Update LocaleData plugin to support dayjs.localeData().weekdays() API ([287fed6](https://github.com/iamkun/dayjs/commit/287fed6db9eb4fd979b4861aca4dacbd32422533)), closes [#779](https://github.com/iamkun/dayjs/issues/779)
+* Update LocaleData plugin to support dayjs.months dayjs.weekdays API ([144c2ae](https://github.com/iamkun/dayjs/commit/144c2ae6e15fbf89e3acd7c8cb9e237c5f6e1348)), closes [#779](https://github.com/iamkun/dayjs/issues/779)
+* Update pl locale fusional config ([d372475](https://github.com/iamkun/dayjs/commit/d3724758bb27d5b17587b995ba14e7e80dcd1151))
+
+## [1.8.19](https://github.com/iamkun/dayjs/compare/v1.8.18...v1.8.19) (2020-01-06)
+
+
+### Bug Fixes
+
+* Add UpdateLocale plugin to update a locale's properties ([#766](https://github.com/iamkun/dayjs/issues/766)) ([82ce2ba](https://github.com/iamkun/dayjs/commit/82ce2ba8d7e402e40f6d005d400eb5356a0b0633))
+* Fix CustomParseFormat Plugin 'YYYY-MM' use first day of the month ([ba709ec](https://github.com/iamkun/dayjs/commit/ba709eca86a71ae648bc68bf67d9abdc229198d4)), closes [#761](https://github.com/iamkun/dayjs/issues/761)
+* Fix CustomParseFormat Plugin to set correct locale ([66ce23f](https://github.com/iamkun/dayjs/commit/66ce23f2e18c5506e8f1a7ef20d3483a4df80087))
+* Fix WeekOfYear Plugin wrong calender week number bug ([79b86db](https://github.com/iamkun/dayjs/commit/79b86dbbf3cfd3f1e2165b3d479a7061ad1b6925)), closes [#760](https://github.com/iamkun/dayjs/issues/760)
+* Update RelativeTime plugin to support function to make additional processing ([#767](https://github.com/iamkun/dayjs/issues/767)) ([4bd9250](https://github.com/iamkun/dayjs/commit/4bd9250fbe7131e2fddfb5fa1b3350e8c2262ca9))
+* Update ru, uk, cs locale to support relativeTime with plural ([3f080f7](https://github.com/iamkun/dayjs/commit/3f080f7d6bfdc4018cbb7c4d0112ff1ead4ef6b8))
+
+## [1.8.18](https://github.com/iamkun/dayjs/compare/v1.8.17...v1.8.18) (2019-12-18)
+
+
+### Bug Fixes
+
+* Add missing locale type definition ([#716](https://github.com/iamkun/dayjs/issues/716)) ([cde5d0b](https://github.com/iamkun/dayjs/commit/cde5d0b91be7b2f5f3098de4aa0b9a4f0f28ea5c))
+* Fix .locale() handel unsupported locale ([78ec173](https://github.com/iamkun/dayjs/commit/78ec173fcecc1299516ab7b44f4554d431b4b2fd))
+* Update Italian locale (it) ([#727](https://github.com/iamkun/dayjs/issues/727)) ([5b53e98](https://github.com/iamkun/dayjs/commit/5b53e98c0a3ba0eb9573a9c77caeb907439be9e7))
+* Update locale (fa) ([#733](https://github.com/iamkun/dayjs/issues/733)) ([9ad2e47](https://github.com/iamkun/dayjs/commit/9ad2e47e0569b23991bb0d5578f49c792c12df08))
+* Update locale (zh-cn) ([#706](https://github.com/iamkun/dayjs/issues/706)) ([e31e544](https://github.com/iamkun/dayjs/commit/e31e54414fb90e1f54da13a117748ba37f52645d))
+* Update locale (zh-cn) meridiem ([#735](https://github.com/iamkun/dayjs/issues/735)) ([15d1b81](https://github.com/iamkun/dayjs/commit/15d1b813e7faf5a1f9d1ea6fc673fd27ac49d8b1))
+* Update LocaleData plugin to support dayjs().longDateFormat() ([#734](https://github.com/iamkun/dayjs/issues/734)) ([aa0f210](https://github.com/iamkun/dayjs/commit/aa0f210a1e3c4f6aba61c3b96f9eb445b43a33f0)), closes [#680](https://github.com/iamkun/dayjs/issues/680)
+* Update Mongolian (mn) locale relativeTime ([#753](https://github.com/iamkun/dayjs/issues/753)) ([6d51435](https://github.com/iamkun/dayjs/commit/6d51435092c0c94d8e50256d3f0f058cdd15febe))
+* Update Swedish locale (sv) fix ordinal error ([#745](https://github.com/iamkun/dayjs/issues/745)) ([49670d5](https://github.com/iamkun/dayjs/commit/49670d5ae31e4e21636cc5a8bfe35fef0f6d9e4a)), closes [#743](https://github.com/iamkun/dayjs/issues/743)
+
+## [1.8.17](https://github.com/iamkun/dayjs/compare/v1.8.16...v1.8.17) (2019-11-06)
+
+
+### Bug Fixes
+
+* Fix set utcOffset in utc mode ([d148115](https://github.com/iamkun/dayjs/commit/d148115dad8f1a5afc0a64e9b8163dfeba4616b6))
+* Update advancedFormat plugin to support w ww wo week tokens … ([#678](https://github.com/iamkun/dayjs/issues/678)) ([26cfa63](https://github.com/iamkun/dayjs/commit/26cfa63a524b803f7966dac5464f9cbf8f63387e)), closes [#676](https://github.com/iamkun/dayjs/issues/676)
+* Update ka locale weekdays ([f8ca3d4](https://github.com/iamkun/dayjs/commit/f8ca3d4ba1d3cbe41613d3909c0627935a51a0c4))
+* Update nb locale ([#679](https://github.com/iamkun/dayjs/issues/679)) ([1063b0e](https://github.com/iamkun/dayjs/commit/1063b0e1b5c19a1354d233cc0f21438e7073233a))
+* Update Polish locale (pl)([#713](https://github.com/iamkun/dayjs/issues/713)) ([30d2f02](https://github.com/iamkun/dayjs/commit/30d2f026b47188833a4f44fee4bab52467d4a718))
+* Update Ukrainian locale (uk) ([#710](https://github.com/iamkun/dayjs/issues/710)) ([360161c](https://github.com/iamkun/dayjs/commit/360161cac75f597fdd51d9d1ff138601282a1b4b))
+* UTC plugin set utcOffset value ([#668](https://github.com/iamkun/dayjs/issues/668)) ([8877883](https://github.com/iamkun/dayjs/commit/88778838e71dd309e79cd1a8094d5bea36ca3390))
+
+## [1.8.16](https://github.com/iamkun/dayjs/compare/v1.8.15...v1.8.16) (2019-08-27)
+
+
+### Bug Fixes
+
+* Fix relativeTime Plugin .FromNow() result error in UTC mode ([a385d5c](https://github.com/iamkun/dayjs/commit/a385d5c))
+* Handle locale in WeekOfYear plugin ([#658](https://github.com/iamkun/dayjs/issues/658)) ([0e45b0a](https://github.com/iamkun/dayjs/commit/0e45b0a))
+* LocaleData plugin returns all months and weekdays data when pas no argument ([#645](https://github.com/iamkun/dayjs/issues/645)) ([95e70b4](https://github.com/iamkun/dayjs/commit/95e70b4))
+* Return null in toJSON if not valid ([#633](https://github.com/iamkun/dayjs/issues/633)) ([19affc8](https://github.com/iamkun/dayjs/commit/19affc8))
+* Update Danish (da) locale ([#626](https://github.com/iamkun/dayjs/issues/626)) ([ac2ec77](https://github.com/iamkun/dayjs/commit/ac2ec77))
+* Update Korean locale meridiem ([#642](https://github.com/iamkun/dayjs/issues/642)) ([b457146](https://github.com/iamkun/dayjs/commit/b457146))
+* update Occitan locale Catalan locale ([#630](https://github.com/iamkun/dayjs/issues/630)) ([fef135e](https://github.com/iamkun/dayjs/commit/fef135e))
+* update pt-br locale ([#628](https://github.com/iamkun/dayjs/issues/628)) ([ccf596d](https://github.com/iamkun/dayjs/commit/ccf596d))
+* Update weekdaysShort to some locale files ([#643](https://github.com/iamkun/dayjs/issues/643)) ([cc1f15f](https://github.com/iamkun/dayjs/commit/cc1f15f))
+
+## [1.8.15](https://github.com/iamkun/dayjs/compare/v1.8.14...v1.8.15) (2019-07-08)
+
+
+### Bug Fixes
+
+* Fix dayjs.locale() returns current global locale ([#602](https://github.com/iamkun/dayjs/issues/602)) ([790cd1a](https://github.com/iamkun/dayjs/commit/790cd1a))
+* Fix incorrect Thai locale translation of July ([#607](https://github.com/iamkun/dayjs/issues/607)) ([43cbfd3](https://github.com/iamkun/dayjs/commit/43cbfd3))
+* Lowercase french locale months and weekdays ([#615](https://github.com/iamkun/dayjs/issues/615)) ([e5a257c](https://github.com/iamkun/dayjs/commit/e5a257c))
+* Type - Export Ls object to query all available locales ([#623](https://github.com/iamkun/dayjs/issues/623)) ([f6bfae0](https://github.com/iamkun/dayjs/commit/f6bfae0))
+* Update nb (Norsk Bokmål) locale ([#604](https://github.com/iamkun/dayjs/issues/604)) ([907f5c9](https://github.com/iamkun/dayjs/commit/907f5c9))
+* Update types of `.diff` API ([#617](https://github.com/iamkun/dayjs/issues/617)) ([f0f43d2](https://github.com/iamkun/dayjs/commit/f0f43d2))
+
+## [1.8.14](https://github.com/iamkun/dayjs/compare/v1.8.13...v1.8.14) (2019-05-07)
+
+
+### Bug Fixes
+
+* Fix `.format` API returns UTC offset when value is 0 bug ([b254964](https://github.com/iamkun/dayjs/commit/b254964))
+* Fix QuarterOfYear plugin bug ([#591](https://github.com/iamkun/dayjs/issues/591)) ([434f774](https://github.com/iamkun/dayjs/commit/434f774))
+* Fix UTC plugin add day DST bug ([#590](https://github.com/iamkun/dayjs/issues/590)) ([86cd839](https://github.com/iamkun/dayjs/commit/86cd839))
+
+## [1.8.13](https://github.com/iamkun/dayjs/compare/v1.8.12...v1.8.13) (2019-04-26)
+
+
+### Bug Fixes
+
+* Add missing relativeTime and formats for some locales ([#560](https://github.com/iamkun/dayjs/issues/560)) ([96b917e](https://github.com/iamkun/dayjs/commit/96b917e))
+* Add weekday (locale aware day of the week) plugin ([#569](https://github.com/iamkun/dayjs/issues/569)) ([9007cc5](https://github.com/iamkun/dayjs/commit/9007cc5)), closes [#559](https://github.com/iamkun/dayjs/issues/559)
+* Allow customizing "am" / "pm" strings with locale meridiem function ([#580](https://github.com/iamkun/dayjs/issues/580)) ([576e93e](https://github.com/iamkun/dayjs/commit/576e93e)), closes [#578](https://github.com/iamkun/dayjs/issues/578)
+* Fix `.add` day/week decimal rouding bug ([800f6c9](https://github.com/iamkun/dayjs/commit/800f6c9))
+* Fix `.diff` type definition error ([#565](https://github.com/iamkun/dayjs/issues/565)) ([c4921ae](https://github.com/iamkun/dayjs/commit/c4921ae)), closes [#561](https://github.com/iamkun/dayjs/issues/561)
+* Fix CustomParseFormat plugin bug ([#568](https://github.com/iamkun/dayjs/issues/568)) ([1f5a9db](https://github.com/iamkun/dayjs/commit/1f5a9db)), closes [#555](https://github.com/iamkun/dayjs/issues/555)
+* Fix relativeTime plugin Math.round bug ([40bea40](https://github.com/iamkun/dayjs/commit/40bea40))
+* skip square brackets in buddhistEra, advancedFormat plugins ([#556](https://github.com/iamkun/dayjs/issues/556)) ([9279718](https://github.com/iamkun/dayjs/commit/9279718)), closes [#554](https://github.com/iamkun/dayjs/issues/554)
+* Update Indonesian locale([#574](https://github.com/iamkun/dayjs/issues/574)) ([0aa7143](https://github.com/iamkun/dayjs/commit/0aa7143))
+* Update locale month to support both array and function ([#581](https://github.com/iamkun/dayjs/issues/581)) ([b6599d3](https://github.com/iamkun/dayjs/commit/b6599d3))
+* Update LocalizedFormat plugin lowercase formats logic ([#557](https://github.com/iamkun/dayjs/issues/557)) ([d409304](https://github.com/iamkun/dayjs/commit/d409304))
+
+## [1.8.12](https://github.com/iamkun/dayjs/compare/v1.8.11...v1.8.12) (2019-04-02)
+
+
+### Bug Fixes
+
+* Add .get API ([7318797](https://github.com/iamkun/dayjs/commit/7318797))
+* Add 79 locales ([#541](https://github.com/iamkun/dayjs/issues/541)) ([f75a125](https://github.com/iamkun/dayjs/commit/f75a125))
+* Add Calendar plugin ([d1b9cf9](https://github.com/iamkun/dayjs/commit/d1b9cf9))
+* Add isoWeeksInYear plugin ([2db8631](https://github.com/iamkun/dayjs/commit/2db8631))
+* Add Occitan (oc-lnc) locale file ([#551](https://github.com/iamkun/dayjs/issues/551)) ([c30b715](https://github.com/iamkun/dayjs/commit/c30b715))
+* Add plugin minMax to sopport .max .min ([2870a23](https://github.com/iamkun/dayjs/commit/2870a23))
+* Fix set Month Year error in last day of the month ([d058f4a](https://github.com/iamkun/dayjs/commit/d058f4a))
+* Update ko locale weekdaysShort ([#543](https://github.com/iamkun/dayjs/issues/543)) ([317fd3e](https://github.com/iamkun/dayjs/commit/317fd3e))
+* Update localizedFormat plugin to support lowercase localizable formats (l, ll, lll, llll) ([#546](https://github.com/iamkun/dayjs/issues/546)) ([f2b5ebf](https://github.com/iamkun/dayjs/commit/f2b5ebf))
+
+## [1.8.11](https://github.com/iamkun/dayjs/compare/v1.8.10...v1.8.11) (2019-03-21)
+
+
+### Bug Fixes
+
+* Add .add('quarter') .startOf('quarter') through plugin quarterOfYear ([dde39e9](https://github.com/iamkun/dayjs/commit/dde39e9)), closes [#537](https://github.com/iamkun/dayjs/issues/537) [#531](https://github.com/iamkun/dayjs/issues/531)
+* Add locale support for Azerbaijani language (az) ([#535](https://github.com/iamkun/dayjs/issues/535)) ([eeb20fa](https://github.com/iamkun/dayjs/commit/eeb20fa))
+* Correct typescript definition `add` ([22a249c](https://github.com/iamkun/dayjs/commit/22a249c)), closes [#531](https://github.com/iamkun/dayjs/issues/531)
+* Fix CustomParseFormat plugin formatting bug ([#536](https://github.com/iamkun/dayjs/issues/536)) ([8578546](https://github.com/iamkun/dayjs/commit/8578546)), closes [#533](https://github.com/iamkun/dayjs/issues/533)
+* Update pt locale ([#538](https://github.com/iamkun/dayjs/issues/538)) ([1ac9e1e](https://github.com/iamkun/dayjs/commit/1ac9e1e))
+
+## [1.8.10](https://github.com/iamkun/dayjs/compare/v1.8.9...v1.8.10) (2019-03-10)
+
+
+### Bug Fixes
+
+* **locale:** Add nepali (ne) locale ([#524](https://github.com/iamkun/dayjs/issues/524)) ([bdbec01](https://github.com/iamkun/dayjs/commit/bdbec01))
+* Add WeekYear plugin ([a892608](https://github.com/iamkun/dayjs/commit/a892608))
+* API .locale() with no argument should return current locale name string ([8d63d88](https://github.com/iamkun/dayjs/commit/8d63d88))
+* CustomParseFormat correct parse HH:mm:ss with only one digit like 0:12:10 ([600d547](https://github.com/iamkun/dayjs/commit/600d547))
+* CustomParseFormat plugin parse Do format string ([bf27fda](https://github.com/iamkun/dayjs/commit/bf27fda)), closes [#522](https://github.com/iamkun/dayjs/issues/522)
+* Expand setters like .year(2000) .hour(12) ([ac532a0](https://github.com/iamkun/dayjs/commit/ac532a0))
+* Move toObject, toArray API to separate plugin from core ([40a3431](https://github.com/iamkun/dayjs/commit/40a3431))
+
+## [1.8.9](https://github.com/iamkun/dayjs/compare/v1.8.8...v1.8.9) (2019-03-06)
+
+
+### Features
+
+* Add UTC mode with UTC plugin ([#517](https://github.com/iamkun/dayjs/issues/517)) ([caf335c](https://github.com/iamkun/dayjs/commit/caf335c))
+
+> For plugin developers: Please note, we have changed the name of some method in `Utils` in order to reduce the file size. ([#517](https://github.com/iamkun/dayjs/issues/517)) ([detail](https://github.com/iamkun/dayjs/pull/517/files#diff-2b4ca49d4bb0a774c4d4c1672d7aa781R46))
+
+### Bug Fixes
+
+* Add locale de-AT ([#515](https://github.com/iamkun/dayjs/issues/515)) ([d93f7b6](https://github.com/iamkun/dayjs/commit/d93f7b6))
+* Add locale zh-hk ([#516](https://github.com/iamkun/dayjs/issues/516)) ([5fc05a6](https://github.com/iamkun/dayjs/commit/5fc05a6))
+
+## [1.8.8](https://github.com/iamkun/dayjs/compare/v1.8.7...v1.8.8) (2019-02-25)
+
+
+### Bug Fixes
+
+* Update relativeTime plugin type definition ([de56f2c](https://github.com/iamkun/dayjs/commit/de56f2c))
+
+## [1.8.7](https://github.com/iamkun/dayjs/compare/v1.8.6...v1.8.7) (2019-02-24)
+
+
+### Bug Fixes
+
+* Add plugin type definitions ([#418](https://github.com/iamkun/dayjs/issues/418)) ([361d437](https://github.com/iamkun/dayjs/commit/361d437))
+* Add Swahili locale ([#508](https://github.com/iamkun/dayjs/issues/508)) ([b9cee84](https://github.com/iamkun/dayjs/commit/b9cee84))
+* Parse month string 'MMMM MMM (February, Feb)' in customParseFormat ([#457](https://github.com/iamkun/dayjs/issues/457)) ([f343206](https://github.com/iamkun/dayjs/commit/f343206))
+* Update declaration file .diff .isBefore .isSame .isAfter ([#496](https://github.com/iamkun/dayjs/issues/496)) ([4523275](https://github.com/iamkun/dayjs/commit/4523275))
+* Word orders corrections for locale 'fa' ([#491](https://github.com/iamkun/dayjs/issues/491)) ([56050c2](https://github.com/iamkun/dayjs/commit/56050c2))
+
+## [1.8.6](https://github.com/iamkun/dayjs/compare/v1.8.5...v1.8.6) (2019-02-14)
+
+
+### Bug Fixes
+
+* Add Bahasa Melayu (Malaysia) locale ([#485](https://github.com/iamkun/dayjs/issues/485)) ([cb208b0](https://github.com/iamkun/dayjs/commit/cb208b0))
+* Copy & export built-in en locale to /locale folder as a separate file ([a7e05e0](https://github.com/iamkun/dayjs/commit/a7e05e0))
+* Fix bug in customParseFormat plugin while month(MM) is '01' ([9884ca5](https://github.com/iamkun/dayjs/commit/9884ca5)), closes [#494](https://github.com/iamkun/dayjs/issues/494)
+* Fix startOf week bug while week start is not Sunday ([5eaf77b](https://github.com/iamkun/dayjs/commit/5eaf77b))
+* Implemented isBetween inclusivity ([#464](https://github.com/iamkun/dayjs/issues/464)) ([af2f4f1](https://github.com/iamkun/dayjs/commit/af2f4f1))
+* Update Swedish and Finnish locales ([#488](https://github.com/iamkun/dayjs/issues/488)) ([f142082](https://github.com/iamkun/dayjs/commit/f142082))
+* Fix commonJS require ES Module bug in webpack4 ([23f9f3d](https://github.com/iamkun/dayjs/commit/23f9f3d)), check [#492](https://github.com/iamkun/dayjs/issues/492)
+
+> Get access to ESM code with `import dayjs from 'dayjs/esm'`
+
+## [1.8.5](https://github.com/iamkun/dayjs/compare/v1.8.4...v1.8.5) (2019-02-07)
+
+
+### Bug Fixes
+
+* Add en-gb locale ([#478](https://github.com/iamkun/dayjs/issues/478)) ([508c3a7](https://github.com/iamkun/dayjs/commit/508c3a7))
+* **module:** transpile everything except ES6 modules in the 'module' entrypoint ([#477](https://github.com/iamkun/dayjs/issues/477)) ([#480](https://github.com/iamkun/dayjs/issues/480)) ([#482](https://github.com/iamkun/dayjs/issues/482)) ([767017d](https://github.com/iamkun/dayjs/commit/767017d))
+* update customParseFormat plugin support hh:mm ([54947cc](https://github.com/iamkun/dayjs/commit/54947cc)), closes [#484](https://github.com/iamkun/dayjs/issues/484)
+* Update module in package.json ([5c5a7a0](https://github.com/iamkun/dayjs/commit/5c5a7a0))
+
+## [1.8.4](https://github.com/iamkun/dayjs/compare/v1.8.3...v1.8.4) (2019-02-05)
+
+* Allow set start day of week in locale && Allow set week in weekOfYear plugin ([1295591](https://github.com/iamkun/dayjs/commit/1295591))
+### Bug Fixes
+* update all locale files with correct week start ([5b03412](https://github.com/iamkun/dayjs/commit/5b03412))
+* update es es-do locale adding weekStart && update weekStart test ([66e42ec](https://github.com/iamkun/dayjs/commit/66e42ec))
+* Revert default export ([b00da1b](https://github.com/iamkun/dayjs/commit/b00da1b))
+
+## [1.8.3](https://github.com/iamkun/dayjs/compare/v1.8.2...v1.8.3) (2019-02-04)
+
+
+### Bug Fixes
+
+* fix ios safari YYYY-MM-DD HH:mm parse BUG ([e02ae82](https://github.com/iamkun/dayjs/commit/e02ae82)), closes [#254](https://github.com/iamkun/dayjs/issues/254)
+
+## [1.8.2](https://github.com/iamkun/dayjs/compare/v1.8.1...v1.8.2) (2019-02-02)
+
+
+### Bug Fixes
+
+* Add missing czech language locale ([#461](https://github.com/iamkun/dayjs/issues/461)) ([7e04004](https://github.com/iamkun/dayjs/commit/7e04004))
+* Add utcOffset api method and fix calculating diff error in DST ([#453](https://github.com/iamkun/dayjs/issues/453)) ([ce2e30e](https://github.com/iamkun/dayjs/commit/ce2e30e))
+* Fix it locale error ([#458](https://github.com/iamkun/dayjs/issues/458)) ([f6d9a64](https://github.com/iamkun/dayjs/commit/f6d9a64))
+* Add DayOfYear plugin (#454)
+* Fix es locale monthsShort error
+
+## [1.8.1](https://github.com/iamkun/dayjs/compare/v1.8.0...v1.8.1) (2019-02-02)
+
+* Add LocalizedFormat plugin supplying format like LTS, LT, LLLL
+
+* update declaration File with default export (#278)
+> From v1.8.1, in TypeScript Project, just `import from dayjs from 'dayjs'`
+* add ES2015 module support (#451)
+
+### Performance Improvements
+
+* **format:** reuse matches instead of created when replacing ([#441](https://github.com/iamkun/dayjs/issues/441)) ([10b79d8](https://github.com/iamkun/dayjs/commit/10b79d8))
+
+# [1.8.0](https://github.com/iamkun/dayjs/compare/v1.7.8...v1.8.0) (2019-01-14)
+
+
+### Features
+
+* add CustomParseFormat plugin and QuarterOfYear plugin ([#450](https://github.com/iamkun/dayjs/issues/450)) ([8f6f63c](https://github.com/iamkun/dayjs/commit/8f6f63c))
+
+## [1.7.8](https://github.com/iamkun/dayjs/compare/v1.7.7...v1.7.8) (2018-12-13)
+
+
+### Feature
+
+* update isSame isBefore isAfter supports units ([fd65464](https://github.com/iamkun/dayjs/commit/fd65464))
+
+* add greek lithuanian locales
+
+## [1.7.7](https://github.com/iamkun/dayjs/compare/v1.7.6...v1.7.7) (2018-09-26)
+
+
+### Bug Fixes
+
+* **DST:** fix daylight saving time DST bug && add test ([#354](https://github.com/iamkun/dayjs/issues/354)) ([6fca6d5](https://github.com/iamkun/dayjs/commit/6fca6d5))
+
+## [1.7.6](https://github.com/iamkun/dayjs/compare/v1.7.5...v1.7.6) (2018-09-25)
+
+
+### Bug Fixes
+
+* **add dayjs.unix:** add dayjs.unix to parse timestamp in seconds && locale update ([5711c5e](https://github.com/iamkun/dayjs/commit/5711c5e))
+
+## [1.7.5](https://github.com/iamkun/dayjs/compare/v1.7.4...v1.7.5) (2018-08-10)
+
+
+### Bug Fixes
+
+* add isBetween API & update ([b5fc3d1](https://github.com/iamkun/dayjs/commit/b5fc3d1))
+
+## [1.7.4](https://github.com/iamkun/dayjs/compare/v1.7.3...v1.7.4) (2018-07-11)
+
+
+### Bug Fixes
+
+* update set week logic ([60b6325](https://github.com/iamkun/dayjs/commit/60b6325)), closes [#276](https://github.com/iamkun/dayjs/issues/276)
+
+## [1.7.3](https://github.com/iamkun/dayjs/compare/v1.7.2...v1.7.3) (2018-07-10)
+
+
+### Bug Fixes
+
+* **locale-nl:** set correct weekdays and months ([6d089d7](https://github.com/iamkun/dayjs/commit/6d089d7))
+
+## [1.7.2](https://github.com/iamkun/dayjs/compare/v1.7.1...v1.7.2) (2018-07-04)
+
+
+### Bug Fixes
+
+* DEPRECATED isLeapYear, use IsLeapYear plugin instead ([e2e5116](https://github.com/iamkun/dayjs/commit/e2e5116))
+
+## [1.7.1](https://github.com/iamkun/dayjs/compare/v1.7.0...v1.7.1) (2018-07-03)
+
+
+### Bug Fixes
+
+* fix week() error near the end of the year ([fa03689](https://github.com/iamkun/dayjs/commit/fa03689))
+
+# [1.7.0](https://github.com/iamkun/dayjs/compare/v1.6.10...v1.7.0) (2018-07-02)
+
+
+### Features
+
+* Added method `.week()` to retrieve week of the year ([e1c1b1c](https://github.com/iamkun/dayjs/commit/e1c1b1c))
+* Updated Japanese locae
+
+## [1.6.10](https://github.com/iamkun/dayjs/compare/v1.6.9...v1.6.10) (2018-06-25)
+
+
+### Bug Fixes
+
+* Add relative locales to russian language ([c7e9898](https://github.com/iamkun/dayjs/commit/c7e9898)), closes [#256](https://github.com/iamkun/dayjs/issues/256)
+
+## [1.6.9](https://github.com/iamkun/dayjs/compare/v1.6.8...v1.6.9) (2018-06-14)
+
+
+### Bug Fixes
+
+* add isDayjs => boolean API ([6227c8b](https://github.com/iamkun/dayjs/commit/6227c8b))
+
+## [1.6.8](https://github.com/iamkun/dayjs/compare/v1.6.7...v1.6.8) (2018-06-14)
+
+
+### Bug Fixes
+
+* fix Advanced format bug in zh-cn ([0c07874](https://github.com/iamkun/dayjs/commit/0c07874)), closes [#242](https://github.com/iamkun/dayjs/issues/242)
+
+## [1.6.7](https://github.com/iamkun/dayjs/compare/v1.6.6...v1.6.7) (2018-06-11)
+
+
+### Bug Fixes
+
+* fix id locale ([1ebbeb8](https://github.com/iamkun/dayjs/commit/1ebbeb8)), closes [#234](https://github.com/iamkun/dayjs/issues/234)
+
+
+## [1.6.6](https://github.com/iamkun/dayjs/compare/v1.6.5...v1.6.6) (2018-06-06)
+
+
+### Bug Fixes
+
+* format API update and locale file update ([5ca48f0](https://github.com/iamkun/dayjs/commit/5ca48f0)), closes [#228](https://github.com/iamkun/dayjs/issues/228)
+
+
+## [1.6.5](https://github.com/iamkun/dayjs/compare/v1.6.4...v1.6.5) (2018-05-31)
+
+
+### Bug Fixes
+
+* bugfix, utils update and locale file update ([ebcb6d5](https://github.com/iamkun/dayjs/commit/ebcb6d5)), closes [#214](https://github.com/iamkun/dayjs/issues/214)
+
+
+## [1.6.4](https://github.com/iamkun/dayjs/compare/v1.6.3...v1.6.4) (2018-05-25)
+
+
+### Bug Fixes
+
+* add RelativeTime plugin and locale file update ([c1fbbca](https://github.com/iamkun/dayjs/commit/c1fbbca)), closes [#198](https://github.com/iamkun/dayjs/issues/198)
+
+
+## [1.6.3](https://github.com/iamkun/dayjs/compare/v1.6.2...v1.6.3) (2018-05-21)
+
+
+### Bug Fixes
+
+* Changing locales locally is immutable from this release ([2cce729](https://github.com/iamkun/dayjs/commit/2cce729)), closes [#182](https://github.com/iamkun/dayjs/issues/182)
+* instance locale change should be immutable ([84597c9](https://github.com/iamkun/dayjs/commit/84597c9))
+* Add more locales
+* english ordinal fix
+
+
+## [1.6.2](https://github.com/iamkun/dayjs/compare/v1.6.1...v1.6.2) (2018-05-18)
+
+
+### Bug Fixes
+
+* change-log update && test new npm release ([aa49cba](https://github.com/iamkun/dayjs/commit/aa49cba)), closes [#163](https://github.com/iamkun/dayjs/issues/163)
+
+
+## [1.6.1](https://github.com/iamkun/dayjs/compare/v1.6.0...v1.6.1) (2018-05-18)
+
+
+### Bug Fixes
+
+* Add German, Brazilian Portuguese locales
+* add() & parse() bug fix & add locale de, pt-br ([bf1331e](https://github.com/iamkun/dayjs/commit/bf1331e))
+
+
+# [1.6.0](https://github.com/iamkun/dayjs/compare/v1.5.24...v1.6.0) (2018-05-15)
+
+
+### Features
+
+* Locale && Plugin ([2342c55](https://github.com/iamkun/dayjs/commit/2342c55)), closes [#141](https://github.com/iamkun/dayjs/issues/141)
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/af.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/af.js
new file mode 100644
index 0000000..ce0c285
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/af.js
@@ -0,0 +1,39 @@
+// Afrikaans [af]
+import dayjs from '../index';
+var locale = {
+ name: 'af',
+ weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
+ months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
+ weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'oor %s',
+ past: '%s gelede',
+ s: "'n paar sekondes",
+ m: "'n minuut",
+ mm: '%d minute',
+ h: "'n uur",
+ hh: '%d ure',
+ d: "'n dag",
+ dd: '%d dae',
+ M: "'n maand",
+ MM: '%d maande',
+ y: "'n jaar",
+ yy: '%d jaar'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ar-ma.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ar-ma.js
new file mode 100644
index 0000000..ed6dfef
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ar-ma.js
@@ -0,0 +1,42 @@
+// Arabic (Morocco) [ar-ma]
+import dayjs from '../index';
+var locale = {
+ name: 'ar-ma',
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
+ weekStart: 6,
+ weekdaysShort: 'احد_إثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
+ monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour > 12 ? 'م' : 'ص';
+ },
+ relativeTime: {
+ future: 'في %s',
+ past: 'منذ %s',
+ s: 'ثوان',
+ m: 'دقيقة',
+ mm: '%d دقائق',
+ h: 'ساعة',
+ hh: '%d ساعات',
+ d: 'يوم',
+ dd: '%d أيام',
+ M: 'شهر',
+ MM: '%d أشهر',
+ y: 'سنة',
+ yy: '%d سنوات'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ar-sa.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ar-sa.js
new file mode 100644
index 0000000..8eb9687
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ar-sa.js
@@ -0,0 +1,41 @@
+// Arabic (Saudi Arabia) [ar-sa]
+import dayjs from '../index';
+var locale = {
+ name: 'ar-sa',
+ weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
+ months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
+ monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
+ weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ meridiem: function meridiem(hour) {
+ return hour > 12 ? 'م' : 'ص';
+ },
+ relativeTime: {
+ future: 'في %s',
+ past: 'منذ %s',
+ s: 'ثوان',
+ m: 'دقيقة',
+ mm: '%d دقائق',
+ h: 'ساعة',
+ hh: '%d ساعات',
+ d: 'يوم',
+ dd: '%d أيام',
+ M: 'شهر',
+ MM: '%d أشهر',
+ y: 'سنة',
+ yy: '%d سنوات'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/bm.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/bm.js
new file mode 100644
index 0000000..0d61093
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/bm.js
@@ -0,0 +1,39 @@
+// Bambara [bm]
+import dayjs from '../index';
+var locale = {
+ name: 'bm',
+ weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
+ months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
+ monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
+ weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'MMMM [tile] D [san] YYYY',
+ LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
+ LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'
+ },
+ relativeTime: {
+ future: '%s kɔnɔ',
+ past: 'a bɛ %s bɔ',
+ s: 'sanga dama dama',
+ m: 'miniti kelen',
+ mm: 'miniti %d',
+ h: 'lɛrɛ kelen',
+ hh: 'lɛrɛ %d',
+ d: 'tile kelen',
+ dd: 'tile %d',
+ M: 'kalo kelen',
+ MM: 'kalo %d',
+ y: 'san kelen',
+ yy: 'san %d'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/bs.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/bs.js
new file mode 100644
index 0000000..328a1fe
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/bs.js
@@ -0,0 +1,24 @@
+// Bosnian [bs]
+import dayjs from '../index';
+var locale = {
+ name: 'bs',
+ weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
+ months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+ monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
+ weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/constant.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/constant.js
new file mode 100644
index 0000000..02ffe1b
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/constant.js
@@ -0,0 +1,25 @@
+export var SECONDS_A_MINUTE = 60;
+export var SECONDS_A_HOUR = SECONDS_A_MINUTE * 60;
+export var SECONDS_A_DAY = SECONDS_A_HOUR * 24;
+export var SECONDS_A_WEEK = SECONDS_A_DAY * 7;
+export var MILLISECONDS_A_SECOND = 1e3;
+export var MILLISECONDS_A_MINUTE = SECONDS_A_MINUTE * MILLISECONDS_A_SECOND;
+export var MILLISECONDS_A_HOUR = SECONDS_A_HOUR * MILLISECONDS_A_SECOND;
+export var MILLISECONDS_A_DAY = SECONDS_A_DAY * MILLISECONDS_A_SECOND;
+export var MILLISECONDS_A_WEEK = SECONDS_A_WEEK * MILLISECONDS_A_SECOND; // English locales
+
+export var MS = 'millisecond';
+export var S = 'second';
+export var MIN = 'minute';
+export var H = 'hour';
+export var D = 'day';
+export var W = 'week';
+export var M = 'month';
+export var Q = 'quarter';
+export var Y = 'year';
+export var DATE = 'date';
+export var FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ';
+export var INVALID_DATE_STRING = 'Invalid Date'; // regex
+
+export var REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/;
+export var REGEX_FORMAT = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/dv.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/dv.js
new file mode 100644
index 0000000..8943fdd
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/dv.js
@@ -0,0 +1,39 @@
+// Maldivian [dv]
+import dayjs from '../index';
+var locale = {
+ name: 'dv',
+ weekdays: 'އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު'.split('_'),
+ months: 'ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު'.split('_'),
+ weekStart: 7,
+ weekdaysShort: 'އާދިއްތަ_ހޯމަ_އަންގާރަ_ބުދަ_ބުރާސްފަތި_ހުކުރު_ހޮނިހިރު'.split('_'),
+ monthsShort: 'ޖެނުއަރީ_ފެބްރުއަރީ_މާރިޗު_އޭޕްރީލު_މޭ_ޖޫން_ޖުލައި_އޯގަސްޓު_ސެޕްޓެމްބަރު_އޮކްޓޯބަރު_ނޮވެމްބަރު_ޑިސެމްބަރު'.split('_'),
+ weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'D/M/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'ތެރޭގައި %s',
+ past: 'ކުރިން %s',
+ s: 'ސިކުންތުކޮޅެއް',
+ m: 'މިނިޓެއް',
+ mm: 'މިނިޓު %d',
+ h: 'ގަޑިއިރެއް',
+ hh: 'ގަޑިއިރު %d',
+ d: 'ދުވަހެއް',
+ dd: 'ދުވަސް %d',
+ M: 'މަހެއް',
+ MM: 'މަސް %d',
+ y: 'އަހަރެއް',
+ yy: 'އަހަރު %d'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-ca.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-ca.js
new file mode 100644
index 0000000..8e416c9
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-ca.js
@@ -0,0 +1,38 @@
+// English (Canada) [en-ca]
+import dayjs from '../index';
+var locale = {
+ name: 'en-ca',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'YYYY-MM-DD',
+ LL: 'MMMM D, YYYY',
+ LLL: 'MMMM D, YYYY h:mm A',
+ LLLL: 'dddd, MMMM D, YYYY h:mm A'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-il.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-il.js
new file mode 100644
index 0000000..56c241a
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-il.js
@@ -0,0 +1,38 @@
+// English (Israel) [en-il]
+import dayjs from '../index';
+var locale = {
+ name: 'en-il',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-nz.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-nz.js
new file mode 100644
index 0000000..08c562e
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-nz.js
@@ -0,0 +1,41 @@
+// English (New Zealand) [en-nz]
+import dayjs from '../index';
+var locale = {
+ name: 'en-nz',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ var s = ['th', 'st', 'nd', 'rd'];
+ var v = n % 100;
+ return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]";
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY h:mm A',
+ LLLL: 'dddd, D MMMM YYYY h:mm A'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-sg.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-sg.js
new file mode 100644
index 0000000..3c5edce
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-sg.js
@@ -0,0 +1,39 @@
+// English (Singapore) [en-sg]
+import dayjs from '../index';
+var locale = {
+ name: 'en-sg',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-tt.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-tt.js
new file mode 100644
index 0000000..ef47eeb
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/en-tt.js
@@ -0,0 +1,42 @@
+// English (Trinidad & Tobago) [en-tt]
+import dayjs from '../index';
+var locale = {
+ name: 'en-tt',
+ weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
+ weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
+ weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
+ months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
+ monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ relativeTime: {
+ future: 'in %s',
+ past: '%s ago',
+ s: 'a few seconds',
+ m: 'a minute',
+ mm: '%d minutes',
+ h: 'an hour',
+ hh: '%d hours',
+ d: 'a day',
+ dd: '%d days',
+ M: 'a month',
+ MM: '%d months',
+ y: 'a year',
+ yy: '%d years'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ ordinal: function ordinal(n) {
+ var s = ['th', 'st', 'nd', 'rd'];
+ var v = n % 100;
+ return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/es-us.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/es-us.js
new file mode 100644
index 0000000..f9b01a0
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/es-us.js
@@ -0,0 +1,38 @@
+// Spanish (United States) [es-us]
+import dayjs from '../index';
+var locale = {
+ name: 'es-us',
+ weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+ weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+ weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+ months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
+ monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+ relativeTime: {
+ future: 'en %s',
+ past: 'hace %s',
+ s: 'unos segundos',
+ m: 'un minuto',
+ mm: '%d minutos',
+ h: 'una hora',
+ hh: '%d horas',
+ d: 'un día',
+ dd: '%d días',
+ M: 'un mes',
+ MM: '%d meses',
+ y: 'un año',
+ yy: '%d años'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'MM/DD/YYYY',
+ LL: 'D [de] MMMM [de] YYYY',
+ LLL: 'D [de] MMMM [de] YYYY h:mm A',
+ LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/es.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/es.js
new file mode 100644
index 0000000..84bdfbe
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/es.js
@@ -0,0 +1,39 @@
+// Spanish [es]
+import dayjs from '../index';
+var locale = {
+ name: 'es',
+ monthsShort: 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
+ weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
+ weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
+ weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
+ months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D [de] MMMM [de] YYYY',
+ LLL: 'D [de] MMMM [de] YYYY H:mm',
+ LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'
+ },
+ relativeTime: {
+ future: 'en %s',
+ past: 'hace %s',
+ s: 'unos segundos',
+ m: 'un minuto',
+ mm: '%d minutos',
+ h: 'una hora',
+ hh: '%d horas',
+ d: 'un día',
+ dd: '%d días',
+ M: 'un mes',
+ MM: '%d meses',
+ y: 'un año',
+ yy: '%d años'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/fi.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/fi.js
new file mode 100644
index 0000000..1ded894
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/fi.js
@@ -0,0 +1,88 @@
+// Finnish [fi]
+import dayjs from '../index';
+
+function relativeTimeFormatter(number, withoutSuffix, key, isFuture) {
+ var past = {
+ s: 'muutama sekunti',
+ m: 'minuutti',
+ mm: '%d minuuttia',
+ h: 'tunti',
+ hh: '%d tuntia',
+ d: 'päivä',
+ dd: '%d päivää',
+ M: 'kuukausi',
+ MM: '%d kuukautta',
+ y: 'vuosi',
+ yy: '%d vuotta',
+ numbers: 'nolla_yksi_kaksi_kolme_neljä_viisi_kuusi_seitsemän_kahdeksan_yhdeksän'.split('_')
+ };
+ var future = {
+ s: 'muutaman sekunnin',
+ m: 'minuutin',
+ mm: '%d minuutin',
+ h: 'tunnin',
+ hh: '%d tunnin',
+ d: 'päivän',
+ dd: '%d päivän',
+ M: 'kuukauden',
+ MM: '%d kuukauden',
+ y: 'vuoden',
+ yy: '%d vuoden',
+ numbers: 'nollan_yhden_kahden_kolmen_neljän_viiden_kuuden_seitsemän_kahdeksan_yhdeksän'.split('_')
+ };
+ var words = isFuture && !withoutSuffix ? future : past;
+ var result = words[key];
+
+ if (number < 10) {
+ return result.replace('%d', words.numbers[number]);
+ }
+
+ return result.replace('%d', number);
+}
+
+var locale = {
+ name: 'fi',
+ // Finnish
+ weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
+ // Note weekdays are not capitalized in Finnish
+ weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
+ // There is no short form of weekdays in Finnish except this 2 letter format so it is used for both 'weekdaysShort' and 'weekdaysMin'
+ weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
+ months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
+ // Note month names are not capitalized in Finnish
+ monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ yearStart: 4,
+ relativeTime: {
+ future: '%s päästä',
+ past: '%s sitten',
+ s: relativeTimeFormatter,
+ m: relativeTimeFormatter,
+ mm: relativeTimeFormatter,
+ h: relativeTimeFormatter,
+ hh: relativeTimeFormatter,
+ d: relativeTimeFormatter,
+ dd: relativeTimeFormatter,
+ M: relativeTimeFormatter,
+ MM: relativeTimeFormatter,
+ y: relativeTimeFormatter,
+ yy: relativeTimeFormatter
+ },
+ formats: {
+ LT: 'HH.mm',
+ LTS: 'HH.mm.ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM[ta] YYYY',
+ LLL: 'D. MMMM[ta] YYYY, [klo] HH.mm',
+ LLLL: 'dddd, D. MMMM[ta] YYYY, [klo] HH.mm',
+ l: 'D.M.YYYY',
+ ll: 'D. MMM YYYY',
+ lll: 'D. MMM YYYY, [klo] HH.mm',
+ llll: 'ddd, D. MMM YYYY, [klo] HH.mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/fo.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/fo.js
new file mode 100644
index 0000000..07c3761
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/fo.js
@@ -0,0 +1,39 @@
+// Faroese [fo]
+import dayjs from '../index';
+var locale = {
+ name: 'fo',
+ weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
+ months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
+ weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D. MMMM, YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'um %s',
+ past: '%s síðani',
+ s: 'fá sekund',
+ m: 'ein minuttur',
+ mm: '%d minuttir',
+ h: 'ein tími',
+ hh: '%d tímar',
+ d: 'ein dagur',
+ dd: '%d dagar',
+ M: 'ein mánaður',
+ MM: '%d mánaðir',
+ y: 'eitt ár',
+ yy: '%d ár'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/fr-ch.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/fr-ch.js
new file mode 100644
index 0000000..593dba8
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/fr-ch.js
@@ -0,0 +1,39 @@
+// French (Switzerland) [fr-ch]
+import dayjs from '../index';
+var locale = {
+ name: 'fr-ch',
+ weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
+ months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
+ monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
+ weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'dans %s',
+ past: 'il y a %s',
+ s: 'quelques secondes',
+ m: 'une minute',
+ mm: '%d minutes',
+ h: 'une heure',
+ hh: '%d heures',
+ d: 'un jour',
+ dd: '%d jours',
+ M: 'un mois',
+ MM: '%d mois',
+ y: 'un an',
+ yy: '%d ans'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/gu.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/gu.js
new file mode 100644
index 0000000..e05f44b
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/gu.js
@@ -0,0 +1,38 @@
+// Gujarati [gu]
+import dayjs from '../index';
+var locale = {
+ name: 'gu',
+ weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),
+ months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),
+ weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
+ monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),
+ weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'A h:mm વાગ્યે',
+ LTS: 'A h:mm:ss વાગ્યે',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
+ LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'
+ },
+ relativeTime: {
+ future: '%s મા',
+ past: '%s પેહલા',
+ s: 'અમુક પળો',
+ m: 'એક મિનિટ',
+ mm: '%d મિનિટ',
+ h: 'એક કલાક',
+ hh: '%d કલાક',
+ d: 'એક દિવસ',
+ dd: '%d દિવસ',
+ M: 'એક મહિનો',
+ MM: '%d મહિનો',
+ y: 'એક વર્ષ',
+ yy: '%d વર્ષ'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/hr.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/hr.js
new file mode 100644
index 0000000..a760fe3
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/hr.js
@@ -0,0 +1,53 @@
+// Croatian [hr]
+import dayjs from '../index';
+var monthFormat = 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_');
+var monthStandalone = 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_');
+var MONTHS_IN_FORMAT = /D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;
+
+var months = function months(dayjsInstance, format) {
+ if (MONTHS_IN_FORMAT.test(format)) {
+ return monthFormat[dayjsInstance.month()];
+ }
+
+ return monthStandalone[dayjsInstance.month()];
+};
+
+months.s = monthStandalone;
+months.f = monthFormat;
+var locale = {
+ name: 'hr',
+ weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
+ weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
+ weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
+ months: months,
+ monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd, D. MMMM YYYY H:mm'
+ },
+ relativeTime: {
+ future: 'za %s',
+ past: 'prije %s',
+ s: 'sekunda',
+ m: 'minuta',
+ mm: '%d minuta',
+ h: 'sat',
+ hh: '%d sati',
+ d: 'dan',
+ dd: '%d dana',
+ M: 'mjesec',
+ MM: '%d mjeseci',
+ y: 'godina',
+ yy: '%d godine'
+ },
+ ordinal: function ordinal(n) {
+ return n + ".";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/index.js
new file mode 100644
index 0000000..3a76275
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/index.js
@@ -0,0 +1,441 @@
+import * as C from './constant';
+import en from './locale/en';
+import U from './utils';
+var L = 'en'; // global locale
+
+var Ls = {}; // global loaded locale
+
+Ls[L] = en;
+
+var isDayjs = function isDayjs(d) {
+ return d instanceof Dayjs;
+}; // eslint-disable-line no-use-before-define
+
+
+var parseLocale = function parseLocale(preset, object, isLocal) {
+ var l;
+ if (!preset) return L;
+
+ if (typeof preset === 'string') {
+ var presetLower = preset.toLowerCase();
+
+ if (Ls[presetLower]) {
+ l = presetLower;
+ }
+
+ if (object) {
+ Ls[presetLower] = object;
+ l = presetLower;
+ }
+
+ var presetSplit = preset.split('-');
+
+ if (!l && presetSplit.length > 1) {
+ return parseLocale(presetSplit[0]);
+ }
+ } else {
+ var name = preset.name;
+ Ls[name] = preset;
+ l = name;
+ }
+
+ if (!isLocal && l) L = l;
+ return l || !isLocal && L;
+};
+
+var dayjs = function dayjs(date, c) {
+ if (isDayjs(date)) {
+ return date.clone();
+ } // eslint-disable-next-line no-nested-ternary
+
+
+ var cfg = typeof c === 'object' ? c : {};
+ cfg.date = date;
+ cfg.args = arguments; // eslint-disable-line prefer-rest-params
+
+ return new Dayjs(cfg); // eslint-disable-line no-use-before-define
+};
+
+var wrapper = function wrapper(date, instance) {
+ return dayjs(date, {
+ locale: instance.$L,
+ utc: instance.$u,
+ x: instance.$x,
+ $offset: instance.$offset // todo: refactor; do not use this.$offset in you code
+
+ });
+};
+
+var Utils = U; // for plugin use
+
+Utils.l = parseLocale;
+Utils.i = isDayjs;
+Utils.w = wrapper;
+
+var parseDate = function parseDate(cfg) {
+ var date = cfg.date,
+ utc = cfg.utc;
+ if (date === null) return new Date(NaN); // null is invalid
+
+ if (Utils.u(date)) return new Date(); // today
+
+ if (date instanceof Date) return new Date(date);
+
+ if (typeof date === 'string' && !/Z$/i.test(date)) {
+ var d = date.match(C.REGEX_PARSE);
+
+ if (d) {
+ var m = d[2] - 1 || 0;
+ var ms = (d[7] || '0').substring(0, 3);
+
+ if (utc) {
+ return new Date(Date.UTC(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms));
+ }
+
+ return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);
+ }
+ }
+
+ return new Date(date); // everything else
+};
+
+var Dayjs = /*#__PURE__*/function () {
+ function Dayjs(cfg) {
+ this.$L = parseLocale(cfg.locale, null, true);
+ this.parse(cfg); // for plugin
+ }
+
+ var _proto = Dayjs.prototype;
+
+ _proto.parse = function parse(cfg) {
+ this.$d = parseDate(cfg);
+ this.$x = cfg.x || {};
+ this.init();
+ };
+
+ _proto.init = function init() {
+ var $d = this.$d;
+ this.$y = $d.getFullYear();
+ this.$M = $d.getMonth();
+ this.$D = $d.getDate();
+ this.$W = $d.getDay();
+ this.$H = $d.getHours();
+ this.$m = $d.getMinutes();
+ this.$s = $d.getSeconds();
+ this.$ms = $d.getMilliseconds();
+ } // eslint-disable-next-line class-methods-use-this
+ ;
+
+ _proto.$utils = function $utils() {
+ return Utils;
+ };
+
+ _proto.isValid = function isValid() {
+ return !(this.$d.toString() === C.INVALID_DATE_STRING);
+ };
+
+ _proto.isSame = function isSame(that, units) {
+ var other = dayjs(that);
+ return this.startOf(units) <= other && other <= this.endOf(units);
+ };
+
+ _proto.isAfter = function isAfter(that, units) {
+ return dayjs(that) < this.startOf(units);
+ };
+
+ _proto.isBefore = function isBefore(that, units) {
+ return this.endOf(units) < dayjs(that);
+ };
+
+ _proto.$g = function $g(input, get, set) {
+ if (Utils.u(input)) return this[get];
+ return this.set(set, input);
+ };
+
+ _proto.unix = function unix() {
+ return Math.floor(this.valueOf() / 1000);
+ };
+
+ _proto.valueOf = function valueOf() {
+ // timezone(hour) * 60 * 60 * 1000 => ms
+ return this.$d.getTime();
+ };
+
+ _proto.startOf = function startOf(units, _startOf) {
+ var _this = this;
+
+ // startOf -> endOf
+ var isStartOf = !Utils.u(_startOf) ? _startOf : true;
+ var unit = Utils.p(units);
+
+ var instanceFactory = function instanceFactory(d, m) {
+ var ins = Utils.w(_this.$u ? Date.UTC(_this.$y, m, d) : new Date(_this.$y, m, d), _this);
+ return isStartOf ? ins : ins.endOf(C.D);
+ };
+
+ var instanceFactorySet = function instanceFactorySet(method, slice) {
+ var argumentStart = [0, 0, 0, 0];
+ var argumentEnd = [23, 59, 59, 999];
+ return Utils.w(_this.toDate()[method].apply( // eslint-disable-line prefer-spread
+ _this.toDate('s'), (isStartOf ? argumentStart : argumentEnd).slice(slice)), _this);
+ };
+
+ var $W = this.$W,
+ $M = this.$M,
+ $D = this.$D;
+ var utcPad = "set" + (this.$u ? 'UTC' : '');
+
+ switch (unit) {
+ case C.Y:
+ return isStartOf ? instanceFactory(1, 0) : instanceFactory(31, 11);
+
+ case C.M:
+ return isStartOf ? instanceFactory(1, $M) : instanceFactory(0, $M + 1);
+
+ case C.W:
+ {
+ var weekStart = this.$locale().weekStart || 0;
+ var gap = ($W < weekStart ? $W + 7 : $W) - weekStart;
+ return instanceFactory(isStartOf ? $D - gap : $D + (6 - gap), $M);
+ }
+
+ case C.D:
+ case C.DATE:
+ return instanceFactorySet(utcPad + "Hours", 0);
+
+ case C.H:
+ return instanceFactorySet(utcPad + "Minutes", 1);
+
+ case C.MIN:
+ return instanceFactorySet(utcPad + "Seconds", 2);
+
+ case C.S:
+ return instanceFactorySet(utcPad + "Milliseconds", 3);
+
+ default:
+ return this.clone();
+ }
+ };
+
+ _proto.endOf = function endOf(arg) {
+ return this.startOf(arg, false);
+ };
+
+ _proto.$set = function $set(units, _int) {
+ var _C$D$C$DATE$C$M$C$Y$C;
+
+ // private set
+ var unit = Utils.p(units);
+ var utcPad = "set" + (this.$u ? 'UTC' : '');
+ var name = (_C$D$C$DATE$C$M$C$Y$C = {}, _C$D$C$DATE$C$M$C$Y$C[C.D] = utcPad + "Date", _C$D$C$DATE$C$M$C$Y$C[C.DATE] = utcPad + "Date", _C$D$C$DATE$C$M$C$Y$C[C.M] = utcPad + "Month", _C$D$C$DATE$C$M$C$Y$C[C.Y] = utcPad + "FullYear", _C$D$C$DATE$C$M$C$Y$C[C.H] = utcPad + "Hours", _C$D$C$DATE$C$M$C$Y$C[C.MIN] = utcPad + "Minutes", _C$D$C$DATE$C$M$C$Y$C[C.S] = utcPad + "Seconds", _C$D$C$DATE$C$M$C$Y$C[C.MS] = utcPad + "Milliseconds", _C$D$C$DATE$C$M$C$Y$C)[unit];
+ var arg = unit === C.D ? this.$D + (_int - this.$W) : _int;
+
+ if (unit === C.M || unit === C.Y) {
+ // clone is for badMutable plugin
+ var date = this.clone().set(C.DATE, 1);
+ date.$d[name](arg);
+ date.init();
+ this.$d = date.set(C.DATE, Math.min(this.$D, date.daysInMonth())).$d;
+ } else if (name) this.$d[name](arg);
+
+ this.init();
+ return this;
+ };
+
+ _proto.set = function set(string, _int2) {
+ return this.clone().$set(string, _int2);
+ };
+
+ _proto.get = function get(unit) {
+ return this[Utils.p(unit)]();
+ };
+
+ _proto.add = function add(number, units) {
+ var _this2 = this,
+ _C$MIN$C$H$C$S$unit;
+
+ number = Number(number); // eslint-disable-line no-param-reassign
+
+ var unit = Utils.p(units);
+
+ var instanceFactorySet = function instanceFactorySet(n) {
+ var d = dayjs(_this2);
+ return Utils.w(d.date(d.date() + Math.round(n * number)), _this2);
+ };
+
+ if (unit === C.M) {
+ return this.set(C.M, this.$M + number);
+ }
+
+ if (unit === C.Y) {
+ return this.set(C.Y, this.$y + number);
+ }
+
+ if (unit === C.D) {
+ return instanceFactorySet(1);
+ }
+
+ if (unit === C.W) {
+ return instanceFactorySet(7);
+ }
+
+ var step = (_C$MIN$C$H$C$S$unit = {}, _C$MIN$C$H$C$S$unit[C.MIN] = C.MILLISECONDS_A_MINUTE, _C$MIN$C$H$C$S$unit[C.H] = C.MILLISECONDS_A_HOUR, _C$MIN$C$H$C$S$unit[C.S] = C.MILLISECONDS_A_SECOND, _C$MIN$C$H$C$S$unit)[unit] || 1; // ms
+
+ var nextTimeStamp = this.$d.getTime() + number * step;
+ return Utils.w(nextTimeStamp, this);
+ };
+
+ _proto.subtract = function subtract(number, string) {
+ return this.add(number * -1, string);
+ };
+
+ _proto.format = function format(formatStr) {
+ var _this3 = this;
+
+ var locale = this.$locale();
+ if (!this.isValid()) return locale.invalidDate || C.INVALID_DATE_STRING;
+ var str = formatStr || C.FORMAT_DEFAULT;
+ var zoneStr = Utils.z(this);
+ var $H = this.$H,
+ $m = this.$m,
+ $M = this.$M;
+ var weekdays = locale.weekdays,
+ months = locale.months,
+ meridiem = locale.meridiem;
+
+ var getShort = function getShort(arr, index, full, length) {
+ return arr && (arr[index] || arr(_this3, str)) || full[index].slice(0, length);
+ };
+
+ var get$H = function get$H(num) {
+ return Utils.s($H % 12 || 12, num, '0');
+ };
+
+ var meridiemFunc = meridiem || function (hour, minute, isLowercase) {
+ var m = hour < 12 ? 'AM' : 'PM';
+ return isLowercase ? m.toLowerCase() : m;
+ };
+
+ var matches = {
+ YY: String(this.$y).slice(-2),
+ YYYY: this.$y,
+ M: $M + 1,
+ MM: Utils.s($M + 1, 2, '0'),
+ MMM: getShort(locale.monthsShort, $M, months, 3),
+ MMMM: getShort(months, $M),
+ D: this.$D,
+ DD: Utils.s(this.$D, 2, '0'),
+ d: String(this.$W),
+ dd: getShort(locale.weekdaysMin, this.$W, weekdays, 2),
+ ddd: getShort(locale.weekdaysShort, this.$W, weekdays, 3),
+ dddd: weekdays[this.$W],
+ H: String($H),
+ HH: Utils.s($H, 2, '0'),
+ h: get$H(1),
+ hh: get$H(2),
+ a: meridiemFunc($H, $m, true),
+ A: meridiemFunc($H, $m, false),
+ m: String($m),
+ mm: Utils.s($m, 2, '0'),
+ s: String(this.$s),
+ ss: Utils.s(this.$s, 2, '0'),
+ SSS: Utils.s(this.$ms, 3, '0'),
+ Z: zoneStr // 'ZZ' logic below
+
+ };
+ return str.replace(C.REGEX_FORMAT, function (match, $1) {
+ return $1 || matches[match] || zoneStr.replace(':', '');
+ }); // 'ZZ'
+ };
+
+ _proto.utcOffset = function utcOffset() {
+ // Because a bug at FF24, we're rounding the timezone offset around 15 minutes
+ // https://github.com/moment/moment/pull/1871
+ return -Math.round(this.$d.getTimezoneOffset() / 15) * 15;
+ };
+
+ _proto.diff = function diff(input, units, _float) {
+ var _C$Y$C$M$C$Q$C$W$C$D$;
+
+ var unit = Utils.p(units);
+ var that = dayjs(input);
+ var zoneDelta = (that.utcOffset() - this.utcOffset()) * C.MILLISECONDS_A_MINUTE;
+ var diff = this - that;
+ var result = Utils.m(this, that);
+ result = (_C$Y$C$M$C$Q$C$W$C$D$ = {}, _C$Y$C$M$C$Q$C$W$C$D$[C.Y] = result / 12, _C$Y$C$M$C$Q$C$W$C$D$[C.M] = result, _C$Y$C$M$C$Q$C$W$C$D$[C.Q] = result / 3, _C$Y$C$M$C$Q$C$W$C$D$[C.W] = (diff - zoneDelta) / C.MILLISECONDS_A_WEEK, _C$Y$C$M$C$Q$C$W$C$D$[C.D] = (diff - zoneDelta) / C.MILLISECONDS_A_DAY, _C$Y$C$M$C$Q$C$W$C$D$[C.H] = diff / C.MILLISECONDS_A_HOUR, _C$Y$C$M$C$Q$C$W$C$D$[C.MIN] = diff / C.MILLISECONDS_A_MINUTE, _C$Y$C$M$C$Q$C$W$C$D$[C.S] = diff / C.MILLISECONDS_A_SECOND, _C$Y$C$M$C$Q$C$W$C$D$)[unit] || diff; // milliseconds
+
+ return _float ? result : Utils.a(result);
+ };
+
+ _proto.daysInMonth = function daysInMonth() {
+ return this.endOf(C.M).$D;
+ };
+
+ _proto.$locale = function $locale() {
+ // get locale object
+ return Ls[this.$L];
+ };
+
+ _proto.locale = function locale(preset, object) {
+ if (!preset) return this.$L;
+ var that = this.clone();
+ var nextLocaleName = parseLocale(preset, object, true);
+ if (nextLocaleName) that.$L = nextLocaleName;
+ return that;
+ };
+
+ _proto.clone = function clone() {
+ return Utils.w(this.$d, this);
+ };
+
+ _proto.toDate = function toDate() {
+ return new Date(this.valueOf());
+ };
+
+ _proto.toJSON = function toJSON() {
+ return this.isValid() ? this.toISOString() : null;
+ };
+
+ _proto.toISOString = function toISOString() {
+ // ie 8 return
+ // new Dayjs(this.valueOf() + this.$d.getTimezoneOffset() * 60000)
+ // .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')
+ return this.$d.toISOString();
+ };
+
+ _proto.toString = function toString() {
+ return this.$d.toUTCString();
+ };
+
+ return Dayjs;
+}();
+
+var proto = Dayjs.prototype;
+dayjs.prototype = proto;
+[['$ms', C.MS], ['$s', C.S], ['$m', C.MIN], ['$H', C.H], ['$W', C.D], ['$M', C.M], ['$y', C.Y], ['$D', C.DATE]].forEach(function (g) {
+ proto[g[1]] = function (input) {
+ return this.$g(input, g[0], g[1]);
+ };
+});
+
+dayjs.extend = function (plugin, option) {
+ if (!plugin.$i) {
+ // install plugin only once
+ plugin(option, Dayjs, dayjs);
+ plugin.$i = true;
+ }
+
+ return dayjs;
+};
+
+dayjs.locale = parseLocale;
+dayjs.isDayjs = isDayjs;
+
+dayjs.unix = function (timestamp) {
+ return dayjs(timestamp * 1e3);
+};
+
+dayjs.en = Ls[L];
+dayjs.Ls = Ls;
+dayjs.p = {};
+export default dayjs;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/it.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/it.js
new file mode 100644
index 0000000..e8d2490
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/it.js
@@ -0,0 +1,39 @@
+// Italian [it]
+import dayjs from '../index';
+var locale = {
+ name: 'it',
+ weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
+ weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
+ weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
+ months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
+ weekStart: 1,
+ monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'tra %s',
+ past: '%s fa',
+ s: 'qualche secondo',
+ m: 'un minuto',
+ mm: '%d minuti',
+ h: 'un\' ora',
+ hh: '%d ore',
+ d: 'un giorno',
+ dd: '%d giorni',
+ M: 'un mese',
+ MM: '%d mesi',
+ y: 'un anno',
+ yy: '%d anni'
+ },
+ ordinal: function ordinal(n) {
+ return n + "\xBA";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ka.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ka.js
new file mode 100644
index 0000000..381fffa
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ka.js
@@ -0,0 +1,39 @@
+// Georgian [ka]
+import dayjs from '../index';
+var locale = {
+ name: 'ka',
+ weekdays: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
+ weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
+ weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
+ months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
+ monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY h:mm A',
+ LLLL: 'dddd, D MMMM YYYY h:mm A'
+ },
+ relativeTime: {
+ future: '%s შემდეგ',
+ past: '%s წინ',
+ s: 'წამი',
+ m: 'წუთი',
+ mm: '%d წუთი',
+ h: 'საათი',
+ hh: '%d საათის',
+ d: 'დღეს',
+ dd: '%d დღის განმავლობაში',
+ M: 'თვის',
+ MM: '%d თვის',
+ y: 'წელი',
+ yy: '%d წლის'
+ },
+ ordinal: function ordinal(n) {
+ return n;
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/km.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/km.js
new file mode 100644
index 0000000..7fd185b
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/km.js
@@ -0,0 +1,39 @@
+// Cambodian [km]
+import dayjs from '../index';
+var locale = {
+ name: 'km',
+ weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
+ months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
+ monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
+ weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: '%sទៀត',
+ past: '%sមុន',
+ s: 'ប៉ុន្មានវិនាទី',
+ m: 'មួយនាទី',
+ mm: '%d នាទី',
+ h: 'មួយម៉ោង',
+ hh: '%d ម៉ោង',
+ d: 'មួយថ្ងៃ',
+ dd: '%d ថ្ងៃ',
+ M: 'មួយខែ',
+ MM: '%d ខែ',
+ y: 'មួយឆ្នាំ',
+ yy: '%d ឆ្នាំ'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/lo.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/lo.js
new file mode 100644
index 0000000..7732ec4
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/lo.js
@@ -0,0 +1,38 @@
+// Lao [lo]
+import dayjs from '../index';
+var locale = {
+ name: 'lo',
+ weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
+ months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
+ weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
+ monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
+ weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'ວັນdddd D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'ອີກ %s',
+ past: '%sຜ່ານມາ',
+ s: 'ບໍ່ເທົ່າໃດວິນາທີ',
+ m: '1 ນາທີ',
+ mm: '%d ນາທີ',
+ h: '1 ຊົ່ວໂມງ',
+ hh: '%d ຊົ່ວໂມງ',
+ d: '1 ມື້',
+ dd: '%d ມື້',
+ M: '1 ເດືອນ',
+ MM: '%d ເດືອນ',
+ y: '1 ປີ',
+ yy: '%d ປີ'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/lt.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/lt.js
new file mode 100644
index 0000000..cb46ca9
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/lt.js
@@ -0,0 +1,70 @@
+// Lithuanian [lt]
+import dayjs from '../index';
+var monthFormat = 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_');
+var monthStandalone = 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'); // eslint-disable-next-line no-useless-escape
+
+var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/;
+
+var months = function months(dayjsInstance, format) {
+ if (MONTHS_IN_FORMAT.test(format)) {
+ return monthFormat[dayjsInstance.month()];
+ }
+
+ return monthStandalone[dayjsInstance.month()];
+};
+
+months.s = monthStandalone;
+months.f = monthFormat;
+var locale = {
+ name: 'lt',
+ weekdays: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
+ weekdaysShort: 'sek_pir_ant_tre_ket_pen_šeš'.split('_'),
+ weekdaysMin: 's_p_a_t_k_pn_š'.split('_'),
+ months: months,
+ monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ relativeTime: {
+ future: 'už %s',
+ past: 'prieš %s',
+ s: 'kelias sekundes',
+ m: 'minutę',
+ mm: '%d minutes',
+ h: 'valandą',
+ hh: '%d valandas',
+ d: 'dieną',
+ dd: '%d dienas',
+ M: 'mėnesį',
+ MM: '%d mėnesius',
+ y: 'metus',
+ yy: '%d metus'
+ },
+ format: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'YYYY [m.] MMMM D [d.]',
+ LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+ LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
+ l: 'YYYY-MM-DD',
+ ll: 'YYYY [m.] MMMM D [d.]',
+ lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+ llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'YYYY [m.] MMMM D [d.]',
+ LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+ LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
+ l: 'YYYY-MM-DD',
+ ll: 'YYYY [m.] MMMM D [d.]',
+ lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
+ llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/mk.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/mk.js
new file mode 100644
index 0000000..8522c26
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/mk.js
@@ -0,0 +1,39 @@
+// Macedonian [mk]
+import dayjs from '../index';
+var locale = {
+ name: 'mk',
+ weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
+ months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
+ monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
+ weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'D.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY H:mm',
+ LLLL: 'dddd, D MMMM YYYY H:mm'
+ },
+ relativeTime: {
+ future: 'после %s',
+ past: 'пред %s',
+ s: 'неколку секунди',
+ m: 'минута',
+ mm: '%d минути',
+ h: 'час',
+ hh: '%d часа',
+ d: 'ден',
+ dd: '%d дена',
+ M: 'месец',
+ MM: '%d месеци',
+ y: 'година',
+ yy: '%d години'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/nb.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/nb.js
new file mode 100644
index 0000000..1d7b1eb
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/nb.js
@@ -0,0 +1,40 @@
+// Norwegian Bokmål [nb]
+import dayjs from '../index';
+var locale = {
+ name: 'nb',
+ weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
+ weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
+ weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
+ months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
+ monthsShort: 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ weekStart: 1,
+ yearStart: 4,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY [kl.] HH:mm',
+ LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'
+ },
+ relativeTime: {
+ future: 'om %s',
+ past: '%s siden',
+ s: 'noen sekunder',
+ m: 'ett minutt',
+ mm: '%d minutter',
+ h: 'en time',
+ hh: '%d timer',
+ d: 'en dag',
+ dd: '%d dager',
+ M: 'en måned',
+ MM: '%d måneder',
+ y: 'ett år',
+ yy: '%d år'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/bigIntSupport/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/bigIntSupport/index.d.ts
new file mode 100644
index 0000000..0829ead
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/bigIntSupport/index.d.ts
@@ -0,0 +1,11 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare module 'dayjs/esm' {
+ interface ConfigTypeMap {
+ bigIntSupport: BigInt
+ }
+ export function unix(t: BigInt): Dayjs
+}
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/bigIntSupport/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/bigIntSupport/index.js
new file mode 100644
index 0000000..fa93982
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/bigIntSupport/index.js
@@ -0,0 +1,32 @@
+// eslint-disable-next-line valid-typeof
+var isBigInt = function isBigInt(num) {
+ return typeof num === 'bigint';
+};
+
+export default (function (o, c, dayjs) {
+ var proto = c.prototype;
+
+ var parseDate = function parseDate(cfg) {
+ var date = cfg.date;
+
+ if (isBigInt(date)) {
+ return Number(date);
+ }
+
+ return date;
+ };
+
+ var oldParse = proto.parse;
+
+ proto.parse = function (cfg) {
+ cfg.date = parseDate.bind(this)(cfg);
+ oldParse.bind(this)(cfg);
+ };
+
+ var oldUnix = dayjs.unix;
+
+ dayjs.unix = function (timestamp) {
+ var ts = isBigInt(timestamp) ? Number(timestamp) : timestamp;
+ return oldUnix(ts);
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/buddhistEra/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/buddhistEra/index.js
new file mode 100644
index 0000000..76ce44c
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/buddhistEra/index.js
@@ -0,0 +1,21 @@
+import { FORMAT_DEFAULT } from '../../constant';
+export default (function (o, c) {
+ // locale needed later
+ var proto = c.prototype;
+ var oldFormat = proto.format; // extend en locale here
+
+ proto.format = function (formatStr) {
+ var _this = this;
+
+ var yearBias = 543;
+ var str = formatStr || FORMAT_DEFAULT;
+ var result = str.replace(/(\[[^\]]+])|BBBB|BB/g, function (match, a) {
+ var _this$$utils;
+
+ var year = String(_this.$y + yearBias);
+ var args = match === 'BB' ? [year.slice(-2), 2] : [year, 4];
+ return a || (_this$$utils = _this.$utils()).s.apply(_this$$utils, args.concat(['0']));
+ });
+ return oldFormat.bind(this)(result);
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/customParseFormat/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/customParseFormat/index.d.ts
new file mode 100644
index 0000000..7da585e
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/customParseFormat/index.d.ts
@@ -0,0 +1,8 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare interface PluginOptions {
+ parseTwoDigitYear?: (yearString: string) => number
+}
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/dayOfYear/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/dayOfYear/index.js
new file mode 100644
index 0000000..0cb1158
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/dayOfYear/index.js
@@ -0,0 +1,9 @@
+export default (function (o, c, d) {
+ var proto = c.prototype;
+
+ proto.dayOfYear = function (input) {
+ // d(this) is for badMutable
+ var dayOfYear = Math.round((d(this).startOf('day') - d(this).startOf('year')) / 864e5) + 1;
+ return input == null ? dayOfYear : this.add(input - dayOfYear, 'day');
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/devHelper/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/devHelper/index.js
new file mode 100644
index 0000000..9e2af82
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/devHelper/index.js
@@ -0,0 +1,38 @@
+/* eslint-disable no-console */
+export default (function (o, c, d) {
+ /* istanbul ignore next line */
+ if (!process || process.env.NODE_ENV !== 'production') {
+ var proto = c.prototype;
+ var oldParse = proto.parse;
+
+ proto.parse = function (cfg) {
+ var date = cfg.date;
+
+ if (typeof date === 'string' && date.length === 13) {
+ console.warn("To parse a Unix timestamp like " + date + ", you should pass it as a Number. https://day.js.org/docs/en/parse/unix-timestamp-milliseconds");
+ }
+
+ if (typeof date === 'number' && String(date).length === 4) {
+ console.warn("Guessing you may want to parse the Year " + date + ", you should pass it as a String " + date + ", not a Number. Otherwise, " + date + " will be treated as a Unix timestamp");
+ }
+
+ if (cfg.args.length >= 2 && !d.p.customParseFormat) {
+ console.warn("To parse a date-time string like " + date + " using the given format, you should enable customParseFormat plugin first. https://day.js.org/docs/en/parse/string-format");
+ }
+
+ return oldParse.bind(this)(cfg);
+ };
+
+ var oldLocale = d.locale;
+
+ d.locale = function (preset, object, isLocal) {
+ if (typeof object === 'undefined' && typeof preset === 'string') {
+ if (!d.Ls[preset]) {
+ console.warn("Guessing you may want to use locale " + preset + ", you have to load it before using it. https://day.js.org/docs/en/i18n/loading-into-nodejs");
+ }
+ }
+
+ return oldLocale(preset, object, isLocal);
+ };
+ }
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isBetween/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isBetween/index.d.ts
new file mode 100644
index 0000000..1c62711
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isBetween/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType, OpUnitType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isBetween(a: ConfigType, b: ConfigType, c?: OpUnitType | null, d?: '()' | '[]' | '[)' | '(]'): boolean
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isBetween/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isBetween/index.js
new file mode 100644
index 0000000..2182a89
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isBetween/index.js
@@ -0,0 +1,10 @@
+export default (function (o, c, d) {
+ c.prototype.isBetween = function (a, b, u, i) {
+ var dA = d(a);
+ var dB = d(b);
+ i = i || '()';
+ var dAi = i[0] === '(';
+ var dBi = i[1] === ')';
+ return (dAi ? this.isAfter(dA, u) : !this.isBefore(dA, u)) && (dBi ? this.isBefore(dB, u) : !this.isAfter(dB, u)) || (dAi ? this.isBefore(dA, u) : !this.isAfter(dA, u)) && (dBi ? this.isAfter(dB, u) : !this.isBefore(dB, u));
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isLeapYear/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isLeapYear/index.js
new file mode 100644
index 0000000..bf1309d
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isLeapYear/index.js
@@ -0,0 +1,7 @@
+export default (function (o, c) {
+ var proto = c.prototype;
+
+ proto.isLeapYear = function () {
+ return this.$y % 4 === 0 && this.$y % 100 !== 0 || this.$y % 400 === 0;
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isMoment/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isMoment/index.d.ts
new file mode 100644
index 0000000..6e3a69f
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isMoment/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+
+ export function isMoment(input: any): boolean
+
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isMoment/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isMoment/index.js
new file mode 100644
index 0000000..48c8a89
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isMoment/index.js
@@ -0,0 +1,5 @@
+export default (function (o, c, f) {
+ f.isMoment = function (input) {
+ return f.isDayjs(input);
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isSameOrAfter/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isSameOrAfter/index.js
new file mode 100644
index 0000000..6a5c56f
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isSameOrAfter/index.js
@@ -0,0 +1,5 @@
+export default (function (o, c) {
+ c.prototype.isSameOrAfter = function (that, units) {
+ return this.isSame(that, units) || this.isAfter(that, units);
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isoWeek/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isoWeek/index.d.ts
new file mode 100644
index 0000000..e3f83cf
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isoWeek/index.d.ts
@@ -0,0 +1,27 @@
+import { PluginFunc, OpUnitType, ConfigType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+type ISOUnitType = OpUnitType | 'isoWeek';
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isoWeekYear(): number
+ isoWeek(): number
+ isoWeek(value: number): Dayjs
+
+ isoWeekday(): number
+ isoWeekday(value: number): Dayjs
+
+ startOf(unit: ISOUnitType): Dayjs
+
+ endOf(unit: ISOUnitType): Dayjs
+
+ isSame(date: ConfigType, unit?: ISOUnitType): boolean
+
+ isBefore(date: ConfigType, unit?: ISOUnitType): boolean
+
+ isAfter(date: ConfigType, unit?: ISOUnitType): boolean
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isoWeek/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isoWeek/index.js
new file mode 100644
index 0000000..289ea7c
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isoWeek/index.js
@@ -0,0 +1,57 @@
+import { D, W, Y } from '../../constant';
+var isoWeekPrettyUnit = 'isoweek';
+export default (function (o, c, d) {
+ var getYearFirstThursday = function getYearFirstThursday(year, isUtc) {
+ var yearFirstDay = (isUtc ? d.utc : d)().year(year).startOf(Y);
+ var addDiffDays = 4 - yearFirstDay.isoWeekday();
+
+ if (yearFirstDay.isoWeekday() > 4) {
+ addDiffDays += 7;
+ }
+
+ return yearFirstDay.add(addDiffDays, D);
+ };
+
+ var getCurrentWeekThursday = function getCurrentWeekThursday(ins) {
+ return ins.add(4 - ins.isoWeekday(), D);
+ };
+
+ var proto = c.prototype;
+
+ proto.isoWeekYear = function () {
+ var nowWeekThursday = getCurrentWeekThursday(this);
+ return nowWeekThursday.year();
+ };
+
+ proto.isoWeek = function (week) {
+ if (!this.$utils().u(week)) {
+ return this.add((week - this.isoWeek()) * 7, D);
+ }
+
+ var nowWeekThursday = getCurrentWeekThursday(this);
+ var diffWeekThursday = getYearFirstThursday(this.isoWeekYear(), this.$u);
+ return nowWeekThursday.diff(diffWeekThursday, W) + 1;
+ };
+
+ proto.isoWeekday = function (week) {
+ if (!this.$utils().u(week)) {
+ return this.day(this.day() % 7 ? week : week - 7);
+ }
+
+ return this.day() || 7;
+ };
+
+ var oldStartOf = proto.startOf;
+
+ proto.startOf = function (units, startOf) {
+ var utils = this.$utils();
+ var isStartOf = !utils.u(startOf) ? startOf : true;
+ var unit = utils.p(units);
+
+ if (unit === isoWeekPrettyUnit) {
+ return isStartOf ? this.date(this.date() - (this.isoWeekday() - 1)).startOf('day') : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf('day');
+ }
+
+ return oldStartOf.bind(this)(units, startOf);
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isoWeeksInYear/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isoWeeksInYear/index.d.ts
new file mode 100644
index 0000000..986360f
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/isoWeeksInYear/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isoWeeksInYear(): number
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/preParsePostFormat/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/preParsePostFormat/index.d.ts
new file mode 100644
index 0000000..a17c896
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/preParsePostFormat/index.d.ts
@@ -0,0 +1,4 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/preParsePostFormat/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/preParsePostFormat/index.js
new file mode 100644
index 0000000..7654ccb
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/preParsePostFormat/index.js
@@ -0,0 +1,40 @@
+// Plugin template from https://day.js.org/docs/en/plugin/plugin
+export default (function (option, dayjsClass) {
+ var oldParse = dayjsClass.prototype.parse;
+
+ dayjsClass.prototype.parse = function (cfg) {
+ if (typeof cfg.date === 'string') {
+ var locale = this.$locale();
+ cfg.date = locale && locale.preparse ? locale.preparse(cfg.date) : cfg.date;
+ } // original parse result
+
+
+ return oldParse.bind(this)(cfg);
+ }; // // overriding existing API
+ // // e.g. extend dayjs().format()
+
+
+ var oldFormat = dayjsClass.prototype.format;
+
+ dayjsClass.prototype.format = function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ // original format result
+ var result = oldFormat.call.apply(oldFormat, [this].concat(args)); // return modified result
+
+ var locale = this.$locale();
+ return locale && locale.postformat ? locale.postformat(result) : result;
+ };
+
+ var oldFromTo = dayjsClass.prototype.fromToBase;
+
+ if (oldFromTo) {
+ dayjsClass.prototype.fromToBase = function (input, withoutSuffix, instance, isFrom) {
+ var locale = this.$locale() || instance.$locale(); // original format result
+
+ return oldFromTo.call(this, input, withoutSuffix, instance, isFrom, locale && locale.postformat);
+ };
+ }
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/quarterOfYear/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/quarterOfYear/index.d.ts
new file mode 100644
index 0000000..c75dcfc
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/quarterOfYear/index.d.ts
@@ -0,0 +1,26 @@
+import { PluginFunc, ConfigType, QUnitType, OpUnitType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ quarter(): number
+
+ quarter(quarter: number): Dayjs
+
+ add(value: number, unit: QUnitType): Dayjs
+
+ subtract(value: number, unit: QUnitType): Dayjs
+
+ startOf(unit: QUnitType | OpUnitType): Dayjs
+
+ endOf(unit: QUnitType | OpUnitType): Dayjs
+
+ isSame(date: ConfigType, unit?: QUnitType): boolean
+
+ isBefore(date: ConfigType, unit?: QUnitType): boolean
+
+ isAfter(date: ConfigType, unit?: QUnitType): boolean
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/timezone/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/timezone/index.js
new file mode 100644
index 0000000..ca76720
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/plugin/timezone/index.js
@@ -0,0 +1,185 @@
+import { MIN, MS } from '../../constant';
+var typeToPos = {
+ year: 0,
+ month: 1,
+ day: 2,
+ hour: 3,
+ minute: 4,
+ second: 5
+}; // Cache time-zone lookups from Intl.DateTimeFormat,
+// as it is a *very* slow method.
+
+var dtfCache = {};
+
+var getDateTimeFormat = function getDateTimeFormat(timezone, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ var timeZoneName = options.timeZoneName || 'short';
+ var key = timezone + "|" + timeZoneName;
+ var dtf = dtfCache[key];
+
+ if (!dtf) {
+ dtf = new Intl.DateTimeFormat('en-US', {
+ hour12: false,
+ timeZone: timezone,
+ year: 'numeric',
+ month: '2-digit',
+ day: '2-digit',
+ hour: '2-digit',
+ minute: '2-digit',
+ second: '2-digit',
+ timeZoneName: timeZoneName
+ });
+ dtfCache[key] = dtf;
+ }
+
+ return dtf;
+};
+
+export default (function (o, c, d) {
+ var defaultTimezone;
+
+ var makeFormatParts = function makeFormatParts(timestamp, timezone, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ var date = new Date(timestamp);
+ var dtf = getDateTimeFormat(timezone, options);
+ return dtf.formatToParts(date);
+ };
+
+ var tzOffset = function tzOffset(timestamp, timezone) {
+ var formatResult = makeFormatParts(timestamp, timezone);
+ var filled = [];
+
+ for (var i = 0; i < formatResult.length; i += 1) {
+ var _formatResult$i = formatResult[i],
+ type = _formatResult$i.type,
+ value = _formatResult$i.value;
+ var pos = typeToPos[type];
+
+ if (pos >= 0) {
+ filled[pos] = parseInt(value, 10);
+ }
+ }
+
+ var hour = filled[3]; // Workaround for the same behavior in different node version
+ // https://github.com/nodejs/node/issues/33027
+
+ /* istanbul ignore next */
+
+ var fixedHour = hour === 24 ? 0 : hour;
+ var utcString = filled[0] + "-" + filled[1] + "-" + filled[2] + " " + fixedHour + ":" + filled[4] + ":" + filled[5] + ":000";
+ var utcTs = d.utc(utcString).valueOf();
+ var asTS = +timestamp;
+ var over = asTS % 1000;
+ asTS -= over;
+ return (utcTs - asTS) / (60 * 1000);
+ }; // find the right offset a given local time. The o input is our guess, which determines which
+ // offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)
+ // https://github.com/moment/luxon/blob/master/src/datetime.js#L76
+
+
+ var fixOffset = function fixOffset(localTS, o0, tz) {
+ // Our UTC time is just a guess because our offset is just a guess
+ var utcGuess = localTS - o0 * 60 * 1000; // Test whether the zone matches the offset for this ts
+
+ var o2 = tzOffset(utcGuess, tz); // If so, offset didn't change and we're done
+
+ if (o0 === o2) {
+ return [utcGuess, o0];
+ } // If not, change the ts by the difference in the offset
+
+
+ utcGuess -= (o2 - o0) * 60 * 1000; // If that gives us the local time we want, we're done
+
+ var o3 = tzOffset(utcGuess, tz);
+
+ if (o2 === o3) {
+ return [utcGuess, o2];
+ } // If it's different, we're in a hole time.
+ // The offset has changed, but the we don't adjust the time
+
+
+ return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];
+ };
+
+ var proto = c.prototype;
+
+ proto.tz = function (timezone, keepLocalTime) {
+ if (timezone === void 0) {
+ timezone = defaultTimezone;
+ }
+
+ var oldOffset = this.utcOffset();
+ var date = this.toDate();
+ var target = date.toLocaleString('en-US', {
+ timeZone: timezone
+ });
+ var diff = Math.round((date - new Date(target)) / 1000 / 60);
+ var ins = d(target).$set(MS, this.$ms).utcOffset(-Math.round(date.getTimezoneOffset() / 15) * 15 - diff, true);
+
+ if (keepLocalTime) {
+ var newOffset = ins.utcOffset();
+ ins = ins.add(oldOffset - newOffset, MIN);
+ }
+
+ ins.$x.$timezone = timezone;
+ return ins;
+ };
+
+ proto.offsetName = function (type) {
+ // type: short(default) / long
+ var zone = this.$x.$timezone || d.tz.guess();
+ var result = makeFormatParts(this.valueOf(), zone, {
+ timeZoneName: type
+ }).find(function (m) {
+ return m.type.toLowerCase() === 'timezonename';
+ });
+ return result && result.value;
+ };
+
+ var oldStartOf = proto.startOf;
+
+ proto.startOf = function (units, startOf) {
+ if (!this.$x || !this.$x.$timezone) {
+ return oldStartOf.call(this, units, startOf);
+ }
+
+ var withoutTz = d(this.format('YYYY-MM-DD HH:mm:ss:SSS'));
+ var startOfWithoutTz = oldStartOf.call(withoutTz, units, startOf);
+ return startOfWithoutTz.tz(this.$x.$timezone, true);
+ };
+
+ d.tz = function (input, arg1, arg2) {
+ var parseFormat = arg2 && arg1;
+ var timezone = arg2 || arg1 || defaultTimezone;
+ var previousOffset = tzOffset(+d(), timezone);
+
+ if (typeof input !== 'string') {
+ // timestamp number || js Date || Day.js
+ return d(input).tz(timezone);
+ }
+
+ var localTs = d.utc(input, parseFormat).valueOf();
+
+ var _fixOffset = fixOffset(localTs, previousOffset, timezone),
+ targetTs = _fixOffset[0],
+ targetOffset = _fixOffset[1];
+
+ var ins = d(targetTs).utcOffset(targetOffset);
+ ins.$x.$timezone = timezone;
+ return ins;
+ };
+
+ d.tz.guess = function () {
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
+ };
+
+ d.tz.setDefault = function (timezone) {
+ defaultTimezone = timezone;
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/rn.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/rn.js
new file mode 100644
index 0000000..21b3cdb
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/rn.js
@@ -0,0 +1,39 @@
+// Kirundi [rn]
+import dayjs from '../index';
+var locale = {
+ name: 'rn',
+ weekdays: 'Ku wa Mungu_Ku wa Mbere_Ku wa Kabiri_Ku wa Gatatu_Ku wa Kane_Ku wa Gatanu_Ku wa Gatandatu'.split('_'),
+ weekdaysShort: 'Kngu_Kmbr_Kbri_Ktat_Kkan_Ktan_Kdat'.split('_'),
+ weekdaysMin: 'K7_K1_K2_K3_K4_K5_K6'.split('_'),
+ months: 'Nzero_Ruhuhuma_Ntwarante_Ndamukiza_Rusama_Ruhenshi_Mukakaro_Myandagaro_Nyakanga_Gitugutu_Munyonyo_Kigarama'.split('_'),
+ monthsShort: 'Nzer_Ruhuh_Ntwar_Ndam_Rus_Ruhen_Muk_Myand_Nyak_Git_Muny_Kig'.split('_'),
+ weekStart: 1,
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ relativeTime: {
+ future: 'mu %s',
+ past: '%s',
+ s: 'amasegonda',
+ m: 'Umunota',
+ mm: '%d iminota',
+ h: 'isaha',
+ hh: '%d amasaha',
+ d: 'Umunsi',
+ dd: '%d iminsi',
+ M: 'ukwezi',
+ MM: '%d amezi',
+ y: 'umwaka',
+ yy: '%d imyaka'
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/se.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/se.js
new file mode 100644
index 0000000..691099c
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/se.js
@@ -0,0 +1,39 @@
+// Northern Sami [se]
+import dayjs from '../index';
+var locale = {
+ name: 'se',
+ weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
+ months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
+ monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
+ weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'MMMM D. [b.] YYYY',
+ LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
+ LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
+ },
+ relativeTime: {
+ future: '%s geažes',
+ past: 'maŋit %s',
+ s: 'moadde sekunddat',
+ m: 'okta minuhta',
+ mm: '%d minuhtat',
+ h: 'okta diimmu',
+ hh: '%d diimmut',
+ d: 'okta beaivi',
+ dd: '%d beaivvit',
+ M: 'okta mánnu',
+ MM: '%d mánut',
+ y: 'okta jahki',
+ yy: '%d jagit'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/sk.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/sk.js
new file mode 100644
index 0000000..222401f
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/sk.js
@@ -0,0 +1,121 @@
+// Slovak [sk]
+import dayjs from '../index';
+
+function plural(n) {
+ return n > 1 && n < 5 && ~~(n / 10) !== 1; // eslint-disable-line
+}
+/* eslint-disable */
+
+
+function translate(number, withoutSuffix, key, isFuture) {
+ var result = number + " ";
+
+ switch (key) {
+ case 's':
+ // a few seconds / in a few seconds / a few seconds ago
+ return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
+
+ case 'm':
+ // a minute / in a minute / a minute ago
+ return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
+
+ case 'mm':
+ // 9 minutes / in 9 minutes / 9 minutes ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'minúty' : 'minút');
+ }
+
+ return result + "min\xFAtami";
+
+ case 'h':
+ // an hour / in an hour / an hour ago
+ return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
+
+ case 'hh':
+ // 9 hours / in 9 hours / 9 hours ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'hodiny' : 'hodín');
+ }
+
+ return result + "hodinami";
+
+ case 'd':
+ // a day / in a day / a day ago
+ return withoutSuffix || isFuture ? 'deň' : 'dňom';
+
+ case 'dd':
+ // 9 days / in 9 days / 9 days ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'dni' : 'dní');
+ }
+
+ return result + "d\u0148ami";
+
+ case 'M':
+ // a month / in a month / a month ago
+ return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
+
+ case 'MM':
+ // 9 months / in 9 months / 9 months ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'mesiace' : 'mesiacov');
+ }
+
+ return result + "mesiacmi";
+
+ case 'y':
+ // a year / in a year / a year ago
+ return withoutSuffix || isFuture ? 'rok' : 'rokom';
+
+ case 'yy':
+ // 9 years / in 9 years / 9 years ago
+ if (withoutSuffix || isFuture) {
+ return result + (plural(number) ? 'roky' : 'rokov');
+ }
+
+ return result + "rokmi";
+ }
+}
+/* eslint-enable */
+
+
+var locale = {
+ name: 'sk',
+ weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
+ weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
+ weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
+ months: 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ ordinal: function ordinal(n) {
+ return n + ".";
+ },
+ formats: {
+ LT: 'H:mm',
+ LTS: 'H:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D. MMMM YYYY',
+ LLL: 'D. MMMM YYYY H:mm',
+ LLLL: 'dddd D. MMMM YYYY H:mm',
+ l: 'D. M. YYYY'
+ },
+ relativeTime: {
+ future: 'za %s',
+ // Should be `o %s` (change when moment/moment#5408 is fixed)
+ past: 'pred %s',
+ s: translate,
+ m: translate,
+ mm: translate,
+ h: translate,
+ hh: translate,
+ d: translate,
+ dd: translate,
+ M: translate,
+ MM: translate,
+ y: translate,
+ yy: translate
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/sv.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/sv.js
new file mode 100644
index 0000000..2563ee7
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/sv.js
@@ -0,0 +1,44 @@
+// Swedish [sv]
+import dayjs from '../index';
+var locale = {
+ name: 'sv',
+ weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
+ weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
+ weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
+ months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
+ monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
+ weekStart: 1,
+ yearStart: 4,
+ ordinal: function ordinal(n) {
+ var b = n % 10;
+ var o = b === 1 || b === 2 ? 'a' : 'e';
+ return "[" + n + o + "]";
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY-MM-DD',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY [kl.] HH:mm',
+ LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
+ lll: 'D MMM YYYY HH:mm',
+ llll: 'ddd D MMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'om %s',
+ past: 'för %s sedan',
+ s: 'några sekunder',
+ m: 'en minut',
+ mm: '%d minuter',
+ h: 'en timme',
+ hh: '%d timmar',
+ d: 'en dag',
+ dd: '%d dagar',
+ M: 'en månad',
+ MM: '%d månader',
+ y: 'ett år',
+ yy: '%d år'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ta.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ta.js
new file mode 100644
index 0000000..6df25f8
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/ta.js
@@ -0,0 +1,38 @@
+// Tamil [ta]
+import dayjs from '../index';
+var locale = {
+ name: 'ta',
+ weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
+ months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
+ weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
+ monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
+ weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY, HH:mm',
+ LLLL: 'dddd, D MMMM YYYY, HH:mm'
+ },
+ relativeTime: {
+ future: '%s இல்',
+ past: '%s முன்',
+ s: 'ஒரு சில விநாடிகள்',
+ m: 'ஒரு நிமிடம்',
+ mm: '%d நிமிடங்கள்',
+ h: 'ஒரு மணி நேரம்',
+ hh: '%d மணி நேரம்',
+ d: 'ஒரு நாள்',
+ dd: '%d நாட்கள்',
+ M: 'ஒரு மாதம்',
+ MM: '%d மாதங்கள்',
+ y: 'ஒரு வருடம்',
+ yy: '%d ஆண்டுகள்'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/tg.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/tg.js
new file mode 100644
index 0000000..536df0b
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/tg.js
@@ -0,0 +1,39 @@
+// Tajik [tg]
+import dayjs from '../index';
+var locale = {
+ name: 'tg',
+ weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),
+ months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
+ monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
+ weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: 'баъди %s',
+ past: '%s пеш',
+ s: 'якчанд сония',
+ m: 'як дақиқа',
+ mm: '%d дақиқа',
+ h: 'як соат',
+ hh: '%d соат',
+ d: 'як рӯз',
+ dd: '%d рӯз',
+ M: 'як моҳ',
+ MM: '%d моҳ',
+ y: 'як сол',
+ yy: '%d сол'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/tr.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/tr.js
new file mode 100644
index 0000000..e7fe24f
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/tr.js
@@ -0,0 +1,39 @@
+// Turkish [tr]
+import dayjs from '../index';
+var locale = {
+ name: 'tr',
+ weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
+ weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
+ weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
+ months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
+ monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
+ weekStart: 1,
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'DD.MM.YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY HH:mm',
+ LLLL: 'dddd, D MMMM YYYY HH:mm'
+ },
+ relativeTime: {
+ future: '%s sonra',
+ past: '%s önce',
+ s: 'birkaç saniye',
+ m: 'bir dakika',
+ mm: '%d dakika',
+ h: 'bir saat',
+ hh: '%d saat',
+ d: 'bir gün',
+ dd: '%d gün',
+ M: 'bir ay',
+ MM: '%d ay',
+ y: 'bir yıl',
+ yy: '%d yıl'
+ },
+ ordinal: function ordinal(n) {
+ return n + ".";
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/yo.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/yo.js
new file mode 100644
index 0000000..1f79468
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/yo.js
@@ -0,0 +1,39 @@
+// Yoruba Nigeria [yo]
+import dayjs from '../index';
+var locale = {
+ name: 'yo',
+ weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
+ months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
+ weekStart: 1,
+ weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
+ monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
+ weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
+ ordinal: function ordinal(n) {
+ return n;
+ },
+ formats: {
+ LT: 'h:mm A',
+ LTS: 'h:mm:ss A',
+ L: 'DD/MM/YYYY',
+ LL: 'D MMMM YYYY',
+ LLL: 'D MMMM YYYY h:mm A',
+ LLLL: 'dddd, D MMMM YYYY h:mm A'
+ },
+ relativeTime: {
+ future: 'ní %s',
+ past: '%s kọjá',
+ s: 'ìsẹjú aayá die',
+ m: 'ìsẹjú kan',
+ mm: 'ìsẹjú %d',
+ h: 'wákati kan',
+ hh: 'wákati %d',
+ d: 'ọjọ́ kan',
+ dd: 'ọjọ́ %d',
+ M: 'osù kan',
+ MM: 'osù %d',
+ y: 'ọdún kan',
+ yy: 'ọdún %d'
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/locale/zh-tw.js b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/zh-tw.js
new file mode 100644
index 0000000..ada89ee
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/locale/zh-tw.js
@@ -0,0 +1,65 @@
+// Chinese (Taiwan) [zh-tw]
+import dayjs from '../index';
+var locale = {
+ name: 'zh-tw',
+ weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
+ weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
+ weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
+ months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
+ monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
+ ordinal: function ordinal(number, period) {
+ switch (period) {
+ case 'W':
+ return number + "\u9031";
+
+ default:
+ return number + "\u65E5";
+ }
+ },
+ formats: {
+ LT: 'HH:mm',
+ LTS: 'HH:mm:ss',
+ L: 'YYYY/MM/DD',
+ LL: 'YYYY年M月D日',
+ LLL: 'YYYY年M月D日 HH:mm',
+ LLLL: 'YYYY年M月D日dddd HH:mm',
+ l: 'YYYY/M/D',
+ ll: 'YYYY年M月D日',
+ lll: 'YYYY年M月D日 HH:mm',
+ llll: 'YYYY年M月D日dddd HH:mm'
+ },
+ relativeTime: {
+ future: '%s內',
+ past: '%s前',
+ s: '幾秒',
+ m: '1 分鐘',
+ mm: '%d 分鐘',
+ h: '1 小時',
+ hh: '%d 小時',
+ d: '1 天',
+ dd: '%d 天',
+ M: '1 個月',
+ MM: '%d 個月',
+ y: '1 年',
+ yy: '%d 年'
+ },
+ meridiem: function meridiem(hour, minute) {
+ var hm = hour * 100 + minute;
+
+ if (hm < 600) {
+ return '凌晨';
+ } else if (hm < 900) {
+ return '早上';
+ } else if (hm < 1100) {
+ return '上午';
+ } else if (hm < 1300) {
+ return '中午';
+ } else if (hm < 1800) {
+ return '下午';
+ }
+
+ return '晚上';
+ }
+};
+dayjs.locale(locale, null, true);
+export default locale;
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/bigIntSupport/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/bigIntSupport/index.d.ts
new file mode 100644
index 0000000..0829ead
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/bigIntSupport/index.d.ts
@@ -0,0 +1,11 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare module 'dayjs/esm' {
+ interface ConfigTypeMap {
+ bigIntSupport: BigInt
+ }
+ export function unix(t: BigInt): Dayjs
+}
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/bigIntSupport/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/bigIntSupport/index.js
new file mode 100644
index 0000000..fa93982
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/bigIntSupport/index.js
@@ -0,0 +1,32 @@
+// eslint-disable-next-line valid-typeof
+var isBigInt = function isBigInt(num) {
+ return typeof num === 'bigint';
+};
+
+export default (function (o, c, dayjs) {
+ var proto = c.prototype;
+
+ var parseDate = function parseDate(cfg) {
+ var date = cfg.date;
+
+ if (isBigInt(date)) {
+ return Number(date);
+ }
+
+ return date;
+ };
+
+ var oldParse = proto.parse;
+
+ proto.parse = function (cfg) {
+ cfg.date = parseDate.bind(this)(cfg);
+ oldParse.bind(this)(cfg);
+ };
+
+ var oldUnix = dayjs.unix;
+
+ dayjs.unix = function (timestamp) {
+ var ts = isBigInt(timestamp) ? Number(timestamp) : timestamp;
+ return oldUnix(ts);
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/customParseFormat/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/customParseFormat/index.d.ts
new file mode 100644
index 0000000..7da585e
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/customParseFormat/index.d.ts
@@ -0,0 +1,8 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare interface PluginOptions {
+ parseTwoDigitYear?: (yearString: string) => number
+}
+
+declare const plugin: PluginFunc
+export = plugin
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/customParseFormat/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/customParseFormat/index.js
new file mode 100644
index 0000000..1fd5936
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/customParseFormat/index.js
@@ -0,0 +1,320 @@
+import { u } from '../localizedFormat/utils';
+var formattingTokens = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g;
+var match1 = /\d/; // 0 - 9
+
+var match2 = /\d\d/; // 00 - 99
+
+var match3 = /\d{3}/; // 000 - 999
+
+var match4 = /\d{4}/; // 0000 - 9999
+
+var match1to2 = /\d\d?/; // 0 - 99
+
+var matchSigned = /[+-]?\d+/; // -inf - inf
+
+var matchOffset = /[+-]\d\d:?(\d\d)?|Z/; // +00:00 -00:00 +0000 or -0000 +00 or Z
+
+var matchWord = /\d*[^-_:/,()\s\d]+/; // Word
+
+var locale = {};
+
+var parseTwoDigitYear = function parseTwoDigitYear(input) {
+ input = +input;
+ return input + (input > 68 ? 1900 : 2000);
+};
+
+function offsetFromString(string) {
+ if (!string) return 0;
+ if (string === 'Z') return 0;
+ var parts = string.match(/([+-]|\d\d)/g);
+ var minutes = +(parts[1] * 60) + (+parts[2] || 0);
+ return minutes === 0 ? 0 : parts[0] === '+' ? -minutes : minutes; // eslint-disable-line no-nested-ternary
+}
+
+var addInput = function addInput(property) {
+ return function (input) {
+ this[property] = +input;
+ };
+};
+
+var zoneExpressions = [matchOffset, function (input) {
+ var zone = this.zone || (this.zone = {});
+ zone.offset = offsetFromString(input);
+}];
+
+var getLocalePart = function getLocalePart(name) {
+ var part = locale[name];
+ return part && (part.indexOf ? part : part.s.concat(part.f));
+};
+
+var meridiemMatch = function meridiemMatch(input, isLowerCase) {
+ var isAfternoon;
+ var _locale = locale,
+ meridiem = _locale.meridiem;
+
+ if (!meridiem) {
+ isAfternoon = input === (isLowerCase ? 'pm' : 'PM');
+ } else {
+ for (var i = 1; i <= 24; i += 1) {
+ // todo: fix input === meridiem(i, 0, isLowerCase)
+ if (input.indexOf(meridiem(i, 0, isLowerCase)) > -1) {
+ isAfternoon = i > 12;
+ break;
+ }
+ }
+ }
+
+ return isAfternoon;
+};
+
+var expressions = {
+ A: [matchWord, function (input) {
+ this.afternoon = meridiemMatch(input, false);
+ }],
+ a: [matchWord, function (input) {
+ this.afternoon = meridiemMatch(input, true);
+ }],
+ S: [match1, function (input) {
+ this.milliseconds = +input * 100;
+ }],
+ SS: [match2, function (input) {
+ this.milliseconds = +input * 10;
+ }],
+ SSS: [match3, function (input) {
+ this.milliseconds = +input;
+ }],
+ s: [match1to2, addInput('seconds')],
+ ss: [match1to2, addInput('seconds')],
+ m: [match1to2, addInput('minutes')],
+ mm: [match1to2, addInput('minutes')],
+ H: [match1to2, addInput('hours')],
+ h: [match1to2, addInput('hours')],
+ HH: [match1to2, addInput('hours')],
+ hh: [match1to2, addInput('hours')],
+ D: [match1to2, addInput('day')],
+ DD: [match2, addInput('day')],
+ Do: [matchWord, function (input) {
+ var _locale2 = locale,
+ ordinal = _locale2.ordinal;
+
+ var _input$match = input.match(/\d+/);
+
+ this.day = _input$match[0];
+ if (!ordinal) return;
+
+ for (var i = 1; i <= 31; i += 1) {
+ if (ordinal(i).replace(/\[|\]/g, '') === input) {
+ this.day = i;
+ }
+ }
+ }],
+ M: [match1to2, addInput('month')],
+ MM: [match2, addInput('month')],
+ MMM: [matchWord, function (input) {
+ var months = getLocalePart('months');
+ var monthsShort = getLocalePart('monthsShort');
+ var matchIndex = (monthsShort || months.map(function (_) {
+ return _.slice(0, 3);
+ })).indexOf(input) + 1;
+
+ if (matchIndex < 1) {
+ throw new Error();
+ }
+
+ this.month = matchIndex % 12 || matchIndex;
+ }],
+ MMMM: [matchWord, function (input) {
+ var months = getLocalePart('months');
+ var matchIndex = months.indexOf(input) + 1;
+
+ if (matchIndex < 1) {
+ throw new Error();
+ }
+
+ this.month = matchIndex % 12 || matchIndex;
+ }],
+ Y: [matchSigned, addInput('year')],
+ YY: [match2, function (input) {
+ this.year = parseTwoDigitYear(input);
+ }],
+ YYYY: [match4, addInput('year')],
+ Z: zoneExpressions,
+ ZZ: zoneExpressions
+};
+
+function correctHours(time) {
+ var afternoon = time.afternoon;
+
+ if (afternoon !== undefined) {
+ var hours = time.hours;
+
+ if (afternoon) {
+ if (hours < 12) {
+ time.hours += 12;
+ }
+ } else if (hours === 12) {
+ time.hours = 0;
+ }
+
+ delete time.afternoon;
+ }
+}
+
+function makeParser(format) {
+ format = u(format, locale && locale.formats);
+ var array = format.match(formattingTokens);
+ var length = array.length;
+
+ for (var i = 0; i < length; i += 1) {
+ var token = array[i];
+ var parseTo = expressions[token];
+ var regex = parseTo && parseTo[0];
+ var parser = parseTo && parseTo[1];
+
+ if (parser) {
+ array[i] = {
+ regex: regex,
+ parser: parser
+ };
+ } else {
+ array[i] = token.replace(/^\[|\]$/g, '');
+ }
+ }
+
+ return function (input) {
+ var time = {};
+
+ for (var _i = 0, start = 0; _i < length; _i += 1) {
+ var _token = array[_i];
+
+ if (typeof _token === 'string') {
+ start += _token.length;
+ } else {
+ var _regex = _token.regex,
+ _parser = _token.parser;
+ var part = input.slice(start);
+
+ var match = _regex.exec(part);
+
+ var value = match[0];
+
+ _parser.call(time, value);
+
+ input = input.replace(value, '');
+ }
+ }
+
+ correctHours(time);
+ return time;
+ };
+}
+
+var parseFormattedInput = function parseFormattedInput(input, format, utc) {
+ try {
+ if (['x', 'X'].indexOf(format) > -1) return new Date((format === 'X' ? 1000 : 1) * input);
+ var parser = makeParser(format);
+
+ var _parser2 = parser(input),
+ year = _parser2.year,
+ month = _parser2.month,
+ day = _parser2.day,
+ hours = _parser2.hours,
+ minutes = _parser2.minutes,
+ seconds = _parser2.seconds,
+ milliseconds = _parser2.milliseconds,
+ zone = _parser2.zone;
+
+ var now = new Date();
+ var d = day || (!year && !month ? now.getDate() : 1);
+ var y = year || now.getFullYear();
+ var M = 0;
+
+ if (!(year && !month)) {
+ M = month > 0 ? month - 1 : now.getMonth();
+ }
+
+ var h = hours || 0;
+ var m = minutes || 0;
+ var s = seconds || 0;
+ var ms = milliseconds || 0;
+
+ if (zone) {
+ return new Date(Date.UTC(y, M, d, h, m, s, ms + zone.offset * 60 * 1000));
+ }
+
+ if (utc) {
+ return new Date(Date.UTC(y, M, d, h, m, s, ms));
+ }
+
+ return new Date(y, M, d, h, m, s, ms);
+ } catch (e) {
+ return new Date(''); // Invalid Date
+ }
+};
+
+export default (function (o, C, d) {
+ d.p.customParseFormat = true;
+
+ if (o && o.parseTwoDigitYear) {
+ parseTwoDigitYear = o.parseTwoDigitYear;
+ }
+
+ var proto = C.prototype;
+ var oldParse = proto.parse;
+
+ proto.parse = function (cfg) {
+ var date = cfg.date,
+ utc = cfg.utc,
+ args = cfg.args;
+ this.$u = utc;
+ var format = args[1];
+
+ if (typeof format === 'string') {
+ var isStrictWithoutLocale = args[2] === true;
+ var isStrictWithLocale = args[3] === true;
+ var isStrict = isStrictWithoutLocale || isStrictWithLocale;
+ var pl = args[2];
+
+ if (isStrictWithLocale) {
+ pl = args[2];
+ }
+
+ locale = this.$locale();
+
+ if (!isStrictWithoutLocale && pl) {
+ locale = d.Ls[pl];
+ }
+
+ this.$d = parseFormattedInput(date, format, utc);
+ this.init();
+ if (pl && pl !== true) this.$L = this.locale(pl).$L; // use != to treat
+ // input number 1410715640579 and format string '1410715640579' equal
+ // eslint-disable-next-line eqeqeq
+
+ if (isStrict && date != this.format(format)) {
+ this.$d = new Date('');
+ } // reset global locale to make parallel unit test
+
+
+ locale = {};
+ } else if (format instanceof Array) {
+ var len = format.length;
+
+ for (var i = 1; i <= len; i += 1) {
+ args[1] = format[i - 1];
+ var result = d.apply(this, args);
+
+ if (result.isValid()) {
+ this.$d = result.$d;
+ this.$L = result.$L;
+ this.init();
+ break;
+ }
+
+ if (i === len) this.$d = new Date('');
+ }
+ } else {
+ oldParse.call(this, cfg);
+ }
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isBetween/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isBetween/index.d.ts
new file mode 100644
index 0000000..1c62711
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isBetween/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType, OpUnitType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isBetween(a: ConfigType, b: ConfigType, c?: OpUnitType | null, d?: '()' | '[]' | '[)' | '(]'): boolean
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isMoment/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isMoment/index.d.ts
new file mode 100644
index 0000000..6e3a69f
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isMoment/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+
+ export function isMoment(input: any): boolean
+
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isSameOrAfter/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isSameOrAfter/index.d.ts
new file mode 100644
index 0000000..b4bc270
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isSameOrAfter/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType, OpUnitType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isSameOrAfter(date: ConfigType, unit?: OpUnitType): boolean
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isSameOrBefore/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isSameOrBefore/index.d.ts
new file mode 100644
index 0000000..c0a6c94
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isSameOrBefore/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc, ConfigType, OpUnitType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ isSameOrBefore(date: ConfigType, unit?: OpUnitType): boolean
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isSameOrBefore/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isSameOrBefore/index.js
new file mode 100644
index 0000000..18d526a
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/isSameOrBefore/index.js
@@ -0,0 +1,5 @@
+export default (function (o, c) {
+ c.prototype.isSameOrBefore = function (that, units) {
+ return this.isSame(that, units) || this.isBefore(that, units);
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/pluralGetSet/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/pluralGetSet/index.d.ts
new file mode 100644
index 0000000..7ef7167
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/pluralGetSet/index.d.ts
@@ -0,0 +1,44 @@
+import { PluginFunc, UnitType, ConfigType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ years(): number
+
+ years(value: number): Dayjs
+
+ months(): number
+
+ months(value: number): Dayjs
+
+ dates(): number
+
+ dates(value: number): Dayjs
+
+ weeks(): number
+
+ weeks(value: number): Dayjs
+
+ days(): number
+
+ days(value: number): Dayjs
+
+ hours(): number
+
+ hours(value: number): Dayjs
+
+ minutes(): number
+
+ minutes(value: number): Dayjs
+
+ seconds(): number
+
+ seconds(value: number): Dayjs
+
+ milliseconds(): number
+
+ milliseconds(value: number): Dayjs
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/timezone/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/timezone/index.d.ts
new file mode 100644
index 0000000..8d90359
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/timezone/index.d.ts
@@ -0,0 +1,20 @@
+import { PluginFunc, ConfigType } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ tz(timezone?: string, keepLocalTime?: boolean): Dayjs
+ offsetName(type?: 'short' | 'long'): string | undefined
+ }
+
+ interface DayjsTimezone {
+ (date: ConfigType, timezone?: string): Dayjs
+ (date: ConfigType, format: string, timezone?: string): Dayjs
+ guess(): string
+ setDefault(timezone?: string): void
+ }
+
+ const tz: DayjsTimezone
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/toArray/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/toArray/index.d.ts
new file mode 100644
index 0000000..5033831
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/toArray/index.d.ts
@@ -0,0 +1,10 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ toArray(): number[]
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/toObject/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/toObject/index.d.ts
new file mode 100644
index 0000000..ad21520
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/toObject/index.d.ts
@@ -0,0 +1,20 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+interface DayjsObject {
+ years: number
+ months: number
+ date: number
+ hours: number
+ minutes: number
+ seconds: number
+ milliseconds: number
+}
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ toObject(): DayjsObject
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/updateLocale/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/updateLocale/index.d.ts
new file mode 100644
index 0000000..994a884
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/updateLocale/index.d.ts
@@ -0,0 +1,8 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ export function updateLocale(localeName: string, customConfig: Record): Record
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/weekOfYear/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/weekOfYear/index.js
new file mode 100644
index 0000000..c92406e
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/weekOfYear/index.js
@@ -0,0 +1,44 @@
+import { MS, Y, D, W } from '../../constant';
+export default (function (o, c, d) {
+ var proto = c.prototype;
+
+ proto.week = function (week) {
+ if (week === void 0) {
+ week = null;
+ }
+
+ if (week !== null) {
+ return this.add((week - this.week()) * 7, D);
+ }
+
+ var yearStart = this.$locale().yearStart || 1;
+
+ if (this.month() === 11 && this.date() > 25) {
+ // d(this) is for badMutable
+ var nextYearStartDay = d(this).startOf(Y).add(1, Y).date(yearStart);
+ var thisEndOfWeek = d(this).endOf(W);
+
+ if (nextYearStartDay.isBefore(thisEndOfWeek)) {
+ return 1;
+ }
+ }
+
+ var yearStartDay = d(this).startOf(Y).date(yearStart);
+ var yearStartWeek = yearStartDay.startOf(W).subtract(1, MS);
+ var diffInWeek = this.diff(yearStartWeek, W, true);
+
+ if (diffInWeek < 0) {
+ return d(this).startOf('week').week();
+ }
+
+ return Math.ceil(diffInWeek);
+ };
+
+ proto.weeks = function (week) {
+ if (week === void 0) {
+ week = null;
+ }
+
+ return this.week(week);
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/weekYear/index.js b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/weekYear/index.js
new file mode 100644
index 0000000..140dcd4
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/weekYear/index.js
@@ -0,0 +1,19 @@
+export default (function (o, c) {
+ var proto = c.prototype;
+
+ proto.weekYear = function () {
+ var month = this.month();
+ var weekOfYear = this.week();
+ var year = this.year();
+
+ if (weekOfYear === 1 && month === 11) {
+ return year + 1;
+ }
+
+ if (month === 0 && weekOfYear >= 52) {
+ return year - 1;
+ }
+
+ return year;
+ };
+});
\ No newline at end of file
diff --git a/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/weekday/index.d.ts b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/weekday/index.d.ts
new file mode 100644
index 0000000..41945e7
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/dayjs/plugin/weekday/index.d.ts
@@ -0,0 +1,12 @@
+import { PluginFunc } from 'dayjs/esm'
+
+declare const plugin: PluginFunc
+export = plugin
+
+declare module 'dayjs/esm' {
+ interface Dayjs {
+ weekday(): number
+
+ weekday(value: number): Dayjs
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/README.md b/uni_modules/tuniaoui-vue3/libs/lodash/README.md
new file mode 100644
index 0000000..75f0abd
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/README.md
@@ -0,0 +1,80 @@
+# lodash
+
+[Site](https://lodash.com/) |
+[Docs](https://lodash.com/docs) |
+[FP Guide](https://github.com/lodash/lodash/wiki/FP-Guide) |
+[Contributing](https://github.com/lodash/lodash/blob/master/.github/CONTRIBUTING.md) |
+[Wiki](https://github.com/lodash/lodash/wiki "Changelog, Roadmap, etc.") |
+[Code of Conduct](https://code-of-conduct.openjsf.org) |
+[Twitter](https://twitter.com/bestiejs) |
+[Chat](https://gitter.im/lodash/lodash)
+
+The [Lodash](https://lodash.com/) library exported as a [UMD](https://github.com/umdjs/umd) module.
+
+Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli):
+```shell
+$ npm run build
+$ lodash -o ./dist/lodash.js
+$ lodash core -o ./dist/lodash.core.js
+```
+
+## Download
+
+ * [Core build](https://raw.githubusercontent.com/lodash/lodash/4.17.10-npm/core.js) ([~4 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.17.10-npm/core.min.js))
+ * [Full build](https://raw.githubusercontent.com/lodash/lodash/4.17.10-npm/lodash.js) ([~24 kB gzipped](https://raw.githubusercontent.com/lodash/lodash/4.17.10-npm/lodash.min.js))
+ * [CDN copies](https://www.jsdelivr.com/projects/lodash) [](https://www.jsdelivr.com/package/npm/lodash)
+
+Lodash is released under the [MIT license](https://raw.githubusercontent.com/lodash/lodash/4.17.10-npm/LICENSE) & supports modern environments.
+Review the [build differences](https://github.com/lodash/lodash/wiki/build-differences) & pick one that’s right for you.
+
+## Installation
+
+In a browser:
+```html
+
+```
+
+Using npm:
+```shell
+$ npm i -g npm
+$ npm i lodash
+```
+Note: add `--save` if you are using npm < 5.0.0
+
+In Node.js:
+```js
+// Load the full build.
+var _ = require('lodash');
+// Load the core build.
+var _ = require('lodash/core');
+// Load the FP build for immutable auto-curried iteratee-first data-last methods.
+var fp = require('lodash/fp');
+
+// Load method categories.
+var array = require('lodash/array');
+var object = require('lodash/fp/object');
+
+// Cherry-pick methods for smaller browserify/rollup/webpack bundles.
+var at = require('lodash/at');
+var curryN = require('lodash/fp/curryN');
+```
+
+Looking for Lodash modules written in ES6 or smaller bundle sizes? Check out [lodash-es](https://www.npmjs.com/package/lodash-es).
+
+## Why Lodash?
+
+Lodash makes JavaScript easier by taking the hassle out of working with arrays,
+numbers, objects, strings, etc. Lodash’s modular methods are great for:
+
+ * Iterating arrays, objects, & strings
+ * Manipulating & testing values
+ * Creating composite functions
+
+## Module Formats
+
+Lodash is available in a [variety of builds](https://lodash.com/custom-builds) & module formats.
+
+ * [lodash](https://www.npmjs.com/package/lodash) & [per method packages](https://www.npmjs.com/search?q=keywords:lodash-modularized)
+ * [lodash-es](https://www.npmjs.com/package/lodash-es), [babel-plugin-lodash](https://www.npmjs.com/package/babel-plugin-lodash), & [lodash-webpack-plugin](https://www.npmjs.com/package/lodash-webpack-plugin)
+ * [lodash/fp](https://github.com/lodash/lodash/tree/npm/fp)
+ * [lodash-amd](https://www.npmjs.com/package/lodash-amd)
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_addMapEntry.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_addMapEntry.ts
new file mode 100644
index 0000000..51f866a
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_addMapEntry.ts
@@ -0,0 +1,4 @@
+export function addMapEntry(map: any, pair: any) {
+ map.set(pair[0], pair[1])
+ return map
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_addSetEntry.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_addSetEntry.ts
new file mode 100644
index 0000000..f92e293
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_addSetEntry.ts
@@ -0,0 +1,4 @@
+export function addSetEntry(set: any, value: any) {
+ set.add(value)
+ return set
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_baseGetTag.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_baseGetTag.ts
new file mode 100644
index 0000000..18f0a70
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_baseGetTag.ts
@@ -0,0 +1,6 @@
+const objectProto = Object.prototype
+const objectToString = objectProto.toString
+
+export function baseGetTag(value: any) {
+ return objectToString.call(value)
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_baseTime.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_baseTime.ts
new file mode 100644
index 0000000..e9976aa
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_baseTime.ts
@@ -0,0 +1,9 @@
+export function baseTimes(n: any, iteratee: any) {
+ let index = -1
+ const result = Array.from({ length: n })
+
+ while (++index < n) {
+ result[index] = iteratee(index)
+ }
+ return result
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_charsEndIndex.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_charsEndIndex.ts
new file mode 100644
index 0000000..7774901
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_charsEndIndex.ts
@@ -0,0 +1,10 @@
+import { baseIndexOf } from './_baseIndexOf'
+
+export function charsEndIndex(strSymbols: string[], chrSymbols: string[]) {
+ let index = strSymbols.length
+
+ while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {
+ /* empty */
+ }
+ return index
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_cloneSymbol.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_cloneSymbol.ts
new file mode 100644
index 0000000..85519d2
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_cloneSymbol.ts
@@ -0,0 +1,6 @@
+const symbolProto = Symbol ? Symbol.prototype : undefined,
+ symbolValueOf = symbolProto ? symbolProto.valueOf : undefined
+
+export function cloneSymbol(symbol: any) {
+ return symbolValueOf ? new Object(symbolValueOf.call(symbol)) : {}
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_cloneTypedArray.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_cloneTypedArray.ts
new file mode 100644
index 0000000..58cf1e2
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_cloneTypedArray.ts
@@ -0,0 +1,12 @@
+import { cloneArrayBuffer } from './_cloneArrayBuffer'
+
+export function cloneTypedArray(typedArray: any, isDeep: any) {
+ const buffer = isDeep
+ ? cloneArrayBuffer(typedArray.buffer)
+ : typedArray.buffer
+ return new typedArray.constructor(
+ buffer,
+ typedArray.byteOffset,
+ typedArray.length
+ )
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_common.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_common.ts
new file mode 100644
index 0000000..19e526d
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_common.ts
@@ -0,0 +1,31 @@
+export type Many = T | ReadonlyArray
+export type PropertyName = string | number | symbol
+export type PropertyPath = Many
+
+export interface DebounceSettings {
+ leading?: boolean | undefined
+ maxWait?: number | undefined
+ trailing?: boolean | undefined
+}
+
+export interface ThrottleSettings {
+ leading?: boolean | undefined
+ trailing?: boolean | undefined
+}
+
+export interface DebouncedFunc any> {
+ (...args: Parameters): ReturnType | undefined
+ cancel(): void
+ flush(): ReturnType | undefined
+}
+
+export const reIsPlainProp = /^\w*$/
+export const reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/
+export const reLeadingDot = /^\./
+export const rePropName =
+ /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g
+export const reEscapeChar = /\\(\\)?/g
+export const reIsUint = /^(?:0|[1-9]\d*)$/
+
+export const INFINITY = 1 / 0
+export const MAX_SAFE_INTEGER = 9007199254740991
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_copyArray.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_copyArray.ts
new file mode 100644
index 0000000..0830de1
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_copyArray.ts
@@ -0,0 +1,10 @@
+export function copyArray(source: any, array: any) {
+ let index = -1
+ const length = source.length
+
+ array || (array = Array.from({ length }))
+ while (++index < length) {
+ array[index] = source[index]
+ }
+ return array
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_isKey.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_isKey.ts
new file mode 100644
index 0000000..b553ab3
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_isKey.ts
@@ -0,0 +1,27 @@
+import { isSymbol } from '@vue/shared'
+
+import { reIsDeepProp, reIsPlainProp } from './_common'
+
+import type { PropertyPath } from './_common'
+
+export function isKey(value: PropertyPath, object: any) {
+ if (Array.isArray(value)) {
+ return false
+ }
+ const type = typeof value
+ if (
+ type == 'number' ||
+ type == 'symbol' ||
+ type == 'boolean' ||
+ value == null ||
+ isSymbol(value)
+ ) {
+ return true
+ }
+ return (
+ reIsPlainProp.test(value as string) ||
+ !reIsDeepProp.test(value as string) ||
+ // eslint-disable-next-line unicorn/new-for-builtins
+ (object != null && (value as any) in Object(object))
+ )
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_isPrototype.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_isPrototype.ts
new file mode 100644
index 0000000..d798f29
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_isPrototype.ts
@@ -0,0 +1,8 @@
+const objectProto = Object.prototype
+
+export function isPrototype(value: any) {
+ const Ctor = value && value.constructor,
+ proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto
+
+ return value === proto
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/_toString.ts b/uni_modules/tuniaoui-vue3/libs/lodash/_toString.ts
new file mode 100644
index 0000000..e30e90a
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/_toString.ts
@@ -0,0 +1,7 @@
+import { baseToString } from './_baseToString'
+
+import type { PropertyName } from './_common'
+
+export function toString(value: PropertyName) {
+ return value == null ? '' : baseToString(value)
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/is-arguments.ts b/uni_modules/tuniaoui-vue3/libs/lodash/is-arguments.ts
new file mode 100644
index 0000000..4ca82c4
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/is-arguments.ts
@@ -0,0 +1,26 @@
+/* eslint-disable indent */
+import { baseIsArguments } from './_baseIsArguments'
+import { isObjectLike } from './is-object-like'
+
+const objectProto = Object.prototype
+
+const hasOwnProperty = objectProto.hasOwnProperty
+
+const propertyIsEnumerable = objectProto.propertyIsEnumerable
+
+const isArguments = baseIsArguments(
+ (function () {
+ // eslint-disable-next-line prefer-rest-params
+ return arguments
+ })()
+)
+ ? baseIsArguments
+ : function (value: any) {
+ return (
+ isObjectLike(value) &&
+ hasOwnProperty.call(value, 'callee') &&
+ !propertyIsEnumerable.call(value, 'callee')
+ )
+ }
+
+export { isArguments }
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/is-boolean.ts b/uni_modules/tuniaoui-vue3/libs/lodash/is-boolean.ts
new file mode 100644
index 0000000..8c51db0
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/is-boolean.ts
@@ -0,0 +1,12 @@
+import { isObjectLike } from './is-object-like'
+import { objectToString } from './_objectToString'
+
+const boolTag = '[object Boolean]'
+
+export function isBoolean(value?: any): value is boolean {
+ return (
+ value === true ||
+ value === false ||
+ (isObjectLike(value) && objectToString.call(value) == boolTag)
+ )
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/is-length.ts b/uni_modules/tuniaoui-vue3/libs/lodash/is-length.ts
new file mode 100644
index 0000000..e737a02
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/is-length.ts
@@ -0,0 +1,10 @@
+import { MAX_SAFE_INTEGER } from './_common'
+
+export function isLength(value: any) {
+ return (
+ typeof value == 'number' &&
+ value > -1 &&
+ value % 1 == 0 &&
+ value <= MAX_SAFE_INTEGER
+ )
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/is-number.ts b/uni_modules/tuniaoui-vue3/libs/lodash/is-number.ts
new file mode 100644
index 0000000..e01b68a
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/is-number.ts
@@ -0,0 +1,11 @@
+import { isObjectLike } from './is-object-like'
+import { objectToString } from './_objectToString'
+
+const numberTag = '[object Number]'
+
+export function isNumber(value?: any): value is number {
+ return (
+ typeof value == 'number' ||
+ (isObjectLike(value) && objectToString.call(value) == numberTag)
+ )
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/is-object.ts b/uni_modules/tuniaoui-vue3/libs/lodash/is-object.ts
new file mode 100644
index 0000000..4192242
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/is-object.ts
@@ -0,0 +1,4 @@
+export function isObject(value: any) {
+ const type = typeof value
+ return value != null && (type == 'object' || type == 'function')
+}
diff --git a/uni_modules/tuniaoui-vue3/libs/lodash/set.ts b/uni_modules/tuniaoui-vue3/libs/lodash/set.ts
new file mode 100644
index 0000000..082a0cc
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/libs/lodash/set.ts
@@ -0,0 +1,53 @@
+import { isObject } from '@vue/shared'
+import { isKey } from './_isKey'
+import { castPath } from './_castPath'
+import { toKey } from './_toKey'
+import { isIndex } from './_isIndex'
+import { assignValue } from './_assignValue'
+
+import type { PropertyPath } from './_common'
+
+function baseSet(
+ object: T,
+ path: PropertyPath,
+ value: any,
+ customizer?: any
+): T {
+ if (!isObject(object)) {
+ return object
+ }
+ path = isKey(path, object) ? [path] : castPath(path)
+
+ let index = -1
+ const length = path.length
+ const lastIndex = length - 1
+ let nested = object
+
+ while (nested != null && ++index < length) {
+ const key = toKey(path[index])
+ let newValue = value
+
+ if (index != lastIndex) {
+ const objValue = nested[key as keyof typeof nested]
+ newValue = customizer ? customizer(objValue, key, nested) : undefined
+ if (newValue === undefined) {
+ newValue = isObject(objValue)
+ ? objValue
+ : isIndex(path[index + 1])
+ ? []
+ : {}
+ }
+ }
+ assignValue(nested, key, newValue)
+ nested = nested[key as keyof typeof nested]
+ }
+ return object
+}
+
+export function set(
+ object: T,
+ path: PropertyPath,
+ value: any
+): T {
+ return object == null ? object : baseSet(object, path, value)
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/mixins/function.scss b/uni_modules/tuniaoui-vue3/theme-chalk/mixins/function.scss
new file mode 100644
index 0000000..5114c23
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/mixins/function.scss
@@ -0,0 +1,105 @@
+@use 'config';
+
+// BEM support Func
+// 块(Block):代表一个独立的组件或页面中的一个大型部分。块可以看作是一个命名空间,用于包含相关元素和修饰符。例如,一个导航栏可以被视为一个块。
+// 元素(Element):代表块的一部分,但不能独立存在。元素总是属于一个块,并且与该块紧密相关。元素由块名称和元素名称组成,中间由双下划线(__)连接。例如,一个导航栏可以包含多个链接,链接可以被视为导航栏块的元素。
+// 修饰符(Modifier):代表块或元素的变体或状态。修饰符用于修改块或元素的外观或行为。修饰符由块名称或元素名称,连字符(-)和修饰符名称组成。例如,一个导航栏可以具有活动状态或浅色主题,这些状态可以通过添加修饰符类进行实现。
+
+@function selectorToString($selector) {
+ $selector: inspect($selector);
+ $selector: str-slice($selector, 2, -2);
+ @return $selector;
+}
+
+@function containsModifier($selector) {
+ $selector: selectorToString($selector);
+
+ @if str_index($selector, config.$modifier-separator) {
+ @return true;
+ } @else {
+ @return false;
+ }
+}
+
+@function containWhenFlag($selector) {
+ $selector: selectorToString($selector);
+
+ @if str-index($selector, '.' + config.$state-prefix) {
+ @return true;
+ } @else {
+ @return false;
+ }
+}
+
+@function containPseudoClass($selector) {
+ $selector: selectorToString($selector);
+
+ @if str-index($selector, ':') {
+ @return true;
+ } @else {
+ @return false;
+ }
+}
+
+@function hitAllSpecialNestRule($selector) {
+ @return containsModifier($selector) or containWhenFlag($selector) or
+ containPseudoClass($selector);
+}
+
+// join var name
+// joinVarName(('button', 'text-color')) => '--tn-button-text-color'
+@function joinVarName($list) {
+ $name: '--' + config.$namespace;
+ @each $item in $list {
+ @if $item != '' {
+ $name: $name + '-' + $item;
+ }
+ }
+ @return $name;
+}
+
+// getCssVarName('button', 'text-color') => '--tn-button-text-color'
+@function getCssVarName($args...) {
+ @return joinVarName($args);
+}
+
+// getCssVar('button', 'text-color') => var(--tn-button-text-color)
+@function getCssVar($args...) {
+ @return var(#{joinVarName($args)});
+}
+
+// getCssVarWithDefault('button', 'text-color', 'red') => var(--tn-button-text-color, red)
+@function getCssVarWithDefault($args, $default) {
+ @return var(#{joinVarName($args)}, #{$default});
+}
+
+// bem('block', 'element', ''modifier) => 'tn-block__element--modifier'
+@function bem($block, $element: '', $modifier: '') {
+ $name: config.$namespace + config.$common-separator + $block;
+
+ @if $element != '' {
+ $name: $name + config.$element-separator + $element;
+ }
+
+ @if $modifier != '' {
+ $name: $name + config.$modifier-separator + $modifier;
+ }
+
+ @return $name;
+}
+
+// 字符串替换
+@function str-replace($string, $search, $replace) {
+ $index: str-index($string, $search);
+
+ @if $index {
+ @return str-slice($string, 1, $index - 1) + $replace +
+ str-replace(
+ str-slice($string, $index + str-length($search)),
+ $search,
+ $replace
+ );
+ }
+
+ @return $string;
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/mixins/mixins.scss b/uni_modules/tuniaoui-vue3/theme-chalk/mixins/mixins.scss
new file mode 100644
index 0000000..f99dfeb
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/mixins/mixins.scss
@@ -0,0 +1,134 @@
+@use 'function' as *;
+// forward mixins
+@forward 'config';
+@forward 'function';
+
+@use 'config' as *;
+
+// BEM
+@mixin b($block) {
+ $B: $namespace + '-' + $block !global;
+
+ .#{$B} {
+ @content;
+ }
+}
+
+@mixin e($element) {
+ $E: $element !global;
+ $selector: &;
+ $currentSelector: '';
+ @each $unit in $element {
+ $currentSelector: #{$currentSelector +
+ '.' +
+ $B +
+ $element-separator +
+ $unit +
+ ','};
+ }
+
+ @if hitAllSpecialNestRule($selector) {
+ @at-root {
+ #{$selector} {
+ #{$currentSelector} {
+ @content;
+ }
+ }
+ }
+ } @else {
+ @at-root {
+ #{$currentSelector} {
+ @content;
+ }
+ }
+ }
+}
+
+@mixin m($modifier) {
+ $selector: &;
+ $currentSelector: '';
+ @each $unit in $modifier {
+ $currentSelector: #{$currentSelector +
+ $selector +
+ $modifier-separator +
+ $unit +
+ ','};
+ }
+
+ @at-root {
+ #{$currentSelector} {
+ @content;
+ }
+ }
+}
+
+@mixin configurable-m($modifier, $E-flag: false) {
+ $selector: &;
+ $interpolation: '';
+
+ @if $E-flag {
+ $interpolation: $element-separator + $E-flag;
+ }
+
+ @at-root {
+ #{$selector} {
+ .#{$B + $interpolation + $modifier-separator + $modifier} {
+ @content;
+ }
+ }
+ }
+}
+
+@mixin spec-selector(
+ $specSelector: '',
+ $element: $E,
+ $modifier: false,
+ $block: $B
+) {
+ $modifierCombo: '';
+ $elementCombo: '';
+
+ @if $modifier {
+ $modifierCombo: $modifier-separator + $modifier;
+ }
+ @if $element {
+ $elementCombo: $element-separator + $element;
+ }
+
+ @at-root {
+ #{&}#{$specSelector}.#{$block + $elementCombo + $modifierCombo} {
+ @content;
+ }
+ }
+}
+
+@mixin meb($modifier: false, $element: $E, $block: $B) {
+ $selector: &;
+ $modifierCombo: '';
+
+ @if $modifier {
+ $modifierCombo: $modifier-separator + $modifier;
+ }
+
+ @at-root {
+ #{$selector} {
+ .#{$block + $element-separator + $element + $modifierCombo} {
+ @content;
+ }
+ }
+ }
+}
+
+@mixin when($state) {
+ @at-root {
+ &.#{$state-prefix + $state} {
+ @content;
+ }
+ }
+}
+
+@mixin pseudo($pseudo) {
+ @at-root #{&}#{':#{$pseudo}'} {
+ @content;
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/avatar-group.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/avatar-group.scss
new file mode 100644
index 0000000..17a79cf
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/avatar-group.scss
@@ -0,0 +1,9 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(avatar-group) {
+ display: flex;
+ align-items: center;
+
+ position: relative;
+ width: fit-content;
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/bubble-box.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/bubble-box.scss
new file mode 100644
index 0000000..84f791b
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/bubble-box.scss
@@ -0,0 +1,142 @@
+@use '../mixins//mixins.scss' as *;
+
+// 辅助元素的占位尺寸
+$auxiliary-element-size: 12px;
+
+@include b(bubble-box) {
+ position: relative;
+
+ /* 内容区域 start */
+ @include e(content) {
+ position: relative;
+ }
+ /* 内容区域 end */
+
+ /* 选项区域 start */
+ @include e(options) {
+ position: absolute;
+ width: fit-content;
+ border-radius: 15rpx;
+ transition-duration: 0.3s;
+ transition-timing-function: linear;
+ transition-property: opacity, transform;
+ opacity: 0;
+ visibility: hidden;
+
+ .scroll-view {
+ height: 100%;
+ }
+
+ .options-content {
+ height: fit-content;
+ }
+
+ /* 辅助元素 start */
+ .auxiliary-element {
+ width: 0rpx;
+ height: 0rpx;
+ position: absolute;
+ z-index: inherit;
+ border-width: 18rpx;
+ border-style: solid;
+ }
+ /* 辅助元素 end */
+
+ /* 气泡弹框的位置 start */
+ @include m(top) {
+ box-shadow: 0rpx 10rpx 20rpx -2rpx rgba(0, 0, 0, 0.06),
+ 0rpx 0rpx 10rpx -4rpx rgba(0, 0, 0, 0.1);
+ top: 0px;
+ left: 50%;
+ transform: translate(-50%, calc(-100% - $auxiliary-element-size));
+ .auxiliary-element {
+ left: 50%;
+ bottom: 2rpx;
+ transform: translate(-50%, 100%);
+ }
+ }
+ @include m(right) {
+ box-shadow: -10rpx 0rpx 20rpx -2rpx rgba(0, 0, 0, 0.06),
+ 0rpx 0rpx 10rpx -4rpx rgba(0, 0, 0, 0.1);
+ left: calc(100% + $auxiliary-element-size);
+ top: 50%;
+ transform: translateY(-50%);
+ .auxiliary-element {
+ left: 2rpx;
+ top: 50%;
+ transform: translate(-100%, -50%);
+ }
+ }
+ @include m(bottom) {
+ box-shadow: 0rpx -10rpx 20rpx -2rpx rgba(0, 0, 0, 0.06),
+ 0rpx 0rpx 10rpx -4rpx rgba(0, 0, 0, 0.1);
+ top: calc(100% + $auxiliary-element-size);
+ left: 50%;
+ transform: translateX(-50%);
+ .auxiliary-element {
+ left: 50%;
+ top: 2rpx;
+ transform: translate(-50%, -100%);
+ }
+ }
+ @include m(left) {
+ box-shadow: 10rpx 0rpx 20rpx -2rpx rgba(0, 0, 0, 0.06),
+ 0rpx 0rpx 10rpx -4rpx rgba(0, 0, 0, 0.1);
+ top: 50%;
+ left: calc(-100% + $auxiliary-element-size);
+ transform: translate(-50%, -50%);
+ .auxiliary-element {
+ right: 2rpx;
+ top: 50%;
+ transform: translate(100%, -50%);
+ }
+ }
+ /* 气泡弹框的位置 end */
+
+ /* 显示弹框 */
+ @include when(show) {
+ opacity: 1;
+ visibility: visible;
+ }
+ }
+ @include e(option-item) {
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 20rpx 38rpx;
+
+ .icon {
+ margin-right: 10rpx;
+ }
+
+ .text {
+ width: fit-content;
+ white-space: nowrap;
+ }
+
+ &::after {
+ content: '';
+ position: absolute;
+ left: 50%;
+ bottom: 0;
+ width: 90%;
+ height: 1rpx;
+ background-color: var(--tn-color-gray-light);
+ transform: translate(-50%, -50%);
+ }
+
+ &:last-of-type {
+ &::after {
+ display: none;
+ }
+ }
+
+ /* 禁止点击 start */
+ @include when(disabled) {
+ opacity: 0.4;
+ }
+ /* 禁止点击 end */
+ }
+ /* 选项区域 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/checkbox.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/checkbox.scss
new file mode 100644
index 0000000..beb6cf7
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/checkbox.scss
@@ -0,0 +1,142 @@
+@use 'sass:map';
+
+@use '../mixins/mixins.scss' as *;
+@use '../var/size.scss' as *;
+
+$checkbox-sizes: () !default;
+$checkbox-sizes: map.merge(
+ (
+ 'sm': (
+ 'padding': 8rpx 14rpx,
+ 'font-size': 24rpx,
+ 'box': 24rpx,
+ ),
+ '': (
+ 'padding': 10rpx 20rpx,
+ 'font-size': 28rpx,
+ 'box': 30rpx,
+ ),
+ 'lg': (
+ 'padding': 12rpx 24rpx,
+ 'font-size': 32rpx,
+ 'box': 36rpx,
+ ),
+ ),
+ $checkbox-sizes
+);
+
+@include b(checkbox) {
+ flex-grow: 0;
+ flex-shrink: 0;
+
+ display: flex;
+ align-items: center;
+
+ padding: map-get(map-get($checkbox-sizes, ''), 'padding');
+ font-size: map-get(map-get($checkbox-sizes, ''), 'font-size');
+ border-radius: 10rpx;
+
+ transition: all 0.3s ease-in-out;
+
+ /* 单选框组中的单选框之间有10rpx的边距 */
+ @include m(group) {
+ margin: 10rpx;
+ }
+
+ /* 复选框选择框 start */
+ @include e(checked-box) {
+ flex-shrink: 0;
+ position: relative;
+ width: map-get(map-get($checkbox-sizes, ''), 'box');
+ height: map-get(map-get($checkbox-sizes, ''), 'box');
+ transition: all 0.3s ease-in-out;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ color: transparent;
+
+ /* 不确定状态 start */
+ @include m(indeterminate) {
+ &::after {
+ content: '';
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ width: 50%;
+ height: 2rpx;
+ background-color: #fff;
+ transform: translate(-50%, -50%);
+ }
+ }
+ /* 不确定状态 end */
+
+ /* 选框的形状 start */
+ @include m(square) {
+ border-radius: 4rpx;
+ font-size: map-get(map-get($checkbox-sizes, ''), 'font-size');
+ }
+ @include m(circle) {
+ border-radius: 50%;
+ font-size: calc(
+ map-get(map-get($checkbox-sizes, ''), 'font-size') * 0.85
+ );
+ }
+ /* 选框的形状 end */
+ }
+ /* 复选框选择框 end */
+
+ /* 内容 start */
+ @include e(content) {
+ @include m(left) {
+ margin-right: 14rpx;
+ }
+ @include m(right) {
+ margin-left: 14rpx;
+ }
+ }
+ /* 内容 end */
+
+ /* 尺寸 start */
+ @each $size in $tn-form-sizes {
+ @include m(#{$size}) {
+ padding: map-get(map-get($checkbox-sizes, $size), 'padding');
+ font-size: map-get(map-get($checkbox-sizes, $size), 'font-size');
+
+ @include e(checked-box) {
+ width: map-get(map-get($checkbox-sizes, $size), 'box');
+ height: map-get(map-get($checkbox-sizes, $size), 'box');
+ @include m(square) {
+ font-size: map-get(map-get($checkbox-sizes, $size), 'font-size');
+ }
+ @include m(circle) {
+ font-size: calc(
+ map-get(map-get($checkbox-sizes, $size), 'font-size') * 0.85
+ );
+ }
+ }
+ }
+ }
+ /* 尺寸 end */
+
+ /* 选中效果 start */
+ @include m(selected) {
+ @include e(checked-box) {
+ color: #fff;
+ }
+ }
+ /* 选中效果 end */
+
+ /* 禁止效果 start */
+ @include m(disabled) {
+ opacity: 0.4;
+ }
+ /* 禁止效果 end */
+
+ /* 没有边框 start */
+ @include m(no-border) {
+ // 如果没有border则不设置内边距
+ padding: 0;
+ }
+ /* 没有边框 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/collapse-item.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/collapse-item.scss
new file mode 100644
index 0000000..3acde9b
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/collapse-item.scss
@@ -0,0 +1,57 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(collapse-item) {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+
+ transition: height 0.3s ease;
+
+ /* 标题 start */
+ @include e(title) {
+ position: relative;
+ width: 100%;
+ height: 100rpx;
+ padding: 0rpx 30rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ .arrow {
+ transition: transform 0.3s;
+ transform: rotate(0deg);
+ }
+ }
+ /* 标题 end */
+
+ /* 内容 start */
+ @include e(content) {
+ position: relative;
+ width: 100%;
+ padding: 30rpx;
+ height: auto;
+ opacity: 0;
+ transition: opacity 0.3s ease;
+ }
+ /* 内容 end */
+
+ /* 激活状态 start */
+ @include when(active) {
+ @include e(title) {
+ .arrow {
+ transform: rotate(90deg);
+ }
+ }
+ @include e(content) {
+ opacity: 1;
+ }
+ }
+ /* 激活状态 end */
+
+ /* 禁用状态 start */
+ @include when(disabled) {
+ opacity: 0.6;
+ background-color: var(--tn-color-gray-light);
+ }
+ /* 禁用状态 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/count-scroll.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/count-scroll.scss
new file mode 100644
index 0000000..37f5df3
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/count-scroll.scss
@@ -0,0 +1,29 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(count-scroll) {
+ display: inline-block;
+ height: 1em;
+ overflow: hidden;
+
+ @include e(wrapper) {
+ height: 1em;
+ display: flex;
+ align-items: flex-start;
+ }
+
+ @include e(column) {
+ height: auto;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+
+ transform: translateY(0%);
+
+ transition-property: transform;
+ transition-timing-function: ease;
+
+ @include m(item) {
+ line-height: 1;
+ }
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/count-to.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/count-to.scss
new file mode 100644
index 0000000..bdeb802
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/count-to.scss
@@ -0,0 +1,5 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(count-to) {
+ display: inline-block;
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/image-upload.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/image-upload.scss
new file mode 100644
index 0000000..dd929fa
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/image-upload.scss
@@ -0,0 +1,166 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b('image-upload') {
+ position: relative;
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+}
+
+/* item 对象 */
+@include b('image-upload-item') {
+ flex-grow: 0;
+
+ position: relative;
+ width: calc(100% / 3 - 20rpx);
+ height: 0;
+ padding-bottom: calc(100% / 3 - 20rpx);
+ border-radius: 15rpx;
+ margin-right: 20rpx;
+ margin-bottom: 20rpx;
+ overflow: hidden;
+
+ /* 自定义显示图片数据 start */
+ @include when(custom) {
+ flex: auto;
+ width: 100%;
+ height: auto;
+ padding: 0rpx;
+ border-radius: 0rpx;
+ margin: 0;
+ }
+ /* 自定义显示图片数据 end */
+
+ /* 图片 start */
+ @include e(image) {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ border-radius: inherit;
+ will-change: transform;
+ z-index: 1;
+
+ .image {
+ width: 100%;
+ height: 100%;
+ border-radius: inherit;
+ }
+
+ @include when(donw) {
+ z-index: 4;
+ }
+ }
+ /* 图片 end */
+
+ /* 删除按钮 start */
+ @include e(remove) {
+ position: absolute;
+ right: 0;
+ top: 0;
+ background-color: transparent;
+ color: #fff;
+ width: 0;
+ height: 0;
+ z-index: 6;
+ border-top: 70rpx solid var(--tn-color-danger);
+ border-left: 70rpx solid transparent;
+
+ @include m(icon) {
+ position: absolute;
+ top: -76rpx;
+ right: 8rpx;
+ transform: translateY(50%);
+ line-height: 1;
+ }
+ }
+ /* 删除按钮 end */
+
+ /* 重试蒙层 start */
+ @include e(retry) {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.2);
+ color: #fff;
+ z-index: 5;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 110rpx;
+ line-height: 1;
+ }
+ /* 重试蒙层 end */
+
+ /* 进度条 start */
+ @include e(progress) {
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 2;
+ opacity: 1;
+ background-color: rgba(247, 248, 247, 0);
+ transition-property: opacity;
+ transition-duration: 0.8s;
+ transition-timing-function: linear;
+ transition-delay: 0.3s;
+
+ @include m(wave) {
+ position: absolute;
+ width: calc(100% * 4);
+ height: calc(100% * 4);
+ top: -300%;
+ left: 50%;
+ z-index: 2;
+ background-color: rgba(170, 170, 170, 0.5);
+ border-radius: 45%;
+ transform: translateX(-50%) rotate(0);
+ animation: rotate 4s linear infinite;
+
+ & + & {
+ z-index: 3;
+ background-color: rgba(170, 170, 170, 0.8);
+ border-radius: 47%;
+ animation: rotate 9s linear -4s infinite;
+ }
+ }
+
+ @include when(finish) {
+ opacity: 0;
+ }
+ }
+ /* 进度条 end */
+
+ /* 新增图片 按钮 start */
+ @include e(add-btn) {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ border-radius: inherit;
+
+ @include m('icon') {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ font-size: 100rpx;
+ }
+ }
+ /* 新增图片 按钮 end */
+}
+
+@keyframes rotate {
+ 50% {
+ transform: translateX(-50%) rotate(180deg);
+ }
+ 100% {
+ transform: translateX(-50%) rotate(360deg);
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/index-list.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/index-list.scss
new file mode 100644
index 0000000..f8ec262
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/index-list.scss
@@ -0,0 +1,100 @@
+@use 'sass:map';
+
+@use '../mixins/mixins.scss' as *;
+@use '../var/size.scss' as *;
+
+$index-list-sizes: () !default;
+$index-list-sizes: map-merge(
+ (
+ 'sm': (
+ 'font-size': 24rpx,
+ ),
+ '': (
+ 'font-size': 28rpx,
+ ),
+ 'lg': (
+ 'font-size': 32rpx,
+ ),
+ 'xl': (
+ 'font-size': 36rpx,
+ ),
+ ),
+ $index-list-sizes
+);
+
+@include b(index-list) {
+ position: relative;
+ width: 100%;
+
+ @include e(scroll-view) {
+ position: relative;
+ height: 100%;
+ }
+
+ /* 内容标题 start */
+ @include e(title) {
+ padding: 4rpx 24rpx;
+ font-size: map-get(map-get($index-list-sizes, ''), 'font-size');
+ }
+ /* 内容标题 end */
+
+ /* key索引列表 start */
+ @include e(key-list) {
+ position: absolute;
+ right: 4%;
+ top: 50%;
+ transform: translate(50%, -50%);
+ z-index: 99999;
+ font-size: 24rpx;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ }
+ @include e(key-list-value) {
+ text-align: center;
+ padding: 4rpx 0rpx;
+ }
+
+ @include e(key-list-tips-value) {
+ position: absolute;
+ top: 0;
+ left: -80rpx;
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 50%;
+ background-color: var(--tn-color-gray-light);
+ color: var(--tn-color-gray);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transform: translate(-50%, -50%);
+ font-size: 46rpx;
+ font-weight: bold;
+ line-height: 1;
+
+ .auxiliary-element {
+ position: absolute;
+ height: 0;
+ width: 0;
+ right: 0;
+ top: 50%;
+ border-color: transparent transparent transparent
+ var(--tn-color-gray-light);
+ border-width: 30rpx;
+ border-style: solid;
+ transform: translate(47rpx, -50%);
+ }
+ }
+ /* key索引列表 end */
+
+ /* 尺寸 start */
+ @each $size in $tn-inner-sizes {
+ @include e(title) {
+ @include m($size) {
+ font-size: map-get(map-get($index-list-sizes, $size), 'font-size');
+ }
+ }
+ }
+ /* 尺寸 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/list.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/list.scss
new file mode 100644
index 0000000..d7a6f58
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/list.scss
@@ -0,0 +1,48 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(list-item) {
+ position: relative;
+
+ width: 100%;
+ height: auto;
+ padding: 30rpx;
+
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ // 内容
+ @include e(content) {
+ flex: 1;
+ }
+
+ // 右图标
+ @include e(right-icon) {
+ width: 30rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ // 圆角
+ @include m(radius) {
+ border-radius: 15rpx;
+ overflow: hidden;
+ }
+
+ /* 底部边框 start */
+ @include e('bottom-border') {
+ position: absolute;
+ left: 50%;
+ bottom: 0;
+ width: 100%;
+ height: 1rpx;
+ transform: translateX(-50%);
+ background-color: var(--tn-color-gray-light);
+
+ @include when(indent) {
+ width: 95%;
+ }
+ }
+ /* 底部边框 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/loadmore.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/loadmore.scss
new file mode 100644
index 0000000..79102d9
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/loadmore.scss
@@ -0,0 +1,100 @@
+@use 'sass:map';
+
+@use '../mixins/mixins.scss' as *;
+@use '../var/size.scss' as *;
+
+// 尺寸信息
+$loadmore-sizes: () !default;
+$loadmore-sizes: map-merge(
+ (
+ 'sm': (
+ 'font-size': 24rpx,
+ 'dot': 24rpx,
+ ),
+ '': (
+ 'font-size': 28rpx,
+ 'dot': 28rpx,
+ ),
+ 'lg': (
+ 'font-size': 32rpx,
+ 'dot': 32rpx,
+ ),
+ 'xl': (
+ 'font-size': 36rpx,
+ 'dot': 36rpx,
+ ),
+ ),
+ $loadmore-sizes
+);
+
+@include b(loadmore) {
+ position: relative;
+ width: 100%;
+
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ font-size: map-get(map-get($loadmore-sizes, ''), 'font-size');
+
+ /* 内容 start */
+ @include e(content) {
+ position: relative;
+
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ /* 左右两边的横线 start */
+ &::before,
+ &::after {
+ content: '';
+ position: absolute;
+ top: 50%;
+ width: 100rpx;
+ height: 1rpx;
+ border-radius: 1000rpx;
+ background-color: var(--tn-color-gray);
+ }
+ &::before {
+ left: 0%;
+ transform: translate(calc(-100% - 20rpx), -50%);
+ }
+ &::after {
+ left: 100%;
+ transform: translate(20rpx, -50%);
+ }
+ /* 左右两边的横线 end */
+ }
+ /* 内容 end */
+
+ /* 点内容 start */
+ @include e(dot) {
+ width: map-get(map-get($loadmore-sizes, ''), 'dot');
+ height: map-get(map-get($loadmore-sizes, ''), 'dot');
+ border-radius: 50%;
+ }
+ /* 点内容 end */
+
+ /* 尺寸 start */
+ @each $size in $tn-inner-sizes {
+ @include m($size) {
+ font-size: map-get(map-get($loadmore-sizes, $size), 'font-size');
+
+ @include e(dot) {
+ width: map-get(map-get($loadmore-sizes, $size), 'dot');
+ height: map-get(map-get($loadmore-sizes, $size), 'dot');
+ border-radius: 50%;
+ }
+ }
+ }
+ /* 尺寸 end */
+
+ @include when(loading) {
+ @include when(loading-icon) {
+ @include e(text) {
+ margin-left: 10rpx;
+ }
+ }
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/notify.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/notify.scss
new file mode 100644
index 0000000..5bf643e
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/notify.scss
@@ -0,0 +1,62 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(notify) {
+ position: fixed;
+
+ opacity: 0;
+ transition: opacity 0.3s ease, transform 0.3s ease;
+
+ /* 顶部弹出 start */
+ @include m(top) {
+ left: 0;
+ right: 0;
+ top: 0;
+ width: 100%;
+ padding: 10rpx 0rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ transform: translateY(-100%);
+
+ @include when(active) {
+ transform: translateY(0);
+ }
+ }
+ /* 顶部弹出 end */
+
+ /* 居中弹出 start */
+ @include m(center) {
+ left: 50%;
+ top: 50%;
+ padding: 15rpx;
+ border-radius: 8rpx;
+ transform-origin: center center;
+ transform: translate(-50%, -50%) scale(0);
+
+ @include when(active) {
+ transform: translate(-50%, -50%) scale(1);
+ }
+ }
+ /* 居中弹出 end */
+
+ /* 底部弹出 start */
+ @include m(bottom) {
+ left: 50%;
+ bottom: 13%;
+ padding: 15rpx;
+ border-radius: 8rpx;
+ transform-origin: center center;
+ transform: translate(-50%, -50%) scale(0);
+
+ @include when(active) {
+ transform: translate(-50%, -50%) scale(1);
+ }
+ }
+ /* 底部弹出 end */
+
+ /* 弹出激活 状态 start */
+ @include when(active) {
+ opacity: 1;
+ }
+ /* 弹出激活 状态 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/number-box.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/number-box.scss
new file mode 100644
index 0000000..3236346
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/number-box.scss
@@ -0,0 +1,102 @@
+@use 'sass:map';
+
+@use '../mixins/mixins.scss' as *;
+@use '../var/size.scss' as *;
+
+$number-box-sizes: () !default;
+$number-box-sizes: map-merge(
+ (
+ 'sm': (
+ width: 150rpx,
+ height: 40rpx,
+ font-size: 22rpx,
+ ),
+ '': (
+ width: 180rpx,
+ height: 50rpx,
+ font-size: 28rpx,
+ ),
+ 'lg': (
+ width: 220rpx,
+ height: 60rpx,
+ font-size: 36rpx,
+ ),
+ ),
+ $number-box-sizes
+);
+
+@include b(number-box) {
+ display: inline-flex;
+
+ position: relative;
+ width: map-get(map-get($number-box-sizes, ''), width);
+ height: map-get(map-get($number-box-sizes, ''), height);
+ font-size: map-get(map-get($number-box-sizes, ''), font-size);
+
+ /* 操作按钮 start */
+ @include e(operation-btn) {
+ flex-grow: 0;
+ flex-shrink: 0;
+ position: relative;
+
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ line-height: 1;
+
+ width: map-get(map-get($number-box-sizes, ''), height);
+ height: map-get(map-get($number-box-sizes, ''), height);
+ font-size: calc(map-get(map-get($number-box-sizes, ''), font-size) * 1.2);
+
+ @include when(disabled) {
+ opacity: 0.3;
+ }
+ }
+ /* 操作按钮 end */
+
+ /* 输入框 start */
+ @include e(input) {
+ flex-grow: 1;
+ flex-shrink: 1;
+ margin: 0rpx 4rpx;
+
+ width: 100%;
+ height: 100%;
+ padding: 0rpx;
+
+ input {
+ width: 100%;
+ height: 100%;
+ background-color: transparent;
+ color: inherit;
+ font-size: inherit;
+ padding: 0rpx 4rpx;
+ text-align: center;
+ }
+ }
+ /* 输入框 end */
+
+ /* 尺寸 start */
+ @each $size in $tn-form-sizes {
+ @include m($size) {
+ width: map-get(map-get($number-box-sizes, $size), width);
+ height: map-get(map-get($number-box-sizes, $size), height);
+ font-size: map-get(map-get($number-box-sizes, $size), font-size);
+
+ @include e(operation-btn) {
+ width: map-get(map-get($number-box-sizes, $size), height);
+ height: map-get(map-get($number-box-sizes, $size), height);
+ font-size: calc(
+ map-get(map-get($number-box-sizes, $size), font-size) * 1.2
+ );
+ }
+ }
+ }
+ /* 尺寸 end */
+
+ /* 禁止操作 start */
+ @include m(disabled) {
+ opacity: 0.4;
+ }
+ /* 禁止操作 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/photo-album.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/photo-album.scss
new file mode 100644
index 0000000..bba5ff1
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/photo-album.scss
@@ -0,0 +1,36 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(photo-album) {
+ position: relative;
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+
+ /* 容器 start */
+ @include e(container) {
+ flex-grow: 0;
+ flex-shrink: 0;
+ position: relative;
+ height: 0;
+ margin: 10rpx 20rpx 10rpx 0rpx;
+ }
+ /* 容器 end */
+
+ /* item start */
+ @include e(item) {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ border-radius: 15rpx;
+ background-color: var(--tn-color-gray-light);
+
+ &__image {
+ width: 100%;
+ height: 100%;
+ border-radius: inherit;
+ }
+ }
+ /* item end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/picker.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/picker.scss
new file mode 100644
index 0000000..947c1a4
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/picker.scss
@@ -0,0 +1,56 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(picker) {
+ position: relative;
+
+ width: 100%;
+
+ border-radius: 30rpx 30rpx 0rpx 0rpx;
+ box-shadow: 0rpx 0rpx 40rpx 04rpx rgba(0, 0, 0, 0.1);
+
+ /* 顶部操作区域 start */
+ @include e(operation) {
+ position: relative;
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 30rpx 0rpx;
+ font-size: 30rpx;
+ @include when(only-confirm) {
+ justify-content: flex-end;
+ }
+ }
+ @include e(operation-btn) {
+ padding: 0rpx 30rpx;
+ }
+ /* 顶部操作区域 end */
+
+ /* 内容区域 start */
+ @include e(content) {
+ position: relative;
+ width: 100%;
+ height: 440rpx;
+ padding: 20rpx 30rpx;
+ padding-top: 0rpx;
+ }
+ @include e(content-item) {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ @include m(data) {
+ width: 100%;
+ height: fit-content;
+ text-align: center;
+ }
+ }
+ /* 内容区域 end */
+
+ /* picker-view 样式 start */
+ @include e(picker-view) {
+ flex-grow: 1;
+ height: 100%;
+ }
+ /* picker-view 样式 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/rate.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/rate.scss
new file mode 100644
index 0000000..f95b15f
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/rate.scss
@@ -0,0 +1,75 @@
+@use 'sass:map';
+
+@use '../mixins/mixins.scss' as *;
+@use '../var/size.scss' as *;
+
+$rate-sizes: () !default;
+$rate-sizes: map-merge(
+ (
+ 'sm': (
+ 'font-size': 32rpx,
+ 'gutter': 8rpx,
+ ),
+ '': (
+ 'font-size': 38rpx,
+ 'gutter': 8rpx,
+ ),
+ 'lg': (
+ 'font-size': 46rpx,
+ 'gutter': 8rpx,
+ ),
+ 'xl': (
+ 'font-size': 52rpx,
+ 'gutter': 8rpx,
+ ),
+ ),
+ $rate-sizes
+);
+
+@include b(rate) {
+ position: relative;
+ width: fit-content;
+
+ /* 内容容器 start */
+ @include e(container) {
+ display: flex;
+ align-items: center;
+ font-size: map-get(map-get($rate-sizes, ''), 'font-size');
+ line-height: 1;
+ }
+ @include e(active-container) {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 0;
+ overflow: hidden;
+ }
+ /* 内容容器 end */
+
+ /* item样式 start */
+ @include e(item) {
+ padding: 0rpx calc(map-get(map-get($rate-sizes, ''), 'gutter') / 2);
+ }
+ /* item样式 end */
+
+ /* 尺寸 start */
+ @each $size in $tn-inner-sizes {
+ @include m($size) {
+ @include e(container) {
+ font-size: map-get(map-get($rate-sizes, $size), 'font-size');
+ }
+ @include e(item) {
+ padding: 0rpx calc(map-get(map-get($rate-sizes, $size), 'gutter') / 2);
+ }
+ }
+ }
+ /* 尺寸 end */
+
+ /* 禁止点击 start */
+ @include when(readonly) {
+ // opacity: 0.4;
+ }
+ /* 禁止点击 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/read-more.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/read-more.scss
new file mode 100644
index 0000000..3ec4169
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/read-more.scss
@@ -0,0 +1,45 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(read-more) {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+
+ transition: height 0.3s ease;
+
+ /* 操作区域 start */
+ @include e(operation-area) {
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ height: auto;
+
+ @include when(expand) {
+ height: 40%;
+ }
+ }
+ @include e(operation-content) {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ &.expand {
+ align-items: flex-end;
+ padding-bottom: 10rpx;
+ background: linear-gradient(
+ 180deg,
+ rgba(255, 255, 255, 0.1) 0%,
+ #fff 70%,
+ #fff 100%
+ );
+ }
+
+ &.fold {
+ background-color: transparent;
+ }
+ }
+ /* 操作区域 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/scroll-list.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/scroll-list.scss
new file mode 100644
index 0000000..0d48005
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/scroll-list.scss
@@ -0,0 +1,41 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(scroll-list) {
+ position: relative;
+ width: 100%;
+
+ /* 内容区域 start */
+ @include e(content) {
+ width: 100%;
+
+ .data {
+ position: relative;
+ width: fit-content;
+ }
+ }
+ @include e(scroll-view) {
+ width: 100%;
+ }
+ /* 内容区域 end */
+
+ /* 指示器 start */
+ @include when(indicator) {
+ padding-bottom: 50rpx;
+ }
+ @include e(indicator) {
+ position: absolute;
+ left: 50%;
+ bottom: 20rpx;
+ height: 8rpx;
+ border-radius: 1000rpx;
+ transform: translate(-50%, 0);
+ }
+ @include e(indicator-block) {
+ position: absolute;
+ left: 0;
+ top: 0;
+ height: 100%;
+ border-radius: inherit;
+ }
+ /* 指示器 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/step.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/step.scss
new file mode 100644
index 0000000..e4d2c51
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/step.scss
@@ -0,0 +1,225 @@
+@use '../mixins/mixins.scss' as *;
+
+$mode-item-size: 50rpx;
+
+@include b(step) {
+ flex: 1;
+ position: relative;
+ width: 100%;
+
+ display: flex;
+ justify-content: flex-end;
+
+ /* 内容容器 start */
+ @include e(container) {
+ display: flex;
+
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ }
+ /* 内容容器 end */
+
+ /* 模式内容 start */
+ @include e(mode-item) {
+ position: relative;
+
+ width: $mode-item-size;
+ height: $mode-item-size;
+ // background-color: #fff;
+
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 2;
+ }
+ /* 模式内容 end */
+
+ /* 内容文字 start */
+ @include e(mode-title) {
+ transition: color 0.3s ease;
+ margin-top: 6rpx;
+ }
+ /* 内容文字 end */
+
+ /* 点模式 start */
+ @include e(mode-dot) {
+ width: 20rpx;
+ height: 20rpx;
+
+ border-radius: 50%;
+
+ transition: background-color 0.3s ease;
+ }
+ /* 点模式 end */
+
+ /* 数字模式 start */
+ @include e(mode-number) {
+ position: relative;
+ width: 80%;
+ height: 80%;
+ border-radius: 50%;
+ border: 1rpx solid var(--tn-color-gray);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ overflow: hidden;
+ // background-color: transparent;
+
+ transition: background-color 0.3s ease, border-color 0.3s ease;
+
+ &::before {
+ content: '';
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ line-height: 1;
+ opacity: 1;
+ transition: opacity 0.3s ease;
+ }
+
+ .icon {
+ line-height: 1;
+ opacity: 0;
+ transition: opacity 0.3s ease;
+ }
+ }
+ /* 数字模式 end */
+
+ /* 点图标模式 start */
+ @include e(mode-dotIcon) {
+ position: relative;
+ width: 100%;
+ height: 100%;
+
+ .dot {
+ position: absolute;
+ left: 50%;
+ top: 50%;
+
+ width: 20rpx;
+ height: 20rpx;
+
+ border-radius: 50%;
+ opacity: 1;
+ transform: translate(-50%, -50%) scale(1);
+ transform-origin: center center;
+
+ transition: background-color 0.3s ease, opacity 0.3s ease,
+ transform 0.3s ease;
+ }
+ .icon {
+ font-size: 42rpx;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%) scale(0);
+ transform-origin: center center;
+ // color: transparent;
+
+ opacity: 0;
+
+ transition: color 0.3s ease, opacity 0.3s ease, transform 0.3s ease;
+ }
+ }
+ /* 点图标模式 end */
+
+ /* 图标模式 start */
+ @include e(mode-icon) {
+ font-size: 42rpx;
+ .icon {
+ transition: color 0.3s ease;
+ transform-origin: center center;
+ }
+ }
+ /* 图标模式 end */
+
+ /* 横线 start */
+ @include e(line) {
+ position: absolute;
+ right: calc(#{$mode-item-size} * 1.35);
+ top: calc(#{$mode-item-size} / 2 - 2rpx);
+ width: calc(100% - #{$mode-item-size});
+ height: 4rpx;
+
+ z-index: 1;
+
+ transition: background-color 0.3s ease;
+
+ @include when(no-title) {
+ right: calc(#{$mode-item-size});
+ }
+ }
+ /* 横线 end */
+
+ /* 激活状态 start */
+ @include when(active) {
+ // 数字模式
+ @include e(mode-number) {
+ border-color: transparent;
+
+ &::before {
+ opacity: 0;
+ }
+
+ .icon {
+ opacity: 1;
+ }
+ }
+ // 点图标模式
+ @include e(mode-dotIcon) {
+ .dot {
+ opacity: 0;
+ transform: translate(-50%, -50%) scale(2);
+ }
+ .icon {
+ opacity: 1;
+ transform: translate(-50%, -50%) scale(1);
+ }
+ }
+ // 图标模式
+ @include e(mode-icon) {
+ .icon {
+ animation: icon-mode-switch-animation 0.3s ease;
+ }
+ }
+ }
+ /* 激活状态 end */
+
+ @for $i from 1 through 10 {
+ &:nth-child(#{$i}) {
+ @include e(mode-number) {
+ &::before {
+ content: '#{$i}';
+ }
+ }
+ }
+ }
+
+ /* 最后一个元素 start */
+ &:first-of-type {
+ flex: auto;
+ flex-grow: 0;
+ flex-shrink: 0;
+ width: fit-content;
+ max-width: fit-content;
+
+ @include e(line) {
+ display: none;
+ }
+ }
+ /* 最后一个元素 end */
+}
+
+/* 图标模式下切换动画 */
+@keyframes icon-mode-switch-animation {
+ from {
+ opacity: 0;
+ transform: scale(1.5);
+ }
+ to {
+ opacity: 1;
+ transform: scale(1);
+ }
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/steps.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/steps.scss
new file mode 100644
index 0000000..d58d5bb
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/steps.scss
@@ -0,0 +1,10 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(steps) {
+ position: relative;
+
+ width: 100%;
+
+ display: flex;
+ flex-wrap: nowrap;
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/tabs.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/tabs.scss
new file mode 100644
index 0000000..c4800fd
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/tabs.scss
@@ -0,0 +1,58 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(tabs) {
+ position: relative;
+
+ width: 100%;
+
+ /* scroll-view start */
+ @include e(scroll-view) {
+ position: relative;
+
+ width: 100%;
+ height: 100%;
+ }
+ /* scroll-view end */
+
+ /* 内容容器 start */
+ @include e(container) {
+ position: relative;
+
+ display: flex;
+ align-items: flex-end;
+ width: 100%;
+ max-width: 100%;
+ height: 100%;
+ overflow: hidden;
+
+ @include when(scroll) {
+ width: max-content;
+ max-width: none;
+ overflow: unset;
+ }
+ }
+ /* 内容容器 end */
+
+ /* bar 滑块 start */
+ @include e(bar-container) {
+ position: absolute;
+ left: 0;
+ bottom: 0;
+
+ transition-property: left, opacity;
+ transition-duration: 0.3s;
+ transition-timing-function: ease;
+ }
+ @include e(bar) {
+ position: relative;
+ height: 10rpx;
+ border-radius: 3000rpx;
+ }
+ /* bar 滑块 end */
+
+ /* 底部阴影 start */
+ @include m(bottom-shadow) {
+ box-shadow: 0rpx 5rpx 16rpx 0rpx rgba(0, 0, 0, 0.05);
+ }
+ /* 底部阴影 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/theme-chalk/src/water-fall.scss b/uni_modules/tuniaoui-vue3/theme-chalk/src/water-fall.scss
new file mode 100644
index 0000000..a4c873b
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/theme-chalk/src/water-fall.scss
@@ -0,0 +1,15 @@
+@use '../mixins/mixins.scss' as *;
+
+@include b(water-fall) {
+ position: relative;
+ width: 100%;
+ display: flex;
+ flex-wrap: wrap;
+
+ /* 左右两边容器 start */
+ @include e(container) {
+ width: calc(100% / 2);
+ height: fit-content;
+ }
+ /* 左右两边容器 end */
+}
diff --git a/uni_modules/tuniaoui-vue3/tokens/form.ts b/uni_modules/tuniaoui-vue3/tokens/form.ts
new file mode 100644
index 0000000..85c55a2
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/tokens/form.ts
@@ -0,0 +1,7 @@
+import type { InjectionKey } from 'vue'
+import type { FormContext, FormItemContext } from '../components'
+
+export const formContextKey: InjectionKey =
+ Symbol('formContextKey')
+export const formItemContextKey: InjectionKey =
+ Symbol('formItemContextKey')
diff --git a/uni_modules/tuniaoui-vue3/tokens/tabbar.ts b/uni_modules/tuniaoui-vue3/tokens/tabbar.ts
new file mode 100644
index 0000000..26eeac0
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/tokens/tabbar.ts
@@ -0,0 +1,19 @@
+import type { InjectionKey } from 'vue'
+import type { TabbarItemRect, TabbarProps } from '../components/tabbar'
+
+export type TabbarItemContext = {
+ uid: number
+ name?: string | number
+}
+
+export type TabbarContext = TabbarProps & {
+ items: TabbarItemContext[]
+ activeUid: number
+ addItem: (item: TabbarItemContext) => void
+ removeItem: (uid: number) => void
+ setActiveItem: (uid: number) => void
+ setBulgeCircle: (rect: TabbarItemRect) => void
+}
+
+export const tabbarContextKey: InjectionKey =
+ Symbol('tabbarContextKey')
diff --git a/uni_modules/tuniaoui-vue3/tokens/tabs.ts b/uni_modules/tuniaoui-vue3/tokens/tabs.ts
new file mode 100644
index 0000000..7569248
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/tokens/tabs.ts
@@ -0,0 +1,20 @@
+import type { InjectionKey } from 'vue'
+import type { TabsItemRect, TabsProps } from '../components/tabs'
+
+export type TabsItemContext = {
+ uid: number
+ elementRect: TabsItemRect
+ name?: string | number
+}
+
+export type TabsContext = TabsProps & {
+ items: TabsItemContext[]
+ activeUid: number
+ showBar: boolean
+ addItem: (item: TabsItemContext) => void
+ removeItem: (uid: number) => void
+ setActiveItem: (uid: number) => void
+}
+
+export const tabsContextKey: InjectionKey =
+ Symbol('tabsContextKey')
diff --git a/uni_modules/tuniaoui-vue3/utils/uniapp/index.ts b/uni_modules/tuniaoui-vue3/utils/uniapp/index.ts
new file mode 100644
index 0000000..398cae7
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/utils/uniapp/index.ts
@@ -0,0 +1 @@
+export * from './router'
diff --git a/uni_modules/tuniaoui-vue3/utils/validator/index.ts b/uni_modules/tuniaoui-vue3/utils/validator/index.ts
new file mode 100644
index 0000000..6f5ff15
--- /dev/null
+++ b/uni_modules/tuniaoui-vue3/utils/validator/index.ts
@@ -0,0 +1,199 @@
+/**
+ * 验证电子邮箱格式
+ */
+export const isEmail = (value: string): boolean => {
+ return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(
+ value
+ )
+}
+
+/**
+ * 验证手机格式
+ */
+export const isMobile = (value: string): boolean => {
+ return /^1[3-9]\d{9}$/.test(value)
+}
+
+/**
+ * 验证URL格式
+ */
+export const isUrl = (value: string): boolean => {
+ return /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?/.test(value)
+}
+
+/**
+ * 验证日期格式
+ */
+export const isDate = (value: string): boolean => {
+ return !/Invalid|NaN/.test(new Date(value).toString())
+}
+
+/**
+ * 验证ISO类型的日期格式
+ */
+export const isDateISO = (value: string): boolean => {
+ return /^\d{4}[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01])$/.test(value)
+}
+
+/**
+ * 验证十进制数字
+ */
+export const isNumber = (value: string): boolean => {
+ // eslint-disable-next-line no-useless-escape
+ return /^[\+-]?(\d+\.?\d*|\.\d+|\d\.\d+e\+\d+)$/.test(value)
+}
+
+/**
+ * 验证整数
+ */
+export const isDigits = (value: string): boolean => {
+ return /^\d+$/.test(value)
+}
+
+/**
+ * 验证身份证号码
+ */
+export const isIdCard = (value: string): boolean => {
+ return /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(
+ value
+ )
+}
+
+/**
+ * 是否车牌号
+ */
+export const isCarNo = (value: string): boolean => {
+ // 新能源车牌
+ const xreg =
+ /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/
+ // 旧车牌
+ const creg =
+ /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/
+ if (value.length === 7) {
+ return creg.test(value)
+ } else if (value.length === 8) {
+ return xreg.test(value)
+ } else {
+ return false
+ }
+}
+
+/**
+ * 金额,只允许2位小数
+ */
+export const isAmount = (value: string): boolean => {
+ //金额,只允许保留两位小数
+ return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value)
+}
+
+/**
+ * 中文
+ */
+export const isChinese = (value: string): boolean => {
+ // eslint-disable-next-line unicorn/escape-case
+ const reg = /^[\u4e00-\u9fa5]+$/gi
+ return reg.test(value)
+}
+
+/**
+ * 只能输入字母
+ */
+export const isLetter = (value: string): boolean => {
+ return /^[a-zA-Z]*$/.test(value)
+}
+
+/**
+ * 只能是字母或者数字
+ */
+export const isEnOrNum = (value: string): boolean => {
+ //英文或者数字
+ const reg = /^[0-9a-zA-Z]*$/g
+ return reg.test(value)
+}
+
+/**
+ * 验证是否包含某个值
+ */
+export const isContains = (value: string, param: string): boolean => {
+ return value.includes(param)
+}
+
+/**
+ * 验证一个值范围[min, max]
+ */
+export const isRange = (
+ value: string | number,
+ param: (string | number)[]
+): boolean => {
+ return value >= param[0] && value <= param[1]
+}
+
+/**
+ * 验证一个长度范围[min, max]
+ */
+export const isRangeLength = (
+ value: string,
+ param: (string | number)[]
+): boolean => {
+ return value.length >= Number(param[0]) && value.length <= Number(param[1])
+}
+
+/**
+ * 是否固定电话
+ */
+export const isLandline = (value: string): boolean => {
+ const reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/
+ return reg.test(value)
+}
+
+/**
+ * 判断是否为空
+ */
+export const isEmpty = (value: any): boolean => {
+ switch (typeof value) {
+ case 'undefined':
+ return true
+ case 'string':
+ if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0)
+ return true
+ break
+ case 'boolean':
+ if (!value) return true
+ break
+ case 'number':
+ if (0 === value || Number.isNaN(value)) return true
+ break
+ case 'object':
+ if (null === value) return true
+ if (Object.keys(value).length === 0) return true
+ return false
+ }
+ return false
+}
+
+/**
+ * 是否json字符串
+ */
+export const isJsonString = (value: string): boolean => {
+ if (typeof value == 'string') {
+ try {
+ const obj = JSON.parse(value)
+ if (typeof obj == 'object' && obj) {
+ return true
+ } else {
+ return false
+ }
+ // eslint-disable-next-line unicorn/prefer-optional-catch-binding
+ } catch (e) {
+ return false
+ }
+ }
+ return false
+}
+
+/**
+ * 是否短信验证码
+ */
+export const isMessageCode = (value: string, len = 6): boolean => {
+ return new RegExp(`^\\d{${len}}$`).test(value)
+}
diff --git a/utils/share.js b/utils/share.js
new file mode 100644
index 0000000..0e9ef2c
--- /dev/null
+++ b/utils/share.js
@@ -0,0 +1,22 @@
+import { onShareAppMessage,onShareTimeline } from '@dcloudio/uni-app';
+
+const onShare = () => {
+ onShareAppMessage(() => {
+ return {
+ title:'123',
+ path:'/pages/loading/loading'
+ }
+ })
+
+ onShareTimeline(() => {
+ return {
+ title:'456',
+ path:'/pages/loading/loading'
+ }
+ });
+
+ return { onShareAppMessage,onShareTimeline }
+}
+
+
+export default onShare;
\ No newline at end of file