{"version":3,"file":"navbar.mjs","sources":["../../src/navbar/navbar.tsx"],"sourcesContent":["import { defineComponent, computed } from 'vue';\nimport { ChevronLeftIcon as TChevronLeftIcon } from 'tdesign-icons-vue-next';\nimport config from '../config';\nimport props from './props';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useTNodeJSX } from '../hooks/tnode';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n  name: `${prefix}-navbar`,\n  components: { TChevronLeftIcon },\n  props,\n  emits: ['left-click', 'right-click'],\n  setup(props, { slots }) {\n    const navbarClass = usePrefixClass('navbar');\n    const renderTNodeJSX = useTNodeJSX();\n\n    const animationSuffix = computed(() => (props.animation ? '-animation' : ''));\n    const navClass = computed(() => [\n      navbarClass.value,\n      {\n        [`${navbarClass.value}--fixed`]: props.fixed,\n      },\n      props.visible\n        ? `${navbarClass.value}--visible${animationSuffix.value}`\n        : `${navbarClass.value}--hide${animationSuffix.value}`,\n    ]);\n\n    const navStyle = computed(() => `position: ${props.fixed ? 'fixed' : 'relative'};`);\n\n    const handleLeftClick = () => {\n      props.onLeftClick?.();\n    };\n\n    const handleRightClick = () => {\n      props.onRightClick?.();\n    };\n\n    return () => {\n      const { fixed, titleMaxLength, title, leftArrow } = props;\n\n      const renderRightContent = () => {\n        const rightContent = renderTNodeJSX('right');\n        if (!rightContent) {\n          return null;\n        }\n        return (\n          <div class={`${navbarClass.value}__right`} onClick={handleRightClick}>\n            {rightContent}\n          </div>\n        );\n      };\n\n      const renderCapsuleContent = () => {\n        const capsuleContent = renderTNodeJSX('capsule');\n        if (!capsuleContent) {\n          return null;\n        }\n        return <div class={`${navbarClass.value}__capsule`}>{capsuleContent}</div>;\n      };\n\n      const renderTitleContent = () => {\n        const isStringTitle = typeof title === 'string' && !slots.title;\n        let titleContent = renderTNodeJSX('title');\n        if (!titleContent) {\n          return null;\n        }\n        if (titleMaxLength != null && title) {\n          if (titleMaxLength <= 0) {\n            console.warn('titleMaxLength must be greater than 0');\n          } else {\n            titleContent = title.length <= titleMaxLength ? title : `${(title as string).slice(0, titleMaxLength)}...`;\n          }\n        }\n\n        return isStringTitle ? <span class={`${navbarClass.value}__center-title`}>{titleContent}</span> : titleContent;\n      };\n      return (\n        <div class={navClass.value} style={navStyle.value}>\n          {fixed && <div class={`${navbarClass.value}____placeholder`}></div>}\n          <div class={`${navbarClass.value}__content`}>\n            <div class={`${navbarClass.value}__left`} onClick={handleLeftClick}>\n              {leftArrow && <t-chevron-left-icon class={`${navbarClass.value}__left-arrow`} />}\n              {renderTNodeJSX('left')}\n              {renderCapsuleContent()}\n            </div>\n            <div class={`${navbarClass.value}__center`}>{renderTitleContent()}</div>\n            {renderRightContent()}\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","defineComponent","name","components","TChevronLeftIcon","props","emits","setup","slots","_ref","navbarClass","usePrefixClass","renderTNodeJSX","useTNodeJSX","animationSuffix","computed","animation","navClass","value","_defineProperty","concat","fixed","visible","navStyle","handleLeftClick","_props2$onLeftClick","onLeftClick","handleRightClick","_props2$onRightClick","onRightClick","titleMaxLength","title","leftArrow","renderRightContent","rightContent","_createVNode","renderCapsuleContent","capsuleContent","renderTitleContent","isStringTitle","titleContent","console","warn","length","slice"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAQA,SAAWC,MAAA,CAAXD;AAER,cAAeE,eAAgB,CAAA;AAC7BC,EAAAA,gBAASH,MAAA,EAAA,SAAA,CAAA;AACTI,EAAAA,UAAA,EAAY;AAAEC,IAAAA,gBAAiB,EAAjBA,eAAAA;GAAiB;AAC/BC,EAAAA,KAAA,EAAAA,KAAA;AACAC,EAAAA,KAAA,EAAO,CAAC,YAAA,EAAc,aAAa,CAAA;AACnCC,EAAAA,KAAMF,WAANE,KAAMF,CAAAA,MAAAA,EAAAA,IAAAA,EAAkB;AAAA,IAAA,IAATG,KAAA,GAAAC,IAAA,CAAAD,KAAA,CAAA;AACP,IAAA,IAAAE,WAAA,GAAcC,eAAe,QAAQ,CAAA,CAAA;AAC3C,IAAA,IAAMC,iBAAiBC,WAAY,EAAA,CAAA;IAEnC,IAAMC,kBAAkBC,QAAS,CAAA,YAAA;AAAA,MAAA,OAAOV,MAAM,CAAAW,SAAA,GAAY,eAAe,EAAG,CAAA;KAAA,CAAA,CAAA;IACtE,IAAAC,QAAA,GAAWF,SAAS,YAAA;MAAA,OAAM,CAC9BL,WAAY,CAAAQ,KAAA,EAAAC,eAAA,CAAA,EAAA,EAAA,EAAA,CAAAC,MAAA,CAENV,WAAY,CAAAQ,KAAA,EAAA,SAAA,CAAA,EAAiBb,MAAM,CAAAgB,KAAA,GAEzChB,MAAAA,CAAMiB,OACF,GAAAF,EAAAA,CAAAA,MAAA,CAAGV,WAAY,CAAAQ,KAAA,EAAAE,WAAAA,CAAAA,CAAAA,MAAA,CAAiBN,gBAAgBI,KAChD,CAAAE,GAAAA,EAAAA,CAAAA,MAAA,CAAGV,WAAY,CAAAQ,KAAA,EAAAE,QAAAA,CAAAA,CAAAA,MAAA,CAAcN,eAAgB,CAAAI,KAAA,CAAA,CAClD,CAAA;KAAA,CAAA,CAAA;IAED,IAAMK,WAAWR,QAAS,CAAA,YAAA;MAAA,OAAAK,YAAAA,CAAAA,MAAA,CAAmBf,MAAM,CAAAgB,KAAA,GAAQ,UAAU,UAAa,EAAA,GAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAElF,IAAA,IAAMG,kBAAkB,SAAlBA,kBAAwB;AAAA,MAAA,IAAAC,mBAAA,CAAA;AAC5BpB,MAAAA,CAAAA,mBAAAA,GAAAA,OAAMqB,WAAc,MAAA,IAAA,IAAAD,mBAAA,KAAA,KAAA,CAAA,IAApBpB,mBAAAA,CAAAA,IAAAA,CAAAA,MAAoB,CAAA,CAAA;KACtB,CAAA;AAEA,IAAA,IAAMsB,mBAAmB,SAAnBA,mBAAyB;AAAA,MAAA,IAAAC,oBAAA,CAAA;AAC7BvB,MAAAA,CAAAA,oBAAAA,GAAAA,OAAMwB,YAAe,MAAA,IAAA,IAAAD,oBAAA,KAAA,KAAA,CAAA,IAArBvB,oBAAAA,CAAAA,IAAAA,CAAAA,MAAqB,CAAA,CAAA;KACvB,CAAA;AAEA,IAAA,OAAO,YAAM;AACX,MAAA,IAAQgB,KAAA,GAA4ChB,MAAAA,CAA5CgB,KAAA;QAAOS,cAAgB,GAAqBzB,MAAAA,CAArCyB,cAAgB;QAAAC,KAAA,GAAqB1B,MAAAA,CAArB0B,KAAA;QAAOC,YAAc3B,MAAAA,CAAd2B;AAEtC,MAAA,IAAMC,qBAAqB,SAArBA,qBAA2B;AACzB,QAAA,IAAAC,YAAA,GAAetB,eAAe,OAAO,CAAA,CAAA;QAC3C,IAAI,CAACsB,YAAc,EAAA;AACV,UAAA,OAAA,IAAA,CAAA;AACT,SAAA;AAEE,QAAA,OAAAC,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAAf,MAAA,CAAeV,YAAYQ,KAAgB,EAAA,SAAA,CAAA;UAAA,SAASS,EAAAA,gBAAAA;AACjD,SAAA,EAAA,CAAAO,YAAA,CAAA,CAAA,CAAA;OAGP,CAAA;AAEA,MAAA,IAAME,uBAAuB,SAAvBA,uBAA6B;AAC3B,QAAA,IAAAC,cAAA,GAAiBzB,eAAe,SAAS,CAAA,CAAA;QAC/C,IAAI,CAACyB,cAAgB,EAAA;AACZ,UAAA,OAAA,IAAA,CAAA;AACT,SAAA;AACA,QAAA,OAAAF,WAAA,CAAA,KAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAAf,MAAA,CAAsBV,WAAY,CAAAQ,KAAA,EAAA,WAAA,CAAA;AAAA,SAAA,EAAA,CAAmBmB;OACvD,CAAA;AAEA,MAAA,IAAMC,qBAAqB,SAArBA,qBAA2B;QAC/B,IAAMC,aAAgB,GAAA,OAAOR,KAAU,KAAA,QAAA,IAAY,CAACvB,KAAM,CAAAuB,KAAA,CAAA;AACtD,QAAA,IAAAS,YAAA,GAAe5B,eAAe,OAAO,CAAA,CAAA;QACzC,IAAI,CAAC4B,YAAc,EAAA;AACV,UAAA,OAAA,IAAA,CAAA;AACT,SAAA;AACI,QAAA,IAAAV,cAAA,IAAkB,QAAQC,KAAO,EAAA;UACnC,IAAID,kBAAkB,CAAG,EAAA;AACvBW,YAAAA,OAAA,CAAQC,KAAK,uCAAuC,CAAA,CAAA;AACtD,WAAO,MAAA;AACUF,YAAAA,YAAA,GAAAT,KAAA,CAAMY,UAAUb,cAAiB,GAAAC,KAAA,GAAA,EAAA,CAAAX,MAAA,CAAYW,KAAiB,CAAAa,KAAA,CAAM,GAAGd,cAAc,CAAA,EAAA,KAAA,CAAA,CAAA;AACtG,WAAA;AACF,SAAA;QAEO,OAAAS,aAAA,GAAAJ,WAAA,CAAA,MAAA,EAAA;AAAA,UAAA,OAAA,EAAA,EAAA,CAAAf,MAAA,CAAgCV,WAAY,CAAAQ,KAAA,EAAA,gBAAA,CAAA;SAAwBsB,EAAAA,CAAAA,YAAa,KAAUA,YAAA,CAAA;OACpG,CAAA;AACA,MAAA,OAAAL,WAAA,CAAA,KAAA,EAAA;QAAA,OACclB,EAAAA,QAAS,CAAAC,KAAA;AAAA,QAAA,OAAA,EAAcK,QAAS,CAAAL,KAAAA;OACzCG,EAAAA,CAAAA;2BAAwBX,YAAYQ,KAAwB,EAAA,iBAAA,CAAA;AAAA,OAAA,EAAA,IAAA,CAAA,EAAAiB,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAAf,MAAA,CAC9CV,WAAY,CAAAQ,KAAA,EAAA,WAAA,CAAA;AAAA,OAAA,EAAA,CAAAiB,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAAf,MAAA,CACVV,WAAA,CAAYQ;iBAAwBM,EAAAA,eAAAA;AAAA,OAAA,EAAA,CAChDQ;2BAA4CtB,YAAYQ,KAAqB,EAAA,cAAA,CAAA;OAAA,EAAA,IAAA,CAAA,EAC7EN,eAAe,MAAM,CAAA,EACrBwB,oBAAqB,EAAA,CAAA,CAAA,EAAAD,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAAf,MAAA,CAETV,YAAYQ,KAAkB,EAAA,UAAA,CAAA;AAAA,OAAA,EAAA,CAAAoB,kBAAA,GAC5CL,CAAAA,EAAAA,kBAAmB,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;KAI5B,CAAA;AACF,GAAA;AACF,CAAC,CAAA;;;;"}