@tarojs/components 3.6.0-canary.7 → 3.6.0-canary.9

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 (65) hide show
  1. package/dist/cjs/taro-tabbar.cjs.entry.js.map +1 -1
  2. package/dist/esm/taro-tabbar.entry.js.map +1 -1
  3. package/dist/esm-es5/taro-tabbar.entry.js.map +1 -1
  4. package/dist/react/component-lib/index.js +20 -10
  5. package/dist/react/component-lib/input.js +2 -3
  6. package/dist/react/component-lib/reactify-wc.js +6 -43
  7. package/dist/react/components.js +0 -2
  8. package/dist/react/react-component-lib/createComponent.js +9 -29
  9. package/dist/react/react-component-lib/createOverlayComponent.js +2 -29
  10. package/dist/react/react-component-lib/utils/attachProps.js +9 -18
  11. package/dist/react/react-component-lib/utils/index.js +0 -2
  12. package/dist/taro-components/p-49a6cae4.system.entry.js.map +1 -1
  13. package/dist/taro-components/p-e0d6b00b.entry.js.map +1 -1
  14. package/dist/vue2/component-lib/components.js +22 -11
  15. package/dist/vue2/component-lib/createFormsComponent.js +0 -5
  16. package/dist/vue2/component-lib/index.js +6 -8
  17. package/dist/vue2/component-lib/mixins/refs.js +0 -5
  18. package/dist/vue2/components.js +0 -3
  19. package/dist/vue2/index.js +3 -7
  20. package/dist/vue2/vue-component-lib/utils.js +0 -1
  21. package/dist/vue3/component-lib/createComponent.js +1 -1
  22. package/dist/vue3/component-lib/createFormsComponent.js +3 -8
  23. package/dist/vue3/component-lib/forwardRef.js +0 -2
  24. package/dist/vue3/component-lib/icon.js +2 -2
  25. package/dist/vue3/component-lib/image.js +2 -2
  26. package/dist/vue3/component-lib/index.js +22 -11
  27. package/dist/vue3/component-lib/scroll-view.js +2 -2
  28. package/dist/vue3/component-lib/text.js +2 -2
  29. package/dist/vue3/components.js +0 -2
  30. package/dist/vue3/index.js +2 -4
  31. package/dist/vue3/vue-component-lib/utils.js +7 -29
  32. package/package.json +4 -4
  33. package/types/Button.d.ts +1 -1
  34. package/types/Camera.d.ts +1 -1
  35. package/types/Checkbox.d.ts +1 -1
  36. package/types/CheckboxGroup.d.ts +1 -1
  37. package/types/CoverImage.d.ts +1 -1
  38. package/types/CustomWrapper.d.ts +1 -0
  39. package/types/Form.d.ts +1 -1
  40. package/types/Icon.d.ts +1 -1
  41. package/types/Image.d.ts +1 -1
  42. package/types/Input.d.ts +15 -1
  43. package/types/Label.d.ts +1 -1
  44. package/types/NativeSlot.d.ts +1 -0
  45. package/types/NavigationBar.d.ts +2 -1
  46. package/types/Navigator.d.ts +1 -1
  47. package/types/Picker.d.ts +1 -1
  48. package/types/PickerView.d.ts +1 -1
  49. package/types/PickerViewColumn.d.ts +1 -1
  50. package/types/Progress.d.ts +1 -1
  51. package/types/Radio.d.ts +1 -1
  52. package/types/RadioGroup.d.ts +1 -1
  53. package/types/RichText.d.ts +1 -1
  54. package/types/ScrollView.d.ts +1 -1
  55. package/types/ShareElement.d.ts +3 -3
  56. package/types/Slider.d.ts +1 -1
  57. package/types/Slot.d.ts +2 -1
  58. package/types/Swiper.d.ts +1 -1
  59. package/types/SwiperItem.d.ts +1 -1
  60. package/types/Switch.d.ts +1 -1
  61. package/types/Textarea.d.ts +1 -1
  62. package/types/Video.d.ts +1 -1
  63. package/types/View.d.ts +1 -1
  64. package/types/WebView.d.ts +1 -1
  65. package/virtual-list/index.js +3 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["src/utils/url.ts","../taro-router/dist/utils/index.js","../../node_modules/.pnpm/registry.npmjs.org+resolve-pathname@3.0.0/node_modules/resolve-pathname/esm/resolve-pathname.js","src/components/tabbar/tabbar-item.tsx","src/components/tabbar/style/index.scss?tag=taro-tabbar","src/components/tabbar/tabbar.tsx"],"names":["splitUrl","_url","url","pos","res","path","query","fragment","indexOf","substring","addLeadingSlash","charAt","hasBasename","prefix","RegExp","test","stripBasename","length","stripSuffix","suffix","includes","isAbsolute","pathname","spliceOne","list","index","i","k","n","pop","resolvePathname","to","from","undefined","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","concat","hasTrailingSlash","last","up","part","unshift","result","join","substr","TabbarItem","_b","_c","isSelected","textColor","iconPath","badgeText","_d","showRedDot","text","onSelect","className","classNames","weui-bar__item_on","badgeStyle","position","top","right","dotStyle","onClick","h","key","href","class","style","display","src","alt","color","indexCss","STATUS_SHOW","STATUS_HIDE","STATUS_SLIDEOUT","basicTabBarClassName","hideTabBarClassName","hideTabBarWithAnimationClassName","Tabbar","exports","class_1","hostRef","_this","this","homePage","customRoutes","tabbarPos","getOriginUrl","customRoute","filter","customUrl","pathA","pathB","getSelectedIndex","foundIndex","forEach","idx","pagePath","switchTab","selectedIndex","Taro","switchTabHandler","successHandler","errorHandler","currentUrl","getCurrentUrl","nextTab","errMsg","routerChangeHandler","options","_a","toLocation","currentPage","routerBasename","conf","basename","setTabBarBadgeHandler","__spreadArray","removeTabBarBadgeHandler","showTabBarRedDotHandler","hideTabBarRedDotHandler","showTabBarHandler","status","hideTabBarHandler","animation","setTabBarStyleHandler","selectedColor","backgroundColor","borderStyle","setTabBarItemHandler","selectedIconPath","Object","prototype","toString","call","Error","this_1","push","apply","map","p","item","routerMode","mode","window","location","hashIndex","processedUrl","decodeURI","bindEvent","eventCenter","on","removeEvent","off","componentDidLoad","tabbar","nextElementSibling","disconnectedCallback","render","containerCls","shouldHideTabBar","shouldSlideout","Host","height","bind"],"mappings":"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","sourcesContent":["export const normalizePath = url => {\n let _isRelative\n let _leadingParents = ''\n let _parent, _pos\n\n // handle relative paths\n if (url.charAt(0) !== '/') {\n _isRelative = true\n url = '/' + url\n }\n\n // handle relative files (as opposed to directories)\n if (url.substring(-3) === '/..' || url.slice(-2) === '/.') {\n url += '/'\n }\n\n // resolve simples\n url = url.replace(/(\\/(\\.\\/)+)|(\\/\\.$)/g, '/').replace(/\\/{2,}/g, '/')\n\n // remember leading parents\n if (_isRelative) {\n _leadingParents = url.substring(1).match(/^(\\.\\.\\/)+/) || ''\n if (_leadingParents) {\n _leadingParents = _leadingParents[0]\n }\n }\n\n // resolve parents\n while (true) {\n _parent = url.search(/\\/\\.\\.(\\/|$)/)\n if (_parent === -1) {\n // no more ../ to resolve\n break\n } else if (_parent === 0) {\n // top level cannot be relative, skip it\n url = url.substring(3)\n continue\n }\n\n _pos = url.substring(0, _parent).lastIndexOf('/')\n if (_pos === -1) {\n _pos = _parent\n }\n url = url.substring(0, _pos) + url.substring(_parent + 3)\n }\n\n // revert to relative\n if (_isRelative) {\n url = _leadingParents + url.substring(1)\n }\n\n return url\n}\n\nexport const splitUrl = _url => {\n let url = _url || ''\n let pos\n const res = {\n path: null,\n query: null,\n fragment: null\n }\n\n pos = url.indexOf('#')\n if (pos > -1) {\n res.fragment = url.substring(pos + 1)\n url = url.substring(0, pos)\n }\n\n pos = url.indexOf('?')\n if (pos > -1) {\n res.query = url.substring(pos + 1)\n url = url.substring(0, pos)\n }\n\n res.path = url\n\n return res\n}\n","// export const removeLeadingSlash = (str = '') => str.replace(/^\\.?\\//, '')\n// export const removeTrailingSearch = (str = '') => str.replace(/\\?[\\s\\S]*$/, '')\nexport const addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url);\nexport const hasBasename = (path = '', prefix = '') => new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path) || path === prefix;\nexport const stripBasename = (path = '', prefix = '') => hasBasename(path, prefix) ? path.substring(prefix.length) : path;\nexport const stripTrailing = (str = '') => str.replace(/[?#][\\s\\S]*$/, '');\nexport const stripSuffix = (path = '', suffix = '') => path.includes(suffix) ? path.substring(0, path.length - suffix.length) : path;\nclass RoutesAlias {\n constructor() {\n this.conf = [];\n this.getConfig = (url = '') => {\n const customRoute = this.conf.filter((arr) => {\n return arr.includes(url);\n });\n return customRoute[0];\n };\n this.getOrigin = (url = '') => {\n var _a;\n return ((_a = this.getConfig(url)) === null || _a === void 0 ? void 0 : _a[0]) || url;\n };\n this.getAlias = (url = '') => {\n var _a;\n return ((_a = this.getConfig(url)) === null || _a === void 0 ? void 0 : _a[1]) || url;\n };\n this.getAll = (url = '') => {\n return this.conf\n .filter((arr) => arr.includes(url))\n .reduceRight((p, a) => {\n p.unshift(a[1]);\n return p;\n }, []);\n };\n }\n set(customRoutes = {}) {\n for (let key in customRoutes) {\n const path = customRoutes[key];\n key = addLeadingSlash(key);\n if (typeof path === 'string') {\n this.conf.push([key, addLeadingSlash(path)]);\n }\n else if ((path === null || path === void 0 ? void 0 : path.length) > 0) {\n this.conf.push(...path.map(p => [key, addLeadingSlash(p)]));\n }\n }\n }\n}\nexport const routesAlias = new RoutesAlias();\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import classNames from 'classnames'\nimport { FunctionalComponent, h } from '@stencil/core'\n\ntype TabbarItemProps = {\n index: number\n isSelected?: boolean\n textColor?: string\n badgeText?: string\n iconPath: string\n showRedDot?: boolean\n text?: string\n onSelect: (index: number) => void\n}\n\nexport const TabbarItem: FunctionalComponent<TabbarItemProps> = ({\n index,\n isSelected = false,\n textColor,\n iconPath,\n badgeText,\n showRedDot = false,\n text,\n onSelect\n}) => {\n const className = classNames('weui-tabbar__item', {\n 'weui-bar__item_on': isSelected\n })\n const badgeStyle = {\n position: 'absolute',\n top: '-2px',\n right: '-13px'\n }\n const dotStyle = {\n position: 'absolute',\n top: '0',\n right: '-6px'\n }\n\n function onClick () {\n onSelect(index)\n }\n\n return (\n <a key={index} href='javascript:;' class={className} onClick={onClick}>\n <span style={{ display: 'inline-block', position: 'relative' }}>\n <img src={iconPath} alt='' class='weui-tabbar__icon' />\n {!!badgeText && (\n <span\n class='weui-badge taro-tabbar-badge'\n style={badgeStyle}>\n {badgeText}\n </span>\n )}\n {showRedDot && (\n <span\n class='weui-badge weui-badge_dot'\n style={dotStyle}\n />\n )}\n </span>\n <p class='weui-tabbar__label' style={{ color: textColor }}>\n {text}\n </p>\n </a>\n )\n}\n","html,\nbody {\n height: 100%;\n}\n\n#app {\n height: 100%;\n}\n\n.taro-tabbar {\n &__border {\n &-white {\n &::before {\n border-top-color: #fff !important;\n }\n }\n }\n\n &__container {\n display: flex;\n overflow: hidden;\n flex-direction: column;\n height: 100%;\n }\n\n &__panel {\n overflow: auto;\n position: relative;\n flex: 1;\n -webkit-overflow-scrolling: auto;\n }\n\n &__tabbar {\n position: relative;\n width: 100%;\n height: 50px;\n transition: bottom 0.2s, top 0.2s;\n\n &-top {\n top: 0;\n }\n\n &-bottom {\n bottom: 0;\n margin-bottom: constant(safe-area-inset-bottom);\n margin-bottom: env(safe-area-inset-bottom);\n }\n\n &-hide {\n display: none;\n }\n\n &-slideout {\n top: -52px;\n flex: 0 0;\n }\n }\n\n &__panel + &__tabbar-slideout {\n top: auto;\n bottom: -52px;\n }\n}\n","import { Component, Prop, h, ComponentInterface, Host, State, Event, EventEmitter, Element } from '@stencil/core'\nimport Taro from '@tarojs/taro'\nimport { addLeadingSlash, stripBasename, stripSuffix } from '@tarojs/router/dist/utils'\nimport { IH5RouterConfig } from '@tarojs/taro/types/compile'\nimport classNames from 'classnames'\nimport resolvePathname from 'resolve-pathname'\n\nimport { splitUrl } from '../../utils'\nimport { TabbarItem } from './tabbar-item'\n\nconst STATUS_SHOW = 0\nconst STATUS_HIDE = 1\nconst STATUS_SLIDEOUT = 2\n\nconst basicTabBarClassName = 'taro-tabbar__tabbar'\nconst hideTabBarClassName = 'taro-tabbar__tabbar-hide'\nconst hideTabBarWithAnimationClassName = 'taro-tabbar__tabbar-slideout'\n\ninterface RouterHandler {\n index: string\n text: string\n url: string\n successHandler: Function\n errorHandler: Function\n animation?: boolean\n}\n\nexport interface Conf {\n color: string\n selectedColor: string\n backgroundColor: string\n borderStyle?: 'black' | 'white'\n list: TabbarList[]\n position?: 'bottom' | 'top'\n custom: boolean\n customRoutes: Record<string, string | string[]>\n mode: IH5RouterConfig['mode']\n basename: string\n homePage: string\n currentPagename: string\n}\n\ninterface TabbarList {\n pagePath: string\n text: string\n iconPath?: string\n selectedIconPath?: string\n badgeText?: string\n showRedDot?: boolean\n}\n\n@Component({\n tag: 'taro-tabbar',\n styleUrl: './style/index.scss'\n})\nexport class Tabbar implements ComponentInterface {\n private homePage = ''\n\n private customRoutes: Array<string[]> = []\n\n private tabbarPos: 'top' | 'bottom' = 'bottom'\n\n @Prop() conf: Conf\n\n @State() list: TabbarList[]\n\n @State() borderStyle: Conf['borderStyle']\n\n @State() backgroundColor: Conf['backgroundColor']\n\n @State() color: Conf['color']\n\n @State() selectedColor: Conf['selectedColor']\n\n @State() selectedIndex = -1\n\n @State() status: 0 | 1 | 2 = STATUS_SHOW\n\n @Event({\n eventName: 'longpress'\n }) onLongPress: EventEmitter\n\n @Element() tabbar: HTMLDivElement\n\n constructor () {\n const list = this.conf.list\n const customRoutes = this.conf.customRoutes\n if (\n Object.prototype.toString.call(list) !== '[object Array]' ||\n list.length < 2 ||\n list.length > 5\n ) {\n throw new Error('tabBar 配置错误')\n }\n\n this.homePage = addLeadingSlash(this.conf.homePage)\n for (let key in customRoutes) {\n const path = customRoutes[key]\n key = addLeadingSlash(key)\n if (typeof path === 'string') {\n this.customRoutes.push([key, addLeadingSlash(path)])\n } else if (path?.length > 0) {\n this.customRoutes.push(...path.map(p => [key, addLeadingSlash(p)]))\n }\n }\n\n list.forEach(item => {\n if (item.pagePath.indexOf('/') !== 0) {\n item.pagePath = '/' + item.pagePath\n }\n })\n\n this.list = list\n this.borderStyle = this.conf.borderStyle\n this.backgroundColor = this.conf.backgroundColor\n this.color = this.conf.color\n this.selectedColor = this.conf.selectedColor\n }\n\n getCurrentUrl () {\n const routerMode = this.conf.mode\n const routerBasename = this.conf.basename || '/'\n let url\n if (routerMode === 'hash') {\n const href = window.location.href\n const hashIndex = href.indexOf('#')\n url = hashIndex === -1\n ? ''\n : href.substring(hashIndex + 1)\n } else {\n url = location.pathname\n }\n const processedUrl = addLeadingSlash(stripBasename(url, routerBasename))\n return decodeURI(processedUrl === '/' ? this.homePage : processedUrl)\n }\n\n getOriginUrl = (url: string) => {\n const customRoute = this.customRoutes.filter(([, customUrl]) => {\n const pathA = splitUrl(customUrl).path\n const pathB = splitUrl(url).path\n return pathA === pathB\n })\n return stripSuffix(customRoute.length ? customRoute[0][0] : url, '.html')\n }\n\n getSelectedIndex = (url: string) => {\n let foundIndex = -1\n this.list.forEach(({ pagePath }, idx) => {\n const pathA = splitUrl(url).path\n const pathB = splitUrl(pagePath).path\n if (pathA === pathB) {\n foundIndex = idx\n }\n })\n return foundIndex\n }\n\n switchTab = (index: number) => {\n this.selectedIndex = index\n Taro.switchTab({\n url: this.list[index].pagePath\n })\n }\n\n switchTabHandler = ({ url, successHandler, errorHandler }: RouterHandler) => {\n const currentUrl = this.getOriginUrl(this.getCurrentUrl() || this.homePage)\n const nextTab = resolvePathname(url, currentUrl)\n const foundIndex = this.getSelectedIndex(nextTab)\n\n if (foundIndex > -1) {\n this.switchTab(foundIndex)\n successHandler({\n errMsg: 'switchTab:ok'\n })\n } else {\n errorHandler({\n errMsg: `switchTab:fail page \"${nextTab}\" is not found`\n })\n }\n }\n\n routerChangeHandler = (options?) => {\n const to = options?.toLocation?.path\n let currentPage\n\n if (typeof to === 'string') {\n const routerBasename = this.conf.basename || '/'\n currentPage = stripBasename(addLeadingSlash(to || this.homePage), routerBasename) || '/'\n } else {\n currentPage = this.getCurrentUrl()\n }\n\n this.selectedIndex = this.getSelectedIndex(this.getOriginUrl(currentPage))\n }\n\n setTabBarBadgeHandler = ({ index, text, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].showRedDot = false\n list[index].badgeText = text\n successHandler({\n errMsg: 'setTabBarBadge:ok'\n })\n } else {\n errorHandler({\n errMsg: 'setTabBarBadge:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n removeTabBarBadgeHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].badgeText = null\n list[index].badgeText = null\n successHandler({\n errMsg: 'removeTabBarBadge:ok'\n })\n } else {\n errorHandler({\n errMsg: 'removeTabBarBadge:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n showTabBarRedDotHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].badgeText = null\n list[index].showRedDot = true\n successHandler({\n errMsg: 'showTabBarRedDot:ok'\n })\n } else {\n errorHandler({\n errMsg: 'showTabBarRedDot:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n hideTabBarRedDotHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].showRedDot = false\n successHandler({\n errMsg: 'hideTabBarRedDot:ok'\n })\n } else {\n errorHandler({\n errMsg: 'hideTabBarRedDot:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n showTabBarHandler = ({ successHandler }) => {\n this.status = STATUS_SHOW\n successHandler({\n errMsg: 'showTabBar:ok'\n })\n }\n\n hideTabBarHandler = ({ animation, successHandler }) => {\n this.status = animation ? STATUS_SLIDEOUT : STATUS_HIDE\n successHandler({\n errMsg: 'hideTabBar:ok'\n })\n }\n\n setTabBarStyleHandler = ({ color, selectedColor, backgroundColor, borderStyle, successHandler }) => {\n if (backgroundColor) this.backgroundColor = backgroundColor\n if (borderStyle) this.borderStyle = borderStyle\n if (color) this.color = color\n if (selectedColor) this.selectedColor = selectedColor\n successHandler({\n errMsg: 'setTabBarStyle:ok'\n })\n }\n\n setTabBarItemHandler = ({ index, iconPath, selectedIconPath, text, successHandler, errorHandler }) => {\n const list = [...this.list]\n if (index in list) {\n if (iconPath) list[index].iconPath = iconPath\n if (selectedIconPath) list[index].selectedIconPath = selectedIconPath\n if (text) list[index].text = text\n successHandler({\n errMsg: 'setTabBarItem:ok'\n })\n } else {\n errorHandler({\n errMsg: 'setTabBarItem:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n bindEvent () {\n Taro.eventCenter.on('__taroRouterChange', this.routerChangeHandler)\n Taro.eventCenter.on('__taroSwitchTab', this.switchTabHandler)\n Taro.eventCenter.on('__taroSetTabBarBadge', this.setTabBarBadgeHandler)\n Taro.eventCenter.on('__taroRemoveTabBarBadge', this.removeTabBarBadgeHandler)\n Taro.eventCenter.on('__taroShowTabBarRedDotHandler', this.showTabBarRedDotHandler)\n Taro.eventCenter.on('__taroHideTabBarRedDotHandler', this.hideTabBarRedDotHandler)\n Taro.eventCenter.on('__taroShowTabBar', this.showTabBarHandler)\n Taro.eventCenter.on('__taroHideTabBar', this.hideTabBarHandler)\n Taro.eventCenter.on('__taroSetTabBarStyle', this.setTabBarStyleHandler)\n Taro.eventCenter.on('__taroSetTabBarItem', this.setTabBarItemHandler)\n }\n\n removeEvent () {\n Taro.eventCenter.off('__taroRouterChange', this.routerChangeHandler)\n Taro.eventCenter.off('__taroSwitchTab', this.switchTabHandler)\n Taro.eventCenter.off('__taroSetTabBarBadge', this.setTabBarBadgeHandler)\n Taro.eventCenter.off('__taroRemoveTabBarBadge', this.removeTabBarBadgeHandler)\n Taro.eventCenter.off('__taroShowTabBarRedDotHandler', this.showTabBarRedDotHandler)\n Taro.eventCenter.off('__taroHideTabBarRedDotHandler', this.hideTabBarRedDotHandler)\n Taro.eventCenter.off('__taroShowTabBar', this.showTabBarHandler)\n Taro.eventCenter.off('__taroHideTabBar', this.hideTabBarHandler)\n Taro.eventCenter.off('__taroSetTabBarStyle', this.setTabBarStyleHandler)\n Taro.eventCenter.off('__taroSetTabBarItem', this.setTabBarItemHandler)\n }\n\n componentDidLoad () {\n this.tabbarPos = this.tabbar.nextElementSibling ? 'top' : 'bottom'\n this.bindEvent()\n this.routerChangeHandler()\n }\n\n disconnectedCallback () {\n this.removeEvent()\n }\n\n render () {\n const { tabbarPos = 'bottom' } = this\n const status = this.status\n const containerCls = classNames('weui-tabbar', {\n [`taro-tabbar__border-${this.borderStyle || 'black'}`]: true\n })\n const shouldHideTabBar = this.selectedIndex === -1 || status === STATUS_HIDE\n const shouldSlideout = status === STATUS_SLIDEOUT\n\n return (\n <Host\n class={classNames(\n basicTabBarClassName,\n `${basicTabBarClassName}-${tabbarPos}`, {\n [hideTabBarClassName]: shouldHideTabBar,\n [hideTabBarWithAnimationClassName]: shouldSlideout\n })} >\n <div\n class={containerCls}\n style={{\n backgroundColor: this.backgroundColor || '',\n height: 'inherit'\n }}\n >\n {this.list.map((item, index) => {\n const isSelected = this.selectedIndex === index\n let textColor\n let iconPath\n if (isSelected) {\n textColor = this.selectedColor || ''\n iconPath = item.selectedIconPath\n } else {\n textColor = this.color || ''\n iconPath = item.iconPath\n }\n return (\n <TabbarItem\n index={index}\n onSelect={this.switchTab.bind(this)}\n isSelected={isSelected}\n textColor={textColor}\n iconPath={iconPath}\n text={item.text}\n badgeText={item.badgeText}\n showRedDot={item.showRedDot}\n />\n )\n })}\n </div>\n </Host>\n )\n }\n}\n"]}
1
+ {"version":3,"sources":["src/utils/url.ts","../taro-router/dist/utils/index.js","../../node_modules/.pnpm/registry.npmjs.org+resolve-pathname@3.0.0/node_modules/resolve-pathname/esm/resolve-pathname.js","src/components/tabbar/tabbar-item.tsx","src/components/tabbar/style/index.scss?tag=taro-tabbar","src/components/tabbar/tabbar.tsx"],"names":["splitUrl","_url","url","pos","res","path","query","fragment","indexOf","substring","addLeadingSlash","charAt","hasBasename","prefix","RegExp","test","stripBasename","length","stripSuffix","suffix","includes","isAbsolute","pathname","spliceOne","list","index","i","k","n","pop","resolvePathname","to","from","undefined","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","concat","hasTrailingSlash","last","up","part","unshift","result","join","substr","TabbarItem","_b","_c","isSelected","textColor","iconPath","badgeText","_d","showRedDot","text","onSelect","className","classNames","weui-bar__item_on","badgeStyle","position","top","right","dotStyle","onClick","h","key","href","class","style","display","src","alt","color","indexCss","STATUS_SHOW","STATUS_HIDE","STATUS_SLIDEOUT","basicTabBarClassName","hideTabBarClassName","hideTabBarWithAnimationClassName","Tabbar","exports","class_1","hostRef","_this","this","homePage","customRoutes","tabbarPos","getOriginUrl","customRoute","filter","customUrl","pathA","pathB","getSelectedIndex","foundIndex","forEach","idx","pagePath","switchTab","selectedIndex","Taro","switchTabHandler","successHandler","errorHandler","currentUrl","getCurrentUrl","nextTab","errMsg","routerChangeHandler","options","_a","toLocation","currentPage","routerBasename","conf","basename","setTabBarBadgeHandler","__spreadArray","removeTabBarBadgeHandler","showTabBarRedDotHandler","hideTabBarRedDotHandler","showTabBarHandler","status","hideTabBarHandler","animation","setTabBarStyleHandler","selectedColor","backgroundColor","borderStyle","setTabBarItemHandler","selectedIconPath","Object","prototype","toString","call","Error","this_1","push","apply","map","p","item","routerMode","mode","window","location","hashIndex","processedUrl","decodeURI","bindEvent","eventCenter","on","removeEvent","off","componentDidLoad","tabbar","nextElementSibling","disconnectedCallback","render","containerCls","shouldHideTabBar","shouldSlideout","Host","height","bind"],"mappings":"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","sourcesContent":["export const normalizePath = url => {\n let _isRelative\n let _leadingParents = ''\n let _parent, _pos\n\n // handle relative paths\n if (url.charAt(0) !== '/') {\n _isRelative = true\n url = '/' + url\n }\n\n // handle relative files (as opposed to directories)\n if (url.substring(-3) === '/..' || url.slice(-2) === '/.') {\n url += '/'\n }\n\n // resolve simples\n url = url.replace(/(\\/(\\.\\/)+)|(\\/\\.$)/g, '/').replace(/\\/{2,}/g, '/')\n\n // remember leading parents\n if (_isRelative) {\n _leadingParents = url.substring(1).match(/^(\\.\\.\\/)+/) || ''\n if (_leadingParents) {\n _leadingParents = _leadingParents[0]\n }\n }\n\n // resolve parents\n while (true) {\n _parent = url.search(/\\/\\.\\.(\\/|$)/)\n if (_parent === -1) {\n // no more ../ to resolve\n break\n } else if (_parent === 0) {\n // top level cannot be relative, skip it\n url = url.substring(3)\n continue\n }\n\n _pos = url.substring(0, _parent).lastIndexOf('/')\n if (_pos === -1) {\n _pos = _parent\n }\n url = url.substring(0, _pos) + url.substring(_parent + 3)\n }\n\n // revert to relative\n if (_isRelative) {\n url = _leadingParents + url.substring(1)\n }\n\n return url\n}\n\nexport const splitUrl = _url => {\n let url = _url || ''\n let pos\n const res = {\n path: null,\n query: null,\n fragment: null\n }\n\n pos = url.indexOf('#')\n if (pos > -1) {\n res.fragment = url.substring(pos + 1)\n url = url.substring(0, pos)\n }\n\n pos = url.indexOf('?')\n if (pos > -1) {\n res.query = url.substring(pos + 1)\n url = url.substring(0, pos)\n }\n\n res.path = url\n\n return res\n}\n","// export const removeLeadingSlash = (str = '') => str.replace(/^\\.?\\//, '')\n// export const removeTrailingSearch = (str = '') => str.replace(/\\?[\\s\\S]*$/, '')\nexport const addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url);\nexport const hasBasename = (path = '', prefix = '') => new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path) || path === prefix;\nexport const stripBasename = (path = '', prefix = '') => hasBasename(path, prefix) ? path.substring(prefix.length) : path;\nexport const stripTrailing = (str = '') => str.replace(/[?#][\\s\\S]*$/, '');\nexport const stripSuffix = (path = '', suffix = '') => path.includes(suffix) ? path.substring(0, path.length - suffix.length) : path;\nexport const getHomePage = (path = '', basename = '', customRoutes = {}, entryPagePath = '') => {\n var _a;\n const routePath = addLeadingSlash(stripBasename(path, basename));\n const alias = ((_a = Object.entries(customRoutes).find(([key]) => key === routePath)) === null || _a === void 0 ? void 0 : _a[1]) || routePath;\n return entryPagePath || (typeof alias === 'string' ? alias : alias[0]) || basename;\n};\nclass RoutesAlias {\n constructor() {\n this.conf = [];\n this.getConfig = (url = '') => {\n const customRoute = this.conf.filter((arr) => {\n return arr.includes(url);\n });\n return customRoute[0];\n };\n this.getOrigin = (url = '') => {\n var _a;\n return ((_a = this.getConfig(url)) === null || _a === void 0 ? void 0 : _a[0]) || url;\n };\n this.getAlias = (url = '') => {\n var _a;\n return ((_a = this.getConfig(url)) === null || _a === void 0 ? void 0 : _a[1]) || url;\n };\n this.getAll = (url = '') => {\n return this.conf\n .filter((arr) => arr.includes(url))\n .reduceRight((p, a) => {\n p.unshift(a[1]);\n return p;\n }, []);\n };\n }\n set(customRoutes = {}) {\n for (let key in customRoutes) {\n const path = customRoutes[key];\n key = addLeadingSlash(key);\n if (typeof path === 'string') {\n this.conf.push([key, addLeadingSlash(path)]);\n }\n else if ((path === null || path === void 0 ? void 0 : path.length) > 0) {\n this.conf.push(...path.map(p => [key, addLeadingSlash(p)]));\n }\n }\n }\n}\nexport const routesAlias = new RoutesAlias();\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import classNames from 'classnames'\nimport { FunctionalComponent, h } from '@stencil/core'\n\ntype TabbarItemProps = {\n index: number\n isSelected?: boolean\n textColor?: string\n badgeText?: string\n iconPath: string\n showRedDot?: boolean\n text?: string\n onSelect: (index: number) => void\n}\n\nexport const TabbarItem: FunctionalComponent<TabbarItemProps> = ({\n index,\n isSelected = false,\n textColor,\n iconPath,\n badgeText,\n showRedDot = false,\n text,\n onSelect\n}) => {\n const className = classNames('weui-tabbar__item', {\n 'weui-bar__item_on': isSelected\n })\n const badgeStyle = {\n position: 'absolute',\n top: '-2px',\n right: '-13px'\n }\n const dotStyle = {\n position: 'absolute',\n top: '0',\n right: '-6px'\n }\n\n function onClick () {\n onSelect(index)\n }\n\n return (\n <a key={index} href='javascript:;' class={className} onClick={onClick}>\n <span style={{ display: 'inline-block', position: 'relative' }}>\n <img src={iconPath} alt='' class='weui-tabbar__icon' />\n {!!badgeText && (\n <span\n class='weui-badge taro-tabbar-badge'\n style={badgeStyle}>\n {badgeText}\n </span>\n )}\n {showRedDot && (\n <span\n class='weui-badge weui-badge_dot'\n style={dotStyle}\n />\n )}\n </span>\n <p class='weui-tabbar__label' style={{ color: textColor }}>\n {text}\n </p>\n </a>\n )\n}\n","html,\nbody {\n height: 100%;\n}\n\n#app {\n height: 100%;\n}\n\n.taro-tabbar {\n &__border {\n &-white {\n &::before {\n border-top-color: #fff !important;\n }\n }\n }\n\n &__container {\n display: flex;\n overflow: hidden;\n flex-direction: column;\n height: 100%;\n }\n\n &__panel {\n overflow: auto;\n position: relative;\n flex: 1;\n -webkit-overflow-scrolling: auto;\n }\n\n &__tabbar {\n position: relative;\n width: 100%;\n height: 50px;\n transition: bottom 0.2s, top 0.2s;\n\n &-top {\n top: 0;\n }\n\n &-bottom {\n bottom: 0;\n margin-bottom: constant(safe-area-inset-bottom);\n margin-bottom: env(safe-area-inset-bottom);\n }\n\n &-hide {\n display: none;\n }\n\n &-slideout {\n top: -52px;\n flex: 0 0;\n }\n }\n\n &__panel + &__tabbar-slideout {\n top: auto;\n bottom: -52px;\n }\n}\n","import { Component, Prop, h, ComponentInterface, Host, State, Event, EventEmitter, Element } from '@stencil/core'\nimport Taro from '@tarojs/taro'\nimport { addLeadingSlash, stripBasename, stripSuffix } from '@tarojs/router/dist/utils'\nimport { IH5RouterConfig } from '@tarojs/taro/types/compile'\nimport classNames from 'classnames'\nimport resolvePathname from 'resolve-pathname'\n\nimport { splitUrl } from '../../utils'\nimport { TabbarItem } from './tabbar-item'\n\nconst STATUS_SHOW = 0\nconst STATUS_HIDE = 1\nconst STATUS_SLIDEOUT = 2\n\nconst basicTabBarClassName = 'taro-tabbar__tabbar'\nconst hideTabBarClassName = 'taro-tabbar__tabbar-hide'\nconst hideTabBarWithAnimationClassName = 'taro-tabbar__tabbar-slideout'\n\ninterface RouterHandler {\n index: string\n text: string\n url: string\n successHandler: Function\n errorHandler: Function\n animation?: boolean\n}\n\nexport interface Conf {\n color: string\n selectedColor: string\n backgroundColor: string\n borderStyle?: 'black' | 'white'\n list: TabbarList[]\n position?: 'bottom' | 'top'\n custom: boolean\n customRoutes: Record<string, string | string[]>\n mode: IH5RouterConfig['mode']\n basename: string\n homePage: string\n currentPagename: string\n}\n\ninterface TabbarList {\n pagePath: string\n text: string\n iconPath?: string\n selectedIconPath?: string\n badgeText?: string\n showRedDot?: boolean\n}\n\n@Component({\n tag: 'taro-tabbar',\n styleUrl: './style/index.scss'\n})\nexport class Tabbar implements ComponentInterface {\n private homePage = ''\n\n private customRoutes: Array<string[]> = []\n\n private tabbarPos: 'top' | 'bottom' = 'bottom'\n\n @Prop() conf: Conf\n\n @State() list: TabbarList[]\n\n @State() borderStyle: Conf['borderStyle']\n\n @State() backgroundColor: Conf['backgroundColor']\n\n @State() color: Conf['color']\n\n @State() selectedColor: Conf['selectedColor']\n\n @State() selectedIndex = -1\n\n @State() status: 0 | 1 | 2 = STATUS_SHOW\n\n @Event({\n eventName: 'longpress'\n }) onLongPress: EventEmitter\n\n @Element() tabbar: HTMLDivElement\n\n constructor () {\n const list = this.conf.list\n const customRoutes = this.conf.customRoutes\n if (\n Object.prototype.toString.call(list) !== '[object Array]' ||\n list.length < 2 ||\n list.length > 5\n ) {\n throw new Error('tabBar 配置错误')\n }\n\n this.homePage = addLeadingSlash(this.conf.homePage)\n for (let key in customRoutes) {\n const path = customRoutes[key]\n key = addLeadingSlash(key)\n if (typeof path === 'string') {\n this.customRoutes.push([key, addLeadingSlash(path)])\n } else if (path?.length > 0) {\n this.customRoutes.push(...path.map(p => [key, addLeadingSlash(p)]))\n }\n }\n\n list.forEach(item => {\n if (item.pagePath.indexOf('/') !== 0) {\n item.pagePath = '/' + item.pagePath\n }\n })\n\n this.list = list\n this.borderStyle = this.conf.borderStyle\n this.backgroundColor = this.conf.backgroundColor\n this.color = this.conf.color\n this.selectedColor = this.conf.selectedColor\n }\n\n getCurrentUrl () {\n const routerMode = this.conf.mode\n const routerBasename = this.conf.basename || '/'\n let url\n if (routerMode === 'hash') {\n const href = window.location.href\n const hashIndex = href.indexOf('#')\n url = hashIndex === -1\n ? ''\n : href.substring(hashIndex + 1)\n } else {\n url = location.pathname\n }\n const processedUrl = addLeadingSlash(stripBasename(url, routerBasename))\n return decodeURI(processedUrl === '/' ? this.homePage : processedUrl)\n }\n\n getOriginUrl = (url: string) => {\n const customRoute = this.customRoutes.filter(([, customUrl]) => {\n const pathA = splitUrl(customUrl).path\n const pathB = splitUrl(url).path\n return pathA === pathB\n })\n return stripSuffix(customRoute.length ? customRoute[0][0] : url, '.html')\n }\n\n getSelectedIndex = (url: string) => {\n let foundIndex = -1\n this.list.forEach(({ pagePath }, idx) => {\n const pathA = splitUrl(url).path\n const pathB = splitUrl(pagePath).path\n if (pathA === pathB) {\n foundIndex = idx\n }\n })\n return foundIndex\n }\n\n switchTab = (index: number) => {\n this.selectedIndex = index\n Taro.switchTab({\n url: this.list[index].pagePath\n })\n }\n\n switchTabHandler = ({ url, successHandler, errorHandler }: RouterHandler) => {\n const currentUrl = this.getOriginUrl(this.getCurrentUrl() || this.homePage)\n const nextTab = resolvePathname(url, currentUrl)\n const foundIndex = this.getSelectedIndex(nextTab)\n\n if (foundIndex > -1) {\n this.switchTab(foundIndex)\n successHandler({\n errMsg: 'switchTab:ok'\n })\n } else {\n errorHandler({\n errMsg: `switchTab:fail page \"${nextTab}\" is not found`\n })\n }\n }\n\n routerChangeHandler = (options?) => {\n const to = options?.toLocation?.path\n let currentPage\n\n if (typeof to === 'string') {\n const routerBasename = this.conf.basename || '/'\n currentPage = stripBasename(addLeadingSlash(to || this.homePage), routerBasename) || '/'\n } else {\n currentPage = this.getCurrentUrl()\n }\n\n this.selectedIndex = this.getSelectedIndex(this.getOriginUrl(currentPage))\n }\n\n setTabBarBadgeHandler = ({ index, text, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].showRedDot = false\n list[index].badgeText = text\n successHandler({\n errMsg: 'setTabBarBadge:ok'\n })\n } else {\n errorHandler({\n errMsg: 'setTabBarBadge:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n removeTabBarBadgeHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].badgeText = null\n list[index].badgeText = null\n successHandler({\n errMsg: 'removeTabBarBadge:ok'\n })\n } else {\n errorHandler({\n errMsg: 'removeTabBarBadge:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n showTabBarRedDotHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].badgeText = null\n list[index].showRedDot = true\n successHandler({\n errMsg: 'showTabBarRedDot:ok'\n })\n } else {\n errorHandler({\n errMsg: 'showTabBarRedDot:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n hideTabBarRedDotHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].showRedDot = false\n successHandler({\n errMsg: 'hideTabBarRedDot:ok'\n })\n } else {\n errorHandler({\n errMsg: 'hideTabBarRedDot:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n showTabBarHandler = ({ successHandler }) => {\n this.status = STATUS_SHOW\n successHandler({\n errMsg: 'showTabBar:ok'\n })\n }\n\n hideTabBarHandler = ({ animation, successHandler }) => {\n this.status = animation ? STATUS_SLIDEOUT : STATUS_HIDE\n successHandler({\n errMsg: 'hideTabBar:ok'\n })\n }\n\n setTabBarStyleHandler = ({ color, selectedColor, backgroundColor, borderStyle, successHandler }) => {\n if (backgroundColor) this.backgroundColor = backgroundColor\n if (borderStyle) this.borderStyle = borderStyle\n if (color) this.color = color\n if (selectedColor) this.selectedColor = selectedColor\n successHandler({\n errMsg: 'setTabBarStyle:ok'\n })\n }\n\n setTabBarItemHandler = ({ index, iconPath, selectedIconPath, text, successHandler, errorHandler }) => {\n const list = [...this.list]\n if (index in list) {\n if (iconPath) list[index].iconPath = iconPath\n if (selectedIconPath) list[index].selectedIconPath = selectedIconPath\n if (text) list[index].text = text\n successHandler({\n errMsg: 'setTabBarItem:ok'\n })\n } else {\n errorHandler({\n errMsg: 'setTabBarItem:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n bindEvent () {\n Taro.eventCenter.on('__taroRouterChange', this.routerChangeHandler)\n Taro.eventCenter.on('__taroSwitchTab', this.switchTabHandler)\n Taro.eventCenter.on('__taroSetTabBarBadge', this.setTabBarBadgeHandler)\n Taro.eventCenter.on('__taroRemoveTabBarBadge', this.removeTabBarBadgeHandler)\n Taro.eventCenter.on('__taroShowTabBarRedDotHandler', this.showTabBarRedDotHandler)\n Taro.eventCenter.on('__taroHideTabBarRedDotHandler', this.hideTabBarRedDotHandler)\n Taro.eventCenter.on('__taroShowTabBar', this.showTabBarHandler)\n Taro.eventCenter.on('__taroHideTabBar', this.hideTabBarHandler)\n Taro.eventCenter.on('__taroSetTabBarStyle', this.setTabBarStyleHandler)\n Taro.eventCenter.on('__taroSetTabBarItem', this.setTabBarItemHandler)\n }\n\n removeEvent () {\n Taro.eventCenter.off('__taroRouterChange', this.routerChangeHandler)\n Taro.eventCenter.off('__taroSwitchTab', this.switchTabHandler)\n Taro.eventCenter.off('__taroSetTabBarBadge', this.setTabBarBadgeHandler)\n Taro.eventCenter.off('__taroRemoveTabBarBadge', this.removeTabBarBadgeHandler)\n Taro.eventCenter.off('__taroShowTabBarRedDotHandler', this.showTabBarRedDotHandler)\n Taro.eventCenter.off('__taroHideTabBarRedDotHandler', this.hideTabBarRedDotHandler)\n Taro.eventCenter.off('__taroShowTabBar', this.showTabBarHandler)\n Taro.eventCenter.off('__taroHideTabBar', this.hideTabBarHandler)\n Taro.eventCenter.off('__taroSetTabBarStyle', this.setTabBarStyleHandler)\n Taro.eventCenter.off('__taroSetTabBarItem', this.setTabBarItemHandler)\n }\n\n componentDidLoad () {\n this.tabbarPos = this.tabbar.nextElementSibling ? 'top' : 'bottom'\n this.bindEvent()\n this.routerChangeHandler()\n }\n\n disconnectedCallback () {\n this.removeEvent()\n }\n\n render () {\n const { tabbarPos = 'bottom' } = this\n const status = this.status\n const containerCls = classNames('weui-tabbar', {\n [`taro-tabbar__border-${this.borderStyle || 'black'}`]: true\n })\n const shouldHideTabBar = this.selectedIndex === -1 || status === STATUS_HIDE\n const shouldSlideout = status === STATUS_SLIDEOUT\n\n return (\n <Host\n class={classNames(\n basicTabBarClassName,\n `${basicTabBarClassName}-${tabbarPos}`, {\n [hideTabBarClassName]: shouldHideTabBar,\n [hideTabBarWithAnimationClassName]: shouldSlideout\n })} >\n <div\n class={containerCls}\n style={{\n backgroundColor: this.backgroundColor || '',\n height: 'inherit'\n }}\n >\n {this.list.map((item, index) => {\n const isSelected = this.selectedIndex === index\n let textColor\n let iconPath\n if (isSelected) {\n textColor = this.selectedColor || ''\n iconPath = item.selectedIconPath\n } else {\n textColor = this.color || ''\n iconPath = item.iconPath\n }\n return (\n <TabbarItem\n index={index}\n onSelect={this.switchTab.bind(this)}\n isSelected={isSelected}\n textColor={textColor}\n iconPath={iconPath}\n text={item.text}\n badgeText={item.badgeText}\n showRedDot={item.showRedDot}\n />\n )\n })}\n </div>\n </Host>\n )\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["src/utils/url.ts","../taro-router/dist/utils/index.js","../../node_modules/.pnpm/registry.npmjs.org+resolve-pathname@3.0.0/node_modules/resolve-pathname/esm/resolve-pathname.js","src/components/tabbar/tabbar-item.tsx","src/components/tabbar/style/index.scss?tag=taro-tabbar","src/components/tabbar/tabbar.tsx"],"names":["splitUrl","_url","url","pos","res","path","query","fragment","indexOf","substring","addLeadingSlash","charAt","hasBasename","prefix","RegExp","test","stripBasename","length","stripSuffix","suffix","includes","isAbsolute","pathname","spliceOne","list","index","i","k","n","pop","resolvePathname","to","from","undefined","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","concat","hasTrailingSlash","last","up","part","unshift","result","join","substr","TabbarItem","isSelected","textColor","iconPath","badgeText","showRedDot","text","onSelect","className","classNames","weui-bar__item_on","badgeStyle","position","top","right","dotStyle","onClick","h","key","href","class","style","display","src","alt","color","indexCss","STATUS_SHOW","STATUS_HIDE","STATUS_SLIDEOUT","basicTabBarClassName","hideTabBarClassName","hideTabBarWithAnimationClassName","Tabbar","[object Object]","hostRef","this","homePage","customRoutes","tabbarPos","getOriginUrl","customRoute","filter","customUrl","pathA","pathB","getSelectedIndex","foundIndex","forEach","pagePath","idx","switchTab","selectedIndex","Taro","switchTabHandler","successHandler","errorHandler","currentUrl","getCurrentUrl","nextTab","errMsg","routerChangeHandler","options","_a","toLocation","currentPage","routerBasename","conf","basename","setTabBarBadgeHandler","removeTabBarBadgeHandler","showTabBarRedDotHandler","hideTabBarRedDotHandler","showTabBarHandler","status","hideTabBarHandler","animation","setTabBarStyleHandler","selectedColor","backgroundColor","borderStyle","setTabBarItemHandler","selectedIconPath","Object","prototype","toString","call","Error","push","map","p","item","routerMode","mode","window","location","hashIndex","processedUrl","decodeURI","eventCenter","on","off","tabbar","nextElementSibling","bindEvent","removeEvent","containerCls","shouldHideTabBar","shouldSlideout","Host","height","bind"],"mappings":"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","sourcesContent":["export const normalizePath = url => {\n let _isRelative\n let _leadingParents = ''\n let _parent, _pos\n\n // handle relative paths\n if (url.charAt(0) !== '/') {\n _isRelative = true\n url = '/' + url\n }\n\n // handle relative files (as opposed to directories)\n if (url.substring(-3) === '/..' || url.slice(-2) === '/.') {\n url += '/'\n }\n\n // resolve simples\n url = url.replace(/(\\/(\\.\\/)+)|(\\/\\.$)/g, '/').replace(/\\/{2,}/g, '/')\n\n // remember leading parents\n if (_isRelative) {\n _leadingParents = url.substring(1).match(/^(\\.\\.\\/)+/) || ''\n if (_leadingParents) {\n _leadingParents = _leadingParents[0]\n }\n }\n\n // resolve parents\n while (true) {\n _parent = url.search(/\\/\\.\\.(\\/|$)/)\n if (_parent === -1) {\n // no more ../ to resolve\n break\n } else if (_parent === 0) {\n // top level cannot be relative, skip it\n url = url.substring(3)\n continue\n }\n\n _pos = url.substring(0, _parent).lastIndexOf('/')\n if (_pos === -1) {\n _pos = _parent\n }\n url = url.substring(0, _pos) + url.substring(_parent + 3)\n }\n\n // revert to relative\n if (_isRelative) {\n url = _leadingParents + url.substring(1)\n }\n\n return url\n}\n\nexport const splitUrl = _url => {\n let url = _url || ''\n let pos\n const res = {\n path: null,\n query: null,\n fragment: null\n }\n\n pos = url.indexOf('#')\n if (pos > -1) {\n res.fragment = url.substring(pos + 1)\n url = url.substring(0, pos)\n }\n\n pos = url.indexOf('?')\n if (pos > -1) {\n res.query = url.substring(pos + 1)\n url = url.substring(0, pos)\n }\n\n res.path = url\n\n return res\n}\n","// export const removeLeadingSlash = (str = '') => str.replace(/^\\.?\\//, '')\n// export const removeTrailingSearch = (str = '') => str.replace(/\\?[\\s\\S]*$/, '')\nexport const addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url);\nexport const hasBasename = (path = '', prefix = '') => new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path) || path === prefix;\nexport const stripBasename = (path = '', prefix = '') => hasBasename(path, prefix) ? path.substring(prefix.length) : path;\nexport const stripTrailing = (str = '') => str.replace(/[?#][\\s\\S]*$/, '');\nexport const stripSuffix = (path = '', suffix = '') => path.includes(suffix) ? path.substring(0, path.length - suffix.length) : path;\nclass RoutesAlias {\n constructor() {\n this.conf = [];\n this.getConfig = (url = '') => {\n const customRoute = this.conf.filter((arr) => {\n return arr.includes(url);\n });\n return customRoute[0];\n };\n this.getOrigin = (url = '') => {\n var _a;\n return ((_a = this.getConfig(url)) === null || _a === void 0 ? void 0 : _a[0]) || url;\n };\n this.getAlias = (url = '') => {\n var _a;\n return ((_a = this.getConfig(url)) === null || _a === void 0 ? void 0 : _a[1]) || url;\n };\n this.getAll = (url = '') => {\n return this.conf\n .filter((arr) => arr.includes(url))\n .reduceRight((p, a) => {\n p.unshift(a[1]);\n return p;\n }, []);\n };\n }\n set(customRoutes = {}) {\n for (let key in customRoutes) {\n const path = customRoutes[key];\n key = addLeadingSlash(key);\n if (typeof path === 'string') {\n this.conf.push([key, addLeadingSlash(path)]);\n }\n else if ((path === null || path === void 0 ? void 0 : path.length) > 0) {\n this.conf.push(...path.map(p => [key, addLeadingSlash(p)]));\n }\n }\n }\n}\nexport const routesAlias = new RoutesAlias();\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import classNames from 'classnames'\nimport { FunctionalComponent, h } from '@stencil/core'\n\ntype TabbarItemProps = {\n index: number\n isSelected?: boolean\n textColor?: string\n badgeText?: string\n iconPath: string\n showRedDot?: boolean\n text?: string\n onSelect: (index: number) => void\n}\n\nexport const TabbarItem: FunctionalComponent<TabbarItemProps> = ({\n index,\n isSelected = false,\n textColor,\n iconPath,\n badgeText,\n showRedDot = false,\n text,\n onSelect\n}) => {\n const className = classNames('weui-tabbar__item', {\n 'weui-bar__item_on': isSelected\n })\n const badgeStyle = {\n position: 'absolute',\n top: '-2px',\n right: '-13px'\n }\n const dotStyle = {\n position: 'absolute',\n top: '0',\n right: '-6px'\n }\n\n function onClick () {\n onSelect(index)\n }\n\n return (\n <a key={index} href='javascript:;' class={className} onClick={onClick}>\n <span style={{ display: 'inline-block', position: 'relative' }}>\n <img src={iconPath} alt='' class='weui-tabbar__icon' />\n {!!badgeText && (\n <span\n class='weui-badge taro-tabbar-badge'\n style={badgeStyle}>\n {badgeText}\n </span>\n )}\n {showRedDot && (\n <span\n class='weui-badge weui-badge_dot'\n style={dotStyle}\n />\n )}\n </span>\n <p class='weui-tabbar__label' style={{ color: textColor }}>\n {text}\n </p>\n </a>\n )\n}\n","html,\nbody {\n height: 100%;\n}\n\n#app {\n height: 100%;\n}\n\n.taro-tabbar {\n &__border {\n &-white {\n &::before {\n border-top-color: #fff !important;\n }\n }\n }\n\n &__container {\n display: flex;\n overflow: hidden;\n flex-direction: column;\n height: 100%;\n }\n\n &__panel {\n overflow: auto;\n position: relative;\n flex: 1;\n -webkit-overflow-scrolling: auto;\n }\n\n &__tabbar {\n position: relative;\n width: 100%;\n height: 50px;\n transition: bottom 0.2s, top 0.2s;\n\n &-top {\n top: 0;\n }\n\n &-bottom {\n bottom: 0;\n margin-bottom: constant(safe-area-inset-bottom);\n margin-bottom: env(safe-area-inset-bottom);\n }\n\n &-hide {\n display: none;\n }\n\n &-slideout {\n top: -52px;\n flex: 0 0;\n }\n }\n\n &__panel + &__tabbar-slideout {\n top: auto;\n bottom: -52px;\n }\n}\n","import { Component, Prop, h, ComponentInterface, Host, State, Event, EventEmitter, Element } from '@stencil/core'\nimport Taro from '@tarojs/taro'\nimport { addLeadingSlash, stripBasename, stripSuffix } from '@tarojs/router/dist/utils'\nimport { IH5RouterConfig } from '@tarojs/taro/types/compile'\nimport classNames from 'classnames'\nimport resolvePathname from 'resolve-pathname'\n\nimport { splitUrl } from '../../utils'\nimport { TabbarItem } from './tabbar-item'\n\nconst STATUS_SHOW = 0\nconst STATUS_HIDE = 1\nconst STATUS_SLIDEOUT = 2\n\nconst basicTabBarClassName = 'taro-tabbar__tabbar'\nconst hideTabBarClassName = 'taro-tabbar__tabbar-hide'\nconst hideTabBarWithAnimationClassName = 'taro-tabbar__tabbar-slideout'\n\ninterface RouterHandler {\n index: string\n text: string\n url: string\n successHandler: Function\n errorHandler: Function\n animation?: boolean\n}\n\nexport interface Conf {\n color: string\n selectedColor: string\n backgroundColor: string\n borderStyle?: 'black' | 'white'\n list: TabbarList[]\n position?: 'bottom' | 'top'\n custom: boolean\n customRoutes: Record<string, string | string[]>\n mode: IH5RouterConfig['mode']\n basename: string\n homePage: string\n currentPagename: string\n}\n\ninterface TabbarList {\n pagePath: string\n text: string\n iconPath?: string\n selectedIconPath?: string\n badgeText?: string\n showRedDot?: boolean\n}\n\n@Component({\n tag: 'taro-tabbar',\n styleUrl: './style/index.scss'\n})\nexport class Tabbar implements ComponentInterface {\n private homePage = ''\n\n private customRoutes: Array<string[]> = []\n\n private tabbarPos: 'top' | 'bottom' = 'bottom'\n\n @Prop() conf: Conf\n\n @State() list: TabbarList[]\n\n @State() borderStyle: Conf['borderStyle']\n\n @State() backgroundColor: Conf['backgroundColor']\n\n @State() color: Conf['color']\n\n @State() selectedColor: Conf['selectedColor']\n\n @State() selectedIndex = -1\n\n @State() status: 0 | 1 | 2 = STATUS_SHOW\n\n @Event({\n eventName: 'longpress'\n }) onLongPress: EventEmitter\n\n @Element() tabbar: HTMLDivElement\n\n constructor () {\n const list = this.conf.list\n const customRoutes = this.conf.customRoutes\n if (\n Object.prototype.toString.call(list) !== '[object Array]' ||\n list.length < 2 ||\n list.length > 5\n ) {\n throw new Error('tabBar 配置错误')\n }\n\n this.homePage = addLeadingSlash(this.conf.homePage)\n for (let key in customRoutes) {\n const path = customRoutes[key]\n key = addLeadingSlash(key)\n if (typeof path === 'string') {\n this.customRoutes.push([key, addLeadingSlash(path)])\n } else if (path?.length > 0) {\n this.customRoutes.push(...path.map(p => [key, addLeadingSlash(p)]))\n }\n }\n\n list.forEach(item => {\n if (item.pagePath.indexOf('/') !== 0) {\n item.pagePath = '/' + item.pagePath\n }\n })\n\n this.list = list\n this.borderStyle = this.conf.borderStyle\n this.backgroundColor = this.conf.backgroundColor\n this.color = this.conf.color\n this.selectedColor = this.conf.selectedColor\n }\n\n getCurrentUrl () {\n const routerMode = this.conf.mode\n const routerBasename = this.conf.basename || '/'\n let url\n if (routerMode === 'hash') {\n const href = window.location.href\n const hashIndex = href.indexOf('#')\n url = hashIndex === -1\n ? ''\n : href.substring(hashIndex + 1)\n } else {\n url = location.pathname\n }\n const processedUrl = addLeadingSlash(stripBasename(url, routerBasename))\n return decodeURI(processedUrl === '/' ? this.homePage : processedUrl)\n }\n\n getOriginUrl = (url: string) => {\n const customRoute = this.customRoutes.filter(([, customUrl]) => {\n const pathA = splitUrl(customUrl).path\n const pathB = splitUrl(url).path\n return pathA === pathB\n })\n return stripSuffix(customRoute.length ? customRoute[0][0] : url, '.html')\n }\n\n getSelectedIndex = (url: string) => {\n let foundIndex = -1\n this.list.forEach(({ pagePath }, idx) => {\n const pathA = splitUrl(url).path\n const pathB = splitUrl(pagePath).path\n if (pathA === pathB) {\n foundIndex = idx\n }\n })\n return foundIndex\n }\n\n switchTab = (index: number) => {\n this.selectedIndex = index\n Taro.switchTab({\n url: this.list[index].pagePath\n })\n }\n\n switchTabHandler = ({ url, successHandler, errorHandler }: RouterHandler) => {\n const currentUrl = this.getOriginUrl(this.getCurrentUrl() || this.homePage)\n const nextTab = resolvePathname(url, currentUrl)\n const foundIndex = this.getSelectedIndex(nextTab)\n\n if (foundIndex > -1) {\n this.switchTab(foundIndex)\n successHandler({\n errMsg: 'switchTab:ok'\n })\n } else {\n errorHandler({\n errMsg: `switchTab:fail page \"${nextTab}\" is not found`\n })\n }\n }\n\n routerChangeHandler = (options?) => {\n const to = options?.toLocation?.path\n let currentPage\n\n if (typeof to === 'string') {\n const routerBasename = this.conf.basename || '/'\n currentPage = stripBasename(addLeadingSlash(to || this.homePage), routerBasename) || '/'\n } else {\n currentPage = this.getCurrentUrl()\n }\n\n this.selectedIndex = this.getSelectedIndex(this.getOriginUrl(currentPage))\n }\n\n setTabBarBadgeHandler = ({ index, text, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].showRedDot = false\n list[index].badgeText = text\n successHandler({\n errMsg: 'setTabBarBadge:ok'\n })\n } else {\n errorHandler({\n errMsg: 'setTabBarBadge:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n removeTabBarBadgeHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].badgeText = null\n list[index].badgeText = null\n successHandler({\n errMsg: 'removeTabBarBadge:ok'\n })\n } else {\n errorHandler({\n errMsg: 'removeTabBarBadge:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n showTabBarRedDotHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].badgeText = null\n list[index].showRedDot = true\n successHandler({\n errMsg: 'showTabBarRedDot:ok'\n })\n } else {\n errorHandler({\n errMsg: 'showTabBarRedDot:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n hideTabBarRedDotHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].showRedDot = false\n successHandler({\n errMsg: 'hideTabBarRedDot:ok'\n })\n } else {\n errorHandler({\n errMsg: 'hideTabBarRedDot:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n showTabBarHandler = ({ successHandler }) => {\n this.status = STATUS_SHOW\n successHandler({\n errMsg: 'showTabBar:ok'\n })\n }\n\n hideTabBarHandler = ({ animation, successHandler }) => {\n this.status = animation ? STATUS_SLIDEOUT : STATUS_HIDE\n successHandler({\n errMsg: 'hideTabBar:ok'\n })\n }\n\n setTabBarStyleHandler = ({ color, selectedColor, backgroundColor, borderStyle, successHandler }) => {\n if (backgroundColor) this.backgroundColor = backgroundColor\n if (borderStyle) this.borderStyle = borderStyle\n if (color) this.color = color\n if (selectedColor) this.selectedColor = selectedColor\n successHandler({\n errMsg: 'setTabBarStyle:ok'\n })\n }\n\n setTabBarItemHandler = ({ index, iconPath, selectedIconPath, text, successHandler, errorHandler }) => {\n const list = [...this.list]\n if (index in list) {\n if (iconPath) list[index].iconPath = iconPath\n if (selectedIconPath) list[index].selectedIconPath = selectedIconPath\n if (text) list[index].text = text\n successHandler({\n errMsg: 'setTabBarItem:ok'\n })\n } else {\n errorHandler({\n errMsg: 'setTabBarItem:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n bindEvent () {\n Taro.eventCenter.on('__taroRouterChange', this.routerChangeHandler)\n Taro.eventCenter.on('__taroSwitchTab', this.switchTabHandler)\n Taro.eventCenter.on('__taroSetTabBarBadge', this.setTabBarBadgeHandler)\n Taro.eventCenter.on('__taroRemoveTabBarBadge', this.removeTabBarBadgeHandler)\n Taro.eventCenter.on('__taroShowTabBarRedDotHandler', this.showTabBarRedDotHandler)\n Taro.eventCenter.on('__taroHideTabBarRedDotHandler', this.hideTabBarRedDotHandler)\n Taro.eventCenter.on('__taroShowTabBar', this.showTabBarHandler)\n Taro.eventCenter.on('__taroHideTabBar', this.hideTabBarHandler)\n Taro.eventCenter.on('__taroSetTabBarStyle', this.setTabBarStyleHandler)\n Taro.eventCenter.on('__taroSetTabBarItem', this.setTabBarItemHandler)\n }\n\n removeEvent () {\n Taro.eventCenter.off('__taroRouterChange', this.routerChangeHandler)\n Taro.eventCenter.off('__taroSwitchTab', this.switchTabHandler)\n Taro.eventCenter.off('__taroSetTabBarBadge', this.setTabBarBadgeHandler)\n Taro.eventCenter.off('__taroRemoveTabBarBadge', this.removeTabBarBadgeHandler)\n Taro.eventCenter.off('__taroShowTabBarRedDotHandler', this.showTabBarRedDotHandler)\n Taro.eventCenter.off('__taroHideTabBarRedDotHandler', this.hideTabBarRedDotHandler)\n Taro.eventCenter.off('__taroShowTabBar', this.showTabBarHandler)\n Taro.eventCenter.off('__taroHideTabBar', this.hideTabBarHandler)\n Taro.eventCenter.off('__taroSetTabBarStyle', this.setTabBarStyleHandler)\n Taro.eventCenter.off('__taroSetTabBarItem', this.setTabBarItemHandler)\n }\n\n componentDidLoad () {\n this.tabbarPos = this.tabbar.nextElementSibling ? 'top' : 'bottom'\n this.bindEvent()\n this.routerChangeHandler()\n }\n\n disconnectedCallback () {\n this.removeEvent()\n }\n\n render () {\n const { tabbarPos = 'bottom' } = this\n const status = this.status\n const containerCls = classNames('weui-tabbar', {\n [`taro-tabbar__border-${this.borderStyle || 'black'}`]: true\n })\n const shouldHideTabBar = this.selectedIndex === -1 || status === STATUS_HIDE\n const shouldSlideout = status === STATUS_SLIDEOUT\n\n return (\n <Host\n class={classNames(\n basicTabBarClassName,\n `${basicTabBarClassName}-${tabbarPos}`, {\n [hideTabBarClassName]: shouldHideTabBar,\n [hideTabBarWithAnimationClassName]: shouldSlideout\n })} >\n <div\n class={containerCls}\n style={{\n backgroundColor: this.backgroundColor || '',\n height: 'inherit'\n }}\n >\n {this.list.map((item, index) => {\n const isSelected = this.selectedIndex === index\n let textColor\n let iconPath\n if (isSelected) {\n textColor = this.selectedColor || ''\n iconPath = item.selectedIconPath\n } else {\n textColor = this.color || ''\n iconPath = item.iconPath\n }\n return (\n <TabbarItem\n index={index}\n onSelect={this.switchTab.bind(this)}\n isSelected={isSelected}\n textColor={textColor}\n iconPath={iconPath}\n text={item.text}\n badgeText={item.badgeText}\n showRedDot={item.showRedDot}\n />\n )\n })}\n </div>\n </Host>\n )\n }\n}\n"]}
1
+ {"version":3,"sources":["src/utils/url.ts","../taro-router/dist/utils/index.js","../../node_modules/.pnpm/registry.npmjs.org+resolve-pathname@3.0.0/node_modules/resolve-pathname/esm/resolve-pathname.js","src/components/tabbar/tabbar-item.tsx","src/components/tabbar/style/index.scss?tag=taro-tabbar","src/components/tabbar/tabbar.tsx"],"names":["splitUrl","_url","url","pos","res","path","query","fragment","indexOf","substring","addLeadingSlash","charAt","hasBasename","prefix","RegExp","test","stripBasename","length","stripSuffix","suffix","includes","isAbsolute","pathname","spliceOne","list","index","i","k","n","pop","resolvePathname","to","from","undefined","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","concat","hasTrailingSlash","last","up","part","unshift","result","join","substr","TabbarItem","isSelected","textColor","iconPath","badgeText","showRedDot","text","onSelect","className","classNames","weui-bar__item_on","badgeStyle","position","top","right","dotStyle","onClick","h","key","href","class","style","display","src","alt","color","indexCss","STATUS_SHOW","STATUS_HIDE","STATUS_SLIDEOUT","basicTabBarClassName","hideTabBarClassName","hideTabBarWithAnimationClassName","Tabbar","[object Object]","hostRef","this","homePage","customRoutes","tabbarPos","getOriginUrl","customRoute","filter","customUrl","pathA","pathB","getSelectedIndex","foundIndex","forEach","pagePath","idx","switchTab","selectedIndex","Taro","switchTabHandler","successHandler","errorHandler","currentUrl","getCurrentUrl","nextTab","errMsg","routerChangeHandler","options","_a","toLocation","currentPage","routerBasename","conf","basename","setTabBarBadgeHandler","removeTabBarBadgeHandler","showTabBarRedDotHandler","hideTabBarRedDotHandler","showTabBarHandler","status","hideTabBarHandler","animation","setTabBarStyleHandler","selectedColor","backgroundColor","borderStyle","setTabBarItemHandler","selectedIconPath","Object","prototype","toString","call","Error","push","map","p","item","routerMode","mode","window","location","hashIndex","processedUrl","decodeURI","eventCenter","on","off","tabbar","nextElementSibling","bindEvent","removeEvent","containerCls","shouldHideTabBar","shouldSlideout","Host","height","bind"],"mappings":"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","sourcesContent":["export const normalizePath = url => {\n let _isRelative\n let _leadingParents = ''\n let _parent, _pos\n\n // handle relative paths\n if (url.charAt(0) !== '/') {\n _isRelative = true\n url = '/' + url\n }\n\n // handle relative files (as opposed to directories)\n if (url.substring(-3) === '/..' || url.slice(-2) === '/.') {\n url += '/'\n }\n\n // resolve simples\n url = url.replace(/(\\/(\\.\\/)+)|(\\/\\.$)/g, '/').replace(/\\/{2,}/g, '/')\n\n // remember leading parents\n if (_isRelative) {\n _leadingParents = url.substring(1).match(/^(\\.\\.\\/)+/) || ''\n if (_leadingParents) {\n _leadingParents = _leadingParents[0]\n }\n }\n\n // resolve parents\n while (true) {\n _parent = url.search(/\\/\\.\\.(\\/|$)/)\n if (_parent === -1) {\n // no more ../ to resolve\n break\n } else if (_parent === 0) {\n // top level cannot be relative, skip it\n url = url.substring(3)\n continue\n }\n\n _pos = url.substring(0, _parent).lastIndexOf('/')\n if (_pos === -1) {\n _pos = _parent\n }\n url = url.substring(0, _pos) + url.substring(_parent + 3)\n }\n\n // revert to relative\n if (_isRelative) {\n url = _leadingParents + url.substring(1)\n }\n\n return url\n}\n\nexport const splitUrl = _url => {\n let url = _url || ''\n let pos\n const res = {\n path: null,\n query: null,\n fragment: null\n }\n\n pos = url.indexOf('#')\n if (pos > -1) {\n res.fragment = url.substring(pos + 1)\n url = url.substring(0, pos)\n }\n\n pos = url.indexOf('?')\n if (pos > -1) {\n res.query = url.substring(pos + 1)\n url = url.substring(0, pos)\n }\n\n res.path = url\n\n return res\n}\n","// export const removeLeadingSlash = (str = '') => str.replace(/^\\.?\\//, '')\n// export const removeTrailingSearch = (str = '') => str.replace(/\\?[\\s\\S]*$/, '')\nexport const addLeadingSlash = (url = '') => (url.charAt(0) === '/' ? url : '/' + url);\nexport const hasBasename = (path = '', prefix = '') => new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path) || path === prefix;\nexport const stripBasename = (path = '', prefix = '') => hasBasename(path, prefix) ? path.substring(prefix.length) : path;\nexport const stripTrailing = (str = '') => str.replace(/[?#][\\s\\S]*$/, '');\nexport const stripSuffix = (path = '', suffix = '') => path.includes(suffix) ? path.substring(0, path.length - suffix.length) : path;\nexport const getHomePage = (path = '', basename = '', customRoutes = {}, entryPagePath = '') => {\n var _a;\n const routePath = addLeadingSlash(stripBasename(path, basename));\n const alias = ((_a = Object.entries(customRoutes).find(([key]) => key === routePath)) === null || _a === void 0 ? void 0 : _a[1]) || routePath;\n return entryPagePath || (typeof alias === 'string' ? alias : alias[0]) || basename;\n};\nclass RoutesAlias {\n constructor() {\n this.conf = [];\n this.getConfig = (url = '') => {\n const customRoute = this.conf.filter((arr) => {\n return arr.includes(url);\n });\n return customRoute[0];\n };\n this.getOrigin = (url = '') => {\n var _a;\n return ((_a = this.getConfig(url)) === null || _a === void 0 ? void 0 : _a[0]) || url;\n };\n this.getAlias = (url = '') => {\n var _a;\n return ((_a = this.getConfig(url)) === null || _a === void 0 ? void 0 : _a[1]) || url;\n };\n this.getAll = (url = '') => {\n return this.conf\n .filter((arr) => arr.includes(url))\n .reduceRight((p, a) => {\n p.unshift(a[1]);\n return p;\n }, []);\n };\n }\n set(customRoutes = {}) {\n for (let key in customRoutes) {\n const path = customRoutes[key];\n key = addLeadingSlash(key);\n if (typeof path === 'string') {\n this.conf.push([key, addLeadingSlash(path)]);\n }\n else if ((path === null || path === void 0 ? void 0 : path.length) > 0) {\n this.conf.push(...path.map(p => [key, addLeadingSlash(p)]));\n }\n }\n }\n}\nexport const routesAlias = new RoutesAlias();\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import classNames from 'classnames'\nimport { FunctionalComponent, h } from '@stencil/core'\n\ntype TabbarItemProps = {\n index: number\n isSelected?: boolean\n textColor?: string\n badgeText?: string\n iconPath: string\n showRedDot?: boolean\n text?: string\n onSelect: (index: number) => void\n}\n\nexport const TabbarItem: FunctionalComponent<TabbarItemProps> = ({\n index,\n isSelected = false,\n textColor,\n iconPath,\n badgeText,\n showRedDot = false,\n text,\n onSelect\n}) => {\n const className = classNames('weui-tabbar__item', {\n 'weui-bar__item_on': isSelected\n })\n const badgeStyle = {\n position: 'absolute',\n top: '-2px',\n right: '-13px'\n }\n const dotStyle = {\n position: 'absolute',\n top: '0',\n right: '-6px'\n }\n\n function onClick () {\n onSelect(index)\n }\n\n return (\n <a key={index} href='javascript:;' class={className} onClick={onClick}>\n <span style={{ display: 'inline-block', position: 'relative' }}>\n <img src={iconPath} alt='' class='weui-tabbar__icon' />\n {!!badgeText && (\n <span\n class='weui-badge taro-tabbar-badge'\n style={badgeStyle}>\n {badgeText}\n </span>\n )}\n {showRedDot && (\n <span\n class='weui-badge weui-badge_dot'\n style={dotStyle}\n />\n )}\n </span>\n <p class='weui-tabbar__label' style={{ color: textColor }}>\n {text}\n </p>\n </a>\n )\n}\n","html,\nbody {\n height: 100%;\n}\n\n#app {\n height: 100%;\n}\n\n.taro-tabbar {\n &__border {\n &-white {\n &::before {\n border-top-color: #fff !important;\n }\n }\n }\n\n &__container {\n display: flex;\n overflow: hidden;\n flex-direction: column;\n height: 100%;\n }\n\n &__panel {\n overflow: auto;\n position: relative;\n flex: 1;\n -webkit-overflow-scrolling: auto;\n }\n\n &__tabbar {\n position: relative;\n width: 100%;\n height: 50px;\n transition: bottom 0.2s, top 0.2s;\n\n &-top {\n top: 0;\n }\n\n &-bottom {\n bottom: 0;\n margin-bottom: constant(safe-area-inset-bottom);\n margin-bottom: env(safe-area-inset-bottom);\n }\n\n &-hide {\n display: none;\n }\n\n &-slideout {\n top: -52px;\n flex: 0 0;\n }\n }\n\n &__panel + &__tabbar-slideout {\n top: auto;\n bottom: -52px;\n }\n}\n","import { Component, Prop, h, ComponentInterface, Host, State, Event, EventEmitter, Element } from '@stencil/core'\nimport Taro from '@tarojs/taro'\nimport { addLeadingSlash, stripBasename, stripSuffix } from '@tarojs/router/dist/utils'\nimport { IH5RouterConfig } from '@tarojs/taro/types/compile'\nimport classNames from 'classnames'\nimport resolvePathname from 'resolve-pathname'\n\nimport { splitUrl } from '../../utils'\nimport { TabbarItem } from './tabbar-item'\n\nconst STATUS_SHOW = 0\nconst STATUS_HIDE = 1\nconst STATUS_SLIDEOUT = 2\n\nconst basicTabBarClassName = 'taro-tabbar__tabbar'\nconst hideTabBarClassName = 'taro-tabbar__tabbar-hide'\nconst hideTabBarWithAnimationClassName = 'taro-tabbar__tabbar-slideout'\n\ninterface RouterHandler {\n index: string\n text: string\n url: string\n successHandler: Function\n errorHandler: Function\n animation?: boolean\n}\n\nexport interface Conf {\n color: string\n selectedColor: string\n backgroundColor: string\n borderStyle?: 'black' | 'white'\n list: TabbarList[]\n position?: 'bottom' | 'top'\n custom: boolean\n customRoutes: Record<string, string | string[]>\n mode: IH5RouterConfig['mode']\n basename: string\n homePage: string\n currentPagename: string\n}\n\ninterface TabbarList {\n pagePath: string\n text: string\n iconPath?: string\n selectedIconPath?: string\n badgeText?: string\n showRedDot?: boolean\n}\n\n@Component({\n tag: 'taro-tabbar',\n styleUrl: './style/index.scss'\n})\nexport class Tabbar implements ComponentInterface {\n private homePage = ''\n\n private customRoutes: Array<string[]> = []\n\n private tabbarPos: 'top' | 'bottom' = 'bottom'\n\n @Prop() conf: Conf\n\n @State() list: TabbarList[]\n\n @State() borderStyle: Conf['borderStyle']\n\n @State() backgroundColor: Conf['backgroundColor']\n\n @State() color: Conf['color']\n\n @State() selectedColor: Conf['selectedColor']\n\n @State() selectedIndex = -1\n\n @State() status: 0 | 1 | 2 = STATUS_SHOW\n\n @Event({\n eventName: 'longpress'\n }) onLongPress: EventEmitter\n\n @Element() tabbar: HTMLDivElement\n\n constructor () {\n const list = this.conf.list\n const customRoutes = this.conf.customRoutes\n if (\n Object.prototype.toString.call(list) !== '[object Array]' ||\n list.length < 2 ||\n list.length > 5\n ) {\n throw new Error('tabBar 配置错误')\n }\n\n this.homePage = addLeadingSlash(this.conf.homePage)\n for (let key in customRoutes) {\n const path = customRoutes[key]\n key = addLeadingSlash(key)\n if (typeof path === 'string') {\n this.customRoutes.push([key, addLeadingSlash(path)])\n } else if (path?.length > 0) {\n this.customRoutes.push(...path.map(p => [key, addLeadingSlash(p)]))\n }\n }\n\n list.forEach(item => {\n if (item.pagePath.indexOf('/') !== 0) {\n item.pagePath = '/' + item.pagePath\n }\n })\n\n this.list = list\n this.borderStyle = this.conf.borderStyle\n this.backgroundColor = this.conf.backgroundColor\n this.color = this.conf.color\n this.selectedColor = this.conf.selectedColor\n }\n\n getCurrentUrl () {\n const routerMode = this.conf.mode\n const routerBasename = this.conf.basename || '/'\n let url\n if (routerMode === 'hash') {\n const href = window.location.href\n const hashIndex = href.indexOf('#')\n url = hashIndex === -1\n ? ''\n : href.substring(hashIndex + 1)\n } else {\n url = location.pathname\n }\n const processedUrl = addLeadingSlash(stripBasename(url, routerBasename))\n return decodeURI(processedUrl === '/' ? this.homePage : processedUrl)\n }\n\n getOriginUrl = (url: string) => {\n const customRoute = this.customRoutes.filter(([, customUrl]) => {\n const pathA = splitUrl(customUrl).path\n const pathB = splitUrl(url).path\n return pathA === pathB\n })\n return stripSuffix(customRoute.length ? customRoute[0][0] : url, '.html')\n }\n\n getSelectedIndex = (url: string) => {\n let foundIndex = -1\n this.list.forEach(({ pagePath }, idx) => {\n const pathA = splitUrl(url).path\n const pathB = splitUrl(pagePath).path\n if (pathA === pathB) {\n foundIndex = idx\n }\n })\n return foundIndex\n }\n\n switchTab = (index: number) => {\n this.selectedIndex = index\n Taro.switchTab({\n url: this.list[index].pagePath\n })\n }\n\n switchTabHandler = ({ url, successHandler, errorHandler }: RouterHandler) => {\n const currentUrl = this.getOriginUrl(this.getCurrentUrl() || this.homePage)\n const nextTab = resolvePathname(url, currentUrl)\n const foundIndex = this.getSelectedIndex(nextTab)\n\n if (foundIndex > -1) {\n this.switchTab(foundIndex)\n successHandler({\n errMsg: 'switchTab:ok'\n })\n } else {\n errorHandler({\n errMsg: `switchTab:fail page \"${nextTab}\" is not found`\n })\n }\n }\n\n routerChangeHandler = (options?) => {\n const to = options?.toLocation?.path\n let currentPage\n\n if (typeof to === 'string') {\n const routerBasename = this.conf.basename || '/'\n currentPage = stripBasename(addLeadingSlash(to || this.homePage), routerBasename) || '/'\n } else {\n currentPage = this.getCurrentUrl()\n }\n\n this.selectedIndex = this.getSelectedIndex(this.getOriginUrl(currentPage))\n }\n\n setTabBarBadgeHandler = ({ index, text, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].showRedDot = false\n list[index].badgeText = text\n successHandler({\n errMsg: 'setTabBarBadge:ok'\n })\n } else {\n errorHandler({\n errMsg: 'setTabBarBadge:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n removeTabBarBadgeHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].badgeText = null\n list[index].badgeText = null\n successHandler({\n errMsg: 'removeTabBarBadge:ok'\n })\n } else {\n errorHandler({\n errMsg: 'removeTabBarBadge:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n showTabBarRedDotHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].badgeText = null\n list[index].showRedDot = true\n successHandler({\n errMsg: 'showTabBarRedDot:ok'\n })\n } else {\n errorHandler({\n errMsg: 'showTabBarRedDot:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n hideTabBarRedDotHandler = ({ index, successHandler, errorHandler }: RouterHandler) => {\n const list = [...this.list]\n if (index in list) {\n list[index].showRedDot = false\n successHandler({\n errMsg: 'hideTabBarRedDot:ok'\n })\n } else {\n errorHandler({\n errMsg: 'hideTabBarRedDot:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n showTabBarHandler = ({ successHandler }) => {\n this.status = STATUS_SHOW\n successHandler({\n errMsg: 'showTabBar:ok'\n })\n }\n\n hideTabBarHandler = ({ animation, successHandler }) => {\n this.status = animation ? STATUS_SLIDEOUT : STATUS_HIDE\n successHandler({\n errMsg: 'hideTabBar:ok'\n })\n }\n\n setTabBarStyleHandler = ({ color, selectedColor, backgroundColor, borderStyle, successHandler }) => {\n if (backgroundColor) this.backgroundColor = backgroundColor\n if (borderStyle) this.borderStyle = borderStyle\n if (color) this.color = color\n if (selectedColor) this.selectedColor = selectedColor\n successHandler({\n errMsg: 'setTabBarStyle:ok'\n })\n }\n\n setTabBarItemHandler = ({ index, iconPath, selectedIconPath, text, successHandler, errorHandler }) => {\n const list = [...this.list]\n if (index in list) {\n if (iconPath) list[index].iconPath = iconPath\n if (selectedIconPath) list[index].selectedIconPath = selectedIconPath\n if (text) list[index].text = text\n successHandler({\n errMsg: 'setTabBarItem:ok'\n })\n } else {\n errorHandler({\n errMsg: 'setTabBarItem:fail tabbar item not found'\n })\n }\n\n this.list = list\n }\n\n bindEvent () {\n Taro.eventCenter.on('__taroRouterChange', this.routerChangeHandler)\n Taro.eventCenter.on('__taroSwitchTab', this.switchTabHandler)\n Taro.eventCenter.on('__taroSetTabBarBadge', this.setTabBarBadgeHandler)\n Taro.eventCenter.on('__taroRemoveTabBarBadge', this.removeTabBarBadgeHandler)\n Taro.eventCenter.on('__taroShowTabBarRedDotHandler', this.showTabBarRedDotHandler)\n Taro.eventCenter.on('__taroHideTabBarRedDotHandler', this.hideTabBarRedDotHandler)\n Taro.eventCenter.on('__taroShowTabBar', this.showTabBarHandler)\n Taro.eventCenter.on('__taroHideTabBar', this.hideTabBarHandler)\n Taro.eventCenter.on('__taroSetTabBarStyle', this.setTabBarStyleHandler)\n Taro.eventCenter.on('__taroSetTabBarItem', this.setTabBarItemHandler)\n }\n\n removeEvent () {\n Taro.eventCenter.off('__taroRouterChange', this.routerChangeHandler)\n Taro.eventCenter.off('__taroSwitchTab', this.switchTabHandler)\n Taro.eventCenter.off('__taroSetTabBarBadge', this.setTabBarBadgeHandler)\n Taro.eventCenter.off('__taroRemoveTabBarBadge', this.removeTabBarBadgeHandler)\n Taro.eventCenter.off('__taroShowTabBarRedDotHandler', this.showTabBarRedDotHandler)\n Taro.eventCenter.off('__taroHideTabBarRedDotHandler', this.hideTabBarRedDotHandler)\n Taro.eventCenter.off('__taroShowTabBar', this.showTabBarHandler)\n Taro.eventCenter.off('__taroHideTabBar', this.hideTabBarHandler)\n Taro.eventCenter.off('__taroSetTabBarStyle', this.setTabBarStyleHandler)\n Taro.eventCenter.off('__taroSetTabBarItem', this.setTabBarItemHandler)\n }\n\n componentDidLoad () {\n this.tabbarPos = this.tabbar.nextElementSibling ? 'top' : 'bottom'\n this.bindEvent()\n this.routerChangeHandler()\n }\n\n disconnectedCallback () {\n this.removeEvent()\n }\n\n render () {\n const { tabbarPos = 'bottom' } = this\n const status = this.status\n const containerCls = classNames('weui-tabbar', {\n [`taro-tabbar__border-${this.borderStyle || 'black'}`]: true\n })\n const shouldHideTabBar = this.selectedIndex === -1 || status === STATUS_HIDE\n const shouldSlideout = status === STATUS_SLIDEOUT\n\n return (\n <Host\n class={classNames(\n basicTabBarClassName,\n `${basicTabBarClassName}-${tabbarPos}`, {\n [hideTabBarClassName]: shouldHideTabBar,\n [hideTabBarWithAnimationClassName]: shouldSlideout\n })} >\n <div\n class={containerCls}\n style={{\n backgroundColor: this.backgroundColor || '',\n height: 'inherit'\n }}\n >\n {this.list.map((item, index) => {\n const isSelected = this.selectedIndex === index\n let textColor\n let iconPath\n if (isSelected) {\n textColor = this.selectedColor || ''\n iconPath = item.selectedIconPath\n } else {\n textColor = this.color || ''\n iconPath = item.iconPath\n }\n return (\n <TabbarItem\n index={index}\n onSelect={this.switchTab.bind(this)}\n isSelected={isSelected}\n textColor={textColor}\n iconPath={iconPath}\n text={item.text}\n badgeText={item.badgeText}\n showRedDot={item.showRedDot}\n />\n )\n })}\n </div>\n </Host>\n )\n }\n}\n"]}
@@ -3,13 +3,15 @@ import Image from './image';
3
3
  import Picker from './picker';
4
4
  import ScrollView from './scroll-view';
5
5
  import Text from './text';
6
- var components = [// 视图容器
6
+ var components = [
7
+ // 视图容器
7
8
  'taro-cover-image', 'taro-cover-view', 'taro-match-media', 'taro-movable-area', 'taro-movable-view', 'taro-page-container', 'taro-root-portal', ['taro-scroll-view', {
8
9
  type: 'component',
9
10
  component: ScrollView
10
11
  }], 'taro-share-element', 'taro-swiper', ['taro-swiper-item', {
11
12
  classNames: ['swiper-slide']
12
- }], 'taro-view', // 基础内容
13
+ }], 'taro-view',
14
+ // 基础内容
13
15
  ['taro-icon', {
14
16
  type: 'component',
15
17
  component: Icon
@@ -18,7 +20,8 @@ var components = [// 视图容器
18
20
  }], 'taro-rich-text', ['taro-text', {
19
21
  type: 'component',
20
22
  component: Text
21
- }], // 表单组件
23
+ }],
24
+ // 表单组件
22
25
  'taro-button', ['taro-checkbox', {
23
26
  classNames: ['weui-cells_checkbox']
24
27
  }], 'taro-checkbox-group', 'taro-editor', 'taro-form', ['taro-input', {
@@ -43,18 +46,26 @@ var components = [// 视图容器
43
46
  }], ['taro-textarea', {
44
47
  type: 'forms',
45
48
  event: 'input'
46
- }], // 导航
47
- 'taro-functional-page-navigator', 'taro-navigator', // 媒体组件
49
+ }],
50
+ // 导航
51
+ 'taro-functional-page-navigator', 'taro-navigator',
52
+ // 媒体组件
48
53
  'taro-audio', 'taro-camera', ['taro-image', {
49
54
  type: 'component',
50
55
  component: Image
51
56
  }], 'taro-live-player', ['taro-video', {
52
57
  classNames: ['taro-video-container']
53
- }], 'taro-voip-room', // 地图
54
- 'taro-map', // 画布
55
- 'taro-canvas', // 开放能力
56
- 'taro-web-view', 'taro-ad', 'taro-ad-custom', 'taro-official-account', 'taro-open-data', // 导航栏
57
- 'taro-navigation-bar', // 页面属性配置节点
58
- 'taro-page-meta', // 其他
58
+ }], 'taro-voip-room',
59
+ // 地图
60
+ 'taro-map',
61
+ // 画布
62
+ 'taro-canvas',
63
+ // 开放能力
64
+ 'taro-web-view', 'taro-ad', 'taro-ad-custom', 'taro-official-account', 'taro-open-data',
65
+ // 导航栏
66
+ 'taro-navigation-bar',
67
+ // 页面属性配置节点
68
+ 'taro-page-meta',
69
+ // 其他
59
70
  'taro-block', 'taro-custom-wrapper', 'taro-slot'];
60
71
  export default components;
@@ -10,11 +10,9 @@ export default function createFormsComponent(name, event) {
10
10
  type: Object
11
11
  }
12
12
  };
13
-
14
13
  if (name === 'taro-input') {
15
14
  props.focus = Boolean;
16
15
  }
17
-
18
16
  return {
19
17
  name: name,
20
18
  mixins: [listeners, refs],
@@ -37,13 +35,10 @@ export default function createFormsComponent(name, event) {
37
35
  // eslint-disable-next-line
38
36
  var self = this;
39
37
  var attrs = this.$attrs || {};
40
-
41
38
  if (name === 'taro-input') {
42
39
  attrs['auto-focus'] = self.focus;
43
40
  }
44
-
45
41
  var on = _objectSpread({}, self.listeners);
46
-
47
42
  on[event] = self[event];
48
43
  return createElement("".concat(name, "-core"), {
49
44
  class: ['hydrated'].concat(_toConsumableArray(classNames)),
@@ -8,19 +8,17 @@ components.forEach(function (params) {
8
8
  Vue.component(params, createComponent(params));
9
9
  } else if (params instanceof Array) {
10
10
  var _ref = params,
11
- _ref2 = _slicedToArray(_ref, 2),
12
- name = _ref2[0],
13
- props = _ref2[1];
14
-
11
+ _ref2 = _slicedToArray(_ref, 2),
12
+ name = _ref2[0],
13
+ props = _ref2[1];
15
14
  var classNames = props.classNames,
16
- _props$type = props.type,
17
- type = _props$type === void 0 ? 'simple' : _props$type;
18
-
15
+ _props$type = props.type,
16
+ type = _props$type === void 0 ? 'simple' : _props$type;
19
17
  if (type === 'simple') {
20
18
  Vue.component(name, createComponent(name, classNames));
21
19
  } else if (type === 'forms') {
22
20
  var event = props.event,
23
- modelValue = props.modelValue;
21
+ modelValue = props.modelValue;
24
22
  Vue.component(name, createFormsComponent(name, event, modelValue, classNames));
25
23
  } else if (type === 'component') {
26
24
  Vue.component(name, props.component);
@@ -3,20 +3,17 @@ export var refs = {
3
3
  mounted: function mounted() {
4
4
  if (this.$parent && _typeof(this.$parent.$refs) === 'object' && Object.keys(this.$parent.$refs).length) {
5
5
  var _refs = this.$parent.$refs;
6
-
7
6
  if (this._refCacheKey) {
8
7
  _refs[this._refCacheKey] = this.$el;
9
8
  } else {
10
9
  for (var key in _refs) {
11
10
  var ref = _refs[key];
12
-
13
11
  if (ref === this) {
14
12
  this._refCacheKey = key;
15
13
  _refs[key] = this.$el;
16
14
  break;
17
15
  } else if (Array.isArray(ref)) {
18
16
  var index = ref.indexOf(this);
19
-
20
17
  if (index > -1) {
21
18
  ref[index] = this.$el;
22
19
  break;
@@ -29,14 +26,12 @@ export var refs = {
29
26
  beforeDestroy: function beforeDestroy() {
30
27
  if (this.$parent && _typeof(this.$parent.$refs) === 'object' && Object.keys(this.$parent.$refs).length) {
31
28
  var _refs2 = this.$parent.$refs;
32
-
33
29
  if (this._refCacheKey) {
34
30
  _refs2[this._refCacheKey] = this;
35
31
  } else {
36
32
  for (var key in _refs2) {
37
33
  if (Array.isArray(_refs2[key])) {
38
34
  var index = _refs2[key].indexOf(this.$el);
39
-
40
35
  if (index > -1) {
41
36
  _refs2[key][index] = this;
42
37
  break;
@@ -1,9 +1,6 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
-
3
2
  /* eslint-disable */
4
-
5
3
  /* tslint:disable */
6
-
7
4
  /* auto-generated vue proxies */
8
5
  import Vue from 'vue';
9
6
  import { createCommonRender, createCommonMethod } from './vue-component-lib/utils';
@@ -4,19 +4,15 @@ import Vue from 'vue';
4
4
  import * as components from './components';
5
5
  export function initVue2Components() {
6
6
  var _Vue$config$ignoredEl;
7
-
8
7
  var ignoredElements = [/^taro-/, 'root', 'block'];
9
-
10
8
  if (!((_Vue$config$ignoredEl = Vue.config.ignoredElements) !== null && _Vue$config$ignoredEl !== void 0 && _Vue$config$ignoredEl.includes(ignoredElements[0]))) {
11
9
  Vue.config.ignoredElements = [].concat(_toConsumableArray(Vue.config.ignoredElements), ignoredElements);
12
10
  }
13
-
14
11
  Object.entries(components).forEach(function (params) {
15
12
  var _ref = params,
16
- _ref2 = _slicedToArray(_ref, 2),
17
- name = _ref2[0],
18
- definition = _ref2[1];
19
-
13
+ _ref2 = _slicedToArray(_ref, 2),
14
+ name = _ref2[0],
15
+ definition = _ref2[1];
20
16
  if (definition) {
21
17
  var tagName = 'taro' + name.replace(new RegExp('([A-Z])', 'g'), '-$1').toLowerCase();
22
18
  Vue.component(tagName, definition);
@@ -27,7 +27,6 @@ export var createCommonRender = function createCommonRender(tagName) {
27
27
  export var createCommonMethod = function createCommonMethod(methodName) {
28
28
  return function () {
29
29
  var _this$$refs$wc;
30
-
31
30
  (_this$$refs$wc = this.$refs.wc)[methodName].apply(_this$$refs$wc, arguments);
32
31
  };
33
32
  };
@@ -7,7 +7,7 @@ export default function createComponent(name) {
7
7
  emits: ['tap'],
8
8
  setup: function setup(__props, _ref) {
9
9
  var slots = _ref.slots,
10
- emit = _ref.emit;
10
+ emit = _ref.emit;
11
11
  var forwardRef = useForwardRef();
12
12
  return function () {
13
13
  return h("".concat(name, "-core"), {
@@ -9,25 +9,20 @@ export default function createFormsComponent(name, eventName) {
9
9
  var props = {
10
10
  modelValue: null
11
11
  };
12
-
13
12
  if (name === 'taro-input') {
14
13
  props.focus = Boolean;
15
14
  }
16
-
17
15
  return {
18
16
  emits: ['tap', 'update:modelValue'],
19
17
  props: props,
20
18
  setup: function setup(props, _ref) {
21
19
  var slots = _ref.slots,
22
- emit = _ref.emit;
23
-
20
+ emit = _ref.emit;
24
21
  var _toRefs = toRefs(props),
25
- model = _toRefs.modelValue,
26
- focus = _toRefs.focus;
27
-
22
+ model = _toRefs.modelValue,
23
+ focus = _toRefs.focus;
28
24
  var attrs = computed(function () {
29
25
  var _ref2;
30
-
31
26
  return name === 'taro-input' ? (_ref2 = {}, _defineProperty(_ref2, modelValue, model.value), _defineProperty(_ref2, 'auto-focus', focus.value), _ref2) : _defineProperty({}, modelValue, model.value);
32
27
  });
33
28
  var forwardRef = useForwardRef();
@@ -1,11 +1,9 @@
1
1
  import { getCurrentInstance } from 'vue';
2
2
  export function useForwardRef() {
3
3
  var instance = getCurrentInstance();
4
-
5
4
  function forwardRef(ref) {
6
5
  instance.exposed = ref;
7
6
  instance.exposeProxy = ref;
8
7
  }
9
-
10
8
  return forwardRef;
11
9
  }
@@ -4,8 +4,8 @@ export default {
4
4
  emits: ['tap'],
5
5
  setup: function setup(__props, _ref) {
6
6
  var slots = _ref.slots,
7
- emit = _ref.emit,
8
- attrs = _ref.attrs;
7
+ emit = _ref.emit,
8
+ attrs = _ref.attrs;
9
9
  var iconType = attrs.type.replace(/_/g, '-');
10
10
  var forwardRef = useForwardRef();
11
11
  return function () {
@@ -4,8 +4,8 @@ export default {
4
4
  emits: ['tap'],
5
5
  setup: function setup(__props, _ref) {
6
6
  var slots = _ref.slots,
7
- emit = _ref.emit,
8
- attrs = _ref.attrs;
7
+ emit = _ref.emit,
8
+ attrs = _ref.attrs;
9
9
  var forwardRef = useForwardRef();
10
10
  return function () {
11
11
  return h('taro-image-core', {