import { IconRotate , IconMove} from "@/assets/icons"; import { CompToolbars } from "@/modules/editor/objects/Toolbars"; import { css } from "@linaria/core"; import { defineComponent, onMounted, onUnmounted, ref, nextTick } from "vue"; import { useEditor } from "../../../.."; export const SelectTransfer = defineComponent({ setup() { const editor = useEditor(); const { controls, store } = editor; const { selectCtrl } = controls; const { transferStyle } = selectCtrl; return () => { let toolbarOpts = CompToolbars.default; let comp: any = null; if (selectCtrl.selected.length == 1) { comp = selectCtrl.selected[0].comp; //@ts-ignore toolbarOpts = CompToolbars[comp.compKey] || toolbarOpts; } else { toolbarOpts = CompToolbars.MultiSelector; } const w = selectCtrl.objContainer?.getBound(); const isTextEdit = selectCtrl.selected.length == 1 && selectCtrl.selected[0].comp.compKey == "Text"; return (
{ toolbarOpts.map((item) => { return item.getVisible.call(editor, comp) ? ( item.onClick.call(editor, comp)} /> ) : null; }) }
<> { !isTextEdit &&
} { !isTextEdit &&
} { !isTextEdit &&
} { !isTextEdit &&
}
{transferStyle.showOrthScale && !isTextEdit && (
)} {transferStyle.showOrthScale && !isTextEdit && (
)} {transferStyle.showOrthScale && (
)} {transferStyle.showOrthScale && (
)}
); }; }, }); const selctRectStyle = css` pointer-events: none; `; const showgizmo = css` display: block; left: 0; top: 0; /* pointer-events: none; */ `; const hideGizmo = css` display: none; `; const borderStyle = css` position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 999; `; const borderContentStyle = css` position: absolute; top: 0; left: 0; width: 100%; height: 100%; outline: 2px solid @inf-primary-color; ` const resizeStyle = css` position: absolute; width: 16px; height: 16px; border-radius: 50%; background-color: #fff; z-index: 999; transform: translate(50%, 50%); pointer-events: auto; box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2); cursor: nwse-resize; &:hover { border-color: @inf-primary-color; } `; const scaleBottomRightStyle = css` bottom: -8px; right: -8px; `; const scaleBottomLeftStyle = css` bottom: -8px; left: -8px; `; const scaleTopLeftStyle = css` top: -8px; left: -8px; `; const scaleTopRightStyle = css` top: -8px; right: -8px; `; const transformBtnsStyle = css` @apply space-x-10px whitespace-nowrap; position: absolute; bottom: 0px; left:calc(50% - 32px); font-size: 16px; z-index: 999; pointer-events: auto; transform-origin: 50% 100%; pointer-events: none; `; const transBtnStyle = css` display: inline-block; width: 28px; height: 28px; border-radius: 50%; background-color: #fff; text-align: center; line-height: 28px; font-size: 16px; color: #333; position: relative; top: 50px; @apply shadow cursor-move; pointer-events: auto; &:hover { color: #fff; background-color: @inf-primary-color; } `; const toolbarStyle = css` @apply bg-white shadow rounded space-x-4px p-4px whitespace-nowrap; position: absolute; top: 0; left: 50%; transform: translate(0%, -60px); z-index: 999; `; const resizeHeightBtnCls = css` position: absolute; width: 30px; height: 8px; border-radius: 4px; left: 50%; transform: translate(-50%, -4px); pointer-events: auto; cursor: ns-resize; background: rgba(255, 255, 255, 0.3); &:hover { background: @inf-primary-color; } @apply shadow; z-index: 999; `; const scaleTopCls = css` top: -4px; left: calc(50% - 15px); `; const scaleBottomCls = css` bottom:-4px; left: calc(50% - 15px); `; const resizeWidthBtnCls = css` position: absolute; width: 8px; height: 30px; border-radius: 4px; pointer-events: auto; cursor: ew-resize; background: rgba(255, 255, 255, 0.3); &:hover { background: @inf-primary-color; } @apply shadow; z-index: 999; `; const scaleRightCls = css` right: -4px; top: calc(50% - 15px); `; const scaleLeftCls = css` left: -4px; top: calc(50% - 15px); `;