1 line
14 KiB
Plaintext
1 line
14 KiB
Plaintext
{"version":3,"file":"VSnackbar.mjs","names":["VDefaultsProvider","VOverlay","makeVOverlayProps","VProgressLinear","forwardRefs","makeLocationProps","useLocation","makePositionProps","usePosition","useProxiedModel","makeRoundedProps","useRounded","useScopeId","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","mergeProps","nextTick","onMounted","onScopeDispose","ref","shallowRef","watch","genericComponent","omit","propsFactory","refElement","useRender","useCountdown","milliseconds","time","timer","clear","clearInterval","reset","value","start","el","style","getComputedStyle","transitionDuration","interval","parseFloat","startTime","performance","now","window","setInterval","elapsed","Math","max","makeVSnackbarProps","multiLine","Boolean","text","String","timeout","type","Number","default","vertical","location","transition","VSnackbar","name","props","emits","v","setup","_ref","slots","isActive","locationStyles","positionClasses","scopeId","themeClasses","colorClasses","colorStyles","variantClasses","roundedClasses","countdown","overlay","timerRef","isHovering","startTimeout","activeTimeout","clearTimeout","element","setTimeout","onPointerenter","onPointerleave","overlayProps","filterProps","hasContent","_createVNode","_mergeProps","class","$event","contentProps","actions","VBtn","variant","ripple","slim","activator"],"sources":["../../../src/components/VSnackbar/VSnackbar.tsx"],"sourcesContent":["// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\nimport { VProgressLinear } from '@/components/VProgressLinear'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useScopeId } from '@/composables/scopeId'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { mergeProps, nextTick, onMounted, onScopeDispose, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, refElement, useRender } from '@/util'\n\ntype VSnackbarSlots = {\n activator: { isActive: boolean, props: Record<string, any> }\n default: never\n actions: never\n text: never\n}\n\nfunction useCountdown (milliseconds: number) {\n const time = shallowRef(milliseconds)\n let timer = -1\n\n function clear () {\n clearInterval(timer)\n }\n\n function reset () {\n clear()\n\n nextTick(() => time.value = milliseconds)\n }\n\n function start (el?: HTMLElement) {\n const style = el ? getComputedStyle(el) : { transitionDuration: 0.2 }\n const interval = parseFloat(style.transitionDuration) * 1000 || 200\n\n clear()\n\n if (time.value <= 0) return\n\n const startTime = performance.now()\n timer = window.setInterval(() => {\n const elapsed = performance.now() - startTime + interval\n time.value = Math.max(milliseconds - elapsed, 0)\n\n if (time.value <= 0) clear()\n }, interval)\n }\n\n onScopeDispose(clear)\n\n return { clear, time, start, reset }\n}\n\nexport const makeVSnackbarProps = propsFactory({\n multiLine: Boolean,\n text: String,\n timer: [Boolean, String],\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n vertical: Boolean,\n\n ...makeLocationProps({ location: 'bottom' } as const),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeVariantProps(),\n ...makeThemeProps(),\n ...omit(makeVOverlayProps({\n transition: 'v-snackbar-transition',\n }), ['persistent', 'noClickAnimation', 'scrim', 'scrollStrategy']),\n}, 'VSnackbar')\n\nexport const VSnackbar = genericComponent<VSnackbarSlots>()({\n name: 'VSnackbar',\n\n props: makeVSnackbarProps(),\n\n emits: {\n 'update:modelValue': (v: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { scopeId } = useScopeId()\n const { themeClasses } = provideTheme(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(props)\n const { roundedClasses } = useRounded(props)\n const countdown = useCountdown(Number(props.timeout))\n\n const overlay = ref<VOverlay>()\n const timerRef = ref<VProgressLinear>()\n const isHovering = shallowRef(false)\n\n watch(isActive, startTimeout)\n watch(() => props.timeout, startTimeout)\n\n onMounted(() => {\n if (isActive.value) startTimeout()\n })\n\n let activeTimeout = -1\n function startTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n const timeout = Number(props.timeout)\n\n if (!isActive.value || timeout === -1) return\n\n const element = refElement(timerRef.value)\n\n countdown.start(element)\n\n activeTimeout = window.setTimeout(() => {\n isActive.value = false\n }, timeout)\n }\n\n function clearTimeout () {\n countdown.reset()\n window.clearTimeout(activeTimeout)\n }\n\n function onPointerenter () {\n isHovering.value = true\n clearTimeout()\n }\n\n function onPointerleave () {\n isHovering.value = false\n startTimeout()\n }\n\n useRender(() => {\n const overlayProps = VOverlay.filterProps(props)\n const hasContent = !!(slots.default || slots.text || props.text)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-snackbar',\n {\n 'v-snackbar--active': isActive.value,\n 'v-snackbar--multi-line': props.multiLine && !props.vertical,\n 'v-snackbar--timer': !!props.timer,\n 'v-snackbar--vertical': props.vertical,\n },\n positionClasses.value,\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n contentProps={ mergeProps({\n class: [\n 'v-snackbar__wrapper',\n themeClasses.value,\n colorClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ],\n style: [\n locationStyles.value,\n colorStyles.value,\n ],\n onPointerenter,\n onPointerleave,\n }, overlayProps.contentProps)}\n persistent\n noClickAnimation\n scrim={ false }\n scrollStrategy=\"none\"\n _disableGlobalStack\n { ...scopeId }\n v-slots={{ activator: slots.activator }}\n >\n { genOverlays(false, 'v-snackbar') }\n\n { props.timer && !isHovering.value && (\n <div key=\"timer\" class=\"v-snackbar__timer\">\n <VProgressLinear\n ref={ timerRef }\n color={ typeof props.timer === 'string' ? props.timer : 'info' }\n max={ props.timeout }\n model-value={ countdown.time.value }\n />\n </div>\n )}\n\n { hasContent && (\n <div\n key=\"content\"\n class=\"v-snackbar__content\"\n role=\"status\"\n aria-live=\"polite\"\n >\n { slots.text?.() ?? props.text }\n\n { slots.default?.() }\n </div>\n )}\n\n { slots.actions && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n variant: 'text',\n ripple: false,\n slim: true,\n },\n }}\n >\n <div class=\"v-snackbar__actions\">\n { slots.actions() }\n </div>\n </VDefaultsProvider>\n )}\n </VOverlay>\n )\n })\n\n return forwardRefs({}, overlay)\n },\n})\n\nexport type VSnackbar = InstanceType<typeof VSnackbar>\n"],"mappings":"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"} |