├── .gitignore ├── .vs ├── slnx.sqlite └── slnx.sqlite-journal ├── LICENSE ├── README.md ├── dist ├── basic.js ├── beautify-html.js ├── bootstrap-material-design.js ├── codemirror.js ├── css │ ├── bootstrap-material-design.min.css │ ├── grapes.min.css │ ├── material.min.css │ └── styleeditor.css ├── filesaver.js ├── fonts │ ├── FontAwesome.otf │ ├── Roboto-Light.ttf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── icons.woff2 │ ├── main-fonts.eot │ ├── main-fonts.svg │ ├── main-fonts.ttf │ └── main-fonts.woff ├── grapes.min.js ├── grapesjs-blocks-bootstrap4.min.js ├── grapesjs-html-block.js ├── img │ ├── btn.PNG │ └── c1.PNG ├── jquery-3.2.1.slim.min.js ├── jquery-3.3.1.min.js ├── md.js ├── popper.js ├── snack.js └── snackbar.css ├── icon.ico ├── images ├── icon.ico └── icon.png ├── index.html ├── main.js ├── package-lock.json ├── package.json ├── renderer.js ├── style └── material.css └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.vs/slnx.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/.vs/slnx.sqlite -------------------------------------------------------------------------------- /.vs/slnx.sqlite-journal: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/.vs/slnx.sqlite-journal -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Elvin Chu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 |

3 | 4 |

MD BUILDER – A Material Design Web Builder.

5 | 6 |

If you like it, please star this repository!

7 | 8 | ## Download(.exe Windows): 9 | 10 | https://github.com/Elvincth/MD-Builder/releases 11 | 12 | ### TODO List 13 | 14 | - [ ] Mulitpage support 15 | - [ ] Custom file type .mdproj 16 | 17 | 18 | ## Build As An Eletronic App (Desktop App) 19 | 20 | ---- 21 | 22 | ```npm install``` 23 | 24 | ```npm start``` 25 | 26 | ##### For Mac 27 | ```npm run build:mac``` 28 | 29 | 30 | 31 | 32 |

MD-Builder

33 | 34 |

MD-Builder

35 | 36 | 37 | 38 | 39 | ## Blocks 40 | 41 |

MD-Builder

42 | 43 |

MD-Builder

44 | 45 |

MD-Builder

46 | 47 |

MD-Builder

48 | 49 | 50 | ## Open And Save Projects (AS HTML) 51 | 52 |

MD-Builder

53 | 54 | ## ACE Code Editor 55 | 56 |

MD-Builder

57 | 58 | -------------------------------------------------------------------------------- /dist/basic.js: -------------------------------------------------------------------------------- 1 | /*! grapesjs-blocks-basic - 0.1.8 */ 2 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("grapesjs")):"function"==typeof define&&define.amd?define(["grapesjs"],t):"object"==typeof exports?exports["grapesjs-blocks-basic"]=t(require("grapesjs")):e["grapesjs-blocks-basic"]=t(e.grapesjs)}(this,function(e){return function(e){function t(a){if(n[a])return n[a].exports;var l=n[a]={i:a,l:!1,exports:{}};return e[a].call(l.exports,l,l.exports,t),l.l=!0,l.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},l=a({blocks:["column1","column2","column3","column3-7","text","link","image","video","map"],flexGrid:0,stylePrefix:"gjs-",addBasicStyle:!0,category:"Basic",labelColumn1:"1 Column",labelColumn2:"2 Columns",labelColumn3:"3 Columns",labelColumn37:"2 Columns 3/7",labelText:"Text",labelLink:"Link",labelImage:"Image",labelVideo:"Video",labelMap:"Map"},t);n(2).default(e,l)})},function(t,n){t.exports=e},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},n=t,l=e.BlockManager,i=n.blocks,s=n.stylePrefix,o=n.flexGrid,r=n.addBasicStyle,c=s+"row",d=s+"cell",u=o?"\n ."+c+" {\n display: flex;\n justify-content: flex-start;\n align-items: stretch;\n flex-wrap: nowrap;\n padding: 10px;\n }\n @media (max-width: 768px) {\n ."+c+" {\n flex-wrap: wrap;\n }\n }":"\n ."+c+" {\n display: table;\n padding: 10px;\n width: 100%;\n }\n @media (max-width: 768px) {\n ."+s+"cell, ."+s+"cell30, ."+s+"cell70 {\n width: 100%;\n display: block;\n }\n }",b=o?"\n ."+d+" {\n min-height: 75px;\n flex-grow: 1;\n flex-basis: 100%;\n }":"\n ."+d+" {\n width: 8%;\n display: table-cell;\n height: 75px;\n }",f="\n ."+s+"cell30 {\n width: 30%;\n }",g="\n ."+s+"cell70 {\n width: 70%;\n }",p={tl:0,tc:0,tr:0,cl:0,cr:0,bl:0,br:0,minDim:1},y=a({},p,{cr:1,bc:0,currentUnit:1,minDim:1,step:.2});o&&(y.keyWidth="flex-basis");var m={class:c,"data-gjs-droppable":"."+d,"data-gjs-resizable":p,"data-gjs-name":"Row"},v={class:d,"data-gjs-draggable":"."+c,"data-gjs-resizable":y,"data-gjs-name":"Cell"};o&&(v["data-gjs-unstylable"]=["width"],v["data-gjs-stylable-require"]=["flex-basis"]);var x=["."+c,"."+d];e.on("selector:add",function(e){return x.indexOf(e.getFullName())>=0&&e.set("private",1)});var j=function(e){var t=[];for(var n in e){var a=e[n],l=a instanceof Array||a instanceof Object;a=l?JSON.stringify(a):a,t.push(n+"="+(l?"'"+a+"'":'"'+a+'"'))}return t.length?" "+t.join(" "):""},h=function(e){return i.indexOf(e)>=0},w=j(m),k=j(v);h("column1")&&l.add("column1",{label:n.labelColumn1,category:n.category,attributes:{class:"gjs-fonts gjs-f-b1"},content:"
\n
\n
\n "+(r?"":"")}),h("column2")&&l.add("column2",{label:n.labelColumn2,attributes:{class:"gjs-fonts gjs-f-b2"},category:n.category,content:"
\n
\n
\n
\n "+(r?"":"")}),h("column3")&&l.add("column3",{label:n.labelColumn3,category:n.category,attributes:{class:"gjs-fonts gjs-f-b3"},content:"
\n
\n
\n
\n
\n "+(r?"":"")}),h("column3-7")&&l.add("column3-7",{label:n.labelColumn37,category:n.category,attributes:{class:"gjs-fonts gjs-f-b37"},content:"
\n
\n
\n
\n '+(r?"":"")}),h("text")&&l.add("text",{label:n.labelText,category:n.category,attributes:{class:"gjs-fonts gjs-f-text"},content:{type:"text",content:"Insert your text here",style:{padding:"10px"},activeOnRender:1}}),h("link")&&l.add("link",{label:n.labelLink,category:n.category,attributes:{class:"fa fa-link"},content:{type:"link",content:"Link",style:{color:"#d983a6"}}}),h("image")&&l.add("image",{label:n.labelImage,category:n.category,attributes:{class:"gjs-fonts gjs-f-image"},content:{style:{color:"black"},type:"image",activeOnRender:1}}),h("video")&&l.add("video",{label:n.labelVideo,category:n.category,attributes:{class:"fa fa-youtube-play"},content:{type:"video",src:"img/video2.webm",style:{height:"350px",width:"615px"}}}),h("map")&&l.add("map",{label:n.labelMap,category:n.category,attributes:{class:"fa fa-map-o"},content:{type:"map",style:{height:"350px"}}})}}])}); -------------------------------------------------------------------------------- /dist/filesaver.js: -------------------------------------------------------------------------------- 1 | /* FileSaver.js 2 | * A saveAs() FileSaver implementation. 3 | * 1.3.8 4 | * 2018-03-22 14:03:47 5 | * 6 | * By Eli Grey, https://eligrey.com 7 | * License: MIT 8 | * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md 9 | */ 10 | 11 | /*global self */ 12 | /*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */ 13 | 14 | /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/src/FileSaver.js */ 15 | 16 | export var saveAs = saveAs || (function(view) { 17 | "use strict"; 18 | // IE <10 is explicitly unsupported 19 | if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) { 20 | return; 21 | } 22 | var 23 | doc = view.document 24 | // only get URL when necessary in case Blob.js hasn't overridden it yet 25 | , get_URL = function() { 26 | return view.URL || view.webkitURL || view; 27 | } 28 | , save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a") 29 | , can_use_save_link = "download" in save_link 30 | , click = function(node) { 31 | var event = new MouseEvent("click"); 32 | node.dispatchEvent(event); 33 | } 34 | , is_safari = /constructor/i.test(view.HTMLElement) || view.safari 35 | , is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent) 36 | , setImmediate = view.setImmediate || view.setTimeout 37 | , throw_outside = function(ex) { 38 | setImmediate(function() { 39 | throw ex; 40 | }, 0); 41 | } 42 | , force_saveable_type = "application/octet-stream" 43 | // the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to 44 | , arbitrary_revoke_timeout = 1000 * 40 // in ms 45 | , revoke = function(file) { 46 | var revoker = function() { 47 | if (typeof file === "string") { // file is an object URL 48 | get_URL().revokeObjectURL(file); 49 | } else { // file is a File 50 | file.remove(); 51 | } 52 | }; 53 | setTimeout(revoker, arbitrary_revoke_timeout); 54 | } 55 | , dispatch = function(filesaver, event_types, event) { 56 | event_types = [].concat(event_types); 57 | var i = event_types.length; 58 | while (i--) { 59 | var listener = filesaver["on" + event_types[i]]; 60 | if (typeof listener === "function") { 61 | try { 62 | listener.call(filesaver, event || filesaver); 63 | } catch (ex) { 64 | throw_outside(ex); 65 | } 66 | } 67 | } 68 | } 69 | , auto_bom = function(blob) { 70 | // prepend BOM for UTF-8 XML and text/* types (including HTML) 71 | // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF 72 | if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) { 73 | return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type}); 74 | } 75 | return blob; 76 | } 77 | , FileSaver = function(blob, name, no_auto_bom) { 78 | if (!no_auto_bom) { 79 | blob = auto_bom(blob); 80 | } 81 | // First try a.download, then web filesystem, then object URLs 82 | var 83 | filesaver = this 84 | , type = blob.type 85 | , force = type === force_saveable_type 86 | , object_url 87 | , dispatch_all = function() { 88 | dispatch(filesaver, "writestart progress write writeend".split(" ")); 89 | } 90 | // on any filesys errors revert to saving with object URLs 91 | , fs_error = function() { 92 | if ((is_chrome_ios || (force && is_safari)) && view.FileReader) { 93 | // Safari doesn't allow downloading of blob urls 94 | var reader = new FileReader(); 95 | reader.onloadend = function() { 96 | var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;'); 97 | var popup = view.open(url, '_blank'); 98 | if(!popup) view.location.href = url; 99 | url=undefined; // release reference before dispatching 100 | filesaver.readyState = filesaver.DONE; 101 | dispatch_all(); 102 | }; 103 | reader.readAsDataURL(blob); 104 | filesaver.readyState = filesaver.INIT; 105 | return; 106 | } 107 | // don't create more object URLs than needed 108 | if (!object_url) { 109 | object_url = get_URL().createObjectURL(blob); 110 | } 111 | if (force) { 112 | view.location.href = object_url; 113 | } else { 114 | var opened = view.open(object_url, "_blank"); 115 | if (!opened) { 116 | // Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html 117 | view.location.href = object_url; 118 | } 119 | } 120 | filesaver.readyState = filesaver.DONE; 121 | dispatch_all(); 122 | revoke(object_url); 123 | } 124 | ; 125 | filesaver.readyState = filesaver.INIT; 126 | 127 | if (can_use_save_link) { 128 | object_url = get_URL().createObjectURL(blob); 129 | setImmediate(function() { 130 | save_link.href = object_url; 131 | save_link.download = name; 132 | click(save_link); 133 | dispatch_all(); 134 | revoke(object_url); 135 | filesaver.readyState = filesaver.DONE; 136 | }, 0); 137 | return; 138 | } 139 | 140 | fs_error(); 141 | } 142 | , FS_proto = FileSaver.prototype 143 | , saveAs = function(blob, name, no_auto_bom) { 144 | return new FileSaver(blob, name || blob.name || "download", no_auto_bom); 145 | } 146 | ; 147 | 148 | // IE 10+ (native saveAs) 149 | if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) { 150 | return function(blob, name, no_auto_bom) { 151 | name = name || blob.name || "download"; 152 | 153 | if (!no_auto_bom) { 154 | blob = auto_bom(blob); 155 | } 156 | return navigator.msSaveOrOpenBlob(blob, name); 157 | }; 158 | } 159 | 160 | // todo: detect chrome extensions & packaged apps 161 | //save_link.target = "_blank"; 162 | 163 | FS_proto.abort = function(){}; 164 | FS_proto.readyState = FS_proto.INIT = 0; 165 | FS_proto.WRITING = 1; 166 | FS_proto.DONE = 2; 167 | 168 | FS_proto.error = 169 | FS_proto.onwritestart = 170 | FS_proto.onprogress = 171 | FS_proto.onwrite = 172 | FS_proto.onabort = 173 | FS_proto.onerror = 174 | FS_proto.onwriteend = 175 | null; 176 | 177 | return saveAs; 178 | }( 179 | typeof self !== "undefined" && self 180 | || typeof window !== "undefined" && window 181 | || this 182 | )); -------------------------------------------------------------------------------- /dist/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /dist/fonts/Roboto-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/fonts/Roboto-Light.ttf -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /dist/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/fonts/icons.woff2 -------------------------------------------------------------------------------- /dist/fonts/main-fonts.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/fonts/main-fonts.eot -------------------------------------------------------------------------------- /dist/fonts/main-fonts.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 29 | 34 | 35 | 42 | 51 | 55 | 58 | 63 | 68 | 73 | 78 | 83 | 88 | 93 | 98 | 103 | 108 | 113 | 118 | 123 | 128 | 133 | 138 | 143 | 148 | 153 | 154 | 155 | 186 | 196 | 197 | 199 | 200 | 202 | image/svg+xml 203 | 205 | 206 | 207 | 208 | 209 | 214 | 219 | 224 | 229 | 234 | 240 | 245 | 248 | 253 | 254 | 269 | 285 | 290 | Borders: 30pxCanvas: 1000x1000px 308 | 312 | 315 | 317 | 321 | 325 | 329 | 333 | 337 | 341 | 345 | 349 | 350 | 351 | 352 | 353 | 358 | 363 | 368 | 373 | 378 | 383 | 388 | 393 | 394 | 395 | -------------------------------------------------------------------------------- /dist/fonts/main-fonts.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/fonts/main-fonts.ttf -------------------------------------------------------------------------------- /dist/fonts/main-fonts.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/fonts/main-fonts.woff -------------------------------------------------------------------------------- /dist/grapesjs-blocks-bootstrap4.min.js: -------------------------------------------------------------------------------- 1 | /*! grapesjs-blocks-bootstrap4 - 0.1.3 */ 2 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("grapesjs")):"function"==typeof define&&define.amd?define(["grapesjs"],t):"object"==typeof exports?exports["grapesjs-blocks-bootstrap4"]=t(require("grapesjs")):e["grapesjs-blocks-bootstrap4"]=t(e.grapesjs)}("undefined"!=typeof self?self:this,function(e){return function(e){function t(a){if(n[a])return n[a].exports;var r=n[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=24)}([function(e,t){e.exports=function(e){return null==e?"":""+e}},function(e,t,n){var a=n(0),r=n(6),o=String.prototype.trim;e.exports=function(e,t){return e=a(e),!t&&o?o.call(e):(t=r(t),e.replace(new RegExp("^"+t+"+|"+t+"+$","g"),""))}},function(e,t,n){var a,r;(function(){function n(e){function t(t,n,a,r,o,i){for(;o>=0&&o0?0:s-1;return arguments.length<3&&(r=n[i?i[l]:l],l+=e),t(n,a,r,i,l,s)}}function o(e){return function(t,n,a){n=j(n,a);for(var r=S(t),o=e>0?0:r-1;o>=0&&o0?i=o>=0?o:Math.max(o+s,i):s=o>=0?Math.min(o+1,s):o+s+1;else if(n&&o&&s)return o=n(a,r),a[o]===r?o:-1;if(r!==r)return o=t(m.call(a,i,s),_.isNaN),o>=0?o+i:-1;for(o=e>0?i:s-1;o>=0&&o=0&&t<=L};_.each=_.forEach=function(e,t,n){t=C(t,n);var a,r;if(N(e))for(a=0,r=e.length;a=0},_.invoke=function(e,t){var n=m.call(arguments,2),a=_.isFunction(t);return _.map(e,function(e){var r=a?t:e[t];return null==r?r:r.apply(e,n)})},_.pluck=function(e,t){return _.map(e,_.property(t))},_.where=function(e,t){return _.filter(e,_.matcher(t))},_.findWhere=function(e,t){return _.find(e,_.matcher(t))},_.max=function(e,t,n){var a,r,o=-1/0,i=-1/0;if(null==t&&null!=e){e=N(e)?e:_.values(e);for(var s=0,l=e.length;so&&(o=a)}else t=j(t,n),_.each(e,function(e,n,a){((r=t(e,n,a))>i||r===-1/0&&o===-1/0)&&(o=e,i=r)});return o},_.min=function(e,t,n){var a,r,o=1/0,i=1/0;if(null==t&&null!=e){e=N(e)?e:_.values(e);for(var s=0,l=e.length;sa||void 0===n)return 1;if(nt?(i&&(clearTimeout(i),i=null),s=c,o=e.apply(a,r),i||(a=r=null)):i||!1===n.trailing||(i=setTimeout(l,u)),o}},_.debounce=function(e,t,n){var a,r,o,i,s,l=function(){var c=_.now()-i;c=0?a=setTimeout(l,t-c):(a=null,n||(s=e.apply(o,r),a||(o=r=null)))};return function(){o=this,r=arguments,i=_.now();var c=n&&!a;return a||(a=setTimeout(l,t)),c&&(s=e.apply(o,r),o=r=null),s}},_.wrap=function(e,t){return _.partial(t,e)},_.negate=function(e){return function(){return!e.apply(this,arguments)}},_.compose=function(){var e=arguments,t=e.length-1;return function(){for(var n=t,a=e[t].apply(this,arguments);n--;)a=e[n].call(this,a);return a}},_.after=function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},_.before=function(e,t){var n;return function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=null),n}},_.once=_.partial(_.before,2);var I=!{toString:null}.propertyIsEnumerable("toString"),D=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];_.keys=function(e){if(!_.isObject(e))return[];if(b)return b(e);var t=[];for(var n in e)_.has(e,n)&&t.push(n);return I&&s(e,t),t},_.allKeys=function(e){if(!_.isObject(e))return[];var t=[];for(var n in e)t.push(n);return I&&s(e,t),t},_.values=function(e){for(var t=_.keys(e),n=t.length,a=Array(n),r=0;r":">",'"':""","'":"'","`":"`"},P=_.invert(F),z=function(e){var t=function(t){return e[t]},n="(?:"+_.keys(e).join("|")+")",a=RegExp(n),r=RegExp(n,"g");return function(e){return e=null==e?"":""+e,a.test(e)?e.replace(r,t):e}};_.escape=z(F),_.unescape=z(P),_.result=function(e,t,n){var a=null==e?void 0:e[t];return void 0===a&&(a=n),_.isFunction(a)?a.call(e):a};var R=0;_.uniqueId=function(e){var t=++R+"";return e?e+t:t},_.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,H={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},$=/\\|'|\r|\n|\u2028|\u2029/g,W=function(e){return"\\"+H[e]};_.template=function(e,t,n){!t&&n&&(t=n),t=_.defaults({},t,_.templateSettings);var a=RegExp([(t.escape||q).source,(t.interpolate||q).source,(t.evaluate||q).source].join("|")+"|$","g"),r=0,o="__p+='";e.replace(a,function(t,n,a,i,s){return o+=e.slice(r,s).replace($,W),r=s+t.length,n?o+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":a?o+="'+\n((__t=("+a+"))==null?'':__t)+\n'":i&&(o+="';\n"+i+"\n__p+='"),t}),o+="';\n",t.variable||(o="with(obj||{}){\n"+o+"}\n"),o="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{var i=new Function(t.variable||"obj","_",o)}catch(e){throw e.source=o,e}var s=function(e){return i.call(this,e,_)};return s.source="function("+(t.variable||"obj")+"){\n"+o+"}",s},_.chain=function(e){var t=_(e);return t._chain=!0,t};var U=function(e,t){return e._chain?_(t).chain():t};_.mixin=function(e){_.each(_.functions(e),function(t){var n=_[t]=e[t];_.prototype[t]=function(){var e=[this._wrapped];return f.apply(e,arguments),U(this,n.apply(_,e))}})},_.mixin(_),_.each(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=u[e];_.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),"shift"!==e&&"splice"!==e||0!==n.length||delete n[0],U(this,n)}}),_.each(["concat","join","slice"],function(e){var t=u[e];_.prototype[e]=function(){return U(this,t.apply(this._wrapped,arguments))}}),_.prototype.value=function(){return this._wrapped},_.prototype.valueOf=_.prototype.toJSON=_.prototype.value,_.prototype.toString=function(){return""+this._wrapped},a=[],void 0!==(r=function(){return _}.apply(t,a))&&(e.exports=r)}).call(this)},function(e,t,n){var a=n(0),r=n(19);e.exports=function(e,t,n,o){e=a(e),t=~~t;var i=0;switch(n?n.length>1&&(n=n.charAt(0)):n=" ",o){case"right":return i=t-e.length,e+r(n,i);case"both":return i=t-e.length,r(n,Math.ceil(i/2))+e+r(n,Math.floor(i/2));default:return i=t-e.length,r(n,i)+e}}},function(e,t,n){"use strict";/* 3 | * Underscore.string 4 | * (c) 2010 Esa-Matti Suuronen 5 | * Underscore.string is freely distributable under the terms of the MIT license. 6 | * Documentation: https://github.com/epeli/underscore.string 7 | * Some code is borrowed from MooTools and Alexandru Marasteanu. 8 | * Version '3.3.4' 9 | * @preserve 10 | */ 11 | function a(e){if(!(this instanceof a))return new a(e);this._wrapped=e}function r(e,t){"function"==typeof t&&(a.prototype[e]=function(){var e=[this._wrapped].concat(Array.prototype.slice.call(arguments)),n=t.apply(null,e);return"string"==typeof n?new a(n):n})}a.VERSION="3.3.4",a.isBlank=n(9),a.stripTags=n(29),a.capitalize=n(5),a.decapitalize=n(10),a.chop=n(30),a.trim=n(1),a.clean=n(31),a.cleanDiacritics=n(12),a.count=n(32),a.chars=n(7),a.swapCase=n(33),a.escapeHTML=n(34),a.unescapeHTML=n(36),a.splice=n(13),a.insert=n(38),a.replaceAll=n(39),a.include=n(40),a.join=n(41),a.lines=n(42),a.dedent=n(43),a.reverse=n(44),a.startsWith=n(45),a.endsWith=n(46),a.pred=n(47),a.succ=n(48),a.titleize=n(49),a.camelize=n(16),a.underscored=n(17),a.dasherize=n(18),a.classify=n(50),a.humanize=n(51),a.ltrim=n(52),a.rtrim=n(8),a.truncate=n(53),a.prune=n(54),a.words=n(55),a.pad=n(3),a.lpad=n(56),a.rpad=n(57),a.lrpad=n(58),a.sprintf=n(59),a.vsprintf=n(61),a.toNumber=n(62),a.numberFormat=n(63),a.strRight=n(64),a.strRightBack=n(65),a.strLeft=n(66),a.strLeftBack=n(67),a.toSentence=n(22),a.toSentenceSerial=n(68),a.slugify=n(69),a.surround=n(23),a.quote=n(70),a.unquote=n(71),a.repeat=n(72),a.naturalCmp=n(73),a.levenshtein=n(74),a.toBoolean=n(75),a.exports=n(76),a.escapeRegExp=n(11),a.wrap=n(77),a.map=n(78),a.strip=a.trim,a.lstrip=a.ltrim,a.rstrip=a.rtrim,a.center=a.lrpad,a.rjust=a.lpad,a.ljust=a.rpad,a.contains=a.include,a.q=a.quote,a.toBool=a.toBoolean,a.camelcase=a.camelize,a.mapChars=a.map,a.prototype={value:function(){return this._wrapped}};for(var o in a)r(o,a[o]);r("tap",function(e,t){return t(e)});var i=["toUpperCase","toLowerCase","split","replace","slice","substring","substr","concat"];for(var s in i)!function(e){r(e,function(t){var n=Array.prototype.slice.call(arguments,1);return String.prototype[e].apply(t,n)})}(i[s]);e.exports=a},function(e,t,n){var a=n(0);e.exports=function(e,t){e=a(e);var n=t?e.slice(1).toLowerCase():e.slice(1);return e.charAt(0).toUpperCase()+n}},function(e,t,n){var a=n(11);e.exports=function(e){return null==e?"\\s":e.source?e.source:"["+a(e)+"]"}},function(e,t,n){var a=n(0);e.exports=function(e){return a(e).split("")}},function(e,t,n){var a=n(0),r=n(6),o=String.prototype.trimRight;e.exports=function(e,t){return e=a(e),!t&&o?o.call(e):(t=r(t),e.replace(new RegExp(t+"+$"),""))}},function(e,t,n){var a=n(0);e.exports=function(e){return/^\s*$/.test(a(e))}},function(e,t,n){var a=n(0);e.exports=function(e){return e=a(e),e.charAt(0).toLowerCase()+e.slice(1)}},function(e,t,n){var a=n(0);e.exports=function(e){return a(e).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}},function(e,t,n){var a=n(0),r="ąàáäâãåæăćčĉęèéëêĝĥìíïîĵłľńňòóöőôõðøśșşšŝťțţŭùúüűûñÿýçżźž",o="aaaaaaaaaccceeeeeghiiiijllnnoooooooossssstttuuuuuunyyczzz";r+=r.toUpperCase(),o+=o.toUpperCase(),o=o.split(""),r+="ß",o.push("ss"),e.exports=function(e){return a(e).replace(/.{1}/g,function(e){var t=r.indexOf(e);return-1===t?e:o[t]})}},function(e,t,n){var a=n(7);e.exports=function(e,t,n,r){var o=a(e);return o.splice(~~t,~~n,r),o.join("")}},function(e,t){e.exports=function(e){return e<0?0:+e||0}},function(e,t,n){var a=n(0);e.exports=function(e,t){return e=a(e),0===e.length?"":e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+t)}},function(e,t,n){var a=n(1),r=n(10);e.exports=function(e,t){return e=a(e).replace(/[-_\s]+(.)?/g,function(e,t){return t?t.toUpperCase():""}),!0===t?r(e):e}},function(e,t,n){var a=n(1);e.exports=function(e){return a(e).replace(/([a-z\d])([A-Z]+)/g,"$1_$2").replace(/[-\s]+/g,"_").toLowerCase()}},function(e,t,n){var a=n(1);e.exports=function(e){return a(e).replace(/([A-Z])/g,"-$1").replace(/[-_\s]+/g,"-").toLowerCase()}},function(e,t){e.exports=function(e,t){if(t<1)return"";for(var n="";t>0;)1&t&&(n+=e),t>>=1,e+=e;return n}},function(e,t,n){(function(t){function n(e,t){function n(){if(!r){if(a("throwDeprecation"))throw new Error(t);a("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}if(a("noDeprecation"))return e;var r=!1;return n}function a(e){try{if(!t.localStorage)return!1}catch(e){return!1}var n=t.localStorage[e];return null!=n&&"true"===String(n).toLowerCase()}e.exports=n}).call(t,n(60))},function(e,t,n){"use strict";!function(e){function n(){var e=arguments[0],t=n.cache;return t[e]&&t.hasOwnProperty(e)||(t[e]=n.parse(e)),n.format.call(null,t[e],arguments)}function a(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function r(e,t){return Array(t+1).join(e)}var o={not_string:/[^s]/,number:/[diefg]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijosuxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[\+\-]/};n.format=function(e,t){var i,s,l,c,u,p,d,f=1,m=e.length,g="",h=[],v=!0,b="";for(s=0;s=0),c[8]){case"b":i=i.toString(2);break;case"c":i=String.fromCharCode(i);break;case"d":case"i":i=parseInt(i,10);break;case"j":i=JSON.stringify(i,null,c[6]?parseInt(c[6]):0);break;case"e":i=c[7]?i.toExponential(c[7]):i.toExponential();break;case"f":i=c[7]?parseFloat(i).toFixed(c[7]):parseFloat(i);break;case"g":i=c[7]?parseFloat(i).toPrecision(c[7]):parseFloat(i);break;case"o":i=i.toString(8);break;case"s":i=(i=String(i))&&c[7]?i.substring(0,c[7]):i;break;case"u":i>>>=0;break;case"x":i=i.toString(16);break;case"X":i=i.toString(16).toUpperCase()}o.json.test(c[8])?h[h.length]=i:(!o.number.test(c[8])||v&&!c[3]?b="":(b=v?"+":"-",i=i.toString().replace(o.sign,"")),p=c[4]?"0"===c[4]?"0":c[4].charAt(1):" ",d=c[6]-(b+i).length,u=c[6]&&d>0?r(p,d):"",h[h.length]=c[5]?b+i+u:"0"===p?b+u+i:u+b+i)}return h.join("")},n.cache={},n.parse=function(e){for(var t=e,n=[],a=[],r=0;t;){if(null!==(n=o.text.exec(t)))a[a.length]=n[0];else if(null!==(n=o.modulo.exec(t)))a[a.length]="%";else{if(null===(n=o.placeholder.exec(t)))throw new SyntaxError("[sprintf] unexpected placeholder");if(n[2]){r|=1;var i=[],s=n[2],l=[];if(null===(l=o.key.exec(s)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(i[i.length]=l[1];""!==(s=s.substring(l[0].length));)if(null!==(l=o.key_access.exec(s)))i[i.length]=l[1];else{if(null===(l=o.index_access.exec(s)))throw new SyntaxError("[sprintf] failed to parse named argument key");i[i.length]=l[1]}n[2]=i}else r|=2;if(3===r)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");a[a.length]=n}t=t.substring(n[0].length)}return a};var i=function(e,t,a){return a=(t||[]).slice(0),a.splice(0,0,e),n.apply(null,a)};t.sprintf=n,t.vsprintf=i}("undefined"==typeof window||window)},function(e,t,n){var a=n(8);e.exports=function(e,t,n,r){t=t||", ",n=n||" and ";var o=e.slice(),i=o.pop();return e.length>2&&r&&(n=a(t)+n),o.length?o.join(t)+n+i:i}},function(e,t){e.exports=function(e,t){return[t,e,t].join("")}},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};window.editor=e;var n=t.blocks||{},a=t.labels||{},o=t.blockCategories||{};delete t.blocks,delete t.labels,delete t.blockCategories;var i={default:!0,text:!0,link:!0,image:!0,container:!0,row:!0,column:!0,column_break:!0,media_object:!0,alert:!0,badge:!0,button:!0,button_group:!0,button_toolbar:!0,card:!0,card_container:!0,collapse:!0,dropdown:!0,header:!0,paragraph:!0,list:!0},s={container:"Container",row:"Row",column:"Column",column_break:"Column Break",media_object:"Media Object",alert:"Alert",badge:"Badge",button:"Button",button_group:"Button Group",button_toolbar:"Button Toolbar",card:"Card",card_container:"Card Container",collapse:"Collapse",dropdown:"Dropdown",dropdown_menu:"Dropdown Menu",dropdown_item:"Dropdown Item",text:"Text",header:"Header",paragraph:"Paragraph",image:"Image",link:"Link",list:"Simple List"},c={layout:!0,components:!0,typography:!0,basic:!0},p=r({blocks:Object.assign(i,n),labels:Object.assign(s,a),blockCategories:Object.assign(c,o),gridDevices:!0,gridDevicesPanel:!1},t);e.addComponents('\n \n '),(0,l.default)(e,p),(0,u.default)(e,p),(0,d.default)(e,p),(0,m.default)(e,p),(0,h.default)(e,p)})},function(t,n){t.exports=e},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(2);!function(e){e&&e.__esModule}(a);t.default=function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1],e.Commands}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),r=function(e){return e&&e.__esModule?e:{default:e}}(a);t.default=function(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.TraitManager.addType("class_select",{events:{change:"onChange"},getInputEl:function(){if(!this.inputEl){for(var e=this.model,t=e.get("options")||[],n=document.createElement("select"),a=(this.target,this.target.view.el),o=0;o0)for(var n=e[t].split(" "),a=0;a0&&this.target.removeClass(n[a]);var r=this.model.get("value");if(r.length>0&&"GJS_NO_CLASS"!=r)for(var o=r.split(" "),i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=["primary","secondary","success","info","warning","danger","light","dark"],a=n.concat(["white"]),o={lg:"Large",sm:"Small"},s=t,c=e.DomComponents,p=s.blocks,f=s.blockCategories,m=c.getType("default"),g=m.model,h=m.view,v=c.getType("text"),b=v.model,y=v.view,x=c.getType("link"),w=x.model,_=x.view,C=c.getType("image"),j=C.model,k=C.view;f.basic&&(p.default&&(c.addType("default",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{tagName:"div",traits:[{type:"class_select",options:[{value:"",name:"Default"}].concat(r(a.map(function(e){return{value:"text-"+e,name:l.default.capitalize(e)}}))),label:"Text color"},{type:"class_select",options:[{value:"",name:"Default"}].concat(r(a.map(function(e){return{value:"bg-"+e,name:l.default.capitalize(e)}}))),label:"Background color"},{type:"class_select",options:[{value:"",name:"Default"},{value:"border",name:"Full"},{value:"border-top-0",name:"No top"},{value:"border-right-0",name:"No right"},{value:"border-bottom-0",name:"No bottom"},{value:"border-left-0",name:"No left"},{value:"border-0",name:"None"}],label:"Border width"},{type:"class_select",options:[{value:"",name:"Default"}].concat(r(a.map(function(e){return{value:"border border-"+e,name:l.default.capitalize(e)}}))),label:"Border color"},{type:"class_select",options:[{value:"",name:"Default"},{value:"rounded",name:"Rounded"},{value:"rounded-top",name:"Rounded top"},{value:"rounded-right",name:"Rounded right"},{value:"rounded-bottom",name:"Rounded bottom"},{value:"rounded-left",name:"Rounded left"},{value:"rounded-circle",name:"Circle"},{value:"rounded-0",name:"Square"}],label:"Border radius"},{type:"text",label:"ID",name:"id",placeholder:"my_element"},{type:"text",label:"Title",name:"title",placeholder:"My Element"}]}),init:function(){var e=this.get("classes");e.bind("add",this.classesChanged.bind(this)),e.bind("change",this.classesChanged.bind(this)),e.bind("remove",this.classesChanged.bind(this)),this.init2()},init2:function(){},classesChanged:function(){},changeType:function(e){var t=this.collection,n=t.indexOf(this),a={type:e,style:this.getStyle(),attributes:this.getAttributes(),content:this.view.el.innerHTML};t.remove(this),t.add(a,{at:n}),this.destroy()}}),view:h}),m=c.getType("default"),g=m.model,h=m.view),p.text&&(c.addType("text",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Text",tagName:"div",droppable:!0,editable:!0})},{}),view:y}),v=c.getType("text"),b=v.model,y=v.view),p.link&&(c.addType("link",{model:b.extend({defaults:Object.assign({},b.prototype.defaults,{"custom-name":"Link",tagName:"a",droppable:!0,editable:!0,traits:[{type:"text",label:"Href",name:"href",placeholder:"https://www.grapesjs.com"},{type:"select",options:[{value:"",name:"This window"},{value:"_blank",name:"New window"}],label:"Target",name:"target"},{type:"select",options:[{value:"",name:"None"},{value:"button",name:"Self"},{value:"collapse",name:"Collapse"},{value:"dropdown",name:"Dropdown"}],label:"Toggles",name:"data-toggle",changeProp:1}].concat(b.prototype.defaults.traits)}),init2:function(){this.listenTo(this,"change:data-toggle",this.setupToggle),this.listenTo(this,"change:attributes",this.setupToggle)},setupToggle:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!0!==n.ignore||!0===n.force){console.log("setup toggle");var a=this.getAttributes(),r=a.href;if(delete a["data-toggle"],delete a["aria-expanded"],delete a["aria-controls"],delete a["aria-haspopup"],r&&r.length>0&&r.match(/^#/)){console.log("link has href");var o=this.em.get("Editor").DomComponents.getWrapper().find(r);if(o.length>0){console.log("referenced el found");var s=o[0],l=s.getAttributes(),c=l.class;if(c){console.log("el has classes");var u=c.split(" "),p=i.default.intersection(["collapse","dropdown-menu"],u);if(p.length){switch(console.log("link data-toggle matches el class"),p[0]){case"collapse":a["data-toggle"]="collapse"}a["aria-expanded"]=u.includes("show"),"collapse"==p[0]&&(a["aria-controls"]=r.substring(1))}}}}this.set("attributes",a,{ignore:!0})}},classesChanged:function(e){console.log("classes changed"),"link"==this.attributes.type&&this.attributes.classes.filter(function(e){return"btn"==e.id}).length>0&&this.changeType("button")}},{isComponent:function(e){if(e&&e.tagName&&"A"==e.tagName)return{type:"link"}}}),view:_}),x=c.getType("link"),w=x.model,_=x.view),p.image&&(c.addType("image",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Image",tagName:"img",resizable:1,attributes:{src:"https://dummyimage.com/450x250/999/222"},traits:[{type:"text",label:"Source (URL)",name:"src"},{type:"text",label:"Alternate text",name:"alt"}].concat(g.prototype.defaults.traits)})},{isComponent:function(e){if(e&&"IMG"==e.tagName)return{type:"image"}}}),view:h}),C=c.getType("image"),j=C.model,k=C.view)),f.layout&&(p.container&&c.addType("container",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Container",tagName:"div",droppable:!0,traits:[{type:"class_select",options:[{value:"container",name:"Fixed"},{value:"container-fluid",name:"Fluid"}],label:"Width"}].concat(g.prototype.defaults.traits)})},{isComponent:function(e){if(e&&e.classList&&(e.classList.contains("container")||e.classList.contains("container-fluid")))return{type:"container"}}}),view:h}),p.row&&c.addType("row",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Row",tagName:"div",draggable:".container, .container-fluid",droppable:!0,traits:[{type:"class_select",options:[{value:"",name:"Yes"},{value:"no-gutters",name:"No"}],label:"Gutters?"}].concat(g.prototype.defaults.traits)})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("row"))return{type:"row"}}}),view:h}),p.column&&(c.addType("column",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Column",draggable:".row",droppable:!0,traits:[{type:"class_select",options:[{value:"col",name:"Equal"},{value:"col-auto",name:"Variable"}].concat(r([1,2,3,4,5,6,7,8,9,10,11,12].map(function(e){return{value:"col-"+e,name:e+"/12"}}))),label:"XS Width"},{type:"class_select",options:[{value:"",name:"None"},{value:"col-sm",name:"Equal"},{value:"col-sm-auto",name:"Variable"}].concat(r([1,2,3,4,5,6,7,8,9,10,11,12].map(function(e){return{value:"col-sm-"+e,name:e+"/12"}}))),label:"SM Width"},{type:"class_select",options:[{value:"",name:"None"},{value:"col-md",name:"Equal"},{value:"col-md-auto",name:"Variable"}].concat(r([1,2,3,4,5,6,7,8,9,10,11,12].map(function(e){return{value:"col-md-"+e,name:e+"/12"}}))),label:"MD Width"},{type:"class_select",options:[{value:"",name:"None"},{value:"col-lg",name:"Equal"},{value:"col-lg-auto",name:"Variable"}].concat(r([1,2,3,4,5,6,7,8,9,10,11,12].map(function(e){return{value:"col-lg-"+e,name:e+"/12"}}))),label:"LG Width"},{type:"class_select",options:[{value:"",name:"None"},{value:"col-xl",name:"Equal"},{value:"col-xl-auto",name:"Variable"}].concat(r([1,2,3,4,5,6,7,8,9,10,11,12].map(function(e){return{value:"col-xl-"+e,name:e+"/12"}}))),label:"XL Width"},{type:"class_select",options:[{value:"",name:"None"}].concat(r([0,1,2,3,4,5,6,7,8,9,10,11,12].map(function(e){return{value:"offset-"+e,name:e+"/12"}}))),label:"XS Offset"},{type:"class_select",options:[{value:"",name:"None"}].concat(r([0,1,2,3,4,5,6,7,8,9,10,11,12].map(function(e){return{value:"offset-sm-"+e,name:e+"/12"}}))),label:"SM Offset"},{type:"class_select",options:[{value:"",name:"None"}].concat(r([0,1,2,3,4,5,6,7,8,9,10,11,12].map(function(e){return{value:"offset-md-"+e,name:e+"/12"}}))),label:"MD Offset"},{type:"class_select",options:[{value:"",name:"None"}].concat(r([0,1,2,3,4,5,6,7,8,9,10,11,12].map(function(e){return{value:"offset-lg-"+e,name:e+"/12"}}))),label:"LG Offset"},{type:"class_select",options:[{value:"",name:"None"}].concat(r([0,1,2,3,4,5,6,7,8,9,10,11,12].map(function(e){return{value:"offset-xl-"+e,name:e+"/12"}}))),label:"XL Offset"}].concat(g.prototype.defaults.traits)})},{isComponent:function(e){var t=!1;if(e&&e.classList&&e.classList.forEach(function(e){("col"==e||e.match(/^col-/))&&(t=!0)}),t)return{type:"column"}}}),view:h}),c.addType("column_break",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Column Break",tagName:"div",classes:["w-100"]})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("w-100"))return{type:"column_break"}}}),view:h}),c.addType("media_object",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Media Object",tagName:"div",classes:["media"]})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("media"))return{type:"media"}}}),view:h}),c.addType("media_body",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Media Body",tagName:"div",classes:["media-body"]})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("media-body"))return{type:"media_body"}}}),view:h}))),f.components&&(p.alert&&c.addType("alert",{model:b.extend({defaults:Object.assign({},b.prototype.defaults,{"custom-name":"Alert",tagName:"div",classes:["alert"],traits:[{type:"class_select",options:[{value:"",name:"None"}].concat(r(n.map(function(e){return{value:"alert-"+e,name:l.default.capitalize(e)}}))),label:"Context"}].concat(b.prototype.defaults.traits)})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("alert"))return{type:"alert"}}}),view:y}),p.badge&&c.addType("badge",{model:b.extend({defaults:Object.assign({},b.prototype.defaults,{"custom-name":"Badge",tagName:"span",classes:["badge"],traits:[{type:"class_select",options:[{value:"",name:"None"}].concat(r(n.map(function(e){return{value:"badge-"+e,name:l.default.capitalize(e)}}))),label:"Context"},{type:"class_select",options:[{value:"",name:"Default"},{value:"badge-pill",name:"Pill"}],label:"Shape"}].concat(b.prototype.defaults.traits)})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("badge"))return{type:"badge"}}}),view:y}),p.button&&c.addType("button",{model:w.extend({defaults:Object.assign({},w.prototype.defaults,{"custom-name":"Button",attributes:{role:"button"},classes:["btn"],traits:[{type:"class_select",options:[{value:"",name:"None"}].concat(r(n.map(function(e){return{value:"btn-"+e,name:l.default.capitalize(e)}})),r(n.map(function(e){return{value:"btn-outline-"+e,name:l.default.capitalize(e)+" (Outline)"}}))),label:"Context"},{type:"class_select",options:[{value:"",name:"Default"}].concat(r(Object.keys(o).map(function(e){return{value:"btn-"+e,name:o[e]}}))),label:"Size"},{type:"class_select",options:[{value:"",name:"Inline"},{value:"btn-block",name:"Block"}],label:"Width"}].concat(w.prototype.defaults.traits)}),afterChange:function(e){"button"==this.attributes.type&&0==this.attributes.classes.filter(function(e){return"btn"==e.id}).length&&this.changeType("link")}},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("btn"))return{type:"button"}}}),view:_}),p.button_group&&c.addType("button_group",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Button Group",tagName:"div",classes:["btn-group"],droppable:".btn",attributes:{role:"group"},traits:[{type:"class_select",options:[{value:"",name:"Default"}].concat(r(Object.keys(o).map(function(e){return{value:"btn-group-"+e,name:o[e]}}))),label:"Size"},{type:"class_select",options:[{value:"",name:"Horizontal"},{value:"btn-group-vertical",name:"Vertical"}],label:"Size"},{type:"Text",label:"ARIA Label",name:"aria-label",placeholder:"A group of buttons"}].concat(g.prototype.defaults.traits)})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("btn-group"))return{type:"button_group"}}}),view:h}),p.button_toolbar&&c.addType("button_toolbar",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Button Toolbar",tagName:"div",classes:["btn-toolbar"],droppable:".btn-group",attributes:{role:"toolbar"},traits:[{type:"Text",label:"ARIA Label",name:"aria-label",placeholder:"A toolbar of button groups"}].concat(g.prototype.defaults.traits)})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("btn-toolbar"))return{type:"button_toolbar"}}}),view:h}),p.card&&(c.addType("card",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Card",classes:["card"],traits:[{type:"checkbox",label:"Image Top",name:"card-img-top",changeProp:1},{type:"checkbox",label:"Header",name:"card-header",changeProp:1},{type:"checkbox",label:"Image",name:"card-img",changeProp:1},{type:"checkbox",label:"Image Overlay",name:"card-img-overlay",changeProp:1},{type:"checkbox",label:"Body",name:"card-body",changeProp:1},{type:"checkbox",label:"Footer",name:"card-footer",changeProp:1},{type:"checkbox",label:"Image Bottom",name:"card-img-bottom",changeProp:1}].concat(g.prototype.defaults.traits)}),init2:function(){this.listenTo(this,"change:card-img-top",this.cardImageTop),this.listenTo(this,"change:card-header",this.cardHeader),this.listenTo(this,"change:card-img",this.cardImage),this.listenTo(this,"change:card-img-overlay",this.cardImageOverlay),this.listenTo(this,"change:card-body",this.cardBody),this.listenTo(this,"change:card-footer",this.cardFooter),this.listenTo(this,"change:card-img-bottom",this.cardImageBottom),this.components().comparator="card-order",this.set("card-img-top",!0),this.set("card-body",!0)},cardImageTop:function(){this.createCardComponent("card-img-top")},cardHeader:function(){this.createCardComponent("card-header")},cardImage:function(){this.createCardComponent("card-img")},cardImageOverlay:function(){this.createCardComponent("card-img-overlay")},cardBody:function(){this.createCardComponent("card-body")},cardFooter:function(){this.createCardComponent("card-footer")},cardImageBottom:function(){this.createCardComponent("card-img-bottom")},createCardComponent:function(e){var t=this.get(e),n=e.replace(/-/g,"_").replace(/img/g,"image"),a=this.components(),r=a.filter(function(e){return e.attributes.type==n})[0];if(t&&!r){var o=a.add({type:n}),i=o.components();"card-header"==e&&i.add({type:"header",tagName:"h4",style:{"margin-bottom":"0px"},content:"Card Header"}),"card-img-overlay"==e&&(i.add({type:"header",tagName:"h4",classes:["card-title"],content:"Card title"}),i.add({type:"text",tagName:"p",classes:["card-text"],content:"Some quick example text to build on the card title and make up the bulk of the card's content."})),"card-body"==e&&(i.add({type:"header",tagName:"h4",classes:["card-title"],content:"Card title"}),i.add({type:"header",tagName:"h6",classes:["card-subtitle","text-muted","mb-2"],content:"Card subtitle"}),i.add({type:"text",tagName:"p",classes:["card-text"],content:"Some quick example text to build on the card title and make up the bulk of the card's content."}),i.add({type:"link",classes:["card-link"],href:"#",content:"Card link"}),i.add({type:"link",classes:["card-link"],href:"#",content:"Another link"})),this.order()}else t||r.destroy()},order:function(){}},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("card"))return{type:"card"}}}),view:h}),c.addType("card_image_top",{model:j.extend({defaults:Object.assign({},j.prototype.defaults,{"custom-name":"Card Image Top",classes:["card-img-top"],"card-order":1})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("card-img-top"))return{type:"card_image_top"}}}),view:k}),c.addType("card_header",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Card Header",classes:["card-header"],"card-order":2})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("card-header"))return{type:"card_header"}}}),view:h}),c.addType("card_image",{model:j.extend({defaults:Object.assign({},j.prototype.defaults,{"custom-name":"Card Image",classes:["card-img"],"card-order":3})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("card-img"))return{type:"card_image"}}}),view:k}),c.addType("card_image_overlay",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Card Image Overlay",classes:["card-img-overlay"],"card-order":4})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("card-img-overlay"))return{type:"card_image_overlay"}}}),view:h}),c.addType("card_body",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Card Body",classes:["card-body"],"card-order":5})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("card-body"))return{type:"card_body"}}}),view:h}),c.addType("card_footer",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Card Footer",classes:["card-footer"],"card-order":6})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("card-footer"))return{type:"card_footer"}}}),view:h}),c.addType("card_image_bottom",{model:j.extend({defaults:Object.assign({},j.prototype.defaults,{"custom-name":"Card Image Bottom",classes:["card-img-bottom"],"card-order":7})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("card-img-bottom"))return{type:"card_image_bottom"}}}),view:k}),c.addType("card_container",{model:g.extend({defaults:Object.assign({},g.prototype.defaults,{"custom-name":"Card Container",classes:["card-group"],droppable:".card",traits:[{type:"class_select",options:[{value:"card-group",name:"Group"},{value:"card-deck",name:"Deck"},{value:"card-columns",name:"Columns"}],label:"Layout"}].concat(g.prototype.defaults.traits)})},{isComponent:function(e){if(e&&e.classList&&i.default.intersection(e.classList,["card-group","card-deck","card-columns"]).length)return{type:"card_container"}}}),view:h})),p.collapse&&(0,u.default)(e,t),p.dropdown&&(0,d.default)(e,t)),f.typography&&(p.header&&c.addType("header",{model:b.extend({defaults:Object.assign({},b.prototype.defaults,{"custom-name":"Header",tagName:"h1",traits:[{type:"select",options:[{value:"h1",name:"One (largest)"},{value:"h2",name:"Two"},{value:"h3",name:"Three"},{value:"h4",name:"Four"},{value:"h5",name:"Five"},{value:"h6",name:"Six (smallest)"}],label:"Size",name:"tagName",changeProp:1},{type:"class_select",options:[{value:"",name:"None"},{value:"display-1",name:"One (largest)"},{value:"display-2",name:"Two "},{value:"display-3",name:"Three "},{value:"display-4",name:"Four (smallest)"}],label:"Display Heading"}].concat(b.prototype.defaults.traits)})},{isComponent:function(e){if(e&&["H1","H2","H3","H4","H5","H6"].includes(e.tagName))return{type:"header"}}}),view:y}),p.paragraph&&c.addType("paragraph",{model:b.extend({defaults:Object.assign({},b.prototype.defaults,{"custom-name":"Paragraph",tagName:"p",traits:[{type:"class_select",options:[{value:"",name:"No"},{value:"lead",name:"Yes"}],label:"Lead?"}].concat(b.prototype.defaults.traits)})},{isComponent:function(e){if(e&&e.tagName&&"P"==e.tagName)return{type:"paragraph"}}}),view:y}))}},function(e,t,n){var a=n(0);e.exports=function(e){return a(e).replace(/<\/?[^>]+>/g,"")}},function(e,t){e.exports=function(e,t){return null==e?[]:(e=String(e),t=~~t,t>0?e.match(new RegExp(".{1,"+t+"}","g")):[e])}},function(e,t,n){var a=n(1);e.exports=function(e){return a(e).replace(/\s\s+/g," ")}},function(e,t,n){var a=n(0);e.exports=function(e,t){return e=a(e),t=a(t),0===e.length||0===t.length?0:e.split(t).length-1}},function(e,t,n){var a=n(0);e.exports=function(e){return a(e).replace(/\S/g,function(e){return e===e.toUpperCase()?e.toLowerCase():e.toUpperCase()})}},function(e,t,n){var a=n(0),r=n(35),o="[";for(var i in r)o+=i;o+="]";var s=new RegExp(o,"g");e.exports=function(e){return a(e).replace(s,function(e){return"&"+r[e]+";"})}},function(e,t){var n={"¢":"cent","£":"pound","¥":"yen","€":"euro","©":"copy","®":"reg","<":"lt",">":"gt",'"':"quot","&":"amp","'":"#39"};e.exports=n},function(e,t,n){var a=n(0),r=n(37);e.exports=function(e){return a(e).replace(/\&([^;]+);/g,function(e,t){var n;return t in r?r[t]:(n=t.match(/^#x([\da-fA-F]+)$/))?String.fromCharCode(parseInt(n[1],16)):(n=t.match(/^#(\d+)$/))?String.fromCharCode(~~n[1]):e})}},function(e,t){var n={nbsp:" ",cent:"¢",pound:"£",yen:"¥",euro:"€",copy:"©",reg:"®",lt:"<",gt:">",quot:'"',amp:"&",apos:"'"};e.exports=n},function(e,t,n){var a=n(13);e.exports=function(e,t,n){return a(e,t,0,n)}},function(e,t,n){var a=n(0);e.exports=function(e,t,n,r){var o=!0===r?"gi":"g",i=new RegExp(t,o);return a(e).replace(i,n)}},function(e,t,n){var a=n(0);e.exports=function(e,t){return""===t||-1!==a(e).indexOf(t)}},function(e,t,n){var a=n(0),r=[].slice;e.exports=function(){var e=r.call(arguments),t=e.shift();return e.join(a(t))}},function(e,t){e.exports=function(e){return null==e?[]:String(e).split(/\r\n?|\n/)}},function(e,t,n){function a(e){for(var t=e.match(/^[\s\\t]*/gm),n=t[0].length,a=1;a=0&&e.indexOf(t,n)===n}},function(e,t,n){var a=n(15);e.exports=function(e){return a(e,-1)}},function(e,t,n){var a=n(15);e.exports=function(e){return a(e,1)}},function(e,t,n){var a=n(0);e.exports=function(e){return a(e).toLowerCase().replace(/(?:^|\s|-)\S/g,function(e){return e.toUpperCase()})}},function(e,t,n){var a=n(5),r=n(16),o=n(0);e.exports=function(e){return e=o(e),a(r(e.replace(/[\W_]/g," ")).replace(/\s/g,""))}},function(e,t,n){var a=n(5),r=n(17),o=n(1);e.exports=function(e){return a(o(r(e).replace(/_id$/,"").replace(/_/g," ")))}},function(e,t,n){var a=n(0),r=n(6),o=String.prototype.trimLeft;e.exports=function(e,t){return e=a(e),!t&&o?o.call(e):(t=r(t),e.replace(new RegExp("^"+t+"+"),""))}},function(e,t,n){var a=n(0);e.exports=function(e,t,n){return e=a(e),n=n||"...",t=~~t,e.length>t?e.slice(0,t)+n:e}},function(e,t,n){var a=n(0),r=n(8);e.exports=function(e,t,n){if(e=a(e),t=~~t,n=null!=n?String(n):"...",e.length<=t)return e;var o=function(e){return e.toUpperCase()!==e.toLowerCase()?"A":" "},i=e.slice(0,t+1).replace(/.(?=\W*\w*$)/g,o);return i=i.slice(i.length-2).match(/\w\w/)?i.replace(/\s*\S+$/,""):r(i.slice(0,i.length-1)),(i+n).length>e.length?e:e.slice(0,i.length)+n}},function(e,t,n){var a=n(9),r=n(1);e.exports=function(e,t){return a(e)?[]:r(e,t).split(t||/\s+/)}},function(e,t,n){var a=n(3);e.exports=function(e,t,n){return a(e,t,n)}},function(e,t,n){var a=n(3);e.exports=function(e,t,n){return a(e,t,n,"right")}},function(e,t,n){var a=n(3);e.exports=function(e,t,n){return a(e,t,n,"both")}},function(e,t,n){var a=n(20);e.exports=a(n(21).sprintf,"sprintf() will be removed in the next major release, use the sprintf-js package instead.")},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var a=n(20);e.exports=a(n(21).vsprintf,"vsprintf() will be removed in the next major release, use the sprintf-js package instead.")},function(e,t){e.exports=function(e,t){if(null==e)return 0;var n=Math.pow(10,isFinite(t)?t:0);return Math.round(e*n)/n}},function(e,t){e.exports=function(e,t,n,a){if(isNaN(e)||null==e)return"";e=e.toFixed(~~t),a="string"==typeof a?a:",";var r=e.split("."),o=r[0],i=r[1]?(n||".")+r[1]:"";return o.replace(/(\d)(?=(?:\d{3})+$)/g,"$1"+a)+i}},function(e,t,n){var a=n(0);e.exports=function(e,t){e=a(e),t=a(t);var n=t?e.indexOf(t):-1;return~n?e.slice(n+t.length,e.length):e}},function(e,t,n){var a=n(0);e.exports=function(e,t){e=a(e),t=a(t);var n=t?e.lastIndexOf(t):-1;return~n?e.slice(n+t.length,e.length):e}},function(e,t,n){var a=n(0);e.exports=function(e,t){e=a(e),t=a(t);var n=t?e.indexOf(t):-1;return~n?e.slice(0,n):e}},function(e,t,n){var a=n(0);e.exports=function(e,t){e=a(e),t=a(t);var n=e.lastIndexOf(t);return~n?e.slice(0,n):e}},function(e,t,n){var a=n(22);e.exports=function(e,t,n){return a(e,t,n,!0)}},function(e,t,n){var a=n(1),r=n(18),o=n(12);e.exports=function(e){return a(r(o(e).replace(/[^\w\s-]/g,"-").toLowerCase()),"-")}},function(e,t,n){var a=n(23);e.exports=function(e,t){return a(e,t||'"')}},function(e,t){e.exports=function(e,t){return t=t||'"',e[0]===t&&e[e.length-1]===t?e.slice(1,e.length-1):e}},function(e,t,n){var a=n(0),r=n(19);e.exports=function(e,t,n){if(e=a(e),t=~~t,null==n)return r(e,t);for(var o=[];t>0;o[--t]=e);return o.join(n)}},function(e,t){e.exports=function(e,t){if(e==t)return 0;if(!e)return-1;if(!t)return 1;for(var n=/(\.\d+|\d+|\D+)/g,a=String(e).match(n),r=String(t).match(n),o=Math.min(a.length,r.length),i=0;iu?1:-1:sl&&(o=l),l=n[i+1]+1,o>l&&(o=l),n[i]=s}n[i]=o}return o}},function(e,t,n){function a(e,t){var n,a,r=e.toLowerCase();for(t=[].concat(t),n=0;n0&&(n+=o),n+=e.charAt(c),c++;if(l)for(;c%r>0;)n+=" ",c++;return n}var u=e.split(" "),p=0;for(n="";u.length>0;){if(1+u[0].length+p>r&&p>0){if(s)n+=" ",p++;else if(l)for(;p0&&(n+=" ",p++),n+=u[0],p+=u[0].length,u.shift()}if(l)for(;p1&&void 0!==arguments[1]&&arguments[1],e.DomComponents),n=t.getType("default"),a=n.model,r=n.view;t.addType("collapse",{model:a.extend({defaults:Object.assign({},a.prototype.defaults,{"custom-name":"Dropdown",classes:["collapse"],droppable:!0,traits:[{type:"class_select",options:[{value:"",name:"Closed"},{value:"show",name:"Open"}],label:"Initial state"}].concat(a.prototype.defaults.traits)})},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("dropdown"))return{type:"dropdown"}}}),view:r.extend({})})}},function(e,t,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(2),o=(a(r),n(4));a(o);t.default=function(e){var t=(arguments.length>1&&void 0!==arguments[1]&&arguments[1],e.DomComponents),n=t.getType("default"),a=n.model,r=n.view;t.addType("dropdown",{model:a.extend({defaults:Object.assign({},a.prototype.defaults,{"custom-name":"Dropdown",classes:["dropdown"],droppable:"a, button, .dropdown-menu",traits:[{type:"class_select",options:[{value:"",name:"Closed"},{value:"show",name:"Open"}],label:"Initial state"}].concat(a.prototype.defaults.traits)}),init2:function(){window.asdf=this;var e={type:"button",content:"Click to toggle",classes:["btn","dropdown-toggle"]},t=(this.append(e)[0],{type:"dropdown_menu"});this.append(t)[0];this.setupToggle(null,null,{force:!0});var n=this.components();n.bind("add",this.setupToggle.bind(this)),n.bind("change",this.setupToggle.bind(this)),n.bind("remove",this.setupToggle.bind(this));var a=this.get("classes");a.bind("add",this.setupToggle.bind(this)),a.bind("change",this.setupToggle.bind(this)),a.bind("remove",this.setupToggle.bind(this))},setupToggle:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=this.components().filter(function(e){return e.getAttributes().class.split(" ").includes("dropdown-toggle")})[0],r=this.components().filter(function(e){return e.getAttributes().class.split(" ").includes("dropdown-menu")})[0];if((!0===n.force||!0!==n.ignore)&&a&&r){var o=function(e){var t=e._events["change:attributes"];return!!t&&0!=t.filter(function(e){return"setupToggle"==e.callback.name}).length};o(a)||this.listenTo(a,"change:attributes",this.setupToggle),o(r)||this.listenTo(r,"change:attributes",this.setupToggle);var i=a.getAttributes();i.role="button";var s=r.getAttributes();i.hasOwnProperty("data-toggle")||(i["data-toggle"]="dropdown"),i.hasOwnProperty("aria-haspopup")||(i["aria-haspopup"]=!0);var l=this.getAttributes().class.split(" ");i["aria-expanded"]=l.includes("show"),a.set("attributes",i,{ignore:!0}),i.hasOwnProperty("id")?s["aria-labelledby"]=i.id:delete s["aria-labelledby"],r.set("attributes",s,{ignore:!0})}}},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("dropdown"))return{type:"dropdown"}}}),view:r.extend({})}),t.addType("dropdown_menu",{model:a.extend({defaults:Object.assign({},a.prototype.defaults,{"custom-name":"Dropdown Menu",classes:["dropdown-menu"],draggable:".dropdown",droppable:!0}),init2:function(){var e={type:"header",tagName:"h6",classes:["dropdown-header"],content:"Dropdown header"},t={type:"link",classes:["dropdown-item"],content:"Dropdown item"},n={type:"default",classes:["dropdown-divider"]};this.append(e),this.append(t),this.append(n),this.append(t)}},{isComponent:function(e){if(e&&e.classList&&e.classList.contains("dropdown-menu"))return{type:"dropdown_menu"}}}),view:r})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t,a=e.BlockManager,r=n.blocks,o=n.blockCategories;o.layout&&(r.container&&a.add("container").set({label:n.labels.container,category:"Layout",attributes:{class:"fa fa-columns"},content:{type:"container",classes:["container"]}}),r.row&&a.add("row").set({label:n.labels.row,category:"Layout",attributes:{class:"fa fa-columns"},content:{type:"row",classes:["row"]}}),r.column&&a.add("column").set({label:n.labels.column,category:"Layout",attributes:{class:"fa fa-columns"},content:{type:"column",classes:["col"]}}),r.column_break&&a.add("column_break").set({label:n.labels.column_break,category:"Layout",attributes:{class:"fa fa-columns"},content:{type:"column_break"}}),r.media_object&&a.add("media_object").set({label:n.labels.media_object,category:"Layout",attributes:{class:"fa fa-columns"},content:'
\n \n
\n
Media heading
\n
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
\n
\n
'})),o.components&&(r.alert&&a.add("alert",{label:n.labels.alert,category:"Components",attributes:{class:"fa fa-exclamation-triangle"},content:{type:"alert",content:"This is an alert—check it out!"}}),r.badge&&a.add("badge",{label:n.labels.badge,category:"Components",attributes:{class:"fa fa-certificate"},content:{type:"badge",content:"New!"}}),r.button&&a.add("button",{label:n.labels.button,category:"Components",attributes:{class:"fa fa-link"},content:{type:"button",content:"Click me!"}}),r.button_group&&a.add("button_group",{label:n.labels.button_group,category:"Components",attributes:{class:"fa fa-link"},content:{type:"button_group"}}),r.button_toolbar&&a.add("button_toolbar",{label:n.labels.button_toolbar,category:"Components",attributes:{class:"fa fa-link"},content:{type:"button_toolbar"}}),r.card&&(a.add("card",{label:n.labels.card,category:"Components",attributes:{class:"fa fa-credit-card"},content:{type:"card"}}),a.add("card_container",{label:n.labels.card_container,category:"Components",attributes:{class:"fa fa-credit-card"},content:{type:"card_container"}})),r.collapse&&a.add("collapse",{label:n.labels.collapse,category:"Components",attributes:{class:"fa fa-compress"},content:{type:"collapse"}}),r.dropdown&&a.add("dropdown",{label:n.labels.dropdown,category:"Components",attributes:{class:"fa fa-caret-down"},content:{type:"dropdown"}})),o.typography&&(r.text&&a.add("text",{label:n.labels.text,category:"Typography",attributes:{class:"fa fa-font"},content:{type:"text",content:"Insert your text here"}}),r.header&&a.add("header",{label:n.labels.header,category:"Typography",attributes:{class:"fa fa-header"},content:{type:"header",content:"Bootstrap heading"}}),r.paragraph&&a.add("paragraph",{label:n.labels.paragraph,category:"Typography",attributes:{class:"fa fa-paragraph"},content:{type:"paragraph",content:"Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus."}})),o.basic&&(r.link&&a.add("link",{label:n.labels.link,category:"Basic",attributes:{class:"fa fa-link"},content:{type:"link",content:"Link text"}}),r.image&&a.add("image",{label:n.labels.image,category:"Basic",attributes:{class:"fa fa-picture-o"},content:{type:"image"}}))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t,a=e.DeviceManager;if(n.gridDevices&&(a.add("Extra Small","575px"),a.add("Small","767px"),a.add("Medium","991px"),a.add("Large","1199px"),a.add("Extra Large","100%"),n.gridDevicesPanel)){var r=e.Panels,o=e.Commands;r.addPanel({id:"devices-buttons"}).get("buttons").add([{id:"deviceXl",command:"set-device-xl",className:"fa fa-desktop",text:"XL",attributes:{title:"Extra Large"},active:1},{id:"deviceLg",command:"set-device-lg",className:"fa fa-desktop",attributes:{title:"Large"}},{id:"deviceMd",command:"set-device-md",className:"fa fa-tablet",attributes:{title:"Medium"}},{id:"deviceSm",command:"set-device-sm",className:"fa fa-mobile",attributes:{title:"Small"}},{id:"deviceXs",command:"set-device-xs",className:"fa fa-mobile",attributes:{title:"Extra Small"}}]),o.add("set-device-xs",{run:function(e){e.setDevice("Extra Small")}}),o.add("set-device-sm",{run:function(e){e.setDevice("Small")}}),o.add("set-device-md",{run:function(e){e.setDevice("Medium")}}),o.add("set-device-lg",{run:function(e){e.setDevice("Large")}}),o.add("set-device-xl",{run:function(e){e.setDevice("Extra Large")}})}}}])}); -------------------------------------------------------------------------------- /dist/grapesjs-html-block.js: -------------------------------------------------------------------------------- 1 | grapesjs.plugins.add('html-block', function(editor, options) { 2 | options = options || {}; 3 | 4 | addHTMLCodeEditor(); 5 | addHTMLCodeComponent(); 6 | addHTMLCodeBlock(); 7 | 8 | function addHTMLCodeEditor() { 9 | editor.Commands.add("open-html-code-editor", { 10 | run: function(editor, sender, data) { 11 | var component = editor.getSelected(); 12 | 13 | var codeViewer = editor.CodeManager.getViewer("CodeMirror").clone(); 14 | codeViewer.set({ 15 | codeName: "htmlmixed", 16 | theme: "hopscotch", 17 | readOnly: false 18 | }); 19 | 20 | var modalContent = document.createElement("div"); 21 | 22 | var editorTextArea = document.createElement("textarea"); 23 | 24 | var saveButton = document.createElement("button"); 25 | saveButton.innerHTML = "Save"; 26 | saveButton.className = "gjs-btn-prim"; 27 | saveButton.style = "margin-top: 8px;"; 28 | saveButton.onclick = function() { 29 | component.set("content", ""); 30 | component.components(codeViewer.editor.getValue()); 31 | editor.Modal.close(); 32 | }; 33 | 34 | modalContent.appendChild(editorTextArea); 35 | modalContent.appendChild(saveButton); 36 | 37 | codeViewer.init(editorTextArea); 38 | 39 | var htmlContent = document.createElement("div"); 40 | htmlContent.innerHTML = component.toHTML(); 41 | htmlContent = htmlContent.firstChild.innerHTML; 42 | codeViewer.setContent(htmlContent); 43 | 44 | editor.Modal 45 | .setTitle("Edit HTML") 46 | .setContent(modalContent) 47 | .open(); 48 | 49 | codeViewer.editor.refresh(); 50 | } 51 | }); 52 | }; 53 | 54 | function addHTMLCodeComponent() { 55 | var defaultType = editor.DomComponents.getType('default'); 56 | 57 | var _initToolbar = defaultType.model.prototype.initToolbar; 58 | 59 | editor.DomComponents.addType('html-code', { 60 | model: defaultType.model.extend({ 61 | initToolbar(args) { 62 | _initToolbar.apply(this, args); 63 | 64 | var toolbar = this.get("toolbar"); 65 | toolbar.push({ 66 | attributes: { "class": "fa fa-code" }, 67 | command: "open-html-code-editor" 68 | }); 69 | this.set("toolbar", toolbar); 70 | } 71 | }, { 72 | isComponent: function(el) { 73 | if (typeof el.hasAttribute == "function" && el.hasAttribute("data-html-code")) { 74 | return {type: "html-code"}; 75 | } 76 | } 77 | }), 78 | view: defaultType.view 79 | }); 80 | 81 | }; 82 | 83 | function addHTMLCodeBlock() { 84 | editor.BlockManager.add("html-code", { 85 | category: 'Tools', 86 | attributes: {class: "fa fa-code"}, 87 | label: "HTML Code", 88 | content: '
Edit my HTML content
' 89 | }); 90 | }; 91 | 92 | }); -------------------------------------------------------------------------------- /dist/img/btn.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/img/btn.PNG -------------------------------------------------------------------------------- /dist/img/c1.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elvincth/MD-Builder/fcff1172d1bdfca4669fe3aad39a3686f891fab6/dist/img/c1.PNG -------------------------------------------------------------------------------- /dist/md.js: -------------------------------------------------------------------------------- 1 | /** 2 | * material-design-lite - Material Design Components in CSS, JS and HTML 3 | * @version v1.3.0 4 | * @license Apache-2.0 5 | * @copyright 2015 Google, Inc. 6 | * @link https://github.com/google/material-design-lite 7 | */ 8 | !function(){"use strict";function e(e,t){if(e){if(t.element_.classList.contains(t.CssClasses_.MDL_JS_RIPPLE_EFFECT)){var s=document.createElement("span");s.classList.add(t.CssClasses_.MDL_RIPPLE_CONTAINER),s.classList.add(t.CssClasses_.MDL_JS_RIPPLE_EFFECT);var i=document.createElement("span");i.classList.add(t.CssClasses_.MDL_RIPPLE),s.appendChild(i),e.appendChild(s)}e.addEventListener("click",function(s){if("#"===e.getAttribute("href").charAt(0)){s.preventDefault();var i=e.href.split("#")[1],n=t.element_.querySelector("#"+i);t.resetTabState_(),t.resetPanelState_(),e.classList.add(t.CssClasses_.ACTIVE_CLASS),n.classList.add(t.CssClasses_.ACTIVE_CLASS)}})}}function t(e,t,s,i){function n(){var n=e.href.split("#")[1],a=i.content_.querySelector("#"+n);i.resetTabState_(t),i.resetPanelState_(s),e.classList.add(i.CssClasses_.IS_ACTIVE),a.classList.add(i.CssClasses_.IS_ACTIVE)}if(i.tabBar_.classList.contains(i.CssClasses_.JS_RIPPLE_EFFECT)){var a=document.createElement("span");a.classList.add(i.CssClasses_.RIPPLE_CONTAINER),a.classList.add(i.CssClasses_.JS_RIPPLE_EFFECT);var l=document.createElement("span");l.classList.add(i.CssClasses_.RIPPLE),a.appendChild(l),e.appendChild(a)}i.tabBar_.classList.contains(i.CssClasses_.TAB_MANUAL_SWITCH)||e.addEventListener("click",function(t){"#"===e.getAttribute("href").charAt(0)&&(t.preventDefault(),n())}),e.show=n}var s={upgradeDom:function(e,t){},upgradeElement:function(e,t){},upgradeElements:function(e){},upgradeAllRegistered:function(){},registerUpgradedCallback:function(e,t){},register:function(e){},downgradeElements:function(e){}};s=function(){function e(e,t){for(var s=0;s0&&l(t.children))}function o(t){var s="undefined"==typeof t.widget&&"undefined"==typeof t.widget,i=!0;s||(i=t.widget||t.widget);var n={classConstructor:t.constructor||t.constructor,className:t.classAsString||t.classAsString,cssClass:t.cssClass||t.cssClass,widget:i,callbacks:[]};if(c.forEach(function(e){if(e.cssClass===n.cssClass)throw new Error("The provided cssClass has already been registered: "+e.cssClass);if(e.className===n.className)throw new Error("The provided className has already been registered")}),t.constructor.prototype.hasOwnProperty(C))throw new Error("MDL component classes must not have "+C+" defined as a property.");var a=e(t.classAsString,n);a||c.push(n)}function r(t,s){var i=e(t);i&&i.callbacks.push(s)}function _(){for(var e=0;e0&&this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)&&(e.keyCode===this.Keycodes_.UP_ARROW?(e.preventDefault(),t[t.length-1].focus()):e.keyCode===this.Keycodes_.DOWN_ARROW&&(e.preventDefault(),t[0].focus()))}},d.prototype.handleItemKeyboardEvent_=function(e){if(this.element_&&this.container_){var t=this.element_.querySelectorAll("."+this.CssClasses_.ITEM+":not([disabled])");if(t&&t.length>0&&this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)){var s=Array.prototype.slice.call(t).indexOf(e.target);if(e.keyCode===this.Keycodes_.UP_ARROW)e.preventDefault(),s>0?t[s-1].focus():t[t.length-1].focus();else if(e.keyCode===this.Keycodes_.DOWN_ARROW)e.preventDefault(),t.length>s+1?t[s+1].focus():t[0].focus();else if(e.keyCode===this.Keycodes_.SPACE||e.keyCode===this.Keycodes_.ENTER){e.preventDefault();var i=new MouseEvent("mousedown");e.target.dispatchEvent(i),i=new MouseEvent("mouseup"),e.target.dispatchEvent(i),e.target.click()}else e.keyCode===this.Keycodes_.ESCAPE&&(e.preventDefault(),this.hide())}}},d.prototype.handleItemClick_=function(e){e.target.hasAttribute("disabled")?e.stopPropagation():(this.closing_=!0,window.setTimeout(function(e){this.hide(),this.closing_=!1}.bind(this),this.Constant_.CLOSE_TIMEOUT))},d.prototype.applyClip_=function(e,t){this.element_.classList.contains(this.CssClasses_.UNALIGNED)?this.element_.style.clip="":this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)?this.element_.style.clip="rect(0 "+t+"px 0 "+t+"px)":this.element_.classList.contains(this.CssClasses_.TOP_LEFT)?this.element_.style.clip="rect("+e+"px 0 "+e+"px 0)":this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)?this.element_.style.clip="rect("+e+"px "+t+"px "+e+"px "+t+"px)":this.element_.style.clip=""},d.prototype.removeAnimationEndListener_=function(e){e.target.classList.remove(d.prototype.CssClasses_.IS_ANIMATING)},d.prototype.addAnimationEndListener_=function(){this.element_.addEventListener("transitionend",this.removeAnimationEndListener_),this.element_.addEventListener("webkitTransitionEnd",this.removeAnimationEndListener_)},d.prototype.show=function(e){if(this.element_&&this.container_&&this.outline_){var t=this.element_.getBoundingClientRect().height,s=this.element_.getBoundingClientRect().width;this.container_.style.width=s+"px",this.container_.style.height=t+"px",this.outline_.style.width=s+"px",this.outline_.style.height=t+"px";for(var i=this.Constant_.TRANSITION_DURATION_SECONDS*this.Constant_.TRANSITION_DURATION_FRACTION,n=this.element_.querySelectorAll("."+this.CssClasses_.ITEM),a=0;a0&&this.showSnackbar(this.queuedNotifications_.shift())},C.prototype.cleanup_=function(){this.element_.classList.remove(this.cssClasses_.ACTIVE),setTimeout(function(){this.element_.setAttribute("aria-hidden","true"),this.textElement_.textContent="",Boolean(this.actionElement_.getAttribute("aria-hidden"))||(this.setActionHidden_(!0),this.actionElement_.textContent="",this.actionElement_.removeEventListener("click",this.actionHandler_)),this.actionHandler_=void 0,this.message_=void 0,this.actionText_=void 0,this.active=!1,this.checkQueue_()}.bind(this),this.Constant_.ANIMATION_LENGTH)},C.prototype.setActionHidden_=function(e){e?this.actionElement_.setAttribute("aria-hidden","true"):this.actionElement_.removeAttribute("aria-hidden")},s.register({constructor:C,classAsString:"MaterialSnackbar",cssClass:"mdl-js-snackbar",widget:!0});var u=function(e){this.element_=e,this.init()};window.MaterialSpinner=u,u.prototype.Constant_={MDL_SPINNER_LAYER_COUNT:4},u.prototype.CssClasses_={MDL_SPINNER_LAYER:"mdl-spinner__layer",MDL_SPINNER_CIRCLE_CLIPPER:"mdl-spinner__circle-clipper",MDL_SPINNER_CIRCLE:"mdl-spinner__circle",MDL_SPINNER_GAP_PATCH:"mdl-spinner__gap-patch",MDL_SPINNER_LEFT:"mdl-spinner__left",MDL_SPINNER_RIGHT:"mdl-spinner__right"},u.prototype.createLayer=function(e){var t=document.createElement("div");t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER),t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER+"-"+e);var s=document.createElement("div");s.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER),s.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);var i=document.createElement("div");i.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);var n=document.createElement("div");n.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER),n.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);for(var a=[s,i,n],l=0;l=this.maxRows&&e.preventDefault()},L.prototype.onFocus_=function(e){this.element_.classList.add(this.CssClasses_.IS_FOCUSED)},L.prototype.onBlur_=function(e){this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},L.prototype.onReset_=function(e){this.updateClasses_()},L.prototype.updateClasses_=function(){this.checkDisabled(),this.checkValidity(),this.checkDirty(),this.checkFocus()},L.prototype.checkDisabled=function(){this.input_.disabled?this.element_.classList.add(this.CssClasses_.IS_DISABLED):this.element_.classList.remove(this.CssClasses_.IS_DISABLED)},L.prototype.checkDisabled=L.prototype.checkDisabled,L.prototype.checkFocus=function(){Boolean(this.element_.querySelector(":focus"))?this.element_.classList.add(this.CssClasses_.IS_FOCUSED):this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},L.prototype.checkFocus=L.prototype.checkFocus,L.prototype.checkValidity=function(){this.input_.validity&&(this.input_.validity.valid?this.element_.classList.remove(this.CssClasses_.IS_INVALID):this.element_.classList.add(this.CssClasses_.IS_INVALID))},L.prototype.checkValidity=L.prototype.checkValidity,L.prototype.checkDirty=function(){this.input_.value&&this.input_.value.length>0?this.element_.classList.add(this.CssClasses_.IS_DIRTY):this.element_.classList.remove(this.CssClasses_.IS_DIRTY)},L.prototype.checkDirty=L.prototype.checkDirty,L.prototype.disable=function(){this.input_.disabled=!0,this.updateClasses_()},L.prototype.disable=L.prototype.disable,L.prototype.enable=function(){this.input_.disabled=!1,this.updateClasses_()},L.prototype.enable=L.prototype.enable,L.prototype.change=function(e){this.input_.value=e||"",this.updateClasses_()},L.prototype.change=L.prototype.change,L.prototype.init=function(){if(this.element_&&(this.label_=this.element_.querySelector("."+this.CssClasses_.LABEL),this.input_=this.element_.querySelector("."+this.CssClasses_.INPUT),this.input_)){this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)&&(this.maxRows=parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE),10),isNaN(this.maxRows)&&(this.maxRows=this.Constant_.NO_MAX_ROWS)),this.input_.hasAttribute("placeholder")&&this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER),this.boundUpdateClassesHandler=this.updateClasses_.bind(this),this.boundFocusHandler=this.onFocus_.bind(this),this.boundBlurHandler=this.onBlur_.bind(this),this.boundResetHandler=this.onReset_.bind(this),this.input_.addEventListener("input",this.boundUpdateClassesHandler),this.input_.addEventListener("focus",this.boundFocusHandler),this.input_.addEventListener("blur",this.boundBlurHandler),this.input_.addEventListener("reset",this.boundResetHandler),this.maxRows!==this.Constant_.NO_MAX_ROWS&&(this.boundKeyDownHandler=this.onKeyDown_.bind(this),this.input_.addEventListener("keydown",this.boundKeyDownHandler));var e=this.element_.classList.contains(this.CssClasses_.IS_INVALID);this.updateClasses_(),this.element_.classList.add(this.CssClasses_.IS_UPGRADED),e&&this.element_.classList.add(this.CssClasses_.IS_INVALID),this.input_.hasAttribute("autofocus")&&(this.element_.focus(),this.checkFocus())}},s.register({constructor:L,classAsString:"MaterialTextfield",cssClass:"mdl-js-textfield",widget:!0});var I=function(e){this.element_=e,this.init()};window.MaterialTooltip=I,I.prototype.Constant_={},I.prototype.CssClasses_={IS_ACTIVE:"is-active",BOTTOM:"mdl-tooltip--bottom",LEFT:"mdl-tooltip--left",RIGHT:"mdl-tooltip--right",TOP:"mdl-tooltip--top"},I.prototype.handleMouseEnter_=function(e){var t=e.target.getBoundingClientRect(),s=t.left+t.width/2,i=t.top+t.height/2,n=-1*(this.element_.offsetWidth/2),a=-1*(this.element_.offsetHeight/2);this.element_.classList.contains(this.CssClasses_.LEFT)||this.element_.classList.contains(this.CssClasses_.RIGHT)?(s=t.width/2,i+a<0?(this.element_.style.top="0",this.element_.style.marginTop="0"):(this.element_.style.top=i+"px",this.element_.style.marginTop=a+"px")):s+n<0?(this.element_.style.left="0",this.element_.style.marginLeft="0"):(this.element_.style.left=s+"px",this.element_.style.marginLeft=n+"px"),this.element_.classList.contains(this.CssClasses_.TOP)?this.element_.style.top=t.top-this.element_.offsetHeight-10+"px":this.element_.classList.contains(this.CssClasses_.RIGHT)?this.element_.style.left=t.left+t.width+10+"px":this.element_.classList.contains(this.CssClasses_.LEFT)?this.element_.style.left=t.left-this.element_.offsetWidth-10+"px":this.element_.style.top=t.top+t.height+10+"px",this.element_.classList.add(this.CssClasses_.IS_ACTIVE)},I.prototype.hideTooltip_=function(){this.element_.classList.remove(this.CssClasses_.IS_ACTIVE)},I.prototype.init=function(){if(this.element_){var e=this.element_.getAttribute("for")||this.element_.getAttribute("data-mdl-for");e&&(this.forElement_=document.getElementById(e)),this.forElement_&&(this.forElement_.hasAttribute("tabindex")||this.forElement_.setAttribute("tabindex","0"),this.boundMouseEnterHandler=this.handleMouseEnter_.bind(this),this.boundMouseLeaveAndScrollHandler=this.hideTooltip_.bind(this),this.forElement_.addEventListener("mouseenter",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("touchend",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("mouseleave",this.boundMouseLeaveAndScrollHandler,!1),window.addEventListener("scroll",this.boundMouseLeaveAndScrollHandler,!0),window.addEventListener("touchstart",this.boundMouseLeaveAndScrollHandler))}},s.register({constructor:I,classAsString:"MaterialTooltip",cssClass:"mdl-tooltip"});var f=function(e){this.element_=e,this.init()};window.MaterialLayout=f,f.prototype.Constant_={MAX_WIDTH:"(max-width: 1024px)",TAB_SCROLL_PIXELS:100,RESIZE_TIMEOUT:100,MENU_ICON:"",CHEVRON_LEFT:"chevron_left",CHEVRON_RIGHT:"chevron_right"},f.prototype.Keycodes_={ENTER:13,ESCAPE:27,SPACE:32},f.prototype.Mode_={STANDARD:0,SEAMED:1,WATERFALL:2,SCROLL:3},f.prototype.CssClasses_={CONTAINER:"mdl-layout__container",HEADER:"mdl-layout__header",DRAWER:"mdl-layout__drawer",CONTENT:"mdl-layout__content",DRAWER_BTN:"mdl-layout__drawer-button",ICON:"material-icons",JS_RIPPLE_EFFECT:"mdl-js-ripple-effect",RIPPLE_CONTAINER:"mdl-layout__tab-ripple-container",RIPPLE:"mdl-ripple",RIPPLE_IGNORE_EVENTS:"mdl-js-ripple-effect--ignore-events",HEADER_SEAMED:"mdl-layout__header--seamed",HEADER_WATERFALL:"mdl-layout__header--waterfall",HEADER_SCROLL:"mdl-layout__header--scroll",FIXED_HEADER:"mdl-layout--fixed-header",OBFUSCATOR:"mdl-layout__obfuscator",TAB_BAR:"mdl-layout__tab-bar",TAB_CONTAINER:"mdl-layout__tab-bar-container",TAB:"mdl-layout__tab",TAB_BAR_BUTTON:"mdl-layout__tab-bar-button",TAB_BAR_LEFT_BUTTON:"mdl-layout__tab-bar-left-button",TAB_BAR_RIGHT_BUTTON:"mdl-layout__tab-bar-right-button",TAB_MANUAL_SWITCH:"mdl-layout__tab-manual-switch",PANEL:"mdl-layout__tab-panel",HAS_DRAWER:"has-drawer",HAS_TABS:"has-tabs",HAS_SCROLLING_HEADER:"has-scrolling-header",CASTING_SHADOW:"is-casting-shadow",IS_COMPACT:"is-compact",IS_SMALL_SCREEN:"is-small-screen",IS_DRAWER_OPEN:"is-visible",IS_ACTIVE:"is-active",IS_UPGRADED:"is-upgraded",IS_ANIMATING:"is-animating",ON_LARGE_SCREEN:"mdl-layout--large-screen-only",ON_SMALL_SCREEN:"mdl-layout--small-screen-only"},f.prototype.contentScrollHandler_=function(){if(!this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)){var e=!this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN)||this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);this.content_.scrollTop>0&&!this.header_.classList.contains(this.CssClasses_.IS_COMPACT)?(this.header_.classList.add(this.CssClasses_.CASTING_SHADOW),this.header_.classList.add(this.CssClasses_.IS_COMPACT),e&&this.header_.classList.add(this.CssClasses_.IS_ANIMATING)):this.content_.scrollTop<=0&&this.header_.classList.contains(this.CssClasses_.IS_COMPACT)&&(this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW),this.header_.classList.remove(this.CssClasses_.IS_COMPACT),e&&this.header_.classList.add(this.CssClasses_.IS_ANIMATING))}},f.prototype.keyboardEventHandler_=function(e){e.keyCode===this.Keycodes_.ESCAPE&&this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)&&this.toggleDrawer()},f.prototype.screenSizeHandler_=function(){this.screenSizeMediaQuery_.matches?this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN):(this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN),this.drawer_&&(this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN),this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN)))},f.prototype.drawerToggleHandler_=function(e){if(e&&"keydown"===e.type){if(e.keyCode!==this.Keycodes_.SPACE&&e.keyCode!==this.Keycodes_.ENTER)return;e.preventDefault()}this.toggleDrawer()},f.prototype.headerTransitionEndHandler_=function(){this.header_.classList.remove(this.CssClasses_.IS_ANIMATING)},f.prototype.headerClickHandler_=function(){this.header_.classList.contains(this.CssClasses_.IS_COMPACT)&&(this.header_.classList.remove(this.CssClasses_.IS_COMPACT),this.header_.classList.add(this.CssClasses_.IS_ANIMATING))},f.prototype.resetTabState_=function(e){for(var t=0;t0?c.classList.add(this.CssClasses_.IS_ACTIVE):c.classList.remove(this.CssClasses_.IS_ACTIVE),this.tabBar_.scrollLeft0)return;this.setFrameCount(1);var i,n,a=e.currentTarget.getBoundingClientRect();if(0===e.clientX&&0===e.clientY)i=Math.round(a.width/2),n=Math.round(a.height/2);else{var l=void 0!==e.clientX?e.clientX:e.touches[0].clientX,o=void 0!==e.clientY?e.clientY:e.touches[0].clientY;i=Math.round(l-a.left),n=Math.round(o-a.top)}this.setRippleXY(i,n),this.setRippleStyles(!0),window.requestAnimationFrame(this.animFrameHandler.bind(this))}},S.prototype.upHandler_=function(e){e&&2!==e.detail&&window.setTimeout(function(){this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE)}.bind(this),0)},S.prototype.init=function(){if(this.element_){var e=this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)||(this.rippleElement_=this.element_.querySelector("."+this.CssClasses_.RIPPLE),this.frameCount_=0,this.rippleSize_=0,this.x_=0,this.y_=0,this.ignoringMouseDown_=!1,this.boundDownHandler=this.downHandler_.bind(this),this.element_.addEventListener("mousedown",this.boundDownHandler),this.element_.addEventListener("touchstart",this.boundDownHandler),this.boundUpHandler=this.upHandler_.bind(this),this.element_.addEventListener("mouseup",this.boundUpHandler),this.element_.addEventListener("mouseleave",this.boundUpHandler),this.element_.addEventListener("touchend",this.boundUpHandler),this.element_.addEventListener("blur",this.boundUpHandler),this.getFrameCount=function(){return this.frameCount_},this.setFrameCount=function(e){this.frameCount_=e},this.getRippleElement=function(){return this.rippleElement_},this.setRippleXY=function(e,t){this.x_=e,this.y_=t},this.setRippleStyles=function(t){if(null!==this.rippleElement_){var s,i,n,a="translate("+this.x_+"px, "+this.y_+"px)";t?(i=this.Constant_.INITIAL_SCALE,n=this.Constant_.INITIAL_SIZE):(i=this.Constant_.FINAL_SCALE,n=this.rippleSize_+"px",e&&(a="translate("+this.boundWidth/2+"px, "+this.boundHeight/2+"px)")),s="translate(-50%, -50%) "+a+i,this.rippleElement_.style.webkitTransform=s,this.rippleElement_.style.msTransform=s,this.rippleElement_.style.transform=s,t?this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING):this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING)}},this.animFrameHandler=function(){this.frameCount_-- >0?window.requestAnimationFrame(this.animFrameHandler.bind(this)):this.setRippleStyles(!1)})}},s.register({constructor:S,classAsString:"MaterialRipple",cssClass:"mdl-js-ripple-effect",widget:!1})}(); 10 | //# sourceMappingURL=material.min.js.map -------------------------------------------------------------------------------- /dist/snack.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Snackbar v0.1.10 3 | * http://polonel.com/Snackbar 4 | * 5 | * Copyright 2018 Chris Brame and other contributors 6 | * Released under the MIT license 7 | * https://github.com/polonel/Snackbar/blob/master/LICENSE 8 | */ 9 | !function(a,b){"use strict";"function"==typeof define&&define.amd?define([],function(){return a.Snackbar=b()}):"object"==typeof module&&module.exports?module.exports=a.Snackbar=b():a.Snackbar=b()}(this,function(){var a={};a.current=null;var b={text:"Default Text",textColor:"#FFFFFF",width:"auto",showAction:!0,actionText:"Dismiss",actionTextColor:"#4CAF50",showSecondButton:!1,secondButtonText:"",secondButtonTextColor:"#4CAF50",backgroundColor:"#323232",pos:"bottom-left",duration:5e3,customClass:"",onActionClick:function(a){a.style.opacity=0},onSecondButtonClick:function(a){},onClose:function(a){}};a.show=function(d){var e=c(!0,b,d);a.current&&(a.current.style.opacity=0,setTimeout(function(){var a=this.parentElement;a&& 10 | // possible null if too many/fast Snackbars 11 | a.removeChild(this)}.bind(a.current),500)),a.snackbar=document.createElement("div"),a.snackbar.className="snackbar-container "+e.customClass,a.snackbar.style.width=e.width;var f=document.createElement("p");if(f.style.margin=0,f.style.padding=0,f.style.color=e.textColor,f.style.fontSize="14px",f.style.fontWeight=300,f.style.lineHeight="1em",f.innerHTML=e.text,a.snackbar.appendChild(f),a.snackbar.style.background=e.backgroundColor,e.showSecondButton){var g=document.createElement("button");g.className="action",g.innerHTML=e.secondButtonText,g.style.color=e.secondButtonTextColor,g.addEventListener("click",function(){e.onSecondButtonClick(a.snackbar)}),a.snackbar.appendChild(g)}if(e.showAction){var h=document.createElement("button");h.className="action",h.innerHTML=e.actionText,h.style.color=e.actionTextColor,h.addEventListener("click",function(){e.onActionClick(a.snackbar)}),a.snackbar.appendChild(h)}e.duration&&setTimeout(function(){a.current===this&&(a.current.style.opacity=0, 12 | // When natural remove event occurs let's move the snackbar to its origins 13 | a.current.style.top="-100px",a.current.style.bottom="-100px")}.bind(a.snackbar),e.duration),a.snackbar.addEventListener("transitionend",function(b,c){"opacity"===b.propertyName&&"0"===this.style.opacity&&("function"==typeof e.onClose&&e.onClose(this),this.parentElement.removeChild(this),a.current===this&&(a.current=null))}.bind(a.snackbar)),a.current=a.snackbar,document.body.appendChild(a.snackbar);getComputedStyle(a.snackbar).bottom,getComputedStyle(a.snackbar).top;a.snackbar.style.opacity=1,a.snackbar.className="snackbar-container "+e.customClass+" snackbar-pos "+e.pos},a.close=function(){a.current&&(a.current.style.opacity=0)}; 14 | // Pure JS Extend 15 | // http://gomakethings.com/vanilla-javascript-version-of-jquery-extend/ 16 | var c=function(){var a={},b=!1,c=0,d=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(b=arguments[0],c++);for(var e=function(c){for(var d in c)Object.prototype.hasOwnProperty.call(c,d)&&(b&&"[object Object]"===Object.prototype.toString.call(c[d])?a[d]=extend(!0,a[d],c[d]):a[d]=c[d])};c span::selection, .cm-s-material .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } 24 | .cm-s-material .CodeMirror-line::-moz-selection, .cm-s-material .CodeMirror-line > span::-moz-selection, .cm-s-material .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } 25 | 26 | .cm-s-material .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0); } 27 | .cm-s-material .cm-keyword { color: rgba(199, 146, 234, 1); } 28 | .cm-s-material .cm-operator { color: rgba(233, 237, 237, 1); } 29 | .cm-s-material .cm-variable-2 { color: #80CBC4; } 30 | .cm-s-material .cm-variable-3 { color: #82B1FF; } 31 | .cm-s-material .cm-builtin { color: #DECB6B; } 32 | .cm-s-material .cm-atom { color: #F77669; } 33 | .cm-s-material .cm-number { color: #F77669; } 34 | .cm-s-material .cm-def { color: rgba(233, 237, 237, 1); } 35 | .cm-s-material .cm-string { color: #C3E88D; } 36 | .cm-s-material .cm-string-2 { color: #80CBC4; } 37 | .cm-s-material .cm-comment { color: #546E7A; } 38 | .cm-s-material .cm-variable { color: #82B1FF; } 39 | .cm-s-material .cm-tag { color: #80CBC4; } 40 | .cm-s-material .cm-meta { color: #80CBC4; } 41 | .cm-s-material .cm-attribute { color: #FFCB6B; } 42 | .cm-s-material .cm-property { color: #80CBAE; } 43 | .cm-s-material .cm-qualifier { color: #DECB6B; } 44 | .cm-s-material .cm-variable-3 { color: #DECB6B; } 45 | .cm-s-material .cm-tag { color: rgba(255, 83, 112, 1); } 46 | .cm-s-material .cm-error { 47 | color: rgba(255, 255, 255, 1.0); 48 | background-color: #EC5F67; 49 | } 50 | .cm-s-material .CodeMirror-matchingbracket { 51 | text-decoration: underline; 52 | color: white !important; 53 | } --------------------------------------------------------------------------------