{"version":3,"file":"icon-picker2.mjs","sources":["../../../../../../../packages/components/icon-picker/src/icon-picker.vue"],"sourcesContent":["<script lang=\"ts\">\n// import svgIcons from \"virtual:svg-icons-names\";\nimport { defineComponent, ref, unref, watch, watchEffect } from 'vue'\nimport { useDebounceFn } from '@vueuse/core'\nimport { Empty, Input, Pagination, Popover } from 'ant-design-vue'\nimport { useCopyToClipboard } from '@tav-ui/hooks/web/useCopyToClipboard'\nimport { usePagination } from '@tav-ui/hooks/web/usePagination'\nimport ScrollContainer from '@tav-ui/components/container-scroll'\nimport Icon from '@tav-ui/components/icon'\nimport SvgIcon from '@tav-ui/components/icon-svg'\nimport { useMessage } from '@tav-ui/hooks/web/useMessage'\nimport { tavI18n } from '@tav-ui/locales'\nimport iconsData from '../data/icons.data'\nimport { iconPickerProps } from './types'\nimport type { ChangeEvent } from './types'\n\nconst AInput = Input\nconst APopover = Popover\nconst APagination = Pagination\nconst AEmpty = Empty\n\nconst { createMessage } = useMessage()\n\nexport default defineComponent({\n  name: 'TaIconPicker',\n  components: { AInput, APopover, APagination, AEmpty, ScrollContainer, SvgIcon, Icon },\n  props: iconPickerProps,\n  emits: ['change', 'update:value'],\n  setup(props, { emit }) {\n    function getIcons() {\n      const data = iconsData as any\n      const prefix: string = data?.prefix ?? ''\n      let result: string[] = []\n      if (prefix) result = (data?.icons ?? []).map((item) => `${prefix}:${item}`)\n      else if (Array.isArray(iconsData)) result = iconsData as string[]\n\n      return result\n    }\n\n    const isSvgMode = props.mode === 'svg'\n    const icons = getIcons()\n\n    const currentSelect = ref('')\n    const visible = ref(false)\n    const currentList = ref(icons)\n\n    const prefixCls = 'ta-icon-picker'\n\n    const debounceHandleSearchChange = useDebounceFn(handleSearchChange, 100)\n    const { clipboardRef, isSuccessRef } = useCopyToClipboard(props.value)\n\n    const { getPaginationList, getTotal, setCurrentPage } = usePagination(\n      currentList,\n      props.pageSize\n    )\n\n    watchEffect(() => {\n      currentSelect.value = props.value\n    })\n\n    watch(\n      () => currentSelect.value,\n      (v) => {\n        emit('update:value', v)\n        return emit('change', v)\n      }\n    )\n\n    function handlePageChange(page: number) {\n      setCurrentPage(page)\n    }\n\n    function handleClick(icon: string) {\n      currentSelect.value = icon\n      if (props.copy) {\n        clipboardRef.value = icon\n        if (unref(isSuccessRef)) createMessage.success(tavI18n('Tav.icon.2'))\n      }\n    }\n\n    function handleSearchChange(e: ChangeEvent) {\n      const value = e.target.value\n      if (!value) {\n        setCurrentPage(1)\n        currentList.value = icons\n        return\n      }\n      currentList.value = icons.filter((item) => item.includes(value))\n    }\n    return {\n      isSvgMode,\n      tavI18n,\n      icons,\n      currentSelect,\n      visible,\n      currentList,\n      prefixCls,\n      debounceHandleSearchChange,\n      getPaginationList,\n      handleClick,\n      getTotal,\n      handlePageChange,\n    }\n  },\n})\n</script>\n<template>\n  <AInput\n    v-model:value=\"currentSelect\"\n    disabled\n    :style=\"{ width }\"\n    :placeholder=\"tavI18n('Tav.icon.1')\"\n    :class=\"prefixCls\"\n  >\n    <template #addonAfter>\n      <a-popover\n        v-model=\"visible\"\n        placement=\"bottomLeft\"\n        trigger=\"click\"\n        :overlay-class-name=\"`${prefixCls}-popover`\"\n      >\n        <template #title>\n          <div class=\"flex justify-between\">\n            <AInput\n              :placeholder=\"tavI18n('Tav.common.queryText')\"\n              allow-clear\n              @change=\"debounceHandleSearchChange\"\n            />\n          </div>\n        </template>\n\n        <template #content>\n          <div v-if=\"getPaginationList.length\">\n            <ScrollContainer class=\"border border-solid border-t-0\">\n              <ul class=\"flex flex-wrap px-2\">\n                <li\n                  v-for=\"icon in getPaginationList\"\n                  :key=\"icon\"\n                  :class=\"currentSelect === icon ? 'border border-primary' : ''\"\n                  class=\"p-2 w-1/8 cursor-pointer mr-1 mt-1 flex justify-center items-center border border-solid hover:border-primary\"\n                  :title=\"icon\"\n                  @click=\"handleClick(icon)\"\n                >\n                  <!-- <Icon :icon=\"icon\" :prefix=\"prefix\" /> -->\n                  <SvgIcon v-if=\"isSvgMode\" :name=\"icon\" />\n                  <Icon v-else :icon=\"icon\" />\n                </li>\n              </ul>\n            </ScrollContainer>\n            <div v-if=\"getTotal >= pageSize\" class=\"flex py-2 items-center justify-center\">\n              <a-pagination\n                show-less-items\n                size=\"small\"\n                :page-size=\"pageSize\"\n                :total=\"getTotal\"\n                @change=\"handlePageChange\"\n              />\n            </div>\n          </div>\n          <template v-else>\n            <div class=\"p-5\">\n              <a-empty />\n            </div>\n          </template>\n        </template>\n\n        <span v-if=\"isSvgMode && currentSelect\" class=\"cursor-pointer px-2 py-1 flex items-center\">\n          <SvgIcon :name=\"currentSelect\" />\n        </span>\n        <Icon v-else :icon=\"currentSelect || 'ion:apps-outline'\" class=\"cursor-pointer px-2 py-1\" />\n      </a-popover>\n    </template>\n  </AInput>\n</template>\n"],"names":["ScrollContainer","SvgIcon","Icon","_resolveComponent","_withCtx","_createVNode","_createElementVNode","_openBlock","_createElementBlock","_normalizeClass","_createBlock","_createCommentVNode"],"mappings":"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"}