element-plus
Version:
A Component Library for Vue 3
1 lines • 5.75 kB
Source Map (JSON)
{"version":3,"file":"splitter.vue2.mjs","sources":["../../../../../../packages/components/splitter/src/splitter.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport {\n computed,\n getCurrentInstance,\n nextTick,\n provide,\n reactive,\n toRef,\n watch,\n} from 'vue'\nimport { useNamespace, useOrderedChildren } from '@element-plus/hooks'\nimport { useContainer, useResize, useSize } from './hooks'\nimport { splitterEmits } from './splitter'\nimport { splitterRootContextKey } from './type'\n\nimport type { PanelItemState } from './type'\nimport type { SplitterProps } from './splitter'\n\nconst ns = useNamespace('splitter')\n\ndefineOptions({\n name: 'ElSplitter',\n})\n\nconst emits = defineEmits(splitterEmits)\n\nconst props = withDefaults(defineProps<SplitterProps>(), {\n layout: 'horizontal',\n})\nconst layout = toRef(props, 'layout')\nconst lazy = toRef(props, 'lazy')\n\nconst { containerEl, containerSize } = useContainer(layout)\n\nconst {\n removeChild: unregisterPanel,\n children: panels,\n addChild: registerPanel,\n ChildrenSorter: PanelsSorter,\n} = useOrderedChildren<PanelItemState>(getCurrentInstance()!, 'ElSplitterPanel')\n\nwatch(panels, () => {\n movingIndex.value = null\n panels.value.forEach((instance: PanelItemState, index: number) => {\n instance.setIndex(index)\n })\n})\n\nconst { percentSizes, pxSizes } = useSize(panels, containerSize)\n\nconst {\n lazyOffset,\n movingIndex,\n onMoveStart,\n onMoving,\n onMoveEnd,\n onCollapse,\n} = useResize(panels, containerSize, pxSizes, lazy)\n\nconst splitterStyles = computed(() => {\n return {\n [ns.cssVarBlockName('bar-offset')]: lazy.value\n ? `${lazyOffset.value}px`\n : undefined,\n }\n})\n\nconst onResizeStart = (index: number) => {\n onMoveStart(index)\n emits('resizeStart', index, pxSizes.value)\n}\n\nconst onResize = (index: number, offset: number) => {\n onMoving(index, offset)\n\n if (!lazy.value) {\n emits('resize', index, pxSizes.value)\n }\n}\n\nconst onResizeEnd = async (index: number) => {\n onMoveEnd()\n await nextTick()\n emits('resizeEnd', index, pxSizes.value)\n}\n\nconst onCollapsible = (index: number, type: 'start' | 'end') => {\n onCollapse(index, type)\n emits('collapse', index, type, pxSizes.value)\n}\n\nprovide(\n splitterRootContextKey,\n reactive({\n panels,\n percentSizes,\n pxSizes,\n layout,\n lazy,\n movingIndex,\n containerSize,\n onMoveStart: onResizeStart,\n onMoving: onResize,\n onMoveEnd: onResizeEnd,\n onCollapse: onCollapsible,\n registerPanel,\n unregisterPanel,\n })\n)\n</script>\n\n<template>\n <div\n ref=\"containerEl\"\n :class=\"[ns.b(), ns.e(layout)]\"\n :style=\"splitterStyles\"\n >\n <slot />\n <panels-sorter />\n <!-- Prevent iframe touch events from breaking -->\n <div v-if=\"movingIndex\" :class=\"[ns.e('mask'), ns.e(`mask-${layout}`)]\" />\n </div>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_unref","_renderSlot","_createVNode","_createCommentVNode"],"mappings":"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"}