From fa8c21a1fc0258b34fce26387c426f1766fc4259 Mon Sep 17 00:00:00 2001 From: fz Date: Tue, 5 Sep 2023 16:14:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=A5=E4=BE=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 22 +- App.vue | 47 +- .../vuex-persistedstate/LICENSE => LICENSE | 2 +- README.md | 52 +- api/login.js | 59 + api/system/user.js | 41 + components/uni-section/uni-section.vue | 167 + config.js | 26 + index.html | 20 - main.js | 27 +- manifest.json | 51 +- .../@vue/devtools-api/lib/cjs/api/api.js | 2 - .../@vue/devtools-api/lib/cjs/api/app.js | 2 - .../devtools-api/lib/cjs/api/component.js | 2 - .../@vue/devtools-api/lib/cjs/api/context.js | 2 - .../@vue/devtools-api/lib/cjs/api/hooks.js | 2 - .../@vue/devtools-api/lib/cjs/api/index.js | 22 - .../@vue/devtools-api/lib/cjs/api/util.js | 2 - .../@vue/devtools-api/lib/cjs/const.js | 5 - node_modules/@vue/devtools-api/lib/cjs/env.js | 17 - .../@vue/devtools-api/lib/cjs/index.js | 44 - .../@vue/devtools-api/lib/cjs/plugin.js | 2 - .../@vue/devtools-api/lib/cjs/proxy.js | 111 - .../@vue/devtools-api/lib/cjs/time.js | 28 - .../@vue/devtools-api/lib/esm/api/api.d.ts | 108 - .../@vue/devtools-api/lib/esm/api/api.js | 1 - .../@vue/devtools-api/lib/esm/api/app.d.ts | 1 - .../@vue/devtools-api/lib/esm/api/app.js | 1 - .../devtools-api/lib/esm/api/component.d.ts | 78 - .../devtools-api/lib/esm/api/component.js | 1 - .../devtools-api/lib/esm/api/context.d.ts | 5 - .../@vue/devtools-api/lib/esm/api/context.js | 1 - .../@vue/devtools-api/lib/esm/api/hooks.d.ts | 180 - .../@vue/devtools-api/lib/esm/api/hooks.js | 1 - .../@vue/devtools-api/lib/esm/api/index.d.ts | 6 - .../@vue/devtools-api/lib/esm/api/index.js | 6 - .../@vue/devtools-api/lib/esm/api/util.d.ts | 4 - .../@vue/devtools-api/lib/esm/api/util.js | 1 - .../@vue/devtools-api/lib/esm/const.d.ts | 2 - .../@vue/devtools-api/lib/esm/const.js | 2 - .../@vue/devtools-api/lib/esm/env.d.ts | 15 - node_modules/@vue/devtools-api/lib/esm/env.js | 12 - .../@vue/devtools-api/lib/esm/index.d.ts | 18 - .../@vue/devtools-api/lib/esm/index.js | 26 - .../@vue/devtools-api/lib/esm/plugin.d.ts | 47 - .../@vue/devtools-api/lib/esm/plugin.js | 1 - .../@vue/devtools-api/lib/esm/proxy.d.ts | 20 - .../@vue/devtools-api/lib/esm/proxy.js | 107 - .../@vue/devtools-api/lib/esm/time.d.ts | 2 - .../@vue/devtools-api/lib/esm/time.js | 23 - node_modules/@vue/devtools-api/package.json | 67 - node_modules/deepmerge/.editorconfig | 7 - node_modules/deepmerge/.eslintcache | 1 - node_modules/deepmerge/changelog.md | 167 - node_modules/deepmerge/dist/cjs.js | 133 - node_modules/deepmerge/dist/umd.js | 139 - node_modules/deepmerge/index.d.ts | 20 - node_modules/deepmerge/index.js | 106 - node_modules/deepmerge/license.txt | 21 - node_modules/deepmerge/package.json | 70 - node_modules/deepmerge/readme.md | 264 - node_modules/deepmerge/rollup.config.js | 22 - node_modules/shvl/CHANGELOG.md | 4 - node_modules/shvl/LICENSE | 21 - node_modules/shvl/README.md | 86 - node_modules/shvl/dist/shvl.js | 2 - node_modules/shvl/dist/shvl.js.map | 1 - node_modules/shvl/dist/shvl.mjs | 2 - node_modules/shvl/dist/shvl.mjs.map | 1 - node_modules/shvl/dist/shvl.modern.js | 2 - node_modules/shvl/dist/shvl.modern.js.map | 1 - node_modules/shvl/dist/shvl.umd.js | 2 - node_modules/shvl/dist/shvl.umd.js.map | 1 - node_modules/shvl/index.d.ts | 2 - node_modules/shvl/index.js | 11 - node_modules/shvl/package.json | 86 - node_modules/vuex-persistedstate/CHANGELOG.md | 4 - node_modules/vuex-persistedstate/README.md | 326 - .../vuex-persistedstate/dist/index.d.ts | 23 - .../dist/vuex-persistedstate.es.js | 2 - .../dist/vuex-persistedstate.es.js.map | 1 - .../dist/vuex-persistedstate.js | 2 - .../dist/vuex-persistedstate.js.map | 1 - .../dist/vuex-persistedstate.modern.js | 2 - .../dist/vuex-persistedstate.modern.js.map | 1 - .../dist/vuex-persistedstate.umd.js | 2 - .../dist/vuex-persistedstate.umd.js.map | 1 - node_modules/vuex-persistedstate/package.json | 111 - node_modules/vuex-persistedstate/src/index.ts | 119 - node_modules/vuex/CHANGELOG.md | 617 - node_modules/vuex/LICENSE | 21 - node_modules/vuex/README.md | 59 - node_modules/vuex/dist/vuex.cjs.js | 1486 -- node_modules/vuex/dist/vuex.esm-browser.js | 1484 -- .../vuex/dist/vuex.esm-browser.prod.js | 1323 -- node_modules/vuex/dist/vuex.esm-bundler.js | 1485 -- node_modules/vuex/dist/vuex.global.js | 1514 -- node_modules/vuex/dist/vuex.global.prod.js | 6 - node_modules/vuex/dist/vuex.mjs | 32 - node_modules/vuex/package.json | 128 - node_modules/vuex/types/helpers.d.ts | 86 - node_modules/vuex/types/index.d.ts | 167 - node_modules/vuex/types/logger.d.ts | 20 - node_modules/vuex/types/vue.d.ts | 12 - package-lock.json | 38 - pages.json | 182 +- pages/common/textview/index.vue | 43 + pages/common/webview/index.vue | 34 + pages/communicate/communicate.vue | 31 - pages/home/index.vue | 186 - pages/index.vue | 43 + pages/login.vue | 202 + pages/login/login.vue | 226 - pages/message/message.vue | 24 - pages/mine/about/index.vue | 75 + pages/mine/avatar/index.vue | 631 + pages/mine/help/index.vue | 112 + pages/mine/index.vue | 198 + pages/mine/info/edit.vue | 127 + pages/mine/info/index.vue | 44 + pages/mine/pwd/index.vue | 85 + pages/mine/setting/index.vue | 78 + pages/my/my.vue | 61 - pages/register.vue | 196 + pages/work/index.vue | 183 + permission.js | 39 + plugins/auth.js | 60 + plugins/index.js | 14 + plugins/modal.js | 74 + plugins/tab.js | 30 + static/{home => }/chuizi.png | Bin static/communicate/kefu.png | Bin 10453 -> 0 bytes static/communicate/liuyan.png | Bin 6442 -> 0 bytes static/communicate/tousu.png | Bin 7172 -> 0 bytes static/communicate/zixun.png | Bin 10096 -> 0 bytes static/favicon.ico | Bin 0 -> 16958 bytes static/font/iconfont.css | 90 + static/font/iconfont.ttf | Bin 0 -> 6724 bytes static/goutong.png | Bin 4167 -> 0 bytes static/goutong1.png | Bin 4420 -> 0 bytes static/home.png | Bin 6042 -> 0 bytes static/home/jinzhan.png | Bin 4707 -> 0 bytes static/home/shenpi.png | Bin 6934 -> 0 bytes static/home/wangting.png | Bin 8908 -> 0 bytes static/home/zhengju.png | Bin 6876 -> 0 bytes static/homeselect.png | Bin 6406 -> 0 bytes static/images/banner/banner01.jpg | Bin 0 -> 39640 bytes static/images/banner/banner02.jpg | Bin 0 -> 37061 bytes static/images/banner/banner03.jpg | Bin 0 -> 38123 bytes static/images/profile.jpg | Bin 0 -> 81131 bytes static/images/tabbar/home.png | Bin 0 -> 3265 bytes static/images/tabbar/home_.png | Bin 0 -> 3229 bytes static/images/tabbar/mine.png | Bin 0 -> 4235 bytes static/images/tabbar/mine_.png | Bin 0 -> 4219 bytes static/images/tabbar/work.png | Bin 0 -> 4108 bytes static/images/tabbar/work_.png | Bin 0 -> 5008 bytes static/index.html | 20 + static/kefu.png | Bin 8138 -> 0 bytes static/kefu1.png | Bin 8609 -> 0 bytes static/logo.png | Bin 0 -> 3616 bytes static/logo200.png | Bin 0 -> 7995 bytes static/my.png | Bin 6903 -> 0 bytes static/my/my_bc.png | Bin 13593 -> 0 bytes static/my/user.png | Bin 4421 -> 0 bytes static/myselect.png | Bin 7458 -> 0 bytes static/scss/colorui.css | 5142 +++++++ static/scss/global.scss | 90 + static/scss/index.scss | 6 + static/zhongcai.png | Bin 359959 -> 0 bytes store/getters.js | 8 + store/index.js | 44 +- store/modules/area.js | 41 - store/modules/auth.js | 71 - store/modules/devList.js | 31 - store/modules/login.js | 40 - store/modules/message.js | 40 - store/modules/search.js | 34 - store/modules/user.js | 98 + store/modules/userInfoApp.js | 30 - uni.promisify.adaptor.js | 10 - uni.scss | 20 +- uni_modules/uni-badge/changelog.md | 33 + .../components/uni-badge/uni-badge.vue | 268 + uni_modules/uni-badge/package.json | 85 + uni_modules/uni-badge/readme.md | 10 + uni_modules/uni-breadcrumb/changelog.md | 6 + .../uni-breadcrumb-item.vue | 121 + .../uni-breadcrumb/uni-breadcrumb.vue | 41 + uni_modules/uni-breadcrumb/package.json | 88 + uni_modules/uni-breadcrumb/readme.md | 66 + uni_modules/uni-calendar/changelog.md | 26 + .../components/uni-calendar/calendar.js | 546 + .../components/uni-calendar/i18n/en.json | 12 + .../components/uni-calendar/i18n/index.js | 8 + .../components/uni-calendar/i18n/zh-Hans.json | 12 + .../components/uni-calendar/i18n/zh-Hant.json | 12 + .../uni-calendar/uni-calendar-item.vue | 187 + .../components/uni-calendar/uni-calendar.vue | 566 + .../components/uni-calendar/util.js | 360 + uni_modules/uni-calendar/package.json | 85 + uni_modules/uni-calendar/readme.md | 103 + uni_modules/uni-card/changelog.md | 26 + .../uni-card/components/uni-card/uni-card.vue | 272 + uni_modules/uni-card/package.json | 90 + uni_modules/uni-card/readme.md | 12 + uni_modules/uni-collapse/changelog.md | 36 + .../uni-collapse-item/uni-collapse-item.vue | 402 + .../components/uni-collapse/uni-collapse.vue | 147 + uni_modules/uni-collapse/package.json | 89 + uni_modules/uni-collapse/readme.md | 12 + uni_modules/uni-combox/changelog.md | 15 + .../components/uni-combox/uni-combox.vue | 294 + uni_modules/uni-combox/package.json | 90 + uni_modules/uni-combox/readme.md | 11 + uni_modules/uni-countdown/changelog.md | 24 + .../components/uni-countdown/i18n/en.json | 6 + .../components/uni-countdown/i18n/index.js | 8 + .../uni-countdown/i18n/zh-Hans.json | 6 + .../uni-countdown/i18n/zh-Hant.json | 6 + .../uni-countdown/uni-countdown.vue | 267 + uni_modules/uni-countdown/package.json | 86 + uni_modules/uni-countdown/readme.md | 10 + uni_modules/uni-data-checkbox/changelog.md | 45 + .../uni-data-checkbox/uni-data-checkbox.vue | 821 + uni_modules/uni-data-checkbox/package.json | 84 + uni_modules/uni-data-checkbox/readme.md | 18 + uni_modules/uni-data-picker/changelog.md | 75 + .../components/uni-data-picker/keypress.js | 45 + .../uni-data-picker/uni-data-picker.vue | 551 + .../uni-data-pickerview/uni-data-picker.js | 622 + .../uni-data-pickerview.vue | 323 + uni_modules/uni-data-picker/package.json | 90 + uni_modules/uni-data-picker/readme.md | 22 + uni_modules/uni-data-select/changelog.md | 35 + .../uni-data-select/uni-data-select.vue | 517 + uni_modules/uni-data-select/package.json | 85 + uni_modules/uni-data-select/readme.md | 8 + uni_modules/uni-dateformat/changelog.md | 10 + .../components/uni-dateformat/date-format.js | 200 + .../uni-dateformat/uni-dateformat.vue | 88 + uni_modules/uni-dateformat/package.json | 88 + uni_modules/uni-dateformat/readme.md | 11 + uni_modules/uni-datetime-picker/changelog.md | 133 + .../uni-datetime-picker/calendar-item.vue | 177 + .../uni-datetime-picker/calendar.vue | 928 ++ .../uni-datetime-picker/i18n/en.json | 22 + .../uni-datetime-picker/i18n/index.js | 8 + .../uni-datetime-picker/i18n/zh-Hans.json | 22 + .../uni-datetime-picker/i18n/zh-Hant.json | 22 + .../uni-datetime-picker/time-picker.vue | 934 ++ .../uni-datetime-picker.vue | 1026 ++ .../components/uni-datetime-picker/util.js | 403 + uni_modules/uni-datetime-picker/package.json | 87 + uni_modules/uni-datetime-picker/readme.md | 21 + uni_modules/uni-drawer/changelog.md | 13 + .../components/uni-drawer/keypress.js | 45 + .../components/uni-drawer/uni-drawer.vue | 183 + uni_modules/uni-drawer/package.json | 87 + uni_modules/uni-drawer/readme.md | 10 + uni_modules/uni-easyinput/changelog.md | 97 + .../components/uni-easyinput/common.js | 56 + .../uni-easyinput/uni-easyinput.vue | 657 + uni_modules/uni-easyinput/package.json | 87 + uni_modules/uni-easyinput/readme.md | 11 + uni_modules/uni-fab/changelog.md | 23 + .../uni-fab/components/uni-fab/uni-fab.vue | 491 + uni_modules/uni-fab/package.json | 84 + uni_modules/uni-fab/readme.md | 9 + uni_modules/uni-fav/changelog.md | 19 + .../uni-fav/components/uni-fav/i18n/en.json | 4 + .../uni-fav/components/uni-fav/i18n/index.js | 8 + .../components/uni-fav/i18n/zh-Hans.json | 4 + .../components/uni-fav/i18n/zh-Hant.json | 4 + .../uni-fav/components/uni-fav/uni-fav.vue | 161 + uni_modules/uni-fav/package.json | 89 + uni_modules/uni-fav/readme.md | 10 + uni_modules/uni-file-picker/changelog.md | 67 + .../uni-file-picker/choose-and-upload-file.js | 224 + .../uni-file-picker/uni-file-picker.vue | 667 + .../uni-file-picker/upload-file.vue | 325 + .../uni-file-picker/upload-image.vue | 292 + .../components/uni-file-picker/utils.js | 109 + uni_modules/uni-file-picker/package.json | 83 + uni_modules/uni-file-picker/readme.md | 11 + uni_modules/uni-forms/changelog.md | 92 + .../uni-forms-item/uni-forms-item.vue | 627 + .../components/uni-forms/uni-forms.vue | 397 + .../uni-forms/components/uni-forms/utils.js | 293 + .../components/uni-forms/validate.js | 486 + uni_modules/uni-forms/package.json | 88 + uni_modules/uni-forms/readme.md | 23 + uni_modules/uni-goods-nav/changelog.md | 18 + .../components/uni-goods-nav/i18n/en.json | 6 + .../components/uni-goods-nav/i18n/index.js | 8 + .../uni-goods-nav/i18n/zh-Hans.json | 6 + .../uni-goods-nav/i18n/zh-Hant.json | 6 + .../uni-goods-nav/uni-goods-nav.vue | 229 + uni_modules/uni-goods-nav/package.json | 88 + uni_modules/uni-goods-nav/readme.md | 10 + uni_modules/uni-grid/changelog.md | 13 + .../uni-grid-item/uni-grid-item.vue | 127 + .../uni-grid/components/uni-grid/uni-grid.vue | 142 + uni_modules/uni-grid/package.json | 86 + uni_modules/uni-grid/readme.md | 11 + uni_modules/uni-group/changelog.md | 16 + .../components/uni-group/uni-group.vue | 134 + uni_modules/uni-group/package.json | 87 + uni_modules/uni-group/readme.md | 9 + uni_modules/uni-indexed-list/changelog.md | 17 + .../uni-indexed-list-item.vue | 144 + .../uni-indexed-list/uni-indexed-list.vue | 367 + uni_modules/uni-indexed-list/package.json | 89 + uni_modules/uni-indexed-list/readme.md | 11 + uni_modules/uni-link/changelog.md | 17 + .../uni-link/components/uni-link/uni-link.vue | 128 + uni_modules/uni-link/package.json | 87 + uni_modules/uni-link/readme.md | 11 + uni_modules/uni-load-more/changelog.md | 19 + .../components/uni-load-more/i18n/en.json | 5 + .../components/uni-load-more/i18n/index.js | 8 + .../uni-load-more/i18n/zh-Hans.json | 5 + .../uni-load-more/i18n/zh-Hant.json | 5 + .../uni-load-more/uni-load-more.vue | 399 + uni_modules/uni-load-more/package.json | 86 + uni_modules/uni-load-more/readme.md | 14 + uni_modules/uni-nav-bar/changelog.md | 51 + .../components/uni-nav-bar/uni-nav-bar.vue | 357 + .../components/uni-nav-bar/uni-status-bar.vue | 24 + uni_modules/uni-nav-bar/package.json | 86 + uni_modules/uni-nav-bar/readme.md | 15 + uni_modules/uni-notice-bar/changelog.md | 18 + .../uni-notice-bar/uni-notice-bar.vue | 426 + uni_modules/uni-notice-bar/package.json | 87 + uni_modules/uni-notice-bar/readme.md | 13 + uni_modules/uni-number-box/changelog.md | 25 + .../uni-number-box/uni-number-box.vue | 221 + uni_modules/uni-number-box/package.json | 85 + uni_modules/uni-number-box/readme.md | 13 + uni_modules/uni-pagination/changelog.md | 27 + .../components/uni-pagination/i18n/en.json | 5 + .../components/uni-pagination/i18n/es.json | 5 + .../components/uni-pagination/i18n/fr.json | 5 + .../components/uni-pagination/i18n/index.js | 12 + .../uni-pagination/i18n/zh-Hans.json | 5 + .../uni-pagination/i18n/zh-Hant.json | 5 + .../uni-pagination/uni-pagination.vue | 465 + uni_modules/uni-pagination/package.json | 83 + uni_modules/uni-pagination/readme.md | 11 + uni_modules/uni-popup/changelog.md | 68 + .../components/uni-popup-dialog/keypress.js | 45 + .../uni-popup-dialog/uni-popup-dialog.vue | 275 + .../uni-popup-message/uni-popup-message.vue | 143 + .../uni-popup-share/uni-popup-share.vue | 187 + .../components/uni-popup/i18n/en.json | 7 + .../components/uni-popup/i18n/index.js | 8 + .../components/uni-popup/i18n/zh-Hans.json | 7 + .../components/uni-popup/i18n/zh-Hant.json | 7 + .../components/uni-popup/keypress.js | 45 + .../uni-popup/components/uni-popup/popup.js | 26 + .../components/uni-popup/uni-popup.vue | 473 + uni_modules/uni-popup/package.json | 87 + uni_modules/uni-popup/readme.md | 17 + uni_modules/uni-rate/changelog.md | 25 + .../uni-rate/components/uni-rate/uni-rate.vue | 365 + uni_modules/uni-rate/package.json | 88 + uni_modules/uni-rate/readme.md | 12 + uni_modules/uni-row/changelog.md | 10 + .../uni-row/components/uni-col/uni-col.vue | 317 + .../uni-row/components/uni-row/uni-row.vue | 190 + uni_modules/uni-row/package.json | 87 + uni_modules/uni-row/readme.md | 10 + uni_modules/uni-search-bar/changelog.md | 33 + .../components/uni-search-bar/i18n/en.json | 4 + .../components/uni-search-bar/i18n/index.js | 8 + .../uni-search-bar/i18n/zh-Hans.json | 4 + .../uni-search-bar/i18n/zh-Hant.json | 4 + .../uni-search-bar/uni-search-bar.vue | 298 + uni_modules/uni-search-bar/package.json | 89 + uni_modules/uni-search-bar/readme.md | 14 + .../uni-segmented-control/changelog.md | 9 + .../uni-segmented-control.vue | 145 + .../uni-segmented-control/package.json | 87 + uni_modules/uni-segmented-control/readme.md | 13 + uni_modules/uni-steps/changelog.md | 16 + .../components/uni-steps/uni-steps.vue | 269 + uni_modules/uni-steps/package.json | 89 + uni_modules/uni-steps/readme.md | 13 + uni_modules/uni-swipe-action/changelog.md | 43 + .../uni-swipe-action-item/bindingx.js | 302 + .../components/uni-swipe-action-item/isPC.js | 12 + .../uni-swipe-action-item/mpalipay.js | 195 + .../uni-swipe-action-item/mpother.js | 260 + .../components/uni-swipe-action-item/mpwxs.js | 84 + .../uni-swipe-action-item/render.js | 270 + .../uni-swipe-action-item.vue | 347 + .../components/uni-swipe-action-item/wx.wxs | 341 + .../uni-swipe-action/uni-swipe-action.vue | 60 + uni_modules/uni-swipe-action/package.json | 87 + uni_modules/uni-swipe-action/readme.md | 11 + uni_modules/uni-swiper-dot/changelog.md | 12 + .../uni-swiper-dot/uni-swiper-dot.vue | 218 + uni_modules/uni-swiper-dot/package.json | 87 + uni_modules/uni-swiper-dot/readme.md | 11 + uni_modules/uni-table/changelog.md | 27 + .../components/uni-table/uni-table.vue | 455 + .../components/uni-tbody/uni-tbody.vue | 29 + .../uni-table/components/uni-td/uni-td.vue | 90 + .../components/uni-th/filter-dropdown.vue | 511 + .../uni-table/components/uni-th/uni-th.vue | 285 + .../components/uni-thead/uni-thead.vue | 129 + .../components/uni-tr/table-checkbox.vue | 179 + .../uni-table/components/uni-tr/uni-tr.vue | 171 + uni_modules/uni-table/i18n/en.json | 9 + uni_modules/uni-table/i18n/es.json | 9 + uni_modules/uni-table/i18n/fr.json | 9 + uni_modules/uni-table/i18n/index.js | 12 + uni_modules/uni-table/i18n/zh-Hans.json | 9 + uni_modules/uni-table/i18n/zh-Hant.json | 9 + uni_modules/uni-table/package.json | 83 + uni_modules/uni-table/readme.md | 13 + uni_modules/uni-tag/changelog.md | 21 + .../uni-tag/components/uni-tag/uni-tag.vue | 252 + uni_modules/uni-tag/package.json | 87 + uni_modules/uni-tag/readme.md | 13 + uni_modules/uni-title/changelog.md | 10 + .../components/uni-title/uni-title.vue | 171 + uni_modules/uni-title/package.json | 88 + uni_modules/uni-title/readme.md | 14 + uni_modules/uni-tooltip/changelog.md | 10 + .../components/uni-tooltip/uni-tooltip.vue | 68 + uni_modules/uni-tooltip/package.json | 88 + uni_modules/uni-tooltip/readme.md | 8 + uni_modules/uni-transition/changelog.md | 20 + .../uni-transition/createAnimation.js | 131 + .../uni-transition/uni-transition.vue | 281 + uni_modules/uni-transition/package.json | 87 + uni_modules/uni-transition/readme.md | 11 + .../.sourcemap/mp-weixin/common/main.js.map | 2 +- .../mp-weixin/common/runtime.js.map | 2 +- .../.sourcemap/mp-weixin/common/vendor.js.map | 2 +- .../pages/communicate/communicate.js.map | 1 - .../mp-weixin/pages/home/index.js.map | 1 - .../mp-weixin/pages/login/login.js.map | 1 - .../mp-weixin/pages/message/message.js.map | 1 - .../.sourcemap/mp-weixin/pages/my/my.js.map | 1 - .../components/uni-icons/uni-icons.js.map | 2 +- .../uni-list-item/uni-list-item.js.map | 2 +- .../components/uni-list/uni-list.js.map | 2 +- unpackage/dist/dev/mp-weixin/app.json | 55 +- unpackage/dist/dev/mp-weixin/common/main.js | 149 - unpackage/dist/dev/mp-weixin/common/main.wxss | 21 - .../dist/dev/mp-weixin/common/runtime.js | 273 - unpackage/dist/dev/mp-weixin/common/vendor.js | 12606 ---------------- .../pages/communicate/communicate.js | 194 - .../pages/communicate/communicate.json | 10 - .../pages/communicate/communicate.wxml | 1 - .../dist/dev/mp-weixin/pages/home/index.js | 293 - .../dist/dev/mp-weixin/pages/home/index.json | 6 - .../dist/dev/mp-weixin/pages/home/index.wxml | 1 - .../dist/dev/mp-weixin/pages/home/index.wxss | 82 - .../dev/mp-weixin/pages/message/message.js | 190 - .../dev/mp-weixin/pages/message/message.json | 7 - .../dev/mp-weixin/pages/message/message.wxml | 1 - .../dev/mp-weixin/pages/message/message.wxss | 5 - unpackage/dist/dev/mp-weixin/pages/my/my.js | 231 - unpackage/dist/dev/mp-weixin/pages/my/my.json | 10 - unpackage/dist/dev/mp-weixin/pages/my/my.wxml | 1 - unpackage/dist/dev/mp-weixin/pages/my/my.wxss | 24 - .../dist/dev/mp-weixin/project.config.json | 6 +- .../dev/mp-weixin/project.private.config.json | 2 +- .../dev/mp-weixin/static/communicate/kefu.png | Bin 10453 -> 0 bytes .../mp-weixin/static/communicate/liuyan.png | Bin 6442 -> 0 bytes .../mp-weixin/static/communicate/tousu.png | Bin 7172 -> 0 bytes .../mp-weixin/static/communicate/zixun.png | Bin 10096 -> 0 bytes .../dist/dev/mp-weixin/static/goutong.png | Bin 4167 -> 0 bytes .../dist/dev/mp-weixin/static/goutong1.png | Bin 4420 -> 0 bytes unpackage/dist/dev/mp-weixin/static/home.png | Bin 6042 -> 0 bytes .../dist/dev/mp-weixin/static/home/chuizi.png | Bin 11548 -> 0 bytes .../dev/mp-weixin/static/home/jinzhan.png | Bin 4707 -> 0 bytes .../dist/dev/mp-weixin/static/home/shenpi.png | Bin 6934 -> 0 bytes .../dev/mp-weixin/static/home/wangting.png | Bin 8908 -> 0 bytes .../dev/mp-weixin/static/home/zhengju.png | Bin 6876 -> 0 bytes .../dist/dev/mp-weixin/static/homeselect.png | Bin 6406 -> 0 bytes unpackage/dist/dev/mp-weixin/static/kefu.png | Bin 8138 -> 0 bytes unpackage/dist/dev/mp-weixin/static/kefu1.png | Bin 8609 -> 0 bytes unpackage/dist/dev/mp-weixin/static/my.png | Bin 6903 -> 0 bytes .../dist/dev/mp-weixin/static/my/my_bc.png | Bin 13593 -> 0 bytes .../dist/dev/mp-weixin/static/my/user.png | Bin 4421 -> 0 bytes .../dist/dev/mp-weixin/static/myselect.png | Bin 7458 -> 0 bytes .../dist/dev/mp-weixin/static/zhongcai.png | Bin 359959 -> 0 bytes .../components/uni-icons/uni-icons.js | 240 - .../components/uni-icons/uni-icons.json | 4 - .../components/uni-icons/uni-icons.wxml | 1 - .../components/uni-icons/uni-icons.wxss | 534 - .../components/uni-list-item/uni-list-item.js | 517 - .../uni-list-item/uni-list-item.json | 6 - .../uni-list-item/uni-list-item.wxml | 1 - .../uni-list-item/uni-list-item.wxss | 157 - .../uni-list/components/uni-list/uni-list.js | 234 - .../components/uni-list/uni-list.json | 4 - .../components/uni-list/uni-list.wxml | 1 - .../components/uni-list/uni-list.wxss | 58 - utils/auth.js | 13 + utils/common.js | 54 + utils/constant.js | 8 + utils/errorCode.js | 6 + utils/permission.js | 51 + utils/request.js | 73 + utils/storage.js | 32 + utils/upload.js | 70 + 510 files changed, 40385 insertions(+), 28169 deletions(-) rename node_modules/vuex-persistedstate/LICENSE => LICENSE (94%) create mode 100644 api/login.js create mode 100644 api/system/user.js create mode 100644 components/uni-section/uni-section.vue create mode 100644 config.js delete mode 100644 index.html delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/api/api.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/api/app.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/api/component.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/api/context.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/api/hooks.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/api/index.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/api/util.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/const.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/env.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/index.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/plugin.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/proxy.js delete mode 100644 node_modules/@vue/devtools-api/lib/cjs/time.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/api.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/api.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/app.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/app.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/component.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/component.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/context.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/context.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/hooks.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/index.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/index.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/util.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/api/util.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/const.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/const.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/env.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/env.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/index.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/index.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/plugin.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/plugin.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/proxy.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/proxy.js delete mode 100644 node_modules/@vue/devtools-api/lib/esm/time.d.ts delete mode 100644 node_modules/@vue/devtools-api/lib/esm/time.js delete mode 100644 node_modules/@vue/devtools-api/package.json delete mode 100644 node_modules/deepmerge/.editorconfig delete mode 100644 node_modules/deepmerge/.eslintcache delete mode 100644 node_modules/deepmerge/changelog.md delete mode 100644 node_modules/deepmerge/dist/cjs.js delete mode 100644 node_modules/deepmerge/dist/umd.js delete mode 100644 node_modules/deepmerge/index.d.ts delete mode 100644 node_modules/deepmerge/index.js delete mode 100644 node_modules/deepmerge/license.txt delete mode 100644 node_modules/deepmerge/package.json delete mode 100644 node_modules/deepmerge/readme.md delete mode 100644 node_modules/deepmerge/rollup.config.js delete mode 100644 node_modules/shvl/CHANGELOG.md delete mode 100644 node_modules/shvl/LICENSE delete mode 100644 node_modules/shvl/README.md delete mode 100644 node_modules/shvl/dist/shvl.js delete mode 100644 node_modules/shvl/dist/shvl.js.map delete mode 100644 node_modules/shvl/dist/shvl.mjs delete mode 100644 node_modules/shvl/dist/shvl.mjs.map delete mode 100644 node_modules/shvl/dist/shvl.modern.js delete mode 100644 node_modules/shvl/dist/shvl.modern.js.map delete mode 100644 node_modules/shvl/dist/shvl.umd.js delete mode 100644 node_modules/shvl/dist/shvl.umd.js.map delete mode 100644 node_modules/shvl/index.d.ts delete mode 100644 node_modules/shvl/index.js delete mode 100644 node_modules/shvl/package.json delete mode 100644 node_modules/vuex-persistedstate/CHANGELOG.md delete mode 100644 node_modules/vuex-persistedstate/README.md delete mode 100644 node_modules/vuex-persistedstate/dist/index.d.ts delete mode 100644 node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js delete mode 100644 node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js.map delete mode 100644 node_modules/vuex-persistedstate/dist/vuex-persistedstate.js delete mode 100644 node_modules/vuex-persistedstate/dist/vuex-persistedstate.js.map delete mode 100644 node_modules/vuex-persistedstate/dist/vuex-persistedstate.modern.js delete mode 100644 node_modules/vuex-persistedstate/dist/vuex-persistedstate.modern.js.map delete mode 100644 node_modules/vuex-persistedstate/dist/vuex-persistedstate.umd.js delete mode 100644 node_modules/vuex-persistedstate/dist/vuex-persistedstate.umd.js.map delete mode 100644 node_modules/vuex-persistedstate/package.json delete mode 100644 node_modules/vuex-persistedstate/src/index.ts delete mode 100644 node_modules/vuex/CHANGELOG.md delete mode 100644 node_modules/vuex/LICENSE delete mode 100644 node_modules/vuex/README.md delete mode 100644 node_modules/vuex/dist/vuex.cjs.js delete mode 100644 node_modules/vuex/dist/vuex.esm-browser.js delete mode 100644 node_modules/vuex/dist/vuex.esm-browser.prod.js delete mode 100644 node_modules/vuex/dist/vuex.esm-bundler.js delete mode 100644 node_modules/vuex/dist/vuex.global.js delete mode 100644 node_modules/vuex/dist/vuex.global.prod.js delete mode 100644 node_modules/vuex/dist/vuex.mjs delete mode 100644 node_modules/vuex/package.json delete mode 100644 node_modules/vuex/types/helpers.d.ts delete mode 100644 node_modules/vuex/types/index.d.ts delete mode 100644 node_modules/vuex/types/logger.d.ts delete mode 100644 node_modules/vuex/types/vue.d.ts delete mode 100644 package-lock.json create mode 100644 pages/common/textview/index.vue create mode 100644 pages/common/webview/index.vue delete mode 100644 pages/communicate/communicate.vue delete mode 100644 pages/home/index.vue create mode 100644 pages/index.vue create mode 100644 pages/login.vue delete mode 100644 pages/login/login.vue delete mode 100644 pages/message/message.vue create mode 100644 pages/mine/about/index.vue create mode 100644 pages/mine/avatar/index.vue create mode 100644 pages/mine/help/index.vue create mode 100644 pages/mine/index.vue create mode 100644 pages/mine/info/edit.vue create mode 100644 pages/mine/info/index.vue create mode 100644 pages/mine/pwd/index.vue create mode 100644 pages/mine/setting/index.vue delete mode 100644 pages/my/my.vue create mode 100644 pages/register.vue create mode 100644 pages/work/index.vue create mode 100644 permission.js create mode 100644 plugins/auth.js create mode 100644 plugins/index.js create mode 100644 plugins/modal.js create mode 100644 plugins/tab.js rename static/{home => }/chuizi.png (100%) delete mode 100644 static/communicate/kefu.png delete mode 100644 static/communicate/liuyan.png delete mode 100644 static/communicate/tousu.png delete mode 100644 static/communicate/zixun.png create mode 100644 static/favicon.ico create mode 100644 static/font/iconfont.css create mode 100644 static/font/iconfont.ttf delete mode 100644 static/goutong.png delete mode 100644 static/goutong1.png delete mode 100644 static/home.png delete mode 100644 static/home/jinzhan.png delete mode 100644 static/home/shenpi.png delete mode 100644 static/home/wangting.png delete mode 100644 static/home/zhengju.png delete mode 100644 static/homeselect.png create mode 100644 static/images/banner/banner01.jpg create mode 100644 static/images/banner/banner02.jpg create mode 100644 static/images/banner/banner03.jpg create mode 100644 static/images/profile.jpg create mode 100644 static/images/tabbar/home.png create mode 100644 static/images/tabbar/home_.png create mode 100644 static/images/tabbar/mine.png create mode 100644 static/images/tabbar/mine_.png create mode 100644 static/images/tabbar/work.png create mode 100644 static/images/tabbar/work_.png create mode 100644 static/index.html delete mode 100644 static/kefu.png delete mode 100644 static/kefu1.png create mode 100644 static/logo.png create mode 100644 static/logo200.png delete mode 100644 static/my.png delete mode 100644 static/my/my_bc.png delete mode 100644 static/my/user.png delete mode 100644 static/myselect.png create mode 100644 static/scss/colorui.css create mode 100644 static/scss/global.scss create mode 100644 static/scss/index.scss delete mode 100644 static/zhongcai.png create mode 100644 store/getters.js delete mode 100644 store/modules/area.js delete mode 100644 store/modules/auth.js delete mode 100644 store/modules/devList.js delete mode 100644 store/modules/login.js delete mode 100644 store/modules/message.js delete mode 100644 store/modules/search.js create mode 100644 store/modules/user.js delete mode 100644 store/modules/userInfoApp.js delete mode 100644 uni.promisify.adaptor.js create mode 100644 uni_modules/uni-badge/changelog.md create mode 100644 uni_modules/uni-badge/components/uni-badge/uni-badge.vue create mode 100644 uni_modules/uni-badge/package.json create mode 100644 uni_modules/uni-badge/readme.md create mode 100644 uni_modules/uni-breadcrumb/changelog.md create mode 100644 uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue create mode 100644 uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue create mode 100644 uni_modules/uni-breadcrumb/package.json create mode 100644 uni_modules/uni-breadcrumb/readme.md create mode 100644 uni_modules/uni-calendar/changelog.md create mode 100644 uni_modules/uni-calendar/components/uni-calendar/calendar.js create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/en.json create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/index.js create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json create mode 100644 uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue create mode 100644 uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue create mode 100644 uni_modules/uni-calendar/components/uni-calendar/util.js create mode 100644 uni_modules/uni-calendar/package.json create mode 100644 uni_modules/uni-calendar/readme.md create mode 100644 uni_modules/uni-card/changelog.md create mode 100644 uni_modules/uni-card/components/uni-card/uni-card.vue create mode 100644 uni_modules/uni-card/package.json create mode 100644 uni_modules/uni-card/readme.md create mode 100644 uni_modules/uni-collapse/changelog.md create mode 100644 uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue create mode 100644 uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue create mode 100644 uni_modules/uni-collapse/package.json create mode 100644 uni_modules/uni-collapse/readme.md create mode 100644 uni_modules/uni-combox/changelog.md create mode 100644 uni_modules/uni-combox/components/uni-combox/uni-combox.vue create mode 100644 uni_modules/uni-combox/package.json create mode 100644 uni_modules/uni-combox/readme.md create mode 100644 uni_modules/uni-countdown/changelog.md create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/en.json create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/index.js create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json create mode 100644 uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue create mode 100644 uni_modules/uni-countdown/package.json create mode 100644 uni_modules/uni-countdown/readme.md create mode 100644 uni_modules/uni-data-checkbox/changelog.md create mode 100644 uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue create mode 100644 uni_modules/uni-data-checkbox/package.json create mode 100644 uni_modules/uni-data-checkbox/readme.md create mode 100644 uni_modules/uni-data-picker/changelog.md create mode 100644 uni_modules/uni-data-picker/components/uni-data-picker/keypress.js create mode 100644 uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue create mode 100644 uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js create mode 100644 uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue create mode 100644 uni_modules/uni-data-picker/package.json create mode 100644 uni_modules/uni-data-picker/readme.md create mode 100644 uni_modules/uni-data-select/changelog.md create mode 100644 uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue create mode 100644 uni_modules/uni-data-select/package.json create mode 100644 uni_modules/uni-data-select/readme.md create mode 100644 uni_modules/uni-dateformat/changelog.md create mode 100644 uni_modules/uni-dateformat/components/uni-dateformat/date-format.js create mode 100644 uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue create mode 100644 uni_modules/uni-dateformat/package.json create mode 100644 uni_modules/uni-dateformat/readme.md create mode 100644 uni_modules/uni-datetime-picker/changelog.md create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js create mode 100644 uni_modules/uni-datetime-picker/package.json create mode 100644 uni_modules/uni-datetime-picker/readme.md create mode 100644 uni_modules/uni-drawer/changelog.md create mode 100644 uni_modules/uni-drawer/components/uni-drawer/keypress.js create mode 100644 uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue create mode 100644 uni_modules/uni-drawer/package.json create mode 100644 uni_modules/uni-drawer/readme.md create mode 100644 uni_modules/uni-easyinput/changelog.md create mode 100644 uni_modules/uni-easyinput/components/uni-easyinput/common.js create mode 100644 uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue create mode 100644 uni_modules/uni-easyinput/package.json create mode 100644 uni_modules/uni-easyinput/readme.md create mode 100644 uni_modules/uni-fab/changelog.md create mode 100644 uni_modules/uni-fab/components/uni-fab/uni-fab.vue create mode 100644 uni_modules/uni-fab/package.json create mode 100644 uni_modules/uni-fab/readme.md create mode 100644 uni_modules/uni-fav/changelog.md create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/en.json create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/index.js create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json create mode 100644 uni_modules/uni-fav/components/uni-fav/uni-fav.vue create mode 100644 uni_modules/uni-fav/package.json create mode 100644 uni_modules/uni-fav/readme.md create mode 100644 uni_modules/uni-file-picker/changelog.md create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/utils.js create mode 100644 uni_modules/uni-file-picker/package.json create mode 100644 uni_modules/uni-file-picker/readme.md create mode 100644 uni_modules/uni-forms/changelog.md create mode 100644 uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue create mode 100644 uni_modules/uni-forms/components/uni-forms/uni-forms.vue create mode 100644 uni_modules/uni-forms/components/uni-forms/utils.js create mode 100644 uni_modules/uni-forms/components/uni-forms/validate.js create mode 100644 uni_modules/uni-forms/package.json create mode 100644 uni_modules/uni-forms/readme.md create mode 100644 uni_modules/uni-goods-nav/changelog.md create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue create mode 100644 uni_modules/uni-goods-nav/package.json create mode 100644 uni_modules/uni-goods-nav/readme.md create mode 100644 uni_modules/uni-grid/changelog.md create mode 100644 uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue create mode 100644 uni_modules/uni-grid/components/uni-grid/uni-grid.vue create mode 100644 uni_modules/uni-grid/package.json create mode 100644 uni_modules/uni-grid/readme.md create mode 100644 uni_modules/uni-group/changelog.md create mode 100644 uni_modules/uni-group/components/uni-group/uni-group.vue create mode 100644 uni_modules/uni-group/package.json create mode 100644 uni_modules/uni-group/readme.md create mode 100644 uni_modules/uni-indexed-list/changelog.md create mode 100644 uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue create mode 100644 uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue create mode 100644 uni_modules/uni-indexed-list/package.json create mode 100644 uni_modules/uni-indexed-list/readme.md create mode 100644 uni_modules/uni-link/changelog.md create mode 100644 uni_modules/uni-link/components/uni-link/uni-link.vue create mode 100644 uni_modules/uni-link/package.json create mode 100644 uni_modules/uni-link/readme.md create mode 100644 uni_modules/uni-load-more/changelog.md create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/en.json create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/index.js create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json create mode 100644 uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue create mode 100644 uni_modules/uni-load-more/package.json create mode 100644 uni_modules/uni-load-more/readme.md create mode 100644 uni_modules/uni-nav-bar/changelog.md create mode 100644 uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue create mode 100644 uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue create mode 100644 uni_modules/uni-nav-bar/package.json create mode 100644 uni_modules/uni-nav-bar/readme.md create mode 100644 uni_modules/uni-notice-bar/changelog.md create mode 100644 uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue create mode 100644 uni_modules/uni-notice-bar/package.json create mode 100644 uni_modules/uni-notice-bar/readme.md create mode 100644 uni_modules/uni-number-box/changelog.md create mode 100644 uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue create mode 100644 uni_modules/uni-number-box/package.json create mode 100644 uni_modules/uni-number-box/readme.md create mode 100644 uni_modules/uni-pagination/changelog.md create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/en.json create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/es.json create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/index.js create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json create mode 100644 uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue create mode 100644 uni_modules/uni-pagination/package.json create mode 100644 uni_modules/uni-pagination/readme.md create mode 100644 uni_modules/uni-popup/changelog.md create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/keypress.js create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue create mode 100644 uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue create mode 100644 uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/en.json create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/index.js create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json create mode 100644 uni_modules/uni-popup/components/uni-popup/keypress.js create mode 100644 uni_modules/uni-popup/components/uni-popup/popup.js create mode 100644 uni_modules/uni-popup/components/uni-popup/uni-popup.vue create mode 100644 uni_modules/uni-popup/package.json create mode 100644 uni_modules/uni-popup/readme.md create mode 100644 uni_modules/uni-rate/changelog.md create mode 100644 uni_modules/uni-rate/components/uni-rate/uni-rate.vue create mode 100644 uni_modules/uni-rate/package.json create mode 100644 uni_modules/uni-rate/readme.md create mode 100644 uni_modules/uni-row/changelog.md create mode 100644 uni_modules/uni-row/components/uni-col/uni-col.vue create mode 100644 uni_modules/uni-row/components/uni-row/uni-row.vue create mode 100644 uni_modules/uni-row/package.json create mode 100644 uni_modules/uni-row/readme.md create mode 100644 uni_modules/uni-search-bar/changelog.md create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue create mode 100644 uni_modules/uni-search-bar/package.json create mode 100644 uni_modules/uni-search-bar/readme.md create mode 100644 uni_modules/uni-segmented-control/changelog.md create mode 100644 uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue create mode 100644 uni_modules/uni-segmented-control/package.json create mode 100644 uni_modules/uni-segmented-control/readme.md create mode 100644 uni_modules/uni-steps/changelog.md create mode 100644 uni_modules/uni-steps/components/uni-steps/uni-steps.vue create mode 100644 uni_modules/uni-steps/package.json create mode 100644 uni_modules/uni-steps/readme.md create mode 100644 uni_modules/uni-swipe-action/changelog.md create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue create mode 100644 uni_modules/uni-swipe-action/package.json create mode 100644 uni_modules/uni-swipe-action/readme.md create mode 100644 uni_modules/uni-swiper-dot/changelog.md create mode 100644 uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue create mode 100644 uni_modules/uni-swiper-dot/package.json create mode 100644 uni_modules/uni-swiper-dot/readme.md create mode 100644 uni_modules/uni-table/changelog.md create mode 100644 uni_modules/uni-table/components/uni-table/uni-table.vue create mode 100644 uni_modules/uni-table/components/uni-tbody/uni-tbody.vue create mode 100644 uni_modules/uni-table/components/uni-td/uni-td.vue create mode 100644 uni_modules/uni-table/components/uni-th/filter-dropdown.vue create mode 100644 uni_modules/uni-table/components/uni-th/uni-th.vue create mode 100644 uni_modules/uni-table/components/uni-thead/uni-thead.vue create mode 100644 uni_modules/uni-table/components/uni-tr/table-checkbox.vue create mode 100644 uni_modules/uni-table/components/uni-tr/uni-tr.vue create mode 100644 uni_modules/uni-table/i18n/en.json create mode 100644 uni_modules/uni-table/i18n/es.json create mode 100644 uni_modules/uni-table/i18n/fr.json create mode 100644 uni_modules/uni-table/i18n/index.js create mode 100644 uni_modules/uni-table/i18n/zh-Hans.json create mode 100644 uni_modules/uni-table/i18n/zh-Hant.json create mode 100644 uni_modules/uni-table/package.json create mode 100644 uni_modules/uni-table/readme.md create mode 100644 uni_modules/uni-tag/changelog.md create mode 100644 uni_modules/uni-tag/components/uni-tag/uni-tag.vue create mode 100644 uni_modules/uni-tag/package.json create mode 100644 uni_modules/uni-tag/readme.md create mode 100644 uni_modules/uni-title/changelog.md create mode 100644 uni_modules/uni-title/components/uni-title/uni-title.vue create mode 100644 uni_modules/uni-title/package.json create mode 100644 uni_modules/uni-title/readme.md create mode 100644 uni_modules/uni-tooltip/changelog.md create mode 100644 uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue create mode 100644 uni_modules/uni-tooltip/package.json create mode 100644 uni_modules/uni-tooltip/readme.md create mode 100644 uni_modules/uni-transition/changelog.md create mode 100644 uni_modules/uni-transition/components/uni-transition/createAnimation.js create mode 100644 uni_modules/uni-transition/components/uni-transition/uni-transition.vue create mode 100644 uni_modules/uni-transition/package.json create mode 100644 uni_modules/uni-transition/readme.md delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/communicate/communicate.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/index.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/login.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/message/message.js.map delete mode 100644 unpackage/dist/dev/.sourcemap/mp-weixin/pages/my/my.js.map delete mode 100644 unpackage/dist/dev/mp-weixin/common/main.js delete mode 100644 unpackage/dist/dev/mp-weixin/common/main.wxss delete mode 100644 unpackage/dist/dev/mp-weixin/common/runtime.js delete mode 100644 unpackage/dist/dev/mp-weixin/common/vendor.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/communicate/communicate.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/communicate/communicate.json delete mode 100644 unpackage/dist/dev/mp-weixin/pages/communicate/communicate.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/pages/home/index.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/home/index.json delete mode 100644 unpackage/dist/dev/mp-weixin/pages/home/index.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/pages/home/index.wxss delete mode 100644 unpackage/dist/dev/mp-weixin/pages/message/message.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/message/message.json delete mode 100644 unpackage/dist/dev/mp-weixin/pages/message/message.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/pages/message/message.wxss delete mode 100644 unpackage/dist/dev/mp-weixin/pages/my/my.js delete mode 100644 unpackage/dist/dev/mp-weixin/pages/my/my.json delete mode 100644 unpackage/dist/dev/mp-weixin/pages/my/my.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/pages/my/my.wxss delete mode 100644 unpackage/dist/dev/mp-weixin/static/communicate/kefu.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/communicate/liuyan.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/communicate/tousu.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/communicate/zixun.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/goutong.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/goutong1.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/home.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/home/chuizi.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/home/jinzhan.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/home/shenpi.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/home/wangting.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/home/zhengju.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/homeselect.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/kefu.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/kefu1.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/my.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/my/my_bc.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/my/user.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/myselect.png delete mode 100644 unpackage/dist/dev/mp-weixin/static/zhongcai.png delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.json delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.wxss delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-list/components/uni-list-item/uni-list-item.js delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-list/components/uni-list-item/uni-list-item.json delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-list/components/uni-list-item/uni-list-item.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-list/components/uni-list-item/uni-list-item.wxss delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-list/components/uni-list/uni-list.js delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-list/components/uni-list/uni-list.json delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-list/components/uni-list/uni-list.wxml delete mode 100644 unpackage/dist/dev/mp-weixin/uni_modules/uni-list/components/uni-list/uni-list.wxss create mode 100644 utils/auth.js create mode 100644 utils/common.js create mode 100644 utils/constant.js create mode 100644 utils/errorCode.js create mode 100644 utils/permission.js create mode 100644 utils/request.js create mode 100644 utils/storage.js create mode 100644 utils/upload.js diff --git a/.gitignore b/.gitignore index 51862a5..59c9154 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,16 @@ -unpackage/cache -unpackage/dist -.hbuilderx -node_modules -test/ -.DS_Store +###################################################################### +# Build Tools + +/unpackage/* +/node_modules/* + +###################################################################### +# Development Tools + +/.idea/* +/.vscode/* +/.hbuilderx/* + +package-lock.json +yarn.lock + diff --git a/App.vue b/App.vue index dbe3e0e..797f513 100644 --- a/App.vue +++ b/App.vue @@ -1,21 +1,34 @@ - diff --git a/node_modules/vuex-persistedstate/LICENSE b/LICENSE similarity index 94% rename from node_modules/vuex-persistedstate/LICENSE rename to LICENSE index b9e0834..2c46dba 100644 --- a/node_modules/vuex-persistedstate/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) Robin van der Vleuten +Copyright (c) 2022 若依 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index caeca07..58f6930 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,52 @@ -# miniapp +

+ logo +

+

RuoYi v1.1.0

+

基于UniApp开发的轻量级移动端框架

+

+ + + +

+## 平台简介 + +RuoYi App 移动解决方案,采用uniapp框架,一份代码多终端适配,同时支持APP、小程序、H5!实现了与[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue)、[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud)完美对接的移动解决方案!目前已经实现登录、我的、工作台、编辑资料、头像修改、密码修改、常见问题、关于我们等基础功能。 + +* 配套后端代码仓库地址[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) 或 [RuoYi-Cloud](https://github.com/yangzongzhuan/RuoYi-Cloud) 版本。 +* 应用框架基于[uniapp](https://uniapp.dcloud.net.cn/),支持小程序、H5、Android和IOS。 +* 前端组件采用[uni-ui](https://github.com/dcloudio/uni-ui),全端兼容的高性能UI框架。 +* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)   +* 阿里云优惠券:[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console)   + + +## 技术文档 + +- 官网网站:[http://ruoyi.vip](http://ruoyi.vip) +- 文档地址:[http://doc.ruoyi.vip](http://doc.ruoyi.vip) +- H5页体验:[http://h5.ruoyi.vip](http://h5.ruoyi.vip) +- QQ交流群: ①133713780(满)、②146013835 +- 小程序体验 + +小程序演示 + + +## 演示图 + + + + + + + + + + + + + + + + + +
diff --git a/api/login.js b/api/login.js new file mode 100644 index 0000000..6ce7e7c --- /dev/null +++ b/api/login.js @@ -0,0 +1,59 @@ +import request from '@/utils/request' + +// 登录方法 +export function login(username, password, code, uuid) { + const data = { + username, + password, + code, + uuid + } + return request({ + 'url': '/login', + headers: { + isToken: false + }, + 'method': 'post', + 'data': data + }) +} + +// 注册方法 +export function register(data) { + return request({ + url: '/register', + headers: { + isToken: false + }, + method: 'post', + data: data + }) +} + +// 获取用户详细信息 +export function getInfo() { + return request({ + 'url': '/getInfo', + 'method': 'get' + }) +} + +// 退出方法 +export function logout() { + return request({ + 'url': '/logout', + 'method': 'post' + }) +} + +// 获取验证码 +export function getCodeImg() { + return request({ + 'url': '/captchaImage', + headers: { + isToken: false + }, + method: 'get', + timeout: 20000 + }) +} diff --git a/api/system/user.js b/api/system/user.js new file mode 100644 index 0000000..d961407 --- /dev/null +++ b/api/system/user.js @@ -0,0 +1,41 @@ +import upload from '@/utils/upload' +import request from '@/utils/request' + +// 用户密码重置 +export function updateUserPwd(oldPassword, newPassword) { + const data = { + oldPassword, + newPassword + } + return request({ + url: '/system/user/profile/updatePwd', + method: 'put', + params: data + }) +} + +// 查询用户个人信息 +export function getUserProfile() { + return request({ + url: '/system/user/profile', + method: 'get' + }) +} + +// 修改用户个人信息 +export function updateUserProfile(data) { + return request({ + url: '/system/user/profile', + method: 'put', + data: data + }) +} + +// 用户头像上传 +export function uploadAvatar(data) { + return upload({ + url: '/system/user/profile/avatar', + name: data.name, + filePath: data.filePath + }) +} diff --git a/components/uni-section/uni-section.vue b/components/uni-section/uni-section.vue new file mode 100644 index 0000000..9a52e0b --- /dev/null +++ b/components/uni-section/uni-section.vue @@ -0,0 +1,167 @@ + + + + diff --git a/config.js b/config.js new file mode 100644 index 0000000..ac2c74c --- /dev/null +++ b/config.js @@ -0,0 +1,26 @@ +// 应用全局配置 +module.exports = { + baseUrl: 'http://192.168.3.77:8080', + // baseUrl: 'http://localhost:8080', + // 应用信息 + appInfo: { + // 应用名称 + name: "ruoyi-app", + // 应用版本 + version: "1.1.0", + // 应用logo + logo: "/static/chuizi.png", + // 官方网站 + site_url: "http://ruoyi.vip", + // 政策协议 + agreements: [{ + title: "隐私政策", + url: "https://ruoyi.vip/protocol.html" + }, + { + title: "用户服务协议", + url: "https://ruoyi.vip/protocol.html" + } + ] + } +} diff --git a/index.html b/index.html deleted file mode 100644 index c3ff205..0000000 --- a/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - -
- - - diff --git a/main.js b/main.js index b22882e..3985b1b 100644 --- a/main.js +++ b/main.js @@ -1,24 +1,17 @@ -import App from './App' -import store from './store/index.js' - -// #ifndef VUE3 import Vue from 'vue' -import './uni.promisify.adaptor' +import App from './App' +import store from './store' // store +import plugins from './plugins' // plugins +import './permission' // permission +Vue.use(plugins) + Vue.config.productionTip = false +Vue.prototype.$store = store + App.mpType = 'app' + const app = new Vue({ - store, ...App }) -app.$mount() -// #endif -// #ifdef VUE3 -import { createSSRApp } from 'vue' -export function createApp() { - const app = createSSRApp(App) - return { - app - } -} -// #endif \ No newline at end of file +app.$mount() diff --git a/manifest.json b/manifest.json index 868eee7..cfde92e 100644 --- a/manifest.json +++ b/manifest.json @@ -1,26 +1,21 @@ { - "name" : "legalAffairs-app", - "appid" : "__UNI__6B7438C", + "name" : "若依移动端", + "appid" : "__UNI__25A9D80", "description" : "", - "versionName" : "1.0.0", + "versionName" : "1.1.0", "versionCode" : "100", "transformPx" : false, - /* 5+App特有相关 */ "app-plus" : { "usingComponents" : true, - "nvueStyleCompiler" : "uni-app", - "compilerVersion" : 3, + "nvueCompiler" : "uni-app", "splashscreen" : { "alwaysShowBeforeRender" : true, "waiting" : true, "autoclose" : true, "delay" : 0 }, - /* 模块配置 */ "modules" : {}, - /* 应用发布信息 */ "distribute" : { - /* android打包配置 */ "android" : { "permissions" : [ "", @@ -40,33 +35,35 @@ "" ] }, - /* ios打包配置 */ "ios" : {}, - /* SDK配置 */ "sdkConfigs" : {} } }, - /* 快应用特有相关 */ "quickapp" : {}, - /* 小程序特有相关 */ "mp-weixin" : { "appid" : "wx6d65ec24cf6b13af", "setting" : { - "urlCheck" : false + "urlCheck" : false, + "es6" : false, + "minified" : true, + "postcss" : true + }, + "optimization" : { + "subPackages" : true }, "usingComponents" : true }, - "mp-alipay" : { - "usingComponents" : true - }, - "mp-baidu" : { - "usingComponents" : true - }, - "mp-toutiao" : { - "usingComponents" : true - }, - "uniStatistics" : { - "enable" : false - }, - "vueVersion" : "2" + "vueVersion" : "2", + "h5" : { + "template" : "static/index.html", + "devServer" : { + "port" : 9090, + "https" : false + }, + "title" : "RuoYi-App", + "router" : { + "mode" : "hash", + "base" : "./" + } + } } diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/api.js b/node_modules/@vue/devtools-api/lib/cjs/api/api.js deleted file mode 100644 index c8ad2e5..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/api/api.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/app.js b/node_modules/@vue/devtools-api/lib/cjs/api/app.js deleted file mode 100644 index c8ad2e5..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/api/app.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/component.js b/node_modules/@vue/devtools-api/lib/cjs/api/component.js deleted file mode 100644 index c8ad2e5..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/api/component.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/context.js b/node_modules/@vue/devtools-api/lib/cjs/api/context.js deleted file mode 100644 index c8ad2e5..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/api/context.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js b/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js deleted file mode 100644 index c8ad2e5..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/index.js b/node_modules/@vue/devtools-api/lib/cjs/api/index.js deleted file mode 100644 index 22f7589..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/api/index.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./api.js"), exports); -__exportStar(require("./app.js"), exports); -__exportStar(require("./component.js"), exports); -__exportStar(require("./context.js"), exports); -__exportStar(require("./hooks.js"), exports); -__exportStar(require("./util.js"), exports); diff --git a/node_modules/@vue/devtools-api/lib/cjs/api/util.js b/node_modules/@vue/devtools-api/lib/cjs/api/util.js deleted file mode 100644 index c8ad2e5..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/api/util.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/const.js b/node_modules/@vue/devtools-api/lib/cjs/const.js deleted file mode 100644 index 84d408c..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/const.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.HOOK_PLUGIN_SETTINGS_SET = exports.HOOK_SETUP = void 0; -exports.HOOK_SETUP = 'devtools-plugin:setup'; -exports.HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set'; diff --git a/node_modules/@vue/devtools-api/lib/cjs/env.js b/node_modules/@vue/devtools-api/lib/cjs/env.js deleted file mode 100644 index 178d457..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/env.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isProxyAvailable = exports.getTarget = exports.getDevtoolsGlobalHook = void 0; -function getDevtoolsGlobalHook() { - return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; -} -exports.getDevtoolsGlobalHook = getDevtoolsGlobalHook; -function getTarget() { - // @ts-ignore - return (typeof navigator !== 'undefined' && typeof window !== 'undefined') - ? window - : typeof global !== 'undefined' - ? global - : {}; -} -exports.getTarget = getTarget; -exports.isProxyAvailable = typeof Proxy === 'function'; diff --git a/node_modules/@vue/devtools-api/lib/cjs/index.js b/node_modules/@vue/devtools-api/lib/cjs/index.js deleted file mode 100644 index 249ac4d..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/index.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.setupDevtoolsPlugin = void 0; -const env_js_1 = require("./env.js"); -const const_js_1 = require("./const.js"); -const proxy_js_1 = require("./proxy.js"); -__exportStar(require("./api/index.js"), exports); -__exportStar(require("./plugin.js"), exports); -__exportStar(require("./time.js"), exports); -function setupDevtoolsPlugin(pluginDescriptor, setupFn) { - const descriptor = pluginDescriptor; - const target = (0, env_js_1.getTarget)(); - const hook = (0, env_js_1.getDevtoolsGlobalHook)(); - const enableProxy = env_js_1.isProxyAvailable && descriptor.enableEarlyProxy; - if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { - hook.emit(const_js_1.HOOK_SETUP, pluginDescriptor, setupFn); - } - else { - const proxy = enableProxy ? new proxy_js_1.ApiProxy(descriptor, hook) : null; - const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; - list.push({ - pluginDescriptor: descriptor, - setupFn, - proxy, - }); - if (proxy) - setupFn(proxy.proxiedTarget); - } -} -exports.setupDevtoolsPlugin = setupDevtoolsPlugin; diff --git a/node_modules/@vue/devtools-api/lib/cjs/plugin.js b/node_modules/@vue/devtools-api/lib/cjs/plugin.js deleted file mode 100644 index c8ad2e5..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/plugin.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/node_modules/@vue/devtools-api/lib/cjs/proxy.js b/node_modules/@vue/devtools-api/lib/cjs/proxy.js deleted file mode 100644 index 5385e60..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/proxy.js +++ /dev/null @@ -1,111 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ApiProxy = void 0; -const const_js_1 = require("./const.js"); -const time_js_1 = require("./time.js"); -class ApiProxy { - constructor(plugin, hook) { - this.target = null; - this.targetQueue = []; - this.onQueue = []; - this.plugin = plugin; - this.hook = hook; - const defaultSettings = {}; - if (plugin.settings) { - for (const id in plugin.settings) { - const item = plugin.settings[id]; - defaultSettings[id] = item.defaultValue; - } - } - const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; - let currentSettings = Object.assign({}, defaultSettings); - try { - const raw = localStorage.getItem(localSettingsSaveId); - const data = JSON.parse(raw); - Object.assign(currentSettings, data); - } - catch (e) { - // noop - } - this.fallbacks = { - getSettings() { - return currentSettings; - }, - setSettings(value) { - try { - localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); - } - catch (e) { - // noop - } - currentSettings = value; - }, - now() { - return (0, time_js_1.now)(); - }, - }; - if (hook) { - hook.on(const_js_1.HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { - if (pluginId === this.plugin.id) { - this.fallbacks.setSettings(value); - } - }); - } - this.proxiedOn = new Proxy({}, { - get: (_target, prop) => { - if (this.target) { - return this.target.on[prop]; - } - else { - return (...args) => { - this.onQueue.push({ - method: prop, - args, - }); - }; - } - }, - }); - this.proxiedTarget = new Proxy({}, { - get: (_target, prop) => { - if (this.target) { - return this.target[prop]; - } - else if (prop === 'on') { - return this.proxiedOn; - } - else if (Object.keys(this.fallbacks).includes(prop)) { - return (...args) => { - this.targetQueue.push({ - method: prop, - args, - resolve: () => { }, - }); - return this.fallbacks[prop](...args); - }; - } - else { - return (...args) => { - return new Promise(resolve => { - this.targetQueue.push({ - method: prop, - args, - resolve, - }); - }); - }; - } - }, - }); - } - async setRealTarget(target) { - this.target = target; - for (const item of this.onQueue) { - this.target.on[item.method](...item.args); - } - for (const item of this.targetQueue) { - item.resolve(await this.target[item.method](...item.args)); - } - } -} -exports.ApiProxy = ApiProxy; diff --git a/node_modules/@vue/devtools-api/lib/cjs/time.js b/node_modules/@vue/devtools-api/lib/cjs/time.js deleted file mode 100644 index 5b17a25..0000000 --- a/node_modules/@vue/devtools-api/lib/cjs/time.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.now = exports.isPerformanceSupported = void 0; -let supported; -let perf; -function isPerformanceSupported() { - var _a; - if (supported !== undefined) { - return supported; - } - if (typeof window !== 'undefined' && window.performance) { - supported = true; - perf = window.performance; - } - else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { - supported = true; - perf = global.perf_hooks.performance; - } - else { - supported = false; - } - return supported; -} -exports.isPerformanceSupported = isPerformanceSupported; -function now() { - return isPerformanceSupported() ? perf.now() : Date.now(); -} -exports.now = now; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/api.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/api.d.ts deleted file mode 100644 index 071312a..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/api.d.ts +++ /dev/null @@ -1,108 +0,0 @@ -import type { ComponentBounds, Hookable } from './hooks.js'; -import type { Context } from './context.js'; -import type { ComponentInstance, ComponentState, StateBase } from './component.js'; -import type { App } from './app.js'; -import type { ID } from './util.js'; -export interface DevtoolsPluginApi { - on: Hookable; - notifyComponentUpdate(instance?: ComponentInstance): void; - addTimelineLayer(options: TimelineLayerOptions): void; - addTimelineEvent(options: TimelineEventOptions): void; - addInspector(options: CustomInspectorOptions): void; - sendInspectorTree(inspectorId: string): void; - sendInspectorState(inspectorId: string): void; - selectInspectorNode(inspectorId: string, nodeId: string): void; - getComponentBounds(instance: ComponentInstance): Promise; - getComponentName(instance: ComponentInstance): Promise; - getComponentInstances(app: App): Promise; - highlightElement(instance: ComponentInstance): void; - unhighlightElement(): void; - getSettings(pluginId?: string): TSettings; - now(): number; - /** - * @private Not implemented yet - */ - setSettings(values: TSettings): void; -} -export interface AppRecord { - id: string; - name: string; - instanceMap: Map; - rootInstance: ComponentInstance; -} -export interface TimelineLayerOptions { - id: string; - label: string; - color: number; - skipScreenshots?: boolean; - groupsOnly?: boolean; - ignoreNoDurationGroups?: boolean; - screenshotOverlayRender?: (event: TimelineEvent & ScreenshotOverlayEvent, ctx: ScreenshotOverlayRenderContext) => ScreenshotOverlayRenderResult | Promise; -} -export interface ScreenshotOverlayEvent { - layerId: string; - renderMeta: any; -} -export interface ScreenshotOverlayRenderContext { - screenshot: ScreenshotData; - events: (TimelineEvent & ScreenshotOverlayEvent)[]; - index: number; -} -export declare type ScreenshotOverlayRenderResult = HTMLElement | string | false; -export interface ScreenshotData { - time: number; -} -export interface TimelineEventOptions { - layerId: string; - event: TimelineEvent; - all?: boolean; -} -export interface TimelineEvent { - time: number; - data: TData; - logType?: 'default' | 'warning' | 'error'; - meta?: TMeta; - groupId?: ID; - title?: string; - subtitle?: string; -} -export interface TimelineMarkerOptions { - id: string; - time: number; - color: number; - label: string; - all?: boolean; -} -export interface CustomInspectorOptions { - id: string; - label: string; - icon?: string; - treeFilterPlaceholder?: string; - stateFilterPlaceholder?: string; - noSelectionText?: string; - actions?: { - icon: string; - tooltip?: string; - action: () => void | Promise; - }[]; - nodeActions?: { - icon: string; - tooltip?: string; - action: (nodeId: string) => void | Promise; - }[]; -} -export interface CustomInspectorNode { - id: string; - label: string; - children?: CustomInspectorNode[]; - tags?: InspectorNodeTag[]; -} -export interface InspectorNodeTag { - label: string; - textColor: number; - backgroundColor: number; - tooltip?: string; -} -export interface CustomInspectorState { - [key: string]: (StateBase | Omit)[]; -} diff --git a/node_modules/@vue/devtools-api/lib/esm/api/api.js b/node_modules/@vue/devtools-api/lib/esm/api/api.js deleted file mode 100644 index cb0ff5c..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/api.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/app.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/app.d.ts deleted file mode 100644 index 42638c0..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/app.d.ts +++ /dev/null @@ -1 +0,0 @@ -export declare type App = any; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/app.js b/node_modules/@vue/devtools-api/lib/esm/api/app.js deleted file mode 100644 index cb0ff5c..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/app.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/component.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/component.d.ts deleted file mode 100644 index 335dd04..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/component.d.ts +++ /dev/null @@ -1,78 +0,0 @@ -import type { InspectorNodeTag } from './api.js'; -import type { ID } from './util.js'; -export declare type ComponentInstance = any; -export interface ComponentTreeNode { - uid: ID; - id: string; - name: string; - renderKey: string | number; - inactive: boolean; - isFragment: boolean; - hasChildren: boolean; - children: ComponentTreeNode[]; - domOrder?: number[]; - consoleId?: string; - isRouterView?: boolean; - macthedRouteSegment?: string; - tags: InspectorNodeTag[]; - autoOpen: boolean; - meta?: any; -} -export interface InspectedComponentData { - id: string; - name: string; - file: string; - state: ComponentState[]; - functional?: boolean; -} -export interface StateBase { - key: string; - value: any; - editable?: boolean; - objectType?: 'ref' | 'reactive' | 'computed' | 'other'; - raw?: string; -} -export interface ComponentStateBase extends StateBase { - type: string; -} -export interface ComponentPropState extends ComponentStateBase { - meta?: { - type: string; - required: boolean; - /** Vue 1 only */ - mode?: 'default' | 'sync' | 'once'; - }; -} -export declare type ComponentBuiltinCustomStateTypes = 'function' | 'map' | 'set' | 'reference' | 'component' | 'component-definition' | 'router' | 'store'; -export interface ComponentCustomState extends ComponentStateBase { - value: CustomState; -} -export declare type CustomState = { - _custom: { - type: ComponentBuiltinCustomStateTypes | string; - objectType?: string; - display?: string; - tooltip?: string; - value?: any; - abstract?: boolean; - file?: string; - uid?: number; - readOnly?: boolean; - /** Configure immediate child fields */ - fields?: { - abstract?: boolean; - }; - id?: any; - actions?: { - icon: string; - tooltip?: string; - action: () => void | Promise; - }[]; - /** internal */ - _reviveId?: number; - }; -}; -export declare type ComponentState = ComponentStateBase | ComponentPropState | ComponentCustomState; -export interface ComponentDevtoolsOptions { - hide?: boolean; -} diff --git a/node_modules/@vue/devtools-api/lib/esm/api/component.js b/node_modules/@vue/devtools-api/lib/esm/api/component.js deleted file mode 100644 index cb0ff5c..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/component.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/context.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/context.d.ts deleted file mode 100644 index 29388f1..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/context.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { AppRecord } from './api.js'; -export interface Context { - currentTab: string; - currentAppRecord: AppRecord; -} diff --git a/node_modules/@vue/devtools-api/lib/esm/api/context.js b/node_modules/@vue/devtools-api/lib/esm/api/context.js deleted file mode 100644 index cb0ff5c..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/context.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts deleted file mode 100644 index c980b13..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts +++ /dev/null @@ -1,180 +0,0 @@ -import type { ComponentTreeNode, InspectedComponentData, ComponentInstance, ComponentDevtoolsOptions } from './component.js'; -import type { App } from './app.js'; -import type { CustomInspectorNode, CustomInspectorState, TimelineEvent } from './api.js'; -export declare const enum Hooks { - TRANSFORM_CALL = "transformCall", - GET_APP_RECORD_NAME = "getAppRecordName", - GET_APP_ROOT_INSTANCE = "getAppRootInstance", - REGISTER_APPLICATION = "registerApplication", - WALK_COMPONENT_TREE = "walkComponentTree", - VISIT_COMPONENT_TREE = "visitComponentTree", - WALK_COMPONENT_PARENTS = "walkComponentParents", - INSPECT_COMPONENT = "inspectComponent", - GET_COMPONENT_BOUNDS = "getComponentBounds", - GET_COMPONENT_NAME = "getComponentName", - GET_COMPONENT_INSTANCES = "getComponentInstances", - GET_ELEMENT_COMPONENT = "getElementComponent", - GET_COMPONENT_ROOT_ELEMENTS = "getComponentRootElements", - EDIT_COMPONENT_STATE = "editComponentState", - GET_COMPONENT_DEVTOOLS_OPTIONS = "getAppDevtoolsOptions", - GET_COMPONENT_RENDER_CODE = "getComponentRenderCode", - INSPECT_TIMELINE_EVENT = "inspectTimelineEvent", - TIMELINE_CLEARED = "timelineCleared", - GET_INSPECTOR_TREE = "getInspectorTree", - GET_INSPECTOR_STATE = "getInspectorState", - EDIT_INSPECTOR_STATE = "editInspectorState", - SET_PLUGIN_SETTINGS = "setPluginSettings" -} -export interface ComponentBounds { - left: number; - top: number; - width: number; - height: number; -} -export declare type HookPayloads = { - [Hooks.TRANSFORM_CALL]: { - callName: string; - inArgs: any[]; - outArgs: any[]; - }; - [Hooks.GET_APP_RECORD_NAME]: { - app: App; - name: string; - }; - [Hooks.GET_APP_ROOT_INSTANCE]: { - app: App; - root: ComponentInstance; - }; - [Hooks.REGISTER_APPLICATION]: { - app: App; - }; - [Hooks.WALK_COMPONENT_TREE]: { - componentInstance: ComponentInstance; - componentTreeData: ComponentTreeNode[]; - maxDepth: number; - filter: string; - recursively: boolean; - }; - [Hooks.VISIT_COMPONENT_TREE]: { - app: App; - componentInstance: ComponentInstance; - treeNode: ComponentTreeNode; - filter: string; - }; - [Hooks.WALK_COMPONENT_PARENTS]: { - componentInstance: ComponentInstance; - parentInstances: ComponentInstance[]; - }; - [Hooks.INSPECT_COMPONENT]: { - app: App; - componentInstance: ComponentInstance; - instanceData: InspectedComponentData; - }; - [Hooks.GET_COMPONENT_BOUNDS]: { - componentInstance: ComponentInstance; - bounds: ComponentBounds; - }; - [Hooks.GET_COMPONENT_NAME]: { - componentInstance: ComponentInstance; - name: string; - }; - [Hooks.GET_COMPONENT_INSTANCES]: { - app: App; - componentInstances: ComponentInstance[]; - }; - [Hooks.GET_ELEMENT_COMPONENT]: { - element: HTMLElement | any; - componentInstance: ComponentInstance; - }; - [Hooks.GET_COMPONENT_ROOT_ELEMENTS]: { - componentInstance: ComponentInstance; - rootElements: (HTMLElement | any)[]; - }; - [Hooks.EDIT_COMPONENT_STATE]: { - app: App; - componentInstance: ComponentInstance; - path: string[]; - type: string; - state: EditStatePayload; - set: (object: any, path?: string | (string[]), value?: any, cb?: (object: any, field: string, value: any) => void) => void; - }; - [Hooks.GET_COMPONENT_DEVTOOLS_OPTIONS]: { - componentInstance: ComponentInstance; - options: ComponentDevtoolsOptions; - }; - [Hooks.GET_COMPONENT_RENDER_CODE]: { - componentInstance: ComponentInstance; - code: string; - }; - [Hooks.INSPECT_TIMELINE_EVENT]: { - app: App; - layerId: string; - event: TimelineEvent; - all?: boolean; - data: any; - }; - [Hooks.TIMELINE_CLEARED]: Record; - [Hooks.GET_INSPECTOR_TREE]: { - app: App; - inspectorId: string; - filter: string; - rootNodes: CustomInspectorNode[]; - }; - [Hooks.GET_INSPECTOR_STATE]: { - app: App; - inspectorId: string; - nodeId: string; - state: CustomInspectorState; - }; - [Hooks.EDIT_INSPECTOR_STATE]: { - app: App; - inspectorId: string; - nodeId: string; - path: string[]; - type: string; - state: EditStatePayload; - set: (object: any, path?: string | (string[]), value?: any, cb?: (object: any, field: string, value: any) => void) => void; - }; - [Hooks.SET_PLUGIN_SETTINGS]: { - app: App; - pluginId: string; - key: string; - newValue: any; - oldValue: any; - settings: any; - }; -}; -export declare type EditStatePayload = { - value: any; - newKey?: string | null; - remove?: undefined | false; -} | { - value?: undefined; - newKey?: undefined; - remove: true; -}; -export declare type HookHandler = (payload: TPayload, ctx: TContext) => void | Promise; -export interface Hookable { - transformCall(handler: HookHandler): any; - getAppRecordName(handler: HookHandler): any; - getAppRootInstance(handler: HookHandler): any; - registerApplication(handler: HookHandler): any; - walkComponentTree(handler: HookHandler): any; - visitComponentTree(handler: HookHandler): any; - walkComponentParents(handler: HookHandler): any; - inspectComponent(handler: HookHandler): any; - getComponentBounds(handler: HookHandler): any; - getComponentName(handler: HookHandler): any; - getComponentInstances(handler: HookHandler): any; - getElementComponent(handler: HookHandler): any; - getComponentRootElements(handler: HookHandler): any; - editComponentState(handler: HookHandler): any; - getComponentDevtoolsOptions(handler: HookHandler): any; - getComponentRenderCode(handler: HookHandler): any; - inspectTimelineEvent(handler: HookHandler): any; - timelineCleared(handler: HookHandler): any; - getInspectorTree(handler: HookHandler): any; - getInspectorState(handler: HookHandler): any; - editInspectorState(handler: HookHandler): any; - setPluginSettings(handler: HookHandler): any; -} diff --git a/node_modules/@vue/devtools-api/lib/esm/api/hooks.js b/node_modules/@vue/devtools-api/lib/esm/api/hooks.js deleted file mode 100644 index cb0ff5c..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/hooks.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/index.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/index.d.ts deleted file mode 100644 index 70d09d2..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/index.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from './api.js'; -export * from './app.js'; -export * from './component.js'; -export * from './context.js'; -export * from './hooks.js'; -export * from './util.js'; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/index.js b/node_modules/@vue/devtools-api/lib/esm/api/index.js deleted file mode 100644 index 70d09d2..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/index.js +++ /dev/null @@ -1,6 +0,0 @@ -export * from './api.js'; -export * from './app.js'; -export * from './component.js'; -export * from './context.js'; -export * from './hooks.js'; -export * from './util.js'; diff --git a/node_modules/@vue/devtools-api/lib/esm/api/util.d.ts b/node_modules/@vue/devtools-api/lib/esm/api/util.d.ts deleted file mode 100644 index 7c437e5..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/util.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export declare type ID = number | string; -export interface WithId { - id: ID; -} diff --git a/node_modules/@vue/devtools-api/lib/esm/api/util.js b/node_modules/@vue/devtools-api/lib/esm/api/util.js deleted file mode 100644 index cb0ff5c..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/api/util.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/const.d.ts b/node_modules/@vue/devtools-api/lib/esm/const.d.ts deleted file mode 100644 index 289b254..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/const.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const HOOK_SETUP = "devtools-plugin:setup"; -export declare const HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set"; diff --git a/node_modules/@vue/devtools-api/lib/esm/const.js b/node_modules/@vue/devtools-api/lib/esm/const.js deleted file mode 100644 index 872ea3e..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/const.js +++ /dev/null @@ -1,2 +0,0 @@ -export const HOOK_SETUP = 'devtools-plugin:setup'; -export const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set'; diff --git a/node_modules/@vue/devtools-api/lib/esm/env.d.ts b/node_modules/@vue/devtools-api/lib/esm/env.d.ts deleted file mode 100644 index 16c1399..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/env.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { PluginDescriptor, SetupFunction } from './index.js'; -import type { ApiProxy } from './proxy.js'; -export interface PluginQueueItem { - pluginDescriptor: PluginDescriptor; - setupFn: SetupFunction; - proxy?: ApiProxy; -} -interface GlobalTarget { - __VUE_DEVTOOLS_PLUGINS__?: PluginQueueItem[]; - __VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__?: boolean; -} -export declare function getDevtoolsGlobalHook(): any; -export declare function getTarget(): GlobalTarget; -export declare const isProxyAvailable: boolean; -export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/env.js b/node_modules/@vue/devtools-api/lib/esm/env.js deleted file mode 100644 index 6713a93..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/env.js +++ /dev/null @@ -1,12 +0,0 @@ -export function getDevtoolsGlobalHook() { - return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; -} -export function getTarget() { - // @ts-ignore - return (typeof navigator !== 'undefined' && typeof window !== 'undefined') - ? window - : typeof global !== 'undefined' - ? global - : {}; -} -export const isProxyAvailable = typeof Proxy === 'function'; diff --git a/node_modules/@vue/devtools-api/lib/esm/index.d.ts b/node_modules/@vue/devtools-api/lib/esm/index.d.ts deleted file mode 100644 index 6833324..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/index.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { DevtoolsPluginApi } from './api/index.js'; -import type { PluginDescriptor, ExtractSettingsTypes, PluginSettingsItem } from './plugin.js'; -export * from './api/index.js'; -export * from './plugin.js'; -export * from './time.js'; -export { PluginQueueItem } from './env.js'; -declare type Cast = A extends B ? A : B; -declare type Narrowable = string | number | bigint | boolean; -declare type Narrow = Cast; -})>; -declare type Exact = { - [K in keyof C]: K extends keyof T ? T[K] : never; -}; -export declare type SetupFunction = (api: DevtoolsPluginApi) => void; -export declare function setupDevtoolsPlugin, TSettings = ExtractSettingsTypes ? S : Record : Record>>(pluginDescriptor: Narrow, setupFn: SetupFunction): void; diff --git a/node_modules/@vue/devtools-api/lib/esm/index.js b/node_modules/@vue/devtools-api/lib/esm/index.js deleted file mode 100644 index 39259bc..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/index.js +++ /dev/null @@ -1,26 +0,0 @@ -import { getTarget, getDevtoolsGlobalHook, isProxyAvailable } from './env.js'; -import { HOOK_SETUP } from './const.js'; -import { ApiProxy } from './proxy.js'; -export * from './api/index.js'; -export * from './plugin.js'; -export * from './time.js'; -export function setupDevtoolsPlugin(pluginDescriptor, setupFn) { - const descriptor = pluginDescriptor; - const target = getTarget(); - const hook = getDevtoolsGlobalHook(); - const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy; - if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { - hook.emit(HOOK_SETUP, pluginDescriptor, setupFn); - } - else { - const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null; - const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; - list.push({ - pluginDescriptor: descriptor, - setupFn, - proxy, - }); - if (proxy) - setupFn(proxy.proxiedTarget); - } -} diff --git a/node_modules/@vue/devtools-api/lib/esm/plugin.d.ts b/node_modules/@vue/devtools-api/lib/esm/plugin.d.ts deleted file mode 100644 index dd182ca..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/plugin.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { App } from './api/index.js'; -export interface PluginDescriptor { - id: string; - label: string; - app: App; - packageName?: string; - homepage?: string; - componentStateTypes?: string[]; - logo?: string; - disableAppScope?: boolean; - disablePluginScope?: boolean; - /** - * Run the plugin setup and expose the api even if the devtools is not opened yet. - * Useful to record timeline events early. - */ - enableEarlyProxy?: boolean; - settings?: Record; -} -export declare type PluginSettingsItem = { - label: string; - description?: string; -} & ({ - type: 'boolean'; - defaultValue: boolean; -} | { - type: 'choice'; - defaultValue: string | number; - options: { - value: string | number; - label: string; - }[]; - component?: 'select' | 'button-group'; -} | { - type: 'text'; - defaultValue: string; -}); -declare type InferSettingsType = [T] extends [{ - type: 'boolean'; -}] ? boolean : [T] extends [{ - type: 'choice'; -}] ? T['options'][number]['value'] : [T] extends [{ - type: 'text'; -}] ? string : unknown; -export declare type ExtractSettingsTypes> = { - [K in keyof O]: InferSettingsType; -}; -export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/plugin.js b/node_modules/@vue/devtools-api/lib/esm/plugin.js deleted file mode 100644 index cb0ff5c..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/plugin.js +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/proxy.d.ts b/node_modules/@vue/devtools-api/lib/esm/proxy.d.ts deleted file mode 100644 index 38ff867..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/proxy.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { Context, DevtoolsPluginApi, Hookable } from './api/index.js'; -import type { PluginDescriptor } from './plugin.js'; -interface QueueItem { - method: string; - args: any[]; - resolve?: (value?: any) => void; -} -export declare class ApiProxy = DevtoolsPluginApi> { - target: TTarget | null; - targetQueue: QueueItem[]; - proxiedTarget: TTarget; - onQueue: QueueItem[]; - proxiedOn: Hookable; - plugin: PluginDescriptor; - hook: any; - fallbacks: Record; - constructor(plugin: PluginDescriptor, hook: any); - setRealTarget(target: TTarget): Promise; -} -export {}; diff --git a/node_modules/@vue/devtools-api/lib/esm/proxy.js b/node_modules/@vue/devtools-api/lib/esm/proxy.js deleted file mode 100644 index 639077e..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/proxy.js +++ /dev/null @@ -1,107 +0,0 @@ -import { HOOK_PLUGIN_SETTINGS_SET } from './const.js'; -import { now } from './time.js'; -export class ApiProxy { - constructor(plugin, hook) { - this.target = null; - this.targetQueue = []; - this.onQueue = []; - this.plugin = plugin; - this.hook = hook; - const defaultSettings = {}; - if (plugin.settings) { - for (const id in plugin.settings) { - const item = plugin.settings[id]; - defaultSettings[id] = item.defaultValue; - } - } - const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; - let currentSettings = Object.assign({}, defaultSettings); - try { - const raw = localStorage.getItem(localSettingsSaveId); - const data = JSON.parse(raw); - Object.assign(currentSettings, data); - } - catch (e) { - // noop - } - this.fallbacks = { - getSettings() { - return currentSettings; - }, - setSettings(value) { - try { - localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); - } - catch (e) { - // noop - } - currentSettings = value; - }, - now() { - return now(); - }, - }; - if (hook) { - hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { - if (pluginId === this.plugin.id) { - this.fallbacks.setSettings(value); - } - }); - } - this.proxiedOn = new Proxy({}, { - get: (_target, prop) => { - if (this.target) { - return this.target.on[prop]; - } - else { - return (...args) => { - this.onQueue.push({ - method: prop, - args, - }); - }; - } - }, - }); - this.proxiedTarget = new Proxy({}, { - get: (_target, prop) => { - if (this.target) { - return this.target[prop]; - } - else if (prop === 'on') { - return this.proxiedOn; - } - else if (Object.keys(this.fallbacks).includes(prop)) { - return (...args) => { - this.targetQueue.push({ - method: prop, - args, - resolve: () => { }, - }); - return this.fallbacks[prop](...args); - }; - } - else { - return (...args) => { - return new Promise(resolve => { - this.targetQueue.push({ - method: prop, - args, - resolve, - }); - }); - }; - } - }, - }); - } - async setRealTarget(target) { - this.target = target; - for (const item of this.onQueue) { - this.target.on[item.method](...item.args); - } - for (const item of this.targetQueue) { - item.resolve(await this.target[item.method](...item.args)); - } - } -} diff --git a/node_modules/@vue/devtools-api/lib/esm/time.d.ts b/node_modules/@vue/devtools-api/lib/esm/time.d.ts deleted file mode 100644 index 1aebade..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/time.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function isPerformanceSupported(): boolean; -export declare function now(): number; diff --git a/node_modules/@vue/devtools-api/lib/esm/time.js b/node_modules/@vue/devtools-api/lib/esm/time.js deleted file mode 100644 index 99bedb5..0000000 --- a/node_modules/@vue/devtools-api/lib/esm/time.js +++ /dev/null @@ -1,23 +0,0 @@ -let supported; -let perf; -export function isPerformanceSupported() { - var _a; - if (supported !== undefined) { - return supported; - } - if (typeof window !== 'undefined' && window.performance) { - supported = true; - perf = window.performance; - } - else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { - supported = true; - perf = global.perf_hooks.performance; - } - else { - supported = false; - } - return supported; -} -export function now() { - return isPerformanceSupported() ? perf.now() : Date.now(); -} diff --git a/node_modules/@vue/devtools-api/package.json b/node_modules/@vue/devtools-api/package.json deleted file mode 100644 index eda5d08..0000000 --- a/node_modules/@vue/devtools-api/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "_from": "@vue/devtools-api@^6.0.0-beta.11", - "_id": "@vue/devtools-api@6.5.0", - "_inBundle": false, - "_integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==", - "_location": "/@vue/devtools-api", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "@vue/devtools-api@^6.0.0-beta.11", - "name": "@vue/devtools-api", - "escapedName": "@vue%2fdevtools-api", - "scope": "@vue", - "rawSpec": "^6.0.0-beta.11", - "saveSpec": null, - "fetchSpec": "^6.0.0-beta.11" - }, - "_requiredBy": [ - "/vuex" - ], - "_resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", - "_shasum": "98b99425edee70b4c992692628fa1ea2c1e57d07", - "_spec": "@vue/devtools-api@^6.0.0-beta.11", - "_where": "D:\\work\\云美\\legalAffairs-app\\node_modules\\vuex", - "author": { - "name": "Guillaume Chau" - }, - "browser": "lib/esm/index.js", - "bugs": { - "url": "https://github.com/vuejs/vue-devtools/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Interact with the Vue devtools from the page", - "devDependencies": { - "@types/node": "^13.9.1", - "@types/webpack-env": "^1.15.1", - "typescript": "^4.5.2" - }, - "files": [ - "lib/esm", - "lib/cjs" - ], - "homepage": "https://github.com/vuejs/vue-devtools#readme", - "license": "MIT", - "main": "lib/cjs/index.js", - "module": "lib/esm/index.js", - "name": "@vue/devtools-api", - "publishConfig": { - "access": "public" - }, - "repository": { - "url": "git+https://github.com/vuejs/vue-devtools.git", - "type": "git", - "directory": "packages/api" - }, - "scripts": { - "build": "rimraf lib && yarn build:esm && yarn build:cjs", - "build:cjs": "tsc --module commonjs --outDir lib/cjs", - "build:esm": "tsc --module es2015 --outDir lib/esm -d", - "build:watch": "yarn tsc --module es2015 --outDir lib/esm -d -w --sourceMap" - }, - "sideEffects": false, - "types": "lib/esm/index.d.ts", - "version": "6.5.0" -} diff --git a/node_modules/deepmerge/.editorconfig b/node_modules/deepmerge/.editorconfig deleted file mode 100644 index 6244e1b..0000000 --- a/node_modules/deepmerge/.editorconfig +++ /dev/null @@ -1,7 +0,0 @@ -root = true - -[*] -indent_style = tab -end_of_line = lf -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/node_modules/deepmerge/.eslintcache b/node_modules/deepmerge/.eslintcache deleted file mode 100644 index c1321eb..0000000 --- a/node_modules/deepmerge/.eslintcache +++ /dev/null @@ -1 +0,0 @@ -[{"/Users/joshduff/code/deepmerge/test/custom-is-mergeable-object.js":"1"},{"size":1990,"mtime":1679007485753,"results":"2","hashOfConfig":"3"},{"filePath":"4","messages":"5","suppressedMessages":"6","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"ktjd5k","/Users/joshduff/code/deepmerge/test/custom-is-mergeable-object.js",[],[]] \ No newline at end of file diff --git a/node_modules/deepmerge/changelog.md b/node_modules/deepmerge/changelog.md deleted file mode 100644 index 082e0dd..0000000 --- a/node_modules/deepmerge/changelog.md +++ /dev/null @@ -1,167 +0,0 @@ -# [4.3.1](https://github.com/TehShrike/deepmerge/releases/tag/v4.3.1) - -- Fix type definition for arrayMerge options. [#239](https://github.com/TehShrike/deepmerge/pull/239) - -# [4.3.0](https://github.com/TehShrike/deepmerge/releases/tag/v4.3.0) - -- Avoid thrown errors if the target doesn't have `propertyIsEnumerable`. [#252](https://github.com/TehShrike/deepmerge/pull/252) - -# [4.2.2](https://github.com/TehShrike/deepmerge/releases/tag/v4.2.2) - -- `isMergeableObject` is now only called if there are two values that could be merged. [a34dd4d2](https://github.com/TehShrike/deepmerge/commit/a34dd4d25bf5e250653540a2022bc832c7b00a19) - -# [4.2.1](https://github.com/TehShrike/deepmerge/releases/tag/v4.2.1) - -- Fix: falsey values can now be merged. [#170](https://github.com/TehShrike/deepmerge/issues/170) - -# [4.2.0](https://github.com/TehShrike/deepmerge/releases/tag/v4.2.0) - -- Properties are now only overwritten if they exist on the target object and are enumerable. [#164](https://github.com/TehShrike/deepmerge/pull/164) - -Technically this could probably be a patch release since "which properties get overwritten" wasn't documented and accidentally overwriting a built-in function or some function up the property chain would almost certainly be undesirable, but it feels like a gray area, so here we are with a feature version bump. - -# [4.1.2](https://github.com/TehShrike/deepmerge/releases/tag/v4.1.2) - -- Rolled back #167 since `Object.assign` breaks ES5 support. [55067352](https://github.com/TehShrike/deepmerge/commit/55067352a92c65a6c44a5165f3387720aae1e192) - -# [4.1.1](https://github.com/TehShrike/deepmerge/releases/tag/v4.1.1) - -- The `options` argument is no longer mutated [#167](https://github.com/TehShrike/deepmerge/pull/167) - -# [4.1.0](https://github.com/TehShrike/deepmerge/releases/tag/v4.1.0) - -- `cloneUnlessOtherwiseSpecified` is now exposed to the `arrayMerge` function [#165](https://github.com/TehShrike/deepmerge/pull/165) - -# [4.0.0](https://github.com/TehShrike/deepmerge/releases/tag/v4.0.0) - -- The `main` entry point in `package.json` is now a CommonJS module instead of a UMD module [#155](https://github.com/TehShrike/deepmerge/pull/155) - -# [3.3.0](https://github.com/TehShrike/deepmerge/releases/tag/v3.3.0) - -- Enumerable Symbol properties are now copied [#151](https://github.com/TehShrike/deepmerge/pull/151) - -# [3.2.1](https://github.com/TehShrike/deepmerge/releases/tag/v3.2.1) - -- bumping dev dependency versions to try to shut up bogus security warnings from Github/npm [#149](https://github.com/TehShrike/deepmerge/pull/149) - -# [3.2.0](https://github.com/TehShrike/deepmerge/releases/tag/v3.2.0) - -- feature: added the [`customMerge`](https://github.com/TehShrike/deepmerge#custommerge) option [#133](https://github.com/TehShrike/deepmerge/pull/133) - -# [3.1.0](https://github.com/TehShrike/deepmerge/releases/tag/v3.1.0) - -- typescript typing: make the `all` function generic [#129](https://github.com/TehShrike/deepmerge/pull/129) - -# [3.0.0](https://github.com/TehShrike/deepmerge/releases/tag/v3.0.0) - -- drop ES module build [#123](https://github.com/TehShrike/deepmerge/issues/123) - -# [2.2.1](https://github.com/TehShrike/deepmerge/releases/tag/v2.2.1) - -- bug: typescript export type was wrong [#121](https://github.com/TehShrike/deepmerge/pull/121) - -# [2.2.0](https://github.com/TehShrike/deepmerge/releases/tag/v2.2.0) - -- feature: added TypeScript typings [#119](https://github.com/TehShrike/deepmerge/pull/119) - -# [2.1.1](https://github.com/TehShrike/deepmerge/releases/tag/v2.1.1) - -- documentation: Rename "methods" to "api", note ESM syntax [#103](https://github.com/TehShrike/deepmerge/pull/103) -- documentation: Fix grammar [#107](https://github.com/TehShrike/deepmerge/pull/107) -- documentation: Restructure headers for clarity + some wording tweaks [108](https://github.com/TehShrike/deepmerge/pull/108) + [109](https://github.com/TehShrike/deepmerge/pull/109) - - -# [2.1.0](https://github.com/TehShrike/deepmerge/releases/tag/v2.1.0) - -- feature: Support a custom `isMergeableObject` function [#96](https://github.com/TehShrike/deepmerge/pull/96) -- documentation: note a Webpack bug that some users might need to work around [#100](https://github.com/TehShrike/deepmerge/pull/100) - -# [2.0.1](https://github.com/TehShrike/deepmerge/releases/tag/v2.0.1) - -- documentation: fix the old array merge algorithm in the readme. [#84](https://github.com/TehShrike/deepmerge/pull/84) - -# [2.0.0](https://github.com/TehShrike/deepmerge/releases/tag/v2.0.0) - -- breaking: the array merge algorithm has changed from a complicated thing to `target.concat(source).map(element => cloneUnlessOtherwiseSpecified(element, optionsArgument))` -- breaking: The `clone` option now defaults to `true` -- feature: `merge.all` now accepts an array of any size, even 0 or 1 elements - -See [pull request 77](https://github.com/TehShrike/deepmerge/pull/77). - -# [1.5.2](https://github.com/TehShrike/deepmerge/releases/tag/v1.5.2) - -- fix: no longer attempts to merge React elements [#76](https://github.com/TehShrike/deepmerge/issues/76) - -# [1.5.1](https://github.com/TehShrike/deepmerge/releases/tag/v1.5.1) - -- bower support: officially dropping bower support. If you use bower, please depend on the [unpkg distribution](https://unpkg.com/deepmerge/dist/umd.js). See [#63](https://github.com/TehShrike/deepmerge/issues/63) - -# [1.5.0](https://github.com/TehShrike/deepmerge/releases/tag/v1.5.0) - -- bug fix: merging objects into arrays was allowed, and doesn't make any sense. [#65](https://github.com/TehShrike/deepmerge/issues/65) published as a feature release instead of a patch because it is a decent behavior change. - -# [1.4.4](https://github.com/TehShrike/deepmerge/releases/tag/v1.4.4) - -- bower support: updated `main` in bower.json - -# [1.4.3](https://github.com/TehShrike/deepmerge/releases/tag/v1.4.3) - -- bower support: inline is-mergeable-object in a new CommonJS build, so that people using both bower and CommonJS can bundle the library [0b34e6](https://github.com/TehShrike/deepmerge/commit/0b34e6e95f989f2fc8091d25f0d291c08f3d2d24) - -# [1.4.2](https://github.com/TehShrike/deepmerge/releases/tag/v1.4.2) - -- performance: bump is-mergeable-object dependency version for a slight performance improvement [5906c7](https://github.com/TehShrike/deepmerge/commit/5906c765d691d48e83d76efbb0d4b9ca150dc12c) - -# [1.4.1](https://github.com/TehShrike/deepmerge/releases/tag/v1.4.1) - -- documentation: fix unpkg link [acc45b](https://github.com/TehShrike/deepmerge/commit/acc45be85519c1df906a72ecb24764b622d18d47) - -# [1.4.0](https://github.com/TehShrike/deepmerge/releases/tag/v1.4.0) - -- api: instead of only exporting a UMD module, expose a UMD module with `pkg.main`, a CJS module with `pkg.browser`, and an ES module with `pkg.module` [#62](https://github.com/TehShrike/deepmerge/pull/62) - -# [1.3.2](https://github.com/TehShrike/deepmerge/releases/tag/v1.3.2) - -- documentation: note the minified/gzipped file sizes [56](https://github.com/TehShrike/deepmerge/pull/56) -- documentation: make data structures more readable in merge example: pull request [57](https://github.com/TehShrike/deepmerge/pull/57) - -# [1.3.1](https://github.com/TehShrike/deepmerge/releases/tag/v1.3.1) - -- documentation: clarify and test some array merging documentation: pull request [51](https://github.com/TehShrike/deepmerge/pull/51) - -# [1.3.0](https://github.com/TehShrike/deepmerge/releases/tag/v1.3.0) - -- feature: `merge.all`, a merge function that merges any number of objects: pull request [50](https://github.com/TehShrike/deepmerge/pull/50) - -# [1.2.0](https://github.com/TehShrike/deepmerge/releases/tag/v1.2.0) - -- fix: an error that would be thrown when an array would be merged onto a truthy non-array value: pull request [46](https://github.com/TehShrike/deepmerge/pull/46) -- feature: the ability to clone: Issue [28](https://github.com/TehShrike/deepmerge/issues/28), pull requests [44](https://github.com/TehShrike/deepmerge/pull/44) and [48](https://github.com/TehShrike/deepmerge/pull/48) -- maintenance: added tests + travis to `.npmignore`: pull request [47](https://github.com/TehShrike/deepmerge/pull/47) - -# [1.1.1](https://github.com/TehShrike/deepmerge/releases/tag/v1.1.1) - -- fix an issue where an error was thrown when merging an array onto a non-array: [Pull request 46](https://github.com/TehShrike/deepmerge/pull/46) - -# [1.1.0](https://github.com/TehShrike/deepmerge/releases/tag/v1.1.0) - -- allow consumers to specify their own array merging algorithm: [Pull request 37](https://github.com/TehShrike/deepmerge/pull/37) - -# [1.0.3](https://github.com/TehShrike/deepmerge/releases/tag/v1.0.3) - -- adding bower.json back: [Issue 38](https://github.com/TehShrike/deepmerge/pull/38) -- updating keywords and Github links in package.json [bc3898e](https://github.com/TehShrike/deepmerge/commit/bc3898e587a56f74591328f40f656b0152c1d5eb) - -# [1.0.2](https://github.com/TehShrike/deepmerge/releases/tag/v1.0.2) - -- Updating the readme: dropping bower, testing that the example works: [7102fc](https://github.com/TehShrike/deepmerge/commit/7102fcc4ddec11e2d33205866f9f18df14e5aeb5) - -# [1.0.1](https://github.com/TehShrike/deepmerge/releases/tag/v1.0.1) - -- `null`, dates, and regular expressions are now properly merged in arrays: [Issue 18](https://github.com/TehShrike/deepmerge/pull/18), plus commit: [ef1c6b](https://github.com/TehShrike/deepmerge/commit/ef1c6bac8350ba12a24966f0bc7da02560827586) - -# 1.0.0 - -- Should only be a patch change, because this module is READY. [Issue 15](https://github.com/TehShrike/deepmerge/issues/15) -- Regular expressions are now treated like primitive values when merging: [Issue 30](https://github.com/TehShrike/deepmerge/pull/30) -- Dates are now treated like primitives when merging: [Issue 31](https://github.com/TehShrike/deepmerge/issues/31) diff --git a/node_modules/deepmerge/dist/cjs.js b/node_modules/deepmerge/dist/cjs.js deleted file mode 100644 index 7c36cbd..0000000 --- a/node_modules/deepmerge/dist/cjs.js +++ /dev/null @@ -1,133 +0,0 @@ -'use strict'; - -var isMergeableObject = function isMergeableObject(value) { - return isNonNullObject(value) - && !isSpecial(value) -}; - -function isNonNullObject(value) { - return !!value && typeof value === 'object' -} - -function isSpecial(value) { - var stringValue = Object.prototype.toString.call(value); - - return stringValue === '[object RegExp]' - || stringValue === '[object Date]' - || isReactElement(value) -} - -// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25 -var canUseSymbol = typeof Symbol === 'function' && Symbol.for; -var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7; - -function isReactElement(value) { - return value.$$typeof === REACT_ELEMENT_TYPE -} - -function emptyTarget(val) { - return Array.isArray(val) ? [] : {} -} - -function cloneUnlessOtherwiseSpecified(value, options) { - return (options.clone !== false && options.isMergeableObject(value)) - ? deepmerge(emptyTarget(value), value, options) - : value -} - -function defaultArrayMerge(target, source, options) { - return target.concat(source).map(function(element) { - return cloneUnlessOtherwiseSpecified(element, options) - }) -} - -function getMergeFunction(key, options) { - if (!options.customMerge) { - return deepmerge - } - var customMerge = options.customMerge(key); - return typeof customMerge === 'function' ? customMerge : deepmerge -} - -function getEnumerableOwnPropertySymbols(target) { - return Object.getOwnPropertySymbols - ? Object.getOwnPropertySymbols(target).filter(function(symbol) { - return Object.propertyIsEnumerable.call(target, symbol) - }) - : [] -} - -function getKeys(target) { - return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)) -} - -function propertyIsOnObject(object, property) { - try { - return property in object - } catch(_) { - return false - } -} - -// Protects from prototype poisoning and unexpected merging up the prototype chain. -function propertyIsUnsafe(target, key) { - return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet, - && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain, - && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable. -} - -function mergeObject(target, source, options) { - var destination = {}; - if (options.isMergeableObject(target)) { - getKeys(target).forEach(function(key) { - destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); - }); - } - getKeys(source).forEach(function(key) { - if (propertyIsUnsafe(target, key)) { - return - } - - if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { - destination[key] = getMergeFunction(key, options)(target[key], source[key], options); - } else { - destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); - } - }); - return destination -} - -function deepmerge(target, source, options) { - options = options || {}; - options.arrayMerge = options.arrayMerge || defaultArrayMerge; - options.isMergeableObject = options.isMergeableObject || isMergeableObject; - // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge() - // implementations can use it. The caller may not replace it. - options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; - - var sourceIsArray = Array.isArray(source); - var targetIsArray = Array.isArray(target); - var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; - - if (!sourceAndTargetTypesMatch) { - return cloneUnlessOtherwiseSpecified(source, options) - } else if (sourceIsArray) { - return options.arrayMerge(target, source, options) - } else { - return mergeObject(target, source, options) - } -} - -deepmerge.all = function deepmergeAll(array, options) { - if (!Array.isArray(array)) { - throw new Error('first argument should be an array') - } - - return array.reduce(function(prev, next) { - return deepmerge(prev, next, options) - }, {}) -}; - -var deepmerge_1 = deepmerge; - -module.exports = deepmerge_1; diff --git a/node_modules/deepmerge/dist/umd.js b/node_modules/deepmerge/dist/umd.js deleted file mode 100644 index 4071e7c..0000000 --- a/node_modules/deepmerge/dist/umd.js +++ /dev/null @@ -1,139 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.deepmerge = factory()); -}(this, function () { 'use strict'; - - var isMergeableObject = function isMergeableObject(value) { - return isNonNullObject(value) - && !isSpecial(value) - }; - - function isNonNullObject(value) { - return !!value && typeof value === 'object' - } - - function isSpecial(value) { - var stringValue = Object.prototype.toString.call(value); - - return stringValue === '[object RegExp]' - || stringValue === '[object Date]' - || isReactElement(value) - } - - // see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25 - var canUseSymbol = typeof Symbol === 'function' && Symbol.for; - var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7; - - function isReactElement(value) { - return value.$$typeof === REACT_ELEMENT_TYPE - } - - function emptyTarget(val) { - return Array.isArray(val) ? [] : {} - } - - function cloneUnlessOtherwiseSpecified(value, options) { - return (options.clone !== false && options.isMergeableObject(value)) - ? deepmerge(emptyTarget(value), value, options) - : value - } - - function defaultArrayMerge(target, source, options) { - return target.concat(source).map(function(element) { - return cloneUnlessOtherwiseSpecified(element, options) - }) - } - - function getMergeFunction(key, options) { - if (!options.customMerge) { - return deepmerge - } - var customMerge = options.customMerge(key); - return typeof customMerge === 'function' ? customMerge : deepmerge - } - - function getEnumerableOwnPropertySymbols(target) { - return Object.getOwnPropertySymbols - ? Object.getOwnPropertySymbols(target).filter(function(symbol) { - return Object.propertyIsEnumerable.call(target, symbol) - }) - : [] - } - - function getKeys(target) { - return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)) - } - - function propertyIsOnObject(object, property) { - try { - return property in object - } catch(_) { - return false - } - } - - // Protects from prototype poisoning and unexpected merging up the prototype chain. - function propertyIsUnsafe(target, key) { - return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet, - && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain, - && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable. - } - - function mergeObject(target, source, options) { - var destination = {}; - if (options.isMergeableObject(target)) { - getKeys(target).forEach(function(key) { - destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); - }); - } - getKeys(source).forEach(function(key) { - if (propertyIsUnsafe(target, key)) { - return - } - - if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { - destination[key] = getMergeFunction(key, options)(target[key], source[key], options); - } else { - destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); - } - }); - return destination - } - - function deepmerge(target, source, options) { - options = options || {}; - options.arrayMerge = options.arrayMerge || defaultArrayMerge; - options.isMergeableObject = options.isMergeableObject || isMergeableObject; - // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge() - // implementations can use it. The caller may not replace it. - options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; - - var sourceIsArray = Array.isArray(source); - var targetIsArray = Array.isArray(target); - var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; - - if (!sourceAndTargetTypesMatch) { - return cloneUnlessOtherwiseSpecified(source, options) - } else if (sourceIsArray) { - return options.arrayMerge(target, source, options) - } else { - return mergeObject(target, source, options) - } - } - - deepmerge.all = function deepmergeAll(array, options) { - if (!Array.isArray(array)) { - throw new Error('first argument should be an array') - } - - return array.reduce(function(prev, next) { - return deepmerge(prev, next, options) - }, {}) - }; - - var deepmerge_1 = deepmerge; - - return deepmerge_1; - -})); diff --git a/node_modules/deepmerge/index.d.ts b/node_modules/deepmerge/index.d.ts deleted file mode 100644 index 46784de..0000000 --- a/node_modules/deepmerge/index.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -declare function deepmerge(x: Partial, y: Partial, options?: deepmerge.Options): T; -declare function deepmerge(x: Partial, y: Partial, options?: deepmerge.Options): T1 & T2; - -declare namespace deepmerge { - export interface Options { - arrayMerge?(target: any[], source: any[], options?: ArrayMergeOptions): any[]; - clone?: boolean; - customMerge?: (key: string, options?: Options) => ((x: any, y: any) => any) | undefined; - isMergeableObject?(value: object): boolean; - } - export interface ArrayMergeOptions { - isMergeableObject(value: object): boolean; - cloneUnlessOtherwiseSpecified(value: object, options?: Options): object; - } - - export function all (objects: object[], options?: Options): object; - export function all (objects: Partial[], options?: Options): T; -} - -export = deepmerge; diff --git a/node_modules/deepmerge/index.js b/node_modules/deepmerge/index.js deleted file mode 100644 index 77968ae..0000000 --- a/node_modules/deepmerge/index.js +++ /dev/null @@ -1,106 +0,0 @@ -var defaultIsMergeableObject = require('is-mergeable-object') - -function emptyTarget(val) { - return Array.isArray(val) ? [] : {} -} - -function cloneUnlessOtherwiseSpecified(value, options) { - return (options.clone !== false && options.isMergeableObject(value)) - ? deepmerge(emptyTarget(value), value, options) - : value -} - -function defaultArrayMerge(target, source, options) { - return target.concat(source).map(function(element) { - return cloneUnlessOtherwiseSpecified(element, options) - }) -} - -function getMergeFunction(key, options) { - if (!options.customMerge) { - return deepmerge - } - var customMerge = options.customMerge(key) - return typeof customMerge === 'function' ? customMerge : deepmerge -} - -function getEnumerableOwnPropertySymbols(target) { - return Object.getOwnPropertySymbols - ? Object.getOwnPropertySymbols(target).filter(function(symbol) { - return Object.propertyIsEnumerable.call(target, symbol) - }) - : [] -} - -function getKeys(target) { - return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)) -} - -function propertyIsOnObject(object, property) { - try { - return property in object - } catch(_) { - return false - } -} - -// Protects from prototype poisoning and unexpected merging up the prototype chain. -function propertyIsUnsafe(target, key) { - return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet, - && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain, - && Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable. -} - -function mergeObject(target, source, options) { - var destination = {} - if (options.isMergeableObject(target)) { - getKeys(target).forEach(function(key) { - destination[key] = cloneUnlessOtherwiseSpecified(target[key], options) - }) - } - getKeys(source).forEach(function(key) { - if (propertyIsUnsafe(target, key)) { - return - } - - if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { - destination[key] = getMergeFunction(key, options)(target[key], source[key], options) - } else { - destination[key] = cloneUnlessOtherwiseSpecified(source[key], options) - } - }) - return destination -} - -function deepmerge(target, source, options) { - options = options || {} - options.arrayMerge = options.arrayMerge || defaultArrayMerge - options.isMergeableObject = options.isMergeableObject || defaultIsMergeableObject - // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge() - // implementations can use it. The caller may not replace it. - options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified - - var sourceIsArray = Array.isArray(source) - var targetIsArray = Array.isArray(target) - var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray - - if (!sourceAndTargetTypesMatch) { - return cloneUnlessOtherwiseSpecified(source, options) - } else if (sourceIsArray) { - return options.arrayMerge(target, source, options) - } else { - return mergeObject(target, source, options) - } -} - -deepmerge.all = function deepmergeAll(array, options) { - if (!Array.isArray(array)) { - throw new Error('first argument should be an array') - } - - return array.reduce(function(prev, next) { - return deepmerge(prev, next, options) - }, {}) -} - -module.exports = deepmerge diff --git a/node_modules/deepmerge/license.txt b/node_modules/deepmerge/license.txt deleted file mode 100644 index 5003078..0000000 --- a/node_modules/deepmerge/license.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 James Halliday, Josh Duff, and other contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/deepmerge/package.json b/node_modules/deepmerge/package.json deleted file mode 100644 index dfb82d0..0000000 --- a/node_modules/deepmerge/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "_from": "deepmerge@^4.2.2", - "_id": "deepmerge@4.3.1", - "_inBundle": false, - "_integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "_location": "/deepmerge", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "deepmerge@^4.2.2", - "name": "deepmerge", - "escapedName": "deepmerge", - "rawSpec": "^4.2.2", - "saveSpec": null, - "fetchSpec": "^4.2.2" - }, - "_requiredBy": [ - "/vuex-persistedstate" - ], - "_resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "_shasum": "44b5f2147cd3b00d4b56137685966f26fd25dd4a", - "_spec": "deepmerge@^4.2.2", - "_where": "D:\\work\\云美\\legalAffairs-app\\node_modules\\vuex-persistedstate", - "bugs": { - "url": "https://github.com/TehShrike/deepmerge/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "A library for deep (recursive) merging of Javascript objects", - "devDependencies": { - "@types/node": "^8.10.54", - "is-mergeable-object": "1.1.0", - "is-plain-object": "^5.0.0", - "jsmd": "^1.0.2", - "rollup": "^1.23.1", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-resolve": "^5.2.0", - "tape": "^4.11.0", - "ts-node": "7.0.1", - "typescript": "=2.2.2", - "uglify-js": "^3.6.1" - }, - "engines": { - "node": ">=0.10.0" - }, - "homepage": "https://github.com/TehShrike/deepmerge", - "keywords": [ - "merge", - "deep", - "extend", - "copy", - "clone", - "recursive" - ], - "license": "MIT", - "main": "dist/cjs.js", - "name": "deepmerge", - "repository": { - "type": "git", - "url": "git://github.com/TehShrike/deepmerge.git" - }, - "scripts": { - "build": "rollup -c", - "size": "npm run build && uglifyjs --compress --mangle -- ./dist/umd.js | gzip -c | wc -c", - "test": "npm run build && tape test/*.js && jsmd readme.md && npm run test:typescript", - "test:typescript": "tsc --noEmit test/typescript.ts && ts-node test/typescript.ts" - }, - "version": "4.3.1" -} diff --git a/node_modules/deepmerge/readme.md b/node_modules/deepmerge/readme.md deleted file mode 100644 index 79e4e30..0000000 --- a/node_modules/deepmerge/readme.md +++ /dev/null @@ -1,264 +0,0 @@ -# deepmerge - -Merges the enumerable properties of two or more objects deeply. - -> UMD bundle is 723B minified+gzipped - -## Getting Started - -### Example Usage - - -```js -const x = { - foo: { bar: 3 }, - array: [{ - does: 'work', - too: [ 1, 2, 3 ] - }] -} - -const y = { - foo: { baz: 4 }, - quux: 5, - array: [{ - does: 'work', - too: [ 4, 5, 6 ] - }, { - really: 'yes' - }] -} - -const output = { - foo: { - bar: 3, - baz: 4 - }, - array: [{ - does: 'work', - too: [ 1, 2, 3 ] - }, { - does: 'work', - too: [ 4, 5, 6 ] - }, { - really: 'yes' - }], - quux: 5 -} - -merge(x, y) // => output -``` - - -### Installation - -With [npm](http://npmjs.org) do: - -```sh -npm install deepmerge -``` - -deepmerge can be used directly in the browser without the use of package managers/bundlers as well: [UMD version from unpkg.com](https://unpkg.com/deepmerge/dist/umd.js). - - -### Include - -deepmerge exposes a CommonJS entry point: - -``` -const merge = require('deepmerge') -``` - -The ESM entry point was dropped due to a [Webpack bug](https://github.com/webpack/webpack/issues/6584). - -# API - - -## `merge(x, y, [options])` - -Merge two objects `x` and `y` deeply, returning a new merged object with the -elements from both `x` and `y`. - -If an element at the same key is present for both `x` and `y`, the value from -`y` will appear in the result. - -Merging creates a new object, so that neither `x` or `y` is modified. - -**Note:** By default, arrays are merged by concatenating them. - -## `merge.all(arrayOfObjects, [options])` - -Merges any number of objects into a single result object. - -```js -const foobar = { foo: { bar: 3 } } -const foobaz = { foo: { baz: 4 } } -const bar = { bar: 'yay!' } - -merge.all([ foobar, foobaz, bar ]) // => { foo: { bar: 3, baz: 4 }, bar: 'yay!' } -``` - - -## Options - -### `arrayMerge` - -There are multiple ways to merge two arrays, below are a few examples but you can also create your own custom function. - -Your `arrayMerge` function will be called with three arguments: a `target` array, the `source` array, and an `options` object with these properties: - -- `isMergeableObject(value)` -- `cloneUnlessOtherwiseSpecified(value, options)` - -#### `arrayMerge` example: overwrite target array - -Overwrites the existing array values completely rather than concatenating them: - -```js -const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray - -merge( - [1, 2, 3], - [3, 2, 1], - { arrayMerge: overwriteMerge } -) // => [3, 2, 1] -``` - -#### `arrayMerge` example: combine arrays - -Combines objects at the same index in the two arrays. - -This was the default array merging algorithm pre-version-2.0.0. - -```js -const combineMerge = (target, source, options) => { - const destination = target.slice() - - source.forEach((item, index) => { - if (typeof destination[index] === 'undefined') { - destination[index] = options.cloneUnlessOtherwiseSpecified(item, options) - } else if (options.isMergeableObject(item)) { - destination[index] = merge(target[index], item, options) - } else if (target.indexOf(item) === -1) { - destination.push(item) - } - }) - return destination -} - -merge( - [{ a: true }], - [{ b: true }, 'ah yup'], - { arrayMerge: combineMerge } -) // => [{ a: true, b: true }, 'ah yup'] -``` - -### `isMergeableObject` - -By default, deepmerge clones every property from almost every kind of object. - -You may not want this, if your objects are of special types, and you want to copy the whole object instead of just copying its properties. - -You can accomplish this by passing in a function for the `isMergeableObject` option. - -If you only want to clone properties of plain objects, and ignore all "special" kinds of instantiated objects, you probably want to drop in [`is-plain-object`](https://github.com/jonschlinkert/is-plain-object). - -```js -const { isPlainObject } = require('is-plain-object') - -function SuperSpecial() { - this.special = 'oh yeah man totally' -} - -const instantiatedSpecialObject = new SuperSpecial() - -const target = { - someProperty: { - cool: 'oh for sure' - } -} - -const source = { - someProperty: instantiatedSpecialObject -} - -const defaultOutput = merge(target, source) - -defaultOutput.someProperty.cool // => 'oh for sure' -defaultOutput.someProperty.special // => 'oh yeah man totally' -defaultOutput.someProperty instanceof SuperSpecial // => false - -const customMergeOutput = merge(target, source, { - isMergeableObject: isPlainObject -}) - -customMergeOutput.someProperty.cool // => undefined -customMergeOutput.someProperty.special // => 'oh yeah man totally' -customMergeOutput.someProperty instanceof SuperSpecial // => true -``` - -### `customMerge` - -Specifies a function which can be used to override the default merge behavior for a property, based on the property name. - -The `customMerge` function will be passed the key for each property, and should return the function which should be used to merge the values for that property. - -It may also return undefined, in which case the default merge behaviour will be used. - -```js -const alex = { - name: { - first: 'Alex', - last: 'Alexson' - }, - pets: ['Cat', 'Parrot'] -} - -const tony = { - name: { - first: 'Tony', - last: 'Tonison' - }, - pets: ['Dog'] -} - -const mergeNames = (nameA, nameB) => `${nameA.first} and ${nameB.first}` - -const options = { - customMerge: (key) => { - if (key === 'name') { - return mergeNames - } - } -} - -const result = merge(alex, tony, options) - -result.name // => 'Alex and Tony' -result.pets // => ['Cat', 'Parrot', 'Dog'] -``` - - -### `clone` - -*Deprecated.* - -Defaults to `true`. - -If `clone` is `false` then child objects will be copied directly instead of being cloned. This was the default behavior before version 2.x. - - -# Testing - -With [npm](http://npmjs.org) do: - -```sh -npm test -``` - - -# License - -MIT diff --git a/node_modules/deepmerge/rollup.config.js b/node_modules/deepmerge/rollup.config.js deleted file mode 100644 index 8323ab2..0000000 --- a/node_modules/deepmerge/rollup.config.js +++ /dev/null @@ -1,22 +0,0 @@ -import resolve from 'rollup-plugin-node-resolve' -import commonjs from 'rollup-plugin-commonjs' -import pkg from './package.json' - -export default { - input: `index.js`, - plugins: [ - commonjs(), - resolve(), - ], - output: [ - { - file: pkg.main, - format: `cjs` - }, - { - name: 'deepmerge', - file: 'dist/umd.js', - format: `umd` - }, - ], -} diff --git a/node_modules/shvl/CHANGELOG.md b/node_modules/shvl/CHANGELOG.md deleted file mode 100644 index 4c5c6f5..0000000 --- a/node_modules/shvl/CHANGELOG.md +++ /dev/null @@ -1,4 +0,0 @@ -# Changelog - -This project adheres to [Semantic Versioning](http://semver.org/). -Every release is documented on the Github [Releases](https://github.com/robinvdvleuten/shvl/releases) page. diff --git a/node_modules/shvl/LICENSE b/node_modules/shvl/LICENSE deleted file mode 100644 index b9e0834..0000000 --- a/node_modules/shvl/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) Robin van der Vleuten - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/shvl/README.md b/node_modules/shvl/README.md deleted file mode 100644 index 402cc75..0000000 --- a/node_modules/shvl/README.md +++ /dev/null @@ -1,86 +0,0 @@ -# shvl - -Get and set dot-notated properties within an object. - - - -
- -[![Build Status](https://img.shields.io/github/workflow/status/robinvdvleuten/shvl/test.svg)](https://github.com/robinvdvleuten/shvl/actions?query=workflow%3Atest) -[![NPM version](https://img.shields.io/npm/v/shvl.svg)](https://www.npmjs.com/package/shvl) -[![NPM downloads](https://img.shields.io/npm/dm/shvl.svg)](https://www.npmjs.com/package/shvl) -[![MIT license](https://img.shields.io/github/license/robinvdvleuten/shvl.svg)](https://github.com/robinvdvleuten/shvl/blob/master/LICENSE) - -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com) - -
- Sponsored by The Webstronauts - - -## Installation - -``` -npm install --save shvl -``` - -The [UMD](https://github.com/umdjs/umd) build is also available on [unpkg](https://unpkg.com/shvl/dist/shvl.umd.js): - -``` - -``` - -This exposes the shlv object as a global. - -## Usage - -```js -import * as shvl from 'shvl'; - -let obj = { - a: { - b: { - c: 1 - d: undefined - e: null - } - } -}; - -// Use dot notation for keys -shvl.set(obj, 'a.b.c', 2); -shvl.get(obj, 'a.b.c') === 2; - -// Or use an array as key -shvl.get(obj, ['a', 'b', 'c']) === 1; - -// Returns undefined if the path does not exist and no default is specified -shvl.get(obj, 'a.b.c.f') === undefined; -``` - -## Changelog - -Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently. - -## Contributors ✨ - -Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): - - - - - - - - - -

Robin van der Vleuten

💬 💻 📖 💡 🤔 🚇 👀 ⚠️

ajenkinski

💻
- - - - - -This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! - -## License - -The MIT License (MIT). Please see [License File](LICENSE) for more information. diff --git a/node_modules/shvl/dist/shvl.js b/node_modules/shvl/dist/shvl.js deleted file mode 100644 index 733bf4d..0000000 --- a/node_modules/shvl/dist/shvl.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.get=function(t,e,r){return void 0===(t=(e.split?e.split("."):e).reduce(function(t,e){return t&&t[e]},t))?r:t},exports.set=function(t,e,r,o){return!/^(__proto__|constructor|prototype)$/.test(e)&&((e=e.split?e.split("."):e.slice(0)).slice(0,-1).reduce(function(t,e){return t[e]=t[e]||{}},t)[e.pop()]=r),t}; -//# sourceMappingURL=shvl.js.map diff --git a/node_modules/shvl/dist/shvl.js.map b/node_modules/shvl/dist/shvl.js.map deleted file mode 100644 index 0c8e547..0000000 --- a/node_modules/shvl/dist/shvl.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"shvl.js","sources":["../index.js"],"sourcesContent":["export function get (object, path, def) {\n return (object = (path.split ? path.split('.') : path).reduce(function (obj, p) {\n return obj && obj[p]\n }, object)) === undefined ? def : object;\n};\n\nexport function set (object, path, val, obj) {\n return !/^(__proto__|constructor|prototype)$/.test(path) && ((path = path.split ? path.split('.') : path.slice(0)).slice(0, -1).reduce(function (obj, p) {\n return obj[p] = obj[p] || {};\n }, obj = object)[path.pop()] = val), object;\n};\n"],"names":["object","path","def","undefined","split","reduce","obj","p","val","test","slice","pop"],"mappings":"qBAAqBA,EAAQC,EAAMC,GACjC,YAEgBC,KAFRH,GAAUC,EAAKG,MAAQH,EAAKG,MAAM,KAAOH,GAAMI,OAAO,SAAUC,EAAKC,GAC3E,OAAOD,GAAOA,EAAIC,IACjBP,IAAyBE,EAAMF,wBAGdA,EAAQC,EAAMO,EAAKF,GACvC,OAAQ,sCAAsCG,KAAKR,MAAWA,EAAOA,EAAKG,MAAQH,EAAKG,MAAM,KAAOH,EAAKS,MAAM,IAAIA,MAAM,GAAI,GAAGL,OAAO,SAAUC,EAAKC,GACpJ,OAAOD,EAAIC,GAAKD,EAAIC,IAAM,IACnBP,GAAQC,EAAKU,OAASH,GAAMR"} \ No newline at end of file diff --git a/node_modules/shvl/dist/shvl.mjs b/node_modules/shvl/dist/shvl.mjs deleted file mode 100644 index 107f608..0000000 --- a/node_modules/shvl/dist/shvl.mjs +++ /dev/null @@ -1,2 +0,0 @@ -function t(t,r,e){return void 0===(t=(r.split?r.split("."):r).reduce(function(t,r){return t&&t[r]},t))?e:t}function r(t,r,e,n){return!/^(__proto__|constructor|prototype)$/.test(r)&&((r=r.split?r.split("."):r.slice(0)).slice(0,-1).reduce(function(t,r){return t[r]=t[r]||{}},t)[r.pop()]=e),t}export{t as get,r as set}; -//# sourceMappingURL=shvl.mjs.map diff --git a/node_modules/shvl/dist/shvl.mjs.map b/node_modules/shvl/dist/shvl.mjs.map deleted file mode 100644 index 09cc606..0000000 --- a/node_modules/shvl/dist/shvl.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"shvl.mjs","sources":["../index.js"],"sourcesContent":["export function get (object, path, def) {\n return (object = (path.split ? path.split('.') : path).reduce(function (obj, p) {\n return obj && obj[p]\n }, object)) === undefined ? def : object;\n};\n\nexport function set (object, path, val, obj) {\n return !/^(__proto__|constructor|prototype)$/.test(path) && ((path = path.split ? path.split('.') : path.slice(0)).slice(0, -1).reduce(function (obj, p) {\n return obj[p] = obj[p] || {};\n }, obj = object)[path.pop()] = val), object;\n};\n"],"names":["get","object","path","def","undefined","split","reduce","obj","p","set","val","test","slice","pop"],"mappings":"SAAgBA,EAAKC,EAAQC,EAAMC,GACjC,YAEgBC,KAFRH,GAAUC,EAAKG,MAAQH,EAAKG,MAAM,KAAOH,GAAMI,OAAO,SAAUC,EAAKC,GAC3E,OAAOD,GAAOA,EAAIC,IACjBP,IAAyBE,EAAMF,WAGpBQ,EAAMR,EAAQC,EAAMQ,EAAKH,GACvC,OAAQ,sCAAsCI,KAAKT,MAAWA,EAAOA,EAAKG,MAAQH,EAAKG,MAAM,KAAOH,EAAKU,MAAM,IAAIA,MAAM,GAAI,GAAGN,OAAO,SAAUC,EAAKC,GACpJ,OAAOD,EAAIC,GAAKD,EAAIC,IAAM,IACnBP,GAAQC,EAAKW,OAASH,GAAMT"} \ No newline at end of file diff --git a/node_modules/shvl/dist/shvl.modern.js b/node_modules/shvl/dist/shvl.modern.js deleted file mode 100644 index 6482cd9..0000000 --- a/node_modules/shvl/dist/shvl.modern.js +++ /dev/null @@ -1,2 +0,0 @@ -function t(t,r,e){return void 0===(t=(r.split?r.split("."):r).reduce(function(t,r){return t&&t[r]},t))?e:t}function r(t,r,e,n){return!/^(__proto__|constructor|prototype)$/.test(r)&&((r=r.split?r.split("."):r.slice(0)).slice(0,-1).reduce(function(t,r){return t[r]=t[r]||{}},t)[r.pop()]=e),t}export{t as get,r as set}; -//# sourceMappingURL=shvl.modern.js.map diff --git a/node_modules/shvl/dist/shvl.modern.js.map b/node_modules/shvl/dist/shvl.modern.js.map deleted file mode 100644 index db69dde..0000000 --- a/node_modules/shvl/dist/shvl.modern.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"shvl.modern.js","sources":["../index.js"],"sourcesContent":["export function get (object, path, def) {\n return (object = (path.split ? path.split('.') : path).reduce(function (obj, p) {\n return obj && obj[p]\n }, object)) === undefined ? def : object;\n};\n\nexport function set (object, path, val, obj) {\n return !/^(__proto__|constructor|prototype)$/.test(path) && ((path = path.split ? path.split('.') : path.slice(0)).slice(0, -1).reduce(function (obj, p) {\n return obj[p] = obj[p] || {};\n }, obj = object)[path.pop()] = val), object;\n};\n"],"names":["get","object","path","def","undefined","split","reduce","obj","p","set","val","test","slice","pop"],"mappings":"SAAgBA,EAAKC,EAAQC,EAAMC,GACjC,YAEgBC,KAFRH,GAAUC,EAAKG,MAAQH,EAAKG,MAAM,KAAOH,GAAMI,OAAO,SAAUC,EAAKC,GAC3E,OAAOD,GAAOA,EAAIC,IACjBP,IAAyBE,EAAMF,WAGpBQ,EAAMR,EAAQC,EAAMQ,EAAKH,GACvC,OAAQ,sCAAsCI,KAAKT,MAAWA,EAAOA,EAAKG,MAAQH,EAAKG,MAAM,KAAOH,EAAKU,MAAM,IAAIA,MAAM,GAAI,GAAGN,OAAO,SAAUC,EAAKC,GACpJ,OAAOD,EAAIC,GAAKD,EAAIC,IAAM,IACnBP,GAAQC,EAAKW,OAASH,GAAMT"} \ No newline at end of file diff --git a/node_modules/shvl/dist/shvl.umd.js b/node_modules/shvl/dist/shvl.umd.js deleted file mode 100644 index f80fa78..0000000 --- a/node_modules/shvl/dist/shvl.umd.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).shvl={})}(this,function(t){t.get=function(t,e,n){return void 0===(t=(e.split?e.split("."):e).reduce(function(t,e){return t&&t[e]},t))?n:t},t.set=function(t,e,n,o){return!/^(__proto__|constructor|prototype)$/.test(e)&&((e=e.split?e.split("."):e.slice(0)).slice(0,-1).reduce(function(t,e){return t[e]=t[e]||{}},t)[e.pop()]=n),t}}); -//# sourceMappingURL=shvl.umd.js.map diff --git a/node_modules/shvl/dist/shvl.umd.js.map b/node_modules/shvl/dist/shvl.umd.js.map deleted file mode 100644 index 78063e0..0000000 --- a/node_modules/shvl/dist/shvl.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"shvl.umd.js","sources":["../index.js"],"sourcesContent":["export function get (object, path, def) {\n return (object = (path.split ? path.split('.') : path).reduce(function (obj, p) {\n return obj && obj[p]\n }, object)) === undefined ? def : object;\n};\n\nexport function set (object, path, val, obj) {\n return !/^(__proto__|constructor|prototype)$/.test(path) && ((path = path.split ? path.split('.') : path.slice(0)).slice(0, -1).reduce(function (obj, p) {\n return obj[p] = obj[p] || {};\n }, obj = object)[path.pop()] = val), object;\n};\n"],"names":["object","path","def","undefined","split","reduce","obj","p","val","test","slice","pop"],"mappings":"mMAAqBA,EAAQC,EAAMC,GACjC,YAEgBC,KAFRH,GAAUC,EAAKG,MAAQH,EAAKG,MAAM,KAAOH,GAAMI,OAAO,SAAUC,EAAKC,GAC3E,OAAOD,GAAOA,EAAIC,IACjBP,IAAyBE,EAAMF,kBAGdA,EAAQC,EAAMO,EAAKF,GACvC,OAAQ,sCAAsCG,KAAKR,MAAWA,EAAOA,EAAKG,MAAQH,EAAKG,MAAM,KAAOH,EAAKS,MAAM,IAAIA,MAAM,GAAI,GAAGL,OAAO,SAAUC,EAAKC,GACpJ,OAAOD,EAAIC,GAAKD,EAAIC,IAAM,IACnBP,GAAQC,EAAKU,OAASH,GAAMR"} \ No newline at end of file diff --git a/node_modules/shvl/index.d.ts b/node_modules/shvl/index.d.ts deleted file mode 100644 index e925dfb..0000000 --- a/node_modules/shvl/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export function get (object: object, path: string|string[], def?: any): any; -export function set (object: object, path: string|string[], val: any): any; diff --git a/node_modules/shvl/index.js b/node_modules/shvl/index.js deleted file mode 100644 index 53e25ee..0000000 --- a/node_modules/shvl/index.js +++ /dev/null @@ -1,11 +0,0 @@ -export function get (object, path, def) { - return (object = (path.split ? path.split('.') : path).reduce(function (obj, p) { - return obj && obj[p] - }, object)) === undefined ? def : object; -}; - -export function set (object, path, val, obj) { - return !/^(__proto__|constructor|prototype)$/.test(path) && ((path = path.split ? path.split('.') : path.slice(0)).slice(0, -1).reduce(function (obj, p) { - return obj[p] = obj[p] || {}; - }, obj = object)[path.pop()] = val), object; -}; diff --git a/node_modules/shvl/package.json b/node_modules/shvl/package.json deleted file mode 100644 index 4091d9f..0000000 --- a/node_modules/shvl/package.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_from": "shvl@^2.0.3", - "_id": "shvl@2.0.3", - "_inBundle": false, - "_integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==", - "_location": "/shvl", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "shvl@^2.0.3", - "name": "shvl", - "escapedName": "shvl", - "rawSpec": "^2.0.3", - "saveSpec": null, - "fetchSpec": "^2.0.3" - }, - "_requiredBy": [ - "/vuex-persistedstate" - ], - "_resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz", - "_shasum": "eb4bd37644f5684bba1fc52c3010c96fb5e6afd1", - "_spec": "shvl@^2.0.3", - "_where": "D:\\work\\云美\\legalAffairs-app\\node_modules\\vuex-persistedstate", - "author": { - "name": "Robin van der Vleuten", - "email": "robin@webstronauts.co" - }, - "babel": { - "presets": [ - "@babel/preset-env" - ] - }, - "bugs": { - "url": "https://github.com/robinvdvleuten/shvl/issues" - }, - "bundleDependencies": false, - "bundlesize": [ - { - "path": "./dist/*.js", - "threshold": "300b" - } - ], - "deprecated": "older versions vulnerable to prototype pollution", - "description": "Get and set dot-notated properties within an object", - "devDependencies": { - "@babel/core": "^7.0.0", - "@babel/preset-env": "^7.0.0", - "babel-jest": "^26.2.2", - "bundlesize": "^0.18.0", - "jest": "^26.5.3", - "jest-in-case": "^1.0.2", - "microbundle": "^0.13.0", - "npm-run-all": "^4.1.2" - }, - "files": [ - "dist", - "index.d.ts", - "index.js" - ], - "homepage": "https://github.com/robinvdvleuten/shvl#readme", - "keywords": [ - "path", - "dot notation", - "dot" - ], - "license": "MIT", - "main": "dist/shvl.js", - "module": "dist/shvl.mjs", - "name": "shvl", - "repository": { - "type": "git", - "url": "git+https://github.com/robinvdvleuten/shvl.git" - }, - "scripts": { - "build": "microbundle", - "prepare": "run-s build", - "test": "run-p test:**", - "test:jest": "jest --env=jsdom", - "test:size": "bundlesize" - }, - "source": "index.js", - "typings": "index.d.ts", - "unpkg": "dist/shvl.umd.js", - "version": "2.0.3" -} diff --git a/node_modules/vuex-persistedstate/CHANGELOG.md b/node_modules/vuex-persistedstate/CHANGELOG.md deleted file mode 100644 index f4b171b..0000000 --- a/node_modules/vuex-persistedstate/CHANGELOG.md +++ /dev/null @@ -1,4 +0,0 @@ -# Changelog - -This project adheres to [Semantic Versioning](http://semver.org/). -Every release is documented on the Github [Releases](https://github.com/robinvdvleuten/vuex-persistedstate/releases) page. diff --git a/node_modules/vuex-persistedstate/README.md b/node_modules/vuex-persistedstate/README.md deleted file mode 100644 index 6cfd6ea..0000000 --- a/node_modules/vuex-persistedstate/README.md +++ /dev/null @@ -1,326 +0,0 @@ -# vuex-persistedstate - -Persist and rehydrate your [Vuex](http://vuex.vuejs.org/) state between page reloads. - -
- -[![Build Status](https://img.shields.io/github/workflow/status/robinvdvleuten/vuex-persistedstate/test.svg)](https://github.com/robinvdvleuten/vuex-persistedstate/actions?query=workflow%3Atest) -[![NPM version](https://img.shields.io/npm/v/vuex-persistedstate.svg)](https://www.npmjs.com/package/vuex-persistedstate) -[![NPM downloads](https://img.shields.io/npm/dm/vuex-persistedstate.svg)](https://www.npmjs.com/package/vuex-persistedstate) -[![Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg)](https://github.com/prettier/prettier) -[![MIT license](https://img.shields.io/github/license/robinvdvleuten/vuex-persistedstate.svg)](https://github.com/robinvdvleuten/vuex-persistedstate/blob/master/LICENSE) - -[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com) -[![Code Of Conduct](https://img.shields.io/badge/code%20of-conduct-ff69b4.svg)](https://github.com/robinvdvleuten/vuex-persistedstate/blob/master/.github/CODE_OF_CONDUCT.md) - - - Sponsored by The Webstronauts - - -## Install - -```bash -npm install --save vuex-persistedstate -``` - -The [UMD](https://github.com/umdjs/umd) build is also available on [unpkg](https://unpkg.com): - -```html - -``` - -You can find the library on `window.createPersistedState`. - -## Usage - -```js -import { createStore } from "vuex"; -import createPersistedState from "vuex-persistedstate"; - -const store = createStore({ - // ... - plugins: [createPersistedState()], -}); -``` - -For usage with for Vuex 3 and Vue 2, please see [3.x.x branch](https://github.com/robinvdvleuten/vuex-persistedstate/tree/3.x.x). - -## Examples - -Check out a basic example on [CodeSandbox](https://codesandbox.io). - -[![Edit vuex-persistedstate](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/80k4m2598) - -Or configured to use with [js-cookie](https://github.com/js-cookie/js-cookie). - -[![Edit vuex-persistedstate with js-cookie](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/xl356qvvkz) - -Or configured to use with [secure-ls](https://github.com/softvar/secure-ls) - -[![Edit vuex-persistedstate with secure-ls (encrypted data)](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/vuex-persistedstate-with-secure-ls-encrypted-data-7l9wb?fontsize=14) - -### Example with Vuex modules - -New plugin instances can be created in separate files, but must be imported and added to plugins object in the main Vuex file. - -```js -/* module.js */ -export const dataStore = { - state: { - data: [] - } -} - -/* store.js */ -import { dataStore } from './module' - -const dataState = createPersistedState({ - paths: ['data'] -}) - -export new Vuex.Store({ - modules: { - dataStore - }, - plugins: [dataState] -}) -``` - -### Example with Nuxt.js - -It is possible to use vuex-persistedstate with Nuxt.js. It must be included as a NuxtJS plugin: - -#### With local storage (client-side only) - -```javascript -// nuxt.config.js - -... -/* - * Naming your plugin 'xxx.client.js' will make it execute only on the client-side. - * https://nuxtjs.org/guide/plugins/#name-conventional-plugin - */ -plugins: [{ src: '~/plugins/persistedState.client.js' }] -... -``` - -```javascript -// ~/plugins/persistedState.client.js - -import createPersistedState from 'vuex-persistedstate' - -export default ({store}) => { - createPersistedState({ - key: 'yourkey', - paths: [...] - ... - })(store) -} -``` - -#### Using cookies (universal client + server-side) - -Add `cookie` and `js-cookie`: - -`npm install --save cookie js-cookie` -or `yarn add cookie js-cookie` - -```javascript -// nuxt.config.js -... -plugins: [{ src: '~/plugins/persistedState.js'}] -... -``` - -```javascript -// ~/plugins/persistedState.js - -import createPersistedState from 'vuex-persistedstate'; -import * as Cookies from 'js-cookie'; -import cookie from 'cookie'; - -export default ({ store, req }) => { - createPersistedState({ - paths: [...], - storage: { - getItem: (key) => { - // See https://nuxtjs.org/guide/plugins/#using-process-flags - if (process.server) { - const parsedCookies = cookie.parse(req.headers.cookie); - return parsedCookies[key]; - } else { - return Cookies.get(key); - } - }, - // Please see https://github.com/js-cookie/js-cookie#json, on how to handle JSON. - setItem: (key, value) => - Cookies.set(key, value, { expires: 365, secure: false }), - removeItem: key => Cookies.remove(key) - } - })(store); -}; -``` - -## API - -### `createPersistedState([options])` - -Creates a new instance of the plugin with the given options. The following options -can be provided to configure the plugin for your specific needs: - -- `key `: The key to store the persisted state under. Defaults to `vuex`. -- `paths `: An array of any paths to partially persist the state. If no paths are given, the complete state is persisted. If an empty array is given, no state is persisted. Paths must be specified using dot notation. If using modules, include the module name. eg: "auth.user" Defaults to `undefined`. -- `reducer `: A function that will be called to reduce the state to persist based on the given paths. Defaults to include the values. -- `subscriber `: A function called to setup mutation subscription. Defaults to `store => handler => store.subscribe(handler)`. - -- `storage `: Instead of (or in combination with) `getState` and `setState`. Defaults to localStorage. -- `getState `: A function that will be called to rehydrate a previously persisted state. Defaults to using `storage`. -- `setState `: A function that will be called to persist the given state. Defaults to using `storage`. -- `filter `: A function that will be called to filter any mutations which will trigger `setState` on storage eventually. Defaults to `() => true`. -- `overwrite `: When rehydrating, whether to overwrite the existing state with the output from `getState` directly, instead of merging the two objects with `deepmerge`. Defaults to `false`. -- `arrayMerger `: A function for merging arrays when rehydrating state. Defaults to `function (store, saved) { return saved }` (saved state replaces supplied state). -- `rehydrated `: A function that will be called when the rehydration is finished. Useful when you are using Nuxt.js, which the rehydration of the persisted state happens asynchronously. Defaults to `store => {}` -- `fetchBeforeUse `: A boolean indicating if the state should be fetched from storage before the plugin is used. Defaults to `false`. -- `assertStorage `: An overridable function to ensure storage is available, fired on plugins's initialization. Default one is performing a Write-Delete operation on the given Storage instance. Note, default behaviour could throw an error (like `DOMException: QuotaExceededError`). - -## Customize Storage - -If it's not ideal to have the state of the Vuex store inside localstorage. One can easily implement the functionality to use [cookies](https://github.com/js-cookie/js-cookie) for that (or any other you can think of); - -[![Edit vuex-persistedstate with js-cookie](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/xl356qvvkz?autoresize=1) - -```js -import { Store } from "vuex"; -import createPersistedState from "vuex-persistedstate"; -import * as Cookies from "js-cookie"; - -const store = new Store({ - // ... - plugins: [ - createPersistedState({ - storage: { - getItem: (key) => Cookies.get(key), - // Please see https://github.com/js-cookie/js-cookie#json, on how to handle JSON. - setItem: (key, value) => - Cookies.set(key, value, { expires: 3, secure: true }), - removeItem: (key) => Cookies.remove(key), - }, - }), - ], -}); -``` - -In fact, any object following the Storage protocol (getItem, setItem, removeItem, etc) could be passed: - -```js -createPersistedState({ storage: window.sessionStorage }); -``` - -This is especially useful when you are using this plugin in combination with server-side rendering, where one could pass an instance of [dom-storage](https://www.npmjs.com/package/dom-storage). - -### 🔐Obfuscate Local Storage - -If you need to use **Local Storage** (or you want to) but want to prevent attackers from easily inspecting the stored data, you can [obfuscate it]('https://github.com/softvar/secure-ls'). - -**Important ⚠️** Obfuscating the Vuex store means to prevent attackers from easily gaining access to the data. This is not a secure way of storing sensitive data (like passwords, personal information, etc.), and always needs to be used in conjunction with some other authentication method of keeping the data (such as Firebase or your own server). - -[![Edit vuex-persistedstate with secure-ls (obfuscated data)](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/vuex-persistedstate-with-secure-ls-encrypted-data-7l9wb?fontsize=14) - -```js -import { Store } from "vuex"; -import createPersistedState from "vuex-persistedstate"; -import SecureLS from "secure-ls"; -var ls = new SecureLS({ isCompression: false }); - -// https://github.com/softvar/secure-ls - -const store = new Store({ - // ... - plugins: [ - createPersistedState({ - storage: { - getItem: (key) => ls.get(key), - setItem: (key, value) => ls.set(key, value), - removeItem: (key) => ls.remove(key), - }, - }), - ], -}); -``` - -### ⚠️ LocalForage ⚠️ - -As it maybe seems at first sight, it's not possible to pass a [LocalForage](https://github.com/localForage/localForage) instance as `storage` property. This is due the fact that all getters and setters must be synchronous and [LocalForage's methods](https://github.com/localForage/localForage#callbacks-vs-promises) are asynchronous. - -## Changelog - -Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently. - -## Contributors ✨ - -Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Robin van der Vleuten

💻 📖 🚇 ⚠️

Sebastian

💻 📖

Boris Graeff

💻

Cícero Pablo

📖

Gurpreet Atwal

⚠️

Jakub Koralewski

💻

Jankees van Woezik

📖

Jofferson Ramirez Tiquez

📖

Jordan Deprez

📖

Juan Villegas

📖

Jürg Rast

💻

Kartashov Alexey

💻

Leonard Pauli

💻 📖

Nelson Liu

💻 📖 ⚠️

Nico

💻 ⚠️

Quentin Dreyer

💻

Raphael Saunier

💻

Rodney Rehm

💻 ⚠️

Ryan Wang

💻 📖 ⚠️

Sébastien Chopin

📖

jeffjing

💻

macarthuror

📖

Paul Melero

📖 💻 ⚠️

Guillaume da Silva

💻

Jonathan Santerre

💻

Fábio Santos

📖

robertgr991

💻

JurijsKolesnikovs

📖

David Bond

📖

Freek van Rijt

📖

Ilyes Hermellin

💻

Peter Siska

📖

Dmitry Filippov

📖

Thomas Meitz

📖 ⚠️

Neeron Bhatta

📖

joaoaraujo-hotmart

💻
- - - - - - -This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! - -## License - -The MIT License (MIT). Please see [License File](LICENSE) for more information. diff --git a/node_modules/vuex-persistedstate/dist/index.d.ts b/node_modules/vuex-persistedstate/dist/index.d.ts deleted file mode 100644 index e46177c..0000000 --- a/node_modules/vuex-persistedstate/dist/index.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Store, MutationPayload } from "vuex"; -interface Storage { - getItem: (key: string) => any; - setItem: (key: string, value: any) => void; - removeItem: (key: string) => void; -} -interface Options { - key?: string; - paths?: string[]; - reducer?: (state: State, paths: string[]) => object; - subscriber?: (store: Store) => (handler: (mutation: any, state: State) => void) => void; - storage?: Storage; - getState?: (key: string, storage: Storage) => any; - setState?: (key: string, state: any, storage: Storage) => void; - filter?: (mutation: MutationPayload) => boolean; - arrayMerger?: (state: any[], saved: any[]) => any; - rehydrated?: (store: Store) => void; - fetchBeforeUse?: boolean; - overwrite?: boolean; - assertStorage?: (storage: Storage) => void | Error; -} -export default function (options?: Options): (store: Store) => void; -export {}; diff --git a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js b/node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js deleted file mode 100644 index b64f678..0000000 --- a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js +++ /dev/null @@ -1,2 +0,0 @@ -var r=function(r){return function(r){return!!r&&"object"==typeof r}(r)&&!function(r){var t=Object.prototype.toString.call(r);return"[object RegExp]"===t||"[object Date]"===t||function(r){return r.$$typeof===e}(r)}(r)},e="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function t(r,e){return!1!==e.clone&&e.isMergeableObject(r)?u(Array.isArray(r)?[]:{},r,e):r}function n(r,e,n){return r.concat(e).map(function(r){return t(r,n)})}function o(r){return Object.keys(r).concat(function(r){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(r).filter(function(e){return r.propertyIsEnumerable(e)}):[]}(r))}function c(r,e){try{return e in r}catch(r){return!1}}function u(e,i,a){(a=a||{}).arrayMerge=a.arrayMerge||n,a.isMergeableObject=a.isMergeableObject||r,a.cloneUnlessOtherwiseSpecified=t;var f=Array.isArray(i);return f===Array.isArray(e)?f?a.arrayMerge(e,i,a):function(r,e,n){var i={};return n.isMergeableObject(r)&&o(r).forEach(function(e){i[e]=t(r[e],n)}),o(e).forEach(function(o){(function(r,e){return c(r,e)&&!(Object.hasOwnProperty.call(r,e)&&Object.propertyIsEnumerable.call(r,e))})(r,o)||(i[o]=c(r,o)&&n.isMergeableObject(e[o])?function(r,e){if(!e.customMerge)return u;var t=e.customMerge(r);return"function"==typeof t?t:u}(o,n)(r[o],e[o],n):t(e[o],n))}),i}(e,i,a):t(i,a)}u.all=function(r,e){if(!Array.isArray(r))throw new Error("first argument should be an array");return r.reduce(function(r,t){return u(r,t,e)},{})};var i=u;function a(r){var e=(r=r||{}).storage||window&&window.localStorage,t=r.key||"vuex";function n(r,e){var t=e.getItem(r);try{return"string"==typeof t?JSON.parse(t):"object"==typeof t?t:void 0}catch(r){}}function o(){return!0}function c(r,e,t){return t.setItem(r,JSON.stringify(e))}function u(r,e){return Array.isArray(e)?e.reduce(function(e,t){return function(r,e,t,n){return!/^(__proto__|constructor|prototype)$/.test(e)&&((e=e.split?e.split("."):e.slice(0)).slice(0,-1).reduce(function(r,e){return r[e]=r[e]||{}},r)[e.pop()]=t),r}(e,t,(n=r,void 0===(n=((o=t).split?o.split("."):o).reduce(function(r,e){return r&&r[e]},n))?void 0:n));var n,o},{}):r}function a(r){return function(e){return r.subscribe(e)}}(r.assertStorage||function(){e.setItem("@@",1),e.removeItem("@@")})(e);var f,s=function(){return(r.getState||n)(t,e)};return r.fetchBeforeUse&&(f=s()),function(n){r.fetchBeforeUse||(f=s()),"object"==typeof f&&null!==f&&(n.replaceState(r.overwrite?f:i(n.state,f,{arrayMerge:r.arrayMerger||function(r,e){return e},clone:!1})),(r.rehydrated||function(){})(n)),(r.subscriber||a)(n)(function(n,i){(r.filter||o)(n)&&(r.setState||c)(t,(r.reducer||u)(i,r.paths),e)})}}export default a; -//# sourceMappingURL=vuex-persistedstate.es.js.map diff --git a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js.map b/node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js.map deleted file mode 100644 index 7f31e57..0000000 --- a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.es.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"vuex-persistedstate.es.js","sources":["../node_modules/deepmerge/dist/cjs.js","../src/index.ts","../node_modules/shvl/dist/shvl.mjs"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { Store, MutationPayload } from \"vuex\";\nimport merge from \"deepmerge\";\nimport * as shvl from \"shvl\";\n\ninterface Storage {\n getItem: (key: string) => any;\n setItem: (key: string, value: any) => void;\n removeItem: (key: string) => void;\n}\n\ninterface Options {\n key?: string;\n paths?: string[];\n reducer?: (state: State, paths: string[]) => object;\n subscriber?: (\n store: Store\n ) => (handler: (mutation: any, state: State) => void) => void;\n storage?: Storage;\n getState?: (key: string, storage: Storage) => any;\n setState?: (key: string, state: any, storage: Storage) => void;\n filter?: (mutation: MutationPayload) => boolean;\n arrayMerger?: (state: any[], saved: any[]) => any;\n rehydrated?: (store: Store) => void;\n fetchBeforeUse?: boolean;\n overwrite?: boolean;\n assertStorage?: (storage: Storage) => void | Error;\n}\n\nexport default function (\n options?: Options\n): (store: Store) => void {\n options = options || {};\n\n const storage = options.storage || (window && window.localStorage);\n const key = options.key || \"vuex\";\n\n function getState(key, storage) {\n const value = storage.getItem(key);\n\n try {\n return (typeof value === \"string\")\n ? JSON.parse(value) : (typeof value === \"object\")\n ? value : undefined;\n } catch (err) {}\n\n return undefined;\n }\n\n function filter() {\n return true;\n }\n\n function setState(key, state, storage) {\n return storage.setItem(key, JSON.stringify(state));\n }\n\n function reducer(state, paths) {\n return Array.isArray(paths)\n ? paths.reduce(function (substate, path) {\n return shvl.set(substate, path, shvl.get(state, path));\n }, {})\n : state;\n }\n\n function subscriber(store) {\n return function (handler) {\n return store.subscribe(handler);\n };\n }\n\n const assertStorage =\n options.assertStorage ||\n (() => {\n storage.setItem(\"@@\", 1);\n storage.removeItem(\"@@\");\n });\n\n assertStorage(storage);\n\n const fetchSavedState = () => (options.getState || getState)(key, storage);\n\n let savedState;\n\n if (options.fetchBeforeUse) {\n savedState = fetchSavedState();\n }\n\n return function (store: Store) {\n if (!options.fetchBeforeUse) {\n savedState = fetchSavedState();\n }\n\n if (typeof savedState === \"object\" && savedState !== null) {\n store.replaceState(\n options.overwrite\n ? savedState\n : merge(store.state, savedState, {\n arrayMerge:\n options.arrayMerger ||\n function (store, saved) {\n return saved;\n },\n clone: false,\n })\n );\n (options.rehydrated || function () {})(store);\n }\n\n (options.subscriber || subscriber)(store)(function (mutation, state) {\n if ((options.filter || filter)(mutation)) {\n (options.setState || setState)(\n key,\n (options.reducer || reducer)(state, options.paths),\n storage\n );\n }\n });\n };\n}\n","function t(t,r,e){return void 0===(t=(r.split?r.split(\".\"):r).reduce(function(t,r){return t&&t[r]},t))?e:t}function r(t,r,e,n){return!/^(__proto__|constructor|prototype)$/.test(r)&&((r=r.split?r.split(\".\"):r.slice(0)).slice(0,-1).reduce(function(t,r){return t[r]=t[r]||{}},t)[r.pop()]=e),t}export{t as get,r as set};\n//# sourceMappingURL=shvl.mjs.map\n"],"names":["isMergeableObject","value","isNonNullObject","stringValue","Object","prototype","toString","call","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","Array","isArray","defaultArrayMerge","target","source","concat","map","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","_","arrayMerge","sourceIsArray","destination","forEach","key","hasOwnProperty","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","all","array","Error","reduce","prev","next","storage","window","localStorage","getState","getItem","JSON","parse","undefined","err","setState","state","setItem","stringify","reducer","paths","substate","path","t","r","e","n","test","split","slice","pop","shvl","subscriber","store","handler","subscribe","assertStorage","removeItem","savedState","fetchSavedState","fetchBeforeUse","replaceState","overwrite","merge","arrayMerger","saved","rehydrated","mutation"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.js b/node_modules/vuex-persistedstate/dist/vuex-persistedstate.js deleted file mode 100644 index d95b0c2..0000000 --- a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.js +++ /dev/null @@ -1,2 +0,0 @@ -var r=function(r){return function(r){return!!r&&"object"==typeof r}(r)&&!function(r){var t=Object.prototype.toString.call(r);return"[object RegExp]"===t||"[object Date]"===t||function(r){return r.$$typeof===e}(r)}(r)},e="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function t(r,e){return!1!==e.clone&&e.isMergeableObject(r)?u(Array.isArray(r)?[]:{},r,e):r}function n(r,e,n){return r.concat(e).map(function(r){return t(r,n)})}function o(r){return Object.keys(r).concat(function(r){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(r).filter(function(e){return r.propertyIsEnumerable(e)}):[]}(r))}function c(r,e){try{return e in r}catch(r){return!1}}function u(e,i,a){(a=a||{}).arrayMerge=a.arrayMerge||n,a.isMergeableObject=a.isMergeableObject||r,a.cloneUnlessOtherwiseSpecified=t;var f=Array.isArray(i);return f===Array.isArray(e)?f?a.arrayMerge(e,i,a):function(r,e,n){var i={};return n.isMergeableObject(r)&&o(r).forEach(function(e){i[e]=t(r[e],n)}),o(e).forEach(function(o){(function(r,e){return c(r,e)&&!(Object.hasOwnProperty.call(r,e)&&Object.propertyIsEnumerable.call(r,e))})(r,o)||(i[o]=c(r,o)&&n.isMergeableObject(e[o])?function(r,e){if(!e.customMerge)return u;var t=e.customMerge(r);return"function"==typeof t?t:u}(o,n)(r[o],e[o],n):t(e[o],n))}),i}(e,i,a):t(i,a)}u.all=function(r,e){if(!Array.isArray(r))throw new Error("first argument should be an array");return r.reduce(function(r,t){return u(r,t,e)},{})};var i=u;module.exports=function(r){var e=(r=r||{}).storage||window&&window.localStorage,t=r.key||"vuex";function n(r,e){var t=e.getItem(r);try{return"string"==typeof t?JSON.parse(t):"object"==typeof t?t:void 0}catch(r){}}function o(){return!0}function c(r,e,t){return t.setItem(r,JSON.stringify(e))}function u(r,e){return Array.isArray(e)?e.reduce(function(e,t){return function(r,e,t,n){return!/^(__proto__|constructor|prototype)$/.test(e)&&((e=e.split?e.split("."):e.slice(0)).slice(0,-1).reduce(function(r,e){return r[e]=r[e]||{}},r)[e.pop()]=t),r}(e,t,(n=r,void 0===(n=((o=t).split?o.split("."):o).reduce(function(r,e){return r&&r[e]},n))?void 0:n));var n,o},{}):r}function a(r){return function(e){return r.subscribe(e)}}(r.assertStorage||function(){e.setItem("@@",1),e.removeItem("@@")})(e);var f,s=function(){return(r.getState||n)(t,e)};return r.fetchBeforeUse&&(f=s()),function(n){r.fetchBeforeUse||(f=s()),"object"==typeof f&&null!==f&&(n.replaceState(r.overwrite?f:i(n.state,f,{arrayMerge:r.arrayMerger||function(r,e){return e},clone:!1})),(r.rehydrated||function(){})(n)),(r.subscriber||a)(n)(function(n,i){(r.filter||o)(n)&&(r.setState||c)(t,(r.reducer||u)(i,r.paths),e)})}}; -//# sourceMappingURL=vuex-persistedstate.js.map diff --git a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.js.map b/node_modules/vuex-persistedstate/dist/vuex-persistedstate.js.map deleted file mode 100644 index 592868a..0000000 --- a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"vuex-persistedstate.js","sources":["../node_modules/deepmerge/dist/cjs.js","../src/index.ts","../node_modules/shvl/dist/shvl.mjs"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { Store, MutationPayload } from \"vuex\";\nimport merge from \"deepmerge\";\nimport * as shvl from \"shvl\";\n\ninterface Storage {\n getItem: (key: string) => any;\n setItem: (key: string, value: any) => void;\n removeItem: (key: string) => void;\n}\n\ninterface Options {\n key?: string;\n paths?: string[];\n reducer?: (state: State, paths: string[]) => object;\n subscriber?: (\n store: Store\n ) => (handler: (mutation: any, state: State) => void) => void;\n storage?: Storage;\n getState?: (key: string, storage: Storage) => any;\n setState?: (key: string, state: any, storage: Storage) => void;\n filter?: (mutation: MutationPayload) => boolean;\n arrayMerger?: (state: any[], saved: any[]) => any;\n rehydrated?: (store: Store) => void;\n fetchBeforeUse?: boolean;\n overwrite?: boolean;\n assertStorage?: (storage: Storage) => void | Error;\n}\n\nexport default function (\n options?: Options\n): (store: Store) => void {\n options = options || {};\n\n const storage = options.storage || (window && window.localStorage);\n const key = options.key || \"vuex\";\n\n function getState(key, storage) {\n const value = storage.getItem(key);\n\n try {\n return (typeof value === \"string\")\n ? JSON.parse(value) : (typeof value === \"object\")\n ? value : undefined;\n } catch (err) {}\n\n return undefined;\n }\n\n function filter() {\n return true;\n }\n\n function setState(key, state, storage) {\n return storage.setItem(key, JSON.stringify(state));\n }\n\n function reducer(state, paths) {\n return Array.isArray(paths)\n ? paths.reduce(function (substate, path) {\n return shvl.set(substate, path, shvl.get(state, path));\n }, {})\n : state;\n }\n\n function subscriber(store) {\n return function (handler) {\n return store.subscribe(handler);\n };\n }\n\n const assertStorage =\n options.assertStorage ||\n (() => {\n storage.setItem(\"@@\", 1);\n storage.removeItem(\"@@\");\n });\n\n assertStorage(storage);\n\n const fetchSavedState = () => (options.getState || getState)(key, storage);\n\n let savedState;\n\n if (options.fetchBeforeUse) {\n savedState = fetchSavedState();\n }\n\n return function (store: Store) {\n if (!options.fetchBeforeUse) {\n savedState = fetchSavedState();\n }\n\n if (typeof savedState === \"object\" && savedState !== null) {\n store.replaceState(\n options.overwrite\n ? savedState\n : merge(store.state, savedState, {\n arrayMerge:\n options.arrayMerger ||\n function (store, saved) {\n return saved;\n },\n clone: false,\n })\n );\n (options.rehydrated || function () {})(store);\n }\n\n (options.subscriber || subscriber)(store)(function (mutation, state) {\n if ((options.filter || filter)(mutation)) {\n (options.setState || setState)(\n key,\n (options.reducer || reducer)(state, options.paths),\n storage\n );\n }\n });\n };\n}\n","function t(t,r,e){return void 0===(t=(r.split?r.split(\".\"):r).reduce(function(t,r){return t&&t[r]},t))?e:t}function r(t,r,e,n){return!/^(__proto__|constructor|prototype)$/.test(r)&&((r=r.split?r.split(\".\"):r.slice(0)).slice(0,-1).reduce(function(t,r){return t[r]=t[r]||{}},t)[r.pop()]=e),t}export{t as get,r as set};\n//# sourceMappingURL=shvl.mjs.map\n"],"names":["isMergeableObject","value","isNonNullObject","stringValue","Object","prototype","toString","call","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","Array","isArray","defaultArrayMerge","target","source","concat","map","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","_","arrayMerge","sourceIsArray","destination","forEach","key","hasOwnProperty","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","all","array","Error","reduce","prev","next","storage","window","localStorage","getState","getItem","JSON","parse","undefined","err","setState","state","setItem","stringify","reducer","paths","substate","path","t","r","e","n","test","split","slice","pop","shvl","subscriber","store","handler","subscribe","assertStorage","removeItem","savedState","fetchSavedState","fetchBeforeUse","replaceState","overwrite","merge","arrayMerger","saved","rehydrated","mutation"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.modern.js b/node_modules/vuex-persistedstate/dist/vuex-persistedstate.modern.js deleted file mode 100644 index ba09024..0000000 --- a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.modern.js +++ /dev/null @@ -1,2 +0,0 @@ -var r=function(r){return function(r){return!!r&&"object"==typeof r}(r)&&!function(r){var t=Object.prototype.toString.call(r);return"[object RegExp]"===t||"[object Date]"===t||function(r){return r.$$typeof===e}(r)}(r)},e="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function t(r,e){return!1!==e.clone&&e.isMergeableObject(r)?u(Array.isArray(r)?[]:{},r,e):r}function n(r,e,n){return r.concat(e).map(function(r){return t(r,n)})}function o(r){return Object.keys(r).concat(function(r){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(r).filter(function(e){return r.propertyIsEnumerable(e)}):[]}(r))}function c(r,e){try{return e in r}catch(r){return!1}}function u(e,i,a){(a=a||{}).arrayMerge=a.arrayMerge||n,a.isMergeableObject=a.isMergeableObject||r,a.cloneUnlessOtherwiseSpecified=t;var f=Array.isArray(i);return f===Array.isArray(e)?f?a.arrayMerge(e,i,a):function(r,e,n){var i={};return n.isMergeableObject(r)&&o(r).forEach(function(e){i[e]=t(r[e],n)}),o(e).forEach(function(o){(function(r,e){return c(r,e)&&!(Object.hasOwnProperty.call(r,e)&&Object.propertyIsEnumerable.call(r,e))})(r,o)||(i[o]=c(r,o)&&n.isMergeableObject(e[o])?function(r,e){if(!e.customMerge)return u;var t=e.customMerge(r);return"function"==typeof t?t:u}(o,n)(r[o],e[o],n):t(e[o],n))}),i}(e,i,a):t(i,a)}u.all=function(r,e){if(!Array.isArray(r))throw new Error("first argument should be an array");return r.reduce(function(r,t){return u(r,t,e)},{})};var i=u;function a(r){const e=(r=r||{}).storage||window&&window.localStorage,t=r.key||"vuex";function n(r,e){const t=e.getItem(r);try{return"string"==typeof t?JSON.parse(t):"object"==typeof t?t:void 0}catch(r){}}function o(){return!0}function c(r,e,t){return t.setItem(r,JSON.stringify(e))}function u(r,e){return Array.isArray(e)?e.reduce(function(e,t){return function(r,e,t,n){return!/^(__proto__|constructor|prototype)$/.test(e)&&((e=e.split?e.split("."):e.slice(0)).slice(0,-1).reduce(function(r,e){return r[e]=r[e]||{}},r)[e.pop()]=t),r}(e,t,(n=r,void 0===(n=((o=t).split?o.split("."):o).reduce(function(r,e){return r&&r[e]},n))?void 0:n));var n,o},{}):r}function a(r){return function(e){return r.subscribe(e)}}(r.assertStorage||(()=>{e.setItem("@@",1),e.removeItem("@@")}))(e);const f=()=>(r.getState||n)(t,e);let s;return r.fetchBeforeUse&&(s=f()),function(n){r.fetchBeforeUse||(s=f()),"object"==typeof s&&null!==s&&(n.replaceState(r.overwrite?s:i(n.state,s,{arrayMerge:r.arrayMerger||function(r,e){return e},clone:!1})),(r.rehydrated||function(){})(n)),(r.subscriber||a)(n)(function(n,i){(r.filter||o)(n)&&(r.setState||c)(t,(r.reducer||u)(i,r.paths),e)})}}export default a; -//# sourceMappingURL=vuex-persistedstate.modern.js.map diff --git a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.modern.js.map b/node_modules/vuex-persistedstate/dist/vuex-persistedstate.modern.js.map deleted file mode 100644 index eec13f9..0000000 --- a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.modern.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"vuex-persistedstate.modern.js","sources":["../node_modules/deepmerge/dist/cjs.js","../src/index.ts","../node_modules/shvl/dist/shvl.mjs"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { Store, MutationPayload } from \"vuex\";\nimport merge from \"deepmerge\";\nimport * as shvl from \"shvl\";\n\ninterface Storage {\n getItem: (key: string) => any;\n setItem: (key: string, value: any) => void;\n removeItem: (key: string) => void;\n}\n\ninterface Options {\n key?: string;\n paths?: string[];\n reducer?: (state: State, paths: string[]) => object;\n subscriber?: (\n store: Store\n ) => (handler: (mutation: any, state: State) => void) => void;\n storage?: Storage;\n getState?: (key: string, storage: Storage) => any;\n setState?: (key: string, state: any, storage: Storage) => void;\n filter?: (mutation: MutationPayload) => boolean;\n arrayMerger?: (state: any[], saved: any[]) => any;\n rehydrated?: (store: Store) => void;\n fetchBeforeUse?: boolean;\n overwrite?: boolean;\n assertStorage?: (storage: Storage) => void | Error;\n}\n\nexport default function (\n options?: Options\n): (store: Store) => void {\n options = options || {};\n\n const storage = options.storage || (window && window.localStorage);\n const key = options.key || \"vuex\";\n\n function getState(key, storage) {\n const value = storage.getItem(key);\n\n try {\n return (typeof value === \"string\")\n ? JSON.parse(value) : (typeof value === \"object\")\n ? value : undefined;\n } catch (err) {}\n\n return undefined;\n }\n\n function filter() {\n return true;\n }\n\n function setState(key, state, storage) {\n return storage.setItem(key, JSON.stringify(state));\n }\n\n function reducer(state, paths) {\n return Array.isArray(paths)\n ? paths.reduce(function (substate, path) {\n return shvl.set(substate, path, shvl.get(state, path));\n }, {})\n : state;\n }\n\n function subscriber(store) {\n return function (handler) {\n return store.subscribe(handler);\n };\n }\n\n const assertStorage =\n options.assertStorage ||\n (() => {\n storage.setItem(\"@@\", 1);\n storage.removeItem(\"@@\");\n });\n\n assertStorage(storage);\n\n const fetchSavedState = () => (options.getState || getState)(key, storage);\n\n let savedState;\n\n if (options.fetchBeforeUse) {\n savedState = fetchSavedState();\n }\n\n return function (store: Store) {\n if (!options.fetchBeforeUse) {\n savedState = fetchSavedState();\n }\n\n if (typeof savedState === \"object\" && savedState !== null) {\n store.replaceState(\n options.overwrite\n ? savedState\n : merge(store.state, savedState, {\n arrayMerge:\n options.arrayMerger ||\n function (store, saved) {\n return saved;\n },\n clone: false,\n })\n );\n (options.rehydrated || function () {})(store);\n }\n\n (options.subscriber || subscriber)(store)(function (mutation, state) {\n if ((options.filter || filter)(mutation)) {\n (options.setState || setState)(\n key,\n (options.reducer || reducer)(state, options.paths),\n storage\n );\n }\n });\n };\n}\n","function t(t,r,e){return void 0===(t=(r.split?r.split(\".\"):r).reduce(function(t,r){return t&&t[r]},t))?e:t}function r(t,r,e,n){return!/^(__proto__|constructor|prototype)$/.test(r)&&((r=r.split?r.split(\".\"):r.slice(0)).slice(0,-1).reduce(function(t,r){return t[r]=t[r]||{}},t)[r.pop()]=e),t}export{t as get,r as set};\n//# sourceMappingURL=shvl.mjs.map\n"],"names":["isMergeableObject","value","isNonNullObject","stringValue","Object","prototype","toString","call","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","Array","isArray","defaultArrayMerge","target","source","concat","map","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","_","arrayMerge","sourceIsArray","destination","forEach","key","hasOwnProperty","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","all","array","Error","reduce","prev","next","storage","window","localStorage","getState","getItem","JSON","parse","undefined","err","setState","state","setItem","stringify","reducer","paths","substate","path","t","r","e","n","test","split","slice","pop","shvl","subscriber","store","handler","subscribe","assertStorage","removeItem","fetchSavedState","savedState","fetchBeforeUse","replaceState","overwrite","merge","arrayMerger","saved","rehydrated","mutation"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.umd.js b/node_modules/vuex-persistedstate/dist/vuex-persistedstate.umd.js deleted file mode 100644 index afc5296..0000000 --- a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.umd.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e||self).createPersistedState=r()}(this,function(){var e=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===r}(e)}(e)},r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function t(e,r){return!1!==r.clone&&r.isMergeableObject(e)?u(Array.isArray(e)?[]:{},e,r):e}function n(e,r,n){return e.concat(r).map(function(e){return t(e,n)})}function o(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(r){return e.propertyIsEnumerable(r)}):[]}(e))}function c(e,r){try{return r in e}catch(e){return!1}}function u(r,i,a){(a=a||{}).arrayMerge=a.arrayMerge||n,a.isMergeableObject=a.isMergeableObject||e,a.cloneUnlessOtherwiseSpecified=t;var f=Array.isArray(i);return f===Array.isArray(r)?f?a.arrayMerge(r,i,a):function(e,r,n){var i={};return n.isMergeableObject(e)&&o(e).forEach(function(r){i[r]=t(e[r],n)}),o(r).forEach(function(o){(function(e,r){return c(e,r)&&!(Object.hasOwnProperty.call(e,r)&&Object.propertyIsEnumerable.call(e,r))})(e,o)||(i[o]=c(e,o)&&n.isMergeableObject(r[o])?function(e,r){if(!r.customMerge)return u;var t=r.customMerge(e);return"function"==typeof t?t:u}(o,n)(e[o],r[o],n):t(r[o],n))}),i}(r,i,a):t(i,a)}u.all=function(e,r){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,t){return u(e,t,r)},{})};var i=u;return function(e){var r=(e=e||{}).storage||window&&window.localStorage,t=e.key||"vuex";function n(e,r){var t=r.getItem(e);try{return"string"==typeof t?JSON.parse(t):"object"==typeof t?t:void 0}catch(e){}}function o(){return!0}function c(e,r,t){return t.setItem(e,JSON.stringify(r))}function u(e,r){return Array.isArray(r)?r.reduce(function(r,t){return function(e,r,t,n){return!/^(__proto__|constructor|prototype)$/.test(r)&&((r=r.split?r.split("."):r.slice(0)).slice(0,-1).reduce(function(e,r){return e[r]=e[r]||{}},e)[r.pop()]=t),e}(r,t,(n=e,void 0===(n=((o=t).split?o.split("."):o).reduce(function(e,r){return e&&e[r]},n))?void 0:n));var n,o},{}):e}function a(e){return function(r){return e.subscribe(r)}}(e.assertStorage||function(){r.setItem("@@",1),r.removeItem("@@")})(r);var f,s=function(){return(e.getState||n)(t,r)};return e.fetchBeforeUse&&(f=s()),function(n){e.fetchBeforeUse||(f=s()),"object"==typeof f&&null!==f&&(n.replaceState(e.overwrite?f:i(n.state,f,{arrayMerge:e.arrayMerger||function(e,r){return r},clone:!1})),(e.rehydrated||function(){})(n)),(e.subscriber||a)(n)(function(n,i){(e.filter||o)(n)&&(e.setState||c)(t,(e.reducer||u)(i,e.paths),r)})}}}); -//# sourceMappingURL=vuex-persistedstate.umd.js.map diff --git a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.umd.js.map b/node_modules/vuex-persistedstate/dist/vuex-persistedstate.umd.js.map deleted file mode 100644 index a1c5b70..0000000 --- a/node_modules/vuex-persistedstate/dist/vuex-persistedstate.umd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"vuex-persistedstate.umd.js","sources":["../node_modules/deepmerge/dist/cjs.js","../src/index.ts","../node_modules/shvl/dist/shvl.mjs"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { Store, MutationPayload } from \"vuex\";\nimport merge from \"deepmerge\";\nimport * as shvl from \"shvl\";\n\ninterface Storage {\n getItem: (key: string) => any;\n setItem: (key: string, value: any) => void;\n removeItem: (key: string) => void;\n}\n\ninterface Options {\n key?: string;\n paths?: string[];\n reducer?: (state: State, paths: string[]) => object;\n subscriber?: (\n store: Store\n ) => (handler: (mutation: any, state: State) => void) => void;\n storage?: Storage;\n getState?: (key: string, storage: Storage) => any;\n setState?: (key: string, state: any, storage: Storage) => void;\n filter?: (mutation: MutationPayload) => boolean;\n arrayMerger?: (state: any[], saved: any[]) => any;\n rehydrated?: (store: Store) => void;\n fetchBeforeUse?: boolean;\n overwrite?: boolean;\n assertStorage?: (storage: Storage) => void | Error;\n}\n\nexport default function (\n options?: Options\n): (store: Store) => void {\n options = options || {};\n\n const storage = options.storage || (window && window.localStorage);\n const key = options.key || \"vuex\";\n\n function getState(key, storage) {\n const value = storage.getItem(key);\n\n try {\n return (typeof value === \"string\")\n ? JSON.parse(value) : (typeof value === \"object\")\n ? value : undefined;\n } catch (err) {}\n\n return undefined;\n }\n\n function filter() {\n return true;\n }\n\n function setState(key, state, storage) {\n return storage.setItem(key, JSON.stringify(state));\n }\n\n function reducer(state, paths) {\n return Array.isArray(paths)\n ? paths.reduce(function (substate, path) {\n return shvl.set(substate, path, shvl.get(state, path));\n }, {})\n : state;\n }\n\n function subscriber(store) {\n return function (handler) {\n return store.subscribe(handler);\n };\n }\n\n const assertStorage =\n options.assertStorage ||\n (() => {\n storage.setItem(\"@@\", 1);\n storage.removeItem(\"@@\");\n });\n\n assertStorage(storage);\n\n const fetchSavedState = () => (options.getState || getState)(key, storage);\n\n let savedState;\n\n if (options.fetchBeforeUse) {\n savedState = fetchSavedState();\n }\n\n return function (store: Store) {\n if (!options.fetchBeforeUse) {\n savedState = fetchSavedState();\n }\n\n if (typeof savedState === \"object\" && savedState !== null) {\n store.replaceState(\n options.overwrite\n ? savedState\n : merge(store.state, savedState, {\n arrayMerge:\n options.arrayMerger ||\n function (store, saved) {\n return saved;\n },\n clone: false,\n })\n );\n (options.rehydrated || function () {})(store);\n }\n\n (options.subscriber || subscriber)(store)(function (mutation, state) {\n if ((options.filter || filter)(mutation)) {\n (options.setState || setState)(\n key,\n (options.reducer || reducer)(state, options.paths),\n storage\n );\n }\n });\n };\n}\n","function t(t,r,e){return void 0===(t=(r.split?r.split(\".\"):r).reduce(function(t,r){return t&&t[r]},t))?e:t}function r(t,r,e,n){return!/^(__proto__|constructor|prototype)$/.test(r)&&((r=r.split?r.split(\".\"):r.slice(0)).slice(0,-1).reduce(function(t,r){return t[r]=t[r]||{}},t)[r.pop()]=e),t}export{t as get,r as set};\n//# sourceMappingURL=shvl.mjs.map\n"],"names":["isMergeableObject","value","isNonNullObject","stringValue","Object","prototype","toString","call","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","options","clone","deepmerge","Array","isArray","defaultArrayMerge","target","source","concat","map","element","getKeys","keys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","_","arrayMerge","sourceIsArray","destination","forEach","key","hasOwnProperty","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","all","array","Error","reduce","prev","next","storage","window","localStorage","getState","getItem","JSON","parse","undefined","err","setState","state","setItem","stringify","reducer","paths","substate","path","t","r","e","n","test","split","slice","pop","shvl","subscriber","store","handler","subscribe","assertStorage","removeItem","savedState","fetchSavedState","fetchBeforeUse","replaceState","overwrite","merge","arrayMerger","saved","rehydrated","mutation"],"mappings":"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"} \ No newline at end of file diff --git a/node_modules/vuex-persistedstate/package.json b/node_modules/vuex-persistedstate/package.json deleted file mode 100644 index 60161be..0000000 --- a/node_modules/vuex-persistedstate/package.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "_from": "vuex-persistedstate", - "_id": "vuex-persistedstate@4.1.0", - "_inBundle": false, - "_integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==", - "_location": "/vuex-persistedstate", - "_phantomChildren": {}, - "_requested": { - "type": "tag", - "registry": true, - "raw": "vuex-persistedstate", - "name": "vuex-persistedstate", - "escapedName": "vuex-persistedstate", - "rawSpec": "", - "saveSpec": null, - "fetchSpec": "latest" - }, - "_requiredBy": [ - "#USER", - "/" - ], - "_resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz", - "_shasum": "127165f85f5b4534fb3170a5d3a8be9811bd2a53", - "_spec": "vuex-persistedstate", - "_where": "D:\\work\\云美\\legalAffairs-app", - "author": { - "name": "Robin van der Vleuten", - "email": "robin@webstronauts.co", - "url": "robinvdvleuten.nl" - }, - "babel": { - "presets": [ - "@babel/preset-env" - ] - }, - "bugs": { - "url": "https://github.com/robinvdvleuten/vuex-persistedstate/issues" - }, - "bundleDependencies": false, - "bundlesize": [ - { - "path": "./dist/*.js", - "threshold": "800b" - } - ], - "dependencies": { - "deepmerge": "^4.2.2", - "shvl": "^2.0.3" - }, - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "description": "Persist and rehydrate your Vuex state between page reloads.", - "devDependencies": { - "@babel/core": "^7.12.10", - "@babel/preset-env": "^7.12.11", - "all-contributors-cli": "^6.19.0", - "babel-core": "^7.0.0-bridge.0", - "babel-jest": "^27.0.2", - "bundlesize": "^0.18.1", - "dom-storage": "^2.0.2", - "eslint": "^7.17.0", - "husky": "^7.0.0", - "jest": "^27.0.6", - "microbundle": "^0.13.0", - "npm-run-all": "^4.1.2", - "prettier": "^2.2.1", - "pretty-quick": "^3.1.0", - "rimraf": "^3.0.0", - "vue": "^3.0.0", - "vuex": "^4.0.0-rc" - }, - "files": [ - "dist", - "src" - ], - "homepage": "https://github.com/robinvdvleuten/vuex-persistedstate#readme", - "husky": { - "hooks": { - "pre-commit": "npm run build && pretty-quick --staged" - } - }, - "jest": { - "testURL": "http://localhost/" - }, - "keywords": [ - "vue", - "vuex", - "plugin" - ], - "license": "MIT", - "main": "dist/vuex-persistedstate.js", - "module": "dist/vuex-persistedstate.es.js", - "name": "vuex-persistedstate", - "peerDependencies": { - "vuex": "^3.0 || ^4.0.0-rc" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/robinvdvleuten/vuex-persistedstate.git" - }, - "scripts": { - "build": "rimraf dist && microbundle --external all --name createPersistedState", - "prepare": "npm run build", - "test": "npm-run-all test:**", - "test:jest": "jest --env=jsdom", - "test:size": "bundlesize" - }, - "source": "src/index.ts", - "types": "dist/index.d.ts", - "unpkg": "dist/vuex-persistedstate.umd.js", - "version": "4.1.0" -} diff --git a/node_modules/vuex-persistedstate/src/index.ts b/node_modules/vuex-persistedstate/src/index.ts deleted file mode 100644 index 1e82f73..0000000 --- a/node_modules/vuex-persistedstate/src/index.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { Store, MutationPayload } from "vuex"; -import merge from "deepmerge"; -import * as shvl from "shvl"; - -interface Storage { - getItem: (key: string) => any; - setItem: (key: string, value: any) => void; - removeItem: (key: string) => void; -} - -interface Options { - key?: string; - paths?: string[]; - reducer?: (state: State, paths: string[]) => object; - subscriber?: ( - store: Store - ) => (handler: (mutation: any, state: State) => void) => void; - storage?: Storage; - getState?: (key: string, storage: Storage) => any; - setState?: (key: string, state: any, storage: Storage) => void; - filter?: (mutation: MutationPayload) => boolean; - arrayMerger?: (state: any[], saved: any[]) => any; - rehydrated?: (store: Store) => void; - fetchBeforeUse?: boolean; - overwrite?: boolean; - assertStorage?: (storage: Storage) => void | Error; -} - -export default function ( - options?: Options -): (store: Store) => void { - options = options || {}; - - const storage = options.storage || (window && window.localStorage); - const key = options.key || "vuex"; - - function getState(key, storage) { - const value = storage.getItem(key); - - try { - return (typeof value === "string") - ? JSON.parse(value) : (typeof value === "object") - ? value : undefined; - } catch (err) {} - - return undefined; - } - - function filter() { - return true; - } - - function setState(key, state, storage) { - return storage.setItem(key, JSON.stringify(state)); - } - - function reducer(state, paths) { - return Array.isArray(paths) - ? paths.reduce(function (substate, path) { - return shvl.set(substate, path, shvl.get(state, path)); - }, {}) - : state; - } - - function subscriber(store) { - return function (handler) { - return store.subscribe(handler); - }; - } - - const assertStorage = - options.assertStorage || - (() => { - storage.setItem("@@", 1); - storage.removeItem("@@"); - }); - - assertStorage(storage); - - const fetchSavedState = () => (options.getState || getState)(key, storage); - - let savedState; - - if (options.fetchBeforeUse) { - savedState = fetchSavedState(); - } - - return function (store: Store) { - if (!options.fetchBeforeUse) { - savedState = fetchSavedState(); - } - - if (typeof savedState === "object" && savedState !== null) { - store.replaceState( - options.overwrite - ? savedState - : merge(store.state, savedState, { - arrayMerge: - options.arrayMerger || - function (store, saved) { - return saved; - }, - clone: false, - }) - ); - (options.rehydrated || function () {})(store); - } - - (options.subscriber || subscriber)(store)(function (mutation, state) { - if ((options.filter || filter)(mutation)) { - (options.setState || setState)( - key, - (options.reducer || reducer)(state, options.paths), - storage - ); - } - }); - }; -} diff --git a/node_modules/vuex/CHANGELOG.md b/node_modules/vuex/CHANGELOG.md deleted file mode 100644 index 3d910f5..0000000 --- a/node_modules/vuex/CHANGELOG.md +++ /dev/null @@ -1,617 +0,0 @@ -# [4.1.0](https://github.com/vuejs/vuex/compare/v4.0.2...v4.1.0) (2022-10-14) - -### Vue Core Version Requirement Change - -**This release contains an important fix (#1883) that relies on the `effectScope` API from Vue core, which is only available in Vue 3.2+.** - -### Bug Fixes - -* **build:** node deprecated warning in export module ([#2048](https://github.com/vuejs/vuex/issues/2048)) ([397e9fb](https://github.com/vuejs/vuex/commit/397e9fba45c8b4ec0c4a33d2578e34829bd348d7)) -* getters being destroyed on component destroy ([#1878](https://github.com/vuejs/vuex/issues/1878)) ([#1883](https://github.com/vuejs/vuex/issues/1883)) ([b2f851f](https://github.com/vuejs/vuex/commit/b2f851f427aa872d1e4f5a4774e07c4c69562789)) - - - -## [4.0.2](https://github.com/vuejs/vuex/compare/v4.0.1...v4.0.2) (2021-06-17) - -### Bug Fixes - -* **devtools:** fix no getters displayed on root module + better getters inspector ([#1986](https://github.com/vuejs/vuex/issues/1986)) ([bc20295](https://github.com/vuejs/vuex/commit/bc20295331eb2bee40d6ae779d1ada31c542604c)) -* **build:** cjs build failing due to `__VUE_PROD_DEVTOOLS__` defined ([#1991](https://github.com/vuejs/vuex/issues/1991)) ([#1992](https://github.com/vuejs/vuex/issues/1992)) ([7151622](https://github.com/vuejs/vuex/commit/7151622d646968686546f1c4c80f7575c9b99176)) - -## [4.0.1](https://github.com/vuejs/vuex/compare/v4.0.0...v4.0.1) (2021-05-24) - -### Features - -* dx: add devtools integration ([#1949](https://github.com/vuejs/vuex/pull/1949)) - -# [4.0.0](https://github.com/vuejs/vuex/compare/v4.0.0-rc.2...v4.0.0) (2021-02-02) - -This is the official Vuex 4 release. - -The focus for Vuex 4 is compatibility. Vuex 4 supports Vue 3, and it provides the exact same API as Vuex 3, so users can reuse their existing Vuex code with Vue 3. - -There are a few breaking changes described in a later section, so please check them out. - -You can find basic usage with both Option and Composition API in the `example` directory. - -It's still released under `next` tag in NPM package as same as Vue 3. We're planning to remove `next` tag once Vue 3 is ready to remove it. - -There have been a lot of contribution to make Vuex 4 stable. Thank you all for your very much appreciated help. It wouldn't have been possible without this wonderful Vue community! - -## Documentation - -To check out docs, visit [next.vuex.vuejs.org](https://next.vuex.vuejs.org/). - -## Breaking changes - -### Installation process has changed - -To align with the new Vue 3 initialization process, the installation process of Vuex has changed. - -To create a new store instance, users are now encouraged to use the newly introduced `createStore` function. - -```js -import { createStore } from 'vuex' - -export const store = createStore({ - state() { - return { - count: 1 - } - } -}) -``` - -> Whilst this is not technically a breaking change, you may still use the `new Store(...)` syntax, we recommend this approach to align with Vue 3 and Vue Router Next. - -To install Vuex to a Vue instance, pass the store instance instead of Vuex. - -```js -import { createApp } from 'vue' -import { store } from './store' -import App from './App.vue' - -const app = createApp(App) - -app.use(store) - -app.mount('#app') -``` - -### Bundles are now aligned with Vue 3 - -The following bundles are generated to align with Vue 3 bundles: - -- `vuex.global(.prod).js` - - For direct use with ` + + diff --git a/pages/common/webview/index.vue b/pages/common/webview/index.vue new file mode 100644 index 0000000..8388c76 --- /dev/null +++ b/pages/common/webview/index.vue @@ -0,0 +1,34 @@ + + + diff --git a/pages/communicate/communicate.vue b/pages/communicate/communicate.vue deleted file mode 100644 index 904cfc5..0000000 --- a/pages/communicate/communicate.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/home/index.vue b/pages/home/index.vue deleted file mode 100644 index c983906..0000000 --- a/pages/home/index.vue +++ /dev/null @@ -1,186 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/index.vue b/pages/index.vue new file mode 100644 index 0000000..4646807 --- /dev/null +++ b/pages/index.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/pages/login.vue b/pages/login.vue new file mode 100644 index 0000000..a318789 --- /dev/null +++ b/pages/login.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/pages/login/login.vue b/pages/login/login.vue deleted file mode 100644 index c9e3aa5..0000000 --- a/pages/login/login.vue +++ /dev/null @@ -1,226 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/message/message.vue b/pages/message/message.vue deleted file mode 100644 index 4de99d5..0000000 --- a/pages/message/message.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/pages/mine/about/index.vue b/pages/mine/about/index.vue new file mode 100644 index 0000000..d3f6255 --- /dev/null +++ b/pages/mine/about/index.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/pages/mine/avatar/index.vue b/pages/mine/avatar/index.vue new file mode 100644 index 0000000..7a874bd --- /dev/null +++ b/pages/mine/avatar/index.vue @@ -0,0 +1,631 @@ + + + + + diff --git a/pages/mine/help/index.vue b/pages/mine/help/index.vue new file mode 100644 index 0000000..d2e4374 --- /dev/null +++ b/pages/mine/help/index.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/pages/mine/index.vue b/pages/mine/index.vue new file mode 100644 index 0000000..b79ed52 --- /dev/null +++ b/pages/mine/index.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/pages/mine/info/edit.vue b/pages/mine/info/edit.vue new file mode 100644 index 0000000..519540a --- /dev/null +++ b/pages/mine/info/edit.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/pages/mine/info/index.vue b/pages/mine/info/index.vue new file mode 100644 index 0000000..65c861a --- /dev/null +++ b/pages/mine/info/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/pages/mine/pwd/index.vue b/pages/mine/pwd/index.vue new file mode 100644 index 0000000..da9567f --- /dev/null +++ b/pages/mine/pwd/index.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/pages/mine/setting/index.vue b/pages/mine/setting/index.vue new file mode 100644 index 0000000..0f9f058 --- /dev/null +++ b/pages/mine/setting/index.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/pages/my/my.vue b/pages/my/my.vue deleted file mode 100644 index 2f2b27f..0000000 --- a/pages/my/my.vue +++ /dev/null @@ -1,61 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/register.vue b/pages/register.vue new file mode 100644 index 0000000..61e6d5c --- /dev/null +++ b/pages/register.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/pages/work/index.vue b/pages/work/index.vue new file mode 100644 index 0000000..1afefc9 --- /dev/null +++ b/pages/work/index.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/permission.js b/permission.js new file mode 100644 index 0000000..cbaec53 --- /dev/null +++ b/permission.js @@ -0,0 +1,39 @@ +import { getToken } from '@/utils/auth' + +// 登录页面 +const loginPage = "/pages/login" + +// 页面白名单 +const whiteList = [ + '/pages/login', '/pages/register', '/pages/common/webview/index' +] + +// 检查地址白名单 +function checkWhite(url) { + const path = url.split('?')[0] + return whiteList.indexOf(path) !== -1 +} + +// 页面跳转验证拦截器 +let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"] +list.forEach(item => { + uni.addInterceptor(item, { + invoke(to) { + if (getToken()) { + if (to.url === loginPage) { + uni.reLaunch({ url: "/" }) + } + return true + } else { + if (checkWhite(to.url)) { + return true + } + uni.reLaunch({ url: loginPage }) + return false + } + }, + fail(err) { + console.log(err) + } + }) +}) diff --git a/plugins/auth.js b/plugins/auth.js new file mode 100644 index 0000000..3b91c14 --- /dev/null +++ b/plugins/auth.js @@ -0,0 +1,60 @@ +import store from '@/store' + +function authPermission(permission) { + const all_permission = "*:*:*" + const permissions = store.getters && store.getters.permissions + if (permission && permission.length > 0) { + return permissions.some(v => { + return all_permission === v || v === permission + }) + } else { + return false + } +} + +function authRole(role) { + const super_admin = "admin" + const roles = store.getters && store.getters.roles + if (role && role.length > 0) { + return roles.some(v => { + return super_admin === v || v === role + }) + } else { + return false + } +} + +export default { + // 验证用户是否具备某权限 + hasPermi(permission) { + return authPermission(permission) + }, + // 验证用户是否含有指定权限,只需包含其中一个 + hasPermiOr(permissions) { + return permissions.some(item => { + return authPermission(item) + }) + }, + // 验证用户是否含有指定权限,必须全部拥有 + hasPermiAnd(permissions) { + return permissions.every(item => { + return authPermission(item) + }) + }, + // 验证用户是否具备某角色 + hasRole(role) { + return authRole(role) + }, + // 验证用户是否含有指定角色,只需包含其中一个 + hasRoleOr(roles) { + return roles.some(item => { + return authRole(item) + }) + }, + // 验证用户是否含有指定角色,必须全部拥有 + hasRoleAnd(roles) { + return roles.every(item => { + return authRole(item) + }) + } +} diff --git a/plugins/index.js b/plugins/index.js new file mode 100644 index 0000000..efbae15 --- /dev/null +++ b/plugins/index.js @@ -0,0 +1,14 @@ +import tab from './tab' +import auth from './auth' +import modal from './modal' + +export default { + install(Vue) { + // 页签操作 + Vue.prototype.$tab = tab + // 认证对象 + Vue.prototype.$auth = auth + // 模态框对象 + Vue.prototype.$modal = modal + } +} diff --git a/plugins/modal.js b/plugins/modal.js new file mode 100644 index 0000000..99b2215 --- /dev/null +++ b/plugins/modal.js @@ -0,0 +1,74 @@ +export default { + // 消息提示 + msg(content) { + uni.showToast({ + title: content, + icon: 'none' + }) + }, + // 错误消息 + msgError(content) { + uni.showToast({ + title: content, + icon: 'error' + }) + }, + // 成功消息 + msgSuccess(content) { + uni.showToast({ + title: content, + icon: 'success' + }) + }, + // 隐藏消息 + hideMsg(content) { + uni.hideToast() + }, + // 弹出提示 + alert(content, title) { + uni.showModal({ + title: title || '系统提示', + content: content, + showCancel: false + }) + }, + // 确认窗体 + confirm(content, title) { + return new Promise((resolve, reject) => { + uni.showModal({ + title: title || '系统提示', + content: content, + cancelText: '取消', + confirmText: '确定', + success: function(res) { + if (res.confirm) { + resolve(res.confirm) + } + } + }) + }) + }, + // 提示信息 + showToast(option) { + if (typeof option === "object") { + uni.showToast(option) + } else { + uni.showToast({ + title: option, + icon: "none", + duration: 2500 + }) + } + }, + // 打开遮罩层 + loading(content) { + uni.showLoading({ + title: content, + icon: 'none' + }) + }, + // 关闭遮罩层 + closeLoading() { + uni.hideLoading() + } +} diff --git a/plugins/tab.js b/plugins/tab.js new file mode 100644 index 0000000..5d1b305 --- /dev/null +++ b/plugins/tab.js @@ -0,0 +1,30 @@ +export default { + // 关闭所有页面,打开到应用内的某个页面 + reLaunch(url) { + return uni.reLaunch({ + url: url + }) + }, + // 跳转到tabBar页面,并关闭其他所有非tabBar页面 + switchTab(url) { + return uni.switchTab({ + url: url + }) + }, + // 关闭当前页面,跳转到应用内的某个页面 + redirectTo(url) { + return uni.redirectTo({ + url: url + }) + }, + // 保留当前页面,跳转到应用内的某个页面 + navigateTo(url) { + return uni.navigateTo({ + url: url + }) + }, + // 关闭当前页面,返回上一页面或多级页面 + navigateBack() { + return uni.navigateBack() + } +} diff --git a/static/home/chuizi.png b/static/chuizi.png similarity index 100% rename from static/home/chuizi.png rename to static/chuizi.png diff --git a/static/communicate/kefu.png b/static/communicate/kefu.png deleted file mode 100644 index 14f59f5394340c2e6136edb48748b9fde9d9af99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10453 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 wAG$yg4Fx@G&R45UHY|tyJm3?{2 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 N20EtNnA?ug{{xB%M&keg diff --git a/static/communicate/tousu.png b/static/communicate/tousu.png deleted file mode 100644 index 68f0e35708b9bb295c9406469cd18f8bc9373c37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7172 zcmeHM^;Z;5w1;KsT6bwdmktF9$)y&ll?LhV29Zu_7o@vUWa$<}DQP4GX_qdSTo$AR zL>}MwXT0-%n7QZ7nKN_mow@gZJ~MIJnktlJOk{X?c$5fLMcq63?Y~Asbl2A!)fL?d zd~aP91-!a(=3P9z`&|e{_=^Awta)$_vwr4n;oj~Z5cum}gy6CaDWWW>_gU&M&audc z)R{mMftuduX0!uCRo(GqWcUv|#MaW^)cd}KXSdpE!)1H$?-|qJicl=G2%o}fwBl0D=2->q-`K5b3rg#{efT+0hOr>BMw%}RZl5E04%zLqyIMUm8J*mkkYwvbs(fC7oHt0P3aU-nu)enU zU;183)ezOIwc3(44d+FxAeW^=h27F_Met&!La``Y67YJSV);=O`@98MBZaO8;X`ID z<$&eX0Xp}IlFIciDRmQ=LN?;~c~veMU5*26<}GYAQa;xr@H%4UqXevfEYBHF9cVOM zfO-Ok3p@oeLIDrtVXZkJQ{Up!mh7MRIAUGF$q?%}a{mTxrrW~!IP)=o7Q618p@d7k zb6sl@zWZL5!Op>v{XQBSnrs%j;<{0xkLEK=@1ZLm6^S-0(h=c-Rz<6a**16!VOSJD33ybLwAU6d>vMlp z=!X{KD9s(7v)JG%VkY$yyfI>198V~3)3TrI6Mj}zw|NeRuRfFy)D2z5`>`w(^_Uj* zD~>)?AhbhoGCFBNeRSS}D-qggmTqN1`2(CS^iv$O#B}DCqki4Di~&RmQmIkE{btDqUqts9^T7!f-aylS%UiER9HK%H(I7U_%Z~HbJSz zbA{W*%sLCXeNyT2kr;5~`4&yz;Qc%(`?8+Df8rGwu)-vkgFL$h4q6pDTOAtt zD)o1Pox_~{9Sq_FSeY&aMyTE)OARQbZ9Z3CcG|iYlWjt2;0G3NZ(4R2@q$!xpe0kB zYuf@Ri80UJtu{XM-slX;!P-vR?dW&2BU zb%z(k&a$pi5fRlidD|M9n#f&|{ggaW1kee;R6ku2+h3WC_=OSS5hZVL z_kk`p84jM6!sCV;>70$Mac2b1%}QO#ei3}`gIT3&h8PinP(KXUXZosAQf}`{C}xNc zTlJM_T$iCeX;V9qEBRQfd)9=Z#S?-nzrtKnJWi8n97+0_+~1Xj9lLXbuIYs+uvp4lA5|tEZ1aCk^K)83gt6se*oi}+7|o{{!8e=B)$M019=F? z$lj+2ENb~@<6B|!+&@l4=kL#g(;1AEx93{sjoYk1I} zBRav_Yp9=NKlmjk{zR1a(}vqK2*>!2J2+S<`yXvYl6ERM3MY`^s#4WJ>v$K9Udo>7 zKd}Y7{O8zrJSh4ay!vFm-^*eScLou~A4RD4oSsyyHsY6x&f=o}e6ONQQtLS-*M}%V z`aP5SUCbbgGGid`VVn`UyKUqT zT896{sMZXM!e{z8Yby_-dqUa{I%H+Vw##rI;^TbwMy7e74s~{OSzA=akbJHZZ%$Z} zFYzSH|8MsHZv4M=L3T@hK(KsS7DYqE6w1rd1UGHOK8eVyp;7<(7uFe-pguIdWM6k) zJ?%P}E9ao^VyNb$%62eJ<@kM*vbUD4lg4;%WDlvzZQYv(b-{0Ovuvzmhm14#uxy3Vq^^+_gfrs~NrcA}90q7X2O8!1#OFT!Kx1?iul~H*BQL-P zwJ~aeT1ko&G6&QluPD@d4N{j&G5XFhKEwFIh|0E*E`LERBFU%2Ha1E9KUfI1N}q4mxU1X{3pW!Xpt`JsZc z6}b^jnH~p!(m*r(+gin+MrJ*^DrM8mvK&QJX5(-fJAzJO@6A{;c7R;S!es|3r@y?Z zB7^j`@hAGJn!VB3kgMl{p^x261bj7ck2?RV8^OG0TR&pHKtq&h&?>$WRNpagUOqtp811A0mCB zT+_rJP;pxIs~gBToO}Ddn-~a}bo!!qnJZnZHQ#i7#uOpX^u%nw+CULhtM zz03U1ggen8B!6@~(U%tvzr?f1)j_cAOPcQ06bbvm;k(KLiPHqzV?!_>t>|jWg#w)T zP^*j6J=q2;W;_nxFYc`ep*u*zCg^gY?C82@xe2Vs?~H6R3vFYh;%F>arhSc;Q73o{ zdmmH)e2S;FlBhlVxX00gymxAwW?|H3kjwv8M*f6?3n`l-NSl0^R#Niv!T|5Y)tE)T z5Ys>3?ERhuran$%87{jWCS-AD`1#g+C6iPXAVc0uVkK>rId>yv!Kg&xWoz~rge@tUuVfDZ){MCxwKY0BLV@okcOE@9Xs_oUq zH96T-XdGcPC;f(`#GC>6_y&PS!w&LvoFbnJeEf}}@A=aN>iYV!kV-&W-<)e^dV}Rf z#KvK+WQGlHcviEdnbflBd6FA!#DSTI_1o0pSdBnbr+~1225^U|+Dyj0>;no`3Gfr} z7VUnRxuxE{;FWz|1T!#aom?!a0Y|DY)i~AxjHJ<&3@YQi_3bb>HWRr(TBEG|SJC7b zhQG&lT&m3|J9%eLsuQ4n#@<>{N1#&k=wr3&jSe-7XgjB$Fk4trp5!;dB{ao?7l0;g z#W(R+^QSAAE2V|Ha@p_42Q`=EpcUR3vwh)nT(!h&x;=LTGe$U98*&%>T}LKd<_2@Er7{BDEm!0Rg=#f!$h?0y>v__HBAcAx?_f zEnwo8KPAHjUrKP(9k}Iw7xs82UeY@y+_tm_{4&fF{YAT~RW$GykoPdDFd^eInCLu( z=y`X{9g+>Hv|!$vPwxxXc*-KY!t_l>s*>X_dg%pU7BwparPt>Q3COhIr*&<`4}Srj zeNsVB2qU~Y^t}|hF_)a^Juh67OUG#YDaDecn1;3fe1OYsskz4;GL--+I&ORLP^(D`&$RJqZ-1*Y7p)PX=RjUIf zCv$U#amP-fFvr_FqW^b~izPW43b|n0)nj}LrL16`_`FgjQ4XAP7eSqARUabR9#}K_rni08{+%#3!ZdH#+gmt2HFyi?Z016^h+V88#eeNRs24nNTo%ev{0}G+ z3floXDJLW4(56+P<&0>*G~?HL|0D=JDQL1wmfOO*xMQFeAa+S_QUW+VptyM?DZqT- z$z{b5w&RjhFhjtsQ^27&&|o;V%LU}S*L999xCDmhc17mjgIYDT9w0TvNH-jBky&X*IDn_>Bwh^Z>&(r7N zOy+l53W|hkF>F5C0A6``e&GuehgLkH4Y~sFpXoCX+t*n?6>}!Kx_9i{i84viNa*=X zI7RmU#aQ_h?lKWTJ~U*OPtua2MlLS?itDCj;L{1luvt$%EBKdYZ^%}dxC z!za?D)Y&gD??sDP#$K%dMBKI{KrPBfy)jEtp!3;pS079dzQRdyqXQ6qC;jo~^Klas{ONX*)BE*v2YFhViH-+R?zVjLqFfTwaFIs%j zS&&jMxiqyW96yqKQ3Dr7zZPJvpD>XMc&2lL&wS7Hf#wIRS_K8+f`d}dm>Vk-TOK!hSu5;tBV=aD2JVfh_Q38g@ zy74chGP|pRGC7W^@U4W$c@pZ#&n|y8K%mZ714Xp|6qkB_;f2(W0aQoRevmW1OcF7^zpkxLI(|j z4|tYs1Voa%S9-Q$jg#lt52@uGa*1z_tCu`#3u1Yix8|MwD|-fMWC?M~!|M zdI1WHe#SF3|FT`FrM0;kUbPmN@Hp6TAQ(h@kL(w@5#nL@yp26Z)amQyMOQxX4N5gQ zE@>Vmv%sYr9u!BIPx+o$&}!*O2UBDq|0q{rsN~8}=MkL+p zGXo4#I}sufwaA*{nZc%xKo*ge>IRc}Rwc_%1_mlL3kiw5!OCUyzW=~@_CsCZ^>Xj$ zz^4V(g)R%X>HK0VgpAD8EdFe0R^0@iI9gHrz)7_*e7aSImsJ z_WI11^g|03CXL*xn;03#uyH&A1GD-3^^M+PDGOz<1C4xF<{`VMT|@5=Ec(0;0mZmS zuICQ%@a_!(PkRY6wx#%=LLb3tF7T7y|=VPZn8I zQu%rBz2@P)@Q!0ezRA2muSqSbk^D5|UF+@>u=TPWxU95k=NA$$5M6Zzjgtjc{Gp5D z`bP#d6BZxMwW#Z+uKrhwo9RzZfh<{$QdcTJ5>@O)y4 z`?CI5tex@jPj1c*Q~WLOl&ATRlCIxUI1&1|YhD3^;918FesLV8kSZD4l&KyP`2NM) z)6???FZz>Rt)NvLfgpQLt;QMS=N**u_$8uUZc$?5?p;Fd^uasVAhA#(z0E0wo8(Ii zE?cj5?7quEvCYL}5KEbqvyJqQZ=wQfFSJE`@@qfDjv#3N!Yi;iCrph72|oHjV|!c^ z|KZjB1c@11WA6#6^~XfAPy-Lm^{H)h$H^XBqs4-N4wO_Z^nrTv>6(V#^64dBC>PsL z3l1xxoNI6gJvg03DP?$%3(tZB<2uAB zcL%G;L#Kx3QY;nx!cVDLn*{ zb%h`P$l;noFbvsf_5p;>cX7Z2>oO$+R8a5>*@b0~A+Q~Rpr4rc@3&~o5Jvi4OrMyeM+trQYiuI3F>D)z-L1x6GImU5LPnH48sQx^f!X)l*L{OEc z-DDBb2XBl$PT~W^!)al|DmBt= zyXXb$cD6<{Z4=99eTU04rCBr#Zb&>@S~PT z+{2bNOHPq)gmuI1a?ZmA&P$FylH82HKkmt z=`nd*cOxIb@w?X));$@x1DfmPLIt%$tzJXKsw1%G{UH>ey!CN*?slXcz$#20lKyVc zmBa_NF0ndy!PqlWOA4;>sCR1N)#>18HEgsttJG?tCT`$T{e0DOUuTdpB-8pwX6J{b zTAr39u@9sr4FAqp22ACSyYlay*=)w{6x(1H%?RXjOsix{Bv46W<)q+yfBnKnC|(8P zL+J2ARB1erUXPHTo0To5wf8z0Vv;pmD@lb(MXWgHeUWO-;W-_3!Xl-kx3+5reciQJ z!hCj|`P%b9=Mq&urGtV%w(v~`iK1}#{N@|!2oFC-aaz9F_Pm)%8#2Ckq$Tf=a1Hg8 z7-}LNY6cnk&57&8NI^1;4p-Y(?N=UDd(ZY`s=IFq-ei*{D6s~)+lCaa F{|A3Iovr`? diff --git a/static/communicate/zixun.png b/static/communicate/zixun.png deleted file mode 100644 index 06c0e47bc25b04c957c9de7eb4ca47fcb914618d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10096 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 O0Tg9b!8OumA^!(BU|)Fv diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..6f07782abfc7881a73d3f47a00b761c183e06ff9 GIT binary patch literal 16958 zcmeI1Z)lW95XSfJqDezYN}8rYBqt&wBDRQ#NH9S}`awjB6cH&RR+IaarXpfR)DlFb zh=>#s5s}vV!CI~H?vjewAT~$|B0)q%Ob{C+NR$wa5bpYW-n+GzGl`d)Tq3*|=4RjB z*`1kZW@q=k7~|ourpE9+%gkG0Ot~>;9z>Vf52@ez)Fhev?IPeJ;3D86;3D86;3D86 z;3D86;3D86;3D86;3AMK1foH+JQgzNVqw$JTyN&&O7CRrX%3nX@p%uvKY@CnM03cT znQXfzT7Og6l;L{_e_Np!&@ztn|9kuk&0*mkI7e>91WFMsH5xfu5*mkfh9dBF5b3Nj;06R}W zvR`>_rM4$Rk}X%U^tqnEmN0w108jo8jZ-YY|C&!zo^+VDAGbdNd8 z^X;_r)DI@*&`$c=Az`Yug@I(Bw1mx*OSK;#{bkF-oS&cQFN9>|bU)uK3F~%OJ(^qqrLJGAGu z?j}2Kc_ipv#X470UaP|ben>-UnGpzi(a@JbHe*Fn9UzC5+C9XQuiVy1usIW{8{7K@^JlQ0 za@YDTZu9&aHjaoZa=PEQ!L1z~Jim+tOpR<#<)$6ens@PGf%V6cQLX$BBjKQWx;|Yd zvmFh1%A>*Qp=ii=p7nZ&o#LgO&>j-bJE+G+ne*&3;|16`8-55<+!B!HYMn=n-Gpx@ z4ny+X&bJ&pw<71%FSz2M7+k$lo7BzoQONqQaplQrJ71i5?x0V)wQnTT5B-=fGg3Pm z_D*jKez5rBwu;Xqf$6)McNI$JZP;7@oB6}dMP?SHJu5$NLru_m=#*-BOZ}U9p1BUb z>)vu2lI^lv_V=Q*-pb;e-u>jW#zo2j;Zb8{n(B%xqam;Mzv3pD2h_%gzi$0xNS;{v z(KxmjP(O-d4W>9&Z)TIbZ|v9f`I5(vGISQC_h-{)ZPg3a2fOdp{+qL@*v{uU09kx2 z27TbN*UE^;g1*Dx_Bu~kqwlw^GD&djlGBQP5Z_Ar8p0%72vD=@iI+Dvcl^Q zF|M$F!~&j5&U59D&cY7X?urJdowwstjbq;;>{Kqx7v=6#_I-?Z_#t_O|4ULbPVJ*D z|0Ul;{y6tV>)VCeiq*tj7^(&ei|$A;f2AFtN*vpCZ?XGYG3&zDk!sD^G+CP~kJ$q| zGkqc_4j`-jB3!${`6hi+>K&N+qI;qCs^WAXzx#Q=e_iu3eZq&M$fchV!a%jIHB%N} z3#f%>7!w9szZaZ_eV5Ffn~P`e?|PTfd9SlpdE7_Nj(S#Isx7Ta?QQvEC`UTs$WO4T{jx?SYNFF&i-bdhSAob zrdEO5HRNLgrwsXcqj(T5- z&g0no<-4p$O>0d0?9>4A-_sQdO&fAw%4U6R8S%X)oB3mv;Z9SC&UZe8@!kFor2JPN zv{M&`y)%r}#`i%Ue^mpu=jFf7|C`|YUjM&mEV$#Z-i7)h$A9Yj?_-(&zRTjT-t!gz z4(OTgk?*@t+1k(VLHZr}6n^X8=}!t3A6C)>7M z=;z$tsGOJYkn?|mT z>h3?Q;rsvj_PIZii2MH9HIUD6Nztyo9)_0}?Wx|+aJ;C>-&q~^4OUe72mAvigB6t} ziG$Cp2ddzFEPuYIgz1R{{GfQ}U`eBR*I@n)@z!{Lm-vl%{($(wME>ADxIf{Gi&rNc k^WuqwvkX1XGQ;pA^y%ZMhx_%w$M1Y6;?*ghWE1=SFG{UvNdN!< literal 0 HcmV?d00001 diff --git a/static/font/iconfont.css b/static/font/iconfont.css new file mode 100644 index 0000000..afd7102 --- /dev/null +++ b/static/font/iconfont.css @@ -0,0 +1,90 @@ +@font-face { + font-family: "iconfont"; + src: url('@/static/font/iconfont.ttf') format('truetype'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + display: inline-block; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-user:before { + content: "\e7ae"; +} + +.icon-password:before { + content: "\e8b2"; +} + +.icon-code:before { + content: "\e699"; +} + +.icon-setting:before { + content: "\e6cc"; +} + +.icon-share:before { + content: "\e739"; +} + +.icon-edit:before { + content: "\e60c"; +} + +.icon-version:before { + content: "\e63f"; +} + +.icon-service:before { + content: "\e6ff"; +} + +.icon-friendfill:before { + content: "\e726"; +} + +.icon-community:before { + content: "\e741"; +} + +.icon-people:before { + content: "\e736"; +} + +.icon-dianzan:before { + content: "\ec7f"; +} + +.icon-right:before { + content: "\e7eb"; +} + +.icon-logout:before { + content: "\e61d"; +} + +.icon-help:before { + content: "\e616"; +} + +.icon-github:before { + content: "\e628"; +} + +.icon-aixin:before { + content: "\e601"; +} + +.icon-clean:before { + content: "\e607"; +} + +.icon-refresh:before { + content: "\e604"; +} + diff --git a/static/font/iconfont.ttf b/static/font/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..53915cafcb782962308dc5f2bea68bb528f84de4 GIT binary patch literal 6724 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 literal 0 HcmV?d00001 diff --git a/static/goutong.png b/static/goutong.png deleted file mode 100644 index 940eb60705c5065b060e8c2969323130baaec2bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4167 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 diff --git a/static/goutong1.png b/static/goutong1.png deleted file mode 100644 index 6973fe83c8f6fe26d9a87f6c3eda5173a7458d0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4420 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 KUYX8W(tiNQG5GTU diff --git a/static/home.png b/static/home.png deleted file mode 100644 index b16f6cd4335da7241f17d984005b0cddaf3bb9c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6042 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�H{mfLyz6P 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 diff --git a/static/home/zhengju.png b/static/home/zhengju.png deleted file mode 100644 index 182bff5c3b3cc275a1597a9683247c85a8d4c96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6876 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 RfFBzqTK5s^^=h_J{{`G#0b&3E diff --git a/static/images/banner/banner01.jpg b/static/images/banner/banner01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c44d84c908b2bcb048e4dbe438d1f3ff48058f01 GIT binary patch literal 39640 zcmeFYWl&sA*ETx12G;<=1A{w*2A2ss3~s@K4(=A*0>L#n3@*Vv5Q1y)1a}P(JU~Lu zko$h#@2#)ibL!Oj_5C0tzdzpr zgmNAh_C5e404gF|902&Uf#PK2?(Qtg&F$#MWoGGQZpCHc1mpHLbLQsd;^78}zwmZ8 zv#_^vr!%**wsn+XIPK_WptH4PRc_}W{DSTekjq!afR z^@cgatlZ7$ykQQGZlc~241a}-BGQl9+zfPoi@4iMFi1bPN~fo)K_~0vYDFi=#m{NM z!^=x2B*eulASfin%R$G-!^_9bgZLBTLPT}9S5Kj^e z{|?H_%Ztm4pUcVBnwwWdMC4HhA0H>81gD#iqq~_mr=uI=e4#5PF6@xSXf?K zjz>UVj+YlC%P%L*FT%qwFC@zY;+6f6jQ^>wfV7N)ppg7yO(9-hc{ynjIaxVDerY~I z1tA$8dEWojRd#f9H*>VG`cJ#Ih<5+2EBpUgS5(&3%FNx#73$>V@E-(d*f_a6x!E{5 z)5&TH(Xr~G4v&abHL|Iog$oS?jjfP%2R;6LLQ zk>TM}kmKhO<`a>V77&nO__wa*|Cc%AMs$Yz5gh*wEdR+uAn-ByU(iQ9{Fm}rIU+R1 z6`>k`P5^j+0S~b3L8u_opCv#T038(-6%7>~4GkR&9r2HYiH?qmgNu!ggN=<#fcy7H zfQyGufRBeuOiV&TOiWEhMMX{fUq2)a42&nZPbdfoD4voMl0N;f7yoY)e|i9fm`HfY z^(aV$0AxZW6hfpweSlE_02vtt3F&_^2mlEg9R(E)0}~06`@g?Iyg(;Flt4u!Fws%5 z&~Y%(5RWJTLR2(*B6MD9Vhl|)7Y4rI#7|Q)5Jr-MI&;?$(hYts%pXbh)3R=%Ok{<< z77a7xXPe2N1>94Zg@h^Opq7I2+Rwvgtx|OmJwpgbM#n-yMn_0}oIPYh6nb7FRB43V zUw77|4JiY7GLqb*UJ1I%HI8 zz-9s+27pirgcJn`{+l59TOJ7jLh7fJ!b3$O!Fv>n3PA{xjsnDBAfp1-ky)uR|2E-_ zM1m_7{8%3lL=l9Es0$$YCyM~hK>YK{|KGL$!)Fb7Z}dTbSum)~hg7Mss6<0%72+Mk z&fo(H((3TvdhgPv^HV!#Ng}pZdp?@Vw=&tcVj$@^-wVMarA*HpmZ-$*tW4cAYohsc z;z@L?*7MP{GvjTIA-V*)sGd+7>udxV{)0UL0&r46n8nlpDO@R31bl)p|II?Ker9$O zhCmg7A;ATJKre`Z4xJ$==pW1$V?F|t0OcR#Nj;($B^V%u$BIedOec@>7vcz{Bg7#@ z_W`6r9}@`ii1G-i|HU^l0=ADrk%0(7bbUytv>iP;5l3@S{LFld;R{-#L&?bDPNE}; z=i_f0Ox{DPn}9w_Od@IpiQ6fe)Z>+u9#PvJuRVW(bGK%i0?Ea>cU=TcIWC)vv0Y2@ zc8=6W2ACpQu0JGo6T}`nmg3e6I0^}!?3Uf;@>lu@S8$klkVOBQ4hEf3V8kFMtnUwi zB;$(XlwSOYb$HvqQx*keB4ps9JAT(Nfm!^|!2eI0uooTOe*p9yZ{}a@{++OY=IbY^ z9MHzUeKBRJ%*6^XKc$*QZ;WNvOQOzOT<-3}wYGNyStXXb)U|jCDvq7SX%AOx zSx)?Bcp*@zCa!?A8T@zN$y^Q%R(ti=Cox=h(m6Lfh6)Iz>7ogPF&wr&T*y3pxjiq&64$?*H&xXcRK*-!KQ*1FC|si(@lHI3i>!5tw3kgpWnm|Hu}UUCq-E*;}|+J&!?5F zNN3SV0}a$6VNs#|nqdbqTtZydD+k#69gG)jX2E|K;Ul?t{qZ}Te;46dcph)IbDoc% zx=e!|73V>Hr3b`BkJy;6BcA0{sLFq8$GA=`kojD~PE@P*{tN4oe)YA`D3!Itf!w8^K__s8~xCovS)Z^iCZ2Nqf0p zFCVWiWhOJ*SN{Z|0p+Ao6t*YyN-kXVVA(Q$SRYX;(l#!Fp_|9*G zBRuh3$I(jxJBXFi-Ei?T9oszoXkZIdBH7V?fs9ZUiW9_21!Mn`8u0YeiqL;5Ooij+ z2KAq$n9I(ZBU3rmEV=*_^7mQ2AZ0ujjDFzQnr-L`yZDrgzBh7W*zc7n1A(TJlo8}x zO80~?ez=g5|JNvZMDwHK01#Y^$U@SI=edyqI3qpcI0(Vwk6cVBC51pa0`3rmz90x1 zssGVFL6{W?7Dws{LRcIK?IB?sxYSuH0@H=`F`z@6^5 z!c$g6JKAybn}L*>0^6%=tysRSh|+B1JMDAC8wQQKCMM4)qL3Kro*;(c9)x-V5J^-_ zy`w5&Lzo!1_Do)?50(KN;hIA@R&1ZQ`f4=JR2pV_^GpQit4XQtlS0+Bh|TGYEy%}n z9WW_#{&vcY-dg%@h1{g~>J7I4jtt1-$#zahD6|wpp#>2N9U$fL${%bM`>4<^=h1`d zo_)tZ(}%8Lrs4f7Z}{UYMQq_s4AAy07j*;AzZ%_W#T-ayAtqM-nd4o+#J?IX==8iv zB3|s$_SZx>XwT9g8sE6e^g#Jnqt|~}2e+Mf{N4SbNeG-M%Oc}_v1q)YC`>>=ffupu zN+AqL1QR0GoesOvC$jw?13^t^fur^$g&-=r>rx zR4a;yXAd~F!M%rU4s&B#jr^h)DUGJ!Gkw8*F9oj}h)?wrE(d+&yct^5t4YN*5fa=Fb~ zg=2J9q{d9DlX}FoPCoVm=kOAdT1<&XoPp|>whQ%C@+UajDvclQk4dAEVt&L1iK5Of z_OJm?)j;n)KXq8sIui9V)U~}(sat&G*`;=bRoP|C3L~+im$#DN33BQ47jU?DsWBY- zp)D*sYIP;>PO^C0@k3F2dDjc@&h^A5m1oTUfXcgqJ~VYS!p0LO!dUAkV+Moh_8oOu z0jrnbiTp33gX)@v%~y855vhYHtR7?aTtGGrHPn07=R&>TtwO9N#yi(5nPtghX6$Dd zYrdJwjGDKtM^YwB1ANw(Me|VDKD*R&U}mC4Ed`Bv zf*5TbI~r9bT0xi_G_IK0JTRxWT(TCqtznVBL5+0C`EX)1#i$iz$h1EBQEe{s1sR{L%04`A`d=I7gl1KP86 zU+kKeozMjzMfpuqd6v^sN*3- z?h}bND#066(+)iQd5d3udCevzMz_JkRH+e3V^dqDBdFsZ`N^KViMtfuO!wcBx*)rr} z2S5s6SKsQ_>KFPM#;CH6VX-4BM`H$UHFIs=x2W(?NmMy$3oDb1c2%^`xRp2SHtJUu zyQoTjTQ1HS^cItjJ4;Hc0G&wps&Nb0DJXpS-wut)wpRV-L{`(z&)kR#!&+^gv0#|{ ztrfE7@AiC6Wp5lk4C(<*|0rM_=D(aEVOB8pzPI!=yOJ+p8%nJ@)|4ngEh`LuqFG+J)Zn>F44&t@G+n_q-bL5Oqi=NGXUM0S&AO+t;_hOfV)_YH9uu0nwSwUG3p}f zIT#y=3^>x9fkWe5mgw?@S#2m;4Cp`XSiKDSI_5K{e` z@Le*r0~&y#LZM;iPHLsyhCMWn@j|v5lh_jdN9~@)ZRuxry#@~lS zagNQ0QsHL5pOX0uc6XtkTs~NLtZSTjtIk@TpJf!qjO&vQ`>&Kg-5S0D$ z&-PI%)L%>s0u7r`4AURn>}`EIZ()(2HWZ$!r*5lPZ7A?yBa2 zLc0qM1Alp}W7G6Y4ukhw0_V7OD*IU2ve7QstRCn#E~s#22{6S!dq?6wdq>6$E=nsy z0pqE+?#^Hhi2Gj~!|U7H1n6aF7yNo0VPd2ZOKYT4BRgtwSo%m*XZsh5k2bS7^?g(< zwfn{8Z92AXS7TsntdPo8k-@9?cjJ((=h59n=Wl4w=|q@<6TNfG^Wu|ab4D3+I*^vK zsarTfA7>(q)V=EFn-~?}X0I=~-u!zvlG>iD?42=0NyTMwDY)`KreHjWrc@t53Sk!m zf-v*V5u11r+tlu}{lD7?5Z`epW49=~p}J-|E3qWAv3lZ3G)a~CdEI84Ff|N}t)U6Q z@DmzijJb|;PnwKAI8I%#`;cbDYJ3R~te9U;ul%(N*IuBSQ!cXlvZT6gwcLbPb0 z@*c^NrWEDdQ%Ba`U242aE?thBI@dn{= z2Nhc+s0Ace%XXAs2zTUM!CcG7z8FO8lr?$W&FQ~tYOwntdBrUMsRWZtd?^M7l+x57 z#$?m^hUGq>OIJj4^j7d|`<@6Jo7@i?|C^sJ88=?;<0z@B;`{Q?Zdrr-4LNBwQM^3|Z5I;Xw7Iu`mvq{}FN)7reM`G<)SY?`FNn1d zIYmY!(0?bjjgaRR6~pG5faMI)=nAh+V>zY4+m#2=^}oN#j8Pl&-8?n=+NNuCiv?#t zTGf`fQneC`?`(SwiIY$nPO)lHHnyd3V%lkW>$7q4ntLT3%qrnFcf~6H^!1#w>~)%y z;Rvk&5nUp1`5s)hNW&?$islIcub!SuG+0 zs>+HsX6fU6 zvNbPeh4ndGKW%=Y**zYZyB0idcX~gHoW0AV3C*kTymdF=kimtsBk})U3FT z>etrenwbJQYM&6&!QuJ|$w0jO`p<5~X`Y{4+WDN(zd@-`|k!?x35+DUV+)B5c#N(q^ox=vHi3 zpQ=8qTADl64a(6qk+PhoC^GT14Dohc*O)Mu8c(>-fJxiw4UjB=%s z%7^Vp*LIw9+>s-pY{LRyfwwsTanW>nG{beov_bOW#D1CI-< zwSyfYZ=B0P<8?yO_o^qqct5W0YEF{)EX8xSh+C|rH_V;0k>ilA&gNG{#AH2tnif0r z%dBCP=0gYNws%YOf8=Z zS@w9ed*Bv#Hu);^_hjc$eYq9ZF}i44br&-3?dVR5<>GoeQ`>szX9&72`j4l~vsPv= zJlj}%RD!)6IlH_BS0^VmRvAzIm{Qp^isGBKhnSBzUchAfVn zw*rdr`bR&F6VV&ot+|GeVL$%aon2SiyNJRd|7~|(^l{Mmzd6v!Tn(>yX%~Bh^9ON` zdVErXw`%2+k}}&Rk)^~{!W1kjEc|Vj4d8C@P66R7nm`77lIK4&eos+1qUren4+m%}EE?!Y#ixHd6{wbb_PO;Et z2#sUQ$A)yv-k8Mqj#L(~RLW06^&&TXIh9GuQ!ky#Z0AfLb-DlO|<>+_*Ok3WFDNb9!r6CHa_7MGcE+ZCb3r1ARM z$VzaMR#L&Y@aEUVIr>fL@o)(^%DO z1RCR#@#FmU&$!*M<%;Re*`yxN99?stGNoZ=t!Zwf#pL^`zM@kx#sOX*ujESI*($9Gs!zeCu-91xuRv z(@u+ETW8qNlN=*Ycb)p7%a#`&3Tbnu;`n?*POGsFp2dFvcNO^8iF1`s2U?+O7c!D9dYU z`~bUj#$oO?@kvD)9GIoyC4_m(J|rr8E6Q2iDep(y<_k%WT-Ea^=`No!nw@Uu?hvgWF;ZP<;UX`>FP*~Cncol8nb$Qf-zV2EKRpq@ z;=^RZ?IQ;m6)*Xu3L>pCT{;+Qbto;gNBinrACKhR(u&%>+*#8!so*BJCa`ByVy8o8 zLJdlR1F4cwi)O<}vOdX}XwxiHOF~|ORc7;g{*g~pneD_6t zfh?pr;b??UiufM*tPDGozxqX$7p(^<4=Tk7T_=)etjf%2d|pWH)phP)X9JGkrMW3x zL<&b!91!~wx}849ssS}~$f+K!W?2B?qOh}=j|Bd>j4JN&N4w|KyMO*h;VV=l7?qNc zaf+mm?tk?9i{ji2O6_8C z{2uO=X99;Zkx72|da(t<)F>=YT zm)~#Gv1(@huTLL7<_hIm{CtsDRaD=l4Ck`MlPGNcnNYwaD#i<&+KX36J5>xzTrYiN zFUgZ$YQZ^gVi}rR`I*xC51{D-&#{(YXX2=r#Q^t*tL9ao-os;4hJ%;-%6dJ4iQAG> zUmGdoxfRnuEEwbpWq#K+y_;1}llW-D2!od-BAa>mt&xw5s+$^&**+>%xMiWg9==!o z0}vABJh7sF#`3=Hyj7jz#`Hs#j=tmk4l#7$v+~KDpdjM}uX>soy(i!3toKcG3#Yga z^)Ro|dV;AxO$=3l0(*4({PoNJRg)Qy()W5o?M187w7FSu97oK6qnKGGF?z}9y zD8Xo{E%c8g*3GnKmN%Mm>a=uPDC%o*=4Ur2*2^N(h~%i)*=U?`_e9RbMza~plFTWr za!Za6{Q13Loz&u#)=&XXCd65qUX~C!ZIqkW@zRXbNb@!h)FTqYMkIL?{^so@wXi2a z8t+NB*^+$#>ju~Pb^54ee#5F^4$ek@u;2`L`(fZYo}}h8<0ayjO;g6{Cf~=;iOwFi zoB}7sB_91BvizcyH|B--YAjycdPh1q)U~I!d~rSb^>Jk%g(BdD)JYO)js* zMYXn(rl`ds0F|jYS#fZ=d4q*KOVEN5DM$^VawSEn1-|Rb^xPnVPmhJf#uN2?A9(sU zKgl+WN@mgoAOoL{2DV$CoNoq}rJ6_a&A1mGT=n<8f)q_iB>esC1$nkMlxxh>OFBlQ zMyzVx!mMr>`V|dGWk>qLs?AGO``v~l=lEKoNN&lXllsX^=Jc_agH;PXpRxh?bh_uu zCs5Xkv6Lcyco4G22h<04dnMXip7#V-*7FSLyhGtbD+f zx^bY>yBnrd?`NVdESv&;cj`tqG%9PX0#}6*sU4{c>fNf^nhF?%ToHyY>|luN8L!vt zGZDoc$M1n#PS5?kzP~({=PyN|fTpAXJS~xo zU8byIXm9(rmYp2MiKgF-~Yx4TT1^-)n|` z+H`jGBIjZQO)<>eBR*5jTnYb{ryYUXul^9eHE{*yb?oMMFA0W}b6)S&=-emB3JZNx z5@!nWb}E0ZtRy$LNk^b|tKipKN^Sg9;MQYU!5v(_>u1tBh5yBM^~!uoXx*f(v(&f* zJe`S=k}8obqV$82O-piUtHrfJO`UPJ+p1EHM?a54*Puxxr1?H>* z(QrxG87sOs9IAMM%m&7!=s%w-?QLao~gO6QF)%M zh8qih7rBYKS@HGID(sBO8+Plye)|4r>OM7(-5PPT! zcH=CXi+49`E}b)XSDwIyI_03`e4ZYkv++b@QkDN0wsL6IZMWm#eJPAqY% z{g=b$*Fc*)XKtgxU4@dW1)FIbAA#%km&u&1S#eEGT$w-RcIaFD-M-b4J~6WK zJn_=3ZtD+uBAYQ8%)LUki z$+mM^aadW3-g)Xj1cBP-zW!QyX&lhcwZ>7?8p9rg4bGKiDyV3D+5VwXNi?y$2n8K( zTMiGs%vU4dJZ@QyhX-1R+Wkf=ch8yJ=9)cc&nzu-*tMN4T||63`zpmCLFH8>2=z|C zo@qQ_jL8xWZQ?s-5SpEWXA(=5tG)zySRiOn1;Ud+0w=}ixiiy*6KlaphB#90%ThiD zy<##*xRPkay<4kxhF;8p9G}tpY40VWxcgPn=ofRMzPVWf)P+~j1 znMDfx88?n@eCw6CL-Z~a*25fs+C7_y`TG*ALEmPPH^ zW$?Fi3Tnsj7;(;$Kh=gT%(Q5$bQ7x;10|KeOC*{-+6`k|i*Z8-SrB8ET+=qm1f7Sx z^5Mo9>_V^~l@}>~Kj=SZ!wJG{XsG`Kfd8T$E9R_R3EBAUfp2K9uoa|t$YA5_saTTD zHHfWD`+{|4Y4T~WNlt9TH;-09lnb*2LVAs_%>0t)!k$r^9d%pyn#afD$5wv7M>pRZ zkgdoBnkU)@z=sM3Cd@7s--BA)`43=5u^Sbfpo?|K64ycRK6xH%?2BU9Rr#dq?}pyF)bwV$f;XLkVVcRt@{Jk#{k}?d{X~FL-G0nT>E)o0#z@vG-b}N>h zUTVwzTl44-;9<@74 zOFmp-MA#wVRTqhMCch3wR+t63k*b$??{?wlbl=wbV5aH1^@-zy@ooGr2XkzvBf3g) z_FAQv&}!MpRgU{WL|4t;u`c#(ecOG%scqwxM8zkY!urmLUfK#XAdnp^(NG1opm}(S z`E}fzKJ7{m;cmX9IEEx3*++|`_f~U9aGFE7U=!OUq^UM4UAx{Kba3eiECF{m%OPyRmvEgUC*OJi4diICKAV=;e)2%{9!+ zuu@aub7d=9i>7=EJyPmRMp!j4i_cPxZ$NM0;CLn^o-udzY+x&gpUtadJmBP1*Rz#7 zTHjzZ$43@P&{1hQB^IzB_a!E#P^8AlEjf8SXN7p|?e05x`-~w)iBCr_!HROZYz**8 zBoWAm+R?N|%=+ocH!Zj~m4l;|U1JGzp6bQwhQ-YFky724d9LN`IPH%lI#Qaz9tS!l zHNPV0b%kpCuKVHzIcC{`TDV09b^k|uzhuF5fyNPFf+4)*6+svpW!bnqm<<{>w&n4j z4F~1DTU+XaZqM|TZ>Fz>)|WL+HMUe4c$rqJCHBPP`!hhfcWFIe+Y=X?1@qITtWSR6OIlX zH%{+HiyPE1?pnJCT88?aY6DMQT54`Ho#&qh&e*p?=mmwoS9*55<+~5=e5(&*l~S`< zO^CMZ4SR2-(n8hZiOp&0>~50(^s$34-w3fnn|>8)_ktUmi@mqoUW#8UEPYrYizDOu z-BxZb>se`7F!3tKX8ftfS%oUZmPW(l0|YRd0q5^|CF2YlU|VpL&TgSyxla)__yc&q zuwu~k;Xr^a7UVfUs|0OnFK1S>mgR6xv1eF4lUI1Rr{z>`S0B9tf%4^- zm`by{U>^_-2!l#PMHq$2wS!v%XBSpvO>e_j%e6i9Wr)suHL|0>5=Hb%ont067na4= ztfmg?i)K&oWQWaG_uME+NR7DUJkdsO;bEhvsyq1u5M?dL%2%_J^J60h+)BTIV!i~@ z`SZ?X1l1NR_22^KUV;FAkvtDT;uvYP-5wGCFF}x6p&=x=9ltuk6|?Q&Br{9)8A;xrt=O)8;Yeh$tlj zTS(IDBqTFMY-+u)}(`uYE{sC~Y zcGr~s0T`71xBWXr2yt4^_OdbDsy_6nNQ29b&o{H5=HF;jS@^&eSB+nwwRQ zAdiTQ1%ZY5^wNqF*EQFGk1QjiV#5Ov4b)M>X*ruV*z;*`xPeQ-lKC$_rT~w`j0n!$=b3WjkEquhE5tEReE1* zkSR8%GVPcq4Cc>uOl>fq{4DBk@p7r}(3@ZW9gm3YpjpysYMoJTzx;J11`1L3_VHvN zr6%|Ps5yWS*}k|slY9%?o9Ei_ePL(X4*J|IGFV@k-@J56wv_Bswu+8IiH zjy$yJ)44<>>_AHujDPsHD&P%zmAPhwY5_4l0;va^^*!{{VoW4}&O_mBvGXlGAni--A$V zZLKIyJ^TV>fTCe9?V$5jCms$Lclk2{$@WZAJ!&v z5S5Y>nopP%eX4g@I#ehRJ2DH1Wv=~Qy+Ds6z!^ZEk#dIp&{teb-wUwCrbC3_u7+p& z#9{(SLOF)TmLOrV8oWG8%&L_u?5F`eD5Fs)mbzW^T&oA@fILDaXbQ6SsYTTJ=uuD^ zXp#C1Y;7KV`H8Sdf6bJf$du zL_<3@F^DItIYVLrB7*Y2(+SHT0O$UjY6P7aA?T$0@i_1XaUA$dC%G2m5{36Ef8+B9V0u^8UZcK#ZuJn;9@Cy9 zDBx6B5dPB$CarwOI2Ajas#Si`;xMt?I4*D}(;R^)0iCO2CfK-*~s=&7A7T5QQVb?PvlhYV+Kiw8F;EhrB@Ev@ST7X5epT3N<`v3j--!uVx{b(I{ixvB9f_&#`>6+W zzoj+lGylZ0k4Kw%NBp;rt zw$Rpy0;^UH13_hC)G(gZ<&;KK1K&aeFJv?uQ@DQB(=63qn`*}MkA2LY`SLYDG185S z#@;*6<>L$QQ%yvWv8?^isSCe9fN`$+rd2m2CZRl@;{)C=F1rFruhYUJ8ykYtO{IcG zgZa=^V@FpTK6pxbV7Rki*U$e0>2je0;BU={& zCStUjKBs?=RY9=NR3hI73(d%)|3g_gb0$Ck&loDX`=ZA0K@6qPIz9#IZi0A3U^=ss zI-ok#b@oM46afp@uXB{+O48gR0BUfCzW}YnX3;m2P%NOD*^i`vChvGlKth#euiw(L z4$CZ^w3nNOaJEGKRYrc&jf-}Jh3(2d0pnA*5nH4bTAO1@R2 zwUnYP1Bm^iDMAhr8XH!Qkz!L;=|zc)%TLb0B=CvQ4}%X3Ohst~;eO_rPN}YorU;Ql zbjL_ZnX@>>PkHRMcy0!El58jtLZU{qoe~llt%h2j+L9!NCDINN`pp+DGyAr&x|LsW zg~hYSeD>Y*!h~Y#3L-{#OMCOb*JhqaA{-Vy#~1{Da%jpsvblJNzdwJtra(p|u#}5h zWJsWsB9vN3TysFWB4_A6Uk$xmjK3O*C-%Fgypq)YN$%8niMcI7j5Ax+p31C@%HEd> zD9&7W=D|SByiqeznxX7C{(OCv%)o&=;WOQ=Zyl~U$8hE=`Ln|VW1FLI%VCyRLT!=? z65_{_0^?d0nGR*-RGKWroy4(r=l1iDA&x-X+2<7o#G)U zGIufI!b@O&e`&wE)N-%JHexoWe)#J~i92IV;wck>Mab^-amuomQzX8@reE5x)qykC zNif_l7kFNL5!refM^kyoHJSCaXXH>;-1$lbqNJoLE&IK;bEZ|Di$PSVBVC*sJTt{V zdBM#Ums%q@V_~Q5nBb%a);To3oalG8f z7ufsVTiMq)9_M~Z|Ez`k&8IXRwF<2oVO5=lKK+q&!>{Ukps0=R`swV#ABr6f7kO>W zIEkm?Z1u-RVtB_2*0v;+u=bEc%LtR-TFKYCAs-|nKswe9u8oDtSKBTJ1Tos!zI+`o zXI|WB>jvg%fqrQ7F$MN^<2rh8-mkDr&ZObX&OF=to%EyovOB%3-=n4F+}>Lwq5|AY zT{;HhdQx1xDH%)!TlRoEUuQ^kYPo96aAd9DbrB9(0zfdJ@6D9L5%yl?o&c6+Kr9504&ferybjc-LGbrl+v7zaUS!HdH8pk-MTMWxM*dPZ)C6YE z(s{L^aKaUddtzYn*W{}T0Cu#9l^{)-@&hDahCeeQX=s@T#w(>}ck)X%NmsAsVWQjP^3MqI#p>^!FGxdD*Va9a4^a6sPn; zbVmO4J`uvU#^VQ?54h;Ax!<##N`20cd8M9fB?HG4n`?DGAtMdH?|fM)7BMLfA=0r` z?nj@w7dXD~T}O}YQEd#vU*x{*LEYyBVEbU;p*NC zM<&oh0WcHVCmS8FSiZbM7aRG!(J3C3CmoD3Q0ua>je3U*A(pLpu81LA{1Y00j$8uS zvRBDgcc&yiX1eO*RN>YF5(7o1riDERlrvg03NsLQPY~DthN!WTxNtwab`=mbp*2JJ zQ8F>iBTIl!=@=56A8(;t20~45)72qa5}@hI>T>963Bm#^EaJ@+m*t{dTLE2CY^})5 zXs6*`Hj_J*Dp}B)U8a)CPG~jSC8SlvD3Ug^RwKFgG0QO}N)|lh*IN$|Ff0*y&qUZv zpCCms`s55HNLkiPu#)KQD%8EowR3aLa$$=DWqVBwCs024tNDqLE|UI#U` z7`JZxjTaT4_N5}c?)>fhR@MIEBzyR1`k|YBt>=A2((B!C@}#?c$r>cvS(QbG%HxS& zT!yym6Z|Tu7?OT#QfWo~?R-gtrsu2Q4vx}Sw2vrcL(YfIxQe;y z#gvHGo|&W?%nb4pqFgo91pSSrpO=B0dNw76h7Eyo=!-WvK<5 zR9A$?sY)%*vcbFvC|YMShf3_h{7B#Tz=5~#)^HFXfE|q%!tZ<;hbpsNpj~)8 zX~ZVoaiZh=rJRn?Uvs$y&?b_Y&2GCIaA*`tp{tIOuhP-Ga>tVV**Om@=EP6dqg5SK zsm)u3+9}MNrSfmIr=93?Iok_bfS>~n{sNi4?E4rUqlP60|GGi+qoEt8UQP*#{qxZe zQ*a!&b*)zW42Nf&H5)7C_W5Y6D#0BBgNtz~CER$aiDRV|e6c1?1H@-sr59H*yJ@7> z5TX^C1R9kCY8FwRYf^DvXU(|gquL1ltofWL%pAYCBXxgfdrlIzF`HKxG~waa6g9gJ zHfw(Qtx&aaVl0xuB@$>{PD;tK-c|G@W5DymvNuDwac@MJpxt#=Sy=u1L(wzq%m9f} z&%r}+?u<>})ss?jEdQ|5(sm)mf~H?Kw>f_RyXpEyEauC!E_D&l%JxM7>oVD=96t^B z_wytp~3G<`EKYOXzK3@6E71Wv(+8wJwlj-b%=8ZDXfEWOk&y< zEVNk@_qiD$FPEA93Jq~(%j>dGfGr&&Xqf(dipjsAnK_)uWwLMU*;xHioZH;xmla#X zL1RChiNa~4v=3aXF^63;aHBH4*1BF*qT+ESW+b;!X57|b-i4=TuG{qmbFSl2kQ%*; zA5Wx2g!lsf4l$G$*IbsL4Fpb)t&r{%}IrKkYt~&(Ileybp zItH-|-fXOoMwyrc3QAF0Tso}Z;QsiMXB!L69ODEv!h zKG!^6WBy~HrXcAo!Z~AWAPA%XVx({1ni9#ICuehiK4Wq)f1P$^Tf9~g$q%tP#8&Ok=ethJ*5ZHBUUduQNzM;dIPN$Ybw3R&*Xoa$g&dS!m2 z`0+uDZC%d)8#8u$Pt`lUN zUE+gZU__Mg@f?eSG-}Q9FjtZJxU+h?Q>`P*OLm!KF>piC{a3Y9HI#hBTBagTUWPy? zD?(2$ZOidha(b`QQLNy&P*yFYeUqc+TeWOjqP3D+vw{Wl*_WOtJFZJ54ox~cHPzve zq;+bACC&G6L%tG$iC+~Tu5*N%6J|K9FjfO zx@G6T0|^VlI(ipnl)P~aI?)TWU3IFf^>JuCkW|(A#&wfrSNXG~9v-f}r~2FjI~}C- zWaQPbp$lP&F4yyPFXBQn2T&Ue*Quu1^W^QT&36a7FLmF@dipxOufoF?sEo{DVYA|u ztfFU6XP9>HlNpbGK9lZMR;{Jy-gTqD$Z@AVGUHfn2P<59}q zvd=Ce+sQ023_D@%ZS)_VD^0#qnlp&ob3fWspP8C_Q2TuH+O^;ZGG$W8r>r`S@p_S+ z){`oiO;1^C<>7;qsV_SRtLnyV4p)uBD-zBv3$c?LMhCNzNnp)Tyt?=1DLfjhE(x)F zZOU^3Qx)^Wtxc?rx2b+YDaPG8b>?%PzTsUuVTDOw$7P`>zy&CZ9T#hg(y%NsRjF%T zmHwpTMCL)(WcbV6j2Y^Nk9JlEr4G7cFbklMTESsoQYsIY20iNmQTCSHo-6MhbfQD2 zYQk5b@ovJnAlGnt|LBnO&ft56p*?y<(^{@A{Sy}d*+l*?=q&EmEG~lj9I6^RmhUxE z$(8pm$rg{she^m{tf`G(W>T0*Tvb>D;ASFEN?$F7xwo-aG=%WDr82ygtj?bi^_`v1 zE_`Anh~nttB-~gn-%K8LtH75)n!fbh`}fo8HswQa#gLyl*WT1FN{QODRsCF_&-ZuEz2|rDe~^=t_xt_I zb39&ETg!bwE&AGaVa@@L*tON>pqvf(=z~P)vZ2q_`^i_Ne4tXE`aZah zFuZP$jq>zY;e7|Cx1?DYGuxCJDrk_1KId642hIK0Bz$*XVF%AXQ?kG32#qBs5q{d4 z@vQH45JxR>newv6gM-?)KqmFW?NEhp#6~MFmvrJE*CvP`ej{e?CGlfsiaJ~-y64F< z|5H+^dy@UG-_zyVeJT87jZmU>Pnoc&h%qaTSjGIKF9$xhT^&|cM9GGg^G3_wuV{QJ z$IEX&qtmnJPAs7EP5nJZq~jub4oGI+UUDGmhKbQFj8|f)gp%GX{abRqB`TmH!gT)r z)A?s;zDm;vf4(=tlVv-$fL={`of^#McDJ}|T|-{~ zvU(l-k|*o34wkEhyZ?(|XlN!3B=VZuEe{m;Q6qtS(LcW!#P={E@BkhJL@0XiRdk)G0A2+Z`X+p7)|TJYn1U|z zCiS4)VUrKF%We{IZ?=U@wRyPGd4Db*h|WX<2TcG+w3o6U<{6h95ph$}ln=XzrZKqj zY4jt>K{9NznL82);DJ+9GHMTsBKl>gh_uvr1XM zlXn_W8Wg>c4ahUI29}#}2d!#90A1-S8z9Qd8b#Ugt&@wD)&|K7ddZV^2^_`z1_-XK zxbG!&D_X)Ik@Yt@)>+JvrVqM>G24D;dz+B1N2wiQk0`9A%_HX=V5nhQUz$z>#M03) z=?v^ROB;PPtHc!zVj`#VNUeH2^QJe=oa84pvguMLQy4cy4+lzuh91$+fS$*mUgRpU zR4HI9w4`H`ZcHC51gD6VE=Md~P4kbU+hBvn2NY8;Loxyr?td1*ir^faR(Ad;uBw5UG zH^hp%^))ui{&L<~oDY_#L#nnxwK){J-2CppKU4iXdom5?x};k#{md<=hV}i17z5&Xx3*==3C75; zBh*H6&s|NKk)C*x6MSRK7dM@5CS)&g0%ZMQ}guUmA;ok)i%%d7%GF@3QMfkLhF#DxLo7HPM zHUP%1t6q6k2znZ%<#@OGI8LGl``{H*EftJ1+zrL*=B-q3sOMonS<_+r}Cam#5ZcjCZ&$>Ww<(Qeco zhWqJY%2(&3LHaY~I)3E=bLP}mu5G9aM=d9&@yJ#GN^IZ>CUMWFIX~}kSvmET!7ws$ zqo}8_*$W`~aALscf{pF&=gYsx0h-*-*;EY>bOM58VA2FvSk+uZsW8=j zkXiz@m3aC_c}e=IO3cWf8(2itHPU_9>DzgxL|7^oToD+w)rNnW?V^ViZ+EQ zVkkmH*c2!`J)s{orHztyO(N_|mwezQCBvv0c;HkC`m~MwN@wDQ`SazxCwjQq_Q&p( zhf`_ysgg&sp7TvHu0Ec zpGT!Q_+U%go8NAFaCJj~E8QXli_--z4fB9uABE>Yu@(D5upbT!%@^p6GDyWKiNN* z)twHyQLd=#s=GjknH_E7;*^NopDs)V%0QfWE`77PS`%O6$2>}de$aCM67OrtD7o`N zVt#RSW4~lUwECILv~_cy(!mxiOyyHdQAi+ZCpf@vo)xitnos%pyfVPtP~_mH_0DvC zYJKW93TgMyph37{3VvTnT|py}vS-o1ZYB-_HF;EoVtHMJPwo2HkVQTJ4-pB46N=u9 zP@ay7vJ!a8b5=RxY?bnBBF_mvIm^uh6gU&~n}ajeL)N$R|MutM)UCs2T(@ zsZ(W6KIQe1it2HHYU`%>Ir`-J0eAIs>|wuF0$bC1V6Z_=#FxdmT?^rA`sj_1* zqFNX{@uCuwF2XSt7f7D}7M{%~C=MsgS$QJ=V9;G4AC}Y%fTi|U3UoSc>LVqPg)CuP z8ly_EYA`tu&M)b2t{*a=djAj6yc>PT+4F4Y(w{FD_qhm|NI2$096-Rb{L8KBSHg`k zxo>ES=IJ$&%Q}^BpHF@F{u-By8&I-X5>)@FY*k^Q7Pe%Q5IWy>tX)J+%c~*F|JLL_ zd-Q->byls8n$(W@FUB5wy$ZCFA@r`+NaN+y-?W;{8*5f5`+J-2)ORnqy#h`N}}g@r@0ra z_C+D|KQi6_iJ^OX^SH_JSm<2`m$%>*o$#Ax)0)FhggUU!r$nw8D*b#mjVWJbq#e1vg+Le_P2G)n@1+dyg8a zVdQ0TRw>4*XhBB99@{XR20)3VB)wuKG{;%n3rP9o;Dy02N(NY}tc>7v_3;9j9Uq&N z6Q)7u=j4@qFN*QC7KoBiYM&+Q7T+ZfGK?uEKQ+8PRuoEWLAtR)<+A+K2>sjcw6GZ*ZAOH6 z#-Do=#R7^=JU%i@9n|i0$-=1D-Cn-A2A*rdc7)ooBhDX6)<5L6=pC=5$1a!cxRU=v zbb0b2F#U&5nb|2VjP|}Pq-+sjW=)o)@>^&pUXU6wm~|{&;yVc<2!5nP9v2vcA{2 zdJ1L^LBz6|+E6xnd3eG>t?D15@V2E2mnTjHgmXC#!b{5uoU^HAZ!!TdzC=3+cTr3x z31Ao;61tg>AX+N63!?*r!cN~&V31UfQNk<7AU9Qg$EsiPoI_{ag+{`W%l6oLE`VoK z!{owrE6=i&+GSFmjB7>P&ga25IesZ0DuvF@^6knI(1szLYJ1qX-og0Xj*AG{OIIEC zJvr*saGx$63{H8pB{!)C$^=}IcUIlu&g z?%SxL?6^k1=nC7dPPn?9^ekuz+=zro$~ z(SFJH3*JM8;rtU|r{+uj8(Zo=>lNS0*tp7ldXDC*6HqUZ&3HFfq4OnqxA-Wp@$#(P zGa}E7E-(A(=f%PAX+rU9Qei3Ij0(>bsFl)ko_0=uOZK}?A-Vx6>)P-abACH(5XdzR;d?Z(?*Pn3AAQO?S8%!a?7#MH ze(i+S$;bpOdB@6?XdcrIDJGZwz1V_ru%)X^fK%pboR7cwsOR|w@r1j}VLQ^)B*$8> zqspfsQ;<)wf%b{rz!(ZUL^H|Z%} z(wN?v#gZIBU#V7aLATC~au=xoiyic&n7n7|K6H6A*EBvVD~mr*9MOvCr^YQ!11&`hg85eHbI3z6#vjhHR)_rK_lHr%UgO2%qM0}o>xZ|q!l;J6y(hCO5HqW|4; zOx9*Y`L%tiHwX2L5U~pEwAfF^zy`<(kUf=GTZczjH!-G9I5xSYmr1}Pt;y+qX}lRC zkM4IiiV>2Y-LJK8pW*Wwq>K@9MTu1a8PR9bX&B2p4NZvpDDO0{D(d6Wfh$!=3^yVX zvOt6VrRB79R|bxL_tO&n96U9IFiR)@n)B_((2c6ll7V_Vsj4a&xr&Nai&pL%@MB_5 zqTY~_R3C7%*3pB5W>#isE-y2--4++8JZ2fW=O(X`uLEZSM}QN0-F&wk%Yrx>H#XMZ zpVxrzmG|kxPfOksGI*wvz9`V7-O*C2oY4|7h-W?pr?kdVB?ortn#BLAUTQ;8?}MtZ zAU|^1P`1L$PN^gJVOsY=x&96wxsWDQ55(hxlUVxW&}J-ffOB!=^>47Vju`*x2U5+R zLYt54SMnN5yFIf-eS-NLhTreQ(WUG^pr60GFWw9R!=}Z9k#Vj>@2Ymw)9fAWOI&0pyS*Ri?Dl5iZy_`+Y&x9$HBooH27Vr@()!|vtgr?BvDxWwJK zqyN|I&%XYD@NpdwF*aKV4h{t~4P08v;v$Lk@!h14I=q8~i0nbHixoM#>_V<$Ru^d= z7WHaLcA8OW$6WQ1JY59)PD=5p<1sH&AA0WjZ-)-xMT+hwr#=WKmd}Cm9hV7wb+?EkYaN6a7ylK=u3)&nPvmb3W(|(Ml~sO6+LL2m z;q69j?&?9r2);X<*Xk1# zC7tvMCw$9)B%(_n-gwVjM$z&~v+V!gDE5e4NKs4W&4(swr_K?-5z?>k0*DPR!LRDS zMX;5hDLj05-TR8*u6=QxvK_*?FqkmVNRs-vURvfADQ75vb*J;eOAsxQ-6N8i@-O5+ z963C8f3FLdEJ)o!?*WS{Ykp`M(Y8C$D@E(F02M%CJUER3*_O`CRaX0Rf%;3exnF3kR7d^pkN^ftvDUAC;yuW$*!3h zVXMU!r;0NfLMsl3Wh8q@Ltu<=2r;>IH>m&tDu@n9O&p6Ov|| zM&NQutXv=d=Q6=Kt!%->x2g3cOD;Da|IcNTHU5`aNaXgXbC(bR-5eE=6>kPKi~!p0 z2?Udjh=_=e@kz%%{FLOu<||{`4b3=H-`M`hD%{)kxN3RqkJU|>)7NE{Pe-qTA~whA zy`2_L-s=UYdQg(7w09!m$5Tf=Ire@aLb_x!)d1>LzAl3_(oXp$^NU^vF~ix|Z|f{#7L=J#zLT)k zF1C;$flGbI)O|ig|7WfdOJMXdFiV`=fvI(5QoqhB4)ASI91*TuvdzOO2lzsF`3+U!Px#qCG*?Dq*9T;PNVx?XnuRWY4FhA#$3v8t?B#v_&U~4b zv28kHsshUOGXj9@NT`_)>J})uG>fL3S@Eto%0T%BNrFd-(p62T?oXQt3}LO)4p%&Y zh^G(O8Th1A_#b`k^0Q^0uU%R3g2kd2bvb_}Q0DDALr1{o>bn4ntUbvLKk}NWW9#9C z28n<-`lz>?*p(qS&xWcEXA?L69eOOB5Jp#7h^*I6YCTiaZ!O(U5o*Gv(wbS;l~`}m zmAB~Cn7DaHSf5{_l?d}%MeN#Jic(4JLiut@ad=8_LYeQmS26}w+3UNRUW|i0$S^O( z93bzbiqK9)XS7%G;-D6daJSxCUAQFX+wTO$sTt4|hhC8mFx)8E;xo|D{emn$Gb9Tj z<$iQiudr`FlO}(O*q-UCmqDd6k8y^7Wm9kc(OvNBppWfKl!)Kq{@+QqeXp#tSH?h! z0=R(-)@rl+7sZzDn#DCr`f6y|!5W{v+l$@}Y84R3fa;;q27`}aEVV!5)&hmSb*U{z za9@A}`qY!T?bFT0ksC%XD7_NASdV*nBTjmY%I;G*R?9<~g6nC!zMy5CX?a~kTF=4& z<5~6-(}{@|n2AkwNujmWYQUfaB(?MnNMGY5mxIe!;M)WjzA??*R2{giXyIAm6t>Wn z7hI&+u&9tdTktvb3m5c~>S{3*xa)ES8~*aMt0wAP~m-*A8d72e!H z4&|jz59yMc#@z_wiWJ7b**Em3Ui9zS?DprZc>?)dFUb`FW3uw>y~4|Pn%=un3dHxM zXt8;il}?&wmo-;K#!eZTSt-;mdui9=wfG(YlDia>vcW6S3;U`-eCQYxHKH`f@sqLC z%c?3|)r;%evIy%8OXajU`9+W!Jlk|E*(BYanmtI}{Nja{h)-MmfGkXU6u#NlA$Q@u zIifzVfPCX%o)YeGQ8dE%577s|^E%oRRf2Qx+Lfvt<)6_cT#LTSagw$vqLw)Ja?pj_ zB$CNy@TX11=RT%@K~s3FjB*Nd&pRPi7UB1Bpq?s%;Rdj&o%h+NuVYhT`43rj*jb4o zJ~ewQA*`&4phl~!Hc0@I`J^TQ1jM;zvEsN zaX5S)yy`L1u}yA^Do-*Cz_qA?@V5azb|g<|9)!KY$RyiJT88IQi&-ozg;l0e{LJQV zKTyh^b)_5h27q)QRNV-x;|7rejfI8MPh|!LQ-g~a7o{*L)>$9(O~FFfJWPh5xVHh6 z78y0;S$5wY&;BWbR@20bbm+D9pUmUn65Frfw8|iddwOt84&zs?vs9SfVR1nc#;HQk z#Q##gy)LA-0L>fw(zyRJ0&nRE_lLc$KRa{&hdt)?{tpx!%rO35ZZIy7i7O$l=y zeb3ckRflH55mIC7iFBT~r*kH~M|ox$>qKB}5*6zaGsKSm9gz7tvUhVXzyQZ=p<5~_ zjevfsDlZ8bOsq|XK%W(9+)o#L%_Hctypn5c*MbRvPQ7#EgH{+HOUw)*l-4T|W|Ogm ziamy^G895nDLF&~pzmHJa@_awOM+Ne+{jPV^3;c9H16+KQ}V<3d=&(nkk;Q>o@4CE zMaEzGi@o#eEVH&7@B&jw!%)fH?52=>K29WrOvBVe5u!a==q}Vu4S|_3&j}1tO>wEg zDeh;#Eh!cji&iDcF;Scs&85jtBFaj+`*(`(FRKTUEQKfU7TiBfzGja2Ueub@nk3SK zdPTbM?!8mNSL&e_Y=yn-M23=}&Yo{!?@|aMtb(L$vnU5+rWO^_Ox4Da}zv*)+6ZM2{g(BY}UU3HWm+trHK}qPZm`-LvP>=lHaa|7I)=P8Yd!}1oz0j zvs~be^)G~Zc6ou45U}Hm-XrQm(i>8$R460c=()3<(v?TqsH#Ai#TLP0BlYN@1LHhSFlLJmdJ(xUBne7bqNdf1L$>(g)5E4y|a7r}-JC_?5& zV|&0Yr^@}2rBhaaC@^77p`ATj;cr%n=&yI$4mS^%Ap49CS;gI&7{2q$3#Ino_kPtd zzI~7#kd>N~9ZL%;EK|I+PiYRlh@7}AilVw`d_yW{0N#|e!H%2f4x;b5zcYRT8hfqM zba#gLWdm$Q^?OyQqh$rz0)5G45Y@2S~@w@$B7_F;#vig=w) zBO1@>&)ITxIaSs6YFS5FfaiFr8p5ul!HHe%OIguf>k>7{`kG_OobW+{E|&6y3h5I} zm#dexOJJ#auhuK*&w$y1I|GJjU5d_OKl!zN6A~uqs6BkZaUcLj809_A^F-jeHGb3T zr4sXBzkE3|OY1IY+}i}L9Nh&N5badH$`7k;_G{}WLCvPrSZbVFi*Xq@mn7(Wc-!-S ziRjJ9Bc4s5T&#x(Aw03Z8KvB*W{ig1Wzox+z@nyN(^ zc>dk9FRj4OSYn(kU|a^BXNL@mN_53kxlIWGLL3i3azNG*fp>kN=b__-)(Cb;*(c?C z?F4)E0`#uQEq?d-oo>(fjJ3ZVp*T&{sp_NnS|@U4n4fRiVRJo~=mXT6#BtT(x$NEX zqShYIloU`VgBpe5bm?ZiC+&%@F``?;vXYi|3}R*J0eV6!ZWyYg7x{^tDF2A3j4~xK zrHt5j;|Zy1v*yvR(23-D)5va}(VgbyTa|8GD~@*r8U`t|G(atNx61@#uW{PLe$cBu zS&RkF7df6zu#mAw+FxiY?cIje)66zUnvngfRWSRNjJ!dM*$S(xIO0j0TSeA=mRnqb zLZ-<`n6&mn!c7bpivu6eoUJTx!0KmwY=8@=amy6T`FTLR~Ey zZcrF?TLBS&JMHVdo-Xo@q3Hs(!sz+D!%A!Nq^4^_lEO55?(c>#Vdvr>OK&!IofjZQ zzU~;5ZS!BW)V*9AbmsDX6I53E_f@KFS~Hz#IiyuRa%rZE^=YFz_4I-TA-~o`-*aF8 zTOIWv9@ANtTMEwc5U4`;DgGJJzF^bj&R~Ze8hw;Ja)}i4nfXaC*_SPOa!%7Ax;Kc= znOjt~8(4(D`{+>}JiQTSr}JmhOw(NytoOZ!vTcM9j6&!e!N`0T%2vFjXA;*0_rHIt^6@De^G2IxOh(zh(SyO0 zSJh-r*i`Ya&Ok3-faI9C@u2I5$8?$)2bq3t>Z$ljR2F3FH)%y4Iw$I~Y6xNQt4@Dr z27sDKvXeU{VE`M@{}gKWbKF7JCC{!xovZljPnjAblx1ApaHSXui7Qq67L#U()~tz`TL~TYp~8)s?EoH&00RHR+nAfrtn3B;&2J~E857bXpht> zd;f9i6j8Lv>n;&QK0RTA*?n^-t7BjHj^#Vl)S)U*mUQ#>W}6|V*~gqx$3n+S*Yd}s z;@qd?0HB?gssI%%%ejZf2Q2M-KI8PMD?hXDLqH(31XcoWs`lhR&|Aidr%b{tN*m^} zxK22>ie~u5p702qzbu|_(4c3Krm~Sjb2TBm90aX+hoUagu2QE=TS$3>6!xe!K?qxJ^E@#%akAG+i9Q30qH$&F6c>QJvO83{9; z+7Sy)I1VQ9+9qo#(Jp3s@^CeKP9tle0kUDoG5ndBBdf2o1Vt6RakH4A)0wM_fo+K$ zRctl2na}H)J%*zB`6-mL9q;DoajbxD#h*VdBW2DRiuJSO8mk9Q6g~qlwf-AklY=NV zsMa5%?iqya-u81LI&!zCm(JBSX1aQ%I9#z_a*sOp^IyHw&m=ea6gOg7_!7^ykm3tH zgGlm}(3Ob5Vq!9s(g5dccbnRR&Crf2j#zt-9JPCZd^g`$T(KTMuUQ>u*C(1qw7a~h z^Xho+9<@KSb3A2vI;LY{H=yHX^uzG(>_c+aNl&_wSV=t{%31kXYdAIg zwnD=62Xqr*U`0C|LuFUr66GUDwaAEAHApGb7~MnB3%WGS>d(F?ZVpe8tJW3PT|euG zIIg9d4tH{}`|;}Vc(CYe=;8RZIdY}#*WRI(ypdINCZ5WCEPeT9x;;LfH3q^%TQMAx zdPk#$^~Skhf>9UTTqo}{rq4I7{x4?c3PXHMt`$--v`#~|V9tjNen6!wv1 z2!XD80V*sB*Z*5xQmGVY$eHmg8X)@Go#$|bd*Hgm>0KZtwX1Cu3|MKk-;CTImpaQ(Sw!PEjMY@aTZkSf_VJT6hqE zkp<<=DSQDeYPG%N{ndRa^=JE3ARvmgYUWsSAMp~NqckxK5!@azBeS09-f!fReboKw z7YECq4FLh^EQHMlbmHVd_~p^a#_t<#UnTI(joF|2Utz0!TeAQEwO{V(;-v5I<`2a{ zrcWK^aQK@U=tJZ$UIF0!(Poc4xu1cXjQg@8MGeDdK2vDcp`op>8>>nI?q}J)rsIal zrN_f@=)VNXmgOtCpDz-$T4iSX3s28aEB>zJ@BSbFBywzLX7M}QQnm(gv@uvKMB)jV z36!Ro;u}CjgM&45`H6bmE3dO3=pCZHp9u5>N~6E9X#?Y6MDjl~Oo*u)sQ+96x|-xh%a z_||Q^)9h?9-)uB;CZ$5r2RTofiDJ_>Q2i^b-1s zMhNjdf5Q6GyFyzj)@Zyf4LUa~a>b8xx;EU%dc;U*0yZM!bDka1Yl`4BSg1U8WLBB1 zjo>0BrGHGR&(xY!Fn@!Psk1tE4$u@N3~(4W$Kn#e?*fr#Krj8YA|#ha_xENfNx!)< z?&8JujT7EmAz5AhO{dMHSS@mDRwggrXkpiBmuCHra(z6m-&;TmIxed{uqc-twUFL0 zRcN$#-PnuOF)9=^njxr*B5A9^ZLSUTs}Q)Uo$CzJJTP3qz(Yef0xmO5<4vfju=Da` zri!PrvZ7YbEmF_Q_(S;ewVaCOB{|dG%Q3_^HSED=Qt-q=j`3pUsSy@Tk8`||0|K^p zmdhNr_8-8x1Vkr%`25;JAw4MqIbVJ>-N$Qe@cfi)u!Ot!3OWcP5a<=hqJ2 zv3;WDBQP-|7@75*YwiSq;OY@hd#xSPt7_#$hgC#bKFa!Vv0s+!p~I78IK98bKQoI! zSZQjRyq&hG!eHi1bn}|WCI-lJFJk8BWaSm&dMefvLefj!AsBbysGY5tu{%is&l8g4`of^ z&6{Fe+bqnRtK*RoV(xWIygNI&Ku)#{Bf5yzFZxWrw)C2cNZluFYA)ebXgSM=j{gvS zJ{bki8O`qgj$OEzJu|4MtuS5IH;a{}UeSjR>a0mgn_cm?!xR{)=-rX+;806B&&`dZeF;gyIF4pbI5s3@kz&Jg&l(PP^+8+h<%s zmUW-Z;Cz{A{9hddeIHevlw-V&afL3W6eL9UmCu^o#D_3_w|M_8m-yLzRi4OPc$x<< zbE*3Rq8SgBUUW6kTbNOcBv5BXSyh@UF&cNjkdhg=XPtoU6BOE!z0U9zDd3%&HI@pf z`Wu`B3+ArpDleWrB|+dKgPKXgJaw0rbz?vexsABv zK0U)1H1jq-?BlwH;Qj@JUFmuuP342lPXQZ2i-T;0?;d;SqZ<`neByyO3?+!uhfyr5 z-k{>R;-*c9|B5EoG=U?0%D#*ox$oG{em4CKH^6PIbn4McZKe znfaNW?X*sP?+n3kQJGXt^I_G#P_gf>crqyOo?XiV;wG-+<9+mmsiC4wXY}e7Uu&u3 zZyroLqN1+cvwB_p_0C$F?#3%kVPXZf=tXZxck3?}gH{|!ZhyV{gK&Hmj>WS+Kci!@ zVm}_|S&sHtc<}oNpXr#w$=hd2T~t+JUz;rpDf0l6Z-N#qjl&=iIwV=wYU_ z-)q+68QGW&mR2kVAE6Rv)T;_7Perm5sX+&oglq1jb=B@v8bo7KBDQYERvTzZ#De8ER`vZmZHC;vDV6 zOXu&X7BAx7j;M}q+C!Y~h`a0~f0TW*)byiyYtUULHb3w*)zQ-xL!b;AoC zHwWeMUXO<6+v5?QVe!4Z$s-)G4|Evwb=~DD!vf_~iovxr>gT)LqnSYEy_ujr(Vv^M z{&pweRerI^gd>$bT7|C}2JA(X5u`|E7PQb#*Z0?$thMEv;7u}A>L{z+hA6k|{99Fi zCb2Nb?FJHI@xr2Rlf-k_c#s|m@@4oInQo{$K~C@XZOJc{EMU_7za`tT3caJKlpoNx z7Yqq@L8spc9#H(*M{T0cf?l^fDB98>TMP;5&^kWk{HC@(ZWH>gAUafh^nvE`bPxqe zPfICK^KX3j&jKGkl72-7yU=?!4vp6-6coN$xZz8q*0X~G)EH&2h?sahBSu1BEHv{m zC2M)NmRc|8i0^dijcZ0h%2G%rpLy3;U~Xu+?0ZFC?YC=z-X5f&;nOa258-=!vCxx* zn2$aTnUslBC}sSxWJ*+Yzlx zF6v@|d`CWFY-QJdC|#l=P)}HN(B9`RPgZ@Y=lG@t_ISA-;mOOF%e7F!WurCQ+#9-Y z58AOX+GAvAgL8{ZX}*3{^d$e@aC2216uKlBJ3~wRV1`zpEWNhtgsVuqD_@tqS*_EE z0e34$2A+zDOA$4HuS;BGUpr&&rfY(j#VsAsR$}s3H4MvUz!wd_!;tJ>7oLQ~?tG4s z=b2@c?mK(0F<>2W49N+@!>L z{GlUyd~Z?kBkXzjh6soAHcRJ4=&4$hTI9A)9hXja{F#IHSCbiCRCn9&+>E(B^d(joqp+w6zqn*Y1iz^eeZAk^M#mF zy8a3LZR6x)@5$Q*N4lMx5&o2FnOD&*W?IlS3uOk<&+-#FnQy**YpgHy)D;m@ztt{= z19;zB#T?0I?J>xG6b09A#%ZTcTgVf#Qnvl~J!dR(@7^ z&+q$qYrQ2pEb(!P2p<#lOy&V(S!w&K=2^$(j_iiTZZ-GBlUzDrX9S6^yEt!Skc!pNINds3!W;uCe z+thU-oR4VA0x0DxZRLPCF=ub2yYyVuD`&ptCh=YDJOM*gislzoBq`LCn+`z^?OD^S zP1_KXYTv{R=(j$S6AKFB4Qh6Z%B0m;gCcR|fZ44_sz}ac1&EVZ5mdN>}#{E`)I~$ zYd#H+dZZR-mk7lzSr|HKL7WjrNi9bc)Yy z5iD>2%C<4@`groC6dJ*gOLOoAb;k1%l+~?DLYlrl(Wwfbdx<@RW|iInam$~jWH#xe|G!# z`kiWT0sM!&dRSRxkv4a8o_CtH@MWCTvwDX2p@UC(Q3bcilH=k1w`=r=<2?*){>1Ed z6L9W{{X>2#3ksy52O(rbPoME5Ty`3V`IK?@w=`}bTOYkyDA0Rpi>i?^->I8KgY2Uj z#A$F2Tnbte{=@dUcr~XbXG~_M%#_DXJG{ksMi`2lEuAoE8bvcQ_wV}jaRXF05eI9g7auTcLpc>GP)~2E zQOo^=1^6D>+Z-Rhir~B$PCJj!#A%rizYdj&j8|B4<9$t`&SB#7GYeTcSk?K84+BlG z5Fo}uOp-YH6Rqt1;f1#o|9#=F@zfB{D*mCjv%fJ{CYmNbje=#x;iE~ayb3N`53(WQ zNRe!{ZKYwGY%L)#FHeM&tbS`d+<9}wAi!d+*F13$op_|I!iA(ja`6r%YL_yEj|%;j z1%O^T{8?a@QGb*o0gMKC&km5{9BV#~RTWGSo~Qt^j?0a^W^9=>`JA z3RhJzO;bOO&&ipYJ`G2QODiU)5&`vzXc@>c1(UY)rg0V!;g+T*4=x^4Cec5Av-Q)% zQ;=ngGI*?RqH`Fe+9wp2pfT#l^^zKmX2|Zl zSq95Zb3eH?s+dTXllg5VfFX%fGBJXI*PkZ1grYP=(2w>#`ZIM$`B^W!%@2ctldQm3 z_k`PjyZcBcN}NUCdjB$Zg$&H6@w*>-pE{%0jnsc);-!k7ER|&Z`unhPKV1*PcF3)z z1D@8&PY~Vdpt~f(#CHv(P&Rb$lFMl_GYP5TF+JYI?~-4UK1w3Y|9Ke_BId-qc(bWo zFw2@MCSHf}vnD`O1fZcQ$EhA8rYS6h7zx=<1^ zRakeG(LY4G=oGh<^M`{he|RMHKFaUKD9e7d>DzxIe50|s|B4yPQ}$?@BLqG5)DbKT z62&5$3sZ{(CbQ5Dxd0P&8vn3J14bTKk%TN@2}Xj8!RbSZEQ#kvF6mq_9`=24M+XY_ukKRzWbnEw2MJ#BU-CE@O_q+;a6LT_;v@KrvMEl1<>7| z(5G9JG4+Wd^qelyYVSuk4M_Rb3;2V!yHv#^=VL$7Y3y%TEX&AFvvu%WT%y z5e5@2mT_kf-8HFoOgY13qGbolu;-++1v{iKB;JWe#JiY)+GYZqk@6A1ipZ!6w5jo z|2?Dy@u8+f`*N9I3S&q;re+s|&XX2Ef09<6U)QDlR8ML=QBT7y{8dkyTM@)F_Rh}1 zS`45+;(w&0XzXh3R8n{kV)Z*;1w3K8c~MM&fyrwCz2uPGzAwuR(5<{?8;7_N{vSqR(9tJRfM!||F_|3CQQ4JPqlEYiR0(nD`BNqYb83I3mD=>M*4 ze)#WBbz)8EC&`59QU)+Jm}7^6WKy}1OAY+^L33c--PbklUoI@cUG5{#wQpqiVLwao zM6KuPXJY%hJeD~%E{=D`XA1A>|EPU3KH`{^E+h(`z^;fQx@Tw}T1znXvfhZ66U0Qx zil#CnxpePa@Z+x@#^@0-j4%;5q>jz&t*}2#$#8HvT>hx8cuY_8CT2k*IxLERPiSpm zJ;+UxHi zP#Dn->h6`r3F*Uho~L{_p_>$1R^Cs z0KrD@AWD-ai69DsfFwwe7D5LLRf+`>lqyX?ij*K;M8Qk-3hI43+~2%E-pqaTX5N2$ z&SdsE+54>TTYI1Vtz`g46ezd7e*2-8snRJhXnXy>OHKtdFkH?S^BDtB?&a@%UuI<_ z$Pw56rEQ$mR@u_bv%0hU37mM65_g%|NAy=!;11T!Hnb-A2H7U*oO*aq&_V;{!3D!< zA@QJ|VfoyL7gG5>m(vBu3ZL?y&NB-e(C;g0 zFY5aQ{>=2n4o&$dD*=YQG7X9hy^H?JT?!9D51XGw7)c*)P%X?x%S)Qv_xww3y+Woc zRL|`g{&m8Ax%Zrd7huSC)1^%D4Ov@tM`RH_t)REN{tJ#&5F2mNjFEe@Wy)-bFB?%Ku2zecEI=lIc9b<9bs9oP z^)sm*%|0z&5<~Ob2-bRUgz}Avws?9Pe3TLNm3D*RA*yY@ zZGW7~>8Z9{ojn=uHU84S0gsjn;Ka&vrjQykV7wA4?B>0ycc!&XgFlu%r}e&gM()Ek zO(Z0ryFzJPRIK{UGeoEK2&IXVyZ4@T%sEHUyy)38WybRyeB`=i^R@gR!m69Uul^CN zns?D~JAV7YQ6KFqXS~B(M$exQ8y%l&a6m6f$U7SPqNx6tD@*(7F)+@MJC|fzg?>s*)LPiMk%y8owfwLaF^ z?fhTeu6x7aV_fjaxq*?XRP-3Xt9OfQ{D(%bUHi!pgw&zzjH8KifdeW@WSgA z233g4e%E{#8>=8>SHtC}WiJCu{RhF_gwrl?X__pxJ}YkQNPv`b|AzpD<^Xivf z0VFd@A6=@;I@U3rRqSx`+%p0Bo?%hVYR$hP96kFj#nb*t{U&G8k#&8ydP+l7C?%#$ z`@z>2k(HuW-_$R)w_WVsI7{wb3az?QwQy$Xyq8J+(~a>)xC*mcS&SA-q$#R`%(L{? z+PW^>n}X$FKRDS8v(WChXEWBun`<;TG7Uk1hq@=6#I86CSrwD1D71~U9#x3X*N;?X zsV)A&2y?FN8l{VxW}N!eo=)^JK;uX3j`6XR;my07Mk%(%#@+9s!3h>}7}7etAb@tkkO zsV~4!8u6tw9vcJM6vIl)odur!4F8=8JE(TEX-aRIvdffWgle#f3J6*Iu>BUwI5?Gb z9rLv28rcn!^4NXjvtyrL0qU<)ft*UrmtSgdn5~6APe=V)xldj@LfFDe?vTu^cI+Qw zCz#+ug<(gXCh8|(h>OP68A3pTh6KHitvBbQ&1&1+^V={L=USz;O9P=(-~+;tv!Q%e zHHQQJUs>P;!cd_DUxk?n z1EH!5R%7)mt5v4q$EE`nWqDK;qdgvZw+$4;Q=Ze!+G;8r&FNVSPL|Pr1-y81zRsqN zy3)oK`E2+nJKs5%8G*#4th}s`JPSX*Sobc@Vn+Uk#!0m1Sl-)eqcfAwujCr51W)5f z$`d!*a!^1a9Fz6%q^z0t@*p@{aIt2YJbAjWG>E=x6`i6@dW7~N$r1@da4o##^kwR1 zieJu1aRwG|WRo28E}F&N$9VX}O|5OK%;O_Yy{nf@2<}wOtr4~s+gXj7&Qi;9VhSD!u+uO9Zi6e~onnjf!bx>PL}v?R8LEpUoI98)Txq4b`lzFp9m zHluX)f=+=~3pW*`e8bq^ftYqeD@)Bpj=xft*Y@57AO7Q9qg6qd#ikRsY1tX4qbGj< z;ptE->3|D!o@OCUAD78iPReGSbzzt^|8KLb54z;7~gG!oP$Z} zQ!@Q=xC&}V?h)y!GA(_~a=PO8?jx_a5+=ld`&ruY$QkVECtLi+5g~~f^{69R&;iPx zf_}29DRYAIayr?arO1o0`lv@`zI-}4s5h}Uij(B3d5llV0Wzf~*$hULEPoO@|;Jtuma8b+fs4qEfyby6jvFw&noOQUCK zBV3271{<`r{Ru8_bVSBw!1ZbVx!&9=hEnpHcSg8pi=(v?xhTsn#`)0?d+rv{ zso_m!hKl&gb9mIDG+hQjDY`HKP&dWLK0zQ`x+!hNJ%2%2!JqqUDBXTtB)TcnHIi~x z&Y7*~_(3^6=Ln3@yO~+O}}y&w;1M8L-M-3~QbkQ>tn$oobzkKeJbDe|wo(Em>w*BpFrl7y}Akw4OKy zKz3J<-r;ACd3@x_ykqt%OhGM>!n>F~+w5M%UW}h3fyig4zmzX18RmW!b7JTKiTfiGi#Z>LFldM zhA3v@n-7ByD7n zWr-itwbnj#;dcTr@lBaM^LkrWRV&{#czp`Sk24`6vl73198@|j-s-qS*V_4>UxCue zdnvg+jfm5?jE3L$Nskywe$nZtea-?gsY%yj38a=)1hrVVlnUgxL|Df?E~+|tky>o4 z9$1uLr|C1@suD4ZRv0npQs<)g`LTJ&whR_{tKrN$oV+CEl)t{EzJr^12XrO}UsIA8 z1Y!af#=H#=s^N(Zk7DyYj`H;{qSIu~*oSJgYMC+jqF-|#65{Xdw{uB+cZC+Q@R28( zf*Qa`TA=dFW1qpGw__4zEPHP_(w>{Yr}mF2RC)%ZM+3RiI9h8slhjt&%Frl3(tRn3 z!o*a^8a~WBiJUDCe<)=1mO#Z;4o^mk0azjfWnstwOdmu5_2n$=5J7(Uljt%C>qw3R zHG#GwNwU)NqN0- zBt0shr-7*|J7YiM-v=Ay4mb;Le+1oS!7MOHU5Wu=U)xNh2=KOj$9906|8=W_aSsL* zLy!QI+yJJaQ53>phk*Mr!2l`5S;#YX4Wdn$C?{p6dA|slP{VoY;@2iJ`bG{=^BZW+++|K|nh zJm?-QSV0D6Xkvo~PJ_`Y2s027#Gid$Ob}*5E*7kB=HT$LPI22&{Vtrh9$@@r8rsQx z>>3b=Q(%lsgdxVh1{iSyn5F$oum_@UYl$GYgMqsYfp;5(E>;NwVgIo;O4uPH_$SOj z=^osj@fcv@AV9^zbRkXuA=@B8g6=@q`$PdW7!%3{12YR0r5T|zg^kfEgFL{IoscPG Rl0umNJDUFcqcQ(I`Cq|3vk?FQ literal 0 HcmV?d00001 diff --git a/static/images/banner/banner02.jpg b/static/images/banner/banner02.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1086afd3c71c51472b01e2b8b1a14be3587a5b9f GIT binary patch literal 37061 zcmbTd1z1#F*DySEh)9bF(lH?2rNmG}52Zsl0}PFnNC=YB-QWxzf-@kkq|#jjf*>s* zttjx1-uL~y&--4_|9;=~or~CKpVfP{>#@Uh);0KoNUJa;D_9}gKpK{sy!Ydd!vdjVT_xS+qahoG>4kRU+rp}&W< zt&6=6i;cY_%uSx{ptX~Y1!gDDW+JXFr0t<>?*vm1^s+Yy)G@RTbg`ATV|)03Mb2Nw zAMOFS_pxU2hr7CY%lON){UI)cZU62TWMlaQ;^QLErudsH%Oh<)7G-xYdlqp4QGQz? zVPO^t2?1d-aR~|G`z#_t!Xkn~*dGagVKEtT2^kSdmcK7HEH^JZ2N?)R^>1F-J9)Oh zmGblR6YvuiaQAW)6qc5j{!K$fgdYpR?;YUgW9`rH=FR>O1(3bBtryJ02j=d^@|&Wy zjk~XpJR4Thzf^#GXlwtA@PD)x9R6FcKhWMj5c~fU<3B=s8wPmT3qtI@-F>}m?XlqO z{~%*+_rEjx4TzOSM%N359TaOIeeIj57vy%}5DNBGPB~=tbLSiZ) zVPPp{QIMjjw2-KZgtCy7u<}1N{u8dEq`0smNJSNkDIqMZ0#Z_y0x5w+#6(r4#X&-% zivQqhxOw|nyV=_R!xx6-`!}x2|B5T4>}7B54uqXC*s$TAJmOu8Df&B;mlFH&L(qgKTD&l|XEv+OZq6!if zk`$2!DT;|HvHgu}_y1xuL98%>zn$aXoaLV`tOx#X{>$~TH~$JAdpB&vcws~1dLKak z$Ke5X@30|=bBzH+00{B%@d@w=2?z*D2(iC6hzSXaZ;+9a-XJ9%sqR>u<_R1E9Gw5kAOIX(JOV-@d}3@T9?pM%f`^YwKuCdwz{khMg5Z zurw)I@&AqfZ`Kj-*pzUsevAEwTKHcL>|aoX0w@9(?*VX~6` zQ4=e`Z#5~|u-x(gqW?E*;(rqr2MfmX2j#cc|6R@B6mWmb_Kz|DhhhKUIkN6G&evv2 zHj9akJm`>7#SNiKz?-CW0eSm@p_9>(t&s#q9rX(`h^=zF&{ai3P^dS(owX^b&zi1! z##2yEGv%)_;$ZpLp!_lT--CtK`aihAA8BK#DJWTg>qYUm4`7E6YYi=me;;>69AVaf z`M`~Mp`ZK6(z^z=RrrmehOg%EML_nbxu@twNi}08^%6J|=Bcw<@qv*-)+X);ZIw

-wtB?K+}+jmbpC5} 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

j7PFa!NH&l+pFwQ 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

=9!F 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 literal 0 HcmV?d00001 diff --git a/static/images/banner/banner03.jpg b/static/images/banner/banner03.jpg new file mode 100644 index 0000000000000000000000000000000000000000..092a5fc234fddbcdcc6ed598c30f6e603aa9b9f5 GIT binary patch literal 38123 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 z≺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 literal 0 HcmV?d00001 diff --git a/static/images/tabbar/home.png b/static/images/tabbar/home.png new file mode 100644 index 0000000000000000000000000000000000000000..50acdfdde68a0b48c62409c2706e8da8eee36910 GIT binary patch literal 3265 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 literal 0 HcmV?d00001 diff --git a/static/images/tabbar/home_.png b/static/images/tabbar/home_.png new file mode 100644 index 0000000000000000000000000000000000000000..a408f71b28693f358228ff050e2d04617ba1e007 GIT binary patch literal 3229 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 literal 0 HcmV?d00001 diff --git a/static/images/tabbar/mine.png b/static/images/tabbar/mine.png new file mode 100644 index 0000000000000000000000000000000000000000..f13fe44d266c1b0d6f17feda0ae376217865c88c GIT binary patch literal 4235 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 Ar~m)} literal 0 HcmV?d00001 diff --git a/static/images/tabbar/work.png b/static/images/tabbar/work.png new file mode 100644 index 0000000000000000000000000000000000000000..21e130d8e788d2ad97508c62ae7d65d618481b47 GIT binary patch literal 4108 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 G{r><2moMf3 literal 0 HcmV?d00001 diff --git a/static/images/tabbar/work_.png b/static/images/tabbar/work_.png new file mode 100644 index 0000000000000000000000000000000000000000..80b979c5a3356c09cf37f1ca742c0da982293448 GIT binary patch literal 5008 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 a-+ox4z)NM}p*%Hd0~qR>BFnTL9{&eNattW| literal 0 HcmV?d00001 diff --git a/static/index.html b/static/index.html new file mode 100644 index 0000000..a7af653 --- /dev/null +++ b/static/index.html @@ -0,0 +1,20 @@ + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + + + +

+ \ No newline at end of file diff --git a/static/kefu.png b/static/kefu.png deleted file mode 100644 index 1c7782372e5baf68a300a0021ecec8085d9d526b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8138 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 DXmwt! diff --git a/static/kefu1.png b/static/kefu1.png deleted file mode 100644 index 11d92758dbd2923eeb9340f46ae3c3938a1952f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8609 zcmX9^by!qS7hZM&SzK!AUg?xB5nQ@KX(gl^7NmQZkVR4uVL=cO=@6uI=`I23Rsm^{ zlKSxX{c-P|XU?6u_nA27ecw6JPqkHu2lP%M;NvM02n|`QBL2_eAf*8j$*3e=H@r8A{nNfsVlp+aAFF{_AvU{Cy&5q(aN5t z){|+9&vHsoU19P7g`RLBSTC|MtnV=YDSrnNsu}~S=FyACVJDSZq9|6Pc?xuVi!!tw5X#17 z>CKR@`PY<;$ZKOE^+|iVI57kLy$&~v-xk@R6=J_o@<-UE+shlsq7U7|U^W!T8DI{2 z3f{TSP*+^KJ$zKyoF?jf_**UTmN!@T#atOw6}!5Bb&<6ClWaGN>{!w-6uz_^cm~c+ zkK$y=O~o;XC9xhoZaCK0{RrY;g%3xdK2*;|`@M800Zd z?!D*>wO-L1-5RVGR2AIS3y-f~O_8a|iX$hOBLgslEvT8lJQ7`%p#8%|#?Mt(BU5!6 zCi8yUGRZq73EBtm6uLeX58hbR#vkt=3L?arpPK5!(|nC0L2o`3T;6TI?paI=(MP~j zwZKNeStnz1&s64!r7XR)O&fr+Ui{zQn5yUtx9XZ@gAdgkU-@;vRtTrSAE)O(S)yWY z*jD^jJ<+}+V^qB-_lK)#kMXksVyUp42d;77X0o~N^-1gHh@zb)uHVP+2Hmwh1=P{* z*7IK&5iUO^Ecv+;SHDto&T)yqMRNdExh)|B@GJ~s=jTz}c0nv}Eu9fRd*b=R9+|#R z8_}3QAhc=LU%k2QR+}nrcvDY*cXA5IPe4;gQsNvc8&|V5G zs8t)^Lkz2gG!z+kdexvxS7vt*I6sg;t3a>-cF06ZL$kH<6WE^Gn@x85y;g0?b?}kV zrM^&1RGc7GtlRkrsAmC=@H7M^pt|Y4&@3_kVqaSB)*QGDbx>i+V7_O;fbIzhZNf?( z-H_~%z97AgFZa@1@4XqO@2%Rxh1R{_Rp1&0xVsp0v;BJ1zqvmba=k+2c@%FpJL2Y=T+jl{=xBW- zBmh~XZaX8o`Ob1S9xPrAqduXi>LW)$CSi};c;uQhgNXNYubYyMhE+W11wZ96D0?Pz z(|bdDBG!9~K7EsAYkFQfM@yR0RF+7wSB0X8+pU4_1+3BbBXLhDms=4*{V4mc(Pu9s zy|(@7uNtkmZ!+(#{27bvFz!#k%+w7S+E+L;V~--@O_cQj)I|;Jl@M4vFFoSBBmj=E zuFzY04y<_fYYv0w5n@+jd2kkJFEgfkb~vQF&`bB^$)pajy{S0DM{qsxbF7EA198cZ z!c|--N|FlYQI;&^Rtnu9BFpcrYRko0+6h-s&`1+pRHI)yD|#(Orw(gOc|x6?A#df& zNFXvE?ws*+RhrFQc8w!z_@%bu5`B?->ykv8DxES6Jb1$dx~1$!C4#$?j|MDaVW@)E4(uZldNV&{-%P;GuQq&HLNe=GwHcS z$Fzpyx-W`RX(xLRFW3IQJyJ4aI^v2Y?V+b|j{=$J+~nR#X)qtUC84U_$ihjo3*+)w zZ!}`62Ht#KP))-`qMq%mF}1|hw6lBv^abr?Y6nPq`HPFbj*h=FSDh(c&-8Jb+ah6C zM%jR(4t}sC+b?D+k)m6DPM>qgWfVqGj!8h1>^GOTye95#CPdOIoq@NK2VcA3qg_ z20Zx~#%;}|?Nzv}JnnQHT-jKlN6dwJvmw0QK6Pl4|H08GQ?RfgkI_s+)bqct4?v;5 zhc`mb!@=rdIjlkz^r+3*D+W@nq_QONGVf=4gzyKKmXp}+4->)2?Z#2HjlRdz{dpW3 z>k7EvBjJBaWym64YD`bT^{DflT?8#y=7R~7d2f>6Grg3z#;#euyJG& zF$m22(K>Nq7kXT#&Eak6ExhRSE}c;EW6O_{F{?T?=)ndJ;=>mn5!o3N^8OXVUkRwU zvr5wM9s8JZ7}iKCQ&LQ1J2ArIe^Ne$cot>Cf4yol-wUBz8NJZ*x!>fA6>aZlyX8X} zB=U%4+ux5u&XD)VujOn>aenva;&_%IDK4372LvCj~ zFNN80zQC#E0FH0W1b&JwuzkT^vO$c|E0q=eHp*%qvrR)>)?KD0HaWH<{X{~@=8-Sy zG2?_}Svszf0nEdB%My3k1ee`Mu!5^@eAStgcF_uMYnA|sO>_3`4!BSw1@Au|bte(P zSZ5U*ni)`{vuY6UW)ox8L^QS@7D>RSSaiF|tYKN(+T=~|X$S%99GupE!$u{q^tE8u z8JYsP+0pvSLuZsCMHOg^cdpigiG9EJZF9--zIxMEUYATopu8+YZ$c!t-?2l=_PWLaisF(03r#6qZ!sGc~2KN#Pu1jVU1@ zFV&svQ+ytr2c*TAwQ67n1Y%@Ah&V@yIei-9x>te;J`9J%Wo_cU05m6ZadFCD$s!g*qItTCroH;=wRPnoICXep!Xa+GOX!d9)E1D zauNU6|9g=S5A>mHUt?32-=Ev&%uM39(fj<((11MK^@!pvHN>ffn zwjd@{albtYUfFN`x+(HwS=vtBDU`2La-eaER@L~l1wt@<9bm9{L{w(AM=2uEcIFSHi~rIC7*D}fy_u$5fNT+% z7{mJ}WIx-QZbH>W&DJ=n#@Q`PdcmVZE5-u~D0c^^MgE;tIb?t~!o3D%nUQ1Cjx2wz zgffFlpWV~@$tVkoHeFrDTs)H-rIyTpu&iuN-!4zB`q(Hlr zZ!)Xgi=5t)d>toWafNa4;m-U(XJ?pmU$Kr*2Zv8^HP+l?=tq_%)#o6wd!R-GW8wp* zo01&7cnril*BKXB*;3Sd<9le=I^UlcRugnOnqB1r!~f%Q^N=*U857Ve6t`;mo~9V? zGeDK(+Ex2BtjkDpYf>jtaG;)@X3X<~8MUSU)+!Ja>y5FI!xc$$Ed-8#J#~aFJV-L- zKQ*E3*O~nuk5lw>E_Na_cGVR@KR{LvFYVC5xyezr>uUBDN`Ao?_N=z79sbzpoI>bU zuk^)Vj5S9n+iTjHNBSr>zDrqrZBjKi2bY;Il*!6%od170^in+MXEp9sjsuYLRrIYgyc%}e+PBTBGhyTndHWZumJpG83T=2bCq&y3jI;d6@YM2c{*`_Ls@`^#b%kM>ELvQ0D-X**yOO0qjvfM05=_wg znRwQuP;@#A{hBt+PnMtf5KLYGp$|i?dZzmH&@|}^_^@}Bk5!N7UOwveTR$+s9PURv zb9VraSJe3`(3_K_Q-~Pi)Q7{*q)KG{AQQa^$Zx&X?KIRpHPLv?E+=pfY;n3Id-0M( z2>x7g&#n7UnnY*eBT-ae%U7o62-!+frilDS!}Ns{I1L^z^GQ2ANc-&Y#jH$BbOK0~ zM2wecz0--7F&+NLWtEil38Pbv$s_B9y&lOXyI1PXy_Pm=+`YLFuc3bC@)T}Rhmlfc z>n?`aTe$zpWi4};AO-4=MBjxNHn)lE%`~H}Zxz@Ns~9rDlTq z;Rk=5RBJm&r_>dr^8^(_zQlS1$#|?m>-DNcv`|@^+9JDlmb`ujs%z&;uGH}uplu)` zPCleNM=*IMmI!B)R*CE-n~2orNM}6h(5R}BVYd^wW^tZlt+7HOP2S{t)Vc&YqBh@O zLy?D7sLl?d17`M#bARKTcOMUE#=f2^lFFL_c`=L5@s2^d_`K|-GR|#y&>eiXTsQ-= zLHJI`rY{4 z-;O5Se+i5>89aUP@QJ?8C?kkc1^X`75xuwlJBrs<4~2@bwWmp21Sqx){9Gc}(Can0 z(q7Ym2{Wob(T1h~LSp+{$XoVu%{$(lNH=XuznOE0o0FA$7;n=P4GWSbZI4K`-s=hP zNH3-0N~HpxX&Fwvetf@YNp8Td>dqR(q_Z8X$ zlz3GWLrMYjKD)QL;|@g~VEWag6RrvG5z)?VTH(!{jiZ9F8U%>1rR{CNiAnU&gHWcr zoqec#O|yLf;SckTJiTMyi_Hug`gMfDCr1lNkxkq1N0Exn>+Fq*?T1WHHh+0h;z38f z3!=>`wQH_vg$^RN*OF@VVmFjx2>y^I9lW?TP?Y%+0~N4*BHZMVdQ;NdriPV4>#u*m zkrg$U;3?Yo&`f`>?o0Idb4xBf!pO_@L41-U1G}0rGvC|c(3ohq_lI)Xj!Gg@8u%rG zR*=3w;j;|w{Og5cdU2dxEFqIG>W)J3Ha$CJ33MJguA|%C!wD5f=X%3dg3m~0sHE}_ zxu1>I?yP@JWztFaX^W`1cZZ+Mfd#NI$maXqT?OxA7zEPVY?E(?UaR%bLf2``{CF+Y z-cLh9^saLSSn0AKeApn5N4f;Cls7&;Y?-O5Gm&vaZ2aY3esUN11B%(;f0}QsuU*g>B}f}JXg91#w;9T zhdM$l*}62f>-?n96HouU*euJ4-L+zJaHQQ24k>HUDU|-ZJ=^gaM%BW?@1tprl|X>Z zr{1VsdO!h6D!kOOaPEvuA#iCsocowu)lCP`_f28%hPfK5t zEJ5El8n^@EFCV_YFyu^rG+5V?ZK)#O_EEX|DX#KR0de)Y+X}Dh_f~=k3=s8QI=?a* z+47|*%Pat_N*>VqEbx|aVuxNZVDAm1_`BucX^HIp>6*ZzWLk2^C+dq;Eh?bpVEMGo zrq5nSZQX8_RgqG#tRGE&%1iw;@+9M}!DsY6Ul;A64Rz=htMvCT#2Pe8?W0wZRJDv! z1@l}@Zsrj{yWLXV{B1+B*ut``n$$2@RrA?&yrU_MjdWbRdCBNFn;D;%Y+PtiRySt# zP~FGm=5Z{^GnT^_{k7)3tV5o@EB2)ABm(NNGPXFa8XgpZ=qn@OGvHw-T&#TaH{qH+ z+h5mWAsBE=G^MC9tdLh#FLTV2`V($0F7#AtO8@2^{2e^~cLZ@04Ld1&;+N5){G)<9 z<2QXyubFNx6c;KYSX(UR$v+m2^((G~ZdQFIE-=p)3>pBQ1gJcyju zAD?c=E^Fj_AO)<|STSNebeqU2yQBT22b3>w#9lx5mjM|H0Y` zBla-m=!QX(wO19>z8z=J;x<^8`$da#+LFS-+^pv{I*J@dtss zNZwG5D?ElKZEsi&YA3s2^7(7uuBP?efXvPC@0ZvgFXN93 z@D|jjD5cG-nCsghkHInCl5~>bwWyJ~a)~-vkLKzeb9{ z`6l{KQtwtW8~fd6J>a$~pNX_L8F@a@YWfe7jIFU(SiySs-_Wja%dPVU+2a2xy@nCI zEOu!~!L$CHEaXGh^ag9F-=GL;gzihEKXxojmA`tJ0>->|W*KaV_ ztKi&yHHHO67CuL_iM@oWOcpkLb!PpszQtd&AY>rJnkGS0t zd*V$=-!-iGGG6Oh=y2*I&lk9CB29Hvlcb5f>94mqYY}(aaHK;2&nUT>rG)jlnK7|D zCULSD;QHHPp|COKBhJ&jWHL}?r*VhtT*SA$^69JdLw?fH=N$t&wqqwD3`WbZH|}_v z*kF0G@Jk=@_PA&9Vdcn=$xaqj1m3r^$5wX~x6my_;a$6#^YEnb+m001KmWwIOA98t zU^ZqlHhW)HaNfRp((o-ZI^-8?4S|*eQDva&9r<9eB>nja0BW=itT_28D|!!oNmiIA z`Iz||aMr8IKr*`BH_9Li&5X|^(EVK-n+FO|bRVew3)z$kn}@v5mPZW3Z=J?sa1`hA_dDyoo_JpTZvXZCg7z~O zxOM;4>AUx;gc{H5O5h8HYVn-mYG-K>totOb2fC~T&;|y639bhEpslGXM9h4Zo;@!#N<={?zn)fVO1?U7<_(g(b&`}b z!LdV_e}B_@@f>T#vu1wMl`Df%uX>QKn1yt9jk3If_Q0*b zXs7&bSruK(+B>+7ipnZbN2SJ`oh!={Sp3`?xFoeo4}4zaC+J*hqb$Q3or=3fM9xqDWhd+a{%L zHp%W<6!EHJQHJjS0LG;>GO$eYNI|iNy6dhwaa`AU8NybzSRmMN91N6)&u5gD8CWe3>uX9IBaD@Y2ut@bp;1U9fkweKWL{-TxdFD)u#2*>DSCMy_FXsd1f5ucJ3lgYew%LOrs%Fy~Ne zv6uXK>)-~^i65)the^xw0?+C`y3n2UcinAcwP!98YM!oO**(P9PTr)}e)OC=(3u;h zf9Y~WR)I*C?a@b$9$2=1?!N@s4*oQE-kq!*#H;N1)oCxFU9C5S`*wO+;2ja(J?BF1 z4;BOf_C!)u$b=G0#;p{&zx2EYGo+M7{<|9elea#?1nza13dHTwDRY{|Y3=?3Zz+vt znwdJiUgr_@Yi9ODL1Rd}3QL`rk=^iiRMks@J@KZrtu$pWlA#R79#5Zink>PNhRnI0 zdToidr$F$b%RBGS%NF~unVKKQFjJ`1x2w@p5XEoVnX1T9$mk$X6~CU;}SNBiXNbY%p|-DVebPzY&kw&Aev`(a2F3sn^} zW@1ym4S6=fs?*u6X#d6|`J*K3*BGB2rORl=xmiHyEQ#{uYZOqmsc@-@loy4LcR`=B zevP!jEZE!n1e586Q%Tyr8jDvqKjR?UGotY#L}qqdpDU2Mza*LH-gY{VTzHvJ=6bm< z;a4)>U3PVXTRdk%pL;|dvsIbk+TWDL&j7SScz>+J%%eAZBkU#Zc*aZ`H$ATe!y3c% zlXv;8TpI(vm`xoFkw{`DQ>Cjeu2m;EpkJqrzPxCvsK7gC>D62`ok|Dc>jA;4*?f;J zDf5Nv@rTiUc*e=YCWIe)1PTQLyaS^5`Vmd zI|;t}v~lAaMf8(w|2xcUN?uq{C#J^i-gT(WL>(c4ZBPs64If&;8S4H`1xH_y#CH;_US<0 zlJ*>l3?%q-nTsjiqVveDaJ)CL)OT*(V|vA#91#-@d(kh8h_r|6(at3>@z z9Xu$-ZWp|^=-G>KW7di&zZS+pz(Qx~qS=5Ke_`E^;>-l7Y7Ol&OO_kuFVN2LhqBdn z^N$yi7JRtXy_v$x6NIBwA$JGGhlBdKK8#;?SbbKgmhbWcbpGW6)X*>`U{A0QF{$uQ zc{{#IWF-CKQOAj14`oTZ0tinJSafKy^*$H`Kp48_-6JdC+vUG4rfbSne4(0>$&1p* z9F%pQRH(cp$QG&6|69p}RWwdvrJmHyJfulA0y2!$BlyjXozyAt=<6GTw zcEiXkFke?hZEf&_MG0QnRKut+ov0UCF?0;;AZyf*t diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d4ebbf0c1cd76571b978a7342c553a3484f09630 GIT binary patch literal 3616 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 literal 0 HcmV?d00001 diff --git a/static/logo200.png b/static/logo200.png new file mode 100644 index 0000000000000000000000000000000000000000..ffa9988266f7852b40e1475a89bd02aae63976bd GIT binary patch literal 7995 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 diff --git a/static/my/my_bc.png b/static/my/my_bc.png deleted file mode 100644 index ad9bf280f32b699204be4212dbaf4c9a3b2254cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13593 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 diff --git a/static/myselect.png b/static/myselect.png deleted file mode 100644 index 0b9bbfabb1da98abf30060713c4d749a6abf6395..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7458 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 diff --git a/static/scss/colorui.css b/static/scss/colorui.css new file mode 100644 index 0000000..07380a5 --- /dev/null +++ b/static/scss/colorui.css @@ -0,0 +1,5142 @@ +/* + ColorUi for uniApp v2.1.6 | by 文晓港 2019-05-31 10:44:24 + 仅供学习交流,如作它用所承受的法律责任一概与作者无关 + + *使用ColorUi开发扩展与插件时,请注明基于ColorUi开发 + + (QQ交流群:240787041) +*/ + +/* ================== + main 初始化 + ==================== */ +body { + background-color: #f1f1f1; + font-size: 28upx; + color: #333333; + font-family: Helvetica Neue, Helvetica, sans-serif; +} + +view, +scroll-view, +swiper, +button, +input, +textarea, +label, +navigator, +image { + box-sizing: border-box; +} + +.round { + border-radius: 5000upx; +} + +.radius { + border-radius: 6upx; +} + +/* ================== + 图片 + ==================== */ + +image { + max-width: 100%; + display: inline-block; + position: relative; + z-index: 0; +} + +image.loading::before { + content: ""; + background-color: #f5f5f5; + display: block; + position: absolute; + width: 100%; + height: 100%; + z-index: -2; +} + +image.loading::after { + content: "\e7f1"; + font-family: "cuIcon"; + position: absolute; + top: 0; + left: 0; + width: 32upx; + height: 32upx; + line-height: 32upx; + right: 0; + bottom: 0; + z-index: -1; + font-size: 32upx; + margin: auto; + color: #ccc; + -webkit-animation: cuIcon-spin 2s infinite linear; + animation: cuIcon-spin 2s infinite linear; + display: block; +} + +.response { + width: 100%; +} + +/* ================== + 开关 + ==================== */ + +switch, +checkbox, +radio { + position: relative; +} + +switch::after, +switch::before { + font-family: "cuIcon"; + content: "\e645"; + position: absolute; + color: #ffffff !important; + top: 0%; + left: 0upx; + font-size: 26upx; + line-height: 26px; + width: 50%; + text-align: center; + pointer-events: none; + transform: scale(0, 0); + transition: all 0.3s ease-in-out 0s; + z-index: 9; + bottom: 0; + height: 26px; + margin: auto; +} + +switch::before { + content: "\e646"; + right: 0; + transform: scale(1, 1); + left: auto; +} + +switch[checked]::after, +switch.checked::after { + transform: scale(1, 1); +} + +switch[checked]::before, +switch.checked::before { + transform: scale(0, 0); +} + +/* #ifndef MP-ALIPAY */ +radio::before, +checkbox::before { + font-family: "cuIcon"; + content: "\e645"; + position: absolute; + color: #ffffff !important; + top: 50%; + margin-top: -8px; + right: 5px; + font-size: 32upx; + line-height: 16px; + pointer-events: none; + transform: scale(1, 1); + transition: all 0.3s ease-in-out 0s; + z-index: 9; +} + +radio .wx-radio-input, +checkbox .wx-checkbox-input, +radio .uni-radio-input, +checkbox .uni-checkbox-input { + margin: 0; + width: 24px; + height: 24px; +} + +checkbox.round .wx-checkbox-input, +checkbox.round .uni-checkbox-input { + border-radius: 100upx; +} + +/* #endif */ + +switch[checked]::before { + transform: scale(0, 0); +} + +switch .wx-switch-input, +switch .uni-switch-input { + border: none; + padding: 0 24px; + width: 48px; + height: 26px; + margin: 0; + border-radius: 100upx; +} + +switch .wx-switch-input:not([class*="bg-"]), +switch .uni-switch-input:not([class*="bg-"]) { + background: #8799a3 !important; +} + +switch .wx-switch-input::after, +switch .uni-switch-input::after { + margin: auto; + width: 26px; + height: 26px; + border-radius: 100upx; + left: 0upx; + top: 0upx; + bottom: 0upx; + position: absolute; + transform: scale(0.9, 0.9); + transition: all 0.1s ease-in-out 0s; +} + +switch .wx-switch-input.wx-switch-input-checked::after, +switch .uni-switch-input.uni-switch-input-checked::after { + margin: auto; + left: 22px; + box-shadow: none; + transform: scale(0.9, 0.9); +} + +radio-group { + display: inline-block; +} + + + +switch.radius .wx-switch-input::after, +switch.radius .wx-switch-input, +switch.radius .wx-switch-input::before, +switch.radius .uni-switch-input::after, +switch.radius .uni-switch-input, +switch.radius .uni-switch-input::before { + border-radius: 10upx; +} + +switch .wx-switch-input::before, +radio.radio::before, +checkbox .wx-checkbox-input::before, +radio .wx-radio-input::before, +switch .uni-switch-input::before, +radio.radio::before, +checkbox .uni-checkbox-input::before, +radio .uni-radio-input::before { + display: none; +} + +radio.radio[checked]::after, +radio.radio .uni-radio-input-checked::after { + content: ""; + background-color: transparent; + display: block; + position: absolute; + width: 8px; + height: 8px; + z-index: 999; + top: 0upx; + left: 0upx; + right: 0; + bottom: 0; + margin: auto; + border-radius: 200upx; + /* #ifndef MP */ + border: 7px solid #ffffff !important; + /* #endif */ + + /* #ifdef MP */ + border: 8px solid #ffffff !important; + /* #endif */ +} + +.switch-sex::after { + content: "\e71c"; +} + +.switch-sex::before { + content: "\e71a"; +} + +.switch-sex .wx-switch-input, +.switch-sex .uni-switch-input { + background: #e54d42 !important; + border-color: #e54d42 !important; +} + +.switch-sex[checked] .wx-switch-input, +.switch-sex.checked .uni-switch-input { + background: #0081ff !important; + border-color: #0081ff !important; +} + +switch.red[checked] .wx-switch-input.wx-switch-input-checked, +checkbox.red[checked] .wx-checkbox-input, +radio.red[checked] .wx-radio-input, +switch.red.checked .uni-switch-input.uni-switch-input-checked, +checkbox.red.checked .uni-checkbox-input, +radio.red.checked .uni-radio-input { + background-color: #e54d42 !important; + border-color: #e54d42 !important; + color: #ffffff !important; +} + +switch.orange[checked] .wx-switch-input, +checkbox.orange[checked] .wx-checkbox-input, +radio.orange[checked] .wx-radio-input, +switch.orange.checked .uni-switch-input, +checkbox.orange.checked .uni-checkbox-input, +radio.orange.checked .uni-radio-input { + background-color: #f37b1d !important; + border-color: #f37b1d !important; + color: #ffffff !important; +} + +switch.yellow[checked] .wx-switch-input, +checkbox.yellow[checked] .wx-checkbox-input, +radio.yellow[checked] .wx-radio-input, +switch.yellow.checked .uni-switch-input, +checkbox.yellow.checked .uni-checkbox-input, +radio.yellow.checked .uni-radio-input { + background-color: #fbbd08 !important; + border-color: #fbbd08 !important; + color: #333333 !important; +} + +switch.olive[checked] .wx-switch-input, +checkbox.olive[checked] .wx-checkbox-input, +radio.olive[checked] .wx-radio-input, +switch.olive.checked .uni-switch-input, +checkbox.olive.checked .uni-checkbox-input, +radio.olive.checked .uni-radio-input { + background-color: #8dc63f !important; + border-color: #8dc63f !important; + color: #ffffff !important; +} + +switch.green[checked] .wx-switch-input, +switch[checked] .wx-switch-input, +checkbox.green[checked] .wx-checkbox-input, +checkbox[checked] .wx-checkbox-input, +radio.green[checked] .wx-radio-input, +radio[checked] .wx-radio-input, +switch.green.checked .uni-switch-input, +switch.checked .uni-switch-input, +checkbox.green.checked .uni-checkbox-input, +checkbox.checked .uni-checkbox-input, +radio.green.checked .uni-radio-input, +radio.checked .uni-radio-input { + background-color: #39b54a !important; + border-color: #39b54a !important; + color: #ffffff !important; + border-color: #39B54A !important; +} + +switch.cyan[checked] .wx-switch-input, +checkbox.cyan[checked] .wx-checkbox-input, +radio.cyan[checked] .wx-radio-input, +switch.cyan.checked .uni-switch-input, +checkbox.cyan.checked .uni-checkbox-input, +radio.cyan.checked .uni-radio-input { + background-color: #1cbbb4 !important; + border-color: #1cbbb4 !important; + color: #ffffff !important; +} + +switch.blue[checked] .wx-switch-input, +checkbox.blue[checked] .wx-checkbox-input, +radio.blue[checked] .wx-radio-input, +switch.blue.checked .uni-switch-input, +checkbox.blue.checked .uni-checkbox-input, +radio.blue.checked .uni-radio-input { + background-color: #0081ff !important; + border-color: #0081ff !important; + color: #ffffff !important; +} + +switch.purple[checked] .wx-switch-input, +checkbox.purple[checked] .wx-checkbox-input, +radio.purple[checked] .wx-radio-input, +switch.purple.checked .uni-switch-input, +checkbox.purple.checked .uni-checkbox-input, +radio.purple.checked .uni-radio-input { + background-color: #6739b6 !important; + border-color: #6739b6 !important; + color: #ffffff !important; +} + +switch.mauve[checked] .wx-switch-input, +checkbox.mauve[checked] .wx-checkbox-input, +radio.mauve[checked] .wx-radio-input, +switch.mauve.checked .uni-switch-input, +checkbox.mauve.checked .uni-checkbox-input, +radio.mauve.checked .uni-radio-input { + background-color: #9c26b0 !important; + border-color: #9c26b0 !important; + color: #ffffff !important; +} + +switch.pink[checked] .wx-switch-input, +checkbox.pink[checked] .wx-checkbox-input, +radio.pink[checked] .wx-radio-input, +switch.pink.checked .uni-switch-input, +checkbox.pink.checked .uni-checkbox-input, +radio.pink.checked .uni-radio-input { + background-color: #e03997 !important; + border-color: #e03997 !important; + color: #ffffff !important; +} + +switch.brown[checked] .wx-switch-input, +checkbox.brown[checked] .wx-checkbox-input, +radio.brown[checked] .wx-radio-input, +switch.brown.checked .uni-switch-input, +checkbox.brown.checked .uni-checkbox-input, +radio.brown.checked .uni-radio-input { + background-color: #a5673f !important; + border-color: #a5673f !important; + color: #ffffff !important; +} + +switch.grey[checked] .wx-switch-input, +checkbox.grey[checked] .wx-checkbox-input, +radio.grey[checked] .wx-radio-input, +switch.grey.checked .uni-switch-input, +checkbox.grey.checked .uni-checkbox-input, +radio.grey.checked .uni-radio-input { + background-color: #8799a3 !important; + border-color: #8799a3 !important; + color: #ffffff !important; +} + +switch.gray[checked] .wx-switch-input, +checkbox.gray[checked] .wx-checkbox-input, +radio.gray[checked] .wx-radio-input, +switch.gray.checked .uni-switch-input, +checkbox.gray.checked .uni-checkbox-input, +radio.gray.checked .uni-radio-input { + background-color: #f0f0f0 !important; + border-color: #f0f0f0 !important; + color: #333333 !important; +} + +switch.black[checked] .wx-switch-input, +checkbox.black[checked] .wx-checkbox-input, +radio.black[checked] .wx-radio-input, +switch.black.checked .uni-switch-input, +checkbox.black.checked .uni-checkbox-input, +radio.black.checked .uni-radio-input { + background-color: #333333 !important; + border-color: #333333 !important; + color: #ffffff !important; +} + +switch.white[checked] .wx-switch-input, +checkbox.white[checked] .wx-checkbox-input, +radio.white[checked] .wx-radio-input, +switch.white.checked .uni-switch-input, +checkbox.white.checked .uni-checkbox-input, +radio.white.checked .uni-radio-input { + background-color: #ffffff !important; + border-color: #ffffff !important; + color: #333333 !important; +} + +/* ================== + 边框 + ==================== */ + +/* -- 实线 -- */ + +.solid, +.solid-top, +.solid-right, +.solid-bottom, +.solid-left, +.solids, +.solids-top, +.solids-right, +.solids-bottom, +.solids-left, +.dashed, +.dashed-top, +.dashed-right, +.dashed-bottom, +.dashed-left { + position: relative; +} + +.solid::after, +.solid-top::after, +.solid-right::after, +.solid-bottom::after, +.solid-left::after, +.solids::after, +.solids-top::after, +.solids-right::after, +.solids-bottom::after, +.solids-left::after, +.dashed::after, +.dashed-top::after, +.dashed-right::after, +.dashed-bottom::after, +.dashed-left::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border-radius: inherit; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; +} + +.solid::after { + border: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-top::after { + border-top: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-right::after { + border-right: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-bottom::after { + border-bottom: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-left::after { + border-left: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solids::after { + border: 8upx solid #eee; +} + +.solids-top::after { + border-top: 8upx solid #eee; +} + +.solids-right::after { + border-right: 8upx solid #eee; +} + +.solids-bottom::after { + border-bottom: 8upx solid #eee; +} + +.solids-left::after { + border-left: 8upx solid #eee; +} + +/* -- 虚线 -- */ + +.dashed::after { + border: 1upx dashed #ddd; +} + +.dashed-top::after { + border-top: 1upx dashed #ddd; +} + +.dashed-right::after { + border-right: 1upx dashed #ddd; +} + +.dashed-bottom::after { + border-bottom: 1upx dashed #ddd; +} + +.dashed-left::after { + border-left: 1upx dashed #ddd; +} + +/* -- 阴影 -- */ + +.shadow[class*='white'] { + --ShadowSize: 0 1upx 6upx; +} + +.shadow-lg { + --ShadowSize: 0upx 40upx 100upx 0upx; +} + +.shadow-warp { + position: relative; + box-shadow: 0 0 10upx rgba(0, 0, 0, 0.1); +} + +.shadow-warp:before, +.shadow-warp:after { + position: absolute; + content: ""; + top: 20upx; + bottom: 30upx; + left: 20upx; + width: 50%; + box-shadow: 0 30upx 20upx rgba(0, 0, 0, 0.2); + transform: rotate(-3deg); + z-index: -1; +} + +.shadow-warp:after { + right: 20upx; + left: auto; + transform: rotate(3deg); +} + +.shadow-blur { + position: relative; +} + +.shadow-blur::before { + content: ""; + display: block; + background: inherit; + filter: blur(10upx); + position: absolute; + width: 100%; + height: 100%; + top: 10upx; + left: 10upx; + z-index: -1; + opacity: 0.4; + transform-origin: 0 0; + border-radius: inherit; + transform: scale(1, 1); +} + +/* ================== + 按钮 + ==================== */ + +.cu-btn { + position: relative; + border: 0upx; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 0 30upx; + font-size: 28upx; + height: 64upx; + line-height: 1; + text-align: center; + text-decoration: none; + overflow: visible; + margin-left: initial; + transform: translate(0upx, 0upx); + margin-right: initial; +} + +.cu-btn::after { + display: none; +} + +.cu-btn:not([class*="bg-"]) { + background-color: #f0f0f0; +} + +.cu-btn[class*="line"] { + background-color: transparent; +} + +.cu-btn[class*="line"]::after { + content: " "; + display: block; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border: 1upx solid currentColor; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: 12upx; + z-index: 1; + pointer-events: none; +} + +.cu-btn.round[class*="line"]::after { + border-radius: 1000upx; +} + +.cu-btn[class*="lines"]::after { + border: 6upx solid currentColor; +} + +.cu-btn[class*="bg-"]::after { + display: none; +} + +.cu-btn.sm { + padding: 0 20upx; + font-size: 20upx; + height: 48upx; +} + +.cu-btn.lg { + padding: 0 40upx; + font-size: 32upx; + height: 80upx; +} + +.cu-btn.cuIcon.sm { + width: 48upx; + height: 48upx; +} + +.cu-btn.cuIcon { + width: 64upx; + height: 64upx; + border-radius: 500upx; + padding: 0; +} + +button.cuIcon.lg { + width: 80upx; + height: 80upx; +} + +.cu-btn.shadow-blur::before { + top: 4upx; + left: 4upx; + filter: blur(6upx); + opacity: 0.6; +} + +.cu-btn.button-hover { + transform: translate(1upx, 1upx); +} + +.block { + display: block; +} + +.cu-btn.block { + display: flex; +} + +.cu-btn[disabled] { + opacity: 0.6; + color: #ffffff; +} + +/* ================== + 徽章 + ==================== */ + +.cu-tag { + font-size: 24upx; + vertical-align: middle; + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 0upx 16upx; + height: 48upx; + font-family: Helvetica Neue, Helvetica, sans-serif; + white-space: nowrap; +} + +.cu-tag:not([class*="bg"]):not([class*="line"]) { + background-color: #f1f1f1; +} + +.cu-tag[class*="line-"]::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border: 1upx solid currentColor; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: inherit; + z-index: 1; + pointer-events: none; +} + +.cu-tag.radius[class*="line"]::after { + border-radius: 12upx; +} + +.cu-tag.round[class*="line"]::after { + border-radius: 1000upx; +} + +.cu-tag[class*="line-"]::after { + border-radius: 0; +} + +.cu-tag+.cu-tag { + margin-left: 10upx; +} + +.cu-tag.sm { + font-size: 20upx; + padding: 0upx 12upx; + height: 32upx; +} + +.cu-capsule { + display: inline-flex; + vertical-align: middle; +} + +.cu-capsule+.cu-capsule { + margin-left: 10upx; +} + +.cu-capsule .cu-tag { + margin: 0; +} + +.cu-capsule .cu-tag[class*="line-"]:last-child::after { + border-left: 0upx solid transparent; +} + +.cu-capsule .cu-tag[class*="line-"]:first-child::after { + border-right: 0upx solid transparent; +} + +.cu-capsule.radius .cu-tag:first-child { + border-top-left-radius: 6upx; + border-bottom-left-radius: 6upx; +} + +.cu-capsule.radius .cu-tag:last-child::after, +.cu-capsule.radius .cu-tag[class*="line-"] { + border-top-right-radius: 12upx; + border-bottom-right-radius: 12upx; +} + +.cu-capsule.round .cu-tag:first-child { + border-top-left-radius: 200upx; + border-bottom-left-radius: 200upx; + text-indent: 4upx; +} + +.cu-capsule.round .cu-tag:last-child::after, +.cu-capsule.round .cu-tag:last-child { + border-top-right-radius: 200upx; + border-bottom-right-radius: 200upx; + text-indent: -4upx; +} + +.cu-tag.badge { + border-radius: 200upx; + position: absolute; + top: -10upx; + right: -10upx; + font-size: 20upx; + padding: 0upx 10upx; + height: 28upx; + color: #ffffff; +} + +.cu-tag.badge:not([class*="bg-"]) { + background-color: #dd514c; +} + +.cu-tag:empty:not([class*="cuIcon-"]) { + padding: 0upx; + width: 16upx; + height: 16upx; + top: -4upx; + right: -4upx; +} + +.cu-tag[class*="cuIcon-"] { + width: 32upx; + height: 32upx; + top: -4upx; + right: -4upx; +} + +/* ================== + 头像 + ==================== */ + +.cu-avatar { + font-variant: small-caps; + margin: 0; + padding: 0; + display: inline-flex; + text-align: center; + justify-content: center; + align-items: center; + background-color: #ccc; + color: #ffffff; + white-space: nowrap; + position: relative; + width: 64upx; + height: 64upx; + background-size: cover; + background-position: center; + vertical-align: middle; + font-size: 1.5em; +} + +.cu-avatar.sm { + width: 48upx; + height: 48upx; + font-size: 1em; +} + +.cu-avatar.lg { + width: 96upx; + height: 96upx; + font-size: 2em; +} + +.cu-avatar.xl { + width: 128upx; + height: 128upx; + font-size: 2.5em; +} + +.cu-avatar .avatar-text { + font-size: 0.4em; +} + +.cu-avatar-group { + direction: rtl; + unicode-bidi: bidi-override; + padding: 0 10upx 0 40upx; + display: inline-block; +} + +.cu-avatar-group .cu-avatar { + margin-left: -30upx; + border: 4upx solid #f1f1f1; + vertical-align: middle; +} + +.cu-avatar-group .cu-avatar.sm { + margin-left: -20upx; + border: 1upx solid #f1f1f1; +} + +/* ================== + 进度条 + ==================== */ + +.cu-progress { + overflow: hidden; + height: 28upx; + background-color: #ebeef5; + display: inline-flex; + align-items: center; + width: 100%; +} + +.cu-progress+view, +.cu-progress+text { + line-height: 1; +} + +.cu-progress.xs { + height: 10upx; +} + +.cu-progress.sm { + height: 20upx; +} + +.cu-progress view { + width: 0; + height: 100%; + align-items: center; + display: flex; + justify-items: flex-end; + justify-content: space-around; + font-size: 20upx; + color: #ffffff; + transition: width 0.6s ease; +} + +.cu-progress text { + align-items: center; + display: flex; + font-size: 20upx; + color: #333333; + text-indent: 10upx; +} + +.cu-progress.text-progress { + padding-right: 60upx; +} + +.cu-progress.striped view { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 72upx 72upx; +} + +.cu-progress.active view { + animation: progress-stripes 2s linear infinite; +} + +@keyframes progress-stripes { + from { + background-position: 72upx 0; + } + + to { + background-position: 0 0; + } +} + +/* ================== + 加载 + ==================== */ + +.cu-load { + display: block; + line-height: 3em; + text-align: center; +} + +.cu-load::before { + font-family: "cuIcon"; + display: inline-block; + margin-right: 6upx; +} + +.cu-load.loading::before { + content: "\e67a"; + animation: cuIcon-spin 2s infinite linear; +} + +.cu-load.loading::after { + content: "加载中..."; +} + +.cu-load.over::before { + content: "\e64a"; +} + +.cu-load.over::after { + content: "没有更多了"; +} + +.cu-load.erro::before { + content: "\e658"; +} + +.cu-load.erro::after { + content: "加载失败"; +} + +.cu-load.load-cuIcon::before { + font-size: 32upx; +} + +.cu-load.load-cuIcon::after { + display: none; +} + +.cu-load.load-cuIcon.over { + display: none; +} + +.cu-load.load-modal { + position: fixed; + top: 0; + right: 0; + bottom: 140upx; + left: 0; + margin: auto; + width: 260upx; + height: 260upx; + background-color: #ffffff; + border-radius: 10upx; + box-shadow: 0 0 0upx 2000upx rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + font-size: 28upx; + z-index: 9999; + line-height: 2.4em; +} + +.cu-load.load-modal [class*="cuIcon-"] { + font-size: 60upx; +} + +.cu-load.load-modal image { + width: 70upx; + height: 70upx; +} + +.cu-load.load-modal::after { + content: ""; + position: absolute; + background-color: #ffffff; + border-radius: 50%; + width: 200upx; + height: 200upx; + font-size: 10px; + border-top: 6upx solid rgba(0, 0, 0, 0.05); + border-right: 6upx solid rgba(0, 0, 0, 0.05); + border-bottom: 6upx solid rgba(0, 0, 0, 0.05); + border-left: 6upx solid #f37b1d; + animation: cuIcon-spin 1s infinite linear; + z-index: -1; +} + +.load-progress { + pointer-events: none; + top: 0; + position: fixed; + width: 100%; + left: 0; + z-index: 2000; +} + +.load-progress.hide { + display: none; +} + +.load-progress .load-progress-bar { + position: relative; + width: 100%; + height: 4upx; + overflow: hidden; + transition: all 200ms ease 0s; +} + +.load-progress .load-progress-spinner { + position: absolute; + top: 10upx; + right: 10upx; + z-index: 2000; + display: block; +} + +.load-progress .load-progress-spinner::after { + content: ""; + display: block; + width: 24upx; + height: 24upx; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: solid 4upx transparent; + border-top-color: inherit; + border-left-color: inherit; + border-radius: 50%; + -webkit-animation: load-progress-spinner 0.4s linear infinite; + animation: load-progress-spinner 0.4s linear infinite; +} + +@-webkit-keyframes load-progress-spinner { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes load-progress-spinner { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/* ================== + 列表 + ==================== */ +.grayscale { + filter: grayscale(1); +} + +.cu-list+.cu-list { + margin-top: 30upx +} + +.cu-list>.cu-item { + transition: all .6s ease-in-out 0s; + transform: translateX(0upx) +} + +.cu-list>.cu-item.move-cur { + transform: translateX(-260upx) +} + +.cu-list>.cu-item .move { + position: absolute; + right: 0; + display: flex; + width: 260upx; + height: 100%; + transform: translateX(100%) +} + +.cu-list>.cu-item .move view { + display: flex; + flex: 1; + justify-content: center; + align-items: center +} + +.cu-list.menu-avatar { + overflow: hidden; +} + +.cu-list.menu-avatar>.cu-item { + position: relative; + display: flex; + padding-right: 10upx; + height: 140upx; + background-color: #ffffff; + justify-content: flex-end; + align-items: center +} + +.cu-list.menu-avatar>.cu-item>.cu-avatar { + position: absolute; + left: 30upx +} + +.cu-list.menu-avatar>.cu-item .flex .text-cut { + max-width: 510upx +} + +.cu-list.menu-avatar>.cu-item .content { + position: absolute; + left: 146upx; + width: calc(100% - 96upx - 60upx - 120upx - 20upx); + line-height: 1.6em; +} + +.cu-list.menu-avatar>.cu-item .content.flex-sub { + width: calc(100% - 96upx - 60upx - 20upx); +} + +.cu-list.menu-avatar>.cu-item .content>view:first-child { + font-size: 30upx; + display: flex; + align-items: center +} + +.cu-list.menu-avatar>.cu-item .content .cu-tag.sm { + display: inline-block; + margin-left: 10upx; + height: 28upx; + font-size: 16upx; + line-height: 32upx +} + +.cu-list.menu-avatar>.cu-item .action { + width: 100upx; + text-align: center +} + +.cu-list.menu-avatar>.cu-item .action view+view { + margin-top: 10upx +} + +.cu-list.menu-avatar.comment>.cu-item .content { + position: relative; + left: 0; + width: auto; + flex: 1; +} + +.cu-list.menu-avatar.comment>.cu-item { + padding: 30upx 30upx 30upx 120upx; + height: auto +} + +.cu-list.menu-avatar.comment .cu-avatar { + align-self: flex-start +} + +.cu-list.menu>.cu-item { + position: relative; + display: flex; + padding: 0 30upx; + min-height: 100upx; + background-color: #ffffff; + justify-content: space-between; + align-items: center +} + +.cu-list.menu>.cu-item:last-child:after { + border: none +} + +.cu-list.menu-avatar>.cu-item:after, +.cu-list.menu>.cu-item:after { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 200%; + height: 200%; + border-bottom: 1upx solid #ddd; + border-radius: inherit; + content: " "; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none +} + +.cu-list.menu>.cu-item.grayscale { + background-color: #f5f5f5 +} + +.cu-list.menu>.cu-item.cur { + background-color: #fcf7e9 +} + +.cu-list.menu>.cu-item.arrow { + padding-right: 90upx +} + +.cu-list.menu>.cu-item.arrow:before { + position: absolute; + top: 0; + right: 30upx; + bottom: 0; + display: block; + margin: auto; + width: 30upx; + height: 30upx; + color: #8799a3; + content: "\e6a3"; + text-align: center; + font-size: 34upx; + font-family: cuIcon; + line-height: 30upx +} + +.cu-list.menu>.cu-item button.content { + padding: 0; + background-color: transparent; + justify-content: flex-start +} + +.cu-list.menu>.cu-item button.content:after { + display: none +} + +.cu-list.menu>.cu-item .cu-avatar-group .cu-avatar { + border-color: #ffffff +} + +.cu-list.menu>.cu-item .content>view:first-child { + display: flex; + align-items: center +} + +.cu-list.menu>.cu-item .content>text[class*=cuIcon] { + display: inline-block; + margin-right: 10upx; + width: 1.6em; + text-align: center +} + +.cu-list.menu>.cu-item .content>image { + display: inline-block; + margin-right: 10upx; + width: 1.6em; + height: 1.6em; + vertical-align: middle +} + +.cu-list.menu>.cu-item .content { + font-size: 30upx; + line-height: 1.6em; + flex: 1 +} + +.cu-list.menu>.cu-item .content .cu-tag.sm { + display: inline-block; + margin-left: 10upx; + height: 28upx; + font-size: 16upx; + line-height: 32upx +} + +.cu-list.menu>.cu-item .action .cu-tag:empty { + right: 10upx +} + +.cu-list.menu { + display: block; + overflow: hidden +} + +.cu-list.menu.sm-border>.cu-item:after { + left: 30upx; + width: calc(200% - 120upx) +} + +.cu-list.grid>.cu-item { + position: relative; + display: flex; + padding: 20upx 0 30upx; + transition-duration: 0s; + flex-direction: column +} + +.cu-list.grid>.cu-item:after { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 200%; + height: 200%; + border-right: 1px solid rgba(0, 0, 0, .1); + border-bottom: 1px solid rgba(0, 0, 0, .1); + border-radius: inherit; + content: " "; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none +} + +.cu-list.grid>.cu-item text { + display: block; + margin-top: 10upx; + color: #888; + font-size: 26upx; + line-height: 40upx +} + +.cu-list.grid>.cu-item [class*=cuIcon] { + position: relative; + display: block; + margin-top: 20upx; + width: 100%; + font-size: 48upx +} + +.cu-list.grid>.cu-item .cu-tag { + right: auto; + left: 50%; + margin-left: 20upx +} + +.cu-list.grid { + background-color: #ffffff; + text-align: center +} + +.cu-list.grid.no-border>.cu-item { + padding-top: 10upx; + padding-bottom: 20upx +} + +.cu-list.grid.no-border>.cu-item:after { + border: none +} + +.cu-list.grid.no-border { + padding: 20upx 10upx +} + +.cu-list.grid.col-3>.cu-item:nth-child(3n):after, +.cu-list.grid.col-4>.cu-item:nth-child(4n):after, +.cu-list.grid.col-5>.cu-item:nth-child(5n):after { + border-right-width: 0 +} + +.cu-list.card-menu { + overflow: hidden; + margin-right: 30upx; + margin-left: 30upx; + border-radius: 20upx +} + + +/* ================== + 操作条 + ==================== */ + +.cu-bar { + display: flex; + position: relative; + align-items: center; + min-height: 100upx; + justify-content: space-between; +} + +.cu-bar .action { + display: flex; + align-items: center; + height: 100%; + justify-content: center; + max-width: 100%; +} + +.cu-bar .action.border-title { + position: relative; + top: -10upx; +} + +.cu-bar .action.border-title text[class*="bg-"]:last-child { + position: absolute; + bottom: -0.5rem; + min-width: 2rem; + height: 6upx; + left: 0; +} + +.cu-bar .action.sub-title { + position: relative; + top: -0.2rem; +} + +.cu-bar .action.sub-title text { + position: relative; + z-index: 1; +} + +.cu-bar .action.sub-title text[class*="bg-"]:last-child { + position: absolute; + display: inline-block; + bottom: -0.2rem; + border-radius: 6upx; + width: 100%; + height: 0.6rem; + left: 0.6rem; + opacity: 0.3; + z-index: 0; +} + +.cu-bar .action.sub-title text[class*="text-"]:last-child { + position: absolute; + display: inline-block; + bottom: -0.7rem; + left: 0.5rem; + opacity: 0.2; + z-index: 0; + text-align: right; + font-weight: 900; + font-size: 36upx; +} + +.cu-bar.justify-center .action.border-title text:last-child, +.cu-bar.justify-center .action.sub-title text:last-child { + left: 0; + right: 0; + margin: auto; + text-align: center; +} + +.cu-bar .action:first-child { + margin-left: 30upx; + font-size: 30upx; +} + +.cu-bar .action text.text-cut { + text-align: left; + width: 100%; +} + +.cu-bar .cu-avatar:first-child { + margin-left: 20upx; +} + +.cu-bar .action:first-child>text[class*="cuIcon-"] { + margin-left: -0.3em; + margin-right: 0.3em; +} + +.cu-bar .action:last-child { + margin-right: 30upx; +} + +.cu-bar .action>text[class*="cuIcon-"], +.cu-bar .action>view[class*="cuIcon-"] { + font-size: 36upx; +} + +.cu-bar .action>text[class*="cuIcon-"]+text[class*="cuIcon-"] { + margin-left: 0.5em; +} + +.cu-bar .content { + position: absolute; + text-align: center; + width: calc(100% - 340upx); + left: 0; + right: 0; + bottom: 0; + top: 0; + margin: auto; + height: 60upx; + font-size: 32upx; + line-height: 60upx; + cursor: none; + pointer-events: none; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.cu-bar.ios .content { + bottom: 7px; + height: 30px; + font-size: 32upx; + line-height: 30px; +} + +.cu-bar.btn-group { + justify-content: space-around; +} + +.cu-bar.btn-group button { + padding: 20upx 32upx; +} + +.cu-bar.btn-group button { + flex: 1; + margin: 0 20upx; + max-width: 50%; +} + +.cu-bar .search-form { + background-color: #f5f5f5; + line-height: 64upx; + height: 64upx; + font-size: 24upx; + color: #333333; + flex: 1; + display: flex; + align-items: center; + margin: 0 30upx; +} + +.cu-bar .search-form+.action { + margin-right: 30upx; +} + +.cu-bar .search-form input { + flex: 1; + padding-right: 30upx; + height: 64upx; + line-height: 64upx; + font-size: 26upx; + background-color: transparent; +} + +.cu-bar .search-form [class*="cuIcon-"] { + margin: 0 0.5em 0 0.8em; +} + +.cu-bar .search-form [class*="cuIcon-"]::before { + top: 0upx; +} + +.cu-bar.fixed, +.nav.fixed { + position: fixed; + width: 100%; + top: 0; + z-index: 1024; + box-shadow: 0 1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.foot { + position: fixed; + width: 100%; + bottom: 0; + z-index: 1024; + box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.tabbar { + padding: 0; + height: calc(100upx + env(safe-area-inset-bottom) / 2); + padding-bottom: calc(env(safe-area-inset-bottom) / 2); +} + +.cu-tabbar-height { + min-height: 100upx; + height: calc(100upx + env(safe-area-inset-bottom) / 2); +} + +.cu-bar.tabbar.shadow { + box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.tabbar .action { + font-size: 22upx; + position: relative; + flex: 1; + text-align: center; + padding: 0; + display: block; + height: auto; + line-height: 1; + margin: 0; + background-color: inherit; + overflow: initial; +} + +.cu-bar.tabbar.shop .action { + width: 140upx; + flex: initial; +} + +.cu-bar.tabbar .action.add-action { + position: relative; + z-index: 2; + padding-top: 50upx; +} + +.cu-bar.tabbar .action.add-action [class*="cuIcon-"] { + position: absolute; + width: 70upx; + z-index: 2; + height: 70upx; + border-radius: 50%; + line-height: 70upx; + font-size: 50upx; + top: -35upx; + left: 0; + right: 0; + margin: auto; + padding: 0; +} + +.cu-bar.tabbar .action.add-action::after { + content: ""; + position: absolute; + width: 100upx; + height: 100upx; + top: -50upx; + left: 0; + right: 0; + margin: auto; + box-shadow: 0 -3upx 8upx rgba(0, 0, 0, 0.08); + border-radius: 50upx; + background-color: inherit; + z-index: 0; +} + +.cu-bar.tabbar .action.add-action::before { + content: ""; + position: absolute; + width: 100upx; + height: 30upx; + bottom: 30upx; + left: 0; + right: 0; + margin: auto; + background-color: inherit; + z-index: 1; +} + +.cu-bar.tabbar .btn-group { + flex: 1; + display: flex; + justify-content: space-around; + align-items: center; + padding: 0 10upx; +} + +.cu-bar.tabbar button.action::after { + border: 0; +} + +.cu-bar.tabbar .action [class*="cuIcon-"] { + width: 100upx; + position: relative; + display: block; + height: auto; + margin: 0 auto 10upx; + text-align: center; + font-size: 40upx; +} + +.cu-bar.tabbar .action .cuIcon-cu-image { + margin: 0 auto; +} + +.cu-bar.tabbar .action .cuIcon-cu-image image { + width: 50upx; + height: 50upx; + display: inline-block; +} + +.cu-bar.tabbar .submit { + align-items: center; + display: flex; + justify-content: center; + text-align: center; + position: relative; + flex: 2; + align-self: stretch; +} + +.cu-bar.tabbar .submit:last-child { + flex: 2.6; +} + +.cu-bar.tabbar .submit+.submit { + flex: 2; +} + +.cu-bar.tabbar.border .action::before { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + transform: scale(0.5); + transform-origin: 0 0; + border-right: 1upx solid rgba(0, 0, 0, 0.1); + z-index: 3; +} + +.cu-bar.tabbar.border .action:last-child:before { + display: none; +} + +.cu-bar.input { + padding-right: 20upx; + background-color: #ffffff; +} + +.cu-bar.input input { + overflow: initial; + line-height: 64upx; + height: 64upx; + min-height: 64upx; + flex: 1; + font-size: 30upx; + margin: 0 20upx; +} + +.cu-bar.input .action { + margin-left: 20upx; +} + +.cu-bar.input .action [class*="cuIcon-"] { + font-size: 48upx; +} + +.cu-bar.input input+.action { + margin-right: 20upx; + margin-left: 0upx; +} + +.cu-bar.input .action:first-child [class*="cuIcon-"] { + margin-left: 0upx; +} + +.cu-custom { + display: block; + position: relative; +} + +.cu-custom .cu-bar .content { + width: calc(100% - 440upx); +} + +/* #ifdef MP-ALIPAY */ +.cu-custom .cu-bar .action .cuIcon-back { + opacity: 0; +} + +/* #endif */ + +.cu-custom .cu-bar .content image { + height: 60upx; + width: 240upx; +} + +.cu-custom .cu-bar { + min-height: 0px; + /* #ifdef MP-WEIXIN */ + padding-right: 220upx; + /* #endif */ + /* #ifdef MP-ALIPAY */ + padding-right: 150upx; + /* #endif */ + box-shadow: 0upx 0upx 0upx; + z-index: 9999; +} + +.cu-custom .cu-bar .border-custom { + position: relative; + background: rgba(0, 0, 0, 0.15); + border-radius: 1000upx; + height: 30px; +} + +.cu-custom .cu-bar .border-custom::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border-radius: inherit; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + border: 1upx solid #ffffff; + opacity: 0.5; +} + +.cu-custom .cu-bar .border-custom::before { + content: " "; + width: 1upx; + height: 110%; + position: absolute; + top: 22.5%; + left: 0; + right: 0; + margin: auto; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + opacity: 0.6; + background-color: #ffffff; +} + +.cu-custom .cu-bar .border-custom text { + display: block; + flex: 1; + margin: auto !important; + text-align: center; + font-size: 34upx; +} + +/* ================== + 导航栏 + ==================== */ + +.nav { + white-space: nowrap; +} + +::-webkit-scrollbar { + display: none; +} + +.nav .cu-item { + height: 90upx; + display: inline-block; + line-height: 90upx; + margin: 0 10upx; + padding: 0 20upx; +} + +.nav .cu-item.cur { + border-bottom: 4upx solid; +} + +/* ================== + 时间轴 + ==================== */ + +.cu-timeline { + display: block; + background-color: #ffffff; +} + +.cu-timeline .cu-time { + width: 120upx; + text-align: center; + padding: 20upx 0; + font-size: 26upx; + color: #888; + display: block; +} + +.cu-timeline>.cu-item { + padding: 30upx 30upx 30upx 120upx; + position: relative; + display: block; + z-index: 0; +} + +.cu-timeline>.cu-item:not([class*="text-"]) { + color: #ccc; +} + +.cu-timeline>.cu-item::after { + content: ""; + display: block; + position: absolute; + width: 1upx; + background-color: #ddd; + left: 60upx; + height: 100%; + top: 0; + z-index: 8; +} + +.cu-timeline>.cu-item::before { + font-family: "cuIcon"; + display: block; + position: absolute; + top: 36upx; + z-index: 9; + background-color: #ffffff; + width: 50upx; + height: 50upx; + text-align: center; + border: none; + line-height: 50upx; + left: 36upx; +} + +.cu-timeline>.cu-item:not([class*="cuIcon-"])::before { + content: "\e763"; +} + +.cu-timeline>.cu-item[class*="cuIcon-"]::before { + background-color: #ffffff; + width: 50upx; + height: 50upx; + text-align: center; + border: none; + line-height: 50upx; + left: 36upx; +} + +.cu-timeline>.cu-item>.content { + padding: 30upx; + border-radius: 6upx; + display: block; + line-height: 1.6; +} + +.cu-timeline>.cu-item>.content:not([class*="bg-"]) { + background-color: #f1f1f1; + color: #333333; +} + +.cu-timeline>.cu-item>.content+.content { + margin-top: 20upx; +} + +/* ================== + 聊天 + ==================== */ + +.cu-chat { + display: flex; + flex-direction: column; +} + +.cu-chat .cu-item { + display: flex; + padding: 30upx 30upx 70upx; + position: relative; +} + +.cu-chat .cu-item>.cu-avatar { + width: 80upx; + height: 80upx; +} + +.cu-chat .cu-item>.main { + max-width: calc(100% - 260upx); + margin: 0 40upx; + display: flex; + align-items: center; +} + +.cu-chat .cu-item>image { + height: 320upx; +} + +.cu-chat .cu-item>.main .content { + padding: 20upx; + border-radius: 6upx; + display: inline-flex; + max-width: 100%; + align-items: center; + font-size: 30upx; + position: relative; + min-height: 80upx; + line-height: 40upx; + text-align: left; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"]) { + background-color: #ffffff; + color: #333333; +} + +.cu-chat .cu-item .date { + position: absolute; + font-size: 24upx; + color: #8799a3; + width: calc(100% - 320upx); + bottom: 20upx; + left: 160upx; +} + +.cu-chat .cu-item .action { + padding: 0 30upx; + display: flex; + align-items: center; +} + +.cu-chat .cu-item>.main .content::after { + content: ""; + top: 27upx; + transform: rotate(45deg); + position: absolute; + z-index: 100; + display: inline-block; + overflow: hidden; + width: 24upx; + height: 24upx; + left: -12upx; + right: initial; + background-color: inherit; +} + +.cu-chat .cu-item.self>.main .content::after { + left: auto; + right: -12upx; +} + +.cu-chat .cu-item>.main .content::before { + content: ""; + top: 30upx; + transform: rotate(45deg); + position: absolute; + z-index: -1; + display: inline-block; + overflow: hidden; + width: 24upx; + height: 24upx; + left: -12upx; + right: initial; + background-color: inherit; + filter: blur(5upx); + opacity: 0.3; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"])::before { + background-color: #333333; + opacity: 0.1; +} + +.cu-chat .cu-item.self>.main .content::before { + left: auto; + right: -12upx; +} + +.cu-chat .cu-item.self { + justify-content: flex-end; + text-align: right; +} + +.cu-chat .cu-info { + display: inline-block; + margin: 20upx auto; + font-size: 24upx; + padding: 8upx 12upx; + background-color: rgba(0, 0, 0, 0.2); + border-radius: 6upx; + color: #ffffff; + max-width: 400upx; + line-height: 1.4; +} + +/* ================== + 卡片 + ==================== */ + +.cu-card { + display: block; + overflow: hidden; +} + +.cu-card>.cu-item { + display: block; + background-color: #ffffff; + overflow: hidden; + border-radius: 10upx; + margin: 30upx; +} + +.cu-card>.cu-item.shadow-blur { + overflow: initial; +} + +.cu-card.no-card>.cu-item { + margin: 0upx; + border-radius: 0upx; +} + +.cu-card .grid.grid-square { + margin-bottom: -20upx; +} + +.cu-card.case .image { + position: relative; +} + +.cu-card.case .image image { + width: 100%; +} + +.cu-card.case .image .cu-tag { + position: absolute; + right: 0; + top: 0; +} + +.cu-card.case .image .cu-bar { + position: absolute; + bottom: 0; + width: 100%; + background-color: transparent; + padding: 0upx 30upx; +} + +.cu-card.case.no-card .image { + margin: 30upx 30upx 0; + overflow: hidden; + border-radius: 10upx; +} + +.cu-card.dynamic { + display: block; +} + +.cu-card.dynamic>.cu-item { + display: block; + background-color: #ffffff; + overflow: hidden; +} + +.cu-card.dynamic>.cu-item>.text-content { + padding: 0 30upx 0; + max-height: 6.4em; + overflow: hidden; + font-size: 30upx; + margin-bottom: 20upx; +} + +.cu-card.dynamic>.cu-item .square-img { + width: 100%; + height: 200upx; + border-radius: 6upx; +} + +.cu-card.dynamic>.cu-item .only-img { + width: 100%; + height: 320upx; + border-radius: 6upx; +} + +/* card.dynamic>.cu-item .comment { + padding: 20upx; + background-color: #f1f1f1; + margin: 0 30upx 30upx; + border-radius: 6upx; +} */ + +.cu-card.article { + display: block; +} + +.cu-card.article>.cu-item { + padding-bottom: 30upx; +} + +.cu-card.article>.cu-item .title { + font-size: 30upx; + font-weight: 900; + color: #333333; + line-height: 100upx; + padding: 0 30upx; +} + +.cu-card.article>.cu-item .content { + display: flex; + padding: 0 30upx; +} + +.cu-card.article>.cu-item .content>image { + width: 240upx; + height: 6.4em; + margin-right: 20upx; + border-radius: 6upx; +} + +.cu-card.article>.cu-item .content .desc { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.cu-card.article>.cu-item .content .text-content { + font-size: 28upx; + color: #888; + height: 4.8em; + overflow: hidden; +} + +/* ================== + 表单 + ==================== */ + +.cu-form-group { + background-color: #ffffff; + padding: 1upx 30upx; + display: flex; + align-items: center; + min-height: 100upx; + justify-content: space-between; +} + +.cu-form-group+.cu-form-group { + border-top: 1upx solid #eee; +} + +.cu-form-group .title { + text-align: justify; + padding-right: 30upx; + font-size: 30upx; + position: relative; + height: 60upx; + line-height: 60upx; +} + +.cu-form-group input { + flex: 1; + font-size: 30upx; + color: #555; + padding-right: 20upx; +} + +.cu-form-group>text[class*="cuIcon-"] { + font-size: 36upx; + padding: 0; + box-sizing: border-box; +} + +.cu-form-group textarea { + margin: 32upx 0 30upx; + height: 4.6em; + width: 100%; + line-height: 1.2em; + flex: 1; + font-size: 28upx; + padding: 0; +} + +.cu-form-group.align-start .title { + height: 1em; + margin-top: 32upx; + line-height: 1em; +} + +.cu-form-group picker { + flex: 1; + padding-right: 40upx; + overflow: hidden; + position: relative; +} + +.cu-form-group picker .picker { + line-height: 100upx; + font-size: 28upx; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 100%; + text-align: right; +} + +.cu-form-group picker::after { + font-family: cuIcon; + display: block; + content: "\e6a3"; + position: absolute; + font-size: 34upx; + color: #8799a3; + line-height: 100upx; + width: 60upx; + text-align: center; + top: 0; + bottom: 0; + right: -20upx; + margin: auto; +} + +.cu-form-group textarea[disabled], +.cu-form-group textarea[disabled] .placeholder { + color: transparent; +} + +/* ================== + 模态窗口 + ==================== */ + +.cu-modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1110; + opacity: 0; + outline: 0; + text-align: center; + -ms-transform: scale(1.185); + transform: scale(1.185); + backface-visibility: hidden; + perspective: 2000upx; + background: rgba(0, 0, 0, 0.6); + transition: all 0.3s ease-in-out 0s; + pointer-events: none; +} + +.cu-modal::before { + content: "\200B"; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.cu-modal.show { + opacity: 1; + transition-duration: 0.3s; + -ms-transform: scale(1); + transform: scale(1); + overflow-x: hidden; + overflow-y: auto; + pointer-events: auto; +} + +.cu-dialog { + position: relative; + display: inline-block; + vertical-align: middle; + margin-left: auto; + margin-right: auto; + width: 680upx; + max-width: 100%; + background-color: #f8f8f8; + border-radius: 10upx; + overflow: hidden; +} + +.cu-modal.bottom-modal::before { + vertical-align: bottom; +} + +.cu-modal.bottom-modal .cu-dialog { + width: 100%; + border-radius: 0; +} + +.cu-modal.bottom-modal { + margin-bottom: -1000upx; +} + +.cu-modal.bottom-modal.show { + margin-bottom: 0; +} + +.cu-modal.drawer-modal { + transform: scale(1); + display: flex; +} + +.cu-modal.drawer-modal .cu-dialog { + height: 100%; + min-width: 200upx; + border-radius: 0; + margin: initial; + transition-duration: 0.3s; +} + +.cu-modal.drawer-modal.justify-start .cu-dialog { + transform: translateX(-100%); +} + +.cu-modal.drawer-modal.justify-end .cu-dialog { + transform: translateX(100%); +} + +.cu-modal.drawer-modal.show .cu-dialog { + transform: translateX(0%); +} +.cu-modal .cu-dialog>.cu-bar:first-child .action{ + min-width: 100rpx; + margin-right: 0; + min-height: 100rpx; +} +/* ================== + 轮播 + ==================== */ +swiper .a-swiper-dot { + display: inline-block; + width: 16upx; + height: 16upx; + background: rgba(0, 0, 0, .3); + border-radius: 50%; + vertical-align: middle; +} + +swiper[class*="-dot"] .wx-swiper-dots, +swiper[class*="-dot"] .a-swiper-dots, +swiper[class*="-dot"] .uni-swiper-dots { + display: flex; + align-items: center; + width: 100%; + justify-content: center; +} + +swiper.square-dot .wx-swiper-dot, +swiper.square-dot .a-swiper-dot, +swiper.square-dot .uni-swiper-dot { + background-color: #ffffff; + opacity: 0.4; + width: 10upx; + height: 10upx; + border-radius: 20upx; + margin: 0 8upx !important; +} + +swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active, +swiper.square-dot .a-swiper-dot.a-swiper-dot-active, +swiper.square-dot .uni-swiper-dot.uni-swiper-dot-active { + opacity: 1; + width: 30upx; +} + +swiper.round-dot .wx-swiper-dot, +swiper.round-dot .a-swiper-dot, +swiper.round-dot .uni-swiper-dot { + width: 10upx; + height: 10upx; + position: relative; + margin: 4upx 8upx !important; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active::after, +swiper.round-dot .a-swiper-dot.a-swiper-dot-active::after, +swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active::after { + content: ""; + position: absolute; + width: 10upx; + height: 10upx; + top: 0upx; + left: 0upx; + right: 0; + bottom: 0; + margin: auto; + background-color: #ffffff; + border-radius: 20upx; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active, +swiper.round-dot .a-swiper-dot.a-swiper-dot-active, +swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active { + width: 18upx; + height: 18upx; +} + +.screen-swiper { + min-height: 375upx; +} + +.screen-swiper image, +.screen-swiper video, +.swiper-item image, +.swiper-item video { + width: 100%; + display: block; + height: 100%; + margin: 0; + pointer-events: none; +} + +.card-swiper { + height: 420upx !important; +} + +.card-swiper swiper-item { + width: 610upx !important; + left: 70upx; + box-sizing: border-box; + padding: 40upx 0upx 70upx; + overflow: initial; +} + +.card-swiper swiper-item .swiper-item { + width: 100%; + display: block; + height: 100%; + border-radius: 10upx; + transform: scale(0.9); + transition: all 0.2s ease-in 0s; + overflow: hidden; +} + +.card-swiper swiper-item.cur .swiper-item { + transform: none; + transition: all 0.2s ease-in 0s; +} + + +.tower-swiper { + height: 420upx; + position: relative; + max-width: 750upx; + overflow: hidden; +} + +.tower-swiper .tower-item { + position: absolute; + width: 300upx; + height: 380upx; + top: 0; + bottom: 0; + left: 50%; + margin: auto; + transition: all 0.2s ease-in 0s; + opacity: 1; +} + +.tower-swiper .tower-item.none { + opacity: 0; +} + +.tower-swiper .tower-item .swiper-item { + width: 100%; + height: 100%; + border-radius: 6upx; + overflow: hidden; +} + +/* ================== + 步骤条 + ==================== */ + +.cu-steps { + display: flex; +} + +scroll-view.cu-steps { + display: block; + white-space: nowrap; +} + +scroll-view.cu-steps .cu-item { + display: inline-block; +} + +.cu-steps .cu-item { + flex: 1; + text-align: center; + position: relative; + min-width: 100upx; +} + +.cu-steps .cu-item:not([class*="text-"]) { + color: #8799a3; +} + +.cu-steps .cu-item [class*="cuIcon-"], +.cu-steps .cu-item .num { + display: block; + font-size: 40upx; + line-height: 80upx; +} + +.cu-steps .cu-item::before, +.cu-steps .cu-item::after, +.cu-steps.steps-arrow .cu-item::before, +.cu-steps.steps-arrow .cu-item::after { + content: ""; + display: block; + position: absolute; + height: 0px; + width: calc(100% - 80upx); + border-bottom: 1px solid #ccc; + left: calc(0px - (100% - 80upx) / 2); + top: 40upx; + z-index: 0; +} + +.cu-steps.steps-arrow .cu-item::before, +.cu-steps.steps-arrow .cu-item::after { + content: "\e6a3"; + font-family: 'cuIcon'; + height: 30upx; + border-bottom-width: 0px; + line-height: 30upx; + top: 0; + bottom: 0; + margin: auto; + color: #ccc; +} + +.cu-steps.steps-bottom .cu-item::before, +.cu-steps.steps-bottom .cu-item::after { + bottom: 40upx; + top: initial; +} + +.cu-steps .cu-item::after { + border-bottom: 1px solid currentColor; + width: 0px; + transition: all 0.3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"]::after { + width: calc(100% - 80upx); + color: currentColor; +} + +.cu-steps .cu-item:first-child::before, +.cu-steps .cu-item:first-child::after { + display: none; +} + +.cu-steps .cu-item .num { + width: 40upx; + height: 40upx; + border-radius: 50%; + line-height: 40upx; + margin: 20upx auto; + font-size: 24upx; + border: 1px solid currentColor; + position: relative; + overflow: hidden; +} + +.cu-steps .cu-item[class*="text-"] .num { + background-color: currentColor; +} + +.cu-steps .cu-item .num::before, +.cu-steps .cu-item .num::after { + content: attr(data-index); + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + transition: all 0.3s ease-in-out 0s; + transform: translateY(0upx); +} + +.cu-steps .cu-item[class*="text-"] .num::before { + transform: translateY(-40upx); + color: #ffffff; +} + +.cu-steps .cu-item .num::after { + transform: translateY(40upx); + color: #ffffff; + transition: all 0.3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"] .num::after { + content: "\e645"; + font-family: 'cuIcon'; + color: #ffffff; + transform: translateY(0upx); +} + +.cu-steps .cu-item[class*="text-"] .num.err::after { + content: "\e646"; +} + +/* ================== + 布局 + ==================== */ + +/* -- flex弹性布局 -- */ + +.flex { + display: flex; +} + +.basis-xs { + flex-basis: 20%; +} + +.basis-sm { + flex-basis: 40%; +} + +.basis-df { + flex-basis: 50%; +} + +.basis-lg { + flex-basis: 60%; +} + +.basis-xl { + flex-basis: 80%; +} + +.flex-sub { + flex: 1; +} + +.flex-twice { + flex: 2; +} + +.flex-treble { + flex: 3; +} + +.flex-direction { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.align-stretch { + align-items: stretch; +} + +.self-start { + align-self: flex-start; +} + +.self-center { + align-self: flex-center; +} + +.self-end { + align-self: flex-end; +} + +.self-stretch { + align-self: stretch; +} + +.align-stretch { + align-items: stretch; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +/* grid布局 */ + +.grid { + display: flex; + flex-wrap: wrap; +} + +.grid.grid-square { + overflow: hidden; +} + +.grid.grid-square .cu-tag { + position: absolute; + right: 0; + top: 0; + border-bottom-left-radius: 6upx; + padding: 6upx 12upx; + height: auto; + background-color: rgba(0, 0, 0, 0.5); +} + +.grid.grid-square>view>text[class*="cuIcon-"] { + font-size: 52upx; + position: absolute; + color: #8799a3; + margin: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +.grid.grid-square>view { + margin-right: 20upx; + margin-bottom: 20upx; + border-radius: 6upx; + position: relative; + overflow: hidden; +} +.grid.grid-square>view.bg-img image { + width: 100%; + height: 100%; + position: absolute; +} +.grid.col-1.grid-square>view { + padding-bottom: 100%; + height: 0; + margin-right: 0; +} + +.grid.col-2.grid-square>view { + padding-bottom: calc((100% - 20upx)/2); + height: 0; + width: calc((100% - 20upx)/2); +} + +.grid.col-3.grid-square>view { + padding-bottom: calc((100% - 40upx)/3); + height: 0; + width: calc((100% - 40upx)/3); +} + +.grid.col-4.grid-square>view { + padding-bottom: calc((100% - 60upx)/4); + height: 0; + width: calc((100% - 60upx)/4); +} + +.grid.col-5.grid-square>view { + padding-bottom: calc((100% - 80upx)/5); + height: 0; + width: calc((100% - 80upx)/5); +} + +.grid.col-2.grid-square>view:nth-child(2n), +.grid.col-3.grid-square>view:nth-child(3n), +.grid.col-4.grid-square>view:nth-child(4n), +.grid.col-5.grid-square>view:nth-child(5n) { + margin-right: 0; +} + +.grid.col-1>view { + width: 100%; +} + +.grid.col-2>view { + width: 50%; +} + +.grid.col-3>view { + width: 33.33%; +} + +.grid.col-4>view { + width: 25%; +} + +.grid.col-5>view { + width: 20%; +} + +/* -- 内外边距 -- */ + +.margin-0 { + margin: 0; +} + +.margin-xs { + margin: 10upx; +} + +.margin-sm { + margin: 20upx; +} + +.margin { + margin: 30upx; +} + +.margin-lg { + margin: 40upx; +} + +.margin-xl { + margin: 50upx; +} + +.margin-top-xs { + margin-top: 10upx; +} + +.margin-top-sm { + margin-top: 20upx; +} + +.margin-top { + margin-top: 30upx; +} + +.margin-top-lg { + margin-top: 40upx; +} + +.margin-top-xl { + margin-top: 50upx; +} + +.margin-right-xs { + margin-right: 10upx; +} + +.margin-right-sm { + margin-right: 20upx; +} + +.margin-right { + margin-right: 30upx; +} + +.margin-right-lg { + margin-right: 40upx; +} + +.margin-right-xl { + margin-right: 50upx; +} + +.margin-bottom-xs { + margin-bottom: 10upx; +} + +.margin-bottom-sm { + margin-bottom: 20upx; +} + +.margin-bottom { + margin-bottom: 30upx; +} + +.margin-bottom-lg { + margin-bottom: 40upx; +} + +.margin-bottom-xl { + margin-bottom: 50upx; +} + +.margin-left-xs { + margin-left: 10upx; +} + +.margin-left-sm { + margin-left: 20upx; +} + +.margin-left { + margin-left: 30upx; +} + +.margin-left-lg { + margin-left: 40upx; +} + +.margin-left-xl { + margin-left: 50upx; +} + +.margin-lr-xs { + margin-left: 10upx; + margin-right: 10upx; +} + +.margin-lr-sm { + margin-left: 20upx; + margin-right: 20upx; +} + +.margin-lr { + margin-left: 30upx; + margin-right: 30upx; +} + +.margin-lr-lg { + margin-left: 40upx; + margin-right: 40upx; +} + +.margin-lr-xl { + margin-left: 50upx; + margin-right: 50upx; +} + +.margin-tb-xs { + margin-top: 10upx; + margin-bottom: 10upx; +} + +.margin-tb-sm { + margin-top: 20upx; + margin-bottom: 20upx; +} + +.margin-tb { + margin-top: 30upx; + margin-bottom: 30upx; +} + +.margin-tb-lg { + margin-top: 40upx; + margin-bottom: 40upx; +} + +.margin-tb-xl { + margin-top: 50upx; + margin-bottom: 50upx; +} + +.padding-0 { + padding: 0; +} + +.padding-xs { + padding: 10upx; +} + +.padding-sm { + padding: 20upx; +} + +.padding { + padding: 30upx; +} + +.padding-lg { + padding: 40upx; +} + +.padding-xl { + padding: 50upx; +} + +.padding-top-xs { + padding-top: 10upx; +} + +.padding-top-sm { + padding-top: 20upx; +} + +.padding-top { + padding-top: 30upx; +} + +.padding-top-lg { + padding-top: 40upx; +} + +.padding-top-xl { + padding-top: 50upx; +} + +.padding-right-xs { + padding-right: 10upx; +} + +.padding-right-sm { + padding-right: 20upx; +} + +.padding-right { + padding-right: 30upx; +} + +.padding-right-lg { + padding-right: 40upx; +} + +.padding-right-xl { + padding-right: 50upx; +} + +.padding-bottom-xs { + padding-bottom: 10upx; +} + +.padding-bottom-sm { + padding-bottom: 20upx; +} + +.padding-bottom { + padding-bottom: 30upx; +} + +.padding-bottom-lg { + padding-bottom: 40upx; +} + +.padding-bottom-xl { + padding-bottom: 50upx; +} + +.padding-left-xs { + padding-left: 10upx; +} + +.padding-left-sm { + padding-left: 20upx; +} + +.padding-left { + padding-left: 30upx; +} + +.padding-left-lg { + padding-left: 40upx; +} + +.padding-left-xl { + padding-left: 50upx; +} + +.padding-lr-xs { + padding-left: 10upx; + padding-right: 10upx; +} + +.padding-lr-sm { + padding-left: 20upx; + padding-right: 20upx; +} + +.padding-lr { + padding-left: 30upx; + padding-right: 30upx; +} + +.padding-lr-lg { + padding-left: 40upx; + padding-right: 40upx; +} + +.padding-lr-xl { + padding-left: 50upx; + padding-right: 50upx; +} + +.padding-tb-xs { + padding-top: 10upx; + padding-bottom: 10upx; +} + +.padding-tb-sm { + padding-top: 20upx; + padding-bottom: 20upx; +} + +.padding-tb { + padding-top: 30upx; + padding-bottom: 30upx; +} + +.padding-tb-lg { + padding-top: 40upx; + padding-bottom: 40upx; +} + +.padding-tb-xl { + padding-top: 50upx; + padding-bottom: 50upx; +} + +/* -- 浮动 -- */ + +.cf::after, +.cf::before { + content: " "; + display: table; +} + +.cf::after { + clear: both; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +/* ================== + 背景 + ==================== */ + +.line-red::after, +.lines-red::after { + border-color: #e54d42; +} + +.line-orange::after, +.lines-orange::after { + border-color: #f37b1d; +} + +.line-yellow::after, +.lines-yellow::after { + border-color: #fbbd08; +} + +.line-olive::after, +.lines-olive::after { + border-color: #8dc63f; +} + +.line-green::after, +.lines-green::after { + border-color: #39b54a; +} + +.line-cyan::after, +.lines-cyan::after { + border-color: #1cbbb4; +} + +.line-blue::after, +.lines-blue::after { + border-color: #0081ff; +} + +.line-purple::after, +.lines-purple::after { + border-color: #6739b6; +} + +.line-mauve::after, +.lines-mauve::after { + border-color: #9c26b0; +} + +.line-pink::after, +.lines-pink::after { + border-color: #e03997; +} + +.line-brown::after, +.lines-brown::after { + border-color: #a5673f; +} + +.line-grey::after, +.lines-grey::after { + border-color: #8799a3; +} + +.line-gray::after, +.lines-gray::after { + border-color: #aaaaaa; +} + +.line-black::after, +.lines-black::after { + border-color: #333333; +} + +.line-white::after, +.lines-white::after { + border-color: #ffffff; +} + +.bg-red { + background-color: #e54d42; + color: #ffffff; +} + +.bg-orange { + background-color: #f37b1d; + color: #ffffff; +} + +.bg-yellow { + background-color: #fbbd08; + color: #333333; +} + +.bg-olive { + background-color: #8dc63f; + color: #ffffff; +} + +.bg-green { + background-color: #39b54a; + color: #ffffff; +} + +.bg-cyan { + background-color: #1cbbb4; + color: #ffffff; +} + +.bg-blue { + background-color: #0081ff; + color: #ffffff; +} + +.bg-purple { + background-color: #6739b6; + color: #ffffff; +} + +.bg-mauve { + background-color: #9c26b0; + color: #ffffff; +} + +.bg-pink { + background-color: #e03997; + color: #ffffff; +} + +.bg-brown { + background-color: #a5673f; + color: #ffffff; +} + +.bg-grey { + background-color: #8799a3; + color: #ffffff; +} + +.bg-gray { + background-color: #f0f0f0; + color: #333333; +} + +.bg-black { + background-color: #333333; + color: #ffffff; +} + +.bg-white { + background-color: #ffffff; + color: #666666; +} + +.bg-shadeTop { + background-image: linear-gradient(rgba(0, 0, 0, 1), rgba(0, 0, 0, 0.01)); + color: #ffffff; +} + +.bg-shadeBottom { + background-image: linear-gradient(rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 1)); + color: #ffffff; +} + +.bg-red.light { + color: #e54d42; + background-color: #fadbd9; +} + +.bg-orange.light { + color: #f37b1d; + background-color: #fde6d2; +} + +.bg-yellow.light { + color: #fbbd08; + background-color: #fef2ced2; +} + +.bg-olive.light { + color: #8dc63f; + background-color: #e8f4d9; +} + +.bg-green.light { + color: #39b54a; + background-color: #d7f0dbff; +} + +.bg-cyan.light { + color: #1cbbb4; + background-color: #d2f1f0; +} + +.bg-blue.light { + color: #0081ff; + background-color: #cce6ff; +} + +.bg-purple.light { + color: #6739b6; + background-color: #e1d7f0; +} + +.bg-mauve.light { + color: #9c26b0; + background-color: #ebd4ef; +} + +.bg-pink.light { + color: #e03997; + background-color: #f9d7ea; +} + +.bg-brown.light { + color: #a5673f; + background-color: #ede1d9; +} + +.bg-grey.light { + color: #8799a3; + background-color: #e7ebed; +} + +.bg-gradual-red { + background-image: linear-gradient(45deg, #f43f3b, #ec008c); + color: #ffffff; +} + +.bg-gradual-orange { + background-image: linear-gradient(45deg, #ff9700, #ed1c24); + color: #ffffff; +} + +.bg-gradual-green { + background-image: linear-gradient(45deg, #39b54a, #8dc63f); + color: #ffffff; +} + +.bg-gradual-purple { + background-image: linear-gradient(45deg, #9000ff, #5e00ff); + color: #ffffff; +} + +.bg-gradual-pink { + background-image: linear-gradient(45deg, #ec008c, #6739b6); + color: #ffffff; +} + +.bg-gradual-blue { + background-image: linear-gradient(45deg, #0081ff, #1cbbb4); + color: #ffffff; +} + +.shadow[class*="-red"] { + box-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2); +} + +.shadow[class*="-orange"] { + box-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2); +} + +.shadow[class*="-yellow"] { + box-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2); +} + +.shadow[class*="-olive"] { + box-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2); +} + +.shadow[class*="-green"] { + box-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2); +} + +.shadow[class*="-cyan"] { + box-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2); +} + +.shadow[class*="-blue"] { + box-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2); +} + +.shadow[class*="-purple"] { + box-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2); +} + +.shadow[class*="-mauve"] { + box-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2); +} + +.shadow[class*="-pink"] { + box-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2); +} + +.shadow[class*="-brown"] { + box-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2); +} + +.shadow[class*="-grey"] { + box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.shadow[class*="-gray"] { + box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.shadow[class*="-black"] { + box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.shadow[class*="-white"] { + box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.text-shadow[class*="-red"] { + text-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2); +} + +.text-shadow[class*="-orange"] { + text-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2); +} + +.text-shadow[class*="-yellow"] { + text-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2); +} + +.text-shadow[class*="-olive"] { + text-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2); +} + +.text-shadow[class*="-green"] { + text-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2); +} + +.text-shadow[class*="-cyan"] { + text-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2); +} + +.text-shadow[class*="-blue"] { + text-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2); +} + +.text-shadow[class*="-purple"] { + text-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2); +} + +.text-shadow[class*="-mauve"] { + text-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2); +} + +.text-shadow[class*="-pink"] { + text-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2); +} + +.text-shadow[class*="-brown"] { + text-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2); +} + +.text-shadow[class*="-grey"] { + text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.text-shadow[class*="-gray"] { + text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.text-shadow[class*="-black"] { + text-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.bg-img { + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} + +.bg-mask { + background-color: #333333; + position: relative; +} + +.bg-mask::after { + content: ""; + border-radius: inherit; + width: 100%; + height: 100%; + display: block; + background-color: rgba(0, 0, 0, 0.4); + position: absolute; + left: 0; + right: 0; + bottom: 0; + top: 0; +} + +.bg-mask view, +.bg-mask cover-view { + z-index: 5; + position: relative; +} + +.bg-video { + position: relative; +} + +.bg-video video { + display: block; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; + position: absolute; + top: 0; + z-index: 0; + pointer-events: none; +} + +/* ================== + 文本 + ==================== */ + +.text-xs { + font-size: 20upx; +} + +.text-sm { + font-size: 24upx; +} + +.text-df { + font-size: 28upx; +} + +.text-lg { + font-size: 32upx; +} + +.text-xl { + font-size: 36upx; +} + +.text-xxl { + font-size: 44upx; +} + +.text-sl { + font-size: 80upx; +} + +.text-xsl { + font-size: 120upx; +} + +.text-Abc { + text-transform: Capitalize; +} + +.text-ABC { + text-transform: Uppercase; +} + +.text-abc { + text-transform: Lowercase; +} + +.text-price::before { + content: "¥"; + font-size: 80%; + margin-right: 4upx; +} + +.text-cut { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.text-bold { + font-weight: bold; +} + +.text-center { + text-align: center; +} + +.text-content { + line-height: 1.6; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-red, +.line-red, +.lines-red { + color: #e54d42; +} + +.text-orange, +.line-orange, +.lines-orange { + color: #f37b1d; +} + +.text-yellow, +.line-yellow, +.lines-yellow { + color: #fbbd08; +} + +.text-olive, +.line-olive, +.lines-olive { + color: #8dc63f; +} + +.text-green, +.line-green, +.lines-green { + color: #39b54a; +} + +.text-cyan, +.line-cyan, +.lines-cyan { + color: #1cbbb4; +} + +.text-blue, +.line-blue, +.lines-blue { + color: #0081ff; +} + +.text-purple, +.line-purple, +.lines-purple { + color: #6739b6; +} + +.text-mauve, +.line-mauve, +.lines-mauve { + color: #9c26b0; +} + +.text-pink, +.line-pink, +.lines-pink { + color: #e03997; +} + +.text-brown, +.line-brown, +.lines-brown { + color: #a5673f; +} + +.text-grey, +.line-grey, +.lines-grey { + color: #8799a3; +} + +.text-gray, +.line-gray, +.lines-gray { + color: #aaaaaa; +} + +.text-black, +.line-black, +.lines-black { + color: #333333; +} + +.text-white, +.line-white, +.lines-white { + color: #ffffff; +} + +/* ================== + icon 初始化 + ==================== */ + @keyframes cuIcon-spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } + } + + .cuIconfont-spin { + -webkit-animation: cuIcon-spin 2s infinite linear; + animation: cuIcon-spin 2s infinite linear; + display: inline-block; + } + + .cuIconfont-pulse { + -webkit-animation: cuIcon-spin 1s infinite steps(8); + animation: cuIcon-spin 1s infinite steps(8); + display: inline-block; + } + + [class*="cuIcon-"] { + font-family: "cuIcon"; + font-size: inherit; + font-style: normal; + } + + @font-face { + font-family: "cuIcon"; + src: url('//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831'); + /* IE9*/ + src: url('//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831#iefix') format('embedded-opentype'), + /* IE6-IE8 */ + url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), + url('//at.alicdn.com/t/font_533566_yfq2d9wdij.ttf?t=1545239985831') format('truetype'), + /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('//at.alicdn.com/t/font_533566_yfq2d9wdij.svg?t=1545239985831#cuIconfont') format('svg'); + /* iOS 4.1- */ + } + + .cuIcon-appreciate:before { + content: "\e644"; + } + + .cuIcon-check:before { + content: "\e645"; + } + + .cuIcon-close:before { + content: "\e646"; + } + + .cuIcon-edit:before { + content: "\e649"; + } + + .cuIcon-emoji:before { + content: "\e64a"; + } + + .cuIcon-favorfill:before { + content: "\e64b"; + } + + .cuIcon-favor:before { + content: "\e64c"; + } + + .cuIcon-loading:before { + content: "\e64f"; + } + + .cuIcon-locationfill:before { + content: "\e650"; + } + + .cuIcon-location:before { + content: "\e651"; + } + + .cuIcon-phone:before { + content: "\e652"; + } + + .cuIcon-roundcheckfill:before { + content: "\e656"; + } + + .cuIcon-roundcheck:before { + content: "\e657"; + } + + .cuIcon-roundclosefill:before { + content: "\e658"; + } + + .cuIcon-roundclose:before { + content: "\e659"; + } + + .cuIcon-roundrightfill:before { + content: "\e65a"; + } + + .cuIcon-roundright:before { + content: "\e65b"; + } + + .cuIcon-search:before { + content: "\e65c"; + } + + .cuIcon-taxi:before { + content: "\e65d"; + } + + .cuIcon-timefill:before { + content: "\e65e"; + } + + .cuIcon-time:before { + content: "\e65f"; + } + + .cuIcon-unfold:before { + content: "\e661"; + } + + .cuIcon-warnfill:before { + content: "\e662"; + } + + .cuIcon-warn:before { + content: "\e663"; + } + + .cuIcon-camerafill:before { + content: "\e664"; + } + + .cuIcon-camera:before { + content: "\e665"; + } + + .cuIcon-commentfill:before { + content: "\e666"; + } + + .cuIcon-comment:before { + content: "\e667"; + } + + .cuIcon-likefill:before { + content: "\e668"; + } + + .cuIcon-like:before { + content: "\e669"; + } + + .cuIcon-notificationfill:before { + content: "\e66a"; + } + + .cuIcon-notification:before { + content: "\e66b"; + } + + .cuIcon-order:before { + content: "\e66c"; + } + + .cuIcon-samefill:before { + content: "\e66d"; + } + + .cuIcon-same:before { + content: "\e66e"; + } + + .cuIcon-deliver:before { + content: "\e671"; + } + + .cuIcon-evaluate:before { + content: "\e672"; + } + + .cuIcon-pay:before { + content: "\e673"; + } + + .cuIcon-send:before { + content: "\e675"; + } + + .cuIcon-shop:before { + content: "\e676"; + } + + .cuIcon-ticket:before { + content: "\e677"; + } + + .cuIcon-back:before { + content: "\e679"; + } + + .cuIcon-cascades:before { + content: "\e67c"; + } + + .cuIcon-discover:before { + content: "\e67e"; + } + + .cuIcon-list:before { + content: "\e682"; + } + + .cuIcon-more:before { + content: "\e684"; + } + + .cuIcon-scan:before { + content: "\e689"; + } + + .cuIcon-settings:before { + content: "\e68a"; + } + + .cuIcon-questionfill:before { + content: "\e690"; + } + + .cuIcon-question:before { + content: "\e691"; + } + + .cuIcon-shopfill:before { + content: "\e697"; + } + + .cuIcon-form:before { + content: "\e699"; + } + + .cuIcon-pic:before { + content: "\e69b"; + } + + .cuIcon-filter:before { + content: "\e69c"; + } + + .cuIcon-footprint:before { + content: "\e69d"; + } + + .cuIcon-top:before { + content: "\e69e"; + } + + .cuIcon-pulldown:before { + content: "\e69f"; + } + + .cuIcon-pullup:before { + content: "\e6a0"; + } + + .cuIcon-right:before { + content: "\e6a3"; + } + + .cuIcon-refresh:before { + content: "\e6a4"; + } + + .cuIcon-moreandroid:before { + content: "\e6a5"; + } + + .cuIcon-deletefill:before { + content: "\e6a6"; + } + + .cuIcon-refund:before { + content: "\e6ac"; + } + + .cuIcon-cart:before { + content: "\e6af"; + } + + .cuIcon-qrcode:before { + content: "\e6b0"; + } + + .cuIcon-remind:before { + content: "\e6b2"; + } + + .cuIcon-delete:before { + content: "\e6b4"; + } + + .cuIcon-profile:before { + content: "\e6b7"; + } + + .cuIcon-home:before { + content: "\e6b8"; + } + + .cuIcon-cartfill:before { + content: "\e6b9"; + } + + .cuIcon-discoverfill:before { + content: "\e6ba"; + } + + .cuIcon-homefill:before { + content: "\e6bb"; + } + + .cuIcon-message:before { + content: "\e6bc"; + } + + .cuIcon-addressbook:before { + content: "\e6bd"; + } + + .cuIcon-link:before { + content: "\e6bf"; + } + + .cuIcon-lock:before { + content: "\e6c0"; + } + + .cuIcon-unlock:before { + content: "\e6c2"; + } + + .cuIcon-vip:before { + content: "\e6c3"; + } + + .cuIcon-weibo:before { + content: "\e6c4"; + } + + .cuIcon-activity:before { + content: "\e6c5"; + } + + .cuIcon-friendaddfill:before { + content: "\e6c9"; + } + + .cuIcon-friendadd:before { + content: "\e6ca"; + } + + .cuIcon-friendfamous:before { + content: "\e6cb"; + } + + .cuIcon-friend:before { + content: "\e6cc"; + } + + .cuIcon-goods:before { + content: "\e6cd"; + } + + .cuIcon-selection:before { + content: "\e6ce"; + } + + .cuIcon-explore:before { + content: "\e6d2"; + } + + .cuIcon-present:before { + content: "\e6d3"; + } + + .cuIcon-squarecheckfill:before { + content: "\e6d4"; + } + + .cuIcon-square:before { + content: "\e6d5"; + } + + .cuIcon-squarecheck:before { + content: "\e6d6"; + } + + .cuIcon-round:before { + content: "\e6d7"; + } + + .cuIcon-roundaddfill:before { + content: "\e6d8"; + } + + .cuIcon-roundadd:before { + content: "\e6d9"; + } + + .cuIcon-add:before { + content: "\e6da"; + } + + .cuIcon-notificationforbidfill:before { + content: "\e6db"; + } + + .cuIcon-explorefill:before { + content: "\e6dd"; + } + + .cuIcon-fold:before { + content: "\e6de"; + } + + .cuIcon-game:before { + content: "\e6df"; + } + + .cuIcon-redpacket:before { + content: "\e6e0"; + } + + .cuIcon-selectionfill:before { + content: "\e6e1"; + } + + .cuIcon-similar:before { + content: "\e6e2"; + } + + .cuIcon-appreciatefill:before { + content: "\e6e3"; + } + + .cuIcon-infofill:before { + content: "\e6e4"; + } + + .cuIcon-info:before { + content: "\e6e5"; + } + + .cuIcon-forwardfill:before { + content: "\e6ea"; + } + + .cuIcon-forward:before { + content: "\e6eb"; + } + + .cuIcon-rechargefill:before { + content: "\e6ec"; + } + + .cuIcon-recharge:before { + content: "\e6ed"; + } + + .cuIcon-vipcard:before { + content: "\e6ee"; + } + + .cuIcon-voice:before { + content: "\e6ef"; + } + + .cuIcon-voicefill:before { + content: "\e6f0"; + } + + .cuIcon-friendfavor:before { + content: "\e6f1"; + } + + .cuIcon-wifi:before { + content: "\e6f2"; + } + + .cuIcon-share:before { + content: "\e6f3"; + } + + .cuIcon-wefill:before { + content: "\e6f4"; + } + + .cuIcon-we:before { + content: "\e6f5"; + } + + .cuIcon-lightauto:before { + content: "\e6f6"; + } + + .cuIcon-lightforbid:before { + content: "\e6f7"; + } + + .cuIcon-lightfill:before { + content: "\e6f8"; + } + + .cuIcon-camerarotate:before { + content: "\e6f9"; + } + + .cuIcon-light:before { + content: "\e6fa"; + } + + .cuIcon-barcode:before { + content: "\e6fb"; + } + + .cuIcon-flashlightclose:before { + content: "\e6fc"; + } + + .cuIcon-flashlightopen:before { + content: "\e6fd"; + } + + .cuIcon-searchlist:before { + content: "\e6fe"; + } + + .cuIcon-service:before { + content: "\e6ff"; + } + + .cuIcon-sort:before { + content: "\e700"; + } + + .cuIcon-down:before { + content: "\e703"; + } + + .cuIcon-mobile:before { + content: "\e704"; + } + + .cuIcon-mobilefill:before { + content: "\e705"; + } + + .cuIcon-copy:before { + content: "\e706"; + } + + .cuIcon-countdownfill:before { + content: "\e707"; + } + + .cuIcon-countdown:before { + content: "\e708"; + } + + .cuIcon-noticefill:before { + content: "\e709"; + } + + .cuIcon-notice:before { + content: "\e70a"; + } + + .cuIcon-upstagefill:before { + content: "\e70e"; + } + + .cuIcon-upstage:before { + content: "\e70f"; + } + + .cuIcon-babyfill:before { + content: "\e710"; + } + + .cuIcon-baby:before { + content: "\e711"; + } + + .cuIcon-brandfill:before { + content: "\e712"; + } + + .cuIcon-brand:before { + content: "\e713"; + } + + .cuIcon-choicenessfill:before { + content: "\e714"; + } + + .cuIcon-choiceness:before { + content: "\e715"; + } + + .cuIcon-clothesfill:before { + content: "\e716"; + } + + .cuIcon-clothes:before { + content: "\e717"; + } + + .cuIcon-creativefill:before { + content: "\e718"; + } + + .cuIcon-creative:before { + content: "\e719"; + } + + .cuIcon-female:before { + content: "\e71a"; + } + + .cuIcon-keyboard:before { + content: "\e71b"; + } + + .cuIcon-male:before { + content: "\e71c"; + } + + .cuIcon-newfill:before { + content: "\e71d"; + } + + .cuIcon-new:before { + content: "\e71e"; + } + + .cuIcon-pullleft:before { + content: "\e71f"; + } + + .cuIcon-pullright:before { + content: "\e720"; + } + + .cuIcon-rankfill:before { + content: "\e721"; + } + + .cuIcon-rank:before { + content: "\e722"; + } + + .cuIcon-bad:before { + content: "\e723"; + } + + .cuIcon-cameraadd:before { + content: "\e724"; + } + + .cuIcon-focus:before { + content: "\e725"; + } + + .cuIcon-friendfill:before { + content: "\e726"; + } + + .cuIcon-cameraaddfill:before { + content: "\e727"; + } + + .cuIcon-apps:before { + content: "\e729"; + } + + .cuIcon-paintfill:before { + content: "\e72a"; + } + + .cuIcon-paint:before { + content: "\e72b"; + } + + .cuIcon-picfill:before { + content: "\e72c"; + } + + .cuIcon-refresharrow:before { + content: "\e72d"; + } + + .cuIcon-colorlens:before { + content: "\e6e6"; + } + + .cuIcon-markfill:before { + content: "\e730"; + } + + .cuIcon-mark:before { + content: "\e731"; + } + + .cuIcon-presentfill:before { + content: "\e732"; + } + + .cuIcon-repeal:before { + content: "\e733"; + } + + .cuIcon-album:before { + content: "\e734"; + } + + .cuIcon-peoplefill:before { + content: "\e735"; + } + + .cuIcon-people:before { + content: "\e736"; + } + + .cuIcon-servicefill:before { + content: "\e737"; + } + + .cuIcon-repair:before { + content: "\e738"; + } + + .cuIcon-file:before { + content: "\e739"; + } + + .cuIcon-repairfill:before { + content: "\e73a"; + } + + .cuIcon-taoxiaopu:before { + content: "\e73b"; + } + + .cuIcon-weixin:before { + content: "\e612"; + } + + .cuIcon-attentionfill:before { + content: "\e73c"; + } + + .cuIcon-attention:before { + content: "\e73d"; + } + + .cuIcon-commandfill:before { + content: "\e73e"; + } + + .cuIcon-command:before { + content: "\e73f"; + } + + .cuIcon-communityfill:before { + content: "\e740"; + } + + .cuIcon-community:before { + content: "\e741"; + } + + .cuIcon-read:before { + content: "\e742"; + } + + .cuIcon-calendar:before { + content: "\e74a"; + } + + .cuIcon-cut:before { + content: "\e74b"; + } + + .cuIcon-magic:before { + content: "\e74c"; + } + + .cuIcon-backwardfill:before { + content: "\e74d"; + } + + .cuIcon-playfill:before { + content: "\e74f"; + } + + .cuIcon-stop:before { + content: "\e750"; + } + + .cuIcon-tagfill:before { + content: "\e751"; + } + + .cuIcon-tag:before { + content: "\e752"; + } + + .cuIcon-group:before { + content: "\e753"; + } + + .cuIcon-all:before { + content: "\e755"; + } + + .cuIcon-backdelete:before { + content: "\e756"; + } + + .cuIcon-hotfill:before { + content: "\e757"; + } + + .cuIcon-hot:before { + content: "\e758"; + } + + .cuIcon-post:before { + content: "\e759"; + } + + .cuIcon-radiobox:before { + content: "\e75b"; + } + + .cuIcon-rounddown:before { + content: "\e75c"; + } + + .cuIcon-upload:before { + content: "\e75d"; + } + + .cuIcon-writefill:before { + content: "\e760"; + } + + .cuIcon-write:before { + content: "\e761"; + } + + .cuIcon-radioboxfill:before { + content: "\e763"; + } + + .cuIcon-punch:before { + content: "\e764"; + } + + .cuIcon-shake:before { + content: "\e765"; + } + + .cuIcon-move:before { + content: "\e768"; + } + + .cuIcon-safe:before { + content: "\e769"; + } + + .cuIcon-activityfill:before { + content: "\e775"; + } + + .cuIcon-crownfill:before { + content: "\e776"; + } + + .cuIcon-crown:before { + content: "\e777"; + } + + .cuIcon-goodsfill:before { + content: "\e778"; + } + + .cuIcon-messagefill:before { + content: "\e779"; + } + + .cuIcon-profilefill:before { + content: "\e77a"; + } + + .cuIcon-sound:before { + content: "\e77b"; + } + + .cuIcon-sponsorfill:before { + content: "\e77c"; + } + + .cuIcon-sponsor:before { + content: "\e77d"; + } + + .cuIcon-upblock:before { + content: "\e77e"; + } + + .cuIcon-weblock:before { + content: "\e77f"; + } + + .cuIcon-weunblock:before { + content: "\e780"; + } + + .cuIcon-my:before { + content: "\e78b"; + } + + .cuIcon-myfill:before { + content: "\e78c"; + } + + .cuIcon-emojifill:before { + content: "\e78d"; + } + + .cuIcon-emojiflashfill:before { + content: "\e78e"; + } + + .cuIcon-flashbuyfill:before { + content: "\e78f"; + } + + .cuIcon-text:before { + content: "\e791"; + } + + .cuIcon-goodsfavor:before { + content: "\e794"; + } + + .cuIcon-musicfill:before { + content: "\e795"; + } + + .cuIcon-musicforbidfill:before { + content: "\e796"; + } + + .cuIcon-card:before { + content: "\e624"; + } + + .cuIcon-triangledownfill:before { + content: "\e79b"; + } + + .cuIcon-triangleupfill:before { + content: "\e79c"; + } + + .cuIcon-roundleftfill-copy:before { + content: "\e79e"; + } + + .cuIcon-font:before { + content: "\e76a"; + } + + .cuIcon-title:before { + content: "\e82f"; + } + + .cuIcon-recordfill:before { + content: "\e7a4"; + } + + .cuIcon-record:before { + content: "\e7a6"; + } + + .cuIcon-cardboardfill:before { + content: "\e7a9"; + } + + .cuIcon-cardboard:before { + content: "\e7aa"; + } + + .cuIcon-formfill:before { + content: "\e7ab"; + } + + .cuIcon-coin:before { + content: "\e7ac"; + } + + .cuIcon-cardboardforbid:before { + content: "\e7af"; + } + + .cuIcon-circlefill:before { + content: "\e7b0"; + } + + .cuIcon-circle:before { + content: "\e7b1"; + } + + .cuIcon-attentionforbid:before { + content: "\e7b2"; + } + + .cuIcon-attentionforbidfill:before { + content: "\e7b3"; + } + + .cuIcon-attentionfavorfill:before { + content: "\e7b4"; + } + + .cuIcon-attentionfavor:before { + content: "\e7b5"; + } + + .cuIcon-titles:before { + content: "\e701"; + } + + .cuIcon-icloading:before { + content: "\e67a"; + } + + .cuIcon-full:before { + content: "\e7bc"; + } + + .cuIcon-mail:before { + content: "\e7bd"; + } + + .cuIcon-peoplelist:before { + content: "\e7be"; + } + + .cuIcon-goodsnewfill:before { + content: "\e7bf"; + } + + .cuIcon-goodsnew:before { + content: "\e7c0"; + } + + .cuIcon-medalfill:before { + content: "\e7c1"; + } + + .cuIcon-medal:before { + content: "\e7c2"; + } + + .cuIcon-newsfill:before { + content: "\e7c3"; + } + + .cuIcon-newshotfill:before { + content: "\e7c4"; + } + + .cuIcon-newshot:before { + content: "\e7c5"; + } + + .cuIcon-news:before { + content: "\e7c6"; + } + + .cuIcon-videofill:before { + content: "\e7c7"; + } + + .cuIcon-video:before { + content: "\e7c8"; + } + + .cuIcon-exit:before { + content: "\e7cb"; + } + + .cuIcon-skinfill:before { + content: "\e7cc"; + } + + .cuIcon-skin:before { + content: "\e7cd"; + } + + .cuIcon-moneybagfill:before { + content: "\e7ce"; + } + + .cuIcon-usefullfill:before { + content: "\e7cf"; + } + + .cuIcon-usefull:before { + content: "\e7d0"; + } + + .cuIcon-moneybag:before { + content: "\e7d1"; + } + + .cuIcon-redpacket_fill:before { + content: "\e7d3"; + } + + .cuIcon-subscription:before { + content: "\e7d4"; + } + + .cuIcon-loading1:before { + content: "\e633"; + } + + .cuIcon-github:before { + content: "\e692"; + } + + .cuIcon-global:before { + content: "\e7eb"; + } + + .cuIcon-settingsfill:before { + content: "\e6ab"; + } + + .cuIcon-back_android:before { + content: "\e7ed"; + } + + .cuIcon-expressman:before { + content: "\e7ef"; + } + + .cuIcon-evaluate_fill:before { + content: "\e7f0"; + } + + .cuIcon-group_fill:before { + content: "\e7f5"; + } + + .cuIcon-play_forward_fill:before { + content: "\e7f6"; + } + + .cuIcon-deliver_fill:before { + content: "\e7f7"; + } + + .cuIcon-notice_forbid_fill:before { + content: "\e7f8"; + } + + .cuIcon-fork:before { + content: "\e60c"; + } + + .cuIcon-pick:before { + content: "\e7fa"; + } + + .cuIcon-wenzi:before { + content: "\e6a7"; + } + + .cuIcon-ellipse:before { + content: "\e600"; + } + + .cuIcon-qr_code:before { + content: "\e61b"; + } + + .cuIcon-dianhua:before { + content: "\e64d"; + } + + .cuIcon-cuIcon:before { + content: "\e602"; + } + + .cuIcon-loading2:before { + content: "\e7f1"; + } + + .cuIcon-btn:before { + content: "\e601"; + } diff --git a/static/scss/global.scss b/static/scss/global.scss new file mode 100644 index 0000000..ac636bd --- /dev/null +++ b/static/scss/global.scss @@ -0,0 +1,90 @@ +.text-center { + text-align: center; +} + +.font-13 { + font-size: 13px; +} + +.font-12 { + font-size: 12px; +} + +.font-11 { + font-size: 11px; +} + +.text-grey1 { + color: #888; +} +.text-grey2 { + color: #aaa; +} + +.list-cell-arrow::before { + content: ' '; + height: 10px; + width: 10px; + border-width: 2px 2px 0 0; + border-color: #c0c0c0; + border-style: solid; + -webkit-transform: matrix(0.5, 0.5, -0.5, 0.5, 0, 0); + transform: matrix(0.5, 0.5, -0.5, 0.5, 0, 0); + position: absolute; + top: 50%; + margin-top: -6px; + right: 30rpx; + } + + .list-cell { + position: relative; + width: 100%; + box-sizing: border-box; + background-color: #fff; + color: #333; + padding: 26rpx 30rpx; + } + + .list-cell:first-child { + border-radius: 8rpx 8rpx 0 0; + } + + .list-cell:last-child { + border-radius: 0 0 8rpx 8rpx; + } + + .list-cell::after { + content: ''; + position: absolute; + border-bottom: 1px solid #eaeef1; + -webkit-transform: scaleY(0.5) translateZ(0); + transform: scaleY(0.5) translateZ(0); + transform-origin: 0 100%; + bottom: 0; + right: 0; + left: 0; + pointer-events: none; + } + + + .menu-list { + margin: 15px 15px; + + .menu-item-box { + width: 100%; + display: flex; + align-items: center; + + .menu-icon { + color: #007AFF; + font-size: 16px; + margin-right: 5px; + } + + .text-right { + margin-left: auto; + margin-right: 34rpx; + color: #999; + } + } + } diff --git a/static/scss/index.scss b/static/scss/index.scss new file mode 100644 index 0000000..745cffa --- /dev/null +++ b/static/scss/index.scss @@ -0,0 +1,6 @@ +// global +@import "./global.scss"; +// color-ui +@import "@/static/scss/colorui.css"; +// iconfont +@import "@/static/font/iconfont.css"; \ No newline at end of file diff --git a/static/zhongcai.png b/static/zhongcai.png deleted file mode 100644 index 1dee5bdae1739e2b1b3ad6a07614e5d0494f3323..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359959 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
)ZGV1lBsoza>2z0@x$*r~YP1B= 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�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≦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 state.user.token, + avatar: state => state.user.avatar, + name: state => state.user.name, + roles: state => state.user.roles, + permissions: state => state.user.permissions +} +export default getters diff --git a/store/index.js b/store/index.js index 34bc8ed..83a9db5 100644 --- a/store/index.js +++ b/store/index.js @@ -1,37 +1,15 @@ -import Vue from "vue" +import Vue from 'vue' import Vuex from 'vuex' -import createPersistedState from 'vuex-persistedstate' +import user from '@/store/modules/user' +import getters from './getters' -// 导入仓库模块 -import login from './modules/login.js' -import devList from './modules/devList.js' -import area from './modules/area.js' -import auth from './modules/auth.js' -import search from './modules/search.js' -import message from './modules/message.js' -import loginUserInfo from './modules/userInfoApp.js' - -// 数据持久化 -const vuexPersisted = new createPersistedState({ - storage: { - getItem: key => uni.getStorageSync(key), - setItem: (key, value) => uni.setStorageSync(key, value), - removeItem: key => uni.clearStorageSync(key) - } -}) - -// 使用 vuex Vue.use(Vuex) -export default new Vuex.Store({ - plugins:[vuexPersisted], - modules:{ - login, - devList, - area, - auth, - search, - message, - loginUserInfo - } -}) \ No newline at end of file +const store = new Vuex.Store({ + modules: { + user + }, + getters +}) + +export default store diff --git a/store/modules/area.js b/store/modules/area.js deleted file mode 100644 index 3f6dfaa..0000000 --- a/store/modules/area.js +++ /dev/null @@ -1,41 +0,0 @@ -// 地区信息仓库 -export default { - state: { - area:{}, - }, - getters: { - // 获取国家id - getCountry(state){ - return state.area.countryid - }, - // 获取地区id - getAreaId(state){ - return state.area.areaid - } - }, - mutations: { - // 设置area信息 - 'SETAREA':function(state, payload){ - state.area = payload - }, - // 设置国家id - 'SETCOUNTRYID':function(state, payload){ - state.countryid = payload - }, - // 清除area信息 - 'CLEARAREA':function(state){ - state.area = {} - }, - }, - actions: { - setArea({ commit },payload){ - commit('SETAREA',payload) - }, - setCountryid({ commit },payload){ - commit('SETCOUNTRYID',payload) - }, - clearArea({ commit }){ - commit('CLEARAREA') - }, - } -} \ No newline at end of file diff --git a/store/modules/auth.js b/store/modules/auth.js deleted file mode 100644 index a819598..0000000 --- a/store/modules/auth.js +++ /dev/null @@ -1,71 +0,0 @@ -// 权限信息仓库 -export default { - state: { - authList:[], - menuArr:[] //菜单 - }, - getters: { - // 检查菜单是否存在 - getAuth:(state) => { - return function (key) { - let arr = state.authList.filter(item => item.name == key) - return arr.length == 0 ? false : true - } - }, - // 返回菜单名 - getAuthName:(state) => { - return function (key) { - let arr = state.authList.filter(item => item.name == key) - return arr.length == 0 ? '' : arr[0].label - } - }, - // 返回用户是否拥有该按钮权限 - getOperation(state){ - return function(key){ - let curRoute = '/' + this.$mp.page.route; - let arr = state.authList.filter(item => (curRoute.indexOf(item.name) != -1 || item.name.indexOf(curRoute) != -1)) - let operation = arr[0] ? arr[0].operation : [] - return operation.indexOf(key) > -1 ? true : false - } - }, - // 获取菜单 - getMenu(state){ - return function(key){ - let arr = state.menuArr.filter(item => item.url == key) - return arr.length ? arr[0].children : [] - } - } - }, - mutations: { - // 设置权限信息 - 'SETAUTH':function(state, payload){ - state.authList = payload - }, - // 清除权限信息 - 'CLEARAUTH':function(state){ - state.authList = [] - }, - // 设置菜单信息 - 'SETMENU':function(state, payload){ - state.menuArr = payload - }, - // 清除菜单信息 - 'CLEARMENU':function(state){ - state.menuArr = [] - }, - }, - actions: { - setAuth({ commit },payload){ - commit('SETAUTH',payload) - }, - clearAuth({ commit }){ - commit('CLEARAUTH') - }, - setMenu({ commit },payload){ - commit('SETMENU',payload) - }, - clearMenu({ commit }){ - commit('CLEARMENU') - } - } -} \ No newline at end of file diff --git a/store/modules/devList.js b/store/modules/devList.js deleted file mode 100644 index 9a30b5c..0000000 --- a/store/modules/devList.js +++ /dev/null @@ -1,31 +0,0 @@ -// 设备信息仓库 -export default { - state: { - devList:[] - }, - mutations: { - // 添加多个设备 - 'SETLISTALL':function(state, payload){ - state.devList = [...payload] - }, - // 添加单个设备 - 'SETLIST':function(state, payload){ - state.devList.push(payload) - }, - // 删除单个 - 'DELLIST':function(state, payload){ - state.devList.splice(payload,1) - } - }, - actions: { - setListAll({ commit },payload){ - commit('SETLISTALL',payload) - }, - setList({ commit },payload){ - commit('SETLIST',payload) - }, - delList({ commit },payload){ - commit('DELLIST',payload) - } - } -} \ No newline at end of file diff --git a/store/modules/login.js b/store/modules/login.js deleted file mode 100644 index a1ea7cb..0000000 --- a/store/modules/login.js +++ /dev/null @@ -1,40 +0,0 @@ -// 登录信息仓库 -export default { - state: { - token:'', - userInfo:{ - userName:'测试', - } - }, - getters: { - // 是否存在token - isLogin(state){ - return !!state.token - } - }, - mutations: { - // 设置token信息 - 'SETTOKEN':function(state, payload){ - state.token = payload - }, - // 清除token信息 - 'CLEARTOKEN':function(state){ - state.token = null - }, - // 设置userinfoi信息 - 'SETUSERINFO':function(state,payload){ - state.userInfo = { ...payload } - } - }, - actions: { - setToken({ commit },payload){ - commit('SETTOKEN',payload) - }, - clearToken({ commit }){ - commit('CLEARTOKEN') - }, - setUserInfo({ commit },payload){ - commit('SETUSERINFO',payload) - } - } -} \ No newline at end of file diff --git a/store/modules/message.js b/store/modules/message.js deleted file mode 100644 index e3daaea..0000000 --- a/store/modules/message.js +++ /dev/null @@ -1,40 +0,0 @@ -// 地区信息仓库 -export default { - state: { - message:{ - allcount:0, - notecount:0, - taskcount:0, - warncount:0 - }, - }, - getters: { - // 获取消息数量 - getCount(state){ - return state.message - }, - }, - mutations: { - // 设置message数量 - 'SETMESSAGE':function(state, payload){ - state.message = { ...state.message,...payload } - }, - // 清除message数量 - 'CLEARMESSAGE':function(state){ - state.message = { - allcount:0, - notecount:0, - taskcount:0, - warncount:0 - } - }, - }, - actions: { - setMessage({ commit },payload){ - commit('SETMESSAGE',payload) - }, - clearMessage({ commit }){ - commit('CLEARMESSAGE') - }, - } -} \ No newline at end of file diff --git a/store/modules/search.js b/store/modules/search.js deleted file mode 100644 index 4a265f7..0000000 --- a/store/modules/search.js +++ /dev/null @@ -1,34 +0,0 @@ -// 搜索条件 -export default { - state: { - searchObj:{} - }, - getters: { - }, - mutations: { - // 设置搜索信息 - 'SETSEARCH':function(state, payload){ - state.searchObj = payload - }, - // 清除搜索信息 - 'CLEARSEARCH':function(state){ - state.searchObj = {} - }, - }, - actions: { - setSearch({ commit },payload){ - // 过滤存储条件,只存,城市,线路,车辆,车厢,车门,时间 - let obj = JSON.parse(JSON.stringify(payload)) - let searchKey = ['areaid','lineid','metroid','carriageid','doorno','doorid','starttime','endtime'] - for(let key in obj){ - if(searchKey.indexOf(key) == -1){ - delete obj[key] - } - } - commit('SETSEARCH',obj) - }, - clearSearch({ commit }){ - commit('CLEARSEARCH') - }, - } -} \ No newline at end of file diff --git a/store/modules/user.js b/store/modules/user.js new file mode 100644 index 0000000..c1ec441 --- /dev/null +++ b/store/modules/user.js @@ -0,0 +1,98 @@ +import config from '@/config' +import storage from '@/utils/storage' +import constant from '@/utils/constant' +import { login, logout, getInfo } from '@/api/login' +import { getToken, setToken, removeToken } from '@/utils/auth' + +const baseUrl = config.baseUrl + +const user = { + state: { + token: getToken(), + name: storage.get(constant.name), + avatar: storage.get(constant.avatar), + roles: storage.get(constant.roles), + permissions: storage.get(constant.permissions) + }, + + mutations: { + SET_TOKEN: (state, token) => { + state.token = token + }, + SET_NAME: (state, name) => { + state.name = name + storage.set(constant.name, name) + }, + SET_AVATAR: (state, avatar) => { + state.avatar = avatar + storage.set(constant.avatar, avatar) + }, + SET_ROLES: (state, roles) => { + state.roles = roles + storage.set(constant.roles, roles) + }, + SET_PERMISSIONS: (state, permissions) => { + state.permissions = permissions + storage.set(constant.permissions, permissions) + } + }, + + actions: { + // 登录 + Login({ commit }, userInfo) { + const username = userInfo.username.trim() + const password = userInfo.password + const code = userInfo.code + const uuid = userInfo.uuid + return new Promise((resolve, reject) => { + login(username, password, code, uuid).then(res => { + setToken(res.token) + commit('SET_TOKEN', res.token) + resolve() + }).catch(error => { + reject(error) + }) + }) + }, + + // 获取用户信息 + GetInfo({ commit, state }) { + return new Promise((resolve, reject) => { + getInfo().then(res => { + const user = res.user + const avatar = (user == null || user.avatar == "" || user.avatar == null) ? require("@/static/images/profile.jpg") : baseUrl + user.avatar + const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName + if (res.roles && res.roles.length > 0) { + commit('SET_ROLES', res.roles) + commit('SET_PERMISSIONS', res.permissions) + } else { + commit('SET_ROLES', ['ROLE_DEFAULT']) + } + commit('SET_NAME', username) + commit('SET_AVATAR', avatar) + resolve(res) + }).catch(error => { + reject(error) + }) + }) + }, + + // 退出系统 + LogOut({ commit, state }) { + return new Promise((resolve, reject) => { + logout(state.token).then(() => { + commit('SET_TOKEN', '') + commit('SET_ROLES', []) + commit('SET_PERMISSIONS', []) + removeToken() + storage.clean() + resolve() + }).catch(error => { + reject(error) + }) + }) + } + } +} + +export default user diff --git a/store/modules/userInfoApp.js b/store/modules/userInfoApp.js deleted file mode 100644 index b7bcc28..0000000 --- a/store/modules/userInfoApp.js +++ /dev/null @@ -1,30 +0,0 @@ -// 登陆过的用户信息 -export default { - state: { - userInfoApp:[], - }, - getters: { - // 获取消息数量 - getUserInfoApp(state){ - return state.userInfoApp - }, - }, - mutations: { - // 设置用户信息 - 'SETUSERINFOAPP':function(state, payload){ - state.userInfoApp = payload - }, - // 清除用户登录信息 - 'CLEARUSERINFOAPP':function(state){ - state.userInfoApp = [] - }, - }, - actions: { - setUserInfoApp({ commit },payload){ - commit('SETUSERINFOAPP',payload) - }, - clearUserInfoApp({ commit }){ - commit('CLEARUSERINFOAPP') - }, - } -} \ No newline at end of file diff --git a/uni.promisify.adaptor.js b/uni.promisify.adaptor.js deleted file mode 100644 index 47fbce1..0000000 --- a/uni.promisify.adaptor.js +++ /dev/null @@ -1,10 +0,0 @@ -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.scss b/uni.scss index a05adb4..5b30ca3 100644 --- a/uni.scss +++ b/uni.scss @@ -1,19 +1,7 @@ /** - * 这里是uni-app内置的常用样式变量 - * - * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 - * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App - * + * uni-app内置的常用样式变量 */ -/** - * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 - * - * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 - */ - -/* 颜色变量 */ - /* 行为相关颜色 */ $uni-color-primary: #007aff; $uni-color-success: #4cd964; @@ -34,14 +22,14 @@ $uni-bg-color-hover:#f1f1f1;//点击状态颜色 $uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 /* 边框颜色 */ -$uni-border-color:#c8c7cc; +$uni-border-color:#e5e5e5; /* 尺寸变量 */ /* 文字尺寸 */ $uni-font-size-sm:12px; $uni-font-size-base:14px; -$uni-font-size-lg:16; +$uni-font-size-lg:16px; /* 图片尺寸 */ $uni-img-size-sm:20px; @@ -73,4 +61,4 @@ $uni-font-size-title:20px; $uni-color-subtitle: #555555; // 二级标题颜色 $uni-font-size-subtitle:26px; $uni-color-paragraph: #3F536E; // 文章段落颜色 -$uni-font-size-paragraph:15px; +$uni-font-size-paragraph:15px; \ No newline at end of file diff --git a/uni_modules/uni-badge/changelog.md b/uni_modules/uni-badge/changelog.md new file mode 100644 index 0000000..e352c60 --- /dev/null +++ b/uni_modules/uni-badge/changelog.md @@ -0,0 +1,33 @@ +## 1.2.2(2023-01-28) +- 修复 运行/打包 控制台警告问题 +## 1.2.1(2022-09-05) +- 修复 当 text 超过 max-num 时,badge 的宽度计算是根据 text 的长度计算,更改为 css 计算实际展示宽度,详见:[https://ask.dcloud.net.cn/question/150473](https://ask.dcloud.net.cn/question/150473) +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-badge](https://uniapp.dcloud.io/component/uniui/uni-badge) +## 1.1.7(2021-11-08) +- 优化 升级ui +- 修改 size 属性默认值调整为 small +- 修改 type 属性,默认值调整为 error,info 替换 default +## 1.1.6(2021-09-22) +- 修复 在字节小程序上样式不生效的 bug +## 1.1.5(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.4(2021-07-29) +- 修复 去掉 nvue 不支持css 的 align-self 属性,nvue 下不暂支持 absolute 属性 +## 1.1.3(2021-06-24) +- 优化 示例项目 +## 1.1.1(2021-05-12) +- 新增 组件示例地址 +## 1.1.0(2021-05-12) +- 新增 uni-badge 的 absolute 属性,支持定位 +- 新增 uni-badge 的 offset 属性,支持定位偏移 +- 新增 uni-badge 的 is-dot 属性,支持仅显示有一个小点 +- 新增 uni-badge 的 max-num 属性,支持自定义封顶的数字值,超过 99 显示99+ +- 优化 uni-badge 属性 custom-style, 支持以对象形式自定义样式 +## 1.0.7(2021-05-07) +- 修复 uni-badge 在 App 端,数字小于10时不是圆形的bug +- 修复 uni-badge 在父元素不是 flex 布局时,宽度缩小的bug +- 新增 uni-badge 属性 custom-style, 支持自定义样式 +## 1.0.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-badge/components/uni-badge/uni-badge.vue b/uni_modules/uni-badge/components/uni-badge/uni-badge.vue new file mode 100644 index 0000000..956354b --- /dev/null +++ b/uni_modules/uni-badge/components/uni-badge/uni-badge.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/uni_modules/uni-badge/package.json b/uni_modules/uni-badge/package.json new file mode 100644 index 0000000..b0bac93 --- /dev/null +++ b/uni_modules/uni-badge/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-badge", + "displayName": "uni-badge 数字角标", + "version": "1.2.2", + "description": "数字角标(徽章)组件,在元素周围展示消息提醒,一般用于列表、九宫格、按钮等地方。", + "keywords": [ + "", + "badge", + "uni-ui", + "uniui", + "数字角标", + "徽章" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-badge/readme.md b/uni_modules/uni-badge/readme.md new file mode 100644 index 0000000..bdf175d --- /dev/null +++ b/uni_modules/uni-badge/readme.md @@ -0,0 +1,10 @@ +## Badge 数字角标 +> **组件名:uni-badge** +> 代码块: `uBadge` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-badge) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-breadcrumb/changelog.md b/uni_modules/uni-breadcrumb/changelog.md new file mode 100644 index 0000000..209e5c5 --- /dev/null +++ b/uni_modules/uni-breadcrumb/changelog.md @@ -0,0 +1,6 @@ +## 0.1.2(2022-06-08) +- 修复 微信小程序 separator 不显示的Bug +## 0.1.1(2022-06-02) +- 新增 支持 uni.scss 修改颜色 +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue b/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue new file mode 100644 index 0000000..b9edbd6 --- /dev/null +++ b/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue @@ -0,0 +1,121 @@ + + + diff --git a/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue b/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue new file mode 100644 index 0000000..94493a2 --- /dev/null +++ b/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue @@ -0,0 +1,41 @@ + + + diff --git a/uni_modules/uni-breadcrumb/package.json b/uni_modules/uni-breadcrumb/package.json new file mode 100644 index 0000000..0a04e50 --- /dev/null +++ b/uni_modules/uni-breadcrumb/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-breadcrumb", + "displayName": "uni-breadcrumb 面包屑", + "version": "0.1.2", + "description": "Breadcrumb 面包屑", + "keywords": [ + "uni-breadcrumb", + "breadcrumb", + "uni-ui", + "面包屑导航", + "面包屑" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uni_modules/uni-breadcrumb/readme.md b/uni_modules/uni-breadcrumb/readme.md new file mode 100644 index 0000000..6976b8d --- /dev/null +++ b/uni_modules/uni-breadcrumb/readme.md @@ -0,0 +1,66 @@ + +## breadcrumb 面包屑导航 +> **组件名:uni-breadcrumb** +> 代码块: `ubreadcrumb` + +显示当前页面的路径,快速返回之前的任意页面。 + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + {{route.name}} + +``` + +```js +export default { + name: "uni-stat-breadcrumb", + data() { + return { + routes: [{ + to: '/A', + name: 'A页面' + }, { + to: '/B', + name: 'B页面' + }, { + to: '/C', + name: 'C页面' + }] + }; + } + } +``` + + +## API + +### Breadcrumb Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|separator |String |斜杠'/' |分隔符 | +|separatorClass |String | |图标分隔符 class | + +### Breadcrumb Item Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|to |String | |路由跳转页面路径 | +|replace|Boolean | |在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持) | + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb](https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb) \ No newline at end of file diff --git a/uni_modules/uni-calendar/changelog.md b/uni_modules/uni-calendar/changelog.md new file mode 100644 index 0000000..f291eec --- /dev/null +++ b/uni_modules/uni-calendar/changelog.md @@ -0,0 +1,26 @@ +## 1.4.10(2023-04-10) +- 修复 某些情况 monthSwitch 未触发的Bug +## 1.4.9(2023-02-02) +- 修复 某些情况切换月份错误的Bug +## 1.4.8(2023-01-30) +- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/161964) +## 1.4.7(2022-09-16) +- 优化 支持使用 uni-scss 控制主题色 +## 1.4.6(2022-09-08) +- 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件的Bug +## 1.4.5(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式的Bug +## 1.4.4(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式的Bug +## 1.4.3(2021-09-22) +- 修复 startDate、 endDate 属性失效的Bug +## 1.4.2(2021-08-24) +- 新增 支持国际化 +## 1.4.1(2021-08-05) +- 修复 弹出层被 tabbar 遮盖的Bug +## 1.4.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.3.16(2021-05-12) +- 新增 组件示例地址 +## 1.3.15(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-calendar/components/uni-calendar/calendar.js b/uni_modules/uni-calendar/components/uni-calendar/calendar.js new file mode 100644 index 0000000..b8d7d6f --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/calendar.js @@ -0,0 +1,546 @@ +/** +* @1900-2100区间内的公历、农历互转 +* @charset UTF-8 +* @github https://github.com/jjonline/calendar.js +* @Author Jea杨(JJonline@JJonline.Cn) +* @Time 2014-7-21 +* @Time 2016-8-13 Fixed 2033hex、Attribution Annals +* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug +* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year +* @Version 1.0.3 +* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0] +* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0] +*/ +/* eslint-disable */ +var calendar = { + + /** + * 农历1900-2100的润大小信息表 + * @Array Of Property + * @return Hex + */ + lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909 + 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919 + 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929 + 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939 + 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949 + 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959 + 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969 + 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979 + 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989 + 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999 + 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009 + 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019 + 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029 + 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039 + 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049 + /** Add By JJonline@JJonline.Cn**/ + 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059 + 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069 + 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079 + 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089 + 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099 + 0x0d520], // 2100 + + /** + * 公历每个月份的天数普通表 + * @Array Of Property + * @return Number + */ + solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + + /** + * 天干地支之天干速查表 + * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] + * @return Cn string + */ + Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'], + + /** + * 天干地支之地支速查表 + * @Array Of Property + * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] + * @return Cn string + */ + Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'], + + /** + * 天干地支之地支速查表<=>生肖 + * @Array Of Property + * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] + * @return Cn string + */ + Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'], + + /** + * 24节气速查表 + * @Array Of Property + * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"] + * @return Cn string + */ + solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'], + + /** + * 1900-2100各年的24节气日期速查表 + * @Array Of Property + * @return 0x string For splice + */ + sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', + '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', + 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa', + '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f', + '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', + '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722', + '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722', + '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2', + '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722', + '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35', + '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35', + '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'], + + /** + * 数字转中文速查表 + * @Array Of Property + * @trans ['日','一','二','三','四','五','六','七','八','九','十'] + * @return Cn string + */ + nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'], + + /** + * 日期转农历称呼速查表 + * @Array Of Property + * @trans ['初','十','廿','卅'] + * @return Cn string + */ + nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'], + + /** + * 月份转农历称呼速查表 + * @Array Of Property + * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊'] + * @return Cn string + */ + nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'], + + /** + * 返回农历y年一整年的总天数 + * @param lunar Year + * @return Number + * @eg:var count = calendar.lYearDays(1987) ;//count=387 + */ + lYearDays: function (y) { + var i; var sum = 348 + for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 } + return (sum + this.leapDays(y)) + }, + + /** + * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0 + * @param lunar Year + * @return Number (0-12) + * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6 + */ + leapMonth: function (y) { // 闰字编码 \u95f0 + return (this.lunarInfo[y - 1900] & 0xf) + }, + + /** + * 返回农历y年闰月的天数 若该年没有闰月则返回0 + * @param lunar Year + * @return Number (0、29、30) + * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29 + */ + leapDays: function (y) { + if (this.leapMonth(y)) { + return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29) + } + return (0) + }, + + /** + * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法 + * @param lunar Year + * @return Number (-1、29、30) + * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29 + */ + monthDays: function (y, m) { + if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1 + return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29) + }, + + /** + * 返回公历(!)y年m月的天数 + * @param solar Year + * @return Number (-1、28、29、30、31) + * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30 + */ + solarDays: function (y, m) { + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var ms = m - 1 + if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29 + return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28) + } else { + return (this.solarMonth[ms]) + } + }, + + /** + * 农历年份转换为干支纪年 + * @param lYear 农历年的年份数 + * @return Cn string + */ + toGanZhiYear: function (lYear) { + var ganKey = (lYear - 3) % 10 + var zhiKey = (lYear - 3) % 12 + if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干 + if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支 + return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1] + }, + + /** + * 公历月、日判断所属星座 + * @param cMonth [description] + * @param cDay [description] + * @return Cn string + */ + toAstro: function (cMonth, cDay) { + var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf' + var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22] + return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座 + }, + + /** + * 传入offset偏移量返回干支 + * @param offset 相对甲子的偏移量 + * @return Cn string + */ + toGanZhi: function (offset) { + return this.Gan[offset % 10] + this.Zhi[offset % 12] + }, + + /** + * 传入公历(!)y年获得该年第n个节气的公历日期 + * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起 + * @return day Number + * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春 + */ + getTerm: function (y, n) { + if (y < 1900 || y > 2100) { return -1 } + if (n < 1 || n > 24) { return -1 } + var _table = this.sTermInfo[y - 1900] + var _info = [ + parseInt('0x' + _table.substr(0, 5)).toString(), + parseInt('0x' + _table.substr(5, 5)).toString(), + parseInt('0x' + _table.substr(10, 5)).toString(), + parseInt('0x' + _table.substr(15, 5)).toString(), + parseInt('0x' + _table.substr(20, 5)).toString(), + parseInt('0x' + _table.substr(25, 5)).toString() + ] + var _calday = [ + _info[0].substr(0, 1), + _info[0].substr(1, 2), + _info[0].substr(3, 1), + _info[0].substr(4, 2), + + _info[1].substr(0, 1), + _info[1].substr(1, 2), + _info[1].substr(3, 1), + _info[1].substr(4, 2), + + _info[2].substr(0, 1), + _info[2].substr(1, 2), + _info[2].substr(3, 1), + _info[2].substr(4, 2), + + _info[3].substr(0, 1), + _info[3].substr(1, 2), + _info[3].substr(3, 1), + _info[3].substr(4, 2), + + _info[4].substr(0, 1), + _info[4].substr(1, 2), + _info[4].substr(3, 1), + _info[4].substr(4, 2), + + _info[5].substr(0, 1), + _info[5].substr(1, 2), + _info[5].substr(3, 1), + _info[5].substr(4, 2) + ] + return parseInt(_calday[n - 1]) + }, + + /** + * 传入农历数字月份返回汉语通俗表示法 + * @param lunar month + * @return Cn string + * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月' + */ + toChinaMonth: function (m) { // 月 => \u6708 + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var s = this.nStr3[m - 1] + s += '\u6708'// 加上月字 + return s + }, + + /** + * 传入农历日期数字返回汉字表示法 + * @param lunar day + * @return Cn string + * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一' + */ + toChinaDay: function (d) { // 日 => \u65e5 + var s + switch (d) { + case 10: + s = '\u521d\u5341'; break + case 20: + s = '\u4e8c\u5341'; break + break + case 30: + s = '\u4e09\u5341'; break + break + default : + s = this.nStr2[Math.floor(d / 10)] + s += this.nStr1[d % 10] + } + return (s) + }, + + /** + * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春” + * @param y year + * @return Cn string + * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔' + */ + getAnimal: function (y) { + return this.Animals[(y - 4) % 12] + }, + + /** + * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON + * @param y solar year + * @param m solar month + * @param d solar day + * @return JSON object + * @eg:console.log(calendar.solar2lunar(1987,11,01)); + */ + solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31 + // 年份限定、上限 + if (y < 1900 || y > 2100) { + return -1// undefined转换为数字变为NaN + } + // 公历传参最下限 + if (y == 1900 && m == 1 && d < 31) { + return -1 + } + // 未传参 获得当天 + if (!y) { + var objDate = new Date() + } else { + var objDate = new Date(y, parseInt(m) - 1, d) + } + var i; var leap = 0; var temp = 0 + // 修正ymd参数 + var y = objDate.getFullYear() + var m = objDate.getMonth() + 1 + var d = objDate.getDate() + var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000 + for (i = 1900; i < 2101 && offset > 0; i++) { + temp = this.lYearDays(i) + offset -= temp + } + if (offset < 0) { + offset += temp; i-- + } + + // 是否今天 + var isTodayObj = new Date() + var isToday = false + if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) { + isToday = true + } + // 星期几 + var nWeek = objDate.getDay() + var cWeek = this.nStr1[nWeek] + // 数字表示周几顺应天朝周一开始的惯例 + if (nWeek == 0) { + nWeek = 7 + } + // 农历年 + var year = i + var leap = this.leapMonth(i) // 闰哪个月 + var isLeap = false + + // 效验闰月 + for (i = 1; i < 13 && offset > 0; i++) { + // 闰月 + if (leap > 0 && i == (leap + 1) && isLeap == false) { + --i + isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数 + } else { + temp = this.monthDays(year, i)// 计算农历普通月天数 + } + // 解除闰月 + if (isLeap == true && i == (leap + 1)) { isLeap = false } + offset -= temp + } + // 闰月导致数组下标重叠取反 + if (offset == 0 && leap > 0 && i == leap + 1) { + if (isLeap) { + isLeap = false + } else { + isLeap = true; --i + } + } + if (offset < 0) { + offset += temp; --i + } + // 农历月 + var month = i + // 农历日 + var day = offset + 1 + // 天干地支处理 + var sm = m - 1 + var gzY = this.toGanZhiYear(year) + + // 当月的两个节气 + // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year` + var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始 + var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始 + + // 依据12节气修正干支月 + var gzM = this.toGanZhi((y - 1900) * 12 + m + 11) + if (d >= firstNode) { + gzM = this.toGanZhi((y - 1900) * 12 + m + 12) + } + + // 传入的日期的节气与否 + var isTerm = false + var Term = null + if (firstNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 2] + } + if (secondNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 1] + } + // 日柱 当月一日与 1900/1/1 相差天数 + var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10 + var gzD = this.toGanZhi(dayCyclical + d - 1) + // 该日期所属的星座 + var astro = this.toAstro(m, d) + + return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro } + }, + + /** + * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON + * @param y lunar year + * @param m lunar month + * @param d lunar day + * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可] + * @return JSON object + * @eg:console.log(calendar.lunar2solar(1987,9,10)); + */ + lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1 + var isLeapMonth = !!isLeapMonth + var leapOffset = 0 + var leapMonth = this.leapMonth(y) + var leapDay = this.leapDays(y) + if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 + if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值 + var day = this.monthDays(y, m) + var _day = day + // bugFix 2016-9-25 + // if month is leap, _day use leapDays method + if (isLeapMonth) { + _day = this.leapDays(y, m) + } + if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验 + + // 计算农历的时间差 + var offset = 0 + for (var i = 1900; i < y; i++) { + offset += this.lYearDays(i) + } + var leap = 0; var isAdd = false + for (var i = 1; i < m; i++) { + leap = this.leapMonth(y) + if (!isAdd) { // 处理闰月 + if (leap <= i && leap > 0) { + offset += this.leapDays(y); isAdd = true + } + } + offset += this.monthDays(y, i) + } + // 转换闰月农历 需补充该年闰月的前一个月的时差 + if (isLeapMonth) { offset += day } + // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点) + var stmap = Date.UTC(1900, 1, 30, 0, 0, 0) + var calObj = new Date((offset + d - 31) * 86400000 + stmap) + var cY = calObj.getUTCFullYear() + var cM = calObj.getUTCMonth() + 1 + var cD = calObj.getUTCDate() + + return this.solar2lunar(cY, cM, cD) + } +} + +export default calendar diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json new file mode 100644 index 0000000..fcbd13c --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "ok", + "uni-calender.cancel": "cancel", + "uni-calender.today": "today", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js b/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json new file mode 100644 index 0000000..1ca43de --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "确定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json new file mode 100644 index 0000000..e0fe33b --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "確定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue new file mode 100644 index 0000000..a54135e --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue new file mode 100644 index 0000000..17c958d --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue @@ -0,0 +1,566 @@ + + + + + diff --git a/uni_modules/uni-calendar/components/uni-calendar/util.js b/uni_modules/uni-calendar/components/uni-calendar/util.js new file mode 100644 index 0000000..5ec8a92 --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/util.js @@ -0,0 +1,360 @@ +import CALENDAR from './calendar.js' + +class Calendar { + constructor({ + date, + selected, + startDate, + endDate, + range + } = {}) { + // 当前日期 + this.date = this.getDate(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 范围开始 + this.startDate = startDate + // 范围结束 + this.endDate = endDate + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + // this._getWeek(this.date.fullDate) + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + this.selectDate = this.getDate(date) + this._getWeek(this.selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + /** + * 重置开始日期 + */ + resetSatrtDate(startDate) { + // 范围开始 + this.startDate = startDate + + } + + /** + * 重置结束日期 + */ + resetEndDate(endDate) { + // 范围结束 + this.endDate = endDate + } + + /** + * 获取任意时间 + */ + getDate(date, AddDayCount = 0, str = 'day') { + if (!date) { + date = new Date() + } + if (typeof date !== 'object') { + date = date.replace(/-/g, '/') + } + const dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break + case 'month': + if (dd.getDate() === 31 && AddDayCount>0) { + dd.setDate(dd.getDate() + AddDayCount) + } else { + const preMonth = dd.getMonth() + dd.setMonth(preMonth + AddDayCount) // 获取AddDayCount天后的日期 + const nextMonth = dd.getMonth() + // 处理 pre 切换月份目标月份为2月没有当前日(30 31) 切换错误问题 + if(AddDayCount<0 && preMonth!==0 && nextMonth-preMonth>AddDayCount){ + dd.setMonth(nextMonth+(nextMonth-preMonth+AddDayCount)) + } + // 处理 next 切换月份目标月份为2月没有当前日(30 31) 切换错误问题 + if(AddDayCount>0 && nextMonth-preMonth>AddDayCount){ + dd.setMonth(nextMonth-(nextMonth-preMonth-AddDayCount)) + } + } + break + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break + } + const y = dd.getFullYear() + const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 + const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + return { + fullDate: y + '-' + m + '-' + d, + year: y, + month: m, + date: d, + day: dd.getDay() + } + } + + + /** + * 获取上月剩余天数 + */ + _getLastMonthDays(firstDay, full) { + let dateArr = [] + for (let i = firstDay; i > 0; i--) { + const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() + dateArr.push({ + date: beforeDate, + month: full.month - 1, + lunar: this.getlunar(full.year, full.month - 1, beforeDate), + disable: true + }) + } + return dateArr + } + /** + * 获取本月天数 + */ + _currentMonthDys(dateData, full) { + let dateArr = [] + let fullDate = this.date.fullDate + for (let i = 1; i <= dateData; i++) { + let nowDate = full.year + '-' + (full.month < 10 ? + full.month : full.month) + '-' + (i < 10 ? + '0' + i : i) + // 是否今天 + let isDay = fullDate === nowDate + // 获取打点信息 + let info = this.selected && this.selected.find((item) => { + if (this.dateEqual(nowDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + // let dateCompBefore = this.dateCompare(this.startDate, fullDate) + // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) + disableBefore = this.dateCompare(this.startDate, nowDate) + } + + if (this.endDate) { + // let dateCompAfter = this.dateCompare(fullDate, this.endDate) + // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) + disableAfter = this.dateCompare(nowDate, this.endDate) + } + let multiples = this.multipleStatus.data + let checked = false + let multiplesStatus = -1 + if (this.range) { + if (multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, nowDate) + }) + } + if (multiplesStatus !== -1) { + checked = true + } + } + let data = { + fullDate: nowDate, + year: full.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate), + afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate), + month: full.month, + lunar: this.getlunar(full.year, full.month, i), + disable: !(disableBefore && disableAfter), + isDay + } + if (info) { + data.extraInfo = info + } + + dateArr.push(data) + } + return dateArr + } + /** + * 获取下月天数 + */ + _getNextMonthDays(surplus, full) { + let dateArr = [] + for (let i = 1; i < surplus + 1; i++) { + dateArr.push({ + date: i, + month: Number(full.month) + 1, + lunar: this.getlunar(full.year, Number(full.month) + 1, i), + disable: true + }) + } + return dateArr + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) + return dateInfo + } + + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + if (startDate <= endDate) { + return true + } else { + return false + } + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + // 计算截止时间 + before = new Date(before.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + after = new Date(after.replace('-', '/').replace('-', '/')) + if (before.getTime() - after.getTime() === 0) { + return true + } else { + return false + } + } + + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDate(new Date(parseInt(k))).fullDate) + } + return arr + } + /** + * 计算阴历日期显示 + */ + getlunar(year, month, date) { + return CALENDAR.solar2lunar(year, month, date) + } + /** + * 设置打点 + */ + setSelectInfo(data, value) { + this.selected = value + this._getWeek(data) + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + + if (!this.range) return + if (before && after) { + this.multipleStatus.before = '' + this.multipleStatus.after = '' + this.multipleStatus.data = [] + } else { + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + } + this._getWeek(fullDate) + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + _getWeek(dateData) { + const { + year, + month + } = this.getDate(dateData) + let firstDay = new Date(year, month - 1, 1).getDay() + let currentDay = new Date(year, month, 0).getDate() + let dates = { + lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 + currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 + nextMonthDays: [], // 下个月开始几天 + weeks: [] + } + let canlender = [] + const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) + dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + let weeks = {} + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 === 0) { + weeks[parseInt(i / 7)] = new Array(7) + } + weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + this.canlender = canlender + this.weeks = weeks + } + + //静态方法 + // static init(date) { + // if (!this.instance) { + // this.instance = new Calendar(date); + // } + // return this.instance; + // } +} + + +export default Calendar diff --git a/uni_modules/uni-calendar/package.json b/uni_modules/uni-calendar/package.json new file mode 100644 index 0000000..fad841f --- /dev/null +++ b/uni_modules/uni-calendar/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-calendar", + "displayName": "uni-calendar 日历", + "version": "1.4.10", + "description": "日历组件", + "keywords": [ + "uni-ui", + "uniui", + "日历", + "", + "打卡", + "日历选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-calendar/readme.md b/uni_modules/uni-calendar/readme.md new file mode 100644 index 0000000..4e1748c --- /dev/null +++ b/uni_modules/uni-calendar/readme.md @@ -0,0 +1,103 @@ + + +## Calendar 日历 +> **组件名:uni-calendar** +> 代码块: `uCalendar` + + +日历组件 + +> **注意事项** +> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 +> - 本组件农历转换使用的js是 [@1900-2100区间内的公历、农历互转](https://github.com/jjonline/calendar.js) +> - 仅支持自定义组件模式 +> - `date`属性传入的应该是一个 String ,如: 2019-06-27 ,而不是 new Date() +> - 通过 `insert` 属性来确定当前的事件是 @change 还是 @confirm 。理应合并为一个事件,但是为了区分模式,现使用两个事件,这里需要注意 +> - 弹窗模式下无法阻止后面的元素滚动,如有需要阻止,请在弹窗弹出后,手动设置滚动元素为不可滚动 + + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + + +``` + +### 通过方法打开日历 + +需要设置 `insert` 为 `false` + +```html + + + + +``` + +```javascript + +export default { + data() { + return {}; + }, + methods: { + open(){ + this.$refs.calendar.open(); + }, + confirm(e) { + console.log(e); + } + } +}; + +``` + + +## API + +### Calendar Props + +| 属性名 | 类型 | 默认值| 说明 | +| - | - | - | - | +| date | String |- | 自定义当前时间,默认为今天 | +| lunar | Boolean | false | 显示农历 | +| startDate | String |- | 日期选择范围-开始日期 | +| endDate | String |- | 日期选择范围-结束日期 | +| range | Boolean | false | 范围选择 | +| insert | Boolean | false | 插入模式,可选值,ture:插入模式;false:弹窗模式;默认为插入模式 | +|clearDate |Boolean |true |弹窗模式是否清空上次选择内容 | +| selected | Array |- | 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}] | +|showMonth | Boolean | true | 是否显示月份为背景 | + +### Calendar Events + +| 事件名 | 说明 |返回值| +| - | - | - | +| open | 弹出日历组件,`insert :false` 时生效|- | + + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar](https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar) diff --git a/uni_modules/uni-card/changelog.md b/uni_modules/uni-card/changelog.md new file mode 100644 index 0000000..c3cd8c4 --- /dev/null +++ b/uni_modules/uni-card/changelog.md @@ -0,0 +1,26 @@ +## 1.3.1(2021-12-20) +- 修复 在vue页面下略缩图显示不正常的bug +## 1.3.0(2021-11-19) +- 重构插槽的用法 ,header 替换为 title +- 新增 actions 插槽 +- 新增 cover 封面图属性和插槽 +- 新增 padding 内容默认内边距离 +- 新增 margin 卡片默认外边距离 +- 新增 spacing 卡片默认内边距 +- 新增 shadow 卡片阴影属性 +- 取消 mode 属性,可使用组合插槽代替 +- 取消 note 属性 ,使用actions插槽代替 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-card](https://uniapp.dcloud.io/component/uniui/uni-card) +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-07-01) +- 优化 图文卡片无图片加载时,提供占位图标 +- 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持) +- 修复 thumbnail 不存在仍然占位的 bug +## 1.1.7(2021-05-12) +- 新增 组件示例地址 +## 1.1.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-card/components/uni-card/uni-card.vue b/uni_modules/uni-card/components/uni-card/uni-card.vue new file mode 100644 index 0000000..88d8342 --- /dev/null +++ b/uni_modules/uni-card/components/uni-card/uni-card.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/uni_modules/uni-card/package.json b/uni_modules/uni-card/package.json new file mode 100644 index 0000000..f16224d --- /dev/null +++ b/uni_modules/uni-card/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-card", + "displayName": "uni-card 卡片", + "version": "1.3.1", + "description": "Card 组件,提供常见的卡片样式。", + "keywords": [ + "uni-ui", + "uniui", + "card", + "", + "卡片" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-card/readme.md b/uni_modules/uni-card/readme.md new file mode 100644 index 0000000..7434e71 --- /dev/null +++ b/uni_modules/uni-card/readme.md @@ -0,0 +1,12 @@ + + +## Card 卡片 +> **组件名:uni-card** +> 代码块: `uCard` + +卡片视图组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-card) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-collapse/changelog.md b/uni_modules/uni-collapse/changelog.md new file mode 100644 index 0000000..292e4c7 --- /dev/null +++ b/uni_modules/uni-collapse/changelog.md @@ -0,0 +1,36 @@ +## 1.4.3(2022-01-25) +- 修复 初始化的时候 ,open 属性失效的bug +## 1.4.2(2022-01-21) +- 修复 微信小程序resize后组件收起的bug +## 1.4.1(2021-11-22) +- 修复 vue3中个别scss变量无法找到的问题 +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-collapse](https://uniapp.dcloud.io/component/uniui/uni-collapse) +## 1.3.3(2021-08-17) +- 优化 show-arrow 属性默认为true +## 1.3.2(2021-08-17) +- 新增 show-arrow 属性,控制是否显示右侧箭头 +## 1.3.1(2021-07-30) +- 优化 vue3下小程序事件警告的问题 +## 1.3.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.2(2021-07-21) +- 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug +## 1.2.1(2021-07-21) +- 优化 组件示例 +## 1.2.0(2021-07-21) +- 新增 组件折叠动画 +- 新增 value\v-model 属性 ,动态修改面板折叠状态 +- 新增 title 插槽 ,可定义面板标题 +- 新增 border 属性 ,显示隐藏面板内容分隔线 +- 新增 title-border 属性 ,显示隐藏面板标题分隔线 +- 修复 resize 方法失效的Bug +- 修复 change 事件返回参数不正确的Bug +- 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法 +## 1.1.7(2021-05-12) +- 新增 组件示例地址 +## 1.1.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.1.5(2021-02-05) +- 调整为uni_modules目录规范 \ No newline at end of file diff --git a/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue new file mode 100644 index 0000000..d62a6a7 --- /dev/null +++ b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue @@ -0,0 +1,402 @@ + + + + + diff --git a/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue new file mode 100644 index 0000000..384c39a --- /dev/null +++ b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue @@ -0,0 +1,147 @@ + + + diff --git a/uni_modules/uni-collapse/package.json b/uni_modules/uni-collapse/package.json new file mode 100644 index 0000000..65349cf --- /dev/null +++ b/uni_modules/uni-collapse/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-collapse", + "displayName": "uni-collapse 折叠面板", + "version": "1.4.3", + "description": "Collapse 组件,可以折叠 / 展开的内容区域。", + "keywords": [ + "uni-ui", + "折叠", + "折叠面板", + "手风琴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-collapse/readme.md b/uni_modules/uni-collapse/readme.md new file mode 100644 index 0000000..bc758eb --- /dev/null +++ b/uni_modules/uni-collapse/readme.md @@ -0,0 +1,12 @@ + + +## Collapse 折叠面板 +> **组件名:uni-collapse** +> 代码块: `uCollapse` +> 关联组件:`uni-collapse-item`、`uni-icons`。 + + +折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-collapse) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-combox/changelog.md b/uni_modules/uni-combox/changelog.md new file mode 100644 index 0000000..23c2748 --- /dev/null +++ b/uni_modules/uni-combox/changelog.md @@ -0,0 +1,15 @@ +## 1.0.1(2021-11-23) +- 优化 label、label-width 属性 +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-combox](https://uniapp.dcloud.io/component/uniui/uni-combox) +## 0.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.6(2021-05-12) +- 新增 组件示例地址 +## 0.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 0.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-combox/components/uni-combox/uni-combox.vue b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue new file mode 100644 index 0000000..83454e5 --- /dev/null +++ b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/uni_modules/uni-combox/package.json b/uni_modules/uni-combox/package.json new file mode 100644 index 0000000..4a05c3f --- /dev/null +++ b/uni_modules/uni-combox/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-combox", + "displayName": "uni-combox 组合框", + "version": "1.0.1", + "description": "可以选择也可以输入的表单项 ", + "keywords": [ + "uni-ui", + "uniui", + "combox", + "组合框", + "select" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-combox/readme.md b/uni_modules/uni-combox/readme.md new file mode 100644 index 0000000..ffa2cc8 --- /dev/null +++ b/uni_modules/uni-combox/readme.md @@ -0,0 +1,11 @@ + + +## Combox 组合框 +> **组件名:uni-combox** +> 代码块: `uCombox` + + +组合框组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-combox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-countdown/changelog.md b/uni_modules/uni-countdown/changelog.md new file mode 100644 index 0000000..f25beef --- /dev/null +++ b/uni_modules/uni-countdown/changelog.md @@ -0,0 +1,24 @@ +## 1.2.2(2022-01-19) +- 修复 在微信小程序中样式不生效的bug +## 1.2.1(2022-01-18) +- 新增 update 方法 ,在动态更新时间后,刷新组件 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-countdown](https://uniapp.dcloud.io/component/uniui/uni-countdown) +## 1.1.3(2021-10-18) +- 重构 +- 新增 font-size 支持自定义字体大小 +## 1.1.2(2021-08-24) +- 新增 支持国际化 +## 1.1.1(2021-07-30) +- 优化 vue3下小程序事件警告的问题 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-06-18) +- 修复 uni-countdown 重复赋值跳两秒的 bug +## 1.0.4(2021-05-12) +- 新增 组件示例地址 +## 1.0.3(2021-05-08) +- 修复 uni-countdown 不能控制倒计时的 bug +## 1.0.2(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json new file mode 100644 index 0000000..06309cb --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "day", + "uni-countdown.h": "h", + "uni-countdown.m": "m", + "uni-countdown.s": "s" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json new file mode 100644 index 0000000..358cdd1 --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "天", + "uni-countdown.h": "时", + "uni-countdown.m": "分", + "uni-countdown.s": "秒" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json new file mode 100644 index 0000000..e5a63de --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "天", + "uni-countdown.h": "時", + "uni-countdown.m": "分", + "uni-countdown.s": "秒" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue new file mode 100644 index 0000000..65a1216 --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue @@ -0,0 +1,267 @@ + + + diff --git a/uni_modules/uni-countdown/package.json b/uni_modules/uni-countdown/package.json new file mode 100644 index 0000000..70e99ee --- /dev/null +++ b/uni_modules/uni-countdown/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-countdown", + "displayName": "uni-countdown 倒计时", + "version": "1.2.2", + "description": "CountDown 倒计时组件", + "keywords": [ + "uni-ui", + "uniui", + "countdown", + "倒计时" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-countdown/readme.md b/uni_modules/uni-countdown/readme.md new file mode 100644 index 0000000..4bcb1aa --- /dev/null +++ b/uni_modules/uni-countdown/readme.md @@ -0,0 +1,10 @@ + + +## CountDown 倒计时 +> **组件名:uni-countdown** +> 代码块: `uCountDown` + +倒计时组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-countdown) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-checkbox/changelog.md b/uni_modules/uni-data-checkbox/changelog.md new file mode 100644 index 0000000..c7a468a --- /dev/null +++ b/uni_modules/uni-data-checkbox/changelog.md @@ -0,0 +1,45 @@ +## 1.0.3(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 1.0.2(2022-06-30) +- 优化 在 uni-forms 中的依赖注入方式 +## 1.0.1(2022-02-07) +- 修复 multiple 为 true 时,v-model 的值为 null 报错的 bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-checkbox](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) +## 0.2.5(2021-08-23) +- 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题 +## 0.2.4(2021-08-17) +- 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +## 0.2.3(2021-08-11) +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +## 0.2.2(2021-07-30) +- 优化 在uni-forms组件,与label不对齐的问题 +## 0.2.1(2021-07-27) +- 修复 单选默认值为0不能选中的Bug +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.11(2021-07-06) +- 优化 删除无用日志 +## 0.1.10(2021-07-05) +- 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题 +## 0.1.9(2021-07-05) +- 修复 nvue 黑框样式问题 +## 0.1.8(2021-06-28) +- 修复 selectedTextColor 属性不生效的Bug +## 0.1.7(2021-06-02) +- 新增 map 属性,可以方便映射text/value属性 +## 0.1.6(2021-05-26) +- 修复 不关联服务空间的情况下组件报错的Bug +## 0.1.5(2021-05-12) +- 新增 组件示例地址 +## 0.1.4(2021-04-09) +- 修复 nvue 下无法选中的问题 +## 0.1.3(2021-03-22) +- 新增 disabled属性 +## 0.1.2(2021-02-24) +- 优化 默认颜色显示 +## 0.1.1(2021-02-24) +- 新增 支持nvue +## 0.1.0(2021-02-18) +- “暂无数据”显示居中 diff --git a/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue b/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue new file mode 100644 index 0000000..3c75d9f --- /dev/null +++ b/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue @@ -0,0 +1,821 @@ + + + + + diff --git a/uni_modules/uni-data-checkbox/package.json b/uni_modules/uni-data-checkbox/package.json new file mode 100644 index 0000000..113c350 --- /dev/null +++ b/uni_modules/uni-data-checkbox/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-data-checkbox", + "displayName": "uni-data-checkbox 数据选择器", + "version": "1.0.3", + "description": "通过数据驱动的单选框和复选框", + "keywords": [ + "uni-ui", + "checkbox", + "单选", + "多选", + "单选多选" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.1" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-load-more","uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-checkbox/readme.md b/uni_modules/uni-data-checkbox/readme.md new file mode 100644 index 0000000..6eb253d --- /dev/null +++ b/uni_modules/uni-data-checkbox/readme.md @@ -0,0 +1,18 @@ + + +## DataCheckbox 数据驱动的单选复选框 +> **组件名:uni-data-checkbox** +> 代码块: `uDataCheckbox` + + +本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括: + +1. 数据绑定型组件:给本组件绑定一个data,会自动渲染一组候选内容。再以往,开发者需要编写不少代码实现类似功能 +2. 自动的表单校验:组件绑定了data,且符合[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)组件的表单校验规范,搭配使用会自动实现表单校验 +3. 本组件合并了单选多选 +4. 本组件有若干风格选择,如普通的单选多选框、并列button风格、tag风格。开发者可以快速选择需要的风格。但作为一个封装组件,样式代码虽然不用自己写了,却会牺牲一定的样式自定义性 + +在uniCloud开发中,`DB Schema`中配置了enum枚举等类型后,在web控制台的[自动生成表单](https://uniapp.dcloud.io/uniCloud/schema?id=autocode)功能中,会自动生成``uni-data-checkbox``组件并绑定好data + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-picker/changelog.md b/uni_modules/uni-data-picker/changelog.md new file mode 100644 index 0000000..1dd79f7 --- /dev/null +++ b/uni_modules/uni-data-picker/changelog.md @@ -0,0 +1,75 @@ +## 1.1.2(2023-04-11) +- 修复 更改 modelValue 报错的 bug +- 修复 v-for 未使用 key 值控制台 warning +## 1.1.1(2023-02-21) +- 修复代码合并时引发 value 属性为空时不渲染数据的问题 +## 1.1.0(2023-02-15) +- 修复 localdata 不支持动态更新的bug +## 1.0.9(2023-02-15) +- 修复 localdata 不支持动态更新的bug +## 1.0.8(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 1.0.7(2022-07-06) +- 优化 pc端图标位置不正确的问题 +## 1.0.6(2022-07-05) +- 优化 显示样式 +## 1.0.5(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.0.4(2022-04-19) +- 修复 字节小程序 本地数据无法选择下一级的Bug +## 1.0.3(2022-02-25) +- 修复 nvue 不支持的 v-show 的 bug +## 1.0.2(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式 +## 1.0.1(2021-11-23) +- 修复 由上个版本引发的map、v-model等属性不生效的bug +## 1.0.0(2021-11-19) +- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-picker](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +## 0.4.9(2021-10-28) +- 修复 VUE2 v-model 概率无效的 bug +## 0.4.8(2021-10-27) +- 修复 v-model 概率无效的 bug +## 0.4.7(2021-10-25) +- 新增 属性 spaceInfo 服务空间配置 HBuilderX 3.2.11+ +- 修复 树型 uniCloud 数据类型为 int 时报错的 bug +## 0.4.6(2021-10-19) +- 修复 非 VUE3 v-model 为 0 时无法选中的 bug +## 0.4.5(2021-09-26) +- 新增 清除已选项的功能(通过 clearIcon 属性配置是否显示按钮),同时提供 clear 方法以供调用,二者等效 +- 修复 readonly 为 true 时报错的 bug +## 0.4.4(2021-09-26) +- 修复 上一版本造成的 map 属性失效的 bug +- 新增 ellipsis 属性,支持配置 tab 选项长度过长时是否自动省略 +## 0.4.3(2021-09-24) +- 修复 某些情况下级联未触发的 bug +## 0.4.2(2021-09-23) +- 新增 提供 show 和 hide 方法,开发者可以通过 ref 调用 +- 新增 选项内容过长自动添加省略号 +## 0.4.1(2021-09-15) +- 新增 map 属性 字段映射,将 text/value 映射到数据中的其他字段 +## 0.4.0(2021-07-13) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.3.5(2021-06-04) +- 修复 无法加载云端数据的问题 +## 0.3.4(2021-05-28) +- 修复 v-model 无效问题 +- 修复 loaddata 为空数据组时加载时间过长问题 +- 修复 上个版本引出的本地数据无法选择带有 children 的 2 级节点 +## 0.3.3(2021-05-12) +- 新增 组件示例地址 +## 0.3.2(2021-04-22) +- 修复 非树形数据有 where 属性查询报错的问题 +## 0.3.1(2021-04-15) +- 修复 本地数据概率无法回显时问题 +## 0.3.0(2021-04-07) +- 新增 支持云端非树形表结构数据 +- 修复 根节点 parent_field 字段等于 null 时选择界面错乱问题 +## 0.2.0(2021-03-15) +- 修复 nodeclick、popupopened、popupclosed 事件无法触发的问题 +## 0.1.9(2021-03-09) +- 修复 微信小程序某些情况下无法选择的问题 +## 0.1.8(2021-02-05) +- 优化 部分样式在 nvue 上的兼容表现 +## 0.1.7(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue new file mode 100644 index 0000000..179a4e0 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue @@ -0,0 +1,551 @@ + + + + + diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js new file mode 100644 index 0000000..cfae22a --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js @@ -0,0 +1,622 @@ +export default { + props: { + localdata: { + type: [Array, Object], + default () { + return [] + } + }, + spaceInfo: { + type: Object, + default () { + return {} + } + }, + collection: { + type: String, + default: '' + }, + action: { + type: String, + default: '' + }, + field: { + type: String, + default: '' + }, + orderby: { + type: String, + default: '' + }, + where: { + type: [String, Object], + default: '' + }, + pageData: { + type: String, + default: 'add' + }, + pageCurrent: { + type: Number, + default: 1 + }, + pageSize: { + type: Number, + default: 500 + }, + getcount: { + type: [Boolean, String], + default: false + }, + getone: { + type: [Boolean, String], + default: false + }, + gettree: { + type: [Boolean, String], + default: false + }, + manual: { + type: Boolean, + default: false + }, + value: { + type: [Array, String, Number], + default () { + return [] + } + }, + modelValue: { + type: [Array, String, Number], + default () { + return [] + } + }, + preload: { + type: Boolean, + default: false + }, + stepSearh: { + type: Boolean, + default: true + }, + selfField: { + type: String, + default: '' + }, + parentField: { + type: String, + default: '' + }, + multiple: { + type: Boolean, + default: false + }, + map: { + type: Object, + default () { + return { + text: "text", + value: "value" + } + } + } + }, + data() { + return { + loading: false, + errorMessage: '', + loadMore: { + contentdown: '', + contentrefresh: '', + contentnomore: '' + }, + dataList: [], + selected: [], + selectedIndex: 0, + page: { + current: this.pageCurrent, + size: this.pageSize, + count: 0 + } + } + }, + computed: { + isLocalData() { + return !this.collection.length; + }, + isCloudData() { + return this.collection.length > 0; + }, + isCloudDataList() { + return (this.isCloudData && (!this.parentField && !this.selfField)); + }, + isCloudDataTree() { + return (this.isCloudData && this.parentField && this.selfField); + }, + dataValue() { + let isModelValue = Array.isArray(this.modelValue) ? (this.modelValue.length > 0) : (this.modelValue !== null || + this.modelValue !== undefined); + return isModelValue ? this.modelValue : this.value; + }, + hasValue() { + if (typeof this.dataValue === 'number') { + return true + } + return (this.dataValue != null) && (this.dataValue.length > 0) + } + }, + created() { + this.$watch(() => { + var al = []; + ['pageCurrent', + 'pageSize', + 'spaceInfo', + 'value', + 'modelValue', + 'localdata', + 'collection', + 'action', + 'field', + 'orderby', + 'where', + 'getont', + 'getcount', + 'gettree' + ].forEach(key => { + al.push(this[key]) + }); + return al + }, (newValue, oldValue) => { + let needReset = false + for (let i = 2; i < newValue.length; i++) { + if (newValue[i] != oldValue[i]) { + needReset = true + break + } + } + if (newValue[0] != oldValue[0]) { + this.page.current = this.pageCurrent + } + this.page.size = this.pageSize + + this.onPropsChange() + }) + this._treeData = [] + }, + methods: { + onPropsChange() { + this._treeData = []; + }, + + // 填充 pickview 数据 + async loadData() { + if (this.isLocalData) { + this.loadLocalData(); + } else if (this.isCloudDataList) { + this.loadCloudDataList(); + } else if (this.isCloudDataTree) { + this.loadCloudDataTree(); + } + }, + + // 加载本地数据 + async loadLocalData() { + this._treeData = []; + this._extractTree(this.localdata, this._treeData); + + let inputValue = this.dataValue; + if (inputValue === undefined) { + return; + } + + if (Array.isArray(inputValue)) { + inputValue = inputValue[inputValue.length - 1]; + if (typeof inputValue === 'object' && inputValue[this.map.value]) { + inputValue = inputValue[this.map.value]; + } + } + + this.selected = this._findNodePath(inputValue, this.localdata); + }, + + // 加载 Cloud 数据 (单列) + async loadCloudDataList() { + if (this.loading) { + return; + } + this.loading = true; + + try { + let response = await this.getCommand(); + let responseData = response.result.data; + + this._treeData = responseData; + + this._updateBindData(); + this._updateSelected(); + + this.onDataChange(); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 加载 Cloud 数据 (树形) + async loadCloudDataTree() { + if (this.loading) { + return; + } + this.loading = true; + + try { + let commandOptions = { + field: this._cloudDataPostField(), + where: this._cloudDataTreeWhere() + }; + if (this.gettree) { + commandOptions.startwith = `${this.selfField}=='${this.dataValue}'`; + } + + let response = await this.getCommand(commandOptions); + let responseData = response.result.data; + + this._treeData = responseData; + this._updateBindData(); + this._updateSelected(); + + this.onDataChange(); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 加载 Cloud 数据 (节点) + async loadCloudDataNode(callback) { + if (this.loading) { + return; + } + this.loading = true; + + try { + let commandOptions = { + field: this._cloudDataPostField(), + where: this._cloudDataNodeWhere() + }; + + let response = await this.getCommand(commandOptions); + let responseData = response.result.data; + + callback(responseData); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 回显 Cloud 数据 + getCloudDataValue() { + if (this.isCloudDataList) { + return this.getCloudDataListValue(); + } + + if (this.isCloudDataTree) { + return this.getCloudDataTreeValue(); + } + }, + + // 回显 Cloud 数据 (单列) + getCloudDataListValue() { + // 根据 field's as value标识匹配 where 条件 + let where = []; + let whereField = this._getForeignKeyByField(); + if (whereField) { + where.push(`${whereField} == '${this.dataValue}'`) + } + + where = where.join(' || '); + + if (this.where) { + where = `(${this.where}) && (${where})` + } + + return this.getCommand({ + field: this._cloudDataPostField(), + where + }).then((res) => { + this.selected = res.result.data; + return res.result.data; + }); + }, + + // 回显 Cloud 数据 (树形) + getCloudDataTreeValue() { + return this.getCommand({ + field: this._cloudDataPostField(), + getTreePath: { + startWith: `${this.selfField}=='${this.dataValue}'` + } + }).then((res) => { + let treePath = []; + this._extractTreePath(res.result.data, treePath); + this.selected = treePath; + return treePath; + }); + }, + + getCommand(options = {}) { + /* eslint-disable no-undef */ + let db = uniCloud.database(this.spaceInfo) + + const action = options.action || this.action + if (action) { + db = db.action(action) + } + + const collection = options.collection || this.collection + db = db.collection(collection) + + const where = options.where || this.where + if (!(!where || !Object.keys(where).length)) { + db = db.where(where) + } + + const field = options.field || this.field + if (field) { + db = db.field(field) + } + + const orderby = options.orderby || this.orderby + if (orderby) { + db = db.orderBy(orderby) + } + + const current = options.pageCurrent !== undefined ? options.pageCurrent : this.page.current + const size = options.pageSize !== undefined ? options.pageSize : this.page.size + const getCount = options.getcount !== undefined ? options.getcount : this.getcount + const getTree = options.gettree !== undefined ? options.gettree : this.gettree + + const getOptions = { + getCount, + getTree + } + if (options.getTreePath) { + getOptions.getTreePath = options.getTreePath + } + + db = db.skip(size * (current - 1)).limit(size).get(getOptions) + + return db + }, + + _cloudDataPostField() { + let fields = [this.field]; + if (this.parentField) { + fields.push(`${this.parentField} as parent_value`); + } + return fields.join(','); + }, + + _cloudDataTreeWhere() { + let result = [] + let selected = this.selected + let parentField = this.parentField + if (parentField) { + result.push(`${parentField} == null || ${parentField} == ""`) + } + if (selected.length) { + for (var i = 0; i < selected.length - 1; i++) { + result.push(`${parentField} == '${selected[i].value}'`) + } + } + + let where = [] + if (this.where) { + where.push(`(${this.where})`) + } + + if (result.length) { + where.push(`(${result.join(' || ')})`) + } + + return where.join(' && ') + }, + + _cloudDataNodeWhere() { + let where = [] + let selected = this.selected; + if (selected.length) { + where.push(`${this.parentField} == '${selected[selected.length - 1].value}'`); + } + + where = where.join(' || '); + + if (this.where) { + return `(${this.where}) && (${where})` + } + + return where + }, + + _getWhereByForeignKey() { + let result = [] + let whereField = this._getForeignKeyByField(); + if (whereField) { + result.push(`${whereField} == '${this.dataValue}'`) + } + + if (this.where) { + return `(${this.where}) && (${result.join(' || ')})` + } + + return result.join(' || ') + }, + + _getForeignKeyByField() { + let fields = this.field.split(','); + let whereField = null; + for (let i = 0; i < fields.length; i++) { + const items = fields[i].split('as'); + if (items.length < 2) { + continue; + } + if (items[1].trim() === 'value') { + whereField = items[0].trim(); + break; + } + } + return whereField; + }, + + _updateBindData(node) { + const { + dataList, + hasNodes + } = this._filterData(this._treeData, this.selected) + + let isleaf = this._stepSearh === false && !hasNodes + + if (node) { + node.isleaf = isleaf + } + + this.dataList = dataList + this.selectedIndex = dataList.length - 1 + + if (!isleaf && this.selected.length < dataList.length) { + this.selected.push({ + value: null, + text: "请选择" + }) + } + + return { + isleaf, + hasNodes + } + }, + + _updateSelected() { + let dl = this.dataList + let sl = this.selected + let textField = this.map.text + let valueField = this.map.value + for (let i = 0; i < sl.length; i++) { + let value = sl[i].value + let dl2 = dl[i] + for (let j = 0; j < dl2.length; j++) { + let item2 = dl2[j] + if (item2[valueField] === value) { + sl[i].text = item2[textField] + break + } + } + } + }, + + _filterData(data, paths) { + let dataList = [] + let hasNodes = true + + dataList.push(data.filter((item) => { + return (item.parent_value === null || item.parent_value === undefined || item.parent_value === '') + })) + for (let i = 0; i < paths.length; i++) { + let value = paths[i].value + let nodes = data.filter((item) => { + return item.parent_value === value + }) + + if (nodes.length) { + dataList.push(nodes) + } else { + hasNodes = false + } + } + + return { + dataList, + hasNodes + } + }, + + _extractTree(nodes, result, parent_value) { + let list = result || [] + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + if (parent_value !== null && parent_value !== undefined && parent_value !== '') { + child.parent_value = parent_value + } + result.push(child) + + let children = node.children + if (children) { + this._extractTree(children, result, node[valueField]) + } + } + }, + + _extractTreePath(nodes, result) { + let list = result || [] + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + result.push(child) + + let children = node.children + if (children) { + this._extractTreePath(children, result) + } + } + }, + + _findNodePath(key, nodes, path = []) { + let textField = this.map.text + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + let children = node.children + let text = node[textField] + let value = node[valueField] + + path.push({ + value, + text + }) + + if (value === key) { + return path + } + + if (children) { + const p = this._findNodePath(key, children, path) + if (p.length) { + return p + } + } + + path.pop() + } + return [] + } + } +} diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue new file mode 100644 index 0000000..6ebced9 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/uni_modules/uni-data-picker/package.json b/uni_modules/uni-data-picker/package.json new file mode 100644 index 0000000..038f9ce --- /dev/null +++ b/uni_modules/uni-data-picker/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-data-picker", + "displayName": "uni-data-picker 数据驱动的picker选择器", + "version": "1.1.2", + "description": "单列、多列级联选择器,常用于省市区城市选择、公司部门选择、多级分类等场景", + "keywords": [ + "uni-ui", + "uniui", + "picker", + "级联", + "省市区", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-load-more", + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-data-picker/readme.md b/uni_modules/uni-data-picker/readme.md new file mode 100644 index 0000000..6cda224 --- /dev/null +++ b/uni_modules/uni-data-picker/readme.md @@ -0,0 +1,22 @@ +## DataPicker 级联选择 +> **组件名:uni-data-picker** +> 代码块: `uDataPicker` +> 关联组件:`uni-data-pickerview`、`uni-load-more`。 + + +`` 是一个选择类[datacom组件](https://uniapp.dcloud.net.cn/component/datacom)。 + +支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。 + +候选数据支持一次性加载完毕,也支持懒加载,比如示例图中,选择了“北京”后,动态加载北京的区县数据。 + +`` 组件尤其适用于地址选择、分类选择等选择类。 + +`` 支持本地数据、云端静态数据(json),uniCloud云数据库数据。 + +`` 可以通过JQL直连uniCloud云数据库,配套[DB Schema](https://uniapp.dcloud.net.cn/uniCloud/schema),可在schema2code中自动生成前端页面,还支持服务器端校验。 + +在uniCloud数据表中新建表“uni-id-address”和“opendb-city-china”,这2个表的schema自带foreignKey关联。在“uni-id-address”表的表结构页面使用schema2code生成前端页面,会自动生成地址管理的维护页面,自动从“opendb-city-china”表包含的中国所有省市区信息里选择地址。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-select/changelog.md b/uni_modules/uni-data-select/changelog.md new file mode 100644 index 0000000..eb3d1ce --- /dev/null +++ b/uni_modules/uni-data-select/changelog.md @@ -0,0 +1,35 @@ +## 1.0.6(2023-04-12) +- 修复 微信小程序点击时会改变背景颜色的 bug +## 1.0.5(2023-02-03) +- 修复 禁用时会显示清空按钮 +## 1.0.4(2023-02-02) +- 优化 查询条件短期内多次变更只查询最后一次变更后的结果 +- 调整 内部缓存键名调整为 uni-data-select-lastSelectedValue +## 1.0.3(2023-01-16) +- 修复 不关联服务空间报错的问题 +## 1.0.2(2023-01-14) +- 新增 属性 `format` 可用于格式化显示选项内容 +## 1.0.1(2022-12-06) +- 修复 当where变化时,数据不会自动更新的问题 +## 0.1.9(2022-09-05) +- 修复 微信小程序下拉框出现后选择会点击到蒙板后面的输入框 +## 0.1.8(2022-08-29) +- 修复 点击的位置不准确 +## 0.1.7(2022-08-12) +- 新增 支持 disabled 属性 +## 0.1.6(2022-07-06) +- 修复 pc端宽度异常的bug +## 0.1.5 +- 修复 pc端宽度异常的bug +## 0.1.4(2022-07-05) +- 优化 显示样式 +## 0.1.3(2022-06-02) +- 修复 localdata 赋值不生效的 bug +- 新增 支持 uni.scss 修改颜色 +- 新增 支持选项禁用(数据选项设置 disabled: true 即禁用) +## 0.1.2(2022-05-08) +- 修复 当 value 为 0 时选择不生效的 bug +## 0.1.1(2022-05-07) +- 新增 记住上次的选项(仅 collection 存在时有效) +## 0.1.0(2022-04-22) +- 初始化 diff --git a/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue b/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue new file mode 100644 index 0000000..9b32348 --- /dev/null +++ b/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue @@ -0,0 +1,517 @@ + + + + + diff --git a/uni_modules/uni-data-select/package.json b/uni_modules/uni-data-select/package.json new file mode 100644 index 0000000..0187429 --- /dev/null +++ b/uni_modules/uni-data-select/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-data-select", + "displayName": "uni-data-select 下拉框选择器", + "version": "1.0.6", + "description": "通过数据驱动的下拉框选择器", + "keywords": [ + "uni-ui", + "select", + "uni-data-select", + "下拉框", + "下拉选" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.1" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-load-more"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "u", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-select/readme.md b/uni_modules/uni-data-select/readme.md new file mode 100644 index 0000000..eb58de3 --- /dev/null +++ b/uni_modules/uni-data-select/readme.md @@ -0,0 +1,8 @@ +## DataSelect 下拉框选择器 +> **组件名:uni-data-select** +> 代码块: `uDataSelect` + +当选项过多时,使用下拉菜单展示并选择内容 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-select) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-dateformat/changelog.md b/uni_modules/uni-dateformat/changelog.md new file mode 100644 index 0000000..d551d7b --- /dev/null +++ b/uni_modules/uni-dateformat/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-dateformat](https://uniapp.dcloud.io/component/uniui/uni-dateformat) +## 0.0.5(2021-07-08) +- 调整 默认时间不再是当前时间,而是显示'-'字符 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 +- 修复 iOS 平台日期格式化出错的问题 diff --git a/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js b/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js new file mode 100644 index 0000000..e00d559 --- /dev/null +++ b/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js @@ -0,0 +1,200 @@ +// yyyy-MM-dd hh:mm:ss.SSS 所有支持的类型 +function pad(str, length = 2) { + str += '' + while (str.length < length) { + str = '0' + str + } + return str.slice(-length) +} + +const parser = { + yyyy: (dateObj) => { + return pad(dateObj.year, 4) + }, + yy: (dateObj) => { + return pad(dateObj.year) + }, + MM: (dateObj) => { + return pad(dateObj.month) + }, + M: (dateObj) => { + return dateObj.month + }, + dd: (dateObj) => { + return pad(dateObj.day) + }, + d: (dateObj) => { + return dateObj.day + }, + hh: (dateObj) => { + return pad(dateObj.hour) + }, + h: (dateObj) => { + return dateObj.hour + }, + mm: (dateObj) => { + return pad(dateObj.minute) + }, + m: (dateObj) => { + return dateObj.minute + }, + ss: (dateObj) => { + return pad(dateObj.second) + }, + s: (dateObj) => { + return dateObj.second + }, + SSS: (dateObj) => { + return pad(dateObj.millisecond, 3) + }, + S: (dateObj) => { + return dateObj.millisecond + }, +} + +// 这都n年了iOS依然不认识2020-12-12,需要转换为2020/12/12 +function getDate(time) { + if (time instanceof Date) { + return time + } + switch (typeof time) { + case 'string': + { + // 2020-12-12T12:12:12.000Z、2020-12-12T12:12:12.000 + if (time.indexOf('T') > -1) { + return new Date(time) + } + return new Date(time.replace(/-/g, '/')) + } + default: + return new Date(time) + } +} + +export function formatDate(date, format = 'yyyy/MM/dd hh:mm:ss') { + if (!date && date !== 0) { + return '' + } + date = getDate(date) + const dateObj = { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + hour: date.getHours(), + minute: date.getMinutes(), + second: date.getSeconds(), + millisecond: date.getMilliseconds() + } + const tokenRegExp = /yyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S/ + let flag = true + let result = format + while (flag) { + flag = false + result = result.replace(tokenRegExp, function(matched) { + flag = true + return parser[matched](dateObj) + }) + } + return result +} + +export function friendlyDate(time, { + locale = 'zh', + threshold = [60000, 3600000], + format = 'yyyy/MM/dd hh:mm:ss' +}) { + if (time === '-') { + return time + } + if (!time && time !== 0) { + return '' + } + const localeText = { + zh: { + year: '年', + month: '月', + day: '天', + hour: '小时', + minute: '分钟', + second: '秒', + ago: '前', + later: '后', + justNow: '刚刚', + soon: '马上', + template: '{num}{unit}{suffix}' + }, + en: { + year: 'year', + month: 'month', + day: 'day', + hour: 'hour', + minute: 'minute', + second: 'second', + ago: 'ago', + later: 'later', + justNow: 'just now', + soon: 'soon', + template: '{num} {unit} {suffix}' + } + } + const text = localeText[locale] || localeText.zh + let date = getDate(time) + let ms = date.getTime() - Date.now() + let absMs = Math.abs(ms) + if (absMs < threshold[0]) { + return ms < 0 ? text.justNow : text.soon + } + if (absMs >= threshold[1]) { + return formatDate(date, format) + } + let num + let unit + let suffix = text.later + if (ms < 0) { + suffix = text.ago + ms = -ms + } + const seconds = Math.floor((ms) / 1000) + const minutes = Math.floor(seconds / 60) + const hours = Math.floor(minutes / 60) + const days = Math.floor(hours / 24) + const months = Math.floor(days / 30) + const years = Math.floor(months / 12) + switch (true) { + case years > 0: + num = years + unit = text.year + break + case months > 0: + num = months + unit = text.month + break + case days > 0: + num = days + unit = text.day + break + case hours > 0: + num = hours + unit = text.hour + break + case minutes > 0: + num = minutes + unit = text.minute + break + default: + num = seconds + unit = text.second + break + } + + if (locale === 'en') { + if (num === 1) { + num = 'a' + } else { + unit += 's' + } + } + + return text.template.replace(/{\s*num\s*}/g, num + '').replace(/{\s*unit\s*}/g, unit).replace(/{\s*suffix\s*}/g, + suffix) +} diff --git a/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue b/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue new file mode 100644 index 0000000..c5ed030 --- /dev/null +++ b/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/uni_modules/uni-dateformat/package.json b/uni_modules/uni-dateformat/package.json new file mode 100644 index 0000000..786a670 --- /dev/null +++ b/uni_modules/uni-dateformat/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-dateformat", + "displayName": "uni-dateformat 日期格式化", + "version": "1.0.0", + "description": "日期格式化组件,可以将日期格式化为1分钟前、刚刚等形式", + "keywords": [ + "uni-ui", + "uniui", + "日期格式化", + "时间格式化", + "格式化时间", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-dateformat/readme.md b/uni_modules/uni-dateformat/readme.md new file mode 100644 index 0000000..37ddb6e --- /dev/null +++ b/uni_modules/uni-dateformat/readme.md @@ -0,0 +1,11 @@ + + +### DateFormat 日期格式化 +> **组件名:uni-dateformat** +> 代码块: `uDateformat` + + +日期格式化组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-dateformat) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/changelog.md b/uni_modules/uni-datetime-picker/changelog.md new file mode 100644 index 0000000..1f1a554 --- /dev/null +++ b/uni_modules/uni-datetime-picker/changelog.md @@ -0,0 +1,133 @@ +## 2.2.22(2023-03-30) +- 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937) +- 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979) +## 2.2.21(2023-02-20) +- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) +## 2.2.20(2023-02-17) +- 优化 值为空依然选中当天问题 +- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 +- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 +- 优化 字节小程序日期时间范围选择,底部日期换行问题 +## 2.2.19(2023-02-09) +- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) +## 2.2.18(2023-02-08) +- 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684) +- 优化 PC端输入日期格式错误时返回当前日期时间 +- 优化 PC端输入日期时间超出 start、end 限制的Bug +- 优化 移动端日期时间范围用法时间展示不完整问题 +## 2.2.17(2023-02-04) +- 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679) +- 修复 vue3 time-picker 无法显示绑定时分秒的Bug +## 2.2.16(2023-02-02) +- 修复 字节小程序报错的Bug +## 2.2.15(2023-02-02) +- 修复 某些情况切换月份错误的Bug +## 2.2.14(2023-01-30) +- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/162033) +## 2.2.13(2023-01-10) +- 修复 多次加载组件造成内存占用的Bug +## 2.2.12(2022-12-01) +- 修复 vue3 下 i18n 国际化初始值不正确的Bug +## 2.2.11(2022-09-19) +- 修复 支付宝小程序样式错乱的Bug [详情](https://github.com/dcloudio/uni-app/issues/3861) +## 2.2.10(2022-09-19) +- 修复 反向选择日期范围,日期显示异常的Bug [详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +## 2.2.9(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 2.2.8(2022-09-08) +- 修复 close事件无效的Bug +## 2.2.7(2022-09-05) +- 修复 移动端 maskClick 无效的Bug [详情](https://ask.dcloud.net.cn/question/140824) +## 2.2.6(2022-06-30) +- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +## 2.2.5(2022-06-24) +- 修复 日历顶部年月及底部确认未国际化的Bug +## 2.2.4(2022-03-31) +- 修复 Vue3 下动态赋值,单选类型未响应的Bug +## 2.2.3(2022-03-28) +- 修复 Vue3 下动态赋值未响应的Bug +## 2.2.2(2021-12-10) +- 修复 clear-icon 属性在小程序平台不生效的Bug +## 2.2.1(2021-12-10) +- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的Bug +## 2.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源 [详情](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移 [https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +## 2.1.5(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 2.1.4(2021-09-10) +- 修复 hide-second 在移动端的Bug +- 修复 单选赋默认值时,赋值日期未高亮的Bug +- 修复 赋默认值时,移动端未正确显示时间的Bug +## 2.1.3(2021-09-09) +- 新增 hide-second 属性,支持只使用时分,隐藏秒 +## 2.1.2(2021-09-03) +- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- 优化 调整字号大小,美化日历界面 +- 修复 因国际化导致的 placeholder 失效的Bug +## 2.1.1(2021-08-24) +- 新增 支持国际化 +- 优化 范围选择器在 pc 端过宽的问题 +## 2.1.0(2021-08-09) +- 新增 适配 vue3 +## 2.0.19(2021-08-09) +- 新增 支持作为 uni-forms 子组件相关功能 +- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的Bug +## 2.0.18(2021-08-05) +- 修复 type 属性动态赋值无效的Bug +- 修复 ‘确认’按钮被 tabbar 遮盖 bug +- 修复 组件未赋值时范围选左、右日历相同的Bug +## 2.0.17(2021-08-04) +- 修复 范围选未正确显示当前值的Bug +- 修复 h5 平台(移动端)报错 'cale' of undefined 的Bug +## 2.0.16(2021-07-21) +- 新增 return-type 属性支持返回 date 日期对象 +## 2.0.15(2021-07-14) +- 修复 单选日期类型,初始赋值后不在当前日历的Bug +- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- 优化 移动端移除显示框的清空按钮,无实际用途 +## 2.0.14(2021-07-14) +- 修复 组件赋值为空,界面未更新的Bug +- 修复 start 和 end 不能动态赋值的Bug +- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的Bug +## 2.0.13(2021-07-08) +- 修复 范围选择不能动态赋值的Bug +## 2.0.12(2021-07-08) +- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +## 2.0.11(2021-07-08) +- 优化 弹出层在超出视窗边缘定位不准确的问题 +## 2.0.10(2021-07-08) +- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的Bug +- 优化 弹出层在超出视窗边缘被遮盖的问题 +## 2.0.9(2021-07-07) +- 新增 maskClick 事件 +- 修复 特殊情况日历 rpx 布局错误的Bug,rpx -> px +- 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +## 2.0.8(2021-07-07) +- 新增 日期时间显示框支持插槽 +## 2.0.7(2021-07-01) +- 优化 添加 uni-icons 依赖 +## 2.0.6(2021-05-22) +- 修复 图标在小程序上不显示的Bug +- 优化 重命名引用组件,避免潜在组件命名冲突 +## 2.0.5(2021-05-20) +- 优化 代码目录扁平化 +## 2.0.4(2021-05-12) +- 新增 组件示例地址 +## 2.0.3(2021-05-10) +- 修复 ios 下不识别 '-' 日期格式的Bug +- 优化 pc 下弹出层添加边框和阴影 +## 2.0.2(2021-05-08) +- 修复 在 admin 中获取弹出层定位错误的bug +## 2.0.1(2021-05-08) +- 修复 type 属性向下兼容,默认值从 date 变更为 datetime +## 2.0.0(2021-04-30) +- 支持日历形式的日期+时间的范围选择 + > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker) +## 1.0.6(2021-03-18) +- 新增 hide-second 属性,时间支持仅选择时、分 +- 修复 选择跟显示的日期不一样的Bug +- 修复 chang事件触发2次的Bug +- 修复 分、秒 end 范围错误的Bug +- 优化 更好的 nvue 适配 diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue new file mode 100644 index 0000000..dba9887 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue new file mode 100644 index 0000000..3418f49 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue @@ -0,0 +1,928 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json new file mode 100644 index 0000000..024f22f --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "select date", + "uni-datetime-picker.selectTime": "select time", + "uni-datetime-picker.selectDateTime": "select date and time", + "uni-datetime-picker.startDate": "start date", + "uni-datetime-picker.endDate": "end date", + "uni-datetime-picker.startTime": "start time", + "uni-datetime-picker.endTime": "end time", + "uni-datetime-picker.ok": "ok", + "uni-datetime-picker.clear": "clear", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", + "uni-datetime-picker.month": "", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN", + "uni-calender.confirm": "confirm" +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json new file mode 100644 index 0000000..d2df5e7 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "选择日期", + "uni-datetime-picker.selectTime": "选择时间", + "uni-datetime-picker.selectDateTime": "选择日期时间", + "uni-datetime-picker.startDate": "开始日期", + "uni-datetime-picker.endDate": "结束日期", + "uni-datetime-picker.startTime": "开始时间", + "uni-datetime-picker.endTime": "结束时间", + "uni-datetime-picker.ok": "确定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "确认" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json new file mode 100644 index 0000000..d23fa3c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "選擇日期", + "uni-datetime-picker.selectTime": "選擇時間", + "uni-datetime-picker.selectDateTime": "選擇日期時間", + "uni-datetime-picker.startDate": "開始日期", + "uni-datetime-picker.endDate": "結束日期", + "uni-datetime-picker.startTime": "開始时间", + "uni-datetime-picker.endTime": "結束时间", + "uni-datetime-picker.ok": "確定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "確認" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue new file mode 100644 index 0000000..81a042a --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue @@ -0,0 +1,934 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue new file mode 100644 index 0000000..bd96488 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue @@ -0,0 +1,1026 @@ + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js new file mode 100644 index 0000000..7dc34c4 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js @@ -0,0 +1,403 @@ +class Calendar { + constructor({ + selected, + startDate, + endDate, + range, + } = {}) { + // 当前日期 + this.date = this.getDateObj(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 起始时间 + this.startDate = startDate + // 终止时间 + this.endDate = endDate + // 是否范围选择 + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + this.lastHover = false + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + const selectDate = this.getDateObj(date) + this.getWeeks(selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + setStartDate(startDate) { + this.startDate = startDate + } + + setEndDate(endDate) { + this.endDate = endDate + } + + getPreMonthObj(date){ + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth - 1) + const newMonth = date.getMonth() + if(oldMonth !== 0 && newMonth - oldMonth === 0){ + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + getNextMonthObj(date){ + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth + 1) + const newMonth = date.getMonth() + if(newMonth - oldMonth > 1){ + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + + /** + * 获取指定格式Date对象 + */ + getDateObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + return { + fullDate: getDate(date), + year: date.getFullYear(), + month: addZero(date.getMonth() + 1), + date: addZero(date.getDate()), + day: date.getDay() + } + } + + /** + * 获取上一个月日期集合 + */ + getPreMonthDays(amount, dateObj) { + const result = [] + for (let i = amount - 1; i >= 0; i--) { + const month = dateObj.month - 1 + result.push({ + date: new Date(dateObj.year, month, -i).getDate(), + month, + disable: true + }) + } + return result + } + /** + * 获取本月日期集合 + */ + getCurrentMonthDays(amount, dateObj) { + const result = [] + const fullDate = this.date.fullDate + for (let i = 1; i <= amount; i++) { + const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}` + const isToday = fullDate === currentDate + // 获取打点信息 + const info = this.selected && this.selected.find((item) => { + if (this.dateEqual(currentDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + disableBefore = dateCompare(this.startDate, currentDate) + } + + if (this.endDate) { + disableAfter = dateCompare(currentDate, this.endDate) + } + + let multiples = this.multipleStatus.data + let multiplesStatus = -1 + if (this.range && multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, currentDate) + }) + } + const checked = multiplesStatus !== -1 + + result.push({ + fullDate: currentDate, + year: dateObj.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after), + month: dateObj.month, + disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare(currentDate,this.endDate)), + isToday, + userChecked: false, + extraInfo: info + }) + } + return result + } + /** + * 获取下一个月日期集合 + */ + _getNextMonthDays(amount, dateObj) { + const result = [] + const month = dateObj.month + 1 + for (let i = 1; i <= amount; i++) { + result.push({ + date: i, + month, + disable: true + }) + } + return result + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + + return this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate) + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + before = new Date(fixIosDateFormat(before)) + after = new Date(fixIosDateFormat(after)) + return before.valueOf() === after.valueOf() + } + + /** + * 比较真实起始日期 + */ + + isLogicBefore(currentDate, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDate) + } + + isLogicAfter(currentDate, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDate) + } + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDateObj(new Date(parseInt(k))).fullDate) + } + return arr + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + if (!this.range) return + + let { + before, + after + } = this.multipleStatus + if (before && after) { + if (!this.lastHover) { + this.lastHover = true + return + } + this.multipleStatus.before = fullDate + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this.multipleStatus.fulldate = '' + this.lastHover = false + } else { + if (!before) { + this.multipleStatus.before = fullDate + this.lastHover = false + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus + .after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus + .before); + } + this.lastHover = true + } + } + this.getWeeks(fullDate) + } + + /** + * 鼠标 hover 更新多选状态 + */ + setHoverMultiple(fullDate) { + if (!this.range || this.lastHover) return + + const { before } = this.multipleStatus + + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + this.getWeeks(fullDate) + } + + /** + * 更新默认值多选状态 + */ + setDefaultMultiple(before, after) { + this.multipleStatus.before = before + this.multipleStatus.after = after + if (before && after) { + if (dateCompare(before, after)) { + this.multipleStatus.data = this.geDateAll(before, after); + this.getWeeks(after) + } else { + this.multipleStatus.data = this.geDateAll(after, before); + this.getWeeks(before) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + getWeeks(dateData) { + const { + year, + month, + } = this.getDateObj(dateData) + + const preMonthDayAmount = new Date(year, month - 1, 1).getDay() + const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData)) + + const currentMonthDayAmount = new Date(year, month, 0).getDate() + const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData)) + + const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount + const nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData)) + + const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays] + + const weeks = new Array(6) + for (let i = 0; i < calendarDays.length; i++) { + const index = Math.floor(i / 7) + if(!weeks[index]){ + weeks[index] = new Array(7) + } + weeks[index][i % 7] = calendarDays[i] + } + + this.calendar = calendarDays + this.weeks = weeks + } +} + +function getDateTime(date, hideSecond){ + return `${getDate(date)} ${getTime(date, hideSecond)}` +} + +function getDate(date) { + date = fixIosDateFormat(date) + date = new Date(date) + const year = date.getFullYear() + const month = date.getMonth()+1 + const day = date.getDate() + return `${year}-${addZero(month)}-${addZero(day)}` +} + +function getTime(date, hideSecond){ + date = fixIosDateFormat(date) + date = new Date(date) + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + return hideSecond ? `${addZero(hour)}:${addZero(minute)}` : `${addZero(hour)}:${addZero(minute)}:${addZero(second)}` +} + +function addZero(num) { + if(num < 10){ + num = `0${num}` + } + return num +} + +function getDefaultSecond(hideSecond) { + return hideSecond ? '00:00' : '00:00:00' +} + +function dateCompare(startDate, endDate) { + startDate = new Date(fixIosDateFormat(startDate)) + endDate = new Date(fixIosDateFormat(endDate)) + return startDate <= endDate +} + +function checkDate(date){ + const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g + return date.match(dateReg) +} + +const dateTimeReg = /^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])( [0-5][0-9]:[0-5][0-9]:[0-5][0-9])?$/ +function fixIosDateFormat(value) { + if (typeof value === 'string' && dateTimeReg.test(value)) { + value = value.replace(/-/g, '/') + } + return value +} + +export {Calendar, getDateTime, getDate, getTime, addZero, getDefaultSecond, dateCompare, checkDate, fixIosDateFormat} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/package.json b/uni_modules/uni-datetime-picker/package.json new file mode 100644 index 0000000..8abed63 --- /dev/null +++ b/uni_modules/uni-datetime-picker/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-datetime-picker", + "displayName": "uni-datetime-picker 日期选择器", + "version": "2.2.22", + "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", + "keywords": [ + "uni-datetime-picker", + "uni-ui", + "uniui", + "日期时间选择器", + "日期时间" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-datetime-picker/readme.md b/uni_modules/uni-datetime-picker/readme.md new file mode 100644 index 0000000..162fbef --- /dev/null +++ b/uni_modules/uni-datetime-picker/readme.md @@ -0,0 +1,21 @@ + + +> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` + +## DatetimePicker 时间选择器 + +> **组件名:uni-datetime-picker** +> 代码块: `uDatetimePicker` + + +该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 + +若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 + +**_点击 picker 默认值规则:_** + +- 若设置初始值 value, 会显示在 picker 显示框中 +- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-drawer/changelog.md b/uni_modules/uni-drawer/changelog.md new file mode 100644 index 0000000..6d2488c --- /dev/null +++ b/uni_modules/uni-drawer/changelog.md @@ -0,0 +1,13 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中个别scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-drawer](https://uniapp.dcloud.io/component/uniui/uni-drawer) +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-drawer/components/uni-drawer/keypress.js b/uni_modules/uni-drawer/components/uni-drawer/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-drawer/components/uni-drawer/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue b/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue new file mode 100644 index 0000000..82331a8 --- /dev/null +++ b/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/uni_modules/uni-drawer/package.json b/uni_modules/uni-drawer/package.json new file mode 100644 index 0000000..dd056e4 --- /dev/null +++ b/uni_modules/uni-drawer/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-drawer", + "displayName": "uni-drawer 抽屉", + "version": "1.2.1", + "description": "抽屉式导航,用于展示侧滑菜单,侧滑导航。", + "keywords": [ + "uni-ui", + "uniui", + "drawer", + "抽屉", + "侧滑导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-drawer/readme.md b/uni_modules/uni-drawer/readme.md new file mode 100644 index 0000000..dcf6e6b --- /dev/null +++ b/uni_modules/uni-drawer/readme.md @@ -0,0 +1,10 @@ + + +## Drawer 抽屉 +> **组件名:uni-drawer** +> 代码块: `uDrawer` + +抽屉侧滑菜单。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-drawer) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-easyinput/changelog.md b/uni_modules/uni-easyinput/changelog.md new file mode 100644 index 0000000..765401a --- /dev/null +++ b/uni_modules/uni-easyinput/changelog.md @@ -0,0 +1,97 @@ +## 1.1.9(2023-04-11) +- 修复 vue3 下 keyboardheightchange 事件报错的bug +## 1.1.8(2023-03-29) +- 优化 trim 属性默认值 +## 1.1.7(2023-03-29) +- 新增 cursor-spacing 属性 +## 1.1.6(2023-01-28) +- 新增 keyboardheightchange 事件,可监听键盘高度变化 +## 1.1.5(2022-11-29) +- 优化 主题样式 +## 1.1.4(2022-10-27) +- 修复 props 中背景颜色无默认值的bug +## 1.1.0(2022-06-30) + +- 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容 +- 新增 clear 事件,点击右侧叉号图标触发 +- 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发 +- 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等 + +## 1.0.5(2022-06-07) + +- 优化 clearable 显示策略 + +## 1.0.4(2022-06-07) + +- 优化 clearable 显示策略 + +## 1.0.3(2022-05-20) + +- 修复 关闭图标某些情况下无法取消的 bug + +## 1.0.2(2022-04-12) + +- 修复 默认值不生效的 bug + +## 1.0.1(2022-04-02) + +- 修复 value 不能为 0 的 bug + +## 1.0.0(2021-11-19) + +- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-easyinput](https://uniapp.dcloud.io/component/uniui/uni-easyinput) + +## 0.1.4(2021-08-20) + +- 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug + +## 0.1.3(2021-08-11) + +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 + +## 0.1.2(2021-07-30) + +- 优化 vue3 下事件警告的问题 + +## 0.1.1 + +- 优化 errorMessage 属性支持 Boolean 类型 + +## 0.1.0(2021-07-13) + +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) + +## 0.0.16(2021-06-29) + +- 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug + +## 0.0.15(2021-06-21) + +- 修复 passwordIcon 属性拼写错误的 bug + +## 0.0.14(2021-06-18) + +- 新增 passwordIcon 属性,当 type=password 时是否显示小眼睛图标 +- 修复 confirmType 属性不生效的问题 + +## 0.0.13(2021-06-04) + +- 修复 disabled 状态可清出内容的 bug + +## 0.0.12(2021-05-12) + +- 新增 组件示例地址 + +## 0.0.11(2021-05-07) + +- 修复 input-border 属性不生效的问题 + +## 0.0.10(2021-04-30) + +- 修复 ios 遮挡文字、显示一半的问题 + +## 0.0.9(2021-02-05) + +- 调整为 uni_modules 目录规范 +- 优化 兼容 nvue 页面 diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/common.js b/uni_modules/uni-easyinput/components/uni-easyinput/common.js new file mode 100644 index 0000000..df9abe1 --- /dev/null +++ b/uni_modules/uni-easyinput/components/uni-easyinput/common.js @@ -0,0 +1,56 @@ +/** + * @desc 函数防抖 + * @param func 目标函数 + * @param wait 延迟执行毫秒数 + * @param immediate true - 立即执行, false - 延迟执行 + */ +export const debounce = function(func, wait = 1000, immediate = true) { + let timer; + console.log(1); + return function() { + console.log(123); + let context = this, + args = arguments; + if (timer) clearTimeout(timer); + if (immediate) { + let callNow = !timer; + timer = setTimeout(() => { + timer = null; + }, wait); + if (callNow) func.apply(context, args); + } else { + timer = setTimeout(() => { + func.apply(context, args); + }, wait) + } + } +} +/** + * @desc 函数节流 + * @param func 函数 + * @param wait 延迟执行毫秒数 + * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发 + */ +export const throttle = (func, wait = 1000, type = 1) => { + let previous = 0; + let timeout; + return function() { + let context = this; + let args = arguments; + if (type === 1) { + let now = Date.now(); + + if (now - previous > wait) { + func.apply(context, args); + previous = now; + } + } else if (type === 2) { + if (!timeout) { + timeout = setTimeout(() => { + timeout = null; + func.apply(context, args) + }, wait) + } + } + } +} diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue b/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue new file mode 100644 index 0000000..2c7993a --- /dev/null +++ b/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue @@ -0,0 +1,657 @@ + + + + + diff --git a/uni_modules/uni-easyinput/package.json b/uni_modules/uni-easyinput/package.json new file mode 100644 index 0000000..bd128e1 --- /dev/null +++ b/uni_modules/uni-easyinput/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-easyinput", + "displayName": "uni-easyinput 增强输入框", + "version": "1.1.9", + "description": "Easyinput 组件是对原生input组件的增强", + "keywords": [ + "uni-ui", + "uniui", + "input", + "uni-easyinput", + "输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-easyinput/readme.md b/uni_modules/uni-easyinput/readme.md new file mode 100644 index 0000000..f1faf8f --- /dev/null +++ b/uni_modules/uni-easyinput/readme.md @@ -0,0 +1,11 @@ + + +### Easyinput 增强输入框 +> **组件名:uni-easyinput** +> 代码块: `uEasyinput` + + +easyinput 组件是对原生input组件的增强 ,是专门为配合表单组件[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)而设计的,easyinput 内置了边框,图标等,同时包含 input 所有功能 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-easyinput) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-fab/changelog.md b/uni_modules/uni-fab/changelog.md new file mode 100644 index 0000000..9bd4729 --- /dev/null +++ b/uni_modules/uni-fab/changelog.md @@ -0,0 +1,23 @@ +## 1.2.5(2023-03-29) +- 新增 pattern.icon 属性,可自定义图标 +## 1.2.4(2022-09-07) +小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false) +## 1.2.3(2022-09-05) +- 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310) +## 1.2.2(2021-12-29) +- 更新 组件依赖 +## 1.2.1(2021-11-19) +- 修复 阴影颜色不正确的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fab](https://uniapp.dcloud.io/component/uniui/uni-fab) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 按钮背景色调整 +- 优化 兼容pc端 diff --git a/uni_modules/uni-fab/components/uni-fab/uni-fab.vue b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue new file mode 100644 index 0000000..dfa65c1 --- /dev/null +++ b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue @@ -0,0 +1,491 @@ + + + + + diff --git a/uni_modules/uni-fab/package.json b/uni_modules/uni-fab/package.json new file mode 100644 index 0000000..18c0810 --- /dev/null +++ b/uni_modules/uni-fab/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-fab", + "displayName": "uni-fab 悬浮按钮", + "version": "1.2.5", + "description": "悬浮按钮 fab button ,点击可展开一个图标按钮菜单。", + "keywords": [ + "uni-ui", + "uniui", + "按钮", + "悬浮按钮", + "fab" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-fab/readme.md b/uni_modules/uni-fab/readme.md new file mode 100644 index 0000000..9a444e8 --- /dev/null +++ b/uni_modules/uni-fab/readme.md @@ -0,0 +1,9 @@ +## Fab 悬浮按钮 +> **组件名:uni-fab** +> 代码块: `uFab` + + +点击可展开一个图形按钮菜单 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-fav/changelog.md b/uni_modules/uni-fav/changelog.md new file mode 100644 index 0000000..d8a08d4 --- /dev/null +++ b/uni_modules/uni-fav/changelog.md @@ -0,0 +1,19 @@ +## 1.2.1(2022-05-30) +- 新增 stat 属性 ,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 组件示例地址 +## 1.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.3(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/en.json b/uni_modules/uni-fav/components/uni-fav/i18n/en.json new file mode 100644 index 0000000..9a0759e --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "collect", + "uni-fav.collected": "collected" +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/index.js b/uni_modules/uni-fav/components/uni-fav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uni_modules/uni-fav/components/uni-fav/uni-fav.vue b/uni_modules/uni-fav/components/uni-fav/uni-fav.vue new file mode 100644 index 0000000..d2c58df --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/uni-fav.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/uni_modules/uni-fav/package.json b/uni_modules/uni-fav/package.json new file mode 100644 index 0000000..cc14697 --- /dev/null +++ b/uni_modules/uni-fav/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-fav", + "displayName": "uni-fav 收藏按钮", + "version": "1.2.1", + "description": " Fav 收藏组件,可自定义颜色、大小。", + "keywords": [ + "fav", + "uni-ui", + "uniui", + "收藏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-fav/readme.md b/uni_modules/uni-fav/readme.md new file mode 100644 index 0000000..4de125d --- /dev/null +++ b/uni_modules/uni-fav/readme.md @@ -0,0 +1,10 @@ + + +## Fav 收藏按钮 +> **组件名:uni-fav** +> 代码块: `uFav` + +用于收藏功能,可点击切换选中、不选中的状态。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-file-picker/changelog.md b/uni_modules/uni-file-picker/changelog.md new file mode 100644 index 0000000..b8230e9 --- /dev/null +++ b/uni_modules/uni-file-picker/changelog.md @@ -0,0 +1,67 @@ +## 1.0.4(2023-03-29) +- 修复 手动上传删除一个文件后不能再上传的bug +## 1.0.3(2022-12-19) +- 新增 sourceType 属性, 可以自定义图片和视频选择的来源 +## 1.0.2(2022-07-04) +- 修复 在uni-forms下样式不生效的bug +## 1.0.1(2021-11-23) +- 修复 参数为对象的情况下,url在某些情况显示错误的bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-file-picker](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +## 0.2.16(2021-11-08) +- 修复 传入空对象 ,显示错误的Bug +## 0.2.15(2021-08-30) +- 修复 return-type="object" 时且存在v-model时,无法删除文件的Bug +## 0.2.14(2021-08-23) +- 新增 参数中返回 fileID 字段 +## 0.2.13(2021-08-23) +- 修复 腾讯云传入fileID 不能回显的bug +- 修复 选择图片后,不能放大的问题 +## 0.2.12(2021-08-17) +- 修复 由于 0.2.11 版本引起的不能回显图片的Bug +## 0.2.11(2021-08-16) +- 新增 clearFiles(index) 方法,可以手动删除指定文件 +- 修复 v-model 值设为 null 报错的Bug +## 0.2.10(2021-08-13) +- 修复 return-type="object" 时,无法删除文件的Bug +## 0.2.9(2021-08-03) +- 修复 auto-upload 属性失效的Bug +## 0.2.8(2021-07-31) +- 修复 fileExtname属性不指定值报错的Bug +## 0.2.7(2021-07-31) +- 修复 在某种场景下图片不回显的Bug +## 0.2.6(2021-07-30) +- 修复 return-type为object下,返回值不正确的Bug +## 0.2.5(2021-07-30) +- 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题 +## 0.2.3(2021-07-28) +- 优化 调整示例代码 +## 0.2.2(2021-07-27) +- 修复 vue3 下赋值错误的Bug +- 优化 h5平台下上传文件导致页面卡死的问题 +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.1(2021-07-02) +- 修复 sourceType 缺少默认值导致 ios 无法选择文件 +## 0.1.0(2021-06-30) +- 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改 +## 0.0.11(2021-06-30) +- 修复 由 0.0.10 版本引发的 returnType 属性失效的问题 +## 0.0.10(2021-06-29) +- 优化 文件上传后进度条消失时机 +## 0.0.9(2021-06-29) +- 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug +## 0.0.8(2021-06-15) +- 修复 删除文件时无法触发 v-model 的Bug +## 0.0.7(2021-05-12) +- 新增 组件示例地址 +## 0.0.6(2021-04-09) +- 修复 选择的文件非 file-extname 字段指定的扩展名报错的Bug +## 0.0.5(2021-04-09) +- 优化 更新组件示例 +## 0.0.4(2021-04-09) +- 优化 file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 微信小程序不指定 fileExtname 属性选择失败的Bug diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js b/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js new file mode 100644 index 0000000..aff0864 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js @@ -0,0 +1,224 @@ +'use strict'; + +const ERR_MSG_OK = 'chooseAndUploadFile:ok'; +const ERR_MSG_FAIL = 'chooseAndUploadFile:fail'; + +function chooseImage(opts) { + const { + count, + sizeType = ['original', 'compressed'], + sourceType, + extension + } = opts + return new Promise((resolve, reject) => { + uni.chooseImage({ + count, + sizeType, + sourceType, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res, 'image')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseVideo(opts) { + const { + camera, + compressed, + maxDuration, + sourceType, + extension + } = opts; + return new Promise((resolve, reject) => { + uni.chooseVideo({ + camera, + compressed, + maxDuration, + sourceType, + extension, + success(res) { + const { + tempFilePath, + duration, + size, + height, + width + } = res; + resolve(normalizeChooseAndUploadFileRes({ + errMsg: 'chooseVideo:ok', + tempFilePaths: [tempFilePath], + tempFiles: [ + { + name: (res.tempFile && res.tempFile.name) || '', + path: tempFilePath, + size, + type: (res.tempFile && res.tempFile.type) || '', + width, + height, + duration, + fileType: 'video', + cloudPath: '', + }, ], + }, 'video')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseVideo:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseAll(opts) { + const { + count, + extension + } = opts; + return new Promise((resolve, reject) => { + let chooseFile = uni.chooseFile; + if (typeof wx !== 'undefined' && + typeof wx.chooseMessageFile === 'function') { + chooseFile = wx.chooseMessageFile; + } + if (typeof chooseFile !== 'function') { + return reject({ + errMsg: ERR_MSG_FAIL + ' 请指定 type 类型,该平台仅支持选择 image 或 video。', + }); + } + chooseFile({ + type: 'all', + count, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res)); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseFile:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function normalizeChooseAndUploadFileRes(res, fileType) { + res.tempFiles.forEach((item, index) => { + if (!item.name) { + item.name = item.path.substring(item.path.lastIndexOf('/') + 1); + } + if (fileType) { + item.fileType = fileType; + } + item.cloudPath = + Date.now() + '_' + index + item.name.substring(item.name.lastIndexOf('.')); + }); + if (!res.tempFilePaths) { + res.tempFilePaths = res.tempFiles.map((file) => file.path); + } + return res; +} + +function uploadCloudFiles(files, max = 5, onUploadProgress) { + files = JSON.parse(JSON.stringify(files)) + const len = files.length + let count = 0 + let self = this + return new Promise(resolve => { + while (count < max) { + next() + } + + function next() { + let cur = count++ + if (cur >= len) { + !files.find(item => !item.url && !item.errMsg) && resolve(files) + return + } + const fileItem = files[cur] + const index = self.files.findIndex(v => v.uuid === fileItem.uuid) + fileItem.url = '' + delete fileItem.errMsg + + uniCloud + .uploadFile({ + filePath: fileItem.path, + cloudPath: fileItem.cloudPath, + fileType: fileItem.fileType, + onUploadProgress: res => { + res.index = index + onUploadProgress && onUploadProgress(res) + } + }) + .then(res => { + fileItem.url = res.fileID + fileItem.index = index + if (cur < len) { + next() + } + }) + .catch(res => { + fileItem.errMsg = res.errMsg || res.message + fileItem.index = index + if (cur < len) { + next() + } + }) + } + }) +} + + + + + +function uploadFiles(choosePromise, { + onChooseFile, + onUploadProgress +}) { + return choosePromise + .then((res) => { + if (onChooseFile) { + const customChooseRes = onChooseFile(res); + if (typeof customChooseRes !== 'undefined') { + return Promise.resolve(customChooseRes).then((chooseRes) => typeof chooseRes === 'undefined' ? + res : chooseRes); + } + } + return res; + }) + .then((res) => { + if (res === false) { + return { + errMsg: ERR_MSG_OK, + tempFilePaths: [], + tempFiles: [], + }; + } + return res + }) +} + +function chooseAndUploadFile(opts = { + type: 'all' +}) { + if (opts.type === 'image') { + return uploadFiles(chooseImage(opts), opts); + } + else if (opts.type === 'video') { + return uploadFiles(chooseVideo(opts), opts); + } + return uploadFiles(chooseAll(opts), opts); +} + +export { + chooseAndUploadFile, + uploadCloudFiles +}; diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue new file mode 100644 index 0000000..370441d --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue @@ -0,0 +1,667 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue new file mode 100644 index 0000000..625d92e --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue @@ -0,0 +1,325 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue new file mode 100644 index 0000000..2a29bc2 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/utils.js b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js new file mode 100644 index 0000000..60aaa3e --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js @@ -0,0 +1,109 @@ +/** + * 获取文件名和后缀 + * @param {String} name + */ +export const get_file_ext = (name) => { + const last_len = name.lastIndexOf('.') + const len = name.length + return { + name: name.substring(0, last_len), + ext: name.substring(last_len + 1, len) + } +} + +/** + * 获取扩展名 + * @param {Array} fileExtname + */ +export const get_extname = (fileExtname) => { + if (!Array.isArray(fileExtname)) { + let extname = fileExtname.replace(/(\[|\])/g, '') + return extname.split(',') + } else { + return fileExtname + } + return [] +} + +/** + * 获取文件和检测是否可选 + */ +export const get_files_and_is_max = (res, _extname) => { + let filePaths = [] + let files = [] + if(!_extname || _extname.length === 0){ + return { + filePaths, + files + } + } + res.tempFiles.forEach(v => { + let fileFullName = get_file_ext(v.name) + const extname = fileFullName.ext.toLowerCase() + if (_extname.indexOf(extname) !== -1) { + files.push(v) + filePaths.push(v.path) + } + }) + if (files.length !== res.tempFiles.length) { + uni.showToast({ + title: `当前选择了${res.tempFiles.length}个文件 ,${res.tempFiles.length - files.length} 个文件格式不正确`, + icon: 'none', + duration: 5000 + }) + } + + return { + filePaths, + files + } +} + + +/** + * 获取图片信息 + * @param {Object} filepath + */ +export const get_file_info = (filepath) => { + return new Promise((resolve, reject) => { + uni.getImageInfo({ + src: filepath, + success(res) { + resolve(res) + }, + fail(err) { + reject(err) + } + }) + }) +} +/** + * 获取封装数据 + */ +export const get_file_data = async (files, type = 'image') => { + // 最终需要上传数据库的数据 + let fileFullName = get_file_ext(files.name) + const extname = fileFullName.ext.toLowerCase() + let filedata = { + name: files.name, + uuid: files.uuid, + extname: extname || '', + cloudPath: files.cloudPath, + fileType: files.fileType, + url: files.path || files.path, + size: files.size, //单位是字节 + image: {}, + path: files.path, + video: {} + } + if (type === 'image') { + const imageinfo = await get_file_info(files.path) + delete filedata.video + filedata.image.width = imageinfo.width + filedata.image.height = imageinfo.height + filedata.image.location = imageinfo.path + } else { + delete filedata.image + } + return filedata +} diff --git a/uni_modules/uni-file-picker/package.json b/uni_modules/uni-file-picker/package.json new file mode 100644 index 0000000..35c926c --- /dev/null +++ b/uni_modules/uni-file-picker/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-file-picker", + "displayName": "uni-file-picker 文件选择上传", + "version": "1.0.4", + "description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间", + "keywords": [ + "uni-ui", + "uniui", + "图片上传", + "文件上传" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-file-picker/readme.md b/uni_modules/uni-file-picker/readme.md new file mode 100644 index 0000000..c8399a5 --- /dev/null +++ b/uni_modules/uni-file-picker/readme.md @@ -0,0 +1,11 @@ + +## FilePicker 文件选择上传 + +> **组件名:uni-file-picker** +> 代码块: `uFilePicker` + + +文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-forms/changelog.md b/uni_modules/uni-forms/changelog.md new file mode 100644 index 0000000..8218df5 --- /dev/null +++ b/uni_modules/uni-forms/changelog.md @@ -0,0 +1,92 @@ +## 1.4.9(2023-02-10) +- 修复 required 参数无法动态绑定 +## 1.4.8(2022-08-23) +- 优化 根据 rules 自动添加 required 的问题 +## 1.4.7(2022-08-22) +- 修复 item 未设置 require 属性,rules 设置 require 后,星号也显示的 bug,详见:[https://ask.dcloud.net.cn/question/151540](https://ask.dcloud.net.cn/question/151540) +## 1.4.6(2022-07-13) +- 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug +## 1.4.5(2022-07-05) +- 新增 更多表单示例 +- 优化 子表单组件过期提示的问题 +- 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式 +## 1.4.4(2022-07-04) +- 更新 删除组件日志 +## 1.4.3(2022-07-04) +- 修复 由 1.4.0 引发的 label 插槽不生效的bug +## 1.4.2(2022-07-04) +- 修复 子组件找不到 setValue 报错的bug +## 1.4.1(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中报错的bug +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.4.0(2022-06-30) +- 【重要】组件逻辑重构,部分用法用旧版本不兼容,请注意兼容问题 +- 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力 +- 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃 +- 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效 +- 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法 +- 新增 子表单的 setRules 方法,配合自定义校验函数使用 +- 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则 +- 优化 动态表单校验方式,废弃拼接name的方式 +## 1.3.3(2022-06-22) +- 修复 表单校验顺序无序问题 +## 1.3.2(2021-12-09) +- +## 1.3.1(2021-11-19) +- 修复 label 插槽不生效的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-forms](https://uniapp.dcloud.io/component/uniui/uni-forms) +## 1.2.7(2021-08-13) +- 修复 没有添加校验规则的字段依然报错的Bug +## 1.2.6(2021-08-11) +- 修复 重置表单错误信息无法清除的问题 +## 1.2.5(2021-08-11) +- 优化 组件文档 +## 1.2.4(2021-08-11) +- 修复 表单验证只生效一次的问题 +## 1.2.3(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.2(2021-07-26) +- 修复 vue2 下条件编译导致destroyed生命周期失效的Bug +- 修复 1.2.1 引起的示例在小程序平台报错的Bug +## 1.2.1(2021-07-22) +- 修复 动态校验表单,默认值为空的情况下校验失效的Bug +- 修复 不指定name属性时,运行报错的Bug +- 优化 label默认宽度从65调整至70,使required为true且四字时不换行 +- 优化 组件示例,新增动态校验示例代码 +- 优化 组件文档,使用方式更清晰 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-06-25) +- 修复 pattern 属性在微信小程序平台无效的问题 +## 1.1.1(2021-06-22) +- 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug +## 1.1.0(2021-06-22) +- 修复 只写setRules方法而导致校验不生效的Bug +- 修复 由上个办法引发的错误提示文字错位的Bug +## 1.0.48(2021-06-21) +- 修复 不设置 label 属性 ,无法设置label插槽的问题 +## 1.0.47(2021-06-21) +- 修复 不设置label属性,label-width属性不生效的bug +- 修复 setRules 方法与rules属性冲突的问题 +## 1.0.46(2021-06-04) +- 修复 动态删减数据导致报错的问题 +## 1.0.45(2021-06-04) +- 新增 modelValue 属性 ,value 即将废弃 +## 1.0.44(2021-06-02) +- 新增 uni-forms-item 可以设置单独的 rules +- 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤 +- 优化 submit 事件重命名为 validate +## 1.0.43(2021-05-12) +- 新增 组件示例地址 +## 1.0.42(2021-04-30) +- 修复 自定义检验器失效的问题 +## 1.0.41(2021-03-05) +- 更新 校验器 +- 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug +## 1.0.40(2021-03-04) +- 修复 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug +## 1.0.39(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 校验器传入 int 等类型 ,返回String类型的Bug diff --git a/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue new file mode 100644 index 0000000..91fe351 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue @@ -0,0 +1,627 @@ + + + + + diff --git a/uni_modules/uni-forms/components/uni-forms/uni-forms.vue b/uni_modules/uni-forms/components/uni-forms/uni-forms.vue new file mode 100644 index 0000000..ed2f6d9 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/uni-forms.vue @@ -0,0 +1,397 @@ + + + + + diff --git a/uni_modules/uni-forms/components/uni-forms/utils.js b/uni_modules/uni-forms/components/uni-forms/utils.js new file mode 100644 index 0000000..6da2421 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/utils.js @@ -0,0 +1,293 @@ +/** + * 简单处理对象拷贝 + * @param {Obejct} 被拷贝对象 + * @@return {Object} 拷贝对象 + */ +export const deepCopy = (val) => { + return JSON.parse(JSON.stringify(val)) +} +/** + * 过滤数字类型 + * @param {String} format 数字类型 + * @@return {Boolean} 返回是否为数字类型 + */ +export const typeFilter = (format) => { + return format === 'int' || format === 'double' || format === 'number' || format === 'timestamp'; +} + +/** + * 把 value 转换成指定的类型,用于处理初始值,原因是初始值需要入库不能为 undefined + * @param {String} key 字段名 + * @param {any} value 字段值 + * @param {Object} rules 表单校验规则 + */ +export const getValue = (key, value, rules) => { + const isRuleNumType = rules.find(val => val.format && typeFilter(val.format)); + const isRuleBoolType = rules.find(val => (val.format && val.format === 'boolean') || val.format === 'bool'); + // 输入类型为 number + if (!!isRuleNumType) { + if (!value && value !== 0) { + value = null + } else { + value = isNumber(Number(value)) ? Number(value) : value + } + } + + // 输入类型为 boolean + if (!!isRuleBoolType) { + value = isBoolean(value) ? value : false + } + + return value; +} + +/** + * 获取表单数据 + * @param {String|Array} name 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + * @param {any} value 需要设置的值 + */ +export const setDataValue = (field, formdata, value) => { + formdata[field] = value + return value || '' +} + +/** + * 获取表单数据 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + */ +export const getDataValue = (field, data) => { + return objGet(data, field) +} + +/** + * 获取表单类型 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + */ +export const getDataValueType = (field, data) => { + const value = getDataValue(field, data) + return { + type: type(value), + value + } +} + +/** + * 获取表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const realName = (name, data = {}) => { + const base_name = _basePath(name) + if (typeof base_name === 'object' && Array.isArray(base_name) && base_name.length > 1) { + const realname = base_name.reduce((a, b) => a += `#${b}`, '_formdata_') + return realname + } + return base_name[0] || name +} + +/** + * 判断是否表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const isRealName = (name) => { + const reg = /^_formdata_#*/ + return reg.test(name) +} + +/** + * 获取表单数据的原始格式 + * @@return {Object|Array} object 需要解析的数据 + */ +export const rawData = (object = {}, name) => { + let newData = JSON.parse(JSON.stringify(object)) + let formData = {} + for(let i in newData){ + let path = name2arr(i) + objSet(formData,path,newData[i]) + } + return formData +} + +/** + * 真实name还原为 array + * @param {*} name + */ +export const name2arr = (name) => { + let field = name.replace('_formdata_#', '') + field = field.split('#').map(v => (isNumber(v) ? Number(v) : v)) + return field +} + +/** + * 对象中设置值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} value 需要设置的值 + */ +export const objSet = (object, path, value) => { + if (typeof object !== 'object') return object; + _basePath(path).reduce((o, k, i, _) => { + if (i === _.length - 1) { + // 若遍历结束直接赋值 + o[k] = value + return null + } else if (k in o) { + // 若存在对应路径,则返回找到的对象,进行下一次遍历 + return o[k] + } else { + // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象 + o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {} + return o[k] + } + }, object) + // 返回object + return object; +} + +// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用 +function _basePath(path) { + // 若是数组,则直接返回 + if (Array.isArray(path)) return path + // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']' + return path.replace(/\[/g, '.').replace(/\]/g, '').split('.') +} + +/** + * 从对象中获取值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} defaultVal 如果无法从调用链中获取值的默认值 + */ +export const objGet = (object, path, defaultVal = 'undefined') => { + // 先将path处理成统一格式 + let newPath = _basePath(path) + // 递归处理,返回最后结果 + let val = newPath.reduce((o, k) => { + return (o || {})[k] + }, object); + return !val || val !== undefined ? val : defaultVal +} + + +/** + * 是否为 number 类型 + * @param {any} num 需要判断的值 + * @return {Boolean} 是否为 number + */ +export const isNumber = (num) => { + return !isNaN(Number(num)) +} + +/** + * 是否为 boolean 类型 + * @param {any} bool 需要判断的值 + * @return {Boolean} 是否为 boolean + */ +export const isBoolean = (bool) => { + return (typeof bool === 'boolean') +} +/** + * 是否有必填字段 + * @param {Object} rules 规则 + * @return {Boolean} 是否有必填字段 + */ +export const isRequiredField = (rules) => { + let isNoField = false; + for (let i = 0; i < rules.length; i++) { + const ruleData = rules[i]; + if (ruleData.required) { + isNoField = true; + break; + } + } + return isNoField; +} + + +/** + * 获取数据类型 + * @param {Any} obj 需要获取数据类型的值 + */ +export const type = (obj) => { + var class2type = {}; + + // 生成class2type映射 + "Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function(item, index) { + class2type["[object " + item + "]"] = item.toLowerCase(); + }) + if (obj == null) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[Object.prototype.toString.call(obj)] || "object" : + typeof obj; +} + +/** + * 判断两个值是否相等 + * @param {any} a 值 + * @param {any} b 值 + * @return {Boolean} 是否相等 + */ +export const isEqual = (a, b) => { + //如果a和b本来就全等 + if (a === b) { + //判断是否为0和-0 + return a !== 0 || 1 / a === 1 / b; + } + //判断是否为null和undefined + if (a == null || b == null) { + return a === b; + } + //接下来判断a和b的数据类型 + var classNameA = toString.call(a), + classNameB = toString.call(b); + //如果数据类型不相等,则返回false + if (classNameA !== classNameB) { + return false; + } + //如果数据类型相等,再根据不同数据类型分别判断 + switch (classNameA) { + case '[object RegExp]': + case '[object String]': + //进行字符串转换比较 + return '' + a === '' + b; + case '[object Number]': + //进行数字转换比较,判断是否为NaN + if (+a !== +a) { + return +b !== +b; + } + //判断是否为0或-0 + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + return +a === +b; + } + //如果是对象类型 + if (classNameA == '[object Object]') { + //获取a和b的属性长度 + var propsA = Object.getOwnPropertyNames(a), + propsB = Object.getOwnPropertyNames(b); + if (propsA.length != propsB.length) { + return false; + } + for (var i = 0; i < propsA.length; i++) { + var propName = propsA[i]; + //如果对应属性对应值不相等,则返回false + if (a[propName] !== b[propName]) { + return false; + } + } + return true; + } + //如果是数组类型 + if (classNameA == '[object Array]') { + if (a.toString() == b.toString()) { + return true; + } + return false; + } +} diff --git a/uni_modules/uni-forms/components/uni-forms/validate.js b/uni_modules/uni-forms/components/uni-forms/validate.js new file mode 100644 index 0000000..1834c6c --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/validate.js @@ -0,0 +1,486 @@ +var pattern = { + email: /^\S+?@\S+?\.\S+?$/, + idcard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, + 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') +}; + +const FORMAT_MAPPING = { + "int": 'integer', + "bool": 'boolean', + "double": 'number', + "long": 'number', + "password": 'string' + // "fileurls": 'array' +} + +function formatMessage(args, resources = '') { + var defaultMessage = ['label'] + defaultMessage.forEach((item) => { + if (args[item] === undefined) { + args[item] = '' + } + }) + + let str = resources + for (let key in args) { + let reg = new RegExp('{' + key + '}') + str = str.replace(reg, args[key]) + } + return str +} + +function isEmptyValue(value, type) { + if (value === undefined || value === null) { + return true; + } + + if (typeof value === 'string' && !value) { + return true; + } + + if (Array.isArray(value) && !value.length) { + return true; + } + + if (type === 'object' && !Object.keys(value).length) { + return true; + } + + return false; +} + +const types = { + integer(value) { + return types.number(value) && parseInt(value, 10) === value; + }, + string(value) { + return typeof value === 'string'; + }, + number(value) { + if (isNaN(value)) { + return false; + } + return typeof value === 'number'; + }, + "boolean": function(value) { + return typeof value === 'boolean'; + }, + "float": function(value) { + return types.number(value) && !types.integer(value); + }, + array(value) { + return Array.isArray(value); + }, + object(value) { + return typeof value === 'object' && !types.array(value); + }, + date(value) { + return value instanceof Date; + }, + timestamp(value) { + if (!this.integer(value) || Math.abs(value).toString().length > 16) { + return false + } + return true; + }, + file(value) { + return typeof value.url === 'string'; + }, + email(value) { + return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255; + }, + url(value) { + return typeof value === 'string' && !!value.match(pattern.url); + }, + pattern(reg, value) { + try { + return new RegExp(reg).test(value); + } catch (e) { + return false; + } + }, + method(value) { + return typeof value === 'function'; + }, + idcard(value) { + return typeof value === 'string' && !!value.match(pattern.idcard); + }, + 'url-https'(value) { + return this.url(value) && value.startsWith('https://'); + }, + 'url-scheme'(value) { + return value.startsWith('://'); + }, + 'url-web'(value) { + return false; + } +} + +class RuleValidator { + + constructor(message) { + this._message = message + } + + async validateRule(fieldKey, fieldValue, value, data, allData) { + var result = null + + let rules = fieldValue.rules + + let hasRequired = rules.findIndex((item) => { + return item.required + }) + if (hasRequired < 0) { + if (value === null || value === undefined) { + return result + } + if (typeof value === 'string' && !value.length) { + return result + } + } + + var message = this._message + + if (rules === undefined) { + return message['default'] + } + + for (var i = 0; i < rules.length; i++) { + let rule = rules[i] + let vt = this._getValidateType(rule) + + Object.assign(rule, { + label: fieldValue.label || `["${fieldKey}"]` + }) + + if (RuleValidatorHelper[vt]) { + result = RuleValidatorHelper[vt](rule, value, message) + if (result != null) { + break + } + } + + if (rule.validateExpr) { + let now = Date.now() + let resultExpr = rule.validateExpr(value, allData, now) + if (resultExpr === false) { + result = this._getMessage(rule, rule.errorMessage || this._message['default']) + break + } + } + + if (rule.validateFunction) { + result = await this.validateFunction(rule, value, data, allData, vt) + if (result !== null) { + break + } + } + } + + if (result !== null) { + result = message.TAG + result + } + + return result + } + + async validateFunction(rule, value, data, allData, vt) { + let result = null + try { + let callbackMessage = null + const res = await rule.validateFunction(rule, value, allData || data, (message) => { + callbackMessage = message + }) + if (callbackMessage || (typeof res === 'string' && res) || res === false) { + result = this._getMessage(rule, callbackMessage || res, vt) + } + } catch (e) { + result = this._getMessage(rule, e.message, vt) + } + return result + } + + _getMessage(rule, message, vt) { + return formatMessage(rule, message || rule.errorMessage || this._message[vt] || message['default']) + } + + _getValidateType(rule) { + var result = '' + if (rule.required) { + result = 'required' + } else if (rule.format) { + result = 'format' + } else if (rule.arrayType) { + result = 'arrayTypeFormat' + } else if (rule.range) { + result = 'range' + } else if (rule.maximum !== undefined || rule.minimum !== undefined) { + result = 'rangeNumber' + } else if (rule.maxLength !== undefined || rule.minLength !== undefined) { + result = 'rangeLength' + } else if (rule.pattern) { + result = 'pattern' + } else if (rule.validateFunction) { + result = 'validateFunction' + } + return result + } +} + +const RuleValidatorHelper = { + required(rule, value, message) { + if (rule.required && isEmptyValue(value, rule.format || typeof value)) { + return formatMessage(rule, rule.errorMessage || message.required); + } + + return null + }, + + range(rule, value, message) { + const { + range, + errorMessage + } = rule; + + let list = new Array(range.length); + for (let i = 0; i < range.length; i++) { + const item = range[i]; + if (types.object(item) && item.value !== undefined) { + list[i] = item.value; + } else { + list[i] = item; + } + } + + let result = false + if (Array.isArray(value)) { + result = (new Set(value.concat(list)).size === list.length); + } else { + if (list.indexOf(value) > -1) { + result = true; + } + } + + if (!result) { + return formatMessage(rule, errorMessage || message['enum']); + } + + return null + }, + + rangeNumber(rule, value, message) { + if (!types.number(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let { + minimum, + maximum, + exclusiveMinimum, + exclusiveMaximum + } = rule; + let min = exclusiveMinimum ? value <= minimum : value < minimum; + let max = exclusiveMaximum ? value >= maximum : value > maximum; + + if (minimum !== undefined && min) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMinimum ? + 'exclusiveMinimum' : 'minimum' + ]) + } else if (maximum !== undefined && max) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMaximum ? + 'exclusiveMaximum' : 'maximum' + ]) + } else if (minimum !== undefined && maximum !== undefined && (min || max)) { + return formatMessage(rule, rule.errorMessage || message['number'].range) + } + + return null + }, + + rangeLength(rule, value, message) { + if (!types.string(value) && !types.array(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let min = rule.minLength; + let max = rule.maxLength; + let val = value.length; + + if (min !== undefined && val < min) { + return formatMessage(rule, rule.errorMessage || message['length'].minLength) + } else if (max !== undefined && val > max) { + return formatMessage(rule, rule.errorMessage || message['length'].maxLength) + } else if (min !== undefined && max !== undefined && (val < min || val > max)) { + return formatMessage(rule, rule.errorMessage || message['length'].range) + } + + return null + }, + + pattern(rule, value, message) { + if (!types['pattern'](rule.pattern, value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + return null + }, + + format(rule, value, message) { + var customTypes = Object.keys(types); + var format = FORMAT_MAPPING[rule.format] ? FORMAT_MAPPING[rule.format] : (rule.format || rule.arrayType); + + if (customTypes.indexOf(format) > -1) { + if (!types[format](value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + } + + return null + }, + + arrayTypeFormat(rule, value, message) { + if (!Array.isArray(value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + + for (let i = 0; i < value.length; i++) { + const element = value[i]; + let formatResult = this.format(rule, element, message) + if (formatResult !== null) { + return formatResult + } + } + + return null + } +} + +class SchemaValidator extends RuleValidator { + + constructor(schema, options) { + super(SchemaValidator.message); + + this._schema = schema + this._options = options || null + } + + updateSchema(schema) { + this._schema = schema + } + + async validate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, false, allData) + } + return result.length ? result[0] : null + } + + async validateAll(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, true, allData) + } + return result + } + + async validateUpdate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidateUpdate(data, false, allData) + } + return result.length ? result[0] : null + } + + async invokeValidate(data, all, allData) { + let result = [] + let schema = this._schema + for (let key in schema) { + let value = schema[key] + let errorMessage = await this.validateRule(key, value, data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + async invokeValidateUpdate(data, all, allData) { + let result = [] + for (let key in data) { + let errorMessage = await this.validateRule(key, this._schema[key], data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + _checkFieldInSchema(data) { + var keys = Object.keys(data) + var keys2 = Object.keys(this._schema) + if (new Set(keys.concat(keys2)).size === keys2.length) { + return '' + } + + var noExistFields = keys.filter((key) => { + return keys2.indexOf(key) < 0; + }) + var errorMessage = formatMessage({ + field: JSON.stringify(noExistFields) + }, SchemaValidator.message.TAG + SchemaValidator.message['defaultInvalid']) + return [{ + key: 'invalid', + errorMessage + }] + } +} + +function Message() { + return { + TAG: "", + default: '验证错误', + defaultInvalid: '提交的字段{field}在数据库中并不存在', + validateFunction: '验证无效', + required: '{label}必填', + 'enum': '{label}超出范围', + timestamp: '{label}格式无效', + whitespace: '{label}不能为空', + typeError: '{label}类型无效', + date: { + format: '{label}日期{value}格式无效', + parse: '{label}日期无法解析,{value}无效', + invalid: '{label}日期{value}无效' + }, + length: { + minLength: '{label}长度不能少于{minLength}', + maxLength: '{label}长度不能超过{maxLength}', + range: '{label}必须介于{minLength}和{maxLength}之间' + }, + number: { + minimum: '{label}不能小于{minimum}', + maximum: '{label}不能大于{maximum}', + exclusiveMinimum: '{label}不能小于等于{minimum}', + exclusiveMaximum: '{label}不能大于等于{maximum}', + range: '{label}必须介于{minimum}and{maximum}之间' + }, + pattern: { + mismatch: '{label}格式不匹配' + } + }; +} + + +SchemaValidator.message = new Message(); + +export default SchemaValidator diff --git a/uni_modules/uni-forms/package.json b/uni_modules/uni-forms/package.json new file mode 100644 index 0000000..1925611 --- /dev/null +++ b/uni_modules/uni-forms/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-forms", + "displayName": "uni-forms 表单", + "version": "1.4.9", + "description": "由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "keywords": [ + "uni-ui", + "表单", + "校验", + "表单校验", + "表单验证" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-forms/readme.md b/uni_modules/uni-forms/readme.md new file mode 100644 index 0000000..63d5a04 --- /dev/null +++ b/uni_modules/uni-forms/readme.md @@ -0,0 +1,23 @@ + + +## Forms 表单 + +> **组件名:uni-forms** +> 代码块: `uForms`、`uni-forms-item` +> 关联组件:`uni-forms-item`、`uni-easyinput`、`uni-data-checkbox`、`uni-group`。 + + +uni-app的内置组件已经有了 `
`组件,用于提交表单内容。 + +然而几乎每个表单都需要做表单验证,为了方便做表单验证,减少重复开发,`uni ui` 又基于 ``组件封装了 ``组件,内置了表单验证功能。 + +`` 提供了 `rules`属性来描述校验规则、``子组件来包裹具体的表单项,以及给原生或三方组件提供了 `binddata()` 来设置表单值。 + +每个要校验的表单项,不管input还是checkbox,都必须放在``组件中,且一个``组件只能放置一个表单项。 + +``组件内部预留了显示error message的区域,默认是在表单项的底部。 + +另外,``组件下面的各个表单项,可以通过``包裹为不同的分组。同一``下的不同表单项目将聚拢在一起,同其他group保持垂直间距。``仅影响视觉效果。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-forms) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-goods-nav/changelog.md b/uni_modules/uni-goods-nav/changelog.md new file mode 100644 index 0000000..c6264c6 --- /dev/null +++ b/uni_modules/uni-goods-nav/changelog.md @@ -0,0 +1,18 @@ +## 1.2.1(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-goods-nav](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json new file mode 100644 index 0000000..dcdba41 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "shop", + "uni-goods-nav.options.cart": "cart", + "uni-goods-nav.buttonGroup.addToCart": "add to cart", + "uni-goods-nav.buttonGroup.buyNow": "buy now" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json new file mode 100644 index 0000000..48ee344 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店铺", + "uni-goods-nav.options.cart": "购物车", + "uni-goods-nav.buttonGroup.addToCart": "加入购物车", + "uni-goods-nav.buttonGroup.buyNow": "立即购买" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json new file mode 100644 index 0000000..d0a0255 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店鋪", + "uni-goods-nav.options.cart": "購物車", + "uni-goods-nav.buttonGroup.addToCart": "加入購物車", + "uni-goods-nav.buttonGroup.buyNow": "立即購買" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue b/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue new file mode 100644 index 0000000..8a16b17 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uni_modules/uni-goods-nav/package.json b/uni_modules/uni-goods-nav/package.json new file mode 100644 index 0000000..636e45e --- /dev/null +++ b/uni_modules/uni-goods-nav/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-goods-nav", + "displayName": "uni-goods-nav 商品导航", + "version": "1.2.1", + "description": "商品导航组件主要用于电商类应用底部导航,可自定义加入购物车,购买等操作", + "keywords": [ + "uni-ui", + "uniui", + "商品导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-goods-nav/readme.md b/uni_modules/uni-goods-nav/readme.md new file mode 100644 index 0000000..07df93f --- /dev/null +++ b/uni_modules/uni-goods-nav/readme.md @@ -0,0 +1,10 @@ + + +## GoodsNav 商品导航 +> **组件名:uni-goods-nav** +> 代码块: `uGoodsNav` + +商品加入购物车,立即购买等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-grid/changelog.md b/uni_modules/uni-grid/changelog.md new file mode 100644 index 0000000..d301166 --- /dev/null +++ b/uni_modules/uni-grid/changelog.md @@ -0,0 +1,13 @@ +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-grid](https://uniapp.dcloud.io/component/uniui/uni-grid) +## 1.3.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.3.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.3.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.4(2021-05-12) +- 新增 组件示例地址 +## 1.2.3(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue b/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue new file mode 100644 index 0000000..20fd54e --- /dev/null +++ b/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uni-grid/components/uni-grid/uni-grid.vue b/uni_modules/uni-grid/components/uni-grid/uni-grid.vue new file mode 100644 index 0000000..96a412f --- /dev/null +++ b/uni_modules/uni-grid/components/uni-grid/uni-grid.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/uni_modules/uni-grid/package.json b/uni_modules/uni-grid/package.json new file mode 100644 index 0000000..ccb2c91 --- /dev/null +++ b/uni_modules/uni-grid/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-grid", + "displayName": "uni-grid 宫格", + "version": "1.4.0", + "description": "Grid 宫格组件,提供移动端常见的宫格布局,如九宫格。", + "keywords": [ + "uni-ui", + "uniui", + "九宫格", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-grid/readme.md b/uni_modules/uni-grid/readme.md new file mode 100644 index 0000000..0aa44cc --- /dev/null +++ b/uni_modules/uni-grid/readme.md @@ -0,0 +1,11 @@ + + +## Grid 宫格 +> **组件名:uni-grid** +> 代码块: `uGrid` + + +宫格组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-grid) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-group/changelog.md b/uni_modules/uni-group/changelog.md new file mode 100644 index 0000000..a7024fd --- /dev/null +++ b/uni_modules/uni-group/changelog.md @@ -0,0 +1,16 @@ +## 1.2.2(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-group](https://uniapp.dcloud.io/component/uniui/uni-group) +## 1.1.7(2021-11-08) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 优化 组件文档 +## 1.0.3(2021-05-12) +- 新增 组件示例地址 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 兼容 nvue 页面 diff --git a/uni_modules/uni-group/components/uni-group/uni-group.vue b/uni_modules/uni-group/components/uni-group/uni-group.vue new file mode 100644 index 0000000..3425ecd --- /dev/null +++ b/uni_modules/uni-group/components/uni-group/uni-group.vue @@ -0,0 +1,134 @@ + + + + diff --git a/uni_modules/uni-group/package.json b/uni_modules/uni-group/package.json new file mode 100644 index 0000000..ea00a08 --- /dev/null +++ b/uni_modules/uni-group/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-group", + "displayName": "uni-group 分组", + "version": "1.2.2", + "description": "分组组件可用于将组件用于分组,添加间隔,以产生明显的区块", + "keywords": [ + "uni-ui", + "uniui", + "group", + "分组", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-group/readme.md b/uni_modules/uni-group/readme.md new file mode 100644 index 0000000..bae67f4 --- /dev/null +++ b/uni_modules/uni-group/readme.md @@ -0,0 +1,9 @@ + +## Group 分组 +> **组件名:uni-group** +> 代码块: `uGroup` + +分组组件可用于将组件分组,添加间隔,以产生明显的区块。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-group) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-indexed-list/changelog.md b/uni_modules/uni-indexed-list/changelog.md new file mode 100644 index 0000000..08fa71c --- /dev/null +++ b/uni_modules/uni-indexed-list/changelog.md @@ -0,0 +1,17 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-indexed-list](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue new file mode 100644 index 0000000..2f13bae --- /dev/null +++ b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue new file mode 100644 index 0000000..35e168c --- /dev/null +++ b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue @@ -0,0 +1,367 @@ + + + diff --git a/uni_modules/uni-indexed-list/package.json b/uni_modules/uni-indexed-list/package.json new file mode 100644 index 0000000..125c0e7 --- /dev/null +++ b/uni_modules/uni-indexed-list/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-indexed-list", + "displayName": "uni-indexed-list 索引列表", + "version": "1.2.1", + "description": "索引列表组件,右侧带索引的列表,方便快速定位到具体内容,通常用于城市/机场选择等场景", + "keywords": [ + "uni-ui", + "索引列表", + "索引", + "列表" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-indexed-list/readme.md b/uni_modules/uni-indexed-list/readme.md new file mode 100644 index 0000000..44ad84b --- /dev/null +++ b/uni_modules/uni-indexed-list/readme.md @@ -0,0 +1,11 @@ + + +## IndexedList 索引列表 +> **组件名:uni-indexed-list** +> 代码块: `uIndexedList` + + +用于展示索引列表。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-link/changelog.md b/uni_modules/uni-link/changelog.md new file mode 100644 index 0000000..2cfbf59 --- /dev/null +++ b/uni_modules/uni-link/changelog.md @@ -0,0 +1,17 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-link](https://uniapp.dcloud.io/component/uniui/uni-link) +## 1.1.7(2021-11-08) +## 0.0.7(2021-09-03) +- 修复 在 nvue 下不显示的 bug +## 0.0.6(2021-07-30) +- 新增 支持自定义插槽 +## 0.0.5(2021-06-21) +- 新增 download 属性,H5平台下载文件名 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-03-09) +- 新增 href 属性支持 tel:|mailto: + +## 0.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-link/components/uni-link/uni-link.vue b/uni_modules/uni-link/components/uni-link/uni-link.vue new file mode 100644 index 0000000..27c5468 --- /dev/null +++ b/uni_modules/uni-link/components/uni-link/uni-link.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uni-link/package.json b/uni_modules/uni-link/package.json new file mode 100644 index 0000000..77b1986 --- /dev/null +++ b/uni_modules/uni-link/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-link", + "displayName": "uni-link 超链接", + "version": "1.0.0", + "description": "uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打", + "keywords": [ + "uni-ui", + "uniui", + "link", + "超链接", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-link/readme.md b/uni_modules/uni-link/readme.md new file mode 100644 index 0000000..7f09e94 --- /dev/null +++ b/uni_modules/uni-link/readme.md @@ -0,0 +1,11 @@ + + +## Link 链接 +> **组件名:uni-link** +> 代码块: `uLink` + + +uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打开新网页。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-link) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-load-more/changelog.md b/uni_modules/uni-load-more/changelog.md new file mode 100644 index 0000000..8f03f1d --- /dev/null +++ b/uni_modules/uni-load-more/changelog.md @@ -0,0 +1,19 @@ +## 1.3.3(2022-01-20) +- 新增 showText属性 ,是否显示文本 +## 1.3.2(2022-01-19) +- 修复 nvue 平台下不显示文本的bug +## 1.3.1(2022-01-19) +- 修复 微信小程序平台样式选择器报警告的问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) +## 1.2.1(2021-08-24) +- 新增 支持国际化 +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-05-12) +- 新增 组件示例地址 +## 1.1.7(2021-03-30) +- 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +## 1.1.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json new file mode 100644 index 0000000..a4f14a5 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "Pull up to show more", + "uni-load-more.contentrefresh": "loading...", + "uni-load-more.contentnomore": "No more data" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json new file mode 100644 index 0000000..f15d510 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉显示更多", + "uni-load-more.contentrefresh": "正在加载...", + "uni-load-more.contentnomore": "没有更多数据了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json new file mode 100644 index 0000000..a255c6d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉顯示更多", + "uni-load-more.contentrefresh": "正在加載...", + "uni-load-more.contentnomore": "沒有更多數據了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue new file mode 100644 index 0000000..e5eff4d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/uni_modules/uni-load-more/package.json b/uni_modules/uni-load-more/package.json new file mode 100644 index 0000000..2fa6f04 --- /dev/null +++ b/uni_modules/uni-load-more/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-load-more", + "displayName": "uni-load-more 加载更多", + "version": "1.3.3", + "description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", + "keywords": [ + "uni-ui", + "uniui", + "加载更多", + "load-more" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-load-more/readme.md b/uni_modules/uni-load-more/readme.md new file mode 100644 index 0000000..54dc1fa --- /dev/null +++ b/uni_modules/uni-load-more/readme.md @@ -0,0 +1,14 @@ + + +### LoadMore 加载更多 +> **组件名:uni-load-more** +> 代码块: `uLoadMore` + + +用于列表中,做滚动加载使用,展示 loading 的各种状态。 + + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-load-more) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-nav-bar/changelog.md b/uni_modules/uni-nav-bar/changelog.md new file mode 100644 index 0000000..0f9a2f1 --- /dev/null +++ b/uni_modules/uni-nav-bar/changelog.md @@ -0,0 +1,51 @@ +## 1.3.11(2023-03-29) +- 修复 自定义状态栏高度闪动BUG +## 1.3.10(2023-03-29) +- 修复 暗黑模式下边线颜色错误的bug +## 1.3.9(2022-10-13) +- 修复 条件编译错误的bug +## 1.3.8(2022-10-12) +- 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.7(2022-08-11) +- 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.6(2022-06-30) +- 修复 组件示例中插槽用法无法显示内容的bug +## 1.3.5(2022-05-24) +- 新增 stat 属性 ,可开启统计title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +## 1.3.4(2022-01-24) +- 更新 组件示例 +## 1.3.3(2022-01-24) +- 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +## 1.3.2(2022-01-18) +- 修复 在vue下,标题不垂直居中的bug +## 1.3.1(2022-01-18) +- 修复 height 属性类型错误 +## 1.3.0(2022-01-18) +- 新增 height 属性,可修改组件高度 +- 新增 dark 属性可可开启暗黑模式 +- 优化 标题字数过多显示省略号 +- 优化 插槽,插入内容可完全覆盖 +## 1.2.1(2022-01-10) +- 修复 color 属性不生效的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-nav-bar](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-30) +- 修复 在nvue下fixed为true,宽度不能撑满的Bug +## 1.0.9(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.8(2021-04-14) +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug + +## 1.0.7(2021-02-25) +- 修复 easycom 下,找不到 uni-status-bar 的bug + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue new file mode 100644 index 0000000..c890860 --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue @@ -0,0 +1,357 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue new file mode 100644 index 0000000..4ac73ae --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/package.json b/uni_modules/uni-nav-bar/package.json new file mode 100644 index 0000000..240ae95 --- /dev/null +++ b/uni_modules/uni-nav-bar/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-nav-bar", + "displayName": "uni-nav-bar 自定义导航栏", + "version": "1.3.11", + "description": "自定义导航栏组件,主要用于头部导航。", + "keywords": [ + "uni-ui", + "导航", + "导航栏", + "自定义导航栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-nav-bar/readme.md b/uni_modules/uni-nav-bar/readme.md new file mode 100644 index 0000000..3934b32 --- /dev/null +++ b/uni_modules/uni-nav-bar/readme.md @@ -0,0 +1,15 @@ + + +## NavBar 导航栏 +> **组件名:uni-nav-bar** +> 代码块: `uNavBar` + +导航栏组件,主要用于头部导航。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-notice-bar/changelog.md b/uni_modules/uni-notice-bar/changelog.md new file mode 100644 index 0000000..d526811 --- /dev/null +++ b/uni_modules/uni-notice-bar/changelog.md @@ -0,0 +1,18 @@ +## 1.2.1(2022-09-05) +- 新增 属性 fontSize,可修改文字大小。 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-notice-bar](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 组件示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue new file mode 100644 index 0000000..98d4720 --- /dev/null +++ b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue @@ -0,0 +1,426 @@ + + + + + diff --git a/uni_modules/uni-notice-bar/package.json b/uni_modules/uni-notice-bar/package.json new file mode 100644 index 0000000..8d9b13c --- /dev/null +++ b/uni_modules/uni-notice-bar/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-notice-bar", + "displayName": "uni-notice-bar 通告栏", + "version": "1.2.1", + "description": "NoticeBar 通告栏组件,常用于展示公告信息,可设为滚动公告", + "keywords": [ + "uni-ui", + "uniui", + "通告栏", + "公告", + "跑马灯" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-notice-bar/readme.md b/uni_modules/uni-notice-bar/readme.md new file mode 100644 index 0000000..fb2ede2 --- /dev/null +++ b/uni_modules/uni-notice-bar/readme.md @@ -0,0 +1,13 @@ + + +## NoticeBar 通告栏 +> **组件名:uni-notice-bar** +> 代码块: `uNoticeBar` + + +通告栏组件 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-number-box/changelog.md b/uni_modules/uni-number-box/changelog.md new file mode 100644 index 0000000..5925c32 --- /dev/null +++ b/uni_modules/uni-number-box/changelog.md @@ -0,0 +1,25 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-number-box](https://uniapp.dcloud.io/component/uniui/uni-number-box) +## 1.1.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-20) +- 修复 uni-number-box 浮点数运算不精确的 bug +- 修复 uni-number-box change 事件触发不正确的 bug +- 新增 uni-number-box v-model 双向绑定 +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 + +## 1.0.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 v-model +- 新增 支持 focus、blur 事件 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue new file mode 100644 index 0000000..e91c032 --- /dev/null +++ b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue @@ -0,0 +1,221 @@ + + + diff --git a/uni_modules/uni-number-box/package.json b/uni_modules/uni-number-box/package.json new file mode 100644 index 0000000..ad82336 --- /dev/null +++ b/uni_modules/uni-number-box/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-number-box", + "displayName": "uni-number-box 数字输入框", + "version": "1.2.1", + "description": "NumberBox 带加减按钮的数字输入框组件,用户可以控制每次点击增加的数值,支持小数。", + "keywords": [ + "uni-ui", + "uniui", + "数字输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-number-box/readme.md b/uni_modules/uni-number-box/readme.md new file mode 100644 index 0000000..affc56f --- /dev/null +++ b/uni_modules/uni-number-box/readme.md @@ -0,0 +1,13 @@ + + +## NumberBox 数字输入框 +> **组件名:uni-number-box** +> 代码块: `uNumberBox` + + +带加减按钮的数字输入框。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-number-box) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-pagination/changelog.md b/uni_modules/uni-pagination/changelog.md new file mode 100644 index 0000000..2e94adc --- /dev/null +++ b/uni_modules/uni-pagination/changelog.md @@ -0,0 +1,27 @@ +## 1.2.4(2022-09-19) +- 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。 +- 修复,未对移动端当前页文字做主题色适配。 +## 1.2.3(2022-09-15) +- 修复未使用 uni-scss 主题色的 bug。 +## 1.2.2(2022-07-06) +- 修复 es 语言 i18n 错误 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-pagination](https://uniapp.dcloud.io/component/uniui/uni-pagination) +## 1.1.2(2021-10-08) +- 修复 current 、value 属性未监听,导致高亮样式失效的 bug +## 1.1.1(2021-08-20) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-12) +- 新增 PC 和 移动端适配不同的 ui +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json new file mode 100644 index 0000000..d6e2897 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "prev", + "uni-pagination.nextText": "next", + "uni-pagination.piecePerPage": "piece/page" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json new file mode 100644 index 0000000..604a113 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "anterior", + "uni-pagination.nextText": "prxima", + "uni-pagination.piecePerPage": "Art¨ªculo/P¨¢gina" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json new file mode 100644 index 0000000..a7a0c77 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "précédente", + "uni-pagination.nextText": "suivante", + "uni-pagination.piecePerPage": "Articles/Pages" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js b/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json new file mode 100644 index 0000000..782bbe4 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一页", + "uni-pagination.nextText": "下一页", + "uni-pagination.piecePerPage": "条/页" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json new file mode 100644 index 0000000..180fddb --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一頁", + "uni-pagination.nextText": "下一頁", + "uni-pagination.piecePerPage": "條/頁" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue b/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue new file mode 100644 index 0000000..5305b5f --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue @@ -0,0 +1,465 @@ + + + + + diff --git a/uni_modules/uni-pagination/package.json b/uni_modules/uni-pagination/package.json new file mode 100644 index 0000000..862d5ab --- /dev/null +++ b/uni_modules/uni-pagination/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-pagination", + "displayName": "uni-pagination 分页器", + "version": "1.2.4", + "description": "Pagination 分页器组件,用于展示页码、请求数据等。", + "keywords": [ + "uni-ui", + "uniui", + "分页器", + "页码" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-pagination/readme.md b/uni_modules/uni-pagination/readme.md new file mode 100644 index 0000000..97ea1d6 --- /dev/null +++ b/uni_modules/uni-pagination/readme.md @@ -0,0 +1,11 @@ + + +## Pagination 分页器 +> **组件名:uni-pagination** +> 代码块: `uPagination` + + +分页器组件,用于展示页码、请求数据等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-pagination) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-popup/changelog.md b/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..bc59f07 --- /dev/null +++ b/uni_modules/uni-popup/changelog.md @@ -0,0 +1,68 @@ +## 1.8.3(2023-04-17) +- 修复 uni-popup 重复打开时的 bug +## 1.8.2(2023-02-02) +- uni-popup-dialog 组件新增 inputType 属性 +## 1.8.1(2022-12-01) +- 修复 nvue 下 v-show 报错 +## 1.8.0(2022-11-29) +- 优化 主题样式 +## 1.7.9(2022-04-02) +- 修复 弹出层内部无法滚动的bug +## 1.7.8(2022-03-28) +- 修复 小程序中高度错误的bug +## 1.7.7(2022-03-17) +- 修复 快速调用open出现问题的Bug +## 1.7.6(2022-02-14) +- 修复 safeArea 属性不能设置为false的bug +## 1.7.5(2022-01-19) +- 修复 isMaskClick 失效的bug +## 1.7.4(2022-01-19) +- 新增 cancelText \ confirmText 属性 ,可自定义文本 +- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 +## 1.7.3(2022-01-13) +- 修复 设置 safeArea 属性不生效的bug +## 1.7.2(2021-11-26) +- 优化 组件示例 +## 1.7.1(2021-11-26) +- 修复 vuedoc 文字错误 +## 1.7.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) +## 1.6.2(2021-08-24) +- 新增 支持国际化 +## 1.6.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.6.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.5.0(2021-06-23) +- 新增 mask-click 遮罩层点击事件 +## 1.4.5(2021-06-22) +- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.4(2021-06-18) +- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.3(2021-06-08) +- 修复 错误的 watch 字段 +- 修复 safeArea 属性不生效的问题 +- 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.4.2(2021-05-12) +- 新增 组件示例地址 +## 1.4.1(2021-04-29) +- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +## 1.4.0 (2021-04-29) +- 新增 type 属性的 left\right 值,支持左右弹出 +- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- 新增 safeArea 属性,是否适配底部安全区 +- 修复 App\h5\微信小程序底部安全区占位不对的Bug +- 修复 App 端弹出等待的Bug +- 优化 提升低配设备性能,优化动画卡顿问题 +- 优化 更简单的组件自定义方式 +## 1.2.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.2.8(2021-02-05) +- 调整为uni_modules目录规范 +## 1.2.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 +- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue new file mode 100644 index 0000000..b5eee79 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue new file mode 100644 index 0000000..91370a8 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue @@ -0,0 +1,143 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue new file mode 100644 index 0000000..5be7624 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue @@ -0,0 +1,187 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/uni_modules/uni-popup/components/uni-popup/i18n/en.json new file mode 100644 index 0000000..7f1bd06 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/en.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "cancel", + "uni-popup.ok": "ok", + "uni-popup.placeholder": "pleace enter", + "uni-popup.title": "Hint", + "uni-popup.shareTitle": "Share to" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/uni_modules/uni-popup/components/uni-popup/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json new file mode 100644 index 0000000..5e3003c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "确定", + "uni-popup.placeholder": "请输入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json new file mode 100644 index 0000000..13e39eb --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "確定", + "uni-popup.placeholder": "請輸入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/keypress.js b/uni_modules/uni-popup/components/uni-popup/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup/popup.js b/uni_modules/uni-popup/components/uni-popup/popup.js new file mode 100644 index 0000000..c4e5781 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/popup.js @@ -0,0 +1,26 @@ + +export default { + data() { + return { + + } + }, + created(){ + this.popup = this.getParent() + }, + methods:{ + /** + * 获取父元素实例 + */ + getParent(name = 'uniPopup') { + let parent = this.$parent; + let parentName = parent.$options.name; + while (parentName !== name) { + parent = parent.$parent; + if (!parent) return false + parentName = parent.$options.name; + } + return parent; + }, + } +} diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..54afee2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,473 @@ + + + + diff --git a/uni_modules/uni-popup/package.json b/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..f40556b --- /dev/null +++ b/uni_modules/uni-popup/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.8.3", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-popup/readme.md b/uni_modules/uni-popup/readme.md new file mode 100644 index 0000000..fdad4b3 --- /dev/null +++ b/uni_modules/uni-popup/readme.md @@ -0,0 +1,17 @@ + + +## Popup 弹出层 +> **组件名:uni-popup** +> 代码块: `uPopup` +> 关联组件:`uni-transition` + + +弹出层组件,在应用中弹出一个消息提示窗口、提示框等 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-rate/changelog.md b/uni_modules/uni-rate/changelog.md new file mode 100644 index 0000000..8a98a61 --- /dev/null +++ b/uni_modules/uni-rate/changelog.md @@ -0,0 +1,25 @@ +## 1.3.1(2022-02-25) +- 修复 条件判断 `NaN` 错误的 bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-rate](https://uniapp.dcloud.io/component/uniui/uni-rate) +## 1.2.2(2021-09-10) +- 优化 默认值修改为 0 颗星 +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-05-12) +- 新增 组件示例地址 +## 1.1.1(2021-04-21) +- 修复 布局变化后 uni-rate 星星计算不准确的 bug +- 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 +## 1.1.0(2021-04-16) +- 修复 uni-rate 属性 margin 值为 string 组件失效的 bug + +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 支持 pc 端 diff --git a/uni_modules/uni-rate/components/uni-rate/uni-rate.vue b/uni_modules/uni-rate/components/uni-rate/uni-rate.vue new file mode 100644 index 0000000..9802dfc --- /dev/null +++ b/uni_modules/uni-rate/components/uni-rate/uni-rate.vue @@ -0,0 +1,365 @@ + + + + + diff --git a/uni_modules/uni-rate/package.json b/uni_modules/uni-rate/package.json new file mode 100644 index 0000000..64e8e33 --- /dev/null +++ b/uni_modules/uni-rate/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-rate", + "displayName": "uni-rate 评分", + "version": "1.3.1", + "description": "Rate 评分组件,可自定义评分星星图标的大小、间隔、评分数。", + "keywords": [ + "uni-ui", + "uniui", + "评分" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-rate/readme.md b/uni_modules/uni-rate/readme.md new file mode 100644 index 0000000..eae7b5c --- /dev/null +++ b/uni_modules/uni-rate/readme.md @@ -0,0 +1,12 @@ + + +## Rate 评分 +> **组件名:uni-rate** +> 代码块: `uRate` +> 关联组件:`uni-icons` + + +评分组件,多用于购买商品后,对商品进行评价等场景 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-rate) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-row/changelog.md b/uni_modules/uni-row/changelog.md new file mode 100644 index 0000000..5b465bc --- /dev/null +++ b/uni_modules/uni-row/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-row](https://uniapp.dcloud.io/component/uniui/uni-row) +## 0.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 新增uni-row组件 diff --git a/uni_modules/uni-row/components/uni-col/uni-col.vue b/uni_modules/uni-row/components/uni-col/uni-col.vue new file mode 100644 index 0000000..d5f3728 --- /dev/null +++ b/uni_modules/uni-row/components/uni-col/uni-col.vue @@ -0,0 +1,317 @@ + + + + + diff --git a/uni_modules/uni-row/components/uni-row/uni-row.vue b/uni_modules/uni-row/components/uni-row/uni-row.vue new file mode 100644 index 0000000..c7d9370 --- /dev/null +++ b/uni_modules/uni-row/components/uni-row/uni-row.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/uni_modules/uni-row/package.json b/uni_modules/uni-row/package.json new file mode 100644 index 0000000..3f52fa6 --- /dev/null +++ b/uni_modules/uni-row/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-row", + "displayName": "uni-row 布局-行", + "version": "1.0.0", + "description": "流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。", + "keywords": [ + "uni-ui", + "uniui", + "栅格", + "布局", + "layout" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-row/readme.md b/uni_modules/uni-row/readme.md new file mode 100644 index 0000000..3c9c8b9 --- /dev/null +++ b/uni_modules/uni-row/readme.md @@ -0,0 +1,10 @@ +## Layout 布局 + +> **组件名 uni-row、uni-col** +> 代码块: `uRow`、`uCol` + + +流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-row) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-search-bar/changelog.md b/uni_modules/uni-search-bar/changelog.md new file mode 100644 index 0000000..b41fdd3 --- /dev/null +++ b/uni_modules/uni-search-bar/changelog.md @@ -0,0 +1,33 @@ +## 1.2.3(2022-05-24) +- 新增 readonly 属性,组件只读 +## 1.2.2(2022-05-06) +- 修复 vue3 input 事件不生效的bug +## 1.2.1(2022-05-06) +- 修复 多余代码导致的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-search-bar](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +## 1.1.2(2021-08-30) +- 修复 value 属性与 modelValue 属性不兼容的Bug +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 项目示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-04-15) +- uni-ui 新增 uni-search-bar 的 focus 事件 + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持双向绑定 +- 更改 input 事件的返回值,e={value:Number} --> e=value +- 新增 支持图标插槽 +- 新增 支持 clear、blur 事件 +- 新增 支持 focus 属性 +- 去掉组件背景色 diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json new file mode 100644 index 0000000..dd083a5 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "Search enter content" +} \ No newline at end of file diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json new file mode 100644 index 0000000..d4e5c12 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "请输入搜索内容" +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json new file mode 100644 index 0000000..318b6ef --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "請輸入搜索內容" +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue b/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue new file mode 100644 index 0000000..5a518a8 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/uni_modules/uni-search-bar/package.json b/uni_modules/uni-search-bar/package.json new file mode 100644 index 0000000..9352c57 --- /dev/null +++ b/uni_modules/uni-search-bar/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-search-bar", + "displayName": "uni-search-bar 搜索栏", + "version": "1.2.3", + "description": "搜索栏组件,通常用于搜索商品、文章等", + "keywords": [ + "uni-ui", + "uniui", + "搜索框", + "搜索栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-search-bar/readme.md b/uni_modules/uni-search-bar/readme.md new file mode 100644 index 0000000..253092f --- /dev/null +++ b/uni_modules/uni-search-bar/readme.md @@ -0,0 +1,14 @@ + + +## SearchBar 搜索栏 + +> **组件名:uni-search-bar** +> 代码块: `uSearchBar` + + +搜索栏组件 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-segmented-control/changelog.md b/uni_modules/uni-segmented-control/changelog.md new file mode 100644 index 0000000..a44385d --- /dev/null +++ b/uni_modules/uni-segmented-control/changelog.md @@ -0,0 +1,9 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-segmented-control](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-05-12) +- 新增 项目示例地址 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue b/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue new file mode 100644 index 0000000..e8bb3e5 --- /dev/null +++ b/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/uni_modules/uni-segmented-control/package.json b/uni_modules/uni-segmented-control/package.json new file mode 100644 index 0000000..6cae41d --- /dev/null +++ b/uni_modules/uni-segmented-control/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-segmented-control", + "displayName": "uni-segmented-control 分段器", + "version": "1.2.0", + "description": "分段器由至少 2 个分段控件组成,用作不同视图的显示", + "keywords": [ + "uni-ui", + "uniui", + "分段器", + "segement", + "顶部选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-segmented-control/readme.md b/uni_modules/uni-segmented-control/readme.md new file mode 100644 index 0000000..3527b03 --- /dev/null +++ b/uni_modules/uni-segmented-control/readme.md @@ -0,0 +1,13 @@ + + +## SegmentedControl 分段器 +> **组件名:uni-segmented-control** +> 代码块: `uSegmentedControl` + + +用作不同视图的显示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-steps/changelog.md b/uni_modules/uni-steps/changelog.md new file mode 100644 index 0000000..cb9d367 --- /dev/null +++ b/uni_modules/uni-steps/changelog.md @@ -0,0 +1,16 @@ +## 1.1.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-steps](https://uniapp.dcloud.io/component/uniui/uni-steps) +## 1.0.8(2021-05-12) +- 新增 项目示例地址 +## 1.0.7(2021-05-06) +- 修复 uni-steps 横向布局时,多行文字高度不合理的 bug +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-steps/components/uni-steps/uni-steps.vue b/uni_modules/uni-steps/components/uni-steps/uni-steps.vue new file mode 100644 index 0000000..a6c8f28 --- /dev/null +++ b/uni_modules/uni-steps/components/uni-steps/uni-steps.vue @@ -0,0 +1,269 @@ + + + + + diff --git a/uni_modules/uni-steps/package.json b/uni_modules/uni-steps/package.json new file mode 100644 index 0000000..c687b40 --- /dev/null +++ b/uni_modules/uni-steps/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-steps", + "displayName": "uni-steps 步骤条", + "version": "1.1.1", + "description": "步骤条组件,提供横向和纵向两种布局格式。", + "keywords": [ + "uni-ui", + "uniui", + "步骤条", + "时间轴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-steps/readme.md b/uni_modules/uni-steps/readme.md new file mode 100644 index 0000000..da7a4bf --- /dev/null +++ b/uni_modules/uni-steps/readme.md @@ -0,0 +1,13 @@ + + +## Steps 步骤条 +> **组件名:uni-steps** +> 代码块: `uSteps` + + +步骤条,常用于显示进度 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-steps) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-swipe-action/changelog.md b/uni_modules/uni-swipe-action/changelog.md new file mode 100644 index 0000000..c916427 --- /dev/null +++ b/uni_modules/uni-swipe-action/changelog.md @@ -0,0 +1,43 @@ +## 1.3.8(2023-04-13) +- 修复`uni-swipe-action`和`uni-swipe-action-item`不同时使用导致 closeOther 方法报错的 bug +## 1.3.7(2022-06-06) +- 修复 vue3 下使用组件不能正常运行的Bug +## 1.3.6(2022-05-31) +- 修复 h5端点击click触发两次的Bug +## 1.3.5(2022-05-23) +- 修复 isPC 找不到的Bug +## 1.3.4(2022-05-19) +- 修复 在 nvue 下 disabled 失效的bug +## 1.3.3(2022-03-31) +- 修复 按钮字体大小不能设置的bug +## 1.3.2(2022-03-16) +- 修复 h5和app端下报el错误的bug +## 1.3.1(2022-03-07) +- 修复 HBuilderX 1.4.X 版本中,h5和app端下报错的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swipe-action](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +## 1.2.4(2021-08-20) +- 优化 close-all 方法 +## 1.2.3(2021-08-20) +- 新增 close-all 方法,关闭所有已打开的组件 +## 1.2.2(2021-08-17) +- 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +## 1.2.1(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 修复 跨页面修改组件数据 ,导致不能滑动的问题 +## 1.1.10(2021-06-17) +- 修复 按钮点击执行两次的bug +## 1.1.9(2021-05-12) +- 新增 项目示例地址 +## 1.1.8(2021-03-26) +- 修复 微信小程序 nv_navigator is not defined 报错的bug +## 1.1.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 左侧滑动 +- 新增 插槽使用方式 +- 新增 threshold 属性,可以控制滑动缺省值 +- 优化 长列表滚动性能 +- 修复 滚动页面时触发组件滑动的Bug diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js new file mode 100644 index 0000000..707e432 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js @@ -0,0 +1,302 @@ +let bindIngXMixins = {} + +// #ifdef APP-NVUE +const BindingX = uni.requireNativePlugin('bindingx'); +const dom = uni.requireNativePlugin('dom'); +const animation = uni.requireNativePlugin('animation'); + +bindIngXMixins = { + data() { + return {} + }, + + watch: { + show(newVal) { + if (this.autoClose) return + if (this.stop) return + this.stop = true + if (newVal) { + this.open(newVal) + } else { + this.close() + } + }, + leftOptions() { + this.getSelectorQuery() + this.init() + }, + rightOptions(newVal) { + this.init() + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.box = this.getEl(this.$refs['selector-box--hock']) + this.selector = this.getEl(this.$refs['selector-content--hock']); + this.leftButton = this.getEl(this.$refs['selector-left-button--hock']); + this.rightButton = this.getEl(this.$refs['selector-right-button--hock']); + this.init() + }, + // beforeDestroy() { + // this.swipeaction.children.forEach((item, index) => { + // if (item === this) { + // this.swipeaction.children.splice(index, 1) + // } + // }) + // }, + methods: { + init() { + this.$nextTick(() => { + this.x = 0 + this.button = { + show: false + } + setTimeout(() => { + this.getSelectorQuery() + }, 200) + }) + }, + onClick(index, item, position) { + this.$emit('click', { + content: item, + index, + position + }) + }, + touchstart(e) { + // fix by mehaotian 禁止滑动 + if (this.disabled) return + // 每次只触发一次,避免多次监听造成闪烁 + if (this.stop) return + this.stop = true + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + let expression = this.range(this.x, -rightWidth, leftWidth) + let leftExpression = this.range(this.x - leftWidth, -leftWidth, 0) + let rightExpression = this.range(this.x + rightWidth, 0, rightWidth) + + this.eventpan = BindingX.bind({ + anchor: this.box, + eventType: 'pan', + props: [{ + element: this.selector, + property: 'transform.translateX', + expression + }, { + element: this.leftButton, + property: 'transform.translateX', + expression: leftExpression + }, { + element: this.rightButton, + property: 'transform.translateX', + expression: rightExpression + }, ] + }, (e) => { + // nope + if (e.state === 'end') { + this.x = e.deltaX + this.x; + this.isclick = true + this.bindTiming(e.deltaX) + } + }); + }, + touchend(e) { + if (this.isopen !== 'none' && !this.isclick) { + this.open('none') + } + }, + bindTiming(x) { + const left = this.x + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + const threshold = this.threshold + if (!this.isopen || this.isopen === 'none') { + if (left > threshold) { + this.open('left') + } else if (left < -threshold) { + this.open('right') + } else { + this.open('none') + } + } else { + if ((x > -leftWidth && x < 0) || x > rightWidth) { + if ((x > -threshold && x < 0) || (x - rightWidth > threshold)) { + this.open('left') + } else { + this.open('none') + } + } else { + if ((x < threshold && x > 0) || (x + leftWidth < -threshold)) { + this.open('right') + } else { + this.open('none') + } + } + } + }, + + /** + * 移动范围 + * @param {Object} num + * @param {Object} mix + * @param {Object} max + */ + range(num, mix, max) { + return `min(max(x+${num}, ${mix}), ${max})` + }, + + /** + * 开启swipe + */ + open(type) { + this.animation(type) + }, + + /** + * 关闭swipe + */ + close() { + this.animation('none') + }, + + /** + * 开启关闭动画 + * @param {Object} type + */ + animation(type) { + const time = 300 + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + if (this.eventpan && this.eventpan.token) { + BindingX.unbind({ + token: this.eventpan.token, + eventType: 'pan' + }) + } + + switch (type) { + case 'left': + Promise.all([ + this.move(this.selector, leftWidth), + this.move(this.leftButton, 0), + this.move(this.rightButton, rightWidth * 2) + ]).then(() => { + this.setEmit(leftWidth, type) + }) + break + case 'right': + Promise.all([ + this.move(this.selector, -rightWidth), + this.move(this.leftButton, -leftWidth * 2), + this.move(this.rightButton, 0) + ]).then(() => { + this.setEmit(-rightWidth, type) + }) + break + default: + Promise.all([ + this.move(this.selector, 0), + this.move(this.leftButton, -leftWidth), + this.move(this.rightButton, rightWidth) + ]).then(() => { + this.setEmit(0, type) + }) + + } + }, + setEmit(x, type) { + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + this.isopen = this.isopen || 'none' + this.stop = false + this.isclick = false + // 只有状态不一致才会返回结果 + if (this.isopen !== type && this.x !== x) { + if (type === 'left' && leftWidth > 0) { + this.$emit('change', 'left') + } + if (type === 'right' && rightWidth > 0) { + this.$emit('change', 'right') + } + if (type === 'none') { + this.$emit('change', 'none') + } + } + this.x = x + this.isopen = type + }, + move(ref, value) { + return new Promise((resolve, reject) => { + animation.transition(ref, { + styles: { + transform: `translateX(${value})`, + }, + duration: 150, //ms + timingFunction: 'linear', + needLayout: false, + delay: 0 //ms + }, function(res) { + resolve(res) + }) + }) + + }, + + /** + * 获取ref + * @param {Object} el + */ + getEl(el) { + return el.ref + }, + /** + * 获取节点信息 + */ + getSelectorQuery() { + Promise.all([ + this.getDom('left'), + this.getDom('right'), + ]).then((data) => { + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + + if (show === 'none') { + // this.close() + } else { + this.open(show) + } + + }) + + }, + getDom(str) { + return new Promise((resolve, reject) => { + dom.getComponentRect(this.$refs[`selector-${str}-button--hock`], (data) => { + if (data) { + this.button[str] = data.size + resolve(data) + } else { + reject() + } + }) + }) + } + } +} + +// #endif + +export default bindIngXMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js new file mode 100644 index 0000000..917cb48 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js @@ -0,0 +1,12 @@ +export function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (let v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js new file mode 100644 index 0000000..35c796b --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js @@ -0,0 +1,195 @@ +export default { + data() { + return { + x: 0, + transition: false, + width: 0, + viewWidth: 0, + swipeShow: 0 + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + if (newVal && newVal !== 'none') { + this.transition = true + this.open(newVal) + } else { + this.close() + } + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.isopen = false + setTimeout(() => { + this.getQuerySelect() + }, 50) + }, + methods: { + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + /** + * 移动触发 + * @param {Object} e + */ + onChange(e) { + this.moveX = e.detail.x + this.isclose = false + }, + touchstart(e) { + this.transition = false + this.isclose = true + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + touchmove(e) {}, + touchend(e) { + // 0的位置什么都不执行 + if (this.isclose && this.isopen === 'none') return + if (this.isclose && this.isopen !== 'none') { + this.transition = true + this.close() + } else { + this.move(this.moveX + this.leftWidth) + } + }, + + /** + * 移动 + * @param {Object} moveX + */ + move(moveX) { + // 打开关闭的处理逻辑不太一样 + this.transition = true + // 未打开状态 + if (!this.isopen || this.isopen === 'none') { + if (moveX > this.threshold) { + this.open('left') + } else if (moveX < -this.threshold) { + this.open('right') + } else { + this.close() + } + } else { + if (moveX < 0 && moveX < this.rightWidth) { + const rightX = this.rightWidth + moveX + if (rightX < this.threshold) { + this.open('right') + } else { + this.close() + } + } else if (moveX > 0 && moveX < this.leftWidth) { + const leftX = this.leftWidth - moveX + if (leftX < this.threshold) { + this.open('left') + } else { + this.close() + } + } + + } + + }, + + /** + * 打开 + */ + open(type) { + this.x = this.moveX + this.animation(type) + }, + + /** + * 关闭 + */ + close() { + this.x = this.moveX + // TODO 解决 x 值不更新的问题,所以会多触发一次 nextTick ,待优化 + this.$nextTick(() => { + this.x = -this.leftWidth + if (this.isopen !== 'none') { + this.$emit('change', 'none') + } + this.isopen = 'none' + }) + }, + + /** + * 执行结束动画 + * @param {Object} type + */ + animation(type) { + this.$nextTick(() => { + if (type === 'left') { + this.x = 0 + } else { + this.x = -this.rightWidth - this.leftWidth + } + + if (this.isopen !== type) { + this.$emit('change', type) + } + this.isopen = type + }) + + }, + getSlide(x) {}, + getQuerySelect() { + const query = uni.createSelectorQuery().in(this); + query.selectAll('.movable-view--hock').boundingClientRect(data => { + this.leftWidth = data[1].width + this.rightWidth = data[2].width + this.width = data[0].width + this.viewWidth = this.width + this.rightWidth + this.leftWidth + if (this.leftWidth === 0) { + // TODO 疑似bug ,初始化的时候如果x 是0,会导致移动位置错误,所以让元素超出一点 + this.x = -0.1 + } else { + this.x = -this.leftWidth + } + this.moveX = this.x + this.$nextTick(() => { + this.swipeShow = 1 + }) + + if (!this.buttonWidth) { + this.disabledView = true + } + + if (this.autoClose) return + if (this.show !== 'none') { + this.transition = true + this.open(this.shows) + } + }).exec(); + + } + } +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js new file mode 100644 index 0000000..d389bce --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js @@ -0,0 +1,260 @@ +let otherMixins = {} + +// #ifndef APP-PLUS|| MP-WEIXIN || H5 +const MIN_DISTANCE = 10; +otherMixins = { + data() { + // TODO 随机生生元素ID,解决百度小程序获取同一个元素位置信息的bug + const elClass = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}` + return { + uniShow: false, + left: 0, + buttonShow: 'none', + ani: false, + moveLeft: '', + elClass + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + left() { + this.moveLeft = `translateX(${this.left}px)` + }, + buttonShow(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + leftOptions() { + this.init() + }, + rightOptions() { + this.init() + } + }, + mounted() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + this.init() + }, + methods: { + init() { + clearTimeout(this.timer) + this.timer = setTimeout(() => { + this.getSelectorQuery() + }, 100) + // 移动距离 + this.left = 0 + this.x = 0 + }, + + closeSwipe(e) { + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + touchstart(e) { + if (this.disabled) return + this.ani = false + this.x = this.left || 0 + this.stopTouchStart(e) + this.autoClose && this.closeSwipe() + }, + touchmove(e) { + if (this.disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e); + if (this.direction !== 'horizontal') { + return; + } + this.move(this.x + this.deltaX) + return false + }, + touchend() { + if (this.disabled) return + this.moveDirection(this.left) + }, + /** + * 设置移动距离 + * @param {Object} value + */ + move(value) { + value = value || 0 + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + // 获取可滑动范围 + this.left = this.range(value, -rightWidth, leftWidth); + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + */ + moveDirection(left) { + const threshold = this.threshold + const isopen = this.isopen || 'none' + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + if (this.deltaX === 0) { + this.openState('none') + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > + 0 && rightWidth + + left < threshold)) { + // right + this.openState('right') + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > + 0 && + leftWidth - left < threshold)) { + // left + this.openState('left') + } else { + // default + this.openState('none') + } + }, + + /** + * 开启状态 + * @param {Boolean} type + */ + openState(type) { + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + let left = '' + this.isopen = this.isopen ? this.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + + if (this.isopen !== type) { + this.throttle = true + this.$emit('change', type) + } + + this.isopen = type + // 添加动画类 + this.ani = true + this.$nextTick(() => { + this.move(left) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 + }, + close() { + this.openState('none') + }, + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus() { + this.direction = ''; + this.deltaX = 0; + this.deltaY = 0; + this.offsetX = 0; + this.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event) { + this.resetTouchStatus(); + const touch = event.touches[0]; + this.startX = touch.clientX; + this.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event) { + const touch = event.touches[0]; + this.deltaX = touch.clientX - this.startX; + this.deltaY = touch.clientY - this.startY; + this.offsetX = Math.abs(this.deltaX); + this.offsetY = Math.abs(this.deltaY); + this.direction = this.direction || this.getDirection(this.offsetX, this.offsetY); + }, + + getSelectorQuery() { + const views = uni.createSelectorQuery().in(this) + views + .selectAll('.' + this.elClass) + .boundingClientRect(data => { + if (data.length === 0) return + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + this.leftWidth = data[0].width || 0 + this.rightWidth = data[1].width || 0 + this.buttonShow = show + }) + .exec() + } + } +} + +// #endif + +export default otherMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js new file mode 100644 index 0000000..08de1c9 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js @@ -0,0 +1,84 @@ +let mpMixins = {} +let is_pc = null +// #ifdef H5 +import { + isPC +} from "./isPC" +is_pc = isPC() +// #endif +// #ifdef APP-VUE|| MP-WEIXIN || H5 + +mpMixins = { + data() { + return { + is_show: 'none' + } + }, + watch: { + show(newVal) { + this.is_show = this.show + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.is_show = this.show + }, + methods: { + // wxs 中调用 + closeSwipe(e) { + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + + change(e) { + this.$emit('change', e.open) + if (this.is_show !== e.open) { + this.is_show = e.open + } + }, + + appTouchStart(e) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + onClickForPC(index, item, position) { + if (!is_pc) return + // #ifdef H5 + this.$emit('click', { + content: item, + index, + position + }) + // #endif + } + } +} + +// #endif +export default mpMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js new file mode 100644 index 0000000..78f0ec6 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js @@ -0,0 +1,270 @@ +const MIN_DISTANCE = 10; +export default { + showWatch(newVal, oldVal, ownerInstance, instance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + if (!$el) return + this.getDom(instance, ownerInstance, self) + if (newVal && newVal !== 'none') { + this.openState(newVal, instance, ownerInstance, self) + return + } + + if (state.left) { + this.openState('none', instance, ownerInstance, self) + } + this.resetTouchStatus(instance, self) + }, + + /** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ + touchstart(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state; + this.getDom(instance, ownerInstance, self) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + this.stopTouchStart(e, ownerInstance, self) + }, + + /** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchmove(e, ownerInstance, self) { + let instance = e.instance; + // 删除之后已经那不到实例了 + if (!instance) return; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e, self); + if (state.direction !== 'horizontal') { + return; + } + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + let x = state.x + state.deltaX + this.move(x, instance, ownerInstance, self) + }, + + /** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchend(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + this.moveDirection(state.left, instance, ownerInstance, self) + + }, + + /** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ + move(value, instance, ownerInstance, self) { + value = value || 0 + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = this.range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + + }, + + /** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ + getDom(instance, ownerInstance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + var leftDom = $el.querySelector('.button-group--left') + var rightDom = $el.querySelector('.button-group--right') + + state.leftWidth = leftDom.offsetWidth || 0 + state.rightWidth = rightDom.offsetWidth || 0 + state.threshold = instance.getDataset().threshold + }, + + getDisabledType(value) { + return (typeof(value) === 'string' ? JSON.parse(value) : value) || false; + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + + + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ + moveDirection(left, ins, ownerInstance, self) { + var state = self.state + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + this.openState('none', ins, ownerInstance, self) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + this.openState('right', ins, ownerInstance, self) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + this.openState('left', ins, ownerInstance, self) + } else { + // default + this.openState('none', ins, ownerInstance, self) + } + }, + + + /** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ + openState(type, ins, ownerInstance, self) { + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + let left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(() => { + ins.addClass('ani'); + this.move(left, ins, ownerInstance, self) + }) + }, + + + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus(instance, self) { + let state = self.state; + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event, ownerInstance, self) { + let instance = event.instance; + let state = self.state + this.resetTouchStatus(instance, self); + var touch = event.touches[0]; + state.startX = touch.clientX; + state.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event, self) { + let instance = event.instance; + let state = self.state; + let touch = event.touches[0]; + + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || this.getDirection(state.offsetX, state.offsetY); + } +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue new file mode 100644 index 0000000..d79c297 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue @@ -0,0 +1,347 @@ + + + + + + diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs new file mode 100644 index 0000000..b394244 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs @@ -0,0 +1,341 @@ +var MIN_DISTANCE = 10; + +/** + * 判断当前是否为H5、app-vue + */ +var IS_HTML5 = false +if (typeof window === 'object') IS_HTML5 = true + +/** + * 监听页面内值的变化,主要用于动态开关swipe-action + * @param {Object} newValue + * @param {Object} oldValue + * @param {Object} ownerInstance + * @param {Object} instance + */ +function showWatch(newVal, oldVal, ownerInstance, instance) { + var state = instance.getState() + getDom(instance, ownerInstance) + if (newVal && newVal !== 'none') { + openState(newVal, instance, ownerInstance) + return + } + + if (state.left) { + openState('none', instance, ownerInstance) + } + resetTouchStatus(instance) +} + +/** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ +function touchstart(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState(); + getDom(instance, ownerInstance) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + stopTouchStart(e, ownerInstance) +} + +/** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchmove(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 是否可以滑动页面 + stopTouchMove(e); + if (state.direction !== 'horizontal') { + return; + } + + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + + move(state.x + state.deltaX, instance, ownerInstance) +} + +/** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchend(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + moveDirection(state.left, instance, ownerInstance) + +} + +/** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ +function move(value, instance, ownerInstance) { + value = value || 0 + var state = instance.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + +} + +/** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ +function getDom(instance, ownerInstance) { + var state = instance.getState() + var leftDom = ownerInstance.selectComponent('.button-group--left') + var rightDom = ownerInstance.selectComponent('.button-group--right') + var leftStyles = { + width: 0 + } + var rightStyles = { + width: 0 + } + leftStyles = leftDom.getBoundingClientRect() + rightStyles = rightDom.getBoundingClientRect() + + state.leftWidth = leftStyles.width || 0 + state.rightWidth = rightStyles.width || 0 + state.threshold = instance.getDataset().threshold +} + +/** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} + + +/** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ +function moveDirection(left, ins, ownerInstance) { + var state = ins.getState() + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + openState('none', ins, ownerInstance) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + openState('right', ins, ownerInstance) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + openState('left', ins, ownerInstance) + } else { + // default + openState('none', ins, ownerInstance) + } +} + + +/** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ +function openState(type, ins, ownerInstance) { + var state = ins.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + var left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(function() { + ins.addClass('ani'); + move(left, ins, ownerInstance) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 +} + + +function getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; +} + +/** + * 重置滑动状态 + * @param {Object} event + */ +function resetTouchStatus(instance) { + var state = instance.getState(); + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; +} + +/** + * 设置滑动开始位置 + * @param {Object} event + */ +function stopTouchStart(event) { + var instance = event.instance; + var state = instance.getState(); + resetTouchStatus(instance); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.startX = touch.clientX; + state.startY = touch.clientY; +} + +/** + * 滑动中,是否禁止打开 + * @param {Object} event + */ +function stopTouchMove(event) { + var instance = event.instance; + var state = instance.getState(); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || getDirection(state.offsetX, state.offsetY); +} + +function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} + +var movable = false + +function mousedown(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchstart(e, ins) + movable = true +} + +function mousemove(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + if (!movable) return + touchmove(e, ins) +} + +function mouseup(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchend(e, ins) + movable = false +} + +function mouseleave(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + movable = false +} + +module.exports = { + showWatch: showWatch, + touchstart: touchstart, + touchmove: touchmove, + touchend: touchend, + mousedown: mousedown, + mousemove: mousemove, + mouseup: mouseup, + mouseleave: mouseleave +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue b/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue new file mode 100644 index 0000000..4971782 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/uni_modules/uni-swipe-action/package.json b/uni_modules/uni-swipe-action/package.json new file mode 100644 index 0000000..47651a6 --- /dev/null +++ b/uni_modules/uni-swipe-action/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swipe-action", + "displayName": "uni-swipe-action 滑动操作", + "version": "1.3.8", + "description": "SwipeAction 滑动操作操作组件", + "keywords": [ + "", + "uni-ui", + "uniui", + "滑动删除", + "侧滑删除" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-swipe-action/readme.md b/uni_modules/uni-swipe-action/readme.md new file mode 100644 index 0000000..93a5cac --- /dev/null +++ b/uni_modules/uni-swipe-action/readme.md @@ -0,0 +1,11 @@ + + +## SwipeAction 滑动操作 +> **组件名:uni-swipe-action** +> 代码块: `uSwipeAction`、`uSwipeActionItem` + + +通过滑动触发选项的容器 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/changelog.md b/uni_modules/uni-swiper-dot/changelog.md new file mode 100644 index 0000000..85cf54d --- /dev/null +++ b/uni_modules/uni-swiper-dot/changelog.md @@ -0,0 +1,12 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swiper-dot](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 clickItem 事件,支持指示点控制轮播 +- 新增 支持 pc 可用 diff --git a/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue new file mode 100644 index 0000000..46eb8c1 --- /dev/null +++ b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/uni_modules/uni-swiper-dot/package.json b/uni_modules/uni-swiper-dot/package.json new file mode 100644 index 0000000..f2dd8d2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swiper-dot", + "displayName": "uni-swiper-dot 轮播图指示点", + "version": "1.2.0", + "description": "自定义轮播图指示点组件", + "keywords": [ + "uni-ui", + "uniui", + "轮播图指示点", + "dot", + "swiper" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/readme.md b/uni_modules/uni-swiper-dot/readme.md new file mode 100644 index 0000000..7d397e2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/readme.md @@ -0,0 +1,11 @@ + + +## SwiperDot 轮播图指示点 +> **组件名:uni-swiper-dot** +> 代码块: `uSwiperDot` + + +自定义轮播图指示点 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-table/changelog.md b/uni_modules/uni-table/changelog.md new file mode 100644 index 0000000..9f87c67 --- /dev/null +++ b/uni_modules/uni-table/changelog.md @@ -0,0 +1,27 @@ +## 1.2.3(2023-03-28) +- 修复 在vue3模式下可能会出现错误的问题 +## 1.2.2(2022-11-29) +- 优化 主题样式 +## 1.2.1(2022-06-06) +- 修复 微信小程序存在无使用组件的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-table](https://uniapp.dcloud.io/component/uniui/uni-table) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-07-08) +- 新增 uni-th 支持 date 日期筛选范围 +## 1.0.6(2021-07-05) +- 新增 uni-th 支持 range 筛选范围 +## 1.0.5(2021-06-28) +- 新增 uni-th 筛选功能 +## 1.0.4(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.3(2021-04-16) +- 新增 sortable 属性,是否开启单列排序 +- 优化 表格多选逻辑 +## 1.0.2(2021-03-22) +- uni-tr 添加 disabled 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-table/components/uni-table/uni-table.vue b/uni_modules/uni-table/components/uni-table/uni-table.vue new file mode 100644 index 0000000..21d9527 --- /dev/null +++ b/uni_modules/uni-table/components/uni-table/uni-table.vue @@ -0,0 +1,455 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue new file mode 100644 index 0000000..fbe1bdc --- /dev/null +++ b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-td/uni-td.vue b/uni_modules/uni-table/components/uni-td/uni-td.vue new file mode 100644 index 0000000..9ce93e9 --- /dev/null +++ b/uni_modules/uni-table/components/uni-td/uni-td.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/filter-dropdown.vue b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue new file mode 100644 index 0000000..df22a71 --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue @@ -0,0 +1,511 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/uni-th.vue b/uni_modules/uni-table/components/uni-th/uni-th.vue new file mode 100644 index 0000000..14889dd --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/uni-th.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-thead/uni-thead.vue b/uni_modules/uni-table/components/uni-thead/uni-thead.vue new file mode 100644 index 0000000..0dd18cd --- /dev/null +++ b/uni_modules/uni-table/components/uni-thead/uni-thead.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/table-checkbox.vue b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue new file mode 100644 index 0000000..1089187 --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/uni-tr.vue b/uni_modules/uni-table/components/uni-tr/uni-tr.vue new file mode 100644 index 0000000..f9b9671 --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/uni-tr.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uni-table/i18n/en.json b/uni_modules/uni-table/i18n/en.json new file mode 100644 index 0000000..e32023c --- /dev/null +++ b/uni_modules/uni-table/i18n/en.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reset", + "filter-dropdown.search": "Search", + "filter-dropdown.submit": "Submit", + "filter-dropdown.filter": "Filter", + "filter-dropdown.gt": "Greater or equal to", + "filter-dropdown.lt": "Less than or equal to", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/es.json b/uni_modules/uni-table/i18n/es.json new file mode 100644 index 0000000..9afd04b --- /dev/null +++ b/uni_modules/uni-table/i18n/es.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reiniciar", + "filter-dropdown.search": "Búsqueda", + "filter-dropdown.submit": "Entregar", + "filter-dropdown.filter": "Filtrar", + "filter-dropdown.gt": "Mayor o igual a", + "filter-dropdown.lt": "Menos que o igual a", + "filter-dropdown.date": "Fecha" +} diff --git a/uni_modules/uni-table/i18n/fr.json b/uni_modules/uni-table/i18n/fr.json new file mode 100644 index 0000000..b006237 --- /dev/null +++ b/uni_modules/uni-table/i18n/fr.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Réinitialiser", + "filter-dropdown.search": "Chercher", + "filter-dropdown.submit": "Soumettre", + "filter-dropdown.filter": "Filtre", + "filter-dropdown.gt": "Supérieur ou égal à", + "filter-dropdown.lt": "Inférieur ou égal à", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/index.js b/uni_modules/uni-table/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-table/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-table/i18n/zh-Hans.json b/uni_modules/uni-table/i18n/zh-Hans.json new file mode 100644 index 0000000..862af17 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hans.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "确定", + "filter-dropdown.filter": "筛选", + "filter-dropdown.gt": "大于等于", + "filter-dropdown.lt": "小于等于", + "filter-dropdown.date": "日期范围" +} diff --git a/uni_modules/uni-table/i18n/zh-Hant.json b/uni_modules/uni-table/i18n/zh-Hant.json new file mode 100644 index 0000000..64f8061 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hant.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "確定", + "filter-dropdown.filter": "篩選", + "filter-dropdown.gt": "大於等於", + "filter-dropdown.lt": "小於等於", + "filter-dropdown.date": "日期範圍" +} diff --git a/uni_modules/uni-table/package.json b/uni_modules/uni-table/package.json new file mode 100644 index 0000000..7c2f91c --- /dev/null +++ b/uni_modules/uni-table/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-table", + "displayName": "uni-table 表格", + "version": "1.2.3", + "description": "表格组件,多用于展示多条结构类似的数据,如", + "keywords": [ + "uni-ui", + "uniui", + "table", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-datetime-picker"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "n", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-table/readme.md b/uni_modules/uni-table/readme.md new file mode 100644 index 0000000..bb08c79 --- /dev/null +++ b/uni_modules/uni-table/readme.md @@ -0,0 +1,13 @@ + + +## Table 表单 +> 组件名:``uni-table``,代码块: `uTable`。 + +用于展示多条结构类似的数据 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-table) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + diff --git a/uni_modules/uni-tag/changelog.md b/uni_modules/uni-tag/changelog.md new file mode 100644 index 0000000..c0c5839 --- /dev/null +++ b/uni_modules/uni-tag/changelog.md @@ -0,0 +1,21 @@ +## 2.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-tag](https://uniapp.dcloud.io/component/uniui/uni-tag) +## 2.0.0(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +- 移除 插槽 +- 移除 type 属性的 royal 选项 +## 1.1.1(2021-08-11) +- type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-06-18) +- 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug +## 1.0.6(2021-06-04) +- 修复 未定义 sass 变量 "$uni-color-royal" 的bug +## 1.0.5(2021-05-10) +- 修复 royal 类型无效的bug +- 修复 uni-tag 宽度不自适应的bug +- 新增 uni-tag 支持属性 custom-style 自定义样式 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-tag/components/uni-tag/uni-tag.vue b/uni_modules/uni-tag/components/uni-tag/uni-tag.vue new file mode 100644 index 0000000..6378a0b --- /dev/null +++ b/uni_modules/uni-tag/components/uni-tag/uni-tag.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uni_modules/uni-tag/package.json b/uni_modules/uni-tag/package.json new file mode 100644 index 0000000..1878088 --- /dev/null +++ b/uni_modules/uni-tag/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-tag", + "displayName": "uni-tag 标签", + "version": "2.1.0", + "description": "Tag 组件,用于展示1个或多个文字标签,可点击切换选中、不选中的状态。", + "keywords": [ + "uni-ui", + "uniui", + "", + "tag", + "标签" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-tag/readme.md b/uni_modules/uni-tag/readme.md new file mode 100644 index 0000000..6e78ff5 --- /dev/null +++ b/uni_modules/uni-tag/readme.md @@ -0,0 +1,13 @@ + + +## Tag 标签 +> **组件名:uni-tag** +> 代码块: `uTag` + + +用于展示1个或多个文字标签,可点击切换选中、不选中的状态 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tag) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-title/changelog.md b/uni_modules/uni-title/changelog.md new file mode 100644 index 0000000..7626216 --- /dev/null +++ b/uni_modules/uni-title/changelog.md @@ -0,0 +1,10 @@ +## 1.1.1(2022-05-19) +- 修改组件描述 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-title](https://uniapp.dcloud.io/component/uniui/uni-title) +## 1.0.2(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-title/components/uni-title/uni-title.vue b/uni_modules/uni-title/components/uni-title/uni-title.vue new file mode 100644 index 0000000..bf4f926 --- /dev/null +++ b/uni_modules/uni-title/components/uni-title/uni-title.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uni-title/package.json b/uni_modules/uni-title/package.json new file mode 100644 index 0000000..2249f5a --- /dev/null +++ b/uni_modules/uni-title/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-title", + "displayName": "uni-title 章节标题", + "version": "1.1.1", + "description": "章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题", + "keywords": [ + "uni-ui", + "uniui", + "标题", + "章节", + "章节标题", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-title/readme.md b/uni_modules/uni-title/readme.md new file mode 100644 index 0000000..0e60b1b --- /dev/null +++ b/uni_modules/uni-title/readme.md @@ -0,0 +1,14 @@ + + +## Title 标题 +> **组件名:uni-title** +> 代码块: `uTitle` + + +章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-title) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + diff --git a/uni_modules/uni-tooltip/changelog.md b/uni_modules/uni-tooltip/changelog.md new file mode 100644 index 0000000..00f1572 --- /dev/null +++ b/uni_modules/uni-tooltip/changelog.md @@ -0,0 +1,10 @@ +## 0.2.1(2022-05-09) +- 修复 content 为空时仍然弹出的bug +## 0.2.0(2022-05-07) +**注意:破坏性更新** +- 更新 text 属性变更为 content +- 更新 移除 width 属性 +## 0.1.1(2022-04-27) +- 修复 组件根 text 嵌套组件 warning +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue b/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue new file mode 100644 index 0000000..ffbb6fa --- /dev/null +++ b/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue @@ -0,0 +1,68 @@ + + + + + + diff --git a/uni_modules/uni-tooltip/package.json b/uni_modules/uni-tooltip/package.json new file mode 100644 index 0000000..e88ecf8 --- /dev/null +++ b/uni_modules/uni-tooltip/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-tooltip", + "displayName": "uni-tooltip 提示文字", + "version": "0.2.1", + "description": "Tooltip 提示文字", + "keywords": [ + "uni-tooltip", + "uni-ui", + "tooltip", + "tip", + "文字提示" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无 ", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-tooltip/readme.md b/uni_modules/uni-tooltip/readme.md new file mode 100644 index 0000000..faafa2e --- /dev/null +++ b/uni_modules/uni-tooltip/readme.md @@ -0,0 +1,8 @@ +## Badge 数字角标 +> **组件名:uni-tooltip** +> 代码块: `uTooltip` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tooltip) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-transition/changelog.md b/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..b1a824b --- /dev/null +++ b/uni_modules/uni-transition/changelog.md @@ -0,0 +1,20 @@ +## 1.3.1(2021-11-23) +- 修复 init 方法初始化问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) +## 1.2.1(2021-09-27) +- 修复 init 方法不生效的 Bug +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.1(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的 Bug +## 1.1.0(2021-04-22) +- 新增 通过方法自定义动画 +- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- 优化 动画触发逻辑,使动画更流畅 +- 优化 支持单独的动画类型 +- 优化 文档示例 +## 1.0.2(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/uni_modules/uni-transition/components/uni-transition/createAnimation.js new file mode 100644 index 0000000..8f89b18 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,131 @@ +// const defaultOption = { +// duration: 300, +// timingFunction: 'linear', +// delay: 0, +// transformOrigin: '50% 50% 0' +// } +// #ifdef APP-NVUE +const nvueAnimation = uni.requireNativePlugin('animation') +// #endif +class MPAnimation { + constructor(options, _this) { + this.options = options + // 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误 + this.animation = uni.createAnimation({ + ...options + }) + this.currentStepAnimates = {} + this.next = 0 + this.$ = _this + + } + + _nvuePushAnimates(type, args) { + let aniObj = this.currentStepAnimates[this.next] + let styles = {} + if (!aniObj) { + styles = { + styles: {}, + config: {} + } + } else { + styles = aniObj + } + if (animateTypes1.includes(type)) { + if (!styles.styles.transform) { + styles.styles.transform = '' + } + let unit = '' + if(type === 'rotate'){ + unit = 'deg' + } + styles.styles.transform += `${type}(${args+unit}) ` + } else { + styles.styles[type] = `${args}` + } + this.currentStepAnimates[this.next] = styles + } + _animateRun(styles = {}, config = {}) { + let ref = this.$.$refs['ani'].ref + if (!ref) return + return new Promise((resolve, reject) => { + nvueAnimation.transition(ref, { + styles, + ...config + }, res => { + resolve() + }) + }) + } + + _nvueNextAnimate(animates, step = 0, fn) { + let obj = animates[step] + if (obj) { + let { + styles, + config + } = obj + this._animateRun(styles, config).then(() => { + step += 1 + this._nvueNextAnimate(animates, step, fn) + }) + } else { + this.currentStepAnimates = {} + typeof fn === 'function' && fn() + this.isEnd = true + } + } + + step(config = {}) { + // #ifndef APP-NVUE + this.animation.step(config) + // #endif + // #ifdef APP-NVUE + this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) + this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin + this.next++ + // #endif + return this + } + + run(fn) { + // #ifndef APP-NVUE + this.$.animationData = this.animation.export() + this.$.timer = setTimeout(() => { + typeof fn === 'function' && fn() + }, this.$.durationTime) + // #endif + // #ifdef APP-NVUE + this.isEnd = false + let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref + if(!ref) return + this._nvueNextAnimate(this.currentStepAnimates, 0, fn) + this.next = 0 + // #endif + } +} + + +const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', + 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', + 'translateZ' +] +const animateTypes2 = ['opacity', 'backgroundColor'] +const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] +animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { + MPAnimation.prototype[type] = function(...args) { + // #ifndef APP-NVUE + this.animation[type](...args) + // #endif + // #ifdef APP-NVUE + this._nvuePushAnimates(type, args) + // #endif + return this + } +}) + +export function createAnimation(option, _this) { + if(!_this) return + clearTimeout(_this.timer) + return new MPAnimation(option, _this) +} diff --git a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..a2bf104 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/uni_modules/uni-transition/package.json b/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..d15fdf0 --- /dev/null +++ b/uni_modules/uni-transition/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.1", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-transition/readme.md b/uni_modules/uni-transition/readme.md new file mode 100644 index 0000000..2f8a77e --- /dev/null +++ b/uni_modules/uni-transition/readme.md @@ -0,0 +1,11 @@ + + +## Transition 过渡动画 +> **组件名:uni-transition** +> 代码块: `uTransition` + + +元素过渡动画 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map index c042efa..f1d5d7c 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map @@ -1 +1 @@ -{"version":3,"sources":["uni-app:///main.js",null,"webpack:///D:/work/云美/legalAffairs-app/App.vue?8589","uni-app:///App.vue","webpack:///D:/work/云美/legalAffairs-app/App.vue?6a68","webpack:///D:/work/云美/legalAffairs-app/App.vue?88be"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","Vue","config","productionTip","App","mpType","app","store","$mount","onLaunch","console","onShow","onHide"],"mappings":";;;;;;;;;;;;;;AAAA;AAE2D;AAC3D;AAGA;AACA;AAAgC;AAAA;AANhC;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAM1DC,YAAG,CAACC,MAAM,CAACC,aAAa,GAAG,KAAK;AAChCC,YAAG,CAACC,MAAM,GAAG,KAAK;AAClB,IAAMC,GAAG,GAAG,IAAIL,YAAG;EAClBM,KAAK,EAALA;AAAK,GACDH,YAAG,EACN;AACF,UAAAE,GAAG,EAACE,MAAM,EAAE,C;;;;;;;;;;;;;ACdZ;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACuD;AACL;AACa;;;AAG/D;AACwK;AACxK,gBAAgB,qLAAU;AAC1B,EAAE,yEAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAynB,CAAgB,qpBAAG,EAAC,C;;;;;;;;;;;;;;;;;;eCC7oB;EACAC;IACAC;EACA;EACAC;IACAD;EACA;EACAE;IACAF;EACA;AACA;AAAA,2B;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAs5B,CAAgB,05BAAG,EAAC,C;;;;;;;;;;;ACA16B;AACA,OAAO,KAAU,EAAE,kBAKd","file":"common/main.js","sourcesContent":["import 'uni-pages';\r\n// @ts-ignore\r\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;import App from './App'\r\nimport store from './store/index.js'\r\n\r\n\r\nimport Vue from 'vue'\r\nimport './uni.promisify.adaptor'\r\nVue.config.productionTip = false\r\nApp.mpType = 'app'\r\nconst app = new Vue({\r\n\tstore,\r\n ...App\r\n})\r\napp.$mount()","var render, staticRenderFns, recyclableRender, components\nvar renderjs\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"App.vue\"\nexport default component.exports","import mod from \"-!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=script&lang=js&\"","\r\n\r\n\n","import mod from \"-!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--6-oneOf-1-2!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--6-oneOf-1-2!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-3!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=style&index=0&lang=css&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1693297458649\n var cssReload = require(\"D:/Desktop/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"../../\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["uni-app:///main.js","webpack:///D:/法务/RuoYi-App-master/RuoYi-App-master/App.vue?5b1b","webpack:///D:/法务/RuoYi-App-master/RuoYi-App-master/App.vue?8626","uni-app:///App.vue","webpack:///D:/法务/RuoYi-App-master/RuoYi-App-master/App.vue?6226","webpack:///D:/法务/RuoYi-App-master/RuoYi-App-master/App.vue?50d6"],"names":["wx","__webpack_require_UNI_MP_PLUGIN__","__webpack_require__","Vue","use","plugins","config","productionTip","prototype","$store","store","App","mpType","app","$mount","onLaunch","methods","initApp","initConfig","checkLogin"],"mappings":";;;;;;;;;;;;;;AAAA;AAE2D;AAC3D;AACA;AACA;AACA;AAAqB;AAAA;AALrB;AACAA,EAAE,CAACC,iCAAiC,GAAGC,mBAAmB;AAIpC;AACtBC,YAAG,CAACC,GAAG,CAACC,gBAAO,CAAC;AAEhBF,YAAG,CAACG,MAAM,CAACC,aAAa,GAAG,KAAK;AAChCJ,YAAG,CAACK,SAAS,CAACC,MAAM,GAAGC,cAAK;AAE5BC,YAAG,CAACC,MAAM,GAAG,KAAK;AAElB,IAAMC,GAAG,GAAG,IAAIV,YAAG,mBACdQ,YAAG,EACN;AAEF,UAAAE,GAAG,EAACC,MAAM,EAAE,C;;;;;;;;;;;;;AClBZ;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACuD;AACL;AACc;;;AAGhE;AACwK;AACxK,gBAAgB,qLAAU;AAC1B,EAAE,yEAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACe,gF;;;;;;;;;;;;ACvBf;AAAA;AAAA;AAAA;AAAynB,CAAgB,qpBAAG,EAAC,C;;;;;;;;;;;;;;;;;;;ACC7oB;AACA;AACA;AAAA,eAEA;EACAC;IACA;EACA;EACAC;IACA;IACAC;MACA;MACA;MACA;IAIA;IACAC;MACA;IACA;IACAC;MACA;QACA;MACA;IACA;EACA;AACA;AAAA,2B;;;;;;;;;;;;AC5BA;AAAA;AAAA;AAAA;AAAwrC,CAAgB,oqCAAG,EAAC,C;;;;;;;;;;;ACA5sC;AACA,OAAO,KAAU,EAAE,kBAKd","file":"common/main.js","sourcesContent":["import 'uni-pages';\r\n// @ts-ignore\r\nwx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;import Vue from 'vue'\r\nimport App from './App'\r\nimport store from './store' // store\r\nimport plugins from './plugins' // plugins\r\nimport './permission' // permission\r\nVue.use(plugins)\r\n\r\nVue.config.productionTip = false\r\nVue.prototype.$store = store\r\n\r\nApp.mpType = 'app'\r\n\r\nconst app = new Vue({\r\n ...App\r\n})\r\n\r\napp.$mount()","var render, staticRenderFns, recyclableRender, components\nvar renderjs\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"App.vue\"\nexport default component.exports","import mod from \"-!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib/index.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--13-1!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=script&lang=js&\"","\r\n\r\n\n","import mod from \"-!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-2!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-3!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader/index.js??ref--8-oneOf-1-5!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/index.js??vue-loader-options!../../../Desktop/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./App.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin\n if(module.hot) {\n // 1693893349241\n var cssReload = require(\"D:/Desktop/HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/hmr/hotModuleReplacement.js\")(module.id, {\"hmr\":true,\"publicPath\":\"../../\",\"locals\":false});\n module.hot.dispose(cssReload);\n module.hot.accept(undefined, cssReload);\n }\n "],"sourceRoot":""} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map index 03b92e0..35f5e61 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap?7f80"],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;QACA,oBAAoB;QACpB;QACA;QACA;QACA,uBAAuB,kVAAkV;QACzW;QACA;QACA,mBAAmB,6BAA6B;QAChD;QACA;QACA;QACA;QACA;QACA,mBAAmB,8BAA8B;QACjD;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA,KAAK;QACL;QACA,KAAK;QACL;;QAEA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA","file":"common/runtime.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"common/runtime\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"common/runtime\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + chunkId + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"uni_modules/uni-list/components/uni-list-item/uni-list-item\":1,\"uni_modules/uni-list/components/uni-list/uni-list\":1,\"uni_modules/uni-icons/components/uni-icons/uni-icons\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"uni_modules/uni-list/components/uni-list-item/uni-list-item\":\"uni_modules/uni-list/components/uni-list-item/uni-list-item\",\"uni_modules/uni-list/components/uni-list/uni-list\":\"uni_modules/uni-list/components/uni-list/uni-list\",\"uni_modules/uni-icons/components/uni-icons/uni-icons\":\"uni_modules/uni-icons/components/uni-icons/uni-icons\"}[chunkId]||chunkId) + \".wxss\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = global[\"webpackJsonp\"] = global[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[null],"names":[],"mappings":";QAAA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,iBAAiB,4BAA4B;QAC7C;QACA;QACA,kBAAkB,2BAA2B;QAC7C;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;;;QAGA;QACA,oBAAoB;QACpB;QACA;QACA;QACA,uBAAuB,k1DAAk1D;QACz2D;QACA;QACA,mBAAmB,6BAA6B;QAChD;QACA;QACA;QACA;QACA;QACA,mBAAmB,8BAA8B;QACjD;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA,KAAK;QACL;QACA,KAAK;QACL;;QAEA;;QAEA;QACA,iCAAiC;;QAEjC;QACA;QACA;QACA,KAAK;QACL;QACA;QACA;QACA,MAAM;QACN;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,wBAAwB,kCAAkC;QAC1D,MAAM;QACN;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;QAEA;QACA,0CAA0C,oBAAoB,WAAW;;QAEzE;QACA;QACA;QACA;QACA,gBAAgB,uBAAuB;QACvC;;;QAGA;QACA","file":"common/runtime.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"common/runtime\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"common/runtime\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + chunkId + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"uni_modules/uni-icons/components/uni-icons/uni-icons\":1,\"components/uni-section/uni-section\":1,\"uni_modules/uni-grid/components/uni-grid-item/uni-grid-item\":1,\"uni_modules/uni-grid/components/uni-grid/uni-grid\":1,\"uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot\":1,\"uni_modules/uni-list/components/uni-list-item/uni-list-item\":1,\"uni_modules/uni-list/components/uni-list/uni-list\":1,\"uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox\":1,\"uni_modules/uni-forms/components/uni-forms-item/uni-forms-item\":1,\"uni_modules/uni-forms/components/uni-forms/uni-forms\":1,\"uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput\":1,\"uni_modules/uni-link/components/uni-link/uni-link\":1,\"uni_modules/uni-title/components/uni-title/uni-title\":1,\"uni_modules/uni-card/components/uni-card/uni-card\":1,\"uni_modules/uni-badge/components/uni-badge/uni-badge\":1,\"uni_modules/uni-load-more/components/uni-load-more/uni-load-more\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"uni_modules/uni-icons/components/uni-icons/uni-icons\":\"uni_modules/uni-icons/components/uni-icons/uni-icons\",\"components/uni-section/uni-section\":\"components/uni-section/uni-section\",\"uni_modules/uni-grid/components/uni-grid-item/uni-grid-item\":\"uni_modules/uni-grid/components/uni-grid-item/uni-grid-item\",\"uni_modules/uni-grid/components/uni-grid/uni-grid\":\"uni_modules/uni-grid/components/uni-grid/uni-grid\",\"uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot\":\"uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot\",\"uni_modules/uni-list/components/uni-list-item/uni-list-item\":\"uni_modules/uni-list/components/uni-list-item/uni-list-item\",\"uni_modules/uni-list/components/uni-list/uni-list\":\"uni_modules/uni-list/components/uni-list/uni-list\",\"uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox\":\"uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox\",\"uni_modules/uni-forms/components/uni-forms-item/uni-forms-item\":\"uni_modules/uni-forms/components/uni-forms-item/uni-forms-item\",\"uni_modules/uni-forms/components/uni-forms/uni-forms\":\"uni_modules/uni-forms/components/uni-forms/uni-forms\",\"uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput\":\"uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput\",\"uni_modules/uni-link/components/uni-link/uni-link\":\"uni_modules/uni-link/components/uni-link/uni-link\",\"uni_modules/uni-title/components/uni-title/uni-title\":\"uni_modules/uni-title/components/uni-title/uni-title\",\"uni_modules/uni-card/components/uni-card/uni-card\":\"uni_modules/uni-card/components/uni-card/uni-card\",\"uni_modules/uni-badge/components/uni-badge/uni-badge\":\"uni_modules/uni-badge/components/uni-badge/uni-badge\",\"uni_modules/uni-load-more/components/uni-load-more/uni-load-more\":\"uni_modules/uni-load-more/components/uni-load-more/uni-load-more\"}[chunkId]||chunkId) + \".wxss\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = global[\"webpackJsonp\"] = global[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"sourceRoot":""} \ No newline at end of file diff --git a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map index fbd3967..4c0436f 100644 --- a/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map +++ b/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js?bc2e","webpack:///./node_modules/@dcloudio/uni-mp-weixin/dist/index.js?543d","webpack:///(webpack)/buildin/global.js?cd00","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js?4ea4","webpack:///./node_modules/@babel/runtime/helpers/slicedToArray.js?278c","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js?c135","webpack:///./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js?9b42","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js?6613","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js?5a43","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js?c240","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js?9523","webpack:///./node_modules/@babel/runtime/helpers/toPropertyKey.js?a395","webpack:///./node_modules/@babel/runtime/helpers/typeof.js?7037","webpack:///./node_modules/@babel/runtime/helpers/toPrimitive.js?e50d","webpack:///./node_modules/@babel/runtime/helpers/construct.js?b17c","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js?4a4b","webpack:///./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js?6f8f","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js?448a","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js?2236","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js?11b0","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js?0676","webpack:///./node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js?37dc","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js?970b","webpack:///./node_modules/@babel/runtime/helpers/createClass.js?5bc3","webpack:///./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js?66fd","webpack:///./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js?f0c5","uni-app:///store/index.js","webpack:///./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vuex3/dist/vuex.common.js?26cb","webpack:///../node_modules/deepmerge/dist/cjs.js?586a",null,"webpack:///../node_modules/shvl/dist/shvl.mjs?0efd","uni-app:///store/modules/login.js","uni-app:///store/modules/devList.js","uni-app:///store/modules/area.js","uni-app:///store/modules/auth.js","uni-app:///store/modules/search.js","uni-app:///store/modules/message.js","uni-app:///store/modules/userInfoApp.js","uni-app:///uni.promisify.adaptor.js","uni-app:///uni_modules/uni-icons/components/uni-icons/icons.js"],"names":["objectKeys","singlePageDisableKey","target","globalThis","key","join","oldWx","launchOption","getLaunchOptionsSync","isWxKey","scene","includes","indexOf","initWx","newWx","realAtob","b64","b64re","atob","str","String","replace","test","Error","slice","length","bitmap","result","r1","r2","i","charAt","fromCharCode","b64DecodeUnicode","decodeURIComponent","split","map","c","charCodeAt","toString","getCurrentUserInfo","token","wx","getStorageSync","tokenArr","uid","role","permission","tokenExpired","userInfo","JSON","parse","error","message","exp","iat","uniIdMixin","Vue","prototype","uniIDHasRole","roleId","uniIDHasPermission","permissionId","uniIDTokenValid","Date","now","_toString","Object","hasOwnProperty","isFn","fn","isStr","isObject","obj","isPlainObject","call","hasOwn","noop","cached","cache","create","cachedFn","hit","camelizeRE","camelize","_","toUpperCase","sortObject","sortObj","keys","sort","forEach","HOOKS","globalInterceptors","scopedInterceptors","mergeHook","parentVal","childVal","res","concat","Array","isArray","dedupeHooks","hooks","push","removeHook","hook","index","splice","mergeInterceptorHook","interceptor","option","removeInterceptorHook","addInterceptor","method","removeInterceptor","wrapperHook","params","data","isPromise","then","queue","promise","Promise","resolve","callback","wrapperOptions","options","name","oldCallback","callbackInterceptor","wrapperReturnValue","returnValue","returnValueHooks","getApiInterceptorHooks","scopedInterceptor","invokeApi","api","invoke","promiseInterceptor","reject","SYNC_API_RE","CONTEXT_API_RE","CONTEXT_API_RE_EXC","ASYNC_API","CALLBACK_API_RE","isContextApi","isSyncApi","isCallbackApi","handlePromise","catch","err","shouldPromise","finally","constructor","value","reason","promisify","promiseApi","success","fail","complete","assign","EPS","BASE_DEVICE_WIDTH","isIOS","deviceWidth","deviceDPR","checkDeviceWidth","getSystemInfoSync","platform","pixelRatio","windowWidth","upx2px","number","newDeviceWidth","Number","Math","floor","LOCALE_ZH_HANS","LOCALE_ZH_HANT","LOCALE_EN","LOCALE_FR","LOCALE_ES","messages","locale","normalizeLocale","language","initI18nMessages","isEnableLocale","localeKeys","__uniConfig","locales","curMessages","userMessages","i18n","initVueI18n","t","i18nMixin","mixin","beforeCreate","unwatch","watchLocale","$forceUpdate","$once","methods","$$t","values","setLocale","getLocale","initAppLocale","appVm","state","observable","localeWatchers","$watchLocale","defineProperty","get","set","v","watch","include","parts","find","part","startsWith","trim","toLowerCase","lang","getLocale$1","getApp","app","allowDefault","$vm","$locale","setLocale$1","oldLocale","onLocaleChangeCallbacks","onLocaleChange","global","interceptors","baseApi","freeze","__proto__","findExistsPageIndex","url","pages","getCurrentPages","len","page","$page","fullPath","redirectTo","fromArgs","exists","delta","args","existsPageIndex","previewImage","currentIndex","parseInt","current","isNaN","urls","filter","item","indicator","loop","UUID_KEY","deviceId","useDeviceId","random","setStorage","addSafeAreaInsets","safeArea","safeAreaInsets","top","left","right","bottom","screenHeight","populateParameters","brand","model","system","theme","version","fontSizeSetting","SDKVersion","deviceOrientation","extraParam","osName","osVersion","hostVersion","deviceType","getGetDeviceType","deviceBrand","getDeviceBrand","_hostName","getHostName","_deviceOrientation","_devicePixelRatio","_SDKVersion","hostLanguage","parameters","appId","process","appName","appVersion","appVersionCode","appLanguage","getAppLanguage","uniCompileVersion","uniRuntimeVersion","uniPlatform","deviceModel","devicePixelRatio","toLocaleLowerCase","hostTheme","hostName","hostSDKVersion","hostFontSizeSetting","windowTop","windowBottom","osLanguage","undefined","osTheme","ua","hostPackageName","browserName","browserVersion","deviceTypeMaps","ipad","windows","mac","deviceTypeMapsKeys","_model","_m","defaultLanguage","_platform","environment","host","env","getSystemInfo","showActionSheet","alertText","title","getAppBaseInfo","getDeviceInfo","getWindowInfo","getAppAuthorizeSetting","locationReducedAccuracy","locationAccuracy","compressImage","compressedHeight","compressHeight","compressedWidth","compressWidth","protocols","todos","canIUses","CALLBACKS","processCallback","methodName","processReturnValue","processArgs","argsOption","keepFromArgs","toArgs","keyOption","console","warn","keepReturnValue","wrapper","protocol","arg1","arg2","apply","todoApis","TODOS","createTodoApi","todoApi","errMsg","providers","oauth","share","payment","getProvider","service","provider","extraApi","getEmitter","Emitter","getUniEmitter","ctx","$on","arguments","$off","$emit","eventApi","tryCatch","e","getApiCallbacks","apiCallbacks","param","cid","cidErrMsg","enabled","normalizePushMessage","invokePushCallback","type","invokeGetPushCidCallbacks","onPushMessageCallbacks","stopped","getPushCidCallbacks","getPushClientId","hasSuccess","hasFail","hasComplete","onPushMessage","offPushMessage","baseInfo","shareVideoMessage","miniapp","mocks","findVmByVueId","vm","vuePid","$children","childVm","$scope","_$vueId","parentVm","initBehavior","Behavior","isPage","route","initRelation","detail","triggerEvent","selectAllComponents","mpInstance","selector","$refs","components","component","ref","dataset","toSkip","vueGeneric","scopedComponent","syncRefs","refs","newRefs","oldKeys","Set","newKeys","oldValue","newValue","every","delete","initRefs","forComponents","handleLink","event","vueOptions","parent","markMPComponent","IS_MP","configurable","enumerable","OB","SKIP","isExtensible","WORKLET_RE","initWorkletMethods","mpMethods","vueMethods","matches","match","workletName","MPPage","Page","MPComponent","Component","customizeRE","customize","initTriggerEvent","oldTriggerEvent","newTriggerEvent","comType","newEvent","_triggerEvent","initHook","isComponent","oldHook","__$wrappered","after","PAGE_EVENT_HOOKS","initMocks","$mp","mpType","mock","hasHook","default","extendOptions","super","mixins","initHooks","mpOptions","__call_hook","initUnknownHooks","excludes","findHooks","initHook$1","initVueComponent","VueComponent","extend","initSlots","vueSlots","$slots","slotName","$scopedSlots","initVueIds","vueIds","_$vuePid","initData","context","VUE_APP_DEBUG","stringify","__lifecycle_hooks__","PROP_TYPES","Boolean","createObserver","observer","newVal","oldVal","initBehaviors","vueBehaviors","behaviors","vueExtends","extends","vueMixins","vueProps","props","behavior","properties","initProperties","vueMixin","parsePropType","defaultValue","file","isBehavior","vueId","virtualHost","virtualHostStyle","virtualHostClass","scopedSlotsCompiler","setData","opts","wrapper$1","mp","stopPropagation","preventDefault","markerId","getExtraValue","dataPathsArray","dataPathArray","dataPath","propPath","valuePath","vFor","isInteger","substr","__get_value","vForItem","vForKey","processEventExtra","extra","__args__","extraObj","getObjByArray","arr","element","processEventArgs","isCustom","isCustomMPEvent","currentTarget","ret","arg","ONCE","CUSTOM","isMatchEventType","eventType","optType","getContextVm","$parent","$options","generic","handleEvent","eventOpts","eventOpt","eventsArray","isOnce","eventArray","handlerCtx","handler","path","is","once","eventChannels","getEventChannel","id","eventChannel","initEventChannel","getOpenerEventChannel","callHook","__id__","__eventChannel__","initScopedSlotsParams","center","parents","currentId","propsData","$hasSSP","slot","$getSSP","needAll","$setSSP","$initSSP","$callSSP","destroyed","parseBaseApp","store","$store","mpHost","$i18n","_i18n","appOptions","onLaunch","canIUse","globalData","_isMounted","parseApp","createApp","App","encodeReserveRE","encodeReserveReplacer","commaRE","encode","encodeURIComponent","stringifyQuery","encodeStr","val","val2","x","parseBaseComponent","vueComponentOptions","needVueOptions","multipleSlots","addGlobalClass","componentOptions","__file","lifetimes","attached","$mount","ready","detached","$destroy","pageLifetimes","show","hide","resize","size","__l","__e","externalClasses","wxsCallMethods","callMethod","parseComponent","hooks$1","parseBasePage","vuePageOptions","pageOptions","onLoad","query","copyQuery","parsePage","createPage","createComponent","createSubpackageApp","onShow","onAppShow","onHide","onAppHide","createPlugin","canIUseApi","apiName","uni","Proxy","uni$1","_interopRequireDefault","__esModule","module","exports","arrayWithHoles","require","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","arrayLikeToArray","_unsupportedIterableToArray","o","minLen","n","from","_arrayLikeToArray","arr2","_nonIterableRest","TypeError","toPropertyKey","_defineProperty","writable","_typeof","toPrimitive","_toPropertyKey","_toPrimitive","input","hint","prim","setPrototypeOf","isNativeReflectConstruct","_construct","Parent","Class","Reflect","construct","bind","a","Constructor","Function","instance","_setPrototypeOf","p","_isNativeReflectConstruct","sham","valueOf","arrayWithoutHoles","iterableToArray","nonIterableSpread","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","iter","_nonIterableSpread","defaultDelimiters","BaseFormatter","_caches","delimiters","tokens","compile","RE_TOKEN_LIST_VALUE","RE_TOKEN_NAMED_VALUE","format","startDelimiter","endDelimiter","position","text","char","sub","isClosed","compiled","mode","defaultFormatter","I18n","fallbackLocale","watcher","formater","watchers","override","interpolate","watchAppLocale","newLocale","$watch","getDefaultLocale","isWatchedAppLocale","f","add","isString","hasI18nJson","jsonObj","walkJsonObj","isI18nStr","parseI18nJson","compileStr","compileI18nJsonStr","jsonStr","localeValues","unshift","compileJsonObj","compileValue","valueLocales","localValue","walk","resolveLocale","resolveLocaleChain","chain","pop","_classCallCheck","_defineProperties","descriptor","_createClass","protoProps","staticProps","vuexPersisted","createPersistedState","storage","getItem","setItem","setStorageSync","removeItem","clearStorageSync","use","Vuex","Store","plugins","modules","login","devList","area","auth","search","loginUserInfo","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","clone","deepmerge","defaultArrayMerge","source","getKeys","getOwnPropertySymbols","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","object","property","arrayMerge","sourceIsArray","destination","customMerge","getMergeFunction","mergeObject","all","array","reduce","prev","window","localStorage","getState","setState","reducer","paths","substate","r","shvl","subscriber","subscribe","assertStorage","savedState","fetchSavedState","fetchBeforeUse","replaceState","overwrite","merge","arrayMerger","saved","rehydrated","mutation","userName","getters","isLogin","mutations","payload","actions","setToken","commit","clearToken","setUserInfo","setListAll","setList","delList","getCountry","countryid","getAreaId","areaid","setArea","setCountryid","clearArea","authList","menuArr","getAuth","getAuthName","label","getOperation","curRoute","operation","getMenu","children","setAuth","clearAuth","setMenu","clearMenu","searchObj","setSearch","searchKey","clearSearch","allcount","notecount","taskcount","warncount","getCount","setMessage","clearMessage","userInfoApp","getUserInfoApp","setUserInfoApp","clearUserInfoApp"],"mappings":"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C,OAAO,CAAC,SAAS,CAAC,GAAGD,MAAM,CAACC,OAAO,C;;;;;;;;;;;AClB3G;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,sBAAsB,+BAA+B;AACrD,sBAAsB,iBAAiB;AACvC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iCAAiC,EAAE;AACrF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,cAAc;;AAE3C;;AAEA;AACA;AACA;AACA,6BAA6B,UAAU;;AAEvC;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,aAAoB;;AAErC;AACA;AACA;AACA,YAAY,aAAoB;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG;AACR;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,oCAAoC;AACpC;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA,iCAAiC;AACjC,uCAAuC,wBAAwB,EAAE;AACjE,0BAA0B;;AAE1B;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC,kBAAkB,YAAY;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,wCAAwC,EAAE;AAC1C;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,+BAA+B,oBAAoB,EAAE;AACrD;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,SAAS,qBAAqB;;AAExD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uBAAuB;AACzD,iCAAiC,sBAAsB;AACvD;AACA,kBAAkB;AAClB,MAAM,IAAqC;AAC3C;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAoB;AACtC;AACA;AACA,mBAAmB;AACnB;AACA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,OAAO,UAAU,IAAqC;AACtD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,GAAG,UAAU,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,mBAAmB;AACtC,+BAA+B;AAC/B;AACA,GAAG;AACH;AACA;AACA;AACA,kBAAkB,YAAY;AAC9B,WAAW;AACX;AACA,GAAG,UAAU,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,oCAAoC;AACpC;AACA,qCAAqC;AACrC;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAEQ;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,qCAAqC,EAAE;AACpF;;AAEA;AACA;AACA;;AAEA,oCAAoC,yCAAyC,EAAE;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA,4BAA4B;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sDAAsD,EAAE;AACtF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;;AAEA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,iCAAiC;AACnE,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C,GAAG;AACH;AACA;AACA,iBAAiB,+BAA+B;AAChD;AACA;;AAEA;AACA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO,MAAM,EAEN;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,IAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,sBAAsB,mBAAmB;AACzC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC,uCAAuC;AACvC;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB,sCAAsC;AACtC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,OAAO;AACzC;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,4CAA4C,eAAe;AAC3D,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kDAAkD;AAClD,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA,KAAK;AACL,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,KAAK,UAAU,KAAqC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,qCAAqC,gEAAgE;AACrG;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,4BAA4B,+BAA+B;AAC3D,4BAA4B,+BAA+B;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C,kDAAkD;AAClD;AACA;AACA,mCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sEAAsE;;AAEtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,uFAAuF;AAC5F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG,+BAA+B;AAClC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,oBAAoB;AACxC,sBAAsB,4BAA4B;AAClD;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mBAAmB;AACnB,yBAAyB;AACzB;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAA6C;AAC9E;AACA;AACA,6CAA6C,4CAA4C;;AAEzF;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,GAAG,MAAM,EAGN;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK,2CAA2C,8BAA8B,EAAE;;AAEhF;AACA,wCAAwC,OAAO;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAqC;AACrD;AACA,oBAAoB,SAAI;AACxB;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;;AAE1B,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,MAAM,IAAqC;AAC3C;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0BAA0B;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB,EAAE;;AAEpD;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;AAIA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB;AACpB;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,oBAAoB,KAAqC;AACzD;AACA,MAAM,SAAE;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C,qBAAqB,+BAA+B;AACpD;AACA;AACA,GAAG;AACH,yBAAyB;AACzB;AACA,sBAAsB,iCAAiC;AACvD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK,MAAM,EAEN;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAqC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU,IAAqC;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,8BAA8B;AAC9B,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA,KAAK,MAAM,EAEN;AACL;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,sCAAsC;AACtC,8C;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;;AAEA;AACA,QAAQ,KAAqC;AAC7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,YAAY,KAAqC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA,0CAA0C,2BAA2B,EAAE;AACvE,KAAK;AACL;AACA,0CAA0C,4BAA4B,EAAE;AACxE,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C,MAAM,IAAqC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,YAAY,8IAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,gCAAgC,EAAE;AAC5E;;AAEA;AACA;AACA;AACA;AACA,WAAW,8IAAW;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,WAAW,8IAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0CAA0C;;AAE1C;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,sCAAsC;AACtC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA,KAAK;AACL;AACA;AACA,UAAU,8IAAW;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,qDAAqD,EAAE,SAAS;AACtH;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,0BAA0B,OAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEe,kEAAG,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC97LnB;AAAA;AAAA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACrHA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;;AASA;AACA,IAAM6H,aAAa,GAAG,IAAIC,2BAAoB,CAAC;EAC9CC,OAAO,EAAE;IACRC,OAAO,EAAE,iBAAA5zB,GAAG;MAAA,OAAIsrB,GAAG,CAAC/oB,cAAc,CAACvC,GAAG,CAAC;IAAA;IACjC6zB,OAAO,EAAE,iBAAC7zB,GAAG,EAAEuJ,KAAK;MAAA,OAAK+hB,GAAG,CAACwI,cAAc,CAAC9zB,GAAG,EAAEuJ,KAAK,CAAC;IAAA;IACvDwqB,UAAU,EAAE,oBAAA/zB,GAAG;MAAA,OAAIsrB,GAAG,CAAC0I,gBAAgB,CAACh0B,GAAG,CAAC;IAAA;EACnD;AACD,CAAC,CAAC;;AAEF;AACAqD,YAAG,CAAC4wB,GAAG,CAACC,aAAI,CAAC;AAAA,eAEE,IAAIA,aAAI,CAACC,KAAK,CAAC;EAC7BC,OAAO,EAAC,CAACX,aAAa,CAAC;EACvBY,OAAO,EAAC;IACPC,KAAK,EAALA,cAAK;IACLC,OAAO,EAAPA,gBAAO;IACPC,IAAI,EAAJA,aAAI;IACJC,IAAI,EAAJA,aAAI;IACJC,MAAM,EAANA,eAAM;IACNzxB,OAAO,EAAPA,gBAAO;IACP0xB,aAAa,EAAbA;EACD;AACD,CAAC,CAAC;AAAA,2B;;;;;;;;;;;;ACpCF;AACA;AACA;AACA;AACA;AACa;;AAEb;AACA;;AAEA;AACA,eAAe,yBAAyB;AACxC,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;;AAErB;;AAEA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG,GAAG,gBAAgB;;AAEtB;AACA;AACA,GAAG,GAAG,gBAAgB;AACtB;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,cAAc;AACzB,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,2BAA2B,EAAE;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B,EAAE;AACvE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0BAA0B,cAAc,qBAAqB;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO,IAAqC;AAC5C;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO,IAAqC;AAC5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,oCAAoC,EAAE;AAClE;AACA;;AAEA;AACA,4BAA4B;AAC5B,uEAAuE,EAAE;AACzE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;;AAE1B;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;;AAER;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,IAAqC;AAC5C;AACA;AACA;AACA;;AAEA,gCAAgC;AAChC,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,uBAAuB,EAAE;;AAE9D;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,SAAS,qBAAqB;;AAE1D;AACA;AACA;;AAEA;AACA,OAAO,IAAqC;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,6BAA6B,oCAAoC,EAAE;;AAEnE;AACA,KAAK,KAAqC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB;AAChB;AACA;AACA,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,mBAAmB,EAAE;AACnD,+BAA+B,yCAAyC,EAAE;AAC1E,GAAG;AACH,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;;AAEA;AACA,gDAAgD,yBAAyB,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB,EAAE;AACtD,mCAAmC,wCAAwC,EAAE;AAC7E,OAAO;AACP,aAAa,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kCAAkC,kBAAkB,EAAE;AACtD,mCAAmC,+CAA+C,EAAE;AACpF,OAAO;AACP,aAAa,IAAqC;AAClD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA,yCAAyC,aAAa;AACtD;AACA;;AAEA;AACA;;AAEA,OAAO,IAAqC;AAC5C;AACA;AACA,6CAA6C,6CAA6C,EAAE;AAC5F;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,iCAAiC,eAAe;;AAEhD,OAAO,IAAqC;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iCAAiC,eAAe;;AAEhD,OAAO,IAAqC;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iCAAiC,eAAe;;AAEhD,OAAO,IAAqC;AAC5C;AACA;;AAEA;AACA;;AAEA,yEAAyE,iCAAiC;AAC1G;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB,EAAE;AACjD;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,8BAA8B,yBAAyB,EAAE;AACzD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,aAAoB;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAqC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,KAAqC;AAClD;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,KAAqC;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C,uBAAuB,2CAA2C;AAClE,KAAK;AACL;AACA,wBAAwB,0CAA0C;AAClE;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,4BAA4B,EAAE;AACxD;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,4BAA4B;AAC5D,SAAS,IAAqC;AAC9C;AACA;AACA,GAAG,GAAG,yBAAyB;AAC/B;;AAEA;AACA,4CAA4C,mBAAmB,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,IAAqC;AAC5C;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA,SAAS,IAAqC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW;AACX;AACA;AACA;AACA,OAAO,KAAqC;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA,OAAO,KAAqC;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA,OAAO,KAAqC;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAqC;AAChD;AACA;AACA;AACA;AA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","file":"common/vendor.js","sourcesContent":["const objectKeys = [\r\n 'qy',\r\n 'env',\r\n 'error',\r\n 'version',\r\n 'lanDebug',\r\n 'cloud',\r\n 'serviceMarket',\r\n 'router',\r\n 'worklet',\r\n '__webpack_require_UNI_MP_PLUGIN__'\r\n]\r\nconst singlePageDisableKey = [\r\n 'lanDebug',\r\n 'router',\r\n 'worklet'\r\n]\r\nconst target = typeof globalThis !== 'undefined' ? globalThis : (function () {\r\n return this\r\n})()\r\n\r\nconst key = ['w', 'x'].join('')\r\nconst oldWx = target[key]\r\nconst launchOption = oldWx.getLaunchOptionsSync ? oldWx.getLaunchOptionsSync() : null\r\n\r\nfunction isWxKey (key) {\r\n if (launchOption && launchOption.scene === 1154 && singlePageDisableKey.includes(key)) {\r\n return false\r\n }\r\n return objectKeys.indexOf(key) > -1 || typeof oldWx[key] === 'function'\r\n}\r\n\r\nfunction initWx () {\r\n const newWx = {}\r\n for (const key in oldWx) {\r\n if (isWxKey(key)) {\r\n // TODO wrapper function\r\n newWx[key] = oldWx[key]\r\n }\r\n }\r\n return newWx\r\n}\r\ntarget[key] = initWx()\r\nexport default target[key]\r\n","import { initVueI18n } from '@dcloudio/uni-i18n';\r\nimport Vue from 'vue';\r\n\r\nlet realAtob;\r\n\r\nconst b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\nconst b64re = /^(?:[A-Za-z\\d+/]{4})*?(?:[A-Za-z\\d+/]{2}(?:==)?|[A-Za-z\\d+/]{3}=?)?$/;\r\n\r\nif (typeof atob !== 'function') {\r\n realAtob = function (str) {\r\n str = String(str).replace(/[\\t\\n\\f\\r ]+/g, '');\r\n if (!b64re.test(str)) { throw new Error(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\") }\r\n\r\n // Adding the padding if missing, for semplicity\r\n str += '=='.slice(2 - (str.length & 3));\r\n var bitmap; var result = ''; var r1; var r2; var i = 0;\r\n for (; i < str.length;) {\r\n bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 |\r\n (r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++)));\r\n\r\n result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255)\r\n : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255)\r\n : String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);\r\n }\r\n return result\r\n };\r\n} else {\r\n // 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法\r\n realAtob = atob;\r\n}\r\n\r\nfunction b64DecodeUnicode (str) {\r\n return decodeURIComponent(realAtob(str).split('').map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\r\n }).join(''))\r\n}\r\n\r\nfunction getCurrentUserInfo () {\r\n const token = ( wx).getStorageSync('uni_id_token') || '';\r\n const tokenArr = token.split('.');\r\n if (!token || tokenArr.length !== 3) {\r\n return {\r\n uid: null,\r\n role: [],\r\n permission: [],\r\n tokenExpired: 0\r\n }\r\n }\r\n let userInfo;\r\n try {\r\n userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));\r\n } catch (error) {\r\n throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message)\r\n }\r\n userInfo.tokenExpired = userInfo.exp * 1000;\r\n delete userInfo.exp;\r\n delete userInfo.iat;\r\n return userInfo\r\n}\r\n\r\nfunction uniIdMixin (Vue) {\r\n Vue.prototype.uniIDHasRole = function (roleId) {\r\n const {\r\n role\r\n } = getCurrentUserInfo();\r\n return role.indexOf(roleId) > -1\r\n };\r\n Vue.prototype.uniIDHasPermission = function (permissionId) {\r\n const {\r\n permission\r\n } = getCurrentUserInfo();\r\n return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1\r\n };\r\n Vue.prototype.uniIDTokenValid = function () {\r\n const {\r\n tokenExpired\r\n } = getCurrentUserInfo();\r\n return tokenExpired > Date.now()\r\n };\r\n}\r\n\r\nconst _toString = Object.prototype.toString;\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nfunction isFn (fn) {\r\n return typeof fn === 'function'\r\n}\r\n\r\nfunction isStr (str) {\r\n return typeof str === 'string'\r\n}\r\n\r\nfunction isObject (obj) {\r\n return obj !== null && typeof obj === 'object'\r\n}\r\n\r\nfunction isPlainObject (obj) {\r\n return _toString.call(obj) === '[object Object]'\r\n}\r\n\r\nfunction hasOwn (obj, key) {\r\n return hasOwnProperty.call(obj, key)\r\n}\r\n\r\nfunction noop () {}\r\n\r\n/**\r\n * Create a cached version of a pure function.\r\n */\r\nfunction cached (fn) {\r\n const cache = Object.create(null);\r\n return function cachedFn (str) {\r\n const hit = cache[str];\r\n return hit || (cache[str] = fn(str))\r\n }\r\n}\r\n\r\n/**\r\n * Camelize a hyphen-delimited string.\r\n */\r\nconst camelizeRE = /-(\\w)/g;\r\nconst camelize = cached((str) => {\r\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\r\n});\r\n\r\nfunction sortObject (obj) {\r\n const sortObj = {};\r\n if (isPlainObject(obj)) {\r\n Object.keys(obj).sort().forEach(key => {\r\n sortObj[key] = obj[key];\r\n });\r\n }\r\n return !Object.keys(sortObj) ? obj : sortObj\r\n}\r\n\r\nconst HOOKS = [\r\n 'invoke',\r\n 'success',\r\n 'fail',\r\n 'complete',\r\n 'returnValue'\r\n];\r\n\r\nconst globalInterceptors = {};\r\nconst scopedInterceptors = {};\r\n\r\nfunction mergeHook (parentVal, childVal) {\r\n const res = childVal\r\n ? parentVal\r\n ? parentVal.concat(childVal)\r\n : Array.isArray(childVal)\r\n ? childVal : [childVal]\r\n : parentVal;\r\n return res\r\n ? dedupeHooks(res)\r\n : res\r\n}\r\n\r\nfunction dedupeHooks (hooks) {\r\n const res = [];\r\n for (let i = 0; i < hooks.length; i++) {\r\n if (res.indexOf(hooks[i]) === -1) {\r\n res.push(hooks[i]);\r\n }\r\n }\r\n return res\r\n}\r\n\r\nfunction removeHook (hooks, hook) {\r\n const index = hooks.indexOf(hook);\r\n if (index !== -1) {\r\n hooks.splice(index, 1);\r\n }\r\n}\r\n\r\nfunction mergeInterceptorHook (interceptor, option) {\r\n Object.keys(option).forEach(hook => {\r\n if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\r\n interceptor[hook] = mergeHook(interceptor[hook], option[hook]);\r\n }\r\n });\r\n}\r\n\r\nfunction removeInterceptorHook (interceptor, option) {\r\n if (!interceptor || !option) {\r\n return\r\n }\r\n Object.keys(option).forEach(hook => {\r\n if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {\r\n removeHook(interceptor[hook], option[hook]);\r\n }\r\n });\r\n}\r\n\r\nfunction addInterceptor (method, option) {\r\n if (typeof method === 'string' && isPlainObject(option)) {\r\n mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), option);\r\n } else if (isPlainObject(method)) {\r\n mergeInterceptorHook(globalInterceptors, method);\r\n }\r\n}\r\n\r\nfunction removeInterceptor (method, option) {\r\n if (typeof method === 'string') {\r\n if (isPlainObject(option)) {\r\n removeInterceptorHook(scopedInterceptors[method], option);\r\n } else {\r\n delete scopedInterceptors[method];\r\n }\r\n } else if (isPlainObject(method)) {\r\n removeInterceptorHook(globalInterceptors, method);\r\n }\r\n}\r\n\r\nfunction wrapperHook (hook, params) {\r\n return function (data) {\r\n return hook(data, params) || data\r\n }\r\n}\r\n\r\nfunction isPromise (obj) {\r\n return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'\r\n}\r\n\r\nfunction queue (hooks, data, params) {\r\n let promise = false;\r\n for (let i = 0; i < hooks.length; i++) {\r\n const hook = hooks[i];\r\n if (promise) {\r\n promise = Promise.resolve(wrapperHook(hook, params));\r\n } else {\r\n const res = hook(data, params);\r\n if (isPromise(res)) {\r\n promise = Promise.resolve(res);\r\n }\r\n if (res === false) {\r\n return {\r\n then () { }\r\n }\r\n }\r\n }\r\n }\r\n return promise || {\r\n then (callback) {\r\n return callback(data)\r\n }\r\n }\r\n}\r\n\r\nfunction wrapperOptions (interceptor, options = {}) {\r\n ['success', 'fail', 'complete'].forEach(name => {\r\n if (Array.isArray(interceptor[name])) {\r\n const oldCallback = options[name];\r\n options[name] = function callbackInterceptor (res) {\r\n queue(interceptor[name], res, options).then((res) => {\r\n /* eslint-disable no-mixed-operators */\r\n return isFn(oldCallback) && oldCallback(res) || res\r\n });\r\n };\r\n }\r\n });\r\n return options\r\n}\r\n\r\nfunction wrapperReturnValue (method, returnValue) {\r\n const returnValueHooks = [];\r\n if (Array.isArray(globalInterceptors.returnValue)) {\r\n returnValueHooks.push(...globalInterceptors.returnValue);\r\n }\r\n const interceptor = scopedInterceptors[method];\r\n if (interceptor && Array.isArray(interceptor.returnValue)) {\r\n returnValueHooks.push(...interceptor.returnValue);\r\n }\r\n returnValueHooks.forEach(hook => {\r\n returnValue = hook(returnValue) || returnValue;\r\n });\r\n return returnValue\r\n}\r\n\r\nfunction getApiInterceptorHooks (method) {\r\n const interceptor = Object.create(null);\r\n Object.keys(globalInterceptors).forEach(hook => {\r\n if (hook !== 'returnValue') {\r\n interceptor[hook] = globalInterceptors[hook].slice();\r\n }\r\n });\r\n const scopedInterceptor = scopedInterceptors[method];\r\n if (scopedInterceptor) {\r\n Object.keys(scopedInterceptor).forEach(hook => {\r\n if (hook !== 'returnValue') {\r\n interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);\r\n }\r\n });\r\n }\r\n return interceptor\r\n}\r\n\r\nfunction invokeApi (method, api, options, ...params) {\r\n const interceptor = getApiInterceptorHooks(method);\r\n if (interceptor && Object.keys(interceptor).length) {\r\n if (Array.isArray(interceptor.invoke)) {\r\n const res = queue(interceptor.invoke, options);\r\n return res.then((options) => {\r\n // 重新访问 getApiInterceptorHooks, 允许 invoke 中再次调用 addInterceptor,removeInterceptor\r\n return api(\r\n wrapperOptions(getApiInterceptorHooks(method), options),\r\n ...params\r\n )\r\n })\r\n } else {\r\n return api(wrapperOptions(interceptor, options), ...params)\r\n }\r\n }\r\n return api(options, ...params)\r\n}\r\n\r\nconst promiseInterceptor = {\r\n returnValue (res) {\r\n if (!isPromise(res)) {\r\n return res\r\n }\r\n return new Promise((resolve, reject) => {\r\n res.then(res => {\r\n if (res[0]) {\r\n reject(res[0]);\r\n } else {\r\n resolve(res[1]);\r\n }\r\n });\r\n })\r\n }\r\n};\r\n\r\nconst SYNC_API_RE =\r\n /^\\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale|invokePushCallback|getWindowInfo|getDeviceInfo|getAppBaseInfo|getSystemSetting|getAppAuthorizeSetting|initUTS|requireUTS|registerUTS/;\r\n\r\nconst CONTEXT_API_RE = /^create|Manager$/;\r\n\r\n// Context例外情况\r\nconst CONTEXT_API_RE_EXC = ['createBLEConnection'];\r\n\r\n// 同步例外情况\r\nconst ASYNC_API = ['createBLEConnection', 'createPushMessage'];\r\n\r\nconst CALLBACK_API_RE = /^on|^off/;\r\n\r\nfunction isContextApi (name) {\r\n return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1\r\n}\r\nfunction isSyncApi (name) {\r\n return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1\r\n}\r\n\r\nfunction isCallbackApi (name) {\r\n return CALLBACK_API_RE.test(name) && name !== 'onPush'\r\n}\r\n\r\nfunction handlePromise (promise) {\r\n return promise.then(data => {\r\n return [null, data]\r\n })\r\n .catch(err => [err])\r\n}\r\n\r\nfunction shouldPromise (name) {\r\n if (\r\n isContextApi(name) ||\r\n isSyncApi(name) ||\r\n isCallbackApi(name)\r\n ) {\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n/* eslint-disable no-extend-native */\r\nif (!Promise.prototype.finally) {\r\n Promise.prototype.finally = function (callback) {\r\n const promise = this.constructor;\r\n return this.then(\r\n value => promise.resolve(callback()).then(() => value),\r\n reason => promise.resolve(callback()).then(() => {\r\n throw reason\r\n })\r\n )\r\n };\r\n}\r\n\r\nfunction promisify (name, api) {\r\n if (!shouldPromise(name) || !isFn(api)) {\r\n return api\r\n }\r\n return function promiseApi (options = {}, ...params) {\r\n if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) {\r\n return wrapperReturnValue(name, invokeApi(name, api, options, ...params))\r\n }\r\n return wrapperReturnValue(name, handlePromise(new Promise((resolve, reject) => {\r\n invokeApi(name, api, Object.assign({}, options, {\r\n success: resolve,\r\n fail: reject\r\n }), ...params);\r\n })))\r\n }\r\n}\r\n\r\nconst EPS = 1e-4;\r\nconst BASE_DEVICE_WIDTH = 750;\r\nlet isIOS = false;\r\nlet deviceWidth = 0;\r\nlet deviceDPR = 0;\r\n\r\nfunction checkDeviceWidth () {\r\n const {\r\n platform,\r\n pixelRatio,\r\n windowWidth\r\n } = wx.getSystemInfoSync(); // uni=>wx runtime 编译目标是 uni 对象,内部不允许直接使用 uni\r\n\r\n deviceWidth = windowWidth;\r\n deviceDPR = pixelRatio;\r\n isIOS = platform === 'ios';\r\n}\r\n\r\nfunction upx2px (number, newDeviceWidth) {\r\n if (deviceWidth === 0) {\r\n checkDeviceWidth();\r\n }\r\n\r\n number = Number(number);\r\n if (number === 0) {\r\n return 0\r\n }\r\n let result = (number / BASE_DEVICE_WIDTH) * (newDeviceWidth || deviceWidth);\r\n if (result < 0) {\r\n result = -result;\r\n }\r\n result = Math.floor(result + EPS);\r\n if (result === 0) {\r\n if (deviceDPR === 1 || !isIOS) {\r\n result = 1;\r\n } else {\r\n result = 0.5;\r\n }\r\n }\r\n return number < 0 ? -result : result\r\n}\r\n\r\nconst LOCALE_ZH_HANS = 'zh-Hans';\r\nconst LOCALE_ZH_HANT = 'zh-Hant';\r\nconst LOCALE_EN = 'en';\r\nconst LOCALE_FR = 'fr';\r\nconst LOCALE_ES = 'es';\r\n\r\nconst messages = {};\r\n\r\nlet locale;\r\n\r\n{\r\n locale = normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN;\r\n}\r\n\r\nfunction initI18nMessages () {\r\n if (!isEnableLocale()) {\r\n return\r\n }\r\n const localeKeys = Object.keys(__uniConfig.locales);\r\n if (localeKeys.length) {\r\n localeKeys.forEach((locale) => {\r\n const curMessages = messages[locale];\r\n const userMessages = __uniConfig.locales[locale];\r\n if (curMessages) {\r\n Object.assign(curMessages, userMessages);\r\n } else {\r\n messages[locale] = userMessages;\r\n }\r\n });\r\n }\r\n}\r\n\r\ninitI18nMessages();\r\n\r\nconst i18n = initVueI18n(\r\n locale,\r\n {}\r\n);\r\nconst t = i18n.t;\r\nconst i18nMixin = (i18n.mixin = {\r\n beforeCreate () {\r\n const unwatch = i18n.i18n.watchLocale(() => {\r\n this.$forceUpdate();\r\n });\r\n this.$once('hook:beforeDestroy', function () {\r\n unwatch();\r\n });\r\n },\r\n methods: {\r\n $$t (key, values) {\r\n return t(key, values)\r\n }\r\n }\r\n});\r\nconst setLocale = i18n.setLocale;\r\nconst getLocale = i18n.getLocale;\r\n\r\nfunction initAppLocale (Vue, appVm, locale) {\r\n const state = Vue.observable({\r\n locale: locale || i18n.getLocale()\r\n });\r\n const localeWatchers = [];\r\n appVm.$watchLocale = fn => {\r\n localeWatchers.push(fn);\r\n };\r\n Object.defineProperty(appVm, '$locale', {\r\n get () {\r\n return state.locale\r\n },\r\n set (v) {\r\n state.locale = v;\r\n localeWatchers.forEach(watch => watch(v));\r\n }\r\n });\r\n}\r\n\r\nfunction isEnableLocale () {\r\n return typeof __uniConfig !== 'undefined' && __uniConfig.locales && !!Object.keys(__uniConfig.locales).length\r\n}\r\n\r\nfunction include (str, parts) {\r\n return !!parts.find((part) => str.indexOf(part) !== -1)\r\n}\r\n\r\nfunction startsWith (str, parts) {\r\n return parts.find((part) => str.indexOf(part) === 0)\r\n}\r\n\r\nfunction normalizeLocale (locale, messages) {\r\n if (!locale) {\r\n return\r\n }\r\n locale = locale.trim().replace(/_/g, '-');\r\n if (messages && messages[locale]) {\r\n return locale\r\n }\r\n locale = locale.toLowerCase();\r\n if (locale === 'chinese') {\r\n // 支付宝\r\n return LOCALE_ZH_HANS\r\n }\r\n if (locale.indexOf('zh') === 0) {\r\n if (locale.indexOf('-hans') > -1) {\r\n return LOCALE_ZH_HANS\r\n }\r\n if (locale.indexOf('-hant') > -1) {\r\n return LOCALE_ZH_HANT\r\n }\r\n if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\r\n return LOCALE_ZH_HANT\r\n }\r\n return LOCALE_ZH_HANS\r\n }\r\n const lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);\r\n if (lang) {\r\n return lang\r\n }\r\n}\r\n// export function initI18n() {\r\n// const localeKeys = Object.keys(__uniConfig.locales || {})\r\n// if (localeKeys.length) {\r\n// localeKeys.forEach((locale) =>\r\n// i18n.add(locale, __uniConfig.locales[locale])\r\n// )\r\n// }\r\n// }\r\n\r\nfunction getLocale$1 () {\r\n // 优先使用 $locale\r\n if (isFn(getApp)) {\r\n const app = getApp({\r\n allowDefault: true\r\n });\r\n if (app && app.$vm) {\r\n return app.$vm.$locale\r\n }\r\n }\r\n return normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN\r\n}\r\n\r\nfunction setLocale$1 (locale) {\r\n const app = isFn(getApp) ? getApp() : false;\r\n if (!app) {\r\n return false\r\n }\r\n const oldLocale = app.$vm.$locale;\r\n if (oldLocale !== locale) {\r\n app.$vm.$locale = locale;\r\n onLocaleChangeCallbacks.forEach((fn) => fn({\r\n locale\r\n }));\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nconst onLocaleChangeCallbacks = [];\r\nfunction onLocaleChange (fn) {\r\n if (onLocaleChangeCallbacks.indexOf(fn) === -1) {\r\n onLocaleChangeCallbacks.push(fn);\r\n }\r\n}\r\n\r\nif (typeof global !== 'undefined') {\r\n global.getLocale = getLocale$1;\r\n}\r\n\r\nconst interceptors = {\r\n promiseInterceptor\r\n};\r\n\r\nvar baseApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n upx2px: upx2px,\r\n getLocale: getLocale$1,\r\n setLocale: setLocale$1,\r\n onLocaleChange: onLocaleChange,\r\n addInterceptor: addInterceptor,\r\n removeInterceptor: removeInterceptor,\r\n interceptors: interceptors\r\n});\r\n\r\nfunction findExistsPageIndex (url) {\r\n const pages = getCurrentPages();\r\n let len = pages.length;\r\n while (len--) {\r\n const page = pages[len];\r\n if (page.$page && page.$page.fullPath === url) {\r\n return len\r\n }\r\n }\r\n return -1\r\n}\r\n\r\nvar redirectTo = {\r\n name (fromArgs) {\r\n if (fromArgs.exists === 'back' && fromArgs.delta) {\r\n return 'navigateBack'\r\n }\r\n return 'redirectTo'\r\n },\r\n args (fromArgs) {\r\n if (fromArgs.exists === 'back' && fromArgs.url) {\r\n const existsPageIndex = findExistsPageIndex(fromArgs.url);\r\n if (existsPageIndex !== -1) {\r\n const delta = getCurrentPages().length - 1 - existsPageIndex;\r\n if (delta > 0) {\r\n fromArgs.delta = delta;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nvar previewImage = {\r\n args (fromArgs) {\r\n let currentIndex = parseInt(fromArgs.current);\r\n if (isNaN(currentIndex)) {\r\n return\r\n }\r\n const urls = fromArgs.urls;\r\n if (!Array.isArray(urls)) {\r\n return\r\n }\r\n const len = urls.length;\r\n if (!len) {\r\n return\r\n }\r\n if (currentIndex < 0) {\r\n currentIndex = 0;\r\n } else if (currentIndex >= len) {\r\n currentIndex = len - 1;\r\n }\r\n if (currentIndex > 0) {\r\n fromArgs.current = urls[currentIndex];\r\n fromArgs.urls = urls.filter(\r\n (item, index) => index < currentIndex ? item !== urls[currentIndex] : true\r\n );\r\n } else {\r\n fromArgs.current = urls[0];\r\n }\r\n return {\r\n indicator: false,\r\n loop: false\r\n }\r\n }\r\n};\r\n\r\nconst UUID_KEY = '__DC_STAT_UUID';\r\nlet deviceId;\r\nfunction useDeviceId (result) {\r\n deviceId = deviceId || wx.getStorageSync(UUID_KEY);\r\n if (!deviceId) {\r\n deviceId = Date.now() + '' + Math.floor(Math.random() * 1e7);\r\n wx.setStorage({\r\n key: UUID_KEY,\r\n data: deviceId\r\n });\r\n }\r\n result.deviceId = deviceId;\r\n}\r\n\r\nfunction addSafeAreaInsets (result) {\r\n if (result.safeArea) {\r\n const safeArea = result.safeArea;\r\n result.safeAreaInsets = {\r\n top: safeArea.top,\r\n left: safeArea.left,\r\n right: result.windowWidth - safeArea.right,\r\n bottom: result.screenHeight - safeArea.bottom\r\n };\r\n }\r\n}\r\n\r\nfunction populateParameters (result) {\r\n const {\r\n brand = '', model = '', system = '',\r\n language = '', theme, version,\r\n platform, fontSizeSetting,\r\n SDKVersion, pixelRatio, deviceOrientation\r\n } = result;\r\n // const isQuickApp = \"mp-weixin\".indexOf('quickapp-webview') !== -1\r\n\r\n const extraParam = {};\r\n\r\n // osName osVersion\r\n let osName = '';\r\n let osVersion = '';\r\n {\r\n osName = system.split(' ')[0] || '';\r\n osVersion = system.split(' ')[1] || '';\r\n }\r\n let hostVersion = version;\r\n\r\n // deviceType\r\n const deviceType = getGetDeviceType(result, model);\r\n\r\n // deviceModel\r\n const deviceBrand = getDeviceBrand(brand);\r\n\r\n // hostName\r\n const _hostName = getHostName(result);\r\n\r\n // deviceOrientation\r\n let _deviceOrientation = deviceOrientation; // 仅 微信 百度 支持\r\n\r\n // devicePixelRatio\r\n let _devicePixelRatio = pixelRatio;\r\n\r\n // SDKVersion\r\n let _SDKVersion = SDKVersion;\r\n\r\n // hostLanguage\r\n const hostLanguage = language.replace(/_/g, '-');\r\n\r\n // wx.getAccountInfoSync\r\n\r\n const parameters = {\r\n appId: process.env.UNI_APP_ID,\r\n appName: process.env.UNI_APP_NAME,\r\n appVersion: process.env.UNI_APP_VERSION_NAME,\r\n appVersionCode: process.env.UNI_APP_VERSION_CODE,\r\n appLanguage: getAppLanguage(hostLanguage),\r\n uniCompileVersion: process.env.UNI_COMPILER_VERSION,\r\n uniRuntimeVersion: process.env.UNI_COMPILER_VERSION,\r\n uniPlatform: process.env.UNI_SUB_PLATFORM || process.env.UNI_PLATFORM,\r\n deviceBrand,\r\n deviceModel: model,\r\n deviceType,\r\n devicePixelRatio: _devicePixelRatio,\r\n deviceOrientation: _deviceOrientation,\r\n osName: osName.toLocaleLowerCase(),\r\n osVersion,\r\n hostTheme: theme,\r\n hostVersion,\r\n hostLanguage,\r\n hostName: _hostName,\r\n hostSDKVersion: _SDKVersion,\r\n hostFontSizeSetting: fontSizeSetting,\r\n windowTop: 0,\r\n windowBottom: 0,\r\n // TODO\r\n osLanguage: undefined,\r\n osTheme: undefined,\r\n ua: undefined,\r\n hostPackageName: undefined,\r\n browserName: undefined,\r\n browserVersion: undefined\r\n };\r\n\r\n Object.assign(result, parameters, extraParam);\r\n}\r\n\r\nfunction getGetDeviceType (result, model) {\r\n let deviceType = result.deviceType || 'phone';\r\n {\r\n const deviceTypeMaps = {\r\n ipad: 'pad',\r\n windows: 'pc',\r\n mac: 'pc'\r\n };\r\n const deviceTypeMapsKeys = Object.keys(deviceTypeMaps);\r\n const _model = model.toLocaleLowerCase();\r\n for (let index = 0; index < deviceTypeMapsKeys.length; index++) {\r\n const _m = deviceTypeMapsKeys[index];\r\n if (_model.indexOf(_m) !== -1) {\r\n deviceType = deviceTypeMaps[_m];\r\n break\r\n }\r\n }\r\n }\r\n return deviceType\r\n}\r\n\r\nfunction getDeviceBrand (brand) {\r\n let deviceBrand = brand;\r\n if (deviceBrand) {\r\n deviceBrand = brand.toLocaleLowerCase();\r\n }\r\n return deviceBrand\r\n}\r\n\r\nfunction getAppLanguage (defaultLanguage) {\r\n return getLocale$1\r\n ? getLocale$1()\r\n : defaultLanguage\r\n}\r\n\r\nfunction getHostName (result) {\r\n const _platform = 'WeChat' ;\r\n let _hostName = result.hostName || _platform; // mp-jd\r\n {\r\n if (result.environment) {\r\n _hostName = result.environment;\r\n } else if (result.host && result.host.env) {\r\n _hostName = result.host.env;\r\n }\r\n }\r\n\r\n return _hostName\r\n}\r\n\r\nvar getSystemInfo = {\r\n returnValue: function (result) {\r\n useDeviceId(result);\r\n addSafeAreaInsets(result);\r\n populateParameters(result);\r\n }\r\n};\r\n\r\nvar showActionSheet = {\r\n args (fromArgs) {\r\n if (typeof fromArgs === 'object') {\r\n fromArgs.alertText = fromArgs.title;\r\n }\r\n }\r\n};\r\n\r\nvar getAppBaseInfo = {\r\n returnValue: function (result) {\r\n const { version, language, SDKVersion, theme } = result;\r\n\r\n const _hostName = getHostName(result);\r\n\r\n const hostLanguage = language.replace('_', '-');\r\n\r\n result = sortObject(Object.assign(result, {\r\n appId: process.env.UNI_APP_ID,\r\n appName: process.env.UNI_APP_NAME,\r\n appVersion: process.env.UNI_APP_VERSION_NAME,\r\n appVersionCode: process.env.UNI_APP_VERSION_CODE,\r\n appLanguage: getAppLanguage(hostLanguage),\r\n hostVersion: version,\r\n hostLanguage,\r\n hostName: _hostName,\r\n hostSDKVersion: SDKVersion,\r\n hostTheme: theme\r\n }));\r\n }\r\n};\r\n\r\nvar getDeviceInfo = {\r\n returnValue: function (result) {\r\n const { brand, model } = result;\r\n const deviceType = getGetDeviceType(result, model);\r\n const deviceBrand = getDeviceBrand(brand);\r\n useDeviceId(result);\r\n\r\n result = sortObject(Object.assign(result, {\r\n deviceType,\r\n deviceBrand,\r\n deviceModel: model\r\n }));\r\n }\r\n};\r\n\r\nvar getWindowInfo = {\r\n returnValue: function (result) {\r\n addSafeAreaInsets(result);\r\n\r\n result = sortObject(Object.assign(result, {\r\n windowTop: 0,\r\n windowBottom: 0\r\n }));\r\n }\r\n};\r\n\r\nvar getAppAuthorizeSetting = {\r\n returnValue: function (result) {\r\n const { locationReducedAccuracy } = result;\r\n\r\n result.locationAccuracy = 'unsupported';\r\n if (locationReducedAccuracy === true) {\r\n result.locationAccuracy = 'reduced';\r\n } else if (locationReducedAccuracy === false) {\r\n result.locationAccuracy = 'full';\r\n }\r\n }\r\n};\r\n\r\n// import navigateTo from 'uni-helpers/navigate-to'\r\n\r\nconst compressImage = {\r\n args (fromArgs) {\r\n // https://developers.weixin.qq.com/community/develop/doc/000c08940c865011298e0a43256800?highLine=compressHeight\r\n if (fromArgs.compressedHeight && !fromArgs.compressHeight) {\r\n fromArgs.compressHeight = fromArgs.compressedHeight;\r\n }\r\n if (fromArgs.compressedWidth && !fromArgs.compressWidth) {\r\n fromArgs.compressWidth = fromArgs.compressedWidth;\r\n }\r\n }\r\n};\r\n\r\nconst protocols = {\r\n redirectTo,\r\n // navigateTo, // 由于在微信开发者工具的页面参数,会显示__id__参数,因此暂时关闭mp-weixin对于navigateTo的AOP\r\n previewImage,\r\n getSystemInfo,\r\n getSystemInfoSync: getSystemInfo,\r\n showActionSheet,\r\n getAppBaseInfo,\r\n getDeviceInfo,\r\n getWindowInfo,\r\n getAppAuthorizeSetting,\r\n compressImage\r\n};\r\nconst todos = [\r\n 'vibrate',\r\n 'preloadPage',\r\n 'unPreloadPage',\r\n 'loadSubPackage'\r\n];\r\nconst canIUses = [];\r\n\r\nconst CALLBACKS = ['success', 'fail', 'cancel', 'complete'];\r\n\r\nfunction processCallback (methodName, method, returnValue) {\r\n return function (res) {\r\n return method(processReturnValue(methodName, res, returnValue))\r\n }\r\n}\r\n\r\nfunction processArgs (methodName, fromArgs, argsOption = {}, returnValue = {}, keepFromArgs = false) {\r\n if (isPlainObject(fromArgs)) { // 一般 api 的参数解析\r\n const toArgs = keepFromArgs === true ? fromArgs : {}; // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值\r\n if (isFn(argsOption)) {\r\n argsOption = argsOption(fromArgs, toArgs) || {};\r\n }\r\n for (const key in fromArgs) {\r\n if (hasOwn(argsOption, key)) {\r\n let keyOption = argsOption[key];\r\n if (isFn(keyOption)) {\r\n keyOption = keyOption(fromArgs[key], fromArgs, toArgs);\r\n }\r\n if (!keyOption) { // 不支持的参数\r\n console.warn(`The '${methodName}' method of platform '微信小程序' does not support option '${key}'`);\r\n } else if (isStr(keyOption)) { // 重写参数 key\r\n toArgs[keyOption] = fromArgs[key];\r\n } else if (isPlainObject(keyOption)) { // {name:newName,value:value}可重新指定参数 key:value\r\n toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;\r\n }\r\n } else if (CALLBACKS.indexOf(key) !== -1) {\r\n if (isFn(fromArgs[key])) {\r\n toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);\r\n }\r\n } else {\r\n if (!keepFromArgs) {\r\n toArgs[key] = fromArgs[key];\r\n }\r\n }\r\n }\r\n return toArgs\r\n } else if (isFn(fromArgs)) {\r\n fromArgs = processCallback(methodName, fromArgs, returnValue);\r\n }\r\n return fromArgs\r\n}\r\n\r\nfunction processReturnValue (methodName, res, returnValue, keepReturnValue = false) {\r\n if (isFn(protocols.returnValue)) { // 处理通用 returnValue\r\n res = protocols.returnValue(methodName, res);\r\n }\r\n return processArgs(methodName, res, returnValue, {}, keepReturnValue)\r\n}\r\n\r\nfunction wrapper (methodName, method) {\r\n if (hasOwn(protocols, methodName)) {\r\n const protocol = protocols[methodName];\r\n if (!protocol) { // 暂不支持的 api\r\n return function () {\r\n console.error(`Platform '微信小程序' does not support '${methodName}'.`);\r\n }\r\n }\r\n return function (arg1, arg2) { // 目前 api 最多两个参数\r\n let options = protocol;\r\n if (isFn(protocol)) {\r\n options = protocol(arg1);\r\n }\r\n\r\n arg1 = processArgs(methodName, arg1, options.args, options.returnValue);\r\n\r\n const args = [arg1];\r\n if (typeof arg2 !== 'undefined') {\r\n args.push(arg2);\r\n }\r\n if (isFn(options.name)) {\r\n methodName = options.name(arg1);\r\n } else if (isStr(options.name)) {\r\n methodName = options.name;\r\n }\r\n const returnValue = wx[methodName].apply(wx, args);\r\n if (isSyncApi(methodName)) { // 同步 api\r\n return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName))\r\n }\r\n return returnValue\r\n }\r\n }\r\n return method\r\n}\r\n\r\nconst todoApis = Object.create(null);\r\n\r\nconst TODOS = [\r\n 'onTabBarMidButtonTap',\r\n 'subscribePush',\r\n 'unsubscribePush',\r\n 'onPush',\r\n 'offPush',\r\n 'share'\r\n];\r\n\r\nfunction createTodoApi (name) {\r\n return function todoApi ({\r\n fail,\r\n complete\r\n }) {\r\n const res = {\r\n errMsg: `${name}:fail method '${name}' not supported`\r\n };\r\n isFn(fail) && fail(res);\r\n isFn(complete) && complete(res);\r\n }\r\n}\r\n\r\nTODOS.forEach(function (name) {\r\n todoApis[name] = createTodoApi(name);\r\n});\r\n\r\nvar providers = {\r\n oauth: ['weixin'],\r\n share: ['weixin'],\r\n payment: ['wxpay'],\r\n push: ['weixin']\r\n};\r\n\r\nfunction getProvider ({\r\n service,\r\n success,\r\n fail,\r\n complete\r\n}) {\r\n let res = false;\r\n if (providers[service]) {\r\n res = {\r\n errMsg: 'getProvider:ok',\r\n service,\r\n provider: providers[service]\r\n };\r\n isFn(success) && success(res);\r\n } else {\r\n res = {\r\n errMsg: 'getProvider:fail service not found'\r\n };\r\n isFn(fail) && fail(res);\r\n }\r\n isFn(complete) && complete(res);\r\n}\r\n\r\nvar extraApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n getProvider: getProvider\r\n});\r\n\r\nconst getEmitter = (function () {\r\n let Emitter;\r\n return function getUniEmitter () {\r\n if (!Emitter) {\r\n Emitter = new Vue();\r\n }\r\n return Emitter\r\n }\r\n})();\r\n\r\nfunction apply (ctx, method, args) {\r\n return ctx[method].apply(ctx, args)\r\n}\r\n\r\nfunction $on () {\r\n return apply(getEmitter(), '$on', [...arguments])\r\n}\r\nfunction $off () {\r\n return apply(getEmitter(), '$off', [...arguments])\r\n}\r\nfunction $once () {\r\n return apply(getEmitter(), '$once', [...arguments])\r\n}\r\nfunction $emit () {\r\n return apply(getEmitter(), '$emit', [...arguments])\r\n}\r\n\r\nvar eventApi = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n $on: $on,\r\n $off: $off,\r\n $once: $once,\r\n $emit: $emit\r\n});\r\n\r\n/**\r\n * 框架内 try-catch\r\n */\r\n/**\r\n * 开发者 try-catch\r\n */\r\nfunction tryCatch (fn) {\r\n return function () {\r\n try {\r\n return fn.apply(fn, arguments)\r\n } catch (e) {\r\n // TODO\r\n console.error(e);\r\n }\r\n }\r\n}\r\n\r\nfunction getApiCallbacks (params) {\r\n const apiCallbacks = {};\r\n for (const name in params) {\r\n const param = params[name];\r\n if (isFn(param)) {\r\n apiCallbacks[name] = tryCatch(param);\r\n delete params[name];\r\n }\r\n }\r\n return apiCallbacks\r\n}\r\n\r\nlet cid;\r\nlet cidErrMsg;\r\nlet enabled;\r\n\r\nfunction normalizePushMessage (message) {\r\n try {\r\n return JSON.parse(message)\r\n } catch (e) {}\r\n return message\r\n}\r\n\r\nfunction invokePushCallback (\r\n args\r\n) {\r\n if (args.type === 'enabled') {\r\n enabled = true;\r\n } else if (args.type === 'clientId') {\r\n cid = args.cid;\r\n cidErrMsg = args.errMsg;\r\n invokeGetPushCidCallbacks(cid, args.errMsg);\r\n } else if (args.type === 'pushMsg') {\r\n const message = {\r\n type: 'receive',\r\n data: normalizePushMessage(args.message)\r\n };\r\n for (let i = 0; i < onPushMessageCallbacks.length; i++) {\r\n const callback = onPushMessageCallbacks[i];\r\n callback(message);\r\n // 该消息已被阻止\r\n if (message.stopped) {\r\n break\r\n }\r\n }\r\n } else if (args.type === 'click') {\r\n onPushMessageCallbacks.forEach((callback) => {\r\n callback({\r\n type: 'click',\r\n data: normalizePushMessage(args.message)\r\n });\r\n });\r\n }\r\n}\r\n\r\nconst getPushCidCallbacks = [];\r\n\r\nfunction invokeGetPushCidCallbacks (cid, errMsg) {\r\n getPushCidCallbacks.forEach((callback) => {\r\n callback(cid, errMsg);\r\n });\r\n getPushCidCallbacks.length = 0;\r\n}\r\n\r\nfunction getPushClientId (args) {\r\n if (!isPlainObject(args)) {\r\n args = {};\r\n }\r\n const {\r\n success,\r\n fail,\r\n complete\r\n } = getApiCallbacks(args);\r\n const hasSuccess = isFn(success);\r\n const hasFail = isFn(fail);\r\n const hasComplete = isFn(complete);\r\n\r\n Promise.resolve().then(() => {\r\n if (typeof enabled === 'undefined') {\r\n enabled = false;\r\n cid = '';\r\n cidErrMsg = 'uniPush is not enabled';\r\n }\r\n getPushCidCallbacks.push((cid, errMsg) => {\r\n let res;\r\n if (cid) {\r\n res = {\r\n errMsg: 'getPushClientId:ok',\r\n cid\r\n };\r\n hasSuccess && success(res);\r\n } else {\r\n res = {\r\n errMsg: 'getPushClientId:fail' + (errMsg ? ' ' + errMsg : '')\r\n };\r\n hasFail && fail(res);\r\n }\r\n hasComplete && complete(res);\r\n });\r\n if (typeof cid !== 'undefined') {\r\n invokeGetPushCidCallbacks(cid, cidErrMsg);\r\n }\r\n });\r\n}\r\n\r\nconst onPushMessageCallbacks = [];\r\n// 不使用 defineOnApi 实现,是因为 defineOnApi 依赖 UniServiceJSBridge ,该对象目前在小程序上未提供,故简单实现\r\nconst onPushMessage = (fn) => {\r\n if (onPushMessageCallbacks.indexOf(fn) === -1) {\r\n onPushMessageCallbacks.push(fn);\r\n }\r\n};\r\n\r\nconst offPushMessage = (fn) => {\r\n if (!fn) {\r\n onPushMessageCallbacks.length = 0;\r\n } else {\r\n const index = onPushMessageCallbacks.indexOf(fn);\r\n if (index > -1) {\r\n onPushMessageCallbacks.splice(index, 1);\r\n }\r\n }\r\n};\r\n\r\nlet baseInfo = wx.getAppBaseInfo && wx.getAppBaseInfo();\r\nif (!baseInfo) {\r\n baseInfo = wx.getSystemInfoSync();\r\n}\r\nconst host = baseInfo ? baseInfo.host : null;\r\nconst shareVideoMessage =\r\n host && host.env === 'SAAASDK' ? wx.miniapp.shareVideoMessage : wx.shareVideoMessage;\r\n\r\nvar api = /*#__PURE__*/Object.freeze({\r\n __proto__: null,\r\n shareVideoMessage: shareVideoMessage,\r\n getPushClientId: getPushClientId,\r\n onPushMessage: onPushMessage,\r\n offPushMessage: offPushMessage,\r\n invokePushCallback: invokePushCallback\r\n});\r\n\r\nconst mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];\r\n\r\nfunction findVmByVueId (vm, vuePid) {\r\n const $children = vm.$children;\r\n // 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)\r\n for (let i = $children.length - 1; i >= 0; i--) {\r\n const childVm = $children[i];\r\n if (childVm.$scope._$vueId === vuePid) {\r\n return childVm\r\n }\r\n }\r\n // 反向递归查找\r\n let parentVm;\r\n for (let i = $children.length - 1; i >= 0; i--) {\r\n parentVm = findVmByVueId($children[i], vuePid);\r\n if (parentVm) {\r\n return parentVm\r\n }\r\n }\r\n}\r\n\r\nfunction initBehavior (options) {\r\n return Behavior(options)\r\n}\r\n\r\nfunction isPage () {\r\n return !!this.route\r\n}\r\n\r\nfunction initRelation (detail) {\r\n this.triggerEvent('__l', detail);\r\n}\r\n\r\nfunction selectAllComponents (mpInstance, selector, $refs) {\r\n const components = mpInstance.selectAllComponents(selector) || [];\r\n components.forEach(component => {\r\n const ref = component.dataset.ref;\r\n $refs[ref] = component.$vm || toSkip(component);\r\n {\r\n if (component.dataset.vueGeneric === 'scoped') {\r\n component.selectAllComponents('.scoped-ref').forEach(scopedComponent => {\r\n selectAllComponents(scopedComponent, selector, $refs);\r\n });\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction syncRefs (refs, newRefs) {\r\n const oldKeys = new Set(...Object.keys(refs));\r\n const newKeys = Object.keys(newRefs);\r\n newKeys.forEach(key => {\r\n const oldValue = refs[key];\r\n const newValue = newRefs[key];\r\n if (Array.isArray(oldValue) && Array.isArray(newValue) && oldValue.length === newValue.length && newValue.every(value => oldValue.includes(value))) {\r\n return\r\n }\r\n refs[key] = newValue;\r\n oldKeys.delete(key);\r\n });\r\n oldKeys.forEach(key => {\r\n delete refs[key];\r\n });\r\n return refs\r\n}\r\n\r\nfunction initRefs (vm) {\r\n const mpInstance = vm.$scope;\r\n const refs = {};\r\n Object.defineProperty(vm, '$refs', {\r\n get () {\r\n const $refs = {};\r\n selectAllComponents(mpInstance, '.vue-ref', $refs);\r\n // TODO 暂不考虑 for 中的 scoped\r\n const forComponents = mpInstance.selectAllComponents('.vue-ref-in-for') || [];\r\n forComponents.forEach(component => {\r\n const ref = component.dataset.ref;\r\n if (!$refs[ref]) {\r\n $refs[ref] = [];\r\n }\r\n $refs[ref].push(component.$vm || toSkip(component));\r\n });\r\n return syncRefs(refs, $refs)\r\n }\r\n });\r\n}\r\n\r\nfunction handleLink (event) {\r\n const {\r\n vuePid,\r\n vueOptions\r\n } = event.detail || event.value; // detail 是微信,value 是百度(dipatch)\r\n\r\n let parentVm;\r\n\r\n if (vuePid) {\r\n parentVm = findVmByVueId(this.$vm, vuePid);\r\n }\r\n\r\n if (!parentVm) {\r\n parentVm = this.$vm;\r\n }\r\n\r\n vueOptions.parent = parentVm;\r\n}\r\n\r\nfunction markMPComponent (component) {\r\n // 在 Vue 中标记为小程序组件\r\n const IS_MP = '__v_isMPComponent';\r\n Object.defineProperty(component, IS_MP, {\r\n configurable: true,\r\n enumerable: false,\r\n value: true\r\n });\r\n return component\r\n}\r\n\r\nfunction toSkip (obj) {\r\n const OB = '__ob__';\r\n const SKIP = '__v_skip';\r\n if (isObject(obj) && Object.isExtensible(obj)) {\r\n // 避免被 @vue/composition-api 观测\r\n Object.defineProperty(obj, OB, {\r\n configurable: true,\r\n enumerable: false,\r\n value: {\r\n [SKIP]: true\r\n }\r\n });\r\n }\r\n return obj\r\n}\r\n\r\nconst WORKLET_RE = /_(.*)_worklet_factory_/;\r\nfunction initWorkletMethods (mpMethods, vueMethods) {\r\n if (vueMethods) {\r\n Object.keys(vueMethods).forEach((name) => {\r\n const matches = name.match(WORKLET_RE);\r\n if (matches) {\r\n const workletName = matches[1];\r\n mpMethods[name] = vueMethods[name];\r\n mpMethods[workletName] = vueMethods[workletName];\r\n }\r\n });\r\n }\r\n}\r\n\r\nconst MPPage = Page;\r\nconst MPComponent = Component;\r\n\r\nconst customizeRE = /:/g;\r\n\r\nconst customize = cached((str) => {\r\n return camelize(str.replace(customizeRE, '-'))\r\n});\r\n\r\nfunction initTriggerEvent (mpInstance) {\r\n const oldTriggerEvent = mpInstance.triggerEvent;\r\n const newTriggerEvent = function (event, ...args) {\r\n // 事件名统一转驼峰格式,仅处理:当前组件为 vue 组件、当前组件为 vue 组件子组件\r\n if (this.$vm || (this.dataset && this.dataset.comType)) {\r\n event = customize(event);\r\n } else {\r\n // 针对微信/QQ小程序单独补充驼峰格式事件,以兼容历史项目\r\n const newEvent = customize(event);\r\n if (newEvent !== event) {\r\n oldTriggerEvent.apply(this, [newEvent, ...args]);\r\n }\r\n }\r\n return oldTriggerEvent.apply(this, [event, ...args])\r\n };\r\n try {\r\n // 京东小程序 triggerEvent 为只读\r\n mpInstance.triggerEvent = newTriggerEvent;\r\n } catch (error) {\r\n mpInstance._triggerEvent = newTriggerEvent;\r\n }\r\n}\r\n\r\nfunction initHook (name, options, isComponent) {\r\n const oldHook = options[name];\r\n options[name] = function (...args) {\r\n markMPComponent(this);\r\n initTriggerEvent(this);\r\n if (oldHook) {\r\n return oldHook.apply(this, args)\r\n }\r\n };\r\n}\r\nif (!MPPage.__$wrappered) {\r\n MPPage.__$wrappered = true;\r\n Page = function (options = {}) {\r\n initHook('onLoad', options);\r\n return MPPage(options)\r\n };\r\n Page.after = MPPage.after;\r\n\r\n Component = function (options = {}) {\r\n initHook('created', options);\r\n return MPComponent(options)\r\n };\r\n}\r\n\r\nconst PAGE_EVENT_HOOKS = [\r\n 'onPullDownRefresh',\r\n 'onReachBottom',\r\n 'onAddToFavorites',\r\n 'onShareTimeline',\r\n 'onShareAppMessage',\r\n 'onPageScroll',\r\n 'onResize',\r\n 'onTabItemTap'\r\n];\r\n\r\nfunction initMocks (vm, mocks) {\r\n const mpInstance = vm.$mp[vm.mpType];\r\n mocks.forEach(mock => {\r\n if (hasOwn(mpInstance, mock)) {\r\n vm[mock] = mpInstance[mock];\r\n }\r\n });\r\n}\r\n\r\nfunction hasHook (hook, vueOptions) {\r\n if (!vueOptions) {\r\n return true\r\n }\r\n\r\n if (Vue.options && Array.isArray(Vue.options[hook])) {\r\n return true\r\n }\r\n\r\n vueOptions = vueOptions.default || vueOptions;\r\n\r\n if (isFn(vueOptions)) {\r\n if (isFn(vueOptions.extendOptions[hook])) {\r\n return true\r\n }\r\n if (vueOptions.super &&\r\n vueOptions.super.options &&\r\n Array.isArray(vueOptions.super.options[hook])) {\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n if (isFn(vueOptions[hook]) || Array.isArray(vueOptions[hook])) {\r\n return true\r\n }\r\n const mixins = vueOptions.mixins;\r\n if (Array.isArray(mixins)) {\r\n return !!mixins.find(mixin => hasHook(hook, mixin))\r\n }\r\n}\r\n\r\nfunction initHooks (mpOptions, hooks, vueOptions) {\r\n hooks.forEach(hook => {\r\n if (hasHook(hook, vueOptions)) {\r\n mpOptions[hook] = function (args) {\r\n return this.$vm && this.$vm.__call_hook(hook, args)\r\n };\r\n }\r\n });\r\n}\r\n\r\nfunction initUnknownHooks (mpOptions, vueOptions, excludes = []) {\r\n findHooks(vueOptions).forEach((hook) => initHook$1(mpOptions, hook, excludes));\r\n}\r\n\r\nfunction findHooks (vueOptions, hooks = []) {\r\n if (vueOptions) {\r\n Object.keys(vueOptions).forEach((name) => {\r\n if (name.indexOf('on') === 0 && isFn(vueOptions[name])) {\r\n hooks.push(name);\r\n }\r\n });\r\n }\r\n return hooks\r\n}\r\n\r\nfunction initHook$1 (mpOptions, hook, excludes) {\r\n if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) {\r\n mpOptions[hook] = function (args) {\r\n return this.$vm && this.$vm.__call_hook(hook, args)\r\n };\r\n }\r\n}\r\n\r\nfunction initVueComponent (Vue, vueOptions) {\r\n vueOptions = vueOptions.default || vueOptions;\r\n let VueComponent;\r\n if (isFn(vueOptions)) {\r\n VueComponent = vueOptions;\r\n } else {\r\n VueComponent = Vue.extend(vueOptions);\r\n }\r\n vueOptions = VueComponent.options;\r\n return [VueComponent, vueOptions]\r\n}\r\n\r\nfunction initSlots (vm, vueSlots) {\r\n if (Array.isArray(vueSlots) && vueSlots.length) {\r\n const $slots = Object.create(null);\r\n vueSlots.forEach(slotName => {\r\n $slots[slotName] = true;\r\n });\r\n vm.$scopedSlots = vm.$slots = $slots;\r\n }\r\n}\r\n\r\nfunction initVueIds (vueIds, mpInstance) {\r\n vueIds = (vueIds || '').split(',');\r\n const len = vueIds.length;\r\n\r\n if (len === 1) {\r\n mpInstance._$vueId = vueIds[0];\r\n } else if (len === 2) {\r\n mpInstance._$vueId = vueIds[0];\r\n mpInstance._$vuePid = vueIds[1];\r\n }\r\n}\r\n\r\nfunction initData (vueOptions, context) {\r\n let data = vueOptions.data || {};\r\n const methods = vueOptions.methods || {};\r\n\r\n if (typeof data === 'function') {\r\n try {\r\n data = data.call(context); // 支持 Vue.prototype 上挂的数据\r\n } catch (e) {\r\n if (process.env.VUE_APP_DEBUG) {\r\n console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);\r\n }\r\n }\r\n } else {\r\n try {\r\n // 对 data 格式化\r\n data = JSON.parse(JSON.stringify(data));\r\n } catch (e) { }\r\n }\r\n\r\n if (!isPlainObject(data)) {\r\n data = {};\r\n }\r\n\r\n Object.keys(methods).forEach(methodName => {\r\n if (context.__lifecycle_hooks__.indexOf(methodName) === -1 && !hasOwn(data, methodName)) {\r\n data[methodName] = methods[methodName];\r\n }\r\n });\r\n\r\n return data\r\n}\r\n\r\nconst PROP_TYPES = [String, Number, Boolean, Object, Array, null];\r\n\r\nfunction createObserver (name) {\r\n return function observer (newVal, oldVal) {\r\n if (this.$vm) {\r\n this.$vm[name] = newVal; // 为了触发其他非 render watcher\r\n }\r\n }\r\n}\r\n\r\nfunction initBehaviors (vueOptions, initBehavior) {\r\n const vueBehaviors = vueOptions.behaviors;\r\n const vueExtends = vueOptions.extends;\r\n const vueMixins = vueOptions.mixins;\r\n\r\n let vueProps = vueOptions.props;\r\n\r\n if (!vueProps) {\r\n vueOptions.props = vueProps = [];\r\n }\r\n\r\n const behaviors = [];\r\n if (Array.isArray(vueBehaviors)) {\r\n vueBehaviors.forEach(behavior => {\r\n behaviors.push(behavior.replace('uni://', `${\"wx\"}://`));\r\n if (behavior === 'uni://form-field') {\r\n if (Array.isArray(vueProps)) {\r\n vueProps.push('name');\r\n vueProps.push('value');\r\n } else {\r\n vueProps.name = {\r\n type: String,\r\n default: ''\r\n };\r\n vueProps.value = {\r\n type: [String, Number, Boolean, Array, Object, Date],\r\n default: ''\r\n };\r\n }\r\n }\r\n });\r\n }\r\n if (isPlainObject(vueExtends) && vueExtends.props) {\r\n behaviors.push(\r\n initBehavior({\r\n properties: initProperties(vueExtends.props, true)\r\n })\r\n );\r\n }\r\n if (Array.isArray(vueMixins)) {\r\n vueMixins.forEach(vueMixin => {\r\n if (isPlainObject(vueMixin) && vueMixin.props) {\r\n behaviors.push(\r\n initBehavior({\r\n properties: initProperties(vueMixin.props, true)\r\n })\r\n );\r\n }\r\n });\r\n }\r\n return behaviors\r\n}\r\n\r\nfunction parsePropType (key, type, defaultValue, file) {\r\n // [String]=>String\r\n if (Array.isArray(type) && type.length === 1) {\r\n return type[0]\r\n }\r\n return type\r\n}\r\n\r\nfunction initProperties (props, isBehavior = false, file = '', options) {\r\n const properties = {};\r\n if (!isBehavior) {\r\n properties.vueId = {\r\n type: String,\r\n value: ''\r\n };\r\n {\r\n if ( options.virtualHost) {\r\n properties.virtualHostStyle = {\r\n type: null,\r\n value: ''\r\n };\r\n properties.virtualHostClass = {\r\n type: null,\r\n value: ''\r\n };\r\n }\r\n }\r\n // scopedSlotsCompiler auto\r\n properties.scopedSlotsCompiler = {\r\n type: String,\r\n value: ''\r\n };\r\n properties.vueSlots = { // 小程序不能直接定义 $slots 的 props,所以通过 vueSlots 转换到 $slots\r\n type: null,\r\n value: [],\r\n observer: function (newVal, oldVal) {\r\n const $slots = Object.create(null);\r\n newVal.forEach(slotName => {\r\n $slots[slotName] = true;\r\n });\r\n this.setData({\r\n $slots\r\n });\r\n }\r\n };\r\n }\r\n if (Array.isArray(props)) { // ['title']\r\n props.forEach(key => {\r\n properties[key] = {\r\n type: null,\r\n observer: createObserver(key)\r\n };\r\n });\r\n } else if (isPlainObject(props)) { // {title:{type:String,default:''},content:String}\r\n Object.keys(props).forEach(key => {\r\n const opts = props[key];\r\n if (isPlainObject(opts)) { // title:{type:String,default:''}\r\n let value = opts.default;\r\n if (isFn(value)) {\r\n value = value();\r\n }\r\n\r\n opts.type = parsePropType(key, opts.type);\r\n\r\n properties[key] = {\r\n type: PROP_TYPES.indexOf(opts.type) !== -1 ? opts.type : null,\r\n value,\r\n observer: createObserver(key)\r\n };\r\n } else { // content:String\r\n const type = parsePropType(key, opts);\r\n properties[key] = {\r\n type: PROP_TYPES.indexOf(type) !== -1 ? type : null,\r\n observer: createObserver(key)\r\n };\r\n }\r\n });\r\n }\r\n return properties\r\n}\r\n\r\nfunction wrapper$1 (event) {\r\n // TODO 又得兼容 mpvue 的 mp 对象\r\n try {\r\n event.mp = JSON.parse(JSON.stringify(event));\r\n } catch (e) { }\r\n\r\n event.stopPropagation = noop;\r\n event.preventDefault = noop;\r\n\r\n event.target = event.target || {};\r\n\r\n if (!hasOwn(event, 'detail')) {\r\n event.detail = {};\r\n }\r\n\r\n if (hasOwn(event, 'markerId')) {\r\n event.detail = typeof event.detail === 'object' ? event.detail : {};\r\n event.detail.markerId = event.markerId;\r\n }\r\n\r\n if (isPlainObject(event.detail)) {\r\n event.target = Object.assign({}, event.target, event.detail);\r\n }\r\n\r\n return event\r\n}\r\n\r\nfunction getExtraValue (vm, dataPathsArray) {\r\n let context = vm;\r\n dataPathsArray.forEach(dataPathArray => {\r\n const dataPath = dataPathArray[0];\r\n const value = dataPathArray[2];\r\n if (dataPath || typeof value !== 'undefined') { // ['','',index,'disable']\r\n const propPath = dataPathArray[1];\r\n const valuePath = dataPathArray[3];\r\n\r\n let vFor;\r\n if (Number.isInteger(dataPath)) {\r\n vFor = dataPath;\r\n } else if (!dataPath) {\r\n vFor = context;\r\n } else if (typeof dataPath === 'string' && dataPath) {\r\n if (dataPath.indexOf('#s#') === 0) {\r\n vFor = dataPath.substr(3);\r\n } else {\r\n vFor = vm.__get_value(dataPath, context);\r\n }\r\n }\r\n\r\n if (Number.isInteger(vFor)) {\r\n context = value;\r\n } else if (!propPath) {\r\n context = vFor[value];\r\n } else {\r\n if (Array.isArray(vFor)) {\r\n context = vFor.find(vForItem => {\r\n return vm.__get_value(propPath, vForItem) === value\r\n });\r\n } else if (isPlainObject(vFor)) {\r\n context = Object.keys(vFor).find(vForKey => {\r\n return vm.__get_value(propPath, vFor[vForKey]) === value\r\n });\r\n } else {\r\n console.error('v-for 暂不支持循环数据:', vFor);\r\n }\r\n }\r\n\r\n if (valuePath) {\r\n context = vm.__get_value(valuePath, context);\r\n }\r\n }\r\n });\r\n return context\r\n}\r\n\r\nfunction processEventExtra (vm, extra, event, __args__) {\r\n const extraObj = {};\r\n\r\n if (Array.isArray(extra) && extra.length) {\r\n /**\r\n *[\r\n * ['data.items', 'data.id', item.data.id],\r\n * ['metas', 'id', meta.id]\r\n *],\r\n *[\r\n * ['data.items', 'data.id', item.data.id],\r\n * ['metas', 'id', meta.id]\r\n *],\r\n *'test'\r\n */\r\n extra.forEach((dataPath, index) => {\r\n if (typeof dataPath === 'string') {\r\n if (!dataPath) { // model,prop.sync\r\n extraObj['$' + index] = vm;\r\n } else {\r\n if (dataPath === '$event') { // $event\r\n extraObj['$' + index] = event;\r\n } else if (dataPath === 'arguments') {\r\n extraObj['$' + index] = event.detail ? event.detail.__args__ || __args__ : __args__;\r\n } else if (dataPath.indexOf('$event.') === 0) { // $event.target.value\r\n extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event);\r\n } else {\r\n extraObj['$' + index] = vm.__get_value(dataPath);\r\n }\r\n }\r\n } else {\r\n extraObj['$' + index] = getExtraValue(vm, dataPath);\r\n }\r\n });\r\n }\r\n\r\n return extraObj\r\n}\r\n\r\nfunction getObjByArray (arr) {\r\n const obj = {};\r\n for (let i = 1; i < arr.length; i++) {\r\n const element = arr[i];\r\n obj[element[0]] = element[1];\r\n }\r\n return obj\r\n}\r\n\r\nfunction processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) {\r\n let isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象\r\n\r\n // fixed 用户直接触发 mpInstance.triggerEvent\r\n const __args__ = isPlainObject(event.detail)\r\n ? event.detail.__args__ || [event.detail]\r\n : [event.detail];\r\n\r\n if (isCustom) { // 自定义事件\r\n isCustomMPEvent = event.currentTarget &&\r\n event.currentTarget.dataset &&\r\n event.currentTarget.dataset.comType === 'wx';\r\n if (!args.length) { // 无参数,直接传入 event 或 detail 数组\r\n if (isCustomMPEvent) {\r\n return [event]\r\n }\r\n return __args__\r\n }\r\n }\r\n\r\n const extraObj = processEventExtra(vm, extra, event, __args__);\r\n\r\n const ret = [];\r\n args.forEach(arg => {\r\n if (arg === '$event') {\r\n if (methodName === '__set_model' && !isCustom) { // input v-model value\r\n ret.push(event.target.value);\r\n } else {\r\n if (isCustom && !isCustomMPEvent) {\r\n ret.push(__args__[0]);\r\n } else { // wxcomponent 组件或内置组件\r\n ret.push(event);\r\n }\r\n }\r\n } else {\r\n if (Array.isArray(arg) && arg[0] === 'o') {\r\n ret.push(getObjByArray(arg));\r\n } else if (typeof arg === 'string' && hasOwn(extraObj, arg)) {\r\n ret.push(extraObj[arg]);\r\n } else {\r\n ret.push(arg);\r\n }\r\n }\r\n });\r\n\r\n return ret\r\n}\r\n\r\nconst ONCE = '~';\r\nconst CUSTOM = '^';\r\n\r\nfunction isMatchEventType (eventType, optType) {\r\n return (eventType === optType) ||\r\n (\r\n optType === 'regionchange' &&\r\n (\r\n eventType === 'begin' ||\r\n eventType === 'end'\r\n )\r\n )\r\n}\r\n\r\nfunction getContextVm (vm) {\r\n let $parent = vm.$parent;\r\n // 父组件是 scoped slots 或者其他自定义组件时继续查找\r\n while ($parent && $parent.$parent && ($parent.$options.generic || $parent.$parent.$options.generic || $parent.$scope._$vuePid)) {\r\n $parent = $parent.$parent;\r\n }\r\n return $parent && $parent.$parent\r\n}\r\n\r\nfunction handleEvent (event) {\r\n event = wrapper$1(event);\r\n\r\n // [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]]\r\n const dataset = (event.currentTarget || event.target).dataset;\r\n if (!dataset) {\r\n return console.warn('事件信息不存在')\r\n }\r\n const eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰\r\n if (!eventOpts) {\r\n return console.warn('事件信息不存在')\r\n }\r\n\r\n // [['handle',[1,2,a]],['handle1',[1,2,a]]]\r\n const eventType = event.type;\r\n\r\n const ret = [];\r\n\r\n eventOpts.forEach(eventOpt => {\r\n let type = eventOpt[0];\r\n const eventsArray = eventOpt[1];\r\n\r\n const isCustom = type.charAt(0) === CUSTOM;\r\n type = isCustom ? type.slice(1) : type;\r\n const isOnce = type.charAt(0) === ONCE;\r\n type = isOnce ? type.slice(1) : type;\r\n\r\n if (eventsArray && isMatchEventType(eventType, type)) {\r\n eventsArray.forEach(eventArray => {\r\n const methodName = eventArray[0];\r\n if (methodName) {\r\n let handlerCtx = this.$vm;\r\n if (handlerCtx.$options.generic) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots\r\n handlerCtx = getContextVm(handlerCtx) || handlerCtx;\r\n }\r\n if (methodName === '$emit') {\r\n handlerCtx.$emit.apply(handlerCtx,\r\n processEventArgs(\r\n this.$vm,\r\n event,\r\n eventArray[1],\r\n eventArray[2],\r\n isCustom,\r\n methodName\r\n ));\r\n return\r\n }\r\n const handler = handlerCtx[methodName];\r\n if (!isFn(handler)) {\r\n const type = this.$vm.mpType === 'page' ? 'Page' : 'Component';\r\n const path = this.route || this.is;\r\n throw new Error(`${type} \"${path}\" does not have a method \"${methodName}\"`)\r\n }\r\n if (isOnce) {\r\n if (handler.once) {\r\n return\r\n }\r\n handler.once = true;\r\n }\r\n let params = processEventArgs(\r\n this.$vm,\r\n event,\r\n eventArray[1],\r\n eventArray[2],\r\n isCustom,\r\n methodName\r\n );\r\n params = Array.isArray(params) ? params : [];\r\n // 参数尾部增加原始事件对象用于复杂表达式内获取额外数据\r\n if (/=\\s*\\S+\\.eventParams\\s*\\|\\|\\s*\\S+\\[['\"]event-params['\"]\\]/.test(handler.toString())) {\r\n // eslint-disable-next-line no-sparse-arrays\r\n params = params.concat([, , , , , , , , , , event]);\r\n }\r\n ret.push(handler.apply(handlerCtx, params));\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (\r\n eventType === 'input' &&\r\n ret.length === 1 &&\r\n typeof ret[0] !== 'undefined'\r\n ) {\r\n return ret[0]\r\n }\r\n}\r\n\r\nconst eventChannels = {};\r\n\r\nfunction getEventChannel (id) {\r\n const eventChannel = eventChannels[id];\r\n delete eventChannels[id];\r\n return eventChannel\r\n}\r\n\r\nconst hooks = [\r\n 'onShow',\r\n 'onHide',\r\n 'onError',\r\n 'onPageNotFound',\r\n 'onThemeChange',\r\n 'onUnhandledRejection'\r\n];\r\n\r\nfunction initEventChannel () {\r\n Vue.prototype.getOpenerEventChannel = function () {\r\n // 微信小程序使用自身getOpenerEventChannel\r\n {\r\n return this.$scope.getOpenerEventChannel()\r\n }\r\n };\r\n const callHook = Vue.prototype.__call_hook;\r\n Vue.prototype.__call_hook = function (hook, args) {\r\n if (hook === 'onLoad' && args && args.__id__) {\r\n this.__eventChannel__ = getEventChannel(args.__id__);\r\n delete args.__id__;\r\n }\r\n return callHook.call(this, hook, args)\r\n };\r\n}\r\n\r\nfunction initScopedSlotsParams () {\r\n const center = {};\r\n const parents = {};\r\n\r\n function currentId (fn) {\r\n const vueIds = this.$options.propsData.vueId;\r\n if (vueIds) {\r\n const vueId = vueIds.split(',')[0];\r\n fn(vueId);\r\n }\r\n }\r\n\r\n Vue.prototype.$hasSSP = function (vueId) {\r\n const slot = center[vueId];\r\n if (!slot) {\r\n parents[vueId] = this;\r\n this.$on('hook:destroyed', () => {\r\n delete parents[vueId];\r\n });\r\n }\r\n return slot\r\n };\r\n\r\n Vue.prototype.$getSSP = function (vueId, name, needAll) {\r\n const slot = center[vueId];\r\n if (slot) {\r\n const params = slot[name] || [];\r\n if (needAll) {\r\n return params\r\n }\r\n return params[0]\r\n }\r\n };\r\n\r\n Vue.prototype.$setSSP = function (name, value) {\r\n let index = 0;\r\n currentId.call(this, vueId => {\r\n const slot = center[vueId];\r\n const params = slot[name] = slot[name] || [];\r\n params.push(value);\r\n index = params.length - 1;\r\n });\r\n return index\r\n };\r\n\r\n Vue.prototype.$initSSP = function () {\r\n currentId.call(this, vueId => {\r\n center[vueId] = {};\r\n });\r\n };\r\n\r\n Vue.prototype.$callSSP = function () {\r\n currentId.call(this, vueId => {\r\n if (parents[vueId]) {\r\n parents[vueId].$forceUpdate();\r\n }\r\n });\r\n };\r\n\r\n Vue.mixin({\r\n destroyed () {\r\n const propsData = this.$options.propsData;\r\n const vueId = propsData && propsData.vueId;\r\n if (vueId) {\r\n delete center[vueId];\r\n delete parents[vueId];\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction parseBaseApp (vm, {\r\n mocks,\r\n initRefs\r\n}) {\r\n initEventChannel();\r\n {\r\n initScopedSlotsParams();\r\n }\r\n if (vm.$options.store) {\r\n Vue.prototype.$store = vm.$options.store;\r\n }\r\n uniIdMixin(Vue);\r\n\r\n Vue.prototype.mpHost = \"mp-weixin\";\r\n\r\n Vue.mixin({\r\n beforeCreate () {\r\n if (!this.$options.mpType) {\r\n return\r\n }\r\n\r\n this.mpType = this.$options.mpType;\r\n\r\n this.$mp = {\r\n data: {},\r\n [this.mpType]: this.$options.mpInstance\r\n };\r\n\r\n this.$scope = this.$options.mpInstance;\r\n\r\n delete this.$options.mpType;\r\n delete this.$options.mpInstance;\r\n if (this.mpType === 'page' && typeof getApp === 'function') { // hack vue-i18n\r\n const app = getApp();\r\n if (app.$vm && app.$vm.$i18n) {\r\n this._i18n = app.$vm.$i18n;\r\n }\r\n }\r\n if (this.mpType !== 'app') {\r\n initRefs(this);\r\n initMocks(this, mocks);\r\n }\r\n }\r\n });\r\n\r\n const appOptions = {\r\n onLaunch (args) {\r\n if (this.$vm) { // 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前\r\n return\r\n }\r\n {\r\n if (wx.canIUse && !wx.canIUse('nextTick')) { // 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断\r\n console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');\r\n }\r\n }\r\n\r\n this.$vm = vm;\r\n\r\n this.$vm.$mp = {\r\n app: this\r\n };\r\n\r\n this.$vm.$scope = this;\r\n // vm 上也挂载 globalData\r\n this.$vm.globalData = this.globalData;\r\n\r\n this.$vm._isMounted = true;\r\n this.$vm.__call_hook('mounted', args);\r\n\r\n this.$vm.__call_hook('onLaunch', args);\r\n }\r\n };\r\n\r\n // 兼容旧版本 globalData\r\n appOptions.globalData = vm.$options.globalData || {};\r\n // 将 methods 中的方法挂在 getApp() 中\r\n const methods = vm.$options.methods;\r\n if (methods) {\r\n Object.keys(methods).forEach(name => {\r\n appOptions[name] = methods[name];\r\n });\r\n }\r\n\r\n initAppLocale(Vue, vm, normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN);\r\n\r\n initHooks(appOptions, hooks);\r\n initUnknownHooks(appOptions, vm.$options);\r\n\r\n return appOptions\r\n}\r\n\r\nfunction parseApp (vm) {\r\n return parseBaseApp(vm, {\r\n mocks,\r\n initRefs\r\n })\r\n}\r\n\r\nfunction createApp (vm) {\r\n App(parseApp(vm));\r\n return vm\r\n}\r\n\r\nconst encodeReserveRE = /[!'()*]/g;\r\nconst encodeReserveReplacer = c => '%' + c.charCodeAt(0).toString(16);\r\nconst commaRE = /%2C/g;\r\n\r\n// fixed encodeURIComponent which is more conformant to RFC3986:\r\n// - escapes [!'()*]\r\n// - preserve commas\r\nconst encode = str => encodeURIComponent(str)\r\n .replace(encodeReserveRE, encodeReserveReplacer)\r\n .replace(commaRE, ',');\r\n\r\nfunction stringifyQuery (obj, encodeStr = encode) {\r\n const res = obj ? Object.keys(obj).map(key => {\r\n const val = obj[key];\r\n\r\n if (val === undefined) {\r\n return ''\r\n }\r\n\r\n if (val === null) {\r\n return encodeStr(key)\r\n }\r\n\r\n if (Array.isArray(val)) {\r\n const result = [];\r\n val.forEach(val2 => {\r\n if (val2 === undefined) {\r\n return\r\n }\r\n if (val2 === null) {\r\n result.push(encodeStr(key));\r\n } else {\r\n result.push(encodeStr(key) + '=' + encodeStr(val2));\r\n }\r\n });\r\n return result.join('&')\r\n }\r\n\r\n return encodeStr(key) + '=' + encodeStr(val)\r\n }).filter(x => x.length > 0).join('&') : null;\r\n return res ? `?${res}` : ''\r\n}\r\n\r\nfunction parseBaseComponent (vueComponentOptions, {\r\n isPage,\r\n initRelation\r\n} = {}, needVueOptions) {\r\n const [VueComponent, vueOptions] = initVueComponent(Vue, vueComponentOptions);\r\n\r\n const options = {\r\n multipleSlots: true,\r\n // styleIsolation: 'apply-shared',\r\n addGlobalClass: true,\r\n ...(vueOptions.options || {})\r\n };\r\n\r\n {\r\n // 微信 multipleSlots 部分情况有 bug,导致内容顺序错乱 如 u-list,提供覆盖选项\r\n if (vueOptions['mp-weixin'] && vueOptions['mp-weixin'].options) {\r\n Object.assign(options, vueOptions['mp-weixin'].options);\r\n }\r\n }\r\n\r\n const componentOptions = {\r\n options,\r\n data: initData(vueOptions, Vue.prototype),\r\n behaviors: initBehaviors(vueOptions, initBehavior),\r\n properties: initProperties(vueOptions.props, false, vueOptions.__file, options),\r\n lifetimes: {\r\n attached () {\r\n const properties = this.properties;\r\n\r\n const options = {\r\n mpType: isPage.call(this) ? 'page' : 'component',\r\n mpInstance: this,\r\n propsData: properties\r\n };\r\n\r\n initVueIds(properties.vueId, this);\r\n\r\n // 处理父子关系\r\n initRelation.call(this, {\r\n vuePid: this._$vuePid,\r\n vueOptions: options\r\n });\r\n\r\n // 初始化 vue 实例\r\n this.$vm = new VueComponent(options);\r\n\r\n // 处理$slots,$scopedSlots(暂不支持动态变化$slots)\r\n initSlots(this.$vm, properties.vueSlots);\r\n\r\n // 触发首次 setData\r\n this.$vm.$mount();\r\n },\r\n ready () {\r\n // 当组件 props 默认值为 true,初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发\r\n // https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800\r\n if (this.$vm) {\r\n this.$vm._isMounted = true;\r\n this.$vm.__call_hook('mounted');\r\n this.$vm.__call_hook('onReady');\r\n }\r\n },\r\n detached () {\r\n this.$vm && this.$vm.$destroy();\r\n }\r\n },\r\n pageLifetimes: {\r\n show (args) {\r\n this.$vm && this.$vm.__call_hook('onPageShow', args);\r\n },\r\n hide () {\r\n this.$vm && this.$vm.__call_hook('onPageHide');\r\n },\r\n resize (size) {\r\n this.$vm && this.$vm.__call_hook('onPageResize', size);\r\n }\r\n },\r\n methods: {\r\n __l: handleLink,\r\n __e: handleEvent\r\n }\r\n };\r\n // externalClasses\r\n if (vueOptions.externalClasses) {\r\n componentOptions.externalClasses = vueOptions.externalClasses;\r\n }\r\n\r\n if (Array.isArray(vueOptions.wxsCallMethods)) {\r\n vueOptions.wxsCallMethods.forEach(callMethod => {\r\n componentOptions.methods[callMethod] = function (args) {\r\n return this.$vm[callMethod](args)\r\n };\r\n });\r\n }\r\n\r\n if (needVueOptions) {\r\n return [componentOptions, vueOptions, VueComponent]\r\n }\r\n if (isPage) {\r\n return componentOptions\r\n }\r\n return [componentOptions, VueComponent]\r\n}\r\n\r\nfunction parseComponent (vueComponentOptions, needVueOptions) {\r\n return parseBaseComponent(vueComponentOptions, {\r\n isPage,\r\n initRelation\r\n }, needVueOptions)\r\n}\r\n\r\nconst hooks$1 = [\r\n 'onShow',\r\n 'onHide',\r\n 'onUnload'\r\n];\r\n\r\nhooks$1.push(...PAGE_EVENT_HOOKS);\r\n\r\nfunction parseBasePage (vuePageOptions) {\r\n const [pageOptions, vueOptions] = parseComponent(vuePageOptions, true);\r\n\r\n initHooks(pageOptions.methods, hooks$1, vueOptions);\r\n\r\n pageOptions.methods.onLoad = function (query) {\r\n this.options = query;\r\n const copyQuery = Object.assign({}, query);\r\n delete copyQuery.__id__;\r\n this.$page = {\r\n fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery)\r\n };\r\n this.$vm.$mp.query = query; // 兼容 mpvue\r\n this.$vm.__call_hook('onLoad', query);\r\n };\r\n {\r\n initUnknownHooks(pageOptions.methods, vuePageOptions, ['onReady']);\r\n }\r\n {\r\n initWorkletMethods(pageOptions.methods, vueOptions.methods);\r\n }\r\n\r\n return pageOptions\r\n}\r\n\r\nfunction parsePage (vuePageOptions) {\r\n return parseBasePage(vuePageOptions)\r\n}\r\n\r\nfunction createPage (vuePageOptions) {\r\n {\r\n return Component(parsePage(vuePageOptions))\r\n }\r\n}\r\n\r\nfunction createComponent (vueOptions) {\r\n {\r\n return Component(parseComponent(vueOptions))\r\n }\r\n}\r\n\r\nfunction createSubpackageApp (vm) {\r\n const appOptions = parseApp(vm);\r\n const app = getApp({\r\n allowDefault: true\r\n });\r\n vm.$scope = app;\r\n const globalData = app.globalData;\r\n if (globalData) {\r\n Object.keys(appOptions.globalData).forEach(name => {\r\n if (!hasOwn(globalData, name)) {\r\n globalData[name] = appOptions.globalData[name];\r\n }\r\n });\r\n }\r\n Object.keys(appOptions).forEach(name => {\r\n if (!hasOwn(app, name)) {\r\n app[name] = appOptions[name];\r\n }\r\n });\r\n if (isFn(appOptions.onShow) && wx.onAppShow) {\r\n wx.onAppShow((...args) => {\r\n vm.__call_hook('onShow', args);\r\n });\r\n }\r\n if (isFn(appOptions.onHide) && wx.onAppHide) {\r\n wx.onAppHide((...args) => {\r\n vm.__call_hook('onHide', args);\r\n });\r\n }\r\n if (isFn(appOptions.onLaunch)) {\r\n const args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();\r\n vm.__call_hook('onLaunch', args);\r\n }\r\n return vm\r\n}\r\n\r\nfunction createPlugin (vm) {\r\n const appOptions = parseApp(vm);\r\n if (isFn(appOptions.onShow) && wx.onAppShow) {\r\n wx.onAppShow((...args) => {\r\n vm.__call_hook('onShow', args);\r\n });\r\n }\r\n if (isFn(appOptions.onHide) && wx.onAppHide) {\r\n wx.onAppHide((...args) => {\r\n vm.__call_hook('onHide', args);\r\n });\r\n }\r\n if (isFn(appOptions.onLaunch)) {\r\n const args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();\r\n vm.__call_hook('onLaunch', args);\r\n }\r\n return vm\r\n}\r\n\r\ntodos.forEach(todoApi => {\r\n protocols[todoApi] = false;\r\n});\r\n\r\ncanIUses.forEach(canIUseApi => {\r\n const apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name\r\n : canIUseApi;\r\n if (!wx.canIUse(apiName)) {\r\n protocols[canIUseApi] = false;\r\n }\r\n});\r\n\r\nlet uni = {};\r\n\r\nif (typeof Proxy !== 'undefined' && \"mp-weixin\" !== 'app-plus') {\r\n uni = new Proxy({}, {\r\n get (target, name) {\r\n if (hasOwn(target, name)) {\r\n return target[name]\r\n }\r\n if (baseApi[name]) {\r\n return baseApi[name]\r\n }\r\n if (api[name]) {\r\n return promisify(name, api[name])\r\n }\r\n {\r\n if (extraApi[name]) {\r\n return promisify(name, extraApi[name])\r\n }\r\n if (todoApis[name]) {\r\n return promisify(name, todoApis[name])\r\n }\r\n }\r\n if (eventApi[name]) {\r\n return eventApi[name]\r\n }\r\n return promisify(name, wrapper(name, wx[name]))\r\n },\r\n set (target, name, value) {\r\n target[name] = value;\r\n return true\r\n }\r\n });\r\n} else {\r\n Object.keys(baseApi).forEach(name => {\r\n uni[name] = baseApi[name];\r\n });\r\n\r\n {\r\n Object.keys(todoApis).forEach(name => {\r\n uni[name] = promisify(name, todoApis[name]);\r\n });\r\n Object.keys(extraApi).forEach(name => {\r\n uni[name] = promisify(name, extraApi[name]);\r\n });\r\n }\r\n\r\n Object.keys(eventApi).forEach(name => {\r\n uni[name] = eventApi[name];\r\n });\r\n\r\n Object.keys(api).forEach(name => {\r\n uni[name] = promisify(name, api[name]);\r\n });\r\n\r\n Object.keys(wx).forEach(name => {\r\n if (hasOwn(wx, name) || hasOwn(protocols, name)) {\r\n uni[name] = promisify(name, wrapper(name, wx[name]));\r\n }\r\n });\r\n}\r\n\r\nwx.createApp = createApp;\r\nwx.createPage = createPage;\r\nwx.createComponent = createComponent;\r\nwx.createSubpackageApp = createSubpackageApp;\r\nwx.createPlugin = createPlugin;\r\n\r\nvar uni$1 = uni;\r\n\r\nexport default uni$1;\r\nexport { createApp, createComponent, createPage, createPlugin, createSubpackageApp };\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _construct.apply(null, arguments);\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const isObject = (val) => val !== null && typeof val === 'object';\nconst defaultDelimiters = ['{', '}'];\nclass BaseFormatter {\n constructor() {\n this._caches = Object.create(null);\n }\n interpolate(message, values, delimiters = defaultDelimiters) {\n if (!values) {\n return [message];\n }\n let tokens = this._caches[message];\n if (!tokens) {\n tokens = parse(message, delimiters);\n this._caches[message] = tokens;\n }\n return compile(tokens, values);\n }\n}\nconst RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nconst RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\nfunction parse(format, [startDelimiter, endDelimiter]) {\n const tokens = [];\n let position = 0;\n let text = '';\n while (position < format.length) {\n let char = format[position++];\n if (char === startDelimiter) {\n if (text) {\n tokens.push({ type: 'text', value: text });\n }\n text = '';\n let sub = '';\n char = format[position++];\n while (char !== undefined && char !== endDelimiter) {\n sub += char;\n char = format[position++];\n }\n const isClosed = char === endDelimiter;\n const type = RE_TOKEN_LIST_VALUE.test(sub)\n ? 'list'\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n ? 'named'\n : 'unknown';\n tokens.push({ value: sub, type });\n }\n // else if (char === '%') {\n // // when found rails i18n syntax, skip text capture\n // if (format[position] !== '{') {\n // text += char\n // }\n // }\n else {\n text += char;\n }\n }\n text && tokens.push({ type: 'text', value: text });\n return tokens;\n}\nfunction compile(tokens, values) {\n const compiled = [];\n let index = 0;\n const mode = Array.isArray(values)\n ? 'list'\n : isObject(values)\n ? 'named'\n : 'unknown';\n if (mode === 'unknown') {\n return compiled;\n }\n while (index < tokens.length) {\n const token = tokens[index];\n switch (token.type) {\n case 'text':\n compiled.push(token.value);\n break;\n case 'list':\n compiled.push(values[parseInt(token.value, 10)]);\n break;\n case 'named':\n if (mode === 'named') {\n compiled.push(values[token.value]);\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Type of token '${token.type}' and format of value '${mode}' don't match!`);\n }\n }\n break;\n case 'unknown':\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Detect 'unknown' type of token!`);\n }\n break;\n }\n index++;\n }\n return compiled;\n}\n\nconst LOCALE_ZH_HANS = 'zh-Hans';\nconst LOCALE_ZH_HANT = 'zh-Hant';\nconst LOCALE_EN = 'en';\nconst LOCALE_FR = 'fr';\nconst LOCALE_ES = 'es';\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\nconst defaultFormatter = new BaseFormatter();\nfunction include(str, parts) {\n return !!parts.find((part) => str.indexOf(part) !== -1);\n}\nfunction startsWith(str, parts) {\n return parts.find((part) => str.indexOf(part) === 0);\n}\nfunction normalizeLocale(locale, messages) {\n if (!locale) {\n return;\n }\n locale = locale.trim().replace(/_/g, '-');\n if (messages && messages[locale]) {\n return locale;\n }\n locale = locale.toLowerCase();\n if (locale === 'chinese') {\n // 支付宝\n return LOCALE_ZH_HANS;\n }\n if (locale.indexOf('zh') === 0) {\n if (locale.indexOf('-hans') > -1) {\n return LOCALE_ZH_HANS;\n }\n if (locale.indexOf('-hant') > -1) {\n return LOCALE_ZH_HANT;\n }\n if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {\n return LOCALE_ZH_HANT;\n }\n return LOCALE_ZH_HANS;\n }\n let locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES];\n if (messages && Object.keys(messages).length > 0) {\n locales = Object.keys(messages);\n }\n const lang = startsWith(locale, locales);\n if (lang) {\n return lang;\n }\n}\nclass I18n {\n constructor({ locale, fallbackLocale, messages, watcher, formater, }) {\n this.locale = LOCALE_EN;\n this.fallbackLocale = LOCALE_EN;\n this.message = {};\n this.messages = {};\n this.watchers = [];\n if (fallbackLocale) {\n this.fallbackLocale = fallbackLocale;\n }\n this.formater = formater || defaultFormatter;\n this.messages = messages || {};\n this.setLocale(locale || LOCALE_EN);\n if (watcher) {\n this.watchLocale(watcher);\n }\n }\n setLocale(locale) {\n const oldLocale = this.locale;\n this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;\n if (!this.messages[this.locale]) {\n // 可能初始化时不存在\n this.messages[this.locale] = {};\n }\n this.message = this.messages[this.locale];\n // 仅发生变化时,通知\n if (oldLocale !== this.locale) {\n this.watchers.forEach((watcher) => {\n watcher(this.locale, oldLocale);\n });\n }\n }\n getLocale() {\n return this.locale;\n }\n watchLocale(fn) {\n const index = this.watchers.push(fn) - 1;\n return () => {\n this.watchers.splice(index, 1);\n };\n }\n add(locale, message, override = true) {\n const curMessages = this.messages[locale];\n if (curMessages) {\n if (override) {\n Object.assign(curMessages, message);\n }\n else {\n Object.keys(message).forEach((key) => {\n if (!hasOwn(curMessages, key)) {\n curMessages[key] = message[key];\n }\n });\n }\n }\n else {\n this.messages[locale] = message;\n }\n }\n f(message, values, delimiters) {\n return this.formater.interpolate(message, values, delimiters).join('');\n }\n t(key, locale, values) {\n let message = this.message;\n if (typeof locale === 'string') {\n locale = normalizeLocale(locale, this.messages);\n locale && (message = this.messages[locale]);\n }\n else {\n values = locale;\n }\n if (!hasOwn(message, key)) {\n console.warn(`Cannot translate the value of keypath ${key}. Use the value of keypath as default.`);\n return key;\n }\n return this.formater.interpolate(message[key], values).join('');\n }\n}\n\nfunction watchAppLocale(appVm, i18n) {\n // 需要保证 watch 的触发在组件渲染之前\n if (appVm.$watchLocale) {\n // vue2\n appVm.$watchLocale((newLocale) => {\n i18n.setLocale(newLocale);\n });\n }\n else {\n appVm.$watch(() => appVm.$locale, (newLocale) => {\n i18n.setLocale(newLocale);\n });\n }\n}\nfunction getDefaultLocale() {\n if (typeof uni !== 'undefined' && uni.getLocale) {\n return uni.getLocale();\n }\n // 小程序平台,uni 和 uni-i18n 互相引用,导致访问不到 uni,故在 global 上挂了 getLocale\n if (typeof global !== 'undefined' && global.getLocale) {\n return global.getLocale();\n }\n return LOCALE_EN;\n}\nfunction initVueI18n(locale, messages = {}, fallbackLocale, watcher) {\n // 兼容旧版本入参\n if (typeof locale !== 'string') {\n [locale, messages] = [\n messages,\n locale,\n ];\n }\n if (typeof locale !== 'string') {\n // 因为小程序平台,uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined\n locale = getDefaultLocale();\n }\n if (typeof fallbackLocale !== 'string') {\n fallbackLocale =\n (typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale) ||\n LOCALE_EN;\n }\n const i18n = new I18n({\n locale,\n fallbackLocale,\n messages,\n watcher,\n });\n let t = (key, values) => {\n if (typeof getApp !== 'function') {\n // app view\n /* eslint-disable no-func-assign */\n t = function (key, values) {\n return i18n.t(key, values);\n };\n }\n else {\n let isWatchedAppLocale = false;\n t = function (key, values) {\n const appVm = getApp().$vm;\n // 可能$vm还不存在,比如在支付宝小程序中,组件定义较早,在props的default里使用了t()函数(如uni-goods-nav),此时app还未初始化\n // options: {\n // \ttype: Array,\n // \tdefault () {\n // \t\treturn [{\n // \t\t\ticon: 'shop',\n // \t\t\ttext: t(\"uni-goods-nav.options.shop\"),\n // \t\t}, {\n // \t\t\ticon: 'cart',\n // \t\t\ttext: t(\"uni-goods-nav.options.cart\")\n // \t\t}]\n // \t}\n // },\n if (appVm) {\n // 触发响应式\n appVm.$locale;\n if (!isWatchedAppLocale) {\n isWatchedAppLocale = true;\n watchAppLocale(appVm, i18n);\n }\n }\n return i18n.t(key, values);\n };\n }\n return t(key, values);\n };\n return {\n i18n,\n f(message, values, delimiters) {\n return i18n.f(message, values, delimiters);\n },\n t(key, values) {\n return t(key, values);\n },\n add(locale, message, override = true) {\n return i18n.add(locale, message, override);\n },\n watch(fn) {\n return i18n.watchLocale(fn);\n },\n getLocale() {\n return i18n.getLocale();\n },\n setLocale(newLocale) {\n return i18n.setLocale(newLocale);\n },\n };\n}\n\nconst isString = (val) => typeof val === 'string';\nlet formater;\nfunction hasI18nJson(jsonObj, delimiters) {\n if (!formater) {\n formater = new BaseFormatter();\n }\n return walkJsonObj(jsonObj, (jsonObj, key) => {\n const value = jsonObj[key];\n if (isString(value)) {\n if (isI18nStr(value, delimiters)) {\n return true;\n }\n }\n else {\n return hasI18nJson(value, delimiters);\n }\n });\n}\nfunction parseI18nJson(jsonObj, values, delimiters) {\n if (!formater) {\n formater = new BaseFormatter();\n }\n walkJsonObj(jsonObj, (jsonObj, key) => {\n const value = jsonObj[key];\n if (isString(value)) {\n if (isI18nStr(value, delimiters)) {\n jsonObj[key] = compileStr(value, values, delimiters);\n }\n }\n else {\n parseI18nJson(value, values, delimiters);\n }\n });\n return jsonObj;\n}\nfunction compileI18nJsonStr(jsonStr, { locale, locales, delimiters, }) {\n if (!isI18nStr(jsonStr, delimiters)) {\n return jsonStr;\n }\n if (!formater) {\n formater = new BaseFormatter();\n }\n const localeValues = [];\n Object.keys(locales).forEach((name) => {\n if (name !== locale) {\n localeValues.push({\n locale: name,\n values: locales[name],\n });\n }\n });\n localeValues.unshift({ locale, values: locales[locale] });\n try {\n return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);\n }\n catch (e) { }\n return jsonStr;\n}\nfunction isI18nStr(value, delimiters) {\n return value.indexOf(delimiters[0]) > -1;\n}\nfunction compileStr(value, values, delimiters) {\n return formater.interpolate(value, values, delimiters).join('');\n}\nfunction compileValue(jsonObj, key, localeValues, delimiters) {\n const value = jsonObj[key];\n if (isString(value)) {\n // 存在国际化\n if (isI18nStr(value, delimiters)) {\n jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);\n if (localeValues.length > 1) {\n // 格式化国际化语言\n const valueLocales = (jsonObj[key + 'Locales'] = {});\n localeValues.forEach((localValue) => {\n valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);\n });\n }\n }\n }\n else {\n compileJsonObj(value, localeValues, delimiters);\n }\n}\nfunction compileJsonObj(jsonObj, localeValues, delimiters) {\n walkJsonObj(jsonObj, (jsonObj, key) => {\n compileValue(jsonObj, key, localeValues, delimiters);\n });\n return jsonObj;\n}\nfunction walkJsonObj(jsonObj, walk) {\n if (Array.isArray(jsonObj)) {\n for (let i = 0; i < jsonObj.length; i++) {\n if (walk(jsonObj, i)) {\n return true;\n }\n }\n }\n else if (isObject(jsonObj)) {\n for (const key in jsonObj) {\n if (walk(jsonObj, key)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction resolveLocale(locales) {\n return (locale) => {\n if (!locale) {\n return locale;\n }\n locale = normalizeLocale(locale) || locale;\n return resolveLocaleChain(locale).find((locale) => locales.indexOf(locale) > -1);\n };\n}\nfunction resolveLocaleChain(locale) {\n const chain = [];\n const tokens = locale.split('-');\n while (tokens.length) {\n chain.push(tokens.join('-'));\n tokens.pop();\n }\n return chain;\n}\n\nexport { BaseFormatter as Formatter, I18n, LOCALE_EN, LOCALE_ES, LOCALE_FR, LOCALE_ZH_HANS, LOCALE_ZH_HANT, compileI18nJsonStr, hasI18nJson, initVueI18n, isI18nStr, isString, normalizeLocale, parseI18nJson, resolveLocale };\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\n * Vue.js v2.6.11\n * (c) 2014-2023 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n if (vm.$options && vm.$options.__file) { // fixed by xxxxxx\n return ('') + vm.$options.__file\n }\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm && vm.$options.name !== 'PageBody') {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n !vm.$options.isReserved && tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.SharedObject.target) {\n Dep.SharedObject.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\n// fixed by xxxxxx (nvue shared vuex)\n/* eslint-disable no-undef */\nDep.SharedObject = {};\nDep.SharedObject.target = null;\nDep.SharedObject.targetStack = [];\n\nfunction pushTarget (target) {\n Dep.SharedObject.targetStack.push(target);\n Dep.SharedObject.target = target;\n Dep.target = target;\n}\n\nfunction popTarget () {\n Dep.SharedObject.targetStack.pop();\n Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1];\n Dep.target = Dep.SharedObject.target;\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n {// fixed by xxxxxx 微信小程序使用 plugins 之后,数组方法被直接挂载到了数组对象上,需要执行 copyAugment 逻辑\n if(value.push !== value.__proto__.push){\n copyAugment(value, arrayMethods, arrayKeys);\n } else {\n protoAugment(value, arrayMethods);\n }\n }\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue &&\n !value.__v_isMPComponent\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.SharedObject.target) { // fixed by xxxxxx\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\n/* */\n\n// fixed by xxxxxx (mp properties)\r\nfunction extractPropertiesFromVNodeData(data, Ctor, res, context) {\r\n var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;\r\n if (isUndef(propOptions)) {\r\n return res\r\n }\n var externalClasses = Ctor.options.mpOptions.externalClasses || [];\r\n var attrs = data.attrs;\n var props = data.props;\r\n if (isDef(attrs) || isDef(props)) {\r\n for (var key in propOptions) {\r\n var altKey = hyphenate(key);\n var result = checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n // externalClass\n if (\n result &&\n res[key] &&\n externalClasses.indexOf(altKey) !== -1 &&\n context[camelize(res[key])]\n ) {\n // 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串)\n res[key] = context[camelize(res[key])];\n }\r\n }\r\n }\r\n return res\r\n}\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag,\n context// fixed by xxxxxx\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n // fixed by xxxxxx\n return extractPropertiesFromVNodeData(data, Ctor, {}, context)\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n // fixed by xxxxxx\n return extractPropertiesFromVNodeData(data, Ctor, res, context)\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.