@phoenix-plugin-registry/swmitra.html-designer
Version:
NOW WITH RESPONSIVE DESIGN TOOLS (BETA)! Design and customize web ui with HTML and CSS. Now with taggable Design snippet/bookmark support.
98 lines (81 loc) • 3.37 kB
JavaScript
/**
* @author Swagatam Mitra
*/
/*jslint vars: true, plusplus: true, devel: true, nomen: true, indent: 4, maxerr: 50 */
/*global define, document, console, brackets, $, Mustache */
define(function (require, exports, module) {
"use strict";
var CSSCloner = require("stylemodule/CSSRulesetCloneHandler");
var IDGen = require("widgetprofiles/UIDGenerator");
var clipBoardItem = null;
var pasteLocation = null;
var toBePastedIn = null;
var currentLayout = null;
var currentContext = null;
var contextToFunctionMap = {};
contextToFunctionMap.copyContext = function (){
var decendents = $(clipBoardItem).find("[id]");
if(clipBoardItem.id){
decendents.push(clipBoardItem);
}
var newElementTemplate = clipBoardItem.outerHTML;
var decendent = null;
var newID = null;
var idMap = {};
for(var count=0;count<decendents.length;count++){
decendent = decendents[count];
newID = decendent.tagName.toLowerCase()+IDGen.getID()+"-"+count;
newElementTemplate = newElementTemplate.split(decendent.id).join(newID);
idMap[decendent.id] = newID;
}
var newTarget = $(newElementTemplate)
.appendTo(toBePastedIn);
CSSCloner.cloneCSSRules(decendents,idMap);
$("#html-design-editor").trigger("select.element",[newTarget[0]]);
setTimeout(function(){
_bringElementToContextLocation();
newTarget.show();
},20);
}
contextToFunctionMap.cutContext = function (){
var element = $(clipBoardItem).detach();
var newTarget = $(element).appendTo(toBePastedIn);
$("#html-design-editor").trigger("select.element",[newTarget[0]]);
setTimeout(function(){
_bringElementToContextLocation();
$("#html-design-editor").trigger("element-cut-completed");
},20);
}
function _bringElementToContextLocation(){
if(currentLayout){
currentLayout.changeLeftTo(pasteLocation.x);
currentLayout.changeTopTo(pasteLocation.y);
currentLayout.refresh();
}
}
$(document).on("added-to-clipboard","#html-design-editor", function(event,element,context){
$("#context-paste-element").parent().removeClass("disabledli");
clipBoardItem = element;
currentContext = context;
//pasteLocation = null;
toBePastedIn = null;
});
$(document).on("clipboard-cleared","#html-design-editor", function(event,element,context){
$("#context-paste-element").parent().addClass("disabledli");
clipBoardItem = null;
currentContext = null;
//pasteLocation = null;
toBePastedIn = null;
});
$(document).on("paste-element","#html-design-editor", function(event){
contextToFunctionMap[currentContext].apply();
$("#html-design-editor").trigger('html.element.dropped');
});
$(document).on("targetdom.contextmenu","#html-design-editor", function(e,elem,point){
pasteLocation = point;
toBePastedIn = elem;
});
$(document).on("layout.decision","#html-design-editor", function(event,layoutObj){
currentLayout = layoutObj;
});
});