"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FreeSelection = void 0;
var hooks_1 = require("../../hooks");
var reactive_vue_1 = require("@formily/reactive-vue");
var core_1 = require("@designable/core");
var shared_1 = require("@designable/shared");
var classnames_1 = __importDefault(require("classnames"));
var vue_demi_1 = require("vue-demi");
exports.FreeSelection = (0, reactive_vue_1.observer)((0, vue_demi_1.defineComponent)({
    name: 'FreeSelection',
    props: [],
    setup: function () {
        var cursorRef = (0, hooks_1.useCursor)();
        var viewportRef = (0, hooks_1.useViewport)();
        var prefixRef = (0, hooks_1.usePrefix)('aux-free-selection');
        return function () {
            var cursor = cursorRef.value;
            var viewport = viewportRef.value;
            var createSelectionStyle = function () {
                var startDragPoint = viewport.getOffsetPoint({
                    x: cursor.dragStartPosition.topClientX,
                    y: cursor.dragStartPosition.topClientY,
                });
                var currentPoint = viewport.getOffsetPoint({
                    x: cursor.position.topClientX,
                    y: cursor.position.topClientY,
                });
                var rect = (0, shared_1.calcRectByStartEndPoint)(startDragPoint, currentPoint, viewport.scrollX -
                    cursor.dragStartScrollOffset.scrollX, viewport.scrollY -
                    cursor.dragStartScrollOffset.scrollY);
                var baseStyle = {
                    position: 'absolute',
                    top: 0,
                    left: 0,
                    opacity: 0.2,
                    borderWidth: 1,
                    borderStyle: 'solid',
                    transform: "perspective(1px) translate3d(".concat(rect.x, "px,").concat(rect.y, "px,0)"),
                    height: (0, shared_1.isNum)(rect.height) ? rect.height + 'px' : rect.height,
                    width: (0, shared_1.isNum)(rect.width) ? rect.width + 'px' : rect.width,
                    pointerEvents: 'none',
                    boxSizing: 'border-box',
                    zIndex: 1,
                };
                return baseStyle;
            };
            if (cursorRef.value.status !== core_1.CursorStatus.Dragging ||
                cursorRef.value.type !== core_1.CursorType.Selection)
                return null;
            return (<div class={(0, classnames_1.default)(prefixRef.value)} style={createSelectionStyle()}></div>);
        };
    },
}));
//# sourceMappingURL=FreeSelection.jsx.map