UNPKG

vue-box-overflow

Version:

Headless UI for automatically collapsing boxes when overflow in Vue.

1 lines 4.88 kB
{"version":3,"file":"Overflow.cjs","sources":["../../src/Overflow.ts"],"sourcesContent":["import type {\n VNode,\n} from 'vue'\nimport {\n Fragment,\n createVNode,\n defineComponent,\n normalizeStyle,\n ref,\n renderSlot,\n unref,\n} from 'vue'\nimport type { BoxOverflowOptions } from 'box-overflow-core'\nimport { useOverflow } from './useOverflow.js'\n\nexport default defineComponent({\n name: 'Overflow',\n props: {\n maxLine: {\n type: Number,\n },\n component: {\n type: String,\n default: 'div',\n },\n },\n setup(props, ctx) {\n const { component, ...options } = props\n const parentRef = ref<HTMLElement | null>(null)\n const idList: string[] = []\n\n const instance = useOverflow({\n getIdByIndex: (index) => {\n return idList[index]\n },\n ...options,\n getContainer: () => {\n return parentRef.value as HTMLElement\n },\n } as BoxOverflowOptions)\n\n return () => {\n idList.length = 0\n let itemIndex = 0\n const idAttribute = instance.value.options.idAttribute\n\n const children = []\n // prefix\n const prefix = renderSlot(ctx.slots, 'prefix')\n if (prefix.children?.length) {\n children.push(createVNode('div', {\n [idAttribute]: 'prefix',\n style: unref(instance).getItemStyle('prefix'),\n }, [prefix]))\n }\n\n // default slot\n const defaultSlot = ctx.slots.default?.() || []\n children.push(defaultSlot.map((fragment: any, index: number) => {\n const children = (fragment.children || []).map((child: VNode, index: number) => {\n const id = String(child.props?.[idAttribute] || itemIndex++)\n idList.push(id)\n const style = ref(normalizeStyle(unref(instance).getItemStyle(id)))\n return (createVNode('div', { key: child.key || index, style: style.value, [idAttribute]: id }, [child]))\n })\n const key = (fragment && (fragment as any).key) || `_default${index}`\n return (createVNode(Fragment, { key }, children))\n }))\n\n // rest\n const rest = renderSlot(ctx.slots, 'rest', {\n rests: unref(instance).getRests(),\n })\n if (rest.children?.length) {\n children.push(createVNode('div', {\n [idAttribute]: 'rest',\n style: unref(instance).getRestStyle(),\n }, [rest]))\n }\n\n const suffix = renderSlot(ctx.slots, 'suffix')\n if (suffix.children?.length) {\n children.push(createVNode('div', {\n [idAttribute]: 'suffix',\n style: unref(instance).getItemStyle('suffix'),\n }, [suffix]),\n )\n }\n\n return createVNode(component, { ref: parentRef, style: unref(instance).getContainerStyle() }, children)\n }\n },\n})\n"],"names":["defineComponent","ref","useOverflow","renderSlot","createVNode","unref","children","index","_a","normalizeStyle","Fragment"],"mappings":";;;AAeA,MAAA,WAAeA,oBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,SAAS;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,MAAM,OAAO,KAAK;AAChB,UAAM,EAAE,WAAW,GAAG,QAAA,IAAY;AAC5B,UAAA,YAAYC,QAAwB,IAAI;AAC9C,UAAM,SAAmB,CAAA;AAEzB,UAAM,WAAWC,YAAAA,YAAY;AAAA,MAC3B,cAAc,CAAC,UAAU;AACvB,eAAO,OAAO,KAAK;AAAA,MACrB;AAAA,MACA,GAAG;AAAA,MACH,cAAc,MAAM;AAClB,eAAO,UAAU;AAAA,MACnB;AAAA,IAAA,CACqB;AAEvB,WAAO,MAAM;;AACX,aAAO,SAAS;AAChB,UAAI,YAAY;AACV,YAAA,cAAc,SAAS,MAAM,QAAQ;AAE3C,YAAM,WAAW,CAAA;AAEjB,YAAM,SAASC,IAAA,WAAW,IAAI,OAAO,QAAQ;AACzC,WAAA,YAAO,aAAP,mBAAiB,QAAQ;AAClB,iBAAA,KAAKC,gBAAY,OAAO;AAAA,UAC/B,CAAC,WAAW,GAAG;AAAA,UACf,OAAOC,IAAAA,MAAM,QAAQ,EAAE,aAAa,QAAQ;AAAA,QAAA,GAC3C,CAAC,MAAM,CAAC,CAAC;AAAA,MACd;AAGA,YAAM,gBAAc,eAAI,OAAM,YAAV,gCAAyB,CAAA;AAC7C,eAAS,KAAK,YAAY,IAAI,CAAC,UAAe,UAAkB;AACxDC,cAAAA,aAAY,SAAS,YAAY,IAAI,IAAI,CAAC,OAAcC,WAAkB;;AAC9E,gBAAM,KAAK,SAAOC,MAAA,MAAM,UAAN,gBAAAA,IAAc,iBAAgB,WAAW;AAC3D,iBAAO,KAAK,EAAE;AACR,gBAAA,QAAQP,QAAIQ,IAAAA,eAAeJ,IAAA,MAAM,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;AAClE,iBAAQD,IAAAA,YAAY,OAAO,EAAE,KAAK,MAAM,OAAOG,QAAO,OAAO,MAAM,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAAA,QAAA,CACvG;AACD,cAAM,MAAO,YAAa,SAAiB,OAAQ,WAAW,KAAK;AACnE,eAAQH,IAAY,YAAAM,IAAA,UAAU,EAAE,OAAOJ,SAAQ;AAAA,MAChD,CAAA,CAAC;AAGF,YAAM,OAAOH,IAAA,WAAW,IAAI,OAAO,QAAQ;AAAA,QACzC,OAAOE,IAAA,MAAM,QAAQ,EAAE,SAAS;AAAA,MAAA,CACjC;AACG,WAAA,UAAK,aAAL,mBAAe,QAAQ;AAChB,iBAAA,KAAKD,gBAAY,OAAO;AAAA,UAC/B,CAAC,WAAW,GAAG;AAAA,UACf,OAAOC,IAAA,MAAM,QAAQ,EAAE,aAAa;AAAA,QAAA,GACnC,CAAC,IAAI,CAAC,CAAC;AAAA,MACZ;AAEA,YAAM,SAASF,IAAA,WAAW,IAAI,OAAO,QAAQ;AACzC,WAAA,YAAO,aAAP,mBAAiB,QAAQ;AAClB,iBAAA;AAAA,UAAKC,IAAAA,YAAY,OAAO;AAAA,YAC/B,CAAC,WAAW,GAAG;AAAA,YACf,OAAOC,IAAAA,MAAM,QAAQ,EAAE,aAAa,QAAQ;AAAA,UAAA,GAC3C,CAAC,MAAM,CAAC;AAAA,QAAA;AAAA,MAEb;AAEA,aAAOD,gBAAY,WAAW,EAAE,KAAK,WAAW,OAAOC,IAAM,MAAA,QAAQ,EAAE,oBAAoB,GAAG,QAAQ;AAAA,IAAA;AAAA,EAE1G;AACF,CAAC;;"}