UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.76 kB
{"version":3,"file":"collection.mjs","sources":["../../../../../../packages/components/collection/src/collection.ts"],"sourcesContent":["import { inject, onBeforeUnmount, onMounted, provide, ref, unref } from 'vue'\nimport Collection from './collection.vue'\nimport CollectionItem from './collection-item.vue'\n\nimport type { InjectionKey, SetupContext } from 'vue'\nimport type {\n ElCollectionInjectionContext,\n ElCollectionItemInjectionContext,\n} from './tokens'\n\nexport const COLLECTION_ITEM_SIGN = `data-el-collection-item`\n\n// Make sure the first letter of name is capitalized\nexport const createCollectionWithScope = (name: string) => {\n const COLLECTION_NAME = `El${name}Collection`\n const COLLECTION_ITEM_NAME = `${COLLECTION_NAME}Item`\n const COLLECTION_INJECTION_KEY: InjectionKey<ElCollectionInjectionContext> =\n Symbol(COLLECTION_NAME)\n const COLLECTION_ITEM_INJECTION_KEY: InjectionKey<ElCollectionItemInjectionContext> =\n Symbol(COLLECTION_ITEM_NAME)\n\n const ElCollection = Object.assign({}, Collection, {\n name: COLLECTION_NAME,\n setup() {\n const collectionRef = ref<HTMLElement>()\n const itemMap: ElCollectionInjectionContext['itemMap'] = new Map()\n const getItems = (() => {\n const collectionEl = unref(collectionRef)\n\n if (!collectionEl) return []\n const orderedNodes = Array.from(\n collectionEl.querySelectorAll(`[${COLLECTION_ITEM_SIGN}]`)\n )\n\n const items = [...itemMap.values()]\n\n return items.sort(\n (a, b) => orderedNodes.indexOf(a.ref!) - orderedNodes.indexOf(b.ref!)\n )\n }) as ElCollectionInjectionContext['getItems']\n\n provide(COLLECTION_INJECTION_KEY, {\n itemMap,\n getItems,\n collectionRef,\n })\n },\n })\n\n const ElCollectionItem = Object.assign({}, CollectionItem, {\n name: COLLECTION_ITEM_NAME,\n setup(_: unknown, { attrs }: SetupContext) {\n const collectionItemRef = ref<HTMLElement>()\n const collectionInjection = inject(COLLECTION_INJECTION_KEY, undefined)!\n\n provide(COLLECTION_ITEM_INJECTION_KEY, {\n collectionItemRef,\n })\n\n onMounted(() => {\n const collectionItemEl = unref(collectionItemRef)\n if (collectionItemEl) {\n collectionInjection.itemMap.set(collectionItemEl, {\n ref: collectionItemEl,\n ...attrs,\n })\n }\n })\n\n onBeforeUnmount(() => {\n const collectionItemEl = unref(collectionItemRef)!\n collectionInjection.itemMap.delete(collectionItemEl)\n })\n },\n })\n\n return {\n COLLECTION_INJECTION_KEY,\n COLLECTION_ITEM_INJECTION_KEY,\n ElCollection,\n ElCollectionItem,\n }\n}\n"],"names":[],"mappings":";;;;AAUO,MAAM,oBAAuB,GAAA,CAAA,uBAAA,EAAA;AAGvB,MAAA,yBAAA,GAA4B,CAAC,IAAiB,KAAA;AACzD,EAAA,MAAM,kBAAkB,CAAK,EAAA,EAAA,IAAA,CAAA,UAAA,CAAA,CAAA;AAC7B,EAAA,MAAM,uBAAuB,CAAG,EAAA,eAAA,CAAA,IAAA,CAAA,CAAA;AAChC,EAAM,MAAA,wBAAA,GACJ,OAAO,eAAe,CAAA,CAAA;AACxB,EAAM,MAAA,6BAAA,GACJ,OAAO,oBAAoB,CAAA,CAAA;AAE7B,EAAA,MAAM,YAAe,GAAA,MAAA,CAAO,MAAO,CAAA,IAAI,UAAY,EAAA;AAAA,IACjD,IAAM,EAAA,eAAA;AAAA,IACN,KAAQ,GAAA;AACN,MAAA,MAAM,gBAAgB,GAAiB,EAAA,CAAA;AACvC,MAAM,MAAA,OAAA,uBAAuD,GAAI,EAAA,CAAA;AACjE,MAAA,MAAM,WAAY,MAAM;AACtB,QAAM,MAAA,YAAA,GAAe,MAAM,aAAa,CAAA,CAAA;AAExC,QAAA,IAAI,CAAC,YAAA;AAAc,UAAA,OAAO,EAAC,CAAA;AAC3B,QAAA,MAAM,eAAe,KAAM,CAAA,IAAA;AAAA,UACzB,YAAA,CAAa,gBAAiB,CAAA,CAAA,CAAA,EAAI,oBAAuB,CAAA,CAAA,CAAA,CAAA;AAAA,SAC3D,CAAA;AAEA,QAAA,MAAM,KAAQ,GAAA,CAAC,GAAG,OAAA,CAAQ,QAAQ,CAAA,CAAA;AAElC,QAAA,OAAO,KAAM,CAAA,IAAA;AAAA,UACX,CAAC,CAAG,EAAA,CAAA,KAAM,YAAa,CAAA,OAAA,CAAQ,CAAE,CAAA,GAAI,CAAI,GAAA,YAAA,CAAa,OAAQ,CAAA,CAAA,CAAE,GAAI,CAAA;AAAA,SACtE,CAAA;AAAA,OACF,CAAA;AAEA,MAAA,OAAA,CAAQ,wBAA0B,EAAA;AAAA,QAChC,OAAA;AAAA,QACA,QAAA;AAAA,QACA,aAAA;AAAA,OACD,CAAA,CAAA;AAAA,KACH;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,gBAAmB,GAAA,MAAA,CAAO,MAAO,CAAA,IAAI,cAAgB,EAAA;AAAA,IACzD,IAAM,EAAA,oBAAA;AAAA,IACN,KAAM,CAAA,CAAA,EAAY,EAAE,KAAA,EAAuB,EAAA;AACzC,MAAA,MAAM,oBAAoB,GAAiB,EAAA,CAAA;AAC3C,MAAM,MAAA,mBAAA,GAAsB,MAAO,CAAA,wBAAA,EAA0B,KAAS,CAAA,CAAA,CAAA;AAEtE,MAAA,OAAA,CAAQ,6BAA+B,EAAA;AAAA,QACrC,iBAAA;AAAA,OACD,CAAA,CAAA;AAED,MAAA,SAAA,CAAU,MAAM;AACd,QAAM,MAAA,gBAAA,GAAmB,MAAM,iBAAiB,CAAA,CAAA;AAChD,QAAA,IAAI,gBAAkB,EAAA;AACpB,UAAoB,mBAAA,CAAA,OAAA,CAAQ,IAAI,gBAAkB,EAAA;AAAA,YAChD,GAAK,EAAA,gBAAA;AAAA,YACL,GAAG,KAAA;AAAA,WACJ,CAAA,CAAA;AAAA,SACH;AAAA,OACD,CAAA,CAAA;AAED,MAAA,eAAA,CAAgB,MAAM;AACpB,QAAM,MAAA,gBAAA,GAAmB,MAAM,iBAAiB,CAAA,CAAA;AAChD,QAAoB,mBAAA,CAAA,OAAA,CAAQ,OAAO,gBAAgB,CAAA,CAAA;AAAA,OACpD,CAAA,CAAA;AAAA,KACH;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,wBAAA;AAAA,IACA,6BAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,GACF,CAAA;AACF;;;;"}