import { defineComponent, ref, inject, computed, onMounted, onBeforeUnmount, watch, openBlock, createElementBlock, normalizeClass, renderSlot, normalizeStyle, toDisplayString } from "vue";
const _sfc_main = /* @__PURE__ */ defineComponent({
  __name: "OptionPC",
  props: {
    label: {},
    value: { type: [String, Number, Boolean, Object] },
    customOptionContentStyle: { type: [Boolean, null, String, Object, Array] }
  },
  setup(__props) {
    const optionRef = ref(null);
    const props = __props;
    const select = inject("select");
    const isSelected = computed(
      () => select && select.selectedValue === props.value
    );
    const optionData = computed(() => ({
      label: props.label,
      value: props.value,
      ref: optionRef
    }));
    onMounted(() => {
      select == null ? void 0 : select.onOptionCreated(optionData.value);
    });
    onBeforeUnmount(() => {
      select == null ? void 0 : select.onOptionDestroyed(props.value);
    });
    watch(
      () => [props.value, props.label],
      (val, oldVal) => {
        if (JSON.stringify(val) !== JSON.stringify(oldVal)) {
          select == null ? void 0 : select.onOptionDestroyed(oldVal);
          select == null ? void 0 : select.onOptionCreated(optionData.value);
        }
      }
    );
    function handleChooseOption() {
      select == null ? void 0 : select.onOptionSelected(optionData.value);
    }
    return (_ctx, _cache) => {
      return openBlock(), createElementBlock("div", {
        ref_key: "optionRef",
        ref: optionRef,
        class: normalizeClass(["option-container", { active: isSelected.value }]),
        onClick: handleChooseOption
      }, [
        _ctx.$slots.customOptionContent ? renderSlot(_ctx.$slots, "customOptionContent", { key: 0 }, void 0, true) : (openBlock(), createElementBlock("span", {
          key: 1,
          style: normalizeStyle(props.customOptionContentStyle),
          class: "option-content"
        }, toDisplayString(_ctx.label || _ctx.value), 5))
      ], 2);
    };
  }
});
export {
  _sfc_main as default
};
