{"version":3,"file":"X_commonControls.mjs","sources":["../../../src/controls/X_commonControls.ts"],"sourcesContent":["//@ts-nocheck\nimport { changeWidth } from './changeWidth';\nimport { Control } from './Control';\nimport { scaleCursorStyleHandler, scalingEqually } from './scale';\nimport {\n  scaleOrSkewActionName,\n  scaleSkewCursorStyleHandler,\n  scalingYOrSkewingX,\n} from './scaleSkew';\nimport { renderCircleControl } from './controlRendering';\n\n// use this function if you want to generate new controls for every instance\nexport const createObjectDefaultControls = () => ({\n  tl: new Control({\n    x: -0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n\n  tr: new Control({\n    x: 0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n\n  bl: new Control({\n    x: -0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n\n  br: new Control({\n    x: 0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n\n  // mtr: new Control({\n  //   x: 0,\n  //   y: -0.5,\n  //   actionHandler: rotationWithSnapping,\n  //   cursorStyleHandler: rotationStyleHandler,\n  //   offsetY: -40,\n  //   withConnection: true,\n  //   actionName: 'rotate',\n  // }),\n});\n\nexport const createObjectDefaultNoRotateControls = () => ({\n  tl: new Control({\n    x: -0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n\n  tr: new Control({\n    x: 0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n\n  bl: new Control({\n    x: -0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n\n  br: new Control({\n    x: 0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n});\n\nexport const createObjectImageControls = () => ({\n  tl: new Control({\n    x: -0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n\n  tr: new Control({\n    x: 0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n\n  bl: new Control({\n    x: -0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n\n  br: new Control({\n    x: 0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n});\nexport const createObjectFileControls = () => ({\n  tl: new Control({\n    x: -0.5,\n    y: -0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n  br: new Control({\n    x: 0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n});\nexport const createObjectArrowControls = () => ({\n  tl: new Control({\n    x: -0.5,\n    y: -0.5,\n    cursorStyle: 'crosshair',\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n  br: new Control({\n    x: 0.5,\n    y: 0.5,\n    cursorStyleHandler: scaleCursorStyleHandler,\n    actionHandler: scalingEqually,\n  }),\n});\n\nexport const createObjectConnectorControls = function (targetObject: any) {\n  function renderCustomControl(control, ctx, left, top, fabricObject) {\n    let cornerSize, cornerColor;\n\n    // if (control.targetObject.hoveringControl === control.controlName) {\n    //   cornerSize = 15;\n    //   cornerColor = 'red';\n    // } else {\n    cornerSize = 10;\n    cornerColor = 'white';\n    // }\n\n    const styleOverride1 = {\n      cornerSize: cornerSize,\n      cornerColor,\n      lineWidth: 2,\n    };\n\n    renderCircleControl.call(\n      fabricObject,\n      ctx,\n      left,\n      top,\n      styleOverride1,\n      fabricObject\n    );\n  }\n  return {\n    mtaStart: new Control({\n      x: 0,\n      y: -0.5,\n      offsetX: 0,\n      offsetY: -20,\n      render: renderCustomControl.bind(this, {\n        controlName: 'mtaStart',\n        targetObject,\n      }),\n      mouseDownHandler: (eventData, transformData) => {\n        // this.controlMousedownProcess(transformData, 0.0, -0.5);\n\n        return true;\n      },\n      name: 'mtaStart',\n    }),\n    mbaStart: new Control({\n      x: 0,\n      y: 0.5,\n      offsetX: 0,\n      offsetY: 20,\n      render: renderCustomControl.bind(this, {\n        controlName: 'mbaStart',\n        targetObject,\n      }),\n      mouseDownHandler: (eventData, transformData) => {\n        // this.controlMousedownProcess(transformData, 0.0, 0.5);\n        return true;\n      },\n      name: 'mbaStart',\n    }),\n    mlaStart: new Control({\n      x: -0.5,\n      y: 0,\n      offsetX: -20,\n      offsetY: 0,\n      render: renderCustomControl.bind(this, {\n        controlName: 'mlaStart',\n        targetObject,\n      }),\n      mouseDownHandler: (eventData, transformData) => {\n        // this.controlMousedownProcess(transformData, -0.5, 0.0);\n        return true;\n      },\n      name: 'mlaStart',\n    }),\n    mraStart: new Control({\n      x: 0.5,\n      y: 0,\n      offsetX: 20,\n      offsetY: 0,\n      render: renderCustomControl.bind(this, {\n        controlName: 'mraStart',\n        targetObject,\n      }),\n      mouseDownHandler: (eventData, transformData) => {\n        // this.controlMousedownProcess(transformData, 0.5, 0.0);\n        return true;\n      },\n      name: 'mraStart',\n    }),\n  };\n};\n\nexport const createResizeControls = () => ({\n  mr: new Control({\n    x: 0.5,\n    y: 0,\n    offsetX: 20,\n    offsetY: 0,\n    actionHandler: changeWidth,\n    cursorStyleHandler: scaleSkewCursorStyleHandler,\n    actionName: 'resizing',\n  }),\n  ml: new Control({\n    x: -0.5,\n    y: 0,\n    offsetX: -20,\n    offsetY: 0,\n    actionHandler: changeWidth,\n    cursorStyleHandler: scaleSkewCursorStyleHandler,\n    actionName: 'resizing',\n  }),\n  mb: new Control({\n    x: 0,\n    y: 0.5,\n    offsetX: 0,\n    offsetY: 20,\n    cursorStyleHandler: scaleSkewCursorStyleHandler,\n    actionHandler: scalingYOrSkewingX,\n    getActionName: scaleOrSkewActionName,\n  }),\n\n  mt: new Control({\n    x: 0,\n    y: -0.5,\n    offsetX: 0,\n    offsetY: -20,\n    cursorStyleHandler: scaleSkewCursorStyleHandler,\n    actionHandler: scalingYOrSkewingX,\n    getActionName: scaleOrSkewActionName,\n  }),\n});\n\nexport const createResizeControlsForText = () => ({\n  mr: new Control({\n    x: 0.5,\n    y: 0,\n    actionHandler: changeWidth,\n    cursorStyleHandler: scaleSkewCursorStyleHandler,\n    actionName: 'resizing',\n  }),\n  ml: new Control({\n    x: -0.5,\n    y: 0,\n    actionHandler: changeWidth,\n    cursorStyleHandler: scaleSkewCursorStyleHandler,\n    actionName: 'resizing',\n  }),\n});\n\nexport const createTextboxDefaultControls = () => ({\n  //...createObjectDefaultControls(),\n  ...createResizeControlsForText(),\n});\nexport const createRectNotesDefaultControls = (targetObject: any) => ({\n  ...createObjectDefaultNoRotateControls(),\n  ...createObjectConnectorControls(targetObject),\n});\nexport const createShapeNotesDefaultControls = (targetObject: any) => ({\n  ...createObjectDefaultNoRotateControls(),\n  // ...createResizeControls(),\n  ...createObjectConnectorControls(targetObject),\n});\nexport const createPathDefaultControls = () => ({\n  ...createObjectDefaultNoRotateControls(),\n});\nexport const createImageDefaultControls = () => ({\n  ...createObjectImageControls(),\n});\nexport const createFileDefaultControls = () => ({\n  ...createObjectFileControls(),\n});\n"],"names":["createObjectDefaultNoRotateControls","tl","Control","x","y","cursorStyleHandler","scaleCursorStyleHandler","actionHandler","scalingEqually","tr","bl","br","createObjectConnectorControls","targetObject","renderCustomControl","control","ctx","left","top","fabricObject","cornerSize","cornerColor","styleOverride1","lineWidth","renderCircleControl","call","mtaStart","offsetX","offsetY","render","bind","controlName","mouseDownHandler","eventData","transformData","name","mbaStart","mlaStart","mraStart","createResizeControlsForText","mr","changeWidth","scaleSkewCursorStyleHandler","actionName","ml","createTextboxDefaultControls","_objectSpread","createRectNotesDefaultControls","createShapeNotesDefaultControls"],"mappings":"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"}