From 65688b6555a6abc0c48942f22a91b9455652c234 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Sat, 26 Oct 2019 15:36:57 +0800 Subject: [PATCH] refactor(v3): createIntersectionObserver --- packages/uni-app-plus/dist/index.v3.js | 110 +- packages/uni-app-plus/dist/view.umd.js | 5638 +++++++++-------- .../webpack-uni-pages-loader/package.json | 2 +- .../api/ui/create-intersection-observer.js | 129 +- .../service/api/ui/create-selector-query.js | 2 +- .../subscribe/api/request-component-info.js | 36 +- .../api/request-component-observer.js | 155 +- src/core/view/bridge/subscribe/api/util.js | 29 + .../service/api/ui/request-component-info.js | 7 +- .../service/framework/plugins/index.js | 6 + .../service/api/ui/request-component-info.js | 4 +- 11 files changed, 3113 insertions(+), 3005 deletions(-) rename src/{platforms/h5 => core}/service/api/ui/create-intersection-observer.js (69%) create mode 100644 src/core/view/bridge/subscribe/api/util.js diff --git a/packages/uni-app-plus/dist/index.v3.js b/packages/uni-app-plus/dist/index.v3.js index a4d34241..bac6a224 100644 --- a/packages/uni-app-plus/dist/index.v3.js +++ b/packages/uni-app-plus/dist/index.v3.js @@ -7172,11 +7172,11 @@ var serviceContext = (function () { const requestComponentInfoCallbacks = createCallbacks('requestComponentInfo'); - function requestComponentInfo (pageInstance, queue, callback) { + function requestComponentInfo (pageVm, queue, callback) { UniServiceJSBridge.publishHandler('requestComponentInfo', { reqId: requestComponentInfoCallbacks.push(callback), reqs: queue - }, pageInstance.$page.id); + }, pageVm.$page.id); } function parseDataset (attr) { @@ -7245,13 +7245,12 @@ var serviceContext = (function () { }); } - function requestComponentInfo$1 (pageInstance, queue, callback) { + function requestComponentInfo$1 (pageVm, queue, callback) { // TODO 重构,逻辑不对,queue 里的每一项可能有单独的作用域查找(即 component) - const vm = pageInstance.$vm; - const dom = vm._$weex.requireModule('dom'); + const dom = pageVm._$weex.requireModule('dom'); const selectors = getSelectors(queue); let outAttrs = new Array(selectors.length); - findAttrs(selectors, vm.$el, outAttrs); + findAttrs(selectors, pageVm.$el, outAttrs); getComponentRectAll(dom, outAttrs, 0, [], (result) => { callback(result); }); @@ -8608,6 +8607,76 @@ var serviceContext = (function () { createAnimation: createAnimation }); + const createIntersectionObserverCallbacks = createCallbacks('requestComponentObserver'); + + const defaultOptions = { + thresholds: [0], + initialRatio: 0, + observeAll: false + }; + + class ServiceIntersectionObserver { + constructor (pageId, component, options) { + this.pageId = pageId; + this.component = component._$id || component; // app-plus 平台传输_$id + this.options = Object.assign({}, defaultOptions, options); + } + _makeRootMargin (margins = {}) { + this.options.rootMargin = ['top', 'right', 'bottom', 'left'].map(name => `${Number(margins[name]) || 0}px`).join( + ' '); + } + relativeTo (selector, margins) { + this.options.relativeToSelector = selector; + this._makeRootMargin(margins); + return this + } + relativeToViewport (margins) { + this.options.relativeToSelector = null; + this._makeRootMargin(margins); + return this + } + observe (selector, callback) { + if (typeof callback !== 'function') { + return + } + this.options.selector = selector; + + this.reqId = createIntersectionObserverCallbacks.push(callback); + + UniServiceJSBridge.publishHandler('requestComponentObserver', { + reqId: this.reqId, + component: this.component, + options: this.options + }, this.pageId); + } + disconnect () { + UniServiceJSBridge.publishHandler('destroyComponentObserver', { + reqId: this.reqId + }, this.pageId); + } + } + + function createIntersectionObserver (context, options) { + if (!context._isVue) { + options = context; + context = null; + } + if (context) { + return new ServiceIntersectionObserver(context.$page.id, context, options) + } + const pages = getCurrentPages(); + const len = pages.length; + if (!len) { + UniServiceJSBridge.emit('onError', 'createIntersectionObserver:fail'); + } + const page = pages[len - 1]; + return new ServiceIntersectionObserver(page.$page.id, page.$vm, options) + } + + var require_context_module_1_17 = /*#__PURE__*/Object.freeze({ + createIntersectionObserver: createIntersectionObserver + }); + class NodesRef { constructor (selectorQuery, component, selector, single) { this._selectorQuery = selectorQuery; @@ -8714,10 +8783,10 @@ var serviceContext = (function () { if (!len) { UniServiceJSBridge.emit('onError', 'createSelectorQuery:fail'); } - return new SelectorQuery(pages[len - 1]) + return new SelectorQuery(pages[len - 1].$vm) } - var require_context_module_1_17 = /*#__PURE__*/Object.freeze({ + var require_context_module_1_18 = /*#__PURE__*/Object.freeze({ createSelectorQuery: createSelectorQuery }); @@ -8733,7 +8802,7 @@ var serviceContext = (function () { callbacks$8.push(callbackId); } - var require_context_module_1_18 = /*#__PURE__*/Object.freeze({ + var require_context_module_1_19 = /*#__PURE__*/Object.freeze({ onKeyboardHeightChange: onKeyboardHeightChange }); @@ -8745,7 +8814,7 @@ var serviceContext = (function () { return {} } - var require_context_module_1_19 = /*#__PURE__*/Object.freeze({ + var require_context_module_1_20 = /*#__PURE__*/Object.freeze({ pageScrollTo: pageScrollTo$1 }); @@ -8781,7 +8850,7 @@ var serviceContext = (function () { callbacks$9.push(callbackId); } - var require_context_module_1_20 = /*#__PURE__*/Object.freeze({ + var require_context_module_1_21 = /*#__PURE__*/Object.freeze({ removeTabBarBadge: removeTabBarBadge$1, showTabBarRedDot: showTabBarRedDot$1, hideTabBarRedDot: hideTabBarRedDot$1, @@ -8804,7 +8873,7 @@ var serviceContext = (function () { callbacks$a.splice(callbacks$a.indexOf(callbackId), 1); } - var require_context_module_1_21 = /*#__PURE__*/Object.freeze({ + var require_context_module_1_22 = /*#__PURE__*/Object.freeze({ onWindowResize: onWindowResize, offWindowResize: offWindowResize }); @@ -8831,11 +8900,12 @@ var serviceContext = (function () { './network/upload-file.js': require_context_module_1_14, './storage/storage.js': require_context_module_1_15, './ui/create-animation.js': require_context_module_1_16, - './ui/create-selector-query.js': require_context_module_1_17, - './ui/keyboard.js': require_context_module_1_18, - './ui/page-scroll-to.js': require_context_module_1_19, - './ui/tab-bar.js': require_context_module_1_20, - './ui/window.js': require_context_module_1_21, + './ui/create-intersection-observer.js': require_context_module_1_17, + './ui/create-selector-query.js': require_context_module_1_18, + './ui/keyboard.js': require_context_module_1_19, + './ui/page-scroll-to.js': require_context_module_1_20, + './ui/tab-bar.js': require_context_module_1_21, + './ui/window.js': require_context_module_1_22, }; var req = function req(key) { @@ -9819,6 +9889,12 @@ var serviceContext = (function () { initData(Vue); initLifecycle(Vue); + Object.defineProperty(Vue.prototype, '$page', { + get () { + return this.$root.$scope.$page + } + }); + const oldMount = Vue.prototype.$mount; Vue.prototype.$mount = function mount (el, hydrating) { if (this.mpType === 'app') { diff --git a/packages/uni-app-plus/dist/view.umd.js b/packages/uni-app-plus/dist/view.umd.js index 42408840..a33c7400 100644 --- a/packages/uni-app-plus/dist/view.umd.js +++ b/packages/uni-app-plus/dist/view.umd.js @@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 120); +/******/ return __webpack_require__(__webpack_require__.s = 121); /******/ }) /************************************************************************/ /******/ ([ @@ -276,13 +276,13 @@ function broadcast(componentName, eventName) { } }); // EXTERNAL MODULE: ./src/core/view/mixins/listeners.js -var listeners = __webpack_require__(52); +var listeners = __webpack_require__(53); // EXTERNAL MODULE: ./src/core/view/mixins/hover.js var hover = __webpack_require__(14); // EXTERNAL MODULE: ./src/core/view/mixins/subscriber.js -var subscriber = __webpack_require__(53); +var subscriber = __webpack_require__(54); // CONCATENATED MODULE: ./src/core/view/mixins/index.js /* concated harmony reexport emitter */__webpack_require__.d(__webpack_exports__, "a", function() { return emitter; }); @@ -569,10 +569,10 @@ __webpack_require__.r(__webpack_exports__); var view_runtime_esm = __webpack_require__(5); // EXTERNAL MODULE: ./src/core/view/bridge/subscribe/api/request-component-info.js -var request_component_info = __webpack_require__(56); +var request_component_info = __webpack_require__(57); // EXTERNAL MODULE: ./src/core/view/bridge/subscribe/api/request-component-observer.js -var request_component_observer = __webpack_require__(49); +var request_component_observer = __webpack_require__(50); // CONCATENATED MODULE: ./src/core/view/bridge/subscribe/api/index.js @@ -586,7 +586,7 @@ var request_component_observer = __webpack_require__(49); var subscribe_scroll = __webpack_require__(12); // EXTERNAL MODULE: ./src/platforms/app-plus/view/bridge/subscribe/index.js -var bridge_subscribe = __webpack_require__(57); +var bridge_subscribe = __webpack_require__(58); // CONCATENATED MODULE: ./src/core/view/bridge/subscribe/index.js @@ -9100,7 +9100,7 @@ if (inBrowser) { /* harmony default export */ __webpack_exports__["a"] = (Vue); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(48))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(49))) /***/ }), /* 6 */ @@ -9881,10 +9881,10 @@ function createScrollListener(pageId, _ref2) { /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return initData; }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); -/* harmony import */ var _vdom_sync__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(60); -/* harmony import */ var _page__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43); -/* harmony import */ var _page_factory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); +/* harmony import */ var _vdom_sync__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(61); +/* harmony import */ var _page__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44); +/* harmony import */ var _page_factory__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43); var _handleData; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } @@ -10084,7 +10084,7 @@ function initData(Vue) { "use strict"; /* WEBPACK VAR INJECTION */(function(UniViewJSBridge) {/* harmony import */ var uni_mixins__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1); -/* harmony import */ var uni_helpers_hidpi__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47); +/* harmony import */ var uni_helpers_hidpi__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(48); function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } @@ -10858,12 +10858,55 @@ function processTouches(target, touches) { /* 41 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return findElm; }); +function findVmById(id, vm) { + if (id === vm._$id) { + return vm; + } + + var childVms = vm.$children; + var len = childVms.length; + + for (var i = 0; i < len; i++) { + var childVm = findVmById(id, childVms[i]); + + if (childVm) { + return childVm; + } + } +} + +function findElm(component, pageVm) { + if (!component) { + return pageVm.$el; + } + + if (true) { + if (typeof component === 'string') { + var componentVm = findVmById(component, pageVm); + + if (!componentVm) { + throw new Error("Not Found\uFF1APage[".concat(pageVm.$page.id, "][").concat(component, "]")); + } + + return componentVm.$el; + } + } + + return component.$el; +} + +/***/ }), +/* 42 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ON_PAGE_CREATE; }); var ON_PAGE_CREATE = 'onPageCreate'; /***/ }), -/* 42 */ +/* 43 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -10901,7 +10944,7 @@ function createPage(pagePath, pageId, pageQuery, pageInstance) { } /***/ }), -/* 43 */ +/* 44 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -10922,7 +10965,7 @@ function setCurrentPage(pageId, pagePath) { } /***/ }), -/* 44 */ +/* 45 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -10996,7 +11039,7 @@ Friction.prototype.configuration = function () { }; /***/ }), -/* 45 */ +/* 46 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -11229,16 +11272,16 @@ Spring.prototype.configuration = function () { }; /***/ }), -/* 46 */ +/* 47 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXTERNAL MODULE: ./src/core/view/mixins/scroller/Friction.js -var Friction = __webpack_require__(44); +var Friction = __webpack_require__(45); // EXTERNAL MODULE: ./src/core/view/mixins/scroller/Spring.js -var Spring = __webpack_require__(45); +var Spring = __webpack_require__(46); // CONCATENATED MODULE: ./src/core/view/mixins/scroller/Scroll.js @@ -11781,7 +11824,7 @@ Scroller.prototype.isScrolling = function () { }); /***/ }), -/* 47 */ +/* 48 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -11946,7 +11989,7 @@ function wrapper(canvas) { } /***/ }), -/* 48 */ +/* 49 */ /***/ (function(module, exports) { var g; @@ -11972,15 +12015,17 @@ module.exports = g; /***/ }), -/* 49 */ +/* 50 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(UniViewJSBridge) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return requestComponentObserver; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return destroyComponentObserver; }); -/* harmony import */ var intersection_observer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(64); +/* harmony import */ var intersection_observer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65); /* harmony import */ var intersection_observer__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(intersection_observer__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var uni_helpers_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); + @@ -11998,17 +12043,19 @@ function getRect(rect) { var intersectionObservers = {}; function requestComponentObserver(_ref, pageId) { var reqId = _ref.reqId, + component = _ref.component, options = _ref.options; var pages = getCurrentPages(); - var pageVm = pages.find(function (page) { + var page = pages.find(function (page) { return page.$page.id === pageId; }); - if (!pageVm) { + if (!page) { throw new Error("Not Found\uFF1APage[".concat(pageId, "]")); } - var $el = pageVm.$el; + var pageVm = page.$vm; + var $el = Object(_util__WEBPACK_IMPORTED_MODULE_2__[/* findElm */ "a"])(component, pageVm); var root = options.relativeToSelector ? $el.querySelector(options.relativeToSelector) : null; var intersectionObserver = intersectionObservers[reqId] = new IntersectionObserver(function (entries, observer) { entries.forEach(function (entrie) { @@ -12056,23 +12103,23 @@ function destroyComponentObserver(_ref2) { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) /***/ }), -/* 50 */ +/* 51 */ /***/ (function(module, exports) { module.exports = ['uni-app', 'uni-tabbar', 'uni-page', 'uni-page-head', 'uni-page-wrapper', 'uni-page-body', 'uni-page-refresh', 'uni-actionsheet', 'uni-modal', 'uni-toast', 'uni-resize-sensor', 'uni-ad', 'uni-audio', 'uni-button', 'uni-camera', 'uni-canvas', 'uni-checkbox', 'uni-checkbox-group', 'uni-cover-image', 'uni-cover-view', 'uni-form', 'uni-functional-page-navigator', 'uni-icon', 'uni-image', 'uni-input', 'uni-label', 'uni-live-player', 'uni-live-pusher', 'uni-map', 'uni-movable-area', 'uni-movable-view', 'uni-navigator', 'uni-official-account', 'uni-open-data', 'uni-picker', 'uni-picker-view', 'uni-picker-view-column', 'uni-progress', 'uni-radio', 'uni-radio-group', 'uni-rich-text', 'uni-scroll-view', 'uni-slider', 'uni-swiper', 'uni-swiper-item', 'uni-switch', 'uni-text', 'uni-textarea', 'uni-video', 'uni-view', 'uni-web-view']; /***/ }), -/* 51 */ +/* 52 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(UniViewJSBridge, global) {/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); -/* harmony import */ var uni_platform_view_index_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65); +/* harmony import */ var uni_platform_view_index_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(66); /* harmony import */ var uni_platform_view_index_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(uni_platform_view_index_css__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var uni_platform_page_factory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); -/* harmony import */ var uni_platform_view_framework_page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43); -/* harmony import */ var uni_platform_view_framework_plugins_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(61); -/* harmony import */ var _view_api_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55); +/* harmony import */ var uni_platform_page_factory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(43); +/* harmony import */ var uni_platform_view_framework_page__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44); +/* harmony import */ var uni_platform_view_framework_plugins_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(62); +/* harmony import */ var _view_api_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(56); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _view_api_js__WEBPACK_IMPORTED_MODULE_5__["a"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "b", function() { return _view_api_js__WEBPACK_IMPORTED_MODULE_5__["b"]; }); @@ -12103,13 +12150,13 @@ global.__definePage = uni_platform_page_factory__WEBPACK_IMPORTED_MODULE_2__[/* global.Vue = vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"]; vue__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].use(uni_platform_view_framework_plugins_index__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"]); -__webpack_require__(103); +__webpack_require__(104); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4), __webpack_require__(48))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4), __webpack_require__(49))) /***/ }), -/* 52 */ +/* 53 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -12223,7 +12270,7 @@ __webpack_require__(103); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) /***/ }), -/* 53 */ +/* 54 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -12273,7 +12320,7 @@ __webpack_require__(103); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) /***/ }), -/* 54 */ +/* 55 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -12316,7 +12363,7 @@ function switchTab(args) { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) /***/ }), -/* 55 */ +/* 56 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -12369,7 +12416,7 @@ function upx2px(number, newDeviceWidth) { return number < 0 ? -result : result; } // EXTERNAL MODULE: ./src/platforms/app-plus/view/api/index.js -var api = __webpack_require__(54); +var api = __webpack_require__(55); // EXTERNAL MODULE: ./src/platforms/app-plus/helpers/get-window-offset.js var get_window_offset = __webpack_require__(9); @@ -12524,13 +12571,15 @@ function canIUse(schema) { } /***/ }), -/* 56 */ +/* 57 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(UniViewJSBridge) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return requestComponentInfo; }); /* harmony import */ var uni_helpers_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7); /* harmony import */ var uni_platform_helpers_get_window_offset__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9); +/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); + @@ -12616,45 +12665,8 @@ function getNodeInfo(el, fields) { return info; } -function findElm(id, vm) { - if (id === vm._$id) { - return vm; - } - - var childVms = vm.$children; - var len = childVms.length; - - for (var i = 0; i < len; i++) { - var childVm = findElm(id, childVms[i]); - - if (childVm) { - return childVm; - } - } -} - -function getElm(component, pageVm) { - if (!component) { - return pageVm.$el; - } - - if (true) { - if (typeof component === 'string') { - var componentVm = findElm(component, pageVm); - - if (!componentVm) { - throw new Error("Not Found\uFF1APage[".concat(pageVm.$page.id, "][").concat(component, "]")); - } - - return componentVm.$el; - } - } - - return component.$el; -} - function getNodesInfo(pageVm, component, selector, single, fields) { - var $el = getElm(component, pageVm); + var $el = Object(_util__WEBPACK_IMPORTED_MODULE_2__[/* findElm */ "a"])(component, pageVm); if (single) { var node = $el && ($el.matches(selector) ? $el : $el.querySelector(selector)); @@ -12719,14 +12731,14 @@ function requestComponentInfo(_ref, pageId) { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) /***/ }), -/* 57 */ +/* 58 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(UniViewJSBridge) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return initSubscribe; }); /* harmony import */ var uni_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var uni_core_view_bridge_subscribe_scroll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12); -/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41); +/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3); @@ -12768,14 +12780,14 @@ function initSubscribe(subscribe) { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) /***/ }), -/* 58 */ +/* 59 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(UniViewJSBridge) {/* harmony import */ var uni_helpers_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7); /* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10); -/* harmony import */ var _behaviors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62); -/* harmony import */ var _wxs_component_descriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(59); +/* harmony import */ var _behaviors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63); +/* harmony import */ var _wxs_component_descriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(60); @@ -12868,7 +12880,7 @@ function pageMounted() { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) /***/ }), -/* 59 */ +/* 60 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -13083,10 +13095,10 @@ function createComponentDescriptor(vm) { return vm.$el.__wxsComponentDescriptor; } } -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(48))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(49))) /***/ }), -/* 60 */ +/* 61 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -13191,13 +13203,13 @@ function () { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4))) /***/ }), -/* 61 */ +/* 62 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXTERNAL MODULE: ./src/core/helpers/tags.js -var tags = __webpack_require__(50); +var tags = __webpack_require__(51); var tags_default = /*#__PURE__*/__webpack_require__.n(tags); // CONCATENATED MODULE: ./src/core/vue.js @@ -13224,7 +13236,7 @@ function initVue(Vue) { }; } // EXTERNAL MODULE: ./src/core/view/plugins/index.js -var plugins = __webpack_require__(58); +var plugins = __webpack_require__(59); // EXTERNAL MODULE: ./src/platforms/app-plus/view/framework/plugins/data.js var data = __webpack_require__(13); @@ -13288,7 +13300,7 @@ function initEvent(Vue) { }); /***/ }), -/* 62 */ +/* 63 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -13407,7 +13419,7 @@ function initBehaviors(options, vm) { } /***/ }), -/* 63 */ +/* 64 */ /***/ (function(module, exports) { // document.currentScript polyfill by Adam Miller @@ -13449,7 +13461,7 @@ function initBehaviors(options, vm) { /***/ }), -/* 64 */ +/* 65 */ /***/ (function(module, exports) { /** @@ -14196,7 +14208,7 @@ window.IntersectionObserverEntry = IntersectionObserverEntry; /***/ }), -/* 65 */ +/* 66 */ /***/ (function(module, exports, __webpack_require__) { // extracted by mini-css-extract-plugin @@ -14204,37 +14216,37 @@ window.IntersectionObserverEntry = IntersectionObserverEntry; /***/ }), -/* 66 */ +/* 67 */ /***/ (function(module, exports, __webpack_require__) { var map = { - "./button/index.vue": 114, - "./canvas/index.vue": 112, - "./checkbox-group/index.vue": 99, - "./checkbox/index.vue": 101, - "./form/index.vue": 102, - "./icon/index.vue": 94, - "./image/index.vue": 97, - "./input/index.vue": 105, - "./label/index.vue": 111, - "./movable-area/index.vue": 113, - "./movable-view/index.vue": 93, + "./button/index.vue": 116, + "./canvas/index.vue": 113, + "./checkbox-group/index.vue": 101, + "./checkbox/index.vue": 103, + "./form/index.vue": 95, + "./icon/index.vue": 96, + "./image/index.vue": 106, + "./input/index.vue": 107, + "./label/index.vue": 112, + "./movable-area/index.vue": 115, + "./movable-view/index.vue": 94, "./navigator/index.vue": 109, - "./picker-view-column/index.vue": 116, - "./picker-view/index.vue": 118, - "./progress/index.vue": 104, - "./radio-group/index.vue": 96, - "./radio/index.vue": 110, - "./resize-sensor/index.vue": 117, - "./rich-text/index.vue": 92, - "./scroll-view/index.vue": 107, - "./slider/index.vue": 108, - "./swiper-item/index.vue": 106, - "./swiper/index.vue": 115, - "./switch/index.vue": 95, - "./text/index.vue": 119, - "./textarea/index.vue": 100, - "./view/index.vue": 98 + "./picker-view-column/index.vue": 117, + "./picker-view/index.vue": 120, + "./progress/index.vue": 98, + "./radio-group/index.vue": 97, + "./radio/index.vue": 100, + "./resize-sensor/index.vue": 119, + "./rich-text/index.vue": 93, + "./scroll-view/index.vue": 111, + "./slider/index.vue": 110, + "./swiper-item/index.vue": 108, + "./swiper/index.vue": 114, + "./switch/index.vue": 105, + "./text/index.vue": 118, + "./textarea/index.vue": 102, + "./view/index.vue": 99 }; @@ -14256,10 +14268,10 @@ webpackContext.keys = function webpackContextKeys() { }; webpackContext.resolve = webpackContextResolve; module.exports = webpackContext; -webpackContext.id = 66; +webpackContext.id = 67; /***/ }), -/* 67 */ +/* 68 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14269,7 +14281,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 68 */ +/* 69 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14279,7 +14291,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 69 */ +/* 70 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14289,7 +14301,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 70 */ +/* 71 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14299,7 +14311,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 71 */ +/* 72 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14309,7 +14321,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 72 */ +/* 73 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14319,7 +14331,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 73 */ +/* 74 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14329,7 +14341,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 74 */ +/* 75 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14339,7 +14351,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 75 */ +/* 76 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14349,7 +14361,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 76 */ +/* 77 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14359,7 +14371,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 77 */ +/* 78 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14369,7 +14381,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 78 */ +/* 79 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14379,7 +14391,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 79 */ +/* 80 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14389,7 +14401,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 80 */ +/* 81 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14399,7 +14411,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 81 */ +/* 82 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14409,7 +14421,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 82 */ +/* 83 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14419,7 +14431,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 83 */ +/* 84 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14429,7 +14441,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 84 */ +/* 85 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14439,7 +14451,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 85 */ +/* 86 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14449,7 +14461,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 86 */ +/* 87 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14459,7 +14471,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 87 */ +/* 88 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14469,7 +14481,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 88 */ +/* 89 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14479,7 +14491,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 89 */ +/* 90 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14489,7 +14501,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 90 */ +/* 91 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -14499,7 +14511,7 @@ webpackContext.id = 66; /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_vue_cli_service_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_cli_service_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vue_cli_service_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_cli_service_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); /***/ }), -/* 91 */ +/* 92 */ /***/ (function(module, exports) { function webpackEmptyContext(req) { @@ -14510,10 +14522,10 @@ function webpackEmptyContext(req) { webpackEmptyContext.keys = function() { return []; }; webpackEmptyContext.resolve = webpackEmptyContext; module.exports = webpackEmptyContext; -webpackEmptyContext.id = 91; +webpackEmptyContext.id = 92; /***/ }), -/* 92 */ +/* 93 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -15104,7 +15116,7 @@ component.options.__file = "src/core/view/components/rich-text/index.vue" /* harmony default export */ var rich_text = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 93 */ +/* 94 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -16250,7 +16262,7 @@ function g(e, t, n) { // CONCATENATED MODULE: ./src/core/view/components/movable-view/index.vue?vue&type=script&lang=js& /* harmony default export */ var components_movable_viewvue_type_script_lang_js_ = (movable_viewvue_type_script_lang_js_); // EXTERNAL MODULE: ./src/core/view/components/movable-view/index.vue?vue&type=style&index=0&lang=css& -var movable_viewvue_type_style_index_0_lang_css_ = __webpack_require__(75); +var movable_viewvue_type_style_index_0_lang_css_ = __webpack_require__(76); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); @@ -16281,35 +16293,31 @@ component.options.__file = "src/core/view/components/movable-view/index.vue" /* harmony default export */ var movable_view = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 94 */ +/* 95 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/icon/index.vue?vue&type=template&id=6c7a7a92& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/form/index.vue?vue&type=template&id=7735a91d& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h - return _c("uni-icon", [ - _c("i", { - class: "uni-icon-" + _vm.type, - style: { "font-size": _vm._converPx(_vm.size), color: _vm.color }, - attrs: { role: "img" } - }) + return _c("uni-form", _vm._g({}, _vm.$listeners), [ + _c("span", [_vm._t("default")], 2) ]) } var staticRenderFns = [] render._withStripped = true -// CONCATENATED MODULE: ./src/core/view/components/icon/index.vue?vue&type=template&id=6c7a7a92& +// CONCATENATED MODULE: ./src/core/view/components/form/index.vue?vue&type=template&id=7735a91d& -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/icon/index.vue?vue&type=script&lang=js& -// -// -// +// EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules +var mixins = __webpack_require__(1); + +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/form/index.vue?vue&type=script&lang=js& // // // @@ -16317,47 +16325,54 @@ render._withStripped = true // // // -/* harmony default export */ var iconvue_type_script_lang_js_ = ({ - name: 'Icon', - props: { - type: { - type: String, - required: true, - default: '' + +/* harmony default export */ var formvue_type_script_lang_js_ = ({ + name: 'Form', + mixins: [mixins["c" /* listeners */]], + data: function data() { + return { + childrenList: [] + }; + }, + listeners: { + '@form-submit': '_onSubmit', + '@form-reset': '_onReset', + '@form-group-update': '_formGroupUpdateHandler' + }, + methods: { + _onSubmit: function _onSubmit($event) { + var data = {}; + this.childrenList.forEach(function (vm) { + if (vm._getFormData && vm._getFormData().key) { + data[vm._getFormData().key] = vm._getFormData().value; + } + }); + this.$trigger('submit', $event, { + value: data + }); }, - size: { - type: [String, Number], - default: 23 + _onReset: function _onReset($event) { + this.$trigger('reset', $event, {}); + this.childrenList.forEach(function (vm) { + vm._resetFormData && vm._resetFormData(); + }); }, - color: { - type: String, - default: '' - } - }, - methods: { - _converPx: function _converPx(value) { - if (/\d+[ur]px$/i.test(value)) { - value.replace(/\d+[ur]px$/i, function (text) { - return "".concat(uni.upx2px(parseFloat(text)), "px"); - }); // eslint-disable-next-line no-useless-escape - } else if (/^-?[\d\.]+$/.test(value)) { - return "".concat(value, "px"); - } - - return value || ''; + _formGroupUpdateHandler: function _formGroupUpdateHandler($event) { + if ($event.type === 'add') { + this.childrenList.push($event.vm); + } else { + var index = this.childrenList.indexOf($event.vm); + this.childrenList.splice(index, 1); + } } } }); -// CONCATENATED MODULE: ./src/core/view/components/icon/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_iconvue_type_script_lang_js_ = (iconvue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/icon/index.vue?vue&type=style&index=0&lang=css& -var iconvue_type_style_index_0_lang_css_ = __webpack_require__(71); - +// CONCATENATED MODULE: ./src/core/view/components/form/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_formvue_type_script_lang_js_ = (formvue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); -// CONCATENATED MODULE: ./src/core/view/components/icon/index.vue - +// CONCATENATED MODULE: ./src/core/view/components/form/index.vue @@ -16366,7 +16381,7 @@ var componentNormalizer = __webpack_require__(0); /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_iconvue_type_script_lang_js_, + components_formvue_type_script_lang_js_, render, staticRenderFns, false, @@ -16378,77 +16393,36 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/icon/index.vue" -/* harmony default export */ var icon = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/form/index.vue" +/* harmony default export */ var components_form = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 95 */ +/* 96 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/switch/index.vue?vue&type=template&id=04951fe6& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/icon/index.vue?vue&type=template&id=6c7a7a92& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h - return _c( - "uni-switch", - _vm._g({ on: { click: _vm._onClick } }, _vm.$listeners), - [ - _c("div", { staticClass: "uni-switch-wrapper" }, [ - _c("div", { - directives: [ - { - name: "show", - rawName: "v-show", - value: _vm.type === "switch", - expression: "type === 'switch'" - } - ], - staticClass: "uni-switch-input", - class: [_vm.switchChecked ? "uni-switch-input-checked" : ""], - style: { - backgroundColor: _vm.switchChecked ? _vm.color : "#DFDFDF", - borderColor: _vm.switchChecked ? _vm.color : "#DFDFDF" - } - }), - _c("div", { - directives: [ - { - name: "show", - rawName: "v-show", - value: _vm.type === "checkbox", - expression: "type === 'checkbox'" - } - ], - staticClass: "uni-checkbox-input", - class: [_vm.switchChecked ? "uni-checkbox-input-checked" : ""], - style: { color: _vm.color } - }) - ]) - ] - ) + return _c("uni-icon", [ + _c("i", { + class: "uni-icon-" + _vm.type, + style: { "font-size": _vm._converPx(_vm.size), color: _vm.color }, + attrs: { role: "img" } + }) + ]) } var staticRenderFns = [] render._withStripped = true -// CONCATENATED MODULE: ./src/core/view/components/switch/index.vue?vue&type=template&id=04951fe6& - -// EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules -var mixins = __webpack_require__(1); +// CONCATENATED MODULE: ./src/core/view/components/icon/index.vue?vue&type=template&id=6c7a7a92& -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/switch/index.vue?vue&type=script&lang=js& -// -// -// -// -// -// -// -// +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/icon/index.vue?vue&type=script&lang=js& // // // @@ -16459,97 +16433,46 @@ var mixins = __webpack_require__(1); // // // - -/* harmony default export */ var switchvue_type_script_lang_js_ = ({ - name: 'Switch', - mixins: [mixins["a" /* emitter */], mixins["c" /* listeners */]], +/* harmony default export */ var iconvue_type_script_lang_js_ = ({ + name: 'Icon', props: { - name: { - type: String, - default: '' - }, - checked: { - type: [Boolean, String], - default: false - }, type: { type: String, - default: 'switch' - }, - id: { - type: String, + required: true, default: '' }, - disabled: { - type: [Boolean, String], - default: false + size: { + type: [String, Number], + default: 23 }, color: { type: String, - default: '#007aff' - } - }, - data: function data() { - return { - switchChecked: this.checked - }; - }, - watch: { - checked: function checked(val) { - this.switchChecked = val; + default: '' } }, - created: function created() { - this.$dispatch('Form', 'uni-form-group-update', { - type: 'add', - vm: this - }); - }, - beforeDestroy: function beforeDestroy() { - this.$dispatch('Form', 'uni-form-group-update', { - type: 'remove', - vm: this - }); - }, - listeners: { - 'label-click': '_onClick', - '@label-click': '_onClick' - }, methods: { - _onClick: function _onClick($event) { - if (this.disabled) { - return; - } - - this.switchChecked = !this.switchChecked; - this.$trigger('change', $event, { - value: this.switchChecked - }); - }, - _resetFormData: function _resetFormData() { - this.switchChecked = false; - }, - _getFormData: function _getFormData() { - var data = {}; - - if (this.name !== '') { - data['value'] = this.switchChecked; - data['key'] = this.name; + _converPx: function _converPx(value) { + if (/\d+[ur]px$/i.test(value)) { + value.replace(/\d+[ur]px$/i, function (text) { + return "".concat(uni.upx2px(parseFloat(text)), "px"); + }); // eslint-disable-next-line no-useless-escape + } else if (/^-?[\d\.]+$/.test(value)) { + return "".concat(value, "px"); } - return data; + return value || ''; } } }); -// CONCATENATED MODULE: ./src/core/view/components/switch/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_switchvue_type_script_lang_js_ = (switchvue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/switch/index.vue?vue&type=style&index=0&lang=css& -var switchvue_type_style_index_0_lang_css_ = __webpack_require__(87); +// CONCATENATED MODULE: ./src/core/view/components/icon/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_iconvue_type_script_lang_js_ = (iconvue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/icon/index.vue?vue&type=style&index=0&lang=css& +var iconvue_type_style_index_0_lang_css_ = __webpack_require__(72); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); -// CONCATENATED MODULE: ./src/core/view/components/switch/index.vue +// CONCATENATED MODULE: ./src/core/view/components/icon/index.vue @@ -16559,7 +16482,7 @@ var componentNormalizer = __webpack_require__(0); /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_switchvue_type_script_lang_js_, + components_iconvue_type_script_lang_js_, render, staticRenderFns, false, @@ -16571,11 +16494,11 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/switch/index.vue" -/* harmony default export */ var components_switch = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/icon/index.vue" +/* harmony default export */ var icon = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 96 */ +/* 97 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -16705,7 +16628,7 @@ var mixins = __webpack_require__(1); // CONCATENATED MODULE: ./src/core/view/components/radio-group/index.vue?vue&type=script&lang=js& /* harmony default export */ var components_radio_groupvue_type_script_lang_js_ = (radio_groupvue_type_script_lang_js_); // EXTERNAL MODULE: ./src/core/view/components/radio-group/index.vue?vue&type=style&index=0&lang=css& -var radio_groupvue_type_style_index_0_lang_css_ = __webpack_require__(80); +var radio_groupvue_type_style_index_0_lang_css_ = __webpack_require__(81); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); @@ -16736,42 +16659,45 @@ component.options.__file = "src/core/view/components/radio-group/index.vue" /* harmony default export */ var radio_group = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 97 */ +/* 98 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/image/index.vue?vue&type=template&id=c7af6f90& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/progress/index.vue?vue&type=template&id=34f62046& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( - "uni-image", - _vm._g({}, _vm.$listeners), + "uni-progress", + _vm._g({ staticClass: "uni-progress" }, _vm.$listeners), [ - _c("div", { ref: "content", style: _vm.modeStyle }), - _c("img", { attrs: { src: _vm.realImagePath } }), - _vm.mode === "widthFix" - ? _c("v-uni-resize-sensor", { - ref: "sensor", - on: { resize: _vm._resize } - }) + _c("div", { staticClass: "uni-progress-bar", style: _vm.outerBarStyle }, [ + _c("div", { + staticClass: "uni-progress-inner-bar", + style: _vm.innerBarStyle + }) + ]), + _vm.showInfo + ? [ + _c("p", { staticClass: "uni-progress-info" }, [ + _vm._v(_vm._s(_vm.currentPercent) + "%") + ]) + ] : _vm._e() ], - 1 + 2 ) } var staticRenderFns = [] render._withStripped = true -// CONCATENATED MODULE: ./src/core/view/components/image/index.vue?vue&type=template&id=c7af6f90& - -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/image/index.vue?vue&type=script&lang=js& -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } +// CONCATENATED MODULE: ./src/core/view/components/progress/index.vue?vue&type=template&id=34f62046& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/progress/index.vue?vue&type=script&lang=js& // // // @@ -16784,189 +16710,128 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterat // // // -/* harmony default export */ var imagevue_type_script_lang_js_ = ({ - name: 'Image', +// +// +// +// +var VALUES = { + activeColor: '#007AFF', + backgroundColor: '#EBEBEB', + activeMode: 'backwards' +}; +/* harmony default export */ var progressvue_type_script_lang_js_ = ({ + name: 'Progress', props: { - src: { - type: String, - default: '' - }, - mode: { - type: String, - default: 'scaleToFill' + percent: { + type: [Number, String], + default: 0, + validator: function validator(value) { + return !isNaN(parseFloat(value, 10)); + } }, - // TODO 懒加载 - lazyLoad: { + showInfo: { type: [Boolean, String], default: false - } - }, - data: function data() { - return { - originalWidth: 0, - originalHeight: 0, - availHeight: '', - sizeFixed: false + }, + strokeWidth: { + type: [Number, String], + default: 6, + validator: function validator(value) { + return !isNaN(parseFloat(value, 10)); + } + }, + color: { + type: String, + default: VALUES.activeColor + }, + activeColor: { + type: String, + default: VALUES.activeColor + }, + backgroundColor: { + type: String, + default: VALUES.backgroundColor + }, + active: { + type: [Boolean, String], + default: false + }, + activeMode: { + type: String, + default: VALUES.activeMode + } + }, + data: function data() { + return { + currentPercent: 0, + strokeTimer: 0, + lastPercent: 0 }; }, computed: { - ratio: function ratio() { - return this.originalWidth && this.originalHeight ? this.originalWidth / this.originalHeight : 0; - }, - realImagePath: function realImagePath() { - return this.src && this.$getRealPath(this.src); + outerBarStyle: function outerBarStyle() { + return "background-color: ".concat(this.backgroundColor, "; height: ").concat(this.strokeWidth, "px;"); }, - modeStyle: function modeStyle() { - var size = 'auto'; - var position = ''; - var repeat = 'no-repeat'; - - switch (this.mode) { - case 'aspectFit': - size = 'contain'; - position = 'center center'; - break; - - case 'aspectFill': - size = 'cover'; - position = 'center center'; - break; - - case 'widthFix': - size = '100% 100%'; - break; - - case 'top': - position = 'center top'; - break; - - case 'bottom': - position = 'center bottom'; - break; - - case 'center': - position = 'center center'; - break; - - case 'left': - position = 'left center'; - break; - - case 'right': - position = 'right center'; - break; - - case 'top left': - position = 'left top'; - break; - - case 'top right': - position = 'right top'; - break; - - case 'bottom left': - position = 'left bottom'; - break; - - case 'bottom right': - position = 'right bottom'; - break; + innerBarStyle: function innerBarStyle() { + // 兼容下不推荐的属性,activeColor 优先级高于 color。 + var backgroundColor = ''; - default: - size = '100% 100%'; - position = '0% 0%'; - break; + if (this.color !== VALUES.activeColor && this.activeColor === VALUES.activeColor) { + backgroundColor = this.color; + } else { + backgroundColor = this.activeColor; } - return "background-position:".concat(position, ";background-size:").concat(size, ";background-repeat:").concat(repeat, ";"); + return "width: ".concat(this.currentPercent, "%;background-color: ").concat(backgroundColor); + }, + realPercent: function realPercent() { + // 确保最终计算时使用的是 Number 类型的值,并且在有效范围内。 + var realValue = parseFloat(this.percent, 10); + realValue < 0 && (realValue = 0); + realValue > 100 && (realValue = 100); + return realValue; } }, watch: { - src: function src(newValue, oldValue) { - this._loadImage(); - }, - mode: function mode(newValue, oldValue) { - if (oldValue === 'widthFix') { - this.$el.style.height = this.availHeight; - this.sizeFixed = false; - } + realPercent: function realPercent(newValue, oldValue) { + this.strokeTimer && clearInterval(this.strokeTimer); + this.lastPercent = oldValue || 0; - if (newValue === 'widthFix' && this.ratio) { - this._fixSize(); - } + this._activeAnimation(); } }, - mounted: function mounted() { - this.availHeight = this.$el.style.height || ''; - - this._loadImage(); + created: function created() { + this._activeAnimation(); }, methods: { - _resize: function _resize() { - if (this.mode === 'widthFix' && !this.sizeFixed) { - this._fixSize(); - } - }, - _fixSize: function _fixSize() { - var elWidth = this._getWidth(); - - if (elWidth) { - var height = elWidth / this.ratio; // fix: 解决 Chrome 浏览器上某些情况下导致 1px 缝隙的问题 - - if ((typeof navigator === "undefined" ? "undefined" : _typeof(navigator)) && navigator.vendor === 'Google Inc.' && height > 10) { - height = Math.round(height / 2) * 2; - } + _activeAnimation: function _activeAnimation() { + var _this = this; - this.$el.style.height = height + 'px'; - this.sizeFixed = true; + if (this.active) { + this.currentPercent = this.activeMode === VALUES.activeMode ? 0 : this.lastPercent; + this.strokeTimer = setInterval(function () { + if (_this.currentPercent + 1 > _this.realPercent) { + _this.currentPercent = _this.realPercent; + _this.strokeTimer && clearInterval(_this.strokeTimer); + } else { + _this.currentPercent += 1; + } + }, 30); + } else { + this.currentPercent = this.realPercent; } - }, - _loadImage: function _loadImage() { - this.$refs.content.style.backgroundImage = this.src ? "url(".concat(this.realImagePath, ")") : 'none'; - - var _self = this; - - var img = new Image(); - - img.onload = function ($event) { - _self.originalWidth = this.width; - _self.originalHeight = this.height; - - if (_self.mode === 'widthFix') { - _self._fixSize(); - } - - _self.$trigger('load', $event, { - width: this.width, - height: this.height - }); - }; - - img.onerror = function ($event) { - _self.$trigger('error', $event, { - errMsg: "GET ".concat(_self.src, " 404 (Not Found)") - }); - }; - - img.src = this.realImagePath; - }, - _getWidth: function _getWidth() { - var computedStyle = window.getComputedStyle(this.$el); - var borderWidth = (parseFloat(computedStyle.borderLeftWidth, 10) || 0) + (parseFloat(computedStyle.borderRightWidth, 10) || 0); - var paddingWidth = (parseFloat(computedStyle.paddingLeft, 10) || 0) + (parseFloat(computedStyle.paddingRight, 10) || 0); - return this.$el.offsetWidth - borderWidth - paddingWidth; } } }); -// CONCATENATED MODULE: ./src/core/view/components/image/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_imagevue_type_script_lang_js_ = (imagevue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/image/index.vue?vue&type=style&index=0&lang=css& -var imagevue_type_style_index_0_lang_css_ = __webpack_require__(72); +// CONCATENATED MODULE: ./src/core/view/components/progress/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_progressvue_type_script_lang_js_ = (progressvue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/progress/index.vue?vue&type=style&index=0&lang=css& +var progressvue_type_style_index_0_lang_css_ = __webpack_require__(80); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); -// CONCATENATED MODULE: ./src/core/view/components/image/index.vue +// CONCATENATED MODULE: ./src/core/view/components/progress/index.vue @@ -16976,7 +16841,7 @@ var componentNormalizer = __webpack_require__(0); /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_imagevue_type_script_lang_js_, + components_progressvue_type_script_lang_js_, render, staticRenderFns, false, @@ -16988,11 +16853,11 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/image/index.vue" -/* harmony default export */ var components_image = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/progress/index.vue" +/* harmony default export */ var progress = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 98 */ +/* 99 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -17070,7 +16935,7 @@ var hover = __webpack_require__(14); // CONCATENATED MODULE: ./src/core/view/components/view/index.vue?vue&type=script&lang=js& /* harmony default export */ var components_viewvue_type_script_lang_js_ = (viewvue_type_script_lang_js_); // EXTERNAL MODULE: ./src/core/view/components/view/index.vue?vue&type=style&index=0&lang=css& -var viewvue_type_style_index_0_lang_css_ = __webpack_require__(90); +var viewvue_type_style_index_0_lang_css_ = __webpack_require__(91); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); @@ -17101,34 +16966,54 @@ component.options.__file = "src/core/view/components/view/index.vue" /* harmony default export */ var view = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 99 */ +/* 100 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/checkbox-group/index.vue?vue&type=template&id=37cde58e& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/radio/index.vue?vue&type=template&id=4b562a50& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( - "uni-checkbox-group", - _vm._g({}, _vm.$listeners), - [_vm._t("default")], - 2 + "uni-radio", + _vm._g({ on: { click: _vm._onClick } }, _vm.$listeners), + [ + _c( + "div", + { staticClass: "uni-radio-wrapper" }, + [ + _c("div", { + staticClass: "uni-radio-input", + class: _vm.radioChecked ? "uni-radio-input-checked" : "", + style: _vm.radioChecked ? _vm.checkedStyle : "" + }), + _vm._t("default") + ], + 2 + ) + ] ) } var staticRenderFns = [] render._withStripped = true -// CONCATENATED MODULE: ./src/core/view/components/checkbox-group/index.vue?vue&type=template&id=37cde58e& +// CONCATENATED MODULE: ./src/core/view/components/radio/index.vue?vue&type=template&id=4b562a50& // EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules var mixins = __webpack_require__(1); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/checkbox-group/index.vue?vue&type=script&lang=js& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/radio/index.vue?vue&type=script&lang=js& +// +// +// +// +// +// +// // // // @@ -17136,8 +17021,159 @@ var mixins = __webpack_require__(1); // // -/* harmony default export */ var checkbox_groupvue_type_script_lang_js_ = ({ - name: 'CheckboxGroup', +/* harmony default export */ var radiovue_type_script_lang_js_ = ({ + name: 'Radio', + mixins: [mixins["a" /* emitter */], mixins["c" /* listeners */]], + props: { + checked: { + type: [Boolean, String], + default: false + }, + id: { + type: String, + default: '' + }, + disabled: { + type: [Boolean, String], + default: false + }, + color: { + type: String, + default: '#007AFF' + }, + value: { + type: String, + default: '' + } + }, + data: function data() { + return { + radioChecked: this.checked, + radioValue: this.value + }; + }, + computed: { + checkedStyle: function checkedStyle() { + return "background-color: ".concat(this.color, ";border-color: ").concat(this.color, ";"); + } + }, + watch: { + checked: function checked(val) { + this.radioChecked = val; + }, + value: function value(val) { + this.radioValue = val; + } + }, + listeners: { + 'label-click': '_onClick', + '@label-click': '_onClick' + }, + created: function created() { + this.$dispatch('RadioGroup', 'uni-radio-group-update', { + type: 'add', + vm: this + }); + this.$dispatch('Form', 'uni-form-group-update', { + type: 'add', + vm: this + }); + }, + beforeDestroy: function beforeDestroy() { + this.$dispatch('RadioGroup', 'uni-radio-group-update', { + type: 'remove', + vm: this + }); + this.$dispatch('Form', 'uni-form-group-update', { + type: 'remove', + vm: this + }); + }, + methods: { + _onClick: function _onClick($event) { + if (this.disabled || this.radioChecked) { + return; + } + + this.radioChecked = true; + this.$dispatch('RadioGroup', 'uni-radio-change', $event, this); + }, + _resetFormData: function _resetFormData() { + this.radioChecked = this.min; + } + } +}); +// CONCATENATED MODULE: ./src/core/view/components/radio/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_radiovue_type_script_lang_js_ = (radiovue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/radio/index.vue?vue&type=style&index=0&lang=css& +var radiovue_type_style_index_0_lang_css_ = __webpack_require__(82); + +// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js +var componentNormalizer = __webpack_require__(0); + +// CONCATENATED MODULE: ./src/core/view/components/radio/index.vue + + + + + + +/* normalize component */ + +var component = Object(componentNormalizer["a" /* default */])( + components_radiovue_type_script_lang_js_, + render, + staticRenderFns, + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "src/core/view/components/radio/index.vue" +/* harmony default export */ var components_radio = __webpack_exports__["default"] = (component.exports); + +/***/ }), +/* 101 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); + +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/checkbox-group/index.vue?vue&type=template&id=37cde58e& +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "uni-checkbox-group", + _vm._g({}, _vm.$listeners), + [_vm._t("default")], + 2 + ) +} +var staticRenderFns = [] +render._withStripped = true + + +// CONCATENATED MODULE: ./src/core/view/components/checkbox-group/index.vue?vue&type=template&id=37cde58e& + +// EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules +var mixins = __webpack_require__(1); + +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/checkbox-group/index.vue?vue&type=script&lang=js& +// +// +// +// +// +// + +/* harmony default export */ var checkbox_groupvue_type_script_lang_js_ = ({ + name: 'CheckboxGroup', mixins: [mixins["a" /* emitter */], mixins["c" /* listeners */]], props: { name: { @@ -17207,7 +17243,7 @@ var mixins = __webpack_require__(1); // CONCATENATED MODULE: ./src/core/view/components/checkbox-group/index.vue?vue&type=script&lang=js& /* harmony default export */ var components_checkbox_groupvue_type_script_lang_js_ = (checkbox_groupvue_type_script_lang_js_); // EXTERNAL MODULE: ./src/core/view/components/checkbox-group/index.vue?vue&type=style&index=0&lang=css& -var checkbox_groupvue_type_style_index_0_lang_css_ = __webpack_require__(69); +var checkbox_groupvue_type_style_index_0_lang_css_ = __webpack_require__(70); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); @@ -17238,7 +17274,7 @@ component.options.__file = "src/core/view/components/checkbox-group/index.vue" /* harmony default export */ var checkbox_group = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 100 */ +/* 102 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -17657,7 +17693,7 @@ var mixins = __webpack_require__(1); // CONCATENATED MODULE: ./src/core/view/components/textarea/index.vue?vue&type=script&lang=js& /* harmony default export */ var components_textareavue_type_script_lang_js_ = (textareavue_type_script_lang_js_); // EXTERNAL MODULE: ./src/core/view/components/textarea/index.vue?vue&type=style&index=0&lang=css& -var textareavue_type_style_index_0_lang_css_ = __webpack_require__(89); +var textareavue_type_style_index_0_lang_css_ = __webpack_require__(90); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); @@ -17688,7 +17724,7 @@ component.options.__file = "src/core/view/components/textarea/index.vue" /* harmony default export */ var components_textarea = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 101 */ +/* 103 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -17823,7 +17859,7 @@ var mixins = __webpack_require__(1); // CONCATENATED MODULE: ./src/core/view/components/checkbox/index.vue?vue&type=script&lang=js& /* harmony default export */ var components_checkboxvue_type_script_lang_js_ = (checkboxvue_type_script_lang_js_); // EXTERNAL MODULE: ./src/core/view/components/checkbox/index.vue?vue&type=style&index=0&lang=css& -var checkboxvue_type_style_index_0_lang_css_ = __webpack_require__(70); +var checkboxvue_type_style_index_0_lang_css_ = __webpack_require__(71); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); @@ -17854,151 +17890,47 @@ component.options.__file = "src/core/view/components/checkbox/index.vue" /* harmony default export */ var components_checkbox = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 102 */ +/* 104 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/form/index.vue?vue&type=template&id=7735a91d& -var render = function() { - var _vm = this - var _h = _vm.$createElement - var _c = _vm._self._c || _h - return _c("uni-form", _vm._g({}, _vm.$listeners), [ - _c("span", [_vm._t("default")], 2) - ]) -} -var staticRenderFns = [] -render._withStripped = true - +// EXTERNAL MODULE: ./packages/uni-app-plus/dist/view.runtime.esm.js +var view_runtime_esm = __webpack_require__(5); -// CONCATENATED MODULE: ./src/core/view/components/form/index.vue?vue&type=template&id=7735a91d& +// CONCATENATED MODULE: ./src/core/helpers/get-real-route.js +function getRealRoute(fromRoute, toRoute) { + if (!toRoute) { + toRoute = fromRoute; -// EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules -var mixins = __webpack_require__(1); + if (toRoute.indexOf('/') === 0) { + return toRoute; + } -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/form/index.vue?vue&type=script&lang=js& -// -// -// -// -// -// -// + var pages = getCurrentPages(); -/* harmony default export */ var formvue_type_script_lang_js_ = ({ - name: 'Form', - mixins: [mixins["c" /* listeners */]], - data: function data() { - return { - childrenList: [] - }; - }, - listeners: { - '@form-submit': '_onSubmit', - '@form-reset': '_onReset', - '@form-group-update': '_formGroupUpdateHandler' - }, - methods: { - _onSubmit: function _onSubmit($event) { - var data = {}; - this.childrenList.forEach(function (vm) { - if (vm._getFormData && vm._getFormData().key) { - data[vm._getFormData().key] = vm._getFormData().value; - } - }); - this.$trigger('submit', $event, { - value: data - }); - }, - _onReset: function _onReset($event) { - this.$trigger('reset', $event, {}); - this.childrenList.forEach(function (vm) { - vm._resetFormData && vm._resetFormData(); - }); - }, - _formGroupUpdateHandler: function _formGroupUpdateHandler($event) { - if ($event.type === 'add') { - this.childrenList.push($event.vm); - } else { - var index = this.childrenList.indexOf($event.vm); - this.childrenList.splice(index, 1); - } + if (pages.length) { + fromRoute = pages[pages.length - 1].$page.route; + } else { + fromRoute = ''; + } + } else { + if (toRoute.indexOf('/') === 0) { + return toRoute; } } -}); -// CONCATENATED MODULE: ./src/core/view/components/form/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_formvue_type_script_lang_js_ = (formvue_type_script_lang_js_); -// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js -var componentNormalizer = __webpack_require__(0); - -// CONCATENATED MODULE: ./src/core/view/components/form/index.vue - - + if (toRoute.indexOf('./') === 0) { + return getRealRoute(fromRoute, toRoute.substr(2)); + } + var toRouteArray = toRoute.split('/'); + var toRouteLength = toRouteArray.length; + var i = 0; -/* normalize component */ - -var component = Object(componentNormalizer["a" /* default */])( - components_formvue_type_script_lang_js_, - render, - staticRenderFns, - false, - null, - null, - null - -) - -/* hot reload */ -if (false) { var api; } -component.options.__file = "src/core/view/components/form/index.vue" -/* harmony default export */ var components_form = __webpack_exports__["default"] = (component.exports); - -/***/ }), -/* 103 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); - -// EXTERNAL MODULE: ./packages/uni-app-plus/dist/view.runtime.esm.js -var view_runtime_esm = __webpack_require__(5); - -// CONCATENATED MODULE: ./src/core/helpers/get-real-route.js -function getRealRoute(fromRoute, toRoute) { - if (!toRoute) { - toRoute = fromRoute; - - if (toRoute.indexOf('/') === 0) { - return toRoute; - } - - var pages = getCurrentPages(); - - if (pages.length) { - fromRoute = pages[pages.length - 1].$page.route; - } else { - fromRoute = ''; - } - } else { - if (toRoute.indexOf('/') === 0) { - return toRoute; - } - } - - if (toRoute.indexOf('./') === 0) { - return getRealRoute(fromRoute, toRoute.substr(2)); - } - - var toRouteArray = toRoute.split('/'); - var toRouteLength = toRouteArray.length; - var i = 0; - - for (; i < toRouteLength && toRouteArray[i] === '..'; i++) {// noop - } + for (; i < toRouteLength && toRouteArray[i] === '..'; i++) {// noop + } toRouteArray.splice(0, i); toRoute = toRouteArray.join('/'); @@ -18183,7 +18115,7 @@ function startAnimation(context) { var requireComponents = [// baseComponents -__webpack_require__(66), __webpack_require__(91)]; +__webpack_require__(67), __webpack_require__(92)]; requireComponents.forEach(function (components, index) { components.keys().forEach(function (fileName) { // 获取组件配置 @@ -18199,45 +18131,65 @@ requireComponents.forEach(function (components, index) { }); /***/ }), -/* 104 */ +/* 105 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/progress/index.vue?vue&type=template&id=34f62046& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/switch/index.vue?vue&type=template&id=04951fe6& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( - "uni-progress", - _vm._g({ staticClass: "uni-progress" }, _vm.$listeners), + "uni-switch", + _vm._g({ on: { click: _vm._onClick } }, _vm.$listeners), [ - _c("div", { staticClass: "uni-progress-bar", style: _vm.outerBarStyle }, [ + _c("div", { staticClass: "uni-switch-wrapper" }, [ _c("div", { - staticClass: "uni-progress-inner-bar", - style: _vm.innerBarStyle + directives: [ + { + name: "show", + rawName: "v-show", + value: _vm.type === "switch", + expression: "type === 'switch'" + } + ], + staticClass: "uni-switch-input", + class: [_vm.switchChecked ? "uni-switch-input-checked" : ""], + style: { + backgroundColor: _vm.switchChecked ? _vm.color : "#DFDFDF", + borderColor: _vm.switchChecked ? _vm.color : "#DFDFDF" + } + }), + _c("div", { + directives: [ + { + name: "show", + rawName: "v-show", + value: _vm.type === "checkbox", + expression: "type === 'checkbox'" + } + ], + staticClass: "uni-checkbox-input", + class: [_vm.switchChecked ? "uni-checkbox-input-checked" : ""], + style: { color: _vm.color } }) - ]), - _vm.showInfo - ? [ - _c("p", { staticClass: "uni-progress-info" }, [ - _vm._v(_vm._s(_vm.currentPercent) + "%") - ]) - ] - : _vm._e() - ], - 2 + ]) + ] ) } var staticRenderFns = [] render._withStripped = true -// CONCATENATED MODULE: ./src/core/view/components/progress/index.vue?vue&type=template&id=34f62046& +// CONCATENATED MODULE: ./src/core/view/components/switch/index.vue?vue&type=template&id=04951fe6& -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/progress/index.vue?vue&type=script&lang=js& +// EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules +var mixins = __webpack_require__(1); + +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/switch/index.vue?vue&type=script&lang=js& // // // @@ -18254,124 +18206,99 @@ render._withStripped = true // // // -var VALUES = { - activeColor: '#007AFF', - backgroundColor: '#EBEBEB', - activeMode: 'backwards' -}; -/* harmony default export */ var progressvue_type_script_lang_js_ = ({ - name: 'Progress', +// +// + +/* harmony default export */ var switchvue_type_script_lang_js_ = ({ + name: 'Switch', + mixins: [mixins["a" /* emitter */], mixins["c" /* listeners */]], props: { - percent: { - type: [Number, String], - default: 0, - validator: function validator(value) { - return !isNaN(parseFloat(value, 10)); - } + name: { + type: String, + default: '' }, - showInfo: { + checked: { type: [Boolean, String], default: false }, - strokeWidth: { - type: [Number, String], - default: 6, - validator: function validator(value) { - return !isNaN(parseFloat(value, 10)); - } - }, - color: { - type: String, - default: VALUES.activeColor - }, - activeColor: { + type: { type: String, - default: VALUES.activeColor + default: 'switch' }, - backgroundColor: { + id: { type: String, - default: VALUES.backgroundColor + default: '' }, - active: { + disabled: { type: [Boolean, String], default: false }, - activeMode: { + color: { type: String, - default: VALUES.activeMode + default: '#007aff' } }, data: function data() { return { - currentPercent: 0, - strokeTimer: 0, - lastPercent: 0 + switchChecked: this.checked }; }, - computed: { - outerBarStyle: function outerBarStyle() { - return "background-color: ".concat(this.backgroundColor, "; height: ").concat(this.strokeWidth, "px;"); - }, - innerBarStyle: function innerBarStyle() { - // 兼容下不推荐的属性,activeColor 优先级高于 color。 - var backgroundColor = ''; - - if (this.color !== VALUES.activeColor && this.activeColor === VALUES.activeColor) { - backgroundColor = this.color; - } else { - backgroundColor = this.activeColor; - } - - return "width: ".concat(this.currentPercent, "%;background-color: ").concat(backgroundColor); - }, - realPercent: function realPercent() { - // 确保最终计算时使用的是 Number 类型的值,并且在有效范围内。 - var realValue = parseFloat(this.percent, 10); - realValue < 0 && (realValue = 0); - realValue > 100 && (realValue = 100); - return realValue; - } - }, watch: { - realPercent: function realPercent(newValue, oldValue) { - this.strokeTimer && clearInterval(this.strokeTimer); - this.lastPercent = oldValue || 0; - - this._activeAnimation(); + checked: function checked(val) { + this.switchChecked = val; } }, created: function created() { - this._activeAnimation(); + this.$dispatch('Form', 'uni-form-group-update', { + type: 'add', + vm: this + }); + }, + beforeDestroy: function beforeDestroy() { + this.$dispatch('Form', 'uni-form-group-update', { + type: 'remove', + vm: this + }); + }, + listeners: { + 'label-click': '_onClick', + '@label-click': '_onClick' }, methods: { - _activeAnimation: function _activeAnimation() { - var _this = this; + _onClick: function _onClick($event) { + if (this.disabled) { + return; + } - if (this.active) { - this.currentPercent = this.activeMode === VALUES.activeMode ? 0 : this.lastPercent; - this.strokeTimer = setInterval(function () { - if (_this.currentPercent + 1 > _this.realPercent) { - _this.currentPercent = _this.realPercent; - _this.strokeTimer && clearInterval(_this.strokeTimer); - } else { - _this.currentPercent += 1; - } - }, 30); - } else { - this.currentPercent = this.realPercent; + this.switchChecked = !this.switchChecked; + this.$trigger('change', $event, { + value: this.switchChecked + }); + }, + _resetFormData: function _resetFormData() { + this.switchChecked = false; + }, + _getFormData: function _getFormData() { + var data = {}; + + if (this.name !== '') { + data['value'] = this.switchChecked; + data['key'] = this.name; } + + return data; } } }); -// CONCATENATED MODULE: ./src/core/view/components/progress/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_progressvue_type_script_lang_js_ = (progressvue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/progress/index.vue?vue&type=style&index=0&lang=css& -var progressvue_type_style_index_0_lang_css_ = __webpack_require__(79); +// CONCATENATED MODULE: ./src/core/view/components/switch/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_switchvue_type_script_lang_js_ = (switchvue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/switch/index.vue?vue&type=style&index=0&lang=css& +var switchvue_type_style_index_0_lang_css_ = __webpack_require__(88); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); -// CONCATENATED MODULE: ./src/core/view/components/progress/index.vue +// CONCATENATED MODULE: ./src/core/view/components/switch/index.vue @@ -18381,7 +18308,7 @@ var componentNormalizer = __webpack_require__(0); /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_progressvue_type_script_lang_js_, + components_switchvue_type_script_lang_js_, render, staticRenderFns, false, @@ -18393,213 +18320,46 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/progress/index.vue" -/* harmony default export */ var progress = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/switch/index.vue" +/* harmony default export */ var components_switch = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 105 */ +/* 106 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/input/index.vue?vue&type=template&id=c65e1032& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/image/index.vue?vue&type=template&id=c7af6f90& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( - "uni-input", - _vm._g( - { - on: { - change: function($event) { - $event.stopPropagation() - } - } - }, - _vm.$listeners - ), + "uni-image", + _vm._g({}, _vm.$listeners), [ - _c("div", { ref: "wrapper", staticClass: "uni-input-wrapper" }, [ - _c( - "div", - { - directives: [ - { - name: "show", - rawName: "v-show", - value: !(_vm.composing || _vm.inputValue.length), - expression: "!(composing || inputValue.length)" - } - ], - ref: "placeholder", - staticClass: "uni-input-placeholder", - class: _vm.placeholderClass, - style: _vm.placeholderStyle - }, - [_vm._v(_vm._s(_vm.placeholder))] - ), - _vm.inputType === "checkbox" - ? _c("input", { - directives: [ - { - name: "model", - rawName: "v-model", - value: _vm.inputValue, - expression: "inputValue" - } - ], - ref: "input", - staticClass: "uni-input-input", - attrs: { - disabled: _vm.disabled, - maxlength: _vm.maxlength, - step: _vm.step, - autocomplete: "off", - type: "checkbox" - }, - domProps: { - checked: Array.isArray(_vm.inputValue) - ? _vm._i(_vm.inputValue, null) > -1 - : _vm.inputValue - }, - on: { - focus: _vm._onFocus, - blur: _vm._onBlur, - input: function($event) { - $event.stopPropagation() - return _vm._onInput($event) - }, - compositionstart: _vm._onComposition, - compositionend: _vm._onComposition, - keyup: function($event) { - $event.stopPropagation() - return _vm._onKeyup($event) - }, - change: function($event) { - var $$a = _vm.inputValue, - $$el = $event.target, - $$c = $$el.checked ? true : false - if (Array.isArray($$a)) { - var $$v = null, - $$i = _vm._i($$a, $$v) - if ($$el.checked) { - $$i < 0 && (_vm.inputValue = $$a.concat([$$v])) - } else { - $$i > -1 && - (_vm.inputValue = $$a - .slice(0, $$i) - .concat($$a.slice($$i + 1))) - } - } else { - _vm.inputValue = $$c - } - } - } - }) - : _vm.inputType === "radio" - ? _c("input", { - directives: [ - { - name: "model", - rawName: "v-model", - value: _vm.inputValue, - expression: "inputValue" - } - ], - ref: "input", - staticClass: "uni-input-input", - attrs: { - disabled: _vm.disabled, - maxlength: _vm.maxlength, - step: _vm.step, - autocomplete: "off", - type: "radio" - }, - domProps: { checked: _vm._q(_vm.inputValue, null) }, - on: { - focus: _vm._onFocus, - blur: _vm._onBlur, - input: function($event) { - $event.stopPropagation() - return _vm._onInput($event) - }, - compositionstart: _vm._onComposition, - compositionend: _vm._onComposition, - keyup: function($event) { - $event.stopPropagation() - return _vm._onKeyup($event) - }, - change: function($event) { - _vm.inputValue = null - } - } - }) - : _c("input", { - directives: [ - { - name: "model", - rawName: "v-model", - value: _vm.inputValue, - expression: "inputValue" - } - ], - ref: "input", - staticClass: "uni-input-input", - attrs: { - disabled: _vm.disabled, - maxlength: _vm.maxlength, - step: _vm.step, - autocomplete: "off", - type: _vm.inputType - }, - domProps: { value: _vm.inputValue }, - on: { - focus: _vm._onFocus, - blur: _vm._onBlur, - input: [ - function($event) { - if ($event.target.composing) { - return - } - _vm.inputValue = $event.target.value - }, - function($event) { - $event.stopPropagation() - return _vm._onInput($event) - } - ], - compositionstart: _vm._onComposition, - compositionend: _vm._onComposition, - keyup: function($event) { - $event.stopPropagation() - return _vm._onKeyup($event) - } - } - }) - ]) - ] + _c("div", { ref: "content", style: _vm.modeStyle }), + _c("img", { attrs: { src: _vm.realImagePath } }), + _vm.mode === "widthFix" + ? _c("v-uni-resize-sensor", { + ref: "sensor", + on: { resize: _vm._resize } + }) + : _vm._e() + ], + 1 ) } var staticRenderFns = [] render._withStripped = true -// CONCATENATED MODULE: ./src/core/view/components/input/index.vue?vue&type=template&id=c65e1032& +// CONCATENATED MODULE: ./src/core/view/components/image/index.vue?vue&type=template&id=c7af6f90& -// EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules -var mixins = __webpack_require__(1); +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/image/index.vue?vue&type=script&lang=js& +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/input/index.vue?vue&type=script&lang=js& -// -// -// -// -// -// -// -// // // // @@ -18612,270 +18372,199 @@ var mixins = __webpack_require__(1); // // // -// -// -// -// -// -// -// -// -// -// -// -// -// - -var INPUT_TYPES = ['text', 'number', 'idcard', 'digit', 'password']; -var NUMBER_TYPES = ['number', 'digit']; -/* harmony default export */ var inputvue_type_script_lang_js_ = ({ - name: 'Input', - mixins: [mixins["a" /* emitter */]], - model: { - prop: 'value', - event: 'update:value' - }, +/* harmony default export */ var imagevue_type_script_lang_js_ = ({ + name: 'Image', props: { - name: { + src: { type: String, default: '' }, - value: { - type: [String, Number], - default: '' - }, - type: { + mode: { type: String, - default: 'text' + default: 'scaleToFill' }, - password: { + // TODO 懒加载 + lazyLoad: { type: [Boolean, String], default: false - }, - placeholder: { - type: String, - default: '' - }, - placeholderStyle: { - type: String, - default: '' - }, - placeholderClass: { - type: String, - default: '' - }, - disabled: { - type: [Boolean, String], - default: false - }, - maxlength: { - type: [Number, String], - default: 140 - }, - focus: { - type: [Boolean, String], - default: false - }, - confirmType: { - type: String, - default: 'done' } }, data: function data() { return { - inputValue: this.value + '', - composing: false, - wrapperHeight: 0, - cachedValue: '' + originalWidth: 0, + originalHeight: 0, + availHeight: '', + sizeFixed: false }; }, computed: { - inputType: function inputType() { - var type = ''; + ratio: function ratio() { + return this.originalWidth && this.originalHeight ? this.originalWidth / this.originalHeight : 0; + }, + realImagePath: function realImagePath() { + return this.src && this.$getRealPath(this.src); + }, + modeStyle: function modeStyle() { + var size = 'auto'; + var position = ''; + var repeat = 'no-repeat'; - switch (this.type) { - case 'text': - this.confirmType === 'search' && (type = 'search'); + switch (this.mode) { + case 'aspectFit': + size = 'contain'; + position = 'center center'; break; - case 'idcard': - // TODO 可能要根据不同平台进行区分处理 - type = 'text'; + case 'aspectFill': + size = 'cover'; + position = 'center center'; break; - case 'digit': - type = 'number'; + case 'widthFix': + size = '100% 100%'; + break; + + case 'top': + position = 'center top'; + break; + + case 'bottom': + position = 'center bottom'; + break; + + case 'center': + position = 'center center'; + break; + + case 'left': + position = 'left center'; + break; + + case 'right': + position = 'right center'; + break; + + case 'top left': + position = 'left top'; + break; + + case 'top right': + position = 'right top'; + break; + + case 'bottom left': + position = 'left bottom'; + break; + + case 'bottom right': + position = 'right bottom'; break; default: - type = ~INPUT_TYPES.indexOf(this.type) ? this.type : 'text'; + size = '100% 100%'; + position = '0% 0%'; break; } - return this.password ? 'password' : type; - }, - step: function step() { - // 处理部分设备中无法输入小数点的问题 - return ~NUMBER_TYPES.indexOf(this.type) ? '0.000000000000000001' : ''; + return "background-position:".concat(position, ";background-size:").concat(size, ";background-repeat:").concat(repeat, ";"); } }, watch: { - focus: function focus(value) { - value && this._focusInput(); - }, - value: function value(_value) { - this.inputValue = _value + ''; - }, - inputValue: function inputValue(value) { - this.$emit('update:value', value); + src: function src(newValue, oldValue) { + this._loadImage(); }, - maxlength: function maxlength(value) { - var realValue = this.inputValue.slice(0, parseInt(value, 10)); - realValue !== this.inputValue && (this.inputValue = realValue); + mode: function mode(newValue, oldValue) { + if (oldValue === 'widthFix') { + this.$el.style.height = this.availHeight; + this.sizeFixed = false; + } + + if (newValue === 'widthFix' && this.ratio) { + this._fixSize(); + } } }, - created: function created() { - this.$dispatch('Form', 'uni-form-group-update', { - type: 'add', - vm: this - }); - }, mounted: function mounted() { - if (this.confirmType === 'search') { - var formElem = document.createElement('form'); - formElem.action = ''; - - formElem.onsubmit = function () { - return false; - }; + this.availHeight = this.$el.style.height || ''; - formElem.className = 'uni-input-form'; - formElem.appendChild(this.$refs.input); - this.$refs.wrapper.appendChild(formElem); - } + this._loadImage(); + }, + methods: { + _resize: function _resize() { + if (this.mode === 'widthFix' && !this.sizeFixed) { + this._fixSize(); + } + }, + _fixSize: function _fixSize() { + var elWidth = this._getWidth(); - var $vm = this; + if (elWidth) { + var height = elWidth / this.ratio; // fix: 解决 Chrome 浏览器上某些情况下导致 1px 缝隙的问题 - while ($vm) { - var scopeId = $vm.$options._scopeId; + if ((typeof navigator === "undefined" ? "undefined" : _typeof(navigator)) && navigator.vendor === 'Google Inc.' && height > 10) { + height = Math.round(height / 2) * 2; + } - if (scopeId) { - this.$refs.placeholder.setAttribute(scopeId, ''); + this.$el.style.height = height + 'px'; + this.sizeFixed = true; } + }, + _loadImage: function _loadImage() { + this.$refs.content.style.backgroundImage = this.src ? "url(".concat(this.realImagePath, ")") : 'none'; - $vm = $vm.$parent; - } + var _self = this; - this.focus && this._focusInput(); - }, - beforeDestroy: function beforeDestroy() { - this.$dispatch('Form', 'uni-form-group-update', { - type: 'remove', - vm: this - }); - }, - methods: { - _onKeyup: function _onKeyup($event) { - if ($event.keyCode === 13) { - this.$trigger('confirm', $event, { - value: $event.target.value + var img = new Image(); + + img.onload = function ($event) { + _self.originalWidth = this.width; + _self.originalHeight = this.height; + + if (_self.mode === 'widthFix') { + _self._fixSize(); + } + + _self.$trigger('load', $event, { + width: this.width, + height: this.height }); - } + }; + + img.onerror = function ($event) { + _self.$trigger('error', $event, { + errMsg: "GET ".concat(_self.src, " 404 (Not Found)") + }); + }; + + img.src = this.realImagePath; }, - _onInput: function _onInput($event) { - if (this.composing) { - return; - } // 处理部分输入法可以输入其它字符的情况 + _getWidth: function _getWidth() { + var computedStyle = window.getComputedStyle(this.$el); + var borderWidth = (parseFloat(computedStyle.borderLeftWidth, 10) || 0) + (parseFloat(computedStyle.borderRightWidth, 10) || 0); + var paddingWidth = (parseFloat(computedStyle.paddingLeft, 10) || 0) + (parseFloat(computedStyle.paddingRight, 10) || 0); + return this.$el.offsetWidth - borderWidth - paddingWidth; + } + } +}); +// CONCATENATED MODULE: ./src/core/view/components/image/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_imagevue_type_script_lang_js_ = (imagevue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/image/index.vue?vue&type=style&index=0&lang=css& +var imagevue_type_style_index_0_lang_css_ = __webpack_require__(73); +// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js +var componentNormalizer = __webpack_require__(0); - if (~NUMBER_TYPES.indexOf(this.type)) { - if (this.$refs.input.validity && !this.$refs.input.validity.valid) { - $event.target.value = this.cachedValue; - this.inputValue = $event.target.value; // 输入非法字符不触发 input 事件 +// CONCATENATED MODULE: ./src/core/view/components/image/index.vue - return; - } else { - this.cachedValue = this.inputValue; - } - } // type="number" 不支持 maxlength 属性,因此需要主动限制长度。 - if (this.inputType === 'number') { - var maxlength = parseInt(this.maxlength, 10); - if (maxlength > 0 && $event.target.value.length > maxlength) { - $event.target.value = $event.target.value.slice(0, maxlength); - this.inputValue = $event.target.value; // 字符长度超出范围不触发 input 事件 - return; - } - } - this.$trigger('input', $event, { - value: this.inputValue - }); - }, - _onFocus: function _onFocus($event) { - this.$trigger('focus', $event, { - value: $event.target.value - }); - }, - _onBlur: function _onBlur($event) { - this.$trigger('blur', $event, { - value: $event.target.value - }); - }, - _focusInput: function _focusInput() { - var _this = this; - - setTimeout(function () { - _this.$refs.input.focus(); - }, 350); - }, - _blurInput: function _blurInput() { - var _this2 = this; - - setTimeout(function () { - _this2.$refs.input.blur(); - }, 350); - }, - _onComposition: function _onComposition($event) { - if ($event.type === 'compositionstart') { - this.composing = true; - } else { - this.composing = false; - } - }, - _resetFormData: function _resetFormData() { - this.inputValue = ''; - }, - _getFormData: function _getFormData() { - return this.name ? { - value: this.inputValue, - key: this.name - } : {}; - } - } -}); -// CONCATENATED MODULE: ./src/core/view/components/input/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_inputvue_type_script_lang_js_ = (inputvue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/input/index.vue?vue&type=style&index=0&lang=css& -var inputvue_type_style_index_0_lang_css_ = __webpack_require__(73); - -// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js -var componentNormalizer = __webpack_require__(0); - -// CONCATENATED MODULE: ./src/core/view/components/input/index.vue - - - - - - -/* normalize component */ +/* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_inputvue_type_script_lang_js_, + components_imagevue_type_script_lang_js_, render, staticRenderFns, false, @@ -18887,137 +18576,222 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/input/index.vue" -/* harmony default export */ var input = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/image/index.vue" +/* harmony default export */ var components_image = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 106 */ +/* 107 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/swiper-item/index.vue?vue&type=template&id=3883b065& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/input/index.vue?vue&type=template&id=c65e1032& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( - "uni-swiper-item", - _vm._g({}, _vm.$listeners), - [_vm._t("default")], - 2 + "uni-input", + _vm._g( + { + on: { + change: function($event) { + $event.stopPropagation() + } + } + }, + _vm.$listeners + ), + [ + _c("div", { ref: "wrapper", staticClass: "uni-input-wrapper" }, [ + _c( + "div", + { + directives: [ + { + name: "show", + rawName: "v-show", + value: !(_vm.composing || _vm.inputValue.length), + expression: "!(composing || inputValue.length)" + } + ], + ref: "placeholder", + staticClass: "uni-input-placeholder", + class: _vm.placeholderClass, + style: _vm.placeholderStyle + }, + [_vm._v(_vm._s(_vm.placeholder))] + ), + _vm.inputType === "checkbox" + ? _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.inputValue, + expression: "inputValue" + } + ], + ref: "input", + staticClass: "uni-input-input", + attrs: { + disabled: _vm.disabled, + maxlength: _vm.maxlength, + step: _vm.step, + autocomplete: "off", + type: "checkbox" + }, + domProps: { + checked: Array.isArray(_vm.inputValue) + ? _vm._i(_vm.inputValue, null) > -1 + : _vm.inputValue + }, + on: { + focus: _vm._onFocus, + blur: _vm._onBlur, + input: function($event) { + $event.stopPropagation() + return _vm._onInput($event) + }, + compositionstart: _vm._onComposition, + compositionend: _vm._onComposition, + keyup: function($event) { + $event.stopPropagation() + return _vm._onKeyup($event) + }, + change: function($event) { + var $$a = _vm.inputValue, + $$el = $event.target, + $$c = $$el.checked ? true : false + if (Array.isArray($$a)) { + var $$v = null, + $$i = _vm._i($$a, $$v) + if ($$el.checked) { + $$i < 0 && (_vm.inputValue = $$a.concat([$$v])) + } else { + $$i > -1 && + (_vm.inputValue = $$a + .slice(0, $$i) + .concat($$a.slice($$i + 1))) + } + } else { + _vm.inputValue = $$c + } + } + } + }) + : _vm.inputType === "radio" + ? _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.inputValue, + expression: "inputValue" + } + ], + ref: "input", + staticClass: "uni-input-input", + attrs: { + disabled: _vm.disabled, + maxlength: _vm.maxlength, + step: _vm.step, + autocomplete: "off", + type: "radio" + }, + domProps: { checked: _vm._q(_vm.inputValue, null) }, + on: { + focus: _vm._onFocus, + blur: _vm._onBlur, + input: function($event) { + $event.stopPropagation() + return _vm._onInput($event) + }, + compositionstart: _vm._onComposition, + compositionend: _vm._onComposition, + keyup: function($event) { + $event.stopPropagation() + return _vm._onKeyup($event) + }, + change: function($event) { + _vm.inputValue = null + } + } + }) + : _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.inputValue, + expression: "inputValue" + } + ], + ref: "input", + staticClass: "uni-input-input", + attrs: { + disabled: _vm.disabled, + maxlength: _vm.maxlength, + step: _vm.step, + autocomplete: "off", + type: _vm.inputType + }, + domProps: { value: _vm.inputValue }, + on: { + focus: _vm._onFocus, + blur: _vm._onBlur, + input: [ + function($event) { + if ($event.target.composing) { + return + } + _vm.inputValue = $event.target.value + }, + function($event) { + $event.stopPropagation() + return _vm._onInput($event) + } + ], + compositionstart: _vm._onComposition, + compositionend: _vm._onComposition, + keyup: function($event) { + $event.stopPropagation() + return _vm._onKeyup($event) + } + } + }) + ]) + ] ) } var staticRenderFns = [] render._withStripped = true -// CONCATENATED MODULE: ./src/core/view/components/swiper-item/index.vue?vue&type=template&id=3883b065& +// CONCATENATED MODULE: ./src/core/view/components/input/index.vue?vue&type=template&id=c65e1032& -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/swiper-item/index.vue?vue&type=script&lang=js& +// EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules +var mixins = __webpack_require__(1); + +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/input/index.vue?vue&type=script&lang=js& +// +// +// +// +// +// +// +// +// +// +// +// // // // // // -/* harmony default export */ var swiper_itemvue_type_script_lang_js_ = ({ - name: 'SwiperItem', - props: { - itemId: { - type: String, - default: '' - } - }, - mounted: function mounted() { - var $el = this.$el; - $el.style.position = 'absolute'; - $el.style.width = '100%'; - $el.style.height = '100%'; - var callbacks = this.$vnode._callbacks; - - if (callbacks) { - callbacks.forEach(function (callback) { - callback(); - }); - } - } -}); -// CONCATENATED MODULE: ./src/core/view/components/swiper-item/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_swiper_itemvue_type_script_lang_js_ = (swiper_itemvue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/swiper-item/index.vue?vue&type=style&index=0&lang=css& -var swiper_itemvue_type_style_index_0_lang_css_ = __webpack_require__(85); - -// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js -var componentNormalizer = __webpack_require__(0); - -// CONCATENATED MODULE: ./src/core/view/components/swiper-item/index.vue - - - - - - -/* normalize component */ - -var component = Object(componentNormalizer["a" /* default */])( - components_swiper_itemvue_type_script_lang_js_, - render, - staticRenderFns, - false, - null, - null, - null - -) - -/* hot reload */ -if (false) { var api; } -component.options.__file = "src/core/view/components/swiper-item/index.vue" -/* harmony default export */ var swiper_item = __webpack_exports__["default"] = (component.exports); - -/***/ }), -/* 107 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); - -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/scroll-view/index.vue?vue&type=template&id=e9d562fc& -var render = function() { - var _vm = this - var _h = _vm.$createElement - var _c = _vm._self._c || _h - return _c("uni-scroll-view", _vm._g({}, _vm.$listeners), [ - _c("div", { ref: "wrap", staticClass: "uni-scroll-view" }, [ - _c( - "div", - { - ref: "main", - staticClass: "uni-scroll-view", - style: { - "overflow-x": _vm.scrollX ? "auto" : "hidden", - "overflow-y": _vm.scrollY ? "auto" : "hidden" - } - }, - [_c("div", { ref: "content" }, [_vm._t("default")], 2)] - ) - ]) - ]) -} -var staticRenderFns = [] -render._withStripped = true - - -// CONCATENATED MODULE: ./src/core/view/components/scroll-view/index.vue?vue&type=template&id=e9d562fc& - -// EXTERNAL MODULE: ./src/core/view/mixins/scroller/index.js + 2 modules -var scroller = __webpack_require__(46); - -// EXTERNAL MODULE: ./src/shared/index.js + 4 modules -var shared = __webpack_require__(2); - -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/scroll-view/index.vue?vue&type=script&lang=js& // // // @@ -19035,400 +18809,246 @@ var shared = __webpack_require__(2); // // - -var passiveOptions = shared["f" /* supportsPassive */] ? { - passive: true -} : false; -/* harmony default export */ var scroll_viewvue_type_script_lang_js_ = ({ - name: 'ScrollView', - mixins: [scroller["a" /* default */]], +var INPUT_TYPES = ['text', 'number', 'idcard', 'digit', 'password']; +var NUMBER_TYPES = ['number', 'digit']; +/* harmony default export */ var inputvue_type_script_lang_js_ = ({ + name: 'Input', + mixins: [mixins["a" /* emitter */]], + model: { + prop: 'value', + event: 'update:value' + }, props: { - scrollX: { - type: [Boolean, String], - default: false + name: { + type: String, + default: '' }, - scrollY: { - type: [Boolean, String], - default: false + value: { + type: [String, Number], + default: '' }, - upperThreshold: { - type: [Number, String], - default: 50 + type: { + type: String, + default: 'text' }, - lowerThreshold: { - type: [Number, String], - default: 50 + password: { + type: [Boolean, String], + default: false }, - scrollTop: { - type: [Number, String], - default: 0 + placeholder: { + type: String, + default: '' }, - scrollLeft: { - type: [Number, String], - default: 0 + placeholderStyle: { + type: String, + default: '' }, - scrollIntoView: { + placeholderClass: { type: String, default: '' }, - scrollWithAnimation: { + disabled: { type: [Boolean, String], default: false }, - enableBackToTop: { + maxlength: { + type: [Number, String], + default: 140 + }, + focus: { type: [Boolean, String], default: false + }, + confirmType: { + type: String, + default: 'done' } }, data: function data() { return { - lastScrollTop: this.scrollTopNumber, - lastScrollLeft: this.scrollLeftNumber, - lastScrollToUpperTime: 0, - lastScrollToLowerTime: 0 + inputValue: this.value + '', + composing: false, + wrapperHeight: 0, + cachedValue: '' }; }, computed: { - upperThresholdNumber: function upperThresholdNumber() { - var val = Number(this.upperThreshold); - return isNaN(val) ? 50 : val; - }, - lowerThresholdNumber: function lowerThresholdNumber() { - var val = Number(this.lowerThreshold); - return isNaN(val) ? 50 : val; - }, - scrollTopNumber: function scrollTopNumber() { - return Number(this.scrollTop) || 0; + inputType: function inputType() { + var type = ''; + + switch (this.type) { + case 'text': + this.confirmType === 'search' && (type = 'search'); + break; + + case 'idcard': + // TODO 可能要根据不同平台进行区分处理 + type = 'text'; + break; + + case 'digit': + type = 'number'; + break; + + default: + type = ~INPUT_TYPES.indexOf(this.type) ? this.type : 'text'; + break; + } + + return this.password ? 'password' : type; }, - scrollLeftNumber: function scrollLeftNumber() { - return Number(this.scrollLeft) || 0; + step: function step() { + // 处理部分设备中无法输入小数点的问题 + return ~NUMBER_TYPES.indexOf(this.type) ? '0.000000000000000001' : ''; } }, watch: { - scrollTopNumber: function scrollTopNumber(val) { - this._scrollTopChanged(val); + focus: function focus(value) { + value && this._focusInput(); }, - scrollLeftNumber: function scrollLeftNumber(val) { - this._scrollLeftChanged(val); + value: function value(_value) { + this.inputValue = _value + ''; }, - scrollIntoView: function scrollIntoView(val) { - this._scrollIntoViewChanged(val); + inputValue: function inputValue(value) { + this.$emit('update:value', value); + }, + maxlength: function maxlength(value) { + var realValue = this.inputValue.slice(0, parseInt(value, 10)); + realValue !== this.inputValue && (this.inputValue = realValue); } }, + created: function created() { + this.$dispatch('Form', 'uni-form-group-update', { + type: 'add', + vm: this + }); + }, mounted: function mounted() { - var self = this; - this._attached = true; + if (this.confirmType === 'search') { + var formElem = document.createElement('form'); + formElem.action = ''; - this._scrollTopChanged(this.scrollTopNumber); + formElem.onsubmit = function () { + return false; + }; - this._scrollLeftChanged(this.scrollLeftNumber); + formElem.className = 'uni-input-form'; + formElem.appendChild(this.$refs.input); + this.$refs.wrapper.appendChild(formElem); + } - this._scrollIntoViewChanged(this.scrollIntoView); + var $vm = this; - this.__handleScroll = function (e) { - event.preventDefault(); - event.stopPropagation(); + while ($vm) { + var scopeId = $vm.$options._scopeId; - self._handleScroll.bind(self, event)(); - }; + if (scopeId) { + this.$refs.placeholder.setAttribute(scopeId, ''); + } - var touchStart = null; - var needStop = null; + $vm = $vm.$parent; + } - this.__handleTouchMove = function (event) { - var x = event.touches[0].pageX; - var y = event.touches[0].pageY; - var main = self.$refs.main; - - if (needStop === null) { - if (Math.abs(x - touchStart.x) > Math.abs(y - touchStart.y)) { - // 横向滑动 - if (self.scrollX) { - if (main.scrollLeft === 0 && x > touchStart.x) { - needStop = false; - return; - } else if (main.scrollWidth === main.offsetWidth + main.scrollLeft && x < touchStart.x) { - needStop = false; - return; - } - - needStop = true; - } else { - needStop = false; - } - } else { - // 纵向滑动 - if (self.scrollY) { - if (main.scrollTop === 0 && y > touchStart.y) { - needStop = false; - return; - } else if (main.scrollHeight === main.offsetHeight + main.scrollTop && y < touchStart.y) { - needStop = false; - return; - } - - needStop = true; - } else { - needStop = false; - } - } - } - - if (needStop) { - event.stopPropagation(); - } - }; - - this.__handleTouchStart = function (event) { - if (event.touches.length === 1) { - needStop = null; - touchStart = { - x: event.touches[0].pageX, - y: event.touches[0].pageY - }; - } - }; - - this.$refs.main.addEventListener('touchstart', this.__handleTouchStart, passiveOptions); - this.$refs.main.addEventListener('touchmove', this.__handleTouchMove, passiveOptions); - this.$refs.main.addEventListener('scroll', this.__handleScroll, shared["f" /* supportsPassive */] ? { - passive: false - } : false); - }, - activated: function activated() { - // 还原 scroll-view 滚动位置 - this.scrollY && (this.$refs.main.scrollTop = this.lastScrollTop); - this.scrollX && (this.$refs.main.scrollLeft = this.lastScrollLeft); + this.focus && this._focusInput(); }, beforeDestroy: function beforeDestroy() { - this.$refs.main.removeEventListener('touchstart', this.__handleTouchStart, passiveOptions); - this.$refs.main.removeEventListener('touchmove', this.__handleTouchMove, passiveOptions); - this.$refs.main.removeEventListener('scroll', this.__handleScroll, shared["f" /* supportsPassive */] ? { - passive: false - } : false); + this.$dispatch('Form', 'uni-form-group-update', { + type: 'remove', + vm: this + }); }, methods: { - scrollTo: function scrollTo(t, n) { - var i = this.$refs.main; - t < 0 ? t = 0 : n === 'x' && t > i.scrollWidth - i.offsetWidth ? t = i.scrollWidth - i.offsetWidth : n === 'y' && t > i.scrollHeight - i.offsetHeight && (t = i.scrollHeight - i.offsetHeight); - var r = 0; - var o = ''; - n === 'x' ? r = i.scrollLeft - t : n === 'y' && (r = i.scrollTop - t); - - if (r !== 0) { - this.$refs.content.style.transition = 'transform .3s ease-out'; - this.$refs.content.style.webkitTransition = '-webkit-transform .3s ease-out'; - - if (n === 'x') { - o = 'translateX(' + r + 'px) translateZ(0)'; - } else { - n === 'y' && (o = 'translateY(' + r + 'px) translateZ(0)'); - } - - this.$refs.content.removeEventListener('transitionend', this.__transitionEnd); - this.$refs.content.removeEventListener('webkitTransitionEnd', this.__transitionEnd); - this.__transitionEnd = this._transitionEnd.bind(this, t, n); - this.$refs.content.addEventListener('transitionend', this.__transitionEnd); - this.$refs.content.addEventListener('webkitTransitionEnd', this.__transitionEnd); - - if (n === 'x') { - // if (e !== 'ios') { - i.style.overflowX = 'hidden'; // } - } else if (n === 'y') { - i.style.overflowY = 'hidden'; - } - - this.$refs.content.style.transform = o; - this.$refs.content.style.webkitTransform = o; + _onKeyup: function _onKeyup($event) { + if ($event.keyCode === 13) { + this.$trigger('confirm', $event, { + value: $event.target.value + }); } }, - _handleTrack: function _handleTrack($event) { - if ($event.detail.state === 'start') { - this._x = $event.detail.x; - this._y = $event.detail.y; - this._noBubble = null; + _onInput: function _onInput($event) { + if (this.composing) { return; - } + } // 处理部分输入法可以输入其它字符的情况 - if ($event.detail.state === 'end') { - this._noBubble = false; - } - if (this._noBubble === null && this.scrollY) { - if (Math.abs(this._y - $event.detail.y) / Math.abs(this._x - $event.detail.x) > 1) { - this._noBubble = true; - } else { - this._noBubble = false; - } - } + if (~NUMBER_TYPES.indexOf(this.type)) { + if (this.$refs.input.validity && !this.$refs.input.validity.valid) { + $event.target.value = this.cachedValue; + this.inputValue = $event.target.value; // 输入非法字符不触发 input 事件 - if (this._noBubble === null && this.scrollX) { - if (Math.abs(this._x - $event.detail.x) / Math.abs(this._y - $event.detail.y) > 1) { - this._noBubble = true; + return; } else { - this._noBubble = false; + this.cachedValue = this.inputValue; } - } - - this._x = $event.detail.x; - this._y = $event.detail.y; + } // type="number" 不支持 maxlength 属性,因此需要主动限制长度。 - if (this._noBubble) { - $event.stopPropagation(); - } - }, - _handleScroll: function _handleScroll($event) { - if (!($event.timeStamp - this._lastScrollTime < 20)) { - this._lastScrollTime = $event.timeStamp; - var target = $event.target; - this.$trigger('scroll', $event, { - scrollLeft: target.scrollLeft, - scrollTop: target.scrollTop, - scrollHeight: target.scrollHeight, - scrollWidth: target.scrollWidth, - deltaX: this.lastScrollLeft - target.scrollLeft, - deltaY: this.lastScrollTop - target.scrollTop - }); - if (this.scrollY) { - if (target.scrollTop <= this.upperThresholdNumber && this.lastScrollTop - target.scrollTop > 0 && $event.timeStamp - this.lastScrollToUpperTime > 200) { - this.$trigger('scrolltoupper', $event, { - direction: 'top' - }); - this.lastScrollToUpperTime = $event.timeStamp; - } - - if (target.scrollTop + target.offsetHeight + this.lowerThresholdNumber >= target.scrollHeight && this.lastScrollTop - target.scrollTop < 0 && $event.timeStamp - this.lastScrollToLowerTime > 200) { - this.$trigger('scrolltolower', $event, { - direction: 'bottom' - }); - this.lastScrollToLowerTime = $event.timeStamp; - } - } + if (this.inputType === 'number') { + var maxlength = parseInt(this.maxlength, 10); - if (this.scrollX) { - if (target.scrollLeft <= this.upperThresholdNumber && this.lastScrollLeft - target.scrollLeft > 0 && $event.timeStamp - this.lastScrollToUpperTime > 200) { - this.$trigger('scrolltoupper', $event, { - direction: 'left' - }); - this.lastScrollToUpperTime = $event.timeStamp; - } + if (maxlength > 0 && $event.target.value.length > maxlength) { + $event.target.value = $event.target.value.slice(0, maxlength); + this.inputValue = $event.target.value; // 字符长度超出范围不触发 input 事件 - if (target.scrollLeft + target.offsetWidth + this.lowerThresholdNumber >= target.scrollWidth && this.lastScrollLeft - target.scrollLeft < 0 && $event.timeStamp - this.lastScrollToLowerTime > 200) { - this.$trigger('scrolltolower', $event, { - direction: 'right' - }); - this.lastScrollToLowerTime = $event.timeStamp; - } + return; } - - this.lastScrollTop = target.scrollTop; - this.lastScrollLeft = target.scrollLeft; } + + this.$trigger('input', $event, { + value: this.inputValue + }); }, - _scrollTopChanged: function _scrollTopChanged(val) { - if (this.scrollY) { - if (this._innerSetScrollTop) { - this._innerSetScrollTop = false; - } else { - if (this.scrollWithAnimation) { - this.scrollTo(val, 'y'); - } else { - this.$refs.main.scrollTop = val; - } - } - } + _onFocus: function _onFocus($event) { + this.$trigger('focus', $event, { + value: $event.target.value + }); }, - _scrollLeftChanged: function _scrollLeftChanged(val) { - if (this.scrollX) { - if (this._innerSetScrollLeft) { - this._innerSetScrollLeft = false; - } else { - if (this.scrollWithAnimation) { - this.scrollTo(val, 'x'); - } else { - this.$refs.main.scrollLeft = val; - } - } - } + _onBlur: function _onBlur($event) { + this.$trigger('blur', $event, { + value: $event.target.value + }); }, - _scrollIntoViewChanged: function _scrollIntoViewChanged(val) { - if (val) { - if (!/^[_a-zA-Z][-_a-zA-Z0-9:]*$/.test(val)) { - console.group('scroll-into-view="' + val + '" 有误'); - console.error('id 属性值格式错误。如不能以数字开头。'); - console.groupEnd(); - return; - } - - var element = this.$el.querySelector('#' + val); - - if (element) { - var mainRect = this.$refs.main.getBoundingClientRect(); - var elRect = element.getBoundingClientRect(); - - if (this.scrollX) { - var left = elRect.left - mainRect.left; - var scrollLeft = this.$refs.main.scrollLeft; - var x = scrollLeft + left; - - if (this.scrollWithAnimation) { - this.scrollTo(x, 'x'); - } else { - this.$refs.main.scrollLeft = x; - } - } - - if (this.scrollY) { - var top = elRect.top - mainRect.top; - var scrollTop = this.$refs.main.scrollTop; - var y = scrollTop + top; + _focusInput: function _focusInput() { + var _this = this; - if (this.scrollWithAnimation) { - this.scrollTo(y, 'y'); - } else { - this.$refs.main.scrollTop = y; - } - } - } - } + setTimeout(function () { + _this.$refs.input.focus(); + }, 350); }, - _transitionEnd: function _transitionEnd(val, type) { - this.$refs.content.style.transition = ''; - this.$refs.content.style.webkitTransition = ''; - this.$refs.content.style.transform = ''; - this.$refs.content.style.webkitTransform = ''; - var main = this.$refs.main; + _blurInput: function _blurInput() { + var _this2 = this; - if (type === 'x') { - main.style.overflowX = this.scrollX ? 'auto' : 'hidden'; - main.scrollLeft = val; - } else if (type === 'y') { - main.style.overflowY = this.scrollY ? 'auto' : 'hidden'; - main.scrollTop = val; + setTimeout(function () { + _this2.$refs.input.blur(); + }, 350); + }, + _onComposition: function _onComposition($event) { + if ($event.type === 'compositionstart') { + this.composing = true; + } else { + this.composing = false; } - - this.$refs.content.removeEventListener('transitionend', this.__transitionEnd); - this.$refs.content.removeEventListener('webkitTransitionEnd', this.__transitionEnd); }, - getScrollPosition: function getScrollPosition() { - var main = this.$refs.main; - return { - scrollLeft: main.scrollLeft, - scrollTop: main.scrollTop - }; + _resetFormData: function _resetFormData() { + this.inputValue = ''; + }, + _getFormData: function _getFormData() { + return this.name ? { + value: this.inputValue, + key: this.name + } : {}; } } }); -// CONCATENATED MODULE: ./src/core/view/components/scroll-view/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_scroll_viewvue_type_script_lang_js_ = (scroll_viewvue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/scroll-view/index.vue?vue&type=style&index=0&lang=css& -var scroll_viewvue_type_style_index_0_lang_css_ = __webpack_require__(83); +// CONCATENATED MODULE: ./src/core/view/components/input/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_inputvue_type_script_lang_js_ = (inputvue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/input/index.vue?vue&type=style&index=0&lang=css& +var inputvue_type_style_index_0_lang_css_ = __webpack_require__(74); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); -// CONCATENATED MODULE: ./src/core/view/components/scroll-view/index.vue +// CONCATENATED MODULE: ./src/core/view/components/input/index.vue @@ -19438,7 +19058,7 @@ var componentNormalizer = __webpack_require__(0); /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_scroll_viewvue_type_script_lang_js_, + components_inputvue_type_script_lang_js_, render, staticRenderFns, false, @@ -19450,8 +19070,8 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/scroll-view/index.vue" -/* harmony default export */ var scroll_view = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/input/index.vue" +/* harmony default export */ var input = __webpack_exports__["default"] = (component.exports); /***/ }), /* 108 */ @@ -19460,55 +19080,15 @@ component.options.__file = "src/core/view/components/scroll-view/index.vue" "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/slider/index.vue?vue&type=template&id=1969bd7a& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/swiper-item/index.vue?vue&type=template&id=3883b065& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( - "uni-slider", - _vm._g({ ref: "uni-slider", on: { click: _vm._onClick } }, _vm.$listeners), - [ - _c("div", { staticClass: "uni-slider-wrapper" }, [ - _c("div", { staticClass: "uni-slider-tap-area" }, [ - _c( - "div", - { staticClass: "uni-slider-handle-wrapper", style: _vm.setBgColor }, - [ - _c("div", { - ref: "uni-slider-handle", - staticClass: "uni-slider-handle", - style: _vm.setBlockBg - }), - _c("div", { - staticClass: "uni-slider-thumb", - style: _vm.setBlockStyle - }), - _c("div", { - staticClass: "uni-slider-track", - style: _vm.setActiveColor - }) - ] - ) - ]), - _c( - "span", - { - directives: [ - { - name: "show", - rawName: "v-show", - value: _vm.showValue, - expression: "showValue" - } - ], - staticClass: "uni-slider-value" - }, - [_vm._v(_vm._s(_vm.sliderValue))] - ) - ]), - _vm._t("default") - ], + "uni-swiper-item", + _vm._g({}, _vm.$listeners), + [_vm._t("default")], 2 ) } @@ -19516,223 +19096,45 @@ var staticRenderFns = [] render._withStripped = true -// CONCATENATED MODULE: ./src/core/view/components/slider/index.vue?vue&type=template&id=1969bd7a& - -// EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules -var mixins = __webpack_require__(1); - -// EXTERNAL MODULE: ./src/core/view/mixins/touchtrack.js -var touchtrack = __webpack_require__(8); +// CONCATENATED MODULE: ./src/core/view/components/swiper-item/index.vue?vue&type=template&id=3883b065& -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/slider/index.vue?vue&type=script&lang=js& -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/swiper-item/index.vue?vue&type=script&lang=js& // // // // // - - -/* harmony default export */ var slidervue_type_script_lang_js_ = ({ - name: 'Slider', - mixins: [mixins["a" /* emitter */], mixins["c" /* listeners */], touchtrack["a" /* default */]], +/* harmony default export */ var swiper_itemvue_type_script_lang_js_ = ({ + name: 'SwiperItem', props: { - name: { + itemId: { type: String, default: '' - }, - min: { - type: [Number, String], - default: 0 - }, - max: { - type: [Number, String], - default: 100 - }, - value: { - type: [Number, String], - default: 0 - }, - step: { - type: [Number, String], - default: 1 - }, - disabled: { - type: [Boolean, String], - default: false - }, - color: { - type: String, - default: '#e9e9e9' - }, - backgroundColor: { - type: String, - default: '#e9e9e9' - }, - activeColor: { - type: String, - default: '#007aff' - }, - selectedColor: { - type: String, - default: '#007aff' - }, - blockColor: { - type: String, - default: '#ffffff' - }, - blockSize: { - type: [Number, String], - default: 28 - }, - showValue: { - type: [Boolean, String], - default: false - } - }, - data: function data() { - return { - sliderValue: Number(this.value) - }; - }, - computed: { - setBlockStyle: function setBlockStyle() { - return { - width: this.blockSize + 'px', - height: this.blockSize + 'px', - marginLeft: -this.blockSize / 2 + 'px', - marginTop: -this.blockSize / 2 + 'px', - left: this._getValueWidth(), - backgroundColor: this.blockColor - }; - }, - setBgColor: function setBgColor() { - return { - backgroundColor: this._getBgColor() - }; - }, - setBlockBg: function setBlockBg() { - return { - left: this._getValueWidth() - }; - }, - setActiveColor: function setActiveColor() { - // 有问题,设置最大值最小值是有问题 - return { - backgroundColor: this._getActiveColor(), - width: this._getValueWidth() - }; - } - }, - watch: { - value: function value(val) { - this.sliderValue = Number(val); } }, mounted: function mounted() { - this.touchtrack(this.$refs['uni-slider-handle'], '_onTrack'); - }, - created: function created() { - this.$dispatch('Form', 'uni-form-group-update', { - type: 'add', - vm: this - }); - }, - beforeDestroy: function beforeDestroy() { - this.$dispatch('Form', 'uni-form-group-update', { - type: 'remove', - vm: this - }); - }, - methods: { - _onUserChangedValue: function _onUserChangedValue(e) { - var slider = this.$refs['uni-slider']; - var offsetWidth = slider.offsetWidth; - var boxLeft = slider.getBoundingClientRect().left; - var value = (e.x - boxLeft) * (this.max - this.min) / offsetWidth + Number(this.min); - this.sliderValue = this._filterValue(value); - }, - _filterValue: function _filterValue(e) { - return e < this.min ? this.min : e > this.max ? this.max : Math.round((e - this.min) / this.step) * this.step + Number(this.min); - }, - _getValueWidth: function _getValueWidth() { - return 100 * (this.sliderValue - this.min) / (this.max - this.min) + '%'; - }, - _getBgColor: function _getBgColor() { - return this.backgroundColor !== '#e9e9e9' ? this.backgroundColor : this.color !== '#007aff' ? this.color : '#007aff'; - }, - _getActiveColor: function _getActiveColor() { - return this.activeColor !== '#007aff' ? this.activeColor : this.selectedColor !== '#e9e9e9' ? this.selectedColor : '#e9e9e9'; - }, - _onTrack: function _onTrack(e) { - if (!this.disabled) { - return e.detail.state === 'move' ? (this._onUserChangedValue({ - x: e.detail.x0 - }), this.$trigger('changing', e, { - value: this.sliderValue - }), !1) : void (e.detail.state === 'end' && this.$trigger('change', e, { - value: this.sliderValue - })); - } - }, - _onClick: function _onClick($event) { - if (this.disabled) { - return; - } - - this._onUserChangedValue($event); - - this.$trigger('change', $event, { - value: this.sliderValue - }); - }, - _resetFormData: function _resetFormData() { - this.sliderValue = this.min; - }, - _getFormData: function _getFormData() { - var data = {}; - - if (this.name !== '') { - data['value'] = this.sliderValue; - data['key'] = this.name; - } + var $el = this.$el; + $el.style.position = 'absolute'; + $el.style.width = '100%'; + $el.style.height = '100%'; + var callbacks = this.$vnode._callbacks; - return data; + if (callbacks) { + callbacks.forEach(function (callback) { + callback(); + }); } } }); -// CONCATENATED MODULE: ./src/core/view/components/slider/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_slidervue_type_script_lang_js_ = (slidervue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/slider/index.vue?vue&type=style&index=0&lang=css& -var slidervue_type_style_index_0_lang_css_ = __webpack_require__(84); +// CONCATENATED MODULE: ./src/core/view/components/swiper-item/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_swiper_itemvue_type_script_lang_js_ = (swiper_itemvue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/swiper-item/index.vue?vue&type=style&index=0&lang=css& +var swiper_itemvue_type_style_index_0_lang_css_ = __webpack_require__(86); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); -// CONCATENATED MODULE: ./src/core/view/components/slider/index.vue +// CONCATENATED MODULE: ./src/core/view/components/swiper-item/index.vue @@ -19742,7 +19144,7 @@ var componentNormalizer = __webpack_require__(0); /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_slidervue_type_script_lang_js_, + components_swiper_itemvue_type_script_lang_js_, render, staticRenderFns, false, @@ -19754,8 +19156,8 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/slider/index.vue" -/* harmony default export */ var slider = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/swiper-item/index.vue" +/* harmony default export */ var swiper_item = __webpack_exports__["default"] = (component.exports); /***/ }), /* 109 */ @@ -19903,7 +19305,7 @@ var OPEN_TYPES = ['navigate', 'redirect', 'switchTab', 'reLaunch', 'navigateBack // CONCATENATED MODULE: ./src/core/view/components/navigator/index.vue?vue&type=script&lang=js& /* harmony default export */ var components_navigatorvue_type_script_lang_js_ = (navigatorvue_type_script_lang_js_); // EXTERNAL MODULE: ./src/core/view/components/navigator/index.vue?vue&type=style&index=0&lang=css& -var navigatorvue_type_style_index_0_lang_css_ = __webpack_require__(76); +var navigatorvue_type_style_index_0_lang_css_ = __webpack_require__(77); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); @@ -19940,41 +19342,87 @@ component.options.__file = "src/core/view/components/navigator/index.vue" "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/radio/index.vue?vue&type=template&id=4b562a50& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/slider/index.vue?vue&type=template&id=1969bd7a& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( - "uni-radio", - _vm._g({ on: { click: _vm._onClick } }, _vm.$listeners), + "uni-slider", + _vm._g({ ref: "uni-slider", on: { click: _vm._onClick } }, _vm.$listeners), [ - _c( - "div", - { staticClass: "uni-radio-wrapper" }, - [ - _c("div", { - staticClass: "uni-radio-input", - class: _vm.radioChecked ? "uni-radio-input-checked" : "", - style: _vm.radioChecked ? _vm.checkedStyle : "" - }), - _vm._t("default") - ], - 2 - ) - ] + _c("div", { staticClass: "uni-slider-wrapper" }, [ + _c("div", { staticClass: "uni-slider-tap-area" }, [ + _c( + "div", + { staticClass: "uni-slider-handle-wrapper", style: _vm.setBgColor }, + [ + _c("div", { + ref: "uni-slider-handle", + staticClass: "uni-slider-handle", + style: _vm.setBlockBg + }), + _c("div", { + staticClass: "uni-slider-thumb", + style: _vm.setBlockStyle + }), + _c("div", { + staticClass: "uni-slider-track", + style: _vm.setActiveColor + }) + ] + ) + ]), + _c( + "span", + { + directives: [ + { + name: "show", + rawName: "v-show", + value: _vm.showValue, + expression: "showValue" + } + ], + staticClass: "uni-slider-value" + }, + [_vm._v(_vm._s(_vm.sliderValue))] + ) + ]), + _vm._t("default") + ], + 2 ) } var staticRenderFns = [] render._withStripped = true -// CONCATENATED MODULE: ./src/core/view/components/radio/index.vue?vue&type=template&id=4b562a50& +// CONCATENATED MODULE: ./src/core/view/components/slider/index.vue?vue&type=template&id=1969bd7a& // EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules var mixins = __webpack_require__(1); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/radio/index.vue?vue&type=script&lang=js& +// EXTERNAL MODULE: ./src/core/view/mixins/touchtrack.js +var touchtrack = __webpack_require__(8); + +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/slider/index.vue?vue&type=script&lang=js& +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// // // // @@ -19989,97 +19437,184 @@ var mixins = __webpack_require__(1); // // -/* harmony default export */ var radiovue_type_script_lang_js_ = ({ - name: 'Radio', - mixins: [mixins["a" /* emitter */], mixins["c" /* listeners */]], + +/* harmony default export */ var slidervue_type_script_lang_js_ = ({ + name: 'Slider', + mixins: [mixins["a" /* emitter */], mixins["c" /* listeners */], touchtrack["a" /* default */]], props: { - checked: { - type: [Boolean, String], - default: false - }, - id: { + name: { type: String, default: '' }, + min: { + type: [Number, String], + default: 0 + }, + max: { + type: [Number, String], + default: 100 + }, + value: { + type: [Number, String], + default: 0 + }, + step: { + type: [Number, String], + default: 1 + }, disabled: { type: [Boolean, String], default: false }, color: { type: String, - default: '#007AFF' + default: '#e9e9e9' }, - value: { + backgroundColor: { type: String, - default: '' + default: '#e9e9e9' + }, + activeColor: { + type: String, + default: '#007aff' + }, + selectedColor: { + type: String, + default: '#007aff' + }, + blockColor: { + type: String, + default: '#ffffff' + }, + blockSize: { + type: [Number, String], + default: 28 + }, + showValue: { + type: [Boolean, String], + default: false } }, data: function data() { return { - radioChecked: this.checked, - radioValue: this.value + sliderValue: Number(this.value) }; }, computed: { - checkedStyle: function checkedStyle() { - return "background-color: ".concat(this.color, ";border-color: ").concat(this.color, ";"); + setBlockStyle: function setBlockStyle() { + return { + width: this.blockSize + 'px', + height: this.blockSize + 'px', + marginLeft: -this.blockSize / 2 + 'px', + marginTop: -this.blockSize / 2 + 'px', + left: this._getValueWidth(), + backgroundColor: this.blockColor + }; + }, + setBgColor: function setBgColor() { + return { + backgroundColor: this._getBgColor() + }; + }, + setBlockBg: function setBlockBg() { + return { + left: this._getValueWidth() + }; + }, + setActiveColor: function setActiveColor() { + // 有问题,设置最大值最小值是有问题 + return { + backgroundColor: this._getActiveColor(), + width: this._getValueWidth() + }; } }, watch: { - checked: function checked(val) { - this.radioChecked = val; - }, value: function value(val) { - this.radioValue = val; + this.sliderValue = Number(val); } }, - listeners: { - 'label-click': '_onClick', - '@label-click': '_onClick' + mounted: function mounted() { + this.touchtrack(this.$refs['uni-slider-handle'], '_onTrack'); }, created: function created() { - this.$dispatch('RadioGroup', 'uni-radio-group-update', { - type: 'add', - vm: this - }); this.$dispatch('Form', 'uni-form-group-update', { type: 'add', vm: this }); }, beforeDestroy: function beforeDestroy() { - this.$dispatch('RadioGroup', 'uni-radio-group-update', { - type: 'remove', - vm: this - }); this.$dispatch('Form', 'uni-form-group-update', { type: 'remove', vm: this }); }, methods: { + _onUserChangedValue: function _onUserChangedValue(e) { + var slider = this.$refs['uni-slider']; + var offsetWidth = slider.offsetWidth; + var boxLeft = slider.getBoundingClientRect().left; + var value = (e.x - boxLeft) * (this.max - this.min) / offsetWidth + Number(this.min); + this.sliderValue = this._filterValue(value); + }, + _filterValue: function _filterValue(e) { + return e < this.min ? this.min : e > this.max ? this.max : Math.round((e - this.min) / this.step) * this.step + Number(this.min); + }, + _getValueWidth: function _getValueWidth() { + return 100 * (this.sliderValue - this.min) / (this.max - this.min) + '%'; + }, + _getBgColor: function _getBgColor() { + return this.backgroundColor !== '#e9e9e9' ? this.backgroundColor : this.color !== '#007aff' ? this.color : '#007aff'; + }, + _getActiveColor: function _getActiveColor() { + return this.activeColor !== '#007aff' ? this.activeColor : this.selectedColor !== '#e9e9e9' ? this.selectedColor : '#e9e9e9'; + }, + _onTrack: function _onTrack(e) { + if (!this.disabled) { + return e.detail.state === 'move' ? (this._onUserChangedValue({ + x: e.detail.x0 + }), this.$trigger('changing', e, { + value: this.sliderValue + }), !1) : void (e.detail.state === 'end' && this.$trigger('change', e, { + value: this.sliderValue + })); + } + }, _onClick: function _onClick($event) { - if (this.disabled || this.radioChecked) { + if (this.disabled) { return; } - this.radioChecked = true; - this.$dispatch('RadioGroup', 'uni-radio-change', $event, this); + this._onUserChangedValue($event); + + this.$trigger('change', $event, { + value: this.sliderValue + }); }, _resetFormData: function _resetFormData() { - this.radioChecked = this.min; + this.sliderValue = this.min; + }, + _getFormData: function _getFormData() { + var data = {}; + + if (this.name !== '') { + data['value'] = this.sliderValue; + data['key'] = this.name; + } + + return data; } } }); -// CONCATENATED MODULE: ./src/core/view/components/radio/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_radiovue_type_script_lang_js_ = (radiovue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/radio/index.vue?vue&type=style&index=0&lang=css& -var radiovue_type_style_index_0_lang_css_ = __webpack_require__(81); +// CONCATENATED MODULE: ./src/core/view/components/slider/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_slidervue_type_script_lang_js_ = (slidervue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/slider/index.vue?vue&type=style&index=0&lang=css& +var slidervue_type_style_index_0_lang_css_ = __webpack_require__(85); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); -// CONCATENATED MODULE: ./src/core/view/components/radio/index.vue +// CONCATENATED MODULE: ./src/core/view/components/slider/index.vue @@ -20089,7 +19624,7 @@ var componentNormalizer = __webpack_require__(0); /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_radiovue_type_script_lang_js_, + components_slidervue_type_script_lang_js_, render, staticRenderFns, false, @@ -20101,8 +19636,8 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/radio/index.vue" -/* harmony default export */ var components_radio = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/slider/index.vue" +/* harmony default export */ var slider = __webpack_exports__["default"] = (component.exports); /***/ }), /* 111 */ @@ -20111,340 +19646,453 @@ component.options.__file = "src/core/view/components/radio/index.vue" "use strict"; __webpack_require__.r(__webpack_exports__); -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/label/index.vue?vue&type=template&id=04b5b291& -var render = function() { - var _vm = this - var _h = _vm.$createElement - var _c = _vm._self._c || _h - return _c( - "uni-label", - _vm._g({ on: { click: _vm._onClick } }, _vm.$listeners), - [_vm._t("default")], - 2 - ) -} -var staticRenderFns = [] -render._withStripped = true - - -// CONCATENATED MODULE: ./src/core/view/components/label/index.vue?vue&type=template&id=04b5b291& - -// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/label/index.vue?vue&type=script&lang=js& -var labelvue_type_script_lang_js_ = __webpack_require__(23); - -// CONCATENATED MODULE: ./src/core/view/components/label/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_labelvue_type_script_lang_js_ = (labelvue_type_script_lang_js_["a" /* default */]); -// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js -var componentNormalizer = __webpack_require__(0); - -// CONCATENATED MODULE: ./src/core/view/components/label/index.vue - - - - - -/* normalize component */ - -var component = Object(componentNormalizer["a" /* default */])( - components_labelvue_type_script_lang_js_, - render, - staticRenderFns, - false, - null, - null, - null - -) - -/* hot reload */ -if (false) { var api; } -component.options.__file = "src/core/view/components/label/index.vue" -/* harmony default export */ var label = __webpack_exports__["default"] = (component.exports); - -/***/ }), -/* 112 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); - -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/canvas/index.vue?vue&type=template&id=6ef05d9e& +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/scroll-view/index.vue?vue&type=template&id=e9d562fc& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h - return _c( - "uni-canvas", - _vm._g( - { - attrs: { - "canvas-id": _vm.canvasId, - "disable-scroll": _vm.disableScroll - } - }, - _vm._listeners - ), - [ - _c("canvas", { ref: "canvas", attrs: { width: "300", height: "150" } }), + return _c("uni-scroll-view", _vm._g({}, _vm.$listeners), [ + _c("div", { ref: "wrap", staticClass: "uni-scroll-view" }, [ _c( "div", { - staticStyle: { - position: "absolute", - top: "0", - left: "0", - width: "100%", - height: "100%", - overflow: "hidden" + ref: "main", + staticClass: "uni-scroll-view", + style: { + "overflow-x": _vm.scrollX ? "auto" : "hidden", + "overflow-y": _vm.scrollY ? "auto" : "hidden" } }, - [_vm._t("default")], - 2 - ), - _c("v-uni-resize-sensor", { ref: "sensor", on: { resize: _vm._resize } }) - ], - 1 - ) + [_c("div", { ref: "content" }, [_vm._t("default")], 2)] + ) + ]) + ]) } var staticRenderFns = [] render._withStripped = true -// CONCATENATED MODULE: ./src/core/view/components/canvas/index.vue?vue&type=template&id=6ef05d9e& +// CONCATENATED MODULE: ./src/core/view/components/scroll-view/index.vue?vue&type=template&id=e9d562fc& -// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/canvas/index.vue?vue&type=script&lang=js& -var canvasvue_type_script_lang_js_ = __webpack_require__(16); +// EXTERNAL MODULE: ./src/core/view/mixins/scroller/index.js + 2 modules +var scroller = __webpack_require__(47); -// CONCATENATED MODULE: ./src/core/view/components/canvas/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_canvasvue_type_script_lang_js_ = (canvasvue_type_script_lang_js_["a" /* default */]); -// EXTERNAL MODULE: ./src/core/view/components/canvas/index.vue?vue&type=style&index=0&lang=css& -var canvasvue_type_style_index_0_lang_css_ = __webpack_require__(68); +// EXTERNAL MODULE: ./src/shared/index.js + 4 modules +var shared = __webpack_require__(2); -// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js -var componentNormalizer = __webpack_require__(0); +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/scroll-view/index.vue?vue&type=script&lang=js& +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// -// CONCATENATED MODULE: ./src/core/view/components/canvas/index.vue +var passiveOptions = shared["f" /* supportsPassive */] ? { + passive: true +} : false; +/* harmony default export */ var scroll_viewvue_type_script_lang_js_ = ({ + name: 'ScrollView', + mixins: [scroller["a" /* default */]], + props: { + scrollX: { + type: [Boolean, String], + default: false + }, + scrollY: { + type: [Boolean, String], + default: false + }, + upperThreshold: { + type: [Number, String], + default: 50 + }, + lowerThreshold: { + type: [Number, String], + default: 50 + }, + scrollTop: { + type: [Number, String], + default: 0 + }, + scrollLeft: { + type: [Number, String], + default: 0 + }, + scrollIntoView: { + type: String, + default: '' + }, + scrollWithAnimation: { + type: [Boolean, String], + default: false + }, + enableBackToTop: { + type: [Boolean, String], + default: false + } + }, + data: function data() { + return { + lastScrollTop: this.scrollTopNumber, + lastScrollLeft: this.scrollLeftNumber, + lastScrollToUpperTime: 0, + lastScrollToLowerTime: 0 + }; + }, + computed: { + upperThresholdNumber: function upperThresholdNumber() { + var val = Number(this.upperThreshold); + return isNaN(val) ? 50 : val; + }, + lowerThresholdNumber: function lowerThresholdNumber() { + var val = Number(this.lowerThreshold); + return isNaN(val) ? 50 : val; + }, + scrollTopNumber: function scrollTopNumber() { + return Number(this.scrollTop) || 0; + }, + scrollLeftNumber: function scrollLeftNumber() { + return Number(this.scrollLeft) || 0; + } + }, + watch: { + scrollTopNumber: function scrollTopNumber(val) { + this._scrollTopChanged(val); + }, + scrollLeftNumber: function scrollLeftNumber(val) { + this._scrollLeftChanged(val); + }, + scrollIntoView: function scrollIntoView(val) { + this._scrollIntoViewChanged(val); + } + }, + mounted: function mounted() { + var self = this; + this._attached = true; + + this._scrollTopChanged(this.scrollTopNumber); + this._scrollLeftChanged(this.scrollLeftNumber); + this._scrollIntoViewChanged(this.scrollIntoView); + this.__handleScroll = function (e) { + event.preventDefault(); + event.stopPropagation(); + self._handleScroll.bind(self, event)(); + }; -/* normalize component */ + var touchStart = null; + var needStop = null; -var component = Object(componentNormalizer["a" /* default */])( - components_canvasvue_type_script_lang_js_, - render, - staticRenderFns, - false, - null, - null, - null - -) + this.__handleTouchMove = function (event) { + var x = event.touches[0].pageX; + var y = event.touches[0].pageY; + var main = self.$refs.main; -/* hot reload */ -if (false) { var api; } -component.options.__file = "src/core/view/components/canvas/index.vue" -/* harmony default export */ var canvas = __webpack_exports__["default"] = (component.exports); + if (needStop === null) { + if (Math.abs(x - touchStart.x) > Math.abs(y - touchStart.y)) { + // 横向滑动 + if (self.scrollX) { + if (main.scrollLeft === 0 && x > touchStart.x) { + needStop = false; + return; + } else if (main.scrollWidth === main.offsetWidth + main.scrollLeft && x < touchStart.x) { + needStop = false; + return; + } -/***/ }), -/* 113 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { + needStop = true; + } else { + needStop = false; + } + } else { + // 纵向滑动 + if (self.scrollY) { + if (main.scrollTop === 0 && y > touchStart.y) { + needStop = false; + return; + } else if (main.scrollHeight === main.offsetHeight + main.scrollTop && y < touchStart.y) { + needStop = false; + return; + } -"use strict"; -__webpack_require__.r(__webpack_exports__); + needStop = true; + } else { + needStop = false; + } + } + } -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/movable-area/index.vue?vue&type=script&lang=js& -function calc(e) { - return Math.sqrt(e.x * e.x + e.y * e.y); -} + if (needStop) { + event.stopPropagation(); + } + }; -/* harmony default export */ var movable_areavue_type_script_lang_js_ = ({ - name: 'MovableArea', - props: { - scaleArea: { - type: Boolean, - default: false - } - }, - data: function data() { - return { - width: 0, - height: 0, - items: [] + this.__handleTouchStart = function (event) { + if (event.touches.length === 1) { + needStop = null; + touchStart = { + x: event.touches[0].pageX, + y: event.touches[0].pageY + }; + } }; + + this.$refs.main.addEventListener('touchstart', this.__handleTouchStart, passiveOptions); + this.$refs.main.addEventListener('touchmove', this.__handleTouchMove, passiveOptions); + this.$refs.main.addEventListener('scroll', this.__handleScroll, shared["f" /* supportsPassive */] ? { + passive: false + } : false); }, - created: function created() { - this.gapV = { - x: null, - y: null - }; - this.pinchStartLen = null; + activated: function activated() { + // 还原 scroll-view 滚动位置 + this.scrollY && (this.$refs.main.scrollTop = this.lastScrollTop); + this.scrollX && (this.$refs.main.scrollLeft = this.lastScrollLeft); }, - mounted: function mounted() { - this._resize(); + beforeDestroy: function beforeDestroy() { + this.$refs.main.removeEventListener('touchstart', this.__handleTouchStart, passiveOptions); + this.$refs.main.removeEventListener('touchmove', this.__handleTouchMove, passiveOptions); + this.$refs.main.removeEventListener('scroll', this.__handleScroll, shared["f" /* supportsPassive */] ? { + passive: false + } : false); }, methods: { - _resize: function _resize() { - this._getWH(); - - this.items.forEach(function (item, index) { - item.componentInstance.setParent(); - }); - }, - _find: function _find(target) { - var items = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.items; - var root = this.$el; + scrollTo: function scrollTo(t, n) { + var i = this.$refs.main; + t < 0 ? t = 0 : n === 'x' && t > i.scrollWidth - i.offsetWidth ? t = i.scrollWidth - i.offsetWidth : n === 'y' && t > i.scrollHeight - i.offsetHeight && (t = i.scrollHeight - i.offsetHeight); + var r = 0; + var o = ''; + n === 'x' ? r = i.scrollLeft - t : n === 'y' && (r = i.scrollTop - t); - function get(node) { - for (var i = 0; i < items.length; i++) { - var item = items[i]; + if (r !== 0) { + this.$refs.content.style.transition = 'transform .3s ease-out'; + this.$refs.content.style.webkitTransition = '-webkit-transform .3s ease-out'; - if (node === item.componentInstance.$el) { - return item; - } + if (n === 'x') { + o = 'translateX(' + r + 'px) translateZ(0)'; + } else { + n === 'y' && (o = 'translateY(' + r + 'px) translateZ(0)'); } - if (node === root || node === document.body || node === document) { - return null; + this.$refs.content.removeEventListener('transitionend', this.__transitionEnd); + this.$refs.content.removeEventListener('webkitTransitionEnd', this.__transitionEnd); + this.__transitionEnd = this._transitionEnd.bind(this, t, n); + this.$refs.content.addEventListener('transitionend', this.__transitionEnd); + this.$refs.content.addEventListener('webkitTransitionEnd', this.__transitionEnd); + + if (n === 'x') { + // if (e !== 'ios') { + i.style.overflowX = 'hidden'; // } + } else if (n === 'y') { + i.style.overflowY = 'hidden'; } - return get(node.parentNode); + this.$refs.content.style.transform = o; + this.$refs.content.style.webkitTransform = o; } - - return get(target); }, - _touchstart: function _touchstart(t) { - var i = t.touches; - - if (i) { - if (i.length > 1) { - var r = { - x: i[1].pageX - i[0].pageX, - y: i[1].pageY - i[0].pageY - }; - this.pinchStartLen = calc(r); - this.gapV = r; + _handleTrack: function _handleTrack($event) { + if ($event.detail.state === 'start') { + this._x = $event.detail.x; + this._y = $event.detail.y; + this._noBubble = null; + return; + } - if (!this.scaleArea) { - var touch0 = this._find(i[0].target); + if ($event.detail.state === 'end') { + this._noBubble = false; + } - var touch1 = this._find(i[1].target); + if (this._noBubble === null && this.scrollY) { + if (Math.abs(this._y - $event.detail.y) / Math.abs(this._x - $event.detail.x) > 1) { + this._noBubble = true; + } else { + this._noBubble = false; + } + } - this._scaleMovableView = touch0 && touch0 === touch1 ? touch0 : null; - } + if (this._noBubble === null && this.scrollX) { + if (Math.abs(this._x - $event.detail.x) / Math.abs(this._y - $event.detail.y) > 1) { + this._noBubble = true; + } else { + this._noBubble = false; } } - }, - _touchmove: function _touchmove(t) { - var n = t.touches; - if (n) { - if (n.length > 1) { - t.preventDefault(); - var i = { - x: n[1].pageX - n[0].pageX, - y: n[1].pageY - n[0].pageY - }; + this._x = $event.detail.x; + this._y = $event.detail.y; - if (this.gapV.x !== null && this.pinchStartLen > 0) { - var r = calc(i) / this.pinchStartLen; + if (this._noBubble) { + $event.stopPropagation(); + } + }, + _handleScroll: function _handleScroll($event) { + if (!($event.timeStamp - this._lastScrollTime < 20)) { + this._lastScrollTime = $event.timeStamp; + var target = $event.target; + this.$trigger('scroll', $event, { + scrollLeft: target.scrollLeft, + scrollTop: target.scrollTop, + scrollHeight: target.scrollHeight, + scrollWidth: target.scrollWidth, + deltaX: this.lastScrollLeft - target.scrollLeft, + deltaY: this.lastScrollTop - target.scrollTop + }); - this._updateScale(r); + if (this.scrollY) { + if (target.scrollTop <= this.upperThresholdNumber && this.lastScrollTop - target.scrollTop > 0 && $event.timeStamp - this.lastScrollToUpperTime > 200) { + this.$trigger('scrolltoupper', $event, { + direction: 'top' + }); + this.lastScrollToUpperTime = $event.timeStamp; } - this.gapV = i; + if (target.scrollTop + target.offsetHeight + this.lowerThresholdNumber >= target.scrollHeight && this.lastScrollTop - target.scrollTop < 0 && $event.timeStamp - this.lastScrollToLowerTime > 200) { + this.$trigger('scrolltolower', $event, { + direction: 'bottom' + }); + this.lastScrollToLowerTime = $event.timeStamp; + } } - } - }, - _touchend: function _touchend(e) { - var t = e.touches; - if (!(t && t.length)) { - if (e.changedTouches) { - this.gapV.x = 0; - this.gapV.y = 0; - this.pinchStartLen = null; + if (this.scrollX) { + if (target.scrollLeft <= this.upperThresholdNumber && this.lastScrollLeft - target.scrollLeft > 0 && $event.timeStamp - this.lastScrollToUpperTime > 200) { + this.$trigger('scrolltoupper', $event, { + direction: 'left' + }); + this.lastScrollToUpperTime = $event.timeStamp; + } - if (this.scaleArea) { - this.items.forEach(function (item) { - item.componentInstance._endScale(); + if (target.scrollLeft + target.offsetWidth + this.lowerThresholdNumber >= target.scrollWidth && this.lastScrollLeft - target.scrollLeft < 0 && $event.timeStamp - this.lastScrollToLowerTime > 200) { + this.$trigger('scrolltolower', $event, { + direction: 'right' }); + this.lastScrollToLowerTime = $event.timeStamp; + } + } + + this.lastScrollTop = target.scrollTop; + this.lastScrollLeft = target.scrollLeft; + } + }, + _scrollTopChanged: function _scrollTopChanged(val) { + if (this.scrollY) { + if (this._innerSetScrollTop) { + this._innerSetScrollTop = false; + } else { + if (this.scrollWithAnimation) { + this.scrollTo(val, 'y'); } else { - if (this._scaleMovableView) { - this._scaleMovableView.componentInstance._endScale(); - } + this.$refs.main.scrollTop = val; } } } }, - _updateScale: function _updateScale(e) { - if (e && e !== 1) { - if (this.scaleArea) { - this.items.forEach(function (item) { - item.componentInstance._setScale(e); - }); + _scrollLeftChanged: function _scrollLeftChanged(val) { + if (this.scrollX) { + if (this._innerSetScrollLeft) { + this._innerSetScrollLeft = false; } else { - if (this._scaleMovableView) { - this._scaleMovableView.componentInstance._setScale(e); + if (this.scrollWithAnimation) { + this.scrollTo(val, 'x'); + } else { + this.$refs.main.scrollLeft = val; } } } }, - _getWH: function _getWH() { - var style = window.getComputedStyle(this.$el); - var rect = this.$el.getBoundingClientRect(); - this.width = rect.width - ['Left', 'Right'].reduce(function (all, item) { - return all + parseFloat(style['border' + item + 'Width']) + parseFloat(style['padding' + item]); - }, 0); - this.height = rect.height - ['Top', 'Bottom'].reduce(function (all, item) { - return all + parseFloat(style['border' + item + 'Width']) + parseFloat(style['padding' + item]); - }, 0); - } - }, - render: function render(createElement) { - var _this = this; + _scrollIntoViewChanged: function _scrollIntoViewChanged(val) { + if (val) { + if (!/^[_a-zA-Z][-_a-zA-Z0-9:]*$/.test(val)) { + console.group('scroll-into-view="' + val + '" 有误'); + console.error('id 属性值格式错误。如不能以数字开头。'); + console.groupEnd(); + return; + } - var items = []; + var element = this.$el.querySelector('#' + val); - if (this.$slots.default) { - this.$slots.default.forEach(function (vnode) { - if (vnode.componentOptions && vnode.componentOptions.tag === 'v-uni-movable-view') { - items.push(vnode); - } - }); - } + if (element) { + var mainRect = this.$refs.main.getBoundingClientRect(); + var elRect = element.getBoundingClientRect(); - this.items = items; - var $listeners = Object.assign({}, this.$listeners); - var events = ['touchstart', 'touchmove', 'touchend']; - events.forEach(function (event) { - var existing = $listeners[event]; + if (this.scrollX) { + var left = elRect.left - mainRect.left; + var scrollLeft = this.$refs.main.scrollLeft; + var x = scrollLeft + left; - var ours = _this["_".concat(event)]; + if (this.scrollWithAnimation) { + this.scrollTo(x, 'x'); + } else { + this.$refs.main.scrollLeft = x; + } + } - $listeners[event] = existing ? [].concat(existing, ours) : ours; - }); - return createElement('uni-movable-area', { - on: $listeners - }, [createElement('v-uni-resize-sensor', { - on: { - resize: this._resize + if (this.scrollY) { + var top = elRect.top - mainRect.top; + var scrollTop = this.$refs.main.scrollTop; + var y = scrollTop + top; + + if (this.scrollWithAnimation) { + this.scrollTo(y, 'y'); + } else { + this.$refs.main.scrollTop = y; + } + } + } } - })].concat(items)); + }, + _transitionEnd: function _transitionEnd(val, type) { + this.$refs.content.style.transition = ''; + this.$refs.content.style.webkitTransition = ''; + this.$refs.content.style.transform = ''; + this.$refs.content.style.webkitTransform = ''; + var main = this.$refs.main; + + if (type === 'x') { + main.style.overflowX = this.scrollX ? 'auto' : 'hidden'; + main.scrollLeft = val; + } else if (type === 'y') { + main.style.overflowY = this.scrollY ? 'auto' : 'hidden'; + main.scrollTop = val; + } + + this.$refs.content.removeEventListener('transitionend', this.__transitionEnd); + this.$refs.content.removeEventListener('webkitTransitionEnd', this.__transitionEnd); + }, + getScrollPosition: function getScrollPosition() { + var main = this.$refs.main; + return { + scrollLeft: main.scrollLeft, + scrollTop: main.scrollTop + }; + } } }); -// CONCATENATED MODULE: ./src/core/view/components/movable-area/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_movable_areavue_type_script_lang_js_ = (movable_areavue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/movable-area/index.vue?vue&type=style&index=0&lang=css& -var movable_areavue_type_style_index_0_lang_css_ = __webpack_require__(74); +// CONCATENATED MODULE: ./src/core/view/components/scroll-view/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_scroll_viewvue_type_script_lang_js_ = (scroll_viewvue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/scroll-view/index.vue?vue&type=style&index=0&lang=css& +var scroll_viewvue_type_style_index_0_lang_css_ = __webpack_require__(84); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); -// CONCATENATED MODULE: ./src/core/view/components/movable-area/index.vue -var render, staticRenderFns +// CONCATENATED MODULE: ./src/core/view/components/scroll-view/index.vue + @@ -20453,7 +20101,7 @@ var render, staticRenderFns /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_movable_areavue_type_script_lang_js_, + components_scroll_viewvue_type_script_lang_js_, render, staticRenderFns, false, @@ -20465,147 +20113,130 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/movable-area/index.vue" -/* harmony default export */ var movable_area = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/scroll-view/index.vue" +/* harmony default export */ var scroll_view = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 114 */ +/* 112 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); -// EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules -var mixins = __webpack_require__(1); +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/label/index.vue?vue&type=template&id=04b5b291& +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "uni-label", + _vm._g({ on: { click: _vm._onClick } }, _vm.$listeners), + [_vm._t("default")], + 2 + ) +} +var staticRenderFns = [] +render._withStripped = true -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/button/index.vue?vue&type=script&lang=js& -/* harmony default export */ var buttonvue_type_script_lang_js_ = ({ - name: 'Button', - mixins: [mixins["b" /* hover */], mixins["a" /* emitter */], mixins["c" /* listeners */]], - props: { - hoverClass: { - type: String, - default: 'button-hover' - }, - disabled: { - type: [Boolean, String], - default: false - }, - id: { - type: String, - default: '' - }, - hoverStopPropagation: { - type: Boolean, - default: false - }, - hoverStartTime: { - type: Number, - default: 20 - }, - hoverStayTime: { - type: Number, - default: 70 - }, - formType: { - type: String, - default: '', - validator: function validator(value) { - // 只有这几个可取值,其它都是非法的。 - return ~['', 'submit', 'reset'].indexOf(value); - } - } - }, - data: function data() { - return { - clickFunction: null - }; - }, - methods: { - _onClick: function _onClick($event, isLabelClick) { - if (this.disabled) { - return; - } +// CONCATENATED MODULE: ./src/core/view/components/label/index.vue?vue&type=template&id=04b5b291& - if (isLabelClick) { - this.$el.click(); - } // TODO 通知父表单执行相应的行为 +// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/label/index.vue?vue&type=script&lang=js& +var labelvue_type_script_lang_js_ = __webpack_require__(23); +// CONCATENATED MODULE: ./src/core/view/components/label/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_labelvue_type_script_lang_js_ = (labelvue_type_script_lang_js_["a" /* default */]); +// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js +var componentNormalizer = __webpack_require__(0); - if (this.formType) { - this.$dispatch('Form', this.formType === 'submit' ? 'uni-form-submit' : 'uni-form-reset', { - type: this.formType - }); - } - }, - _bindObjectListeners: function _bindObjectListeners(data, value) { - if (value) { - for (var key in value) { - var existing = data.on[key]; - var ours = value[key]; - data.on[key] = existing ? [].concat(existing, ours) : ours; - } - } +// CONCATENATED MODULE: ./src/core/view/components/label/index.vue - return data; - } - }, - render: function render(createElement) { - var _this = this; - var $listeners = Object.create(null); - if (this.$listeners) { - Object.keys(this.$listeners).forEach(function (e) { - if (_this.disabled && (e === 'click' || e === 'tap')) { - return; - } - $listeners[e] = _this.$listeners[e]; - }); - } - if (this.hoverClass && this.hoverClass !== 'none') { - return createElement('uni-button', this._bindObjectListeners({ - class: [this.hovering ? this.hoverClass : ''], +/* normalize component */ + +var component = Object(componentNormalizer["a" /* default */])( + components_labelvue_type_script_lang_js_, + render, + staticRenderFns, + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "src/core/view/components/label/index.vue" +/* harmony default export */ var label = __webpack_exports__["default"] = (component.exports); + +/***/ }), +/* 113 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); + +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"26557f38-vue-loader-template"}!./node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/canvas/index.vue?vue&type=template&id=6ef05d9e& +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "uni-canvas", + _vm._g( + { attrs: { - 'disabled': this.disabled - }, - on: { - touchstart: this._hoverTouchStart, - touchend: this._hoverTouchEnd, - touchcancel: this._hoverTouchCancel, - click: this._onClick + "canvas-id": _vm.canvasId, + "disable-scroll": _vm.disableScroll } - }, $listeners), this.$slots.default); - } else { - return createElement('uni-button', this._bindObjectListeners({ - class: [this.hovering ? this.hoverClass : ''], - attrs: { - 'disabled': this.disabled + }, + _vm._listeners + ), + [ + _c("canvas", { ref: "canvas", attrs: { width: "300", height: "150" } }), + _c( + "div", + { + staticStyle: { + position: "absolute", + top: "0", + left: "0", + width: "100%", + height: "100%", + overflow: "hidden" + } }, - on: { - click: this._onClick - } - }, $listeners), this.$slots.default); - } - }, - listeners: { - 'label-click': '_onClick', - '@label-click': '_onClick' - } -}); -// CONCATENATED MODULE: ./src/core/view/components/button/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_buttonvue_type_script_lang_js_ = (buttonvue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/button/index.vue?vue&type=style&index=0&lang=css& -var buttonvue_type_style_index_0_lang_css_ = __webpack_require__(67); + [_vm._t("default")], + 2 + ), + _c("v-uni-resize-sensor", { ref: "sensor", on: { resize: _vm._resize } }) + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true + + +// CONCATENATED MODULE: ./src/core/view/components/canvas/index.vue?vue&type=template&id=6ef05d9e& + +// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/canvas/index.vue?vue&type=script&lang=js& +var canvasvue_type_script_lang_js_ = __webpack_require__(16); + +// CONCATENATED MODULE: ./src/core/view/components/canvas/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_canvasvue_type_script_lang_js_ = (canvasvue_type_script_lang_js_["a" /* default */]); +// EXTERNAL MODULE: ./src/core/view/components/canvas/index.vue?vue&type=style&index=0&lang=css& +var canvasvue_type_style_index_0_lang_css_ = __webpack_require__(69); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); -// CONCATENATED MODULE: ./src/core/view/components/button/index.vue -var render, staticRenderFns +// CONCATENATED MODULE: ./src/core/view/components/canvas/index.vue + @@ -20614,7 +20245,7 @@ var render, staticRenderFns /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_buttonvue_type_script_lang_js_, + components_canvasvue_type_script_lang_js_, render, staticRenderFns, false, @@ -20626,11 +20257,11 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/button/index.vue" -/* harmony default export */ var components_button = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/canvas/index.vue" +/* harmony default export */ var canvas = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 115 */ +/* 114 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -20801,579 +20432,960 @@ var touchtrack = __webpack_require__(8); mounted: function mounted() { var _this = this; - this._currentCheck(); + this._currentCheck(); + + this.touchtrack(this.$refs.slidesWrapper, '_handleContentTrack', true); + + this._resetLayout(); + + this.$watch(function () { + return _this.autoplay && !_this.userTracking; + }, this._inintAutoplay); + + this._inintAutoplay(this.autoplay && !this.userTracking); + + this.$watch('items.length', this._resetLayout); + }, + beforeDestroy: function beforeDestroy() { + this._cancelSchedule(); + }, + methods: { + _inintAutoplay: function _inintAutoplay(enable) { + if (enable) { + this._scheduleAutoplay(); + } else { + this._cancelSchedule(); + } + }, + + /** + * 页面变更检查和同步 + */ + _currentCheck: function _currentCheck() { + var current = -1; + + if (this.currentItemId) { + for (var i = 0, items = this.items; i < items.length; i++) { + var componentInstance = items[i].componentInstance; + + if (componentInstance && componentInstance.itemId === this.currentItemId) { + current = i; + break; + } + } + } + + if (current < 0) { + current = Math.round(this.current) || 0; + } + + current = current < 0 ? 0 : current; + + if (this.currentSync !== current) { + this.currentChangeSource = ''; + this.currentSync = current; + } + }, + _itemReady: function _itemReady(vnode, callback) { + if (vnode.componentInstance && vnode.componentInstance._isMounted) { + callback(); + } else { + vnode._callbacks = vnode._callbacks || []; + + vnode._callbacks.push(callback); + } + }, + + /** + * 当前页面变更 + */ + _currentChanged: function _currentChanged(current) { + var _this2 = this; + + var source = this.currentChangeSource; + this.currentChangeSource = ''; + + if (!source) { + this._animateViewport(current, '', 0); + } + + var item = this.items[current]; + + if (item) { + this._itemReady(item, function () { + var currentItemId = _this2.currentItemIdSync = item.componentInstance.itemId || ''; + + _this2.$trigger('change', {}, { + current: _this2.currentSync, + currentItemId: currentItemId, + source: source + }); + }); + } + }, + + /** + * 自动播放 + */ + _scheduleAutoplay: function _scheduleAutoplay() { + var self = this; + + this._cancelSchedule(); + + function timer() { + self._timer = null; + self.currentChangeSource = 'autoplay'; + + if (self.circularEnabled) { + self.currentSync = self._normalizeCurrentValue(self.currentSync + 1); + } else { + self.currentSync = self.currentSync + self.displayMultipleItemsNumber < self.items.length ? self.currentSync + 1 : 0; + } + + self._animateViewport(self.currentSync, 'autoplay', self.circularEnabled ? 1 : 0); + + self._timer = setTimeout(timer, self.intervalNumber); + } + + if (!(!this._isMounted || this._invalid || this.items.length <= this.displayMultipleItemsNumber)) { + this._timer = setTimeout(timer, this.intervalNumber); + } + }, + + /** + * 清除定时器 + */ + _cancelSchedule: function _cancelSchedule() { + if (this._timer) { + clearTimeout(this._timer); + this._timer = null; + } + }, + + /** + * 检查当前页值 + */ + _normalizeCurrentValue: function _normalizeCurrentValue(current) { + var length = this.items.length; + + if (!length) { + return -1; + } + + var index = (Math.round(current) % length + length) % length; + + if (this.circularEnabled) { + if (length <= this.displayMultipleItemsNumber) { + return 0; + } + } else if (index > length - this.displayMultipleItemsNumber) { + return length - this.displayMultipleItemsNumber; + } + + return index; + }, + _upx2px: function _upx2px(val) { + if (/\d+[ur]px$/i.test(val)) { + val.replace(/\d+[ur]px$/i, function (text) { + return "".concat(uni.upx2px(parseFloat(text)), "px"); + }); + } + + return val || ''; + }, + + /** + * 重新布局 + */ + _resetLayout: function _resetLayout() { + if (this._isMounted) { + this._cancelSchedule(); + + this._endViewportAnimation(); - this.touchtrack(this.$refs.slidesWrapper, '_handleContentTrack', true); + var items = this.items; - this._resetLayout(); + for (var i = 0; i < items.length; i++) { + this._updateItemPos(i, i); + } - this.$watch(function () { - return _this.autoplay && !_this.userTracking; - }, this._inintAutoplay); + this._viewportMoveRatio = 1; - this._inintAutoplay(this.autoplay && !this.userTracking); + if (this.displayMultipleItemsNumber === 1 && items.length) { + var itemRect = items[0].componentInstance.$el.getBoundingClientRect(); + var slideFrameRect = this.$refs.slideFrame.getBoundingClientRect(); + this._viewportMoveRatio = itemRect.width / slideFrameRect.width; - this.$watch('items.length', this._resetLayout); - }, - beforeDestroy: function beforeDestroy() { - this._cancelSchedule(); - }, - methods: { - _inintAutoplay: function _inintAutoplay(enable) { - if (enable) { - this._scheduleAutoplay(); - } else { - this._cancelSchedule(); - } - }, + if (!(this._viewportMoveRatio > 0 && this._viewportMoveRatio < 1)) { + this._viewportMoveRatio = 1; + } + } - /** - * 页面变更检查和同步 - */ - _currentCheck: function _currentCheck() { - var current = -1; + var position = this._viewportPosition; + this._viewportPosition = -2; + var current = this.currentSync; - if (this.currentItemId) { - for (var i = 0, items = this.items; i < items.length; i++) { - var componentInstance = items[i].componentInstance; + if (current >= 0) { + this._invalid = false; - if (componentInstance && componentInstance.itemId === this.currentItemId) { - current = i; - break; + if (this.userTracking) { + this._updateViewport(position + current - this._contentTrackViewport); + + this._contentTrackViewport = current; + } else { + this._updateViewport(current); + + if (this.autoplay) { + this._scheduleAutoplay(); + } + } + } else { + this._invalid = true; + + this._updateViewport(-this.displayMultipleItemsNumber - 1); + } + } + }, + _checkCircularLayout: function _checkCircularLayout(e) { + if (!this._invalid) { + for (var items = this.items, n = items.length, i = e + this.displayMultipleItemsNumber, r = 0; r < n; r++) { + var item = items[r]; + var _position = item._position; + var s = Math.floor(e / n) * n + r; + var l = s + n; + var c = s - n; + var u = Math.max(e - (s + 1), s - i, 0); + var d = Math.max(e - (l + 1), l - i, 0); + var h = Math.max(e - (c + 1), c - i, 0); + var p = Math.min(u, d, h); + var f = [s, l, c][[u, d, h].indexOf(p)]; + + if (_position !== f) { + this._updateItemPos(r, f); } } } + }, + _updateItemPos: function _updateItemPos(current, position) { + var x = this.vertical ? '0' : 100 * position + '%'; + var y = this.vertical ? 100 * position + '%' : '0'; + var transform = 'translate(' + x + ', ' + y + ') translateZ(0)'; + var item = this.items[current]; - if (current < 0) { - current = Math.round(this.current) || 0; + this._itemReady(item, function () { + var el = item.componentInstance.$el; + el.style['-webkit-transform'] = transform; + el.style.transform = transform; + el._position = position; + }); + }, + _updateViewport: function _updateViewport(index) { + if (!(Math.floor(2 * this._viewportPosition) === Math.floor(2 * index) && Math.ceil(2 * this._viewportPosition) === Math.ceil(2 * index))) { + if (this.circularEnabled) { + this._checkCircularLayout(index); + } } - current = current < 0 ? 0 : current; + var x = this.vertical ? '0' : 100 * -index * this._viewportMoveRatio + '%'; + var y = this.vertical ? 100 * -index * this._viewportMoveRatio + '%' : '0'; + var transform = 'translate(' + x + ', ' + y + ') translateZ(0)'; + var slideFrame = this.$refs.slideFrame; - if (this.currentSync !== current) { - this.currentChangeSource = ''; - this.currentSync = current; + if (slideFrame) { + slideFrame.style['-webkit-transform'] = transform; + slideFrame.style.transform = transform; } - }, - _itemReady: function _itemReady(vnode, callback) { - if (vnode.componentInstance && vnode.componentInstance._isMounted) { - callback(); - } else { - vnode._callbacks = vnode._callbacks || []; - vnode._callbacks.push(callback); + this._viewportPosition = index; + + if (!this._transitionStart) { + if (index % 1 === 0) { + return; + } + + this._transitionStart = index; } - }, - /** - * 当前页面变更 - */ - _currentChanged: function _currentChanged(current) { - var _this2 = this; + index -= Math.floor(this._transitionStart); - var source = this.currentChangeSource; - this.currentChangeSource = ''; + if (index <= -(this.items.length - 1)) { + index += this.items.length; + } else if (index >= this.items.length) { + index -= this.items.length; + } - if (!source) { - this._animateViewport(current, '', 0); + index = this._transitionStart % 1 > 0.5 || this._transitionStart < 0 ? index - 1 : index; + this.$trigger('transition', {}, { + dx: this.vertical ? 0 : index * slideFrame.offsetWidth, + dy: this.vertical ? index * slideFrame.offsetHeight : 0 + }); + }, + _animateFrameFuncProto: function _animateFrameFuncProto() { + var _this3 = this; + + if (!this._animating) { + this._requestedAnimation = false; + return; } - var item = this.items[current]; + var _animating = this._animating; + var toPos = _animating.toPos; + var acc = _animating.acc; + var endTime = _animating.endTime; + var source = _animating.source; + var time = endTime - Date.now(); - if (item) { - this._itemReady(item, function () { - var currentItemId = _this2.currentItemIdSync = item.componentInstance.itemId || ''; + if (time <= 0) { + this._updateViewport(toPos); - _this2.$trigger('change', {}, { - current: _this2.currentSync, - currentItemId: currentItemId, - source: source + this._animating = null; + this._requestedAnimation = false; + this._transitionStart = null; + var item = this.items[this.currentSync]; + + if (item) { + this._itemReady(item, function () { + var currentItemId = item.componentInstance.itemId || ''; + + _this3.$trigger('animationfinish', {}, { + current: _this3.currentSync, + currentItemId: currentItemId, + source: source + }); }); - }); + } + + return; } + + var s = acc * time * time / 2; + var l = toPos + s; + + this._updateViewport(l); + + requestAnimationFrame(this._animateFrameFuncProto.bind(this)); }, + _animateViewport: function _animateViewport(current, source, n) { + this._cancelViewportAnimation(); - /** - * 自动播放 - */ - _scheduleAutoplay: function _scheduleAutoplay() { - var self = this; + var duration = this.durationNumber; + var length = this.items.length; + var position = this._viewportPosition; - this._cancelSchedule(); + if (this.circularEnabled) { + if (n < 0) { + for (; position < current;) { + position += length; + } - function timer() { - self._timer = null; - self.currentChangeSource = 'autoplay'; + for (; position - length > current;) { + position -= length; + } + } else if (n > 0) { + for (; position > current;) { + position -= length; + } - if (self.circularEnabled) { - self.currentSync = self._normalizeCurrentValue(self.currentSync + 1); + for (; position + length < current;) { + position += length; + } } else { - self.currentSync = self.currentSync + self.displayMultipleItemsNumber < self.items.length ? self.currentSync + 1 : 0; - } + for (; position + length < current;) { + position += length; + } - self._animateViewport(self.currentSync, 'autoplay', self.circularEnabled ? 1 : 0); + for (; position - length > current;) { + position -= length; + } - self._timer = setTimeout(timer, self.intervalNumber); + if (position + length - current < current - position) { + position += length; + } + } } - if (!(!this._isMounted || this._invalid || this.items.length <= this.displayMultipleItemsNumber)) { - this._timer = setTimeout(timer, this.intervalNumber); + this._animating = { + toPos: current, + acc: 2 * (position - current) / (duration * duration), + endTime: Date.now() + duration, + source: source + }; + + if (!this._requestedAnimation) { + this._requestedAnimation = true; + requestAnimationFrame(this._animateFrameFuncProto.bind(this)); } }, + _cancelViewportAnimation: function _cancelViewportAnimation() { + this._animating = null; + }, /** - * 清除定时器 + * 结束动画 */ - _cancelSchedule: function _cancelSchedule() { - if (this._timer) { - clearTimeout(this._timer); - this._timer = null; + _endViewportAnimation: function _endViewportAnimation() { + if (this._animating) { + this._updateViewport(this._animating.toPos); + + this._animating = null; } }, + _handleTrackStart: function _handleTrackStart() { + this._cancelSchedule(); - /** - * 检查当前页值 - */ - _normalizeCurrentValue: function _normalizeCurrentValue(current) { + this._contentTrackViewport = this._viewportPosition; + this._contentTrackSpeed = 0; + this._contentTrackT = Date.now(); + + this._cancelViewportAnimation(); + }, + _handleTrackMove: function _handleTrackMove(data) { + var self = this; + var contentTrackT = this._contentTrackT; + this._contentTrackT = Date.now(); var length = this.items.length; + var other = length - this.displayMultipleItemsNumber; - if (!length) { - return -1; + function calc(val) { + return 0.5 - 0.25 / (val + 0.5); } - var index = (Math.round(current) % length + length) % length; + function move(oldVal, newVal) { + var val = self._contentTrackViewport + oldVal; + self._contentTrackSpeed = 0.6 * self._contentTrackSpeed + 0.4 * newVal; - if (this.circularEnabled) { - if (length <= this.displayMultipleItemsNumber) { - return 0; + if (!self.circularEnabled) { + if (val < 0 || val > other) { + if (val < 0) { + val = -calc(-val); + } else { + if (val > other) { + val = other + calc(val - other); + } + } + + self._contentTrackSpeed = 0; + } } - } else if (index > length - this.displayMultipleItemsNumber) { - return length - this.displayMultipleItemsNumber; - } - return index; - }, - _upx2px: function _upx2px(val) { - if (/\d+[ur]px$/i.test(val)) { - val.replace(/\d+[ur]px$/i, function (text) { - return "".concat(uni.upx2px(parseFloat(text)), "px"); - }); + self._updateViewport(val); } - return val || ''; - }, + var time = this._contentTrackT - contentTrackT || 1; - /** - * 重新布局 - */ - _resetLayout: function _resetLayout() { - if (this._isMounted) { - this._cancelSchedule(); + if (this.vertical) { + move(-data.dy / this.$refs.slideFrame.offsetHeight, -data.ddy / time); + } else { + move(-data.dx / this.$refs.slideFrame.offsetWidth, -data.ddx / time); + } + }, + _handleTrackEnd: function _handleTrackEnd(isCancel) { + this.userTracking = false; + var t = this._contentTrackSpeed / Math.abs(this._contentTrackSpeed); + var n = 0; - this._endViewportAnimation(); + if (!isCancel && Math.abs(this._contentTrackSpeed) > 0.2) { + n = 0.5 * t; + } - var items = this.items; + var current = this._normalizeCurrentValue(this._viewportPosition + n); - for (var i = 0; i < items.length; i++) { - this._updateItemPos(i, i); - } + if (isCancel) { + this._updateViewport(this._contentTrackViewport); + } else { + this.currentChangeSource = 'touch'; + this.currentSync = current; - this._viewportMoveRatio = 1; + this._animateViewport(current, 'touch', n !== 0 ? n : current === 0 && this.circularEnabled && this._viewportPosition >= 1 ? 1 : 0); + } + }, + _handleContentTrack: function _handleContentTrack(e) { + if (!this._invalid) { + if (e.detail.state === 'start') { + this.userTracking = true; + this._userDirectionChecked = false; + return this._handleTrackStart(); + } // fixed by xxxxxx - if (this.displayMultipleItemsNumber === 1 && items.length) { - var itemRect = items[0].componentInstance.$el.getBoundingClientRect(); - var slideFrameRect = this.$refs.slideFrame.getBoundingClientRect(); - this._viewportMoveRatio = itemRect.width / slideFrameRect.width; - if (!(this._viewportMoveRatio > 0 && this._viewportMoveRatio < 1)) { - this._viewportMoveRatio = 1; - } + if (e.detail.state === 'end') { + return this._handleTrackEnd(false); } - var position = this._viewportPosition; - this._viewportPosition = -2; - var current = this.currentSync; + if (e.detail.state === 'cancel') { + return this._handleTrackEnd(true); + } - if (current >= 0) { - this._invalid = false; + if (this.userTracking) { + if (!this._userDirectionChecked) { + this._userDirectionChecked = true; + var t = Math.abs(e.detail.dx); + var n = Math.abs(e.detail.dy); - if (this.userTracking) { - this._updateViewport(position + current - this._contentTrackViewport); + if (t >= n && this.vertical) { + this.userTracking = false; + } else { + if (t <= n && !this.vertical) { + this.userTracking = false; + } + } - this._contentTrackViewport = current; - } else { - this._updateViewport(current); + if (!this.userTracking) { + if (this.autoplay) { + this._scheduleAutoplay(); + } - if (this.autoplay) { - this._scheduleAutoplay(); + return; } } - } else { - this._invalid = true; - this._updateViewport(-this.displayMultipleItemsNumber - 1); - } - } - }, - _checkCircularLayout: function _checkCircularLayout(e) { - if (!this._invalid) { - for (var items = this.items, n = items.length, i = e + this.displayMultipleItemsNumber, r = 0; r < n; r++) { - var item = items[r]; - var _position = item._position; - var s = Math.floor(e / n) * n + r; - var l = s + n; - var c = s - n; - var u = Math.max(e - (s + 1), s - i, 0); - var d = Math.max(e - (l + 1), l - i, 0); - var h = Math.max(e - (c + 1), c - i, 0); - var p = Math.min(u, d, h); - var f = [s, l, c][[u, d, h].indexOf(p)]; + this._handleTrackMove(e.detail); - if (_position !== f) { - this._updateItemPos(r, f); - } + return false; } } - }, - _updateItemPos: function _updateItemPos(current, position) { - var x = this.vertical ? '0' : 100 * position + '%'; - var y = this.vertical ? 100 * position + '%' : '0'; - var transform = 'translate(' + x + ', ' + y + ') translateZ(0)'; - var item = this.items[current]; + } + }, + render: function render(createElement) { + var slidesDots = []; + var swiperItems = []; - this._itemReady(item, function () { - var el = item.componentInstance.$el; - el.style['-webkit-transform'] = transform; - el.style.transform = transform; - el._position = position; + if (this.$slots.default) { + this.$slots.default.forEach(function (vnode) { + if (vnode.componentOptions && vnode.componentOptions.tag === 'v-uni-swiper-item') { + swiperItems.push(vnode); + } }); - }, - _updateViewport: function _updateViewport(index) { - if (!(Math.floor(2 * this._viewportPosition) === Math.floor(2 * index) && Math.ceil(2 * this._viewportPosition) === Math.ceil(2 * index))) { - if (this.circularEnabled) { - this._checkCircularLayout(index); + } + + for (var index = 0, length = swiperItems.length; index < length; index++) { + var currentSync = this.currentSync; + slidesDots.push(createElement('div', { + class: { + 'uni-swiper-dot': true, + 'uni-swiper-dot-active': index < currentSync + this.displayMultipleItemsNumber && index >= currentSync || index < currentSync + this.displayMultipleItemsNumber - length + }, + style: { + 'background': index === currentSync ? this.indicatorActiveColor : this.indicatorColor } - } + })); + } + + this.items = swiperItems; + var slidesWrapperChild = [createElement('div', { + ref: 'slides', + style: this.slidesStyle, + 'class': 'uni-swiper-slides' + }, [createElement('div', { + ref: 'slideFrame', + class: 'uni-swiper-slide-frame', + style: this.slideFrameStyle + }, swiperItems)])]; + + if (this.indicatorDots) { + slidesWrapperChild.push(createElement('div', { + ref: 'slidesDots', + 'class': ['uni-swiper-dots', this.vertical ? 'uni-swiper-dots-vertical' : 'uni-swiper-dots-horizontal'] + }, slidesDots)); + } + + return createElement('uni-swiper', [createElement('div', { + ref: 'slidesWrapper', + 'class': 'uni-swiper-wrapper', + on: this.$listeners + }, slidesWrapperChild)]); + } +}); +// CONCATENATED MODULE: ./src/core/view/components/swiper/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_swipervue_type_script_lang_js_ = (swipervue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/swiper/index.vue?vue&type=style&index=0&lang=css& +var swipervue_type_style_index_0_lang_css_ = __webpack_require__(87); + +// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js +var componentNormalizer = __webpack_require__(0); + +// CONCATENATED MODULE: ./src/core/view/components/swiper/index.vue +var render, staticRenderFns - var x = this.vertical ? '0' : 100 * -index * this._viewportMoveRatio + '%'; - var y = this.vertical ? 100 * -index * this._viewportMoveRatio + '%' : '0'; - var transform = 'translate(' + x + ', ' + y + ') translateZ(0)'; - var slideFrame = this.$refs.slideFrame; - if (slideFrame) { - slideFrame.style['-webkit-transform'] = transform; - slideFrame.style.transform = transform; - } - this._viewportPosition = index; - if (!this._transitionStart) { - if (index % 1 === 0) { - return; - } - this._transitionStart = index; - } +/* normalize component */ - index -= Math.floor(this._transitionStart); +var component = Object(componentNormalizer["a" /* default */])( + components_swipervue_type_script_lang_js_, + render, + staticRenderFns, + false, + null, + null, + null + +) - if (index <= -(this.items.length - 1)) { - index += this.items.length; - } else if (index >= this.items.length) { - index -= this.items.length; - } +/* hot reload */ +if (false) { var api; } +component.options.__file = "src/core/view/components/swiper/index.vue" +/* harmony default export */ var swiper = __webpack_exports__["default"] = (component.exports); - index = this._transitionStart % 1 > 0.5 || this._transitionStart < 0 ? index - 1 : index; - this.$trigger('transition', {}, { - dx: this.vertical ? 0 : index * slideFrame.offsetWidth, - dy: this.vertical ? index * slideFrame.offsetHeight : 0 - }); - }, - _animateFrameFuncProto: function _animateFrameFuncProto() { - var _this3 = this; +/***/ }), +/* 115 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (!this._animating) { - this._requestedAnimation = false; - return; - } +"use strict"; +__webpack_require__.r(__webpack_exports__); - var _animating = this._animating; - var toPos = _animating.toPos; - var acc = _animating.acc; - var endTime = _animating.endTime; - var source = _animating.source; - var time = endTime - Date.now(); +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/movable-area/index.vue?vue&type=script&lang=js& +function calc(e) { + return Math.sqrt(e.x * e.x + e.y * e.y); +} - if (time <= 0) { - this._updateViewport(toPos); +/* harmony default export */ var movable_areavue_type_script_lang_js_ = ({ + name: 'MovableArea', + props: { + scaleArea: { + type: Boolean, + default: false + } + }, + data: function data() { + return { + width: 0, + height: 0, + items: [] + }; + }, + created: function created() { + this.gapV = { + x: null, + y: null + }; + this.pinchStartLen = null; + }, + mounted: function mounted() { + this._resize(); + }, + methods: { + _resize: function _resize() { + this._getWH(); - this._animating = null; - this._requestedAnimation = false; - this._transitionStart = null; - var item = this.items[this.currentSync]; + this.items.forEach(function (item, index) { + item.componentInstance.setParent(); + }); + }, + _find: function _find(target) { + var items = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.items; + var root = this.$el; - if (item) { - this._itemReady(item, function () { - var currentItemId = item.componentInstance.itemId || ''; + function get(node) { + for (var i = 0; i < items.length; i++) { + var item = items[i]; - _this3.$trigger('animationfinish', {}, { - current: _this3.currentSync, - currentItemId: currentItemId, - source: source - }); - }); + if (node === item.componentInstance.$el) { + return item; + } } - return; + if (node === root || node === document.body || node === document) { + return null; + } + + return get(node.parentNode); } - var s = acc * time * time / 2; - var l = toPos + s; + return get(target); + }, + _touchstart: function _touchstart(t) { + var i = t.touches; - this._updateViewport(l); + if (i) { + if (i.length > 1) { + var r = { + x: i[1].pageX - i[0].pageX, + y: i[1].pageY - i[0].pageY + }; + this.pinchStartLen = calc(r); + this.gapV = r; - requestAnimationFrame(this._animateFrameFuncProto.bind(this)); - }, - _animateViewport: function _animateViewport(current, source, n) { - this._cancelViewportAnimation(); + if (!this.scaleArea) { + var touch0 = this._find(i[0].target); - var duration = this.durationNumber; - var length = this.items.length; - var position = this._viewportPosition; + var touch1 = this._find(i[1].target); - if (this.circularEnabled) { - if (n < 0) { - for (; position < current;) { - position += length; + this._scaleMovableView = touch0 && touch0 === touch1 ? touch0 : null; } + } + } + }, + _touchmove: function _touchmove(t) { + var n = t.touches; - for (; position - length > current;) { - position -= length; - } - } else if (n > 0) { - for (; position > current;) { - position -= length; - } + if (n) { + if (n.length > 1) { + t.preventDefault(); + var i = { + x: n[1].pageX - n[0].pageX, + y: n[1].pageY - n[0].pageY + }; - for (; position + length < current;) { - position += length; - } - } else { - for (; position + length < current;) { - position += length; - } + if (this.gapV.x !== null && this.pinchStartLen > 0) { + var r = calc(i) / this.pinchStartLen; - for (; position - length > current;) { - position -= length; + this._updateScale(r); } - if (position + length - current < current - position) { - position += length; - } + this.gapV = i; } } - - this._animating = { - toPos: current, - acc: 2 * (position - current) / (duration * duration), - endTime: Date.now() + duration, - source: source - }; - - if (!this._requestedAnimation) { - this._requestedAnimation = true; - requestAnimationFrame(this._animateFrameFuncProto.bind(this)); - } - }, - _cancelViewportAnimation: function _cancelViewportAnimation() { - this._animating = null; }, + _touchend: function _touchend(e) { + var t = e.touches; - /** - * 结束动画 - */ - _endViewportAnimation: function _endViewportAnimation() { - if (this._animating) { - this._updateViewport(this._animating.toPos); + if (!(t && t.length)) { + if (e.changedTouches) { + this.gapV.x = 0; + this.gapV.y = 0; + this.pinchStartLen = null; - this._animating = null; + if (this.scaleArea) { + this.items.forEach(function (item) { + item.componentInstance._endScale(); + }); + } else { + if (this._scaleMovableView) { + this._scaleMovableView.componentInstance._endScale(); + } + } + } } }, - _handleTrackStart: function _handleTrackStart() { - this._cancelSchedule(); - - this._contentTrackViewport = this._viewportPosition; - this._contentTrackSpeed = 0; - this._contentTrackT = Date.now(); - - this._cancelViewportAnimation(); + _updateScale: function _updateScale(e) { + if (e && e !== 1) { + if (this.scaleArea) { + this.items.forEach(function (item) { + item.componentInstance._setScale(e); + }); + } else { + if (this._scaleMovableView) { + this._scaleMovableView.componentInstance._setScale(e); + } + } + } }, - _handleTrackMove: function _handleTrackMove(data) { - var self = this; - var contentTrackT = this._contentTrackT; - this._contentTrackT = Date.now(); - var length = this.items.length; - var other = length - this.displayMultipleItemsNumber; + _getWH: function _getWH() { + var style = window.getComputedStyle(this.$el); + var rect = this.$el.getBoundingClientRect(); + this.width = rect.width - ['Left', 'Right'].reduce(function (all, item) { + return all + parseFloat(style['border' + item + 'Width']) + parseFloat(style['padding' + item]); + }, 0); + this.height = rect.height - ['Top', 'Bottom'].reduce(function (all, item) { + return all + parseFloat(style['border' + item + 'Width']) + parseFloat(style['padding' + item]); + }, 0); + } + }, + render: function render(createElement) { + var _this = this; - function calc(val) { - return 0.5 - 0.25 / (val + 0.5); - } + var items = []; - function move(oldVal, newVal) { - var val = self._contentTrackViewport + oldVal; - self._contentTrackSpeed = 0.6 * self._contentTrackSpeed + 0.4 * newVal; + if (this.$slots.default) { + this.$slots.default.forEach(function (vnode) { + if (vnode.componentOptions && vnode.componentOptions.tag === 'v-uni-movable-view') { + items.push(vnode); + } + }); + } - if (!self.circularEnabled) { - if (val < 0 || val > other) { - if (val < 0) { - val = -calc(-val); - } else { - if (val > other) { - val = other + calc(val - other); - } - } + this.items = items; + var $listeners = Object.assign({}, this.$listeners); + var events = ['touchstart', 'touchmove', 'touchend']; + events.forEach(function (event) { + var existing = $listeners[event]; - self._contentTrackSpeed = 0; - } - } + var ours = _this["_".concat(event)]; - self._updateViewport(val); + $listeners[event] = existing ? [].concat(existing, ours) : ours; + }); + return createElement('uni-movable-area', { + on: $listeners + }, [createElement('v-uni-resize-sensor', { + on: { + resize: this._resize } + })].concat(items)); + } +}); +// CONCATENATED MODULE: ./src/core/view/components/movable-area/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_movable_areavue_type_script_lang_js_ = (movable_areavue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/movable-area/index.vue?vue&type=style&index=0&lang=css& +var movable_areavue_type_style_index_0_lang_css_ = __webpack_require__(75); - var time = this._contentTrackT - contentTrackT || 1; +// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js +var componentNormalizer = __webpack_require__(0); - if (this.vertical) { - move(-data.dy / this.$refs.slideFrame.offsetHeight, -data.ddy / time); - } else { - move(-data.dx / this.$refs.slideFrame.offsetWidth, -data.ddx / time); - } - }, - _handleTrackEnd: function _handleTrackEnd(isCancel) { - this.userTracking = false; - var t = this._contentTrackSpeed / Math.abs(this._contentTrackSpeed); - var n = 0; +// CONCATENATED MODULE: ./src/core/view/components/movable-area/index.vue +var render, staticRenderFns - if (!isCancel && Math.abs(this._contentTrackSpeed) > 0.2) { - n = 0.5 * t; - } - var current = this._normalizeCurrentValue(this._viewportPosition + n); - if (isCancel) { - this._updateViewport(this._contentTrackViewport); - } else { - this.currentChangeSource = 'touch'; - this.currentSync = current; - this._animateViewport(current, 'touch', n !== 0 ? n : current === 0 && this.circularEnabled && this._viewportPosition >= 1 ? 1 : 0); - } - }, - _handleContentTrack: function _handleContentTrack(e) { - if (!this._invalid) { - if (e.detail.state === 'start') { - this.userTracking = true; - this._userDirectionChecked = false; - return this._handleTrackStart(); - } // fixed by xxxxxx +/* normalize component */ - if (e.detail.state === 'end') { - return this._handleTrackEnd(false); - } +var component = Object(componentNormalizer["a" /* default */])( + components_movable_areavue_type_script_lang_js_, + render, + staticRenderFns, + false, + null, + null, + null + +) - if (e.detail.state === 'cancel') { - return this._handleTrackEnd(true); - } +/* hot reload */ +if (false) { var api; } +component.options.__file = "src/core/view/components/movable-area/index.vue" +/* harmony default export */ var movable_area = __webpack_exports__["default"] = (component.exports); - if (this.userTracking) { - if (!this._userDirectionChecked) { - this._userDirectionChecked = true; - var t = Math.abs(e.detail.dx); - var n = Math.abs(e.detail.dy); +/***/ }), +/* 116 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (t >= n && this.vertical) { - this.userTracking = false; - } else { - if (t <= n && !this.vertical) { - this.userTracking = false; - } - } +"use strict"; +__webpack_require__.r(__webpack_exports__); - if (!this.userTracking) { - if (this.autoplay) { - this._scheduleAutoplay(); - } +// EXTERNAL MODULE: ./src/core/view/mixins/index.js + 1 modules +var mixins = __webpack_require__(1); - return; - } - } +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/button/index.vue?vue&type=script&lang=js& - this._handleTrackMove(e.detail); +/* harmony default export */ var buttonvue_type_script_lang_js_ = ({ + name: 'Button', + mixins: [mixins["b" /* hover */], mixins["a" /* emitter */], mixins["c" /* listeners */]], + props: { + hoverClass: { + type: String, + default: 'button-hover' + }, + disabled: { + type: [Boolean, String], + default: false + }, + id: { + type: String, + default: '' + }, + hoverStopPropagation: { + type: Boolean, + default: false + }, + hoverStartTime: { + type: Number, + default: 20 + }, + hoverStayTime: { + type: Number, + default: 70 + }, + formType: { + type: String, + default: '', + validator: function validator(value) { + // 只有这几个可取值,其它都是非法的。 + return ~['', 'submit', 'reset'].indexOf(value); + } + } + }, + data: function data() { + return { + clickFunction: null + }; + }, + methods: { + _onClick: function _onClick($event, isLabelClick) { + if (this.disabled) { + return; + } - return false; + if (isLabelClick) { + this.$el.click(); + } // TODO 通知父表单执行相应的行为 + + + if (this.formType) { + this.$dispatch('Form', this.formType === 'submit' ? 'uni-form-submit' : 'uni-form-reset', { + type: this.formType + }); + } + }, + _bindObjectListeners: function _bindObjectListeners(data, value) { + if (value) { + for (var key in value) { + var existing = data.on[key]; + var ours = value[key]; + data.on[key] = existing ? [].concat(existing, ours) : ours; } } + + return data; } }, render: function render(createElement) { - var slidesDots = []; - var swiperItems = []; + var _this = this; - if (this.$slots.default) { - this.$slots.default.forEach(function (vnode) { - if (vnode.componentOptions && vnode.componentOptions.tag === 'v-uni-swiper-item') { - swiperItems.push(vnode); + var $listeners = Object.create(null); + + if (this.$listeners) { + Object.keys(this.$listeners).forEach(function (e) { + if (_this.disabled && (e === 'click' || e === 'tap')) { + return; } + + $listeners[e] = _this.$listeners[e]; }); } - for (var index = 0, length = swiperItems.length; index < length; index++) { - var currentSync = this.currentSync; - slidesDots.push(createElement('div', { - class: { - 'uni-swiper-dot': true, - 'uni-swiper-dot-active': index < currentSync + this.displayMultipleItemsNumber && index >= currentSync || index < currentSync + this.displayMultipleItemsNumber - length + if (this.hoverClass && this.hoverClass !== 'none') { + return createElement('uni-button', this._bindObjectListeners({ + class: [this.hovering ? this.hoverClass : ''], + attrs: { + 'disabled': this.disabled }, - style: { - 'background': index === currentSync ? this.indicatorActiveColor : this.indicatorColor - } - })); - } - - this.items = swiperItems; - var slidesWrapperChild = [createElement('div', { - ref: 'slides', - style: this.slidesStyle, - 'class': 'uni-swiper-slides' - }, [createElement('div', { - ref: 'slideFrame', - class: 'uni-swiper-slide-frame', - style: this.slideFrameStyle - }, swiperItems)])]; - - if (this.indicatorDots) { - slidesWrapperChild.push(createElement('div', { - ref: 'slidesDots', - 'class': ['uni-swiper-dots', this.vertical ? 'uni-swiper-dots-vertical' : 'uni-swiper-dots-horizontal'] - }, slidesDots)); + on: { + touchstart: this._hoverTouchStart, + touchend: this._hoverTouchEnd, + touchcancel: this._hoverTouchCancel, + click: this._onClick + } + }, $listeners), this.$slots.default); + } else { + return createElement('uni-button', this._bindObjectListeners({ + class: [this.hovering ? this.hoverClass : ''], + attrs: { + 'disabled': this.disabled + }, + on: { + click: this._onClick + } + }, $listeners), this.$slots.default); } - - return createElement('uni-swiper', [createElement('div', { - ref: 'slidesWrapper', - 'class': 'uni-swiper-wrapper', - on: this.$listeners - }, slidesWrapperChild)]); + }, + listeners: { + 'label-click': '_onClick', + '@label-click': '_onClick' } }); -// CONCATENATED MODULE: ./src/core/view/components/swiper/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_swipervue_type_script_lang_js_ = (swipervue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/swiper/index.vue?vue&type=style&index=0&lang=css& -var swipervue_type_style_index_0_lang_css_ = __webpack_require__(86); +// CONCATENATED MODULE: ./src/core/view/components/button/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_buttonvue_type_script_lang_js_ = (buttonvue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/button/index.vue?vue&type=style&index=0&lang=css& +var buttonvue_type_style_index_0_lang_css_ = __webpack_require__(68); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); -// CONCATENATED MODULE: ./src/core/view/components/swiper/index.vue +// CONCATENATED MODULE: ./src/core/view/components/button/index.vue var render, staticRenderFns @@ -21383,7 +21395,7 @@ var render, staticRenderFns /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( - components_swipervue_type_script_lang_js_, + components_buttonvue_type_script_lang_js_, render, staticRenderFns, false, @@ -21395,11 +21407,11 @@ var component = Object(componentNormalizer["a" /* default */])( /* hot reload */ if (false) { var api; } -component.options.__file = "src/core/view/components/swiper/index.vue" -/* harmony default export */ var swiper = __webpack_exports__["default"] = (component.exports); +component.options.__file = "src/core/view/components/button/index.vue" +/* harmony default export */ var components_button = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 116 */ +/* 117 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -21409,13 +21421,13 @@ __webpack_require__.r(__webpack_exports__); var touchtrack = __webpack_require__(8); // EXTERNAL MODULE: ./src/core/view/mixins/scroller/index.js + 2 modules -var scroller = __webpack_require__(46); +var scroller = __webpack_require__(47); // EXTERNAL MODULE: ./src/core/view/mixins/scroller/Friction.js -var Friction = __webpack_require__(44); +var Friction = __webpack_require__(45); // EXTERNAL MODULE: ./src/core/view/mixins/scroller/Spring.js -var Spring = __webpack_require__(45); +var Spring = __webpack_require__(46); // CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/picker-view-column/index.vue?vue&type=script&lang=js& @@ -21641,7 +21653,7 @@ function onClick(dom, callback) { // CONCATENATED MODULE: ./src/core/view/components/picker-view-column/index.vue?vue&type=script&lang=js& /* harmony default export */ var components_picker_view_columnvue_type_script_lang_js_ = (picker_view_columnvue_type_script_lang_js_); // EXTERNAL MODULE: ./src/core/view/components/picker-view-column/index.vue?vue&type=style&index=0&lang=css& -var picker_view_columnvue_type_style_index_0_lang_css_ = __webpack_require__(77); +var picker_view_columnvue_type_style_index_0_lang_css_ = __webpack_require__(78); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); @@ -21672,7 +21684,114 @@ component.options.__file = "src/core/view/components/picker-view-column/index.vu /* harmony default export */ var picker_view_column = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 117 */ +/* 118 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); + +// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/text/index.vue?vue&type=script&lang=js& +var SPACE_UNICODE = { + 'ensp': "\u2002", + 'emsp': "\u2003", + 'nbsp': "\xA0" +}; +/* harmony default export */ var textvue_type_script_lang_js_ = ({ + name: 'Text', + props: { + selectable: { + type: [Boolean, String], + default: false + }, + space: { + type: String, + default: '' + }, + decode: { + type: [Boolean, String], + default: false + } + }, + methods: { + _decodeHtml: function _decodeHtml(htmlString) { + if (this.space && SPACE_UNICODE[this.space]) { + htmlString = htmlString.replace(/ /g, SPACE_UNICODE[this.space]); + } + + if (this.decode) { + htmlString = htmlString.replace(/ /g, SPACE_UNICODE.nbsp).replace(/ /g, SPACE_UNICODE.ensp).replace(/ /g, SPACE_UNICODE.emsp).replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, "'"); + } + + return htmlString; + } + }, + render: function render(createElement) { + var _this = this; + + var nodeList = []; + this.$slots.default && this.$slots.default.forEach(function (vnode) { + if (vnode.text) { + // 处理可能出现的多余的转义字符 + var nodeText = vnode.text.replace(/\\n/g, '\n'); + var texts = nodeText.split('\n'); + texts.forEach(function (text, index) { + nodeList.push(_this._decodeHtml(text)); + + if (index !== texts.length - 1) { + nodeList.push(createElement('br')); + } + }); + } else { + if (vnode.componentOptions && vnode.componentOptions.tag !== 'v-uni-text') { + console.warn(' 组件内只支持嵌套 ,不支持其它组件或自定义组件,否则会引发在不同平台的渲染差异。'); + } + + nodeList.push(vnode); + } + }); + return createElement('uni-text', { + on: this.$listeners, + attrs: { + selectable: !!this.selectable + } + }, [createElement('span', {}, nodeList)]); + } +}); +// CONCATENATED MODULE: ./src/core/view/components/text/index.vue?vue&type=script&lang=js& + /* harmony default export */ var components_textvue_type_script_lang_js_ = (textvue_type_script_lang_js_); +// EXTERNAL MODULE: ./src/core/view/components/text/index.vue?vue&type=style&index=0&lang=css& +var textvue_type_style_index_0_lang_css_ = __webpack_require__(89); + +// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js +var componentNormalizer = __webpack_require__(0); + +// CONCATENATED MODULE: ./src/core/view/components/text/index.vue +var render, staticRenderFns + + + + + +/* normalize component */ + +var component = Object(componentNormalizer["a" /* default */])( + components_textvue_type_script_lang_js_, + render, + staticRenderFns, + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "src/core/view/components/text/index.vue" +/* harmony default export */ var components_text = __webpack_exports__["default"] = (component.exports); + +/***/ }), +/* 119 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -21750,7 +21869,7 @@ __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./src/core/view/components/resize-sensor/index.vue?vue&type=script&lang=js& /* harmony default export */ var components_resize_sensorvue_type_script_lang_js_ = (resize_sensorvue_type_script_lang_js_); // EXTERNAL MODULE: ./src/core/view/components/resize-sensor/index.vue?vue&type=style&index=0&lang=css& -var resize_sensorvue_type_style_index_0_lang_css_ = __webpack_require__(82); +var resize_sensorvue_type_style_index_0_lang_css_ = __webpack_require__(83); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); @@ -21781,7 +21900,7 @@ component.options.__file = "src/core/view/components/resize-sensor/index.vue" /* harmony default export */ var resize_sensor = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 118 */ +/* 120 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -21921,7 +22040,7 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr // CONCATENATED MODULE: ./src/core/view/components/picker-view/index.vue?vue&type=script&lang=js& /* harmony default export */ var components_picker_viewvue_type_script_lang_js_ = (picker_viewvue_type_script_lang_js_); // EXTERNAL MODULE: ./src/core/view/components/picker-view/index.vue?vue&type=style&index=0&lang=css& -var picker_viewvue_type_style_index_0_lang_css_ = __webpack_require__(78); +var picker_viewvue_type_style_index_0_lang_css_ = __webpack_require__(79); // EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); @@ -21952,114 +22071,7 @@ component.options.__file = "src/core/view/components/picker-view/index.vue" /* harmony default export */ var picker_view = __webpack_exports__["default"] = (component.exports); /***/ }), -/* 119 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); - -// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader/lib??vue-loader-options!./src/core/view/components/text/index.vue?vue&type=script&lang=js& -var SPACE_UNICODE = { - 'ensp': "\u2002", - 'emsp': "\u2003", - 'nbsp': "\xA0" -}; -/* harmony default export */ var textvue_type_script_lang_js_ = ({ - name: 'Text', - props: { - selectable: { - type: [Boolean, String], - default: false - }, - space: { - type: String, - default: '' - }, - decode: { - type: [Boolean, String], - default: false - } - }, - methods: { - _decodeHtml: function _decodeHtml(htmlString) { - if (this.space && SPACE_UNICODE[this.space]) { - htmlString = htmlString.replace(/ /g, SPACE_UNICODE[this.space]); - } - - if (this.decode) { - htmlString = htmlString.replace(/ /g, SPACE_UNICODE.nbsp).replace(/ /g, SPACE_UNICODE.ensp).replace(/ /g, SPACE_UNICODE.emsp).replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, "'"); - } - - return htmlString; - } - }, - render: function render(createElement) { - var _this = this; - - var nodeList = []; - this.$slots.default && this.$slots.default.forEach(function (vnode) { - if (vnode.text) { - // 处理可能出现的多余的转义字符 - var nodeText = vnode.text.replace(/\\n/g, '\n'); - var texts = nodeText.split('\n'); - texts.forEach(function (text, index) { - nodeList.push(_this._decodeHtml(text)); - - if (index !== texts.length - 1) { - nodeList.push(createElement('br')); - } - }); - } else { - if (vnode.componentOptions && vnode.componentOptions.tag !== 'v-uni-text') { - console.warn(' 组件内只支持嵌套 ,不支持其它组件或自定义组件,否则会引发在不同平台的渲染差异。'); - } - - nodeList.push(vnode); - } - }); - return createElement('uni-text', { - on: this.$listeners, - attrs: { - selectable: !!this.selectable - } - }, [createElement('span', {}, nodeList)]); - } -}); -// CONCATENATED MODULE: ./src/core/view/components/text/index.vue?vue&type=script&lang=js& - /* harmony default export */ var components_textvue_type_script_lang_js_ = (textvue_type_script_lang_js_); -// EXTERNAL MODULE: ./src/core/view/components/text/index.vue?vue&type=style&index=0&lang=css& -var textvue_type_style_index_0_lang_css_ = __webpack_require__(88); - -// EXTERNAL MODULE: ./node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js -var componentNormalizer = __webpack_require__(0); - -// CONCATENATED MODULE: ./src/core/view/components/text/index.vue -var render, staticRenderFns - - - - - -/* normalize component */ - -var component = Object(componentNormalizer["a" /* default */])( - components_textvue_type_script_lang_js_, - render, - staticRenderFns, - false, - null, - null, - null - -) - -/* hot reload */ -if (false) { var api; } -component.options.__file = "src/core/view/components/text/index.vue" -/* harmony default export */ var components_text = __webpack_exports__["default"] = (component.exports); - -/***/ }), -/* 120 */ +/* 121 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -22070,7 +22082,7 @@ __webpack_require__.r(__webpack_exports__); if (typeof window !== 'undefined') { if (true) { - __webpack_require__(63) + __webpack_require__(64) } var i @@ -22083,7 +22095,7 @@ if (typeof window !== 'undefined') { /* harmony default export */ var setPublicPath = (null); // EXTERNAL MODULE: ./lib/app-plus/view.js -var view = __webpack_require__(51); +var view = __webpack_require__(52); // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js /* concated harmony reexport upx2px */__webpack_require__.d(__webpack_exports__, "upx2px", function() { return view["h" /* upx2px */]; }); diff --git a/packages/webpack-uni-pages-loader/package.json b/packages/webpack-uni-pages-loader/package.json index df9dd3fc..e390c889 100644 --- a/packages/webpack-uni-pages-loader/package.json +++ b/packages/webpack-uni-pages-loader/package.json @@ -21,7 +21,7 @@ "strip-json-comments": "^2.0.1" }, "uni-app": { - "compilerVersion": "2.3.3" + "compilerVersion": "2.3.4" }, "gitHead": "10184426b19cb76e01c93fb25c982c72887557e8" } diff --git a/src/platforms/h5/service/api/ui/create-intersection-observer.js b/src/core/service/api/ui/create-intersection-observer.js similarity index 69% rename from src/platforms/h5/service/api/ui/create-intersection-observer.js rename to src/core/service/api/ui/create-intersection-observer.js index c184e113..28d59bc4 100644 --- a/src/platforms/h5/service/api/ui/create-intersection-observer.js +++ b/src/core/service/api/ui/create-intersection-observer.js @@ -1,64 +1,67 @@ -import Vue from 'vue' -import createCallbacks from 'uni-helpers/callbacks' - -const createIntersectionObserverCallbacks = createCallbacks('requestComponentObserver') - -const defaultOptions = { - thresholds: [0], - initialRatio: 0, - observeAll: false -} - -class MPIntersectionObserver { - constructor (pageId, options) { - this.pageId = pageId - this.options = Object.assign({}, defaultOptions, options) - } - _makeRootMargin (margins = {}) { - this.options.rootMargin = ['top', 'right', 'bottom', 'left'].map(name => `${Number(margins[name]) || 0}px`).join(' ') - } - relativeTo (selector, margins) { - this.options.relativeToSelector = selector - this._makeRootMargin(margins) - return this - } - relativeToViewport (margins) { - this.options.relativeToSelector = null - this._makeRootMargin(margins) - return this - } - observe (selector, callback) { - if (typeof callback !== 'function') { - return - } - this.options.selector = selector - - this.reqId = createIntersectionObserverCallbacks.push(callback) - - UniServiceJSBridge.publishHandler('requestComponentObserver', { - reqId: this.reqId, - options: this.options - }, this.pageId) - } - disconnect () { - UniServiceJSBridge.publishHandler('destroyComponentObserver', { - reqId: this.reqId - }, this.pageId) - } -} - -export function createIntersectionObserver (context, options) { - if (!(context instanceof Vue)) { - options = context - context = null - } - if (context) { - return new MPIntersectionObserver(context.$page.id, options) - } - const app = getApp() - if (app.$route && app.$route.params.__id__) { - return new MPIntersectionObserver(app.$route.params.__id__, options) - } else { - UniServiceJSBridge.emit('onError', 'createIntersectionObserver:fail') - } +import createCallbacks from 'uni-helpers/callbacks' + +const createIntersectionObserverCallbacks = createCallbacks('requestComponentObserver') + +const defaultOptions = { + thresholds: [0], + initialRatio: 0, + observeAll: false +} + +class ServiceIntersectionObserver { + constructor (pageId, component, options) { + this.pageId = pageId + this.component = component._$id || component // app-plus 平台传输_$id + this.options = Object.assign({}, defaultOptions, options) + } + _makeRootMargin (margins = {}) { + this.options.rootMargin = ['top', 'right', 'bottom', 'left'].map(name => `${Number(margins[name]) || 0}px`).join( + ' ') + } + relativeTo (selector, margins) { + this.options.relativeToSelector = selector + this._makeRootMargin(margins) + return this + } + relativeToViewport (margins) { + this.options.relativeToSelector = null + this._makeRootMargin(margins) + return this + } + observe (selector, callback) { + if (typeof callback !== 'function') { + return + } + this.options.selector = selector + + this.reqId = createIntersectionObserverCallbacks.push(callback) + + UniServiceJSBridge.publishHandler('requestComponentObserver', { + reqId: this.reqId, + component: this.component, + options: this.options + }, this.pageId) + } + disconnect () { + UniServiceJSBridge.publishHandler('destroyComponentObserver', { + reqId: this.reqId + }, this.pageId) + } +} + +export function createIntersectionObserver (context, options) { + if (!context._isVue) { + options = context + context = null + } + if (context) { + return new ServiceIntersectionObserver(context.$page.id, context, options) + } + const pages = getCurrentPages() + const len = pages.length + if (!len) { + UniServiceJSBridge.emit('onError', 'createIntersectionObserver:fail') + } + const page = pages[len - 1] + return new ServiceIntersectionObserver(page.$page.id, page.$vm, options) } diff --git a/src/core/service/api/ui/create-selector-query.js b/src/core/service/api/ui/create-selector-query.js index b29dce24..84bacdfa 100644 --- a/src/core/service/api/ui/create-selector-query.js +++ b/src/core/service/api/ui/create-selector-query.js @@ -111,5 +111,5 @@ export function createSelectorQuery (context) { if (!len) { UniServiceJSBridge.emit('onError', 'createSelectorQuery:fail') } - return new SelectorQuery(pages[len - 1]) + return new SelectorQuery(pages[len - 1].$vm) } diff --git a/src/core/view/bridge/subscribe/api/request-component-info.js b/src/core/view/bridge/subscribe/api/request-component-info.js index 77243518..c528c528 100644 --- a/src/core/view/bridge/subscribe/api/request-component-info.js +++ b/src/core/view/bridge/subscribe/api/request-component-info.js @@ -4,6 +4,10 @@ import { import getWindowOffset from 'uni-platform/helpers/get-window-offset' +import { + findElm +} from './util' + function getRootInfo (fields) { const info = {} if (fields.id) { @@ -73,38 +77,8 @@ function getNodeInfo (el, fields) { return info } -function findElm (id, vm) { - if (id === vm._$id) { - return vm - } - const childVms = vm.$children - const len = childVms.length - for (let i = 0; i < len; i++) { - const childVm = findElm(id, childVms[i]) - if (childVm) { - return childVm - } - } -} - -function getElm (component, pageVm) { - if (!component) { - return pageVm.$el - } - if (__PLATFORM__ === 'app-plus') { - if (typeof component === 'string') { - const componentVm = findElm(component, pageVm) - if (!componentVm) { - throw new Error(`Not Found:Page[${pageVm.$page.id}][${component}]`) - } - return componentVm.$el - } - } - return component.$el -} - function getNodesInfo (pageVm, component, selector, single, fields) { - const $el = getElm(component, pageVm) + const $el = findElm(component, pageVm) if (single) { const node = $el && ($el.matches(selector) ? $el : $el.querySelector(selector)) if (node) { diff --git a/src/core/view/bridge/subscribe/api/request-component-observer.js b/src/core/view/bridge/subscribe/api/request-component-observer.js index 0d92c5df..dac80dc1 100644 --- a/src/core/view/bridge/subscribe/api/request-component-observer.js +++ b/src/core/view/bridge/subscribe/api/request-component-observer.js @@ -1,76 +1,85 @@ -import 'intersection-observer' - -import { - normalizeDataset -} from 'uni-helpers/index' - -function getRect (rect) { - return { - bottom: rect.bottom, - height: rect.height, - left: rect.left, - right: rect.right, - top: rect.top, - width: rect.width - } -} - -const intersectionObservers = {} - -export function requestComponentObserver ({ - reqId, - options -}, pageId) { - const pages = getCurrentPages() - - const pageVm = pages.find(page => page.$page.id === pageId) - - if (!pageVm) { - throw new Error(`Not Found:Page[${pageId}]`) +import 'intersection-observer' + +import { + normalizeDataset +} from 'uni-helpers/index' + +import { + findElm +} from './util' + +function getRect (rect) { + return { + bottom: rect.bottom, + height: rect.height, + left: rect.left, + right: rect.right, + top: rect.top, + width: rect.width + } +} + +const intersectionObservers = {} + +export function requestComponentObserver ({ + reqId, + component, + options +}, pageId) { + const pages = getCurrentPages() + + const page = pages.find(page => page.$page.id === pageId) + + if (!page) { + throw new Error(`Not Found:Page[${pageId}]`) } - const $el = pageVm.$el - - const root = options.relativeToSelector ? $el.querySelector(options.relativeToSelector) : null - - let intersectionObserver = intersectionObservers[reqId] = new IntersectionObserver((entries, observer) => { - entries.forEach(entrie => { - UniViewJSBridge.publishHandler('onRequestComponentObserver', { - reqId, - res: { - intersectionRatio: entrie.intersectionRatio, - intersectionRect: getRect(entrie.intersectionRect), - boundingClientRect: getRect(entrie.boundingClientRect), - relativeRect: getRect(entrie.rootBounds), - time: Date.now(), - dataset: normalizeDataset(entrie.target.dataset || {}), - id: entrie.target.id - } - }, pageVm.$page.id) - }) - }, { - root, - rootMargin: options.rootMargin, - threshold: options.thresholds - }) - if (options.observeAll) { - intersectionObserver.USE_MUTATION_OBSERVER = true - Array.prototype.map.call($el.querySelectorAll(options.selector), el => { - intersectionObserver.observe(el) - }) - } else { - intersectionObserver.USE_MUTATION_OBSERVER = false - intersectionObserver.observe($el.querySelector(options.selector)) - } -} - -export function destroyComponentObserver ({ reqId }) { - const intersectionObserver = intersectionObservers[reqId] - if (intersectionObserver) { - intersectionObserver.disconnect() - UniViewJSBridge.publishHandler('onRequestComponentObserver', { - reqId, - reqEnd: true - }) - } + const pageVm = page.$vm + + const $el = findElm(component, pageVm) + + const root = options.relativeToSelector ? $el.querySelector(options.relativeToSelector) : null + + let intersectionObserver = intersectionObservers[reqId] = new IntersectionObserver((entries, observer) => { + entries.forEach(entrie => { + UniViewJSBridge.publishHandler('onRequestComponentObserver', { + reqId, + res: { + intersectionRatio: entrie.intersectionRatio, + intersectionRect: getRect(entrie.intersectionRect), + boundingClientRect: getRect(entrie.boundingClientRect), + relativeRect: getRect(entrie.rootBounds), + time: Date.now(), + dataset: normalizeDataset(entrie.target.dataset || {}), + id: entrie.target.id + } + }, pageVm.$page.id) + }) + }, { + root, + rootMargin: options.rootMargin, + threshold: options.thresholds + }) + if (options.observeAll) { + intersectionObserver.USE_MUTATION_OBSERVER = true + Array.prototype.map.call($el.querySelectorAll(options.selector), el => { + intersectionObserver.observe(el) + }) + } else { + intersectionObserver.USE_MUTATION_OBSERVER = false + intersectionObserver.observe($el.querySelector(options.selector)) + } +} + +export function destroyComponentObserver ({ + reqId +}) { + const intersectionObserver = intersectionObservers[reqId] + if (intersectionObserver) { + intersectionObserver.disconnect() + UniViewJSBridge.publishHandler('onRequestComponentObserver', { + reqId, + reqEnd: true + }) + } } diff --git a/src/core/view/bridge/subscribe/api/util.js b/src/core/view/bridge/subscribe/api/util.js new file mode 100644 index 00000000..ea303b47 --- /dev/null +++ b/src/core/view/bridge/subscribe/api/util.js @@ -0,0 +1,29 @@ +function findVmById (id, vm) { + if (id === vm._$id) { + return vm + } + const childVms = vm.$children + const len = childVms.length + for (let i = 0; i < len; i++) { + const childVm = findVmById(id, childVms[i]) + if (childVm) { + return childVm + } + } +} + +export function findElm (component, pageVm) { + if (!component) { + return pageVm.$el + } + if (__PLATFORM__ === 'app-plus') { + if (typeof component === 'string') { + const componentVm = findVmById(component, pageVm) + if (!componentVm) { + throw new Error(`Not Found:Page[${pageVm.$page.id}][${component}]`) + } + return componentVm.$el + } + } + return component.$el +} diff --git a/src/platforms/app-plus-nvue/service/api/ui/request-component-info.js b/src/platforms/app-plus-nvue/service/api/ui/request-component-info.js index 10332bc9..c2665d84 100644 --- a/src/platforms/app-plus-nvue/service/api/ui/request-component-info.js +++ b/src/platforms/app-plus-nvue/service/api/ui/request-component-info.js @@ -64,13 +64,12 @@ function getComponentRectAll (dom, attrs, index, result, callback) { }) } -export function requestComponentInfo (pageInstance, queue, callback) { +export function requestComponentInfo (pageVm, queue, callback) { // TODO 重构,逻辑不对,queue 里的每一项可能有单独的作用域查找(即 component) - const vm = pageInstance.$vm - const dom = vm._$weex.requireModule('dom') + const dom = pageVm._$weex.requireModule('dom') const selectors = getSelectors(queue) let outAttrs = new Array(selectors.length) - findAttrs(selectors, vm.$el, outAttrs) + findAttrs(selectors, pageVm.$el, outAttrs) getComponentRectAll(dom, outAttrs, 0, [], (result) => { callback(result) }) diff --git a/src/platforms/app-plus/service/framework/plugins/index.js b/src/platforms/app-plus/service/framework/plugins/index.js index b7e6abb7..eae90ba1 100644 --- a/src/platforms/app-plus/service/framework/plugins/index.js +++ b/src/platforms/app-plus/service/framework/plugins/index.js @@ -19,6 +19,12 @@ export default { initData(Vue) initLifecycle(Vue) + Object.defineProperty(Vue.prototype, '$page', { + get () { + return this.$root.$scope.$page + } + }) + const oldMount = Vue.prototype.$mount Vue.prototype.$mount = function mount (el, hydrating) { if (this.mpType === 'app') { diff --git a/src/platforms/h5/service/api/ui/request-component-info.js b/src/platforms/h5/service/api/ui/request-component-info.js index 11d4ab59..f7ca8e30 100644 --- a/src/platforms/h5/service/api/ui/request-component-info.js +++ b/src/platforms/h5/service/api/ui/request-component-info.js @@ -2,9 +2,9 @@ import createCallbacks from 'uni-helpers/callbacks' const requestComponentInfoCallbacks = createCallbacks('requestComponentInfo') -export function requestComponentInfo (pageInstance, queue, callback) { +export function requestComponentInfo (pageVm, queue, callback) { UniServiceJSBridge.publishHandler('requestComponentInfo', { reqId: requestComponentInfoCallbacks.push(callback), reqs: queue - }, pageInstance.$page.id) + }, pageVm.$page.id) } -- GitLab