vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 15.9 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/ui/ajax-bar/index.ts"],"sourcesContent":["import { h, defineComponent, ref, computed, onMounted, onBeforeUnmount, getCurrentInstance, ComponentPublicInstance } 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\nexport interface VcAjaxBarRef extends ComponentPublicInstance<VcAjaxBarProps> {\n /**\n * Notify bar you are waiting for a new process to finish\n * @param speed Delay (in milliseconds) between progress auto-increments; If delay is 0 then it disables auto-incrementing\n */\n start: (speed?: number) => void\n /**\n * Manually trigger a bar progress increment\n * @param amount Amount (0 < x <= 100) to increment with\n */\n increment: (amount?: number) => void\n /**\n * Notify bar that one process you were waiting has finished\n */\n stop: () => void\n}\n"],"names":[],"mappings":"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"}