{"version":3,"names":["Graffle","__SystemJSRewritingHack","_export","setters","_reactiveJsx","_addSourceLocation","addSourceLocation","_srcClientGraphicsJs","pt","_srcComponentsHaloLivelyHaloJs","Halo","default","HaloService","_srcClientSvgJs","SVG","_utils","debounce","_srcClientMorphicSnappingJs","Grid","_srcClientMorphicEventHelpersJs","events","execute","_recorder_","_src_client_graffle_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","load","_context2","lively","removeEventListener","document","body","addEventListener","evt","onKeyDown","onKeyUp","documentElement","onMouseDown","onMouseMove","onMouseUp","onSelectionHide","onSelectionChange","call","keysDown","showStyleBalloon","target","styleBalloon","openPart","style","zIndex","appendChild","setClientPosition","getClientBounds","bottomLeft","hideStyleBalloon","remove","selection","window","getSelection","activeElement","isContentEditable","shadowRoot","anchorNode","isCollapsed","element","getRangeAt","endContainer","parentElement","includes","tagName","preferences","isGlobalKeyboardFocusElement","composedPath","key","String","fromCharCode","keyCode","specialKeyDown","ctrlKey","metaKey","disabled","altKey","stopPropagation","preventDefault","hand","ensureHand","visibility","info","textContent","userSelect","changeFontSize","factor","fontSize","match","Math","round","Number","replace","changeCurrentFontSize","range","commonAncestorContainer","oldSize","execCommand","changeTextColor","color","startContainer","changeHiliteColor","currentPath","showHaloItems","eventPosition","clientX","clientY","startShapeDrawing","shape","createElement","file","end","column","line","start","backgroundColor","border","openAsLivelyContent","startTextDrawing","text","classList","add","width","height","whiteSpace","padding","contentEditable","touchAction","ensureTargetContainer","startConnectorDrawing","startPathDrawing","startFreehandDrawing","connector","components","openIn","targetContainer","that","showHalos","cp","halo","ensureControlPoint","getPath","currentControlPoint","setVerticePosition","targetElement","connectFrom","connectTo","freehand","create","currentFreehand","setExtent","onPointerDown","continueDrawing","path","offset","getClientPosition","pos","subPt","snapPt","setPosition","svgPath","querySelector","vertices","getPathVertices","length","addControlPoint","eventOffset","lastMouseUpPos","div","currentElement","lastMouseDown","find","ea","localName","showElement","move","onPointerMove","extent","getPosition","stop","hideHaloItems","onPointerUp","svg","bounds","childBounds","p1","p2","x","y","delta","moveBy","scaleBy","contains","focus","lastElement","currentConnectFrom"],"sources":["graffle.js"],"sourcesContent":["import {pt} from 'src/client/graphics.js';\nimport Halo from \"src/components/halo/lively-halo.js\"\nimport SVG from \"src/client/svg.js\"\nimport { debounce } from \"utils\";\nimport {Grid} from 'src/client/morphic/snapping.js';\nimport * as events from 'src/client/morphic/event-helpers.js'\n\nimport {default as HaloService} from \"src/components/halo/lively-halo.js\"\n\nexport default class Graffle {\n  \n  // Graffle.keysDown \n  static load() {\n    lively.removeEventListener(\"Graffle\", document.body)\n    lively.removeEventListener(\"Graffle\", document)\n    lively.addEventListener(\"Graffle\", document.body, \"keydown\", \n      (evt) => { this.onKeyDown(evt)}, true)\n    lively.addEventListener(\"Graffle\", document.body, \"keyup\", \n      (evt) => { this.onKeyUp(evt) }, true)\n    lively.removeEventListener(\"GraffleMouse\", document.documentElement)\n    lively.addEventListener(\"GraffleMouse\", document.documentElement, \"pointerdown\", \n      (evt) => { this.onMouseDown(evt) }, true)\n    lively.addEventListener(\"GraffleMouse\", document.documentElement, \"pointermove\", \n      (evt) => { this.onMouseMove(evt) })\n    lively.addEventListener(\"GraffleMouse\", document.documentElement, \"pointerup\", \n      (evt) => { this.onMouseUp(evt) })\n    lively.addEventListener(\"Graffle\", document, \"selectionchange\", \n      (evt) => { this.onSelectionHide(evt) } )\n    lively.addEventListener(\"Graffle\", document, \"selectionchange\", \n      ((evt) => { this.onSelectionChange(evt) })::debounce(600) )\n    this.keysDown = {}\n  }\n\n  \n  static async showStyleBalloon(target) {\n    if (!target) {\n      return;\n    }\n    // console.log(\"show balloon \" + target)\n    // lively.showElement(target)\n    if (!lively.styleBalloon) {\n      lively.styleBalloon = await lively.openPart(\"formatting\")\n      lively.styleBalloon.style.zIndex = 500\n    }\n    document.body.appendChild(lively.styleBalloon);\n    // lively.showElement(lively.styleBalloon)\n\n    // console.log(\"pos \" + lively.getClientBounds(target).bottomLeft())\n    lively.setClientPosition(lively.styleBalloon,\n      lively.getClientBounds(target).bottomLeft())\n  }\n  \n    \n  static async hideStyleBalloon() {\n    // console.log(\"hide balloon\")\n    if (lively.styleBalloon) {\n      lively.styleBalloon.remove()\n      \n      // lively.styleBalloon = null; // for developing\n    }\n  }\n  \n   static onSelectionHide(evt) {\n    // var selection = window.getSelection()\n    // if (!document.activeElement || !document.activeElement.isContentEditable) {\n    //   if (document.activeElement === document.body) {\n    //     this.hideStyleBalloon() \n    //   }\n    // } else if (!selection.anchorNode || !selection.isCollapsed) {\n    //   this.hideStyleBalloon() \n    // }\n    this.hideStyleBalloon() \n   }\n  \n  static onSelectionChange(evt) {\n    var selection = window.getSelection()\n    if (!document.activeElement || !document.activeElement.isContentEditable) {\n      return\n    }\n    if (document.activeElement.shadowRoot) {\n      selection = document.activeElement.shadowRoot.getSelection()\n    }\n    if (selection.anchorNode && !selection.isCollapsed) {\n      var element = selection.getRangeAt(0).endContainer.parentElement;\n      while([\"SPAN\", \"FONT\", \"A\", \"B\", \"I\"].includes(element.tagName)) {\n        element = element.parentElement\n      }\n      this.showStyleBalloon(element)\n    }\n  }\n  \n  static async onKeyDown(evt) {        \n    if (!lively.preferences.get(\"GraffleMode\")) return;\n\n    if (!lively.isGlobalKeyboardFocusElement(evt.composedPath()[0])) \n      return; \n    var key = String.fromCharCode(evt.keyCode)\n\n    // console.log(\"\" + Date.now() + \" down \" + key + \" \" +  evt.altKey)\n\n    this.keysDown[key] = true\n    if (this.specialKeyDown() && !(evt.ctrlKey || evt.metaKey)) {\n      lively.selection.disabled = true\n      if (!evt.ctrlKey && !evt.altKey && !evt.altKey) {\n        // console.log('disable ' + evt.keyCode)\n        evt.stopPropagation()\n        evt.preventDefault()\n      }\n      var hand = await lively.ensureHand();\n      if (hand) {\n        hand.style.visibility = \"visible\"\n        var info = \"\"\n        // #KeyboardShortcut HOLD-S+Drag create shape\n        if (this.keysDown[\"S\"]) {\n          info = \"shape\"\n        }\n        // #KeyboardShortcut HOLD-C+Drag create connector\n        if (this.keysDown[\"C\"]) {\n          info = \"connect\"\n        }\n        // #KeyboardShortcut HOLD-T+Drag create text\n        if (this.keysDown[\"T\"]) {\n          info = \"text\"\n        }\n        // #KeyboardShortcut HOLD-D+Drag create svg path\n        if (this.keysDown[\"D\"]) {\n          info = \"draw\"\n        }\n        // #KeyboardShortcut HOLD-F+Drag create freehand drawing\n        if (this.keysDown[\"F\"]) {\n          info = \"freehand\"\n        }\n\n        if (hand.info)\n          hand.info.textContent = info;\n          hand.info.style.userSelect = \"none\"\n      }\n    }\n  }\n  \n  static changeFontSize(element, factor) {\n      if (element) {\n        var fontSize = element.style.fontSize\n        if (!fontSize || !fontSize.match(/%$/)) {\n          fontSize = \"100%\"\n        }    \n        fontSize = \"\" + (Math.round(Number(fontSize.replace(/%/,\"\")) * factor)) + \"%\"\n        element.style.fontSize = fontSize\n        // lively.notify(\"font size: \" +  element.style.fontSize)\n      }\n  }  \n\n  \n  static changeCurrentFontSize(factor) {\n    var range = window.getSelection().getRangeAt(0);\n    var element = range.commonAncestorContainer.parentElement\n    var oldSize = element.style.fontSize\n\n    // make a new region \n    document.execCommand(\"styleWithCSS\", true, true)\n    document.execCommand(\"fontSize\", true, 1)    \n    element = window.getSelection().getRangeAt(0).commonAncestorContainer.parentElement\n    element.style.fontSize  = oldSize.match(\"%$\") ? oldSize : \"100%\";\n    this.changeFontSize(element, factor)\n  }  \n\n\n  static changeTextColor() {\n    var color = \"orange\"; // #TODO make this interactive... \n    var element = window.getSelection().getRangeAt(0).startContainer.parentElement;\n    if (element.style.color == color) {\n      color = \"black\"; // TODO how can we unset a color? \n    }\n    document.execCommand(\"styleWithCSS\", true, true)\n    document.execCommand(\"foreColor\", true, color)\n  }  \n  \n  static changeHiliteColor() {\n    var color = \"yellow\"; // #TODO make this interactive... \n    var element = window.getSelection().getRangeAt(0).startContainer.parentElement;\n    if (element.style.color == color) {\n      color = \"transparent\"; // TODO how can we unset a color? \n    }\n    document.execCommand(\"styleWithCSS\", true, true)\n    document.execCommand(\"hiliteColor\", true, color)\n  }  \n  \n  \n  static async onKeyUp(evt) {\n    var key = String.fromCharCode(evt.keyCode)\n    this.keysDown[key] = false\n    \n    // console.log(\"\" + Date.now() + \" up \" + key + \" \" +  evt.altKey)\n    \n    if (key == \"D\" || key == \"C\") {\n      this.currentPath = null;\n      HaloService.showHaloItems()\n    }\n    \n    lively.selection.disabled = false\n  \n    var hand = await lively.ensureHand();\n    if (hand) {\n      hand.style.visibility = \"hidden\"\n      if (hand.info) hand.info.textContent = \"\"\n    }\n    // if (this.lastElement)\n    //   this.lastElement.focus(); // no, we can focus.... and continue typing\n\n    if (evt.altKey &&   evt.keyCode == 187 /* + */) {\n      this.changeCurrentFontSize(1.1)\n    }\n    \n    if (evt.altKey &&  evt.keyCode == 189 /* - */) {\n      this.changeCurrentFontSize(0.9)\n    }\n\n    if (evt.altKey && key == \"C\") {\n      this.changeTextColor()\n    }\n\n    if (evt.altKey && key == \"H\") {\n      this.changeHiliteColor()\n    }\n  }\n  \n  static specialKeyDown() {\n    return this.keysDown[\"S\"] || this.keysDown[\"T\"] || this.keysDown[\"C\"] || this.keysDown[\"D\"] || this.keysDown[\"F\"]\n  }\n  \n  static eventPosition(evt) {\n     return pt(evt.clientX, evt.clientY)\n  }\n  \n  static async startShapeDrawing(evt) {\n    var shape = document.createElement(\"div\")\n    shape.style.backgroundColor = \"lightgray\"\n    shape.style.border = \"1px solid gray\"    \n    this.openAsLivelyContent(shape, evt)\n    return shape\n  }\n  \n  static async startTextDrawing(evt) {\n    var text = document.createElement(\"div\")\n    text.textContent = \"\"\n    text.classList.add(\"lively-text\")\n    \n    // #TODO move this to CSS as defaults?\n    text.style.width = \"auto\"\n    text.style.height = \"auto\"\n    text.style.whiteSpace = \"nowrap\";\n    text.style.padding = \"3px\"\n    \n    text.contentEditable = true\n    this.openAsLivelyContent(text, evt)\n    return text\n  }\n  \n   static async onMouseDown(evt) {    \n    if (!this.specialKeyDown()) return\n    evt.stopPropagation()\n    evt.preventDefault()\n    document.documentElement.style.touchAction = \"none\"    \n    this.ensureTargetContainer(evt)\n    if (this.keysDown[\"S\"]) {\n      await this.startShapeDrawing(evt)\n    } else if (this.keysDown[\"T\"]) {\n      await this.startTextDrawing(evt)\n    }  else if (this.keysDown[\"C\"]) {\n      await this.startConnectorDrawing(evt)\n    }  else if (this.keysDown[\"D\"]) {\n      await this.startPathDrawing(evt)\n    } else if (this.keysDown[\"F\"]) {\n      await this.startFreehandDrawing(evt)\n    }\n  }\n\n  static async startConnectorDrawing(evt) {\n    var connector = document.createElement(\"lively-connector\")\n    await lively.components.openIn(this.targetContainer, connector)\n    \n    // var connector = await (<lively-connector></lively-connector>)\n    // var connector = await lively.create(lively-connector, this.targetContainer)\n    \n    lively.setClientPosition(connector, pt(evt.clientX, evt.clientY))\n    window.that = connector\n    HaloService.showHalos(connector)\n    let cp = lively.halo.ensureControlPoint(connector.getPath(), 1, true)\n    this.currentControlPoint = cp\n    cp.setVerticePosition(pt(0,0))\n    cp.start(evt, connector)\n    this.currentPath = connector        \n    this.openAsLivelyContent(connector, evt)\n    if (cp.targetElement) {\n      connector.connectFrom(cp.targetElement)\n    }   \n    connector.connectTo(lively.hand)\n    return connector\n  }\n  \n  static async startFreehandDrawing(evt) {\n    var freehand = await lively.create(\"lively-drawboard\")\n    freehand.freehand()\n    this.currentFreehand = freehand\n    this.openAsLivelyContent(freehand, evt)\n    lively.setExtent(freehand, pt(100,100))\n    freehand.onPointerDown(evt)\n    return freehand\n  }\n  \n  static async startPathDrawing(evt) {\n    var continueDrawing = true && this.currentPath;\n    if (!this.currentPath) {\n      var path = await lively.openPart(\"path\", this.targetContainer)\n      this.currentPath = path\n      window.that = path\n      this.openAsLivelyContent(path, evt) \n      // split position in global and local part to snap locally...\n      var offset = lively.getClientPosition(path.parentElement)\n      var pos = pt(evt.clientX, evt.clientY).subPt(offset)\n      \n      if (!evt.ctrlKey) {\n        pos = Grid.snapPt(pos, 10, 5) \n      }\n      HaloService.showHalos(path)\n      lively.setPosition(path, pos)\n    } \n    var svgPath = this.currentPath.querySelector(\"path\")\n    var vertices = SVG.getPathVertices(svgPath)\n    let cp = lively.halo.ensureControlPoint(svgPath, vertices.length - 1)\n    this.currentControlPoint = cp\n    if (continueDrawing) {\n      cp.addControlPoint()        \n    } else {\n      cp.setVerticePosition(pt(0,0))\n    }\n    cp.start(evt, this.currentPath)\n    if (continueDrawing) {\n      cp.eventOffset = this.lastMouseUpPos // #ContinueHere \n    }\n    return path\n  }\n  \n  static openAsLivelyContent(div, evt) {\n    div.classList.add(\"lively-content\")\n    this.currentElement = div\n    this.targetContainer.appendChild(div)\n    var pos = this.eventPosition(evt)    \n    \n    lively.setClientPosition(div, pos)\n    this.lastMouseDown = pos;\n    return div\n  }\n  \n  static ensureTargetContainer(evt) {\n    \n    var targetContainer = evt.composedPath().find(ea => ea.localName == \"lively-figure\")\n    if (!targetContainer) {\n      targetContainer = evt.composedPath().find(ea => ea.tagName == \"LIVELY-CONTAINER\")\n    }\n    if (targetContainer) {\n      lively.showElement(targetContainer)\n      this.targetContainer = targetContainer\n    } else {\n      this.targetContainer = document.body\n    }\n  }\n  \n  static onMouseMove(evt) {\n    if (this.specialKeyDown()) {\n        lively.setClientPosition(lively.hand, pt(evt.clientX - 2, evt.clientY -2))    \n    }\n    if (this.currentControlPoint) {\n      this.currentControlPoint.move(evt)\n    }\n    if (this.currentFreehand) {\n      this.currentFreehand.onPointerMove(evt)\n    }\n    \n    if (!this.lastMouseDown || !this.currentElement) return;\n    var extent = this.eventPosition(evt).subPt(this.lastMouseDown)\n    if (!this.currentPath && !this.currentFreehand) {\n      lively.setExtent(this.currentElement, extent)\n    }\n  }\n\n  static onMouseUp(evt) {\n    if (!evt) return;\n    this.lastMouseUpPos = lively.getPosition(evt)\n    if (this.currentControlPoint) {\n      this.currentControlPoint.stop(evt)\n       if (!this.keysDown[\"T\"]) {\n          HaloService.hideHaloItems()        \n        } \n    }\n    if (this.currentFreehand) {\n      this.currentFreehand.onPointerUp(evt)      \n      var svg = this.currentFreehand.get(\"#svg\")\n      var path = svg.querySelector(\"path\")\n\n      var bounds = SVG.childBounds(svg)\n      var p1 = lively.getClientPosition(this.currentFreehand)\n      if (!bounds) return;\n      \n      var p2 = pt(bounds.x, bounds.y)\n      var delta = p2.subPt(p1)\n\n      lively.moveBy(this.currentFreehand, delta)\n      lively.moveBy(path, delta.scaleBy(-1))\n      lively.setExtent(this.currentFreehand, pt(bounds.width, bounds.height))\n      \n      this.currentFreehand = null\n      this.currentElement = null\n      // lively.showElement(svg)\n  \n      // lively.setClientPosition(this.currentFreehand, bounds.topLeft())\n      // lively.setExtent(this.currentFreehand, pt(bounds.width, bounds.height))\n    } else if(this.currentElement) {\n      if (this.currentElement.classList.contains(\"lively-text\")) {\n        if (!this.keysDown[\"T\"]) {\n          this.currentElement.focus()        \n        } \n      }\n      this.lastMouseDown = null\n      this.currentElement = null\n      this.lastElement = this.currentElement\n      document.documentElement.style.touchAction = \"\"\n    } else {\n      this.lastElement = null\n    }\n    this.currentControlPoint = null\n    this.currentConnectFrom = null\n  }\n}\n\nGraffle.load()"],"mappings":"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"}