UNPKG

@aplus-frontend/antdv

Version:

Vue basic component library maintained based on ant-design-vue

125 lines (124 loc) 4.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _vue = require("vue"); var _classNames = _interopRequireDefault(require("../_util/classNames")); var _useId = _interopRequireDefault(require("../_util/hooks/useId")); var _PortalWrapper = _interopRequireDefault(require("../_util/PortalWrapper")); var _type = require("../_util/type"); const COVER_PROPS = { fill: 'transparent', 'pointer-events': 'auto' }; const Mask = (0, _vue.defineComponent)({ name: 'TourMask', props: { prefixCls: { type: String }, pos: (0, _type.objectType)(), rootClassName: { type: String }, showMask: (0, _type.booleanType)(), fill: { type: String, default: 'rgba(0,0,0,0.5)' }, open: (0, _type.booleanType)(), animated: (0, _type.someType)([Boolean, Object]), zIndex: { type: Number } }, setup(props, _ref) { let { attrs } = _ref; const id = (0, _useId.default)(); return () => { const { prefixCls, open, rootClassName, pos, showMask, fill, animated, zIndex } = props; const maskId = `${prefixCls}-mask-${id}`; const mergedAnimated = typeof animated === 'object' ? animated === null || animated === void 0 ? void 0 : animated.placeholder : animated; return (0, _vue.createVNode)(_PortalWrapper.default, { "visible": open, "autoLock": true }, { default: () => open && (0, _vue.createVNode)("div", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, attrs), {}, { "class": (0, _classNames.default)(`${prefixCls}-mask`, rootClassName, attrs.class), "style": [{ position: 'fixed', left: 0, right: 0, top: 0, bottom: 0, zIndex, pointerEvents: 'none' }, attrs.style] }), [showMask ? (0, _vue.createVNode)("svg", { "style": { width: '100%', height: '100%' } }, [(0, _vue.createVNode)("defs", null, [(0, _vue.createVNode)("mask", { "id": maskId }, [(0, _vue.createVNode)("rect", { "x": "0", "y": "0", "width": "100vw", "height": "100vh", "fill": "white" }, null), pos && (0, _vue.createVNode)("rect", { "x": pos.left, "y": pos.top, "rx": pos.radius, "width": pos.width, "height": pos.height, "fill": "black", "class": mergedAnimated ? `${prefixCls}-placeholder-animated` : '' }, null)])]), (0, _vue.createVNode)("rect", { "x": "0", "y": "0", "width": "100%", "height": "100%", "fill": fill, "mask": `url(#${maskId})` }, null), pos && (0, _vue.createVNode)(_vue.Fragment, null, [(0, _vue.createVNode)("rect", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, COVER_PROPS), {}, { "x": "0", "y": "0", "width": "100%", "height": pos.top }), null), (0, _vue.createVNode)("rect", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, COVER_PROPS), {}, { "x": "0", "y": "0", "width": pos.left, "height": "100%" }), null), (0, _vue.createVNode)("rect", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, COVER_PROPS), {}, { "x": "0", "y": pos.top + pos.height, "width": "100%", "height": `calc(100vh - ${pos.top + pos.height}px)` }), null), (0, _vue.createVNode)("rect", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, COVER_PROPS), {}, { "x": pos.left + pos.width, "y": "0", "width": `calc(100vw - ${pos.left + pos.width}px)`, "height": "100%" }), null)])]) : null]) }); }; } }); var _default = exports.default = Mask;