vue-box-overflow
Version:
Headless UI for automatically collapsing boxes when overflow in Vue.
1 lines • 1.88 kB
Source Map (JSON)
{"version":3,"file":"useOverflow.cjs","sources":["../../src/useOverflow.ts"],"sourcesContent":["/**\n * @author shunzi <tobyzsj@gmail.com>\n * @date 2024-04-01 13:36:40\n */\nimport type { BoxOverflowOptions } from 'box-overflow-core'\nimport { BoxOverflow } from 'box-overflow-core'\nimport { onScopeDispose, shallowRef, triggerRef, unref, watch } from 'vue'\n\nexport function useOverflow(options: BoxOverflowOptions) {\n const overflow = new BoxOverflow(unref(options))\n const state = shallowRef(overflow)\n\n const cleanup = overflow.onMount()\n\n watch(\n () => unref(options).getContainer(),\n (el) => {\n if (el)\n overflow.onUpdate()\n },\n {\n immediate: true,\n },\n )\n\n watch(\n () => unref(options),\n (options) => {\n overflow.setOptions({\n ...options,\n onDisplayChange: (overflowItems) => {\n triggerRef(state)\n options.onDisplayChange?.(overflowItems)\n },\n })\n overflow.onUpdate()\n triggerRef(state)\n },\n {\n immediate: true,\n },\n )\n\n onScopeDispose(cleanup)\n\n return state\n}\n"],"names":["BoxOverflow","unref","shallowRef","watch","options","triggerRef","onScopeDispose"],"mappings":";;;;AAQO,SAAS,YAAY,SAA6B;AACvD,QAAM,WAAW,IAAIA,gBAAAA,YAAYC,IAAAA,MAAM,OAAO,CAAC;AACzC,QAAA,QAAQC,eAAW,QAAQ;AAE3B,QAAA,UAAU,SAAS;AAEzBC,MAAA;AAAA,IACE,MAAMF,IAAA,MAAM,OAAO,EAAE,aAAa;AAAA,IAClC,CAAC,OAAO;AACF,UAAA;AACF,iBAAS,SAAS;AAAA,IACtB;AAAA,IACA;AAAA,MACE,WAAW;AAAA,IACb;AAAA,EAAA;AAGFE,MAAA;AAAA,IACE,MAAMF,IAAAA,MAAM,OAAO;AAAA,IACnB,CAACG,aAAY;AACX,eAAS,WAAW;AAAA,QAClB,GAAGA;AAAAA,QACH,iBAAiB,CAAC,kBAAkB;;AAClCC,cAAA,WAAW,KAAK;AAChBD,yBAAQ,oBAARA,kCAA0B;AAAA,QAC5B;AAAA,MAAA,CACD;AACD,eAAS,SAAS;AAClBC,UAAA,WAAW,KAAK;AAAA,IAClB;AAAA,IACA;AAAA,MACE,WAAW;AAAA,IACb;AAAA,EAAA;AAGFC,MAAA,eAAe,OAAO;AAEf,SAAA;AACT;;"}