@tarojs/api 3.6.5 → 3.7.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -708,6 +708,8 @@ var defaultDesignRatio = {
708
708
  828: 1.81 / 2
709
709
  };
710
710
  var defaultBaseFontSize = 20;
711
+ var defaultUnitPrecision = 5;
712
+ var defaultTargetUnit = 'rpx';
711
713
  function getInitPxTransform(taro) {
712
714
  return function (config) {
713
715
  var _config$designWidth = config.designWidth,
@@ -715,17 +717,24 @@ function getInitPxTransform(taro) {
715
717
  _config$deviceRatio = config.deviceRatio,
716
718
  deviceRatio = _config$deviceRatio === void 0 ? defaultDesignRatio : _config$deviceRatio,
717
719
  _config$baseFontSize = config.baseFontSize,
718
- baseFontSize = _config$baseFontSize === void 0 ? defaultBaseFontSize : _config$baseFontSize;
720
+ baseFontSize = _config$baseFontSize === void 0 ? defaultBaseFontSize : _config$baseFontSize,
721
+ _config$targetUnit = config.targetUnit,
722
+ targetUnit = _config$targetUnit === void 0 ? defaultTargetUnit : _config$targetUnit,
723
+ _config$unitPrecision = config.unitPrecision,
724
+ unitPrecision = _config$unitPrecision === void 0 ? defaultUnitPrecision : _config$unitPrecision;
719
725
  taro.config = taro.config || {};
720
726
  taro.config.designWidth = designWidth;
721
727
  taro.config.deviceRatio = deviceRatio;
722
728
  taro.config.baseFontSize = baseFontSize;
729
+ taro.config.targetUnit = targetUnit;
730
+ taro.config.unitPrecision = unitPrecision;
723
731
  };
724
732
  }
725
733
  function getPxTransform(taro) {
726
734
  return function (size) {
727
735
  var config = taro.config || {};
728
736
  var deviceRatio = config.deviceRatio || defaultDesignRatio;
737
+ var baseFontSize = config.baseFontSize;
729
738
  var designWidth = function () {
730
739
  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
731
740
  return isFunction$1(config.designWidth) ? config.designWidth(input) : config.designWidth || defaultDesignWidth;
@@ -733,7 +742,21 @@ function getPxTransform(taro) {
733
742
  if (!(designWidth in deviceRatio)) {
734
743
  throw new Error("deviceRatio \u914D\u7F6E\u4E2D\u4E0D\u5B58\u5728 ".concat(designWidth, " \u7684\u8BBE\u7F6E\uFF01"));
735
744
  }
736
- return parseInt(size, 10) * deviceRatio[designWidth] + 'rpx';
745
+ var formatSize = ~~size;
746
+ var rootValue = 1 / config.deviceRatio[designWidth];
747
+ switch (config.targetUnit) {
748
+ case 'rem':
749
+ rootValue *= baseFontSize * 2;
750
+ break;
751
+ case 'px':
752
+ rootValue *= 2;
753
+ break;
754
+ }
755
+ var val = formatSize / rootValue;
756
+ if (config.unitPrecision >= 0 && config.unitPrecision <= 100) {
757
+ val = Number(val.toFixed(config.unitPrecision));
758
+ }
759
+ return val + config.targetUnit;
737
760
  };
738
761
  }
739
762
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/utils.js","../src/polyfill.js","../../shared/dist/shared.esm.js","../src/env.js","../src/interceptor/chain.js","../src/interceptor/index.js","../src/interceptor/interceptors.js","../src/tools.js","../src/index.js"],"sourcesContent":["export function isFunction (x) {\n return typeof x === 'function'\n}\n\nexport function isUndefined (x) {\n return typeof x === 'undefined'\n}\n\nexport function isObject (x) {\n return x && typeof x === 'object'\n}\n","import { isFunction, isObject, isUndefined } from './utils'\n\nconst isBadObj = (x) => !isObject(x)\n\nfunction throwTypeError (s) {\n throw new TypeError(s)\n}\n\nif (!isFunction(Object.assign)) {\n // Must be writable: true, enumerable: false, configurable: true\n Object.assign = function (target) { // .length of function is 2\n if (target == null) { // TypeError if undefined or null\n throwTypeError('Cannot convert undefined or null to object')\n }\n\n const to = Object(target)\n\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index]\n\n if (nextSource != null) { // Skip over if undefined or null\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey]\n }\n }\n }\n }\n return to\n }\n}\n\nif (!isFunction(Object.defineProperties)) {\n Object.defineProperties = function (obj, properties) {\n function convertToDescriptor (desc) {\n function hasProperty (obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n }\n\n if (isBadObj(desc)) { throwTypeError('bad desc') }\n\n const d = {}\n\n if (hasProperty(desc, 'enumerable')) d.enumerable = !!desc.enumerable\n if (hasProperty(desc, 'configurable')) { d.configurable = !!desc.configurable }\n if (hasProperty(desc, 'value')) d.value = desc.value\n if (hasProperty(desc, 'writable')) d.writable = !!desc.writable\n if (hasProperty(desc, 'get')) {\n const g = desc.get\n\n if (!isFunction(g) && !isUndefined(g)) { throwTypeError('bad get') }\n d.get = g\n }\n if (hasProperty(desc, 'set')) {\n const s = desc.set\n if (!isFunction(s) && !isUndefined(s)) { throwTypeError('bad set') }\n d.set = s\n }\n\n if (('get' in d || 'set' in d) && ('value' in d || 'writable' in d)) { throwTypeError('identity-confused descriptor') }\n\n return d\n }\n\n if (isBadObj(obj)) throwTypeError('bad obj')\n\n properties = Object(properties)\n\n const keys = Object.keys(properties)\n const descs = []\n\n for (let i = 0; i < keys.length; i++) {\n descs.push([keys[i], convertToDescriptor(properties[keys[i]])])\n }\n\n for (let i = 0; i < descs.length; i++) {\n Object.defineProperty(obj, descs[i][0], descs[i][1])\n }\n\n return obj\n }\n}\n","const DEFAULT_EMPTY_ARRAY = '[]';\nconst NO_DEFAULT_VALUE = '';\nconst DEFAULT_TRUE = '!0';\nconst DEFAULT_FALSE = '!1';\nconst touchEvents = {\n bindTouchStart: NO_DEFAULT_VALUE,\n bindTouchMove: NO_DEFAULT_VALUE,\n bindTouchEnd: NO_DEFAULT_VALUE,\n bindTouchCancel: NO_DEFAULT_VALUE,\n bindLongTap: NO_DEFAULT_VALUE\n};\nconst animation = {\n animation: NO_DEFAULT_VALUE,\n bindAnimationStart: NO_DEFAULT_VALUE,\n bindAnimationIteration: NO_DEFAULT_VALUE,\n bindAnimationEnd: NO_DEFAULT_VALUE,\n bindTransitionEnd: NO_DEFAULT_VALUE\n};\nfunction singleQuote(s) {\n return `'${s}'`;\n}\nconst View = Object.assign(Object.assign({ 'hover-class': singleQuote('none'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '50', 'hover-stay-time': '400' }, touchEvents), animation);\nconst Icon = {\n type: NO_DEFAULT_VALUE,\n size: '23',\n color: NO_DEFAULT_VALUE\n};\nconst MapComp = Object.assign({ longitude: NO_DEFAULT_VALUE, latitude: NO_DEFAULT_VALUE, scale: '16', markers: DEFAULT_EMPTY_ARRAY, covers: NO_DEFAULT_VALUE, polyline: DEFAULT_EMPTY_ARRAY, circles: DEFAULT_EMPTY_ARRAY, controls: DEFAULT_EMPTY_ARRAY, 'include-points': DEFAULT_EMPTY_ARRAY, 'show-location': NO_DEFAULT_VALUE, 'layer-style': '1', bindMarkerTap: NO_DEFAULT_VALUE, bindControlTap: NO_DEFAULT_VALUE, bindCalloutTap: NO_DEFAULT_VALUE, bindUpdated: NO_DEFAULT_VALUE }, touchEvents);\nconst Progress = {\n percent: NO_DEFAULT_VALUE,\n 'stroke-width': '6',\n color: singleQuote('#09BB07'),\n activeColor: singleQuote('#09BB07'),\n backgroundColor: singleQuote('#EBEBEB'),\n active: DEFAULT_FALSE,\n 'active-mode': singleQuote('backwards'),\n 'show-info': DEFAULT_FALSE\n};\nconst RichText = {\n nodes: DEFAULT_EMPTY_ARRAY\n};\nconst Text = {\n selectable: DEFAULT_FALSE,\n space: NO_DEFAULT_VALUE,\n decode: DEFAULT_FALSE\n};\nconst Button = Object.assign({ size: singleQuote('default'), type: NO_DEFAULT_VALUE, plain: DEFAULT_FALSE, disabled: NO_DEFAULT_VALUE, loading: DEFAULT_FALSE, 'form-type': NO_DEFAULT_VALUE, 'open-type': NO_DEFAULT_VALUE, 'hover-class': singleQuote('button-hover'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '20', 'hover-stay-time': '70', name: NO_DEFAULT_VALUE }, touchEvents);\nconst Checkbox = {\n value: NO_DEFAULT_VALUE,\n disabled: NO_DEFAULT_VALUE,\n checked: DEFAULT_FALSE,\n color: singleQuote('#09BB07'),\n name: NO_DEFAULT_VALUE\n};\nconst CheckboxGroup = {\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Form = {\n 'report-submit': DEFAULT_FALSE,\n bindSubmit: NO_DEFAULT_VALUE,\n bindReset: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Input = {\n value: NO_DEFAULT_VALUE,\n type: singleQuote(NO_DEFAULT_VALUE),\n password: DEFAULT_FALSE,\n placeholder: NO_DEFAULT_VALUE,\n 'placeholder-style': NO_DEFAULT_VALUE,\n 'placeholder-class': singleQuote('input-placeholder'),\n disabled: NO_DEFAULT_VALUE,\n maxlength: '140',\n 'cursor-spacing': '0',\n focus: DEFAULT_FALSE,\n 'confirm-type': singleQuote('done'),\n 'confirm-hold': DEFAULT_FALSE,\n cursor: 'i.value.length',\n 'selection-start': '-1',\n 'selection-end': '-1',\n bindInput: NO_DEFAULT_VALUE,\n bindFocus: NO_DEFAULT_VALUE,\n bindBlur: NO_DEFAULT_VALUE,\n bindConfirm: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Label = {\n for: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Picker = {\n mode: singleQuote('selector'),\n disabled: NO_DEFAULT_VALUE,\n range: NO_DEFAULT_VALUE,\n 'range-key': NO_DEFAULT_VALUE,\n value: NO_DEFAULT_VALUE,\n start: NO_DEFAULT_VALUE,\n end: NO_DEFAULT_VALUE,\n fields: singleQuote('day'),\n 'custom-item': NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE,\n bindCancel: NO_DEFAULT_VALUE,\n bindChange: NO_DEFAULT_VALUE,\n bindColumnChange: NO_DEFAULT_VALUE\n};\nconst PickerView = {\n value: NO_DEFAULT_VALUE,\n 'indicator-style': NO_DEFAULT_VALUE,\n 'indicator-class': NO_DEFAULT_VALUE,\n 'mask-style': NO_DEFAULT_VALUE,\n 'mask-class': NO_DEFAULT_VALUE,\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst PickerViewColumn = {\n name: NO_DEFAULT_VALUE\n};\nconst Radio = {\n value: NO_DEFAULT_VALUE,\n checked: DEFAULT_FALSE,\n disabled: NO_DEFAULT_VALUE,\n color: singleQuote('#09BB07'),\n name: NO_DEFAULT_VALUE\n};\nconst RadioGroup = {\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Slider = {\n min: '0',\n max: '100',\n step: '1',\n disabled: NO_DEFAULT_VALUE,\n value: '0',\n activeColor: singleQuote('#1aad19'),\n backgroundColor: singleQuote('#e9e9e9'),\n 'block-size': '28',\n 'block-color': singleQuote('#ffffff'),\n 'show-value': DEFAULT_FALSE,\n bindChange: NO_DEFAULT_VALUE,\n bindChanging: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Switch = {\n checked: DEFAULT_FALSE,\n disabled: NO_DEFAULT_VALUE,\n type: singleQuote('switch'),\n color: singleQuote('#04BE02'),\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Textarea = {\n value: NO_DEFAULT_VALUE,\n placeholder: NO_DEFAULT_VALUE,\n 'placeholder-style': NO_DEFAULT_VALUE,\n 'placeholder-class': singleQuote('textarea-placeholder'),\n disabled: NO_DEFAULT_VALUE,\n maxlength: '140',\n 'auto-focus': DEFAULT_FALSE,\n focus: DEFAULT_FALSE,\n 'auto-height': DEFAULT_FALSE,\n fixed: DEFAULT_FALSE,\n 'cursor-spacing': '0',\n cursor: '-1',\n 'selection-start': '-1',\n 'selection-end': '-1',\n bindFocus: NO_DEFAULT_VALUE,\n bindBlur: NO_DEFAULT_VALUE,\n bindLineChange: NO_DEFAULT_VALUE,\n bindInput: NO_DEFAULT_VALUE,\n bindConfirm: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst CoverImage = {\n src: NO_DEFAULT_VALUE,\n bindLoad: 'eh',\n bindError: 'eh'\n};\nconst CoverView = Object.assign({ 'scroll-top': DEFAULT_FALSE }, touchEvents);\nconst MovableArea = {\n 'scale-area': DEFAULT_FALSE\n};\nconst MovableView = Object.assign(Object.assign({ direction: 'none', inertia: DEFAULT_FALSE, 'out-of-bounds': DEFAULT_FALSE, x: NO_DEFAULT_VALUE, y: NO_DEFAULT_VALUE, damping: '20', friction: '2', disabled: NO_DEFAULT_VALUE, scale: DEFAULT_FALSE, 'scale-min': '0.5', 'scale-max': '10', 'scale-value': '1', bindChange: NO_DEFAULT_VALUE, bindScale: NO_DEFAULT_VALUE, bindHTouchMove: NO_DEFAULT_VALUE, bindVTouchMove: NO_DEFAULT_VALUE, width: singleQuote('10px'), height: singleQuote('10px') }, touchEvents), animation);\nconst ScrollView = Object.assign(Object.assign({ 'scroll-x': DEFAULT_FALSE, 'scroll-y': DEFAULT_FALSE, 'upper-threshold': '50', 'lower-threshold': '50', 'scroll-top': NO_DEFAULT_VALUE, 'scroll-left': NO_DEFAULT_VALUE, 'scroll-into-view': NO_DEFAULT_VALUE, 'scroll-with-animation': DEFAULT_FALSE, 'enable-back-to-top': DEFAULT_FALSE, bindScrollToUpper: NO_DEFAULT_VALUE, bindScrollToLower: NO_DEFAULT_VALUE, bindScroll: NO_DEFAULT_VALUE }, touchEvents), animation);\nconst Swiper = Object.assign({ 'indicator-dots': DEFAULT_FALSE, 'indicator-color': singleQuote('rgba(0, 0, 0, .3)'), 'indicator-active-color': singleQuote('#000000'), autoplay: DEFAULT_FALSE, current: '0', interval: '5000', duration: '500', circular: DEFAULT_FALSE, vertical: DEFAULT_FALSE, 'previous-margin': singleQuote('0px'), 'next-margin': singleQuote('0px'), 'display-multiple-items': '1', bindChange: NO_DEFAULT_VALUE, bindTransition: NO_DEFAULT_VALUE, bindAnimationFinish: NO_DEFAULT_VALUE }, touchEvents);\nconst SwiperItem = {\n 'item-id': NO_DEFAULT_VALUE\n};\nconst Navigator = {\n url: NO_DEFAULT_VALUE,\n 'open-type': singleQuote('navigate'),\n delta: '1',\n 'hover-class': singleQuote('navigator-hover'),\n 'hover-stop-propagation': DEFAULT_FALSE,\n 'hover-start-time': '50',\n 'hover-stay-time': '600',\n bindSuccess: NO_DEFAULT_VALUE,\n bindFail: NO_DEFAULT_VALUE,\n bindComplete: NO_DEFAULT_VALUE\n};\nconst Audio = {\n id: NO_DEFAULT_VALUE,\n src: NO_DEFAULT_VALUE,\n loop: DEFAULT_FALSE,\n controls: DEFAULT_FALSE,\n poster: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE,\n author: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE,\n bindPlay: NO_DEFAULT_VALUE,\n bindPause: NO_DEFAULT_VALUE,\n bindTimeUpdate: NO_DEFAULT_VALUE,\n bindEnded: NO_DEFAULT_VALUE\n};\nconst Camera = {\n 'device-position': singleQuote('back'),\n flash: singleQuote('auto'),\n bindStop: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE\n};\nconst Image = Object.assign({ src: NO_DEFAULT_VALUE, mode: singleQuote('scaleToFill'), 'lazy-load': DEFAULT_FALSE, bindError: NO_DEFAULT_VALUE, bindLoad: NO_DEFAULT_VALUE }, touchEvents);\nconst LivePlayer = Object.assign({ src: NO_DEFAULT_VALUE, autoplay: DEFAULT_FALSE, muted: DEFAULT_FALSE, orientation: singleQuote('vertical'), 'object-fit': singleQuote('contain'), 'background-mute': DEFAULT_FALSE, 'min-cache': '1', 'max-cache': '3', bindStateChange: NO_DEFAULT_VALUE, bindFullScreenChange: NO_DEFAULT_VALUE, bindNetStatus: NO_DEFAULT_VALUE }, animation);\nconst Video = Object.assign({ src: NO_DEFAULT_VALUE, duration: NO_DEFAULT_VALUE, controls: DEFAULT_TRUE, 'danmu-list': NO_DEFAULT_VALUE, 'danmu-btn': NO_DEFAULT_VALUE, 'enable-danmu': NO_DEFAULT_VALUE, autoplay: DEFAULT_FALSE, loop: DEFAULT_FALSE, muted: DEFAULT_FALSE, 'initial-time': '0', 'page-gesture': DEFAULT_FALSE, direction: NO_DEFAULT_VALUE, 'show-progress': DEFAULT_TRUE, 'show-fullscreen-btn': DEFAULT_TRUE, 'show-play-btn': DEFAULT_TRUE, 'show-center-play-btn': DEFAULT_TRUE, 'enable-progress-gesture': DEFAULT_TRUE, 'object-fit': singleQuote('contain'), poster: NO_DEFAULT_VALUE, 'show-mute-btn': DEFAULT_FALSE, bindPlay: NO_DEFAULT_VALUE, bindPause: NO_DEFAULT_VALUE, bindEnded: NO_DEFAULT_VALUE, bindTimeUpdate: NO_DEFAULT_VALUE, bindFullScreenChange: NO_DEFAULT_VALUE, bindWaiting: NO_DEFAULT_VALUE, bindError: NO_DEFAULT_VALUE }, animation);\nconst Canvas = Object.assign({ 'canvas-id': NO_DEFAULT_VALUE, 'disable-scroll': DEFAULT_FALSE, bindError: NO_DEFAULT_VALUE }, touchEvents);\nconst Ad = {\n 'unit-id': NO_DEFAULT_VALUE,\n 'ad-intervals': NO_DEFAULT_VALUE,\n bindLoad: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE,\n bindClose: NO_DEFAULT_VALUE\n};\nconst WebView = {\n src: NO_DEFAULT_VALUE,\n bindMessage: NO_DEFAULT_VALUE,\n bindLoad: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE\n};\nconst Block = {};\n// For Vue,因为 slot 标签被 vue 占用了\nconst SlotView = {\n name: NO_DEFAULT_VALUE\n};\n// For React\n// Slot 和 SlotView 最终都会编译成 <view slot={{ i.name }} />\n// 因为 <slot name=\"{{ i.name }}\" /> 适用性没有前者高(无法添加类和样式)\n// 不给 View 直接加 slot 属性的原因是性能损耗\nconst Slot = {\n name: NO_DEFAULT_VALUE\n};\nconst NativeSlot = {\n name: NO_DEFAULT_VALUE\n};\nconst internalComponents = {\n View,\n Icon,\n Progress,\n RichText,\n Text,\n Button,\n Checkbox,\n CheckboxGroup,\n Form,\n Input,\n Label,\n Picker,\n PickerView,\n PickerViewColumn,\n Radio,\n RadioGroup,\n Slider,\n Switch,\n CoverImage,\n Textarea,\n CoverView,\n MovableArea,\n MovableView,\n ScrollView,\n Swiper,\n SwiperItem,\n Navigator,\n Audio,\n Camera,\n Image,\n LivePlayer,\n Video,\n Canvas,\n Ad,\n WebView,\n Block,\n Map: MapComp,\n Slot,\n SlotView,\n NativeSlot,\n};\nconst controlledComponent = new Set([\n 'input',\n 'checkbox',\n 'picker',\n 'picker-view',\n 'radio',\n 'slider',\n 'switch',\n 'textarea'\n]);\nconst focusComponents = new Set([\n 'input',\n 'textarea'\n]);\nconst voidElements = new Set([\n 'progress',\n 'icon',\n 'rich-text',\n 'input',\n 'textarea',\n 'slider',\n 'switch',\n 'audio',\n 'ad',\n 'official-account',\n 'open-data',\n 'navigation-bar'\n]);\nconst nestElements = new Map([\n ['view', -1],\n ['catch-view', -1],\n ['cover-view', -1],\n ['static-view', -1],\n ['pure-view', -1],\n ['block', -1],\n ['text', -1],\n ['static-text', 6],\n ['slot', 8],\n ['slot-view', 8],\n ['label', 6],\n ['form', 4],\n ['scroll-view', 4],\n ['swiper', 4],\n ['swiper-item', 4]\n]);\n\nvar PLATFORM_TYPE;\n(function (PLATFORM_TYPE) {\n PLATFORM_TYPE[\"MINI\"] = \"mini\";\n PLATFORM_TYPE[\"WEB\"] = \"web\";\n PLATFORM_TYPE[\"RN\"] = \"rn\";\n PLATFORM_TYPE[\"HARMONY\"] = \"harmony\";\n PLATFORM_TYPE[\"QUICK\"] = \"quickapp\";\n})(PLATFORM_TYPE || (PLATFORM_TYPE = {}));\nconst PLATFORM_CONFIG_MAP = {\n h5: {\n type: PLATFORM_TYPE.WEB\n },\n harmony: {\n type: PLATFORM_TYPE.HARMONY\n },\n mini: {\n type: PLATFORM_TYPE.MINI\n },\n rn: {\n type: PLATFORM_TYPE.RN\n },\n quickapp: {\n type: PLATFORM_TYPE.QUICK\n }\n};\n\nclass Events {\n constructor(opts) {\n var _a;\n this.callbacks = (_a = opts === null || opts === void 0 ? void 0 : opts.callbacks) !== null && _a !== void 0 ? _a : {};\n }\n on(eventName, callback, context) {\n let event, node, tail, list;\n if (!callback) {\n return this;\n }\n eventName = eventName.split(Events.eventSplitter);\n this.callbacks || (this.callbacks = {});\n const calls = this.callbacks;\n while ((event = eventName.shift())) {\n list = calls[event];\n node = list ? list.tail : {};\n node.next = tail = {};\n node.context = context;\n node.callback = callback;\n calls[event] = {\n tail,\n next: list ? list.next : node\n };\n }\n return this;\n }\n once(events, callback, context) {\n const wrapper = (...args) => {\n callback.apply(this, args);\n this.off(events, wrapper, context);\n };\n this.on(events, wrapper, context);\n return this;\n }\n off(events, callback, context) {\n let event, calls, node, tail, cb, ctx;\n if (!(calls = this.callbacks)) {\n return this;\n }\n if (!(events || callback || context)) {\n delete this.callbacks;\n return this;\n }\n events = events ? events.split(Events.eventSplitter) : Object.keys(calls);\n while ((event = events.shift())) {\n node = calls[event];\n delete calls[event];\n if (!node || !(callback || context)) {\n continue;\n }\n tail = node.tail;\n while ((node = node.next) !== tail) {\n cb = node.callback;\n ctx = node.context;\n if ((callback && cb !== callback) || (context && ctx !== context)) {\n this.on(event, cb, ctx);\n }\n }\n }\n return this;\n }\n trigger(events) {\n let event, node, calls, tail;\n if (!(calls = this.callbacks)) {\n return this;\n }\n events = events.split(Events.eventSplitter);\n const rest = [].slice.call(arguments, 1);\n while ((event = events.shift())) {\n if ((node = calls[event])) {\n tail = node.tail;\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, rest);\n }\n }\n }\n return this;\n }\n}\nEvents.eventSplitter = ','; // Note: Harmony ACE API 8 开发板不支持使用正则 split 字符串 /\\s+/\n\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isUndefined(o) {\n return typeof o === 'undefined';\n}\nfunction isNull(o) {\n return o === null;\n}\nfunction isObject(o) {\n return o !== null && typeof o === 'object';\n}\nfunction isBoolean(o) {\n return o === true || o === false;\n}\nfunction isFunction(o) {\n return typeof o === 'function';\n}\nfunction isNumber(o) {\n return typeof o === 'number';\n}\nfunction isBooleanStringLiteral(o) {\n return o === 'true' || o === 'false';\n}\nconst isArray = Array.isArray;\nconst isWebPlatform = () => process.env.TARO_ENV === 'h5' || process.env.TARO_PLATFORM === 'web';\n\nvar HOOK_TYPE;\n(function (HOOK_TYPE) {\n HOOK_TYPE[HOOK_TYPE[\"SINGLE\"] = 0] = \"SINGLE\";\n HOOK_TYPE[HOOK_TYPE[\"MULTI\"] = 1] = \"MULTI\";\n HOOK_TYPE[HOOK_TYPE[\"WATERFALL\"] = 2] = \"WATERFALL\";\n})(HOOK_TYPE || (HOOK_TYPE = {}));\nconst defaultMiniLifecycle = {\n app: [\n 'onLaunch',\n 'onShow',\n 'onHide'\n ],\n page: [\n 'onLoad',\n 'onUnload',\n 'onReady',\n 'onShow',\n 'onHide',\n [\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onPageScroll',\n 'onResize',\n 'onTabItemTap',\n 'onTitleClick',\n 'onOptionMenuClick',\n 'onPopMenuClick',\n 'onPullIntercept',\n 'onAddToFavorites'\n ],\n [\n 'onShareAppMessage',\n 'onShareTimeline'\n ]\n ],\n component: [\n 'attached',\n 'detached'\n ]\n};\nfunction TaroHook(type, initial) {\n return {\n type,\n initial: initial || null\n };\n}\nclass TaroHooks extends Events {\n constructor(hooks, opts) {\n super(opts);\n this.hooks = hooks;\n for (const hookName in hooks) {\n const { initial } = hooks[hookName];\n if (isFunction(initial)) {\n this.on(hookName, initial);\n }\n }\n }\n tapOneOrMany(hookName, callback) {\n const list = isFunction(callback) ? [callback] : callback;\n list.forEach(cb => this.on(hookName, cb));\n }\n tap(hookName, callback) {\n const hooks = this.hooks;\n const { type, initial } = hooks[hookName];\n if (type === HOOK_TYPE.SINGLE) {\n this.off(hookName);\n this.on(hookName, isFunction(callback) ? callback : callback[callback.length - 1]);\n }\n else {\n initial && this.off(hookName, initial);\n this.tapOneOrMany(hookName, callback);\n }\n }\n call(hookName, ...rest) {\n var _a;\n const hook = this.hooks[hookName];\n if (!hook)\n return;\n const { type } = hook;\n const calls = this.callbacks;\n if (!calls)\n return;\n const list = calls[hookName];\n if (list) {\n const tail = list.tail;\n let node = list.next;\n let args = rest;\n let res;\n while (node !== tail) {\n res = (_a = node.callback) === null || _a === void 0 ? void 0 : _a.apply(node.context || this, args);\n if (type === HOOK_TYPE.WATERFALL) {\n const params = [res];\n args = params;\n }\n node = node.next;\n }\n return res;\n }\n }\n isExist(hookName) {\n var _a;\n return Boolean((_a = this.callbacks) === null || _a === void 0 ? void 0 : _a[hookName]);\n }\n}\nconst hooks = new TaroHooks({\n getMiniLifecycle: TaroHook(HOOK_TYPE.SINGLE, defaultConfig => defaultConfig),\n getMiniLifecycleImpl: TaroHook(HOOK_TYPE.SINGLE, function () {\n return this.call('getMiniLifecycle', defaultMiniLifecycle);\n }),\n getLifecycle: TaroHook(HOOK_TYPE.SINGLE, (instance, lifecycle) => instance[lifecycle]),\n getPathIndex: TaroHook(HOOK_TYPE.SINGLE, indexOfNode => `[${indexOfNode}]`),\n getEventCenter: TaroHook(HOOK_TYPE.SINGLE, Events => new Events()),\n isBubbleEvents: TaroHook(HOOK_TYPE.SINGLE, eventName => {\n /**\n * 支持冒泡的事件, 除 支付宝小程序外,其余的可冒泡事件都和微信保持一致\n * 详见 见 https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html\n */\n const BUBBLE_EVENTS = new Set([\n 'touchstart',\n 'touchmove',\n 'touchcancel',\n 'touchend',\n 'touchforcechange',\n 'tap',\n 'longpress',\n 'longtap',\n 'transitionend',\n 'animationstart',\n 'animationiteration',\n 'animationend'\n ]);\n return BUBBLE_EVENTS.has(eventName);\n }),\n getSpecialNodes: TaroHook(HOOK_TYPE.SINGLE, () => ['view', 'text', 'image']),\n onRemoveAttribute: TaroHook(HOOK_TYPE.SINGLE),\n batchedEventUpdates: TaroHook(HOOK_TYPE.SINGLE),\n mergePageInstance: TaroHook(HOOK_TYPE.SINGLE),\n modifyPageObject: TaroHook(HOOK_TYPE.SINGLE),\n createPullDownComponent: TaroHook(HOOK_TYPE.SINGLE),\n getDOMNode: TaroHook(HOOK_TYPE.SINGLE),\n modifyHydrateData: TaroHook(HOOK_TYPE.SINGLE),\n modifySetAttrPayload: TaroHook(HOOK_TYPE.SINGLE),\n modifyRmAttrPayload: TaroHook(HOOK_TYPE.SINGLE),\n onAddEvent: TaroHook(HOOK_TYPE.SINGLE),\n modifyMpEvent: TaroHook(HOOK_TYPE.MULTI),\n modifyMpEventImpl: TaroHook(HOOK_TYPE.SINGLE, function (e) {\n try {\n // 有些小程序的事件对象的某些属性只读\n this.call('modifyMpEvent', e);\n }\n catch (error) {\n console.warn('[Taro modifyMpEvent hook Error]: ' + (error === null || error === void 0 ? void 0 : error.message));\n }\n }),\n modifyTaroEvent: TaroHook(HOOK_TYPE.MULTI),\n modifyDispatchEvent: TaroHook(HOOK_TYPE.MULTI),\n initNativeApi: TaroHook(HOOK_TYPE.MULTI),\n patchElement: TaroHook(HOOK_TYPE.MULTI)\n});\n\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst noop = (..._) => { };\n/**\n * box creates a boxed value.\n *\n * @typeparam T Value type.\n * @param v Value.\n * @returns Boxed value.\n */\nconst box = (v) => ({ v });\n/**\n * box creates a boxed value.\n *\n * @typeparam T Value type.\n * @param b Boxed value.\n * @returns Value.\n */\nconst unbox = (b) => b.v;\nfunction toDashed(s) {\n return s.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction toCamelCase(s) {\n let camel = '';\n let nextCap = false;\n for (let i = 0; i < s.length; i++) {\n if (s[i] !== '-') {\n camel += nextCap ? s[i].toUpperCase() : s[i];\n nextCap = false;\n }\n else {\n nextCap = true;\n }\n }\n return camel;\n}\nconst toKebabCase = function (string) {\n return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n};\nfunction capitalize(s) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\n/**\n * ensure takes a condition and throw a error if the condition fails,\n * like failure::ensure: https://docs.rs/failure/0.1.1/failure/macro.ensure.html\n * @param condition condition.\n * @param msg error message.\n */\nfunction ensure(condition, msg) {\n if (!condition) {\n if (process.env.NODE_ENV !== 'production') {\n const reportIssue = '\\n如有疑问,请提交 issue 至:https://github.com/nervjs/taro/issues';\n throw new Error(msg + reportIssue);\n }\n else {\n throw new Error(msg);\n }\n }\n}\nfunction warn(condition, msg) {\n if (process.env.NODE_ENV !== 'production') {\n if (condition) {\n console.warn(`[taro warn] ${msg}`);\n }\n }\n}\nfunction queryToJson(str) {\n const dec = decodeURIComponent;\n const qp = str.split('&');\n const ret = {};\n let name;\n let val;\n for (let i = 0, l = qp.length, item; i < l; ++i) {\n item = qp[i];\n if (item.length) {\n const s = item.indexOf('=');\n if (s < 0) {\n name = dec(item);\n val = '';\n }\n else {\n name = dec(item.slice(0, s));\n val = dec(item.slice(s + 1));\n }\n if (typeof ret[name] === 'string') { // inline'd type check\n ret[name] = [ret[name]];\n }\n if (Array.isArray(ret[name])) {\n ret[name].push(val);\n }\n else {\n ret[name] = val;\n }\n }\n }\n return ret; // Object\n}\nlet _uniqueId = 1;\nconst _loadTime = (new Date()).getTime().toString();\nfunction getUniqueKey() {\n return _loadTime + (_uniqueId++);\n}\nconst cacheData = {};\nfunction cacheDataSet(key, val) {\n cacheData[key] = val;\n}\nfunction cacheDataGet(key, delelteAfterGet) {\n const temp = cacheData[key];\n delelteAfterGet && delete cacheData[key];\n return temp;\n}\nfunction cacheDataHas(key) {\n return key in cacheData;\n}\nfunction mergeInternalComponents(components) {\n Object.keys(components).forEach(name => {\n if (name in internalComponents) {\n Object.assign(internalComponents[name], components[name]);\n }\n else {\n internalComponents[name] = components[name];\n }\n });\n return internalComponents;\n}\nfunction getComponentsAlias(origin) {\n const mapping = {};\n const viewAttrs = origin.View;\n const extraList = {\n '#text': {},\n StaticView: viewAttrs,\n StaticImage: origin.Image,\n StaticText: origin.Text,\n PureView: viewAttrs,\n CatchView: viewAttrs\n };\n origin = Object.assign(Object.assign({}, origin), extraList);\n Object.keys(origin)\n .sort((a, b) => {\n const reg = /^(Static|Pure|Catch)*(View|Image|Text)$/;\n const isACommonly = reg.test(a);\n const isBCommonly = reg.test(b);\n if (isACommonly && isBCommonly) {\n return a > b ? 1 : -1;\n }\n else if (isACommonly) {\n return -1;\n }\n else if (isBCommonly) {\n return 1;\n }\n else {\n return a >= b ? 1 : -1;\n }\n })\n .forEach((key, num) => {\n const obj = {\n _num: String(num)\n };\n Object.keys(origin[key])\n .filter(attr => !(/^bind/.test(attr)) && !['focus', 'blur'].includes(attr))\n .sort()\n .forEach((attr, index) => {\n obj[toCamelCase(attr)] = 'p' + index;\n });\n mapping[toDashed(key)] = obj;\n });\n return mapping;\n}\nfunction getPlatformType(platform = 'weapp', configNameOrType = PLATFORM_TYPE.MINI) {\n if (Object.keys(PLATFORM_CONFIG_MAP).includes(platform)) {\n configNameOrType = platform;\n }\n const param = PLATFORM_CONFIG_MAP[configNameOrType] || {};\n return param.type || configNameOrType;\n}\nfunction mergeReconciler(hostConfig, hooksForTest) {\n const obj = hooksForTest || hooks;\n const keys = Object.keys(hostConfig);\n keys.forEach(key => {\n obj.tap(key, hostConfig[key]);\n });\n}\nfunction nonsupport(api) {\n return function () {\n console.warn(`小程序暂不支持 ${api}`);\n };\n}\nfunction setUniqueKeyToRoute(key, obj) {\n const routerParamsPrivateKey = '__key_';\n const useDataCacheApis = [\n 'navigateTo',\n 'redirectTo',\n 'reLaunch',\n 'switchTab'\n ];\n if (useDataCacheApis.indexOf(key) > -1) {\n const url = obj.url = obj.url || '';\n const hasMark = url.indexOf('?') > -1;\n const cacheKey = getUniqueKey();\n obj.url += (hasMark ? '&' : '?') + `${routerParamsPrivateKey}=${cacheKey}`;\n }\n}\nfunction indent(str, size) {\n return str.split('\\n')\n .map((line, index) => {\n const indent = index === 0 ? '' : Array(size).fill(' ').join('');\n return indent + line;\n })\n .join('\\n');\n}\n\nconst needPromiseApis = new Set([\n 'addPhoneContact',\n 'authorize',\n 'canvasGetImageData',\n 'canvasPutImageData',\n 'canvasToTempFilePath',\n 'checkSession',\n 'chooseAddress',\n 'chooseImage',\n 'chooseInvoiceTitle',\n 'chooseLocation',\n 'chooseVideo',\n 'clearStorage',\n 'closeBLEConnection',\n 'closeBluetoothAdapter',\n 'closeSocket',\n 'compressImage',\n 'connectSocket',\n 'createBLEConnection',\n 'downloadFile',\n 'exitMiniProgram',\n 'getAvailableAudioSources',\n 'getBLEDeviceCharacteristics',\n 'getBLEDeviceServices',\n 'getBatteryInfo',\n 'getBeacons',\n 'getBluetoothAdapterState',\n 'getBluetoothDevices',\n 'getClipboardData',\n 'getConnectedBluetoothDevices',\n 'getConnectedWifi',\n 'getExtConfig',\n 'getFileInfo',\n 'getImageInfo',\n 'getLocation',\n 'getNetworkType',\n 'getSavedFileInfo',\n 'getSavedFileList',\n 'getScreenBrightness',\n 'getSetting',\n 'getStorage',\n 'getStorageInfo',\n 'getSystemInfo',\n 'getUserInfo',\n 'getWifiList',\n 'hideHomeButton',\n 'hideShareMenu',\n 'hideTabBar',\n 'hideTabBarRedDot',\n 'loadFontFace',\n 'login',\n 'makePhoneCall',\n 'navigateBack',\n 'navigateBackMiniProgram',\n 'navigateTo',\n 'navigateToBookshelf',\n 'navigateToMiniProgram',\n 'notifyBLECharacteristicValueChange',\n 'hideKeyboard',\n 'hideLoading',\n 'hideNavigationBarLoading',\n 'hideToast',\n 'openBluetoothAdapter',\n 'openDocument',\n 'openLocation',\n 'openSetting',\n 'pageScrollTo',\n 'previewImage',\n 'queryBookshelf',\n 'reLaunch',\n 'readBLECharacteristicValue',\n 'redirectTo',\n 'removeSavedFile',\n 'removeStorage',\n 'removeTabBarBadge',\n 'requestSubscribeMessage',\n 'saveFile',\n 'saveImageToPhotosAlbum',\n 'saveVideoToPhotosAlbum',\n 'scanCode',\n 'sendSocketMessage',\n 'setBackgroundColor',\n 'setBackgroundTextStyle',\n 'setClipboardData',\n 'setEnableDebug',\n 'setInnerAudioOption',\n 'setKeepScreenOn',\n 'setNavigationBarColor',\n 'setNavigationBarTitle',\n 'setScreenBrightness',\n 'setStorage',\n 'setTabBarBadge',\n 'setTabBarItem',\n 'setTabBarStyle',\n 'showActionSheet',\n 'showFavoriteGuide',\n 'showLoading',\n 'showModal',\n 'showShareMenu',\n 'showTabBar',\n 'showTabBarRedDot',\n 'showToast',\n 'startBeaconDiscovery',\n 'startBluetoothDevicesDiscovery',\n 'startDeviceMotionListening',\n 'startPullDownRefresh',\n 'stopBeaconDiscovery',\n 'stopBluetoothDevicesDiscovery',\n 'stopCompass',\n 'startCompass',\n 'startAccelerometer',\n 'stopAccelerometer',\n 'showNavigationBarLoading',\n 'stopDeviceMotionListening',\n 'stopPullDownRefresh',\n 'switchTab',\n 'uploadFile',\n 'vibrateLong',\n 'vibrateShort',\n 'writeBLECharacteristicValue'\n]);\nfunction getCanIUseWebp(taro) {\n return function () {\n var _a;\n const res = (_a = taro.getSystemInfoSync) === null || _a === void 0 ? void 0 : _a.call(taro);\n if (!res) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('不支持 API canIUseWebp');\n }\n return false;\n }\n const { platform } = res;\n const platformLower = platform.toLowerCase();\n if (platformLower === 'android' || platformLower === 'devtools') {\n return true;\n }\n return false;\n };\n}\nfunction getNormalRequest(global) {\n return function request(options) {\n options = options\n ? (isString(options)\n ? { url: options }\n : options)\n : {};\n const originSuccess = options.success;\n const originFail = options.fail;\n const originComplete = options.complete;\n let requestTask;\n const p = new Promise((resolve, reject) => {\n options.success = res => {\n originSuccess && originSuccess(res);\n resolve(res);\n };\n options.fail = res => {\n originFail && originFail(res);\n reject(res);\n };\n options.complete = res => {\n originComplete && originComplete(res);\n };\n requestTask = global.request(options);\n });\n equipTaskMethodsIntoPromise(requestTask, p);\n p.abort = (cb) => {\n cb && cb();\n if (requestTask) {\n requestTask.abort();\n }\n return p;\n };\n return p;\n };\n}\nfunction processApis(taro, global, config = {}) {\n const patchNeedPromiseApis = config.needPromiseApis || [];\n const _needPromiseApis = new Set([...patchNeedPromiseApis, ...needPromiseApis]);\n const preserved = [\n 'getEnv',\n 'interceptors',\n 'Current',\n 'getCurrentInstance',\n 'options',\n 'nextTick',\n 'eventCenter',\n 'Events',\n 'preload',\n 'webpackJsonp'\n ];\n const apis = new Set(!config.isOnlyPromisify\n ? Object.keys(global).filter(api => preserved.indexOf(api) === -1)\n : patchNeedPromiseApis);\n if (config.modifyApis) {\n config.modifyApis(apis);\n }\n apis.forEach(key => {\n if (_needPromiseApis.has(key)) {\n const originKey = key;\n taro[originKey] = (options = {}, ...args) => {\n let key = originKey;\n // 第一个参数 options 为字符串,单独处理\n if (typeof options === 'string') {\n if (args.length) {\n return global[key](options, ...args);\n }\n return global[key](options);\n }\n // 改变 key 或 option 字段,如需要把支付宝标准的字段对齐微信标准的字段\n if (config.transformMeta) {\n const transformResult = config.transformMeta(key, options);\n key = transformResult.key;\n options = transformResult.options;\n // 新 key 可能不存在\n if (!global.hasOwnProperty(key)) {\n return nonsupport(key)();\n }\n }\n let task = null;\n const obj = Object.assign({}, options);\n // 为页面跳转相关的 API 设置一个随机数作为路由参数。为了给 runtime 区分页面。\n setUniqueKeyToRoute(key, options);\n // Promise 化\n const p = new Promise((resolve, reject) => {\n obj.success = res => {\n var _a, _b;\n (_a = config.modifyAsyncResult) === null || _a === void 0 ? void 0 : _a.call(config, key, res);\n (_b = options.success) === null || _b === void 0 ? void 0 : _b.call(options, res);\n if (key === 'connectSocket') {\n resolve(Promise.resolve().then(() => task ? Object.assign(task, res) : res));\n }\n else {\n resolve(res);\n }\n };\n obj.fail = res => {\n var _a;\n (_a = options.fail) === null || _a === void 0 ? void 0 : _a.call(options, res);\n reject(res);\n };\n obj.complete = res => {\n var _a;\n (_a = options.complete) === null || _a === void 0 ? void 0 : _a.call(options, res);\n };\n if (args.length) {\n task = global[key](obj, ...args);\n }\n else {\n task = global[key](obj);\n }\n });\n // 给 promise 对象挂载属性\n if (['uploadFile', 'downloadFile'].includes(key)) {\n equipTaskMethodsIntoPromise(task, p);\n p.progress = cb => {\n task === null || task === void 0 ? void 0 : task.onProgressUpdate(cb);\n return p;\n };\n p.abort = cb => {\n cb === null || cb === void 0 ? void 0 : cb();\n task === null || task === void 0 ? void 0 : task.abort();\n return p;\n };\n }\n return p;\n };\n }\n else {\n let platformKey = key;\n // 改变 key 或 option 字段,如需要把支付宝标准的字段对齐微信标准的字段\n if (config.transformMeta) {\n platformKey = config.transformMeta(key, {}).key;\n }\n // API 不存在\n if (!global.hasOwnProperty(platformKey)) {\n taro[key] = nonsupport(key);\n return;\n }\n if (isFunction(global[key])) {\n taro[key] = (...args) => {\n if (config.handleSyncApis) {\n return config.handleSyncApis(key, global, args);\n }\n else {\n return global[platformKey].apply(global, args);\n }\n };\n }\n else {\n taro[key] = global[platformKey];\n }\n }\n });\n !config.isOnlyPromisify && equipCommonApis(taro, global, config);\n}\n/**\n * 挂载常用 API\n * @param taro Taro 对象\n * @param global 小程序全局对象,如微信的 wx,支付宝的 my\n */\nfunction equipCommonApis(taro, global, apis = {}) {\n taro.canIUseWebp = getCanIUseWebp(taro);\n taro.getCurrentPages = getCurrentPages || nonsupport('getCurrentPages');\n taro.getApp = getApp || nonsupport('getApp');\n taro.env = global.env || {};\n try {\n taro.requirePlugin = requirePlugin || nonsupport('requirePlugin');\n }\n catch (error) {\n taro.requirePlugin = nonsupport('requirePlugin');\n }\n // request & interceptors\n const request = apis.request || getNormalRequest(global);\n function taroInterceptor(chain) {\n return request(chain.requestParams);\n }\n const link = new taro.Link(taroInterceptor);\n taro.request = link.request.bind(link);\n taro.addInterceptor = link.addInterceptor.bind(link);\n taro.cleanInterceptors = link.cleanInterceptors.bind(link);\n taro.miniGlobal = taro.options.miniGlobal = global;\n}\n/**\n * 将Task对象中的方法挂载到promise对象中,适配小程序api原生返回结果\n * @param task Task对象 {RequestTask | DownloadTask | UploadTask}\n * @param promise Promise\n */\nfunction equipTaskMethodsIntoPromise(task, promise) {\n if (!task || !promise)\n return;\n const taskMethods = ['abort', 'onHeadersReceived', 'offHeadersReceived', 'onProgressUpdate', 'offProgressUpdate', 'onChunkReceived', 'offChunkReceived'];\n task && taskMethods.forEach(method => {\n if (method in task) {\n promise[method] = task[method].bind(task);\n }\n });\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, Events, HOOK_TYPE, PLATFORM_CONFIG_MAP, PLATFORM_TYPE, TaroHook, TaroHooks, animation, box, cacheDataGet, cacheDataHas, cacheDataSet, capitalize, controlledComponent, ensure, focusComponents, getComponentsAlias, getPlatformType, getUniqueKey, hasOwn, hooks, indent, internalComponents, isArray, isBoolean, isBooleanStringLiteral, isFunction, isNull, isNumber, isObject, isString, isUndefined, isWebPlatform, mergeInternalComponents, mergeReconciler, nestElements, nonsupport, noop, processApis, queryToJson, setUniqueKeyToRoute, singleQuote, toCamelCase, toDashed, toKebabCase, touchEvents, unbox, voidElements, warn };\n//# sourceMappingURL=shared.esm.js.map\n","import { isWebPlatform } from '@tarojs/shared'\n\nexport const ENV_TYPE = {\n WEAPP: 'WEAPP',\n SWAN: 'SWAN',\n ALIPAY: 'ALIPAY',\n TT: 'TT',\n QQ: 'QQ',\n JD: 'JD',\n WEB: 'WEB',\n RN: 'RN',\n HARMONY: 'HARMONY',\n QUICKAPP: 'QUICKAPP'\n}\n\nconst isWeb = isWebPlatform()\n\nexport function getEnv () {\n if (process.env.TARO_ENV === 'weapp') {\n return ENV_TYPE.WEAPP\n } else if (process.env.TARO_ENV === 'alipay') {\n return ENV_TYPE.ALIPAY\n } else if (process.env.TARO_ENV === 'swan') {\n return ENV_TYPE.SWAN\n } else if (process.env.TARO_ENV === 'tt') {\n return ENV_TYPE.TT\n } else if (process.env.TARO_ENV === 'jd') {\n return ENV_TYPE.JD\n } else if (process.env.TARO_ENV === 'qq') {\n return ENV_TYPE.QQ\n } else if (isWeb) {\n return ENV_TYPE.WEB\n } else if (process.env.TARO_ENV === 'rn') {\n return ENV_TYPE.RN\n } else if (process.env.TARO_ENV === 'harmony') {\n return ENV_TYPE.HARMONY\n } else if (process.env.TARO_ENV === 'quickapp') {\n return ENV_TYPE.QUICKAPP\n } else {\n return process.env.TARO_ENV || 'Unknown'\n }\n}\n","import { isFunction } from '../utils'\n\nexport default class Chain {\n constructor (requestParams, interceptors, index) {\n this.index = index || 0\n this.requestParams = requestParams\n this.interceptors = interceptors || []\n }\n\n proceed (requestParams) {\n this.requestParams = requestParams\n if (this.index >= this.interceptors.length) {\n throw new Error('chain 参数错误, 请勿直接修改 request.chain')\n }\n const nextInterceptor = this._getNextInterceptor()\n const nextChain = this._getNextChain()\n const p = nextInterceptor(nextChain)\n const res = p.catch(err => Promise.reject(err))\n Object.keys(p).forEach(k => isFunction(p[k]) && (res[k] = p[k]))\n return res\n }\n\n _getNextInterceptor () {\n return this.interceptors[this.index]\n }\n\n _getNextChain () {\n return new Chain(this.requestParams, this.interceptors, this.index + 1)\n }\n}\n","import Chain from './chain'\n\nexport default class Link {\n constructor (interceptor) {\n this.taroInterceptor = interceptor\n this.chain = new Chain()\n }\n\n request (requestParams) {\n const chain = this.chain\n const taroInterceptor = this.taroInterceptor\n\n chain.interceptors = chain.interceptors\n .filter(interceptor => interceptor !== taroInterceptor)\n .concat(taroInterceptor)\n\n return chain.proceed({ ...requestParams })\n }\n\n addInterceptor (interceptor) {\n this.chain.interceptors.push(interceptor)\n }\n\n cleanInterceptors () {\n this.chain = new Chain()\n }\n}\n","import { isFunction, isUndefined } from '../utils'\n\nexport function timeoutInterceptor (chain) {\n const requestParams = chain.requestParams\n let p\n const res = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n timeout = null\n reject(new Error('网络链接超时,请稍后再试!'))\n }, (requestParams && requestParams.timeout) || 60000)\n\n p = chain.proceed(requestParams)\n p\n .then(res => {\n if (!timeout) return\n clearTimeout(timeout)\n resolve(res)\n })\n .catch(err => {\n timeout && clearTimeout(timeout)\n reject(err)\n })\n })\n if (!isUndefined(p) && isFunction(p.abort)) res.abort = p.abort\n\n return res\n}\n\nexport function logInterceptor (chain) {\n const requestParams = chain.requestParams\n const { method, data, url } = requestParams\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.log(`http ${method || 'GET'} --> ${url} data: `, data)\n }\n\n const p = chain.proceed(requestParams)\n const res = p\n .then(res => {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.log(`http <-- ${url} result:`, res)\n }\n return res\n })\n if (isFunction(p.abort)) res.abort = p.abort\n\n return res\n}\n","import { isFunction, isObject } from './utils'\n\nexport function Behavior (options) {\n return options\n}\n\nexport function getPreload (current) {\n return function (key, val) {\n current.preloadData = isObject(key)\n ? key\n : {\n [key]: val\n }\n }\n}\n\nconst defaultDesignWidth = 750\nconst defaultDesignRatio = {\n 640: 2.34 / 2,\n 750: 1,\n 828: 1.81 / 2\n}\nconst defaultBaseFontSize = 20\n\nexport function getInitPxTransform (taro) {\n return function (config) {\n const {\n designWidth = defaultDesignWidth,\n deviceRatio = defaultDesignRatio,\n baseFontSize = defaultBaseFontSize\n } = config\n taro.config = taro.config || {}\n taro.config.designWidth = designWidth\n taro.config.deviceRatio = deviceRatio\n taro.config.baseFontSize = baseFontSize\n }\n}\n\nexport function getPxTransform (taro) {\n return function (size) {\n const config = taro.config || {}\n const deviceRatio = config.deviceRatio || defaultDesignRatio\n const designWidth = (((input = 0) => isFunction(config.designWidth)\n ? config.designWidth(input)\n : config.designWidth || defaultDesignWidth))(size)\n if (!(designWidth in deviceRatio)) {\n throw new Error(`deviceRatio 配置中不存在 ${designWidth} 的设置!`)\n }\n return (parseInt(size, 10) * deviceRatio[designWidth]) + 'rpx'\n }\n}\n","/* eslint-disable camelcase */\nimport './polyfill'\n\nimport {\n Current,\n eventCenter,\n Events,\n getCurrentInstance,\n nextTick,\n options\n} from '@tarojs/runtime'\n\nimport { ENV_TYPE, getEnv } from './env'\nimport Link from './interceptor'\nimport * as interceptors from './interceptor/interceptors'\nimport {\n Behavior,\n getInitPxTransform,\n getPreload,\n getPxTransform\n} from './tools'\n\nconst Taro = {\n Behavior,\n getEnv,\n ENV_TYPE,\n Link,\n interceptors,\n Current,\n getCurrentInstance,\n options,\n nextTick,\n eventCenter,\n Events,\n getInitPxTransform\n}\n\nTaro.initPxTransform = getInitPxTransform(Taro)\nTaro.preload = getPreload(Current)\nTaro.pxTransform = getPxTransform(Taro)\n\nexport default Taro\n"],"names":["isFunction","x","isUndefined","isObject","_typeof","isBadObj","throwTypeError","s","TypeError","Object","assign","target","to","index","arguments","length","nextSource","nextKey","prototype","hasOwnProperty","call","defineProperties","obj","properties","convertToDescriptor","desc","hasProperty","prop","d","enumerable","configurable","value","writable","g","get","set","keys","descs","i","push","defineProperty","DEFAULT_EMPTY_ARRAY","NO_DEFAULT_VALUE","DEFAULT_TRUE","DEFAULT_FALSE","touchEvents","bindTouchStart","bindTouchMove","bindTouchEnd","bindTouchCancel","bindLongTap","animation","bindAnimationStart","bindAnimationIteration","bindAnimationEnd","bindTransitionEnd","singleQuote","concat","longitude","latitude","scale","markers","covers","polyline","circles","controls","bindMarkerTap","bindControlTap","bindCalloutTap","bindUpdated","size","type","plain","disabled","loading","name","direction","inertia","y","damping","friction","bindChange","bindScale","bindHTouchMove","bindVTouchMove","width","height","bindScrollToUpper","bindScrollToLower","bindScroll","autoplay","current","interval","duration","circular","vertical","bindTransition","bindAnimationFinish","src","mode","bindError","bindLoad","muted","orientation","bindStateChange","bindFullScreenChange","bindNetStatus","loop","poster","bindPlay","bindPause","bindEnded","bindTimeUpdate","bindWaiting","ENV_TYPE","WEAPP","SWAN","ALIPAY","TT","QQ","JD","WEB","RN","HARMONY","QUICKAPP","isWeb","isWebPlatform","getEnv","process","env","TARO_ENV","Chain","requestParams","interceptors","_classCallCheck","_createClass","key","proceed","Error","nextInterceptor","_getNextInterceptor","nextChain","_getNextChain","p","res","catch","err","Promise","reject","forEach","k","Link","interceptor","taroInterceptor","chain","request","filter","_objectSpread","addInterceptor","cleanInterceptors","timeoutInterceptor","resolve","timeout","setTimeout","then","clearTimeout","abort","logInterceptor","method","data","url","NODE_ENV","console","log","Behavior","options","getPreload","val","preloadData","_defineProperty","defaultDesignWidth","defaultDesignRatio","defaultBaseFontSize","getInitPxTransform","taro","config","_config$designWidth","designWidth","_config$deviceRatio","deviceRatio","_config$baseFontSize","baseFontSize","getPxTransform","input","undefined","parseInt","Taro","Current","getCurrentInstance","nextTick","eventCenter","Events","initPxTransform","preload","pxTransform"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/utils.js","../src/polyfill.js","../../shared/dist/shared.esm.js","../src/env.js","../src/interceptor/chain.js","../src/interceptor/index.js","../src/interceptor/interceptors.js","../src/tools.js","../src/index.js"],"sourcesContent":["export function isFunction (x) {\n return typeof x === 'function'\n}\n\nexport function isUndefined (x) {\n return typeof x === 'undefined'\n}\n\nexport function isObject (x) {\n return x && typeof x === 'object'\n}\n","import { isFunction, isObject, isUndefined } from './utils'\n\nconst isBadObj = (x) => !isObject(x)\n\nfunction throwTypeError (s) {\n throw new TypeError(s)\n}\n\nif (!isFunction(Object.assign)) {\n // Must be writable: true, enumerable: false, configurable: true\n Object.assign = function (target) { // .length of function is 2\n if (target == null) { // TypeError if undefined or null\n throwTypeError('Cannot convert undefined or null to object')\n }\n\n const to = Object(target)\n\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index]\n\n if (nextSource != null) { // Skip over if undefined or null\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey]\n }\n }\n }\n }\n return to\n }\n}\n\nif (!isFunction(Object.defineProperties)) {\n Object.defineProperties = function (obj, properties) {\n function convertToDescriptor (desc) {\n function hasProperty (obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n }\n\n if (isBadObj(desc)) { throwTypeError('bad desc') }\n\n const d = {}\n\n if (hasProperty(desc, 'enumerable')) d.enumerable = !!desc.enumerable\n if (hasProperty(desc, 'configurable')) { d.configurable = !!desc.configurable }\n if (hasProperty(desc, 'value')) d.value = desc.value\n if (hasProperty(desc, 'writable')) d.writable = !!desc.writable\n if (hasProperty(desc, 'get')) {\n const g = desc.get\n\n if (!isFunction(g) && !isUndefined(g)) { throwTypeError('bad get') }\n d.get = g\n }\n if (hasProperty(desc, 'set')) {\n const s = desc.set\n if (!isFunction(s) && !isUndefined(s)) { throwTypeError('bad set') }\n d.set = s\n }\n\n if (('get' in d || 'set' in d) && ('value' in d || 'writable' in d)) { throwTypeError('identity-confused descriptor') }\n\n return d\n }\n\n if (isBadObj(obj)) throwTypeError('bad obj')\n\n properties = Object(properties)\n\n const keys = Object.keys(properties)\n const descs = []\n\n for (let i = 0; i < keys.length; i++) {\n descs.push([keys[i], convertToDescriptor(properties[keys[i]])])\n }\n\n for (let i = 0; i < descs.length; i++) {\n Object.defineProperty(obj, descs[i][0], descs[i][1])\n }\n\n return obj\n }\n}\n","const DEFAULT_EMPTY_ARRAY = '[]';\nconst NO_DEFAULT_VALUE = '';\nconst DEFAULT_TRUE = '!0';\nconst DEFAULT_FALSE = '!1';\nconst touchEvents = {\n bindTouchStart: NO_DEFAULT_VALUE,\n bindTouchMove: NO_DEFAULT_VALUE,\n bindTouchEnd: NO_DEFAULT_VALUE,\n bindTouchCancel: NO_DEFAULT_VALUE,\n bindLongTap: NO_DEFAULT_VALUE\n};\nconst animation = {\n animation: NO_DEFAULT_VALUE,\n bindAnimationStart: NO_DEFAULT_VALUE,\n bindAnimationIteration: NO_DEFAULT_VALUE,\n bindAnimationEnd: NO_DEFAULT_VALUE,\n bindTransitionEnd: NO_DEFAULT_VALUE\n};\nfunction singleQuote(s) {\n return `'${s}'`;\n}\nconst View = Object.assign(Object.assign({ 'hover-class': singleQuote('none'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '50', 'hover-stay-time': '400' }, touchEvents), animation);\nconst Icon = {\n type: NO_DEFAULT_VALUE,\n size: '23',\n color: NO_DEFAULT_VALUE\n};\nconst MapComp = Object.assign({ longitude: NO_DEFAULT_VALUE, latitude: NO_DEFAULT_VALUE, scale: '16', markers: DEFAULT_EMPTY_ARRAY, covers: NO_DEFAULT_VALUE, polyline: DEFAULT_EMPTY_ARRAY, circles: DEFAULT_EMPTY_ARRAY, controls: DEFAULT_EMPTY_ARRAY, 'include-points': DEFAULT_EMPTY_ARRAY, 'show-location': NO_DEFAULT_VALUE, 'layer-style': '1', bindMarkerTap: NO_DEFAULT_VALUE, bindControlTap: NO_DEFAULT_VALUE, bindCalloutTap: NO_DEFAULT_VALUE, bindUpdated: NO_DEFAULT_VALUE }, touchEvents);\nconst Progress = {\n percent: NO_DEFAULT_VALUE,\n 'stroke-width': '6',\n color: singleQuote('#09BB07'),\n activeColor: singleQuote('#09BB07'),\n backgroundColor: singleQuote('#EBEBEB'),\n active: DEFAULT_FALSE,\n 'active-mode': singleQuote('backwards'),\n 'show-info': DEFAULT_FALSE\n};\nconst RichText = {\n nodes: DEFAULT_EMPTY_ARRAY\n};\nconst Text = {\n selectable: DEFAULT_FALSE,\n space: NO_DEFAULT_VALUE,\n decode: DEFAULT_FALSE\n};\nconst Button = Object.assign({ size: singleQuote('default'), type: NO_DEFAULT_VALUE, plain: DEFAULT_FALSE, disabled: NO_DEFAULT_VALUE, loading: DEFAULT_FALSE, 'form-type': NO_DEFAULT_VALUE, 'open-type': NO_DEFAULT_VALUE, 'hover-class': singleQuote('button-hover'), 'hover-stop-propagation': DEFAULT_FALSE, 'hover-start-time': '20', 'hover-stay-time': '70', name: NO_DEFAULT_VALUE }, touchEvents);\nconst Checkbox = {\n value: NO_DEFAULT_VALUE,\n disabled: NO_DEFAULT_VALUE,\n checked: DEFAULT_FALSE,\n color: singleQuote('#09BB07'),\n name: NO_DEFAULT_VALUE\n};\nconst CheckboxGroup = {\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Form = {\n 'report-submit': DEFAULT_FALSE,\n bindSubmit: NO_DEFAULT_VALUE,\n bindReset: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Input = {\n value: NO_DEFAULT_VALUE,\n type: singleQuote(NO_DEFAULT_VALUE),\n password: DEFAULT_FALSE,\n placeholder: NO_DEFAULT_VALUE,\n 'placeholder-style': NO_DEFAULT_VALUE,\n 'placeholder-class': singleQuote('input-placeholder'),\n disabled: NO_DEFAULT_VALUE,\n maxlength: '140',\n 'cursor-spacing': '0',\n focus: DEFAULT_FALSE,\n 'confirm-type': singleQuote('done'),\n 'confirm-hold': DEFAULT_FALSE,\n cursor: 'i.value.length',\n 'selection-start': '-1',\n 'selection-end': '-1',\n bindInput: NO_DEFAULT_VALUE,\n bindFocus: NO_DEFAULT_VALUE,\n bindBlur: NO_DEFAULT_VALUE,\n bindConfirm: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Label = {\n for: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Picker = {\n mode: singleQuote('selector'),\n disabled: NO_DEFAULT_VALUE,\n range: NO_DEFAULT_VALUE,\n 'range-key': NO_DEFAULT_VALUE,\n value: NO_DEFAULT_VALUE,\n start: NO_DEFAULT_VALUE,\n end: NO_DEFAULT_VALUE,\n fields: singleQuote('day'),\n 'custom-item': NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE,\n bindCancel: NO_DEFAULT_VALUE,\n bindChange: NO_DEFAULT_VALUE,\n bindColumnChange: NO_DEFAULT_VALUE\n};\nconst PickerView = {\n value: NO_DEFAULT_VALUE,\n 'indicator-style': NO_DEFAULT_VALUE,\n 'indicator-class': NO_DEFAULT_VALUE,\n 'mask-style': NO_DEFAULT_VALUE,\n 'mask-class': NO_DEFAULT_VALUE,\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst PickerViewColumn = {\n name: NO_DEFAULT_VALUE\n};\nconst Radio = {\n value: NO_DEFAULT_VALUE,\n checked: DEFAULT_FALSE,\n disabled: NO_DEFAULT_VALUE,\n color: singleQuote('#09BB07'),\n name: NO_DEFAULT_VALUE\n};\nconst RadioGroup = {\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Slider = {\n min: '0',\n max: '100',\n step: '1',\n disabled: NO_DEFAULT_VALUE,\n value: '0',\n activeColor: singleQuote('#1aad19'),\n backgroundColor: singleQuote('#e9e9e9'),\n 'block-size': '28',\n 'block-color': singleQuote('#ffffff'),\n 'show-value': DEFAULT_FALSE,\n bindChange: NO_DEFAULT_VALUE,\n bindChanging: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Switch = {\n checked: DEFAULT_FALSE,\n disabled: NO_DEFAULT_VALUE,\n type: singleQuote('switch'),\n color: singleQuote('#04BE02'),\n bindChange: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst Textarea = {\n value: NO_DEFAULT_VALUE,\n placeholder: NO_DEFAULT_VALUE,\n 'placeholder-style': NO_DEFAULT_VALUE,\n 'placeholder-class': singleQuote('textarea-placeholder'),\n disabled: NO_DEFAULT_VALUE,\n maxlength: '140',\n 'auto-focus': DEFAULT_FALSE,\n focus: DEFAULT_FALSE,\n 'auto-height': DEFAULT_FALSE,\n fixed: DEFAULT_FALSE,\n 'cursor-spacing': '0',\n cursor: '-1',\n 'selection-start': '-1',\n 'selection-end': '-1',\n bindFocus: NO_DEFAULT_VALUE,\n bindBlur: NO_DEFAULT_VALUE,\n bindLineChange: NO_DEFAULT_VALUE,\n bindInput: NO_DEFAULT_VALUE,\n bindConfirm: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE\n};\nconst CoverImage = {\n src: NO_DEFAULT_VALUE,\n bindLoad: 'eh',\n bindError: 'eh'\n};\nconst CoverView = Object.assign({ 'scroll-top': DEFAULT_FALSE }, touchEvents);\nconst MovableArea = {\n 'scale-area': DEFAULT_FALSE\n};\nconst MovableView = Object.assign(Object.assign({ direction: 'none', inertia: DEFAULT_FALSE, 'out-of-bounds': DEFAULT_FALSE, x: NO_DEFAULT_VALUE, y: NO_DEFAULT_VALUE, damping: '20', friction: '2', disabled: NO_DEFAULT_VALUE, scale: DEFAULT_FALSE, 'scale-min': '0.5', 'scale-max': '10', 'scale-value': '1', bindChange: NO_DEFAULT_VALUE, bindScale: NO_DEFAULT_VALUE, bindHTouchMove: NO_DEFAULT_VALUE, bindVTouchMove: NO_DEFAULT_VALUE, width: singleQuote('10px'), height: singleQuote('10px') }, touchEvents), animation);\nconst ScrollView = Object.assign(Object.assign({ 'scroll-x': DEFAULT_FALSE, 'scroll-y': DEFAULT_FALSE, 'upper-threshold': '50', 'lower-threshold': '50', 'scroll-top': NO_DEFAULT_VALUE, 'scroll-left': NO_DEFAULT_VALUE, 'scroll-into-view': NO_DEFAULT_VALUE, 'scroll-with-animation': DEFAULT_FALSE, 'enable-back-to-top': DEFAULT_FALSE, bindScrollToUpper: NO_DEFAULT_VALUE, bindScrollToLower: NO_DEFAULT_VALUE, bindScroll: NO_DEFAULT_VALUE }, touchEvents), animation);\nconst Swiper = Object.assign({ 'indicator-dots': DEFAULT_FALSE, 'indicator-color': singleQuote('rgba(0, 0, 0, .3)'), 'indicator-active-color': singleQuote('#000000'), autoplay: DEFAULT_FALSE, current: '0', interval: '5000', duration: '500', circular: DEFAULT_FALSE, vertical: DEFAULT_FALSE, 'previous-margin': singleQuote('0px'), 'next-margin': singleQuote('0px'), 'display-multiple-items': '1', bindChange: NO_DEFAULT_VALUE, bindTransition: NO_DEFAULT_VALUE, bindAnimationFinish: NO_DEFAULT_VALUE }, touchEvents);\nconst SwiperItem = {\n 'item-id': NO_DEFAULT_VALUE\n};\nconst Navigator = {\n url: NO_DEFAULT_VALUE,\n 'open-type': singleQuote('navigate'),\n delta: '1',\n 'hover-class': singleQuote('navigator-hover'),\n 'hover-stop-propagation': DEFAULT_FALSE,\n 'hover-start-time': '50',\n 'hover-stay-time': '600',\n bindSuccess: NO_DEFAULT_VALUE,\n bindFail: NO_DEFAULT_VALUE,\n bindComplete: NO_DEFAULT_VALUE\n};\nconst Audio = {\n id: NO_DEFAULT_VALUE,\n src: NO_DEFAULT_VALUE,\n loop: DEFAULT_FALSE,\n controls: DEFAULT_FALSE,\n poster: NO_DEFAULT_VALUE,\n name: NO_DEFAULT_VALUE,\n author: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE,\n bindPlay: NO_DEFAULT_VALUE,\n bindPause: NO_DEFAULT_VALUE,\n bindTimeUpdate: NO_DEFAULT_VALUE,\n bindEnded: NO_DEFAULT_VALUE\n};\nconst Camera = {\n 'device-position': singleQuote('back'),\n flash: singleQuote('auto'),\n bindStop: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE\n};\nconst Image = Object.assign({ src: NO_DEFAULT_VALUE, mode: singleQuote('scaleToFill'), 'lazy-load': DEFAULT_FALSE, bindError: NO_DEFAULT_VALUE, bindLoad: NO_DEFAULT_VALUE }, touchEvents);\nconst LivePlayer = Object.assign({ src: NO_DEFAULT_VALUE, autoplay: DEFAULT_FALSE, muted: DEFAULT_FALSE, orientation: singleQuote('vertical'), 'object-fit': singleQuote('contain'), 'background-mute': DEFAULT_FALSE, 'min-cache': '1', 'max-cache': '3', bindStateChange: NO_DEFAULT_VALUE, bindFullScreenChange: NO_DEFAULT_VALUE, bindNetStatus: NO_DEFAULT_VALUE }, animation);\nconst Video = Object.assign({ src: NO_DEFAULT_VALUE, duration: NO_DEFAULT_VALUE, controls: DEFAULT_TRUE, 'danmu-list': NO_DEFAULT_VALUE, 'danmu-btn': NO_DEFAULT_VALUE, 'enable-danmu': NO_DEFAULT_VALUE, autoplay: DEFAULT_FALSE, loop: DEFAULT_FALSE, muted: DEFAULT_FALSE, 'initial-time': '0', 'page-gesture': DEFAULT_FALSE, direction: NO_DEFAULT_VALUE, 'show-progress': DEFAULT_TRUE, 'show-fullscreen-btn': DEFAULT_TRUE, 'show-play-btn': DEFAULT_TRUE, 'show-center-play-btn': DEFAULT_TRUE, 'enable-progress-gesture': DEFAULT_TRUE, 'object-fit': singleQuote('contain'), poster: NO_DEFAULT_VALUE, 'show-mute-btn': DEFAULT_FALSE, bindPlay: NO_DEFAULT_VALUE, bindPause: NO_DEFAULT_VALUE, bindEnded: NO_DEFAULT_VALUE, bindTimeUpdate: NO_DEFAULT_VALUE, bindFullScreenChange: NO_DEFAULT_VALUE, bindWaiting: NO_DEFAULT_VALUE, bindError: NO_DEFAULT_VALUE }, animation);\nconst Canvas = Object.assign({ 'canvas-id': NO_DEFAULT_VALUE, 'disable-scroll': DEFAULT_FALSE, bindError: NO_DEFAULT_VALUE }, touchEvents);\nconst Ad = {\n 'unit-id': NO_DEFAULT_VALUE,\n 'ad-intervals': NO_DEFAULT_VALUE,\n bindLoad: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE,\n bindClose: NO_DEFAULT_VALUE\n};\nconst WebView = {\n src: NO_DEFAULT_VALUE,\n bindMessage: NO_DEFAULT_VALUE,\n bindLoad: NO_DEFAULT_VALUE,\n bindError: NO_DEFAULT_VALUE\n};\nconst Block = {};\n// For Vue,因为 slot 标签被 vue 占用了\nconst SlotView = {\n name: NO_DEFAULT_VALUE\n};\n// For React\n// Slot 和 SlotView 最终都会编译成 <view slot={{ i.name }} />\n// 因为 <slot name=\"{{ i.name }}\" /> 适用性没有前者高(无法添加类和样式)\n// 不给 View 直接加 slot 属性的原因是性能损耗\nconst Slot = {\n name: NO_DEFAULT_VALUE\n};\nconst NativeSlot = {\n name: NO_DEFAULT_VALUE\n};\nconst internalComponents = {\n View,\n Icon,\n Progress,\n RichText,\n Text,\n Button,\n Checkbox,\n CheckboxGroup,\n Form,\n Input,\n Label,\n Picker,\n PickerView,\n PickerViewColumn,\n Radio,\n RadioGroup,\n Slider,\n Switch,\n CoverImage,\n Textarea,\n CoverView,\n MovableArea,\n MovableView,\n ScrollView,\n Swiper,\n SwiperItem,\n Navigator,\n Audio,\n Camera,\n Image,\n LivePlayer,\n Video,\n Canvas,\n Ad,\n WebView,\n Block,\n Map: MapComp,\n Slot,\n SlotView,\n NativeSlot,\n};\nconst controlledComponent = new Set([\n 'input',\n 'checkbox',\n 'picker',\n 'picker-view',\n 'radio',\n 'slider',\n 'switch',\n 'textarea'\n]);\nconst focusComponents = new Set([\n 'input',\n 'textarea'\n]);\nconst voidElements = new Set([\n 'progress',\n 'icon',\n 'rich-text',\n 'input',\n 'textarea',\n 'slider',\n 'switch',\n 'audio',\n 'ad',\n 'official-account',\n 'open-data',\n 'navigation-bar'\n]);\nconst nestElements = new Map([\n ['view', -1],\n ['catch-view', -1],\n ['cover-view', -1],\n ['static-view', -1],\n ['pure-view', -1],\n ['block', -1],\n ['text', -1],\n ['static-text', 6],\n ['slot', 8],\n ['slot-view', 8],\n ['label', 6],\n ['form', 4],\n ['scroll-view', 4],\n ['swiper', 4],\n ['swiper-item', 4]\n]);\n\nvar PLATFORM_TYPE;\n(function (PLATFORM_TYPE) {\n PLATFORM_TYPE[\"MINI\"] = \"mini\";\n PLATFORM_TYPE[\"WEB\"] = \"web\";\n PLATFORM_TYPE[\"RN\"] = \"rn\";\n PLATFORM_TYPE[\"HARMONY\"] = \"harmony\";\n PLATFORM_TYPE[\"QUICK\"] = \"quickapp\";\n})(PLATFORM_TYPE || (PLATFORM_TYPE = {}));\nconst PLATFORM_CONFIG_MAP = {\n h5: {\n type: PLATFORM_TYPE.WEB\n },\n harmony: {\n type: PLATFORM_TYPE.HARMONY\n },\n mini: {\n type: PLATFORM_TYPE.MINI\n },\n rn: {\n type: PLATFORM_TYPE.RN\n },\n quickapp: {\n type: PLATFORM_TYPE.QUICK\n }\n};\n\nclass Events {\n constructor(opts) {\n var _a;\n this.callbacks = (_a = opts === null || opts === void 0 ? void 0 : opts.callbacks) !== null && _a !== void 0 ? _a : {};\n }\n on(eventName, callback, context) {\n let event, node, tail, list;\n if (!callback) {\n return this;\n }\n eventName = eventName.split(Events.eventSplitter);\n this.callbacks || (this.callbacks = {});\n const calls = this.callbacks;\n while ((event = eventName.shift())) {\n list = calls[event];\n node = list ? list.tail : {};\n node.next = tail = {};\n node.context = context;\n node.callback = callback;\n calls[event] = {\n tail,\n next: list ? list.next : node\n };\n }\n return this;\n }\n once(events, callback, context) {\n const wrapper = (...args) => {\n callback.apply(this, args);\n this.off(events, wrapper, context);\n };\n this.on(events, wrapper, context);\n return this;\n }\n off(events, callback, context) {\n let event, calls, node, tail, cb, ctx;\n if (!(calls = this.callbacks)) {\n return this;\n }\n if (!(events || callback || context)) {\n delete this.callbacks;\n return this;\n }\n events = events ? events.split(Events.eventSplitter) : Object.keys(calls);\n while ((event = events.shift())) {\n node = calls[event];\n delete calls[event];\n if (!node || !(callback || context)) {\n continue;\n }\n tail = node.tail;\n while ((node = node.next) !== tail) {\n cb = node.callback;\n ctx = node.context;\n if ((callback && cb !== callback) || (context && ctx !== context)) {\n this.on(event, cb, ctx);\n }\n }\n }\n return this;\n }\n trigger(events) {\n let event, node, calls, tail;\n if (!(calls = this.callbacks)) {\n return this;\n }\n events = events.split(Events.eventSplitter);\n const rest = [].slice.call(arguments, 1);\n while ((event = events.shift())) {\n if ((node = calls[event])) {\n tail = node.tail;\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, rest);\n }\n }\n }\n return this;\n }\n}\nEvents.eventSplitter = ','; // Note: Harmony ACE API 8 开发板不支持使用正则 split 字符串 /\\s+/\n\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isUndefined(o) {\n return typeof o === 'undefined';\n}\nfunction isNull(o) {\n return o === null;\n}\nfunction isObject(o) {\n return o !== null && typeof o === 'object';\n}\nfunction isBoolean(o) {\n return o === true || o === false;\n}\nfunction isFunction(o) {\n return typeof o === 'function';\n}\nfunction isNumber(o) {\n return typeof o === 'number';\n}\nfunction isBooleanStringLiteral(o) {\n return o === 'true' || o === 'false';\n}\nconst isArray = Array.isArray;\nconst isWebPlatform = () => process.env.TARO_ENV === 'h5' || process.env.TARO_PLATFORM === 'web';\n\nvar HOOK_TYPE;\n(function (HOOK_TYPE) {\n HOOK_TYPE[HOOK_TYPE[\"SINGLE\"] = 0] = \"SINGLE\";\n HOOK_TYPE[HOOK_TYPE[\"MULTI\"] = 1] = \"MULTI\";\n HOOK_TYPE[HOOK_TYPE[\"WATERFALL\"] = 2] = \"WATERFALL\";\n})(HOOK_TYPE || (HOOK_TYPE = {}));\nconst defaultMiniLifecycle = {\n app: [\n 'onLaunch',\n 'onShow',\n 'onHide'\n ],\n page: [\n 'onLoad',\n 'onUnload',\n 'onReady',\n 'onShow',\n 'onHide',\n [\n 'onPullDownRefresh',\n 'onReachBottom',\n 'onPageScroll',\n 'onResize',\n 'onTabItemTap',\n 'onTitleClick',\n 'onOptionMenuClick',\n 'onPopMenuClick',\n 'onPullIntercept',\n 'onAddToFavorites'\n ],\n [\n 'onShareAppMessage',\n 'onShareTimeline'\n ]\n ],\n component: [\n 'attached',\n 'detached'\n ]\n};\nfunction TaroHook(type, initial) {\n return {\n type,\n initial: initial || null\n };\n}\nclass TaroHooks extends Events {\n constructor(hooks, opts) {\n super(opts);\n this.hooks = hooks;\n for (const hookName in hooks) {\n const { initial } = hooks[hookName];\n if (isFunction(initial)) {\n this.on(hookName, initial);\n }\n }\n }\n tapOneOrMany(hookName, callback) {\n const list = isFunction(callback) ? [callback] : callback;\n list.forEach(cb => this.on(hookName, cb));\n }\n tap(hookName, callback) {\n const hooks = this.hooks;\n const { type, initial } = hooks[hookName];\n if (type === HOOK_TYPE.SINGLE) {\n this.off(hookName);\n this.on(hookName, isFunction(callback) ? callback : callback[callback.length - 1]);\n }\n else {\n initial && this.off(hookName, initial);\n this.tapOneOrMany(hookName, callback);\n }\n }\n call(hookName, ...rest) {\n var _a;\n const hook = this.hooks[hookName];\n if (!hook)\n return;\n const { type } = hook;\n const calls = this.callbacks;\n if (!calls)\n return;\n const list = calls[hookName];\n if (list) {\n const tail = list.tail;\n let node = list.next;\n let args = rest;\n let res;\n while (node !== tail) {\n res = (_a = node.callback) === null || _a === void 0 ? void 0 : _a.apply(node.context || this, args);\n if (type === HOOK_TYPE.WATERFALL) {\n const params = [res];\n args = params;\n }\n node = node.next;\n }\n return res;\n }\n }\n isExist(hookName) {\n var _a;\n return Boolean((_a = this.callbacks) === null || _a === void 0 ? void 0 : _a[hookName]);\n }\n}\nconst hooks = new TaroHooks({\n getMiniLifecycle: TaroHook(HOOK_TYPE.SINGLE, defaultConfig => defaultConfig),\n getMiniLifecycleImpl: TaroHook(HOOK_TYPE.SINGLE, function () {\n return this.call('getMiniLifecycle', defaultMiniLifecycle);\n }),\n getLifecycle: TaroHook(HOOK_TYPE.SINGLE, (instance, lifecycle) => instance[lifecycle]),\n getPathIndex: TaroHook(HOOK_TYPE.SINGLE, indexOfNode => `[${indexOfNode}]`),\n getEventCenter: TaroHook(HOOK_TYPE.SINGLE, Events => new Events()),\n isBubbleEvents: TaroHook(HOOK_TYPE.SINGLE, eventName => {\n /**\n * 支持冒泡的事件, 除 支付宝小程序外,其余的可冒泡事件都和微信保持一致\n * 详见 见 https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html\n */\n const BUBBLE_EVENTS = new Set([\n 'touchstart',\n 'touchmove',\n 'touchcancel',\n 'touchend',\n 'touchforcechange',\n 'tap',\n 'longpress',\n 'longtap',\n 'transitionend',\n 'animationstart',\n 'animationiteration',\n 'animationend'\n ]);\n return BUBBLE_EVENTS.has(eventName);\n }),\n getSpecialNodes: TaroHook(HOOK_TYPE.SINGLE, () => ['view', 'text', 'image']),\n onRemoveAttribute: TaroHook(HOOK_TYPE.SINGLE),\n batchedEventUpdates: TaroHook(HOOK_TYPE.SINGLE),\n mergePageInstance: TaroHook(HOOK_TYPE.SINGLE),\n modifyPageObject: TaroHook(HOOK_TYPE.SINGLE),\n createPullDownComponent: TaroHook(HOOK_TYPE.SINGLE),\n getDOMNode: TaroHook(HOOK_TYPE.SINGLE),\n modifyHydrateData: TaroHook(HOOK_TYPE.SINGLE),\n modifySetAttrPayload: TaroHook(HOOK_TYPE.SINGLE),\n modifyRmAttrPayload: TaroHook(HOOK_TYPE.SINGLE),\n onAddEvent: TaroHook(HOOK_TYPE.SINGLE),\n modifyMpEvent: TaroHook(HOOK_TYPE.MULTI),\n modifyMpEventImpl: TaroHook(HOOK_TYPE.SINGLE, function (e) {\n try {\n // 有些小程序的事件对象的某些属性只读\n this.call('modifyMpEvent', e);\n }\n catch (error) {\n console.warn('[Taro modifyMpEvent hook Error]: ' + (error === null || error === void 0 ? void 0 : error.message));\n }\n }),\n modifyTaroEvent: TaroHook(HOOK_TYPE.MULTI),\n modifyDispatchEvent: TaroHook(HOOK_TYPE.MULTI),\n initNativeApi: TaroHook(HOOK_TYPE.MULTI),\n patchElement: TaroHook(HOOK_TYPE.MULTI)\n});\n\nconst EMPTY_OBJ = {};\nconst EMPTY_ARR = [];\nconst noop = (..._) => { };\n/**\n * box creates a boxed value.\n *\n * @typeparam T Value type.\n * @param v Value.\n * @returns Boxed value.\n */\nconst box = (v) => ({ v });\n/**\n * box creates a boxed value.\n *\n * @typeparam T Value type.\n * @param b Boxed value.\n * @returns Value.\n */\nconst unbox = (b) => b.v;\nfunction toDashed(s) {\n return s.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction toCamelCase(s) {\n let camel = '';\n let nextCap = false;\n for (let i = 0; i < s.length; i++) {\n if (s[i] !== '-') {\n camel += nextCap ? s[i].toUpperCase() : s[i];\n nextCap = false;\n }\n else {\n nextCap = true;\n }\n }\n return camel;\n}\nconst toKebabCase = function (string) {\n return string.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n};\nfunction capitalize(s) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\nconst hasOwn = (val, key) => hasOwnProperty.call(val, key);\n/**\n * ensure takes a condition and throw a error if the condition fails,\n * like failure::ensure: https://docs.rs/failure/0.1.1/failure/macro.ensure.html\n * @param condition condition.\n * @param msg error message.\n */\nfunction ensure(condition, msg) {\n if (!condition) {\n if (process.env.NODE_ENV !== 'production') {\n const reportIssue = '\\n如有疑问,请提交 issue 至:https://github.com/nervjs/taro/issues';\n throw new Error(msg + reportIssue);\n }\n else {\n throw new Error(msg);\n }\n }\n}\nfunction warn(condition, msg) {\n if (process.env.NODE_ENV !== 'production') {\n if (condition) {\n console.warn(`[taro warn] ${msg}`);\n }\n }\n}\nfunction queryToJson(str) {\n const dec = decodeURIComponent;\n const qp = str.split('&');\n const ret = {};\n let name;\n let val;\n for (let i = 0, l = qp.length, item; i < l; ++i) {\n item = qp[i];\n if (item.length) {\n const s = item.indexOf('=');\n if (s < 0) {\n name = dec(item);\n val = '';\n }\n else {\n name = dec(item.slice(0, s));\n val = dec(item.slice(s + 1));\n }\n if (typeof ret[name] === 'string') { // inline'd type check\n ret[name] = [ret[name]];\n }\n if (Array.isArray(ret[name])) {\n ret[name].push(val);\n }\n else {\n ret[name] = val;\n }\n }\n }\n return ret; // Object\n}\nlet _uniqueId = 1;\nconst _loadTime = (new Date()).getTime().toString();\nfunction getUniqueKey() {\n return _loadTime + (_uniqueId++);\n}\nconst cacheData = {};\nfunction cacheDataSet(key, val) {\n cacheData[key] = val;\n}\nfunction cacheDataGet(key, delelteAfterGet) {\n const temp = cacheData[key];\n delelteAfterGet && delete cacheData[key];\n return temp;\n}\nfunction cacheDataHas(key) {\n return key in cacheData;\n}\nfunction mergeInternalComponents(components) {\n Object.keys(components).forEach(name => {\n if (name in internalComponents) {\n Object.assign(internalComponents[name], components[name]);\n }\n else {\n internalComponents[name] = components[name];\n }\n });\n return internalComponents;\n}\nfunction getComponentsAlias(origin) {\n const mapping = {};\n const viewAttrs = origin.View;\n const extraList = {\n '#text': {},\n StaticView: viewAttrs,\n StaticImage: origin.Image,\n StaticText: origin.Text,\n PureView: viewAttrs,\n CatchView: viewAttrs\n };\n origin = Object.assign(Object.assign({}, origin), extraList);\n Object.keys(origin)\n .sort((a, b) => {\n const reg = /^(Static|Pure|Catch)*(View|Image|Text)$/;\n const isACommonly = reg.test(a);\n const isBCommonly = reg.test(b);\n if (isACommonly && isBCommonly) {\n return a > b ? 1 : -1;\n }\n else if (isACommonly) {\n return -1;\n }\n else if (isBCommonly) {\n return 1;\n }\n else {\n return a >= b ? 1 : -1;\n }\n })\n .forEach((key, num) => {\n const obj = {\n _num: String(num)\n };\n Object.keys(origin[key])\n .filter(attr => !(/^bind/.test(attr)) && !['focus', 'blur'].includes(attr))\n .sort()\n .forEach((attr, index) => {\n obj[toCamelCase(attr)] = 'p' + index;\n });\n mapping[toDashed(key)] = obj;\n });\n return mapping;\n}\nfunction getPlatformType(platform = 'weapp', configNameOrType = PLATFORM_TYPE.MINI) {\n if (Object.keys(PLATFORM_CONFIG_MAP).includes(platform)) {\n configNameOrType = platform;\n }\n const param = PLATFORM_CONFIG_MAP[configNameOrType] || {};\n return param.type || configNameOrType;\n}\nfunction mergeReconciler(hostConfig, hooksForTest) {\n const obj = hooksForTest || hooks;\n const keys = Object.keys(hostConfig);\n keys.forEach(key => {\n obj.tap(key, hostConfig[key]);\n });\n}\nfunction nonsupport(api) {\n return function () {\n console.warn(`小程序暂不支持 ${api}`);\n };\n}\nfunction setUniqueKeyToRoute(key, obj) {\n const routerParamsPrivateKey = '__key_';\n const useDataCacheApis = [\n 'navigateTo',\n 'redirectTo',\n 'reLaunch',\n 'switchTab'\n ];\n if (useDataCacheApis.indexOf(key) > -1) {\n const url = obj.url = obj.url || '';\n const hasMark = url.indexOf('?') > -1;\n const cacheKey = getUniqueKey();\n obj.url += (hasMark ? '&' : '?') + `${routerParamsPrivateKey}=${cacheKey}`;\n }\n}\nfunction indent(str, size) {\n return str.split('\\n')\n .map((line, index) => {\n const indent = index === 0 ? '' : Array(size).fill(' ').join('');\n return indent + line;\n })\n .join('\\n');\n}\n\nconst needPromiseApis = new Set([\n 'addPhoneContact',\n 'authorize',\n 'canvasGetImageData',\n 'canvasPutImageData',\n 'canvasToTempFilePath',\n 'checkSession',\n 'chooseAddress',\n 'chooseImage',\n 'chooseInvoiceTitle',\n 'chooseLocation',\n 'chooseVideo',\n 'clearStorage',\n 'closeBLEConnection',\n 'closeBluetoothAdapter',\n 'closeSocket',\n 'compressImage',\n 'connectSocket',\n 'createBLEConnection',\n 'downloadFile',\n 'exitMiniProgram',\n 'getAvailableAudioSources',\n 'getBLEDeviceCharacteristics',\n 'getBLEDeviceServices',\n 'getBatteryInfo',\n 'getBeacons',\n 'getBluetoothAdapterState',\n 'getBluetoothDevices',\n 'getClipboardData',\n 'getConnectedBluetoothDevices',\n 'getConnectedWifi',\n 'getExtConfig',\n 'getFileInfo',\n 'getImageInfo',\n 'getLocation',\n 'getNetworkType',\n 'getSavedFileInfo',\n 'getSavedFileList',\n 'getScreenBrightness',\n 'getSetting',\n 'getStorage',\n 'getStorageInfo',\n 'getSystemInfo',\n 'getUserInfo',\n 'getWifiList',\n 'hideHomeButton',\n 'hideShareMenu',\n 'hideTabBar',\n 'hideTabBarRedDot',\n 'loadFontFace',\n 'login',\n 'makePhoneCall',\n 'navigateBack',\n 'navigateBackMiniProgram',\n 'navigateTo',\n 'navigateToBookshelf',\n 'navigateToMiniProgram',\n 'notifyBLECharacteristicValueChange',\n 'hideKeyboard',\n 'hideLoading',\n 'hideNavigationBarLoading',\n 'hideToast',\n 'openBluetoothAdapter',\n 'openDocument',\n 'openLocation',\n 'openSetting',\n 'pageScrollTo',\n 'previewImage',\n 'queryBookshelf',\n 'reLaunch',\n 'readBLECharacteristicValue',\n 'redirectTo',\n 'removeSavedFile',\n 'removeStorage',\n 'removeTabBarBadge',\n 'requestSubscribeMessage',\n 'saveFile',\n 'saveImageToPhotosAlbum',\n 'saveVideoToPhotosAlbum',\n 'scanCode',\n 'sendSocketMessage',\n 'setBackgroundColor',\n 'setBackgroundTextStyle',\n 'setClipboardData',\n 'setEnableDebug',\n 'setInnerAudioOption',\n 'setKeepScreenOn',\n 'setNavigationBarColor',\n 'setNavigationBarTitle',\n 'setScreenBrightness',\n 'setStorage',\n 'setTabBarBadge',\n 'setTabBarItem',\n 'setTabBarStyle',\n 'showActionSheet',\n 'showFavoriteGuide',\n 'showLoading',\n 'showModal',\n 'showShareMenu',\n 'showTabBar',\n 'showTabBarRedDot',\n 'showToast',\n 'startBeaconDiscovery',\n 'startBluetoothDevicesDiscovery',\n 'startDeviceMotionListening',\n 'startPullDownRefresh',\n 'stopBeaconDiscovery',\n 'stopBluetoothDevicesDiscovery',\n 'stopCompass',\n 'startCompass',\n 'startAccelerometer',\n 'stopAccelerometer',\n 'showNavigationBarLoading',\n 'stopDeviceMotionListening',\n 'stopPullDownRefresh',\n 'switchTab',\n 'uploadFile',\n 'vibrateLong',\n 'vibrateShort',\n 'writeBLECharacteristicValue'\n]);\nfunction getCanIUseWebp(taro) {\n return function () {\n var _a;\n const res = (_a = taro.getSystemInfoSync) === null || _a === void 0 ? void 0 : _a.call(taro);\n if (!res) {\n if (process.env.NODE_ENV !== 'production') {\n console.error('不支持 API canIUseWebp');\n }\n return false;\n }\n const { platform } = res;\n const platformLower = platform.toLowerCase();\n if (platformLower === 'android' || platformLower === 'devtools') {\n return true;\n }\n return false;\n };\n}\nfunction getNormalRequest(global) {\n return function request(options) {\n options = options\n ? (isString(options)\n ? { url: options }\n : options)\n : {};\n const originSuccess = options.success;\n const originFail = options.fail;\n const originComplete = options.complete;\n let requestTask;\n const p = new Promise((resolve, reject) => {\n options.success = res => {\n originSuccess && originSuccess(res);\n resolve(res);\n };\n options.fail = res => {\n originFail && originFail(res);\n reject(res);\n };\n options.complete = res => {\n originComplete && originComplete(res);\n };\n requestTask = global.request(options);\n });\n equipTaskMethodsIntoPromise(requestTask, p);\n p.abort = (cb) => {\n cb && cb();\n if (requestTask) {\n requestTask.abort();\n }\n return p;\n };\n return p;\n };\n}\nfunction processApis(taro, global, config = {}) {\n const patchNeedPromiseApis = config.needPromiseApis || [];\n const _needPromiseApis = new Set([...patchNeedPromiseApis, ...needPromiseApis]);\n const preserved = [\n 'getEnv',\n 'interceptors',\n 'Current',\n 'getCurrentInstance',\n 'options',\n 'nextTick',\n 'eventCenter',\n 'Events',\n 'preload',\n 'webpackJsonp'\n ];\n const apis = new Set(!config.isOnlyPromisify\n ? Object.keys(global).filter(api => preserved.indexOf(api) === -1)\n : patchNeedPromiseApis);\n if (config.modifyApis) {\n config.modifyApis(apis);\n }\n apis.forEach(key => {\n if (_needPromiseApis.has(key)) {\n const originKey = key;\n taro[originKey] = (options = {}, ...args) => {\n let key = originKey;\n // 第一个参数 options 为字符串,单独处理\n if (typeof options === 'string') {\n if (args.length) {\n return global[key](options, ...args);\n }\n return global[key](options);\n }\n // 改变 key 或 option 字段,如需要把支付宝标准的字段对齐微信标准的字段\n if (config.transformMeta) {\n const transformResult = config.transformMeta(key, options);\n key = transformResult.key;\n options = transformResult.options;\n // 新 key 可能不存在\n if (!global.hasOwnProperty(key)) {\n return nonsupport(key)();\n }\n }\n let task = null;\n const obj = Object.assign({}, options);\n // 为页面跳转相关的 API 设置一个随机数作为路由参数。为了给 runtime 区分页面。\n setUniqueKeyToRoute(key, options);\n // Promise 化\n const p = new Promise((resolve, reject) => {\n obj.success = res => {\n var _a, _b;\n (_a = config.modifyAsyncResult) === null || _a === void 0 ? void 0 : _a.call(config, key, res);\n (_b = options.success) === null || _b === void 0 ? void 0 : _b.call(options, res);\n if (key === 'connectSocket') {\n resolve(Promise.resolve().then(() => task ? Object.assign(task, res) : res));\n }\n else {\n resolve(res);\n }\n };\n obj.fail = res => {\n var _a;\n (_a = options.fail) === null || _a === void 0 ? void 0 : _a.call(options, res);\n reject(res);\n };\n obj.complete = res => {\n var _a;\n (_a = options.complete) === null || _a === void 0 ? void 0 : _a.call(options, res);\n };\n if (args.length) {\n task = global[key](obj, ...args);\n }\n else {\n task = global[key](obj);\n }\n });\n // 给 promise 对象挂载属性\n if (['uploadFile', 'downloadFile'].includes(key)) {\n equipTaskMethodsIntoPromise(task, p);\n p.progress = cb => {\n task === null || task === void 0 ? void 0 : task.onProgressUpdate(cb);\n return p;\n };\n p.abort = cb => {\n cb === null || cb === void 0 ? void 0 : cb();\n task === null || task === void 0 ? void 0 : task.abort();\n return p;\n };\n }\n return p;\n };\n }\n else {\n let platformKey = key;\n // 改变 key 或 option 字段,如需要把支付宝标准的字段对齐微信标准的字段\n if (config.transformMeta) {\n platformKey = config.transformMeta(key, {}).key;\n }\n // API 不存在\n if (!global.hasOwnProperty(platformKey)) {\n taro[key] = nonsupport(key);\n return;\n }\n if (isFunction(global[key])) {\n taro[key] = (...args) => {\n if (config.handleSyncApis) {\n return config.handleSyncApis(key, global, args);\n }\n else {\n return global[platformKey].apply(global, args);\n }\n };\n }\n else {\n taro[key] = global[platformKey];\n }\n }\n });\n !config.isOnlyPromisify && equipCommonApis(taro, global, config);\n}\n/**\n * 挂载常用 API\n * @param taro Taro 对象\n * @param global 小程序全局对象,如微信的 wx,支付宝的 my\n */\nfunction equipCommonApis(taro, global, apis = {}) {\n taro.canIUseWebp = getCanIUseWebp(taro);\n taro.getCurrentPages = getCurrentPages || nonsupport('getCurrentPages');\n taro.getApp = getApp || nonsupport('getApp');\n taro.env = global.env || {};\n try {\n taro.requirePlugin = requirePlugin || nonsupport('requirePlugin');\n }\n catch (error) {\n taro.requirePlugin = nonsupport('requirePlugin');\n }\n // request & interceptors\n const request = apis.request || getNormalRequest(global);\n function taroInterceptor(chain) {\n return request(chain.requestParams);\n }\n const link = new taro.Link(taroInterceptor);\n taro.request = link.request.bind(link);\n taro.addInterceptor = link.addInterceptor.bind(link);\n taro.cleanInterceptors = link.cleanInterceptors.bind(link);\n taro.miniGlobal = taro.options.miniGlobal = global;\n}\n/**\n * 将Task对象中的方法挂载到promise对象中,适配小程序api原生返回结果\n * @param task Task对象 {RequestTask | DownloadTask | UploadTask}\n * @param promise Promise\n */\nfunction equipTaskMethodsIntoPromise(task, promise) {\n if (!task || !promise)\n return;\n const taskMethods = ['abort', 'onHeadersReceived', 'offHeadersReceived', 'onProgressUpdate', 'offProgressUpdate', 'onChunkReceived', 'offChunkReceived'];\n task && taskMethods.forEach(method => {\n if (method in task) {\n promise[method] = task[method].bind(task);\n }\n });\n}\n\nexport { EMPTY_ARR, EMPTY_OBJ, Events, HOOK_TYPE, PLATFORM_CONFIG_MAP, PLATFORM_TYPE, TaroHook, TaroHooks, animation, box, cacheDataGet, cacheDataHas, cacheDataSet, capitalize, controlledComponent, ensure, focusComponents, getComponentsAlias, getPlatformType, getUniqueKey, hasOwn, hooks, indent, internalComponents, isArray, isBoolean, isBooleanStringLiteral, isFunction, isNull, isNumber, isObject, isString, isUndefined, isWebPlatform, mergeInternalComponents, mergeReconciler, nestElements, nonsupport, noop, processApis, queryToJson, setUniqueKeyToRoute, singleQuote, toCamelCase, toDashed, toKebabCase, touchEvents, unbox, voidElements, warn };\n//# sourceMappingURL=shared.esm.js.map\n","import { isWebPlatform } from '@tarojs/shared'\n\nexport const ENV_TYPE = {\n WEAPP: 'WEAPP',\n SWAN: 'SWAN',\n ALIPAY: 'ALIPAY',\n TT: 'TT',\n QQ: 'QQ',\n JD: 'JD',\n WEB: 'WEB',\n RN: 'RN',\n HARMONY: 'HARMONY',\n QUICKAPP: 'QUICKAPP'\n}\n\nconst isWeb = isWebPlatform()\n\nexport function getEnv () {\n if (process.env.TARO_ENV === 'weapp') {\n return ENV_TYPE.WEAPP\n } else if (process.env.TARO_ENV === 'alipay') {\n return ENV_TYPE.ALIPAY\n } else if (process.env.TARO_ENV === 'swan') {\n return ENV_TYPE.SWAN\n } else if (process.env.TARO_ENV === 'tt') {\n return ENV_TYPE.TT\n } else if (process.env.TARO_ENV === 'jd') {\n return ENV_TYPE.JD\n } else if (process.env.TARO_ENV === 'qq') {\n return ENV_TYPE.QQ\n } else if (isWeb) {\n return ENV_TYPE.WEB\n } else if (process.env.TARO_ENV === 'rn') {\n return ENV_TYPE.RN\n } else if (process.env.TARO_ENV === 'harmony') {\n return ENV_TYPE.HARMONY\n } else if (process.env.TARO_ENV === 'quickapp') {\n return ENV_TYPE.QUICKAPP\n } else {\n return process.env.TARO_ENV || 'Unknown'\n }\n}\n","import { isFunction } from '../utils'\n\nexport default class Chain {\n constructor (requestParams, interceptors, index) {\n this.index = index || 0\n this.requestParams = requestParams\n this.interceptors = interceptors || []\n }\n\n proceed (requestParams) {\n this.requestParams = requestParams\n if (this.index >= this.interceptors.length) {\n throw new Error('chain 参数错误, 请勿直接修改 request.chain')\n }\n const nextInterceptor = this._getNextInterceptor()\n const nextChain = this._getNextChain()\n const p = nextInterceptor(nextChain)\n const res = p.catch(err => Promise.reject(err))\n Object.keys(p).forEach(k => isFunction(p[k]) && (res[k] = p[k]))\n return res\n }\n\n _getNextInterceptor () {\n return this.interceptors[this.index]\n }\n\n _getNextChain () {\n return new Chain(this.requestParams, this.interceptors, this.index + 1)\n }\n}\n","import Chain from './chain'\n\nexport default class Link {\n constructor (interceptor) {\n this.taroInterceptor = interceptor\n this.chain = new Chain()\n }\n\n request (requestParams) {\n const chain = this.chain\n const taroInterceptor = this.taroInterceptor\n\n chain.interceptors = chain.interceptors\n .filter(interceptor => interceptor !== taroInterceptor)\n .concat(taroInterceptor)\n\n return chain.proceed({ ...requestParams })\n }\n\n addInterceptor (interceptor) {\n this.chain.interceptors.push(interceptor)\n }\n\n cleanInterceptors () {\n this.chain = new Chain()\n }\n}\n","import { isFunction, isUndefined } from '../utils'\n\nexport function timeoutInterceptor (chain) {\n const requestParams = chain.requestParams\n let p\n const res = new Promise((resolve, reject) => {\n let timeout = setTimeout(() => {\n timeout = null\n reject(new Error('网络链接超时,请稍后再试!'))\n }, (requestParams && requestParams.timeout) || 60000)\n\n p = chain.proceed(requestParams)\n p\n .then(res => {\n if (!timeout) return\n clearTimeout(timeout)\n resolve(res)\n })\n .catch(err => {\n timeout && clearTimeout(timeout)\n reject(err)\n })\n })\n if (!isUndefined(p) && isFunction(p.abort)) res.abort = p.abort\n\n return res\n}\n\nexport function logInterceptor (chain) {\n const requestParams = chain.requestParams\n const { method, data, url } = requestParams\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.log(`http ${method || 'GET'} --> ${url} data: `, data)\n }\n\n const p = chain.proceed(requestParams)\n const res = p\n .then(res => {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.log(`http <-- ${url} result:`, res)\n }\n return res\n })\n if (isFunction(p.abort)) res.abort = p.abort\n\n return res\n}\n","import { isFunction, isObject } from './utils'\n\nexport function Behavior (options) {\n return options\n}\n\nexport function getPreload (current) {\n return function (key, val) {\n current.preloadData = isObject(key)\n ? key\n : {\n [key]: val\n }\n }\n}\n\nconst defaultDesignWidth = 750\nconst defaultDesignRatio = {\n 640: 2.34 / 2,\n 750: 1,\n 828: 1.81 / 2\n}\nconst defaultBaseFontSize = 20\nconst defaultUnitPrecision = 5\nconst defaultTargetUnit = 'rpx'\n\nexport function getInitPxTransform (taro) {\n return function (config) {\n const {\n designWidth = defaultDesignWidth,\n deviceRatio = defaultDesignRatio,\n baseFontSize = defaultBaseFontSize,\n targetUnit = defaultTargetUnit,\n unitPrecision = defaultUnitPrecision,\n } = config\n taro.config = taro.config || {}\n taro.config.designWidth = designWidth\n taro.config.deviceRatio = deviceRatio\n taro.config.baseFontSize = baseFontSize\n taro.config.targetUnit = targetUnit\n taro.config.unitPrecision = unitPrecision\n }\n}\n\nexport function getPxTransform (taro) {\n return function (size) {\n const config = taro.config || {}\n const deviceRatio = config.deviceRatio || defaultDesignRatio\n const baseFontSize = config.baseFontSize\n const designWidth = (((input = 0) => isFunction(config.designWidth)\n ? config.designWidth(input)\n : config.designWidth || defaultDesignWidth))(size)\n if (!(designWidth in deviceRatio)) {\n throw new Error(`deviceRatio 配置中不存在 ${designWidth} 的设置!`)\n }\n const formatSize = ~~size\n let rootValue = 1 / config.deviceRatio[designWidth]\n switch (config.targetUnit) {\n case 'rem':\n rootValue *= baseFontSize * 2\n break\n case 'px':\n rootValue *= 2\n break\n }\n let val = formatSize / rootValue\n if (config.unitPrecision >= 0 && config.unitPrecision <= 100) {\n val = Number(val.toFixed(config.unitPrecision))\n }\n return val + config.targetUnit\n }\n}\n","/* eslint-disable camelcase */\nimport './polyfill'\n\nimport {\n Current,\n eventCenter,\n Events,\n getCurrentInstance,\n nextTick,\n options\n} from '@tarojs/runtime'\n\nimport { ENV_TYPE, getEnv } from './env'\nimport Link from './interceptor'\nimport * as interceptors from './interceptor/interceptors'\nimport {\n Behavior,\n getInitPxTransform,\n getPreload,\n getPxTransform\n} from './tools'\n\nconst Taro = {\n Behavior,\n getEnv,\n ENV_TYPE,\n Link,\n interceptors,\n Current,\n getCurrentInstance,\n options,\n nextTick,\n eventCenter,\n Events,\n getInitPxTransform\n}\n\nTaro.initPxTransform = getInitPxTransform(Taro)\nTaro.preload = getPreload(Current)\nTaro.pxTransform = getPxTransform(Taro)\n\nexport default Taro\n"],"names":["isFunction","x","isUndefined","isObject","_typeof","isBadObj","throwTypeError","s","TypeError","Object","assign","target","to","index","arguments","length","nextSource","nextKey","prototype","hasOwnProperty","call","defineProperties","obj","properties","convertToDescriptor","desc","hasProperty","prop","d","enumerable","configurable","value","writable","g","get","set","keys","descs","i","push","defineProperty","DEFAULT_EMPTY_ARRAY","NO_DEFAULT_VALUE","DEFAULT_TRUE","DEFAULT_FALSE","touchEvents","bindTouchStart","bindTouchMove","bindTouchEnd","bindTouchCancel","bindLongTap","animation","bindAnimationStart","bindAnimationIteration","bindAnimationEnd","bindTransitionEnd","singleQuote","concat","longitude","latitude","scale","markers","covers","polyline","circles","controls","bindMarkerTap","bindControlTap","bindCalloutTap","bindUpdated","size","type","plain","disabled","loading","name","direction","inertia","y","damping","friction","bindChange","bindScale","bindHTouchMove","bindVTouchMove","width","height","bindScrollToUpper","bindScrollToLower","bindScroll","autoplay","current","interval","duration","circular","vertical","bindTransition","bindAnimationFinish","src","mode","bindError","bindLoad","muted","orientation","bindStateChange","bindFullScreenChange","bindNetStatus","loop","poster","bindPlay","bindPause","bindEnded","bindTimeUpdate","bindWaiting","ENV_TYPE","WEAPP","SWAN","ALIPAY","TT","QQ","JD","WEB","RN","HARMONY","QUICKAPP","isWeb","isWebPlatform","getEnv","process","env","TARO_ENV","Chain","requestParams","interceptors","_classCallCheck","_createClass","key","proceed","Error","nextInterceptor","_getNextInterceptor","nextChain","_getNextChain","p","res","catch","err","Promise","reject","forEach","k","Link","interceptor","taroInterceptor","chain","request","filter","_objectSpread","addInterceptor","cleanInterceptors","timeoutInterceptor","resolve","timeout","setTimeout","then","clearTimeout","abort","logInterceptor","method","data","url","NODE_ENV","console","log","Behavior","options","getPreload","val","preloadData","_defineProperty","defaultDesignWidth","defaultDesignRatio","defaultBaseFontSize","defaultUnitPrecision","defaultTargetUnit","getInitPxTransform","taro","config","_config$designWidth","designWidth","_config$deviceRatio","deviceRatio","_config$baseFontSize","baseFontSize","_config$targetUnit","targetUnit","_config$unitPrecision","unitPrecision","getPxTransform","input","undefined","formatSize","rootValue","Number","toFixed","Taro","Current","getCurrentInstance","nextTick","eventCenter","Events","initPxTransform","preload","pxTransform"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -722,6 +722,8 @@ var defaultDesignRatio = {
722
722
  828: 1.81 / 2
723
723
  };
724
724
  var defaultBaseFontSize = 20;
725
+ var defaultUnitPrecision = 5;
726
+ var defaultTargetUnit = 'rpx';
725
727
  function getInitPxTransform(taro) {
726
728
  return function (config) {
727
729
  var _config$designWidth = config.designWidth,
@@ -729,17 +731,24 @@ function getInitPxTransform(taro) {
729
731
  _config$deviceRatio = config.deviceRatio,
730
732
  deviceRatio = _config$deviceRatio === void 0 ? defaultDesignRatio : _config$deviceRatio,
731
733
  _config$baseFontSize = config.baseFontSize,
732
- baseFontSize = _config$baseFontSize === void 0 ? defaultBaseFontSize : _config$baseFontSize;
734
+ baseFontSize = _config$baseFontSize === void 0 ? defaultBaseFontSize : _config$baseFontSize,
735
+ _config$targetUnit = config.targetUnit,
736
+ targetUnit = _config$targetUnit === void 0 ? defaultTargetUnit : _config$targetUnit,
737
+ _config$unitPrecision = config.unitPrecision,
738
+ unitPrecision = _config$unitPrecision === void 0 ? defaultUnitPrecision : _config$unitPrecision;
733
739
  taro.config = taro.config || {};
734
740
  taro.config.designWidth = designWidth;
735
741
  taro.config.deviceRatio = deviceRatio;
736
742
  taro.config.baseFontSize = baseFontSize;
743
+ taro.config.targetUnit = targetUnit;
744
+ taro.config.unitPrecision = unitPrecision;
737
745
  };
738
746
  }
739
747
  function getPxTransform(taro) {
740
748
  return function (size) {
741
749
  var config = taro.config || {};
742
750
  var deviceRatio = config.deviceRatio || defaultDesignRatio;
751
+ var baseFontSize = config.baseFontSize;
743
752
  var designWidth = function () {
744
753
  var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
745
754
  return isFunction$1(config.designWidth) ? config.designWidth(input) : config.designWidth || defaultDesignWidth;
@@ -747,7 +756,21 @@ function getPxTransform(taro) {
747
756
  if (!(designWidth in deviceRatio)) {
748
757
  throw new Error("deviceRatio \u914D\u7F6E\u4E2D\u4E0D\u5B58\u5728 ".concat(designWidth, " \u7684\u8BBE\u7F6E\uFF01"));
749
758
  }
750
- return parseInt(size, 10) * deviceRatio[designWidth] + 'rpx';
759
+ var formatSize = ~~size;
760
+ var rootValue = 1 / config.deviceRatio[designWidth];
761
+ switch (config.targetUnit) {
762
+ case 'rem':
763
+ rootValue *= baseFontSize * 2;
764
+ break;
765
+ case 'px':
766
+ rootValue *= 2;
767
+ break;
768
+ }
769
+ var val = formatSize / rootValue;
770
+ if (config.unitPrecision >= 0 && config.unitPrecision <= 100) {
771
+ val = Number(val.toFixed(config.unitPrecision));
772
+ }
773
+ return val + config.targetUnit;
751
774
  };
752
775
  }
753
776