bootstrap-vue-next
Version:
BootstrapVueNext is an early and lovely component library for Vue 3 & Nuxt 3 based on Bootstrap 5 and Typescript.
1 lines • 6.57 kB
Source Map (JSON)
{"version":3,"file":"orchestratorShared-BTzXOM4N.mjs","sources":["../src/composables/orchestratorShared.ts"],"sourcesContent":["import {\n type ComponentPublicInstance,\n inject,\n nextTick,\n provide,\n type Ref,\n ref,\n toValue,\n type WatchHandle,\n} from 'vue'\nimport type {\n ControllerKey,\n OrchestratorArrayValue,\n PromiseWithComponent,\n PromiseWithComponentInternal,\n} from '../types/ComponentOrchestratorTypes'\nimport type {BvTriggerableEvent} from '../utils'\nimport {orchestratorRegistryKey} from '../utils/keys'\n\nexport function buildPromise<TComponent, TParam, TArrayValue extends OrchestratorArrayValue>(\n _id: ControllerKey,\n store: Ref<TArrayValue[]>\n): {\n value: PromiseWithComponent<TComponent, TParam>\n resolve: (value: BvTriggerableEvent | boolean | null) => void\n stop: WatchHandle | undefined\n} {\n let resolveFunc: (value: BvTriggerableEvent | boolean | null) => void = () => {}\n\n const promise = new Promise<BvTriggerableEvent | boolean | null>((resolve) => {\n resolveFunc = resolve\n }) as PromiseWithComponent<TComponent, TParam>\n\n type RefWithMethods = ComponentPublicInstance<TComponent> & {\n show?: () => void\n hide?: (trigger?: string, noEmit?: boolean) => void\n toggle?: () => void\n }\n Object.assign(promise, {\n id: _id,\n ref: null as ComponentPublicInstance<TComponent> | null,\n show() {\n const refWithMethods = this.ref as RefWithMethods | null\n if (refWithMethods?.show) {\n refWithMethods.show()\n } else return this.set({modelValue: true} as unknown as Partial<TParam>)\n return promise\n },\n hide(trigger?: string) {\n const refWithMethods = this.ref as RefWithMethods | null\n if (refWithMethods?.hide) {\n refWithMethods.hide(trigger, true)\n } else return this.set({modelValue: false} as unknown as Partial<TParam>)\n return promise\n },\n toggle() {\n const currentItem = this.get() as TParam & {modelValue?: unknown}\n const refWithMethods = this.ref as RefWithMethods | null\n if (refWithMethods?.toggle) {\n refWithMethods.toggle()\n } else return this.set({modelValue: !currentItem?.modelValue} as unknown as Partial<TParam>)\n return promise\n },\n get(): TParam | undefined {\n return store.value.find((el) => el._self === _id) as TParam | undefined\n },\n set(val: Partial<TParam>) {\n const itemIndex = store.value.findIndex((el) => el._self === _id)\n const item = store.value[itemIndex]\n if (item) {\n const v = {...toValue(item), ...toValue(val)}\n if (item.modelValue !== v.modelValue) {\n item['onUpdate:modelValue']?.(v.modelValue as boolean)\n }\n store.value.splice(itemIndex, 1, {\n ...v,\n title: toValue((v as Record<string, unknown>).title),\n body: toValue((v as Record<string, unknown>).body),\n modelValue: toValue(v.modelValue),\n } as TArrayValue)\n }\n return promise\n },\n async destroy() {\n const item = store.value.find((el) => el._self === _id)\n if (!item) return\n item.promise.stop?.()\n if (item.modelValue) {\n await new Promise((resolve) => {\n const prev = item['onHidden']\n item['onHidden'] = (e) => {\n prev?.(e)\n resolve(e)\n }\n nextTick(() => {\n this.hide('destroy')\n })\n })\n }\n store.value.splice(\n store.value.findIndex((el) => el._self === _id),\n 1\n )\n },\n async [Symbol.asyncDispose]() {\n await this.destroy()\n },\n } as PromiseWithComponentInternal<TComponent, TParam>)\n\n return {\n value: promise,\n resolve: resolveFunc,\n stop: undefined as WatchHandle | undefined,\n }\n}\n\nexport const _newOrchestratorRegistry = (): {\n store: Ref<OrchestratorArrayValue[]>\n _isOrchestratorInstalled: Ref<boolean>\n _isToastAppend: Ref<boolean>\n} => ({\n store: ref<OrchestratorArrayValue[]>([]),\n _isOrchestratorInstalled: ref(false),\n _isToastAppend: ref(false),\n})\n\nexport const useOrchestratorRegistry = () => {\n const orchestratorRegistry = inject(orchestratorRegistryKey, undefined)\n\n if (orchestratorRegistry) {\n return orchestratorRegistry\n }\n const newOrchestratorRegistry = _newOrchestratorRegistry()\n provide(orchestratorRegistryKey, newOrchestratorRegistry)\n return newOrchestratorRegistry\n}\n"],"names":[],"mappings":"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"}