{"version":3,"file":"SopPageHeader.mjs","sources":["../../../src/components/SopPageHeader/SopPageHeader.tsx"],"sourcesContent":["import { defineComponent, withModifiers, useSlots, getCurrentInstance } from 'vue';\nimport { useLocale } from '../../composables/useLocale';\nimport type { RouteLocationRaw, Router } from 'vue-router';\n\ntype StringArray = string | string[];\n\nexport default defineComponent({\n  name: 'SopPageHeader',\n  props: {\n    title: {\n      type: [String,  Array],\n      default: ''\n    },\n    back: {\n      type: [Object, Number, String, Function],\n      default: 0\n    }\n  },\n  setup(props, { slots }) {\n    const instance = getCurrentInstance();\n    const { t } = useLocale();\n\n    const $slots = useSlots();\n    const $router = instance?.proxy?.$router as Router;\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const validatorDataType = (val: any) => Object.prototype.toString.call(val).slice(8, -1);\n\n    function backHtml() {\n      return <>\n        <i class=\"sop-icon sop-icon--arrow-down\" />\n        { t('sop.common.back') }\n      </>;\n    }\n\n    function routeJumpWay() {\n      switch(validatorDataType(props.back)) {\n        case 'Number':\n          return <a\n              href=\"#\"\n              onClick={withModifiers(() => {\n                $router.go(props.back as number);\n              }, ['prevent'])}\n            >\n              {backHtml()}\n            </a>;\n        case 'String':\n          return <a\n              href=\"#\"\n              onClick={withModifiers(() => {\n                $router.push({ path: props.back as string });\n              }, ['prevent'])}\n            >\n              {backHtml()}\n            </a>;\n        case 'Object':\n          return <a\n              href=\"#\"\n              onClick={withModifiers(() => {\n                $router.push(props.back as RouteLocationRaw);\n              }, ['prevent'])}\n            >\n              {backHtml()}\n            </a>;\n        case 'Function':\n          return <a\n            href=\"#\"\n            onClick={withModifiers(() => {\n              (props.back as () => void)();\n            }, ['prevent'])}\n          >\n            {backHtml()}\n          </a>;\n      }\n    }\n\n    function genTitle (title: string | string[]) {\n      if (Array.isArray(title)) {\n        return title.map((text: string, i: number) => (\n          <span key={i} class=\"sop-page-title-item\">\n            <span class=\"text\">{text}</span>\n            {i < title.length -1 ? <span class=\"separate\">/</span> : ''}\n          </span>\n        ));\n      } else {\n        return title;\n      }\n    }\n\n    return () => (\n      <div class=\"sop-page__hd\">\n        {\n          props.back ?\n            <div class=\"sop-page-path\">\n              {routeJumpWay()}\n              <span class=\"slice\">/</span>\n              <div class=\"sop-page-title\">\n                {genTitle(props.title as StringArray)}\n              </div>\n            </div> :\n            <div class=\"sop-page-title\">\n              {genTitle(props.title as StringArray)}\n            </div>\n        }\n        {\n          $slots.opt &&\n          <div class=\"sop-page-opt\">\n            {slots.opt?.()}\n          </div>\n        }\n      </div>\n    );\n  },\n});\n"],"names":["defineComponent","name","props","title","type","String","Array","default","back","Object","Number","Function","setup","slots","instance","getCurrentInstance","t","useLocale","$slots","useSlots","$router","proxy","validatorDataType","val","prototype","toString","call","slice","backHtml","_createVNode","_Fragment","routeJumpWay","withModifiers","go","push","path","genTitle","isArray","map","text","i","length","_createTextVNode","opt"],"mappings":"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"}