openct-tasks/_common/modules/ext/fioi-editor2/fioi-editor2.min.js

3 lines
22 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

!function t(e,n,i){function o(a,s){if(!n[a]){if(!e[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(r)return r(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[a]={exports:{}};e[a][0].call(d.exports,function(t){var n=e[a][1][t];return o(n?n:t)},d,d.exports,t,e,n,i)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a<i.length;a++)o(i[a]);return o}({1:[function(t,e,n){e.exports=function(t,e){var n=e||document;if(n.createStyleSheet){var i=n.createStyleSheet();return i.cssText=t,i.ownerNode}var o=n.getElementsByTagName("head")[0],r=n.createElement("style");return r.type="text/css",r.styleSheet?r.styleSheet.cssText=t:r.appendChild(n.createTextNode(t)),o.appendChild(r),r},e.exports.byUrl=function(t){if(document.createStyleSheet)return document.createStyleSheet(t).ownerNode;var e=document.getElementsByTagName("head")[0],n=document.createElement("link");return n.rel="stylesheet",n.href=t,e.appendChild(n),n}},{}],2:[function(t,e,n){e.exports='<div><div ui-ace="{onLoad: vm.aceLoaded}"></div><div ng-if="vm.showLanguageSelector"><span>Language du fichier :</span><select ng-model="vm.language" ng-options="option as option.label for option in vm.languageOptions track by option.id" ng-change="vm.languageChanged()"></select></div></div>'},{}],3:[function(t,e,n){e.exports=function(e){"use strict";function n(e){return{restrict:"E",scope:{buffer:"@",onInit:"&"},template:t("./buffer.jade"),controllerAs:"vm",bindToController:!0,require:"^fioiEditor2",replace:!0,controller:i,link:function(t,n,i,o){function r(){t.$apply(function(){t.vm.update()})}var a=e.on("update",r);t.$on("$destroy",function(){a(),t.vm.cleanup()}),t.vm.update()}}}function i(t,e){function n(){c.languageOptions=d.getLanguages(),c.showLanguageSelector=c.languageOptions.length>1,c.language=_.find(c.languageOptions,function(t){return t.id==d.language}),l&&(c.language&&"object"==typeof c.language&&l.session.setMode("ace/mode/"+c.language.ace.mode),l.setValue(d.text),l.selection.setRange(d.selection))}function i(){return{text:l.getValue(),language:c.language&&c.language.id,selection:l.selection.getRange()}}function o(){l.focus()}function r(t,e,n,i,o){var r={action:"insert",start:{row:t,column:e},end:{row:n,column:i},lines:o};l.session.doc.applyDeltas([r])}function a(t,e,n,i){var o={action:"remove",start:{row:t,column:e},end:{row:n,column:i}};l.session.doc.applyDeltas([o])}function s(t,e){l.selection.setRange({start:{row:t,column:e},end:{row:t,column:e}})}function u(t,e,n,i){l.selection.setRange({start:{row:t,column:e},end:{row:n,column:i}})}var c=this,d=null,l=null;this.update=function(){this.cleanup(),d=e.get(this.buffer),d.attachControl({load:n,dump:i,focus:o,insertLines:r,deleteLines:a,moveCursor:s,setSelection:u}),d.pushToControl()},this.cleanup=function(){d&&(d.pullFromControl(),d.detachControl(),d=null)},this.aceLoaded=function(t){l=t,l.$blockScrolling=1/0,l.commands.removeCommand("gotoline"),l.session.doc.on("change",function(t){"insert"===t.action?d.logInsert(t.start.row,t.start.column,t.end.row,t.end.column,t.lines):d.logDelete(t.start.row,t.start.column,t.end.row,t.end.column)},!0),l.selection.addEventListener("changeCursor",function(){if(l.selection.isEmpty()){var t=l.selection.getRange();d.logCursor(t.start.row,t.start.column)}},!0),l.selection.addEventListener("changeSelection",function(){var t=l.selection.getRange();d.logSelect(t.start.row,t.start.column,t.end.row,t.end.column)},!0)},this.languageChanged=function(){d.pullFromControl(),d.pushToControl(),l.focus()}}e.directive("fioiEditor2Buffer",n),n.$inject=["FioiEditor2Signals"],i.$inject=["FioiEditor2Signals","FioiEditor2Buffers"]}},{"./buffer.jade":2}],4:[function(t,e,n){e.exports='<div class="fioi-editor2"><ul class="fioi-editor2_tabs"><li ng-click="vm.addTab()" class="fioi-editor2_new-tab">+</li><li ng-repeat="tab in vm.tabs track by tab.id" ng-class="{\'active\':tab.id===vm.tab.id}" ng-click="vm.selectTab(tab)" class="fioi-editor2_tab"><span class="fioi-editor2_tab-title">{{tab.title}}</span><span ng-click="vm.closeTab(tab, $event)" class="fioi-editor2_close-tab">×</span></li></ul><div ng-class="vm.buffersClasses" class="fioi-editor2_buffers"><div ng-if="!vm.tab.buffers">no tabs</div><div ng-repeat="buffer in vm.tab.buffers track by buffer"><fioi-editor2-buffer buffer="{{::buffer}}"></fioi-editor2-buffer></div></div></div>'},{}],5:[function(t,e,n){e.exports=function(e){"use strict";function n(e){return{restrict:"A",scope:{fioiEditor2:"&"},template:t("./editor.jade"),controllerAs:"vm",bindToController:!0,replace:!0,controller:i,link:function(t,n,i,o){function r(){t.$apply(function(){t.vm.update()})}var a=e.on("update",r);t.$on("$destroy",function(){a()}),t.vm.update()}}}function i(t){var e=this,n=null;this.addTab=function(){var t=n.addTab();this.selectTab(t)}.bind(this),this.closeTab=function(t,e){n.removeTab(t.id),e.stopPropagation()},this.selectTab=function(t){n.update({activeTabId:t.id})},this.update=function(){var i=e.fioiEditor2(),o=e.buffersClasses={};if(e.tabs=[],e.tab=null,!i)return void(o["fioi-editor2_error"]=!0);if(n=t.find(i.tabset),!n)return void(o["fioi-editor2_error"]=!0);if(e.tabs=_.map(n.getTabs(),function(t){return{id:t.id,title:t.title}}),0===e.tabs.length)return void(o["fioi-editor2_empty"]=!0);var r=n.getActiveTab();return r?(e.tab={id:r.id,title:r.title,buffers:r.buffers},void(o["fioi-editor2_"+r.buffers.length+"-buffers"]=!0)):void(o["fioi-editor2_no-active-tab"]=!0)}}e.directive("fioiEditor2",n),n.$inject=["FioiEditor2Signals"],i.$inject=["FioiEditor2Tabsets"]}},{"./editor.jade":4}],6:[function(t,e,n){var i=".fioi-editor2 {\n width: 762px;\n}\n\nul.fioi-editor2_tabs {\n font: bold 11px Verdana, Arial, sans-serif;\n list-style-type: none;\n padding-bottom: 24px;\n border-bottom: 1px solid #CCCCCC;\n margin: 0;\n}\n\nul.fioi-editor2_tabs > li {\n float: left;\n height: 21px;\n line-height: 21px;\n padding: 0 7px;\n background-color: #E0F3DB;\n margin: 2px 2px 0 2px;\n border: 1px solid #CCCCCC;\n cursor: pointer;\n}\n\nul.fioi-editor2_tabs > li.active {\n border-bottom: 1px solid #fff;\n background-color: #FFFFFF;\n}\n\nul.fioi-editor2_tabs > li:hover .fioi-editor2_tab-title {\n text-decoration: underline;\n}\n\n.fioi-editor2_close-tab {\n padding: 0px 2px;\n margin-left: 2px;\n border-radius: 3px;\n}\n\n.fioi-editor2_close-tab:hover {\n background-color: #D8D8D8;\n}\n\n.fioi-editor2_buffers {\n width: 100%;\n overflow: hidden;\n}\n\n.fioi-editor2_empty {\n width: 762px;\n border: 1px solid #CCCCCC;\n border-top: none;\n font-style: italic;\n padding: 10px;\n color: #888;\n}\n\n.fioi-editor2_buffers .ace_editor {\n height: 350px; /* 14px * 25 lines */\n border: 1px solid #CCCCCC;\n border-top: none;\n}\n\n.fioi-editor2_1-buffers .ace_editor {\n width: 762px;\n}\n.fioi-editor2_2-buffers .ace_editor {\n width: 379px;\n}\n.fioi-editor2_2-buffers > div {\n float: left;\n}\n";t("./../node_modules/cssify")(i),e.exports=i},{"./../node_modules/cssify":1}],7:[function(t,e,n){define(["module","angular","lodash","angular-ui-ace"],function(e,n,i){"use strict";t("./main.css");var o=n.module("fioi-editor2",["ui.ace"]);o.factory("FioiEditor2Config",function(){var t={};return t.rootUri=e.uri.replace(/\/[^\/]*$/,""),t}),t("./services/signals")(o),t("./services/registry")(o),t("./services/audio")(o),t("./services/recorder")(o),t("./services/player")(o),t("./services/tabsets")(o),t("./services/tabs")(o),t("./services/buffers")(o),t("./directives/editor")(o),t("./directives/buffer")(o)})},{"./directives/buffer":3,"./directives/editor":5,"./main.css":6,"./services/audio":8,"./services/buffers":9,"./services/player":10,"./services/recorder":11,"./services/registry":12,"./services/signals":13,"./services/tabs":14,"./services/tabsets":15}],8:[function(t,e,n){e.exports=function(t){"use strict";function e(t,e,n,i){function o(t){var e="fioi-editor2_audio-callback_"+u.nextCallbackId;u.nextCallbackId+=1;var i=n.$on(e,function(e,n){i(),t(n)});return e}function r(t){return a.error=t,a}var a={error:null},s=t.rootUri+"/audio-worker.min.js",u={nextCallbackId:1,source:null,recording:!1},c=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;if(a.prepareRecording=function(t){return a.error?t(a.error):void c.call(navigator,{audio:!0},function(e){return t(null,e)},function(e){return t("getUserMedia error: "+e)})},a.isRecording=function(){return u.recording},a.startRecording=function(t){var e=new AudioContext,i=u.source=e.createMediaStreamSource(t),o=u.worker;o||(o=u.worker=new Worker(s),o.onmessage=function(t){var e=t.data.callbackId;n.$emit(e,t.data.result)},o.postMessage({command:"init",config:{sampleRate:i.context.sampleRate}}));var r=u.node=i.context.createScriptProcessor(4096,2,2);r.onaudioprocess=function(t){u.recording&&u.worker.postMessage({command:"record",buffer:[t.inputBuffer.getChannelData(0),t.inputBuffer.getChannelData(1)]})},i.connect(r),r.connect(e.destination),u.recording=!0},a.stopRecording=function(){return i(function(t,e){u.recording=!1,u.node.disconnect(),u.node=null,u.source.disconnect(),u.source=null,u.worker.postMessage({command:"finishRecording",callbackId:o(t)})})},a.combineRecordings=function(t){return i(function(e,n){u.worker.postMessage({command:"combineRecordings",recordings:t,callbackId:o(e)})})},a.getPlayer=function(t){var e=new Audio;return e.src=t,e},a.clearRecordings=function(){return i(function(t,e){u.worker.postMessage({command:"clearRecordings",callbackId:o(t)})})},a.getRecording=function(t){return i(function(e,n){u.worker.postMessage({command:"getRecording",recording:t,callbackId:o(e)})})},!c||!window.AudioContext)return r("Audio recording is not supported by this browser");if(!window.Worker)return r("Audio recording requires Web Worker support");var d=e.protocol();return"file"===d?r("Audio recording is not available on local URLs"):("http"===d&&console.log("Audio recording is deprecated on insecure transports"),a)}t.factory("FioiEditor2Audio",e),e.$inject=["FioiEditor2Config","$location","$rootScope","$q"]}},{}],9:[function(t,e,n){e.exports=function(t){"use strict";function e(t,e){function n(t){this.id=t,this.text="",this.selection={start:{row:0,column:0},end:{row:0,column:0}},this.languages=null,this.language=null,this.control=null}var i={},o={};return i.add=function(t){var i=e.freshId("b",t),r=o[i]=new n(i);return e.register(i,r),r},i.remove=function(t){var e=o[t];e&&delete o[t]},i.get=function(t){return o[t]},n.prototype.dump=function(){return{text:this.text,language:this.language,selection:this.selection}},n.prototype.load=function(t){return this.update(t),this},n.prototype.update=function(t,e){return"tab"in t&&(this.tab=t.tab),"languages"in t&&(this.languages=t.languages),"text"in t&&(this.text=t.text.toString()),"language"in t&&(this.language=t.language),"selection"in t&&(this.selection=_.clone(t.selection)),e||this.pushToControl(),this},n.prototype.getLanguages=function(){return this.languages?this.languages:this.tab.getLanguages()},n.prototype.attachControl=function(t){return this.control=t,this},n.prototype.detachControl=function(){return this.control=null,this},n.prototype.pushToControl=function(){return this.control&&this.control.load(),this},n.prototype.pullFromControl=function(){return this.control&&this.update(this.control.dump(),!0),this},n.prototype.recordEvent=function(e){e.unshift(this.id),t.addEvent(e)},n.prototype.logInsert=function(e,n,i,o,r){t.addEvent([this.id,"i",e,n,i,o].concat(r))},n.prototype.logDelete=function(e,n,i,o){t.addEvent([this.id,"d",e,n,i,o])},n.prototype.logCursor=function(e,n){t.addEvent([this.id,"c",e,n])},n.prototype.logSelect=function(e,n,i,o){t.addEvent([this.id,"s",e,n,i,o])},n.prototype.focus=function(){this.control&&this.control.focus()},n.prototype.replayEvent=function(t){var e=this.control;if(e)switch(t[2]){case"c":e.moveCursor(t[3],t[4]);break;case"i":e.insertLines(t[3],t[4],t[5],t[6],t.slice(7));break;case"d":e.deleteLines(t[3],t[4],t[5],t[6]);break;case"s":e.setSelection(t[3],t[4],t[5],t[6]);break;default:console.log("Buffer ignored event",t[2])}},i}t.factory("FioiEditor2Buffers",e),e.$inject=["FioiEditor2Recorder","FioiEditor2Registry"]}},{}],10:[function(t,e,n){e.exports=function(t){"use strict";function e(t,e,n,i,o,r){function a(){if(u.playInterval){var t,n=u.playCursor;t=u.audio?Math.floor(1e3*u.audio.currentTime)-u.playOffset:Math.floor(Date.now()-u.startTime-u.playOffset);for(var i=0,a=u.recording.events;n<a.length;){var c=a[n];if(i+c[0]>t)break;i+=c[0];var d=c[1],l=c[2];try{""===d&&"0"===l&&(o.clear(),u.options.loadState(c[3]),r.emitUpdate());var f=o.getTarget(d);f&&f.replayEvent(c),"function"==typeof u.options.replayEvent&&u.options.replayEvent(c),n+=1}catch(p){console.log("An exception occurred!",p),u.exception=p,s.pause();break}}u.playOffset+=i,u.playCursor=n,n==a.length&&(e.cancel(u.playInterval),u.playInterval=null,s.stop(),r.emit("done"))}}var s={},u={options:null,recording:null,startTime:null,isPlaying:!1,isPaused:!1,playInterval:void 0,playOffset:void 0,playCursor:void 0};return s.start=function(n,o){return t(function(t,r){return u.isPlaying?r("playback is already in progress"):(u.options=o,u.recording=n,u.startTime=Date.now(),u.isPlaying=!0,u.isPaused=!1,u.playInterval=e(a,20),u.playOffset=0,u.playCursor=0,n.audioUrl&&(u.audio=i.getPlayer(n.audioUrl),u.audio.play()),void t())})},s.pause=function(){return t(function(t,n){return u.isPlaying?u.isPaused?t():(u.audio&&u.audio.pause(),e.cancel(u.playInterval),u.resumeState=u.options.dumpState(),u.playInterval=null,u.isPaused=!0,void t()):n("playback is not in progress")})},s.resume=function(){return t(function(t,n){return u.isPlaying?(u.isPaused||t(),u.isPaused=!1,o.clear(),u.options.loadState(u.resumeState),u.audio&&u.audio.play(),u.startTime=Date.now()-u.playOffset,u.playInterval=e(a,20),t()):n("playback is not in progress")})},s.stop=function(){return t(function(t,e){function n(){u.isPlaying=!1,u.isPaused=!1,u.events=void 0,u.options=null,u.audio=null,t()}return u.isPaused?n():s.pause().then(n,e)})},s}t.factory("FioiEditor2Player",e),e.$inject=["$q","$interval","$sce","FioiEditor2Audio","FioiEditor2Registry","FioiEditor2Signals"]}},{}],11:[function(t,e,n){e.exports=function(t){"use strict";function e(t,e,n,i){var o={},r={options:null,isRecording:!1,isPaused:!1,segments:void 0,events:void 0,startTime:void 0,timeOffset:void 0,currentFrameTime:void 0,lastEventTime:void 0};return o.record=function(e){return t(function(t,n){function o(){r.isPaused=!1,r.options=e,r.isRecording=!0,r.timeOffset=0,r.startTime=Date.now(),r.lastEventTime=0,r.events=[[0,"","0",r.options.dumpState()]],r.segments=[],r.audioStream&&i.startRecording(r.audioStream),t()}return r.isRecording?n("an operation is already in progress"):void i.prepareRecording(function(t,e){return t?n(t):(r.audioStream=e,void o())})})},o.pause=function(){return t(function(t,e){function a(){r.segments.push(u),t(u)}if(r.isRecording||e("no operation to pause"),r.isPaused)return e("not paused");o.addEvent(["",""]);var s=Date.now()-r.startTime,u={duration:s,events:r.events};return r.events=void 0,r.timeOffset+=s,r.startTime=void 0,r.isPaused=!0,r.audioStream?void i.stopRecording().then(function(t){u.audioUrl=t.url,u.safeAudioUrl=n.trustAsResourceUrl(t.url),a()},function(t){e(t)}):a()})},o.resume=function(){return t(function(t,e){return r.isRecording||e("not recording"),r.isPaused||e("not paused"),r.isPaused=!1,r.startTime=Date.now(),r.events=[[0,"","0",r.options.dumpState()]],r.audioStream&&i.startRecording(r.audioStream),t()})},o.stop=function(){return t(function(t,e){function a(){function o(e){if(e){var o=URL.createObjectURL(e.wav);c.audioBlob=e.wav,c.audioEncoding=e.encoding,c.audioUrl=o,c.safeAudioUrl=n.trustAsResourceUrl(o)}i.clearRecordings(),r.isRecording=!1,r.isPaused=!1,r.segments=void 0,r.options=null,t(c)}var a=0,s=[],u=[];_.each(r.segments,function(t){a+=t.duration,Array.prototype.push.apply(s,t.events),u.push(t.audioUrl)});var c={duration:a,events:s};r.audioStream?i.combineRecordings(u).then(o,e):o()}return r.isRecording||e("not recording"),r.isPaused?a():o.pause().then(function(){a()},function(t){e(t)})})},o.addEvent=function(t){if(r.isRecording){"number"!=typeof r.currentFrameTime&&(r.currentFrameTime=Math.floor(Date.now()-r.startTime),window.requestAnimationFrame(function(){r.currentFrameTime=void 0}));var e=r.currentFrameTime-r.lastEventTime;r.lastEventTime=r.currentFrameTime,t.unshift(e),r.events.push(t)}},o}t.factory("FioiEditor2Recorder",e),e.$inject=["$q","$interval","$sce","FioiEditor2Audio"]}},{}],12:[function(t,e,n){e.exports=function(t){"use strict";function e(){var t={},e={targets:{}};return t.freshId=function(t,n){if("string"==typeof n){if(n in e.targets)throw"conflict on id "+n;return n}for(var i=1;;){var o=t.toString()+i;if(!(o in e.targets))return o;i+=1}},t.clear=function(){e.targets={}},t.register=function(t,n){e.targets[t]=n},t.getTarget=function(t){return e.targets[t]},t.getPlayId=function(t){return t},t}t.factory("FioiEditor2Registry",e),e.$inject=[]}},{}],13:[function(t,e,n){e.exports=function(t){"use strict";function e(t){function e(){var e=o;o={},r=!1,a=!1,_.each(e,function(e,i){t.$emit(n+i)})}var n="fioi-editor2_",i={},o={},r=!1,a=!1,s=!1;return i.on=function(e,i){return t.$on(n+e,i)},i.defer=function(t){s=t,r&&!a&&e()},i.emitUpdate=function(){this.emit("update")},i.emit=function(t){o[t]||(o[t]=!0,r=!0,s||a||(a=!0,window.requestAnimationFrame(e)))},i}t.factory("FioiEditor2Signals",e),e.$inject=["$rootScope"]}},{}],14:[function(t,e,n){e.exports=function(t){"use strict";function e(t,e,n,i){function o(t){this.id=t,this.title="Tab",this.buffers=[],this.languages=null,this.defaultLanguage=null}var r={},a={};return r.add=function(e){var n=i.freshId("t",e),r=a[n]=new o(n);return i.register(n,r),t.emitUpdate(),r},r.remove=function(e){var n=a[e];n.clear(),delete a[e],t.emitUpdate()},r.get=function(t){return a[t]},o.prototype.update=function(e,i){return"tabset"in e&&(this.tabset=e.tabset),"title"in e&&(this.title=e.title),"languages"in e&&(this.languages=e.languages),"defaultLanguage"in e&&(this.defaultLanguage=e.defaultLanguage),i||(n.addEvent([this.id,"u",e]),t.emitUpdate()),this},o.prototype.addBuffer=function(i){var o=e.add(i).update({tab:this,language:this.getDefaultLanguage()});return this.buffers.push(o.id),n.addEvent([this.id,"n",o.id]),t.emitUpdate(),o},o.prototype.getLanguages=function(){return this.languages?this.languages:this.tabset.getLanguages()},o.prototype.getDefaultLanguage=function(){return this.defaultLanguage?this.defaultLanguage:this.tabset.getDefaultLanguage()},o.prototype.getBuffer=function(t){var n=this.buffers[t||0];return n?e.get(n):n},o.prototype.focus=function(){var t=this.getBuffer();t&&t.focus()},o.prototype.dump=function(){return{title:this.title,buffers:_.map(this.buffers,function(t){var n=e.get(t);return n.pullFromControl(),{id:t,dump:n.dump()}})}},o.prototype.load=function(e){return this.title=e.title,_.each(e.buffers,function(t){this.addBuffer(t.id).load(t.dump)}.bind(this)),t.emitUpdate(),this},o.prototype.clear=function(){this.title=null,_.each(this.buffers,function(t){e.remove(t)}),this.buffers=[],t.emitUpdate()},o.prototype.replayEvent=function(t){switch(t[2]){case"n":this.addBuffer(t[3]);break;default:console.log("unhandled Tab event",t)}},r}t.factory("FioiEditor2Tabs",e),e.$inject=["FioiEditor2Signals","FioiEditor2Buffers","FioiEditor2Recorder","FioiEditor2Registry"]}},{}],15:[function(t,e,n){e.exports=function(t){"use strict";function e(t,e,n,i){function o(t){this.id=t,this.buffersPerTab=1,this.titlePrefix="Tab",this.languages=[{id:"text",label:"Text",ext:"txt"}],this.defaultLanguage="text",this.tabs={},this.tabIds=[],this.activeTabId=null}var r={},a={};return r.add=function(e){var n=i.freshId("ts",e),r=a[n]=new o(n);return i.register(n,r),t.emitUpdate(),r},r.get=function(t){return a[t]},r.find=function(t){return _.find(a,function(e,n){return e.name===t})},r.clear=function(){return _.each(a,function(t){t.clear()}),a={},t.emitUpdate(),this},r.dump=function(){return _.mapValues(a,function(t,e){return t.dump()})},r.load=function(e){return this.clear(),_.each(e,function(t,e){r.add(e).load(t)}),t.emitUpdate(),this},o.prototype.update=function(e,i){return"name"in e&&(this.name=e.name),"titlePrefix"in e&&(this.titlePrefix=e.titlePrefix),"languages"in e&&(this.languages=e.languages),"defaultLanguage"in e&&(this.defaultLanguage=e.defaultLanguage),"activeTabId"in e&&(this.activeTabId=e.activeTabId),"buffersPerTab"in e&&(this.buffersPerTab=e.buffersPerTab),i||(n.addEvent([this.id,"u",e]),t.emitUpdate()),this},o.prototype.addTab=function(i){var o=e.add(i).update({tabset:this,title:this._unusedTabTitle()}),r=o.id;if(this.tabs[r]=o,this.tabIds.push(r),!i){this.activeTabId=r,n.addEvent([this.id,"n",r]);for(var a=0;a<this.buffersPerTab;a+=1)o.addBuffer()}return t.emitUpdate(),o},o.prototype.removeTab=function(e){var n=_.indexOf(this.tabIds,e);-1!==n&&(this.tabIds.splice(n,1),delete this.tabs[e],this.activeTabId===e&&(n==this.tabIds.length&&(n-=1),-1!==n?this.activeTabId=this.tabIds[n]:this.activeTabId=null),t.emitUpdate())},o.prototype.clear=function(){_.each(this.tabIds,function(t){e.remove(t)}),this.tabs={},this.tabIds=[],this.activeTabId=null,t.emitUpdate()},o.prototype.dump=function(){var t=this.tabs,e={tabs:_.map(this.tabIds,function(e){return{id:e,dump:t[e].dump()}}),activeTabId:this.activeTabId};return this.name&&(e.name=this.name),e},o.prototype.load=function(e){return e.name&&(this.name=e.name),_.each(e.tabs,function(t){this.addTab(t.id).load(t.dump)}.bind(this)),this.activeTabId=e.activeTabId,t.emitUpdate(),this},o.prototype.getTabs=function(){var t=this.tabs;return _.map(this.tabIds,function(e){return t[e]})},o.prototype.getActiveTab=function(){return this.activeTabId&&this.tabs[this.activeTabId]},o.prototype.getLanguages=function(){return this.languages},o.prototype.getDefaultLanguage=function(){return this.defaultLanguage},o.prototype.focus=function(){var t=this.getActiveTab();t&&t.focus()},o.prototype.replayEvent=function(t){switch(t[2]){case"u":this.update(t[3]);break;case"n":var e=this.addTab(t[3]);this.activeTabId=e.id;break;default:console.log("unhandled Tabset event",t)}},o.prototype._unusedTabTitle=function(){var t=1,e={};for(_.each(this.tabs,function(t,n){e[t.title]=!0});;){var n=this.titlePrefix+t;if(!(n in e))return n;t+=1}},r}t.factory("FioiEditor2Tabsets",e),e.$inject=["FioiEditor2Signals","FioiEditor2Tabs","FioiEditor2Recorder","FioiEditor2Registry"]}},{}]},{},[7]);
//# sourceMappingURL=fioi-editor2.min.js.map