{"version":3,"file":"Mask.cjs","sources":["../../../../../../packages/vue-components/vc-tour/src/Mask.tsx"],"sourcesContent":["import type { CSSProperties } from 'vue';\nimport type { PosInfo } from './hooks/useTarget';\nimport { useId } from '@antdv/hooks';\nimport { booleanType, classNames, objectType, someType } from '@antdv/utils';\nimport { defineComponent } from 'vue';\nimport Portal from '../../portal/src/PortalWrapper';\n\nconst COVER_PROPS = {\n  'fill': 'transparent',\n  'pointer-events': 'auto',\n};\n\nexport interface MaskProps {\n  prefixCls?: string;\n  pos: PosInfo; // 获取引导卡片指向的元素\n  rootClassName?: string;\n  showMask?: boolean;\n  style?: CSSProperties;\n  fill?: string;\n  open?: boolean;\n  animated?: boolean | { placeholder: boolean };\n  zIndex?: number;\n}\nconst Mask = defineComponent({\n  name: 'TourMask',\n  props: {\n    prefixCls: { type: String },\n    pos: objectType<PosInfo>(), // 获取引导卡片指向的元素\n    rootClassName: { type: String },\n    showMask: booleanType(),\n    fill: { type: String, default: 'rgba(0,0,0,0.5)' },\n    open: booleanType(),\n    animated: someType<boolean | { placeholder: boolean }>([Boolean, Object]),\n    zIndex: { type: Number },\n  },\n  setup(props, { attrs }) {\n    const id = useId();\n    return () => {\n      const { prefixCls, open, rootClassName, pos, showMask, fill, animated, zIndex } = props;\n\n      const maskId = `${prefixCls}-mask-${id}`;\n      const mergedAnimated = typeof animated === 'object' ? animated?.placeholder : animated;\n      return (\n        <Portal\n          visible={open}\n          autoLock\n          v-slots={{\n            default: () =>\n              open && (\n                <div\n                  {...attrs}\n                  class={classNames(`${prefixCls}-mask`, rootClassName, attrs.class)}\n                  style={[\n                    {\n                      position: 'fixed',\n                      left: 0,\n                      right: 0,\n                      top: 0,\n                      bottom: 0,\n                      zIndex,\n                      pointerEvents: 'none',\n                    },\n                    attrs.style as CSSProperties,\n                  ]}\n                >\n                  {showMask\n                    ? (\n                        <svg\n                          style={{\n                            width: '100%',\n                            height: '100%',\n                          }}\n                        >\n                          <defs>\n                            <mask id={maskId}>\n                              <rect x=\"0\" y=\"0\" width=\"100vw\" height=\"100vh\" fill=\"white\" />\n                              {pos && (\n                                <rect\n                                  x={pos.left}\n                                  y={pos.top}\n                                  rx={pos.radius}\n                                  width={pos.width}\n                                  height={pos.height}\n                                  fill=\"black\"\n                                  class={mergedAnimated ? `${prefixCls}-placeholder-animated` : ''}\n                                />\n                              )}\n                            </mask>\n                          </defs>\n                          <rect\n                            x=\"0\"\n                            y=\"0\"\n                            width=\"100%\"\n                            height=\"100%\"\n                            fill={fill}\n                            mask={`url(#${maskId})`}\n                          />\n\n                          {/* Block click region */}\n                          {pos && (\n                            <>\n                              <rect {...COVER_PROPS} x=\"0\" y=\"0\" width=\"100%\" height={pos.top} />\n                              <rect {...COVER_PROPS} x=\"0\" y=\"0\" width={pos.left} height=\"100%\" />\n                              <rect\n                                {...COVER_PROPS}\n                                x=\"0\"\n                                y={pos.top + pos.height}\n                                width=\"100%\"\n                                height={`calc(100vh - ${pos.top + pos.height}px)`}\n                              />\n                              <rect\n                                {...COVER_PROPS}\n                                x={pos.left + pos.width}\n                                y=\"0\"\n                                width={`calc(100vw - ${pos.left + pos.width}px)`}\n                                height=\"100%\"\n                              />\n                            </>\n                          )}\n                        </svg>\n                      )\n                    : null}\n                </div>\n              ),\n          }}\n        />\n      );\n    };\n  },\n});\n\nexport default Mask;\n"],"names":["COVER_PROPS","Mask","defineComponent","name","props","prefixCls","type","String","pos","objectType","rootClassName","showMask","booleanType","fill","default","open","animated","someType","Boolean","Object","zIndex","Number","setup","attrs","id","useId","maskId","mergedAnimated","placeholder","_createVNode","Portal","classNames","class","position","left","right","top","bottom","pointerEvents","style","width","height","radius","_Fragment"],"mappings":"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"}