{"version":3,"file":"uri-input.vue2.mjs","sources":["../../../../../../packages/components/uri-input/src/uri-input.vue"],"sourcesContent":["<template>\r\n  <ll-input\r\n    v-model:value=\"innerValue\"\r\n    v-bind=\"attrs\"\r\n    :class=\"[bem.b()]\"\r\n    :disabled=\"props.disabled\"\r\n    :placeholder=\"props.placeholder\"\r\n    @blur=\"handleBlur\"\r\n  >\r\n    <template #addonBefore>\r\n      <ll-select\r\n        v-model:value=\"innerPrefix\"\r\n        :options=\"httpUriOptions\"\r\n        style=\"min-width: 90px\"\r\n        :disabled=\"props.disabled\"\r\n        :allow-clear=\"false\"\r\n        @change=\"handleChange\"\r\n      />\r\n    </template>\r\n    <template v-if=\"props.suffix\" #suffix>\r\n      <span>{{ props.suffix }}</span>\r\n    </template>\r\n    <template v-if=\"props.addonAfter || showCopy\" #addonAfter>\r\n      <div :class=\"bem.e('addon-after')\">\r\n        <span v-if=\"props.addonAfter\">{{ addonAfter }}</span>\r\n\r\n        <ll-copy-text v-if=\"showCopy\" :value=\"copyText\">\r\n          <template #value>\r\n            <ll-icon icon-name=\"icon-copy\" />\r\n          </template>\r\n        </ll-copy-text>\r\n      </div>\r\n    </template>\r\n  </ll-input>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { createNamespace } from '@ll-plus/utils'\r\nimport { Form } from 'ant-design-vue'\r\nimport type { Ref } from 'vue'\r\nimport { ref, useAttrs, watch } from 'vue'\r\nimport {\r\n  getHttpMethodUri,\r\n  httpUriOptions,\r\n  uriInputEmits,\r\n  uriInputProps,\r\n} from './uri-input'\r\n\r\n// 添加明确的类型定义\r\ninterface UriInputValue {\r\n  prefix: string\r\n  url: string\r\n}\r\n\r\n//Component Config\r\ndefineOptions({ name: 'LlUriInput' })\r\nconst props = defineProps(uriInputProps)\r\nconst emits = defineEmits(uriInputEmits)\r\nconst attrs = useAttrs()\r\nconst formItemContext = Form.useInjectFormItemContext()\r\n\r\nconst bem = createNamespace('uri-input')\r\n\r\nconst copyText = ref('')\r\n\r\n// 为 ref 添加明确的类型注解\r\nconst innerValue: Ref<string> = ref<string>('')\r\nconst innerPrefix: Ref<string> = ref<string>('')\r\n\r\nconst handleChange = (): void => {\r\n  const url: string = innerValue.value\r\n    ? innerPrefix.value +\r\n      innerValue.value +\r\n      (props.suffix || '') +\r\n      (props.addonAfter || '')\r\n    : ''\r\n\r\n  copyText.value = url ? url : innerPrefix.value\r\n  emits('update:value', url)\r\n  emits('change', url)\r\n  formItemContext.onFieldChange()\r\n}\r\n\r\nconst handleBlur = (e: Event): void => {\r\n  if (attrs.onBlur && typeof attrs.onBlur === 'function') {\r\n    attrs.onBlur(e)\r\n  }\r\n  formItemContext.onFieldBlur()\r\n}\r\n\r\n// 安全的值转换函数\r\nconst convertToString = (value: any): string => {\r\n  if (value === null || value === undefined) {\r\n    return ''\r\n  }\r\n\r\n  if (typeof value === 'string') {\r\n    return value\r\n  }\r\n\r\n  if (value instanceof Date) {\r\n    // 将 Date 对象转换为 ISO 字符串或其他格式\r\n    return value.toISOString()\r\n    // 或者使用其他格式，如：\r\n    // return value.toLocaleDateString()\r\n    // return value.getTime().toString()\r\n  }\r\n\r\n  if (typeof value === 'number' || typeof value === 'boolean') {\r\n    return String(value)\r\n  }\r\n\r\n  // 对于对象或其他复杂类型\r\n  try {\r\n    return JSON.stringify(value)\r\n  } catch {\r\n    return String(value)\r\n  }\r\n}\r\n\r\nwatch(\r\n  () => props.value,\r\n  (val: any): void => {\r\n    // 安全地处理值转换\r\n    const safeValue: string = convertToString(val)\r\n    const { prefix, url }: UriInputValue = getHttpMethodUri(safeValue)\r\n\r\n    let currentUrl: string = url\r\n    if (url.includes(prefix)) {\r\n      currentUrl = currentUrl.replace(prefix, '')\r\n    }\r\n\r\n    innerPrefix.value = prefix\r\n    innerValue.value = currentUrl\r\n\r\n    copyText.value = innerValue.value ? prefix + innerValue.value : prefix\r\n    if (props.suffix) {\r\n      innerValue.value = url.replace(props.suffix, '')\r\n    }\r\n\r\n    if (props.addonAfter) {\r\n      innerValue.value = url.replace(props.addonAfter, '')\r\n    }\r\n  },\r\n  {\r\n    immediate: true,\r\n  },\r\n)\r\n\r\nwatch(\r\n  innerValue,\r\n  (): void => {\r\n    handleChange()\r\n  },\r\n  {\r\n    immediate: true,\r\n  },\r\n)\r\n\r\nwatch(\r\n  () => props.addonAfter,\r\n  () => {\r\n    handleChange()\r\n  },\r\n)\r\n</script>\r\n"],"names":["_openBlock","_createBlock","_mergeProps","_unref","_createVNode","_createElementVNode","_toDisplayString","showCopy","_normalizeClass","_createElementBlock","addonAfter"],"mappings":";;;;;;;;;;;;;;AAwDA,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,MAAM,KAAA,GAAQ,MAAA;AACd,IAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,IAAA,MAAM,eAAA,GAAkB,KAAK,wBAAA,EAAyB;AAEtD,IAAA,MAAM,GAAA,GAAM,gBAAgB,WAAW,CAAA;AAEvC,IAAA,MAAM,QAAA,GAAW,IAAI,EAAE,CAAA;AAGvB,IAAA,MAAM,UAAA,GAA0B,IAAY,EAAE,CAAA;AAC9C,IAAA,MAAM,WAAA,GAA2B,IAAY,EAAE,CAAA;AAE/C,IAAA,MAAM,eAAe,MAAY;AAC/B,MAAA,MAAM,GAAA,GAAc,UAAA,CAAW,KAAA,GAC3B,WAAA,CAAY,KAAA,GACZ,UAAA,CAAW,KAAA,IACV,KAAA,CAAM,MAAA,IAAU,EAAA,CAAA,IAChB,KAAA,CAAM,UAAA,IAAc,EAAA,CAAA,GACrB,EAAA;AAEJ,MAAA,QAAA,CAAS,KAAA,GAAQ,GAAA,GAAM,GAAA,GAAM,WAAA,CAAY,KAAA;AACzC,MAAA,KAAA,CAAM,gBAAgB,GAAG,CAAA;AACzB,MAAA,KAAA,CAAM,UAAU,GAAG,CAAA;AACnB,MAAA,eAAA,CAAgB,aAAA,EAAc;AAAA,IAChC,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAAmB;AACrC,MAAA,IAAI,KAAA,CAAM,MAAA,IAAU,OAAO,KAAA,CAAM,WAAW,UAAA,EAAY;AACtD,QAAA,KAAA,CAAM,OAAO,CAAC,CAAA;AAAA,MAChB;AACA,MAAA,eAAA,CAAgB,WAAA,EAAY;AAAA,IAC9B,CAAA;AAGA,IAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAuB;AAC9C,MAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,KAAA,CAAA,EAAW;AACzC,QAAA,OAAO,EAAA;AAAA,MACT;AAEA,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,IAAI,iBAAiB,IAAA,EAAM;AAEzB,QAAA,OAAO,MAAM,WAAA,EAAY;AAAA,MAI3B;AAEA,MAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,SAAA,EAAW;AAC3D,QAAA,OAAO,OAAO,KAAK,CAAA;AAAA,MACrB;AAGA,MAAA,IAAI;AACF,QAAA,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA,MAC7B,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,OAAO,KAAK,CAAA;AAAA,MACrB;AAAA,IACF,CAAA;AAEA,IAAA,KAAA;AAAA,MACE,MAAM,KAAA,CAAM,KAAA;AAAA,MACZ,CAAC,GAAA,KAAmB;AAElB,QAAA,MAAM,SAAA,GAAoB,gBAAgB,GAAG,CAAA;AAC7C,QAAA,MAAM,EAAE,MAAA,EAAQ,GAAA,EAAI,GAAmB,iBAAiB,SAAS,CAAA;AAEjE,QAAA,IAAI,UAAA,GAAqB,GAAA;AACzB,QAAA,IAAI,GAAA,CAAI,QAAA,CAAS,MAAM,CAAA,EAAG;AACxB,UAAA,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AAAA,QAC5C;AAEA,QAAA,WAAA,CAAY,KAAA,GAAQ,MAAA;AACpB,QAAA,UAAA,CAAW,KAAA,GAAQ,UAAA;AAEnB,QAAA,QAAA,CAAS,KAAA,GAAQ,UAAA,CAAW,KAAA,GAAQ,MAAA,GAAS,WAAW,KAAA,GAAQ,MAAA;AAChE,QAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,UAAA,UAAA,CAAW,KAAA,GAAQ,GAAA,CAAI,OAAA,CAAQ,KAAA,CAAM,QAAQ,EAAE,CAAA;AAAA,QACjD;AAEA,QAAA,IAAI,MAAM,UAAA,EAAY;AACpB,UAAA,UAAA,CAAW,KAAA,GAAQ,GAAA,CAAI,OAAA,CAAQ,KAAA,CAAM,YAAY,EAAE,CAAA;AAAA,QACrD;AAAA,MACF,CAAA;AAAA,MACA;AAAA,QACE,SAAA,EAAW;AAAA;AACb,KACF;AAEA,IAAA,KAAA;AAAA,MACE,UAAA;AAAA,MACA,MAAY;AACV,QAAA,YAAA,EAAa;AAAA,MACf,CAAA;AAAA,MACA;AAAA,QACE,SAAA,EAAW;AAAA;AACb,KACF;AAEA,IAAA,KAAA;AAAA,MACE,MAAM,KAAA,CAAM,UAAA;AAAA,MACZ,MAAM;AACJ,QAAA,YAAA,EAAa;AAAA,MACf;AAAA,KACF;;;;;;AAnKE,MAAA,OAAAA,SAAA,EAAA,EAAAC,WAAA,CAgCW,mBAAA,EAhCXC,UAAA,CAgCW;AAAA,QA/BD,OAAO,UAAA,CAAA,KAAA;AAAA,gEAAA,UAAA,CAAU,KAAA,GAAA,MAAA;AAAA,SACjBC,KAAA,CAAA,KAAA,CAAA,EAAK;AAAA,QACZ,OAAK,CAAGA,KAAA,CAAA,GAAA,CAAA,CAAI,GAAC,CAAA;AAAA,QACb,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,aAAa,KAAA,CAAM,WAAA;AAAA,QACnB,MAAA,EAAM;AAAA;QAEI,WAAA,UACT,MAOE;AAAA,UAPFC,YAOE,oBAAA,EAAA;AAAA,YANQ,OAAO,WAAA,CAAA,KAAA;AAAA,oEAAA,WAAA,CAAW,KAAA,GAAA,MAAA,CAAA;AAAA,YACzB,OAAA,EAASD,MAAA,cAAA,CAAA;AAAA,YACV,KAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA;AAAA,YACC,UAAU,KAAA,CAAM,QAAA;AAAA,YAChB,aAAA,EAAa,KAAA;AAAA,YACb,QAAA,EAAQ;AAAA;;;;;QAGG,MAAM,MAAA;gBAAS,QAAA;AAAA,sBAC7B,MAA+B;AAAA,YAA/BE,kBAAA;AAAA,cAA+B,MAAA;AAAA,cAAA,IAAA;AAAA,cAAAC,eAAA,CAAtB,MAAM,MAAM,CAAA;AAAA,cAAA;AAAA;AAAA;AAAA;;;QAEP,KAAA,CAAM,UAAA,IAAcC,IAAAA,CAAAA,QAAAA;gBAAW,YAAA;AAAA,sBAC7C,MAQM;AAAA,YARNF,kBAAA;AAAA,cAQM,KAAA;AAAA,cAAA;AAAA,gBARA,OAAKG,cAAA,CAAEL,KAAA,CAAA,GAAA,CAAA,CAAI,CAAA,CAAC,aAAA,CAAA;AAAA;;gBACJ,KAAA,CAAM,UAAA,IAAlBH,SAAA,EAAA,EAAAS,kBAAA;AAAA,kBAAqD,MAAA;AAAA;kCAApBC,KAAAA,UAAU,CAAA;AAAA,kBAAA;AAAA;AAAA,iBAAA;gBAEvBH,IAAAA,CAAAA,QAAAA,iBAApBN,YAIe,uBAAA,EAAA;AAAA;kBAJgB,OAAO,QAAA,CAAA;AAAA;kBACzB,KAAA,UACT,MAAiC;AAAA,oBAAjCG,WAAA,CAAiC,kBAAA,EAAA,EAAxB,WAAA,EAAU,aAAW;AAAA;;;;;;;;;;;;;;;;;;"}