element-plus
Version:
A Component Library for Vue 3
1 lines • 3.5 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../../../../../packages/components/virtual-list/src/utils.ts"],"sourcesContent":["import { isObject } from '@vue/shared'\nimport {\n FORWARD,\n BACKWARD,\n LTR,\n RTL,\n HORIZONTAL,\n RTL_OFFSET_NAG,\n RTL_OFFSET_POS_DESC,\n RTL_OFFSET_POS_ASC,\n PageKey,\n} from './defaults'\n\nimport type { CSSProperties } from 'vue'\nimport type { RTLOffsetType, Direction, LayoutDirection } from './types'\n\nexport const getScrollDir = (prev: number, cur: number) =>\n prev < cur ? FORWARD : BACKWARD\n\nexport const isHorizontal = (dir: string) =>\n dir === LTR || dir === RTL || dir === HORIZONTAL\n\nexport const isRTL = (dir: Direction) => dir === RTL\n\nlet cachedRTLResult: RTLOffsetType | null = null\n\nexport function getRTLOffsetType(recalculate = false): RTLOffsetType {\n if (cachedRTLResult === null || recalculate) {\n const outerDiv = document.createElement('div')\n const outerStyle = outerDiv.style\n outerStyle.width = '50px'\n outerStyle.height = '50px'\n outerStyle.overflow = 'scroll'\n outerStyle.direction = 'rtl'\n\n const innerDiv = document.createElement('div')\n const innerStyle = innerDiv.style\n innerStyle.width = '100px'\n innerStyle.height = '100px'\n\n outerDiv.appendChild(innerDiv)\n\n document.body.appendChild(outerDiv)\n\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = RTL_OFFSET_POS_DESC\n } else {\n outerDiv.scrollLeft = 1\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = RTL_OFFSET_NAG\n } else {\n cachedRTLResult = RTL_OFFSET_POS_ASC\n }\n }\n\n document.body.removeChild(outerDiv)\n\n return cachedRTLResult\n }\n\n return cachedRTLResult\n}\n\nexport const getRelativePos = (\n e: TouchEvent | MouseEvent,\n layout: LayoutDirection\n) => {\n return 'touches' in e ? e.touches[0][PageKey[layout]] : e[PageKey[layout]]\n}\n\nexport function renderThumbStyle({ move, size, bar }, layout: string) {\n const style: CSSProperties = {}\n const translate = `translate${bar.axis}(${move}px)`\n\n style[bar.size] = size\n style.transform = translate\n style.msTransform = translate\n // polyfill\n ;(style as any).webkitTransform = translate\n\n if (layout === 'horizontal') {\n style.height = '100%'\n } else {\n style.width = '100%'\n }\n\n return style\n}\n\nexport const isFF =\n typeof navigator !== 'undefined' &&\n isObject(navigator) &&\n /Firefox/i.test(navigator.userAgent)\n"],"names":[],"mappings":";;;MAgBa,eAAe,CAAC,MAAc,QACzC,OAAO,MAAM,UAAU;MAEZ,eAAe,CAAC,QAC3B,QAAQ,OAAO,QAAQ,OAAO,QAAQ;MAE3B,QAAQ,CAAC,QAAmB,QAAQ;AAEjD,IAAI,kBAAwC;0BAEX,cAAc,OAAsB;AACnE,MAAI,oBAAoB,QAAQ,aAAa;AAC3C,UAAM,WAAW,SAAS,cAAc;AACxC,UAAM,aAAa,SAAS;AAC5B,eAAW,QAAQ;AACnB,eAAW,SAAS;AACpB,eAAW,WAAW;AACtB,eAAW,YAAY;AAEvB,UAAM,WAAW,SAAS,cAAc;AACxC,UAAM,aAAa,SAAS;AAC5B,eAAW,QAAQ;AACnB,eAAW,SAAS;AAEpB,aAAS,YAAY;AAErB,aAAS,KAAK,YAAY;AAE1B,QAAI,SAAS,aAAa,GAAG;AAC3B,wBAAkB;AAAA,WACb;AACL,eAAS,aAAa;AACtB,UAAI,SAAS,eAAe,GAAG;AAC7B,0BAAkB;AAAA,aACb;AACL,0BAAkB;AAAA;AAAA;AAItB,aAAS,KAAK,YAAY;AAE1B,WAAO;AAAA;AAGT,SAAO;AAAA;MAGI,iBAAiB,CAC5B,GACA,WACG;AACH,SAAO,aAAa,IAAI,EAAE,QAAQ,GAAG,QAAQ,WAAW,EAAE,QAAQ;AAAA;0BAGnC,EAAE,MAAM,MAAM,OAAO,QAAgB;AACpE,QAAM,QAAuB;AAC7B,QAAM,YAAY,YAAY,IAAI,QAAQ;AAE1C,QAAM,IAAI,QAAQ;AAClB,QAAM,YAAY;AAClB,QAAM,cAAc;AAEnB,EAAC,MAAc,kBAAkB;AAElC,MAAI,WAAW,cAAc;AAC3B,UAAM,SAAS;AAAA,SACV;AACL,UAAM,QAAQ;AAAA;AAGhB,SAAO;AAAA;MAGI,OACX,OAAO,cAAc,eACrB,SAAS,cACT,WAAW,KAAK,UAAU;;;;"}