{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/selector/src/index.vue"],"sourcesContent":["<template>\n  <hl-tooltip\n    ref=\"popper\"\n    :visible=\"popperVisible\"\n    :teleported=\"compatTeleported\"\n    :offset=\"popperOffset\"\n    :placement=\"placement\"\n    :popper-class=\"`${namespace}-popper ${popperClass}`\"\n    :fallback-placements=\"fallbackPlacements\"\n    :stop-popper-mouse-event=\"false\"\n    :show-arrow=\"false\"\n    transition=\"dropdown\"\n    :gpu-acceleration=\"false\"\n    :persistent=\"persistent\"\n    @hide=\"afterLeave\"\n  >\n    <div\n      v-clickoutside:[popperPaneRef]=\"() => togglePopperVisible(false)\"\n      :class=\"[\n        namespace,\n        realSize && `cascader-${realSize}`,\n        {\n          'is-disabled': isDisabled,\n          'block': block,\n        },\n        $attrs.class,\n      ]\"\n      :style=\"$attrs.style\"\n      @click=\"() => togglePopperVisible(readonly ? undefined : true)\"\n      @keydown=\"handleKeyDown\"\n      @mouseenter=\"inputHover = true\"\n      @mouseleave=\"inputHover = false\"\n      @click.stop\n    >\n      <hl-input\n        ref=\"input\"\n        v-model=\"inputValue\"\n        :placeholder=\"currentPlaceholder\"\n        :readonly=\"readonly\"\n        :disabled=\"isDisabled\"\n        :validate-event=\"false\"\n        :fill=\"realFill\"\n        :thin=\"thin\"\n        :round=\"round\"\n        :size=\"realSize\"\n        :class=\"{\n          'is-focus': popperVisible,\n          'is-tags': presentTags.length,\n        }\"\n        :input-style=\"inputStyle\"\n        @compositionstart=\"handleComposition\"\n        @compositionupdate=\"handleComposition\"\n        @compositionend=\"handleComposition\"\n        @focus=\"e => $emit('focus', e)\"\n        @blur=\"e => $emit('blur', e)\"\n        @input=\"handleInput\"\n      >\n        <template v-if=\"multiple\" #tags>\n          <div v-if=\"presentTags.length\" ref=\"tagWrapper\" class=\"input-tags\">\n            <hl-tag\n              v-for=\"tag in presentTags\"\n              :key=\"tag.key\"\n              :type=\"tagType\"\n              :effect=\"tagEffect\"\n              :active=\"tag.hitState\"\n              :closable=\"tag.closable\"\n              :size=\"realSize\"\n              disable-transitions\n              @close=\"deleteTag(tag)\"\n            >\n              <template v-if=\"tag.isCollapseTag === false\">\n                <slot name=\"tag\" :tag=\"tag\">\n                  {{ tag.text }}\n                </slot>\n              </template>\n              <template v-else>\n                <hl-tooltip\n                  :disabled=\"popperVisible || !collapseTagsTooltip\"\n                  :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n                  placement=\"bottom\"\n                  :show-arrow=\"false\"\n                  :popper-class=\"`collapse-tags-popper`\"\n                >\n                  <template #default>\n                    <slot name=\"tag\" :tag=\"tag\">\n                      {{ tag.text }}\n                    </slot>\n                  </template>\n                  <template #content>\n                    <div class=\"collapse-tags\">\n                      <template\n                        v-for=\"tag2 in allPresentTags.slice(\n                          maxCollapseTags\n                        )\"\n                        :key=\"tag2.key\"\n                      >\n                        <hl-tag\n                          class=\"in-tooltip collapse-tag\"\n                          :type=\"tagType\"\n                          :effect=\"tagEffect\"\n                          :size=\"realSize\"\n                          :hit=\"tag2.hitState\"\n                          :closable=\"tag2.closable\"\n                          disable-transitions\n                          @close=\"deleteTag(tag2)\"\n                        >\n                          <slot name=\"collapse-tag\" :tag=\"tag2\">\n                            {{ tag2.text }}\n                          </slot>\n                        </hl-tag>\n                      </template>\n                    </div>\n                  </template>\n                </hl-tooltip>\n              </template>\n            </hl-tag>\n\n            <input\n              v-if=\"filterable && !isDisabled\"\n              v-model=\"searchInputValue\"\n              type=\"text\"\n              class=\"selector-input\"\n              @input=\"e => handleInput(searchInputValue, e)\"\n              @click.stop=\"togglePopperVisible(true)\"\n              @keydown.delete=\"handleDelete\"\n              @compositionstart=\"handleComposition\"\n              @compositionupdate=\"handleComposition\"\n              @compositionend=\"handleComposition\"\n            >\n          </div>\n        </template>\n        <template v-if=\"$slots.prefix\" #prefix>\n          <slot name=\"prefix\"></slot>\n        </template>\n        <template #suffix>\n          <hl-icon :class=\"['select-caret', popperVisible ? 'is-open' : '', !clearBtnVisible ? 'visible' : '']\" @click.stop=\"togglePopperVisible()\">\n            <system-select-arrow />\n          </hl-icon>\n          <hl-icon key=\"clear\" :class=\"['select-close', clearBtnVisible ? 'visible' : '']\" @click.stop=\"handleClear\">\n            <system-close />\n          </hl-icon>\n        </template>\n      </hl-input>\n    </div>\n\n    <template #content>\n      <div class=\"selector-dropdown\">\n        <slot></slot>\n      </div>\n    </template>\n  </hl-tooltip>\n</template>\n\n<script lang='ts'>\nimport { computed, defineComponent, nextTick, onMounted, ref, watch } from 'vue'\nimport { useResizeObserver } from '@vueuse/core'\nimport HlInput from '@hongluan-ui/components/input'\nimport HlTooltip, { useTooltipContentProps } from '@hongluan-ui/components/tooltip'\nimport HlIcon from '@hongluan-ui/components/icon'\nimport { SystemSelectArrow, SystemClose } from '@hongluan-ui/components/system-icon'\nimport HlTag, { tagProps } from '@hongluan-ui/components/tag'\nimport { ClickOutside as Clickoutside } from '@hongluan-ui/directives'\nimport { useDeprecateAppendToBody } from '@hongluan-ui/components/popper'\nimport { useComposition, useLocale, useConsistentProp, useNamespace } from '@hongluan-ui/hooks'\nimport { EVENT_CODE } from '@hongluan-ui/constants'\nimport { isClient, isValidComponentSize } from '@hongluan-ui/utils'\n\nimport type { PropType, Ref } from 'vue'\nimport type { ComponentSize } from '@hongluan-ui/constants'\n\nexport interface Tag {\n  key: string | number\n  text: unknown\n  hitState?: boolean\n  closable?: boolean\n  isCollapseTag: boolean\n}\n\nexport default defineComponent({\n  name: 'Selector',\n\n  components: {\n    HlInput,\n    HlTooltip,\n    HlTag,\n    HlIcon,\n    SystemSelectArrow,\n    SystemClose,\n  },\n\n  directives: {\n    Clickoutside,\n  },\n\n  props: {\n    size: {\n      type: String as PropType<ComponentSize>,\n      validator: isValidComponentSize,\n    },\n    placeholder: {\n      type: String,\n    },\n    disabled: Boolean,\n    clearable: Boolean,\n    filterable: Boolean,\n    collapseTags: Boolean,\n    /**\n     * @description The max tags number to be shown. To use this, collapse-tags must be true\n     */\n    maxCollapseTags: {\n      type: Number,\n      default: 1,\n    },\n    collapseTagsTooltip: {\n      type: Boolean,\n      default: false,\n    },\n    placement: {\n      type: String,\n      default: 'bottom-start',\n    },\n    fallbackPlacements: {\n      type: Array as PropType<Array<string>>,\n      default: () => [],\n    },\n    popperClass: {\n      type: String,\n      default: '',\n    },\n    block: {\n      type: Boolean,\n      default: false,\n    },\n    inputStyle: {\n      type: Object,\n      default: () => ({}),\n    },\n    multiple: {\n      type: Boolean,\n      default: false,\n    },\n    popperAppendToBody: {\n      type: Boolean,\n      default: undefined,\n    },\n    teleported: useTooltipContentProps.teleported,\n    fill: Boolean,\n    round: Boolean,\n    thin: Boolean,\n    popperOffset: {\n      type: Number,\n      default: 4,\n    },\n    /**\n   * @description when dropdown is inactive and `persistent` is `false`, dropdown will be destroyed\n   */\n    persistent: {\n      type: Boolean,\n      default: true,\n    },\n    // eslint-disable-next-line vue/require-prop-types\n    tagType: { ...tagProps.type, default: '' },\n    tagEffect: { type: String, default: '' },\n  },\n\n  emits: [\n    'focus',\n    'blur',\n    'input',\n    'resize',\n    'after-leave',\n    'keyboard-down',\n    'visible-change',\n    'popper-visible',\n    'remove-tag',\n    'clear',\n  ],\n\n  setup(props, { emit }) {\n    const { namespace } = useNamespace('selector')\n    const { t } = useLocale()\n    const { compatTeleported } = useDeprecateAppendToBody(\n      'Selector',\n      'popperAppendToBody',\n    )\n    const { isComposing, handleComposition } = useComposition({\n      afterComposition(event) {\n        const text = (event.target as HTMLInputElement)?.value\n        handleInput(text)\n      },\n    })\n\n    let pressDeleteCount = 0\n\n    const popper = ref(null)\n    const input = ref(null)\n    const tagWrapper = ref(null)\n    const panel = ref(null)\n    const popperVisible = ref(false)\n    const inputHover = ref(false)\n    const inputValue = ref('')\n    const searchInputValue = ref('')\n    const presentTags: Ref<Tag[]> = ref([])\n    const allPresentTags: Ref<Tag[]> = ref([])\n    const presentText = ref<unknown>('')\n    const checkedNodes = ref<unknown[]>([])\n\n    const { size: realSize, disabled: isDisabled, fill: realFill } = useConsistentProp()\n    const readonly = computed(() => !props.filterable)\n    const inputPlaceholder = computed(() => props.placeholder || t('hl.cascader.placeholder'))\n    const clearBtnVisible = computed(() => {\n      if (\n        !props.clearable ||\n        isDisabled.value ||\n        !inputHover.value\n      ) return false\n\n      return props.multiple ? !!checkedNodes.value.length : !!presentText.value\n    })\n    const currentPlaceholder = computed(() =>\n      searchInputValue.value || presentTags.value.length > 0\n        ? ''\n        : inputPlaceholder.value,\n    )\n\n    const popperPaneRef = computed(() => {\n      return popper.value?.popperRef?.contentRef\n    })\n\n    const setValue = (val: unknown | unknown[]) => {\n      if (Array.isArray(val)) {\n        checkedNodes.value = [...val]\n      } else {\n        presentText.value = val\n      }\n    }\n\n    const afterLeave = () => {\n      emit('after-leave')\n    }\n\n    const togglePopperVisible = (visible?: boolean) => {\n      if (isDisabled.value) return\n\n      visible = visible ?? !popperVisible.value\n\n      if (visible !== popperVisible.value) {\n        popperVisible.value = visible\n        input.value?.input?.setAttribute('aria-expanded', `${visible}`)\n\n        if (visible) {\n          updatePopperPosition()\n          nextTick(() => {\n            emit('popper-visible')\n          })\n        } else if (props.filterable) {\n          if (props.multiple) {\n            searchInputValue.value = ''\n          } else {\n            const { value } = presentText\n            inputValue.value = value as string\n          }\n          emit('input', '')\n        }\n\n        emit('visible-change', visible)\n      }\n    }\n\n    const updatePopperPosition = () => {\n      nextTick(popper.value?.updatePopper)\n    }\n\n    const genTag = (node: unknown): Tag => {\n      return {\n        key: String(Math.random()),\n        text: node,\n        hitState: false,\n        closable: !isDisabled.value,\n        isCollapseTag: false,\n      }\n    }\n\n    const deleteTag = (tag: Tag) => {\n      checkedNodes.value = checkedNodes.value.filter(cn => cn !== tag.text)\n      !checkedNodes.value.length && resetInput()\n      emit('remove-tag', tag)\n    }\n\n    const calculatePresentTags = () => {\n      if (!props.multiple) return\n\n      const nodes = checkedNodes.value\n      const tags: Tag[] = []\n\n      const allTags: Tag[] = []\n      nodes.forEach(node => allTags.push(genTag(node)))\n      allPresentTags.value = allTags\n\n      if (nodes.length) {\n        nodes\n          .slice(0, props.maxCollapseTags)\n          .forEach(node => tags.push(genTag(node)))\n        const rest = nodes.slice(props.maxCollapseTags)\n        const restCount = rest.length\n\n        if (restCount) {\n          if (props.collapseTags) {\n            tags.push({\n              key: '-1',\n              text: `+ ${restCount}`,\n              closable: false,\n              isCollapseTag: true,\n            })\n          } else {\n            rest.forEach(node => tags.push(genTag(node)))\n          }\n        }\n      }\n\n      presentTags.value = tags\n    }\n\n    const updateTags = (cb: (tag: Tag) => void) => {\n      presentTags.value.forEach(cb)\n      allPresentTags.value.forEach(cb)\n    }\n\n    const focusFirstNode = () => {\n      emit('keyboard-down')\n    }\n\n    const updateStyle = () => {\n      const inputInner = input.value?.input\n      const tagWrapperEl = tagWrapper.value\n\n      if (!isClient || !inputInner) return\n\n      emit('resize', input.value.$el)\n\n      if (tagWrapperEl) {\n        updatePopperPosition()\n      }\n    }\n\n    const handleKeyDown = (e: KeyboardEvent) => {\n      if (isComposing.value) return\n\n      switch (e.code) {\n        case EVENT_CODE.enter:\n          togglePopperVisible()\n          break\n        case EVENT_CODE.down:\n          togglePopperVisible(true)\n          nextTick(focusFirstNode)\n          e.preventDefault()\n          break\n        case EVENT_CODE.esc:\n          if (popperVisible.value === true) {\n            e.preventDefault()\n            e.stopPropagation()\n            togglePopperVisible(false)\n          }\n          break\n        case EVENT_CODE.tab:\n          togglePopperVisible(false)\n          break\n      }\n    }\n\n    const handleClear = () => {\n      togglePopperVisible(false)\n      emit('clear')\n      // Maybe need sync from commit: Element+ 6ac49834e\n      resetInput()\n    }\n\n    const resetInput = () => {\n      checkedNodes.value = []\n      presentText.value = ''\n      inputValue.value = ''\n      searchInputValue.value = ''\n    }\n\n    const handleDelete = () => {\n      const tags = presentTags.value\n      const lastTag = tags[tags.length - 1]\n      pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1\n\n      if (!lastTag || !pressDeleteCount || (props.collapseTags && tags.length > 1)) return\n\n      if (lastTag.hitState) {\n        deleteTag(lastTag)\n      } else {\n        lastTag.hitState = true\n      }\n    }\n\n    const handleInput = (val: string, e?: KeyboardEvent) => {\n      !popperVisible.value && togglePopperVisible(true)\n\n      if (e?.isComposing) return\n\n      emit('input', val)\n    }\n\n    watch([checkedNodes, isDisabled, () => props.collapseTags], calculatePresentTags)\n\n    watch(presentTags, () => {\n      nextTick(() => updateStyle())\n    })\n\n    watch(presentText,\n      val => inputValue.value = val as string,\n      { immediate: true },\n    )\n\n    onMounted(() => {\n      const inputEl = input.value?.$el\n      useResizeObserver(inputEl, updateStyle)\n    })\n\n    return {\n      namespace,\n      compatTeleported,\n      popper,\n      popperPaneRef,\n      input,\n      tagWrapper,\n      panel,\n      popperVisible,\n      inputHover,\n      presentText,\n      checkedNodes,\n      inputValue,\n      inputPlaceholder,\n      searchInputValue,\n      currentPlaceholder,\n      presentTags,\n      allPresentTags,\n      isDisabled,\n      realSize,\n      realFill,\n      readonly,\n      clearBtnVisible,\n      setValue,\n      afterLeave,\n      t,\n      togglePopperVisible,\n      updatePopperPosition,\n      deleteTag,\n      updateTags,\n      focusFirstNode,\n      handleKeyDown,\n      handleComposition,\n      handleClear,\n      handleDelete,\n      handleInput,\n    }\n  },\n})\n</script>\n"],"names":["Clickoutside","_createBlock","_createTextVNode","_openBlock","_withDirectives"],"mappings":"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"}