UNPKG

vue-cesium-jyt

Version:
1 lines 15.8 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/ui/ajax-bar/index.ts"],"sourcesContent":["import { h, defineComponent, ref, computed, onMounted, onBeforeUnmount, getCurrentInstance } from 'vue'\nimport type { CSSProperties, ExtractPropTypes } from 'vue'\n\nimport { between } from '@vue-cesium/utils/private/format'\nimport { AnyFunction } from '@vue-cesium/utils/types'\n\nconst xhr = XMLHttpRequest,\n send = xhr.prototype.send,\n open = xhr.prototype.open,\n positionValues = ['top', 'right', 'bottom', 'left']\n\nlet stack = []\nlet highjackCount = 0\n\nfunction translate({ p, pos, active, horiz, reverse, dir }) {\n let x = 1,\n y = 1\n\n if (horiz === true) {\n if (reverse === true) {\n x = -1\n }\n if (pos === 'bottom') {\n y = -1\n }\n return { transform: `translate3d(${x * (p - 100)}%,${active ? 0 : y * -200}%,0)` }\n }\n\n if (reverse === true) {\n y = -1\n }\n if (pos === 'right') {\n x = -1\n }\n return { transform: `translate3d(${active ? 0 : dir * x * -200}%,${y * (p - 100)}%,0)` }\n}\n\nfunction inc(p, amount) {\n if (typeof amount !== 'number') {\n if (p < 25) {\n amount = Math.random() * 3 + 3\n } else if (p < 65) {\n amount = Math.random() * 3\n } else if (p < 85) {\n amount = Math.random() * 2\n } else if (p < 99) {\n amount = 0.6\n } else {\n amount = 0\n }\n }\n return between(p + amount, 0, 100)\n}\n\nfunction highjackAjax(stackEntry) {\n highjackCount++\n\n stack.push(stackEntry)\n\n if (highjackCount > 1) {\n return\n }\n\n xhr.prototype.open = function (_, url) {\n const stopStack = []\n\n const loadStart = () => {\n stack.forEach(entry => {\n if (entry.hijackFilter.value === null || entry.hijackFilter.value(url) === true) {\n entry.start()\n stopStack.push(entry.stop)\n }\n })\n }\n\n const loadEnd = () => {\n stopStack.forEach(stop => {\n stop()\n })\n }\n\n this.addEventListener('loadstart', loadStart, { once: true })\n this.addEventListener('loadend', loadEnd, { once: true })\n\n // eslint-disable-next-line prefer-rest-params\n open.apply(this, arguments as any)\n }\n}\n\nfunction restoreAjax(start) {\n stack = stack.filter(entry => entry.start !== start)\n\n highjackCount = Math.max(0, highjackCount - 1)\n if (highjackCount === 0) {\n xhr.prototype.open = open\n }\n}\n\nexport const ajaxBarProps = {\n position: {\n type: String,\n default: 'top',\n validator: val => positionValues.includes(val)\n },\n size: {\n type: String,\n default: '2px'\n },\n color: String,\n skipHijack: Boolean,\n reverse: Boolean,\n positioning: {\n type: String,\n default: 'absolute',\n validator: (val: string) => ['absolute', 'fixed'].includes(val)\n },\n hijackFilter: Function\n}\n\nexport default defineComponent({\n name: 'VcAjaxBar',\n\n props: ajaxBarProps,\n\n emits: ['start', 'stop'],\n\n setup(props, { emit }) {\n const { proxy } = getCurrentInstance()!\n\n const progress = ref(0)\n const onScreen = ref(false)\n const animate = ref(true)\n\n let sessions = 0,\n timer,\n speed\n\n const classes = computed(\n () =>\n `vc-loading-bar vc-loading-bar--${props.position}` +\n (props.color !== void 0 ? ` bg-${props.color}` : '') +\n (animate.value === true ? '' : ' no-transition')\n )\n\n const horizontal = computed(() => props.position === 'top' || props.position === 'bottom')\n const sizeProp = computed(() => (horizontal.value === true ? 'height' : 'width'))\n\n const style = computed(() => {\n const active = onScreen.value\n\n const obj: CSSProperties = translate({\n p: progress.value,\n pos: props.position,\n active,\n horiz: horizontal.value,\n reverse: props.reverse,\n dir: 1\n })\n\n obj[sizeProp.value] = props.size\n obj.opacity = active ? 1 : 0\n obj.position = props.positioning === 'absolute' ? 'absolute' : 'fixed'\n obj.backgroundColor = props.color\n\n return obj\n })\n\n const attributes = computed(() =>\n onScreen.value === true\n ? {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': progress.value\n }\n : { 'aria-hidden': 'true' }\n )\n\n function start(newSpeed = 300) {\n const oldSpeed = speed\n speed = Math.max(0, newSpeed) || 0\n\n sessions++\n\n if (sessions > 1) {\n if (oldSpeed === 0 && newSpeed > 0) {\n planNextStep()\n } else if (oldSpeed > 0 && newSpeed <= 0) {\n clearTimeout(timer)\n }\n return sessions\n }\n\n clearTimeout(timer)\n emit('start')\n\n progress.value = 0\n\n timer = setTimeout(\n () => {\n animate.value = true\n newSpeed > 0 && planNextStep()\n },\n onScreen.value === true ? 500 : 1\n )\n\n if (onScreen.value !== true) {\n onScreen.value = true\n animate.value = false\n }\n\n return sessions\n }\n\n function increment(amount?) {\n if (sessions > 0) {\n progress.value = inc(progress.value, amount)\n }\n\n return sessions\n }\n\n function stop() {\n sessions = Math.max(0, sessions - 1)\n if (sessions > 0) {\n return sessions\n }\n\n clearTimeout(timer)\n emit('stop')\n\n const end = () => {\n animate.value = true\n progress.value = 100\n timer = setTimeout(() => {\n onScreen.value = false\n }, 1000)\n }\n\n if (progress.value === 0) {\n timer = setTimeout(end, 1)\n } else {\n end()\n }\n }\n\n function planNextStep() {\n if (progress.value < 100) {\n timer = setTimeout(() => {\n increment()\n planNextStep()\n }, speed)\n }\n }\n\n let hijacked\n\n onMounted(() => {\n if (props.skipHijack !== true) {\n hijacked = true\n highjackAjax({\n start,\n stop,\n hijackFilter: computed(() => props.hijackFilter || null)\n })\n }\n })\n\n onBeforeUnmount(() => {\n clearTimeout(timer)\n hijacked === true && restoreAjax(start)\n })\n\n // expose public methods\n Object.assign(proxy, { start, stop, increment })\n\n return () =>\n h('div', {\n class: classes.value,\n style: style.value,\n ...attributes.value\n })\n }\n})\n\n// export type VcAjaxBarProps = ExtractPropTypes<typeof ajaxBarProps>\nexport interface VcAjaxBarProps {\n /**\n * Position within window of where QAjaxBar should be displayed.\n * Default value: top\n */\n position?: 'top' | 'right' | 'bottom' | 'left'\n /**\n * Size in CSS units, including unit name.\n * Default value: 2px\n */\n size?: string\n /**\n * Color name for component from the css color.\n */\n color?: string\n /**\n * Reverse direction of progress.\n */\n reverse?: boolean\n /**\n * Skip Ajax hijacking (not a reactive prop).\n */\n skipHijack?: boolean\n /**\n * Specify the positioning of the progress bar.\n */\n positioning?: 'absolute' | 'fixed'\n /**\n * Filter which URL should trigger start() + stop().\n * @param url The URL being triggered\n * @returns Should the URL received as param trigger start() + stop()?\n */\n hijackFilter?: ((url: string) => boolean) | undefined\n /**\n * Emitted when bar is triggered to appear.\n */\n onStart?: () => void\n /**\n * Emitted when bar has finished its job.\n */\n onStop?: () => void\n}\n"],"names":[],"mappings":"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"}