import { IconRotate , IconMove} from "@/assets/icons"; import { css } from "@linaria/core"; import { defineComponent, ref, nextTick, reactive, watch } from "vue"; import { useEditor } from "../../../.."; import { LiveToolbars } from "@/modules/editor/objects/Toolbars/liveTools"; export const SelectTransfer = defineComponent({ setup() { const editor = useEditor(); const { controls, store } = editor; const { selectCtrl } = controls; const { transferStyle } = selectCtrl; const toolbarRef = ref(); const state = reactive({ toolbarW: 0, }) watch(()=>[controls.selectCtrl.gizmo.state.transform.selected], ()=>{ console.log("changing--") nextTick(()=>{ nextTick(()=>{ if (!toolbarRef.value) { return } const r = toolbarRef.value.getBoundingClientRect(); state.toolbarW = r.width; }) }) }) return () => { let comp: any = null; if (controls.selectCtrl.gizmo.selected.length == 1) { comp = controls.selectCtrl.gizmo.selected[0].comp } const w :any = selectCtrl.objContainer.getBound(); const isTextEdit = selectCtrl.gizmo.selected.length == 1 && selectCtrl.gizmo.selected[0].comp.compKey == "Text"; let yTop = w?.y; if ( yTop < 0) { yTop = 0; } return (
{ LiveToolbars.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: 10px; height: 10px; 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%, -45px); box-shadow: 0px 3px 6px 1px rgba(0,0,0,0.16); z-index: 999; color: black; padding: 0 !important; display: flex; align-items: center; `; 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); `;