diff --git a/dist/app.js b/dist/app.js index 51edc62..75f7224 100644 --- a/dist/app.js +++ b/dist/app.js @@ -819,7 +819,6 @@ var ManifoldApplication = (function ($$1, fabric$1, THREE, ImageTracer, Potrace) app$8.fabric.model.canvas.on('selection:updated', selectionCallback); app$8.fabric.model.canvas.on('mouse:dblclick', function(e){ - e.selected.shift(); if (e.target && e.target._element) { var $el = $__default["default"](e.target._element).parent(); var scaledWidth = e.target.width * e.target.scaleX; @@ -1412,10 +1411,14 @@ var ManifoldApplication = (function ($$1, fabric$1, THREE, ImageTracer, Potrace) this.playing = false; this.currentFrame = 0; + this.thisKeyframe = 0; + this.nextKeyframe = 0; + this.frameLimit = 30; this.frames = {}; this.frameElapsed = 0; this.frameLength = 50; // ms per frame. + this.el.innerHTML = timelineTemplate( { frameLimit: this.frameLimit @@ -1428,43 +1431,17 @@ var ManifoldApplication = (function ($$1, fabric$1, THREE, ImageTracer, Potrace) var seekerElement = document.getElementById( "seeker" ); this$1$1.selectFrameByElement( seekerElement, event.target ); - var nextKeyframe = 0; - var thisKeyframe = 0; - Object.keys(this$1$1.frames).forEach(function (framePosition){ - // This will keep updating until it stops on the break later. - if ( parseInt(framePosition) <= parseInt(this$1$1.currentFrame) ) { - thisKeyframe = framePosition; - } - - if ( parseInt(framePosition) > parseInt(this$1$1.currentFrame) ) { - nextKeyframe = framePosition; - return; - } - }); + this$1$1.determinePosition(); - if (nextKeyframe == 0 && thisKeyframe == 0) { + if (this$1$1.nextKeyframe == 0 && this$1$1.thisKeyframe == 0) { return; } // If we are on the final keyframe, flip the values as the stored keyframe value is the final number. - if (parseInt(nextKeyframe) < parseInt(thisKeyframe)) { - nextKeyframe = [thisKeyframe, thisKeyframe = nextKeyframe][0]; // https://stackoverflow.com/questions/16201656/how-to-swap-two-variables-in-javascript + if (parseInt(this$1$1.nextKeyframe) < parseInt(this$1$1.thisKeyframe)) { + this$1$1.nextKeyframe = [this$1$1.thisKeyframe, this$1$1.thisKeyframe = this$1$1.nextKeyframe][0]; // https://stackoverflow.com/questions/16201656/how-to-swap-two-variables-in-javascript } - // Move objects on the canvas. - app$2.fabric.model.canvas.getObjects().map( function (object) { - - var props = ['left', 'top']; - props.forEach( function (prop) { - - var propChange = this$1$1.frames[nextKeyframe][0][prop] - this$1$1.frames[thisKeyframe][0][prop]; - var numberOfFrames = nextKeyframe - thisKeyframe; - var propIteration = propChange * (this$1$1.currentFrame / numberOfFrames) ; - - object.set(prop, parseInt(this$1$1.frames[thisKeyframe][0][prop] + propIteration, 10)).setCoords(); - }); - - }); - app$2.fabric.model.canvas.requestRenderAll(); + this$1$1.setFrame(); } } ); @@ -1501,30 +1478,17 @@ var ManifoldApplication = (function ($$1, fabric$1, THREE, ImageTracer, Potrace) // Determines whether or not to execute actions this loop. TimelineControls.prototype.animate = function animate (timestamp) { - var this$1$1 = this; - + console.log(this.currentFrame, this.thisKeyframe, this.nextKeyframe); if (this.playing) { - // Check how many keyframes to play after this tween. - var nextKeyframe = 0; - var thisKeyframe = 0; - Object.keys(this.frames).forEach(function (framePosition){ - // This will keep updating until it stops on the break later. - if ( parseInt(framePosition) <= parseInt(this$1$1.currentFrame) ) { - thisKeyframe = framePosition; - } - - if ( parseInt(framePosition) > parseInt(this$1$1.currentFrame) ) { - nextKeyframe = framePosition; - return; - } - }); + + this.determinePosition(); - if (nextKeyframe != 0 && thisKeyframe != 0) { + if (this.nextKeyframe != 0 && this.thisKeyframe != 0) { return; } // Loop back if no frames left. - if (nextKeyframe == 0) { + if (this.nextKeyframe == 0) { this.selectFrameByElement ( document.getElementById( "seeker" ) , document.querySelector('[data-frame-position="0"]') ); } @@ -1534,30 +1498,10 @@ var ManifoldApplication = (function ($$1, fabric$1, THREE, ImageTracer, Potrace) if (this.frameElapsed >= this.frameLength) { this.currentFrame = parseInt(this.currentFrame + 1); this.frameElapsed = 0; - - // Modify the timeline UI controls - var seekerElement = document.getElementById( "seeker" ); - var targetElement = document.querySelector('td[data-frame-position="' + this.currentFrame + '"]'); - var framePosition = targetElement.getBoundingClientRect(); - seekerElement.style.left = ( framePosition.left ) + "px"; - seekerElement.style.width = ( 1 + framePosition.right - framePosition.left ) + "px"; - - - // Move objects on the canvas. - app$2.fabric.model.canvas.getObjects().map( function (object) { - var props = ['left', 'top']; - props.forEach( function (prop) { - var propChange = this$1$1.frames[nextKeyframe][0][prop] - this$1$1.frames[thisKeyframe][0][prop]; - var numberOfFrames = nextKeyframe - thisKeyframe; - var propIteration = propChange * ( this$1$1.currentFrame / numberOfFrames); - - object.set(prop, parseInt(this$1$1.frames[thisKeyframe][0][prop] + propIteration, 10)).setCoords(); - }); - - }); - + this.determinePosition(); + this.setFrame( ); } - app$2.fabric.model.canvas.requestRenderAll(); + this.playing = performance.now(); } @@ -1565,6 +1509,22 @@ var ManifoldApplication = (function ($$1, fabric$1, THREE, ImageTracer, Potrace) window.requestAnimationFrame(this.animate.bind(this)); }; + TimelineControls.prototype.determinePosition = function determinePosition () { + var this$1$1 = this; + + Object.keys(this.frames).forEach(function (framePosition){ + // This will keep updating until it stops on the break later. + if ( parseInt(framePosition) <= parseInt(this$1$1.currentFrame) ) { + this$1$1.thisKeyframe = framePosition; + } + + if ( parseInt(framePosition) > parseInt(this$1$1.currentFrame) ) { + this$1$1.nextKeyframe = framePosition; + return; + } + }); + }; + TimelineControls.prototype.ready = function ready () { var this$1$1 = this; @@ -1590,7 +1550,6 @@ var ManifoldApplication = (function ($$1, fabric$1, THREE, ImageTracer, Potrace) app$2.fabric.model.canvas.on( 'history:append' , function (json) { this$1$1.frames[this$1$1.currentFrame] = JSON.parse(JSON.stringify(app$2.fabric.model.canvas.getObjects())); document.querySelector('td[data-frame-position="' + this$1$1.currentFrame + '"]').classList.add('active'); - console.log(this$1$1.frames); }); this.animate(performance.now()); @@ -1608,6 +1567,32 @@ var ManifoldApplication = (function ($$1, fabric$1, THREE, ImageTracer, Potrace) this.currentFrame = targetElement.dataset.framePosition; }; + // Activates the currentFrame into view by moving things according to where it is in the tweens. + TimelineControls.prototype.setFrame = function setFrame ( ) { + var this$1$1 = this; + + // Modify the timeline UI controls + var seekerElement = document.getElementById( "seeker" ); + var targetElement = document.querySelector('td[data-frame-position="' + this.currentFrame + '"]'); + var framePosition = targetElement.getBoundingClientRect(); + seekerElement.style.left = ( framePosition.left ) + "px"; + seekerElement.style.width = ( 1 + framePosition.right - framePosition.left ) + "px"; + + // Move objects on the canvas. + app$2.fabric.model.canvas.getObjects().map( function (object) { + var props = ['left', 'top']; + props.forEach( function (prop) { + var propChange = this$1$1.frames[this$1$1.nextKeyframe][0][prop] - this$1$1.frames[this$1$1.thisKeyframe][0][prop]; + var numberOfFrames = this$1$1.nextKeyframe - this$1$1.thisKeyframe; + var propIteration = propChange * ( this$1$1.currentFrame / numberOfFrames); + + object.set(prop, parseInt(this$1$1.frames[this$1$1.thisKeyframe][0][prop] + propIteration, 10)).setCoords(); + }); + + }); + app$2.fabric.model.canvas.requestRenderAll(); + }; + TimelineControls.prototype.setupSeeker = function setupSeeker ( seekerElement ) { var self = this; var rect = seekerElement.getBoundingClientRect(); diff --git a/dist/app.js.map b/dist/app.js.map index 4218ad0..87d2350 100644 --- a/dist/app.js.map +++ b/dist/app.js.map @@ -1 +1 @@ -{"version":3,"file":"app.js","sources":["../src/app/integrations/BaseIntegration.js","../src/app/ui/controls/BaseControls.js","../src/app/ui/controls/ColourPickerControls.js","../node_modules/rollup-plugin-pug/dist/runtime.es.js","../src/templates/helpers/active-object-context.pug","../src/templates/helpers/3d-tool__preview.pug","../src/app/integrations/ThreeJSIntegration.js","../src/app/integrations/ThreeJSIntegrationExtras.js","../src/app/integrations/FabricJS/Events.js","../src/app/integrations/FabricJS/Helpers.js","../src/app/integrations/FabricJSIntegration.js","../src/app/integrations/FomanticIntegration.js","../src/app/events/BaseEvents.js","../src/templates/helpers/library__item.pug","../src/app/events/DropEvents.js","../src/app/events/KeyEvents.js","../src/templates/helpers/layers__item.pug","../src/app/ui/controls/LayerControls.js","../src/app/ui/controls/LibraryControls.js","../src/templates/footer/timeline.pug","../src/app/ui/controls/TimelineControls.js","../src/app/ui/controls/ToolbarControls.js","../src/app/integrations/ImageTracerIntegration.js","../src/app/integrations/PotraceIntegration.js","../src/app/ui/controls/VectorControls.js","../src/app.js"],"sourcesContent":["/**\n * Base Integration class.\n */\n\nexport default class BaseIntegration {}\n","/**\n * Base Controls class.\n */\n\nexport default class BaseControls {}\n","import $ from 'jQuery';\nimport BaseControls from './BaseControls.js';\n\n/**\n * Colour picker model for the main canvas.\n * Credit - https://www.webdesignerdepot.com/2013/03/how-to-create-a-color-picker-with-html5-canvas/\n */\n\nvar app = {};\nexport default class ColourPickerControls extends BaseControls {\n constructor(appInstance) {\n app = appInstance;\n super();\n var el = document.getElementById('colour-picker');\n if (!el) {\n return;\n }\n\n this.canvas = el.getContext('2d');\n // create an image object and get it’s source\n var img = new Image();\n img.onload = function(){\n this.canvas.drawImage(img,0,0);\n }.bind(this);\n img.src = '/assets/spectrum.jpg';\n this.canvas.scale(0.49, 0.4);\n\n $('#fill-tool').draggable({ cancel: \"#colour-picker, #colour-picker-preview input\" });\n\n var mouseDown = false;\n $('#colour-picker').on('mousedown', function(event){\n mouseDown = true;\n this.pickColour(event);\n }.bind(this));\n $('#colour-picker').on('mousemove', function(event){\n if (mouseDown) {\n this.pickColour(event);\n }\n }.bind(this));\n $('#colour-picker').on('mouseup', function(){\n mouseDown = false;\n });\n \n }\n\n lookupAndSetColour(colour) {\n var ctx, cvs;\n cvs = document.createElement('canvas');\n cvs.height = 1;\n cvs.width = 1;\n ctx = cvs.getContext('2d');\n ctx.fillStyle = colour;\n ctx.fillRect(0, 0, 1, 1);\n var c = ctx.getImageData(0, 0, 1, 1).data;\n this.setColour(c[0], c[1], c[2]);\n }\n\n setColour(R,G,B) {\n var rgb = R + ', ' + G + ', ' + B;\n // convert RGB to HEX\n var hex = this.rgbToHex(R,G,B);\n // making the color the value of the input\n $('input#rgb').val(rgb);\n $('input#hex').val('#' + hex);\n $('#colour-picker-preview').css('background-color', '#' + hex);\n\n if (app.fabric.model.canvas) {\n $('#btnFillActive .icon').css('color', '#' + hex);\n app.fabric.model.canvas.getActiveObject().set(\"fill\", '#' + hex);\n app.fabric.model.canvas.renderAll();\n }\n }\n\n // http://www.javascripter.net/faq/rgbtohex.htm\n rgbToHex(R,G,B) {\n return this.toHex(R)+this.toHex(G)+this.toHex(B); \n }\n\n toHex(m) {\n var n = parseInt(m,10);\n if (isNaN(n)) {\n return \"00\";\n }\n n = Math.max(0,Math.min(n,255));\n \n return \"0123456789ABCDEF\".charAt((n-(n%16))/16) + \"0123456789ABCDEF\".charAt(n%16);\n }\n\n pickColour(event) {\n // getting user coordinates\n var x = event.offsetX;\n var y = event.offsetY;\n // getting image data and RGB values\n var img_data = this.canvas.getImageData(x, y, 1, 1).data;\n var R = img_data[0];\n var G = img_data[1];\n var B = img_data[2];\n this.setColour(R, G, B);\n }\n\n}\n","export default (function(exports) {\n 'use strict';\n\n var pug_has_own_property = Object.prototype.hasOwnProperty;\n\n /**\n * Merge two attribute objects giving precedence\n * to values in object `b`. Classes are special-cased\n * allowing for arrays and merging/joining appropriately\n * resulting in a string.\n *\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n * @api private\n */\n\n exports.merge = pug_merge;\n function pug_merge(a, b) {\n if (arguments.length === 1) {\n var attrs = a[0];\n for (var i = 1; i < a.length; i++) {\n attrs = pug_merge(attrs, a[i]);\n }\n return attrs;\n }\n\n for (var key in b) {\n if (key === 'class') {\n var valA = a[key] || [];\n a[key] = (Array.isArray(valA) ? valA : [valA]).concat(b[key] || []);\n } else if (key === 'style') {\n var valA = pug_style(a[key]);\n valA = valA && valA[valA.length - 1] !== ';' ? valA + ';' : valA;\n var valB = pug_style(b[key]);\n valB = valB && valB[valB.length - 1] !== ';' ? valB + ';' : valB;\n a[key] = valA + valB;\n } else {\n a[key] = b[key];\n }\n }\n\n return a;\n };\n\n /**\n * Process array, object, or string as a string of classes delimited by a space.\n *\n * If `val` is an array, all members of it and its subarrays are counted as\n * classes. If `escaping` is an array, then whether or not the item in `val` is\n * escaped depends on the corresponding item in `escaping`. If `escaping` is\n * not an array, no escaping is done.\n *\n * If `val` is an object, all the keys whose value is truthy are counted as\n * classes. No escaping is done.\n *\n * If `val` is a string, it is counted as a class. No escaping is done.\n *\n * @param {(Array.|Object.|string)} val\n * @param {?Array.} escaping\n * @return {String}\n */\n exports.classes = pug_classes;\n function pug_classes_array(val, escaping) {\n var classString = '', className, padding = '', escapeEnabled = Array.isArray(escaping);\n for (var i = 0; i < val.length; i++) {\n className = pug_classes(val[i]);\n if (!className) continue;\n escapeEnabled && escaping[i] && (className = pug_escape(className));\n classString = classString + padding + className;\n padding = ' ';\n }\n return classString;\n }\n function pug_classes_object(val) {\n var classString = '', padding = '';\n for (var key in val) {\n if (key && val[key] && pug_has_own_property.call(val, key)) {\n classString = classString + padding + key;\n padding = ' ';\n }\n }\n return classString;\n }\n function pug_classes(val, escaping) {\n if (Array.isArray(val)) {\n return pug_classes_array(val, escaping);\n } else if (val && typeof val === 'object') {\n return pug_classes_object(val);\n } else {\n return val || '';\n }\n }\n\n /**\n * Convert object or string to a string of CSS styles delimited by a semicolon.\n *\n * @param {(Object.|string)} val\n * @return {String}\n */\n\n exports.style = pug_style;\n function pug_style(val) {\n if (!val) return '';\n if (typeof val === 'object') {\n var out = '';\n for (var style in val) {\n /* istanbul ignore else */\n if (pug_has_own_property.call(val, style)) {\n out = out + style + ':' + val[style] + ';';\n }\n }\n return out;\n } else {\n return val + '';\n }\n };\n\n /**\n * Render the given attribute.\n *\n * @param {String} key\n * @param {String} val\n * @param {Boolean} escaped\n * @param {Boolean} terse\n * @return {String}\n */\n exports.attr = pug_attr;\n function pug_attr(key, val, escaped, terse) {\n if (val === false || val == null || !val && (key === 'class' || key === 'style')) {\n return '';\n }\n if (val === true) {\n return ' ' + (terse ? key : key + '=\"' + key + '\"');\n }\n if (typeof val.toJSON === 'function') {\n val = val.toJSON();\n }\n if (typeof val !== 'string') {\n val = JSON.stringify(val);\n if (!escaped && val.indexOf('\"') !== -1) {\n return ' ' + key + '=\\'' + val.replace(/'/g, ''') + '\\'';\n }\n }\n if (escaped) val = pug_escape(val);\n return ' ' + key + '=\"' + val + '\"';\n };\n\n /**\n * Render the given attributes object.\n *\n * @param {Object} obj\n * @param {Object} terse whether to use HTML5 terse boolean attributes\n * @return {String}\n */\n exports.attrs = pug_attrs;\n function pug_attrs(obj, terse){\n var attrs = '';\n\n for (var key in obj) {\n if (pug_has_own_property.call(obj, key)) {\n var val = obj[key];\n\n if ('class' === key) {\n val = pug_classes(val);\n attrs = pug_attr(key, val, false, terse) + attrs;\n continue;\n }\n if ('style' === key) {\n val = pug_style(val);\n }\n attrs += pug_attr(key, val, false, terse);\n }\n }\n\n return attrs;\n };\n\n /**\n * Escape the given string of `html`.\n *\n * @param {String} html\n * @return {String}\n * @api private\n */\n\n var pug_match_html = /[\"&<>]/;\n exports.escape = pug_escape;\n function pug_escape(_html){\n var html = '' + _html;\n var regexResult = pug_match_html.exec(html);\n if (!regexResult) return _html;\n\n var result = '';\n var i, lastIndex, escape;\n for (i = regexResult.index, lastIndex = 0; i < html.length; i++) {\n switch (html.charCodeAt(i)) {\n case 34: escape = '"'; break;\n case 38: escape = '&'; break;\n case 60: escape = '<'; break;\n case 62: escape = '>'; break;\n default: continue;\n }\n if (lastIndex !== i) result += html.substring(lastIndex, i);\n lastIndex = i + 1;\n result += escape;\n }\n if (lastIndex !== i) return result + html.substring(lastIndex, i);\n else return result;\n };\n\n /**\n * Re-throw the given `err` in context to the\n * the pug in `filename` at the given `lineno`.\n *\n * @param {Error} err\n * @param {String} filename\n * @param {String} lineno\n * @param {String} str original source\n * @api private\n */\n\n exports.rethrow = pug_rethrow;\n function pug_rethrow(err, filename, lineno, str){\n if (!(err instanceof Error)) throw err;\n if ((typeof window != 'undefined' || !filename) && !str) {\n err.message += ' on line ' + lineno;\n throw err;\n }\n try {\n str = str || require('fs').readFileSync(filename, 'utf8')\n } catch (ex) {\n pug_rethrow(err, null, lineno)\n }\n var context = 3\n , lines = str.split('\\n')\n , start = Math.max(lineno - context, 0)\n , end = Math.min(lines.length, lineno + context);\n\n // Error context\n var context = lines.slice(start, end).map(function(line, i){\n var curr = i + start + 1;\n return (curr == lineno ? ' > ' : ' ')\n + curr\n + '| '\n + line;\n }).join('\\n');\n\n // Alter exception message\n err.path = filename;\n err.message = (filename || 'Pug') + ':' + lineno\n + '\\n' + context + '\\n\\n' + err.message;\n throw err;\n };\n\n return exports\n})({});\n",".active-object-context.floating.overlay\n .ui.mini.menu.labeled.icon.pointing\n a.item#btnSaveSVG\n i.save.icon\n span Save SVG\n a.item#btnDeleteActive\n i.trash.alternate.icon\n span Delete\n a.item.disabled#btnGroupActive\n i.object.group.icon\n span Group (1)\n a.item.disabled#btnMergeActive\n i.object.group.outline.icon\n span Merge\n a.item.disabled#btnFillActive\n i.tint.icon\n span Fill\n a.item.disabled\n i.pencil.alternate.icon\n span Stroke\n a#btnToggleVector.item.disabled\n i.paper.plane.outline.icon\n span Vector\n a#btnMake3D.item.disabled\n i.snowflake.outline.icon\n span 3D\n",".model-preview(style='box-shadow: inset 0 0 5px #ccc;',id=id)","import $ from 'jQuery';\nimport THREE from 'THREE';\nimport BaseIntegration from './BaseIntegration.js';\nimport modelPreview from '../../templates/helpers/3d-tool__preview.pug';\n\n/**\n * Three Canvas view.\n *\n * Manages a THREE.JS canvas view.\n */\n\nvar models = 0;\n\nexport default class ThreeIntegration extends BaseIntegration {\n constructor(options) {\n super(options);\n $('#container').append(modelPreview( { id: 'model-preview-' + models } ));\n this.$el = $('#model-preview-' + models);\n this.model = options.model;\n this.$el.css('width', options.width);\n this.$el.css('height', options.height);\n this.model.attributes.width = options.width;\n this.model.attributes.height = options.height;\n this.$el.on( 'mousemove', function(event) {\n this.model.attributes.mouse.x = (( event.offsetX / this.model.attributes.renderer.domElement.clientWidth ) * 2 ) - 1;\n this.model.attributes.mouse.y = - (( event.offsetY / this.model.attributes.renderer.domElement.clientHeight ) * 2 ) + 1;\n }.bind(this));\n\n this.createScene(options.svg);\n models +=1;\n }\n\n createScene(svg) {\n \n this.model.attributes.renderer.setSize( this.model.attributes.width, this.model.attributes.height );\n this.model.clearScene();\n \n this.$el.append( this.model.attributes.renderer.domElement );\n\n // Load the imagetracejs SVG using experimental SVGLoader from three.js dev.\n var loader = new THREE.SVGLoader();\n var paths = loader.parse(svg).paths;\n var offsetX = (paths[0].currentPath ? paths[0].currentPath.currentPoint.x : 0);\n var offsetY = (paths[0].currentPath ? paths[0].currentPath.currentPoint.y : 0);\n var svgExtruded = this.extrudeSVG({\n paths: paths,\n amount: this.model.attributes.extrudeAmount,\n center: { x: offsetX, y: offsetY }\n });\n var box = new THREE.Box3().setFromObject( svgExtruded );\n\n this.model.attributes.mesh = svgExtruded;\n this.model.attributes.scene.add( this.model.attributes.mesh );\n this.model.attributes.camera.position.set(box.min.x + 100, box.min.y + 100 , - box.max.z * 8);\n this.model.attributes.controls.target = new THREE.Vector3( box.min.x + 100, box.min.y + 100 , box.min.z * 4 );\n // Start the animation loop.\n this.model.animate();\n }\n\n // Populate a 3D group from an SVG using SVGLoader\n extrudeSVG(svgObject) {\n var paths = svgObject.paths;\n var amount = svgObject.amount;\n var center = svgObject.center;\n\n var group = new THREE.Group();\n for ( var i = 0; i < paths.length; i ++ ) {\n var path = paths[ i ];\n var shapes = path.toShapes( true );\n for ( var j = 0; j < shapes.length; j ++ ) {\n var color = new THREE.Color(Math.random() * 0xffffff);\n var material = new THREE.MeshBasicMaterial( {\n color: path.color ? path.color : color\n } );\n var simpleShape = shapes[ j ];\n var shape3d = new THREE.ExtrudeBufferGeometry( simpleShape, {\n depth: amount ,\n bevelEnabled: false\n } );\n\n var mesh = new THREE.Mesh( shape3d, material );\n mesh.rotation.x = Math.PI;\n mesh.rotation.y = Math.PI;\n mesh.translateZ( - amount - 1 );\n mesh.translateX( - center.x);\n mesh.translateY( - center.y);\n\n group.add( mesh );\n }\n }\n\n return group;\n }\n}\n","import THREE from 'THREE';\n\n/**\n * Three Canvas model.\n */\n\nvar app = {};\nexport default class ThreeJSIntegrationExtras {\n constructor(appInstance) {\n app = appInstance;\n this.attributes = {\n animationId: null,\n renderer: null,\n scene: null,\n width: 400,\n height: 400,\n camera: null,\n controls: null,\n mesh: null,\n raycaster: null,\n highlighter: null,\n mouse: null,\n extrudeAmount: 40,\n helpers: []\n };\n this.attributes.scene = new THREE.Scene();\n var aspect = this.attributes.width / this.attributes.height;\n this.attributes.camera = new THREE.PerspectiveCamera( 45, aspect, 1, 100000 );\n this.attributes.renderer = new THREE.WebGLRenderer({ alpha: true, antialias: true });\n this.attributes.renderer.setPixelRatio( window.devicePixelRatio );\n this.attributes.renderer.setSize( this.attributes.width, this.attributes.height );\n this.attributes.controls = new THREE.OrbitControls( this.attributes.camera, this.attributes.renderer.domElement );\n this.attributes.raycaster = new THREE.Raycaster();\n this.attributes.mouse = new THREE.Vector2();\n }\n\n // Scene helpers.\n addHelpers() {\n var size = 2000;\n var divisions = 100;\n var gridColour = new THREE.Color(0xEFEFEF);\n\n var gridHelper = new THREE.GridHelper( size, divisions, gridColour, gridColour );\n gridHelper.position.setX(-712.5);\n gridHelper.position.setZ(-500);\n gridHelper.rotateX(Math.PI / 2);\n gridHelper.rotateZ(-Math.PI / 4);\n this.attributes.helpers.push(gridHelper);\n this.attributes.scene.add( this.attributes.helpers[this.attributes.helpers.length-1] );\n\n var gridHelper2 = new THREE.GridHelper( size, divisions, gridColour, gridColour );\n gridHelper2.position.setX(712.5);\n gridHelper2.position.setZ(-500);\n gridHelper2.rotateX(Math.PI / 2);\n gridHelper2.rotateZ(Math.PI / 4);\n this.attributes.helpers.push(gridHelper2);\n this.attributes.scene.add( this.attributes.helpers[this.attributes.helpers.length-1] );\n\n var axesHelper = new THREE.AxesHelper( 500 );\n axesHelper.rotateY(-Math.PI / 4);\n axesHelper.position.set(0, -100, -350);\n this.attributes.helpers.push(axesHelper);\n this.attributes.scene.add( this.attributes.helpers[this.attributes.helpers.length-1] );\n }\n\n clearScene() {\n cancelAnimationFrame( this.attributes.animationId );\n this.attributes.scene.children = [];\n this.attributes.mesh = null;\n this.attributes.camera.aspect = this.attributes.width / this.attributes.height;\n }\n\n animate() {\n this.attributes.animationId = requestAnimationFrame( this.animate.bind(this) );\n this.render.bind(this)();\n }\n\n render() {\n this.attributes.controls.update();\n this.attributes.renderer.render( this.attributes.scene, this.attributes.camera );\n\n // this.attributes.raycaster.setFromCamera( this.attributes.mouse, this.attributes.camera );\n \n // var intersects = this.attributes.raycaster.intersectObjects( this.attributes.mesh.children );\n // if ( intersects.length > 0 ) {\n // if (this.attributes.highlighter) {\n // this.attributes.scene.remove( this.attributes.highlighter );\n // }\n // this.attributes.highlighter = new THREE.BoxHelper( intersects[0].object, 0xffff00 );\n // this.attributes.scene.add( this.attributes.highlighter );\n // }\n\n if (app && app.fabric && app.fabric.model.canvas) {\n app.fabric.model.canvas.renderAll();\n }\n }\n\n resize() {\n this.attributes.camera.aspect = this.attributes.width / this.attributes.height;\n this.attributes.camera.updateProjectionMatrix();\n\n this.attributes.camera.position.setZ((this.attributes.width/ this.attributes.height) * this.attributes.extrudeAmount * 8);\n\n this.attributes.renderer.setSize( this.attributes.width, this.attributes.height );\n }\n}\n","import $ from 'jQuery';\nimport fabric from 'fabric';\nimport activeObjectContext from '../../../templates/helpers/active-object-context.pug';\nimport ThreeJSIntegration from '../ThreeJSIntegration.js';\nimport ThreeJSIntegrationExtras from '../ThreeJSIntegrationExtras.js';\n\nvar app = {};\nexport default class FabricJSIntegrationEvents {\n constructor(appInstance) {\n app = appInstance;\n }\n\n setupEvents() {\n // Credit - https://stackoverflow.com/a/24238960\n app.fabric.model.canvas.on('object:moving', function (e) {\n var obj = e.target;\n // if object is too big ignore\n if (obj.currentHeight > obj.canvas.height || obj.currentWidth > obj.canvas.width){\n return;\n } \n obj.setCoords(); \n // top-left corner\n if (obj.getBoundingRect().top < 0 || obj.getBoundingRect().left < 0){\n obj.top = Math.max(obj.top, obj.top-obj.getBoundingRect().top);\n obj.left = Math.max(obj.left, obj.left-obj.getBoundingRect().left);\n }\n // bot-right corner\n if (obj.getBoundingRect().top+obj.getBoundingRect().height > obj.canvas.height || obj.getBoundingRect().left+obj.getBoundingRect().width > obj.canvas.width){\n obj.top = Math.min(obj.top, obj.canvas.height-obj.getBoundingRect().height+obj.top-obj.getBoundingRect().top);\n obj.left = Math.min(obj.left, obj.canvas.width-obj.getBoundingRect().width+obj.left-obj.getBoundingRect().left);\n }\n });\n\n // Hide previous active context windows\n var clearOverlays = function() { \n $('.model-preview').hide();\n $('#vector-tool').hide();\n $('.active-object-context').remove();\n $('#fill-tool').hide();\n\n // Remove any objects added to the canvas by tools, i.e. previews\n let objects = app.fabric.model.canvas.getObjects();\n objects.forEach((object) => {\n if (object.temporary) {\n app.fabric.model.canvas.remove(object); \n }\n });\n }\n // Create the active object context menu when selecting an object.\n var selectionCallback = function(e) {\n clearOverlays();\n\n let target = e.selected.shift();\n\n var $menu = $(activeObjectContext());\n $('#container').append($menu);\n var offsetX = target.left + ((target.width / 2) - ($menu.width() / 2));\n var offsetY = target.top - ($menu.height()) - 50;\n $menu.css('left', offsetX);\n $menu.css('top', offsetY);\n\n // Set the menu to be draggable\n $('.floating.overlay').draggable();\n\n switch(target.type) {\n case 'image':\n $('#btnToggleVector').removeClass('disabled');\n break;\n }\n\n // Not 3D, not text, not group\n if (!target._element && !target.text && !target._objects) {\n $('#btnMake3D').removeClass('disabled');\n }\n // Not 3D, not group\n if (!target._element && !target._objects) {\n $('#btnFillActive').removeClass('disabled');\n $('#btnFillActive .icon').css('color', target.fill);\n app.fabric.model.colourPickerModel.lookupAndSetColour(target.fill);\n }\n // Is group.\n if (target._objects) {\n\n $('#btnGroupActive').removeClass('disabled');\n if (target.type == 'activeSelection') {\n $('#btnGroupActive span').html('Group (' + target._objects.length + ')');\n }\n else {\n $('#btnGroupActive span').html('Ungroup (' + target._objects.length + ')');\n }\n }\n\n // Events\n $('#btnGroupActive').click(function() {\n var activeObject = app.fabric.model.canvas.getActiveObject();\n if (activeObject.type == 'group') {\n activeObject.toActiveSelection();\n }\n else {\n activeObject.toGroup();\n }\n \n app.fabric.model.canvas.discardActiveObject();\n app.fabric.model.canvas.requestRenderAll();\n\n // Update layers tool\n if (app.layers) {\n app.layers.updateLayers();\n }\n });\n \n $('#btnFillActive:not(.disabled)').click(function(){\n $(this).toggleClass('active');\n $('#fill-tool').toggle();\n });\n $('#btnDeleteActive').click(function() {\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n for (var i = 0; i < selectedObjects.length; i++) {\n app.fabric.model.canvas.remove(selectedObjects[i]); \n }\n app.fabric.model.canvas.discardActiveObject();\n $('.active-object-context').remove();\n // Update layers tool\n if (app.layers) {\n app.layers.updateLayers();\n }\n });\n $('#btnSaveSVG').click(function() {\n var a = document.createElement(\"a\");\n a.href = window.URL.createObjectURL(new Blob([app.fabric.model.canvas.toSVG()], {type: \"text/plain\"}));\n a.download = prompt(\"Please enter a filename\", \"Manifold-Download.svg\");\n if (a.download != 'null') {\n if (a.download.indexOf('.svg') < 0) {\n a.download += '.svg';\n }\n a.click();\n }\n });\n $('#btnToggleVector:not(.disabled)')\n .popup({\n title: 'Toggle Vector Controls',\n position: 'right center'\n })\n .on('click', (e) => {\n $('#vector-tool').toggle();\n app.vector.preview(app);\n });\n // @todo: Move these vector tool event handlers somewhere better\n $('#btnCreateVector').on('click', () => {\n app.vector.create(app);\n });\n $('#btnReplaceVector').on('click', () => {\n app.vector.create(app, true);\n });\n $('#btnMake3D:not(.disabled)').click(function() {\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n\n for (var i = 0; i < selectedObjects.length; i++) {\n if (selectedObjects[i].toSVG) {\n var obj_width = selectedObjects[i].width * selectedObjects[i].scaleX;\n var obj_height = selectedObjects[i].height * selectedObjects[i].scaleY;\n\n // Start SVG document.\n // Removed: ' viewbox=\"0 0 ';\n var svg_start = '';\n\n var svg_end = '';\n\n // Hack for matrix transform;\n // var svgElements = svg_start + selectedObjects[i].toSVG().replace(/matrix\\(.*\\)/,'matrix(1 0 0 1 0 0)') + svg_end;\n\n var svgElements = svg_start + selectedObjects[i].toSVG() + svg_end;\n\n var create3DObject = function(threeCanvas) {\n var threeD = new fabric.Image(threeCanvas.$el.find('canvas')[0]);\n threeD.left = selectedObjects[i].left;\n threeD.top = selectedObjects[i].top;\n app.fabric.model.canvas.add(threeD);\n };\n app.ThreeCanvasModel.push(new ThreeJSIntegrationExtras({\n height: obj_height,\n width: obj_width\n }));\n var ThreeFabricObject = new ThreeJSIntegration({ \n model: app.ThreeCanvasModel[app.ThreeCanvasModel.length-1],\n svg: svgElements,\n width: obj_width,\n height: obj_height\n });\n app.ThreeCanvasView.push( ThreeFabricObject );\n create3DObject(app.ThreeCanvasView[app.ThreeCanvasView.length-1]);\n app.fabric.model.canvas.remove(selectedObjects[i]);\n }\n else {\n console.log('not convertible!');\n }\n }\n app.fabric.model.canvas.discardActiveObject();\n $('.active-object-context').remove();\n });\n app.layers.updateLayers();\n };\n\n // Separated for Fabric's On not supporting multiple.\n app.fabric.model.canvas.on('selection:created', selectionCallback);\n app.fabric.model.canvas.on('selection:updated', selectionCallback);\n\n app.fabric.model.canvas.on('mouse:dblclick', function(e){\n let target = e.selected.shift();\n if (e.target && e.target._element) {\n var $el = $(e.target._element).parent();\n var scaledWidth = e.target.width * e.target.scaleX;\n var scaledHeight = e.target.height * e.target.scaleY;\n var offsetX = e.target.left + ((scaledWidth / 2) - ($el.width() / 2));\n var offsetY = e.target.top + ((scaledHeight / 2) - ($el.height() / 2));\n $el.show();\n $el.css('left', offsetX);\n $el.css('top', offsetY);\n }\n });\n\n app.fabric.model.canvas.on('selection:cleared', function(){\n clearOverlays();\n\n if (app.layers) {\n app.layers.updateLayers();\n }\n });\n\n // @TODO: Don't follow if user moved the toolbar.\n app.fabric.model.canvas.on('object:moving', function(e) {\n var $menu = $('.active-object-context');\n var offsetX = e.target.left+ ((e.target.width / 2) - ($menu.width() / 2));\n var offsetY = e.target.top - ($menu.height()) - 50;\n var toolbarWidth = $('#toolbar').sidebar('is visible') ? $('#toolbar').width(): 0;\n if (offsetX < toolbarWidth) {\n offsetX = 0;\n }\n if (offsetX > app.fabric.model.canvas.width - toolbarWidth - $menu.width()) {\n offsetX = app.fabric.model.canvas.width - $menu.width(); \n }\n if (offsetY < 0) {\n offsetY = 0;\n }\n $menu.css('left', offsetX);\n $menu.css('top', offsetY);\n });\n\n // Update 3D canvas if it's that type of element.\n app.fabric.model.canvas.on('object:modified', function(e) {\n if (e.target._element) {\n app.fabric.model.events.updateModelPreviewViewPort(e.target);\n }\n });\n }\n\n updateModelPreviewViewPort(target) {\n var $container = $(target._element).parent();\n if ($container.hasClass('model-preview')) {\n var scaledWidth = target.width * target.scaleX;\n var scaledHeight = target.height * target.scaleY;\n var rotateY = target.get('angle');\n $container.css('width', scaledWidth);\n $container.css('height', scaledHeight);\n $container.css('transform', 'rotateZ(' + rotateY + 'deg)');\n\n var id = $container.attr('id').replace('model-preview-','');\n app.ThreeCanvasModel[id].attributes.width = scaledWidth;\n app.ThreeCanvasModel[id].attributes.height = scaledHeight;\n app.ThreeCanvasModel[id].resize();\n \n target._resetWidthHeight();\n }\n }\n}","import $ from 'jQuery';\nimport fabric from 'fabric';\n\nvar app = {};\nexport default class FabricJSIntegrationHelpers {\n constructor(appInstance) {\n app = appInstance;\n }\n\n // Loads an SVG string and splits up objects so they're loaded in the right position.\n loadSVG(svg, callbackFn, temporary = false) {\n fabric.loadSVGFromString(svg, function(objects){\n // Create a group so we add to center accurately.\n var group = new fabric.Group(objects);\n objects.forEach((object, index) => {\n object.id = object.type + '-' + Math.floor(Date.now() / 1000) + index; \n });\n if (temporary) {\n // Remove other previews\n // @todo: Expand when other things are set to temporary\n let existing_objects = app.fabric.model.canvas.getObjects();\n existing_objects.forEach((object) => {\n if (object.temporary) {\n app.fabric.model.canvas.remove(object); \n }\n });\n }\n \n this.addToCenter(group, temporary);\n\n if (callbackFn) {\n callbackFn(group);\n }\n }.bind(this));\n }\n\n updateCanvasSize() {\n var width = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n if ($(\"#toolbar\").sidebar('is visible')) {\n $('.canvas-container').css('marginLeft', ($('#toolbar').width()*1.5) + 'px');\n width -= $('#toolbar').width();\n }\n if ($(\"#details\").sidebar('is visible')) {\n width -= $('#details').width();\n }\n var height = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n app.fabric.model.canvas.setHeight( height );\n app.fabric.model.canvas.setWidth( width );\n }\n\n // Add an object to the center of the canvas.\n addToCenter(object, temporary = false) {\n var canvasWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n if ($(\"#toolbar\").sidebar('is visible')) {\n $('.canvas-container').css('marginLeft', ($('#toolbar').width()*1.5) + 'px');\n canvasWidth -= $('#toolbar').width();\n }\n if ($(\"#details\").sidebar('is visible')) {\n canvasWidth -= $('#details').width();\n }\n var canvasHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\n if (object.width > canvasWidth || object.height > canvasHeight) {\n object.scaleToWidth(app.fabric.model.canvas.getWidth() / 2);\n object.set({ left: (canvasWidth / 2) - (object.width * object.scaleX / 2), top: ((canvasHeight /2) - (object.height * object.scaleY / 2)) });\n }\n else {\n object.set({ left: (canvasWidth / 2) - (object.width / 2), top: ((canvasHeight /2) - (object.height / 2)) });\n }\n \n object.id = object.type + '-' + Math.floor(Date.now() / 1000);\n object.temporary = temporary;\n\n app.fabric.model.canvas.add(object);\n app.fabric.model.canvas.moveTo(object, app.fabric.model.canvas.getObjects().length);\n // Update layers tool\n if (app.layers) {\n app.layers.updateLayers();\n }\n }\n \n}","import fabric from 'fabric';\nimport BaseIntegration from './BaseIntegration.js';\nimport ColourPickerControls from '../ui/controls/ColourPickerControls.js';\nimport FabricJSIntegrationEvents from './FabricJS/Events.js';\nimport FabricJSIntegrationHelpers from './FabricJS/Helpers.js';\n\n/**\n * Fabric JS Integration.\n */\n\nvar app = {};\nexport default class FabricJSIntegration extends BaseIntegration {\n constructor( appInstance ) {\n app = appInstance;\n super();\n this.el = '#main-canvas';\n this.model = {\n colourPickerModel: new ColourPickerControls( appInstance ),\n canvas: new fabric.Canvas( 'main-canvas', { preserveObjectStacking: true } ),\n attributes: {\n canvas: null,\n transitioning: false\n },\n helpers: new FabricJSIntegrationHelpers( appInstance ),\n events: new FabricJSIntegrationEvents( appInstance )\n };\n }\n\n ready() {\n app.fabric.model.events.setupEvents();\n app.fabric.model.helpers.updateCanvasSize();\n\n // Default scene.\n app.fabric.demoAnimating();\n }\n demoAnimating() {\n\n // var gradient = new fabric.Gradient( {\n // type: 'linear',\n // gradientUnits: 'pixels', // or 'percentage'\n // coords: { x1: 0, y1: 0, x2: 0, y2: 50 },\n // colorStops: [\n // { offset: 0, color: '#F00' },\n // { offset: 1, color: '#000' }\n // ]\n // } );\n var triangle = new fabric.Triangle( { width: 200, height: 200, fill: 'blue', left: 50, top: -150 } );\n app.fabric.model.helpers.addToCenter( triangle );\n }\n demoDrawing() {\n var circle = new fabric.Circle( { radius: 100, fill: ' green' } );\n app.fabric.model.helpers.addToCenter( circle );\n circle.left -= 75;\n var rect = new fabric.Rect( {\n fill: 'red',\n width: 200,\n height: 200\n } );\n app.fabric.model.helpers.addToCenter( rect );\n rect.left += 75;\n }\n demoTracing() {\n var imgSrc = '/assets/puppies.jpg';\n fabric.Image.fromURL( imgSrc, function ( oImg ) {\n app.fabric.model.helpers.addToCenter( oImg );\n oImg.left -= 7;\n oImg.top += 13;\n app.fabric.model.canvas.setActiveObject( app.fabric.model.canvas.item( 0 ) );\n $( '#btnToggleVector' ).click();\n } );\n }\n}\n","// External libs\nimport $ from 'jQuery';\nimport BaseIntegration from './BaseIntegration.js';\n\n/**\n * Fomantic Integration\n */\n\nexport default class FomanticIntegration extends BaseIntegration {\n constructor() { \n super();\n }\n\n ready() { \n $('.ui.accordion').accordion({\n exclusive: false\n });\n $('.ui.dropdown').dropdown();\n $('.floating.overlay').draggable();\n }\n\n}\n","/**\n * Base Events class.\n */\n\n export default class BaseEvents {}\n",".ui.card\n a.image(href='#')\n img(src=url)","import $ from 'jQuery';\nimport BaseEvents from './BaseEvents.js';\nimport addLibraryItem from '../../templates/helpers/library__item.pug';\n\n/**\n * Drop Events class.\n */\n\nvar app = {};\nexport default class DropEvents extends BaseEvents {\n constructor( appInstance ) {\n app = appInstance;\n super();\n\n window.addEventListener(\"drop\", this.handleDrop);\n }\n\n handleDrop( event ) {\n console.log('File(s) dropped');\n\n // Prevent default behavior (Prevent file from being opened)\n event.preventDefault();\n\n let completeDrop = (file) => {\n window.URL = window.URL || window.webkitURL || window.mozURL;\n var url = URL.createObjectURL(file);\n console.log(url);\n $(addLibraryItem({ url: url }))\n .insertBefore('#btnUploadImage');\n };\n\n if (event.dataTransfer.items) {\n // Use DataTransferItemList interface to access the file(s)\n for (var i = 0; i < event.dataTransfer.items.length; i++) {\n // If dropped items aren't files, reject them\n if (event.dataTransfer.items[i].kind === 'file') {\n completeDrop(event.dataTransfer.items[i].getAsFile());\n }\n }\n } else {\n // Use DataTransfer interface to access the file(s)\n for (var i = 0; i < event.dataTransfer.files.length; i++) {\n completeDrop(event.dataTransfer.files[i]);\n }\n }\n }\n \n}\n","import BaseEvents from './BaseEvents.js';\n\n/**\n * Drop Events class.\n */\n\nvar app = {};\nexport default class KeyEvents extends BaseEvents {\n constructor( appInstance ) {\n app = appInstance;\n super();\n document.addEventListener(\"keydown\", function (event) {\n if (event.ctrlKey && event.keyCode === 65) {\n event.preventDefault();\n\n // Has to fire here because it is being preventDefaulted to block regular select all behaviour\n app.fabric.model.canvas.discardActiveObject();\n var sel = new fabric.ActiveSelection(app.fabric.model.canvas.getObjects(), {\n canvas: app.fabric.model.canvas,\n });\n app.fabric.model.canvas.setActiveObject(sel);\n app.fabric.model.canvas.requestRenderAll();\n } \n });\n\n document.addEventListener('keyup', ({ keyCode, ctrlKey } = event) => {\n // Check pressed button is Z - Ctrl+Z.\n if (keyCode === 46) {\n // @todo: Remove duplication with code in integrations/FabricJS/Events.js\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n for (var i = 0; i < selectedObjects.length; i++) {\n app.fabric.model.canvas.remove(selectedObjects[i]); \n }\n app.fabric.model.canvas.discardActiveObject();\n\n // Update layers tool\n if (app.layers) {\n app.layers.updateLayers();\n }\n }\n \n \n // Check Ctrl key is pressed.\n if (!ctrlKey) {\n return\n } \n\n // CTRL combos past this line -----------\n\n // Check pressed button is Z - Ctrl+Z.\n if (keyCode === 90) {\n app.fabric.model.canvas.undo(function() { \n // @todo: Make a common helper.\n // - https://github.com/alimozdemir/fabric-history\n console.log('post undo');\n });\n }\n \n // Check pressed button is Y - Ctrl+Y.\n if (keyCode === 89) {\n app.fabric.model.canvas.redo(function() { \n console.log('post redo');\n });\n }\n\n })\n }\n\n}\n\n\n",".item(id='item-' + index, class=(active ? 'ui label' : ''))\n .right.floated.content\n a.back(title='Back')\n i.icon.sort.amount.down\n a.forward(title='Forward')\n i.icon.sort.amount.up\n a.display.toggle(title='Hide')\n i.icon.eye\n a.description\n i(class='icon ' + shape)\n = shape\n","import $ from 'jQuery';\nimport BaseControls from './BaseControls.js';\nimport addLayer from '../../../templates/helpers/layers__item.pug';\n\nvar app = {};\nexport default class LayerControls extends BaseControls {\n constructor(appInstance) {\n app = appInstance;\n super();\n }\n\n ready() {\n this.updateLayers();\n }\n\n checkActive(object) {\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n var active = false;\n selectedObjects.forEach((selected_object) => {\n if (selected_object.id == object.id) {\n active = true;\n }\n });\n\n return active;\n }\n\n renderItem(parent, object) {\n var active = app.layers.checkActive(object),\n // Get index from canvas rather than containing array order. \n index = parent.indexOf(object),\n returnHtml = '',\n type;\n\n if (object.type) {\n if (object.type == 'rect') {\n type = 'square';\n }\n else {\n type = object.type;\n }\n }\n else {\n type = 'Unknown';\n }\n returnHtml += addLayer( { index: index, shape: type, active: active } );\n // Render sub items if a group.\n if (object.type && object.type == 'group' && object.temporary == false) {\n returnHtml += '
';\n var objects = object.getObjects();\n objects.reverse().forEach(function(group_object){\n returnHtml += app.layers.renderItem(object.getObjects(), group_object);\n });\n returnHtml += '
';\n }\n\n return returnHtml;\n }\n\n updateLayers() {\n var objects = app.fabric.model.canvas.getObjects();\n var layersHTML = '';\n objects.reverse().forEach(function(object){\n if (object.temporary == false) {\n layersHTML += app.layers.renderItem(app.fabric.model.canvas.getObjects(), object);\n }\n });\n\n $('#layers').html(layersHTML);\n\n // Bind events to all the newly added rows.\n objects.forEach(function(object){\n var index = app.fabric.model.canvas.getObjects().indexOf(object);\n $('#layers #item-' + index + ' .description').click(function(){\n app.fabric.model.canvas.setActiveObject(app.fabric.model.canvas.item(index));\n });\n $('#layers #item-' + index + ' .back').click(function(){\n app.fabric.model.canvas.sendBackwards(object);\n app.layers.updateLayers();\n });\n $('#layers #item-' + index + ' .forward').click(function(){\n app.fabric.model.canvas.bringForward(object);\n app.layers.updateLayers();\n });\n $('#layers #item-' + index + ' .display.toggle').click(function(){\n console.log(object);\n console.log($(this));\n if ($(this).find('i.eye.icon').hasClass('slash')) {\n object.visible = true;\n }\n else {\n object.visible = false; \n }\n app.fabric.model.canvas.renderAll();\n $(this).find('i.eye.icon').toggleClass('slash');\n });\n });\n }\n}\n","import $ from 'jQuery';\nimport BaseControls from './BaseControls.js';\nimport addLibraryItem from '../../../templates/helpers/library__item.pug';\n\n/**\n * Library controls\n */\n\nvar app = {};\nexport default class LibraryControls extends BaseControls {\n constructor( appInstance ) {\n app = appInstance;\n super();\n var el = document.getElementById( 'library' );\n if ( !el ) {\n return;\n }\n $( '#btnUploadImage' )\n .on( 'click', function ( e ) {\n e.stopImmediatePropagation();\n e.preventDefault();\n $( '#image_input' ).click();\n } );\n $( '#image_input' )\n .on( 'change', function ( e ) {\n window.URL = window.URL || window.webkitURL || window.mozURL;\n var url = URL.createObjectURL( e.currentTarget.files[ 0 ] );\n $( addLibraryItem( { url: url } ) )\n .insertBefore( '#btnUploadImage' );\n } );\n $( '#library' ).on( 'click', 'a', function ( e ) {\n var src = $( e.target ).attr( 'src' );\n\n fabric.Image.fromURL( src, function ( img ) {\n app.fabric.model.helpers.addToCenter( img );\n } );\n\n } );\n\n }\n\n}\n","#seeker\ntable#timeline.ui.inverted.structured.celled.compact.small.table\n thead\n - var n = 0;\n tr\n th( style=\"display: flex; justify-content: space-evenly;\" )  \n while n < frameLimit\n th( style=\"text-align: center;\" data-frame-position=n )= n++\n tbody\n - n = 0;\n tr\n td( style=\"display: flex; justify-content: space-evenly;\" )\n button.ui.compact.mini.icon.button 1x\n button#rewind.ui.compact.mini.icon.button\n i.icon.fast.backward\n button#play.ui.compact.mini.icon.button\n i.icon.play\n while n < frameLimit\n - active = n == 0 ? ' active' : ''\n td.selectable( class=active data-frame-position=n )  \n - n++","import BaseControls from './BaseControls.js';\nimport timelineTemplate from '../../../templates/footer/timeline.pug';\n\n/**\n * Timeline controls\n */\n\nvar app = {};\nexport default class TimelineControls extends BaseControls {\n constructor( appInstance ) {\n app = appInstance;\n super();\n\n this.el = document.getElementById( 'timeline' );\n if ( !this.el ) {\n return;\n }\n\n this.playing = false;\n this.currentFrame = 0;\n this.frameLimit = 30;\n this.frames = {};\n this.frameElapsed = 0;\n this.frameLength = 50; // ms per frame.\n\n this.el.innerHTML = timelineTemplate( {\n frameLimit: this.frameLimit\n } );\n\n this.el\n .querySelectorAll( 'th, td' ).forEach( ( frame_cell ) => {\n frame_cell.addEventListener( 'click', ( event ) => {\n if ( event.target.dataset.framePosition ) {\n let seekerElement = document.getElementById( \"seeker\" );\n \n this.selectFrameByElement( seekerElement, event.target )\n let nextKeyframe = 0;\n let thisKeyframe = 0;\n Object.keys(this.frames).forEach((framePosition)=>{\n // This will keep updating until it stops on the break later.\n if ( parseInt(framePosition) <= parseInt(this.currentFrame) ) {\n thisKeyframe = framePosition;\n }\n \n if ( parseInt(framePosition) > parseInt(this.currentFrame) ) {\n nextKeyframe = framePosition;\n return;\n }\n });\n\n if (nextKeyframe == 0 && thisKeyframe == 0) {\n return;\n }\n\n // If we are on the final keyframe, flip the values as the stored keyframe value is the final number.\n if (parseInt(nextKeyframe) < parseInt(thisKeyframe)) {\n nextKeyframe = [thisKeyframe, thisKeyframe = nextKeyframe][0]; // https://stackoverflow.com/questions/16201656/how-to-swap-two-variables-in-javascript\n }\n // Move objects on the canvas.\n app.fabric.model.canvas.getObjects().map( object => {\n \n let props = ['left', 'top'];\n props.forEach( prop => {\n\n let propChange = this.frames[nextKeyframe][0][prop] - this.frames[thisKeyframe][0][prop];\n let numberOfFrames = nextKeyframe - thisKeyframe;\n let propIteration = propChange * (this.currentFrame / numberOfFrames) ;\n\n object.set(prop, parseInt(this.frames[thisKeyframe][0][prop] + propIteration, 10)).setCoords();\n });\n\n });\n app.fabric.model.canvas.requestRenderAll();\n \n }\n } );\n } );\n\n // Make the DIV element draggable.\n this.setupSeeker( document.getElementById( \"seeker\" ) );\n\n // Select the first frame.\n this.selectFrameByElement ( document.getElementById( \"seeker\" ) , document.querySelector('[data-frame-position=\"0\"]') );\n\n // Play button.\n $('#timeline #play')\n .on('click', () => {\n // Toggle the icon\n let $icon = $('#timeline #play i');\n if ($icon.hasClass('play')) {\n $icon.removeClass('play');\n $icon.addClass('pause');\n Object.keys(this.frames).length > 1 ? this.playing = performance.now() : $icon.click();\n }\n else {\n $icon.addClass('play');\n $icon.removeClass('pause');\n this.playing = false;\n }\n })\n \n }\n\n // Determines whether or not to execute actions this loop.\n animate (timestamp) {\n if (this.playing) {\n // Check how many keyframes to play after this tween.\n let nextKeyframe = 0;\n let thisKeyframe = 0;\n Object.keys(this.frames).forEach((framePosition)=>{\n // This will keep updating until it stops on the break later.\n if ( parseInt(framePosition) <= parseInt(this.currentFrame) ) {\n thisKeyframe = framePosition;\n }\n\n if ( parseInt(framePosition) > parseInt(this.currentFrame) ) {\n nextKeyframe = framePosition;\n return;\n }\n });\n\n if (nextKeyframe != 0 && thisKeyframe != 0) {\n return;\n }\n\n // Loop back if no frames left.\n if (nextKeyframe == 0) {\n this.selectFrameByElement ( document.getElementById( \"seeker\" ) , document.querySelector('[data-frame-position=\"0\"]') );\n }\n\n this.frameElapsed += timestamp - this.playing;\n\n // Iterate Frames if enough time has passed\n if (this.frameElapsed >= this.frameLength) {\n this.currentFrame = parseInt(this.currentFrame + 1);\n this.frameElapsed = 0;\n\n // Modify the timeline UI controls\n let seekerElement = document.getElementById( \"seeker\" );\n let targetElement = document.querySelector('td[data-frame-position=\"' + this.currentFrame + '\"]');\n let framePosition = targetElement.getBoundingClientRect();\n seekerElement.style.left = ( framePosition.left ) + \"px\";\n seekerElement.style.width = ( 1 + framePosition.right - framePosition.left ) + \"px\";\n\n \n // Move objects on the canvas.\n app.fabric.model.canvas.getObjects().map( object => {\n let props = ['left', 'top'];\n props.forEach( prop => {\n let propChange = this.frames[nextKeyframe][0][prop] - this.frames[thisKeyframe][0][prop];\n let numberOfFrames = nextKeyframe - thisKeyframe;\n let propIteration = propChange * ( this.currentFrame / numberOfFrames);\n\n object.set(prop, parseInt(this.frames[thisKeyframe][0][prop] + propIteration, 10)).setCoords();\n });\n\n });\n\n }\n app.fabric.model.canvas.requestRenderAll();\n this.playing = performance.now(); \n\n }\n\n window.requestAnimationFrame(this.animate.bind(this));\n }\n\n ready () {\n // Initialise frame 0\n this.frames[this.currentFrame] = JSON.parse(JSON.stringify(app.fabric.model.canvas.getObjects()))\n\n // // Animation demo\n // // 1. Select frame 10\n // this.selectFrameByElement ( document.getElementById( \"seeker\" ) , document.querySelector('[data-frame-position=\"10\"]') );\n // app.fabric.model.canvas.getObjects().map( object => {\n // object.set('left', parseInt(object.left + 400, 10)).setCoords();\n // object.set('top', parseInt(object.top + 200, 10)).setCoords();\n\n // this.frames[this.currentFrame] = JSON.parse(JSON.stringify(app.fabric.model.canvas.getObjects()))\n // console.log('Modified frame #' , this.currentFrame);\n // console.log(this.frames);\n // });\n\n // // Make the 10th frame active\n // document.querySelector('td[data-frame-position=\"10\"]').classList.add('active')\n\n // Handle changes to the canvas.\n app.fabric.model.canvas.on( 'history:append' , (json) => {\n this.frames[this.currentFrame] = JSON.parse(JSON.stringify(app.fabric.model.canvas.getObjects()))\n document.querySelector('td[data-frame-position=\"' + this.currentFrame + '\"]').classList.add('active')\n console.log(this.frames);\n });\n\n this.animate(performance.now());\n }\n\n addKeyFrame( frameIndex ) {\n console.log( 'Added ', frameIndex );\n }\n\n selectFrameByElement( seekerElement, targetElement ) {\n let framePosition = targetElement.getBoundingClientRect();\n seekerElement.style.left = ( framePosition.left ) + \"px\";\n seekerElement.style.width = ( 1 + framePosition.right - framePosition.left ) + \"px\";\n\n this.currentFrame = targetElement.dataset.framePosition;\n }\n\n setupSeeker( seekerElement ) {\n let self = this;\n var rect = seekerElement.getBoundingClientRect();\n\n let initialOffset = 0;\n let initialWidth = 50;\n\n var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;\n if ( document.getElementById( seekerElement.id + \"header\" ) ) {\n // if present, the header is where you move the DIV from:\n document.getElementById( seekerElement.id + \"header\" ).onmousedown = dragMouseDown;\n } else {\n // otherwise, move the DIV from anywhere inside the DIV:\n seekerElement.onmousedown = dragMouseDown;\n }\n\n function dragMouseDown( e ) {\n e = e || window.event;\n e.preventDefault();\n // get the mouse cursor position at startup:\n pos3 = e.clientX;\n pos4 = e.clientY;\n document.onmouseup = closeDragElement;\n // call a function whenever the cursor moves:\n document.onmousemove = elementDrag;\n seekerElement.classList.add( 'active' );\n initialOffset = seekerElement.offsetLeft;\n initialWidth = seekerElement.offsetWidth;\n }\n\n function elementDrag( e ) {\n e = e || window.event;\n e.preventDefault();\n // calculate the new cursor position:\n pos1 = pos3 - e.clientX;\n pos2 = pos4 - e.clientY;\n pos3 = e.clientX;\n pos4 = e.clientY;\n // set the element's new position:\n //seekerElement.style.top = (seekerElement.offsetTop - pos2) + \"px\";\n seekerElement.style.left = ( seekerElement.offsetLeft - pos1 ) + \"px\";\n }\n\n function closeDragElement() {\n // stop moving when mouse button is released:\n document.onmouseup = null;\n document.onmousemove = null;\n let closestElements = document.elementsFromPoint( seekerElement.offsetLeft, rect.top );\n let matched = false;\n closestElements.forEach( ( closestElement ) => {\n if ( closestElement.tagName == 'TH' && closestElement.dataset.framePosition ) {\n matched = true;\n self.selectFrameByElement( seekerElement, closestElement );\n }\n } );\n if ( !matched ) {\n\n seekerElement.style.left = initialOffset + \"px\";\n seekerElement.style.width = initialWidth + \"px\";\n }\n\n seekerElement.classList.remove( 'active' );\n\n }\n }\n\n}\n","import $ from 'jQuery';\nimport fabric from 'fabric';\nimport BaseControls from './BaseControls.js';\n\nvar app = {};\nexport default class ToolbarControls extends BaseControls {\n constructor(appInstance) {\n app = appInstance;\n super();\n this.setupDefaultMenu();\n\n $(window).on('resize', () => {\n app.fabric.model.helpers.updateCanvasSize();\n });\n \n }\n \n setupDefaultMenu() {\n $('#btnRedo')\n .popup({\n title: 'Redo',\n position: 'right center'\n })\n .on('click', function(){\n app.fabric.model.canvas.redo(function() { \n console.log('post redo');\n });\n });\n $('#btnUndo')\n .popup({\n title: 'Undo',\n position: 'right center'\n })\n .on('click', function(){\n app.fabric.model.canvas.undo(function() { \n console.log('post undo');\n });\n \n \n });\n $('#btnDrawTool')\n .popup({\n title: 'Draw',\n position: 'right center'\n })\n .on('click', function(){\n $(this).find('i.icon').toggleClass('grey');\n $(this).find('i.icon').toggleClass('inverted');\n if ($(this).find('i.icon').hasClass('grey')) {\n app.fabric.model.canvas.isDrawingMode = false;\n }\n if ($(this).find('i.icon').hasClass('inverted')) {\n app.fabric.model.canvas.isDrawingMode = true;\n }\n });\n\n // @TODO: https://codepen.io/shershen08/pen/JGepQv\n $('#btnAddText')\n .popup({\n title: 'Text',\n position: 'right center'\n })\n .on('click', function(){\n var textBox = new fabric.Textbox(\"Sample Text\", {\n fontFamily: 'Arial'\n });\n app.fabric.model.helpers.addToCenter(textBox);\n });\n\n // Track which overlays we hid so we don't override other settings.\n var overlays_visible = [];\n $('#btnToggleOverlays')\n .popup({\n title: 'Toggle All Overlays',\n position: 'right center'\n })\n .on('click', function(){\n if ($(this).find('i.eye.icon').hasClass('slash')) {\n if (overlays_visible.length > 0) {\n $(overlays_visible).each(function(i, overlay){\n $(overlay).show();\n });\n overlays_visible = [];\n }\n }\n else {\n overlays_visible = $('.floating.overlay:visible');\n $('.floating.overlay:visible').hide();\n }\n $(this).find('i.icon').toggleClass('slash');\n });\n\n $('#btnToggle3DOptions')\n .popup({\n title: 'Toggle 3D Options',\n position: 'right center'\n })\n .on('click', function(){\n $(this).find('i.icon').toggleClass('disabled');\n $('#threeD-tool').toggle();\n });\n $('#btnAddCircle')\n .popup({\n title: 'Circle',\n position: 'right center'\n })\n .on('click', function(){\n var circle = new fabric.Circle({ radius: 100, fill: 'green', left: 100, top: 100 });\n app.fabric.model.helpers.addToCenter(circle);\n });\n $('#btnAddSquare')\n .popup({\n title: 'Square',\n position: 'right center'\n })\n .on('click', function(){\n var rect = new fabric.Rect({\n left: 100,\n top: 100,\n fill: 'red',\n width: 200,\n height: 200\n });\n app.fabric.model.helpers.addToCenter(rect);\n });\n $('#btnAddTriangle')\n .popup({\n title: 'Triangle',\n position: 'right center'\n })\n .on('click', function(){\n var triangle = new fabric.Triangle({ width: 200, height: 200, fill: 'blue', left: 50, top: 50 });\n app.fabric.model.helpers.addToCenter(triangle);\n });\n }\n\n toggle() {\n if (!app.fabric.model.attributes.transitioning) {\n $(\"#toolbar\")\n .sidebar({\n dimPage: false,\n transition: 'push',\n exclusive: false,\n closable: false,\n onChange: function() {\n app.fabric.model.attributes.transitioning = true;\n },\n onHide: function() {\n app.fabric.model.attributes.transitioning = false;\n },\n onShow: function() {\n app.fabric.model.attributes.transitioning = false;\n }\n })\n .sidebar(\"toggle\");\n app.fabric.model.helpers.updateCanvasSize();\n }\n }\n}","import ImageTracer from 'ImageTracer';\nimport BaseIntegration from './BaseIntegration.js';\n\n/**\n * ImageTracer view.\n *\n * Manages all UI elements relating to ImageTracer integration.\n */\n\nexport default class ImageTracerIntegration extends BaseIntegration {\n constructor(app) {\n\n this.controls = ImageTracer.checkoptions();\n this.controls.numberofcolors = 16;\n this.controls.strokewidth = 2;\n this.controls.viewbox = true;\n console.log(this.controls);\n \n super();\n\n $('.imagetracerConfig').on('change', () => {\n console.log('hiii');\n this.preview(app);\n });\n\n $('.imagetracer.controls .ui.slider.colours').slider({\n min: 2,\n max: 16,\n start: 4,\n step: 2,\n onChange: () => { this.preview(app) }\n });\n // $('.imagetracer.controls .ui.slider.mincolorratio').slider({\n // min: 0,\n // max: 800,\n // start: 0,\n // step: 100,\n // onChange: () => { this.preview(app) }\n // });\n }\n\n preview(app) {\n let preset = $('.preset').find(\":selected\").text().toLowerCase();\n app.vector.imagetracer.controls.numberofcolors = $('.ui.slider.colours').slider('get value');\n app.vector.imagetracer.controls.mincolorratio = $('.mincolorratio').val();\n app.vector.imagetracer.controls.colorquantcycles = $('.colorquantcycles').val();\n app.vector.imagetracer.controls.ltres = $('.ltres').val();\n app.vector.imagetracer.controls.qtres = $('.qtres').val();\n app.vector.imagetracer.controls.pathomit = $('.pathomit').val();\n app.vector.imagetracer.controls.rightangleenhance = $('.rightangleenhance').is(\":checked\");\n app.vector.imagetracer.controls.layering = $('.layering').is(\":checked\");\n app.vector.imagetracer.controls.blurradius = $('.blurradius').val();\n app.vector.imagetracer.controls.blurdelta = $('.blurdelta').val();\n // Potrace.setParameter({\n // alphamax: $('.alphamax').val(),\n // optcurve: $('.optcurve').is(\":checked\"),\n // opttolerance: $('.opttolerance').val(),\n // turdsize: $('.turdsize').val(),\n // turnpolicy: $('.turnpolicy').find(\":selected\").text().toLowerCase()\n // });\n\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n ImageTracer.imageToSVG(selectedObjects[0]._element.src, function(svg) {\n app.fabric.model.helpers.loadSVG(svg, () => {}, true);\n }, preset != 'default' ? preset : app.vector.imagetracer.controls);\n }\n \n // Duplicates the image programatically so we can get its original dimensions.\n getImageDimensions() {\n var original_image = document.getElementById('original-image');\n var img = document.createElement('img');\n img.src = original_image.src;\n \n // Get the image data from a virtual canvas.\n var canvas = document.createElement('canvas');\n canvas.width = img.width;\n canvas.height = img.height;\n var context = canvas.getContext('2d');\n context.drawImage(img,0,0);\n \n return context.getImageData(0, 0, img.width, img.height);\n }\n\n}\n","import $ from 'jQuery';\nimport Potrace from 'Potrace';\nimport BaseIntegration from './BaseIntegration.js';\n\n/**\n * Potrace model for the main canvas.\n */\n\nexport default class PotraceIntegration extends BaseIntegration {\n constructor(app) {\n super();\n // * parameters:\n // * turnpolicy (\"black\" / \"white\" / \"left\" / \"right\" / \"minority\" / \"majority\")\n // * how to resolve ambiguities in path decomposition. (default: \"minority\") \n // * turdsize\n // * suppress speckles of up to this size (default: 2)\n // * optcurve (true / false)\n // * turn on/off curve optimization (default: true)\n // * alphamax\n // * corner threshold parameter (default: 1)\n // * opttolerance \n // * curve optimization tolerance (default: 0.2)\n Potrace.setParameter({\n alphamax: 1,\n optcurve: false,\n opttolerance: 0.2,\n turdsize: 100,\n turnpolicy: \"black\"\n });\n\n $('.potraceConfig').on('change', () => {\n this.preview(app);\n });\n }\n\n createSVG(src, callbackFn) {\n // Create an SVG from data and settings, draw to screen.\n Potrace.clear();\n Potrace.loadImageFromSrc(src);\n Potrace.process(function() {\n var svg = Potrace.getSVG(1);\n const randomColor = () => '#'+('00000'+(Math.random()*(1<<24)|0).toString(16)).slice(-6);\n var newSVG = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n // normalize should be used to get back absolute segments\n const pathsDatas = $(svg).find('path')[0].getPathData({ normalize: true }).reduce((acc, seg) => {\n const pathData = seg.type === 'M' ? [] : acc.pop();\n seg.values = seg.values.map((v) => Math.round(v * 1000) / 1000);\n pathData.push(seg);\n acc.push(pathData); \n \n return acc;\n }, []);\n\n pathsDatas.forEach(function(d) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setPathData(d);\n path.setAttribute('fill', randomColor());\n newSVG.appendChild(path);\n });\n\n callbackFn(newSVG.outerHTML);\n });\n }\n\n preview(app) {\n Potrace.setParameter({\n alphamax: $('.alphamax').val(),\n optcurve: $('.optcurve').is(\":checked\"),\n opttolerance: $('.opttolerance').val(),\n turdsize: $('.turdsize').val(),\n turnpolicy: $('.turnpolicy').find(\":selected\").text().toLowerCase()\n });\n\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n app.vector.potrace.createSVG(selectedObjects[0]._element.src, function(svg) {\n app.fabric.model.helpers.loadSVG(svg, () => {}, true);\n });\n }\n\n \n}\n","import $ from 'jQuery';\nimport BaseControls from './BaseControls.js';\nimport ImageTracerIntegration from '../../integrations/ImageTracerIntegration.js'\nimport PotraceIntegration from '../../integrations/PotraceIntegration.js';\n\n/**\n * Vector converter controls\n * \n * Set which framework (Imagetracer|Potrace) and what it's settings are\n */\n\nvar app = {};\nexport default class VectorControls extends BaseControls {\n constructor( appInstance ) {\n app = appInstance;\n super();\n var el = document.getElementById( 'vector-tool' );\n if ( !el ) {\n return;\n }\n this.imagetracer = new ImageTracerIntegration( app );\n this.potrace = new PotraceIntegration( app );\n\n this.updateSelection();\n\n $( '#vector-tool .method input' ).change( () => {\n this.updateSelection();\n this.preview( app );\n } );\n }\n\n updateSelection() {\n this.selected = $( '#vector-tool .method input:checked' ).val();\n $( '#vector-tool .controls:not(.' + this.selected + ')' ).slideUp()\n $( '#vector-tool .controls.' + this.selected ).slideDown()\n }\n\n preview( app ) {\n this[ this.selected ].preview( app );\n }\n\n create( app, replace = false ) {\n // @todo: Expand when other things are set to temporary\n let objects = app.fabric.model.canvas.getObjects();\n objects.forEach( ( object ) => {\n if ( object.temporary ) {\n object.temporary = false;\n }\n } );\n if ( replace ) {\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n app.fabric.model.canvas.remove( selectedObjects[ 0 ] );\n }\n }\n\n\n}\n","// External libs\r\nimport $ from 'jQuery';\r\n// @TODO: update as part of refactor\r\nimport FabricJSIntegration from './app/integrations/FabricJSIntegration.js';\r\nimport FomanticIntegration from './app/integrations/FomanticIntegration.js';\r\nimport DropEvents from './app/events/DropEvents.js';\r\nimport KeyEvents from './app/events/KeyEvents.js';\r\nimport LayerControls from './app/ui/controls/LayerControls.js';\r\nimport LibraryControls from './app/ui/controls/LibraryControls.js';\r\nimport TimelineControls from './app/ui/controls/TimelineControls.js';\r\nimport ToolbarControls from './app/ui/controls/ToolbarControls.js';\r\nimport VectorControls from './app/ui/controls/VectorControls.js';\r\n\r\n/**\r\n * Manifold Browser Application\r\n */\r\nexport default class App {\r\n constructor() {\r\n // Integrations\r\n this.fabric = new FabricJSIntegration(this);\r\n this.fomantic = new FomanticIntegration(this);\r\n this.ThreeCanvasModel = [];\r\n this.ThreeCanvasView = [];\r\n\r\n // Events\r\n this.events = {};\r\n this.events.drop = new DropEvents(this);\r\n this.events.key = new KeyEvents(this);\r\n\r\n // UI \r\n this.layers = new LayerControls(this);\r\n this.library = new LibraryControls(this);\r\n this.timeline = new TimelineControls(this);\r\n this.toolbar = new ToolbarControls(this);\r\n this.vector = new VectorControls(this);\r\n }\r\n}\r\n\r\n// Startup using jQuery.ready()\r\n$(() => {\r\n var app = new App();\r\n\r\n // Run all the ready functions\r\n for (var classInstance in app) {\r\n if (app[classInstance].ready) {\r\n app[classInstance].ready();\r\n }\r\n }\r\n});\r\n"],"names":["app","super","$","THREE","let","fabric","ThreeJSIntegration","this","ImageTracer","Potrace","const"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"app.js","sources":["../src/app/integrations/BaseIntegration.js","../src/app/ui/controls/BaseControls.js","../src/app/ui/controls/ColourPickerControls.js","../node_modules/rollup-plugin-pug/dist/runtime.es.js","../src/templates/helpers/active-object-context.pug","../src/templates/helpers/3d-tool__preview.pug","../src/app/integrations/ThreeJSIntegration.js","../src/app/integrations/ThreeJSIntegrationExtras.js","../src/app/integrations/FabricJS/Events.js","../src/app/integrations/FabricJS/Helpers.js","../src/app/integrations/FabricJSIntegration.js","../src/app/integrations/FomanticIntegration.js","../src/app/events/BaseEvents.js","../src/templates/helpers/library__item.pug","../src/app/events/DropEvents.js","../src/app/events/KeyEvents.js","../src/templates/helpers/layers__item.pug","../src/app/ui/controls/LayerControls.js","../src/app/ui/controls/LibraryControls.js","../src/templates/footer/timeline.pug","../src/app/ui/controls/TimelineControls.js","../src/app/ui/controls/ToolbarControls.js","../src/app/integrations/ImageTracerIntegration.js","../src/app/integrations/PotraceIntegration.js","../src/app/ui/controls/VectorControls.js","../src/app.js"],"sourcesContent":["/**\n * Base Integration class.\n */\n\nexport default class BaseIntegration {}\n","/**\n * Base Controls class.\n */\n\nexport default class BaseControls {}\n","import $ from 'jQuery';\nimport BaseControls from './BaseControls.js';\n\n/**\n * Colour picker model for the main canvas.\n * Credit - https://www.webdesignerdepot.com/2013/03/how-to-create-a-color-picker-with-html5-canvas/\n */\n\nvar app = {};\nexport default class ColourPickerControls extends BaseControls {\n constructor(appInstance) {\n app = appInstance;\n super();\n var el = document.getElementById('colour-picker');\n if (!el) {\n return;\n }\n\n this.canvas = el.getContext('2d');\n // create an image object and get it’s source\n var img = new Image();\n img.onload = function(){\n this.canvas.drawImage(img,0,0);\n }.bind(this);\n img.src = '/assets/spectrum.jpg';\n this.canvas.scale(0.49, 0.4);\n\n $('#fill-tool').draggable({ cancel: \"#colour-picker, #colour-picker-preview input\" });\n\n var mouseDown = false;\n $('#colour-picker').on('mousedown', function(event){\n mouseDown = true;\n this.pickColour(event);\n }.bind(this));\n $('#colour-picker').on('mousemove', function(event){\n if (mouseDown) {\n this.pickColour(event);\n }\n }.bind(this));\n $('#colour-picker').on('mouseup', function(){\n mouseDown = false;\n });\n \n }\n\n lookupAndSetColour(colour) {\n var ctx, cvs;\n cvs = document.createElement('canvas');\n cvs.height = 1;\n cvs.width = 1;\n ctx = cvs.getContext('2d');\n ctx.fillStyle = colour;\n ctx.fillRect(0, 0, 1, 1);\n var c = ctx.getImageData(0, 0, 1, 1).data;\n this.setColour(c[0], c[1], c[2]);\n }\n\n setColour(R,G,B) {\n var rgb = R + ', ' + G + ', ' + B;\n // convert RGB to HEX\n var hex = this.rgbToHex(R,G,B);\n // making the color the value of the input\n $('input#rgb').val(rgb);\n $('input#hex').val('#' + hex);\n $('#colour-picker-preview').css('background-color', '#' + hex);\n\n if (app.fabric.model.canvas) {\n $('#btnFillActive .icon').css('color', '#' + hex);\n app.fabric.model.canvas.getActiveObject().set(\"fill\", '#' + hex);\n app.fabric.model.canvas.renderAll();\n }\n }\n\n // http://www.javascripter.net/faq/rgbtohex.htm\n rgbToHex(R,G,B) {\n return this.toHex(R)+this.toHex(G)+this.toHex(B); \n }\n\n toHex(m) {\n var n = parseInt(m,10);\n if (isNaN(n)) {\n return \"00\";\n }\n n = Math.max(0,Math.min(n,255));\n \n return \"0123456789ABCDEF\".charAt((n-(n%16))/16) + \"0123456789ABCDEF\".charAt(n%16);\n }\n\n pickColour(event) {\n // getting user coordinates\n var x = event.offsetX;\n var y = event.offsetY;\n // getting image data and RGB values\n var img_data = this.canvas.getImageData(x, y, 1, 1).data;\n var R = img_data[0];\n var G = img_data[1];\n var B = img_data[2];\n this.setColour(R, G, B);\n }\n\n}\n","export default (function(exports) {\n 'use strict';\n\n var pug_has_own_property = Object.prototype.hasOwnProperty;\n\n /**\n * Merge two attribute objects giving precedence\n * to values in object `b`. Classes are special-cased\n * allowing for arrays and merging/joining appropriately\n * resulting in a string.\n *\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n * @api private\n */\n\n exports.merge = pug_merge;\n function pug_merge(a, b) {\n if (arguments.length === 1) {\n var attrs = a[0];\n for (var i = 1; i < a.length; i++) {\n attrs = pug_merge(attrs, a[i]);\n }\n return attrs;\n }\n\n for (var key in b) {\n if (key === 'class') {\n var valA = a[key] || [];\n a[key] = (Array.isArray(valA) ? valA : [valA]).concat(b[key] || []);\n } else if (key === 'style') {\n var valA = pug_style(a[key]);\n valA = valA && valA[valA.length - 1] !== ';' ? valA + ';' : valA;\n var valB = pug_style(b[key]);\n valB = valB && valB[valB.length - 1] !== ';' ? valB + ';' : valB;\n a[key] = valA + valB;\n } else {\n a[key] = b[key];\n }\n }\n\n return a;\n };\n\n /**\n * Process array, object, or string as a string of classes delimited by a space.\n *\n * If `val` is an array, all members of it and its subarrays are counted as\n * classes. If `escaping` is an array, then whether or not the item in `val` is\n * escaped depends on the corresponding item in `escaping`. If `escaping` is\n * not an array, no escaping is done.\n *\n * If `val` is an object, all the keys whose value is truthy are counted as\n * classes. No escaping is done.\n *\n * If `val` is a string, it is counted as a class. No escaping is done.\n *\n * @param {(Array.|Object.|string)} val\n * @param {?Array.} escaping\n * @return {String}\n */\n exports.classes = pug_classes;\n function pug_classes_array(val, escaping) {\n var classString = '', className, padding = '', escapeEnabled = Array.isArray(escaping);\n for (var i = 0; i < val.length; i++) {\n className = pug_classes(val[i]);\n if (!className) continue;\n escapeEnabled && escaping[i] && (className = pug_escape(className));\n classString = classString + padding + className;\n padding = ' ';\n }\n return classString;\n }\n function pug_classes_object(val) {\n var classString = '', padding = '';\n for (var key in val) {\n if (key && val[key] && pug_has_own_property.call(val, key)) {\n classString = classString + padding + key;\n padding = ' ';\n }\n }\n return classString;\n }\n function pug_classes(val, escaping) {\n if (Array.isArray(val)) {\n return pug_classes_array(val, escaping);\n } else if (val && typeof val === 'object') {\n return pug_classes_object(val);\n } else {\n return val || '';\n }\n }\n\n /**\n * Convert object or string to a string of CSS styles delimited by a semicolon.\n *\n * @param {(Object.|string)} val\n * @return {String}\n */\n\n exports.style = pug_style;\n function pug_style(val) {\n if (!val) return '';\n if (typeof val === 'object') {\n var out = '';\n for (var style in val) {\n /* istanbul ignore else */\n if (pug_has_own_property.call(val, style)) {\n out = out + style + ':' + val[style] + ';';\n }\n }\n return out;\n } else {\n return val + '';\n }\n };\n\n /**\n * Render the given attribute.\n *\n * @param {String} key\n * @param {String} val\n * @param {Boolean} escaped\n * @param {Boolean} terse\n * @return {String}\n */\n exports.attr = pug_attr;\n function pug_attr(key, val, escaped, terse) {\n if (val === false || val == null || !val && (key === 'class' || key === 'style')) {\n return '';\n }\n if (val === true) {\n return ' ' + (terse ? key : key + '=\"' + key + '\"');\n }\n if (typeof val.toJSON === 'function') {\n val = val.toJSON();\n }\n if (typeof val !== 'string') {\n val = JSON.stringify(val);\n if (!escaped && val.indexOf('\"') !== -1) {\n return ' ' + key + '=\\'' + val.replace(/'/g, ''') + '\\'';\n }\n }\n if (escaped) val = pug_escape(val);\n return ' ' + key + '=\"' + val + '\"';\n };\n\n /**\n * Render the given attributes object.\n *\n * @param {Object} obj\n * @param {Object} terse whether to use HTML5 terse boolean attributes\n * @return {String}\n */\n exports.attrs = pug_attrs;\n function pug_attrs(obj, terse){\n var attrs = '';\n\n for (var key in obj) {\n if (pug_has_own_property.call(obj, key)) {\n var val = obj[key];\n\n if ('class' === key) {\n val = pug_classes(val);\n attrs = pug_attr(key, val, false, terse) + attrs;\n continue;\n }\n if ('style' === key) {\n val = pug_style(val);\n }\n attrs += pug_attr(key, val, false, terse);\n }\n }\n\n return attrs;\n };\n\n /**\n * Escape the given string of `html`.\n *\n * @param {String} html\n * @return {String}\n * @api private\n */\n\n var pug_match_html = /[\"&<>]/;\n exports.escape = pug_escape;\n function pug_escape(_html){\n var html = '' + _html;\n var regexResult = pug_match_html.exec(html);\n if (!regexResult) return _html;\n\n var result = '';\n var i, lastIndex, escape;\n for (i = regexResult.index, lastIndex = 0; i < html.length; i++) {\n switch (html.charCodeAt(i)) {\n case 34: escape = '"'; break;\n case 38: escape = '&'; break;\n case 60: escape = '<'; break;\n case 62: escape = '>'; break;\n default: continue;\n }\n if (lastIndex !== i) result += html.substring(lastIndex, i);\n lastIndex = i + 1;\n result += escape;\n }\n if (lastIndex !== i) return result + html.substring(lastIndex, i);\n else return result;\n };\n\n /**\n * Re-throw the given `err` in context to the\n * the pug in `filename` at the given `lineno`.\n *\n * @param {Error} err\n * @param {String} filename\n * @param {String} lineno\n * @param {String} str original source\n * @api private\n */\n\n exports.rethrow = pug_rethrow;\n function pug_rethrow(err, filename, lineno, str){\n if (!(err instanceof Error)) throw err;\n if ((typeof window != 'undefined' || !filename) && !str) {\n err.message += ' on line ' + lineno;\n throw err;\n }\n try {\n str = str || require('fs').readFileSync(filename, 'utf8')\n } catch (ex) {\n pug_rethrow(err, null, lineno)\n }\n var context = 3\n , lines = str.split('\\n')\n , start = Math.max(lineno - context, 0)\n , end = Math.min(lines.length, lineno + context);\n\n // Error context\n var context = lines.slice(start, end).map(function(line, i){\n var curr = i + start + 1;\n return (curr == lineno ? ' > ' : ' ')\n + curr\n + '| '\n + line;\n }).join('\\n');\n\n // Alter exception message\n err.path = filename;\n err.message = (filename || 'Pug') + ':' + lineno\n + '\\n' + context + '\\n\\n' + err.message;\n throw err;\n };\n\n return exports\n})({});\n",".active-object-context.floating.overlay\n .ui.mini.menu.labeled.icon.pointing\n a.item#btnSaveSVG\n i.save.icon\n span Save SVG\n a.item#btnDeleteActive\n i.trash.alternate.icon\n span Delete\n a.item.disabled#btnGroupActive\n i.object.group.icon\n span Group (1)\n a.item.disabled#btnMergeActive\n i.object.group.outline.icon\n span Merge\n a.item.disabled#btnFillActive\n i.tint.icon\n span Fill\n a.item.disabled\n i.pencil.alternate.icon\n span Stroke\n a#btnToggleVector.item.disabled\n i.paper.plane.outline.icon\n span Vector\n a#btnMake3D.item.disabled\n i.snowflake.outline.icon\n span 3D\n",".model-preview(style='box-shadow: inset 0 0 5px #ccc;',id=id)","import $ from 'jQuery';\nimport THREE from 'THREE';\nimport BaseIntegration from './BaseIntegration.js';\nimport modelPreview from '../../templates/helpers/3d-tool__preview.pug';\n\n/**\n * Three Canvas view.\n *\n * Manages a THREE.JS canvas view.\n */\n\nvar models = 0;\n\nexport default class ThreeIntegration extends BaseIntegration {\n constructor(options) {\n super(options);\n $('#container').append(modelPreview( { id: 'model-preview-' + models } ));\n this.$el = $('#model-preview-' + models);\n this.model = options.model;\n this.$el.css('width', options.width);\n this.$el.css('height', options.height);\n this.model.attributes.width = options.width;\n this.model.attributes.height = options.height;\n this.$el.on( 'mousemove', function(event) {\n this.model.attributes.mouse.x = (( event.offsetX / this.model.attributes.renderer.domElement.clientWidth ) * 2 ) - 1;\n this.model.attributes.mouse.y = - (( event.offsetY / this.model.attributes.renderer.domElement.clientHeight ) * 2 ) + 1;\n }.bind(this));\n\n this.createScene(options.svg);\n models +=1;\n }\n\n createScene(svg) {\n \n this.model.attributes.renderer.setSize( this.model.attributes.width, this.model.attributes.height );\n this.model.clearScene();\n \n this.$el.append( this.model.attributes.renderer.domElement );\n\n // Load the imagetracejs SVG using experimental SVGLoader from three.js dev.\n var loader = new THREE.SVGLoader();\n var paths = loader.parse(svg).paths;\n var offsetX = (paths[0].currentPath ? paths[0].currentPath.currentPoint.x : 0);\n var offsetY = (paths[0].currentPath ? paths[0].currentPath.currentPoint.y : 0);\n var svgExtruded = this.extrudeSVG({\n paths: paths,\n amount: this.model.attributes.extrudeAmount,\n center: { x: offsetX, y: offsetY }\n });\n var box = new THREE.Box3().setFromObject( svgExtruded );\n\n this.model.attributes.mesh = svgExtruded;\n this.model.attributes.scene.add( this.model.attributes.mesh );\n this.model.attributes.camera.position.set(box.min.x + 100, box.min.y + 100 , - box.max.z * 8);\n this.model.attributes.controls.target = new THREE.Vector3( box.min.x + 100, box.min.y + 100 , box.min.z * 4 );\n // Start the animation loop.\n this.model.animate();\n }\n\n // Populate a 3D group from an SVG using SVGLoader\n extrudeSVG(svgObject) {\n var paths = svgObject.paths;\n var amount = svgObject.amount;\n var center = svgObject.center;\n\n var group = new THREE.Group();\n for ( var i = 0; i < paths.length; i ++ ) {\n var path = paths[ i ];\n var shapes = path.toShapes( true );\n for ( var j = 0; j < shapes.length; j ++ ) {\n var color = new THREE.Color(Math.random() * 0xffffff);\n var material = new THREE.MeshBasicMaterial( {\n color: path.color ? path.color : color\n } );\n var simpleShape = shapes[ j ];\n var shape3d = new THREE.ExtrudeBufferGeometry( simpleShape, {\n depth: amount ,\n bevelEnabled: false\n } );\n\n var mesh = new THREE.Mesh( shape3d, material );\n mesh.rotation.x = Math.PI;\n mesh.rotation.y = Math.PI;\n mesh.translateZ( - amount - 1 );\n mesh.translateX( - center.x);\n mesh.translateY( - center.y);\n\n group.add( mesh );\n }\n }\n\n return group;\n }\n}\n","import THREE from 'THREE';\n\n/**\n * Three Canvas model.\n */\n\nvar app = {};\nexport default class ThreeJSIntegrationExtras {\n constructor(appInstance) {\n app = appInstance;\n this.attributes = {\n animationId: null,\n renderer: null,\n scene: null,\n width: 400,\n height: 400,\n camera: null,\n controls: null,\n mesh: null,\n raycaster: null,\n highlighter: null,\n mouse: null,\n extrudeAmount: 40,\n helpers: []\n };\n this.attributes.scene = new THREE.Scene();\n var aspect = this.attributes.width / this.attributes.height;\n this.attributes.camera = new THREE.PerspectiveCamera( 45, aspect, 1, 100000 );\n this.attributes.renderer = new THREE.WebGLRenderer({ alpha: true, antialias: true });\n this.attributes.renderer.setPixelRatio( window.devicePixelRatio );\n this.attributes.renderer.setSize( this.attributes.width, this.attributes.height );\n this.attributes.controls = new THREE.OrbitControls( this.attributes.camera, this.attributes.renderer.domElement );\n this.attributes.raycaster = new THREE.Raycaster();\n this.attributes.mouse = new THREE.Vector2();\n }\n\n // Scene helpers.\n addHelpers() {\n var size = 2000;\n var divisions = 100;\n var gridColour = new THREE.Color(0xEFEFEF);\n\n var gridHelper = new THREE.GridHelper( size, divisions, gridColour, gridColour );\n gridHelper.position.setX(-712.5);\n gridHelper.position.setZ(-500);\n gridHelper.rotateX(Math.PI / 2);\n gridHelper.rotateZ(-Math.PI / 4);\n this.attributes.helpers.push(gridHelper);\n this.attributes.scene.add( this.attributes.helpers[this.attributes.helpers.length-1] );\n\n var gridHelper2 = new THREE.GridHelper( size, divisions, gridColour, gridColour );\n gridHelper2.position.setX(712.5);\n gridHelper2.position.setZ(-500);\n gridHelper2.rotateX(Math.PI / 2);\n gridHelper2.rotateZ(Math.PI / 4);\n this.attributes.helpers.push(gridHelper2);\n this.attributes.scene.add( this.attributes.helpers[this.attributes.helpers.length-1] );\n\n var axesHelper = new THREE.AxesHelper( 500 );\n axesHelper.rotateY(-Math.PI / 4);\n axesHelper.position.set(0, -100, -350);\n this.attributes.helpers.push(axesHelper);\n this.attributes.scene.add( this.attributes.helpers[this.attributes.helpers.length-1] );\n }\n\n clearScene() {\n cancelAnimationFrame( this.attributes.animationId );\n this.attributes.scene.children = [];\n this.attributes.mesh = null;\n this.attributes.camera.aspect = this.attributes.width / this.attributes.height;\n }\n\n animate() {\n this.attributes.animationId = requestAnimationFrame( this.animate.bind(this) );\n this.render.bind(this)();\n }\n\n render() {\n this.attributes.controls.update();\n this.attributes.renderer.render( this.attributes.scene, this.attributes.camera );\n\n // this.attributes.raycaster.setFromCamera( this.attributes.mouse, this.attributes.camera );\n \n // var intersects = this.attributes.raycaster.intersectObjects( this.attributes.mesh.children );\n // if ( intersects.length > 0 ) {\n // if (this.attributes.highlighter) {\n // this.attributes.scene.remove( this.attributes.highlighter );\n // }\n // this.attributes.highlighter = new THREE.BoxHelper( intersects[0].object, 0xffff00 );\n // this.attributes.scene.add( this.attributes.highlighter );\n // }\n\n if (app && app.fabric && app.fabric.model.canvas) {\n app.fabric.model.canvas.renderAll();\n }\n }\n\n resize() {\n this.attributes.camera.aspect = this.attributes.width / this.attributes.height;\n this.attributes.camera.updateProjectionMatrix();\n\n this.attributes.camera.position.setZ((this.attributes.width/ this.attributes.height) * this.attributes.extrudeAmount * 8);\n\n this.attributes.renderer.setSize( this.attributes.width, this.attributes.height );\n }\n}\n","import $ from 'jQuery';\nimport fabric from 'fabric';\nimport activeObjectContext from '../../../templates/helpers/active-object-context.pug';\nimport ThreeJSIntegration from '../ThreeJSIntegration.js';\nimport ThreeJSIntegrationExtras from '../ThreeJSIntegrationExtras.js';\n\nvar app = {};\nexport default class FabricJSIntegrationEvents {\n constructor(appInstance) {\n app = appInstance;\n }\n\n setupEvents() {\n // Credit - https://stackoverflow.com/a/24238960\n app.fabric.model.canvas.on('object:moving', function (e) {\n var obj = e.target;\n // if object is too big ignore\n if (obj.currentHeight > obj.canvas.height || obj.currentWidth > obj.canvas.width){\n return;\n } \n obj.setCoords(); \n // top-left corner\n if (obj.getBoundingRect().top < 0 || obj.getBoundingRect().left < 0){\n obj.top = Math.max(obj.top, obj.top-obj.getBoundingRect().top);\n obj.left = Math.max(obj.left, obj.left-obj.getBoundingRect().left);\n }\n // bot-right corner\n if (obj.getBoundingRect().top+obj.getBoundingRect().height > obj.canvas.height || obj.getBoundingRect().left+obj.getBoundingRect().width > obj.canvas.width){\n obj.top = Math.min(obj.top, obj.canvas.height-obj.getBoundingRect().height+obj.top-obj.getBoundingRect().top);\n obj.left = Math.min(obj.left, obj.canvas.width-obj.getBoundingRect().width+obj.left-obj.getBoundingRect().left);\n }\n });\n\n // Hide previous active context windows\n var clearOverlays = function() { \n $('.model-preview').hide();\n $('#vector-tool').hide();\n $('.active-object-context').remove();\n $('#fill-tool').hide();\n\n // Remove any objects added to the canvas by tools, i.e. previews\n let objects = app.fabric.model.canvas.getObjects();\n objects.forEach((object) => {\n if (object.temporary) {\n app.fabric.model.canvas.remove(object); \n }\n });\n }\n // Create the active object context menu when selecting an object.\n var selectionCallback = function(e) {\n clearOverlays();\n\n let target = e.selected.shift();\n\n var $menu = $(activeObjectContext());\n $('#container').append($menu);\n var offsetX = target.left + ((target.width / 2) - ($menu.width() / 2));\n var offsetY = target.top - ($menu.height()) - 50;\n $menu.css('left', offsetX);\n $menu.css('top', offsetY);\n\n // Set the menu to be draggable\n $('.floating.overlay').draggable();\n\n switch(target.type) {\n case 'image':\n $('#btnToggleVector').removeClass('disabled');\n break;\n }\n\n // Not 3D, not text, not group\n if (!target._element && !target.text && !target._objects) {\n $('#btnMake3D').removeClass('disabled');\n }\n // Not 3D, not group\n if (!target._element && !target._objects) {\n $('#btnFillActive').removeClass('disabled');\n $('#btnFillActive .icon').css('color', target.fill);\n app.fabric.model.colourPickerModel.lookupAndSetColour(target.fill);\n }\n // Is group.\n if (target._objects) {\n\n $('#btnGroupActive').removeClass('disabled');\n if (target.type == 'activeSelection') {\n $('#btnGroupActive span').html('Group (' + target._objects.length + ')');\n }\n else {\n $('#btnGroupActive span').html('Ungroup (' + target._objects.length + ')');\n }\n }\n\n // Events\n $('#btnGroupActive').click(function() {\n var activeObject = app.fabric.model.canvas.getActiveObject();\n if (activeObject.type == 'group') {\n activeObject.toActiveSelection();\n }\n else {\n activeObject.toGroup();\n }\n \n app.fabric.model.canvas.discardActiveObject();\n app.fabric.model.canvas.requestRenderAll();\n\n // Update layers tool\n if (app.layers) {\n app.layers.updateLayers();\n }\n });\n \n $('#btnFillActive:not(.disabled)').click(function(){\n $(this).toggleClass('active');\n $('#fill-tool').toggle();\n });\n $('#btnDeleteActive').click(function() {\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n for (var i = 0; i < selectedObjects.length; i++) {\n app.fabric.model.canvas.remove(selectedObjects[i]); \n }\n app.fabric.model.canvas.discardActiveObject();\n $('.active-object-context').remove();\n // Update layers tool\n if (app.layers) {\n app.layers.updateLayers();\n }\n });\n $('#btnSaveSVG').click(function() {\n var a = document.createElement(\"a\");\n a.href = window.URL.createObjectURL(new Blob([app.fabric.model.canvas.toSVG()], {type: \"text/plain\"}));\n a.download = prompt(\"Please enter a filename\", \"Manifold-Download.svg\");\n if (a.download != 'null') {\n if (a.download.indexOf('.svg') < 0) {\n a.download += '.svg';\n }\n a.click();\n }\n });\n $('#btnToggleVector:not(.disabled)')\n .popup({\n title: 'Toggle Vector Controls',\n position: 'right center'\n })\n .on('click', (e) => {\n $('#vector-tool').toggle();\n app.vector.preview(app);\n });\n // @todo: Move these vector tool event handlers somewhere better\n $('#btnCreateVector').on('click', () => {\n app.vector.create(app);\n });\n $('#btnReplaceVector').on('click', () => {\n app.vector.create(app, true);\n });\n $('#btnMake3D:not(.disabled)').click(function() {\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n\n for (var i = 0; i < selectedObjects.length; i++) {\n if (selectedObjects[i].toSVG) {\n var obj_width = selectedObjects[i].width * selectedObjects[i].scaleX;\n var obj_height = selectedObjects[i].height * selectedObjects[i].scaleY;\n\n // Start SVG document.\n // Removed: ' viewbox=\"0 0 ';\n var svg_start = '';\n\n var svg_end = '';\n\n // Hack for matrix transform;\n // var svgElements = svg_start + selectedObjects[i].toSVG().replace(/matrix\\(.*\\)/,'matrix(1 0 0 1 0 0)') + svg_end;\n\n var svgElements = svg_start + selectedObjects[i].toSVG() + svg_end;\n\n var create3DObject = function(threeCanvas) {\n var threeD = new fabric.Image(threeCanvas.$el.find('canvas')[0]);\n threeD.left = selectedObjects[i].left;\n threeD.top = selectedObjects[i].top;\n app.fabric.model.canvas.add(threeD);\n };\n app.ThreeCanvasModel.push(new ThreeJSIntegrationExtras({\n height: obj_height,\n width: obj_width\n }));\n var ThreeFabricObject = new ThreeJSIntegration({ \n model: app.ThreeCanvasModel[app.ThreeCanvasModel.length-1],\n svg: svgElements,\n width: obj_width,\n height: obj_height\n });\n app.ThreeCanvasView.push( ThreeFabricObject );\n create3DObject(app.ThreeCanvasView[app.ThreeCanvasView.length-1]);\n app.fabric.model.canvas.remove(selectedObjects[i]);\n }\n else {\n console.log('not convertible!');\n }\n }\n app.fabric.model.canvas.discardActiveObject();\n $('.active-object-context').remove();\n });\n app.layers.updateLayers();\n };\n\n // Separated for Fabric's On not supporting multiple.\n app.fabric.model.canvas.on('selection:created', selectionCallback);\n app.fabric.model.canvas.on('selection:updated', selectionCallback);\n\n app.fabric.model.canvas.on('mouse:dblclick', function(e){\n if (e.target && e.target._element) {\n var $el = $(e.target._element).parent();\n var scaledWidth = e.target.width * e.target.scaleX;\n var scaledHeight = e.target.height * e.target.scaleY;\n var offsetX = e.target.left + ((scaledWidth / 2) - ($el.width() / 2));\n var offsetY = e.target.top + ((scaledHeight / 2) - ($el.height() / 2));\n $el.show();\n $el.css('left', offsetX);\n $el.css('top', offsetY);\n }\n });\n\n app.fabric.model.canvas.on('selection:cleared', function(){\n clearOverlays();\n\n if (app.layers) {\n app.layers.updateLayers();\n }\n });\n\n // @TODO: Don't follow if user moved the toolbar.\n app.fabric.model.canvas.on('object:moving', function(e) {\n var $menu = $('.active-object-context');\n var offsetX = e.target.left+ ((e.target.width / 2) - ($menu.width() / 2));\n var offsetY = e.target.top - ($menu.height()) - 50;\n var toolbarWidth = $('#toolbar').sidebar('is visible') ? $('#toolbar').width(): 0;\n if (offsetX < toolbarWidth) {\n offsetX = 0;\n }\n if (offsetX > app.fabric.model.canvas.width - toolbarWidth - $menu.width()) {\n offsetX = app.fabric.model.canvas.width - $menu.width(); \n }\n if (offsetY < 0) {\n offsetY = 0;\n }\n $menu.css('left', offsetX);\n $menu.css('top', offsetY);\n });\n\n // Update 3D canvas if it's that type of element.\n app.fabric.model.canvas.on('object:modified', function(e) {\n if (e.target._element) {\n app.fabric.model.events.updateModelPreviewViewPort(e.target);\n }\n });\n }\n\n updateModelPreviewViewPort(target) {\n var $container = $(target._element).parent();\n if ($container.hasClass('model-preview')) {\n var scaledWidth = target.width * target.scaleX;\n var scaledHeight = target.height * target.scaleY;\n var rotateY = target.get('angle');\n $container.css('width', scaledWidth);\n $container.css('height', scaledHeight);\n $container.css('transform', 'rotateZ(' + rotateY + 'deg)');\n\n var id = $container.attr('id').replace('model-preview-','');\n app.ThreeCanvasModel[id].attributes.width = scaledWidth;\n app.ThreeCanvasModel[id].attributes.height = scaledHeight;\n app.ThreeCanvasModel[id].resize();\n \n target._resetWidthHeight();\n }\n }\n}","import $ from 'jQuery';\nimport fabric from 'fabric';\n\nvar app = {};\nexport default class FabricJSIntegrationHelpers {\n constructor(appInstance) {\n app = appInstance;\n }\n\n // Loads an SVG string and splits up objects so they're loaded in the right position.\n loadSVG(svg, callbackFn, temporary = false) {\n fabric.loadSVGFromString(svg, function(objects){\n // Create a group so we add to center accurately.\n var group = new fabric.Group(objects);\n objects.forEach((object, index) => {\n object.id = object.type + '-' + Math.floor(Date.now() / 1000) + index; \n });\n if (temporary) {\n // Remove other previews\n // @todo: Expand when other things are set to temporary\n let existing_objects = app.fabric.model.canvas.getObjects();\n existing_objects.forEach((object) => {\n if (object.temporary) {\n app.fabric.model.canvas.remove(object); \n }\n });\n }\n \n this.addToCenter(group, temporary);\n\n if (callbackFn) {\n callbackFn(group);\n }\n }.bind(this));\n }\n\n updateCanvasSize() {\n var width = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n if ($(\"#toolbar\").sidebar('is visible')) {\n $('.canvas-container').css('marginLeft', ($('#toolbar').width()*1.5) + 'px');\n width -= $('#toolbar').width();\n }\n if ($(\"#details\").sidebar('is visible')) {\n width -= $('#details').width();\n }\n var height = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n app.fabric.model.canvas.setHeight( height );\n app.fabric.model.canvas.setWidth( width );\n }\n\n // Add an object to the center of the canvas.\n addToCenter(object, temporary = false) {\n var canvasWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n if ($(\"#toolbar\").sidebar('is visible')) {\n $('.canvas-container').css('marginLeft', ($('#toolbar').width()*1.5) + 'px');\n canvasWidth -= $('#toolbar').width();\n }\n if ($(\"#details\").sidebar('is visible')) {\n canvasWidth -= $('#details').width();\n }\n var canvasHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\n if (object.width > canvasWidth || object.height > canvasHeight) {\n object.scaleToWidth(app.fabric.model.canvas.getWidth() / 2);\n object.set({ left: (canvasWidth / 2) - (object.width * object.scaleX / 2), top: ((canvasHeight /2) - (object.height * object.scaleY / 2)) });\n }\n else {\n object.set({ left: (canvasWidth / 2) - (object.width / 2), top: ((canvasHeight /2) - (object.height / 2)) });\n }\n \n object.id = object.type + '-' + Math.floor(Date.now() / 1000);\n object.temporary = temporary;\n\n app.fabric.model.canvas.add(object);\n app.fabric.model.canvas.moveTo(object, app.fabric.model.canvas.getObjects().length);\n // Update layers tool\n if (app.layers) {\n app.layers.updateLayers();\n }\n }\n \n}","import fabric from 'fabric';\nimport BaseIntegration from './BaseIntegration.js';\nimport ColourPickerControls from '../ui/controls/ColourPickerControls.js';\nimport FabricJSIntegrationEvents from './FabricJS/Events.js';\nimport FabricJSIntegrationHelpers from './FabricJS/Helpers.js';\n\n/**\n * Fabric JS Integration.\n */\n\nvar app = {};\nexport default class FabricJSIntegration extends BaseIntegration {\n constructor( appInstance ) {\n app = appInstance;\n super();\n this.el = '#main-canvas';\n this.model = {\n colourPickerModel: new ColourPickerControls( appInstance ),\n canvas: new fabric.Canvas( 'main-canvas', { preserveObjectStacking: true } ),\n attributes: {\n canvas: null,\n transitioning: false\n },\n helpers: new FabricJSIntegrationHelpers( appInstance ),\n events: new FabricJSIntegrationEvents( appInstance )\n };\n }\n\n ready() {\n app.fabric.model.events.setupEvents();\n app.fabric.model.helpers.updateCanvasSize();\n\n // Default scene.\n app.fabric.demoAnimating();\n }\n demoAnimating() {\n\n // var gradient = new fabric.Gradient( {\n // type: 'linear',\n // gradientUnits: 'pixels', // or 'percentage'\n // coords: { x1: 0, y1: 0, x2: 0, y2: 50 },\n // colorStops: [\n // { offset: 0, color: '#F00' },\n // { offset: 1, color: '#000' }\n // ]\n // } );\n var triangle = new fabric.Triangle( { width: 200, height: 200, fill: 'blue', left: 50, top: -150 } );\n app.fabric.model.helpers.addToCenter( triangle );\n }\n demoDrawing() {\n var circle = new fabric.Circle( { radius: 100, fill: ' green' } );\n app.fabric.model.helpers.addToCenter( circle );\n circle.left -= 75;\n var rect = new fabric.Rect( {\n fill: 'red',\n width: 200,\n height: 200\n } );\n app.fabric.model.helpers.addToCenter( rect );\n rect.left += 75;\n }\n demoTracing() {\n var imgSrc = '/assets/puppies.jpg';\n fabric.Image.fromURL( imgSrc, function ( oImg ) {\n app.fabric.model.helpers.addToCenter( oImg );\n oImg.left -= 7;\n oImg.top += 13;\n app.fabric.model.canvas.setActiveObject( app.fabric.model.canvas.item( 0 ) );\n $( '#btnToggleVector' ).click();\n } );\n }\n}\n","// External libs\nimport $ from 'jQuery';\nimport BaseIntegration from './BaseIntegration.js';\n\n/**\n * Fomantic Integration\n */\n\nexport default class FomanticIntegration extends BaseIntegration {\n constructor() { \n super();\n }\n\n ready() { \n $('.ui.accordion').accordion({\n exclusive: false\n });\n $('.ui.dropdown').dropdown();\n $('.floating.overlay').draggable();\n }\n\n}\n","/**\n * Base Events class.\n */\n\n export default class BaseEvents {}\n",".ui.card\n a.image(href='#')\n img(src=url)","import $ from 'jQuery';\nimport BaseEvents from './BaseEvents.js';\nimport addLibraryItem from '../../templates/helpers/library__item.pug';\n\n/**\n * Drop Events class.\n */\n\nvar app = {};\nexport default class DropEvents extends BaseEvents {\n constructor( appInstance ) {\n app = appInstance;\n super();\n\n window.addEventListener(\"drop\", this.handleDrop);\n }\n\n handleDrop( event ) {\n console.log('File(s) dropped');\n\n // Prevent default behavior (Prevent file from being opened)\n event.preventDefault();\n\n let completeDrop = (file) => {\n window.URL = window.URL || window.webkitURL || window.mozURL;\n var url = URL.createObjectURL(file);\n console.log(url);\n $(addLibraryItem({ url: url }))\n .insertBefore('#btnUploadImage');\n };\n\n if (event.dataTransfer.items) {\n // Use DataTransferItemList interface to access the file(s)\n for (var i = 0; i < event.dataTransfer.items.length; i++) {\n // If dropped items aren't files, reject them\n if (event.dataTransfer.items[i].kind === 'file') {\n completeDrop(event.dataTransfer.items[i].getAsFile());\n }\n }\n } else {\n // Use DataTransfer interface to access the file(s)\n for (var i = 0; i < event.dataTransfer.files.length; i++) {\n completeDrop(event.dataTransfer.files[i]);\n }\n }\n }\n \n}\n","import BaseEvents from './BaseEvents.js';\n\n/**\n * Drop Events class.\n */\n\nvar app = {};\nexport default class KeyEvents extends BaseEvents {\n constructor( appInstance ) {\n app = appInstance;\n super();\n document.addEventListener(\"keydown\", function (event) {\n if (event.ctrlKey && event.keyCode === 65) {\n event.preventDefault();\n\n // Has to fire here because it is being preventDefaulted to block regular select all behaviour\n app.fabric.model.canvas.discardActiveObject();\n var sel = new fabric.ActiveSelection(app.fabric.model.canvas.getObjects(), {\n canvas: app.fabric.model.canvas,\n });\n app.fabric.model.canvas.setActiveObject(sel);\n app.fabric.model.canvas.requestRenderAll();\n } \n });\n\n document.addEventListener('keyup', ({ keyCode, ctrlKey } = event) => {\n // Check pressed button is Z - Ctrl+Z.\n if (keyCode === 46) {\n // @todo: Remove duplication with code in integrations/FabricJS/Events.js\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n for (var i = 0; i < selectedObjects.length; i++) {\n app.fabric.model.canvas.remove(selectedObjects[i]); \n }\n app.fabric.model.canvas.discardActiveObject();\n\n // Update layers tool\n if (app.layers) {\n app.layers.updateLayers();\n }\n }\n \n \n // Check Ctrl key is pressed.\n if (!ctrlKey) {\n return\n } \n\n // CTRL combos past this line -----------\n\n // Check pressed button is Z - Ctrl+Z.\n if (keyCode === 90) {\n app.fabric.model.canvas.undo(function() { \n // @todo: Make a common helper.\n // - https://github.com/alimozdemir/fabric-history\n console.log('post undo');\n });\n }\n \n // Check pressed button is Y - Ctrl+Y.\n if (keyCode === 89) {\n app.fabric.model.canvas.redo(function() { \n console.log('post redo');\n });\n }\n\n })\n }\n\n}\n\n\n",".item(id='item-' + index, class=(active ? 'ui label' : ''))\n .right.floated.content\n a.back(title='Back')\n i.icon.sort.amount.down\n a.forward(title='Forward')\n i.icon.sort.amount.up\n a.display.toggle(title='Hide')\n i.icon.eye\n a.description\n i(class='icon ' + shape)\n = shape\n","import $ from 'jQuery';\nimport BaseControls from './BaseControls.js';\nimport addLayer from '../../../templates/helpers/layers__item.pug';\n\nvar app = {};\nexport default class LayerControls extends BaseControls {\n constructor(appInstance) {\n app = appInstance;\n super();\n }\n\n ready() {\n this.updateLayers();\n }\n\n checkActive(object) {\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n var active = false;\n selectedObjects.forEach((selected_object) => {\n if (selected_object.id == object.id) {\n active = true;\n }\n });\n\n return active;\n }\n\n renderItem(parent, object) {\n var active = app.layers.checkActive(object),\n // Get index from canvas rather than containing array order. \n index = parent.indexOf(object),\n returnHtml = '',\n type;\n\n if (object.type) {\n if (object.type == 'rect') {\n type = 'square';\n }\n else {\n type = object.type;\n }\n }\n else {\n type = 'Unknown';\n }\n returnHtml += addLayer( { index: index, shape: type, active: active } );\n // Render sub items if a group.\n if (object.type && object.type == 'group' && object.temporary == false) {\n returnHtml += '
';\n var objects = object.getObjects();\n objects.reverse().forEach(function(group_object){\n returnHtml += app.layers.renderItem(object.getObjects(), group_object);\n });\n returnHtml += '
';\n }\n\n return returnHtml;\n }\n\n updateLayers() {\n var objects = app.fabric.model.canvas.getObjects();\n var layersHTML = '';\n objects.reverse().forEach(function(object){\n if (object.temporary == false) {\n layersHTML += app.layers.renderItem(app.fabric.model.canvas.getObjects(), object);\n }\n });\n\n $('#layers').html(layersHTML);\n\n // Bind events to all the newly added rows.\n objects.forEach(function(object){\n var index = app.fabric.model.canvas.getObjects().indexOf(object);\n $('#layers #item-' + index + ' .description').click(function(){\n app.fabric.model.canvas.setActiveObject(app.fabric.model.canvas.item(index));\n });\n $('#layers #item-' + index + ' .back').click(function(){\n app.fabric.model.canvas.sendBackwards(object);\n app.layers.updateLayers();\n });\n $('#layers #item-' + index + ' .forward').click(function(){\n app.fabric.model.canvas.bringForward(object);\n app.layers.updateLayers();\n });\n $('#layers #item-' + index + ' .display.toggle').click(function(){\n console.log(object);\n console.log($(this));\n if ($(this).find('i.eye.icon').hasClass('slash')) {\n object.visible = true;\n }\n else {\n object.visible = false; \n }\n app.fabric.model.canvas.renderAll();\n $(this).find('i.eye.icon').toggleClass('slash');\n });\n });\n }\n}\n","import $ from 'jQuery';\nimport BaseControls from './BaseControls.js';\nimport addLibraryItem from '../../../templates/helpers/library__item.pug';\n\n/**\n * Library controls\n */\n\nvar app = {};\nexport default class LibraryControls extends BaseControls {\n constructor( appInstance ) {\n app = appInstance;\n super();\n var el = document.getElementById( 'library' );\n if ( !el ) {\n return;\n }\n $( '#btnUploadImage' )\n .on( 'click', function ( e ) {\n e.stopImmediatePropagation();\n e.preventDefault();\n $( '#image_input' ).click();\n } );\n $( '#image_input' )\n .on( 'change', function ( e ) {\n window.URL = window.URL || window.webkitURL || window.mozURL;\n var url = URL.createObjectURL( e.currentTarget.files[ 0 ] );\n $( addLibraryItem( { url: url } ) )\n .insertBefore( '#btnUploadImage' );\n } );\n $( '#library' ).on( 'click', 'a', function ( e ) {\n var src = $( e.target ).attr( 'src' );\n\n fabric.Image.fromURL( src, function ( img ) {\n app.fabric.model.helpers.addToCenter( img );\n } );\n\n } );\n\n }\n\n}\n","#seeker\ntable#timeline.ui.inverted.structured.celled.compact.small.table\n thead\n - var n = 0;\n tr\n th( style=\"display: flex; justify-content: space-evenly;\" )  \n while n < frameLimit\n th( style=\"text-align: center;\" data-frame-position=n )= n++\n tbody\n - n = 0;\n tr\n td( style=\"display: flex; justify-content: space-evenly;\" )\n button.ui.compact.mini.icon.button 1x\n button#rewind.ui.compact.mini.icon.button\n i.icon.fast.backward\n button#play.ui.compact.mini.icon.button\n i.icon.play\n while n < frameLimit\n - active = n == 0 ? ' active' : ''\n td.selectable( class=active data-frame-position=n )  \n - n++","import BaseControls from './BaseControls.js';\nimport timelineTemplate from '../../../templates/footer/timeline.pug';\n\n/**\n * Timeline controls\n */\n\nvar app = {};\nexport default class TimelineControls extends BaseControls {\n constructor( appInstance ) {\n app = appInstance;\n super();\n\n this.el = document.getElementById( 'timeline' );\n if ( !this.el ) {\n return;\n }\n\n this.playing = false;\n this.currentFrame = 0;\n this.thisKeyframe = 0;\n this.nextKeyframe = 0;\n\n this.frameLimit = 30;\n this.frames = {};\n this.frameElapsed = 0;\n this.frameLength = 50; // ms per frame.\n \n\n this.el.innerHTML = timelineTemplate( {\n frameLimit: this.frameLimit\n } );\n\n this.el\n .querySelectorAll( 'th, td' ).forEach( ( frame_cell ) => {\n frame_cell.addEventListener( 'click', ( event ) => {\n if ( event.target.dataset.framePosition ) {\n let seekerElement = document.getElementById( \"seeker\" );\n \n this.selectFrameByElement( seekerElement, event.target )\n this.determinePosition();\n\n if (this.nextKeyframe == 0 && this.thisKeyframe == 0) {\n return;\n }\n\n // If we are on the final keyframe, flip the values as the stored keyframe value is the final number.\n if (parseInt(this.nextKeyframe) < parseInt(this.thisKeyframe)) {\n this.nextKeyframe = [this.thisKeyframe, this.thisKeyframe = this.nextKeyframe][0]; // https://stackoverflow.com/questions/16201656/how-to-swap-two-variables-in-javascript\n }\n this.setFrame();\n \n }\n } );\n } );\n\n // Make the DIV element draggable.\n this.setupSeeker( document.getElementById( \"seeker\" ) );\n\n // Select the first frame.\n this.selectFrameByElement ( document.getElementById( \"seeker\" ) , document.querySelector('[data-frame-position=\"0\"]') );\n\n // Play button.\n $('#timeline #play')\n .on('click', () => {\n // Toggle the icon\n let $icon = $('#timeline #play i');\n if ($icon.hasClass('play')) {\n $icon.removeClass('play');\n $icon.addClass('pause');\n Object.keys(this.frames).length > 1 ? this.playing = performance.now() : $icon.click();\n }\n else {\n $icon.addClass('play');\n $icon.removeClass('pause');\n this.playing = false;\n }\n })\n \n }\n\n // Determines whether or not to execute actions this loop.\n animate (timestamp) {\n console.log(this.currentFrame, this.thisKeyframe, this.nextKeyframe);\n if (this.playing) {\n \n this.determinePosition();\n\n if (this.nextKeyframe != 0 && this.thisKeyframe != 0) {\n return;\n }\n\n // Loop back if no frames left.\n if (this.nextKeyframe == 0) {\n this.selectFrameByElement ( document.getElementById( \"seeker\" ) , document.querySelector('[data-frame-position=\"0\"]') );\n }\n\n this.frameElapsed += timestamp - this.playing;\n\n // Iterate Frames if enough time has passed\n if (this.frameElapsed >= this.frameLength) {\n this.currentFrame = parseInt(this.currentFrame + 1);\n this.frameElapsed = 0;\n this.determinePosition();\n this.setFrame( );\n }\n \n this.playing = performance.now(); \n\n }\n\n window.requestAnimationFrame(this.animate.bind(this));\n }\n\n determinePosition() {\n Object.keys(this.frames).forEach((framePosition)=>{\n // This will keep updating until it stops on the break later.\n if ( parseInt(framePosition) <= parseInt(this.currentFrame) ) {\n this.thisKeyframe = framePosition;\n }\n\n if ( parseInt(framePosition) > parseInt(this.currentFrame) ) {\n this.nextKeyframe = framePosition;\n return;\n }\n });\n }\n\n ready () {\n // Initialise frame 0\n this.frames[this.currentFrame] = JSON.parse(JSON.stringify(app.fabric.model.canvas.getObjects()))\n\n // // Animation demo\n // // 1. Select frame 10\n // this.selectFrameByElement ( document.getElementById( \"seeker\" ) , document.querySelector('[data-frame-position=\"10\"]') );\n // app.fabric.model.canvas.getObjects().map( object => {\n // object.set('left', parseInt(object.left + 400, 10)).setCoords();\n // object.set('top', parseInt(object.top + 200, 10)).setCoords();\n\n // this.frames[this.currentFrame] = JSON.parse(JSON.stringify(app.fabric.model.canvas.getObjects()))\n // console.log('Modified frame #' , this.currentFrame);\n // console.log(this.frames);\n // });\n\n // // Make the 10th frame active\n // document.querySelector('td[data-frame-position=\"10\"]').classList.add('active')\n\n // Handle changes to the canvas.\n app.fabric.model.canvas.on( 'history:append' , (json) => {\n this.frames[this.currentFrame] = JSON.parse(JSON.stringify(app.fabric.model.canvas.getObjects()))\n document.querySelector('td[data-frame-position=\"' + this.currentFrame + '\"]').classList.add('active')\n });\n\n this.animate(performance.now());\n }\n\n addKeyFrame( frameIndex ) {\n console.log( 'Added ', frameIndex );\n }\n\n selectFrameByElement( seekerElement, targetElement ) {\n let framePosition = targetElement.getBoundingClientRect();\n seekerElement.style.left = ( framePosition.left ) + \"px\";\n seekerElement.style.width = ( 1 + framePosition.right - framePosition.left ) + \"px\";\n\n this.currentFrame = targetElement.dataset.framePosition;\n }\n\n // Activates the currentFrame into view by moving things according to where it is in the tweens.\n setFrame ( ) {\n // Modify the timeline UI controls\n let seekerElement = document.getElementById( \"seeker\" );\n let targetElement = document.querySelector('td[data-frame-position=\"' + this.currentFrame + '\"]');\n let framePosition = targetElement.getBoundingClientRect();\n seekerElement.style.left = ( framePosition.left ) + \"px\";\n seekerElement.style.width = ( 1 + framePosition.right - framePosition.left ) + \"px\";\n\n // Move objects on the canvas.\n app.fabric.model.canvas.getObjects().map( object => {\n let props = ['left', 'top'];\n props.forEach( prop => {\n let propChange = this.frames[this.nextKeyframe][0][prop] - this.frames[this.thisKeyframe][0][prop];\n let numberOfFrames = this.nextKeyframe - this.thisKeyframe;\n let propIteration = propChange * ( this.currentFrame / numberOfFrames);\n\n object.set(prop, parseInt(this.frames[this.thisKeyframe][0][prop] + propIteration, 10)).setCoords();\n });\n\n });\n app.fabric.model.canvas.requestRenderAll();\n }\n\n setupSeeker( seekerElement ) {\n let self = this;\n var rect = seekerElement.getBoundingClientRect();\n\n let initialOffset = 0;\n let initialWidth = 50;\n\n var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;\n if ( document.getElementById( seekerElement.id + \"header\" ) ) {\n // if present, the header is where you move the DIV from:\n document.getElementById( seekerElement.id + \"header\" ).onmousedown = dragMouseDown;\n } else {\n // otherwise, move the DIV from anywhere inside the DIV:\n seekerElement.onmousedown = dragMouseDown;\n }\n\n function dragMouseDown( e ) {\n e = e || window.event;\n e.preventDefault();\n // get the mouse cursor position at startup:\n pos3 = e.clientX;\n pos4 = e.clientY;\n document.onmouseup = closeDragElement;\n // call a function whenever the cursor moves:\n document.onmousemove = elementDrag;\n seekerElement.classList.add( 'active' );\n initialOffset = seekerElement.offsetLeft;\n initialWidth = seekerElement.offsetWidth;\n }\n\n function elementDrag( e ) {\n e = e || window.event;\n e.preventDefault();\n // calculate the new cursor position:\n pos1 = pos3 - e.clientX;\n pos2 = pos4 - e.clientY;\n pos3 = e.clientX;\n pos4 = e.clientY;\n // set the element's new position:\n //seekerElement.style.top = (seekerElement.offsetTop - pos2) + \"px\";\n seekerElement.style.left = ( seekerElement.offsetLeft - pos1 ) + \"px\";\n }\n\n function closeDragElement() {\n // stop moving when mouse button is released:\n document.onmouseup = null;\n document.onmousemove = null;\n let closestElements = document.elementsFromPoint( seekerElement.offsetLeft, rect.top );\n let matched = false;\n closestElements.forEach( ( closestElement ) => {\n if ( closestElement.tagName == 'TH' && closestElement.dataset.framePosition ) {\n matched = true;\n self.selectFrameByElement( seekerElement, closestElement );\n }\n } );\n if ( !matched ) {\n\n seekerElement.style.left = initialOffset + \"px\";\n seekerElement.style.width = initialWidth + \"px\";\n }\n\n seekerElement.classList.remove( 'active' );\n\n }\n }\n\n}\n","import $ from 'jQuery';\nimport fabric from 'fabric';\nimport BaseControls from './BaseControls.js';\n\nvar app = {};\nexport default class ToolbarControls extends BaseControls {\n constructor(appInstance) {\n app = appInstance;\n super();\n this.setupDefaultMenu();\n\n $(window).on('resize', () => {\n app.fabric.model.helpers.updateCanvasSize();\n });\n \n }\n \n setupDefaultMenu() {\n $('#btnRedo')\n .popup({\n title: 'Redo',\n position: 'right center'\n })\n .on('click', function(){\n app.fabric.model.canvas.redo(function() { \n console.log('post redo');\n });\n });\n $('#btnUndo')\n .popup({\n title: 'Undo',\n position: 'right center'\n })\n .on('click', function(){\n app.fabric.model.canvas.undo(function() { \n console.log('post undo');\n });\n \n \n });\n $('#btnDrawTool')\n .popup({\n title: 'Draw',\n position: 'right center'\n })\n .on('click', function(){\n $(this).find('i.icon').toggleClass('grey');\n $(this).find('i.icon').toggleClass('inverted');\n if ($(this).find('i.icon').hasClass('grey')) {\n app.fabric.model.canvas.isDrawingMode = false;\n }\n if ($(this).find('i.icon').hasClass('inverted')) {\n app.fabric.model.canvas.isDrawingMode = true;\n }\n });\n\n // @TODO: https://codepen.io/shershen08/pen/JGepQv\n $('#btnAddText')\n .popup({\n title: 'Text',\n position: 'right center'\n })\n .on('click', function(){\n var textBox = new fabric.Textbox(\"Sample Text\", {\n fontFamily: 'Arial'\n });\n app.fabric.model.helpers.addToCenter(textBox);\n });\n\n // Track which overlays we hid so we don't override other settings.\n var overlays_visible = [];\n $('#btnToggleOverlays')\n .popup({\n title: 'Toggle All Overlays',\n position: 'right center'\n })\n .on('click', function(){\n if ($(this).find('i.eye.icon').hasClass('slash')) {\n if (overlays_visible.length > 0) {\n $(overlays_visible).each(function(i, overlay){\n $(overlay).show();\n });\n overlays_visible = [];\n }\n }\n else {\n overlays_visible = $('.floating.overlay:visible');\n $('.floating.overlay:visible').hide();\n }\n $(this).find('i.icon').toggleClass('slash');\n });\n\n $('#btnToggle3DOptions')\n .popup({\n title: 'Toggle 3D Options',\n position: 'right center'\n })\n .on('click', function(){\n $(this).find('i.icon').toggleClass('disabled');\n $('#threeD-tool').toggle();\n });\n $('#btnAddCircle')\n .popup({\n title: 'Circle',\n position: 'right center'\n })\n .on('click', function(){\n var circle = new fabric.Circle({ radius: 100, fill: 'green', left: 100, top: 100 });\n app.fabric.model.helpers.addToCenter(circle);\n });\n $('#btnAddSquare')\n .popup({\n title: 'Square',\n position: 'right center'\n })\n .on('click', function(){\n var rect = new fabric.Rect({\n left: 100,\n top: 100,\n fill: 'red',\n width: 200,\n height: 200\n });\n app.fabric.model.helpers.addToCenter(rect);\n });\n $('#btnAddTriangle')\n .popup({\n title: 'Triangle',\n position: 'right center'\n })\n .on('click', function(){\n var triangle = new fabric.Triangle({ width: 200, height: 200, fill: 'blue', left: 50, top: 50 });\n app.fabric.model.helpers.addToCenter(triangle);\n });\n }\n\n toggle() {\n if (!app.fabric.model.attributes.transitioning) {\n $(\"#toolbar\")\n .sidebar({\n dimPage: false,\n transition: 'push',\n exclusive: false,\n closable: false,\n onChange: function() {\n app.fabric.model.attributes.transitioning = true;\n },\n onHide: function() {\n app.fabric.model.attributes.transitioning = false;\n },\n onShow: function() {\n app.fabric.model.attributes.transitioning = false;\n }\n })\n .sidebar(\"toggle\");\n app.fabric.model.helpers.updateCanvasSize();\n }\n }\n}","import ImageTracer from 'ImageTracer';\nimport BaseIntegration from './BaseIntegration.js';\n\n/**\n * ImageTracer view.\n *\n * Manages all UI elements relating to ImageTracer integration.\n */\n\nexport default class ImageTracerIntegration extends BaseIntegration {\n constructor(app) {\n\n this.controls = ImageTracer.checkoptions();\n this.controls.numberofcolors = 16;\n this.controls.strokewidth = 2;\n this.controls.viewbox = true;\n console.log(this.controls);\n \n super();\n\n $('.imagetracerConfig').on('change', () => {\n console.log('hiii');\n this.preview(app);\n });\n\n $('.imagetracer.controls .ui.slider.colours').slider({\n min: 2,\n max: 16,\n start: 4,\n step: 2,\n onChange: () => { this.preview(app) }\n });\n // $('.imagetracer.controls .ui.slider.mincolorratio').slider({\n // min: 0,\n // max: 800,\n // start: 0,\n // step: 100,\n // onChange: () => { this.preview(app) }\n // });\n }\n\n preview(app) {\n let preset = $('.preset').find(\":selected\").text().toLowerCase();\n app.vector.imagetracer.controls.numberofcolors = $('.ui.slider.colours').slider('get value');\n app.vector.imagetracer.controls.mincolorratio = $('.mincolorratio').val();\n app.vector.imagetracer.controls.colorquantcycles = $('.colorquantcycles').val();\n app.vector.imagetracer.controls.ltres = $('.ltres').val();\n app.vector.imagetracer.controls.qtres = $('.qtres').val();\n app.vector.imagetracer.controls.pathomit = $('.pathomit').val();\n app.vector.imagetracer.controls.rightangleenhance = $('.rightangleenhance').is(\":checked\");\n app.vector.imagetracer.controls.layering = $('.layering').is(\":checked\");\n app.vector.imagetracer.controls.blurradius = $('.blurradius').val();\n app.vector.imagetracer.controls.blurdelta = $('.blurdelta').val();\n // Potrace.setParameter({\n // alphamax: $('.alphamax').val(),\n // optcurve: $('.optcurve').is(\":checked\"),\n // opttolerance: $('.opttolerance').val(),\n // turdsize: $('.turdsize').val(),\n // turnpolicy: $('.turnpolicy').find(\":selected\").text().toLowerCase()\n // });\n\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n ImageTracer.imageToSVG(selectedObjects[0]._element.src, function(svg) {\n app.fabric.model.helpers.loadSVG(svg, () => {}, true);\n }, preset != 'default' ? preset : app.vector.imagetracer.controls);\n }\n \n // Duplicates the image programatically so we can get its original dimensions.\n getImageDimensions() {\n var original_image = document.getElementById('original-image');\n var img = document.createElement('img');\n img.src = original_image.src;\n \n // Get the image data from a virtual canvas.\n var canvas = document.createElement('canvas');\n canvas.width = img.width;\n canvas.height = img.height;\n var context = canvas.getContext('2d');\n context.drawImage(img,0,0);\n \n return context.getImageData(0, 0, img.width, img.height);\n }\n\n}\n","import $ from 'jQuery';\nimport Potrace from 'Potrace';\nimport BaseIntegration from './BaseIntegration.js';\n\n/**\n * Potrace model for the main canvas.\n */\n\nexport default class PotraceIntegration extends BaseIntegration {\n constructor(app) {\n super();\n // * parameters:\n // * turnpolicy (\"black\" / \"white\" / \"left\" / \"right\" / \"minority\" / \"majority\")\n // * how to resolve ambiguities in path decomposition. (default: \"minority\") \n // * turdsize\n // * suppress speckles of up to this size (default: 2)\n // * optcurve (true / false)\n // * turn on/off curve optimization (default: true)\n // * alphamax\n // * corner threshold parameter (default: 1)\n // * opttolerance \n // * curve optimization tolerance (default: 0.2)\n Potrace.setParameter({\n alphamax: 1,\n optcurve: false,\n opttolerance: 0.2,\n turdsize: 100,\n turnpolicy: \"black\"\n });\n\n $('.potraceConfig').on('change', () => {\n this.preview(app);\n });\n }\n\n createSVG(src, callbackFn) {\n // Create an SVG from data and settings, draw to screen.\n Potrace.clear();\n Potrace.loadImageFromSrc(src);\n Potrace.process(function() {\n var svg = Potrace.getSVG(1);\n const randomColor = () => '#'+('00000'+(Math.random()*(1<<24)|0).toString(16)).slice(-6);\n var newSVG = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n // normalize should be used to get back absolute segments\n const pathsDatas = $(svg).find('path')[0].getPathData({ normalize: true }).reduce((acc, seg) => {\n const pathData = seg.type === 'M' ? [] : acc.pop();\n seg.values = seg.values.map((v) => Math.round(v * 1000) / 1000);\n pathData.push(seg);\n acc.push(pathData); \n \n return acc;\n }, []);\n\n pathsDatas.forEach(function(d) {\n const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setPathData(d);\n path.setAttribute('fill', randomColor());\n newSVG.appendChild(path);\n });\n\n callbackFn(newSVG.outerHTML);\n });\n }\n\n preview(app) {\n Potrace.setParameter({\n alphamax: $('.alphamax').val(),\n optcurve: $('.optcurve').is(\":checked\"),\n opttolerance: $('.opttolerance').val(),\n turdsize: $('.turdsize').val(),\n turnpolicy: $('.turnpolicy').find(\":selected\").text().toLowerCase()\n });\n\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n app.vector.potrace.createSVG(selectedObjects[0]._element.src, function(svg) {\n app.fabric.model.helpers.loadSVG(svg, () => {}, true);\n });\n }\n\n \n}\n","import $ from 'jQuery';\nimport BaseControls from './BaseControls.js';\nimport ImageTracerIntegration from '../../integrations/ImageTracerIntegration.js'\nimport PotraceIntegration from '../../integrations/PotraceIntegration.js';\n\n/**\n * Vector converter controls\n * \n * Set which framework (Imagetracer|Potrace) and what it's settings are\n */\n\nvar app = {};\nexport default class VectorControls extends BaseControls {\n constructor( appInstance ) {\n app = appInstance;\n super();\n var el = document.getElementById( 'vector-tool' );\n if ( !el ) {\n return;\n }\n this.imagetracer = new ImageTracerIntegration( app );\n this.potrace = new PotraceIntegration( app );\n\n this.updateSelection();\n\n $( '#vector-tool .method input' ).change( () => {\n this.updateSelection();\n this.preview( app );\n } );\n }\n\n updateSelection() {\n this.selected = $( '#vector-tool .method input:checked' ).val();\n $( '#vector-tool .controls:not(.' + this.selected + ')' ).slideUp()\n $( '#vector-tool .controls.' + this.selected ).slideDown()\n }\n\n preview( app ) {\n this[ this.selected ].preview( app );\n }\n\n create( app, replace = false ) {\n // @todo: Expand when other things are set to temporary\n let objects = app.fabric.model.canvas.getObjects();\n objects.forEach( ( object ) => {\n if ( object.temporary ) {\n object.temporary = false;\n }\n } );\n if ( replace ) {\n var selectedObjects = app.fabric.model.canvas.getActiveObjects();\n app.fabric.model.canvas.remove( selectedObjects[ 0 ] );\n }\n }\n\n\n}\n","// External libs\r\nimport $ from 'jQuery';\r\n// @TODO: update as part of refactor\r\nimport FabricJSIntegration from './app/integrations/FabricJSIntegration.js';\r\nimport FomanticIntegration from './app/integrations/FomanticIntegration.js';\r\nimport DropEvents from './app/events/DropEvents.js';\r\nimport KeyEvents from './app/events/KeyEvents.js';\r\nimport LayerControls from './app/ui/controls/LayerControls.js';\r\nimport LibraryControls from './app/ui/controls/LibraryControls.js';\r\nimport TimelineControls from './app/ui/controls/TimelineControls.js';\r\nimport ToolbarControls from './app/ui/controls/ToolbarControls.js';\r\nimport VectorControls from './app/ui/controls/VectorControls.js';\r\n\r\n/**\r\n * Manifold Browser Application\r\n */\r\nexport default class App {\r\n constructor() {\r\n // Integrations\r\n this.fabric = new FabricJSIntegration(this);\r\n this.fomantic = new FomanticIntegration(this);\r\n this.ThreeCanvasModel = [];\r\n this.ThreeCanvasView = [];\r\n\r\n // Events\r\n this.events = {};\r\n this.events.drop = new DropEvents(this);\r\n this.events.key = new KeyEvents(this);\r\n\r\n // UI \r\n this.layers = new LayerControls(this);\r\n this.library = new LibraryControls(this);\r\n this.timeline = new TimelineControls(this);\r\n this.toolbar = new ToolbarControls(this);\r\n this.vector = new VectorControls(this);\r\n }\r\n}\r\n\r\n// Startup using jQuery.ready()\r\n$(() => {\r\n var app = new App();\r\n\r\n // Run all the ready functions\r\n for (var classInstance in app) {\r\n if (app[classInstance].ready) {\r\n app[classInstance].ready();\r\n }\r\n }\r\n});\r\n"],"names":["app","super","$","THREE","let","fabric","ThreeJSIntegration","this","ImageTracer","Potrace","const"],"mappings":"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"} \ No newline at end of file diff --git a/src/app/integrations/FabricJS/Events.js b/src/app/integrations/FabricJS/Events.js index bfbb881..3db9bcb 100644 --- a/src/app/integrations/FabricJS/Events.js +++ b/src/app/integrations/FabricJS/Events.js @@ -208,7 +208,6 @@ export default class FabricJSIntegrationEvents { app.fabric.model.canvas.on('selection:updated', selectionCallback); app.fabric.model.canvas.on('mouse:dblclick', function(e){ - let target = e.selected.shift(); if (e.target && e.target._element) { var $el = $(e.target._element).parent(); var scaledWidth = e.target.width * e.target.scaleX; diff --git a/src/app/ui/controls/TimelineControls.js b/src/app/ui/controls/TimelineControls.js index cf2a2af..58d51fc 100644 --- a/src/app/ui/controls/TimelineControls.js +++ b/src/app/ui/controls/TimelineControls.js @@ -18,10 +18,14 @@ export default class TimelineControls extends BaseControls { this.playing = false; this.currentFrame = 0; + this.thisKeyframe = 0; + this.nextKeyframe = 0; + this.frameLimit = 30; this.frames = {}; this.frameElapsed = 0; this.frameLength = 50; // ms per frame. + this.el.innerHTML = timelineTemplate( { frameLimit: this.frameLimit @@ -34,43 +38,17 @@ export default class TimelineControls extends BaseControls { let seekerElement = document.getElementById( "seeker" ); this.selectFrameByElement( seekerElement, event.target ) - let nextKeyframe = 0; - let thisKeyframe = 0; - Object.keys(this.frames).forEach((framePosition)=>{ - // This will keep updating until it stops on the break later. - if ( parseInt(framePosition) <= parseInt(this.currentFrame) ) { - thisKeyframe = framePosition; - } - - if ( parseInt(framePosition) > parseInt(this.currentFrame) ) { - nextKeyframe = framePosition; - return; - } - }); + this.determinePosition(); - if (nextKeyframe == 0 && thisKeyframe == 0) { + if (this.nextKeyframe == 0 && this.thisKeyframe == 0) { return; } // If we are on the final keyframe, flip the values as the stored keyframe value is the final number. - if (parseInt(nextKeyframe) < parseInt(thisKeyframe)) { - nextKeyframe = [thisKeyframe, thisKeyframe = nextKeyframe][0]; // https://stackoverflow.com/questions/16201656/how-to-swap-two-variables-in-javascript + if (parseInt(this.nextKeyframe) < parseInt(this.thisKeyframe)) { + this.nextKeyframe = [this.thisKeyframe, this.thisKeyframe = this.nextKeyframe][0]; // https://stackoverflow.com/questions/16201656/how-to-swap-two-variables-in-javascript } - // Move objects on the canvas. - app.fabric.model.canvas.getObjects().map( object => { - - let props = ['left', 'top']; - props.forEach( prop => { - - let propChange = this.frames[nextKeyframe][0][prop] - this.frames[thisKeyframe][0][prop]; - let numberOfFrames = nextKeyframe - thisKeyframe; - let propIteration = propChange * (this.currentFrame / numberOfFrames) ; - - object.set(prop, parseInt(this.frames[thisKeyframe][0][prop] + propIteration, 10)).setCoords(); - }); - - }); - app.fabric.model.canvas.requestRenderAll(); + this.setFrame(); } } ); @@ -103,28 +81,17 @@ export default class TimelineControls extends BaseControls { // Determines whether or not to execute actions this loop. animate (timestamp) { + console.log(this.currentFrame, this.thisKeyframe, this.nextKeyframe); if (this.playing) { - // Check how many keyframes to play after this tween. - let nextKeyframe = 0; - let thisKeyframe = 0; - Object.keys(this.frames).forEach((framePosition)=>{ - // This will keep updating until it stops on the break later. - if ( parseInt(framePosition) <= parseInt(this.currentFrame) ) { - thisKeyframe = framePosition; - } - - if ( parseInt(framePosition) > parseInt(this.currentFrame) ) { - nextKeyframe = framePosition; - return; - } - }); + + this.determinePosition(); - if (nextKeyframe != 0 && thisKeyframe != 0) { + if (this.nextKeyframe != 0 && this.thisKeyframe != 0) { return; } // Loop back if no frames left. - if (nextKeyframe == 0) { + if (this.nextKeyframe == 0) { this.selectFrameByElement ( document.getElementById( "seeker" ) , document.querySelector('[data-frame-position="0"]') ); } @@ -134,30 +101,10 @@ export default class TimelineControls extends BaseControls { if (this.frameElapsed >= this.frameLength) { this.currentFrame = parseInt(this.currentFrame + 1); this.frameElapsed = 0; - - // Modify the timeline UI controls - let seekerElement = document.getElementById( "seeker" ); - let targetElement = document.querySelector('td[data-frame-position="' + this.currentFrame + '"]'); - let framePosition = targetElement.getBoundingClientRect(); - seekerElement.style.left = ( framePosition.left ) + "px"; - seekerElement.style.width = ( 1 + framePosition.right - framePosition.left ) + "px"; - - - // Move objects on the canvas. - app.fabric.model.canvas.getObjects().map( object => { - let props = ['left', 'top']; - props.forEach( prop => { - let propChange = this.frames[nextKeyframe][0][prop] - this.frames[thisKeyframe][0][prop]; - let numberOfFrames = nextKeyframe - thisKeyframe; - let propIteration = propChange * ( this.currentFrame / numberOfFrames); - - object.set(prop, parseInt(this.frames[thisKeyframe][0][prop] + propIteration, 10)).setCoords(); - }); - - }); - + this.determinePosition(); + this.setFrame( ); } - app.fabric.model.canvas.requestRenderAll(); + this.playing = performance.now(); } @@ -165,6 +112,20 @@ export default class TimelineControls extends BaseControls { window.requestAnimationFrame(this.animate.bind(this)); } + determinePosition() { + Object.keys(this.frames).forEach((framePosition)=>{ + // This will keep updating until it stops on the break later. + if ( parseInt(framePosition) <= parseInt(this.currentFrame) ) { + this.thisKeyframe = framePosition; + } + + if ( parseInt(framePosition) > parseInt(this.currentFrame) ) { + this.nextKeyframe = framePosition; + return; + } + }); + } + ready () { // Initialise frame 0 this.frames[this.currentFrame] = JSON.parse(JSON.stringify(app.fabric.model.canvas.getObjects())) @@ -188,7 +149,6 @@ export default class TimelineControls extends BaseControls { app.fabric.model.canvas.on( 'history:append' , (json) => { this.frames[this.currentFrame] = JSON.parse(JSON.stringify(app.fabric.model.canvas.getObjects())) document.querySelector('td[data-frame-position="' + this.currentFrame + '"]').classList.add('active') - console.log(this.frames); }); this.animate(performance.now()); @@ -206,6 +166,30 @@ export default class TimelineControls extends BaseControls { this.currentFrame = targetElement.dataset.framePosition; } + // Activates the currentFrame into view by moving things according to where it is in the tweens. + setFrame ( ) { + // Modify the timeline UI controls + let seekerElement = document.getElementById( "seeker" ); + let targetElement = document.querySelector('td[data-frame-position="' + this.currentFrame + '"]'); + let framePosition = targetElement.getBoundingClientRect(); + seekerElement.style.left = ( framePosition.left ) + "px"; + seekerElement.style.width = ( 1 + framePosition.right - framePosition.left ) + "px"; + + // Move objects on the canvas. + app.fabric.model.canvas.getObjects().map( object => { + let props = ['left', 'top']; + props.forEach( prop => { + let propChange = this.frames[this.nextKeyframe][0][prop] - this.frames[this.thisKeyframe][0][prop]; + let numberOfFrames = this.nextKeyframe - this.thisKeyframe; + let propIteration = propChange * ( this.currentFrame / numberOfFrames); + + object.set(prop, parseInt(this.frames[this.thisKeyframe][0][prop] + propIteration, 10)).setCoords(); + }); + + }); + app.fabric.model.canvas.requestRenderAll(); + } + setupSeeker( seekerElement ) { let self = this; var rect = seekerElement.getBoundingClientRect();