nnnjjj123
2020-11-17 1b2c1edb61190eeb19f465ff031eaa3b2a1b8dbc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//>>built
define(["dojo","dijit/registry","../util/oo","../manager/_registry","../stencil/Text"],function(d,q,n,r,t){var h;d.addOnLoad(function(){(h=d.byId("conEdit"))?h.parentNode.removeChild(h):console.error("A contenteditable div is missing from the main document. See 'dojox.drawing.tools.TextBlock'")});n=n.declare(t,function(a){if(a.data){a=a.data;var c=a.text?this.typesetter(a.text):a.text,b=a.width?"auto"==a.width?"auto":Math.max(a.width,this.style.text.minWidth):this.style.text.minWidth,e=this._lineHeight;
c&&"auto"==b?(e=this.measureText(this.cleanText(c,!1),b),b=e.w,e=e.h):this._text="";this.points=[{x:a.x,y:a.y},{x:a.x+b,y:a.y},{x:a.x+b,y:a.y+e},{x:a.x,y:a.y+e}];a.showEmpty||c?(this.editMode=!0,d.disconnect(this._postRenderCon),this._postRenderCon=null,this.connect(this,"render",this,"onRender",!0),a.showEmpty?(this._text=c||"",this.edit()):c&&a.editMode?(this._text="",this.edit()):c&&this.render(c),setTimeout(d.hitch(this,function(){this.editMode=!1}),100)):this.render()}else this.connectMouse(),
this._postRenderCon=d.connect(this,"render",this,"_onPostRender")},{draws:!0,baseRender:!1,type:"dojox.drawing.tools.TextBlock",_caretStart:0,_caretEnd:0,_blockExec:!1,selectOnExec:!0,showEmpty:!1,onDrag:function(a){this.parentNode||this.showParent(a);var c=this._startdrag;a=a.page;this._box.left=c.x<a.x?c.x:a.x;this._box.top=c.y;this._box.width=(c.x<a.x?a.x-c.x:c.x-a.x)+this.style.text.pad;d.style(this.parentNode,this._box.toPx())},onUp:function(a){if(this._downOnCanvas){this._downOnCanvas=!1;var c=
d.connect(this,"render",this,function(){d.disconnect(c);this.onRender(this)});this.editMode=!0;this.showParent(a);this.created=!0;this.createTextField();this.connectTextField()}},showParent:function(a){if(!this.parentNode){var c=a.pageX||10,b=a.pageY||10;this.parentNode=d.doc.createElement("div");this.parentNode.id=this.id;var e=this.style.textMode.create;this._box={left:c,top:b,width:a.width||1,height:a.height&&8<a.height?a.height:this._lineHeight,border:e.width+"px "+e.style+" "+e.color,position:"absolute",
zIndex:500,toPx:function(){var a={},c;for(c in this)a[c]="number"==typeof this[c]&&"zIndex"!=c?this[c]+"px":this[c];return a}};d.style(this.parentNode,this._box);document.body.appendChild(this.parentNode)}},createTextField:function(a){var c=this.style.textMode.edit;this._box.border=c.width+"px "+c.style+" "+c.color;this._box.height="auto";this._box.width=Math.max(this._box.width,this.style.text.minWidth*this.mouse.zoom);d.style(this.parentNode,this._box.toPx());this.parentNode.appendChild(h);d.style(h,
{height:a?"auto":this._lineHeight+"px",fontSize:this.textSize/this.mouse.zoom+"px",fontFamily:this.style.text.family});h.innerHTML=a||"";return h},connectTextField:function(){if(!this._textConnected){var a=q.byId("greekPalette"),c=void 0==a?!1:!0;c&&d.mixin(a,{_pushChangeTo:h,_textBlock:this});this._textConnected=!0;this._dropMode=!1;this.mouse.setEventMode("TEXT");this.keys.editMode(!0);var b,e,f,g,k=this,l=!1,m=function(){k._dropMode||(d.forEach([b,e,f,g],function(a){d.disconnect(a)}),k._textConnected=
!1,k.keys.editMode(!1),k.mouse.setEventMode(),k.execText())};b=d.connect(h,"keyup",this,function(b){d.trim(h.innerHTML)&&!l?(d.style(h,"height","auto"),l=!0):2>d.trim(h.innerHTML).length&&l&&(d.style(h,"height",this._lineHeight+"px"),l=!1);if(this._blockExec)b.keyCode==d.keys.SPACE&&(d.stopEvent(b),c&&a.onCancel());else if(13==b.keyCode||27==b.keyCode)d.stopEvent(b),m()});e=d.connect(h,"keydown",this,function(b){13!=b.keyCode&&27!=b.keyCode||d.stopEvent(b);if(220==b.keyCode){if(!c){console.info("For greek letter assistance instantiate: dojox.drawing.plugins.drawing.GreekPalette");
return}d.stopEvent(b);this.getSelection(h);this.insertText(h,"\\");this._blockExec=this._dropMode=!0;a.show({around:this.parentNode,orient:{BL:"TL"}})}if(this._dropMode)switch(b.keyCode){case d.keys.UP_ARROW:case d.keys.DOWN_ARROW:case d.keys.LEFT_ARROW:case d.keys.RIGHT_ARROW:d.stopEvent(b);a._navigateByArrow(b);break;case d.keys.ENTER:d.stopEvent(b);a._onCellClick(b);break;case d.keys.BACKSPACE:case d.keys.DELETE:d.stopEvent(b),a.onCancel()}else this._blockExec=!1});f=d.connect(document,"mouseup",
this,function(a){this._onAnchor||"conEdit"==a.target.id?"conEdit"==a.target.id&&""==h.innerHTML&&(h.blur(),setTimeout(function(){h.focus()},200)):(d.stopEvent(a),m())});this.createAnchors();g=d.connect(this.mouse,"setZoom",this,function(a){m()});h.focus();this.onDown=function(){};this.onDrag=function(){};setTimeout(d.hitch(this,function(){h.focus();this.onUp=function(){!k._onAnchor&&this.parentNode&&(k.disconnectMouse(),m(),k.onUp=function(){})}}),500)}},execText:function(){var a=d.marginBox(this.parentNode),
a=Math.max(a.w,this.style.text.minWidth),c=this.cleanText(h.innerHTML,!0);h.innerHTML="";h.blur();this.destroyAnchors();var c=this.typesetter(c),c=this.measureText(c,a),b=this.mouse.scrollOffset(),e=this.mouse.origin,f=this._box.left+b.left-e.x,b=this._box.top+b.top-e.y,f=f*this.mouse.zoom,b=b*this.mouse.zoom,a=a*this.mouse.zoom;c.h*=this.mouse.zoom;this.points=[{x:f,y:b},{x:f+a,y:b},{x:f+a,y:b+c.h},{x:f,y:b+c.h}];this.editMode=!1;console.log("EXEC TEXT::::",this._postRenderCon);c.text||(this._text=
"",this._textArray=[]);this.render(c.text);this.onChangeText(this.getText())},edit:function(){this.editMode=!0;var a=this.getText()||"";console.log("EDIT TEXT:",a," ",a.replace("/n"," "));if(!this.parentNode&&this.points){var c=this.pointsToData(),b=this.mouse.scrollOffset(),d=this.mouse.origin,c={pageX:c.x/this.mouse.zoom-b.left+d.x,pageY:c.y/this.mouse.zoom-b.top+d.y,width:c.width/this.mouse.zoom,height:c.height/this.mouse.zoom};this.remove(this.shape,this.hit);this.showParent(c);this.createTextField(a.replace("/n",
" "));this.connectTextField();a&&this.setSelection(h,"end")}},cleanText:function(a,c){c&&d.forEach(["\x3cbr\x3e","\x3cbr/\x3e","\x3cbr /\x3e","\\n","\\r"],function(b){a=a.replace(new RegExp(b,"gi")," ")});a=a.replace(/&nbsp;/g," ");a=function(a){var b={"\x26lt;":"\x3c","\x26gt;":"\x3e","\x26amp;":"\x26"},c;for(c in b)a=a.replace(new RegExp(c,"gi"),b[c]);return a}(a);a=d.trim(a);return a=a.replace(/\s{2,}/g," ")},measureText:function(a,c){this.showParent({width:c||"auto",height:"auto"});this.createTextField(a);
var b="",e=h;e.innerHTML="X";b=d.marginBox(e).h;e.innerHTML=a;if(!c||/(<br\s*\/*>)|(\n)|(\r)/gi.test(a))b=a.replace(/(<br\s*\/*>)|(\n)|(\r)/gi,"\n"),e.innerHTML=a.replace(/(<br\s*\/*>)|(\n)|(\r)/gi,"\x3cbr/\x3e");else if(d.marginBox(e).h==b)b=a;else{a=a.split(" ");var f=[[]];c=0;for(e.innerHTML="";a.length;){var g=a.shift();e.innerHTML+=g+" ";d.marginBox(e).h>b&&(c++,f[c]=[],e.innerHTML=g+" ");f[c].push(g)}d.forEach(f,function(a,b){f[b]=a.join(" ")});b=f.join("\n");e.innerHTML=b.replace("\n","\x3cbr/\x3e")}e=
d.marginBox(e);h.parentNode.removeChild(h);d.destroy(this.parentNode);this.parentNode=null;return{h:e.h,w:e.w,text:b}},_downOnCanvas:!1,onDown:function(a){this._startdrag={x:a.pageX,y:a.pageY};d.disconnect(this._postRenderCon);this._postRenderCon=null;this._downOnCanvas=!0},createAnchors:function(){this._anchors={};var a=this,c=this.style.anchors,b=c.width,e=c.size-2*b,f=c.size/2*-1+"px",c={position:"absolute",width:e+"px",height:c.size-2*b+"px",backgroundColor:c.fill,border:b+"px "+c.style+" "+c.color};
d.isIE&&(c.paddingLeft=e+"px",c.fontSize=e+"px");e=[{top:f,left:f},{top:f,right:f},{bottom:f,right:f},{bottom:f,left:f}];for(f=0;4>f;f++){var g=0==f||3==f,b=this.util.uid(g?"left_anchor":"right_anchor"),k=d.create("div",{id:b},this.parentNode);d.style(k,d.mixin(d.clone(c),e[f]));var l,m,p;l=d.connect(k,"mousedown",this,function(b){g=-1<b.target.id.indexOf("left");a._onAnchor=!0;var c=b.pageX,e=this._box.width;d.stopEvent(b);m=d.connect(document,"mousemove",this,function(a){a=a.pageX;g?(this._box.left=
a,this._box.width=e+c-a):this._box.width=a+e-c;d.style(this.parentNode,this._box.toPx())});p=d.connect(document,"mouseup",this,function(b){c=this._box.left;e=this._box.width;d.disconnect(m);d.disconnect(p);a._onAnchor=!1;h.focus();d.stopEvent(b)})});this._anchors[b]={a:k,cons:[l]}}},destroyAnchors:function(){for(var a in this._anchors)d.forEach(this._anchors[a].con,d.disconnect,d),d.destroy(this._anchors[a].a)},setSavedCaret:function(a){this._caretStart=this._caretEnd=a},getSavedCaret:function(){return{start:this._caretStart,
end:this._caretEnd}},insertText:function(a,c){var b;b=a.innerHTML;var d=this.getSavedCaret();b=b.replace(/&nbsp;/g," ");b=b.substr(0,d.start)+c+b.substr(d.end);b=this.cleanText(b,!0);this.setSavedCaret(Math.min(b.length,d.end+c.length));a.innerHTML=b;this.setSelection(a,"stored")},getSelection:function(a){var c,b;d.doc.selection?(b=d.doc.selection.createRange(),c=d.body().createTextRange(),c.moveToElementText(a),a=c.duplicate(),c.moveToBookmark(b.getBookmark()),a.setEndPoint("EndToStart",c),c=this._caretStart=
a.text.length,b=this._caretEnd=a.text.length+b.text.length,console.warn("Caret start: ",c," end: ",b," length: ",a.text.length," text: ",a.text)):(this._caretStart=d.global.getSelection().getRangeAt(a).startOffset,this._caretEnd=d.global.getSelection().getRangeAt(a).endOffset,console.log("Caret start: ",this._caretStart," end: ",this._caretEnd))},setSelection:function(a,c){console.warn("setSelection:");if(d.doc.selection){var b=d.body().createTextRange();b.moveToElementText(a);switch(c){case "end":b.collapse(!1);
break;case "beg":b.collapse();break;case "all":b.collapse();b.moveStart("character",0);b.moveEnd("character",a.text.length);break;case "stored":b.collapse(),a=this._caretStart-this._caretEnd,b.moveStart("character",this._caretStart),b.moveEnd("character",a)}b.select()}else{var e=function(a,b){b=b||[];for(var c=0;c<a.childNodes.length;c++){var d=a.childNodes[c];3==d.nodeType?b.push(d):d.tagName&&"img"==d.tagName.toLowerCase()&&b.push(d);d.childNodes&&d.childNodes.length&&e(d,b)}return b};console.log("ff node:",
a);a.focus();b=d.global.getSelection();b.removeAllRanges();var f=d.doc.createRange(),g=e(a);switch(c){case "end":console.log("len:",g[g.length-1].textContent.length);f.setStart(g[g.length-1],g[g.length-1].textContent.length);f.setEnd(g[g.length-1],g[g.length-1].textContent.length);break;case "beg":f.setStart(g[0],0);f.setEnd(g[0],0);break;case "all":f.setStart(g[0],0);f.setEnd(g[g.length-1],g[g.length-1].textContent.length);break;case "stored":console.log("Caret start: ",this._caretStart," caret end: ",
this._caretEnd),f.setStart(g[0],this._caretStart),f.setEnd(g[0],this._caretEnd)}b.addRange(f);console.log("sel ",c," on ",a)}}});d.setObject("dojox.drawing.tools.TextBlock",n);n.setup={name:"dojox.drawing.tools.TextBlock",tooltip:"Text Tool",iconClass:"iconText"};r.register(n.setup,"tool");return n});