diff --git a/apps/common/main/lib/component/Button.js b/apps/common/main/lib/component/Button.js index 42856bd49..b33afb11a 100644 --- a/apps/common/main/lib/component/Button.js +++ b/apps/common/main/lib/component/Button.js @@ -134,7 +134,9 @@ define([ '
' + templateBtnIcon + '
' + - '<%= caption %>' + + '
' + + '<%= caption %>' + + '
' + ''; var templateHugeMenuCaption = @@ -145,7 +147,7 @@ define([ '' + '
' + '<%= caption %>' + - '' + + '' + '
' + '' + ''; @@ -157,7 +159,7 @@ define([ '' + '' + ''; @@ -198,7 +200,9 @@ define([ '', '', '<% } else { %>', @@ -208,7 +212,7 @@ define([ '<%= caption %>', '', '', '', diff --git a/apps/common/main/lib/component/Menu.js b/apps/common/main/lib/component/Menu.js index cf6917e6a..c28a62d3d 100644 --- a/apps/common/main/lib/component/Menu.js +++ b/apps/common/main/lib/component/Menu.js @@ -454,6 +454,7 @@ define([ Common.UI.Menu.Manager.hideAll(); if ( $(e.currentTarget).closest('li').hasClass('dropdown-submenu')) { e.stopPropagation(); + return false; } } else if (e.keyCode == Common.UI.Keys.UP || e.keyCode == Common.UI.Keys.DOWN) { this.fromKeyDown = true; diff --git a/apps/common/main/lib/component/Mixtbar.js b/apps/common/main/lib/component/Mixtbar.js index 0798a0fe9..f77b120b9 100644 --- a/apps/common/main/lib/component/Mixtbar.js +++ b/apps/common/main/lib/component/Mixtbar.js @@ -73,7 +73,7 @@ define([ if ( this.isFolded ) { if ( $(e.target).parents('.toolbar').length ){ } else { - this.collapseToolbar(); + this.collapse(); } } } @@ -122,10 +122,10 @@ define([ if ( this.isFolded ) { if (!optsFold.$box) optsFold.$box = me.$el.find('.box-controls'); - optsFold.$bar.addClass('folded'); + optsFold.$bar.toggleClass('expanded', true).addClass('folded'); optsFold.$box.on({ mouseleave: function (e) { - optsFold.timer = setTimeout(me.collapseToolbar, optsFold.timeout); + optsFold.timer = setTimeout(me.collapse, optsFold.timeout); }, mouseenter: function (e) { clearTimeout(optsFold.timer); @@ -163,7 +163,7 @@ define([ } }, - collapseToolbar: function() { + collapse: function() { if ( this.isFolded && optsFold.$bar ) { optsFold.$bar.removeClass('expanded'); optsFold.$bar.find('.tabs .ribtab').removeClass('active'); @@ -172,11 +172,11 @@ define([ Common.UI.Menu.Manager.hideAll(); }, - expandToolbar: function() { + expand: function() { clearTimeout(optsFold.timer); optsFold.$bar.addClass('expanded'); - optsFold.timer = setTimeout(this.collapseToolbar, optsFold.timeout); + optsFold.timer = setTimeout(this.collapse, optsFold.timeout); }, onResize: function(e) { @@ -193,7 +193,7 @@ define([ if ( !tab ) { onShowFullviewPanel.call(this, false); - if ( this.isFolded ) { /*this.collapseToolbar();*/ } + if ( this.isFolded ) { this.collapse(); } else tab = this.lastPanel; } @@ -207,17 +207,17 @@ define([ panel.addClass('active'); } + if ( panel.length ) { + if ( this.isFolded ) this.expand(); + } else { + onShowFullviewPanel.call(this, true); + if ( this.isFolded ) this.collapse(); + } + var $tp = this.$tabs.find('> a[data-tab=' + tab + ']').parent(); if ( $tp.length ) { $tp.addClass('active'); } - - if ( panel.length ) { - if ( this.isFolded ) this.expandToolbar(); - } else { - onShowFullviewPanel.call(this, true); - if ( this.isFolded ) this.collapseToolbar(); - } } }, diff --git a/apps/common/main/lib/view/Header.js b/apps/common/main/lib/view/Header.js index 3a6b03b91..ab6ccfc28 100644 --- a/apps/common/main/lib/view/Header.js +++ b/apps/common/main/lib/view/Header.js @@ -72,7 +72,11 @@ define([ var templateRightBox = '
' + '' + '<%= textSaveEnd %>' + - '
' + + '
' + + '
' + + '
' + + '
' + + '
' + // '' + ''+ + '
' + + '
' + '
' + '
' + '
'; @@ -168,7 +174,6 @@ define([ $btnUsers.find('.caption') .css({'font-size': (count > 1 ? '12px' : '14px'), - 'font-weight': (count > 1 ? 'bold' : 'normal'), 'margin-top': (count > 1 ? '0' : '-1px')}) .html(count > 1 ? count : '+'); @@ -202,7 +207,7 @@ define([ var me = this; me.btnGoBack.updateHint(me.textBack); me.btnGoBack.on('click', function (e) { - me.fireEvent('go:back', ['page:new']); + Common.NotificationCenter.trigger('goback', true); }); if ( me.logo ) @@ -247,6 +252,22 @@ define([ $saveStatus.addClass('locked'); } } + + if ( !mode.isEdit ) { + if ( me.btnDownload ) { + me.btnDownload.updateHint('Download document'); + me.btnDownload.on('click', function (e) { + me.fireEvent('downloadas', ['original']); + }); + } + + if ( me.btnPrint ) { + me.btnDownload.updateHint('Print'); + me.btnPrint.on('click', function (e) { + me.fireEvent('print', me); + }); + } + } } return { @@ -279,7 +300,7 @@ define([ me.btnGoBack = new Common.UI.Button({ id: 'btn-goback', - cls: 'btn-toolbar', + cls: 'btn-header', iconCls: 'svgicon svg-btn-goback', split: true }); @@ -291,7 +312,6 @@ define([ reset : onResetUsers }); - Common.NotificationCenter.on('app:ready', function(mode) { Common.Utils.asyncCall(onAppReady, me, mode); }); @@ -335,6 +355,28 @@ define([ } } + if ( !config.isEdit ) { + if ( (config.canDownload || config.canDownloadOrigin) && !config.isOffline ) { + this.btnDownload = new Common.UI.Button({ + id: 'btn-download', + cls: 'btn-header', + iconCls: 'svgicon svg-btn-download' + }); + + this.btnDownload.render($html.find('#slot-hbtn-download')); + } + + if ( config.canPrint ) { + this.btnPrint = new Common.UI.Button({ + id: 'btn-goback', + cls: 'btn-header', + iconCls: 'svgicon svg-btn-print' + }); + + this.btnPrint.render($html.find('#slot-hbtn-print')); + } + } + if ( this.documentCaption ) { $html.find('#rib-doc-name').text( Common.Utils.String.htmlEncode(this.documentCaption) ); diff --git a/apps/common/main/resources/img/controls/toolbarbig.png b/apps/common/main/resources/img/controls/toolbarbig.png index 5982df154..a61829eb0 100644 Binary files a/apps/common/main/resources/img/controls/toolbarbig.png and b/apps/common/main/resources/img/controls/toolbarbig.png differ diff --git a/apps/common/main/resources/img/header/buttons.svg b/apps/common/main/resources/img/header/buttons.svg new file mode 100644 index 000000000..28656d8d3 --- /dev/null +++ b/apps/common/main/resources/img/header/buttons.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/common/main/resources/less/buttons.less b/apps/common/main/resources/less/buttons.less index 4e2f3a549..0a2535678 100644 --- a/apps/common/main/resources/less/buttons.less +++ b/apps/common/main/resources/less/buttons.less @@ -1,3 +1,5 @@ +@x-huge-btn-height: 46px; + .btn { border-radius: 1px; color: @gray-deep; @@ -25,7 +27,7 @@ } &.x-huge { - .btnsize(45px); + .btnsize(@x-huge-btn-height); } &[disabled] { @@ -98,12 +100,11 @@ } } - &.x-huge, - .x-huge { + &.x-huge { @icon-size: 26px; min-width: 45px; - height: 45px; + height: @x-huge-btn-height; img { height: 27px; @@ -127,8 +128,6 @@ align-items: center; justify-content: center; line-height: 20px; - max-height: 26px; - height: 26px; } .inner-box-caption { @@ -290,10 +289,8 @@ } > .dropdown-toggle:first-child { - padding: 0 2px 0 0; - - .caption { - padding-right: 4px; + .inner-box-caret { + padding: 0 2px; } } diff --git a/apps/common/main/resources/less/header.less b/apps/common/main/resources/less/header.less index 7ba9d0cd2..c9637523e 100644 --- a/apps/common/main/resources/less/header.less +++ b/apps/common/main/resources/less/header.less @@ -28,13 +28,13 @@ .toolbar { .extra { - .elset:not(:first-child) { - margin-top: 0; - } - svg.icon { fill: #fff; } + + .btn-slot { + width: auto; + } } } @@ -51,8 +51,8 @@ } &.right { + flex-grow: 1; min-width: 100px; - padding-right: 12px; .desktop { padding: 10px 0; @@ -68,10 +68,17 @@ color: #fff; } - .btn-toolbar { - &:hover, &:active { + .btn-users, + .btn-header { + &:hover { &:not(.disabled) { - background-color: transparent; + background-color: rgba(255,255,255,0.2); + } + } + + &:active { + &:not(.disabled) { + background-color: rgba(0,0,0,0.2); } } } @@ -82,7 +89,7 @@ text-overflow: ellipsis; overflow: hidden; min-width: 50px; - text-align: right; + text-align: center; } #rib-save-status { @@ -118,22 +125,17 @@ } #tlb-box-users { - display: inline-block; - margin-right: 10px; + height: @height-tabs; } #tlb-change-rights { margin-top: 15px; } -#slot-btn-back { - float: right; -} - .btn-users { display: inline-flex; cursor: pointer; - padding: 0 7px; + padding: 6px 12px; .icon { display: inline-block; @@ -204,3 +206,19 @@ } } } + +.hedset { + font-size: 0; +} + +.btn-header { + border: 0 none; + height: @height-tabs; + background-color: transparent; + padding: 6px 12px; + + .icon { + width: 20px; + height: 20px; + } +} \ No newline at end of file diff --git a/apps/common/main/resources/less/toolbar.less b/apps/common/main/resources/less/toolbar.less index c2f52d574..7b87d4548 100644 --- a/apps/common/main/resources/less/toolbar.less +++ b/apps/common/main/resources/less/toolbar.less @@ -52,7 +52,7 @@ } .tabs { - flex-grow: 1; + //flex-grow: 1; background-color: @tabs-bg-color; position: relative; overflow: hidden; @@ -171,6 +171,7 @@ vertical-align: middle; white-space: nowrap; padding-left: 12px; + font-size: 0; &:last-child { padding-right: 12px; @@ -207,10 +208,6 @@ width: 20px; height: auto; - &:not(:first-child) { - margin-left: 1px; - } - &.split { width: 31px; } @@ -288,3 +285,14 @@ .button-normal-icon(review-next, 16, @toolbar-big-icon-size); .button-normal-icon(review-prev, 17, @toolbar-big-icon-size); .button-normal-icon(btn-dropcap, 18, @toolbar-big-icon-size); +.button-normal-icon(~'x-huge .btn-pagebreak', 19, @toolbar-big-icon-size); + +.button-normal-icon(btn-pageorient, 21, @toolbar-big-icon-size); +.button-normal-icon(btn-pagemargins, 22, @toolbar-big-icon-size); +.button-normal-icon(btn-pagesize, 23, @toolbar-big-icon-size); +.button-normal-icon(btn-columns, 24, @toolbar-big-icon-size); +.button-normal-icon(btn-img-align, 25, @toolbar-big-icon-size); +.button-normal-icon(btn-img-group, 26, @toolbar-big-icon-size); +.button-normal-icon(btn-img-bkwd, 27, @toolbar-big-icon-size); +.button-normal-icon(btn-img-frwd, 28, @toolbar-big-icon-size); +.button-normal-icon(btn-img-wrap, 29, @toolbar-big-icon-size); diff --git a/apps/documenteditor/main/app/controller/Main.js b/apps/documenteditor/main/app/controller/Main.js index 9fae3dfc1..5212e6863 100644 --- a/apps/documenteditor/main/app/controller/Main.js +++ b/apps/documenteditor/main/app/controller/Main.js @@ -593,7 +593,7 @@ define([ this.setLongActionView(action) } else { var me = this; - if (id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) { + if ((id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) && !this.appOptions.isOffline) { if (this._state.fastCoauth && this._state.usersCount>1) { me._state.timerSave = setTimeout(function () { me.getApplication().getController('Statusbar').setStatusCaption(me.textChangesSaved, false, 3000); @@ -631,8 +631,8 @@ define([ case Asc.c_oAscAsyncAction['ForceSaveButton']: clearTimeout(this._state.timerSave); force = true; - title = this.saveTitleText; - text = this.saveTextText; + title = (!this.appOptions.isOffline) ? this.saveTitleText : ''; + text = (!this.appOptions.isOffline) ? this.saveTextText : ''; break; case Asc.c_oAscAsyncAction['LoadDocumentFonts']: diff --git a/apps/documenteditor/main/app/controller/Toolbar.js b/apps/documenteditor/main/app/controller/Toolbar.js index 54b2cae73..c195596da 100644 --- a/apps/documenteditor/main/app/controller/Toolbar.js +++ b/apps/documenteditor/main/app/controller/Toolbar.js @@ -112,6 +112,12 @@ define([ 'FileMenu': { 'menu:hide': this.onFileMenu.bind(this, 'hide'), 'menu:show': this.onFileMenu.bind(this, 'show') + }, + 'Common.Views.Header': { + 'print': this.onPrint.bind(this), + 'downloadas': function (opts) { + this.api.asc_DownloadOrigin(); + }.bind(this) } }); @@ -347,7 +353,7 @@ define([ }, onContextMenu: function() { - this.toolbar.collapseToolbar(); + this.toolbar.collapse(); }, onApiFontSize: function(size) { diff --git a/apps/documenteditor/main/app/controller/Viewport.js b/apps/documenteditor/main/app/controller/Viewport.js index 7cbe4cf05..fe6907548 100644 --- a/apps/documenteditor/main/app/controller/Viewport.js +++ b/apps/documenteditor/main/app/controller/Viewport.js @@ -77,12 +77,6 @@ define([ 'view:compact' : function (toolbar, state) { me.viewport.vlayout.panels[0].height = state ? 32 : 32+67; } - }, - 'Common.Views.Header': { - 'go:back': function (opts) { - Common.NotificationCenter.trigger('goback', /new/.test(opts)); - // Common.component.Analytics.trackEvent('Back to Folder'); - } } }); }, diff --git a/apps/documenteditor/main/app/template/Toolbar.template b/apps/documenteditor/main/app/template/Toolbar.template index 43ac7fd15..ded87a9b2 100644 --- a/apps/documenteditor/main/app/template/Toolbar.template +++ b/apps/documenteditor/main/app/template/Toolbar.template @@ -145,51 +145,19 @@
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
-
+ + + + +
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
-
+ + + + +
diff --git a/apps/documenteditor/main/app/view/Toolbar.js b/apps/documenteditor/main/app/view/Toolbar.js index 7374ef304..26e56cdaa 100644 --- a/apps/documenteditor/main/app/view/Toolbar.js +++ b/apps/documenteditor/main/app/view/Toolbar.js @@ -80,7 +80,7 @@ define([ Common.UI.Mixtbar.prototype.initialize.call(this, { template: _.template(template), tabs: [ - { caption: me.textTabFile, action: 'file'}, + { caption: me.textTabFile, action: 'file', extcls: 'canedit'}, { caption: me.textTabHome, action: 'home', extcls: 'canedit'}, { caption: me.textTabInsert, action: 'ins', extcls: 'canedit'}, { caption: me.textTabLayout, action: 'layout', extcls: 'canedit'} @@ -608,7 +608,7 @@ define([ this.btnColumns = new Common.UI.Button({ id: 'tlb-btn-columns', - cls: 'btn-toolbar', + cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-columns', caption: me.capBtnColumns, menu: new Common.UI.Menu({ @@ -658,7 +658,7 @@ define([ this.btnPageOrient = new Common.UI.Button({ id: 'tlb-btn-pageorient', - cls: 'btn-toolbar', + cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-pageorient', caption: me.capBtnPageOrient, menu: new Common.UI.Menu({ @@ -694,7 +694,7 @@ define([ this.btnPageMargins = new Common.UI.Button({ id: 'tlb-btn-pagemargins', - cls: 'btn-toolbar', + cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-pagemargins', caption: me.capBtnMargins, menu: new Common.UI.Menu({ @@ -753,7 +753,7 @@ define([ this.btnPageSize = new Common.UI.Button({ id: 'tlb-btn-pagesize', - cls: 'btn-toolbar', + cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-pagesize', caption: me.capBtnPageSize, menu: new Common.UI.Menu({ @@ -967,34 +967,34 @@ define([ this.toolbarControls.push(this.btnAdvSettings); me.btnImgAlign = new Common.UI.Button({ - cls: 'btn-toolbar', + cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-img-align', caption: me.capImgAlign, menu: true }); me.btnImgGroup = new Common.UI.Button({ - cls: 'btn-toolbar', + cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-img-group', caption: me.capImgGroup, menu: true }); me.btnImgForward = new Common.UI.Button({ - cls: 'btn-toolbar', + cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-img-frwd', caption: me.capImgForward, split: true, menu: true }); me.btnImgBackward = new Common.UI.Button({ - cls: 'btn-toolbar', + cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-img-bkwd', caption: me.capImgBackward, split: true, menu: true }); me.btnImgWrapping = new Common.UI.Button({ - cls: 'btn-toolbar', + cls: 'btn-toolbar x-huge icon-top', iconCls: 'btn-img-wrap', caption: me.capImgWrapping, menu: true @@ -1205,7 +1205,7 @@ define([ }); if ( me.isCompactView ) - me.setFolded(true); else + me.setFolded(true), me.collapse(); else me.setTab('home'); var top = Common.localStorage.getItem("de-pgmargins-top"), @@ -1304,8 +1304,11 @@ define([ var $slots = $host.find('.btn-slot.btn-pagebreak'); $slots.each(function(index, el) { + var _cls = 'btn-toolbar'; + /x-huge/.test(el.className) && (_cls += ' x-huge icon-top'); + var button = new Common.UI.Button({ - cls: 'btn-toolbar', + cls: _cls, iconCls: 'btn-pagebreak', caption: me.capBtnInsPagebreak, split: true, diff --git a/apps/documenteditor/main/index.html b/apps/documenteditor/main/index.html index e96f89d26..1061a2bdc 100644 --- a/apps/documenteditor/main/index.html +++ b/apps/documenteditor/main/index.html @@ -260,24 +260,12 @@
- - - - - - - - - - - - - - - + + + diff --git a/apps/documenteditor/main/index.html.deploy b/apps/documenteditor/main/index.html.deploy index ab73ba9d4..4e8d56999 100644 --- a/apps/documenteditor/main/index.html.deploy +++ b/apps/documenteditor/main/index.html.deploy @@ -282,24 +282,7 @@ }; - - - - - - - - - - - - - - - +
diff --git a/apps/documenteditor/main/resources/img/toolbar/charttypes.png b/apps/documenteditor/main/resources/img/toolbar/charttypes.png index 1a809d63f..e13818e76 100644 Binary files a/apps/documenteditor/main/resources/img/toolbar/charttypes.png and b/apps/documenteditor/main/resources/img/toolbar/charttypes.png differ diff --git a/apps/documenteditor/main/resources/img/toolbar/charttypes@2x.png b/apps/documenteditor/main/resources/img/toolbar/charttypes@2x.png index fcd18de30..aac960d29 100644 Binary files a/apps/documenteditor/main/resources/img/toolbar/charttypes@2x.png and b/apps/documenteditor/main/resources/img/toolbar/charttypes@2x.png differ diff --git a/apps/documenteditor/main/resources/less/toolbar.less b/apps/documenteditor/main/resources/less/toolbar.less index 583d10a67..f3dcb481e 100644 --- a/apps/documenteditor/main/resources/less/toolbar.less +++ b/apps/documenteditor/main/resources/less/toolbar.less @@ -229,19 +229,19 @@ } .surface-normal{ - background-position: -100px -200px; + background-position: 0px -300px; } .surface-wireframe{ - background-position: -100px -200px; + background-position: -50px -300px; } .contour-normal{ - background-position: -100px -200px; + background-position: -100px -300px; } .contour-wireframe{ - background-position: -100px -200px; + background-position: -150px -300px; } @toolbar-icon-size: 20px; @@ -266,8 +266,8 @@ .button-normal-icon(btn-setmarkers, 21, @toolbar-icon-size); .button-normal-icon(btn-multilevels, 22, @toolbar-icon-size); .button-normal-icon(btn-numbering, 23, @toolbar-icon-size); -.button-normal-icon(btn-pageorient, 24, @toolbar-icon-size); -.button-normal-icon(btn-pagesize, 25, @toolbar-icon-size); +//.button-normal-icon(btn-pageorient, 24, @toolbar-icon-size); +//.button-normal-icon(btn-pagesize, 25, @toolbar-icon-size); .button-normal-icon(btn-paste, 26, @toolbar-icon-size); .button-normal-icon(btn-print, 27, @toolbar-icon-size); .button-normal-icon(btn-redo, 28, @toolbar-icon-size); @@ -297,13 +297,13 @@ .button-normal-icon(mmerge-last, 72, @toolbar-icon-size); .button-normal-icon(mmerge-prev, 73, @toolbar-icon-size); .button-normal-icon(mmerge-first, 74, @toolbar-icon-size); -.button-normal-icon(btn-columns, 75, @toolbar-icon-size); -.button-normal-icon(btn-pagemargins, 76, @toolbar-icon-size); -.button-normal-icon(btn-img-frwd, 83, @toolbar-icon-size); -.button-normal-icon(btn-img-bkwd, 84, @toolbar-icon-size); -.button-normal-icon(btn-img-wrap, 85, @toolbar-icon-size); -.button-normal-icon(btn-img-group, 86, @toolbar-icon-size); -.button-normal-icon(btn-img-align, 87, @toolbar-icon-size); +//.button-normal-icon(btn-columns, 75, @toolbar-icon-size); +//.button-normal-icon(btn-pagemargins, 76, @toolbar-icon-size); +//.button-normal-icon(btn-img-frwd, 83, @toolbar-icon-size); +//.button-normal-icon(btn-img-bkwd, 84, @toolbar-icon-size); +//.button-normal-icon(btn-img-wrap, 85, @toolbar-icon-size); +//.button-normal-icon(btn-img-group, 86, @toolbar-icon-size); +//.button-normal-icon(btn-img-align, 87, @toolbar-icon-size); .button-normal-icon(btn-goback, 88, @toolbar-icon-size); //.button-normal-icon(btn-insertimage, 17, @toolbar-icon-size); diff --git a/apps/documenteditor/mobile/app/controller/Main.js b/apps/documenteditor/mobile/app/controller/Main.js index 48cb17f9e..64ddf5482 100644 --- a/apps/documenteditor/mobile/app/controller/Main.js +++ b/apps/documenteditor/mobile/app/controller/Main.js @@ -482,8 +482,6 @@ define([ me.api.asc_setSpellCheck(false); // don't use spellcheck for mobile mode - Common.localStorage.setItem("de-settings-showsnaplines", me.api.get_ShowSnapLines() ? 1 : 0); - me.api.asc_registerCallback('asc_onStartAction', _.bind(me.onLongActionBegin, me)); me.api.asc_registerCallback('asc_onEndAction', _.bind(me.onLongActionEnd, me)); me.api.asc_registerCallback('asc_onCoAuthoringDisconnect', _.bind(me.onCoAuthoringDisconnect, me)); @@ -541,6 +539,8 @@ define([ me.api.zoomFitToWidth(); } + DE.getController('Toolbar').activateControls(); + if (me._state.licenseWarning) { value = Common.localStorage.getItem("de-license-warning"); value = (value!==null) ? parseInt(value) : 0; diff --git a/apps/documenteditor/mobile/app/controller/Toolbar.js b/apps/documenteditor/mobile/app/controller/Toolbar.js index 3de97ec31..2da2aca06 100644 --- a/apps/documenteditor/mobile/app/controller/Toolbar.js +++ b/apps/documenteditor/mobile/app/controller/Toolbar.js @@ -157,6 +157,10 @@ define([ } }, + activateControls: function() { + $('#toolbar-edit, #toolbar-add, #toolbar-settings, #toolbar-search, #document-back').removeClass('disabled'); + }, + dlgLeaveTitleText : 'You leave the application', dlgLeaveMsgText : 'You have unsaved changes in this document. Click \'Stay on this Page\' to await the autosave of the document. Click \'Leave this Page\' to discard all the unsaved changes.', leaveButtonText : 'Leave this Page', diff --git a/apps/documenteditor/mobile/app/view/Toolbar.js b/apps/documenteditor/mobile/app/view/Toolbar.js index 36d32df7a..0af0270a3 100644 --- a/apps/documenteditor/mobile/app/view/Toolbar.js +++ b/apps/documenteditor/mobile/app/view/Toolbar.js @@ -92,6 +92,7 @@ define([ })); $('.view-main .navbar').on('addClass removeClass', _.bind(me.onDisplayMainNavbar, me)); + $('#toolbar-edit, #toolbar-add, #toolbar-settings, #toolbar-search, #document-back').addClass('disabled'); return me; }, diff --git a/apps/presentationeditor/main/app/controller/Main.js b/apps/presentationeditor/main/app/controller/Main.js index e195f8583..206abb901 100644 --- a/apps/presentationeditor/main/app/controller/Main.js +++ b/apps/presentationeditor/main/app/controller/Main.js @@ -413,7 +413,7 @@ define([ if (action) { this.setLongActionView(action) } else { - if (id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) { + if ((id==Asc.c_oAscAsyncAction['Save'] || id==Asc.c_oAscAsyncAction['ForceSaveButton']) && !this.appOptions.isOffline) { if (this._state.fastCoauth && this._state.usersCount>1) { var me = this; me._state.timerSave = setTimeout(function () { @@ -451,8 +451,8 @@ define([ case Asc.c_oAscAsyncAction['ForceSaveButton']: clearTimeout(this._state.timerSave); force = true; - // title = this.saveTitleText; - // text = this.saveTextText; + // title = (!this.appOptions.isOffline) ? this.saveTitleText : ''; + // text = (!this.appOptions.isOffline) ? this.saveTextText : ''; break; case Asc.c_oAscAsyncAction['ForceSaveTimeout']: diff --git a/apps/presentationeditor/main/app/controller/Viewport.js b/apps/presentationeditor/main/app/controller/Viewport.js index 2288b2ace..d35e86f09 100644 --- a/apps/presentationeditor/main/app/controller/Viewport.js +++ b/apps/presentationeditor/main/app/controller/Viewport.js @@ -79,12 +79,6 @@ define([ me.viewport.vlayout.panels[0].height = state ? 32 : 32+67; } }, - 'Common.Views.Header': { - 'go:back': function (opts) { - Common.NotificationCenter.trigger('goback', /new/.test(opts)); - // Common.component.Analytics.trackEvent('Back to Folder'); - } - }, // Events generated by main view 'Viewport': { diff --git a/apps/presentationeditor/main/app/view/Toolbar.js b/apps/presentationeditor/main/app/view/Toolbar.js index 520bbca01..a73186995 100644 --- a/apps/presentationeditor/main/app/view/Toolbar.js +++ b/apps/presentationeditor/main/app/view/Toolbar.js @@ -138,7 +138,7 @@ define([ Common.UI.Mixtbar.prototype.initialize.call(this, { template: _.template(template), tabs: [ - { caption: 'File', action: 'file'}, + { caption: 'File', action: 'file', extcls: 'canedit'}, { caption: 'Home', action: 'home', extcls: 'canedit'}, { caption: 'Insert', action: 'ins', extcls: 'canedit'} ]} diff --git a/apps/presentationeditor/main/index.html b/apps/presentationeditor/main/index.html index 67c13157c..dceb753f4 100644 --- a/apps/presentationeditor/main/index.html +++ b/apps/presentationeditor/main/index.html @@ -259,26 +259,12 @@
- - - - - - - - - - - - - - - + + + diff --git a/apps/presentationeditor/main/index.html.deploy b/apps/presentationeditor/main/index.html.deploy index 1b3547397..827f55a14 100644 --- a/apps/presentationeditor/main/index.html.deploy +++ b/apps/presentationeditor/main/index.html.deploy @@ -355,26 +355,7 @@ }; - - - - - - - - - - - - - - - +
diff --git a/apps/presentationeditor/main/resources/img/toolbar/charttypes.png b/apps/presentationeditor/main/resources/img/toolbar/charttypes.png index 1a809d63f..e13818e76 100644 Binary files a/apps/presentationeditor/main/resources/img/toolbar/charttypes.png and b/apps/presentationeditor/main/resources/img/toolbar/charttypes.png differ diff --git a/apps/presentationeditor/main/resources/img/toolbar/charttypes@2x.png b/apps/presentationeditor/main/resources/img/toolbar/charttypes@2x.png index fcd18de30..aac960d29 100644 Binary files a/apps/presentationeditor/main/resources/img/toolbar/charttypes@2x.png and b/apps/presentationeditor/main/resources/img/toolbar/charttypes@2x.png differ diff --git a/apps/presentationeditor/main/resources/less/toolbar.less b/apps/presentationeditor/main/resources/less/toolbar.less index 37c1aa167..95ff31f34 100644 --- a/apps/presentationeditor/main/resources/less/toolbar.less +++ b/apps/presentationeditor/main/resources/less/toolbar.less @@ -223,19 +223,19 @@ } .surface-normal{ - background-position: -100px -200px; + background-position: 0px -300px; } .surface-wireframe{ - background-position: -100px -200px; + background-position: -50px -300px; } .contour-normal{ - background-position: -100px -200px; + background-position: -100px -300px; } .contour-wireframe{ - background-position: -100px -200px; + background-position: -150px -300px; } @toolbar-icon-size: 20px; diff --git a/apps/presentationeditor/mobile/app/controller/Main.js b/apps/presentationeditor/mobile/app/controller/Main.js index 3ec2750a0..4573fa85e 100644 --- a/apps/presentationeditor/mobile/app/controller/Main.js +++ b/apps/presentationeditor/mobile/app/controller/Main.js @@ -456,8 +456,6 @@ define([ var zf = (value!==null) ? parseInt(value) : (me.appOptions.customization && me.appOptions.customization.zoom ? parseInt(me.appOptions.customization.zoom) : -1); (zf == -1) ? me.api.zoomFitToPage() : ((zf == -2) ? me.api.zoomFitToWidth() : me.api.zoom(zf>0 ? zf : 100)); - Common.localStorage.setItem("pe-settings-showsnaplines", me.api.get_ShowSnapLines() ? 1 : 0); - me.api.asc_setSpellCheck(false); // don't use spellcheck for mobile mode me.api.asc_registerCallback('asc_onStartAction', _.bind(me.onLongActionBegin, me)); @@ -479,8 +477,6 @@ define([ me.api.asc_SetFastCollaborative(me._state.fastCoauth); /** coauthoring end **/ - Common.localStorage.setItem("pe-settings-showsnaplines", me.api.get_ShowSnapLines() ? 1 : 0); - if (me.appOptions.isEdit) { value = me._state.fastCoauth; // Common.localStorage.getItem("de-settings-autosave"); value = (!me._state.fastCoauth && value!==null) ? parseInt(value) : (me.appOptions.canCoAuthoring ? 1 : 0); @@ -508,6 +504,8 @@ define([ me.api.zoomFitToPage(); } + PE.getController('Toolbar').activateControls(); + if (me._state.licenseWarning) { value = Common.localStorage.getItem("de-license-warning"); value = (value!==null) ? parseInt(value) : 0; diff --git a/apps/presentationeditor/mobile/app/controller/Toolbar.js b/apps/presentationeditor/mobile/app/controller/Toolbar.js index 6364cb1ba..f9e5c197d 100644 --- a/apps/presentationeditor/mobile/app/controller/Toolbar.js +++ b/apps/presentationeditor/mobile/app/controller/Toolbar.js @@ -168,6 +168,10 @@ define([ } }, + activateControls: function() { + $('#toolbar-preview, #toolbar-settings, #toolbar-search, #document-back').removeClass('disabled'); + }, + dlgLeaveTitleText : 'You leave the application', dlgLeaveMsgText : 'You have unsaved changes in this document. Click \'Stay on this Page\' to await the autosave of the document. Click \'Leave this Page\' to discard all the unsaved changes.', leaveButtonText : 'Leave this Page', diff --git a/apps/presentationeditor/mobile/app/view/Toolbar.js b/apps/presentationeditor/mobile/app/view/Toolbar.js index bc73e504a..bc6e3891f 100644 --- a/apps/presentationeditor/mobile/app/view/Toolbar.js +++ b/apps/presentationeditor/mobile/app/view/Toolbar.js @@ -93,6 +93,7 @@ define([ })); $('.view-main .navbar').on('addClass removeClass', _.bind(me.onDisplayMainNavbar, me)); + $('#toolbar-preview, #toolbar-edit, #toolbar-add, #toolbar-settings, #toolbar-search, #document-back').addClass('disabled'); return me; }, diff --git a/apps/spreadsheeteditor/main/app/controller/Viewport.js b/apps/spreadsheeteditor/main/app/controller/Viewport.js index 16706e615..3d2095fc1 100644 --- a/apps/spreadsheeteditor/main/app/controller/Viewport.js +++ b/apps/spreadsheeteditor/main/app/controller/Viewport.js @@ -76,12 +76,6 @@ define([ 'view:compact' : function (toolbar, state) { me.viewport.vlayout.panels[0].height = state ? 32 : 32+67; } - }, - 'Common.Views.Header': { - 'go:back': function (opts) { - Common.NotificationCenter.trigger('goback', /new/.test(opts)); - // Common.component.Analytics.trackEvent('Back to Folder'); - } } }); diff --git a/apps/spreadsheeteditor/main/app/view/FormatSettingsDialog.js b/apps/spreadsheeteditor/main/app/view/FormatSettingsDialog.js index afb247f2f..50823c079 100644 --- a/apps/spreadsheeteditor/main/app/view/FormatSettingsDialog.js +++ b/apps/spreadsheeteditor/main/app/view/FormatSettingsDialog.js @@ -100,7 +100,7 @@ define([ '', '', '', - '', '', '', '', diff --git a/apps/spreadsheeteditor/main/app/view/Toolbar.js b/apps/spreadsheeteditor/main/app/view/Toolbar.js index da28e9417..98131c451 100644 --- a/apps/spreadsheeteditor/main/app/view/Toolbar.js +++ b/apps/spreadsheeteditor/main/app/view/Toolbar.js @@ -319,7 +319,7 @@ define([ Common.UI.Mixtbar.prototype.initialize.call(this, { template: _.template(template), tabs: [ - { caption: 'File'/*me.textTabFile*/, action: 'file'}, + { caption: 'File'/*me.textTabFile*/, action: 'file', extcls: 'canedit'}, { caption: 'Home'/*me.textTabHome*/, action: 'home', extcls: 'canedit'}, { caption: 'Insert'/*me.textTabInsert*/, action: 'ins', extcls: 'canedit'} ]} diff --git a/apps/spreadsheeteditor/main/index.html b/apps/spreadsheeteditor/main/index.html index 38f8b1ced..ebd1280e2 100644 --- a/apps/spreadsheeteditor/main/index.html +++ b/apps/spreadsheeteditor/main/index.html @@ -261,25 +261,12 @@
- - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - +
diff --git a/apps/spreadsheeteditor/main/resources/img/charttypes.png b/apps/spreadsheeteditor/main/resources/img/charttypes.png index accc8a021..e13818e76 100644 Binary files a/apps/spreadsheeteditor/main/resources/img/charttypes.png and b/apps/spreadsheeteditor/main/resources/img/charttypes.png differ diff --git a/apps/spreadsheeteditor/main/resources/img/charttypes@2x.png b/apps/spreadsheeteditor/main/resources/img/charttypes@2x.png index 40e98ea44..aac960d29 100644 Binary files a/apps/spreadsheeteditor/main/resources/img/charttypes@2x.png and b/apps/spreadsheeteditor/main/resources/img/charttypes@2x.png differ diff --git a/apps/spreadsheeteditor/main/resources/less/rightmenu.less b/apps/spreadsheeteditor/main/resources/less/rightmenu.less index 7197ac7e5..850feb4c7 100644 --- a/apps/spreadsheeteditor/main/resources/less/rightmenu.less +++ b/apps/spreadsheeteditor/main/resources/less/rightmenu.less @@ -314,19 +314,19 @@ button:active:not(.disabled) .btn-change-shape {background-position: -56px - } .surface-normal{ - background-position: -100px -200px; + background-position: 0px -300px; } .surface-wireframe{ - background-position: -100px -200px; + background-position: -50px -300px; } .contour-normal{ - background-position: -100px -200px; + background-position: -100px -300px; } .contour-wireframe{ - background-position: -100px -200px; + background-position: -150px -300px; } #table-combo-template .combo-dataview{ diff --git a/apps/spreadsheeteditor/mobile/app/controller/Main.js b/apps/spreadsheeteditor/mobile/app/controller/Main.js index f7f07d3ea..0f9d0798a 100644 --- a/apps/spreadsheeteditor/mobile/app/controller/Main.js +++ b/apps/spreadsheeteditor/mobile/app/controller/Main.js @@ -527,6 +527,7 @@ define([ mode: me.appOptions.isEdit ? 'edit' : 'view' }); + SSE.getController('Toolbar').activateControls(); if (me._state.licenseWarning) { value = Common.localStorage.getItem("sse-license-warning"); diff --git a/apps/spreadsheeteditor/mobile/app/controller/Toolbar.js b/apps/spreadsheeteditor/mobile/app/controller/Toolbar.js index e4bd62767..5ed1c7c18 100644 --- a/apps/spreadsheeteditor/mobile/app/controller/Toolbar.js +++ b/apps/spreadsheeteditor/mobile/app/controller/Toolbar.js @@ -191,6 +191,10 @@ define([ this.getView('Toolbar').disableControl(['add', 'edit'], islocked); }, + activateControls: function() { + $('#toolbar-settings, #toolbar-search, #document-back').removeClass('disabled'); + }, + dlgLeaveTitleText : 'You leave the application', dlgLeaveMsgText : 'You have unsaved changes in this document. Click \'Stay on this Page\' to await the autosave of the document. Click \'Leave this Page\' to discard all the unsaved changes.', leaveButtonText : 'Leave this Page', diff --git a/apps/spreadsheeteditor/mobile/app/view/Toolbar.js b/apps/spreadsheeteditor/mobile/app/view/Toolbar.js index aff1c023f..a6f1b8e93 100644 --- a/apps/spreadsheeteditor/mobile/app/view/Toolbar.js +++ b/apps/spreadsheeteditor/mobile/app/view/Toolbar.js @@ -82,6 +82,7 @@ define([ })); $('.view-main .navbar').on('addClass removeClass', _.bind(me.onDisplayMainNavbar, me)); + $('#toolbar-edit, #toolbar-add, #toolbar-settings, #toolbar-search, #document-back').addClass('disabled'); this.$btnEdit = $el.find('#toolbar-edit'); this.$btnAdd = $el.find('#toolbar-add'); diff --git a/build/Gruntfile.js b/build/Gruntfile.js index e4021d4b2..d10362add 100644 --- a/build/Gruntfile.js +++ b/build/Gruntfile.js @@ -23,6 +23,8 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-htmlmin'); grunt.loadNpmTasks('grunt-text-replace'); grunt.loadNpmTasks('grunt-mocha'); + grunt.loadNpmTasks('grunt-inline'); + grunt.loadNpmTasks('grunt-svgmin'); function doRegisterTask(name, callbackConfig) { return grunt.registerTask(name + '-init', function() { @@ -142,7 +144,12 @@ module.exports = function(grunt) { options: { force: true }, - files: packageFile['main']['clean'] + prebuild: { + src: packageFile['main']['clean'] + }, + postbuild: { + src: packageFile.main.svgicons.clean + } }, less: { @@ -210,6 +217,24 @@ module.exports = function(grunt) { 'index-page': { files: packageFile['main']['copy']['index-page'] } + }, + + inline: { + dist: { + src: packageFile.main.copy['index-page'][0].dest, + dest: packageFile.main.copy['index-page'][0].dest + } + }, + + svgmin: { + options: { + plugins: [{ + cleanupIDs: false + }] + }, + dist: { + files: packageFile.main.svgicons.common + } } }); }); @@ -375,8 +400,8 @@ module.exports = function(grunt) { grunt.registerTask('deploy-jsziputils', ['jsziputils-init', 'clean', 'copy']); grunt.registerTask('deploy-requirejs', ['requirejs-init', 'clean', 'uglify']); - grunt.registerTask('deploy-app-main', ['main-app-init', 'clean', 'imagemin', 'less', 'requirejs', 'concat', - 'copy', 'replace:writeVersion']); + grunt.registerTask('deploy-app-main', ['main-app-init', 'clean:prebuild', 'imagemin', 'less', 'requirejs', 'concat', + 'copy', 'svgmin', 'inline', 'replace:writeVersion', 'clean:postbuild']); grunt.registerTask('deploy-app-mobile', ['mobile-app-init', 'clean:deploy', 'cssmin', 'copy:template-backup', 'htmlmin', 'requirejs', 'concat', 'copy:template-restore', diff --git a/build/common.json b/build/common.json index 0a7255f78..bbe9f8883 100644 --- a/build/common.json +++ b/build/common.json @@ -1,7 +1,7 @@ { "name": "common", "version": "4.3.0", - "build": 1, + "build": 32, "homepage": "http://www.onlyoffice.com", "private": true, "sdk": { diff --git a/build/documenteditor.json b/build/documenteditor.json index 553082c2f..c630b14bb 100644 --- a/build/documenteditor.json +++ b/build/documenteditor.json @@ -1,7 +1,7 @@ { "name": "documenteditor", "version": "4.3.0", - "build": 1112, + "build": 1143, "homepage": "http://www.onlyoffice.com", "private": true, "main": { @@ -164,6 +164,19 @@ "dest": "../deploy/web-apps/apps/documenteditor/main/index.html" } ] + }, + "svgicons": { + "common": [ + { + "expand": true, + "cwd": "../apps/common/main/resources/img", + "src": "**/*.svg", + "dest": "../deploy/web-apps/apps/common/main/resources/img" + } + ], + "clean": [ + "../deploy/web-apps/apps/common" + ] } }, "mobile": { diff --git a/build/presentationeditor.json b/build/presentationeditor.json index d87eab13f..c8f72f99e 100644 --- a/build/presentationeditor.json +++ b/build/presentationeditor.json @@ -1,7 +1,7 @@ { "name": "presentationeditor", "version": "4.3.0", - "build": 774, + "build": 776, "homepage": "http://www.onlyoffice.com", "private": true, "main": { @@ -164,6 +164,19 @@ "dest": "../deploy/web-apps/apps/presentationeditor/main/index.html" } ] + }, + "svgicons": { + "common": [ + { + "expand": true, + "cwd": "../apps/common/main/resources/img", + "src": "**/*.svg", + "dest": "../deploy/web-apps/apps/common/main/resources/img" + } + ], + "clean": [ + "../deploy/web-apps/apps/common" + ] } }, "mobile": { diff --git a/build/spreadsheeteditor.json b/build/spreadsheeteditor.json index cea408c65..650425953 100644 --- a/build/spreadsheeteditor.json +++ b/build/spreadsheeteditor.json @@ -1,7 +1,7 @@ { "name": "spreadsheeteditor", "version": "4.3.0", - "build": 879, + "build": 881, "homepage": "http://www.onlyoffice.com", "private": true, "main": { @@ -178,6 +178,19 @@ "dest": "../deploy/web-apps/apps/spreadsheeteditor/main/index.html" } ] + }, + "svgicons": { + "common": [ + { + "expand": true, + "cwd": "../apps/common/main/resources/img", + "src": "**/*.svg", + "dest": "../deploy/web-apps/apps/common/main/resources/img" + } + ], + "clean": [ + "../deploy/web-apps/apps/common" + ] } }, "mobile": { diff --git a/vendor/svg-injector/svg-injector.map.js b/vendor/svg-injector/svg-injector.map.js new file mode 100644 index 000000000..02335c0a9 --- /dev/null +++ b/vendor/svg-injector/svg-injector.map.js @@ -0,0 +1 @@ +{"version":3,"file":"./svg-injector.min.js","sources":["./svg-injector.js"],"names":["window","document","uniqueClasses","list","split","hash","i","length","out","hasOwnProperty","unshift","join","isLocal","location","protocol","hasSvgSupport","implementation","hasFeature","forEach","Array","prototype","fn","scope","this","TypeError","len","call","svgCache","injectCount","injectedElements","requestQueue","ranScripts","cloneSvg","sourceSvg","cloneNode","queueRequest","url","callback","push","processRequestQueue","index","setTimeout","loadSvg","undefined","SVGSVGElement","XMLHttpRequest","httpRequest","onreadystatechange","readyState","status","responseXML","statusText","Document","documentElement","DOMParser","Function","xmlDoc","parser","parseFromString","responseText","e","getElementsByTagName","open","overrideMimeType","send","injectElement","el","evalScripts","pngFallback","imgUrl","getAttribute","test","perElementFallback","setAttribute","pop","replace","indexOf","svg","imgId","imgTitle","classMerge","concat","imgStyle","imgData","filter","attributes","at","name","dataAttr","value","element","elementDefs","properties","currentId","newId","iriElementsAndProperties","clipPath","color-profile","cursor","linearGradient","marker","mask","pattern","radialGradient","Object","keys","key","querySelectorAll","elementsLen","id","referencingElements","property","j","referencingElementLen","removeAttribute","script","scriptType","scripts","scriptsToEval","k","scriptsLen","innerText","textContent","removeChild","l","scriptsToEvalLen","styleTags","styleTag","parentNode","replaceChild","SVGInjector","elements","options","done","eachCallback","each","elementsLoaded","module","exports","define","amd"],"mappings":"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"} \ No newline at end of file diff --git a/vendor/svg-injector/svg-injector.min.js b/vendor/svg-injector/svg-injector.min.js new file mode 100644 index 000000000..243424bee --- /dev/null +++ b/vendor/svg-injector/svg-injector.min.js @@ -0,0 +1,9 @@ +/** + * SVGInjector v1.1.3 - Fast, caching, dynamic inline SVG DOM injection library + * https://github.com/iconic/SVGInjector + * + * Copyright (c) 2014-2015 Waybury + * @license MIT + */ +!function(t,e){"use strict";function r(t){t=t.split(" ");for(var e={},r=t.length,n=[];r--;)e.hasOwnProperty(t[r])||(e[t[r]]=1,n.unshift(t[r]));return n.join(" ")}var n="file:"===t.location.protocol,i=e.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"),o=Array.prototype.forEach||function(t,e){if(void 0===this||null===this||"function"!=typeof t)throw new TypeError;var r,n=this.length>>>0;for(r=0;n>r;++r)r in this&&t.call(e,this[r],r,this)},a={},l=0,s=[],u=[],c={},f=function(t){return t.cloneNode(!0)},p=function(t,e){u[t]=u[t]||[],u[t].push(e)},d=function(t){for(var e=0,r=u[t].length;r>e;e++)!function(e){setTimeout(function(){u[t][e](f(a[t]))},0)}(e)},v=function(e,r){if(void 0!==a[e])a[e]instanceof SVGSVGElement?r(f(a[e])):p(e,r);else{if(!t.XMLHttpRequest)return r("Browser does not support XMLHttpRequest"),!1;a[e]={},p(e,r);var i=new XMLHttpRequest;i.onreadystatechange=function(){if(4===i.readyState){if(404===i.status||null===i.responseXML)return r("Unable to load SVG file: "+e),n&&r("Note: SVG injection ajax calls do not work locally without adjusting security setting in your browser. Or consider using a local webserver."),r(),!1;if(!(200===i.status||n&&0===i.status))return r("There was a problem injecting the SVG: "+i.status+" "+i.statusText),!1;if(i.responseXML instanceof Document)a[e]=i.responseXML.documentElement;else if(DOMParser&&DOMParser instanceof Function){var t;try{var o=new DOMParser;t=o.parseFromString(i.responseText,"text/xml")}catch(l){t=void 0}if(!t||t.getElementsByTagName("parsererror").length)return r("Unable to parse SVG file: "+e),!1;a[e]=t.documentElement}d(e)}},i.open("GET",e),i.overrideMimeType&&i.overrideMimeType("text/xml"),i.send()}},h=function(e,n,a,u){var f=e.getAttribute("data-src")||e.getAttribute("src");if(!/\.svg/i.test(f))return void u("Attempted to inject a file with a non-svg extension: "+f);if(!i){var p=e.getAttribute("data-fallback")||e.getAttribute("data-png");return void(p?(e.setAttribute("src",p),u(null)):a?(e.setAttribute("src",a+"/"+f.split("/").pop().replace(".svg",".png")),u(null)):u("This browser does not support SVG and no PNG fallback was defined."))}-1===s.indexOf(e)&&(s.push(e),e.setAttribute("src",""),v(f,function(i){if("undefined"==typeof i||"string"==typeof i)return u(i),!1;var a=e.getAttribute("id");a&&i.setAttribute("id",a);var p=e.getAttribute("title");p&&i.setAttribute("title",p);var d=[].concat(i.getAttribute("class")||[],"injected-svg",e.getAttribute("class")||[]).join(" ");i.setAttribute("class",r(d));var v=e.getAttribute("style");v&&i.setAttribute("style",v);var h=[].filter.call(e.attributes,function(t){return/^data-\w[\w\-]*$/.test(t.name)});o.call(h,function(t){t.name&&t.value&&i.setAttribute(t.name,t.value)});var g,m,b,y,A,w={clipPath:["clip-path"],"color-profile":["color-profile"],cursor:["cursor"],filter:["filter"],linearGradient:["fill","stroke"],marker:["marker","marker-start","marker-mid","marker-end"],mask:["mask"],pattern:["fill","stroke"],radialGradient:["fill","stroke"]};Object.keys(w).forEach(function(t){g=t,b=w[t],m=i.querySelectorAll("defs "+g+"[id]");for(var e=0,r=m.length;r>e;e++){y=m[e].id,A=y+"-"+l;var n;o.call(b,function(t){n=i.querySelectorAll("["+t+'*="'+y+'"]');for(var e=0,r=n.length;r>e;e++)n[e].setAttribute(t,"url(#"+A+")")}),m[e].id=A}}),i.removeAttribute("xmlns:a");for(var x,S,k=i.querySelectorAll("script"),j=[],G=0,T=k.length;T>G;G++)S=k[G].getAttribute("type"),S&&"application/ecmascript"!==S&&"application/javascript"!==S||(x=k[G].innerText||k[G].textContent,j.push(x),i.removeChild(k[G]));if(j.length>0&&("always"===n||"once"===n&&!c[f])){for(var M=0,V=j.length;V>M;M++)new Function(j[M])(t);c[f]=!0}var E=i.querySelectorAll("style");o.call(E,function(t){t.textContent+=""}),e.parentNode.replaceChild(i,e),delete s[s.indexOf(e)],e=null,l++,u(i)}))},g=function(t,e,r){e=e||{};var n=e.evalScripts||"always",i=e.pngFallback||!1,a=e.each;if(void 0!==t.length){var l=0;o.call(t,function(e){h(e,n,i,function(e){a&&"function"==typeof a&&a(e),r&&t.length===++l&&r(l)})})}else t?h(t,n,i,function(e){a&&"function"==typeof a&&a(e),r&&r(1),t=null}):r&&r(0)};"object"==typeof module&&"object"==typeof module.exports?module.exports=exports=g:"function"==typeof define&&define.amd?define(function(){return g}):"object"==typeof t&&(t.SVGInjector=g)}(window,document); +//# sourceMappingURL=svg-injector.map.js \ No newline at end of file