{"version":3,"file":"option.mjs","sources":["../../../../../packages/components/select/src/option.jsx"],"sourcesContent":["import {\r\n  defineComponent,\r\n  inject,\r\n  computed,\r\n  onMounted,\r\n  onBeforeUnmount,\r\n} from \"vue\";\r\nimport { useNamespace } from \"@ui-library/hook\";\r\nimport { SELECT_KEY, OPTION_KEY } from \"./constant\";\r\nimport { XIcon } from \"@ui-library/components\";\r\nimport { Check } from \"song-ui-pro-icon\";\r\n\r\nexport default defineComponent({\r\n  name: \"x-option\",\r\n  props: {\r\n    value: {\r\n      type: [String, Number],\r\n      required: true,\r\n    },\r\n    label: {\r\n      type: String,\r\n      default: \"\",\r\n    },\r\n    disabled: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n  },\r\n  setup(props, { slots }) {\r\n    const ns = useNamespace(\"option\");\r\n    const selectCtx = inject(SELECT_KEY);\r\n\r\n    // 生成唯一ID\r\n    const id = Symbol(\"option\");\r\n\r\n    // 计算是否被选中\r\n    const isSelected = computed(() => {\r\n      return selectCtx.isOptionSelected(props.value);\r\n    });\r\n\r\n    // 计算是否应该显示（过滤功能）\r\n    const isVisible = computed(() => {\r\n      if (!selectCtx.props.filterable || !selectCtx.inputValue.value) {\r\n        return true;\r\n      }\r\n      const label = props.label || slots.default?.();\r\n      return label\r\n        .toLowerCase()\r\n        .includes(selectCtx?.inputValue?.value.toLowerCase());\r\n    });\r\n\r\n    // 处理点击事件\r\n    const handleClick = () => {\r\n      if (props.disabled) return;\r\n      selectCtx.selectOption(props.value, props.label || slots.default?.());\r\n    };\r\n\r\n    // 组件挂载时注册到Select\r\n    onMounted(() => {\r\n      selectCtx.registerOption({\r\n        id,\r\n        value: props.value,\r\n        label: props.label || slots.default?.(),\r\n      });\r\n    });\r\n\r\n    // 组件卸载时从Select注销\r\n    onBeforeUnmount(() => {\r\n      selectCtx.unregisterOption(id);\r\n    });\r\n\r\n    return () =>\r\n      isVisible.value ? (\r\n        <li\r\n          class={[\r\n            ns.b(),\r\n            ns.is(\"selected\", isSelected.value),\r\n            ns.is(\"disabled\", props.disabled),\r\n          ]}\r\n          onClick={handleClick}\r\n        >\r\n          <span class={[ns.e(\"label\")]}>\r\n            {props.label || slots.default?.()}\r\n          </span>\r\n          {isSelected.value && (\r\n            <XIcon class={[ns.e(\"check\")]}>\r\n              <Check />\r\n            </XIcon>\r\n          )}\r\n        </li>\r\n      ) : null;\r\n  },\r\n});\r\n"],"names":["name","props","value","type","String","Number","required","label","default","disabled","Boolean","setup","slots","ns","useNamespace","selectCtx","inject","SELECT_KEY","id","Symbol","isSelected","computed","isOptionSelected","isVisible","filterable","inputValue","toLowerCase","includes","handleClick","selectOption","onMounted","registerOption","onBeforeUnmount","unregisterOption","_createVNode","b","is","e","XIcon","Check"],"mappings":"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"}