mirror of
https://github.com/lubuntu-team/lubuntu.me.git
synced 2025-02-23 16:21:07 +00:00
1 line
8.2 KiB
JavaScript
1 line
8.2 KiB
JavaScript
(function(e){"use strict";var t=t||function(){var e={};return{add:function(t,r){if("object"==typeof t){var n;for(n=0;n<t.length;n++){var a=t[n];e[a]||(e[a]=[]),e[a].push(r)}}else e[t]||(e[t]=[]),e[t].push(r)},get:function(t){if(e[t])return e[t]}}}(),r=r||function(r){"function"!=typeof String.prototype.repeat&&(String.prototype.repeat=function(e){if(e<1)return"";if(e%2)return this.repeat(e-1)+this;var t=this.repeat(e/2);return t+t}),"function"!=typeof Array.prototype.filter&&(Array.prototype.filter=function(e){if(null===this)throw new TypeError;var t=Object(this),r=t.length>>>0;if("function"!=typeof e)throw new TypeError;for(var n=[],a=arguments[1],o=0;o<r;o++)if(o in t){var i=t[o];e.call(a,i,o,t)&&n.push(i)}return n});var n,a,o={textarea:null,replaceTab:!0,softTabs:!0,tabSize:4,autoOpen:!0,overwrite:!0,autoStrip:!0,autoIndent:!0,fence:!1},i={keyMap:[{open:'"',close:'"',canBreak:!1},{open:"'",close:"'",canBreak:!1},{open:"(",close:")",canBreak:!1},{open:"[",close:"]",canBreak:!0},{open:"{",close:"}",canBreak:!0}]},s={_callHook:function(r,n){var a=t.get(r);if(n="boolean"!=typeof n||!1!==n,a)if(n){var i,c=o.textarea,l=c.value,u=s.cursor.get();for(i=0;i<a.length;i++)a[i].call(e,{editor:{element:c,text:l,levelsDeep:s.levelsDeep()},caret:{pos:u},lines:{current:s.cursor.getLine(l,u),total:s.editor.getLines(l)}})}else for(i=0;i<a.length;i++)a[i].call(e)},defineNewLine:function(){var e=document.createElement("textarea");e.value="\n",a=2==e.value.length?"\r\n":"\n"},defineTabSize:function(e){return void 0!==o.textarea.style.OTabSize?void(o.textarea.style.OTabSize=e):void 0!==o.textarea.style.MozTabSize?void(o.textarea.style.MozTabSize=e):void 0!==o.textarea.style.tabSize?void(o.textarea.style.tabSize=e):void 0},cursor:{getLine:function(e,t){return e.substring(0,t).split("\n").length},get:function(){if("number"==typeof document.createElement("textarea").selectionStart)return o.textarea.selectionStart;if(document.selection){var e=0,t=o.textarea.createTextRange(),r=document.selection.createRange().duplicate(),n=r.getBookmark();for(t.moveToBookmark(n);0!==t.moveStart("character",-1);)e++;return e}},set:function(e,t){if(t||(t=e),o.textarea.setSelectionRange)o.textarea.focus(),o.textarea.setSelectionRange(e,t);else if(o.textarea.createTextRange){var r=o.textarea.createTextRange();r.collapse(!0),r.moveEnd("character",t),r.moveStart("character",e),r.select()}},selection:function(){var e,t,r,n,i,c=o.textarea,l=0,u=0;return"number"==typeof c.selectionStart&&"number"==typeof c.selectionEnd?(l=c.selectionStart,u=c.selectionEnd):(t=document.selection.createRange())&&t.parentElement()==c&&(e=s.editor.get(),n=e.length,r=c.createTextRange(),r.moveToBookmark(t.getBookmark()),i=c.createTextRange(),i.collapse(!1),r.compareEndPoints("StartToEnd",i)>-1?l=u=n:(l=-r.moveStart("character",-n),l+=e.slice(0,l).split(a).length-1,r.compareEndPoints("EndToEnd",i)>-1?u=n:(u=-r.moveEnd("character",-n),u+=e.slice(0,u).split(a).length-1))),l!=u&&{start:l,end:u}}},editor:{getLines:function(e){return e.split("\n").length},get:function(){return o.textarea.value.replace(/\r/g,"")},set:function(e){o.textarea.value=e}},fenceRange:function(){if("string"==typeof o.fence){for(var e=s.editor.get(),t=s.cursor.get(),r=0,n=e.indexOf(o.fence),a=0;n>=0&&(a++,!(t<n+r));)r+=n+o.fence.length,e=e.substring(n+o.fence.length),n=e.indexOf(o.fence);return r<t&&n+r>t&&a%2==0}return!0},isEven:function(e,t){return t%2},levelsDeep:function(){var e,t,r=s.cursor.get(),n=s.editor.get(),a=n.substring(0,r),o=0;for(e=0;e<a.length;e++)for(t=0;t<i.keyMap.length;t++)i.keyMap[t].canBreak&&(i.keyMap[t].open==a.charAt(e)&&o++,i.keyMap[t].close==a.charAt(e)&&o--);var c=0,l=["'",'"'];for(e=0;e<i.keyMap.length;e++)if(i.keyMap[e].canBreak)for(t in l)c+=a.split(l[t]).filter(s.isEven).join("").split(i.keyMap[e].open).length-1;var u=o-c;return u>=0?u:0},deepExtend:function(e,t){for(var r in t)t[r]&&t[r].constructor&&t[r].constructor===Object?(e[r]=e[r]||{},s.deepExtend(e[r],t[r])):e[r]=t[r];return e},addEvent:function(e,t,r){e.addEventListener?e.addEventListener(t,r,!1):e.attachEvent&&e.attachEvent("on"+t,r)},removeEvent:function(e,t,r){e.addEventListener?e.removeEventListener(t,r,!1):e.attachEvent&&e.detachEvent("on"+t,r)},preventDefaultEvent:function(e){e.preventDefault?e.preventDefault():e.returnValue=!1}},c={tabKey:function(e){if(s.fenceRange()){if(9==e.keyCode){s.preventDefaultEvent(e);var t=!0;s._callHook("tab:before");var r=s.cursor.selection(),a=s.cursor.get(),o=s.editor.get();if(r){for(var i=r.start;i--;)if("\n"==o.charAt(i)){r.start=i+1;break}var c,l=o.substring(r.start,r.end),u=l.split("\n");if(e.shiftKey){for(c=0;c<u.length;c++)u[c].substring(0,n.length)==n&&(u[c]=u[c].substring(n.length));l=u.join("\n"),s.editor.set(o.substring(0,r.start)+l+o.substring(r.end)),s.cursor.set(r.start,r.start+l.length)}else{for(c in u)u[c]=n+u[c];l=u.join("\n"),s.editor.set(o.substring(0,r.start)+l+o.substring(r.end)),s.cursor.set(r.start,r.start+l.length)}}else{var f=o.substring(0,a),d=o.substring(a),p=f+n+d;e.shiftKey?o.substring(a-n.length,a)==n&&(p=o.substring(0,a-n.length)+d,s.editor.set(p),s.cursor.set(a-n.length)):(s.editor.set(p),s.cursor.set(a+n.length),t=!1)}s._callHook("tab:after")}return t}},enterKey:function(e){if(s.fenceRange()&&13==e.keyCode){s.preventDefaultEvent(e),s._callHook("enter:before");var t,r,o=s.cursor.get(),c=s.editor.get(),l=c.substring(0,o),u=c.substring(o),f=l.charAt(l.length-1),d=u.charAt(0),p=s.levelsDeep(),g="",v="";if(p){for(;p--;)g+=n;for(g=g,t=g.length+1,r=0;r<i.keyMap.length;r++)i.keyMap[r].open==f&&i.keyMap[r].close==d&&(v=a)}else t=1;var h=l+a+g+v+g.substring(0,g.length-n.length)+u;s.editor.set(h),s.cursor.set(o+t),s._callHook("enter:after")}},deleteKey:function(e){if(s.fenceRange()&&8==e.keyCode){s.preventDefaultEvent(e),s._callHook("delete:before");var t,r=s.cursor.get(),n=s.editor.get(),a=n.substring(0,r),o=n.substring(r),c=a.charAt(a.length-1),l=o.charAt(0);if(!1===s.cursor.selection()){for(t=0;t<i.keyMap.length;t++)if(i.keyMap[t].open==c&&i.keyMap[t].close==l){var u=n.substring(0,r-1)+n.substring(r+1);return s.editor.set(u),void s.cursor.set(r-1)}var u=n.substring(0,r-1)+n.substring(r);s.editor.set(u),s.cursor.set(r-1)}else{var f=s.cursor.selection(),u=n.substring(0,f.start)+n.substring(f.end);s.editor.set(u),s.cursor.set(r)}s._callHook("delete:after")}}},l={openedChar:function(e,t){s.preventDefaultEvent(t),s._callHook("openChar:before");var r=s.cursor.get(),n=s.editor.get(),a=n.substring(0,r),i=n.substring(r),c=a+e.open+e.close+i;o.textarea.value=c,s.cursor.set(r+1),s._callHook("openChar:after")},closedChar:function(e,t){var r=s.cursor.get();return s.editor.get().substring(r,r+1)==e.close&&(s.preventDefaultEvent(t),s._callHook("closeChar:before"),s.cursor.set(s.cursor.get()+1),s._callHook("closeChar:after"),!0)}},u={filter:function(e){if(s.fenceRange()){var t=e.which||e.keyCode;if(39!=t&&(40!=t||0!==e.which)){var r,n=String.fromCharCode(t);for(r=0;r<i.keyMap.length;r++)if(i.keyMap[r].close==n){var a=o.overwrite&&l.closedChar(i.keyMap[r],e);!a&&i.keyMap[r].open==n&&o.autoOpen&&l.openedChar(i.keyMap[r],e)}else i.keyMap[r].open==n&&o.autoOpen&&l.openedChar(i.keyMap[r],e)}}},listen:function(){o.replaceTab&&s.addEvent(o.textarea,"keydown",c.tabKey),o.autoIndent&&s.addEvent(o.textarea,"keydown",c.enterKey),o.autoStrip&&s.addEvent(o.textarea,"keydown",c.deleteKey),s.addEvent(o.textarea,"keypress",u.filter),s.addEvent(o.textarea,"keydown",function(){s._callHook("keydown")}),s.addEvent(o.textarea,"keyup",function(){s._callHook("keyup")})}};this.destroy=function(){s.removeEvent(o.textarea,"keydown",c.tabKey),s.removeEvent(o.textarea,"keydown",c.enterKey),s.removeEvent(o.textarea,"keydown",c.deleteKey),s.removeEvent(o.textarea,"keypress",u.filter)},function(e){e.textarea&&(s._callHook("init:before",!1),s.deepExtend(o,e),s.defineNewLine(),o.softTabs?n=" ".repeat(o.tabSize):(n="\t",s.defineTabSize(o.tabSize)),u.listen(),s._callHook("init:after",!1))}(r)};"undefined"!=typeof module&&module.exports&&(module.exports=r),"undefined"==typeof ender&&(this.Behave=r,this.BehaveHooks=t),"function"==typeof define&&define.amd&&define("behave",[],function(){return r})}).call(this),function(e){e(document).on("sowsetupformfield",".siteorigin-widget-field-type-code",function(t){var r=e(this);new Behave({textarea:r.find(".siteorigin-widget-code-input").get(0)})})}(jQuery); |