@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 3.59 kB
Source Map (JSON)
{"version":3,"file":"tour-step.mjs","sources":["../../../components/tour/tour-step.ts"],"sourcesContent":["import { defineComponent, inject, onBeforeUnmount, reactive, renderSlot, watch } from 'vue'\r\n\r\nimport { useProps } from '@vexip-ui/config'\r\nimport { tourStepProps } from './props'\r\nimport { TOUR_STATE } from './symbol'\r\n\r\nimport type { TourPayload, TourStepOptions } from './symbol'\r\n\r\ntype StepPropKey = keyof typeof tourStepProps\r\n\r\nconst propKeys = Object.keys(tourStepProps) as StepPropKey[]\r\nconst deepProps: StepPropKey[] = []\r\nconst ignoredProps: StepPropKey[] = ['renderer']\r\n\r\nconst funcProp = {\r\n default: null,\r\n isFunc: true,\r\n static: true,\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'TourStep',\r\n props: tourStepProps,\r\n setup(_props, { slots }) {\r\n const props = useProps('tourStep', _props, {\r\n target: {\r\n default: null,\r\n static: true,\r\n },\r\n placement: 'bottom',\r\n title: '',\r\n content: '',\r\n order: {\r\n default: 0,\r\n static: true,\r\n },\r\n type: 'default',\r\n renderer: funcProp,\r\n })\r\n\r\n const tourState = inject(TOUR_STATE, null)\r\n const options = reactive({}) as TourStepOptions\r\n\r\n for (const key of propKeys) {\r\n if (ignoredProps.includes(key)) continue\r\n\r\n watch(\r\n () => props[key],\r\n value => {\r\n ;(options[key as keyof TourStepOptions] as any) = value\r\n },\r\n { immediate: true, deep: deepProps.includes(key) },\r\n )\r\n }\r\n\r\n watch(() => props.renderer, setRenderer)\r\n\r\n setRenderer()\r\n\r\n tourState?.increaseStep(options)\r\n\r\n onBeforeUnmount(() => {\r\n tourState?.decreaseStep(options)\r\n })\r\n\r\n function setRenderer() {\r\n if (typeof slots.default === 'function') {\r\n options.renderer = (payload: TourPayload) => renderSlot(slots, 'default', payload as any)\r\n } else if (typeof props.renderer === 'function') {\r\n options.renderer = props.renderer\r\n } else {\r\n options.renderer = undefined\r\n }\r\n }\r\n\r\n return () => null\r\n },\r\n})\r\n"],"names":["propKeys","tourStepProps","deepProps","ignoredProps","funcProp","TourStep","defineComponent","_props","slots","props","useProps","tourState","inject","TOUR_STATE","options","reactive","key","watch","value","setRenderer","onBeforeUnmount","payload","renderSlot"],"mappings":";;;;AAUA,MAAMA,IAAW,OAAO,KAAKC,CAAa,GACpCC,IAA2B,CAAC,GAC5BC,IAA8B,CAAC,UAAU,GAEzCC,IAAW;AAAA,EACf,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AACV,GAEAC,IAAeC,EAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAOL;AAAA,EACP,MAAMM,GAAQ,EAAE,OAAAC,KAAS;AACjB,UAAAC,IAAQC,EAAS,YAAYH,GAAQ;AAAA,MACzC,QAAQ;AAAA,QACN,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,MACA,WAAW;AAAA,MACX,OAAO;AAAA,MACP,SAAS;AAAA,MACT,OAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,MACA,MAAM;AAAA,MACN,UAAUH;AAAA,IAAA,CACX,GAEKO,IAAYC,EAAOC,GAAY,IAAI,GACnCC,IAAUC,EAAS,EAAE;AAE3B,eAAWC,KAAOhB;AACZ,MAAAG,EAAa,SAASa,CAAG,KAE7BC;AAAA,QACE,MAAMR,EAAMO,CAAG;AAAA,QACf,CAASE,MAAA;AACL,UAAAJ,EAAQE,CAA4B,IAAYE;AAAA,QACpD;AAAA,QACA,EAAE,WAAW,IAAM,MAAMhB,EAAU,SAASc,CAAG,EAAE;AAAA,MACnD;AAGI,IAAAC,EAAA,MAAMR,EAAM,UAAUU,CAAW,GAE3BA,EAAA,GAEZR,KAAA,QAAAA,EAAW,aAAaG,IAExBM,EAAgB,MAAM;AACpB,MAAAT,KAAA,QAAAA,EAAW,aAAaG;AAAA,IAAO,CAChC;AAED,aAASK,IAAc;AACjB,MAAA,OAAOX,EAAM,WAAY,aAC3BM,EAAQ,WAAW,CAACO,MAAyBC,EAAWd,GAAO,WAAWa,CAAc,IAC/E,OAAOZ,EAAM,YAAa,aACnCK,EAAQ,WAAWL,EAAM,WAEzBK,EAAQ,WAAW;AAAA,IACrB;AAGF,WAAO,MAAM;AAAA,EAAA;AAEjB,CAAC;"}