@tarojs/components 3.6.0 → 3.6.1-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.
Files changed (149) hide show
  1. package/LICENSE +119 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/taro-components.cjs.js +1 -1
  4. package/dist/cjs/taro-input-core.cjs.entry.js +1 -1
  5. package/dist/cjs/taro-input-core.cjs.entry.js.map +1 -1
  6. package/dist/cjs/taro-navigator-core.cjs.entry.js.map +1 -1
  7. package/dist/cjs/taro-scroll-view-core.cjs.entry.js +46 -50
  8. package/dist/cjs/taro-scroll-view-core.cjs.entry.js.map +1 -1
  9. package/dist/collection/components/input/input.js +6 -2
  10. package/dist/collection/components/input/input.js.map +1 -1
  11. package/dist/collection/components/navigator/navigator.js +0 -16
  12. package/dist/collection/components/navigator/navigator.js.map +1 -1
  13. package/dist/collection/components/scroll-view/scroll-view.js +93 -51
  14. package/dist/collection/components/scroll-view/scroll-view.js.map +1 -1
  15. package/dist/components/taro-input-core.js +1 -1
  16. package/dist/components/taro-input-core.js.map +1 -1
  17. package/dist/components/taro-navigator-core.js.map +1 -1
  18. package/dist/components/taro-scroll-view-core.js +49 -51
  19. package/dist/components/taro-scroll-view-core.js.map +1 -1
  20. package/dist/esm/loader.js +1 -1
  21. package/dist/esm/taro-components.js +1 -1
  22. package/dist/esm/taro-input-core.entry.js +1 -1
  23. package/dist/esm/taro-input-core.entry.js.map +1 -1
  24. package/dist/esm/taro-navigator-core.entry.js.map +1 -1
  25. package/dist/esm/taro-scroll-view-core.entry.js +46 -50
  26. package/dist/esm/taro-scroll-view-core.entry.js.map +1 -1
  27. package/dist/esm-es5/loader.js +1 -1
  28. package/dist/esm-es5/loader.js.map +1 -1
  29. package/dist/esm-es5/taro-components.js +1 -1
  30. package/dist/esm-es5/taro-components.js.map +1 -1
  31. package/dist/esm-es5/taro-input-core.entry.js +1 -1
  32. package/dist/esm-es5/taro-input-core.entry.js.map +1 -1
  33. package/dist/esm-es5/taro-navigator-core.entry.js.map +1 -1
  34. package/dist/esm-es5/taro-scroll-view-core.entry.js +1 -1
  35. package/dist/esm-es5/taro-scroll-view-core.entry.js.map +1 -1
  36. package/dist/taro-components/p-10046f1a.system.entry.js +2 -0
  37. package/dist/taro-components/p-10046f1a.system.entry.js.map +1 -0
  38. package/dist/taro-components/p-1c446c65.system.js +1 -1
  39. package/dist/taro-components/p-1c446c65.system.js.map +1 -1
  40. package/dist/taro-components/p-9bc9f3a0.entry.js +2 -0
  41. package/dist/taro-components/p-9bc9f3a0.entry.js.map +1 -0
  42. package/dist/taro-components/p-c6385fc2.system.entry.js +2 -0
  43. package/dist/taro-components/p-c6385fc2.system.entry.js.map +1 -0
  44. package/dist/taro-components/p-d621d190.entry.js.map +1 -1
  45. package/dist/taro-components/p-de356b29.system.entry.js.map +1 -1
  46. package/dist/taro-components/{p-5208792d.entry.js → p-fe58b450.entry.js} +2 -2
  47. package/dist/taro-components/p-fe58b450.entry.js.map +1 -0
  48. package/dist/taro-components/taro-components.esm.js +1 -1
  49. package/dist/taro-components/taro-components.esm.js.map +1 -1
  50. package/dist/types/components/input/input.d.ts +1 -1
  51. package/dist/types/components/navigator/navigator.d.ts +0 -16
  52. package/dist/types/components/scroll-view/scroll-view.d.ts +4 -1
  53. package/dist/types/components.d.ts +5 -2
  54. package/lib/react/component-lib/index.d.ts +55 -0
  55. package/lib/react/component-lib/index.js +68 -0
  56. package/lib/react/component-lib/index.js.map +1 -0
  57. package/lib/react/component-lib/input.d.ts +3 -0
  58. package/lib/react/component-lib/input.js +17 -0
  59. package/lib/react/component-lib/input.js.map +1 -0
  60. package/lib/react/component-lib/reactify-wc.d.ts +7 -0
  61. package/lib/react/component-lib/reactify-wc.js +176 -0
  62. package/lib/react/component-lib/reactify-wc.js.map +1 -0
  63. package/lib/react/react-component-lib/utils/attachProps.d.ts +1 -1
  64. package/lib/react/react-component-lib/utils/attachProps.js +1 -15
  65. package/lib/react/react-component-lib/utils/attachProps.js.map +1 -1
  66. package/lib/vue2/component-lib/components.d.ts +111 -0
  67. package/lib/vue2/component-lib/components.js +74 -0
  68. package/lib/vue2/component-lib/components.js.map +1 -0
  69. package/lib/vue2/component-lib/createComponent.d.ts +14 -0
  70. package/lib/vue2/component-lib/createComponent.js +23 -0
  71. package/lib/vue2/component-lib/createComponent.js.map +1 -0
  72. package/lib/vue2/component-lib/createFormsComponent.d.ts +22 -0
  73. package/lib/vue2/component-lib/createFormsComponent.js +53 -0
  74. package/lib/vue2/component-lib/createFormsComponent.js.map +1 -0
  75. package/lib/vue2/component-lib/icon.d.ts +16 -0
  76. package/lib/vue2/component-lib/icon.js +23 -0
  77. package/lib/vue2/component-lib/icon.js.map +1 -0
  78. package/lib/vue2/component-lib/image.d.ts +16 -0
  79. package/lib/vue2/component-lib/image.js +24 -0
  80. package/lib/vue2/component-lib/image.js.map +1 -0
  81. package/lib/vue2/component-lib/index.d.ts +1 -0
  82. package/lib/vue2/component-lib/index.js +30 -0
  83. package/lib/vue2/component-lib/index.js.map +1 -0
  84. package/lib/vue2/component-lib/mixins/listeners.d.ts +6 -0
  85. package/lib/vue2/component-lib/mixins/listeners.js +14 -0
  86. package/lib/vue2/component-lib/mixins/listeners.js.map +1 -0
  87. package/lib/vue2/component-lib/mixins/refs.d.ts +5 -0
  88. package/lib/vue2/component-lib/mixins/refs.js +53 -0
  89. package/lib/vue2/component-lib/mixins/refs.js.map +1 -0
  90. package/lib/vue2/component-lib/picker.d.ts +25 -0
  91. package/lib/vue2/component-lib/picker.js +41 -0
  92. package/lib/vue2/component-lib/picker.js.map +1 -0
  93. package/lib/vue2/component-lib/scroll-view.d.ts +17 -0
  94. package/lib/vue2/component-lib/scroll-view.js +35 -0
  95. package/lib/vue2/component-lib/scroll-view.js.map +1 -0
  96. package/lib/vue2/component-lib/text.d.ts +16 -0
  97. package/lib/vue2/component-lib/text.js +24 -0
  98. package/lib/vue2/component-lib/text.js.map +1 -0
  99. package/lib/vue2/components.d.ts +5 -2
  100. package/lib/vue2/components.js +29 -5
  101. package/lib/vue2/components.js.map +1 -1
  102. package/lib/vue2/index.js +2 -0
  103. package/lib/vue2/index.js.map +1 -1
  104. package/lib/vue2/node_modules/.pnpm/registry.npmjs.org_vue-fragment@1.6.0_vue@2.6.14/node_modules/vue-fragment/dist/vue-fragment.esm.js +4 -0
  105. package/lib/vue2/node_modules/.pnpm/registry.npmjs.org_vue-fragment@1.6.0_vue@2.6.14/node_modules/vue-fragment/dist/vue-fragment.esm.js.map +1 -0
  106. package/lib/vue2/vue-component-lib/utils.js +3 -1
  107. package/lib/vue2/vue-component-lib/utils.js.map +1 -1
  108. package/lib/vue3/component-lib/createComponent.d.ts +10 -0
  109. package/lib/vue3/component-lib/createComponent.js +21 -0
  110. package/lib/vue3/component-lib/createComponent.js.map +1 -0
  111. package/lib/vue3/component-lib/createFormsComponent.d.ts +11 -0
  112. package/lib/vue3/component-lib/createFormsComponent.js +38 -0
  113. package/lib/vue3/component-lib/createFormsComponent.js.map +1 -0
  114. package/lib/vue3/component-lib/forwardRef.d.ts +2 -0
  115. package/lib/vue3/component-lib/forwardRef.js +13 -0
  116. package/lib/vue3/component-lib/forwardRef.js.map +1 -0
  117. package/lib/vue3/component-lib/icon.d.ts +11 -0
  118. package/lib/vue3/component-lib/icon.js +20 -0
  119. package/lib/vue3/component-lib/icon.js.map +1 -0
  120. package/lib/vue3/component-lib/image.d.ts +11 -0
  121. package/lib/vue3/component-lib/image.js +21 -0
  122. package/lib/vue3/component-lib/image.js.map +1 -0
  123. package/lib/vue3/component-lib/index.d.ts +442 -0
  124. package/lib/vue3/component-lib/index.js +68 -0
  125. package/lib/vue3/component-lib/index.js.map +1 -0
  126. package/lib/vue3/component-lib/scroll-view.d.ts +11 -0
  127. package/lib/vue3/component-lib/scroll-view.js +27 -0
  128. package/lib/vue3/component-lib/scroll-view.js.map +1 -0
  129. package/lib/vue3/component-lib/text.d.ts +11 -0
  130. package/lib/vue3/component-lib/text.js +21 -0
  131. package/lib/vue3/component-lib/text.js.map +1 -0
  132. package/lib/vue3/components.d.ts +2 -2
  133. package/lib/vue3/components.js +9 -8
  134. package/lib/vue3/components.js.map +1 -1
  135. package/lib/vue3/vue-component-lib/utils.js +1 -1
  136. package/lib/vue3/vue-component-lib/utils.js.map +1 -1
  137. package/package.json +8 -8
  138. package/types/ChannelLive.d.ts +1 -1
  139. package/types/CommentList.d.ts +1 -0
  140. package/types/Form.d.ts +0 -6
  141. package/types/Navigator.d.ts +8 -8
  142. package/types/RootPortal.d.ts +0 -1
  143. package/dist/taro-components/p-5208792d.entry.js.map +0 -1
  144. package/dist/taro-components/p-5beca045.system.entry.js +0 -2
  145. package/dist/taro-components/p-5beca045.system.entry.js.map +0 -1
  146. package/dist/taro-components/p-6de64a4b.system.entry.js +0 -2
  147. package/dist/taro-components/p-6de64a4b.system.entry.js.map +0 -1
  148. package/dist/taro-components/p-71155a2c.entry.js +0 -2
  149. package/dist/taro-components/p-71155a2c.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["indexCss","getTrueType","type","confirmType","password","Error","fixControlledValue","value","Input","exports","this","isOnComposition","isOnPaste","onInputExcuted","handleInput","e","stopPropagation","_f","_this","maxlength","target","inputType","length","substring","onInput","emit","cursor","handlePaste","onPaste","handleFocus","onFocus","handleBlur","onBlur","handleChange","onChange","handleKeyDown","keyCode","code","onKeyDown","onConfirm","handleComposition","HTMLInputElement","handleBeforeinput","data","isNumber","test","preventDefault","indexOf","class_1","prototype","focus","inputRef","watchAutoFocus","newValue","oldValue","_a","watchValue","componentDidLoad","fileListener","addEventListener","_b","_c","_d","_e","Object","defineProperty","el","get","set","configurable","disconnectedCallback","removeEventListener","render","placeholder","autoFocus","disabled","name","nativeProps","h","assign","ref","input","class","onCompositionStart","onCompositionEnd"],"sources":["src/components/input/index.scss?tag=taro-input-core","src/components/input/input.tsx"],"sourcesContent":["taro-input-core {\n display: block;\n}\n\ninput {\n display: block;\n overflow: hidden;\n height: 1.4rem;\n text-overflow: clip;\n text-align: inherit;\n white-space: nowrap;\n}\n","import { Component, h, ComponentInterface, Prop, Event, EventEmitter, Element, Watch, Method } from '@stencil/core'\nimport { EventHandler, TaroEvent } from '../../../types'\n\nfunction getTrueType (type: string | undefined, confirmType: string, password: boolean) {\n if (confirmType === 'search') type = 'search'\n if (password) type = 'password'\n if (typeof type === 'undefined') {\n return 'text';\n }\n if (!type) {\n throw new Error('unexpected type')\n }\n if (type === 'digit') type = 'number'\n\n return type\n}\n\nfunction fixControlledValue (value?: string) {\n return value ?? ''\n}\n\n@Component({\n tag: 'taro-input-core',\n styleUrl: 'index.scss'\n})\nexport class Input implements ComponentInterface {\n private inputRef: HTMLInputElement\n private isOnComposition = false\n private isOnPaste = false\n private onInputExcuted = false\n private fileListener: EventHandler\n\n @Prop({ mutable: true }) value: string\n @Prop() type: string\n @Prop() password = false\n @Prop() placeholder: string\n @Prop() disabled = false\n @Prop() maxlength = 140\n @Prop({ attribute: 'focus', reflect: true }) autoFocus = false\n @Prop() confirmType = 'done'\n @Prop() name: string\n @Prop() nativeProps = {}\n\n @Element() el: HTMLElement\n\n @Method()\n focus() {\n this.inputRef.focus()\n }\n\n @Watch('autoFocus')\n watchAutoFocus (newValue: boolean, oldValue: boolean) {\n if (!oldValue && newValue) {\n this.inputRef?.focus()\n }\n }\n\n @Watch('value')\n watchValue (newValue: string) {\n const value = fixControlledValue(newValue)\n if (this.inputRef.value !== value) {\n this.inputRef.value = value\n }\n }\n\n @Event({\n eventName: 'input'\n }) onInput: EventEmitter\n\n @Event({\n eventName: 'paste'\n }) onPaste: EventEmitter\n\n @Event({\n eventName: 'focus'\n }) onFocus: EventEmitter\n\n @Event({\n eventName: 'blur'\n }) onBlur: EventEmitter\n\n @Event({\n eventName: 'confirm'\n }) onConfirm: EventEmitter\n\n @Event({\n eventName: 'change'\n }) onChange: EventEmitter\n\n @Event({\n eventName: 'keydown'\n }) onKeyDown: EventEmitter\n\n componentDidLoad () {\n if (this.type === 'file') {\n this.fileListener = () => {\n this.onInput.emit()\n }\n this.inputRef?.addEventListener('change', this.fileListener)\n } else {\n this.inputRef?.addEventListener('compositionstart', this.handleComposition)\n this.inputRef?.addEventListener('compositionend', this.handleComposition)\n this.inputRef?.addEventListener('beforeinput', this.handleBeforeinput)\n this.inputRef?.addEventListener('textInput', this.handleBeforeinput)\n }\n\n Object.defineProperty(this.el, 'value', {\n get: () => this.inputRef.value,\n set: value => (this.value = value),\n configurable: true\n })\n }\n\n disconnectedCallback () {\n if (this.type === 'file') {\n this.inputRef?.removeEventListener('change', this.fileListener)\n } else {\n this.inputRef?.removeEventListener('compositionstart', this.handleComposition)\n this.inputRef?.removeEventListener('compositionend', this.handleComposition)\n this.inputRef?.removeEventListener('beforeinput', this.handleBeforeinput)\n this.inputRef?.removeEventListener('textInput', this.handleBeforeinput)\n }\n }\n\n handleInput = (e: TaroEvent<HTMLInputElement>) => {\n e.stopPropagation()\n const {\n type,\n maxlength,\n confirmType,\n password\n } = this\n if (!this.isOnComposition && !this.onInputExcuted) {\n let value = e.target.value\n const inputType = getTrueType(type, confirmType, password)\n this.onInputExcuted = true\n /* 修复 number 类型 maxlength 无效 */\n if (inputType === 'number' && value && maxlength > -1 && maxlength <= value.length) {\n value = value.substring(0, maxlength)\n e.target.value = value\n }\n\n // 修复 IOS 光标跳转问题\n // if (!(['number', 'file'].indexOf(inputType) >= 0)) {\n // const pos = e.target.selectionEnd\n // setTimeout(\n // () => {\n // e.target.selectionStart = pos\n // e.target.selectionEnd = pos\n // }\n // )\n // }\n\n this.value = value\n this.onInput.emit({\n value,\n cursor: value.length\n })\n this.onInputExcuted = false\n }\n }\n\n handlePaste = (e: TaroEvent<HTMLInputElement> & ClipboardEvent) => {\n e.stopPropagation()\n this.isOnPaste = true\n this.onPaste.emit({\n value: e.target.value\n })\n }\n\n handleFocus = (e: TaroEvent<HTMLInputElement> & FocusEvent) => {\n e.stopPropagation()\n this.onInputExcuted = false\n this.onFocus.emit({\n value: e.target.value\n })\n }\n\n handleBlur = (e: TaroEvent<HTMLInputElement> & FocusEvent) => {\n e.stopPropagation()\n this.onBlur.emit({\n value: e.target.value\n })\n }\n\n handleChange = (e: TaroEvent<HTMLInputElement>) => {\n e.stopPropagation()\n this.onChange.emit({\n value: e.target.value\n })\n\n if (this.isOnPaste) {\n this.isOnPaste = false\n this.value = e.target.value\n this.onInput.emit({\n value: e.target.value,\n cursor: e.target.value.length\n })\n }\n }\n\n handleKeyDown = (e: TaroEvent<HTMLInputElement> & KeyboardEvent) => {\n e.stopPropagation()\n const { value } = e.target\n const keyCode = e.keyCode || e.code\n this.onInputExcuted = false\n\n this.onKeyDown.emit({\n value,\n cursor: value.length,\n keyCode\n })\n\n keyCode === 13 && this.onConfirm.emit({ value })\n }\n\n handleComposition = (e: Event) => {\n e.stopPropagation()\n if (!(e.target instanceof HTMLInputElement)) return\n\n if (e.type === 'compositionend') {\n this.isOnComposition = false\n this.value = e.target.value\n this.onInput.emit({\n value: e.target.value,\n cursor: e.target.value.length\n })\n } else {\n this.isOnComposition = true\n }\n }\n\n handleBeforeinput = (e) => {\n if (!e.data) return\n const isNumber = e.data && /[0-9]/.test(e.data)\n if (this.type === 'number' && !isNumber) {\n e.preventDefault()\n }\n if (this.type === 'digit' && !isNumber) {\n if (e.data !== '.' || (e.data === '.' && e.target.value.indexOf('.') > -1)) {\n e.preventDefault()\n }\n }\n }\n\n render () {\n const {\n value,\n type,\n password,\n placeholder,\n autoFocus,\n disabled,\n maxlength,\n confirmType,\n name,\n nativeProps\n } = this\n\n return (\n <input\n ref={input => {\n this.inputRef = input!\n if (autoFocus && input) input.focus()\n }}\n class='weui-input'\n type={getTrueType(type, confirmType, password)}\n placeholder={placeholder}\n autoFocus={autoFocus}\n disabled={disabled}\n maxlength={maxlength}\n name={name}\n onInput={this.handleInput}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onChange={this.handleChange}\n onKeyDown={this.handleKeyDown}\n onPaste={this.handlePaste}\n onCompositionStart={this.handleComposition}\n onCompositionEnd={this.handleComposition}\n {...nativeProps}\n value={fixControlledValue(value)}\n />\n )\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- System.register(["./p-1a0e1932.system.js","./p-61f225ef.system.js","./p-bd5177d3.system.js"],(function(o){"use strict";var l,r,t,e,s,i,c;return{setters:[function(o){l=o.r;r=o.c;t=o.h;e=o.H;s=o.g},function(o){i=o.c},function(o){c=o.d}],execute:function(){var n="taro-scroll-view-core{display:block;width:100%;-webkit-overflow-scrolling:auto}taro-scroll-view-core::-webkit-scrollbar{display:none}.taro-scroll-view__scroll-x{overflow-x:scroll;overflow-y:hidden}.taro-scroll-view__scroll-y{overflow-x:hidden;overflow-y:scroll}";function f(o,l,r){if(o===l||typeof o!=="number"){return}var t=l-o;var e=500;var s=Date.now();var i=l>=o;function c(o,l,r,t){return r*o/t+l}function n(){o=c(Date.now()-s,o,t,e);if(i&&o>=l||!i&&l>=o){r(l);return}r(o);requestAnimationFrame(n)}n()}var h=o("taro_scroll_view_core",function(){function o(o){var t=this;l(this,o);this.onScroll=r(this,"scroll",3);this.onScrollToUpper=r(this,"scrolltoupper",3);this.onScrollToLower=r(this,"scrolltolower",3);this.upperAndLower=c((function(){var o=t.el,l=o.offsetWidth,r=o.offsetHeight,e=o.scrollLeft,s=o.scrollTop,i=o.scrollHeight,c=o.scrollWidth;var n=Number(t.lowerThreshold);var f=Number(t.upperThreshold);if(!isNaN(n)&&(t.scrollY&&r+s+n>=i||t.scrollX&&l+e+n>=c)){t.onScrollToLower.emit({direction:t.scrollX?"right":t.scrollY?"bottom":""})}if(!isNaN(f)&&(t.scrollY&&s<=f||t.scrollX&&e<=f)){t.onScrollToUpper.emit({direction:t.scrollX?"left":t.scrollY?"top":""})}}),200);this.scrollX=false;this.scrollY=false;this.upperThreshold=50;this.lowerThreshold=50;this.mpScrollTop=undefined;this.mpScrollLeft=undefined;this.mpScrollIntoView=undefined;this.scrollWithAnimation=false}o.prototype.watchScrollLeft=function(o){var l=this;var r=Number(o);if(this.scrollX&&!isNaN(r)&&r!==this._scrollLeft){if(this.scrollWithAnimation){f(this._scrollLeft,r,(function(o){return l.el.scrollLeft=o}))}else{this.el.scrollLeft=r}this._scrollLeft=r}};o.prototype.watchScrollTop=function(o){var l=this;var r=Number(o);if(this.scrollY&&!isNaN(r)&&r!==this._scrollTop){if(this.scrollWithAnimation){f(this._scrollTop,r,(function(o){return l.el.scrollTop=o}))}else{this.el.scrollTop=r}this._scrollTop=r}};o.prototype.watchScrollIntoView=function(o){var l;if(typeof o==="string"&&o){(l=document.querySelector("#".concat(o)))===null||l===void 0?void 0:l.scrollIntoView({behavior:"smooth",block:"center",inline:"start"})}};o.prototype.handleScroll=function(o){if(o instanceof CustomEvent)return;o.stopPropagation();var l=this.el,r=l.scrollLeft,t=l.scrollTop,e=l.scrollHeight,s=l.scrollWidth;this._scrollLeft=r;this._scrollTop=t;this.upperAndLower();this.onScroll.emit({scrollLeft:r,scrollTop:t,scrollHeight:e,scrollWidth:s})};o.prototype.componentDidLoad=function(){var o=this;var l=this,r=l.scrollY,t=l.scrollX,e=l.scrollWithAnimation;var s=Number(this.mpScrollTop);var i=Number(this.mpScrollLeft);if(r&&!isNaN(s)){if(e){f(0,s,(function(l){return o.el.scrollTop=l}))}else{this.el.scrollTop=s}this._scrollTop=s}if(t&&!isNaN(i)){if(e){f(0,i,(function(l){return o.el.scrollLeft=l}))}else{this.el.scrollLeft=i}this._scrollLeft=i}};o.prototype.render=function(){var o=this,l=o.scrollX,r=o.scrollY;var s=i({"taro-scroll-view__scroll-x":l,"taro-scroll-view__scroll-y":r});return t(e,{class:s},t("slot",null))};Object.defineProperty(o.prototype,"el",{get:function(){return s(this)},enumerable:false,configurable:true});Object.defineProperty(o,"watchers",{get:function(){return{mpScrollLeft:["watchScrollLeft"],mpScrollTop:["watchScrollTop"],mpScrollIntoView:["watchScrollIntoView"]}},enumerable:false,configurable:true});return o}());h.style=n}}}));
2
- //# sourceMappingURL=p-6de64a4b.system.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["indexCss","easeOutScroll","from","to","callback","change","dur","sTime","Date","now","isLarger","linear","t","b","c","d","step","requestAnimationFrame","ScrollView","exports","this","upperAndLower","debounce","_b","_this","el","offsetWidth","offsetHeight","scrollLeft","scrollTop","scrollHeight","scrollWidth","lowerThreshold","Number","upperThreshold","isNaN","scrollY","scrollX","onScrollToLower","emit","direction","onScrollToUpper","class_1","prototype","watchScrollLeft","newVal","_scrollLeft","scrollWithAnimation","pos","watchScrollTop","_scrollTop","watchScrollIntoView","_a","document","querySelector","concat","scrollIntoView","behavior","block","inline","handleScroll","e","CustomEvent","stopPropagation","onScroll","componentDidLoad","mpScrollTop","mpScrollLeft","render","cls","classNames","h","Host","class"],"sources":["src/components/scroll-view/style/index.scss?tag=taro-scroll-view-core","src/components/scroll-view/scroll-view.tsx"],"sourcesContent":["taro-scroll-view-core {\n display: block;\n width: 100%;\n -webkit-overflow-scrolling: auto;\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.taro-scroll-view {\n &__scroll-x {\n overflow-x: scroll;\n overflow-y: hidden;\n }\n\n &__scroll-y {\n overflow-x: hidden;\n overflow-y: scroll;\n }\n}\n","import { Component, h, ComponentInterface, Prop, Event, EventEmitter, Watch, Element, Host, Listen } from '@stencil/core'\nimport classNames from 'classnames'\n\nimport { debounce } from '../../utils'\n\nfunction easeOutScroll (from: number, to: number, callback) {\n if (from === to || typeof from !== 'number') {\n return\n }\n\n const change = to - from\n const dur = 500\n const sTime = Date.now()\n const isLarger = to >= from\n\n function linear (t: number, b: number, c: number, d: number): number {\n return c * t / d + b\n }\n\n function step () {\n from = linear(Date.now() - sTime, from, change, dur)\n if ((isLarger && from >= to) || (!isLarger && to >= from)) {\n callback(to)\n return\n }\n callback(from)\n requestAnimationFrame(step)\n }\n\n step()\n}\n\n@Component({\n tag: 'taro-scroll-view-core',\n styleUrl: './style/index.scss'\n})\nexport class ScrollView implements ComponentInterface {\n private _scrollLeft: number\n private _scrollTop: number\n\n @Element() el: HTMLElement\n\n @Prop() scrollX = false\n @Prop() scrollY = false\n @Prop() upperThreshold: number | string = 50\n @Prop() lowerThreshold: number | string = 50\n @Prop({ attribute: 'scroll-top', reflect: true }) mpScrollTop: number | string\n @Prop({ attribute: 'scroll-left', reflect: true }) mpScrollLeft: number | string\n @Prop({ attribute: 'scroll-into-view', reflect: true }) mpScrollIntoView: string\n @Prop() scrollWithAnimation = false\n\n @Event({\n eventName: 'scroll',\n bubbles: false\n })\n onScroll: EventEmitter\n\n @Event({\n eventName: 'scrolltoupper',\n bubbles: false\n })\n onScrollToUpper: EventEmitter\n\n @Event({\n eventName: 'scrolltolower',\n bubbles: false\n })\n onScrollToLower: EventEmitter\n\n @Watch('mpScrollLeft')\n watchScrollLeft (newVal) {\n const scrollLeft = Number(newVal)\n if (\n this.scrollX &&\n !isNaN(scrollLeft) &&\n scrollLeft !== this._scrollLeft\n ) {\n if (this.scrollWithAnimation) {\n easeOutScroll(this._scrollLeft, scrollLeft, pos => (this.el.scrollLeft = pos))\n } else {\n this.el.scrollLeft = scrollLeft\n }\n this._scrollLeft = scrollLeft\n }\n }\n\n @Watch('mpScrollTop')\n watchScrollTop (newVal) {\n const scrollTop = Number(newVal)\n if (\n this.scrollY &&\n !isNaN(scrollTop) &&\n scrollTop !== this._scrollTop\n ) {\n if (this.scrollWithAnimation) {\n easeOutScroll(this._scrollTop, scrollTop, pos => (this.el.scrollTop = pos))\n } else {\n this.el.scrollTop = scrollTop\n }\n this._scrollTop = scrollTop\n }\n }\n\n @Watch('mpScrollIntoView')\n watchScrollIntoView (newVal) {\n if (typeof newVal === 'string' && newVal) {\n document.querySelector(`#${newVal}`)?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'start'\n })\n }\n }\n\n @Listen('scroll', { capture: true })\n handleScroll (e: Event) {\n if (e instanceof CustomEvent) return\n e.stopPropagation()\n\n const {\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth\n } = this.el\n this._scrollLeft = scrollLeft\n this._scrollTop = scrollTop\n\n this.upperAndLower()\n\n this.onScroll.emit({\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth\n })\n }\n\n componentDidLoad () {\n const {\n scrollY,\n scrollX,\n scrollWithAnimation\n } = this\n\n const scrollTop = Number(this.mpScrollTop)\n const scrollLeft = Number(this.mpScrollLeft)\n\n if (scrollY && !isNaN(scrollTop)) {\n if (scrollWithAnimation) {\n easeOutScroll(0, scrollTop, pos => (this.el.scrollTop = pos))\n } else {\n this.el.scrollTop = scrollTop\n }\n this._scrollTop = scrollTop\n }\n\n if (scrollX && !isNaN(scrollLeft)) {\n if (scrollWithAnimation) {\n easeOutScroll(0, scrollLeft, pos => (this.el.scrollLeft = pos))\n } else {\n this.el.scrollLeft = scrollLeft\n }\n this._scrollLeft = scrollLeft\n }\n }\n\n upperAndLower = debounce(() => {\n const {\n offsetWidth,\n offsetHeight,\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth\n } = this.el\n\n const lowerThreshold = Number(this.lowerThreshold)\n const upperThreshold = Number(this.upperThreshold)\n\n if (\n !isNaN(lowerThreshold) &&\n ((this.scrollY && offsetHeight + scrollTop + lowerThreshold >= scrollHeight) ||\n (this.scrollX && offsetWidth + scrollLeft + lowerThreshold >= scrollWidth))\n ) {\n this.onScrollToLower.emit({\n direction: this.scrollX ? 'right' : (this.scrollY ? 'bottom' : '')\n })\n }\n\n if (\n !isNaN(upperThreshold) &&\n ((this.scrollY && scrollTop <= upperThreshold) ||\n (this.scrollX && scrollLeft <= upperThreshold))\n ) {\n this.onScrollToUpper.emit({\n direction: this.scrollX ? 'left' : (this.scrollY ? 'top' : '')\n })\n }\n }, 200)\n\n render () {\n const {\n scrollX,\n scrollY\n } = this\n\n const cls = classNames({\n 'taro-scroll-view__scroll-x': scrollX,\n 'taro-scroll-view__scroll-y': scrollY\n })\n return (\n <Host class={cls}>\n <slot />\n </Host>\n )\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as t,c as s,h as i,H as o,g as l}from"./p-78e3ebb9.js";import{c as r}from"./p-76724e58.js";import{d as e}from"./p-d3c7f87d.js";const c="taro-scroll-view-core{display:block;width:100%;-webkit-overflow-scrolling:auto}taro-scroll-view-core::-webkit-scrollbar{display:none}.taro-scroll-view__scroll-x{overflow-x:scroll;overflow-y:hidden}.taro-scroll-view__scroll-y{overflow-x:hidden;overflow-y:scroll}";function h(t,s,i){if(t===s||typeof t!=="number"){return}const o=s-t;const l=500;const r=Date.now();const e=s>=t;function c(t,s,i,o){return i*t/o+s}function h(){t=c(Date.now()-r,t,o,l);if(e&&t>=s||!e&&s>=t){i(s);return}i(t);requestAnimationFrame(h)}h()}const n=class{constructor(i){t(this,i);this.onScroll=s(this,"scroll",3);this.onScrollToUpper=s(this,"scrolltoupper",3);this.onScrollToLower=s(this,"scrolltolower",3);this.upperAndLower=e((()=>{const{offsetWidth:t,offsetHeight:s,scrollLeft:i,scrollTop:o,scrollHeight:l,scrollWidth:r}=this.el;const e=Number(this.lowerThreshold);const c=Number(this.upperThreshold);if(!isNaN(e)&&(this.scrollY&&s+o+e>=l||this.scrollX&&t+i+e>=r)){this.onScrollToLower.emit({direction:this.scrollX?"right":this.scrollY?"bottom":""})}if(!isNaN(c)&&(this.scrollY&&o<=c||this.scrollX&&i<=c)){this.onScrollToUpper.emit({direction:this.scrollX?"left":this.scrollY?"top":""})}}),200);this.scrollX=false;this.scrollY=false;this.upperThreshold=50;this.lowerThreshold=50;this.mpScrollTop=undefined;this.mpScrollLeft=undefined;this.mpScrollIntoView=undefined;this.scrollWithAnimation=false}watchScrollLeft(t){const s=Number(t);if(this.scrollX&&!isNaN(s)&&s!==this._scrollLeft){if(this.scrollWithAnimation){h(this._scrollLeft,s,(t=>this.el.scrollLeft=t))}else{this.el.scrollLeft=s}this._scrollLeft=s}}watchScrollTop(t){const s=Number(t);if(this.scrollY&&!isNaN(s)&&s!==this._scrollTop){if(this.scrollWithAnimation){h(this._scrollTop,s,(t=>this.el.scrollTop=t))}else{this.el.scrollTop=s}this._scrollTop=s}}watchScrollIntoView(t){var s;if(typeof t==="string"&&t){(s=document.querySelector(`#${t}`))===null||s===void 0?void 0:s.scrollIntoView({behavior:"smooth",block:"center",inline:"start"})}}handleScroll(t){if(t instanceof CustomEvent)return;t.stopPropagation();const{scrollLeft:s,scrollTop:i,scrollHeight:o,scrollWidth:l}=this.el;this._scrollLeft=s;this._scrollTop=i;this.upperAndLower();this.onScroll.emit({scrollLeft:s,scrollTop:i,scrollHeight:o,scrollWidth:l})}componentDidLoad(){const{scrollY:t,scrollX:s,scrollWithAnimation:i}=this;const o=Number(this.mpScrollTop);const l=Number(this.mpScrollLeft);if(t&&!isNaN(o)){if(i){h(0,o,(t=>this.el.scrollTop=t))}else{this.el.scrollTop=o}this._scrollTop=o}if(s&&!isNaN(l)){if(i){h(0,l,(t=>this.el.scrollLeft=t))}else{this.el.scrollLeft=l}this._scrollLeft=l}}render(){const{scrollX:t,scrollY:s}=this;const l=r({"taro-scroll-view__scroll-x":t,"taro-scroll-view__scroll-y":s});return i(o,{class:l},i("slot",null))}get el(){return l(this)}static get watchers(){return{mpScrollLeft:["watchScrollLeft"],mpScrollTop:["watchScrollTop"],mpScrollIntoView:["watchScrollIntoView"]}}};n.style=c;export{n as taro_scroll_view_core};
2
- //# sourceMappingURL=p-71155a2c.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["indexCss","easeOutScroll","from","to","callback","change","dur","sTime","Date","now","isLarger","linear","t","b","c","d","step","requestAnimationFrame","ScrollView","this","upperAndLower","debounce","offsetWidth","offsetHeight","scrollLeft","scrollTop","scrollHeight","scrollWidth","el","lowerThreshold","Number","upperThreshold","isNaN","scrollY","scrollX","onScrollToLower","emit","direction","onScrollToUpper","watchScrollLeft","newVal","_scrollLeft","scrollWithAnimation","pos","watchScrollTop","_scrollTop","watchScrollIntoView","_a","document","querySelector","scrollIntoView","behavior","block","inline","handleScroll","e","CustomEvent","stopPropagation","onScroll","componentDidLoad","mpScrollTop","mpScrollLeft","render","cls","classNames","h","Host","class"],"sources":["./src/components/scroll-view/style/index.scss?tag=taro-scroll-view-core","./src/components/scroll-view/scroll-view.tsx"],"sourcesContent":["taro-scroll-view-core {\n display: block;\n width: 100%;\n -webkit-overflow-scrolling: auto;\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.taro-scroll-view {\n &__scroll-x {\n overflow-x: scroll;\n overflow-y: hidden;\n }\n\n &__scroll-y {\n overflow-x: hidden;\n overflow-y: scroll;\n }\n}\n","import { Component, h, ComponentInterface, Prop, Event, EventEmitter, Watch, Element, Host, Listen } from '@stencil/core'\nimport classNames from 'classnames'\n\nimport { debounce } from '../../utils'\n\nfunction easeOutScroll (from: number, to: number, callback) {\n if (from === to || typeof from !== 'number') {\n return\n }\n\n const change = to - from\n const dur = 500\n const sTime = Date.now()\n const isLarger = to >= from\n\n function linear (t: number, b: number, c: number, d: number): number {\n return c * t / d + b\n }\n\n function step () {\n from = linear(Date.now() - sTime, from, change, dur)\n if ((isLarger && from >= to) || (!isLarger && to >= from)) {\n callback(to)\n return\n }\n callback(from)\n requestAnimationFrame(step)\n }\n\n step()\n}\n\n@Component({\n tag: 'taro-scroll-view-core',\n styleUrl: './style/index.scss'\n})\nexport class ScrollView implements ComponentInterface {\n private _scrollLeft: number\n private _scrollTop: number\n\n @Element() el: HTMLElement\n\n @Prop() scrollX = false\n @Prop() scrollY = false\n @Prop() upperThreshold: number | string = 50\n @Prop() lowerThreshold: number | string = 50\n @Prop({ attribute: 'scroll-top', reflect: true }) mpScrollTop: number | string\n @Prop({ attribute: 'scroll-left', reflect: true }) mpScrollLeft: number | string\n @Prop({ attribute: 'scroll-into-view', reflect: true }) mpScrollIntoView: string\n @Prop() scrollWithAnimation = false\n\n @Event({\n eventName: 'scroll',\n bubbles: false\n })\n onScroll: EventEmitter\n\n @Event({\n eventName: 'scrolltoupper',\n bubbles: false\n })\n onScrollToUpper: EventEmitter\n\n @Event({\n eventName: 'scrolltolower',\n bubbles: false\n })\n onScrollToLower: EventEmitter\n\n @Watch('mpScrollLeft')\n watchScrollLeft (newVal) {\n const scrollLeft = Number(newVal)\n if (\n this.scrollX &&\n !isNaN(scrollLeft) &&\n scrollLeft !== this._scrollLeft\n ) {\n if (this.scrollWithAnimation) {\n easeOutScroll(this._scrollLeft, scrollLeft, pos => (this.el.scrollLeft = pos))\n } else {\n this.el.scrollLeft = scrollLeft\n }\n this._scrollLeft = scrollLeft\n }\n }\n\n @Watch('mpScrollTop')\n watchScrollTop (newVal) {\n const scrollTop = Number(newVal)\n if (\n this.scrollY &&\n !isNaN(scrollTop) &&\n scrollTop !== this._scrollTop\n ) {\n if (this.scrollWithAnimation) {\n easeOutScroll(this._scrollTop, scrollTop, pos => (this.el.scrollTop = pos))\n } else {\n this.el.scrollTop = scrollTop\n }\n this._scrollTop = scrollTop\n }\n }\n\n @Watch('mpScrollIntoView')\n watchScrollIntoView (newVal) {\n if (typeof newVal === 'string' && newVal) {\n document.querySelector(`#${newVal}`)?.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'start'\n })\n }\n }\n\n @Listen('scroll', { capture: true })\n handleScroll (e: Event) {\n if (e instanceof CustomEvent) return\n e.stopPropagation()\n\n const {\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth\n } = this.el\n this._scrollLeft = scrollLeft\n this._scrollTop = scrollTop\n\n this.upperAndLower()\n\n this.onScroll.emit({\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth\n })\n }\n\n componentDidLoad () {\n const {\n scrollY,\n scrollX,\n scrollWithAnimation\n } = this\n\n const scrollTop = Number(this.mpScrollTop)\n const scrollLeft = Number(this.mpScrollLeft)\n\n if (scrollY && !isNaN(scrollTop)) {\n if (scrollWithAnimation) {\n easeOutScroll(0, scrollTop, pos => (this.el.scrollTop = pos))\n } else {\n this.el.scrollTop = scrollTop\n }\n this._scrollTop = scrollTop\n }\n\n if (scrollX && !isNaN(scrollLeft)) {\n if (scrollWithAnimation) {\n easeOutScroll(0, scrollLeft, pos => (this.el.scrollLeft = pos))\n } else {\n this.el.scrollLeft = scrollLeft\n }\n this._scrollLeft = scrollLeft\n }\n }\n\n upperAndLower = debounce(() => {\n const {\n offsetWidth,\n offsetHeight,\n scrollLeft,\n scrollTop,\n scrollHeight,\n scrollWidth\n } = this.el\n\n const lowerThreshold = Number(this.lowerThreshold)\n const upperThreshold = Number(this.upperThreshold)\n\n if (\n !isNaN(lowerThreshold) &&\n ((this.scrollY && offsetHeight + scrollTop + lowerThreshold >= scrollHeight) ||\n (this.scrollX && offsetWidth + scrollLeft + lowerThreshold >= scrollWidth))\n ) {\n this.onScrollToLower.emit({\n direction: this.scrollX ? 'right' : (this.scrollY ? 'bottom' : '')\n })\n }\n\n if (\n !isNaN(upperThreshold) &&\n ((this.scrollY && scrollTop <= upperThreshold) ||\n (this.scrollX && scrollLeft <= upperThreshold))\n ) {\n this.onScrollToUpper.emit({\n direction: this.scrollX ? 'left' : (this.scrollY ? 'top' : '')\n })\n }\n }, 200)\n\n render () {\n const {\n scrollX,\n scrollY\n } = this\n\n const cls = classNames({\n 'taro-scroll-view__scroll-x': scrollX,\n 'taro-scroll-view__scroll-y': scrollY\n })\n return (\n <Host class={cls}>\n <slot />\n </Host>\n )\n }\n}\n"],"mappings":"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"}