{"version":3,"file":"cascade.mjs","sources":["../../src/picker/cascade.vue","../../src/picker/cascade.vue?vue&type=template&id=7ec0ae22&lang.js"],"sourcesContent":["<template>\n  <picker\n    v-bind=\"pickerProps\"\n    :columns=\"(selected) => generateCascadePickerColumns(selected, columns, finalDepth, finalSubOptionsRecord)\"\n  />\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref } from 'vue';\nimport config from '../config';\nimport PickerProps from './props';\nimport { PickerColumn, PickerValue } from './type';\nimport Picker from './picker';\n\nconst { prefix } = config;\nconst name = `${prefix}-cascade`;\nexport default defineComponent({\n  name,\n  components: { Picker },\n  props: PickerProps,\n  setup(props: any, context) {\n    const pickerProps = computed(() => ({ ...props }));\n    const finalDepth = ref(1);\n    const finalSubOptionsRecord = ref({});\n    const generateCascadePickerColumns = (\n      value: PickerValue[],\n      options: any,\n      depth: number,\n      subOptionsRecord: Record<string, any>,\n    ) => {\n      const columns: PickerColumn[] = [];\n      columns.push(\n        options.map((option: any) => ({\n          label: option.label,\n          value: option.value,\n        })),\n      );\n      for (let i = 0; i < depth - 1; i++) {\n        const x = value[i];\n        const subOptions = subOptionsRecord[x];\n        if (!subOptions) {\n          columns.push([]);\n        } else {\n          columns.push(\n            subOptions.map((option: any) => ({\n              label: option.label,\n              value: option.value,\n            })),\n          );\n        }\n      }\n      return columns;\n    };\n    const initDepthAndRecord = (options: any) => {\n      let depth = 1;\n      const subOptionsRecord: Record<string, any[]> = {};\n      function traverse(option: any, currentDepth: number) {\n        if (!option.children) {\n          return;\n        }\n        subOptionsRecord[option.value] = option.children;\n        const nextDepth = currentDepth + 1;\n        if (nextDepth > depth) {\n          depth = nextDepth;\n        }\n        option.children.forEach((option: any) => {\n          traverse(option, nextDepth);\n        });\n      }\n      options.forEach((option: any) => {\n        traverse(option, 1);\n      });\n      finalDepth.value = depth;\n      finalSubOptionsRecord.value = subOptionsRecord;\n    };\n    initDepthAndRecord(props.columns);\n    return {\n      name,\n      finalDepth,\n      finalSubOptionsRecord,\n      pickerProps,\n      generateCascadePickerColumns,\n    };\n  },\n});\n</script>\n","<template>\n  <picker\n    v-bind=\"pickerProps\"\n    :columns=\"(selected) => generateCascadePickerColumns(selected, columns, finalDepth, finalSubOptionsRecord)\"\n  />\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref } from 'vue';\nimport config from '../config';\nimport PickerProps from './props';\nimport { PickerColumn, PickerValue } from './type';\nimport Picker from './picker';\n\nconst { prefix } = config;\nconst name = `${prefix}-cascade`;\nexport default defineComponent({\n  name,\n  components: { Picker },\n  props: PickerProps,\n  setup(props: any, context) {\n    const pickerProps = computed(() => ({ ...props }));\n    const finalDepth = ref(1);\n    const finalSubOptionsRecord = ref({});\n    const generateCascadePickerColumns = (\n      value: PickerValue[],\n      options: any,\n      depth: number,\n      subOptionsRecord: Record<string, any>,\n    ) => {\n      const columns: PickerColumn[] = [];\n      columns.push(\n        options.map((option: any) => ({\n          label: option.label,\n          value: option.value,\n        })),\n      );\n      for (let i = 0; i < depth - 1; i++) {\n        const x = value[i];\n        const subOptions = subOptionsRecord[x];\n        if (!subOptions) {\n          columns.push([]);\n        } else {\n          columns.push(\n            subOptions.map((option: any) => ({\n              label: option.label,\n              value: option.value,\n            })),\n          );\n        }\n      }\n      return columns;\n    };\n    const initDepthAndRecord = (options: any) => {\n      let depth = 1;\n      const subOptionsRecord: Record<string, any[]> = {};\n      function traverse(option: any, currentDepth: number) {\n        if (!option.children) {\n          return;\n        }\n        subOptionsRecord[option.value] = option.children;\n        const nextDepth = currentDepth + 1;\n        if (nextDepth > depth) {\n          depth = nextDepth;\n        }\n        option.children.forEach((option: any) => {\n          traverse(option, nextDepth);\n        });\n      }\n      options.forEach((option: any) => {\n        traverse(option, 1);\n      });\n      finalDepth.value = depth;\n      finalSubOptionsRecord.value = subOptionsRecord;\n    };\n    initDepthAndRecord(props.columns);\n    return {\n      name,\n      finalDepth,\n      finalSubOptionsRecord,\n      pickerProps,\n      generateCascadePickerColumns,\n    };\n  },\n});\n</script>\n"],"names":["prefix","config","name","defineComponent","components","Picker","props","PickerProps","setup","context","pickerProps","computed","_objectSpread","finalDepth","ref","finalSubOptionsRecord","generateCascadePickerColumns","value","options","depth","subOptionsRecord","columns","push","map","option","label","i","x","subOptions","initDepthAndRecord","traverse","currentDepth","children","nextDepth","forEach","_createBlock","_component_picker","_mergeProps","_ctx","selected"],"mappings":"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"}