From d47566f5eb6229b41cde051d0e6f9db136c828dd Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Mon, 19 Jul 2021 20:59:40 +0630 Subject: [PATCH 01/27] separate files,make moduler,add laravel-mix,remove electron packager and add electron builder --- .gitignore | 1 + README.md | 3 - dist/gramateria/develop/gramateria.js | 1836 --- dist/gramateria/gram.min.css | 1 - dist/gramateria/gram.min.js | 1 - dist/grapesjs/grapes.min.css | 4 - dist/grapesjs/grapes.min.js | 11 - gramateria/develop/blocks.js | 1017 ++ gramateria/develop/gramateria.js | 819 ++ .../develop/gramateria.scss | 0 gramateria/dist/gram.min.css | 364 + gramateria/dist/gram.min.js | 1493 +++ grapesjs/dist/css/grapes.min.css | 1 + grapesjs/dist/fonts/main-fonts.eot | Bin 0 -> 5798 bytes grapesjs/dist/fonts/main-fonts.svg | 394 + grapesjs/dist/fonts/main-fonts.ttf | Bin 0 -> 5628 bytes grapesjs/dist/fonts/main-fonts.woff | Bin 0 -> 2700 bytes grapesjs/dist/grapes.min.js | 3 + grapesjs/dist/grapes.min.js.map | 1 + .../plugins/gramateria.js | 0 .../plugins/grapesjs-plugin-export.min.js | 0 index.html | 10 +- package-lock.json | 10138 +++++++++++++--- package.json | 50 +- webpack.mix.js | 6 + 25 files changed, 12608 insertions(+), 3545 deletions(-) create mode 100644 .gitignore delete mode 100755 dist/gramateria/develop/gramateria.js delete mode 100644 dist/gramateria/gram.min.css delete mode 100644 dist/gramateria/gram.min.js delete mode 100755 dist/grapesjs/grapes.min.css delete mode 100644 dist/grapesjs/grapes.min.js create mode 100644 gramateria/develop/blocks.js create mode 100755 gramateria/develop/gramateria.js rename dist/gramateria/develop/gramateria.css => gramateria/develop/gramateria.scss (100%) create mode 100644 gramateria/dist/gram.min.css create mode 100644 gramateria/dist/gram.min.js create mode 100755 grapesjs/dist/css/grapes.min.css create mode 100755 grapesjs/dist/fonts/main-fonts.eot create mode 100755 grapesjs/dist/fonts/main-fonts.svg create mode 100755 grapesjs/dist/fonts/main-fonts.ttf create mode 100755 grapesjs/dist/fonts/main-fonts.woff create mode 100755 grapesjs/dist/grapes.min.js create mode 100755 grapesjs/dist/grapes.min.js.map rename {dist/grapesjs => grapesjs}/plugins/gramateria.js (100%) rename {dist/grapesjs => grapesjs}/plugins/grapesjs-plugin-export.min.js (100%) create mode 100644 webpack.mix.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/README.md b/README.md index 4850eb5..24d5d9d 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,6 @@ A drag and drop web builder with materialize design. Grapesjs + Materialize = 🔥 -[Try Gramateria dashboard (Beta)](https://gramateria.github.io "Gramateria dashboard") - - ### Building a desktop app. `Note: You can use Gramateria by opening index.html file with Chrome browser and it works exactly the same as Desktop app.` diff --git a/dist/gramateria/develop/gramateria.js b/dist/gramateria/develop/gramateria.js deleted file mode 100755 index f381f24..0000000 --- a/dist/gramateria/develop/gramateria.js +++ /dev/null @@ -1,1836 +0,0 @@ -var editor = grapesjs.init({ - allowScripts: 1, - showOffsets: 1, - autorender: 0, - noticeOnUnload: 0, - container: '#gjs', - height: '100%', - fromElement: true, - clearOnRender: 0, - plugins: [ - 'gjs-plugin-export' - ], - pluginsOpts: { - 'gjs-plugin-export': { - btnLabel: 'Download Zip', - preHtml: ` - - - - - - - - - - `, - postHtml: ` - - ` - } - }, - canvas: { - styles: ['https://fonts.googleapis.com/css?family=Roboto', 'https://fonts.googleapis.com/icon?family=Material+Icons', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css'], - scripts: ['https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.1/js/materialize.min.js'] - }, - commands: { - defaults: [ -// { -// id: 'open-github', -// run: function (editor, sender) { -// sender.set('active', false); -// window.open('https://github.com/ronaldaug/gramateria', '_blank'); -// } -// }, - { - id: 'undo', - run: function (editor, sender) { - sender.set('active', false); - editor.UndoManager.undo(true); - } - }, { - id: 'redo', - run: function (editor, sender) { - sender.set('active', false); - editor.UndoManager.redo(true); - } - }, { - id: 'clean-all', - run: function (editor, sender) { - sender.set('active', false); - if (confirm('Are you sure to clean the canvas?')) { - var comps = editor.DomComponents.clear(); - } - } - }], - }, - - - assetManager: { - upload: 'https://test.page', - params: { - _token: 'pCYrSwjuiV0t5NVtZpQDY41Gn5lNUwo3it1FIkAj', - }, - assets: [ - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background_ckgyqe.jpg', - date: '2015-02-01', - height: 808, - width: 1440 - }, - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419441/background2_gjvaxs.jpg', - date: '2015-02-01', - height: 800, - width: 1600 - }, - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background3_d0ghix.jpg', - date: '2015-02-01', - height: 743, - width: 1440 - }, - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419446/background4_pzh5ou.jpg', - date: '2015-02-01', - height: 808, - width: 1440 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/0174DF/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/5FB404/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/BF00FF/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/B40431/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/088A68/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/DF7401/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/00BFFF/ffffff/', - height: 350, - width: 250 - } - ] - }, - blockManager: { - blocks: [ - { - id: 'std', - label: 'Starter', - category: 'Section', - content: '' + - ``, - attributes: { - class: 'fa fa-wpforms' - } - }, - { - id: 'parallax', - label: 'Parallax', - category: 'Section', - content: '
' - + '
' - + '' - + '
' - + '
' - + '
' - + '
' - + '

Parallax

' - + '

Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

' - + '
' - + '
' - + '
' - + '
' - + '
' + - '' - + '', - attributes: { - class: 'fa fa-list-alt' - } - } - , - { - id: 'nav', - label: 'Navbar 1', - category: 'Section', - content: '' + - ``, - attributes: { - class: 'fa fa-window-maximize' - } - }, - { - id: 'dropdownNav', - label: 'Navbar 2', - category: 'Section', - content: '' - + '' - + '' - + '' - + '', - attributes: { - class: 'fa fa-toggle-down' - } - } - , - { - id: 'footer', - label: 'Footer', - category: 'Section', - content: '', - attributes: { - class: 'fa fa-desktop' - } - }, - { - id: 'b1', - label: '1 Block', - category: 'Grid', - attributes: { - class: 'fa fa-reorder' - }, - content: `
-
-
` - }, - { - id: 'b2', - label: '2 Blocks', - category: 'Grid', - attributes: { - class: 'fa fa-th-large' - }, - content: `
-
-
-
` - }, - { - id: 'b3', - label: '3 Blocks', - category: 'Grid', - attributes: { - class: 'fa fa-th' - }, - content: '
' - + '
' - + '
' - + '
' - + '
', - }, - { - id: 'b4', - label: '4 Blocks', - category: 'Grid', - attributes: { - class: 'fa fa-calendar' - }, - content: '
' - + '
' - + '
' - + '
' - + '
' - + '
', - }, - { - id: 'b5', - label: '4/8 Block', - category: 'Grid', - attributes: { - class: 'fa fa-th-list' - }, - content: '
' - + '
' - + '
' - + '
', - }, - { - id: 'b6', - label: '5/7 Block', - category: 'Grid', - attributes: { - class: 'fa fa-dedent' - }, - content: '
' - + '
' - + '
' - + '
', - }, - { - id: 'b7', - label: '3/9 Block', - category: 'Grid', - attributes: { - class: 'fa fa-list' - }, - content: '
' - + '
' - + '
' - + '
', - }, - { - id: 'b8', - label: 'Center Block', - category: 'Grid', - attributes: { - class: 'fa fa-minus-square-o' - }, - content: '
' - + '
' - + '
', - }, - { - id: '3ba', - label: 'Badges', - category: 'Section', - content: '
' - + '
' - + '
' - + '
' - + '

flash_on

' - + '
Speeds up development
' - - + '

We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

' - + '
' - + '
' - - + '
' - + '
' - + '

group

' - + '
User Experience Focused
' - - + '

By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

' - + '
' - + '
' - - + '
' - + '
' - + '

settings

' - + '
Easy to work with
' - - + '

We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

' - + '
' - + '
' - + '
' - + '
' - + '
' - + '', - attributes: { - class: 'fa fa-sitemap' - } - }, - { - id: 'text', - label: 'Text', - attributes: { - class: 'fa fa-text-width' - }, - category: 'Basic', - content: { - type: 'text', - content: 'Insert your text here', - activeOnRender: 1 - }, - }, { - id: 'image', - label: 'Image', - category: 'Basic', - attributes: { - class: 'fa fa-file-image-o' - }, - content: { - type: 'image', - activeOnRender: 1 - }, - }, { - id: 'list', - label: 'List', - category: 'Basic', - attributes: { - class: 'fa fa-bars' - }, - content: ``, - }, - - { - id: 'list2', - label: 'List Two', - category: 'Basic', - attributes: { - class: 'fa fa-bars' - }, - content: '', - }, - { - id: 'table', - label: 'Table', - category: 'Basic', - attributes: { - class: 'fa fa-table' - }, - content: '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '
NameItem NameItem Price
AlvinEclair$0.87
AlanJellybean$3.76
JonathanLollipop$7.00
', - }, - { - id: 'res', - label: 'respon image', - category: 'Media', - content: '', - attributes: { - class: 'fa fa-image' - } - }, - { - id: 'popup', - label: 'popup image', - category: 'Media', - content: '' - + '', - attributes: { - class: 'fa fa-object-group' - } - } - , - { - id: 'dropdown', - label: 'dropdown', - category: 'Button', - content: '' - + 'Drop Me!' - + '' + - '', - attributes: { - class: 'fa fa-list' - } - } - , { - id: 'modal', - label: 'modal', - category: 'Button', - content: '' - + 'Modal' - + '' + - '', - attributes: { - class: 'fa fa-object-ungroup' - } - }, - { - id: 'slider', - label: 'Slider', - category: 'Section', - content: '
' + - '' - + '
' + - '', - attributes: { - class: 'fa fa-credit-card' - } - }, - - { - id: 'btn', - label: 'button', - category: 'Button', - content: 'button', - attributes: { - class: 'fa fa-square-o' - } - }, - { - id: 'target', - label: 'tap target', - category: 'Button', - content: '
menu
' - + '
' - + '
' - + '
Title
' - + '

Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Proin eget tortor risus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Nulla porttitor accumsan tincidunt.

' - + '
' - + '
', - attributes: { - class: 'fa fa-bullseye' - } - }, - { - id: 'fab', - label: 'FAB', - category: 'Button', - content: '
' - + '' - + 'menu' - + '' - + '' - + '
', - attributes: { - class: 'fa fa-bullseye' - } - }, { - id: 'fabtool', - label: 'FAB toolbar', - category: 'Button', - content: '
' + - '' - + 'mode_edit' - + '' - + '' - + '
', - attributes: { - class: 'fa fa-ellipsis-h' - } - }, - { - id: 'cbtn', - label: 'Circle Button', - category: 'Button', - content: 'add', - attributes: { - class: 'fa fa-circle-thin' - } - }, { - id: 'link', - label: 'Link', - category: 'Basic', - attributes: { - class: 'fa fa-link' - }, - content: { - type: 'link', - content: 'Link', - }, - }, { - id: 'formtag', - label: 'Form Tag', - category: 'Form', - attributes: { - class: 'fa fa-file-text' - }, - content: '
' + - '
' + - '
' + - '
' + - '', - } - , { - id: 'formgroup', - label: 'Form group', - category: 'Form', - attributes: { - class: 'fa fa-list' - }, - content: '
' - + '
' - + '
' - + '
' - + '' - + '' - + '
' - + '
' - + '' - + '' - + '
' - + '
' - + '
' - + '
' - + '' - + '' - + '
' - + '
' - + '
' - + '
' - + '' - + '' - + '
' - + '
' - + '
' - + '
This is an inline input field:' - + '
' - + '' - + '' - + '
' - + '
' - + '
' - + '
' - + '
' - + '', - }, - { - id: 'iconinput', - label: 'Input', - category: 'Form', - attributes: { - class: 'fa fa-minus-square' - }, - content: '
' - + '
' - + 'account_circle' - + '' - + '' - + '
' - + '
' - + 'phone' - + '' - + '' - + '
' - + '
', - }, { - id: 'textarea', - label: 'Textarea', - category: 'Form', - attributes: { - class: 'fa fa-sticky-note-o' - }, - content: '
' - + '
' - + '' - + '' - + '
' - + '
', - }, { - id: 'select', - label: 'Select', - category: 'Form', - attributes: { - class: 'fa fa-caret-square-o-down' - }, - content: '
' - + '' - + '' - + '
' - + '' - }, - { - id: 'radio', - label: 'Radio', - category: 'Form', - attributes: { - class: 'fa fa-dot-circle-o' - }, - content: `
-
-

- - -

-

- - -

-

- - -

-

- - -

-
-
` - }, { - id: 'checkbox', - label: 'Checkbox', - category: 'Form', - attributes: { - class: 'fa fa-check-square-o' - }, - content: `
-
-

- - -

-

- - -

-
-
` - }, { - id: 'map', - label: 'Map', - category: 'Extra', - attributes: { - class: 'fa fa-map-o' - }, - content: { - type: 'map', - style: { - height: '350px' - } - }, - } - , - { - id: 'sidenav', - label: 'SideNav', - category: 'Extra', - content: ` - menu - `, - attributes: { - class: 'fa fa-indent' - } - }, - { - id: 'accor', - label: 'Accordian', - category: 'Extra', - attributes: { - class: 'fa fa-reorder' - }, - content: ` - -`, - }, - { - id: 'tap', - label: 'Tap', - category: 'Extra', - attributes: { - class: 'fa fa-ellipsis-h' - }, - content: '
' - + '
' - + '' - + '
' - + '
Test 1
' - + '
Test 2
' - + '
Test 3
' - + '
Test 4
' - + '
' - + '', - }, - { - id: 'members', - label: 'Members', - category: 'Section', - content: `
-
-
-
-

Members

-
-
-
-
-
- -
Marian Holmes
-

Developer

- -
-
-
-
- -
Peggy Henry
-

Marketing manager

- -
-
-
-
- -
Eduardo Carter
-

Director

- -
-
-
-
-
-`, - attributes: { - class: "fa fa-users" - } - }, - { - id: 'blog', - label: 'Blog', - category: 'Section', - content: '
' - + '
' - + '
' - + '

Blog

' - + '
' - + '
' - + '
' - + '
' - + '22 / July / 18' - + '
' - + '' - + '
' - + '

Blog Title

' - + '
' - + '
' - + '
    ' - + '
  • person_outline by John Doe
  • ' - + '
  • ' - + 'chat_bubble_outline 5 Comments' - + '
  • ' - + '
' - - + '
' - - + '

' - + 'Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.' - + '

' - + 'Read More' - + '
' - + '
' - + '
' - + '
' - + '
' - + '22 / July / 18' - + '
' - + '' - + '
' - + '

Blog Title

' - + '
' - + '
' - + '
    ' - + '
  • person_outline by John Doe
  • ' - + '
  • ' - + 'chat_bubble_outline 5 Comments' - + '
  • ' - + '
' - - + '
' - - + '

' - + 'Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.' - + '

' - + 'Read More' - + '
' - + '
' - + '
' - + '
' - + '', - attributes: { - class: "fa fa-dedent" - } - }, - { - id: 'card', - label: 'Card', - category: 'Section', - content: '
' - + '
' - + '
' - + '
' - + '' - + 'Card Title' - + '
' - + '
' - + '

I am a very simple card. I am good at containing small bits of information.' - + 'I am convenient because I require little markup to use effectively.

' - + '
' - + '
' - + 'This is a link' - + '
' - + '
' - + '
' - + '
', - attributes: { - class: 'fa fa-newspaper-o' - }, - }, - { - id: 'video', - label: 'Video', - category: 'Media', - attributes: { - class: 'fa fa-youtube-play' - }, - content: { - type: 'video', - src: 'img/video2.webm', - style: { - height: '350px', - width: '615px', - } - }, - }, { - id: 'h1p', - label: 'Text section', - category: 'Typography', - content: '
' - + '

Insert title here

' - + '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

' - + '
', - attributes: { - class: 'fa fa-align-center' - } - }, { - id: 'quo', - label: 'Quote', - category: 'Typography', - content: '
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
', - attributes: { - class: 'fa fa-quote-right' - } - } - ], - }, - storageManager: { - id: 'gjs-', - type: 'local', - autosave: 1, - autoload: 1, - stepsBeforeSave: 1, - storeComponents: 1, - storeStyles: 1, - storeHtml: 1, - storeCss: 1, - }, - customStyleManager: [{ - name: 'General', - buildProps: ['float', 'display', 'position', 'top', 'right', 'left', 'bottom'], - properties:[{ - name: 'Alignment', - property: 'float', - type: 'radio', - defaults: 'none', - list: [ - { value: 'none', className: 'fa fa-times'}, - { value: 'left', className: 'fa fa-align-left'}, - { value: 'right', className: 'fa fa-align-right'} - ], - }, - { property: 'position', type: 'select'} - ], - },{ - name: 'Dimension', - open: false, - buildProps: ['width', 'flex-width', 'height', 'max-width', 'min-height', 'margin', 'padding'], - properties: [{ - id: 'flex-width', - type: 'integer', - name: 'Width', - units: ['px', '%'], - property: 'flex-basis', - toRequire: 1, - },{ - property: 'margin', - properties:[ - { name: 'Top', property: 'margin-top'}, - { name: 'Right', property: 'margin-right'}, - { name: 'Bottom', property: 'margin-bottom'}, - { name: 'Left', property: 'margin-left'} - ], - },{ - property : 'padding', - properties:[ - { name: 'Top', property: 'padding-top'}, - { name: 'Right', property: 'padding-right'}, - { name: 'Bottom', property: 'padding-bottom'}, - { name: 'Left', property: 'padding-left'} - ], - }], - },{ - name: 'Typography', - open: false, - buildProps: ['font-family', 'font-size', 'font-weight', 'letter-spacing', 'color', 'line-height', 'text-align', 'text-decoration', 'text-shadow'], - properties:[ - { name: 'Font', property: 'font-family'}, - { name: 'Weight', property: 'font-weight'}, - { name: 'Font color', property: 'color'}, - { - property: 'text-align', - type: 'radio', - defaults: 'left', - list: [ - { value : 'left', name : 'Left', className: 'fa fa-align-left'}, - { value : 'center', name : 'Center', className: 'fa fa-align-center' }, - { value : 'right', name : 'Right', className: 'fa fa-align-right'}, - { value : 'justify', name : 'Justify', className: 'fa fa-align-justify'} - ], - },{ - property: 'text-decoration', - type: 'radio', - defaults: 'none', - list: [ - { value: 'none', name: 'None', className: 'fa fa-times'}, - { value: 'underline', name: 'underline', className: 'fa fa-underline' }, - { value: 'line-through', name: 'Line-through', className: 'fa fa-strikethrough'} - ], - },{ - property: 'text-shadow', - properties: [ - { name: 'X position', property: 'text-shadow-h'}, - { name: 'Y position', property: 'text-shadow-v'}, - { name: 'Blur', property: 'text-shadow-blur'}, - { name: 'Color', property: 'text-shadow-color'} - ], - }], - },{ - name: 'Decorations', - open: false, - buildProps: ['opacity', 'background-color', 'border-radius', 'border', 'box-shadow', 'background'], - properties: [{ - type: 'slider', - property: 'opacity', - defaults: 1, - step: 0.01, - max: 1, - min:0, - },{ - property: 'border-radius', - properties : [ - { name: 'Top', property: 'border-top-left-radius'}, - { name: 'Right', property: 'border-top-right-radius'}, - { name: 'Bottom', property: 'border-bottom-left-radius'}, - { name: 'Left', property: 'border-bottom-right-radius'} - ], - },{ - property: 'box-shadow', - properties: [ - { name: 'X position', property: 'box-shadow-h'}, - { name: 'Y position', property: 'box-shadow-v'}, - { name: 'Blur', property: 'box-shadow-blur'}, - { name: 'Spread', property: 'box-shadow-spread'}, - { name: 'Color', property: 'box-shadow-color'}, - { name: 'Shadow type', property: 'box-shadow-type'} - ], - },{ - property: 'background', - properties: [ - { name: 'Image', property: 'background-image'}, - { name: 'Repeat', property: 'background-repeat'}, - { name: 'Position', property: 'background-position'}, - { name: 'Attachment', property: 'background-attachment'}, - { name: 'Size', property: 'background-size'} - ], - },], - },{ - name: 'Extra', - open: false, - buildProps: ['transition', 'perspective', 'transform'], - properties: [{ - property: 'transition', - properties:[ - { name: 'Property', property: 'transition-property'}, - { name: 'Duration', property: 'transition-duration'}, - { name: 'Easing', property: 'transition-timing-function'} - ], - },{ - property: 'transform', - properties:[ - { name: 'Rotate X', property: 'transform-rotate-x'}, - { name: 'Rotate Y', property: 'transform-rotate-y'}, - { name: 'Rotate Z', property: 'transform-rotate-z'}, - { name: 'Scale X', property: 'transform-scale-x'}, - { name: 'Scale Y', property: 'transform-scale-y'}, - { name: 'Scale Z', property: 'transform-scale-z'} - ], - }] - },{ - name: 'Flex', - open: false, - properties: [{ - name: 'Flex Container', - property: 'display', - type: 'select', - defaults: 'block', - list: [ - { value: 'block', name: 'Disable'}, - { value: 'flex', name: 'Enable'} - ], - },{ - name: 'Flex Parent', - property: 'label-parent-flex', - type: 'integer', - },{ - name : 'Direction', - property : 'flex-direction', - type : 'radio', - defaults : 'row', - list : [{ - value : 'row', - name : 'Row', - className : 'icons-flex icon-dir-row', - title : 'Row', - },{ - value : 'row-reverse', - name : 'Row reverse', - className : 'icons-flex icon-dir-row-rev', - title : 'Row reverse', - },{ - value : 'column', - name : 'Column', - title : 'Column', - className : 'icons-flex icon-dir-col', - },{ - value : 'column-reverse', - name : 'Column reverse', - title : 'Column reverse', - className : 'icons-flex icon-dir-col-rev', - }], - },{ - name : 'Justify', - property : 'justify-content', - type : 'radio', - defaults : 'flex-start', - list : [{ - value : 'flex-start', - className : 'icons-flex icon-just-start', - title : 'Start', - },{ - value : 'flex-end', - title : 'End', - className : 'icons-flex icon-just-end', - },{ - value : 'space-between', - title : 'Space between', - className : 'icons-flex icon-just-sp-bet', - },{ - value : 'space-around', - title : 'Space around', - className : 'icons-flex icon-just-sp-ar', - },{ - value : 'center', - title : 'Center', - className : 'icons-flex icon-just-sp-cent', - }], - },{ - name : 'Align', - property : 'align-items', - type : 'radio', - defaults : 'center', - list : [{ - value : 'flex-start', - title : 'Start', - className : 'icons-flex icon-al-start', - },{ - value : 'flex-end', - title : 'End', - className : 'icons-flex icon-al-end', - },{ - value : 'stretch', - title : 'Stretch', - className : 'icons-flex icon-al-str', - },{ - value : 'center', - title : 'Center', - className : 'icons-flex icon-al-center', - }], - },{ - name: 'Flex Children', - property: 'label-parent-flex', - type: 'integer', - },{ - name: 'Order', - property: 'order', - type: 'integer', - defaults : 0, - min: 0 - },{ - name : 'Flex', - property : 'flex', - type : 'composite', - properties : [{ - name: 'Grow', - property: 'flex-grow', - type: 'integer', - defaults : 0, - min: 0 - },{ - name: 'Shrink', - property: 'flex-shrink', - type: 'integer', - defaults : 0, - min: 0 - },{ - name: 'Basis', - property: 'flex-basis', - type: 'integer', - units: ['px','%',''], - unit: '', - defaults : 'auto', - }], - },{ - name : 'Align', - property : 'align-self', - type : 'radio', - defaults : 'auto', - list : [{ - value : 'auto', - name : 'Auto', - },{ - value : 'flex-start', - title : 'Start', - className : 'icons-flex icon-al-start', - },{ - value : 'flex-end', - title : 'End', - className : 'icons-flex icon-al-end', - },{ - value : 'stretch', - title : 'Stretch', - className : 'icons-flex icon-al-str', - },{ - value : 'center', - title : 'Center', - className : 'icons-flex icon-al-center', - }], - }] - } - ]}); - -var pnm = editor.Panels; -pnm.addButton('options', [{ - id: 'undo', - className: 'fa fa-undo icon-undo', - command: function (editor, sender) { - sender.set('active', 0); - editor.UndoManager.undo(1); - }, - attributes: { - title: 'Undo (CTRL/CMD + Z)' - } -}, - { - id: 'redo', - className: 'fa fa-repeat icon-redo', - command: function (editor, sender) { - sender.set('active', 0); - editor.UndoManager.redo(1); - }, - attributes: { - title: 'Redo (CTRL/CMD + SHIFT + Z)' - } - }, - { - id: 'import', - className: 'fa fa-edit', - command: 'html-edit', - attributes: { - title: 'Edit and Import' - } - }, { - id: 'clean-all', - className: 'fa fa-trash icon-blank', - command: function (editor, sender) { - if (sender) sender.set('active', false); - if (confirm('Are you sure to clean the canvas?')) { - editor.DomComponents.clear(); - setTimeout(function () { - localStorage.setItem('gjs-assets', ''); - localStorage.setItem('gjs-components', ''); - localStorage.setItem('gjs-html', ''); - localStorage.setItem('gjs-css', ''); - localStorage.setItem('gjs-styles', ''); - }, 0); - } - }, - attributes: { - title: 'Empty canvas' - } - }, - { - id: 'clear-local', - className: 'fa fa-close', - command: function () { - if (confirm('Reset to original?')) { - localStorage.setItem('gjs-assets', ''); - localStorage.setItem('gjs-components', ''); - localStorage.setItem('gjs-html', ''); - localStorage.setItem('gjs-css', ''); - localStorage.setItem('gjs-styles', ''); - location.reload(); - } - }, - attributes: { - title: 'Reset' - } - }, - { - id: 'save-project', - className: 'fa fa-save', - command: function (editor, sender) { - sender.set('active', 0); - alert('No database for this version but your work is automatically saved in localstorage.'); - }, - attributes: { - title: 'github' - } - } -]); - - -// --------------------- -// Import/Edit -// --------------------- -var gra = { - // append in container - _a: function (appendName) { - return container.appendChild(appendName); - }, - // create elements - _c: function (tagName) { - return document.createElement(tagName); - }, - // check extensions - _e: function (fname) { - var ext = /^.+\.([^.]+)$/.exec(fname); - return ext == null ? "" : ext[1]; - }, - // select id - _d: function (name, tag) { - switch (tag) { - case 'class': - return document.getElementsByClassName(name); - break; - case 'id': - return document.getElementById(name); - break; - default: - return document.getElementById(name); - } - } -} - -var pmodel = gra._d("modelPopup", "class"); -var pfx = editor.getConfig().stylePrefix; -var modal = editor.Modal; -var cmdm = editor.Commands; -var pnm = editor.Panels; -var container = gra._c("div"); -var fileform = gra._c("div"); -var btnEdit = gra._c("button"); -var copyHtml = gra._c("button"); -var copyCss = gra._c("button"); -var btnZip = gra._c("button"); -var exportTxt = gra._c("button"); -var loadTxt = gra._c("button"); -var fileLoader = gra._c("form"); -var anchor = gra._c("a"); - - -function buildCodeEditor(type) { - var codeEditor = editor.CodeManager.getViewer('CodeMirror').clone(); - codeEditor.set({ - codeName: type === 'html' ? 'htmlmixed' : 'css', - readOnly: 0, - theme: 'hopscotch', - autoBeautify: true, - autoCloseTags: true, - autoCloseBrackets: true, - lineWrapping: true, - styleActiveLine: true, - smartIndent: true, - indentWithTabs: true - }); - return codeEditor; -} -var htmlCodeEditor = buildCodeEditor('html'); -var cssCodeEditor = buildCodeEditor('css'); - -btnEdit.innerHTML = ' Apply'; -btnZip.innerHTML = ' Download Project (zip)'; -exportTxt.innerHTML = ' Save as .gram file'; -loadTxt.innerHTML = ' Load .gram file'; -copyHtml.innerHTML = ' Copy HTML'; -copyCss.innerHTML = ' Copy CSS'; -fileLoader.innerHTML = ''; -fileform.innerHTML = ''; - -fileform.className = 'modelPopup'; -fileLoader.className = pfx + 'import-file'; -btnEdit.className = pfx + 'btn-prim ' + pfx + 'btn-import'; -copyHtml.className = pfx + 'btn-prim ' + pfx + 'btn-html'; -copyCss.className = pfx + 'btn-prim ' + pfx + 'btn-css'; -btnZip.className = pfx + 'btn-prim ' + pfx + 'btn-zip'; -exportTxt.className = pfx + 'btn-prim ' + pfx + 'btn-export'; -loadTxt.className = pfx + 'btn-prim ' + pfx + 'btn-load'; - -// import button inside import editor -btnEdit.onclick = function () { - var htmlCode = htmlCodeEditor.editor.getValue(); - var cssCode = cssCodeEditor.editor.getValue(); - editor.DomComponents.getWrapper().set('content', ''); - editor.setComponents(htmlCode.trim() + ''); - modal.close(); -}; - -btnZip.onclick = function() { - editor.runCommand('gjs-export-zip'); -}; - -// onclick load file button inside import editor -loadTxt.onclick = function (e) { - e.preventDefault(); - var fileToLoad = document.getElementById("fileToLoad").files[0]; - var fType = gra._e(fileToLoad['name']); - if (fileToLoad === undefined) { - alert('Please select a file'); - return; - } - if (fType === 'gram' || fType === 'txt') { - var reader = new FileReader(); - reader.onload = function (e) { - var fileData = e.target.result; - editor.DomComponents.getWrapper().set('content', ''); - editor.setComponents(fileData); - modal.close(); - } - reader.readAsText(fileToLoad); - } else { - alert('You can only import .gram or .txt extension'); - } -} - -copyHtml.onclick = function(){ - var htmlCodes = htmlCodeEditor.editor.getValue(); - var dummy = gra._c("input"); - document.body.appendChild(dummy); - dummy.setAttribute('value', htmlCodes); - dummy.select(); - document.execCommand("copy"); - document.body.removeChild(dummy); - document.execCommand('copy'); - alert('You have copied HTML codes!'); -}; -copyCss.onclick = function(){ - var cssCodes = cssCodeEditor.editor.getValue(); - console.log(cssCodes); - var dummy = gra._c("input"); - document.body.appendChild(dummy); - dummy.setAttribute('value', cssCodes); - dummy.select(); - document.execCommand("copy"); - document.body.removeChild(dummy); - document.execCommand('copy'); - alert('You have copied CSS codes!'); -}; - -// onclick save as button inside import editor -exportTxt.onclick = function () { - pmodel[0].className += " " + 'showup'; -} - -// export file as .gram extension -function exportgramfile() { - var fileName = gra._d("file_name", "id").value; - if (fileName !== undefined && fileName !== '') { - var InnerHtml = editor.getHtml(); - var Css = editor.getCss(); - var text = InnerHtml + "'; - var blob = new Blob([text], { - type: "text/plain" - }); - anchor.download = fileName + ".gram"; - anchor.href = window.URL.createObjectURL(blob); - anchor.target = "_blank"; - anchor.style.display = "none"; // just to be safe! - document.body.appendChild(anchor); - anchor.click(); - document.body.removeChild(anchor); - pmodel[0].className = "modelPopup"; - } else { - alert('Please type a file name'); - return; - } -} - - -// import nav button click event -cmdm.add('html-edit', { - run: function importArea(editor, sender) { - sender && sender.set('active', 0); - var htmlViewer = htmlCodeEditor.editor; - var cssViewer = cssCodeEditor.editor; - var htmlBox = gra._c('div'); - htmlBox.className = 'html-wrapper'; - htmlBox.innerHTML = "

HTML

"; - var cssBox = gra._c('div'); - cssBox.className = 'css-wrapper'; - cssBox.innerHTML = "

CSS

"; - modal.setTitle('Edit and Import'); - var headline = gra._c('div'); - headline.className = 'clear-head'; - var htmlWrap = gra._c('textarea'); - var cssWrap = gra._c('textarea'); - htmlBox.appendChild(htmlWrap); - cssBox.appendChild(cssWrap); - if (!htmlViewer && !cssViewer) { - gra._a(fileLoader); - gra._a(fileform); - gra._a(loadTxt); - gra._a(exportTxt); - gra._a(headline); - gra._a(htmlBox); - gra._a(cssBox); - gra._a(copyCss); - gra._a(copyHtml); - gra._a(btnEdit); - gra._a(btnZip); - htmlCodeEditor.init(htmlWrap); - cssCodeEditor.init(cssWrap); - } - modal.setContent(''); - modal.setContent(container); - htmlCodeEditor.setContent(editor.getHtml()); - cssCodeEditor.setContent(editor.getCss({ avoidProtected: true })); - modal.open(); - htmlCodeEditor.editor.refresh(); - cssCodeEditor.editor.refresh(); - } -}); - -editor.BlockManager.getCategories().each(function (ctg) { - ctg.set('open', false); -}) -// var bm = editor.BlockManager; -// bm.add('link-block', { -// label: 'Link Block', -// attributes: {class:'fa fa-link'}, -// category: 'Basic', -// content: { -// type:'link', -// editable: false, -// droppable: true, -// style:{ -// display: 'inline-block', -// padding: '5px', -// 'min-height': '50px', -// 'min-width': '50px' -// } -// }, -// }); - -var domc = editor.DomComponents; -var defaultType = domc.getType('default'); -// var defaultModel = defaultType.model; -var defaultView = defaultType.view; - -// model: defaultModel.extend({ -// defaults: Object.assign({}, defaultModel.prototype.defaults, { -// traits: [{ -// name: 'title', -// label: 'Título', -// placeholder: 'Insira um texto aqui' -// }] -// }), -// }), -// }); - - -// editor.on('storage:load', function (e) { -// console.log('LOAD ', e); -// }) -// editor.on('storage:store', function (e) { -// console.log('STORE ', e); -// }) - -// var newButton = editor.Panels.addButton('myPanelID', { -// id: 'create-comp', -// className: 'fa fa-pencil-square-o', -// command: 'create-comp', // <-- the ID of the command -// attributes: {title: 'Create element'}, -// stopDefaultCommand: 1, -// }); - - -editor.on('styleManager:change:text-shadow', function (view) { - var model = view.model; - var targetValue = view.getTargetValue({ - ignoreDefault: 1 - }); - var computedValue = view.getComputedValue(); - var defaultValue = view.model.getDefaultValue(); - //console.log('Style of ', model.get('property'), 'Target: ', targetValue, 'Computed:', computedValue, 'Default:', defaultValue); -}); -editor.Panels.removeButton('options', 'export-template'); -editor.render(); diff --git a/dist/gramateria/gram.min.css b/dist/gramateria/gram.min.css deleted file mode 100644 index 064c2e6..0000000 --- a/dist/gramateria/gram.min.css +++ /dev/null @@ -1 +0,0 @@ -.gjs-btn-css,.gjs-btn-export,.gjs-btn-html,.right{float:right}body,html{height:100%;margin:0}.fa::before{-webkit-text-stroke:.5px #fff}.gjs-clm-tags .gjs-clm-field input,.gjs-clm-tags .gjs-clm-field select,.gjs-clm-tags .gjs-sm-field input,.gjs-clm-tags .gjs-sm-field select,.gjs-cm-editor#gjs-cm-css #gjs-cm-title,.gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title,.gjs-color-warn,.gjs-sm-sector .gjs-clm-field input,.gjs-sm-sector .gjs-clm-field select,.gjs-sm-sector .gjs-sm-field input,.gjs-sm-sector .gjs-sm-field select,.gjs-two-color{color:#464973}.gjs-block-category .gjs-blocks-c div[title=Card]:after{background-image:url(http://res.cloudinary.com/ronaldaug/image/upload/v1518968468/card_urqoco.jpg);background-size:cover;width:300px;height:231px}.gjs-block-category .gjs-blocks-c div[title=Blog]:after{background-image:url(https://res.cloudinary.com/ronaldaug/image/upload/v1530116427/blog_qrhnhx.jpg);background-size:cover;width:400px;height:227px}.gjs-block-category .gjs-blocks-c div[title=Starter]:after{background-image:url(http://res.cloudinary.com/ronaldaug/image/upload/v1518968469/starter_shyx0y.png);background-size:cover;width:400px;height:196px}.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:after{background-image:url(http://res.cloudinary.com/ronaldaug/image/upload/v1518968466/nav_he3fot.jpg);background-size:cover;width:600px;height:38px}.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:after{background-image:url(http://res.cloudinary.com/ronaldaug/image/upload/v1518968469/nav2_iovg0o.jpg);background-size:cover;width:600px;height:129px}.gjs-block-category .gjs-blocks-c div[title=Footer]:after{background-image:url(http://res.cloudinary.com/ronaldaug/image/upload/v1518968467/footer_o8vuik.jpg);background-size:cover;width:400px;height:142px}.gjs-block-category .gjs-blocks-c div[title=Badges]:after{background-image:url(http://res.cloudinary.com/ronaldaug/image/upload/v1518968467/badges_hs1ta5.jpg);background-size:cover;width:400px;height:154px}.gjs-block-category .gjs-blocks-c div[title=Members]:after{background-image:url(https://res.cloudinary.com/ronaldaug/image/upload/v1530275580/members_v2x2tl.jpg);background-size:cover;width:400px;height:224px}.gjs-block-category .gjs-blocks-c div[title=Slider]:after{background-image:url(http://res.cloudinary.com/ronaldaug/image/upload/v1518968468/slider_l07ucf.jpg);background-size:cover;width:400px;height:154px}.gjs-block-category .gjs-blocks-c div[title=Textarea]:after,.gjs-block-category .gjs-blocks-c div[title=Radio]:after,.gjs-block-category .gjs-blocks-c div[title=Checkbox]:after,.gjs-block-category .gjs-blocks-c div[title=Select]:after,.gjs-block-category .gjs-blocks-c div[title=Input]:after{content:'Please insert this inside the
tag.';line-height:2;position:fixed;top:0;right:220px;opacity:0;z-index:2;visibility:hidden;transition:all ease-in-out .3s;-webkit-transition:all ease-in-out .3s;-moz-transition:all ease-in-out .3s;width:300px;height:44px;font-size:13px;padding:10px;background:#fff;color:#000;border-radius:4px;-moz-border-radius:4px;-webkit-border-radius:4px;box-shadow:1px 2px 10px rgba(116,116,116,.3);-moz-box-shadow:1px 2px 10px rgba(116,116,116,.3);-webkit-box-shadow:1px 2px 10px rgba(116,116,116,.3)}.gjs-block-category .gjs-blocks-c div[title=Textarea]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Radio]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Checkbox]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Select]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Input]:hover:after{top:30%;opacity:1;display:block;visibility:visible}.gjs-block-category .gjs-blocks-c div[title=Parallax]:after{background-image:url(http://res.cloudinary.com/ronaldaug/image/upload/v1518968470/parallax_hz2hot.jpg);background-size:cover;width:400px;height:197px}.gjs-block-category .gjs-blocks-c div[title=Card]:after,.gjs-block-category .gjs-blocks-c div[title=Parallax]:after,.gjs-block-category .gjs-blocks-c div[title=Blog]:after,.gjs-block-category .gjs-blocks-c div[title=Starter]:after,.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:after,.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:after,.gjs-block-category .gjs-blocks-c div[title=Footer]:after,.gjs-block-category .gjs-blocks-c div[title=Badges]:after,.gjs-block-category .gjs-blocks-c div[title=Members]:after,.gjs-block-category .gjs-blocks-c div[title=Slider]:after{content:'';line-height:2;position:fixed;color:#fff;top:0;right:220px;opacity:0;z-index:2;visibility:hidden;transition:all ease-in-out .3s;-webkit-transition:all ease-in-out .3s;-moz-transition:all ease-in-out .3s}.gjs-block-category .gjs-blocks-c div[title=Card]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Parallax]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Blog]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Starter]:hover:after,.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:hover:after,.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Footer]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Badges]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Members]:hover:after,.gjs-block-category .gjs-blocks-c div[title=Slider]:hover:after{top:10%;opacity:1;display:block;visibility:visible}.gjs-one-bg{background-color:#f6f7f9}.gjs-block:hover{box-shadow:0 3px 4px 0 rgba(204,210,251,.42)}.gjs-block-category .gjs-title,.gjs-category-title,.gjs-clm-tags .gjs-sm-title,.gjs-layer-title,.gjs-sm-sector .gjs-sm-title{background-color:#eee;border-bottom:1px solid rgba(121,121,121,.25)}.gjs-cm-editor #gjs-cm-title{background-color:rgba(164,190,241,.2)}.cm-s-hopscotch.CodeMirror{background:#2f3c54;background:-moz-linear-gradient(-45deg,#2f3c54 0,#414251 100%);background:-webkit-linear-gradient(-45deg,#2f3c54 0,#414251 100%);background:linear-gradient(135deg,#2f3c54 0,#414251 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#2f3c54', endColorstr='#414251', GradientType=1 );color:#999}.cm-s-hopscotch .CodeMirror-gutters{background:#232c3c}.cm-s-hopscotch span.cm-tag{color:#9a648b}.cm-s-hopscotch span.cm-atom{color:#836fb6}.cm-s-hopscotch span.cm-number{color:#a06d91}.cm-s-hopscotch span.cm-string{color:#816eb5}.cm-s-hopscotch span.cm-attribute,.cm-s-hopscotch span.cm-property{color:#5eb6cc}.gjs-clm-tags #gjs-clm-checkbox,.gjs-clm-tags #gjs-clm-close{color:#444}.gjs-three-bg{background-color:#f6f7f9}.gjs-block,.modelPopup{background:#fff}.gjs-field-arrow-u{border-bottom:4px solid #444}.gjs-field .gjs-d-s-arrow,.gjs-field-arrow-d{border-top:4px solid #444}.gjs-block.fa:before,.gjs-pn-btn.fa:before{color:#262c42}.gjs-blocks-c{padding-bottom:6px}.gjs-field select.gjs-devices{padding:2px}.gjs-clm-tags .gjs-clm-field input,.gjs-clm-tags .gjs-clm-field select,.gjs-clm-tags .gjs-sm-field input,.gjs-clm-tags .gjs-sm-field select,.gjs-color-warn,.gjs-sm-sector .gjs-clm-field input,.gjs-sm-sector .gjs-clm-field select,.gjs-sm-sector .gjs-sm-field input,.gjs-sm-sector .gjs-sm-field select{color:#000}.gjs-btn-css,.gjs-btn-export,.gjs-btn-html,.gjs-btn-import,.gjs-btn-load,.gjs-btn-zip{color:#587899;font-size:13px;margin:10px 0}.CodeMirror{height:400px}.modelPopup input[type=text]{height:20px}.modelPopup{z-index:99999;position:fixed;top:-20%;left:50%;margin-left:-100px;width:200px;padding:20px;height:auto;text-align:center;opacity:0;box-shadow:0 10px 300px rgba(116,116,116,.8);-moz-box-shadow:0 10px 300px rgba(116,116,116,.8);-webkit-box-shadow:0 10px 300px rgba(116,116,116,.8);visibility:hidden;transition:all ease-in-out .4s;-webkit-transition:all ease-in-out .4s;-moz-transition:all ease-in-out .4s}.modelPopup.showup{top:20%!important;opacity:1!important;visibility:visible!important}button.exportgram{margin-left:10px;padding:4px 10px;background:#444;color:#fff;border-radius:20px}.css-wrapper,.html-wrapper{width:49%;float:left}.css-wrapper h4,.html-wrapper h4{margin:4px 0}.gjs-mdl-dialog{max-width:none}.clear-head{width:100%;clear:both}.css-wrapper{margin-left:2%} \ No newline at end of file diff --git a/dist/gramateria/gram.min.js b/dist/gramateria/gram.min.js deleted file mode 100644 index 4950c5f..0000000 --- a/dist/gramateria/gram.min.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";var editor=grapesjs.init({allowScripts:1,showOffsets:1,autorender:0,noticeOnUnload:0,container:"#gjs",height:"100%",fromElement:!0,clearOnRender:0,plugins:["gjs-plugin-export"],pluginsOpts:{"gjs-plugin-export":{btnLabel:"Download Zip",preHtml:'\n \n \n \n \n \n \n `, + attributes: { + class: 'fa fa-wpforms' + } + }, + { + id: 'parallax', + label: 'Parallax', + category: 'Section', + content: '
' + + '
' + + '' + + '
' + + '
' + + '
' + + '
' + + '

Parallax

' + + '

Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

' + + '
' + + '
' + + '
' + + '
' + + '
' + + '' + + '', + attributes: { + class: 'fa fa-list-alt' + } + } + , + { + id: 'nav', + label: 'Navbar 1', + category: 'Section', + content: '' + + ``, + attributes: { + class: 'fa fa-window-maximize' + } + }, + { + id: 'dropdownNav', + label: 'Navbar 2', + category: 'Section', + content: '' + + '' + + '' + + '' + + '', + attributes: { + class: 'fa fa-toggle-down' + } + } + , + { + id: 'footer', + label: 'Footer', + category: 'Section', + content: '
' + + '
' + + '
' + + '
' + + '
Company Bio
' + + '

We are a team of college students working on this project like its our full time job.Any amount would help support and continue development on this project and is greatly appreciated.

' + + '
' + + '
' + + '
Settings
' + + '' + + '
' + + '
' + + '
Connect
' + + '' + + '
' + + '
' + + '
' + + '' + + '
', + attributes: { + class: 'fa fa-desktop' + } + }, + { + id: 'b1', + label: '1 Block', + category: 'Grid', + attributes: { + class: 'fa fa-reorder' + }, + content: `
+
+
` + }, + { + id: 'b2', + label: '2 Blocks', + category: 'Grid', + attributes: { + class: 'fa fa-th-large' + }, + content: `
+
+
+
` + }, + { + id: 'b3', + label: '3 Blocks', + category: 'Grid', + attributes: { + class: 'fa fa-th' + }, + content: '
' + + '
' + + '
' + + '
' + + '
', + }, + { + id: 'b4', + label: '4 Blocks', + category: 'Grid', + attributes: { + class: 'fa fa-calendar' + }, + content: '
' + + '
' + + '
' + + '
' + + '
' + + '
', + }, + { + id: 'b5', + label: '4/8 Block', + category: 'Grid', + attributes: { + class: 'fa fa-th-list' + }, + content: '
' + + '
' + + '
' + + '
', + }, + { + id: 'b6', + label: '5/7 Block', + category: 'Grid', + attributes: { + class: 'fa fa-dedent' + }, + content: '
' + + '
' + + '
' + + '
', + }, + { + id: 'b7', + label: '3/9 Block', + category: 'Grid', + attributes: { + class: 'fa fa-list' + }, + content: '
' + + '
' + + '
' + + '
', + }, + { + id: 'b8', + label: 'Center Block', + category: 'Grid', + attributes: { + class: 'fa fa-minus-square-o' + }, + content: '
' + + '
' + + '
', + }, + { + id: '3ba', + label: 'Badges', + category: 'Section', + content: '
' + + '
' + + '
' + + '
' + + '

flash_on

' + + '
Speeds up development
' + + + '

We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

' + + '
' + + '
' + + + '
' + + '
' + + '

group

' + + '
User Experience Focused
' + + + '

By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

' + + '
' + + '
' + + + '
' + + '
' + + '

settings

' + + '
Easy to work with
' + + + '

We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

' + + '
' + + '
' + + '
' + + '
' + + '
' + + '', + attributes: { + class: 'fa fa-sitemap' + } + }, + { + id: 'text', + label: 'Text', + attributes: { + class: 'fa fa-text-width' + }, + category: 'Basic', + content: { + type: 'text', + content: 'Insert your text here', + activeOnRender: 1 + }, + }, { + id: 'image', + label: 'Image', + category: 'Basic', + attributes: { + class: 'fa fa-file-image-o' + }, + content: { + type: 'image', + activeOnRender: 1 + }, + }, { + id: 'list', + label: 'List', + category: 'Basic', + attributes: { + class: 'fa fa-bars' + }, + content: ``, + }, + + { + id: 'list2', + label: 'List Two', + category: 'Basic', + attributes: { + class: 'fa fa-bars' + }, + content: '', + }, + { + id: 'table', + label: 'Table', + category: 'Basic', + attributes: { + class: 'fa fa-table' + }, + content: '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
NameItem NameItem Price
AlvinEclair$0.87
AlanJellybean$3.76
JonathanLollipop$7.00
', + }, + { + id: 'res', + label: 'respon image', + category: 'Media', + content: '', + attributes: { + class: 'fa fa-image' + } + }, + { + id: 'popup', + label: 'popup image', + category: 'Media', + content: '' + + '', + attributes: { + class: 'fa fa-object-group' + } + } + , + { + id: 'dropdown', + label: 'dropdown', + category: 'Button', + content: '' + + 'Drop Me!' + + '' + + '', + attributes: { + class: 'fa fa-list' + } + } + , { + id: 'modal', + label: 'modal', + category: 'Button', + content: '' + + 'Modal' + + '' + + '', + attributes: { + class: 'fa fa-object-ungroup' + } + }, + { + id: 'slider', + label: 'Slider', + category: 'Section', + content: '
' + + '
    ' + + '
  • ' + + ' ' + + '
    ' + + '

    This is our big Tagline!

    ' + + '
    Heres our small slogan.
    ' + + '
    ' + + '
  • ' + + '
  • ' + + ' ' + + '
    ' + + '

    Left Aligned Caption

    ' + + '
    Heres our small slogan.
    ' + + '
    ' + + '
  • ' + + '
  • ' + + ' ' + + '
    ' + + '

    Right Aligned Caption

    ' + + '
    Heres our small slogan.
    ' + + '
    ' + + '
  • ' + + '
  • ' + + ' ' + + '
    ' + + '

    This is our big Tagline!

    ' + + '
    Heres our small slogan.
    ' + + '
    ' + + '
  • ' + + '
' + + '
' + + '', + attributes: { + class: 'fa fa-credit-card' + } + }, + + { + id: 'btn', + label: 'button', + category: 'Button', + content: 'button', + attributes: { + class: 'fa fa-square-o' + } + }, + { + id: 'target', + label: 'tap target', + category: 'Button', + content: '' + + '
' + + '
' + + '
Title
' + + '

Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Proin eget tortor risus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Nulla porttitor accumsan tincidunt.

' + + '
' + + '
', + attributes: { + class: 'fa fa-bullseye' + } + }, + { + id: 'fab', + label: 'FAB', + category: 'Button', + content: '', + attributes: { + class: 'fa fa-bullseye' + } + }, { + id: 'fabtool', + label: 'FAB toolbar', + category: 'Button', + content: '
' + + '' + + 'mode_edit' + + '' + + '' + + '
', + attributes: { + class: 'fa fa-ellipsis-h' + } + }, + { + id: 'cbtn', + label: 'Circle Button', + category: 'Button', + content: 'add', + attributes: { + class: 'fa fa-circle-thin' + } + }, { + id: 'link', + label: 'Link', + category: 'Basic', + attributes: { + class: 'fa fa-link' + }, + content: { + type: 'link', + content: 'Link', + }, + }, { + id: 'formtag', + label: 'Form Tag', + category: 'Form', + attributes: { + class: 'fa fa-file-text' + }, + content: '' + + '
' + + '
' + + '
' + + '', + } + , { + id: 'formgroup', + label: 'Form group', + category: 'Form', + attributes: { + class: 'fa fa-list' + }, + content: '
' + + '
' + + '
' + + '
' + + '' + + '' + + '
' + + '
' + + '' + + '' + + '
' + + '
' + + '
' + + '
' + + '' + + '' + + '
' + + '
' + + '
' + + '
' + + '' + + '' + + '
' + + '
' + + '
' + + '
This is an inline input field:' + + '
' + + '' + + '' + + '
' + + '
' + + '
' + + '
' + + '
' + + '', + }, + { + id: 'iconinput', + label: 'Input', + category: 'Form', + attributes: { + class: 'fa fa-minus-square' + }, + content: '
' + + '
' + + 'account_circle' + + '' + + '' + + '
' + + '
' + + 'phone' + + '' + + '' + + '
' + + '
', + }, { + id: 'textarea', + label: 'Textarea', + category: 'Form', + attributes: { + class: 'fa fa-sticky-note-o' + }, + content: '
' + + '
' + + '' + + '' + + '
' + + '
', + }, { + id: 'select', + label: 'Select', + category: 'Form', + attributes: { + class: 'fa fa-caret-square-o-down' + }, + content: '
' + + '' + + '' + + '
' + + '' + }, + { + id: 'radio', + label: 'Radio', + category: 'Form', + attributes: { + class: 'fa fa-dot-circle-o' + }, + content: `
+
+

+ + +

+

+ + +

+

+ + +

+

+ + +

+
+
` + }, { + id: 'checkbox', + label: 'Checkbox', + category: 'Form', + attributes: { + class: 'fa fa-check-square-o' + }, + content: `
+
+

+ + +

+

+ + +

+
+
` + }, { + id: 'map', + label: 'Map', + category: 'Extra', + attributes: { + class: 'fa fa-map-o' + }, + content: { + type: 'map', + style: { + height: '350px' + } + }, + } + , + { + id: 'sidenav', + label: 'SideNav', + category: 'Extra', + content: ` +menu + `, + attributes: { + class: 'fa fa-indent' + } + }, + { + id: 'accor', + label: 'Accordian', + category: 'Extra', + attributes: { + class: 'fa fa-reorder' + }, + content: ` + +`, + }, + { + id: 'tap', + label: 'Tap', + category: 'Extra', + attributes: { + class: 'fa fa-ellipsis-h' + }, + content: '
' + + '
' + + '' + + '
' + + '
Test 1
' + + '
Test 2
' + + '
Test 3
' + + '
Test 4
' + + '
' + + '', + }, + { + id: 'members', + label: 'Members', + category: 'Section', + content: `
+
+
+
+

Members

+
+
+
+
+
+ +
Marian Holmes
+

Developer

+ +
+
+
+
+ +
Peggy Henry
+

Marketing manager

+ +
+
+
+
+ +
Eduardo Carter
+

Director

+ +
+
+
+
+
+`, + attributes: { + class: "fa fa-users" + } + }, + { + id: 'blog', + label: 'Blog', + category: 'Section', + content: '
' + + '
' + + '
' + + '

Blog

' + + '
' + + '
' + + '
' + + '
' + + '22 / July / 18' + + '
' + + '' + + '
' + + '

Blog Title

' + + '
' + + '
' + + '
    ' + + '
  • person_outline by John Doe
  • ' + + '
  • ' + + 'chat_bubble_outline 5 Comments' + + '
  • ' + + '
' + + + '
' + + + '

' + + 'Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.' + + '

' + + 'Read More' + + '
' + + '
' + + '
' + + '
' + + '
' + + '22 / July / 18' + + '
' + + '' + + '
' + + '

Blog Title

' + + '
' + + '
' + + '
    ' + + '
  • person_outline by John Doe
  • ' + + '
  • ' + + 'chat_bubble_outline 5 Comments' + + '
  • ' + + '
' + + + '
' + + + '

' + + 'Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.' + + '

' + + 'Read More' + + '
' + + '
' + + '
' + + '
' + + '', + attributes: { + class: "fa fa-dedent" + } + }, + { + id: 'card', + label: 'Card', + category: 'Section', + content: '
' + + '
' + + '
' + + '
' + + '' + + 'Card Title' + + '
' + + '
' + + '

I am a very simple card. I am good at containing small bits of information.' + + 'I am convenient because I require little markup to use effectively.

' + + '
' + + '
' + + 'This is a link' + + '
' + + '
' + + '
' + + '
', + attributes: { + class: 'fa fa-newspaper-o' + }, + }, + { + id: 'video', + label: 'Video', + category: 'Media', + attributes: { + class: 'fa fa-youtube-play' + }, + content: { + type: 'video', + src: 'img/video2.webm', + style: { + height: '350px', + width: '615px', + } + }, + }, { + id: 'h1p', + label: 'Text section', + category: 'Typography', + content: '
' + + '

Insert title here

' + + '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

' + + '
', + attributes: { + class: 'fa fa-align-center' + } + }, { + id: 'quo', + label: 'Quote', + category: 'Typography', + content: '
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
', + attributes: { + class: 'fa fa-quote-right' + } + } +]; \ No newline at end of file diff --git a/gramateria/develop/gramateria.js b/gramateria/develop/gramateria.js new file mode 100755 index 0000000..ff21430 --- /dev/null +++ b/gramateria/develop/gramateria.js @@ -0,0 +1,819 @@ +const blocks = require('./blocks'); + +let editor = grapesjs.init({ + allowScripts: 1, + showOffsets: 1, + autorender: 0, + noticeOnUnload: 0, + container: '#gjs', + height: '100%', + fromElement: true, + clearOnRender: 0, + plugins: [ + 'gjs-plugin-export' + ], + pluginsOpts: { + 'gjs-plugin-export': { + btnLabel: 'Download Zip', + preHtml: ` + + + + + + + + + + `, + postHtml: ` + + ` + } + }, + canvas: { + styles: ['https://fonts.googleapis.com/css?family=Roboto', 'https://fonts.googleapis.com/icon?family=Material+Icons', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css'], + scripts: ['https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.1/js/materialize.min.js'] + }, + commands: { + defaults: [ +// { +// id: 'open-github', +// run: function (editor, sender) { +// sender.set('active', false); +// window.open('https://github.com/ronaldaug/gramateria', '_blank'); +// } +// }, + { + id: 'undo', + run: function (editor, sender) { + sender.set('active', false); + editor.UndoManager.undo(true); + } + }, { + id: 'redo', + run: function (editor, sender) { + sender.set('active', false); + editor.UndoManager.redo(true); + } + }, { + id: 'clean-all', + run: function (editor, sender) { + sender.set('active', false); + if (confirm('Are you sure to clean the canvas?')) { + let comps = editor.DomComponents.clear(); + } + } + }], + }, + + assetManager: { + upload: 'https://test.page', + params: { + _token: 'pCYrSwjuiV0t5NVtZpQDY41Gn5lNUwo3it1FIkAj', + }, + assets: [ + { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background_ckgyqe.jpg', + date: '2015-02-01', + height: 808, + width: 1440 + }, + { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419441/background2_gjvaxs.jpg', + date: '2015-02-01', + height: 800, + width: 1600 + }, + { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background3_d0ghix.jpg', + date: '2015-02-01', + height: 743, + width: 1440 + }, + { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419446/background4_pzh5ou.jpg', + date: '2015-02-01', + height: 808, + width: 1440 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/0174DF/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/5FB404/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/BF00FF/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/B40431/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/088A68/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/DF7401/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/00BFFF/ffffff/', + height: 350, + width: 250 + } + ] + }, + blockManager: { + blocks + }, + storageManager: { + id: 'gjs-', + type: 'local', + autosave: 1, + autoload: 1, + stepsBeforeSave: 1, + storeComponents: 1, + storeStyles: 1, + storeHtml: 1, + storeCss: 1, + }, + customStyleManager: [{ + name: 'General', + buildProps: ['float', 'display', 'position', 'top', 'right', 'left', 'bottom'], + properties:[{ + name: 'Alignment', + property: 'float', + type: 'radio', + defaults: 'none', + list: [ + { value: 'none', className: 'fa fa-times'}, + { value: 'left', className: 'fa fa-align-left'}, + { value: 'right', className: 'fa fa-align-right'} + ], + }, + { property: 'position', type: 'select'} + ], + },{ + name: 'Dimension', + open: false, + buildProps: ['width', 'flex-width', 'height', 'max-width', 'min-height', 'margin', 'padding'], + properties: [{ + id: 'flex-width', + type: 'integer', + name: 'Width', + units: ['px', '%'], + property: 'flex-basis', + toRequire: 1, + },{ + property: 'margin', + properties:[ + { name: 'Top', property: 'margin-top'}, + { name: 'Right', property: 'margin-right'}, + { name: 'Bottom', property: 'margin-bottom'}, + { name: 'Left', property: 'margin-left'} + ], + },{ + property : 'padding', + properties:[ + { name: 'Top', property: 'padding-top'}, + { name: 'Right', property: 'padding-right'}, + { name: 'Bottom', property: 'padding-bottom'}, + { name: 'Left', property: 'padding-left'} + ], + }], + },{ + name: 'Typography', + open: false, + buildProps: ['font-family', 'font-size', 'font-weight', 'letter-spacing', 'color', 'line-height', 'text-align', 'text-decoration', 'text-shadow'], + properties:[ + { name: 'Font', property: 'font-family'}, + { name: 'Weight', property: 'font-weight'}, + { name: 'Font color', property: 'color'}, + { + property: 'text-align', + type: 'radio', + defaults: 'left', + list: [ + { value : 'left', name : 'Left', className: 'fa fa-align-left'}, + { value : 'center', name : 'Center', className: 'fa fa-align-center' }, + { value : 'right', name : 'Right', className: 'fa fa-align-right'}, + { value : 'justify', name : 'Justify', className: 'fa fa-align-justify'} + ], + },{ + property: 'text-decoration', + type: 'radio', + defaults: 'none', + list: [ + { value: 'none', name: 'None', className: 'fa fa-times'}, + { value: 'underline', name: 'underline', className: 'fa fa-underline' }, + { value: 'line-through', name: 'Line-through', className: 'fa fa-strikethrough'} + ], + },{ + property: 'text-shadow', + properties: [ + { name: 'X position', property: 'text-shadow-h'}, + { name: 'Y position', property: 'text-shadow-v'}, + { name: 'Blur', property: 'text-shadow-blur'}, + { name: 'Color', property: 'text-shadow-color'} + ], + }], + },{ + name: 'Decorations', + open: false, + buildProps: ['opacity', 'background-color', 'border-radius', 'border', 'box-shadow', 'background'], + properties: [{ + type: 'slider', + property: 'opacity', + defaults: 1, + step: 0.01, + max: 1, + min:0, + },{ + property: 'border-radius', + properties : [ + { name: 'Top', property: 'border-top-left-radius'}, + { name: 'Right', property: 'border-top-right-radius'}, + { name: 'Bottom', property: 'border-bottom-left-radius'}, + { name: 'Left', property: 'border-bottom-right-radius'} + ], + },{ + property: 'box-shadow', + properties: [ + { name: 'X position', property: 'box-shadow-h'}, + { name: 'Y position', property: 'box-shadow-v'}, + { name: 'Blur', property: 'box-shadow-blur'}, + { name: 'Spread', property: 'box-shadow-spread'}, + { name: 'Color', property: 'box-shadow-color'}, + { name: 'Shadow type', property: 'box-shadow-type'} + ], + },{ + property: 'background', + properties: [ + { name: 'Image', property: 'background-image'}, + { name: 'Repeat', property: 'background-repeat'}, + { name: 'Position', property: 'background-position'}, + { name: 'Attachment', property: 'background-attachment'}, + { name: 'Size', property: 'background-size'} + ], + },], + },{ + name: 'Extra', + open: false, + buildProps: ['transition', 'perspective', 'transform'], + properties: [{ + property: 'transition', + properties:[ + { name: 'Property', property: 'transition-property'}, + { name: 'Duration', property: 'transition-duration'}, + { name: 'Easing', property: 'transition-timing-function'} + ], + },{ + property: 'transform', + properties:[ + { name: 'Rotate X', property: 'transform-rotate-x'}, + { name: 'Rotate Y', property: 'transform-rotate-y'}, + { name: 'Rotate Z', property: 'transform-rotate-z'}, + { name: 'Scale X', property: 'transform-scale-x'}, + { name: 'Scale Y', property: 'transform-scale-y'}, + { name: 'Scale Z', property: 'transform-scale-z'} + ], + }] + },{ + name: 'Flex', + open: false, + properties: [{ + name: 'Flex Container', + property: 'display', + type: 'select', + defaults: 'block', + list: [ + { value: 'block', name: 'Disable'}, + { value: 'flex', name: 'Enable'} + ], + },{ + name: 'Flex Parent', + property: 'label-parent-flex', + type: 'integer', + },{ + name : 'Direction', + property : 'flex-direction', + type : 'radio', + defaults : 'row', + list : [{ + value : 'row', + name : 'Row', + className : 'icons-flex icon-dir-row', + title : 'Row', + },{ + value : 'row-reverse', + name : 'Row reverse', + className : 'icons-flex icon-dir-row-rev', + title : 'Row reverse', + },{ + value : 'column', + name : 'Column', + title : 'Column', + className : 'icons-flex icon-dir-col', + },{ + value : 'column-reverse', + name : 'Column reverse', + title : 'Column reverse', + className : 'icons-flex icon-dir-col-rev', + }], + },{ + name : 'Justify', + property : 'justify-content', + type : 'radio', + defaults : 'flex-start', + list : [{ + value : 'flex-start', + className : 'icons-flex icon-just-start', + title : 'Start', + },{ + value : 'flex-end', + title : 'End', + className : 'icons-flex icon-just-end', + },{ + value : 'space-between', + title : 'Space between', + className : 'icons-flex icon-just-sp-bet', + },{ + value : 'space-around', + title : 'Space around', + className : 'icons-flex icon-just-sp-ar', + },{ + value : 'center', + title : 'Center', + className : 'icons-flex icon-just-sp-cent', + }], + },{ + name : 'Align', + property : 'align-items', + type : 'radio', + defaults : 'center', + list : [{ + value : 'flex-start', + title : 'Start', + className : 'icons-flex icon-al-start', + },{ + value : 'flex-end', + title : 'End', + className : 'icons-flex icon-al-end', + },{ + value : 'stretch', + title : 'Stretch', + className : 'icons-flex icon-al-str', + },{ + value : 'center', + title : 'Center', + className : 'icons-flex icon-al-center', + }], + },{ + name: 'Flex Children', + property: 'label-parent-flex', + type: 'integer', + },{ + name: 'Order', + property: 'order', + type: 'integer', + defaults : 0, + min: 0 + },{ + name : 'Flex', + property : 'flex', + type : 'composite', + properties : [{ + name: 'Grow', + property: 'flex-grow', + type: 'integer', + defaults : 0, + min: 0 + },{ + name: 'Shrink', + property: 'flex-shrink', + type: 'integer', + defaults : 0, + min: 0 + },{ + name: 'Basis', + property: 'flex-basis', + type: 'integer', + units: ['px','%',''], + unit: '', + defaults : 'auto', + }], + },{ + name : 'Align', + property : 'align-self', + type : 'radio', + defaults : 'auto', + list : [{ + value : 'auto', + name : 'Auto', + },{ + value : 'flex-start', + title : 'Start', + className : 'icons-flex icon-al-start', + },{ + value : 'flex-end', + title : 'End', + className : 'icons-flex icon-al-end', + },{ + value : 'stretch', + title : 'Stretch', + className : 'icons-flex icon-al-str', + },{ + value : 'center', + title : 'Center', + className : 'icons-flex icon-al-center', + }], + }] + } + ]}); + +let pnm = editor.Panels; +pnm.addButton('options', [{ + id: 'undo', + className: 'fa fa-undo icon-undo', + command: function (editor, sender) { + sender.set('active', 0); + editor.UndoManager.undo(1); + }, + attributes: { + title: 'Undo (CTRL/CMD + Z)' + } +}, + { + id: 'redo', + className: 'fa fa-repeat icon-redo', + command: function (editor, sender) { + sender.set('active', 0); + editor.UndoManager.redo(1); + }, + attributes: { + title: 'Redo (CTRL/CMD + SHIFT + Z)' + } + }, + { + id: 'import', + className: 'fa fa-edit', + command: 'html-edit', + attributes: { + title: 'Edit and Import' + } + }, { + id: 'clean-all', + className: 'fa fa-trash icon-blank', + command: function (editor, sender) { + if (sender) sender.set('active', false); + if (confirm('Are you sure to clean the canvas?')) { + editor.DomComponents.clear(); + setTimeout(function () { + localStorage.setItem('gjs-assets', ''); + localStorage.setItem('gjs-components', ''); + localStorage.setItem('gjs-html', ''); + localStorage.setItem('gjs-css', ''); + localStorage.setItem('gjs-styles', ''); + }, 0); + } + }, + attributes: { + title: 'Empty canvas' + } + }, + { + id: 'clear-local', + className: 'fa fa-close', + command: function () { + if (confirm('Reset to original?')) { + localStorage.setItem('gjs-assets', ''); + localStorage.setItem('gjs-components', ''); + localStorage.setItem('gjs-html', ''); + localStorage.setItem('gjs-css', ''); + localStorage.setItem('gjs-styles', ''); + location.reload(); + } + }, + attributes: { + title: 'Reset' + } + }, + { + id: 'save-project', + className: 'fa fa-save', + command: function (editor, sender) { + sender.set('active', 0); + alert('No database for this version but your work is automatically saved in localstorage.'); + }, + attributes: { + title: 'github' + } + } +]); + + +// --------------------- +// Import/Edit +// --------------------- +let gra = { + // append in container + _a: function (appendName) { + return container.appendChild(appendName); + }, + // create elements + _c: function (tagName) { + return document.createElement(tagName); + }, + // check extensions + _e: function (fname) { + let ext = /^.+\.([^.]+)$/.exec(fname); + return ext == null ? "" : ext[1]; + }, + // select id + _d: function (name, tag) { + switch (tag) { + case 'class': + return document.getElementsByClassName(name); + break; + case 'id': + return document.getElementById(name); + break; + default: + return document.getElementById(name); + } + } +} + +let pmodel = gra._d("modelPopup", "class"); +let pfx = editor.getConfig().stylePrefix; +let modal = editor.Modal; +let cmdm = editor.Commands; +let container = gra._c("div"); +let fileform = gra._c("div"); +let btnEdit = gra._c("button"); +let copyHtml = gra._c("button"); +let copyCss = gra._c("button"); +let btnZip = gra._c("button"); +let exportTxt = gra._c("button"); +let loadTxt = gra._c("button"); +let fileLoader = gra._c("form"); +let anchor = gra._c("a"); + + +function buildCodeEditor(type) { + let codeEditor = editor.CodeManager.getViewer('CodeMirror').clone(); + codeEditor.set({ + codeName: type === 'html' ? 'htmlmixed' : 'css', + readOnly: 0, + theme: 'hopscotch', + autoBeautify: true, + autoCloseTags: true, + autoCloseBrackets: true, + lineWrapping: true, + styleActiveLine: true, + smartIndent: true, + indentWithTabs: true + }); + return codeEditor; +} +let htmlCodeEditor = buildCodeEditor('html'); +let cssCodeEditor = buildCodeEditor('css'); + +btnEdit.innerHTML = ' Apply'; +btnZip.innerHTML = ' Download Project (zip)'; +exportTxt.innerHTML = ' Save as .gram file'; +loadTxt.innerHTML = ' Load .gram file'; +copyHtml.innerHTML = ' Copy HTML'; +copyCss.innerHTML = ' Copy CSS'; +fileLoader.innerHTML = ''; +fileform.innerHTML = ''; + +fileform.className = 'modelPopup'; +fileLoader.className = pfx + 'import-file'; +btnEdit.className = pfx + 'btn-prim ' + pfx + 'btn-import'; +copyHtml.className = pfx + 'btn-prim ' + pfx + 'btn-html'; +copyCss.className = pfx + 'btn-prim ' + pfx + 'btn-css'; +btnZip.className = pfx + 'btn-prim ' + pfx + 'btn-zip'; +exportTxt.className = pfx + 'btn-prim ' + pfx + 'btn-export'; +loadTxt.className = pfx + 'btn-prim ' + pfx + 'btn-load'; + +// import button inside import editor +btnEdit.onclick = function () { + let htmlCode = htmlCodeEditor.editor.getValue(); + let cssCode = cssCodeEditor.editor.getValue(); + editor.DomComponents.getWrapper().set('content', ''); + editor.setComponents(htmlCode.trim() + ''); + modal.close(); +}; + +btnZip.onclick = function() { + editor.runCommand('gjs-export-zip'); +}; + +// onclick load file button inside import editor +loadTxt.onclick = function (e) { + e.preventDefault(); + let fileToLoad = document.getElementById("fileToLoad").files[0]; + let fType = gra._e(fileToLoad['name']); + if (fileToLoad === undefined) { + alert('Please select a file'); + return; + } + if (fType !== 'gram' || fType !== 'txt') { + alert('You can only import .gram or .txt extension'); + } + + let reader = new FileReader(); + reader.onload = function (e) { + let fileData = e.target.result; + editor.DomComponents.getWrapper().set('content', ''); + editor.setComponents(fileData); + modal.close(); + } + reader.readAsText(fileToLoad); +} + +copyHtml.onclick = function(){ + let htmlCodes = htmlCodeEditor.editor.getValue(); + let dummy = gra._c("input"); + document.body.appendChild(dummy); + dummy.setAttribute('value', htmlCodes); + dummy.select(); + document.execCommand("copy"); + document.body.removeChild(dummy); + document.execCommand('copy'); + alert('You have copied HTML codes!'); +}; +copyCss.onclick = function(){ + let cssCodes = cssCodeEditor.editor.getValue(); + console.log(cssCodes); + let dummy = gra._c("input"); + document.body.appendChild(dummy); + dummy.setAttribute('value', cssCodes); + dummy.select(); + document.execCommand("copy"); + document.body.removeChild(dummy); + document.execCommand('copy'); + alert('You have copied CSS codes!'); +}; + +// onclick save as button inside import editor +exportTxt.onclick = function () { + pmodel[0].className += " " + 'showup'; +} + +// export file as .gram extension +function exportgramfile() { + let fileName = gra._d("file_name", "id").value; + if (fileName !== undefined && fileName !== '') { + alert('Please type a file name'); + return; + } + let InnerHtml = editor.getHtml(); + let Css = editor.getCss(); + let text = InnerHtml + "'; + let blob = new Blob([text], { + type: "text/plain" + }); + anchor.download = fileName + ".gram"; + anchor.href = window.URL.createObjectURL(blob); + anchor.target = "_blank"; + anchor.style.display = "none"; // just to be safe! + document.body.appendChild(anchor); + anchor.click(); + document.body.removeChild(anchor); + pmodel[0].className = "modelPopup"; +} + + +// import nav button click event +cmdm.add('html-edit', { + run: function importArea(editor, sender) { + sender && sender.set('active', 0); + let htmlViewer = htmlCodeEditor.editor; + let cssViewer = cssCodeEditor.editor; + let htmlBox = gra._c('div'); + htmlBox.className = 'html-wrapper'; + htmlBox.innerHTML = "

HTML

"; + let cssBox = gra._c('div'); + cssBox.className = 'css-wrapper'; + cssBox.innerHTML = "

CSS

"; + modal.setTitle('Edit and Import'); + let headline = gra._c('div'); + headline.className = 'clear-head'; + let htmlWrap = gra._c('textarea'); + let cssWrap = gra._c('textarea'); + htmlBox.appendChild(htmlWrap); + cssBox.appendChild(cssWrap); + if (!htmlViewer && !cssViewer) { + gra._a(fileLoader); + gra._a(fileform); + gra._a(loadTxt); + gra._a(exportTxt); + gra._a(headline); + gra._a(htmlBox); + gra._a(cssBox); + gra._a(copyCss); + gra._a(copyHtml); + gra._a(btnEdit); + gra._a(btnZip); + htmlCodeEditor.init(htmlWrap); + cssCodeEditor.init(cssWrap); + } + modal.setContent(''); + modal.setContent(container); + htmlCodeEditor.setContent(editor.getHtml()); + cssCodeEditor.setContent(editor.getCss({ avoidProtected: true })); + modal.open(); + htmlCodeEditor.editor.refresh(); + cssCodeEditor.editor.refresh(); + } +}); + +editor.BlockManager.getCategories().each(function (ctg) { + ctg.set('open', false); +}) +// let bm = editor.BlockManager; +// bm.add('link-block', { +// label: 'Link Block', +// attributes: {class:'fa fa-link'}, +// category: 'Basic', +// content: { +// type:'link', +// editable: false, +// droppable: true, +// style:{ +// display: 'inline-block', +// padding: '5px', +// 'min-height': '50px', +// 'min-width': '50px' +// } +// }, +// }); + +let domc = editor.DomComponents; +let defaultType = domc.getType('default'); +// let defaultModel = defaultType.model; +let defaultView = defaultType.view; + +// model: defaultModel.extend({ +// defaults: Object.assign({}, defaultModel.prototype.defaults, { +// traits: [{ +// name: 'title', +// label: 'Título', +// placeholder: 'Insira um texto aqui' +// }] +// }), +// }), +// }); + + +// editor.on('storage:load', function (e) { +// console.log('LOAD ', e); +// }) +// editor.on('storage:store', function (e) { +// console.log('STORE ', e); +// }) + +// let newButton = editor.Panels.addButton('myPanelID', { +// id: 'create-comp', +// className: 'fa fa-pencil-square-o', +// command: 'create-comp', // <-- the ID of the command +// attributes: {title: 'Create element'}, +// stopDefaultCommand: 1, +// }); + + +editor.on('styleManager:change:text-shadow', function (view) { + let model = view.model; + let targetValue = view.getTargetValue({ + ignoreDefault: 1 + }); + let computedValue = view.getComputedValue(); + let defaultValue = view.model.getDefaultValue(); + //console.log('Style of ', model.get('property'), 'Target: ', targetValue, 'Computed:', computedValue, 'Default:', defaultValue); +}); +editor.Panels.removeButton('options', 'export-template'); +editor.render(); diff --git a/dist/gramateria/develop/gramateria.css b/gramateria/develop/gramateria.scss similarity index 100% rename from dist/gramateria/develop/gramateria.css rename to gramateria/develop/gramateria.scss diff --git a/gramateria/dist/gram.min.css b/gramateria/dist/gram.min.css new file mode 100644 index 0000000..c3f7567 --- /dev/null +++ b/gramateria/dist/gram.min.css @@ -0,0 +1,364 @@ +body, +html { + height: 100%; + margin: 0; +} + +.fa::before { + -webkit-text-stroke: 0.5px #fff; +} + +.gjs-cm-editor#gjs-cm-css #gjs-cm-title, +.gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title, +.gjs-two-color, +.gjs-color-warn, .gjs-sm-sector .gjs-sm-field input, .gjs-clm-tags .gjs-sm-field input, .gjs-sm-sector .gjs-clm-field input, .gjs-clm-tags .gjs-clm-field input, .gjs-sm-sector .gjs-sm-field select, .gjs-clm-tags .gjs-sm-field select, .gjs-sm-sector .gjs-clm-field select, .gjs-clm-tags .gjs-clm-field select { + color: #464973; +} + +.gjs-block-category .gjs-blocks-c div[title=Card]:after { + background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968468/card_urqoco.jpg"); + background-size: cover; + width: 300px; + height: 231px; +} + +.gjs-block-category .gjs-blocks-c div[title=Blog]:after { + background-image: url("https://res.cloudinary.com/ronaldaug/image/upload/v1530116427/blog_qrhnhx.jpg"); + background-size: cover; + width: 400px; + height: 227px; +} + +.gjs-block-category .gjs-blocks-c div[title=Starter]:after { + background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968469/starter_shyx0y.png"); + background-size: cover; + width: 400px; + height: 196px; +} + +.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:after { + background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968466/nav_he3fot.jpg"); + background-size: cover; + width: 600px; + height: 38px; +} + +.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:after { + background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968469/nav2_iovg0o.jpg"); + background-size: cover; + width: 600px; + height: 129px; +} + +.gjs-block-category .gjs-blocks-c div[title=Footer]:after { + background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968467/footer_o8vuik.jpg"); + background-size: cover; + width: 400px; + height: 142px; +} + +.gjs-block-category .gjs-blocks-c div[title=Badges]:after { + background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968467/badges_hs1ta5.jpg"); + background-size: cover; + width: 400px; + height: 154px; +} + +.gjs-block-category .gjs-blocks-c div[title=Members]:after { + background-image: url("https://res.cloudinary.com/ronaldaug/image/upload/v1530275580/members_v2x2tl.jpg"); + background-size: cover; + width: 400px; + height: 224px; +} + +.gjs-block-category .gjs-blocks-c div[title=Slider]:after { + background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968468/slider_l07ucf.jpg"); + background-size: cover; + width: 400px; + height: 154px; +} + +.gjs-block-category .gjs-blocks-c div[title=Input]:after, +.gjs-block-category .gjs-blocks-c div[title=Textarea]:after, +.gjs-block-category .gjs-blocks-c div[title=Radio]:after, +.gjs-block-category .gjs-blocks-c div[title=Checkbox]:after, +.gjs-block-category .gjs-blocks-c div[title=Select]:after { + content: "Please insert this inside the
tag."; +} + +.gjs-block-category .gjs-blocks-c div[title=Radio]:after, +.gjs-block-category .gjs-blocks-c div[title=Checkbox]:after, +.gjs-block-category .gjs-blocks-c div[title=Select]:after, +.gjs-block-category .gjs-blocks-c div[title=Input]:after, +.gjs-block-category .gjs-blocks-c div[title=Textarea]:after { + line-height: 2; + position: fixed; + top: 0; + right: 220px; + opacity: 0; + z-index: 2; + visibility: hidden; + transition: all ease-in-out 0.3s; + -webkit-transition: all ease-in-out 0.3s; + -moz-transition: all ease-in-out 0.3s; + width: 300px; + height: 44px; + font-size: 13px; + padding: 10px; + background: #ffffff; + color: #000; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + box-shadow: 1px 2px 10px rgba(116, 116, 116, 0.3); + -moz-box-shadow: 1px 2px 10px rgba(116, 116, 116, 0.3); + -webkit-box-shadow: 1px 2px 10px rgba(116, 116, 116, 0.3); +} + +.gjs-block-category .gjs-blocks-c div[title=Radio]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Checkbox]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Select]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Textarea]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Input]:hover:after { + top: 30%; + opacity: 1; + display: block; + visibility: visible; +} + +.gjs-block-category .gjs-blocks-c div[title=Parallax]:after { + background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968470/parallax_hz2hot.jpg"); + background-size: cover; + width: 400px; + height: 197px; +} + +.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:after, +.gjs-block-category .gjs-blocks-c div[title=Starter]:after, +.gjs-block-category .gjs-blocks-c div[title=Badges]:after, +.gjs-block-category .gjs-blocks-c div[title=Slider]:after, +.gjs-block-category .gjs-blocks-c div[title=Footer]:after, +.gjs-block-category .gjs-blocks-c div[title=Members]:after, +.gjs-block-category .gjs-blocks-c div[title=Blog]:after, +.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:after, +.gjs-block-category .gjs-blocks-c div[title=Parallax]:after, +.gjs-block-category .gjs-blocks-c div[title=Card]:after { + content: ""; + line-height: 2; + position: fixed; + color: #fff; + top: 0; + right: 220px; + opacity: 0; + z-index: 2; + visibility: hidden; + transition: all ease-in-out 0.3s; + -webkit-transition: all ease-in-out 0.3s; + -moz-transition: all ease-in-out 0.3s; +} + +.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Starter]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Badges]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Slider]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Blog]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Footer]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Members]:hover:after, +.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Parallax]:hover:after, +.gjs-block-category .gjs-blocks-c div[title=Card]:hover:after { + top: 10%; + opacity: 1; + display: block; + visibility: visible; +} + +.right { + float: right; +} + +/* Overwrite GrapeJS css */ +.gjs-one-bg { + background-color: #f6f7f9; +} + +.gjs-block:hover { + box-shadow: 0 3px 4px 0 rgba(204, 210, 251, 0.42); +} + +.gjs-category-title, .gjs-sm-sector .gjs-sm-title, .gjs-clm-tags .gjs-sm-title, .gjs-block-category .gjs-title, .gjs-layer-title { + background-color: #eee; + border-bottom: 1px solid rgba(121, 121, 121, 0.25); +} + +/* text editor color */ +.gjs-cm-editor #gjs-cm-title { + background-color: rgba(164, 190, 241, 0.2); +} + +.cm-s-hopscotch.CodeMirror { + /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#2f3c54+0,414251+100 */ + background: #2f3c54; + /* Old browsers */ + /* FF3.6-15 */ + /* Chrome10-25,Safari5.1-6 */ + background: linear-gradient(135deg, #2f3c54 0%, #414251 100%); + /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#2f3c54", endColorstr="#414251",GradientType=1 ); + /* IE6-9 fallback on horizontal gradient */ + color: #999; +} + +.cm-s-hopscotch .CodeMirror-gutters { + background: #232c3c; +} + +.cm-s-hopscotch span.cm-tag { + color: #9a648b; +} + +.cm-s-hopscotch span.cm-atom { + color: #836fb6; +} + +.cm-s-hopscotch span.cm-number { + color: #a06d91; +} + +.cm-s-hopscotch span.cm-string { + color: #816eb5; +} + +.cm-s-hopscotch span.cm-property, +.cm-s-hopscotch span.cm-attribute { + color: #5eb6cc; +} + +/* class name */ +.gjs-clm-tags #gjs-clm-close, +.gjs-clm-tags #gjs-clm-checkbox { + color: #444; +} + +.gjs-three-bg { + background-color: #f6f7f9; +} + +/* select box */ +.gjs-field-arrow-u { + border-bottom: 4px solid #444; +} + +.gjs-field-arrow-d { + border-top: 4px solid #444; +} + +.gjs-field .gjs-d-s-arrow { + border-top: 4px solid #444444; +} + +.gjs-pn-btn.fa:before, +.gjs-block.fa:before { + color: #262c42; +} + +.gjs-block { + background: #fff; +} + +.gjs-blocks-c { + padding-bottom: 6px; +} + +.gjs-field select.gjs-devices { + padding: 2px; +} + +.gjs-color-warn, +.gjs-sm-sector .gjs-sm-field input, +.gjs-clm-tags .gjs-sm-field input, +.gjs-sm-sector .gjs-clm-field input, +.gjs-clm-tags .gjs-clm-field input, +.gjs-sm-sector .gjs-sm-field select, +.gjs-clm-tags .gjs-sm-field select, +.gjs-sm-sector .gjs-clm-field select, +.gjs-clm-tags .gjs-clm-field select { + color: #000; +} + +.gjs-btn-html, +.gjs-btn-css, +.gjs-btn-export { + float: right; +} + +.gjs-btn-import, .gjs-btn-zip, .gjs-btn-export, .gjs-btn-load, .gjs-btn-css, .gjs-btn-html { + color: #587899; + font-size: 13px; + margin: 10px 0 10px; +} + +.CodeMirror { + height: 400px; +} + +.modelPopup input[type=text] { + height: 20px; +} + +.modelPopup { + z-index: 99999; + position: fixed; + top: -20%; + left: 50%; + margin-left: -100px; + width: 200px; + background: #fff; + padding: 20px; + height: auto; + text-align: center; + opacity: 0; + box-shadow: 0 10px 300px rgba(116, 116, 116, 0.8); + -moz-box-shadow: 0 10px 300px rgba(116, 116, 116, 0.8); + -webkit-box-shadow: 0 10px 300px rgba(116, 116, 116, 0.8); + visibility: hidden; + transition: all ease-in-out 0.4s; + -webkit-transition: all ease-in-out 0.4s; + -moz-transition: all ease-in-out 0.4s; +} + +.modelPopup.showup { + top: 20% !important; + opacity: 1 !important; + visibility: visible !important; +} + +button.exportgram { + margin-left: 10px; + padding: 4px 10px; + background: #444; + color: #fff; + border-radius: 20px; +} + +.html-wrapper, .css-wrapper { + width: 49%; + float: left; +} + +.html-wrapper h4, .css-wrapper h4 { + margin: 4px 0 4px; +} + +.gjs-mdl-dialog { + max-width: none; +} + +.clear-head { + width: 100%; + clear: both; +} + +.css-wrapper { + margin-left: 2%; +} diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js new file mode 100644 index 0000000..483ad43 --- /dev/null +++ b/gramateria/dist/gram.min.js @@ -0,0 +1,1493 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "./gramateria/develop/blocks.js": +/*!**************************************!*\ + !*** ./gramateria/develop/blocks.js ***! + \**************************************/ +/***/ ((module) => { + +module.exports = [{ + id: 'std', + label: 'Starter', + category: 'Section', + content: '' + "", + attributes: { + "class": 'fa fa-wpforms' + } +}, { + id: 'parallax', + label: 'Parallax', + category: 'Section', + content: '
' + '
' + '' + '
' + '
' + '
' + '
' + '

Parallax

' + '

Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

' + '
' + '
' + '
' + '
' + '
' + '' + '', + attributes: { + "class": 'fa fa-list-alt' + } +}, { + id: 'nav', + label: 'Navbar 1', + category: 'Section', + content: '' + "", + attributes: { + "class": 'fa fa-window-maximize' + } +}, { + id: 'dropdownNav', + label: 'Navbar 2', + category: 'Section', + content: '' + '' + '' + '' + '', + attributes: { + "class": 'fa fa-toggle-down' + } +}, { + id: 'footer', + label: 'Footer', + category: 'Section', + content: '
' + '
' + '
' + '
' + '
Company Bio
' + '

We are a team of college students working on this project like its our full time job.Any amount would help support and continue development on this project and is greatly appreciated.

' + '
' + '
' + '
Settings
' + '' + '
' + '
' + '
Connect
' + '' + '
' + '
' + '
' + '' + '
', + attributes: { + "class": 'fa fa-desktop' + } +}, { + id: 'b1', + label: '1 Block', + category: 'Grid', + attributes: { + "class": 'fa fa-reorder' + }, + content: "
\n
\n
" +}, { + id: 'b2', + label: '2 Blocks', + category: 'Grid', + attributes: { + "class": 'fa fa-th-large' + }, + content: "
\n
\n
\n
" +}, { + id: 'b3', + label: '3 Blocks', + category: 'Grid', + attributes: { + "class": 'fa fa-th' + }, + content: '
' + '
' + '
' + '
' + '
' +}, { + id: 'b4', + label: '4 Blocks', + category: 'Grid', + attributes: { + "class": 'fa fa-calendar' + }, + content: '
' + '
' + '
' + '
' + '
' + '
' +}, { + id: 'b5', + label: '4/8 Block', + category: 'Grid', + attributes: { + "class": 'fa fa-th-list' + }, + content: '
' + '
' + '
' + '
' +}, { + id: 'b6', + label: '5/7 Block', + category: 'Grid', + attributes: { + "class": 'fa fa-dedent' + }, + content: '
' + '
' + '
' + '
' +}, { + id: 'b7', + label: '3/9 Block', + category: 'Grid', + attributes: { + "class": 'fa fa-list' + }, + content: '
' + '
' + '
' + '
' +}, { + id: 'b8', + label: 'Center Block', + category: 'Grid', + attributes: { + "class": 'fa fa-minus-square-o' + }, + content: '
' + '
' + '
' +}, { + id: '3ba', + label: 'Badges', + category: 'Section', + content: '
' + '
' + '
' + '
' + '

flash_on

' + '
Speeds up development
' + '

We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

' + '
' + '
' + '
' + '
' + '

group

' + '
User Experience Focused
' + '

By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

' + '
' + '
' + '
' + '
' + '

settings

' + '
Easy to work with
' + '

We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

' + '
' + '
' + '
' + '
' + '
' + '', + attributes: { + "class": 'fa fa-sitemap' + } +}, { + id: 'text', + label: 'Text', + attributes: { + "class": 'fa fa-text-width' + }, + category: 'Basic', + content: { + type: 'text', + content: 'Insert your text here', + activeOnRender: 1 + } +}, { + id: 'image', + label: 'Image', + category: 'Basic', + attributes: { + "class": 'fa fa-file-image-o' + }, + content: { + type: 'image', + activeOnRender: 1 + } +}, { + id: 'list', + label: 'List', + category: 'Basic', + attributes: { + "class": 'fa fa-bars' + }, + content: "" +}, { + id: 'list2', + label: 'List Two', + category: 'Basic', + attributes: { + "class": 'fa fa-bars' + }, + content: '' +}, { + id: 'table', + label: 'Table', + category: 'Basic', + attributes: { + "class": 'fa fa-table' + }, + content: '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
NameItem NameItem Price
AlvinEclair$0.87
AlanJellybean$3.76
JonathanLollipop$7.00
' +}, { + id: 'res', + label: 'respon image', + category: 'Media', + content: '', + attributes: { + "class": 'fa fa-image' + } +}, { + id: 'popup', + label: 'popup image', + category: 'Media', + content: '' + '', + attributes: { + "class": 'fa fa-object-group' + } +}, { + id: 'dropdown', + label: 'dropdown', + category: 'Button', + content: '' + 'Drop Me!' + '' + '', + attributes: { + "class": 'fa fa-list' + } +}, { + id: 'modal', + label: 'modal', + category: 'Button', + content: '' + 'Modal' + '' + '', + attributes: { + "class": 'fa fa-object-ungroup' + } +}, { + id: 'slider', + label: 'Slider', + category: 'Section', + content: '
' + '
    ' + '
  • ' + ' ' + '
    ' + '

    This is our big Tagline!

    ' + '
    Heres our small slogan.
    ' + '
    ' + '
  • ' + '
  • ' + ' ' + '
    ' + '

    Left Aligned Caption

    ' + '
    Heres our small slogan.
    ' + '
    ' + '
  • ' + '
  • ' + ' ' + '
    ' + '

    Right Aligned Caption

    ' + '
    Heres our small slogan.
    ' + '
    ' + '
  • ' + '
  • ' + ' ' + '
    ' + '

    This is our big Tagline!

    ' + '
    Heres our small slogan.
    ' + '
    ' + '
  • ' + '
' + '
' + '', + attributes: { + "class": 'fa fa-credit-card' + } +}, { + id: 'btn', + label: 'button', + category: 'Button', + content: 'button', + attributes: { + "class": 'fa fa-square-o' + } +}, { + id: 'target', + label: 'tap target', + category: 'Button', + content: '' + '
' + '
' + '
Title
' + '

Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Proin eget tortor risus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Nulla porttitor accumsan tincidunt.

' + '
' + '
', + attributes: { + "class": 'fa fa-bullseye' + } +}, { + id: 'fab', + label: 'FAB', + category: 'Button', + content: '', + attributes: { + "class": 'fa fa-bullseye' + } +}, { + id: 'fabtool', + label: 'FAB toolbar', + category: 'Button', + content: '', + attributes: { + "class": 'fa fa-ellipsis-h' + } +}, { + id: 'cbtn', + label: 'Circle Button', + category: 'Button', + content: 'add', + attributes: { + "class": 'fa fa-circle-thin' + } +}, { + id: 'link', + label: 'Link', + category: 'Basic', + attributes: { + "class": 'fa fa-link' + }, + content: { + type: 'link', + content: 'Link' + } +}, { + id: 'formtag', + label: 'Form Tag', + category: 'Form', + attributes: { + "class": 'fa fa-file-text' + }, + content: '' + '
' + '
' + '
' + '' +}, { + id: 'formgroup', + label: 'Form group', + category: 'Form', + attributes: { + "class": 'fa fa-list' + }, + content: '
' + '
' + '
' + '
' + '' + '' + '
' + '
' + '' + '' + '
' + '
' + '
' + '
' + '' + '' + '
' + '
' + '
' + '
' + '' + '' + '
' + '
' + '
' + '
This is an inline input field:' + '
' + '' + '' + '
' + '
' + '
' + '
' + '
' + '' +}, { + id: 'iconinput', + label: 'Input', + category: 'Form', + attributes: { + "class": 'fa fa-minus-square' + }, + content: '
' + '
' + 'account_circle' + '' + '' + '
' + '
' + 'phone' + '' + '' + '
' + '
' +}, { + id: 'textarea', + label: 'Textarea', + category: 'Form', + attributes: { + "class": 'fa fa-sticky-note-o' + }, + content: '
' + '
' + '' + '' + '
' + '
' +}, { + id: 'select', + label: 'Select', + category: 'Form', + attributes: { + "class": 'fa fa-caret-square-o-down' + }, + content: '
' + '' + '' + '
' + '' +}, { + id: 'radio', + label: 'Radio', + category: 'Form', + attributes: { + "class": 'fa fa-dot-circle-o' + }, + content: "
\n
\n

\n\n\n

\n

\n\n\n

\n

\n\n\n

\n

\n\n\n

\n
\n
" +}, { + id: 'checkbox', + label: 'Checkbox', + category: 'Form', + attributes: { + "class": 'fa fa-check-square-o' + }, + content: "
\n
\n

\n\n\n

\n

\n\n\n

\n
\n
" +}, { + id: 'map', + label: 'Map', + category: 'Extra', + attributes: { + "class": 'fa fa-map-o' + }, + content: { + type: 'map', + style: { + height: '350px' + } + } +}, { + id: 'sidenav', + label: 'SideNav', + category: 'Extra', + content: "\nmenu\n ", + attributes: { + "class": 'fa fa-indent' + } +}, { + id: 'accor', + label: 'Accordian', + category: 'Extra', + attributes: { + "class": 'fa fa-reorder' + }, + content: "\n\n" +}, { + id: 'tap', + label: 'Tap', + category: 'Extra', + attributes: { + "class": 'fa fa-ellipsis-h' + }, + content: '
' + '
' + '' + '
' + '
Test 1
' + '
Test 2
' + '
Test 3
' + '
Test 4
' + '
' + '' +}, { + id: 'members', + label: 'Members', + category: 'Section', + content: "
\n
\n
\n
\n

Members

\n
\n
\n
\n
\n
\n\"\"\n
Marian Holmes
\n

Developer

\n\n
\n
\n
\n
\n\"\"\n
Peggy Henry
\n

Marketing manager

\n\n
\n
\n
\n
\n\"\"\n
Eduardo Carter
\n

Director

\n\n
\n
\n
\n
\n
\n", + attributes: { + "class": "fa fa-users" + } +}, { + id: 'blog', + label: 'Blog', + category: 'Section', + content: '
' + '
' + '
' + '

Blog

' + '
' + '
' + '
' + '
' + '22 / July / 18' + '
' + '' + '
' + '

Blog Title

' + '
' + '
' + '
    ' + '
  • person_outline by John Doe
  • ' + '
  • ' + 'chat_bubble_outline 5 Comments' + '
  • ' + '
' + '
' + '

' + 'Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.' + '

' + 'Read More' + '
' + '
' + '
' + '
' + '
' + '22 / July / 18' + '
' + '' + '
' + '

Blog Title

' + '
' + '
' + '
    ' + '
  • person_outline by John Doe
  • ' + '
  • ' + 'chat_bubble_outline 5 Comments' + '
  • ' + '
' + '
' + '

' + 'Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.' + '

' + 'Read More' + '
' + '
' + '
' + '
' + '', + attributes: { + "class": "fa fa-dedent" + } +}, { + id: 'card', + label: 'Card', + category: 'Section', + content: '
' + '
' + '
' + '
' + '' + 'Card Title' + '
' + '
' + '

I am a very simple card. I am good at containing small bits of information.' + 'I am convenient because I require little markup to use effectively.

' + '
' + '
' + 'This is a link' + '
' + '
' + '
' + '
', + attributes: { + "class": 'fa fa-newspaper-o' + } +}, { + id: 'video', + label: 'Video', + category: 'Media', + attributes: { + "class": 'fa fa-youtube-play' + }, + content: { + type: 'video', + src: 'img/video2.webm', + style: { + height: '350px', + width: '615px' + } + } +}, { + id: 'h1p', + label: 'Text section', + category: 'Typography', + content: '
' + '

Insert title here

' + '

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

' + '
', + attributes: { + "class": 'fa fa-align-center' + } +}, { + id: 'quo', + label: 'Quote', + category: 'Typography', + content: '
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
', + attributes: { + "class": 'fa fa-quote-right' + } +}]; + +/***/ }), + +/***/ "./gramateria/develop/gramateria.js": +/*!******************************************!*\ + !*** ./gramateria/develop/gramateria.js ***! + \******************************************/ +/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { + +var blocks = __webpack_require__(/*! ./blocks */ "./gramateria/develop/blocks.js"); + +var editor = grapesjs.init({ + allowScripts: 1, + showOffsets: 1, + autorender: 0, + noticeOnUnload: 0, + container: '#gjs', + height: '100%', + fromElement: true, + clearOnRender: 0, + plugins: ['gjs-plugin-export'], + pluginsOpts: { + 'gjs-plugin-export': { + btnLabel: 'Download Zip', + preHtml: "\n \n \n \n \n \n \n \n \n \n ", + postHtml: "\n \n " + } + }, + canvas: { + styles: ['https://fonts.googleapis.com/css?family=Roboto', 'https://fonts.googleapis.com/icon?family=Material+Icons', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css'], + scripts: ['https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.1/js/materialize.min.js'] + }, + commands: { + defaults: [// { + // id: 'open-github', + // run: function (editor, sender) { + // sender.set('active', false); + // window.open('https://github.com/ronaldaug/gramateria', '_blank'); + // } + // }, + { + id: 'undo', + run: function run(editor, sender) { + sender.set('active', false); + editor.UndoManager.undo(true); + } + }, { + id: 'redo', + run: function run(editor, sender) { + sender.set('active', false); + editor.UndoManager.redo(true); + } + }, { + id: 'clean-all', + run: function run(editor, sender) { + sender.set('active', false); + + if (confirm('Are you sure to clean the canvas?')) { + var comps = editor.DomComponents.clear(); + } + } + }] + }, + assetManager: { + upload: 'https://test.page', + params: { + _token: 'pCYrSwjuiV0t5NVtZpQDY41Gn5lNUwo3it1FIkAj' + }, + assets: [{ + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background_ckgyqe.jpg', + date: '2015-02-01', + height: 808, + width: 1440 + }, { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419441/background2_gjvaxs.jpg', + date: '2015-02-01', + height: 800, + width: 1600 + }, { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background3_d0ghix.jpg', + date: '2015-02-01', + height: 743, + width: 1440 + }, { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419446/background4_pzh5ou.jpg', + date: '2015-02-01', + height: 808, + width: 1440 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/0174DF/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/5FB404/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/BF00FF/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/B40431/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/088A68/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/DF7401/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/00BFFF/ffffff/', + height: 350, + width: 250 + }] + }, + blockManager: { + blocks: blocks + }, + storageManager: { + id: 'gjs-', + type: 'local', + autosave: 1, + autoload: 1, + stepsBeforeSave: 1, + storeComponents: 1, + storeStyles: 1, + storeHtml: 1, + storeCss: 1 + }, + customStyleManager: [{ + name: 'General', + buildProps: ['float', 'display', 'position', 'top', 'right', 'left', 'bottom'], + properties: [{ + name: 'Alignment', + property: 'float', + type: 'radio', + defaults: 'none', + list: [{ + value: 'none', + className: 'fa fa-times' + }, { + value: 'left', + className: 'fa fa-align-left' + }, { + value: 'right', + className: 'fa fa-align-right' + }] + }, { + property: 'position', + type: 'select' + }] + }, { + name: 'Dimension', + open: false, + buildProps: ['width', 'flex-width', 'height', 'max-width', 'min-height', 'margin', 'padding'], + properties: [{ + id: 'flex-width', + type: 'integer', + name: 'Width', + units: ['px', '%'], + property: 'flex-basis', + toRequire: 1 + }, { + property: 'margin', + properties: [{ + name: 'Top', + property: 'margin-top' + }, { + name: 'Right', + property: 'margin-right' + }, { + name: 'Bottom', + property: 'margin-bottom' + }, { + name: 'Left', + property: 'margin-left' + }] + }, { + property: 'padding', + properties: [{ + name: 'Top', + property: 'padding-top' + }, { + name: 'Right', + property: 'padding-right' + }, { + name: 'Bottom', + property: 'padding-bottom' + }, { + name: 'Left', + property: 'padding-left' + }] + }] + }, { + name: 'Typography', + open: false, + buildProps: ['font-family', 'font-size', 'font-weight', 'letter-spacing', 'color', 'line-height', 'text-align', 'text-decoration', 'text-shadow'], + properties: [{ + name: 'Font', + property: 'font-family' + }, { + name: 'Weight', + property: 'font-weight' + }, { + name: 'Font color', + property: 'color' + }, { + property: 'text-align', + type: 'radio', + defaults: 'left', + list: [{ + value: 'left', + name: 'Left', + className: 'fa fa-align-left' + }, { + value: 'center', + name: 'Center', + className: 'fa fa-align-center' + }, { + value: 'right', + name: 'Right', + className: 'fa fa-align-right' + }, { + value: 'justify', + name: 'Justify', + className: 'fa fa-align-justify' + }] + }, { + property: 'text-decoration', + type: 'radio', + defaults: 'none', + list: [{ + value: 'none', + name: 'None', + className: 'fa fa-times' + }, { + value: 'underline', + name: 'underline', + className: 'fa fa-underline' + }, { + value: 'line-through', + name: 'Line-through', + className: 'fa fa-strikethrough' + }] + }, { + property: 'text-shadow', + properties: [{ + name: 'X position', + property: 'text-shadow-h' + }, { + name: 'Y position', + property: 'text-shadow-v' + }, { + name: 'Blur', + property: 'text-shadow-blur' + }, { + name: 'Color', + property: 'text-shadow-color' + }] + }] + }, { + name: 'Decorations', + open: false, + buildProps: ['opacity', 'background-color', 'border-radius', 'border', 'box-shadow', 'background'], + properties: [{ + type: 'slider', + property: 'opacity', + defaults: 1, + step: 0.01, + max: 1, + min: 0 + }, { + property: 'border-radius', + properties: [{ + name: 'Top', + property: 'border-top-left-radius' + }, { + name: 'Right', + property: 'border-top-right-radius' + }, { + name: 'Bottom', + property: 'border-bottom-left-radius' + }, { + name: 'Left', + property: 'border-bottom-right-radius' + }] + }, { + property: 'box-shadow', + properties: [{ + name: 'X position', + property: 'box-shadow-h' + }, { + name: 'Y position', + property: 'box-shadow-v' + }, { + name: 'Blur', + property: 'box-shadow-blur' + }, { + name: 'Spread', + property: 'box-shadow-spread' + }, { + name: 'Color', + property: 'box-shadow-color' + }, { + name: 'Shadow type', + property: 'box-shadow-type' + }] + }, { + property: 'background', + properties: [{ + name: 'Image', + property: 'background-image' + }, { + name: 'Repeat', + property: 'background-repeat' + }, { + name: 'Position', + property: 'background-position' + }, { + name: 'Attachment', + property: 'background-attachment' + }, { + name: 'Size', + property: 'background-size' + }] + }] + }, { + name: 'Extra', + open: false, + buildProps: ['transition', 'perspective', 'transform'], + properties: [{ + property: 'transition', + properties: [{ + name: 'Property', + property: 'transition-property' + }, { + name: 'Duration', + property: 'transition-duration' + }, { + name: 'Easing', + property: 'transition-timing-function' + }] + }, { + property: 'transform', + properties: [{ + name: 'Rotate X', + property: 'transform-rotate-x' + }, { + name: 'Rotate Y', + property: 'transform-rotate-y' + }, { + name: 'Rotate Z', + property: 'transform-rotate-z' + }, { + name: 'Scale X', + property: 'transform-scale-x' + }, { + name: 'Scale Y', + property: 'transform-scale-y' + }, { + name: 'Scale Z', + property: 'transform-scale-z' + }] + }] + }, { + name: 'Flex', + open: false, + properties: [{ + name: 'Flex Container', + property: 'display', + type: 'select', + defaults: 'block', + list: [{ + value: 'block', + name: 'Disable' + }, { + value: 'flex', + name: 'Enable' + }] + }, { + name: 'Flex Parent', + property: 'label-parent-flex', + type: 'integer' + }, { + name: 'Direction', + property: 'flex-direction', + type: 'radio', + defaults: 'row', + list: [{ + value: 'row', + name: 'Row', + className: 'icons-flex icon-dir-row', + title: 'Row' + }, { + value: 'row-reverse', + name: 'Row reverse', + className: 'icons-flex icon-dir-row-rev', + title: 'Row reverse' + }, { + value: 'column', + name: 'Column', + title: 'Column', + className: 'icons-flex icon-dir-col' + }, { + value: 'column-reverse', + name: 'Column reverse', + title: 'Column reverse', + className: 'icons-flex icon-dir-col-rev' + }] + }, { + name: 'Justify', + property: 'justify-content', + type: 'radio', + defaults: 'flex-start', + list: [{ + value: 'flex-start', + className: 'icons-flex icon-just-start', + title: 'Start' + }, { + value: 'flex-end', + title: 'End', + className: 'icons-flex icon-just-end' + }, { + value: 'space-between', + title: 'Space between', + className: 'icons-flex icon-just-sp-bet' + }, { + value: 'space-around', + title: 'Space around', + className: 'icons-flex icon-just-sp-ar' + }, { + value: 'center', + title: 'Center', + className: 'icons-flex icon-just-sp-cent' + }] + }, { + name: 'Align', + property: 'align-items', + type: 'radio', + defaults: 'center', + list: [{ + value: 'flex-start', + title: 'Start', + className: 'icons-flex icon-al-start' + }, { + value: 'flex-end', + title: 'End', + className: 'icons-flex icon-al-end' + }, { + value: 'stretch', + title: 'Stretch', + className: 'icons-flex icon-al-str' + }, { + value: 'center', + title: 'Center', + className: 'icons-flex icon-al-center' + }] + }, { + name: 'Flex Children', + property: 'label-parent-flex', + type: 'integer' + }, { + name: 'Order', + property: 'order', + type: 'integer', + defaults: 0, + min: 0 + }, { + name: 'Flex', + property: 'flex', + type: 'composite', + properties: [{ + name: 'Grow', + property: 'flex-grow', + type: 'integer', + defaults: 0, + min: 0 + }, { + name: 'Shrink', + property: 'flex-shrink', + type: 'integer', + defaults: 0, + min: 0 + }, { + name: 'Basis', + property: 'flex-basis', + type: 'integer', + units: ['px', '%', ''], + unit: '', + defaults: 'auto' + }] + }, { + name: 'Align', + property: 'align-self', + type: 'radio', + defaults: 'auto', + list: [{ + value: 'auto', + name: 'Auto' + }, { + value: 'flex-start', + title: 'Start', + className: 'icons-flex icon-al-start' + }, { + value: 'flex-end', + title: 'End', + className: 'icons-flex icon-al-end' + }, { + value: 'stretch', + title: 'Stretch', + className: 'icons-flex icon-al-str' + }, { + value: 'center', + title: 'Center', + className: 'icons-flex icon-al-center' + }] + }] + }] +}); +var pnm = editor.Panels; +pnm.addButton('options', [{ + id: 'undo', + className: 'fa fa-undo icon-undo', + command: function command(editor, sender) { + sender.set('active', 0); + editor.UndoManager.undo(1); + }, + attributes: { + title: 'Undo (CTRL/CMD + Z)' + } +}, { + id: 'redo', + className: 'fa fa-repeat icon-redo', + command: function command(editor, sender) { + sender.set('active', 0); + editor.UndoManager.redo(1); + }, + attributes: { + title: 'Redo (CTRL/CMD + SHIFT + Z)' + } +}, { + id: 'import', + className: 'fa fa-edit', + command: 'html-edit', + attributes: { + title: 'Edit and Import' + } +}, { + id: 'clean-all', + className: 'fa fa-trash icon-blank', + command: function command(editor, sender) { + if (sender) sender.set('active', false); + + if (confirm('Are you sure to clean the canvas?')) { + editor.DomComponents.clear(); + setTimeout(function () { + localStorage.setItem('gjs-assets', ''); + localStorage.setItem('gjs-components', ''); + localStorage.setItem('gjs-html', ''); + localStorage.setItem('gjs-css', ''); + localStorage.setItem('gjs-styles', ''); + }, 0); + } + }, + attributes: { + title: 'Empty canvas' + } +}, { + id: 'clear-local', + className: 'fa fa-close', + command: function command() { + if (confirm('Reset to original?')) { + localStorage.setItem('gjs-assets', ''); + localStorage.setItem('gjs-components', ''); + localStorage.setItem('gjs-html', ''); + localStorage.setItem('gjs-css', ''); + localStorage.setItem('gjs-styles', ''); + location.reload(); + } + }, + attributes: { + title: 'Reset' + } +}, { + id: 'save-project', + className: 'fa fa-save', + command: function command(editor, sender) { + sender.set('active', 0); + alert('No database for this version but your work is automatically saved in localstorage.'); + }, + attributes: { + title: 'github' + } +}]); // --------------------- +// Import/Edit +// --------------------- + +var gra = { + // append in container + _a: function _a(appendName) { + return container.appendChild(appendName); + }, + // create elements + _c: function _c(tagName) { + return document.createElement(tagName); + }, + // check extensions + _e: function _e(fname) { + var ext = /^.+\.([^.]+)$/.exec(fname); + return ext == null ? "" : ext[1]; + }, + // select id + _d: function _d(name, tag) { + switch (tag) { + case 'class': + return document.getElementsByClassName(name); + break; + + case 'id': + return document.getElementById(name); + break; + + default: + return document.getElementById(name); + } + } +}; + +var pmodel = gra._d("modelPopup", "class"); + +var pfx = editor.getConfig().stylePrefix; +var modal = editor.Modal; +var cmdm = editor.Commands; + +var container = gra._c("div"); + +var fileform = gra._c("div"); + +var btnEdit = gra._c("button"); + +var copyHtml = gra._c("button"); + +var copyCss = gra._c("button"); + +var btnZip = gra._c("button"); + +var exportTxt = gra._c("button"); + +var loadTxt = gra._c("button"); + +var fileLoader = gra._c("form"); + +var anchor = gra._c("a"); + +function buildCodeEditor(type) { + var codeEditor = editor.CodeManager.getViewer('CodeMirror').clone(); + codeEditor.set({ + codeName: type === 'html' ? 'htmlmixed' : 'css', + readOnly: 0, + theme: 'hopscotch', + autoBeautify: true, + autoCloseTags: true, + autoCloseBrackets: true, + lineWrapping: true, + styleActiveLine: true, + smartIndent: true, + indentWithTabs: true + }); + return codeEditor; +} + +var htmlCodeEditor = buildCodeEditor('html'); +var cssCodeEditor = buildCodeEditor('css'); +btnEdit.innerHTML = ' Apply'; +btnZip.innerHTML = ' Download Project (zip)'; +exportTxt.innerHTML = ' Save as .gram file'; +loadTxt.innerHTML = ' Load .gram file'; +copyHtml.innerHTML = ' Copy HTML'; +copyCss.innerHTML = ' Copy CSS'; +fileLoader.innerHTML = ''; +fileform.innerHTML = ''; +fileform.className = 'modelPopup'; +fileLoader.className = pfx + 'import-file'; +btnEdit.className = pfx + 'btn-prim ' + pfx + 'btn-import'; +copyHtml.className = pfx + 'btn-prim ' + pfx + 'btn-html'; +copyCss.className = pfx + 'btn-prim ' + pfx + 'btn-css'; +btnZip.className = pfx + 'btn-prim ' + pfx + 'btn-zip'; +exportTxt.className = pfx + 'btn-prim ' + pfx + 'btn-export'; +loadTxt.className = pfx + 'btn-prim ' + pfx + 'btn-load'; // import button inside import editor + +btnEdit.onclick = function () { + var htmlCode = htmlCodeEditor.editor.getValue(); + var cssCode = cssCodeEditor.editor.getValue(); + editor.DomComponents.getWrapper().set('content', ''); + editor.setComponents(htmlCode.trim() + ''); + modal.close(); +}; + +btnZip.onclick = function () { + editor.runCommand('gjs-export-zip'); +}; // onclick load file button inside import editor + + +loadTxt.onclick = function (e) { + e.preventDefault(); + var fileToLoad = document.getElementById("fileToLoad").files[0]; + + var fType = gra._e(fileToLoad['name']); + + if (fileToLoad === undefined) { + alert('Please select a file'); + return; + } + + if (fType !== 'gram' || fType !== 'txt') { + alert('You can only import .gram or .txt extension'); + } + + var reader = new FileReader(); + + reader.onload = function (e) { + var fileData = e.target.result; + editor.DomComponents.getWrapper().set('content', ''); + editor.setComponents(fileData); + modal.close(); + }; + + reader.readAsText(fileToLoad); +}; + +copyHtml.onclick = function () { + var htmlCodes = htmlCodeEditor.editor.getValue(); + + var dummy = gra._c("input"); + + document.body.appendChild(dummy); + dummy.setAttribute('value', htmlCodes); + dummy.select(); + document.execCommand("copy"); + document.body.removeChild(dummy); + document.execCommand('copy'); + alert('You have copied HTML codes!'); +}; + +copyCss.onclick = function () { + var cssCodes = cssCodeEditor.editor.getValue(); + console.log(cssCodes); + + var dummy = gra._c("input"); + + document.body.appendChild(dummy); + dummy.setAttribute('value', cssCodes); + dummy.select(); + document.execCommand("copy"); + document.body.removeChild(dummy); + document.execCommand('copy'); + alert('You have copied CSS codes!'); +}; // onclick save as button inside import editor + + +exportTxt.onclick = function () { + pmodel[0].className += " " + 'showup'; +}; // export file as .gram extension + + +function exportgramfile() { + var fileName = gra._d("file_name", "id").value; + + if (fileName !== undefined && fileName !== '') { + alert('Please type a file name'); + return; + } + + var InnerHtml = editor.getHtml(); + var Css = editor.getCss(); + var text = InnerHtml + "'; + var blob = new Blob([text], { + type: "text/plain" + }); + anchor.download = fileName + ".gram"; + anchor.href = window.URL.createObjectURL(blob); + anchor.target = "_blank"; + anchor.style.display = "none"; // just to be safe! + + document.body.appendChild(anchor); + anchor.click(); + document.body.removeChild(anchor); + pmodel[0].className = "modelPopup"; +} // import nav button click event + + +cmdm.add('html-edit', { + run: function importArea(editor, sender) { + sender && sender.set('active', 0); + var htmlViewer = htmlCodeEditor.editor; + var cssViewer = cssCodeEditor.editor; + + var htmlBox = gra._c('div'); + + htmlBox.className = 'html-wrapper'; + htmlBox.innerHTML = "

HTML

"; + + var cssBox = gra._c('div'); + + cssBox.className = 'css-wrapper'; + cssBox.innerHTML = "

CSS

"; + modal.setTitle('Edit and Import'); + + var headline = gra._c('div'); + + headline.className = 'clear-head'; + + var htmlWrap = gra._c('textarea'); + + var cssWrap = gra._c('textarea'); + + htmlBox.appendChild(htmlWrap); + cssBox.appendChild(cssWrap); + + if (!htmlViewer && !cssViewer) { + gra._a(fileLoader); + + gra._a(fileform); + + gra._a(loadTxt); + + gra._a(exportTxt); + + gra._a(headline); + + gra._a(htmlBox); + + gra._a(cssBox); + + gra._a(copyCss); + + gra._a(copyHtml); + + gra._a(btnEdit); + + gra._a(btnZip); + + htmlCodeEditor.init(htmlWrap); + cssCodeEditor.init(cssWrap); + } + + modal.setContent(''); + modal.setContent(container); + htmlCodeEditor.setContent(editor.getHtml()); + cssCodeEditor.setContent(editor.getCss({ + avoidProtected: true + })); + modal.open(); + htmlCodeEditor.editor.refresh(); + cssCodeEditor.editor.refresh(); + } +}); +editor.BlockManager.getCategories().each(function (ctg) { + ctg.set('open', false); +}); // let bm = editor.BlockManager; +// bm.add('link-block', { +// label: 'Link Block', +// attributes: {class:'fa fa-link'}, +// category: 'Basic', +// content: { +// type:'link', +// editable: false, +// droppable: true, +// style:{ +// display: 'inline-block', +// padding: '5px', +// 'min-height': '50px', +// 'min-width': '50px' +// } +// }, +// }); + +var domc = editor.DomComponents; +var defaultType = domc.getType('default'); // let defaultModel = defaultType.model; + +var defaultView = defaultType.view; // model: defaultModel.extend({ +// defaults: Object.assign({}, defaultModel.prototype.defaults, { +// traits: [{ +// name: 'title', +// label: 'Título', +// placeholder: 'Insira um texto aqui' +// }] +// }), +// }), +// }); +// editor.on('storage:load', function (e) { +// console.log('LOAD ', e); +// }) +// editor.on('storage:store', function (e) { +// console.log('STORE ', e); +// }) +// let newButton = editor.Panels.addButton('myPanelID', { +// id: 'create-comp', +// className: 'fa fa-pencil-square-o', +// command: 'create-comp', // <-- the ID of the command +// attributes: {title: 'Create element'}, +// stopDefaultCommand: 1, +// }); + +editor.on('styleManager:change:text-shadow', function (view) { + var model = view.model; + var targetValue = view.getTargetValue({ + ignoreDefault: 1 + }); + var computedValue = view.getComputedValue(); + var defaultValue = view.model.getDefaultValue(); //console.log('Style of ', model.get('property'), 'Target: ', targetValue, 'Computed:', computedValue, 'Default:', defaultValue); +}); +editor.Panels.removeButton('options', 'export-template'); +editor.render(); + +/***/ }), + +/***/ "./gramateria/develop/gramateria.scss": +/*!********************************************!*\ + !*** ./gramateria/develop/gramateria.scss ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = __webpack_modules__; +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/chunk loaded */ +/******/ (() => { +/******/ var deferred = []; +/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { +/******/ if(chunkIds) { +/******/ priority = priority || 0; +/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; +/******/ deferred[i] = [chunkIds, fn, priority]; +/******/ return; +/******/ } +/******/ var notFulfilled = Infinity; +/******/ for (var i = 0; i < deferred.length; i++) { +/******/ var [chunkIds, fn, priority] = deferred[i]; +/******/ var fulfilled = true; +/******/ for (var j = 0; j < chunkIds.length; j++) { +/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { +/******/ chunkIds.splice(j--, 1); +/******/ } else { +/******/ fulfilled = false; +/******/ if(priority < notFulfilled) notFulfilled = priority; +/******/ } +/******/ } +/******/ if(fulfilled) { +/******/ deferred.splice(i--, 1) +/******/ var r = fn(); +/******/ if (r !== undefined) result = r; +/******/ } +/******/ } +/******/ return result; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/jsonp chunk loading */ +/******/ (() => { +/******/ // no baseURI +/******/ +/******/ // object to store loaded and loading chunks +/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched +/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded +/******/ var installedChunks = { +/******/ "/gramateria/dist/gram.min": 0, +/******/ "gramateria/dist/gram.min": 0 +/******/ }; +/******/ +/******/ // no chunk on demand loading +/******/ +/******/ // no prefetching +/******/ +/******/ // no preloaded +/******/ +/******/ // no HMR +/******/ +/******/ // no HMR manifest +/******/ +/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0); +/******/ +/******/ // install a JSONP callback for chunk loading +/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { +/******/ var [chunkIds, moreModules, runtime] = data; +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0; +/******/ for(moduleId in moreModules) { +/******/ if(__webpack_require__.o(moreModules, moduleId)) { +/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(runtime) var result = runtime(__webpack_require__); +/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { +/******/ installedChunks[chunkId][0](); +/******/ } +/******/ installedChunks[chunkIds[i]] = 0; +/******/ } +/******/ return __webpack_require__.O(result); +/******/ } +/******/ +/******/ var chunkLoadingGlobal = self["webpackChunkgramateria"] = self["webpackChunkgramateria"] || []; +/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); +/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module depends on other loaded chunks and execution need to be delayed +/******/ __webpack_require__.O(undefined, ["gramateria/dist/gram.min"], () => (__webpack_require__("./gramateria/develop/gramateria.js"))) +/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["gramateria/dist/gram.min"], () => (__webpack_require__("./gramateria/develop/gramateria.scss"))) +/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); +/******/ +/******/ })() +; \ No newline at end of file diff --git a/grapesjs/dist/css/grapes.min.css b/grapesjs/dist/css/grapes.min.css new file mode 100755 index 0000000..c2d5745 --- /dev/null +++ b/grapesjs/dist/css/grapes.min.css @@ -0,0 +1 @@ +.sp-container{position:absolute;top:0;left:0;display:inline-block;*display:inline;*zoom:1;z-index:9999994;overflow:hidden}.sp-container.sp-flat{position:relative}.sp-container,.sp-container *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.sp-top{position:relative;width:100%;display:inline-block}.sp-top-inner{position:absolute;top:0;left:0;bottom:0;right:0}.sp-color{position:absolute;top:0;left:0;bottom:0;right:20%}.sp-hue{position:absolute;top:0;right:0;bottom:0;left:84%;height:100%}.sp-clear-enabled .sp-hue{top:33px;height:77.5%}.sp-fill{padding-top:80%}.sp-sat,.sp-val{position:absolute;top:0;left:0;right:0;bottom:0}.sp-alpha-enabled .sp-top{margin-bottom:18px}.sp-alpha-enabled .sp-alpha{display:block}.sp-alpha-handle{position:absolute;top:-4px;bottom:-4px;width:6px;left:50%;cursor:pointer;border:1px solid black;background:white;opacity:.8}.sp-alpha{display:none;position:absolute;bottom:-14px;right:0;left:0;height:8px}.sp-alpha-inner{border:solid 1px #333}.sp-clear{display:none}.sp-clear.sp-clear-display{background-position:center}.sp-clear-enabled .sp-clear{display:block;position:absolute;top:0px;right:0;bottom:0;left:84%;height:28px}.sp-container,.sp-replacer,.sp-preview,.sp-dragger,.sp-slider,.sp-alpha,.sp-clear,.sp-alpha-handle,.sp-container.sp-dragging .sp-input,.sp-container button{-webkit-user-select:none;-moz-user-select:-moz-none;-o-user-select:none;user-select:none}.sp-container.sp-input-disabled .sp-input-container{display:none}.sp-container.sp-buttons-disabled .sp-button-container{display:none}.sp-container.sp-palette-buttons-disabled .sp-palette-button-container{display:none}.sp-palette-only .sp-picker-container{display:none}.sp-palette-disabled .sp-palette-container{display:none}.sp-initial-disabled .sp-initial{display:none}.sp-sat{background-image:-webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0)));background-image:-webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0));background-image:-moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0));background-image:-o-linear-gradient(left, #fff, rgba(204, 154, 129, 0));background-image:-ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0));background-image:linear-gradient(to right, #fff, rgba(204, 154, 129, 0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)";filter:progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr="#FFFFFFFF", endColorstr="#00CC9A81")}.sp-val{background-image:-webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0)));background-image:-webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0));background-image:-moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));background-image:-o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));background-image:-ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0));background-image:linear-gradient(to top, #000, rgba(204, 154, 129, 0));-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00CC9A81", endColorstr="#FF000000")}.sp-hue{background:-moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);background:-ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);background:-o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);background:-webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000));background:-webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);background:linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%)}.sp-1{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff0000", endColorstr="#ffff00")}.sp-2{height:16%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffff00", endColorstr="#00ff00")}.sp-3{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00ff00", endColorstr="#00ffff")}.sp-4{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00ffff", endColorstr="#0000ff")}.sp-5{height:16%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#0000ff", endColorstr="#ff00ff")}.sp-6{height:17%;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff00ff", endColorstr="#ff0000")}.sp-hidden{display:none !important}.sp-cf:before,.sp-cf:after{content:"";display:table}.sp-cf:after{clear:both}.sp-cf{*zoom:1}@media(max-device-width: 480px){.sp-color{right:40%}.sp-hue{left:63%}.sp-fill{padding-top:60%}}.sp-dragger{border-radius:5px;height:5px;width:5px;border:1px solid #fff;background:#000;cursor:pointer;position:absolute;top:0;left:0}.sp-slider{position:absolute;top:0;cursor:pointer;height:3px;left:-1px;right:-1px;border:1px solid #000;background:white;opacity:.8}.sp-container{border-radius:0;background-color:#ececec;border:solid 1px #f0c49b;padding:0}.sp-container,.sp-container button,.sp-container input,.sp-color,.sp-hue,.sp-clear{font:normal 12px "Lucida Grande","Lucida Sans Unicode","Lucida Sans",Geneva,Verdana,sans-serif;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.sp-top{margin-bottom:3px}.sp-color,.sp-hue,.sp-clear{border:solid 1px #666}.sp-input-container{float:right;width:100px;margin-bottom:4px}.sp-initial-disabled .sp-input-container{width:100%}.sp-input{font-size:12px !important;border:1px inset;padding:4px 5px;margin:0;width:100%;background:transparent;border-radius:3px;color:#222}.sp-input:focus{border:1px solid orange}.sp-input.sp-validation-error{border:1px solid red;background:#fdd}.sp-picker-container,.sp-palette-container{float:left;position:relative;padding:10px;padding-bottom:300px;margin-bottom:-290px}.sp-picker-container{width:172px;border-left:solid 1px #fff}.sp-palette-container{border-right:solid 1px #ccc}.sp-palette-only .sp-palette-container{border:0}.sp-palette .sp-thumb-el{display:block;position:relative;float:left;width:24px;height:15px;margin:3px;cursor:pointer;border:solid 2px transparent}.sp-palette .sp-thumb-el:hover,.sp-palette .sp-thumb-el.sp-thumb-active{border-color:orange}.sp-thumb-el{position:relative}.sp-initial{float:left;border:solid 1px #333}.sp-initial span{width:30px;height:25px;border:none;display:block;float:left;margin:0}.sp-initial .sp-clear-display{background-position:center}.sp-palette-button-container,.sp-button-container{float:right}.sp-replacer{margin:0;overflow:hidden;cursor:pointer;padding:4px;display:inline-block;*zoom:1;*display:inline;border:solid 1px #91765d;background:#eee;color:#333;vertical-align:middle}.sp-replacer:hover,.sp-replacer.sp-active{border-color:#f0c49b;color:#111}.sp-replacer.sp-disabled{cursor:default;border-color:silver;color:silver}.sp-dd{padding:2px 0;height:16px;line-height:16px;float:left;font-size:10px}.sp-preview{position:relative;width:25px;height:20px;border:solid 1px #222;margin-right:5px;float:left;z-index:0}.sp-palette{*width:220px;max-width:220px}.sp-palette .sp-thumb-el{width:16px;height:16px;margin:2px 1px;border:solid 1px #d0d0d0}.sp-container{padding-bottom:0}.sp-container button{background-color:#eee;background-image:-webkit-linear-gradient(top, #eeeeee, #cccccc);background-image:-moz-linear-gradient(top, #eeeeee, #cccccc);background-image:-ms-linear-gradient(top, #eeeeee, #cccccc);background-image:-o-linear-gradient(top, #eeeeee, #cccccc);background-image:linear-gradient(to bottom, #eeeeee, #cccccc);border:1px solid #ccc;border-bottom:1px solid #bbb;border-radius:3px;color:#333;font-size:14px;line-height:1;padding:5px 4px;text-align:center;text-shadow:0 1px 0 #eee;vertical-align:middle}.sp-container button:hover{background-color:#ddd;background-image:-webkit-linear-gradient(top, #dddddd, #bbbbbb);background-image:-moz-linear-gradient(top, #dddddd, #bbbbbb);background-image:-ms-linear-gradient(top, #dddddd, #bbbbbb);background-image:-o-linear-gradient(top, #dddddd, #bbbbbb);background-image:linear-gradient(to bottom, #dddddd, #bbbbbb);border:1px solid #bbb;border-bottom:1px solid #999;cursor:pointer;text-shadow:0 1px 0 #ddd}.sp-container button:active{border:1px solid #aaa;border-bottom:1px solid #888;-webkit-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-moz-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-ms-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;-o-box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee;box-shadow:inset 0 0 5px 2px #aaa,0 1px 0 0 #eee}.sp-cancel{font-size:11px;color:#d93f3f !important;margin:0;padding:2px;margin-right:5px;vertical-align:middle;text-decoration:none}.sp-cancel:hover{color:#d93f3f !important;text-decoration:underline}.sp-palette span:hover,.sp-palette span.sp-thumb-active{border-color:#000}.sp-preview,.sp-alpha,.sp-thumb-el{position:relative;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.sp-preview-inner,.sp-alpha-inner,.sp-thumb-inner{display:block;position:absolute;top:0;left:0;bottom:0;right:0}.sp-palette .sp-thumb-inner{background-position:50% 50%;background-repeat:no-repeat}.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=)}.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=)}.sp-clear-display{background-repeat:no-repeat;background-position:center;background-image:url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==)}.CodeMirror{font-family:monospace;height:300px;color:black;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:white}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:black}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0 !important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20, 255, 20, 0.5);-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:blue}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:bold}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:blue}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:red}.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255, 150, 0, 0.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll !important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none !important;border:none !important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255, 255, 0, 0.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.cm-s-hopscotch.CodeMirror{background:#322931;color:#d5d3d5}.cm-s-hopscotch div.CodeMirror-selected{background:#433b42 !important}.cm-s-hopscotch .CodeMirror-gutters{background:#322931;border-right:0px}.cm-s-hopscotch .CodeMirror-linenumber{color:#797379}.cm-s-hopscotch .CodeMirror-cursor{border-left:1px solid #989498 !important}.cm-s-hopscotch span.cm-comment{color:#b33508}.cm-s-hopscotch span.cm-atom{color:#c85e7c}.cm-s-hopscotch span.cm-number{color:#c85e7c}.cm-s-hopscotch span.cm-property,.cm-s-hopscotch span.cm-attribute{color:#8fc13e}.cm-s-hopscotch span.cm-keyword{color:#dd464c}.cm-s-hopscotch span.cm-string{color:#fdcc59}.cm-s-hopscotch span.cm-variable{color:#8fc13e}.cm-s-hopscotch span.cm-variable-2{color:#1290bf}.cm-s-hopscotch span.cm-def{color:#fd8b19}.cm-s-hopscotch span.cm-error{background:#dd464c;color:#989498}.cm-s-hopscotch span.cm-bracket{color:#d5d3d5}.cm-s-hopscotch span.cm-tag{color:#dd464c}.cm-s-hopscotch span.cm-link{color:#c85e7c}.cm-s-hopscotch .CodeMirror-matchingbracket{text-decoration:underline;color:white !important}.cm-s-hopscotch .CodeMirror-activeline-background{background:#302020}@font-face{font-family:"font3336";src:url("../fonts/main-fonts.eot?v=20");src:url("../fonts/main-fonts.woff?v=20") format("woff"),url("../fonts/main-fonts.ttf?v=20") format("truetype"),url("../fonts/main-fonts.svg?v=20") format("svg"),url("../fonts/main-fonts.eot?v=20") format("embedded-opentype");font-weight:normal;font-style:normal}.gjs-is__grab,.gjs-is__grab *{cursor:grab !important}.gjs-is__grabbing,.gjs-is__grabbing *{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:grabbing !important}.gjs-one-bg{background-color:#444}.gjs-one-color{color:#444}.gjs-one-color-h:hover{color:#444}.gjs-two-bg{background-color:#ddd}.gjs-two-color{color:#ddd}.gjs-two-color-h:hover{color:#ddd}.gjs-three-bg{background-color:#804f7b}.gjs-three-color{color:#804f7b}.gjs-three-color-h:hover{color:#804f7b}.gjs-four-bg{background-color:#d278c9}.gjs-four-color{color:#d278c9}.gjs-four-color-h:hover{color:#d278c9}.gjs-danger-bg{background-color:#dd3636}.gjs-danger-color{color:#dd3636}.gjs-danger-color-h:hover{color:#dd3636}.gjs-bg-main,.gjs-sm-sector .gjs-sm-colorp-c,.gjs-clm-tags .gjs-sm-colorp-c,.gjs-off-prv{background-color:#444}.gjs-color-main,.gjs-sm-sector .gjs-sm-stack #gjs-sm-add,.gjs-clm-tags .gjs-sm-stack #gjs-sm-add,.gjs-off-prv{color:#ddd;fill:#ddd}.gjs-color-active{color:#f8f8f8;fill:#f8f8f8}.gjs-color-warn{color:#ffca6f;fill:#ffca6f}.gjs-color-hl{color:#71b7f1;fill:#71b7f1}.gjs-fonts::before{display:block;font:normal normal normal 14px font3336;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:5em}.gjs-f-b1::before{content:"Q"}.gjs-f-b2::before{content:"W"}.gjs-f-b3::before{content:"E"}.gjs-f-b37::before{content:"R"}.gjs-f-hero::before{content:"T"}.gjs-f-h1p::before{content:"y"}.gjs-f-3ba::before{content:"u"}.gjs-f-image::before{content:"I"}.gjs-f-text::before{content:"o"}.gjs-f-quo::before{content:"p"}.gjs-f-button::before{content:"B"}.gjs-f-divider::before{content:"D"}.gjs-invis-invis,.gjs-clm-tags #gjs-clm-new,.gjs-no-app{background-color:transparent;border:none;color:inherit}.gjs-no-app{height:10px}.gjs-test::btn{color:"#fff"}.opac50{opacity:.5;filter:alpha(opacity=50)}.gjs-checker-bg,.gjs-field-colorp-c,.checker-bg,.gjs-sm-sector .gjs-sm-property .gjs-sm-layer>#gjs-sm-preview-box,.gjs-clm-tags .gjs-sm-property .gjs-sm-layer>#gjs-sm-preview-box{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==")}.gjs-no-user-select,.gjs-rte-toolbar,.gjs-layer-name,.gjs-grabbing,.gjs-grabbing *{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.gjs-no-pointer-events,.gjs-margin-v-el,.gjs-padding-v-el,.gjs-fixedmargin-v-el,.gjs-fixedpadding-v-el,.gjs-resizer-c{pointer-events:none}.gjs-bdrag{pointer-events:none !important;position:absolute !important;z-index:10 !important;width:auto}.gjs-drag-helper{background-color:#3b97e3 !important;pointer-events:none !important;position:absolute !important;z-index:10 !important;transform:scale(0.3) !important;transform-origin:top left !important;-webkit-transform-origin:top left !important;margin:15px !important;transition:none !important;outline:none !important}.gjs-grabbing,.gjs-grabbing *{cursor:grabbing !important;cursor:-webkit-grabbing !important}.gjs-grabbing{overflow:hidden}.gjs-off-prv{position:relative;z-index:10;padding:5px;cursor:pointer}.gjs-editor-cont ::-webkit-scrollbar-track{background:rgba(0,0,0,.1)}.gjs-editor-cont ::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.2)}.gjs-editor-cont ::-webkit-scrollbar{width:8px}.clear{clear:both}.no-select,.gjs-clm-tags #gjs-clm-close,.gjs-category-title,.gjs-layer-title,.gjs-block-category .gjs-title,.gjs-sm-sector .gjs-sm-title,.gjs-clm-tags .gjs-sm-title,.gjs-com-no-select,.gjs-com-no-select img{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.gjs-no-touch-actions{touch-action:none}.gjs-disabled{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;opacity:.5;filter:alpha(opacity=50)}.gjs-editor{font-family:Helvetica,sans-serif;font-size:.75rem;position:relative;box-sizing:border-box;height:100%}.gjs-freezed,.gjs-freezed{opacity:.5;filter:alpha(opacity=50);pointer-events:none}.gjs-traits-label{border-bottom:1px solid rgba(0,0,0,.2);font-weight:lighter;margin-bottom:5px;padding:10px;text-align:left}.gjs-label-wrp{width:30%;min-width:30%}.gjs-field-wrp{flex-grow:1}.gjs-trt-header{font-weight:lighter;padding:10px}.gjs-trt-trait{display:flex;justify-content:flex-start;padding:5px 10px;font-weight:lighter;align-items:center;text-align:left}.gjs-trt-traits{font-size:.75rem}.gjs-trt-trait .gjs-label{text-align:left;text-overflow:ellipsis;overflow:hidden}.gjs-guide-info{position:absolute}.gjs-guide-info__content{position:absolute;height:100%;display:flex;width:100%;padding:5px}.gjs-guide-info__line{position:relative;margin:auto}.gjs-guide-info__line::before,.gjs-guide-info__line::after{content:"";display:block;position:absolute;background-color:inherit}.gjs-guide-info__y{padding:0 5px}.gjs-guide-info__y .gjs-guide-info__content{justify-content:center}.gjs-guide-info__y .gjs-guide-info__line{width:100%;height:1px}.gjs-guide-info__y .gjs-guide-info__line::before,.gjs-guide-info__y .gjs-guide-info__line::after{width:1px;height:10px;top:0;bottom:0;left:0;margin:auto}.gjs-guide-info__y .gjs-guide-info__line::after{left:auto;right:0}.gjs-guide-info__x{padding:5px 0}.gjs-guide-info__x .gjs-guide-info__content{align-items:center}.gjs-guide-info__x .gjs-guide-info__line{height:100%;width:1px}.gjs-guide-info__x .gjs-guide-info__line::before,.gjs-guide-info__x .gjs-guide-info__line::after{width:10px;height:1px;left:0;right:0;top:0;margin:auto;transform:translateX(-50%)}.gjs-guide-info__x .gjs-guide-info__line::after{top:auto;bottom:0}.gjs-badge{white-space:nowrap}.gjs-badge__icon{vertical-align:middle;display:inline-block;width:15px;height:15px}.gjs-badge__icon svg{fill:currentColor}.gjs-badge__name{display:inline-block;vertical-align:middle}.gjs-frame-wrapper{position:absolute;width:100%;height:100%;left:0;right:0;margin:auto}.gjs-frame-wrapper--anim{transition:width .35s ease,height .35s ease}.gjs-frame-wrapper__top{transform:translateY(-100%) translateX(-50%);display:flex;padding:5px 0;position:absolute;width:100%;left:50%;top:0}.gjs-frame-wrapper__top-r{margin-left:auto}.gjs-frame-wrapper__left{position:absolute;left:0;transform:translateX(-100%) translateY(-50%);height:100%;top:50%}.gjs-frame-wrapper__bottom{position:absolute;bottom:0;transform:translateY(100%) translateX(-50%);width:100%;left:50%}.gjs-frame-wrapper__right{position:absolute;right:0;transform:translateX(100%) translateY(-50%);height:100%;top:50%}.gjs-frame-wrapper__icon{width:24px;cursor:pointer}.gjs-frame-wrapper__icon>svg{fill:currentColor}.gjs-padding-v-top,.gjs-fixedpadding-v-top{width:100%;top:0;left:0}.gjs-padding-v-right,.gjs-fixedpadding-v-right{right:0}.gjs-padding-v-bottom,.gjs-fixedpadding-v-bottom{width:100%;left:0;bottom:0}.gjs-padding-v-left,.gjs-fixedpadding-v-left{left:0}.gjs-cv-canvas{background-color:rgba(0,0,0,.15);box-sizing:border-box;width:85%;height:calc(100% - 40px);bottom:0;overflow:hidden;z-index:1;position:absolute;left:0;top:40px}.gjs-cv-canvas.gjs-is__grab .gjs-cv-canvas__frames,.gjs-cv-canvas.gjs-is__grabbing .gjs-cv-canvas__frames{pointer-events:none}.gjs-cv-canvas__frames{position:absolute;top:0;left:0;width:100%;height:100%}.gjs-cv-canvas .gjs-ghost{display:none;pointer-events:none;background-color:#5b5b5b;border:2px dashed #ccc;position:absolute;z-index:10;opacity:.55;filter:alpha(opacity=55)}.gjs-cv-canvas .gjs-highlighter,.gjs-cv-canvas .gjs-highlighter-sel{position:absolute;outline:1px solid #3b97e3;outline-offset:-1px;pointer-events:none;width:100%;height:100%}.gjs-cv-canvas .gjs-highlighter-warning{outline:3px solid #ffca6f}.gjs-cv-canvas .gjs-highlighter-sel{outline:2px solid #3b97e3;outline-offset:-2px}.gjs-cv-canvas #gjs-tools,.gjs-cv-canvas .gjs-tools{width:100%;height:100%;position:absolute;top:0;left:0;outline:none;z-index:1}.gjs-cv-canvas *{box-sizing:border-box}.gjs-frame{outline:medium none;height:100%;width:100%;border:none;margin:auto;display:block;transition:width .35s ease,height .35s ease;position:absolute;top:0;bottom:0;left:0;right:0}.gjs-toolbar{position:absolute;background-color:#3b97e3;white-space:nowrap;color:#fff;z-index:10;top:0;left:0}.gjs-toolbar-item{padding:5px 7px;font-size:.8rem;cursor:pointer;width:26px;vertical-align:middle;display:inline-block}.gjs-toolbar-item svg{fill:currentColor;vertical-align:middle}.gjs-resizer-c{position:absolute;left:0;top:0;width:100%;height:100%;z-index:9}.gjs-margin-v-el,.gjs-padding-v-el,.gjs-fixedmargin-v-el,.gjs-fixedpadding-v-el{opacity:.1;filter:alpha(opacity=10);position:absolute;background-color:#ff0}.gjs-fixedmargin-v-el,.gjs-fixedpadding-v-el{opacity:.2;filter:alpha(opacity=20)}.gjs-padding-v-el,.gjs-fixedpadding-v-el{background-color:navy}.gjs-resizer-h{pointer-events:all;position:absolute;border:3px solid #3b97e3;width:10px;height:10px;background-color:#fff;margin:-5px}.gjs-resizer-h-tl{top:0;left:0;cursor:nwse-resize}.gjs-resizer-h-tr{top:0;right:0;cursor:nesw-resize}.gjs-resizer-h-tc{top:0;margin:-5px auto;left:0;right:0;cursor:ns-resize}.gjs-resizer-h-cl{left:0;margin:auto -5px;top:0;bottom:0;cursor:ew-resize}.gjs-resizer-h-cr{margin:auto -5px;top:0;bottom:0;right:0;cursor:ew-resize}.gjs-resizer-h-bl{bottom:0;left:0;cursor:nesw-resize}.gjs-resizer-h-bc{bottom:0;margin:-5px auto;left:0;right:0;cursor:ns-resize}.gjs-resizer-h-br{bottom:0;right:0;cursor:nwse-resize}.gjs-pn-panel .gjs-resizer-h{background-color:rgba(0,0,0,.2);border:none;opacity:0;transition:opacity .25s}.gjs-pn-panel .gjs-resizer-h:hover{opacity:1}.gjs-pn-panel .gjs-resizer-h-tc,.gjs-pn-panel .gjs-resizer-h-bc{margin:0 auto;width:100%}.gjs-pn-panel .gjs-resizer-h-cr,.gjs-pn-panel .gjs-resizer-h-cl{margin:auto 0;height:100%}.gjs-resizing .gjs-highlighter,.gjs-resizing .gjs-badge{display:none !important}.gjs-resizing-tl *{cursor:nwse-resize !important}.gjs-resizing-tr *{cursor:nesw-resize !important}.gjs-resizing-tc *{cursor:ns-resize !important}.gjs-resizing-cl *{cursor:ew-resize !important}.gjs-resizing-cr *{cursor:ew-resize !important}.gjs-resizing-bl *{cursor:nesw-resize !important}.gjs-resizing-bc *{cursor:ns-resize !important}.gjs-resizing-br *{cursor:nwse-resize !important}.btn-cl,.gjs-am-close,.gjs-mdl-btn-close{opacity:.3;filter:alpha(opacity=30);font-size:25px;cursor:pointer}.btn-cl:hover,.gjs-am-close:hover,.gjs-mdl-btn-close:hover{opacity:.7;filter:alpha(opacity=70)}.no-dots,.ui-resizable-handle{border:none !important;margin:0 !important;outline:none !important}.gjs-com-dashed *{outline:1px dashed #888;outline-offset:-2px;box-sizing:border-box}.gjs-cv-canvas .gjs-comp-selected{outline:3px solid #3b97e3 !important}*.gjs-com-hover,div.gjs-com-hover{outline:1px solid #3b97e3}*.gjs-com-hover-delete,div.gjs-com-hover-delete{outline:2px solid #dd3636;opacity:.5;filter:alpha(opacity=50)}*.gjs-com-hover-move,div.gjs-com-hover-move{outline:3px solid #ffca6f}.gjs-com-badge,.gjs-com-badge-red,.gjs-badge{pointer-events:none;background-color:#3b97e3;color:#fff;padding:2px 5px;position:absolute;z-index:1;font-size:12px;outline:none;display:none}.gjs-com-badge-red{background-color:#dd3636}.gjs-badge-warning{background-color:#ffca6f}.gjs-placeholder,.gjs-com-placeholder,.gjs-placeholder{position:absolute;z-index:10;pointer-events:none;display:none}.gjs-placeholder,.gjs-placeholder{border-style:solid !important;outline:none;box-sizing:border-box;transition:top .2s,left .2s,width .2s,height .2s}.gjs-placeholder.horizontal,.gjs-com-placeholder.horizontal,.gjs-placeholder.horizontal{border-color:transparent #62c462;border-width:3px 5px;margin:-3px 0 0}.gjs-placeholder.vertical,.gjs-com-placeholder.vertical,.gjs-placeholder.vertical{border-color:#62c462 transparent;border-width:5px 3px;margin:0 0 0 -3px}.gjs-placeholder-int,.gjs-com-placeholder-int,.gjs-placeholder-int{background-color:#62c462;box-shadow:0 0 3px rgba(0,0,0,.2);height:100%;width:100%;pointer-events:none;padding:1.5px;outline:none}.gjs-pn-panel{display:inline-block;position:absolute;box-sizing:border-box;text-align:center;padding:5px;z-index:3}.gjs-pn-panel .icon-undo,.gjs-pn-panel .icon-redo{font-size:20px;height:30px;width:25px}.gjs-pn-commands{width:85%;left:0;top:0;box-shadow:0 0 5px rgba(0,0,0,.2)}.gjs-pn-options{right:15%;top:0}.gjs-pn-views{border-bottom:2px solid rgba(0,0,0,.2);right:0;width:15%;z-index:4}.gjs-pn-views-container{height:100%;padding:42px 0 0;right:0;width:15%;overflow:auto;box-shadow:0 0 5px rgba(0,0,0,.2)}.gjs-pn-buttons{align-items:center;display:flex;justify-content:space-between}.gjs-pn-btn{box-sizing:border-box;min-height:30px;min-width:30px;line-height:21px;background-color:transparent;border:none;font-size:18px;margin-right:5px;border-radius:2px;padding:4px;position:relative;cursor:pointer}.gjs-pn-btn.gjs-pn-active{background-color:rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.25) inset}.gjs-pn-btn svg{fill:currentColor}.gjs-comp-image-placeholder{display:block;background-color:#f5f5f5;color:#777;height:50px;width:50px;line-height:50px;outline:3px solid #ffca6f;outline-offset:-3px;text-align:center;font-size:16.6666666667px;cursor:pointer}.gjs-comp-image-placeholder.fa-picture-o::after{content:""}.gjs-label{line-height:18px}.gjs-fields{display:flex}.gjs-select{padding:0;width:100%}.gjs-select select{padding-right:10px}.gjs-select:-moz-focusring,.gjs-select select:-moz-focusring{color:transparent;text-shadow:0 0 0 rgba(255,255,255,.7)}.gjs-input:focus,.gjs-button:focus,.gjs-btn-prim:focus,.gjs-select:focus,.gjs-select select:focus{outline:none}.gjs-field input,.gjs-field select,.gjs-field textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit;border:none;background-color:transparent;box-sizing:border-box;width:100%;position:relative;padding:5px;z-index:1}.gjs-field input:focus,.gjs-field select:focus,.gjs-field textarea:focus{outline:none}.gjs-field input[type=number]{-moz-appearance:textfield}.gjs-field input[type=number]::-webkit-outer-spin-button,.gjs-field input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.gjs-field-range{flex:9 1 auto}.gjs-field-integer input{padding-right:30px}.gjs-select option,.gjs-field-select option,.gjs-clm-select option,.gjs-sm-select option,.gjs-fields option,.gjs-sm-unit option{background-color:#444;color:#ddd}.gjs-field{background-color:rgba(0,0,0,.2);border:none;box-shadow:none;border-radius:2px;box-sizing:border-box;padding:0;position:relative}.gjs-field textarea{resize:vertical}.gjs-field .gjs-sel-arrow{height:100%;width:9px;position:absolute;right:0;top:0;z-index:0}.gjs-field .gjs-d-s-arrow{bottom:0;top:0;margin:auto;right:5px;border-top:4px solid rgba(255,255,255,.7);position:absolute;height:0;width:0;border-left:3px solid transparent;border-right:4px solid transparent;cursor:pointer}.gjs-field-arrows{position:absolute;cursor:ns-resize;margin:auto;height:20px;width:9px;z-index:10;bottom:0;right:3px;top:0}.gjs-field-color,.gjs-field-radio{width:100%}.gjs-field-color input{padding-right:22px;box-sizing:border-box}.gjs-field-colorp{border-left:1px solid rgba(0,0,0,.2);box-sizing:border-box;height:100%;padding:2px;position:absolute;right:0;top:0;width:22px;z-index:10}.gjs-field-colorp .gjs-checker-bg,.gjs-field-colorp .gjs-field-colorp-c{height:100%;width:100%;border-radius:1px}.gjs-field-colorp-c{height:100%;position:relative;width:100%}.gjs-field-color-picker{background-color:#ddd;cursor:pointer;height:100%;width:100%;box-shadow:0 0 1px rgba(0,0,0,.2);border-radius:1px;position:absolute;top:0}.gjs-field-checkbox{padding:0;width:17px;height:17px;display:block;cursor:pointer}.gjs-field-checkbox input{display:none}.gjs-field-checkbox input:checked+.gjs-chk-icon{border-color:rgba(255,255,255,.5);border-width:0 2px 2px 0;border-style:solid}.gjs-radio-item{flex:1 1 auto;text-align:center;border-left:1px solid rgba(0,0,0,.2)}.gjs-radio-item:first-child{border:none}.gjs-radio-item:hover{background:rgba(0,0,0,.2)}.gjs-radio-item input{display:none}.gjs-radio-item input:checked+.gjs-radio-item-label{background-color:rgba(255,255,255,.2)}.gjs-radio-items{display:flex}.gjs-radio-item-label{cursor:pointer;display:block;padding:5px}.gjs-field-units{position:absolute;margin:auto;right:10px;bottom:0;top:0}.gjs-field-unit{position:absolute;right:10px;top:3px;font-size:10px;color:rgba(255,255,255,.7);cursor:pointer}.gjs-field-arrow-u,.gjs-field-arrow-d{position:absolute;height:0;width:0;border-left:3px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.7);bottom:4px;cursor:pointer}.gjs-field-arrow-u{border-bottom:4px solid rgba(255,255,255,.7);border-top:none;top:4px}.gjs-field-select{padding:0}.gjs-field-range{background-color:transparent;border:none;box-shadow:none;padding:0}.gjs-field-range input{margin:0;height:100%}.gjs-field-range input:focus{outline:none}.gjs-field-range input::-webkit-slider-thumb{-webkit-appearance:none;margin-top:-4px;height:10px;width:10px;border:1px solid rgba(0,0,0,.2);border-radius:100%;background-color:#ddd;cursor:pointer}.gjs-field-range input::-moz-range-thumb{height:10px;width:10px;border:1px solid rgba(0,0,0,.2);border-radius:100%;background-color:#ddd;cursor:pointer}.gjs-field-range input::-ms-thumb{height:10px;width:10px;border:1px solid rgba(0,0,0,.2);border-radius:100%;background-color:#ddd;cursor:pointer}.gjs-field-range input::-moz-range-track{background-color:rgba(0,0,0,.2);border-radius:1px;margin-top:3px;height:3px}.gjs-field-range input::-webkit-slider-runnable-track{background-color:rgba(0,0,0,.2);border-radius:1px;margin-top:3px;height:3px}.gjs-field-range input::-ms-track{background-color:rgba(0,0,0,.2);border-radius:1px;margin-top:3px;height:3px}.gjs-btn-prim{color:inherit;background-color:rgba(255,255,255,.1);border-radius:2px;padding:3px 6px;padding:5px;cursor:pointer;border:none}.gjs-btn-prim:active{background-color:rgba(255,255,255,.1)}.gjs-btn--full{width:100%}.gjs-chk-icon{-ms-transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);transform:rotate(45deg);box-sizing:border-box;display:block;height:14px;margin:0 5px;width:6px}.gjs-add-trasp{background:none;border:none;color:#ddd;cursor:pointer;font-size:1em;border-radius:2px;opacity:.75;filter:alpha(opacity=75)}.gjs-add-trasp:hover{opacity:1;filter:alpha(opacity=100)}.gjs-add-trasp:active{background-color:rgba(0,0,0,.2)}.gjs-devices-c{display:flex;align-items:center;padding:3px}.gjs-devices-c .gjs-device-label{flex-grow:2;text-align:left;margin-right:10px}.gjs-devices-c .gjs-select{flex-grow:20}.gjs-devices-c .gjs-add-trasp{flex-grow:1;margin-left:5px}.gjs-category-open,.gjs-block-category.gjs-open,.gjs-sm-sector.gjs-sm-open,.gjs-sm-open.gjs-clm-tags{border-bottom:1px solid rgba(0,0,0,.25)}.gjs-category-title,.gjs-layer-title,.gjs-block-category .gjs-title,.gjs-sm-sector .gjs-sm-title,.gjs-clm-tags .gjs-sm-title{font-weight:lighter;background-color:rgba(0,0,0,.1);letter-spacing:1px;padding:9px 10px 9px 20px;border-bottom:1px solid rgba(0,0,0,.25);text-align:left;position:relative;cursor:pointer}.gjs-sm-clear{line-height:0;cursor:pointer}.gjs-sm-header{font-weight:lighter;padding:10px}.gjs-sm-properties{font-size:.75rem;padding:10px 5px;display:flex;flex-wrap:wrap;align-items:flex-end;box-sizing:border-box;width:100%}.gjs-sm-label{margin:5px 5px 3px 0}.gjs-sm-close-btn,.gjs-sm-sector .gjs-sm-property.gjs-sm-file #gjs-sm-preview-box #gjs-sm-close,.gjs-clm-tags .gjs-sm-property.gjs-sm-file #gjs-sm-preview-box #gjs-sm-close{display:block;font-size:23px;position:absolute;cursor:pointer;right:5px;top:0;opacity:.2;filter:alpha(opacity=20)}.gjs-sm-close-btn:hover,.gjs-sm-sector .gjs-sm-property.gjs-sm-file #gjs-sm-preview-box #gjs-sm-close:hover,.gjs-clm-tags .gjs-sm-property.gjs-sm-file #gjs-sm-preview-box #gjs-sm-close:hover{opacity:.7;filter:alpha(opacity=70)}.gjs-sm-sector,.gjs-clm-tags{clear:both;font-weight:lighter;text-align:left}.gjs-sm-sector #gjs-sm-caret,.gjs-clm-tags #gjs-sm-caret{padding-right:5px;font-size:11px}.gjs-sm-sector .gjs-sm-field,.gjs-clm-tags .gjs-sm-field,.gjs-sm-sector .gjs-clm-select,.gjs-clm-tags .gjs-clm-select,.gjs-sm-sector .gjs-clm-field,.gjs-clm-tags .gjs-clm-field{width:100%;position:relative}.gjs-sm-sector .gjs-sm-field input,.gjs-clm-tags .gjs-sm-field input,.gjs-sm-sector .gjs-clm-select input,.gjs-clm-tags .gjs-clm-select input,.gjs-sm-sector .gjs-clm-field input,.gjs-clm-tags .gjs-clm-field input,.gjs-sm-sector .gjs-sm-field select,.gjs-clm-tags .gjs-sm-field select,.gjs-sm-sector .gjs-clm-select select,.gjs-clm-tags .gjs-clm-select select,.gjs-sm-sector .gjs-clm-field select,.gjs-clm-tags .gjs-clm-field select{background-color:transparent;color:rgba(255,255,255,.7);border:none;width:100%}.gjs-sm-sector .gjs-sm-field input,.gjs-clm-tags .gjs-sm-field input,.gjs-sm-sector .gjs-clm-select input,.gjs-clm-tags .gjs-clm-select input,.gjs-sm-sector .gjs-clm-field input,.gjs-clm-tags .gjs-clm-field input{box-sizing:border-box}.gjs-sm-sector .gjs-sm-field select,.gjs-clm-tags .gjs-sm-field select,.gjs-sm-sector .gjs-clm-select select,.gjs-clm-tags .gjs-clm-select select,.gjs-sm-sector .gjs-clm-field select,.gjs-clm-tags .gjs-clm-field select{position:relative;z-index:1;-webkit-appearance:none;-moz-appearance:none;appearance:none}.gjs-sm-sector .gjs-sm-field select::-ms-expand,.gjs-clm-tags .gjs-sm-field select::-ms-expand,.gjs-sm-sector .gjs-clm-select select::-ms-expand,.gjs-clm-tags .gjs-clm-select select::-ms-expand,.gjs-sm-sector .gjs-clm-field select::-ms-expand,.gjs-clm-tags .gjs-clm-field select::-ms-expand{display:none}.gjs-sm-sector .gjs-sm-field select:-moz-focusring,.gjs-clm-tags .gjs-sm-field select:-moz-focusring,.gjs-sm-sector .gjs-clm-select select:-moz-focusring,.gjs-clm-tags .gjs-clm-select select:-moz-focusring,.gjs-sm-sector .gjs-clm-field select:-moz-focusring,.gjs-clm-tags .gjs-clm-field select:-moz-focusring{color:transparent;text-shadow:0 0 0 rgba(255,255,255,.7)}.gjs-sm-sector .gjs-sm-field input:focus,.gjs-clm-tags .gjs-sm-field input:focus,.gjs-sm-sector .gjs-clm-select input:focus,.gjs-clm-tags .gjs-clm-select input:focus,.gjs-sm-sector .gjs-clm-field input:focus,.gjs-clm-tags .gjs-clm-field input:focus,.gjs-sm-sector .gjs-sm-field select:focus,.gjs-clm-tags .gjs-sm-field select:focus,.gjs-sm-sector .gjs-clm-select select:focus,.gjs-clm-tags .gjs-clm-select select:focus,.gjs-sm-sector .gjs-clm-field select:focus,.gjs-clm-tags .gjs-clm-field select:focus{outline:none}.gjs-sm-sector .gjs-sm-field .gjs-sm-unit,.gjs-clm-tags .gjs-sm-field .gjs-sm-unit,.gjs-sm-sector .gjs-clm-select .gjs-sm-unit,.gjs-clm-tags .gjs-clm-select .gjs-sm-unit,.gjs-sm-sector .gjs-clm-field .gjs-sm-unit,.gjs-clm-tags .gjs-clm-field .gjs-sm-unit{position:absolute;right:10px;top:3px;font-size:10px;color:rgba(255,255,255,.7);cursor:pointer}.gjs-sm-sector .gjs-sm-field .gjs-clm-sel-arrow,.gjs-clm-tags .gjs-sm-field .gjs-clm-sel-arrow,.gjs-sm-sector .gjs-clm-select .gjs-clm-sel-arrow,.gjs-clm-tags .gjs-clm-select .gjs-clm-sel-arrow,.gjs-sm-sector .gjs-clm-field .gjs-clm-sel-arrow,.gjs-clm-tags .gjs-clm-field .gjs-clm-sel-arrow,.gjs-sm-sector .gjs-sm-field .gjs-sm-int-arrows,.gjs-clm-tags .gjs-sm-field .gjs-sm-int-arrows,.gjs-sm-sector .gjs-clm-select .gjs-sm-int-arrows,.gjs-clm-tags .gjs-clm-select .gjs-sm-int-arrows,.gjs-sm-sector .gjs-clm-field .gjs-sm-int-arrows,.gjs-clm-tags .gjs-clm-field .gjs-sm-int-arrows,.gjs-sm-sector .gjs-sm-field .gjs-sm-sel-arrow,.gjs-clm-tags .gjs-sm-field .gjs-sm-sel-arrow,.gjs-sm-sector .gjs-clm-select .gjs-sm-sel-arrow,.gjs-clm-tags .gjs-clm-select .gjs-sm-sel-arrow,.gjs-sm-sector .gjs-clm-field .gjs-sm-sel-arrow,.gjs-clm-tags .gjs-clm-field .gjs-sm-sel-arrow{height:100%;width:9px;position:absolute;right:0;top:0;cursor:ns-resize}.gjs-sm-sector .gjs-sm-field .gjs-sm-sel-arrow,.gjs-clm-tags .gjs-sm-field .gjs-sm-sel-arrow,.gjs-sm-sector .gjs-clm-select .gjs-sm-sel-arrow,.gjs-clm-tags .gjs-clm-select .gjs-sm-sel-arrow,.gjs-sm-sector .gjs-clm-field .gjs-sm-sel-arrow,.gjs-clm-tags .gjs-clm-field .gjs-sm-sel-arrow{cursor:pointer}.gjs-sm-sector .gjs-sm-field .gjs-clm-d-s-arrow,.gjs-clm-tags .gjs-sm-field .gjs-clm-d-s-arrow,.gjs-sm-sector .gjs-clm-select .gjs-clm-d-s-arrow,.gjs-clm-tags .gjs-clm-select .gjs-clm-d-s-arrow,.gjs-sm-sector .gjs-clm-field .gjs-clm-d-s-arrow,.gjs-clm-tags .gjs-clm-field .gjs-clm-d-s-arrow,.gjs-sm-sector .gjs-sm-field .gjs-sm-d-arrow,.gjs-clm-tags .gjs-sm-field .gjs-sm-d-arrow,.gjs-sm-sector .gjs-clm-select .gjs-sm-d-arrow,.gjs-clm-tags .gjs-clm-select .gjs-sm-d-arrow,.gjs-sm-sector .gjs-clm-field .gjs-sm-d-arrow,.gjs-clm-tags .gjs-clm-field .gjs-sm-d-arrow,.gjs-sm-sector .gjs-sm-field .gjs-sm-d-s-arrow,.gjs-clm-tags .gjs-sm-field .gjs-sm-d-s-arrow,.gjs-sm-sector .gjs-clm-select .gjs-sm-d-s-arrow,.gjs-clm-tags .gjs-clm-select .gjs-sm-d-s-arrow,.gjs-sm-sector .gjs-clm-field .gjs-sm-d-s-arrow,.gjs-clm-tags .gjs-clm-field .gjs-sm-d-s-arrow,.gjs-sm-sector .gjs-sm-field .gjs-sm-u-arrow,.gjs-clm-tags .gjs-sm-field .gjs-sm-u-arrow,.gjs-sm-sector .gjs-clm-select .gjs-sm-u-arrow,.gjs-clm-tags .gjs-clm-select .gjs-sm-u-arrow,.gjs-sm-sector .gjs-clm-field .gjs-sm-u-arrow,.gjs-clm-tags .gjs-clm-field .gjs-sm-u-arrow{position:absolute;height:0;width:0;border-left:3px solid transparent;border-right:4px solid transparent;cursor:pointer}.gjs-sm-sector .gjs-sm-field .gjs-sm-u-arrow,.gjs-clm-tags .gjs-sm-field .gjs-sm-u-arrow,.gjs-sm-sector .gjs-clm-select .gjs-sm-u-arrow,.gjs-clm-tags .gjs-clm-select .gjs-sm-u-arrow,.gjs-sm-sector .gjs-clm-field .gjs-sm-u-arrow,.gjs-clm-tags .gjs-clm-field .gjs-sm-u-arrow{border-bottom:4px solid rgba(255,255,255,.7);top:4px}.gjs-sm-sector .gjs-sm-field .gjs-clm-d-s-arrow,.gjs-clm-tags .gjs-sm-field .gjs-clm-d-s-arrow,.gjs-sm-sector .gjs-clm-select .gjs-clm-d-s-arrow,.gjs-clm-tags .gjs-clm-select .gjs-clm-d-s-arrow,.gjs-sm-sector .gjs-clm-field .gjs-clm-d-s-arrow,.gjs-clm-tags .gjs-clm-field .gjs-clm-d-s-arrow,.gjs-sm-sector .gjs-sm-field .gjs-sm-d-arrow,.gjs-clm-tags .gjs-sm-field .gjs-sm-d-arrow,.gjs-sm-sector .gjs-clm-select .gjs-sm-d-arrow,.gjs-clm-tags .gjs-clm-select .gjs-sm-d-arrow,.gjs-sm-sector .gjs-clm-field .gjs-sm-d-arrow,.gjs-clm-tags .gjs-clm-field .gjs-sm-d-arrow,.gjs-sm-sector .gjs-sm-field .gjs-sm-d-s-arrow,.gjs-clm-tags .gjs-sm-field .gjs-sm-d-s-arrow,.gjs-sm-sector .gjs-clm-select .gjs-sm-d-s-arrow,.gjs-clm-tags .gjs-clm-select .gjs-sm-d-s-arrow,.gjs-sm-sector .gjs-clm-field .gjs-sm-d-s-arrow,.gjs-clm-tags .gjs-clm-field .gjs-sm-d-s-arrow{border-top:4px solid rgba(255,255,255,.7);bottom:4px}.gjs-sm-sector .gjs-sm-field .gjs-clm-d-s-arrow,.gjs-clm-tags .gjs-sm-field .gjs-clm-d-s-arrow,.gjs-sm-sector .gjs-clm-select .gjs-clm-d-s-arrow,.gjs-clm-tags .gjs-clm-select .gjs-clm-d-s-arrow,.gjs-sm-sector .gjs-clm-field .gjs-clm-d-s-arrow,.gjs-clm-tags .gjs-clm-field .gjs-clm-d-s-arrow,.gjs-sm-sector .gjs-sm-field .gjs-sm-d-s-arrow,.gjs-clm-tags .gjs-sm-field .gjs-sm-d-s-arrow,.gjs-sm-sector .gjs-clm-select .gjs-sm-d-s-arrow,.gjs-clm-tags .gjs-clm-select .gjs-sm-d-s-arrow,.gjs-sm-sector .gjs-clm-field .gjs-sm-d-s-arrow,.gjs-clm-tags .gjs-clm-field .gjs-sm-d-s-arrow{bottom:7px}.gjs-sm-sector .gjs-sm-field.gjs-sm-color,.gjs-clm-tags .gjs-sm-field.gjs-sm-color,.gjs-sm-sector .gjs-sm-color.gjs-clm-field,.gjs-clm-tags .gjs-sm-color.gjs-clm-field,.gjs-sm-sector .gjs-sm-field.gjs-sm-input,.gjs-clm-tags .gjs-sm-field.gjs-sm-input,.gjs-sm-sector .gjs-sm-input.gjs-clm-field,.gjs-clm-tags .gjs-sm-input.gjs-clm-field,.gjs-sm-sector .gjs-sm-field.gjs-sm-integer,.gjs-clm-tags .gjs-sm-field.gjs-sm-integer,.gjs-sm-sector .gjs-sm-integer.gjs-clm-field,.gjs-clm-tags .gjs-sm-integer.gjs-clm-field,.gjs-sm-sector .gjs-sm-field.gjs-sm-list,.gjs-clm-tags .gjs-sm-field.gjs-sm-list,.gjs-sm-sector .gjs-sm-list.gjs-clm-field,.gjs-clm-tags .gjs-sm-list.gjs-clm-field,.gjs-sm-sector .gjs-sm-field.gjs-sm-select,.gjs-clm-tags .gjs-sm-field.gjs-sm-select,.gjs-sm-sector .gjs-clm-select,.gjs-clm-tags .gjs-clm-select,.gjs-sm-sector .gjs-sm-select.gjs-clm-field,.gjs-clm-tags .gjs-sm-select.gjs-clm-field{background-color:rgba(0,0,0,.2);border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 0 rgba(255,255,255,.1);color:rgba(255,255,255,.7);border-radius:2px;box-sizing:border-box;padding:0 5px}.gjs-sm-sector .gjs-sm-field.gjs-sm-composite,.gjs-clm-tags .gjs-sm-field.gjs-sm-composite,.gjs-sm-sector .gjs-sm-composite.gjs-clm-select,.gjs-clm-tags .gjs-sm-composite.gjs-clm-select,.gjs-sm-sector .gjs-sm-composite.gjs-clm-field,.gjs-clm-tags .gjs-sm-composite.gjs-clm-field{border-radius:2px}.gjs-sm-sector .gjs-sm-field.gjs-sm-select,.gjs-clm-tags .gjs-sm-field.gjs-sm-select,.gjs-sm-sector .gjs-clm-select,.gjs-clm-tags .gjs-clm-select,.gjs-sm-sector .gjs-sm-select.gjs-clm-field,.gjs-clm-tags .gjs-sm-select.gjs-clm-field{padding:0}.gjs-sm-sector .gjs-sm-field.gjs-sm-select select,.gjs-clm-tags .gjs-sm-field.gjs-sm-select select,.gjs-sm-sector .gjs-clm-select select,.gjs-clm-tags .gjs-clm-select select,.gjs-sm-sector .gjs-sm-select.gjs-clm-field select,.gjs-clm-tags .gjs-sm-select.gjs-clm-field select{height:20px}.gjs-sm-sector .gjs-sm-field.gjs-sm-select option,.gjs-clm-tags .gjs-sm-field.gjs-sm-select option,.gjs-sm-sector .gjs-clm-select option,.gjs-clm-tags .gjs-clm-select option,.gjs-sm-sector .gjs-sm-select.gjs-clm-field option,.gjs-clm-tags .gjs-sm-select.gjs-clm-field option{padding:3px 0}.gjs-sm-sector .gjs-sm-field.gjs-sm-composite,.gjs-clm-tags .gjs-sm-field.gjs-sm-composite,.gjs-sm-sector .gjs-sm-composite.gjs-clm-select,.gjs-clm-tags .gjs-sm-composite.gjs-clm-select,.gjs-sm-sector .gjs-sm-composite.gjs-clm-field,.gjs-clm-tags .gjs-sm-composite.gjs-clm-field{background-color:rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.25)}.gjs-sm-sector .gjs-sm-field.gjs-sm-list,.gjs-clm-tags .gjs-sm-field.gjs-sm-list,.gjs-sm-sector .gjs-sm-list.gjs-clm-select,.gjs-clm-tags .gjs-sm-list.gjs-clm-select,.gjs-sm-sector .gjs-sm-list.gjs-clm-field,.gjs-clm-tags .gjs-sm-list.gjs-clm-field{width:auto;padding:0;overflow:hidden;float:left}.gjs-sm-sector .gjs-sm-field.gjs-sm-list input,.gjs-clm-tags .gjs-sm-field.gjs-sm-list input,.gjs-sm-sector .gjs-sm-list.gjs-clm-select input,.gjs-clm-tags .gjs-sm-list.gjs-clm-select input,.gjs-sm-sector .gjs-sm-list.gjs-clm-field input,.gjs-clm-tags .gjs-sm-list.gjs-clm-field input{display:none}.gjs-sm-sector .gjs-sm-field.gjs-sm-list label,.gjs-clm-tags .gjs-sm-field.gjs-sm-list label,.gjs-sm-sector .gjs-sm-list.gjs-clm-select label,.gjs-clm-tags .gjs-sm-list.gjs-clm-select label,.gjs-sm-sector .gjs-sm-list.gjs-clm-field label,.gjs-clm-tags .gjs-sm-list.gjs-clm-field label{cursor:pointer;padding:5px;display:block}.gjs-sm-sector .gjs-sm-field.gjs-sm-list .gjs-sm-radio:checked+label,.gjs-clm-tags .gjs-sm-field.gjs-sm-list .gjs-sm-radio:checked+label,.gjs-sm-sector .gjs-sm-list.gjs-clm-select .gjs-sm-radio:checked+label,.gjs-clm-tags .gjs-sm-list.gjs-clm-select .gjs-sm-radio:checked+label,.gjs-sm-sector .gjs-sm-list.gjs-clm-field .gjs-sm-radio:checked+label,.gjs-clm-tags .gjs-sm-list.gjs-clm-field .gjs-sm-radio:checked+label{background-color:rgba(255,255,255,.2)}.gjs-sm-sector .gjs-sm-field.gjs-sm-list .gjs-sm-icon,.gjs-clm-tags .gjs-sm-field.gjs-sm-list .gjs-sm-icon,.gjs-sm-sector .gjs-sm-list.gjs-clm-select .gjs-sm-icon,.gjs-clm-tags .gjs-sm-list.gjs-clm-select .gjs-sm-icon,.gjs-sm-sector .gjs-sm-list.gjs-clm-field .gjs-sm-icon,.gjs-clm-tags .gjs-sm-list.gjs-clm-field .gjs-sm-icon{background-repeat:no-repeat;background-position:center;text-shadow:none;line-height:normal}.gjs-sm-sector .gjs-sm-field.gjs-sm-integer select,.gjs-clm-tags .gjs-sm-field.gjs-sm-integer select,.gjs-sm-sector .gjs-sm-integer.gjs-clm-select select,.gjs-clm-tags .gjs-sm-integer.gjs-clm-select select,.gjs-sm-sector .gjs-sm-integer.gjs-clm-field select,.gjs-clm-tags .gjs-sm-integer.gjs-clm-field select{width:auto;padding:0}.gjs-sm-sector .gjs-sm-list .gjs-sm-el,.gjs-clm-tags .gjs-sm-list .gjs-sm-el{float:left;border-left:1px solid rgba(0,0,0,.2)}.gjs-sm-sector .gjs-sm-list .gjs-sm-el:first-child,.gjs-clm-tags .gjs-sm-list .gjs-sm-el:first-child{border:none}.gjs-sm-sector .gjs-sm-list .gjs-sm-el:hover,.gjs-clm-tags .gjs-sm-list .gjs-sm-el:hover{background:rgba(0,0,0,.2)}.gjs-sm-sector .gjs-sm-slider .gjs-field-integer,.gjs-clm-tags .gjs-sm-slider .gjs-field-integer{flex:1 1 65px}.gjs-sm-sector .gjs-sm-property,.gjs-clm-tags .gjs-sm-property{box-sizing:border-box;float:left;width:50%;margin-bottom:5px;padding:0 5px}.gjs-sm-sector .gjs-sm-property--full,.gjs-clm-tags .gjs-sm-property--full,.gjs-sm-sector .gjs-sm-property.gjs-sm-composite,.gjs-clm-tags .gjs-sm-property.gjs-sm-composite,.gjs-sm-sector .gjs-sm-property.gjs-sm-file,.gjs-clm-tags .gjs-sm-property.gjs-sm-file,.gjs-sm-sector .gjs-sm-property.gjs-sm-list,.gjs-clm-tags .gjs-sm-property.gjs-sm-list,.gjs-sm-sector .gjs-sm-property.gjs-sm-stack,.gjs-clm-tags .gjs-sm-property.gjs-sm-stack,.gjs-sm-sector .gjs-sm-property.gjs-sm-slider,.gjs-clm-tags .gjs-sm-property.gjs-sm-slider,.gjs-sm-sector .gjs-sm-property.gjs-sm-color,.gjs-clm-tags .gjs-sm-property.gjs-sm-color{width:100%}.gjs-sm-sector .gjs-sm-property .gjs-sm-btn,.gjs-clm-tags .gjs-sm-property .gjs-sm-btn{background-color:rgba(33,33,33,.2);border-radius:2px;box-shadow:1px 1px 0 rgba(5,5,5,.2),1px 1px 0 rgba(43,43,43,.2) inset;padding:5px;position:relative;text-align:center;height:auto;width:100%;cursor:pointer;color:#ddd;box-sizing:border-box;text-shadow:-1px -1px 0 rgba(0,0,0,.2);border:none;opacity:.85;filter:alpha(opacity=85)}.gjs-sm-sector .gjs-sm-property .gjs-sm-btn-c,.gjs-clm-tags .gjs-sm-property .gjs-sm-btn-c{box-sizing:border-box;float:left;width:100%}.gjs-sm-sector .gjs-sm-property.gjs-sm-file #gjs-sm-preview-box,.gjs-clm-tags .gjs-sm-property.gjs-sm-file #gjs-sm-preview-box{background-color:rgba(255,255,255,.05);border-radius:2px;margin-top:5px;position:relative;overflow:hidden}.gjs-sm-sector .gjs-sm-property.gjs-sm-file #gjs-sm-preview-box.gjs-sm-show,.gjs-clm-tags .gjs-sm-property.gjs-sm-file #gjs-sm-preview-box.gjs-sm-show{border:1px solid rgba(252,252,252,.05);padding:3px 20px}.gjs-sm-sector .gjs-sm-property.gjs-sm-file #gjs-sm-preview-box #gjs-sm-close,.gjs-clm-tags .gjs-sm-property.gjs-sm-file #gjs-sm-preview-box #gjs-sm-close{top:-5px;display:block}.gjs-sm-sector .gjs-sm-property.gjs-sm-file .gjs-sm-show #gjs-sm-preview-file,.gjs-clm-tags .gjs-sm-property.gjs-sm-file .gjs-sm-show #gjs-sm-preview-file{height:50px}.gjs-sm-sector .gjs-sm-property.gjs-sm-file #gjs-sm-preview-file,.gjs-clm-tags .gjs-sm-property.gjs-sm-file #gjs-sm-preview-file{background-size:auto 100%;background-repeat:no-repeat;background-position:center center}.gjs-sm-sector .gjs-sm-property .gjs-sm-layers,.gjs-clm-tags .gjs-sm-property .gjs-sm-layers{margin-top:5px;padding:1px 3px;min-height:30px}.gjs-sm-sector .gjs-sm-property .gjs-sm-layer,.gjs-clm-tags .gjs-sm-property .gjs-sm-layer{background-color:rgba(255,255,255,.055);border-radius:2px;margin:2px 0;padding:7px;position:relative;cursor:pointer}.gjs-sm-sector .gjs-sm-property .gjs-sm-layer>#gjs-sm-preview-box,.gjs-clm-tags .gjs-sm-property .gjs-sm-layer>#gjs-sm-preview-box{height:15px;position:absolute;right:27px;top:6px;width:15px}.gjs-sm-sector .gjs-sm-property .gjs-sm-layer #gjs-sm-preview,.gjs-clm-tags .gjs-sm-property .gjs-sm-layer #gjs-sm-preview,.gjs-sm-sector .gjs-sm-property .gjs-sm-layer #gjs-sm-preview-box,.gjs-clm-tags .gjs-sm-property .gjs-sm-layer #gjs-sm-preview-box{border-radius:2px}.gjs-sm-sector .gjs-sm-property .gjs-sm-layer #gjs-sm-close-layer,.gjs-clm-tags .gjs-sm-property .gjs-sm-layer #gjs-sm-close-layer{display:block;font-size:23px;position:absolute;cursor:pointer;right:5px;top:0;opacity:.5;filter:alpha(opacity=50)}.gjs-sm-sector .gjs-sm-property .gjs-sm-layer #gjs-sm-close-layer:hover,.gjs-clm-tags .gjs-sm-property .gjs-sm-layer #gjs-sm-close-layer:hover{opacity:.8;filter:alpha(opacity=80)}.gjs-sm-sector .gjs-sm-property .gjs-sm-layer>#gjs-sm-preview-box #gjs-sm-preview,.gjs-clm-tags .gjs-sm-property .gjs-sm-layer>#gjs-sm-preview-box #gjs-sm-preview{background-color:#fff;height:100%;width:100%;background-size:cover !important}.gjs-sm-sector .gjs-sm-property .gjs-sm-layer.gjs-sm-active,.gjs-clm-tags .gjs-sm-property .gjs-sm-layer.gjs-sm-active{background-color:rgba(255,255,255,.12)}.gjs-sm-sector .gjs-sm-property .gjs-sm-layer.gjs-sm-no-preview #gjs-sm-preview-box,.gjs-clm-tags .gjs-sm-property .gjs-sm-layer.gjs-sm-no-preview #gjs-sm-preview-box{display:none}.gjs-sm-sector #gjs-sm-text-shadow #gjs-sm-preview::after,.gjs-clm-tags #gjs-sm-text-shadow #gjs-sm-preview::after{color:#000;content:"T";font-weight:900;line-height:17px;padding:0 4px}.gjs-sm-sector .gjs-sm-stack .gjs-sm-properties,.gjs-clm-tags .gjs-sm-stack .gjs-sm-properties{padding:5px 0 0}.gjs-sm-sector .gjs-sm-stack #gjs-sm-add,.gjs-clm-tags .gjs-sm-stack #gjs-sm-add{background:none;border:none;cursor:pointer;outline:none;font-size:22px;line-height:10px;position:absolute;right:0;top:-17px;opacity:.75}.gjs-sm-sector .gjs-sm-stack #gjs-sm-add:hover,.gjs-clm-tags .gjs-sm-stack #gjs-sm-add:hover{opacity:1;filter:alpha(opacity=100)}.gjs-sm-sector .gjs-sm-colorp-c,.gjs-clm-tags .gjs-sm-colorp-c{height:100%;width:20px;position:absolute;right:0;top:0;box-sizing:border-box;border-radius:2px;padding:2px}.gjs-sm-sector .gjs-sm-colorp-c .gjs-checker-bg,.gjs-clm-tags .gjs-sm-colorp-c .gjs-checker-bg,.gjs-sm-sector .gjs-sm-colorp-c .gjs-field-colorp-c,.gjs-clm-tags .gjs-sm-colorp-c .gjs-field-colorp-c{height:100%;width:100%;border-radius:1px}.gjs-sm-sector .gjs-sm-color-picker,.gjs-clm-tags .gjs-sm-color-picker{background-color:#ddd;cursor:pointer;height:16px;width:100%;margin-top:-16px;box-shadow:0 0 1px rgba(0,0,0,.2);border-radius:1px}.gjs-sm-sector .gjs-sm-btn-upload #gjs-sm-upload,.gjs-clm-tags .gjs-sm-btn-upload #gjs-sm-upload{left:0;top:0;position:absolute;width:100%;opacity:0;cursor:pointer}.gjs-sm-sector .gjs-sm-btn-upload #gjs-sm-label,.gjs-clm-tags .gjs-sm-btn-upload #gjs-sm-label{padding:2px 0}.gjs-sm-layer>#gjs-sm-move{opacity:.7;filter:alpha(opacity=70);cursor:move;font-size:12px;float:left;margin:0 5px 0 0}.gjs-sm-layer>#gjs-sm-move:hover{opacity:.9;filter:alpha(opacity=90)}.gjs-blocks-c{display:flex;flex-wrap:wrap;justify-content:flex-start}.gjs-block-categories{display:flex;flex-direction:column}.gjs-block-category{width:100%}.gjs-block-category .gjs-caret-icon{margin-right:5px}.gjs-block{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;width:45%;min-width:45px;padding:1em;box-sizing:border-box;min-height:90px;cursor:all-scroll;font-size:11px;font-weight:lighter;text-align:center;display:flex;flex-direction:column;justify-content:space-between;border:1px solid rgba(0,0,0,.2);border-radius:3px;margin:10px 2.5% 5px;box-shadow:0 1px 0 0 rgba(0,0,0,.15);transition:all .2s ease 0s;transition-property:box-shadow,color}.gjs-block:hover{box-shadow:0 3px 4px 0 rgba(0,0,0,.15)}.gjs-block svg{fill:currentColor}.gjs-block__media{margin-bottom:10px}.gjs-block-svg{width:54px;fill:currentColor}.gjs-block-svg-path{fill:currentColor}.gjs-block.fa{font-size:2em;line-height:2em;padding:11px}.gjs-block-label{line-height:normal;font-size:.65rem;font-weight:normal;font-family:Helvetica,sans-serif;overflow:hidden;text-overflow:ellipsis}.gjs-block.gjs-bdrag{width:auto;padding:0}.gjs-selected-parent{border:1px solid #ffca6f}.gjs-opac50{opacity:.5;filter:alpha(opacity=50)}.gjs-layer{font-weight:lighter;text-align:left;position:relative;background-color:rgba(0,0,0,.1);font-size:.75rem}.gjs-layer-hidden{opacity:.55;filter:alpha(opacity=55)}.gjs-layer-count{position:absolute;right:27px;top:9px}.gjs-layer-vis{height:auto !important;width:auto !important;left:0;top:0;padding:7px 5px 7px 10px;position:absolute;cursor:pointer;z-index:1}.gjs-layer-caret{font-size:.5rem;width:8px;padding:2px;cursor:pointer;position:absolute;left:-9px;top:6px;opacity:.7;filter:alpha(opacity=70)}.gjs-layer-caret:hover{opacity:1;filter:alpha(opacity=100)}.gjs-layer-title{padding:3px 10px 5px 30px;display:flex;align-items:center}.gjs-layer-title-inn{align-items:center;position:relative;display:flex;width:100%}.gjs-layer__icon{display:block;width:100%;max-width:15px;max-height:15px;padding-left:5px}.gjs-layer__icon svg{fill:currentColor}.gjs-layer-name{padding:5px 0;display:inline-block;box-sizing:content-box;overflow:hidden;white-space:nowrap;margin:0 30px 0 5px}.gjs-layer-name--no-edit{text-overflow:ellipsis}.gjs-layer>.gjs-layer-children{display:none}.gjs-layer.open>.gjs-layer-children{display:block}.gjs-layer-no-chld>.gjs-layer-title-inn>.gjs-layer-caret{display:none}.gjs-layer-move{padding:7px 10px 7px 5px;position:absolute;font-size:12px;cursor:move;right:0;top:0}.gjs-layer.gjs-hovered .gjs-layer-title{background-color:rgba(255,255,255,.015)}.gjs-layer.gjs-selected .gjs-layer-title{background-color:rgba(255,255,255,.1)}.gjs-layers{position:relative;height:100%}.gjs-layers #gjs-placeholder{width:100%;position:absolute}.gjs-layers #gjs-placeholder #gjs-plh-int{height:100%;padding:1px}.gjs-layers #gjs-placeholder #gjs-plh-int.gjs-insert{background-color:#62c462}#gjs-clm-add-tag,.gjs-clm-tags-btn{background-color:rgba(255,255,255,.15);border-radius:2px;padding:3px;margin-right:3px;border:1px solid rgba(0,0,0,.15);width:24px;height:24px;box-sizing:border-box;cursor:pointer}.gjs-clm-tags-btn svg{fill:currentColor;display:block}.gjs-clm-header{display:flex;align-items:center;margin:7px 0}.gjs-clm-header-status{flex-shrink:1;margin-left:auto}.gjs-clm-tag{display:flex;overflow:hidden;align-items:center;border-radius:3px;margin:0 3px 3px 0;padding:5px;cursor:default}.gjs-clm-tag-status,.gjs-clm-tag-close{width:12px;height:12px;flex-shrink:1}.gjs-clm-tag-status svg,.gjs-clm-tag-close svg{vertical-align:middle;fill:currentColor}.gjs-clm-sels-info{margin:7px 0}.gjs-clm-sel-id{font-size:.9em;opacity:.5;filter:alpha(opacity=50)}.gjs-clm-label-sel{float:left;padding-right:5px}.gjs-clm-tags{font-size:.75rem;padding:10px 5px}.gjs-clm-tags #gjs-clm-sel{padding:7px 0;float:left}.gjs-clm-tags #gjs-clm-sel{font-style:italic;margin-left:5px}.gjs-clm-tags #gjs-clm-tags-field{clear:both;padding:5px;margin-bottom:5px;display:flex;flex-wrap:wrap}.gjs-clm-tags #gjs-clm-tags-c{display:flex;flex-wrap:wrap;vertical-align:top;overflow:hidden}.gjs-clm-tags #gjs-clm-new{color:#ddd;padding:5px 6px;display:none}.gjs-clm-tags #gjs-clm-close{opacity:.85;filter:alpha(opacity=85);font-size:20px;line-height:0;cursor:pointer;color:rgba(255,255,255,.9)}.gjs-clm-tags #gjs-clm-close:hover{opacity:1;filter:alpha(opacity=100)}.gjs-clm-tags #gjs-clm-checkbox{color:rgba(255,255,255,.9);vertical-align:middle;cursor:pointer;font-size:9px}.gjs-clm-tags #gjs-clm-tag-label{flex-grow:1;text-overflow:ellipsis;overflow:hidden;padding:0 3px;cursor:text}.gjs-mdl-container{font-family:Helvetica,sans-serif;overflow-y:auto;position:fixed;background-color:rgba(0,0,0,.5);display:flex;top:0;left:0;right:0;bottom:0;z-index:100}.gjs-mdl-dialog{text-shadow:-1px -1px 0 rgba(0,0,0,.05);animation:gjs-slide-down .215s;margin:auto;max-width:850px;width:90%;border-radius:3px;font-weight:lighter;position:relative;z-index:2}.gjs-mdl-title{font-size:1rem}.gjs-mdl-btn-close{position:absolute;right:15px;top:5px}.gjs-mdl-active .gjs-mdl-dialog{animation:gjs-mdl-slide-down .216s}.gjs-mdl-header,.gjs-mdl-content{padding:10px 15px;clear:both}.gjs-mdl-header{position:relative;border-bottom:1px solid rgba(0,0,0,.2);padding:15px 15px 7px}.gjs-export-dl::after{content:"";clear:both;display:block;margin-bottom:10px}.gjs-dropzone{display:none;opacity:0;position:absolute;top:0;left:0;z-index:11;width:100%;height:100%;transition:opacity .25s;pointer-events:none}.gjs-dropzone-active .gjs-dropzone{display:block;opacity:1}.gjs-am-assets{height:290px;overflow:auto;clear:both;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start}.gjs-am-assets-header{padding:5px}.gjs-am-add-asset .gjs-am-add-field{width:70%;float:left}.gjs-am-add-asset button{width:25%;float:right}.gjs-am-preview-cont{position:relative;height:70px;width:30%;background-color:#444;border-radius:2px;float:left;overflow:hidden}.gjs-am-preview{position:absolute;background-position:center center;background-size:cover;background-repeat:no-repeat;height:100%;width:100%;z-index:1}.gjs-am-preview-bg{opacity:.5;filter:alpha(opacity=50);position:absolute;height:100%;width:100%;z-index:0}.gjs-am-dimensions{opacity:.5;filter:alpha(opacity=50);font-size:10px}.gjs-am-meta{width:70%;float:left;font-size:12px;padding:5px 0 0 5px;box-sizing:border-box}.gjs-am-meta>div{margin-bottom:5px}.gjs-am-close{cursor:pointer;position:absolute;right:5px;top:0;display:none}.gjs-am-asset{border-bottom:1px solid rgba(0,0,0,.2);padding:5px;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.gjs-am-asset:hover .gjs-am-close{display:block}.gjs-am-highlight{background-color:rgba(255,255,255,.1)}.gjs-am-assets-cont{background-color:rgba(0,0,0,.1);border-radius:3px;box-sizing:border-box;padding:10px;width:45%;float:right;height:325px;overflow:hidden}.gjs-am-file-uploader{width:55%;float:left}.gjs-am-file-uploader>form{background-color:rgba(0,0,0,.1);border:2px dashed;border-radius:3px;position:relative;text-align:center;margin-bottom:15px}.gjs-am-file-uploader>form.gjs-am-hover{border:2px solid #62c462;color:#75cb75}.gjs-am-file-uploader>form.gjs-am-disabled{border-color:red}.gjs-am-file-uploader>form #gjs-am-uploadFile{opacity:0;filter:alpha(opacity=0);padding:150px 10px;width:100%;box-sizing:border-box}.gjs-am-file-uploader #gjs-am-title{position:absolute;padding:150px 10px;width:100%}.gjs-cm-editor-c{float:left;box-sizing:border-box;width:50%}.gjs-cm-editor-c .CodeMirror{height:450px}.gjs-cm-editor{font-size:12px}.gjs-cm-editor#gjs-cm-htmlmixed{padding-right:10px;border-right:1px solid rgba(0,0,0,.2)}.gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title{color:#a97d44}.gjs-cm-editor#gjs-cm-css{padding-left:10px}.gjs-cm-editor#gjs-cm-css #gjs-cm-title{color:#ddca7e}.gjs-cm-editor #gjs-cm-title{background-color:rgba(0,0,0,.2);font-size:12px;padding:5px 10px 3px;text-align:right}.gjs-rte-toolbar{border:1px solid rgba(0,0,0,.2);position:absolute;border-radius:3px;z-index:10}.gjs-rte-actionbar{display:flex}.gjs-rte-action{display:flex;align-items:center;justify-content:center;padding:5px;min-width:25px;border-right:1px solid rgba(0,0,0,.2);text-align:center;cursor:pointer;outline:none}.gjs-rte-action:last-child{border-right:none}.gjs-rte-action:hover{background-color:rgba(255,255,255,.1)}.gjs-rte-active{background-color:rgba(255,255,255,.1)}.gjs-rte-disabled{color:rgba(255,255,255,.1);cursor:not-allowed}.gjs-rte-disabled:hover{background-color:unset}.gjs-editor-cont .sp-hue,.gjs-editor-cont .sp-slider{cursor:row-resize}.gjs-editor-cont .sp-color,.gjs-editor-cont .sp-dragger{cursor:crosshair}.gjs-editor-cont .sp-alpha-inner,.gjs-editor-cont .sp-alpha-handle{cursor:col-resize}.gjs-editor-cont .sp-hue{left:90%}.gjs-editor-cont .sp-color{right:15%}.gjs-editor-cont .sp-container{border:1px solid rgba(0,0,0,.2);box-shadow:0 0 7px rgba(0,0,0,.2);border-radius:3px}.gjs-editor-cont .sp-picker-container{border:none}.gjs-editor-cont .colpick_dark .colpick_color{outline:1px solid rgba(0,0,0,.2)}.gjs-editor-cont .sp-cancel,.gjs-editor-cont .sp-cancel:hover{bottom:-8px;color:#777 !important;font-size:25px;left:0;position:absolute;text-decoration:none}.gjs-editor-cont .sp-alpha-handle{background-color:#ccc;border:1px solid #555;width:4px}.gjs-editor-cont .sp-color,.gjs-editor-cont .sp-hue{border:1px solid #333}.gjs-editor-cont .sp-slider{background-color:#ccc;border:1px solid #555;height:3px;left:-4px;width:22px}.gjs-editor-cont .sp-dragger{background:transparent;box-shadow:0 0 0 1px #111}.gjs-editor-cont .sp-button-container{float:none;width:100%;position:relative;text-align:right}.gjs-editor-cont .sp-container button,.gjs-editor-cont .sp-container button:hover,.gjs-editor-cont .sp-container button:active{background:rgba(0,0,0,.2);border-color:rgba(0,0,0,.2);color:#ddd;text-shadow:none;box-shadow:none;padding:3px 5px}.gjs-editor-cont .sp-palette-container{border:none;float:none;margin:0;padding:5px 10px 0}.gjs-editor-cont .sp-palette .sp-thumb-el,.gjs-editor-cont .sp-palette .sp-thumb-el:hover{border:1px solid rgba(0,0,0,.9)}.gjs-editor-cont .sp-palette .sp-thumb-el:hover,.gjs-editor-cont .sp-palette .sp-thumb-el.sp-thumb-active{border-color:rgba(0,0,0,.9)}.gjs-hidden{display:none}@keyframes gjs-slide-down{0%{transform:translate(0, -3rem);opacity:0}100%{transform:translate(0, 0);opacity:1}}@keyframes gjs-slide-up{0%{transform:translate(0, 0);opacity:1}100%{transform:translate(0, -3rem);opacity:0}}.cm-s-hopscotch span.cm-error{color:#fff} diff --git a/grapesjs/dist/fonts/main-fonts.eot b/grapesjs/dist/fonts/main-fonts.eot new file mode 100755 index 0000000000000000000000000000000000000000..b0a083bf024b097c85282e807b58b9be4e9d0d56 GIT binary patch literal 5798 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 IrMnXN7hU8`zW@LL literal 0 HcmV?d00001 diff --git a/grapesjs/dist/fonts/main-fonts.svg b/grapesjs/dist/fonts/main-fonts.svg new file mode 100755 index 0000000..ff483d5 --- /dev/null +++ b/grapesjs/dist/fonts/main-fonts.svg @@ -0,0 +1,394 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + Borders: 30pxCanvas: 1000x1000px + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/grapesjs/dist/fonts/main-fonts.ttf b/grapesjs/dist/fonts/main-fonts.ttf new file mode 100755 index 0000000000000000000000000000000000000000..4399759ffee5241e01d260bc77461ec79ff7cf9a GIT binary patch literal 5628 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 BJ6He! literal 0 HcmV?d00001 diff --git a/grapesjs/dist/fonts/main-fonts.woff b/grapesjs/dist/fonts/main-fonts.woff new file mode 100755 index 0000000000000000000000000000000000000000..77e183be9514eb36dacfdf8bf2e024be864678d5 GIT binary patch literal 2700 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 bewB33%pSYx&q%U1T1Q=Snk0)T%2dcn`F literal 0 HcmV?d00001 diff --git a/grapesjs/dist/grapes.min.js b/grapesjs/dist/grapes.min.js new file mode 100755 index 0000000..73b0c50 --- /dev/null +++ b/grapesjs/dist/grapes.min.js @@ -0,0 +1,3 @@ +/*! grapesjs - 0.17.19 */ +!function(t,e){'object'==typeof exports&&'object'==typeof module?module.exports=e():'function'==typeof define&&define.amd?define([],e):'object'==typeof exports?exports["grapesjs"]=e():t["grapesjs"]=e()}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){'undefined'!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:'Module'}),Object.defineProperty(t,'__esModule',{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&'object'==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,'default',{enumerable:!0,value:t}),2&e&&'string'!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t['default']}:function(){return t};return n.d(e,'a',e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=99)}([function(t,e,n){"use strict";n.r(e),n.d(e,"default",(function(){return Sn})),n.d(e,"VERSION",(function(){return i["e"]})),n.d(e,"restArguments",(function(){return o})),n.d(e,"isObject",(function(){return a})),n.d(e,"isNull",(function(){return s})),n.d(e,"isUndefined",(function(){return c})),n.d(e,"isBoolean",(function(){return l})),n.d(e,"isElement",(function(){return u})),n.d(e,"isString",(function(){return h})),n.d(e,"isNumber",(function(){return f})),n.d(e,"isDate",(function(){return p})),n.d(e,"isRegExp",(function(){return g})),n.d(e,"isError",(function(){return v})),n.d(e,"isSymbol",(function(){return m})),n.d(e,"isArrayBuffer",(function(){return b})),n.d(e,"isDataView",(function(){return j})),n.d(e,"isArray",(function(){return T})),n.d(e,"isFunction",(function(){return x})),n.d(e,"isArguments",(function(){return M})),n.d(e,"isFinite",(function(){return D})),n.d(e,"isNaN",(function(){return A})),n.d(e,"isTypedArray",(function(){return V})),n.d(e,"isEmpty",(function(){return B})),n.d(e,"isMatch",(function(){return $})),n.d(e,"isEqual",(function(){return Y})),n.d(e,"isMap",(function(){return ot})),n.d(e,"isWeakMap",(function(){return at})),n.d(e,"isSet",(function(){return st})),n.d(e,"isWeakSet",(function(){return ct})),n.d(e,"keys",(function(){return U})),n.d(e,"allKeys",(function(){return X})),n.d(e,"values",(function(){return lt})),n.d(e,"pairs",(function(){return ut})),n.d(e,"invert",(function(){return dt})),n.d(e,"functions",(function(){return ht})),n.d(e,"methods",(function(){return ht})),n.d(e,"extend",(function(){return pt})),n.d(e,"extendOwn",(function(){return gt})),n.d(e,"assign",(function(){return gt})),n.d(e,"defaults",(function(){return vt})),n.d(e,"create",(function(){return bt})),n.d(e,"clone",(function(){return yt})),n.d(e,"tap",(function(){return wt})),n.d(e,"get",(function(){return St})),n.d(e,"has",(function(){return kt})),n.d(e,"mapObject",(function(){return _t})),n.d(e,"identity",(function(){return jt})),n.d(e,"constant",(function(){return _})),n.d(e,"noop",(function(){return Lt})),n.d(e,"toPath",(function(){return xt})),n.d(e,"property",(function(){return Pt})),n.d(e,"propertyOf",(function(){return Nt})),n.d(e,"matcher",(function(){return Tt})),n.d(e,"matches",(function(){return Tt})),n.d(e,"times",(function(){return It})),n.d(e,"random",(function(){return Ft})),n.d(e,"now",(function(){return Rt})),n.d(e,"escape",(function(){return Ht})),n.d(e,"unescape",(function(){return Ut})),n.d(e,"templateSettings",(function(){return Bt})),n.d(e,"template",(function(){return Yt})),n.d(e,"result",(function(){return Xt})),n.d(e,"uniqueId",(function(){return Zt})),n.d(e,"chain",(function(){return Qt})),n.d(e,"iteratee",(function(){return Dt})),n.d(e,"partial",(function(){return ne})),n.d(e,"bind",(function(){return re})),n.d(e,"bindAll",(function(){return ae})),n.d(e,"memoize",(function(){return se})),n.d(e,"delay",(function(){return ce})),n.d(e,"defer",(function(){return le})),n.d(e,"throttle",(function(){return ue})),n.d(e,"debounce",(function(){return de})),n.d(e,"wrap",(function(){return he})),n.d(e,"negate",(function(){return fe})),n.d(e,"compose",(function(){return pe})),n.d(e,"after",(function(){return ge})),n.d(e,"before",(function(){return ve})),n.d(e,"once",(function(){return me})),n.d(e,"findKey",(function(){return be})),n.d(e,"findIndex",(function(){return we})),n.d(e,"findLastIndex",(function(){return xe})),n.d(e,"sortedIndex",(function(){return Oe})),n.d(e,"indexOf",(function(){return Se})),n.d(e,"lastIndexOf",(function(){return ke})),n.d(e,"find",(function(){return je})),n.d(e,"detect",(function(){return je})),n.d(e,"findWhere",(function(){return Te})),n.d(e,"each",(function(){return Pe})),n.d(e,"forEach",(function(){return Pe})),n.d(e,"map",(function(){return Ee})),n.d(e,"collect",(function(){return Ee})),n.d(e,"reduce",(function(){return De})),n.d(e,"foldl",(function(){return De})),n.d(e,"inject",(function(){return De})),n.d(e,"reduceRight",(function(){return Ae})),n.d(e,"foldr",(function(){return Ae})),n.d(e,"filter",(function(){return _e})),n.d(e,"select",(function(){return _e})),n.d(e,"reject",(function(){return Le})),n.d(e,"every",(function(){return Ne})),n.d(e,"all",(function(){return Ne})),n.d(e,"some",(function(){return Ie})),n.d(e,"any",(function(){return Ie})),n.d(e,"contains",(function(){return Fe})),n.d(e,"includes",(function(){return Fe})),n.d(e,"include",(function(){return Fe})),n.d(e,"invoke",(function(){return Re})),n.d(e,"pluck",(function(){return Ve})),n.d(e,"where",(function(){return ze})),n.d(e,"max",(function(){return He})),n.d(e,"min",(function(){return Ue})),n.d(e,"shuffle",(function(){return $e})),n.d(e,"sample",(function(){return Be})),n.d(e,"sortBy",(function(){return We})),n.d(e,"groupBy",(function(){return Ge})),n.d(e,"indexBy",(function(){return Ke})),n.d(e,"countBy",(function(){return Ye})),n.d(e,"partition",(function(){return Xe})),n.d(e,"toArray",(function(){return Ze})),n.d(e,"size",(function(){return Qe})),n.d(e,"pick",(function(){return en})),n.d(e,"omit",(function(){return nn})),n.d(e,"first",(function(){return on})),n.d(e,"head",(function(){return on})),n.d(e,"take",(function(){return on})),n.d(e,"initial",(function(){return rn})),n.d(e,"last",(function(){return sn})),n.d(e,"rest",(function(){return an})),n.d(e,"tail",(function(){return an})),n.d(e,"drop",(function(){return an})),n.d(e,"compact",(function(){return cn})),n.d(e,"flatten",(function(){return ln})),n.d(e,"without",(function(){return dn})),n.d(e,"uniq",(function(){return hn})),n.d(e,"unique",(function(){return hn})),n.d(e,"union",(function(){return fn})),n.d(e,"intersection",(function(){return pn})),n.d(e,"difference",(function(){return un})),n.d(e,"unzip",(function(){return gn})),n.d(e,"transpose",(function(){return gn})),n.d(e,"zip",(function(){return vn})),n.d(e,"object",(function(){return mn})),n.d(e,"range",(function(){return bn})),n.d(e,"chunk",(function(){return yn})),n.d(e,"mixin",(function(){return xn}));var r={};n.r(r),n.d(r,"VERSION",(function(){return i["e"]})),n.d(r,"restArguments",(function(){return o})),n.d(r,"isObject",(function(){return a})),n.d(r,"isNull",(function(){return s})),n.d(r,"isUndefined",(function(){return c})),n.d(r,"isBoolean",(function(){return l})),n.d(r,"isElement",(function(){return u})),n.d(r,"isString",(function(){return h})),n.d(r,"isNumber",(function(){return f})),n.d(r,"isDate",(function(){return p})),n.d(r,"isRegExp",(function(){return g})),n.d(r,"isError",(function(){return v})),n.d(r,"isSymbol",(function(){return m})),n.d(r,"isArrayBuffer",(function(){return b})),n.d(r,"isDataView",(function(){return j})),n.d(r,"isArray",(function(){return T})),n.d(r,"isFunction",(function(){return x})),n.d(r,"isArguments",(function(){return M})),n.d(r,"isFinite",(function(){return D})),n.d(r,"isNaN",(function(){return A})),n.d(r,"isTypedArray",(function(){return V})),n.d(r,"isEmpty",(function(){return B})),n.d(r,"isMatch",(function(){return $})),n.d(r,"isEqual",(function(){return Y})),n.d(r,"isMap",(function(){return ot})),n.d(r,"isWeakMap",(function(){return at})),n.d(r,"isSet",(function(){return st})),n.d(r,"isWeakSet",(function(){return ct})),n.d(r,"keys",(function(){return U})),n.d(r,"allKeys",(function(){return X})),n.d(r,"values",(function(){return lt})),n.d(r,"pairs",(function(){return ut})),n.d(r,"invert",(function(){return dt})),n.d(r,"functions",(function(){return ht})),n.d(r,"methods",(function(){return ht})),n.d(r,"extend",(function(){return pt})),n.d(r,"extendOwn",(function(){return gt})),n.d(r,"assign",(function(){return gt})),n.d(r,"defaults",(function(){return vt})),n.d(r,"create",(function(){return bt})),n.d(r,"clone",(function(){return yt})),n.d(r,"tap",(function(){return wt})),n.d(r,"get",(function(){return St})),n.d(r,"has",(function(){return kt})),n.d(r,"mapObject",(function(){return _t})),n.d(r,"identity",(function(){return jt})),n.d(r,"constant",(function(){return _})),n.d(r,"noop",(function(){return Lt})),n.d(r,"toPath",(function(){return xt})),n.d(r,"property",(function(){return Pt})),n.d(r,"propertyOf",(function(){return Nt})),n.d(r,"matcher",(function(){return Tt})),n.d(r,"matches",(function(){return Tt})),n.d(r,"times",(function(){return It})),n.d(r,"random",(function(){return Ft})),n.d(r,"now",(function(){return Rt})),n.d(r,"escape",(function(){return Ht})),n.d(r,"unescape",(function(){return Ut})),n.d(r,"templateSettings",(function(){return Bt})),n.d(r,"template",(function(){return Yt})),n.d(r,"result",(function(){return Xt})),n.d(r,"uniqueId",(function(){return Zt})),n.d(r,"chain",(function(){return Qt})),n.d(r,"iteratee",(function(){return Dt})),n.d(r,"partial",(function(){return ne})),n.d(r,"bind",(function(){return re})),n.d(r,"bindAll",(function(){return ae})),n.d(r,"memoize",(function(){return se})),n.d(r,"delay",(function(){return ce})),n.d(r,"defer",(function(){return le})),n.d(r,"throttle",(function(){return ue})),n.d(r,"debounce",(function(){return de})),n.d(r,"wrap",(function(){return he})),n.d(r,"negate",(function(){return fe})),n.d(r,"compose",(function(){return pe})),n.d(r,"after",(function(){return ge})),n.d(r,"before",(function(){return ve})),n.d(r,"once",(function(){return me})),n.d(r,"findKey",(function(){return be})),n.d(r,"findIndex",(function(){return we})),n.d(r,"findLastIndex",(function(){return xe})),n.d(r,"sortedIndex",(function(){return Oe})),n.d(r,"indexOf",(function(){return Se})),n.d(r,"lastIndexOf",(function(){return ke})),n.d(r,"find",(function(){return je})),n.d(r,"detect",(function(){return je})),n.d(r,"findWhere",(function(){return Te})),n.d(r,"each",(function(){return Pe})),n.d(r,"forEach",(function(){return Pe})),n.d(r,"map",(function(){return Ee})),n.d(r,"collect",(function(){return Ee})),n.d(r,"reduce",(function(){return De})),n.d(r,"foldl",(function(){return De})),n.d(r,"inject",(function(){return De})),n.d(r,"reduceRight",(function(){return Ae})),n.d(r,"foldr",(function(){return Ae})),n.d(r,"filter",(function(){return _e})),n.d(r,"select",(function(){return _e})),n.d(r,"reject",(function(){return Le})),n.d(r,"every",(function(){return Ne})),n.d(r,"all",(function(){return Ne})),n.d(r,"some",(function(){return Ie})),n.d(r,"any",(function(){return Ie})),n.d(r,"contains",(function(){return Fe})),n.d(r,"includes",(function(){return Fe})),n.d(r,"include",(function(){return Fe})),n.d(r,"invoke",(function(){return Re})),n.d(r,"pluck",(function(){return Ve})),n.d(r,"where",(function(){return ze})),n.d(r,"max",(function(){return He})),n.d(r,"min",(function(){return Ue})),n.d(r,"shuffle",(function(){return $e})),n.d(r,"sample",(function(){return Be})),n.d(r,"sortBy",(function(){return We})),n.d(r,"groupBy",(function(){return Ge})),n.d(r,"indexBy",(function(){return Ke})),n.d(r,"countBy",(function(){return Ye})),n.d(r,"partition",(function(){return Xe})),n.d(r,"toArray",(function(){return Ze})),n.d(r,"size",(function(){return Qe})),n.d(r,"pick",(function(){return en})),n.d(r,"omit",(function(){return nn})),n.d(r,"first",(function(){return on})),n.d(r,"head",(function(){return on})),n.d(r,"take",(function(){return on})),n.d(r,"initial",(function(){return rn})),n.d(r,"last",(function(){return sn})),n.d(r,"rest",(function(){return an})),n.d(r,"tail",(function(){return an})),n.d(r,"drop",(function(){return an})),n.d(r,"compact",(function(){return cn})),n.d(r,"flatten",(function(){return ln})),n.d(r,"without",(function(){return dn})),n.d(r,"uniq",(function(){return hn})),n.d(r,"unique",(function(){return hn})),n.d(r,"union",(function(){return fn})),n.d(r,"intersection",(function(){return pn})),n.d(r,"difference",(function(){return un})),n.d(r,"unzip",(function(){return gn})),n.d(r,"transpose",(function(){return gn})),n.d(r,"zip",(function(){return vn})),n.d(r,"object",(function(){return mn})),n.d(r,"range",(function(){return bn})),n.d(r,"chunk",(function(){return yn})),n.d(r,"mixin",(function(){return xn})),n.d(r,"default",(function(){return On}));var i=n(4);function o(t,e){return e=null==e?t.length-1:+e,function(){for(var n=Math.max(arguments.length-e,0),r=Array(n),i=0;i=0&&n<=i["b"]}}function N(t){return function(e){return null==e?void 0:e[t]}}var I=N('byteLength'),F=L(I),R=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var V=i["r"]?function(t){return i["l"]?Object(i["l"])(t)&&!j(t):F(t)&&R.test(i["t"].call(t))}:_(!1),z=N('length');function H(t,e){e=function(t){for(var e={},n=t.length,r=0;r':'>','"':'"',"'":''','`':'`'},Ht=Vt(zt),Ut=Vt(dt(zt)),Bt=W.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},$t=/(.)^/,Wt={"'":"'",'\\':'\\','\r':'r','\n':'n','\u2028':'u2028','\u2029':'u2029'},qt=/\\|'|\r|\n|\u2028|\u2029/g;function Gt(t){return'\\'+Wt[t]}var Kt=/^\s*(\w|\$)+\s*$/;function Yt(t,e,n){!e&&n&&(e=n),e=vt({},e,W.templateSettings);var r=RegExp([(e.escape||$t).source,(e.interpolate||$t).source,(e.evaluate||$t).source].join('|')+'|$','g'),i=0,o="__p+='";t.replace(r,(function(e,n,r,a,s){return o+=t.slice(i,s).replace(qt,Gt),i=s+e.length,n?o+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":r?o+="'+\n((__t=("+r+"))==null?'':__t)+\n'":a&&(o+="';\n"+a+"\n__p+='"),e})),o+="';\n";var a,s=e.variable;if(s){if(!Kt.test(s))throw new Error('variable is not a bare identifier: '+s)}else o='with(obj||{}){\n'+o+'}\n',s='obj';o="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+o+'return __p;\n';try{a=new Function(s,'_',o)}catch(t){throw t.source=o,t}var c=function(t){return a.call(this,t,W)};return c.source='function('+s+'){\n'+o+'}',c}function Xt(t,e,n){var r=(e=Ot(e)).length;if(!r)return x(n)?n.call(t):n;for(var i=0;i1)oe(s,e-1,n,r),i=r.length;else for(var c=0,l=s.length;ce?(r&&(clearTimeout(r),r=null),s=l,a=t.apply(i,o),r||(i=o=null)):r||!1===n.trailing||(r=setTimeout(c,u)),a};return l.cancel=function(){clearTimeout(r),s=0,r=i=o=null},l}function de(t,e,n){var r,i,a,s,c,l=function(){var o=Rt()-i;e>o?r=setTimeout(l,e-o):(r=null,n||(s=t.apply(c,a)),r||(a=c=null))},u=o((function(o){return c=this,a=o,i=Rt(),r||(r=setTimeout(l,e),n&&(s=t.apply(c,a))),s}));return u.cancel=function(){clearTimeout(r),r=a=c=null},u}function he(t,e){return ne(e,t)}function fe(t){return function(){return!t.apply(this,arguments)}}function pe(){var t=arguments,e=t.length-1;return function(){for(var n=e,r=t[e].apply(this,arguments);n--;)r=t[n].call(this,r);return r}}function ge(t,e){return function(){if(--t<1)return e.apply(this,arguments)}}function ve(t,e){var n;return function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=null),n}}var me=ne(ve,2);function be(t,e,n){e=At(e,n);for(var r,i=U(t),o=0,a=i.length;o0?0:i-1;o>=0&&o0?s=a>=0?a:Math.max(a+c,s):c=a>=0?Math.min(a+1,c):a+c+1;else if(n&&a&&c)return r[a=n(r,o)]===o?a:-1;if(o!=o)return(a=e(i["q"].call(r,s,c),A))>=0?a+s:-1;for(a=t>0?s:c-1;a>=0&&a0?0:a-1;for(i||(r=e[o?o[s]:s],s+=t);s>=0&&s=3;return e(t,Et(n,i,4),r,o)}}var De=Me(1),Ae=Me(-1);function _e(t,e,n){var r=[];return e=At(e,n),Pe(t,(function(t,n,i){e(t,n,i)&&r.push(t)})),r}function Le(t,e,n){return _e(t,fe(At(e)),n)}function Ne(t,e,n){e=At(e,n);for(var r=!ie(t)&&U(t),i=(r||t).length,o=0;o=0}var Re=o((function(t,e,n){var r,i;return x(e)?i=e:(e=Ot(e),r=e.slice(0,-1),e=e[e.length-1]),Ee(t,(function(t){var o=i;if(!o){if(r&&r.length&&(t=Ct(t,r)),null==t)return;o=t[e]}return null==o?o:o.apply(t,n)}))}));function Ve(t,e){return Ee(t,Pt(e))}function ze(t,e){return _e(t,Tt(e))}function He(t,e,n){var r,i,o=-1/0,a=-1/0;if(null==e||'number'==typeof e&&'object'!=typeof t[0]&&null!=t)for(var s=0,c=(t=ie(t)?t:lt(t)).length;so&&(o=r);else e=At(e,n),Pe(t,(function(t,n,r){((i=e(t,n,r))>a||i===-1/0&&o===-1/0)&&(o=t,a=i)}));return o}function Ue(t,e,n){var r,i,o=1/0,a=1/0;if(null==e||'number'==typeof e&&'object'!=typeof t[0]&&null!=t)for(var s=0,c=(t=ie(t)?t:lt(t)).length;sr||void 0===n)return 1;if(n1&&(r=Et(r,e[1])),e=X(t)):(r=tn,e=oe(e,!1,!1),t=Object(t));for(var i=0,o=e.length;i1&&(n=e[1])):(e=Ee(oe(e,!1,!1),String),r=function(t,n){return!Fe(e,n)}),en(t,r,n)}));function rn(t,e,n){return i["q"].call(t,0,Math.max(0,t.length-(null==e||n?1:e)))}function on(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[0]:rn(t,t.length-e)}function an(t,e,n){return i["q"].call(t,null==e||n?1:e)}function sn(t,e,n){return null==t||t.length<1?null==e||n?void 0:[]:null==e||n?t[t.length-1]:an(t,Math.max(0,t.length-e))}function cn(t){return _e(t,Boolean)}function ln(t,e){return oe(t,e,!1)}var un=o((function(t,e){return e=oe(e,!0,!0),_e(t,(function(t){return!Fe(e,t)}))})),dn=o((function(t,e){return un(t,e)}));function hn(t,e,n,r){l(e)||(r=n,n=e,e=!1),null!=n&&(n=At(n,r));for(var i=[],o=[],a=0,s=z(t);athis.length&&(i=this.length),i<0&&(i+=this.length+1);var o,a,s=[],c=[],l=[],u=[],d={},h=e.add,f=e.merge,p=e.remove,g=!1,v=this.comparator&&null==i&&!1!==e.sort,m=n.isString(this.comparator)?this.comparator:null;for(a=0;a7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=('/'+this.root+'/').replace(L,'/'),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||'/';return this.location.replace(e+'#'+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement('iframe'),this.iframe.src='javascript:0',this.iframe.style.display='none',this.iframe.tabIndex=-1;var r=document.body,i=r.insertBefore(this.iframe,r.firstChild).contentWindow;i.document.open(),i.document.close(),i.location.hash='#'+this.fragment}var o=window.addEventListener||function(t,e){return attachEvent('on'+t,e)};if(this._usePushState?o('popstate',this.checkUrl,!1):this._useHashChange&&!this.iframe?o('hashchange',this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent('on'+t,e)};this._usePushState?t('popstate',this.checkUrl,!1):this._useHashChange&&!this.iframe&&t('hashchange',this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),A.started=!1},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe&&(e=this.getHash(this.iframe.contentWindow)),e===this.fragment)return!1;this.iframe&&this.navigate(e),this.loadUrl()},loadUrl:function(t){return!!this.matchRoot()&&(t=this.fragment=this.getFragment(t),n.some(this.handlers,(function(e){if(e.route.test(t))return e.callback(t),!0})))},navigate:function(t,e){if(!A.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||'');var n=this.root;''!==t&&'?'!==t.charAt(0)||(n=n.slice(0,-1)||'/');var r=n+t;if(t=this.decodeFragment(t.replace(N,'')),this.fragment!==t){if(this.fragment=t,this._usePushState)this.history[e.replace?'replaceState':'pushState']({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var i=this.iframe.contentWindow;e.replace||(i.document.open(),i.document.close()),this._updateHash(i.location,t,e.replace)}}return e.trigger?this.loadUrl(t):void 0}},_updateHash:function(t,e,n){if(n){var r=t.href.replace(/(javascript:|#).*$/,'');t.replace(r+'#'+e)}else t.hash='#'+e}}),e.history=new A;b.extend=y.extend=T.extend=C.extend=A.extend=function(t,e){var r,i=this;return r=t&&n.has(t,'constructor')?t.constructor:function(){return i.apply(this,arguments)},n.extend(r,i,e),r.prototype=n.create(i.prototype,t),r.prototype.constructor=r,r.__super__=i.prototype,r};var I=function(){throw new Error('A "url" property or function must be specified')},F=function(t,e){var n=e.error;e.error=function(r){n&&n.call(e.context,t,r,e),t.trigger('error',t,r,e)}};return e}(s,n,t,e)}.apply(e,i))||(t.exports=o);else;}()}).call(this,n(31))},function(t,e){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e,n){"use strict";n.d(e,"t",(function(){return x})),n.d(e,"e",(function(){return O})),n.d(e,"y",(function(){return h})),n.d(e,"x",(function(){return f})),n.d(e,"m",(function(){return b})),n.d(e,"v",(function(){return l})),n.d(e,"i",(function(){return C})),n.d(e,"f",(function(){return S})),n.d(e,"b",(function(){return v})),n.d(e,"u",(function(){return w})),n.d(e,"h",(function(){return T})),n.d(e,"q",(function(){return P})),n.d(e,"p",(function(){return E})),n.d(e,"g",(function(){return y})),n.d(e,"A",(function(){return d})),n.d(e,"w",(function(){return m})),n.d(e,"j",(function(){return k})),n.d(e,"k",(function(){return p})),n.d(e,"c",(function(){return A})),n.d(e,"l",(function(){return N})),n.d(e,"z",(function(){return I})),n.d(e,"a",(function(){return u})),n.d(e,"r",(function(){return M})),n.d(e,"o",(function(){return D})),n.d(e,"n",(function(){return _})),n.d(e,"d",(function(){return F})),n.d(e,"s",(function(){return L}));var r=n(8),i=n.n(r),o=n(7),a=n.n(o),s=n(0),c=window.Element.prototype,l=c.matches||c.webkitMatchesSelector||c.mozMatchesSelector||c.msMatchesSelector,u=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Object(s["isArray"])(e)?a()(e):[e];if(r.length){var i=r.shift();if(i&&(!n.unique||!document.querySelector("link[href=\"".concat(i,"\"]")))){var o=document,c=o.head,l=document.createElement('link');l.href=i,l.rel='stylesheet',n.prepand?c.insertBefore(l,c.firstChild):c.appendChild(l)}t(r)}},d=function(t,e){var n={},r=Object(s["keys"])(e);for(var i in t)if(t.hasOwnProperty(i)){var o=t[i],a=e[i];r.indexOf(i)>=0?o!==a&&(n[i]=a):n[i]=null}for(var c in e)e.hasOwnProperty(c)&&Object(s["isUndefined"])(t[c])&&(n[c]=e[c]);return n},h=function(t,e,n,r){e=e.split(/\s+/),t=t instanceof Array?t:[t];for(var i=function(i){t.forEach((function(t){return t.addEventListener(e[i],n,r)}))},o=0;o1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=0;if(isNaN(t))return n;if(t=parseFloat(t),Math.floor(t)!==t){var i=e.toString().split('.')[1];r=i?i.length:0}return r?parseFloat(t.toFixed(r)):t},b=function(t){return'draggable'in document.createElement('i')&&(t?t.get('Config').nativeDnD:1)},y=function(t){return Object(s["isElement"])(t)||w(t)?t:t&&t.getEl?t.getEl():void 0},w=function(t){return t&&3===t.nodeType},x=function(t){return t&&!w(t)&&!function(t){return t&&8===t.nodeType}(t)},O=function(t,e){var n=null;return t.some((function(r,i){return e(r,i,t)?(n=r,1):0})),n},C=function(t,e){var n=t;return Object(s["isElement"])(t)&&(n=e(t).data('model')),n},S=function(t){var e,n={top:0,left:0,width:0,height:0};if(!t)return n;if(w(t)){var r=document.createRange();r.selectNode(t),e=r.getBoundingClientRect(),r.detach()}return e||(t.getBoundingClientRect?t.getBoundingClientRect():n)},k=function(t){return t.touches&&t.touches[0]?t.touches[0]:t},j=function(t){return t.which||t.keyCode},T=function(t){return String.fromCharCode(j(t))},P=function(t){return 27===j(t)},E=function(t){return 13===j(t)},M=function(t){return null!==t&&!Array.isArray(t)&&'object'===i()(t)},D=function(t){return Object.keys(t).length<=0},A=function(t){return t&&t.charAt(0).toUpperCase()+t.substring(1)},_=function(t){return t&&t.toHTML},L=function(t){return t&&t.toCSS},N=function(t){return t.__gjsv},I=function(t,e){t.__gjsv=e},F=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,e='',n='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',r=n.length,i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=this.target,r=this.get('name');if(!Object(d["isUndefined"])(t)){var i=t;if('false'===t?i=!1:'true'===t&&(i=!0),this.get('changeProp'))n.set(r,i,e);else{var o=w({},n.get('attributes'));o[r]=i,n.set('attributes',o,e)}}},setValueFromInput:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={value:t};this.set(r,w(w({},n),{},{avoidStore:1})),e&&(this.set('value','',n),this.set(r,n))},getInitValue:function(){var t,e=this.target,n=this.get('name');if(e){var r=e.get('attributes');t=this.get('changeProp')?e.get(n):r[n]}return t||this.get('value')||this.get('default')}}),C=g.a.Collection.extend({model:O,initialize:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.em=e.em||'',this.listenTo(this,'add',this.handleAdd),this.listenTo(this,'reset',this.handleReset)},handleReset:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.previousModels,r=void 0===n?[]:n;r.forEach((function(t){return t.trigger('remove')}))},handleAdd:function(t){var e=this.target;e&&(t.target=e)},setTarget:function(t){this.target=t},add:function(t,e){var n=this.em;if(Object(d["isString"])(t)||Object(d["isArray"])(t)){var r=n&&n.get&&n.get('TraitManager'),i=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{build:function(e){var n=[];'string'==typeof e&&(e=[e]);for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Object(d["bindAll"])(this,'__upSymbProps','__upSymbCls','__upSymbComps');var r=n.em,i=this.parent(),o=i&&i.attributes;if(o&&o.propagate){var a={},s=o.propagate;s.forEach((function(t){return a[t]=i.get(t)})),a.propagate=s,a=k(k({},a),e),this.set(a)}var c=this.get('propagate');c&&this.set('propagate',Object(d["isArray"])(c)?c:[c]),n&&n.config&&n.config.voidElements.indexOf(this.get('tagName'))>=0&&this.set('void',!0),n.em=r,this.opt=n,this.em=r,this.frame=n.frame,this.config=n.config||{},this.set('attributes',k(k({},Object(d["result"])(this,'defaults').attributes||{}),this.get('attributes')||{})),this.ccid=L.createId(this,n),this.initClasses(),this.initTraits(),this.initComponents(),this.initToolbar(),this.initScriptProps(),this.listenTo(this,'change:script',this.scriptUpdated),this.listenTo(this,'change:tagName',this.tagUpdated),this.listenTo(this,'change:attributes',this.attrUpdated),this.listenTo(this,'change:attributes:id',this._idUpdated),this.on('change:toolbar',this.__emitUpdateTlb),this.on('change',this.__onChange),this.on(_,this.__propToParent),this.set('status',''),this.views=[],['classes','traits','components'].forEach((function(e){var n="add remove ".concat('components'!==e?'change':'');t.listenTo(t.get(e),n.trim(),(function(){for(var n=arguments.length,r=new Array(n),i=0;i0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=e&&e.get('UndoManager'),r=this.components();n&&!this.__hasUm&&(n.add(r),this.__hasUm=1),t.recursive&&r.map((function(e){return e.__postAdd(t)}))},__postRemove:function(){var t=this.em,e=t&&t.get('UndoManager');e&&(e.remove(this.components()),delete this.__hasUm)},__onChange:function(t,e){var n=this.changedAttributes();['status','open','toolbar','traits'].forEach((function(t){return delete n[t]})),Object(h["o"])(n)||(this.__changesUp(e),this.__propSelfToParent({component:this,changed:n,options:e}))},__changesUp:function(t){var e=this.em;[this.frame,e].forEach((function(e){return e&&e.changesUp(t)}))},__propSelfToParent:function(t){this.trigger(A,t),this.__propToParent(t)},__propToParent:function(t){var e=this.parent();e&&e.trigger(_,t)},__emitUpdateTlb:function(){this.emitUpdate('toolbar')},is:function(t){return!(this.get('type')!=t)},props:function(){return this.attributes},index:function(){var t=this.collection;return t&&t.indexOf(this)},setDragMode:function(t){return this.set('dmode',t)},find:function(t){var e=[],n=this.view.$el.find(t);return n.each((function(t){var r=n.eq(t).data('model');r&&e.push(r)})),e},findType:function(t){var e=[];return function n(r){return r.forEach((function(r){r.is(t)&&e.push(r),n(r.components())}))}(this.components()),e},closest:function(t){var e=this.view.$el.closest(t);return e.length&&e.data('model')},closestType:function(t){for(var e=this.parent();e&&!e.is(t);)e=e.parent();return e},contains:function(t){var e=!1;if(!t)return e;var n=function n(r){!e&&r.forEach((function(r){r===t&&(e=!0),!e&&n(r.components())}))};return n(this.components()),e},tagUpdated:function(){this.trigger('rerender')},replaceWith:function(t){var e=this.collection,n=e.indexOf(this);return e.remove(this),e.add(t,{at:n})},attrUpdated:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this.get('attributes'),o=i.class;o&&this.setClass(o),delete i.class;var a=i.style;a&&this.setStyle(a),delete i.style;var s=k({},this.previous('attributes')),c=Object(h["A"])(s,this.get('attributes'));Object(d["keys"])(c).forEach((function(t){return n.trigger("change:attributes:".concat(t),n,c[t],r)}))},setAttributes:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.set('attributes',k({},t),e),this},addAttributes:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.setAttributes(k(k({},this.getAttributes({noClass:1})),t),e)},removeAttributes:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Array.isArray(t)?t:[t],r=this.getAttributes();return n.map((function(t){return delete r[t]})),this.setAttributes(r,e)},getStyle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em;if(e&&e.getConfig('avoidInlineStyle')&&!t.inline){var n=e.get('state'),r=e.get('CssComposer'),i=r.getIdRule(this.getId(),k({state:n},t));if(this.rule=i,i)return i.getStyle()}return f["a"].getStyle.call(this)},setStyle:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em,i=this.opt;if(r&&r.getConfig('avoidInlineStyle')&&!i.temporary&&!n.inline){var o=this.get('style')||{};e=k(k({},e=Object(d["isString"])(e)?this.parseStyle(e):e),o);var a=r.get('state'),s=r.get('CssComposer'),c=this.getStyle(n);this.rule=s.setIdRule(this.getId(),e,k(k({},n),{},{state:a}));var l=Object(h["A"])(c,e);this.set('style','',{silent:1}),Object(d["keys"])(l).forEach((function(e){return t.trigger("change:style:".concat(e))}))}else e=f["a"].setStyle.apply(this,arguments);return e},getAttributes:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.em,r=[],i=k({},this.get('attributes')),o=n&&n.get('SelectorManager'),a=this.getId();if(e.noClass||(this.get('classes').forEach((function(t){return r.push(Object(d["isString"])(t)?t:t.get('name'))})),r.length&&(i.class=r.join(' '))),!e.noStyle){var s=this.get('style');Object(h["r"])(s)&&!Object(h["o"])(s)&&(i.style=this.styleToString({inline:1}))}Object(d["has"])(i,'id')||(T(n)?t=o&&o.get(a,o.Selector.TYPE_ID):Object(d["isEmpty"])(this.getStyle())||(t=1),(this.__getSymbol()||this.__getSymbols())&&(t=1),t&&(i.id=a));return i},addClass:function(t){var e=this.em.get('SelectorManager').addClass(t);return this.get('classes').add(e)},setClass:function(t){return this.get('classes').reset(),this.addClass(t)},removeClass:function(t){var e=[];t=Object(d["isArray"])(t)?t:[t];var n=this.get('classes'),r=m["a"].TYPE_CLASS;return t.forEach((function(t){t.split(' ').forEach((function(t){var i=n.where({name:t,type:r})[0];i&&e.push(n.remove(i))}))})),e},getClasses:function(){var t=this.getAttributes().class;return t?t.split(' '):[]},__logSymbol:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.__getSymbol(),i=this.__getSymbols();(r||i)&&this.em.log(t,{model:this,toUp:e,context:'symbols',opts:n})},__initSymb:function(){this.__symbReady||(this.on('change',this.__upSymbProps),this.__symbReady=1)},__isSymbol:function(){return Object(d["isArray"])(this.get(E))},__isSymbolOrInst:function(){return!(!this.__isSymbol()&&!this.get(M))},__isSymbolTop:function(){var t=this.parent();return this.__isSymbolOrInst()&&(!t||t&&!t.__isSymbol()&&!t.__getSymbol())},__isSymbolNested:function(){if(!this.__isSymbolOrInst()||this.__isSymbolTop())return!1;var t=(this.__isSymbol()?this:this.__getSymbol()).__getSymbTop(),e=this.__getSymbTop();return(e.__isSymbol()?e:e.__getSymbol())!==t},__getAllById:function(){var t=this.em;return t?t.get('DomComponents').allById():{}},__getSymbol:function(){var t=this.get(M);if(t&&Object(d["isString"])(t)){var e=this.__getAllById()[t];e?(t=e,this.set(M,e)):t=0}return t},__getSymbols:function(){var t=this,e=this.get(E);return e&&Object(d["isArray"])(e)&&(e.forEach((function(n,r){n&&Object(d["isString"])(n)&&(e[r]=t.__getAllById()[n])})),e=e.filter((function(t){return t&&!Object(d["isString"])(t)}))),e},__isSymbOvrd:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:'',e=this.get(D),n=t.split(':'),r=c()(n,1),i=r[0],o=t!==i?[t,i]:[t];return!0===e||Object(d["isArray"])(e)&&o.some((function(t){return e.indexOf(t)>=0}))},__getSymbToUp:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=[],r=this.em,i=e.changed,o=r&&r.get('symbols');if(e.fromInstance||e.noPropagate||e.fromUndo||!o||i&&this.__isSymbOvrd(i))return n;var s=this.__getSymbols()||[],c=this.__getSymbol(),l=c?[c].concat(a()(c.__getSymbols()||[])):s;return n=l.filter((function(e){return e!==t})).filter((function(t){return!(i&&t.__isSymbOvrd(i))}))},__getSymbTop:function(t){for(var e=this,n=this.parent(t);n&&(n.__isSymbol()||n.__getSymbol());)e=n,n=n.parent(t);return e},__upSymbProps:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.changedAttributes(),i=r.attributes||{};if(delete r.status,delete r.open,delete r[E],delete r[M],delete r[D],delete r.attributes,delete i.id,Object(h["o"])(i)||(r.attributes=i),!Object(h["o"])(r)){var o=this.__getSymbToUp(n);Object(d["keys"])(r).map((function(t){e.__isSymbOvrd(t)&&delete r[t]})),this.__logSymbol('props',o,{opts:n,changed:r}),o.forEach((function(t){var i=k({},r);Object(d["keys"])(i).map((function(e){t.__isSymbOvrd(e)&&delete i[e]})),t.set(i,k({fromInstance:e},n))}))}},__upSymbCls:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=this.__getSymbToUp(r);this.__logSymbol('classes',i,{opts:r}),i.forEach((function(t){t.set('classes',n.get('classes'),{fromInstance:n})})),this.__changesUp(r)},__upSymbComps:function(t,e,n){var r=this,i=n||e||{},o={fromInstance:i.fromInstance,fromUndo:i.fromUndo},s=t.opt.temporary;if(n)if(n.add){var c=[],l=!!this.__getSymbols(),u=this.__getSymbToUp(k(k({},o),{},{changed:'components:add'}));if(u.length){var d=t.__getSymbol();c=(d?d.__getSymbols():t.__getSymbols())||[],(c=a()(c)).push(d||t)}!s&&this.__logSymbol('add',u,{opts:n,addedInstances:c.map((function(t){return t.cid})),added:t.cid}),u.forEach((function(e){var i=e.__getSymbTop(),o=c.filter((function(t){var e=t.__getSymbTop({prev:1});return i&&e&&e===i}))[0]||t.clone({symbol:1,symbolInv:l});e.append(o,k({fromInstance:r},n))}))}else{var h=t.__getSymbol();if(h&&!n.temporary&&h.set(E,h.__getSymbols().filter((function(e){return e!==t}))),!t.__isSymbolTop()){var f='components:remove',p=n.index,g=t.parent(),v=k({fromInstance:t},n),m=t.__isSymbolNested(),b=function(t){var e=t.parent();e&&!e.__isSymbOvrd(f)&&t.remove(v)},y=g.__isSymbOvrd(f)?[]:t.__getSymbToUp(o);m&&(y=g.__getSymbToUp(k(k({},o),{},{changed:f})),b=function(t){var e=t.components().at(p);e&&e.remove(k({fromInstance:g},v))}),!s&&this.__logSymbol('remove',y,{opts:n,removed:t.cid,isSymbNested:m}),y.forEach(b)}}else{var w=this.__getSymbToUp(k(k({},o),{},{changed:'components:reset'}));this.__logSymbol('reset',w,{components:t.models}),w.forEach((function(n){var i=t.models.map((function(t){return t.clone({symbol:1})}));n.components().reset(i,k({fromInstance:r},e))}))}this.__changesUp(i)},initClasses:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r='change:classes',i=this.get('attributes').class||[],o=[this,r,this.initClasses],a=this.get('classes')||i,s=Object(d["isString"])(a)?a.split(' '):a;this.stopListening.apply(this,o);var c=this.normalizeClasses(s),l=new b["a"]([]);return this.set('classes',l,n),l.add(c),l.on('add remove reset',this.__upSymbCls),this.listenTo.apply(this,o),this},initComponents:function(){var t=[this,'change:components',this.initComponents];this.stopListening.apply(this,t);var e=new v["a"](null,this.opt);e.parent=this;var n=this.get('components'),r=!this.opt.avoidChildren;return this.set('components',e),r&&n&&e.add(Object(d["isFunction"])(n)?n(this):n,this.opt),e.on('add remove reset',this.__upSymbComps),this.listenTo.apply(this,t),this},initTraits:function(t){var e=this.em,n=[this,'change:traits',this.initTraits];this.stopListening.apply(this,n),this.loadTraits();var r=k({},this.get('attributes')),i=this.get('traits');return i.each((function(t){if(!t.get('changeProp')){var e=t.get('name'),n=t.getInitValue();e&&n&&(r[e]=n)}})),i.length&&this.set('attributes',r),this.listenTo.apply(this,n),t&&e&&e.trigger('component:toggled'),this},initScriptProps:function(){if(!this.opt.temporary){var t='script-props',e=["change:".concat(t),this.initScriptProps];this.off.apply(this,e);var n=this.previous(t)||[],r=this.get(t)||[],i=n.map((function(t){return"change:".concat(t)})).join(' '),o=r.map((function(t){return"change:".concat(t)})).join(' ');i&&this.off(i,this.__scriptPropsChange),o&&this.on(o,this.__scriptPropsChange),this.on.apply(this,e)}},__scriptPropsChange:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n.avoidStore||this.trigger('rerender')},append:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object(d["isArray"])(t)?t:[t],r=n.map((function(t){return Object(d["isString"])(t)||t.collection&&t.collection.remove(t,{temporary:1}),t})),i=this.components().add(r,e);return Object(d["isArray"])(i)?i:[i]},components:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.get('components');return Object(d["isUndefined"])(t)?n:(n.reset(null,e),t&&this.append(t,e))},empty:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.components().reset(null,t),this},parent:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.collection||t.prev&&this.prevColl;return e&&e.parent},scriptUpdated:function(){this.set('scriptUpdated',1)},initToolbar:function(){var t=this.em,e=t&&t.getConfig('stylePrefix')||'';if(!this.get('toolbar')){var n=[];this.collection&&n.push({attributes:{class:'fa fa-arrow-up'},command:function(t){return t.runCommand('core:component-exit',{force:1})}}),this.get('draggable')&&n.push({attributes:{class:"fa fa-arrows ".concat(e,"no-touch-actions"),draggable:!0},command:'tlb-move'}),this.get('copyable')&&n.push({attributes:{class:'fa fa-clone'},command:'tlb-clone'}),this.get('removable')&&n.push({attributes:{class:'fa fa-trash-o'},command:'tlb-delete'}),this.set('toolbar',n)}},loadTraits:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t=t||this.get('traits'),!((t=Object(d["isFunction"])(t)?t(this):t)instanceof C)){var n=new C([],this.opt);n.setTarget(this),t.length&&(t.forEach((function(t){return t.attributes&&delete t.attributes.value})),n.add(t)),this.set('traits',n,e)}return this},getTrait:function(t){return this.get('traits').filter((function(e){return e.get('id')===t||e.get('name')===t}))[0]},updateTrait:function(t,e){var n=this.em,r=this.getTrait(t);return r&&r.set(e),n&&n.trigger('component:toggled'),this},getTraitIndex:function(t){var e=this.getTrait(t);return e?this.get('traits').indexOf(e):-1},removeTrait:function(t){var e=this,n=this.em,r=(Object(d["isArray"])(t)?t:[t]).map((function(t){return e.getTrait(t)})),i=this.get('traits').remove(r);return n&&n.trigger('component:toggled'),i},addTrait:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.em,r=this.get('traits').add(t,e);return n&&n.trigger('component:toggled'),r},normalizeClasses:function(t){var e=[],n=this.em,r=n&&n.get('SelectorManager');if(r)return t.models?a()(t.models):(t.forEach((function(t){return e.push(r.add(t))})),e)},clone:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=k({},this.attributes),r=k({},this.opt),i=this.getId(),o=e&&e.get('CssComposer');n.attributes=k({},n.attributes),delete n.attributes.id,n.components=[],n.classes=[],n.traits=[],this.__isSymbolTop()&&(t.symbol=1),this.get('components').each((function(e,r){n.components[r]=e.clone(k(k({},t),{},{_inner:1}))})),this.get('traits').each((function(t,e){n.traits[e]=t.clone()})),this.get('classes').each((function(t,e){n.classes[e]=t.get('name')})),n.status='',r.collection=null;var s=new this.constructor(n,r),c="#".concat(s.getId()),l=o?o.getRules("#".concat(i)):[];l.forEach((function(t){var e=t.clone();e.set('selectors',[c]),o.getAll().add(e)})),s.set(E,0);var u=this.__getSymbol(),d=this.__getSymbols();t.symbol||!u&&!d?u?(u.set(E,[].concat(a()(u.__getSymbols()),[s])),s.__initSymb()):t.symbol&&(this.__isSymbol()?(this.set(E,[].concat(a()(d),[s])),s.set(M,this),s.__initSymb()):t.symbolInv?(this.set(E,[s]),s.set(M,this),[this,s].map((function(t){return t.__initSymb()}))):(s.set(E,[this]),[this,s].map((function(t){return t.__initSymb()})),this.set(M,s))):(s.set(M,0),s.set(E,0));var h='component:clone';return e&&e.trigger(h,s),this.trigger(h,s),s},getName:function(){var t=this.em,e=this.attributes,n=e.type,r=e.tagName,i=this.get('name'),o='div'==r,a=n||(o?'box':r),s=!n&&r&&!o&&r,c='domComponents.names.',l=i&&t&&t.t("".concat(c).concat(i)),u=s&&t&&t.t("".concat(c).concat(s)),d=t&&(t.t("".concat(c).concat(n))||t.t("".concat(c).concat(r)));return this.get('custom-name')||l||i||u||Object(h["c"])(s)||d||Object(h["c"])(a)},getIcon:function(){var t=this.get('icon');return t?t+' ':''},toHTML:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this,n=[],r=t.tag,i=r||e.get('tagName'),o=e.get('void'),a=t.attributes,s=this.getAttrToHTML();for(var c in delete t.tag,a&&(Object(d["isFunction"])(a)?s=a(e,s)||{}:Object(h["r"])(a)&&(s=a)),s){var l=s[c],u=Object(d["isString"])(l)?l.replace(/"/g,'"'):l;Object(d["isUndefined"])(u)||(Object(d["isBoolean"])(u)?u&&n.push(c):n.push("".concat(c,"=\"").concat(u,"\"")))}var f=e.get('components'),p=f.length?'':e.get('content'),g=n.length?" ".concat(n.join(' ')):'',v="<".concat(i).concat(g).concat(o?'/':'',">").concat(p);return f.forEach((function(e){return v+=e.toHTML(t)})),!o&&(v+="")),v},getAttrToHTML:function(){var t=this.getAttributes();return delete t.style,t},toJSON:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=g.a.Model.prototype.toJSON.call(this,t);if(e.attributes=this.getAttributes(),delete e.attributes.class,delete e.toolbar,delete e.traits,delete e.status,delete e.open,!t.fromUndo){var n=e[M],r=e[E];r&&Object(d["isArray"])(r)&&(e[E]=r.filter((function(t){return t})).map((function(t){return t.getId?t.getId():t}))),n&&!Object(d["isString"])(n)&&(e[M]=n.getId())}return this.em.getConfig('avoidDefaults')&&this.getChangedProps(e),e},getChangedProps:function(t){var e=t||g.a.Model.prototype.toJSON.apply(this),n=Object(d["result"])(this,'defaults');return Object(d["forEach"])(n,(function(t,n){-1===['type'].indexOf(n)&&e[n]===t&&delete e[n]})),Object(d["isEmpty"])(e.type)&&delete e.type,Object(d["forEach"])(['attributes','style'],(function(t){Object(d["isEmpty"])(n[t])&&Object(d["isEmpty"])(e[t])&&delete e[t]})),Object(d["forEach"])(['classes','components'],(function(t){(!e[t]||Object(d["isEmpty"])(n[t])&&!e[t].length)&&delete e[t]})),e},getId:function(){return(this.get('attributes')||{}).id||this.ccid||this.cid},setId:function(t,e){var n=k({},this.get('attributes'));return n.id=t,this.set('attributes',n,e),this},getEl:function(t){var e=this.getView(t);return e&&e.el},getView:function(t){var e=this.view,n=this.views;return t&&(e=n.filter((function(e){return e._getFrame()===t.view}))[0]),e},getCurrentView:function(){var t=(this.em.get('currentFrame')||{}).model;return this.getView(t)},__getScriptProps:function(){var t=this.props();return(this.get('script-props')||[]).reduce((function(e,n){return e[n]=t[n],e}),{})},getScriptString:function(t){var e=this,n=t||this.get('script');if(!n)return n;if(this.get('script-props'))n=n.toString().trim();else{if('function'==typeof n){var r=n.toString().trim();n=(r=r.replace(/^function[\s\w]*\(\)\s?\{/,'').replace(/\}$/,'')).trim()}var o=this.em.getConfig(),a=j(o.tagVarStart||'{[ '),s=j(o.tagVarEnd||' ]}'),c=new RegExp("".concat(a,"([\\w\\d-]*)").concat(s),'g');n=n.replace(c,(function(t,n){e.scriptUpdated();var r=e.attributes[n]||'';return Object(d["isArray"])(r)||'object'==i()(r)?JSON.stringify(r):r}))}return n},emitUpdate:function(t){for(var e=this.em,n=A+(t?":".concat(t):''),r=t&&this.get(t),i=arguments.length,o=new Array(i>1?i-1:0),a=1;a=0&&this.__propSelfToParent({component:this,changed:u()({},t,r),options:o[2]||o[1]||{}})},onAll:function(t){return Object(d["isFunction"])(t)&&(t(this),this.components().forEach((function(e){return e.onAll(t)}))),this},remove:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.em,r=this.collection,i=function(){r&&r.remove(t,e),e.root&&t.components('')},o=k({},e);return[this,n].map((function(e){return e.trigger('component:remove:before',t,i,o)})),!o.abort&&i(),this},move:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.remove({temporary:1}),t&&t.append(this,e),this},resetId:function(){var t=this.em,e=this.getId();if(e){var n=L.createId(this);this.setId(n);var r=t&&t.get('CssComposer').getIdRule(e),i=r&&r.get('selectors').at(0);return i&&i.set('name',n),this}},_getStyleRule:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.id,n=this.em,r=e||this.getId();return n&&n.get('CssComposer').getIdRule(r)},_getStyleSelector:function(t){var e=this._getStyleRule(t);return e&&e.get('selectors').at(0)},_idUpdated:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!n.idUpdate){var r=this.ccid,i=this.get('attributes')||{},o=i.id,a=(this.previous('attributes')||{}).id||r,s=L.getList(this);if(s[o]||!o&&a)return this.setId(a,{idUpdate:1});delete s[a],s[o]=this,this.ccid=o;var c=this._getStyleSelector({id:a});c&&c.set({name:o,label:o})}}},{isComponent:function(t){return{tagName:t.tagName?t.tagName.toLowerCase():''}},ensureInList:function(t){var e=L.getList(t),n=t.getId(),r=e[n];if(r){if(r!==t){var i=L.getIncrementId(n,e);t.setId(i),e[i]=t}}else e[n]=t;t.components().forEach((function(t){return L.ensureInList(t)}))},createId:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=L.getList(t),i=n.idMap,o=void 0===i?{}:i,a=t.get('attributes'),s=a.id;return s?(e=L.getIncrementId(s,r,n),t.setId(e),s!==e&&(o[s]=e)):e=L.getNewId(r),r[e]=t,e},getNewId:function(t){for(var e=Object.keys(t).length.toString().length+2,n=(Math.random()+1.1).toString(36).slice(-e),r="i".concat(n);t[r];)r=L.getNewId(t);return r},getIncrementId:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.keepIds,i=void 0===r?[]:r,o=1,a=t;if(i.indexOf(t)<0)for(;e[a];)o++,a="".concat(t,"-").concat(o);return a},getList:function(t){var e=t.opt,n=void 0===e?{}:e,r=n.domc,i=n.em,o=r||i&&i.get('DomComponents');return o?o.componentsById:{}},checkId:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=Object(d["isArray"])(t)?t:[t],o=r.keepIds,a=void 0===o?[]:o;i.forEach((function(t){var i=t.attributes,o=void 0===i?{}:i,s=t.components,c=o.id;if(c&&n[c]&&a.indexOf(c)<0){var l=L.getIncrementId(c,n);o.id=l,Object(d["isArray"])(e)&&e.forEach((function(t){var e=t.selectors;e.forEach((function(t,n){t==="#".concat(c)&&(e[n]="#".concat(l))}))}))}s&&L.checkId(s,e,n,r)}))}});e["a"]=L},function(t,e,n){"use strict";n.r(e);var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(0),c=n(26),l=n(39),u=n(16),d=n(9),h=n(3);function f(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function p(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=this.model,n=t.config||{},r=n.em,i=e.opt||{},o=this.$el,a=this.el;n.draggableComponents;this.opts=t,this.modelOpt=i,this.config=n,this.em=r||'',this.pfx=n.stylePrefix||'',this.ppfx=n.pStylePrefix||'',this.attr=e.get('attributes'),this.classe=this.attr.class||[],this.listenTo(e,'change:style',this.updateStyle),this.listenTo(e,'change:attributes change:_innertext',this.renderAttributes),this.listenTo(e,'change:highlightable',this.updateHighlight),this.listenTo(e,'change:status',this.updateStatus),this.listenTo(e,'change:script rerender',this.reset),this.listenTo(e,'change:content',this.updateContent),this.listenTo(e,'change',this.handleChange),this.listenTo(e,'active',this.onActive),this.listenTo(e,'disable',this.onDisable),o.data('model',e),Object(h["z"])(a,this),e.view=this,this._getFrame()&&e.views.push(this),this.initClasses(),this.initComponents({avoidRender:1}),this.events=p(p({},this.events),this.__isDraggable()&&{dragstart:'handleDragStart'}),this.delegateEvents(),!i.temporary&&this.init(this._clbObj())},__isDraggable:function(){var t=this.model,e=this.config,n=t.attributes,r=n._innertext,i=n.draggable;return e.draggableComponents&&i&&!r},_clbObj:function(){var t=this.em,e=this.model,n=this.el;return{editor:t&&t.getEditor(),model:e,el:n}},init:function(){},removed:function(){},onActive:function(){},onDisable:function(){},remove:function(){var t=this;a.a.View.prototype.remove.apply(t,arguments);var e=t.model,n=t._getFrame()||{},r=n.model;e.components().forEach((function(t){var e=t.getView(r);e&&e.remove()}));var i=t.childrenView;i&&i.remove();var o=e.views;return o.splice(o.indexOf(t),1),t.removed(t._clbObj()),t.$el.data({model:'',collection:'',view:''}),delete t.model,delete t.$el,delete t.el.__gjsv,delete t.childrenView,delete t.scriptContainer,delete t.opts,t},handleDragStart:function(t){t.preventDefault(),t.stopPropagation(),this.em.get('Commands').run('tlb-move',{target:this.model,event:t})},initClasses:function(){var t=this.model,e='change:classes',n=t.get('classes');n instanceof u["a"]&&(this.stopListening(t,e,this.initClasses),this.listenTo(t,e,this.initClasses),this.listenTo(n,'add remove change',this.updateClasses),n.length&&this.importClasses())},initComponents:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.model,n=this.$el,r=this.childrenView,i='change:components',o=e.get('components'),a=[e,i,this.initComponents];o instanceof c["a"]&&(n.data('collection',o),r&&r.remove(),this.stopListening.apply(this,a),!t.avoidRender&&this.renderChildren(),this.listenTo.apply(this,a))},handleChange:function(){var t=this.model,e=Object(s["keys"])(t.changed);if(1!==e.length||'status'!==e[0])for(var n in t.emitUpdate(),t.changed)t.emitUpdate(n)},importClasses:function(){var t=this.config.em.get('SelectorManager');t&&this.model.get('classes').each((function(e){t.add(e.get('name'))}))},updateStatus:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=e?e.get('Canvas').getConfig():{},r=n.extHl,i=this.el,o=this.model.get('status'),a=this.ppfx,s="".concat(a,"selected"),c="".concat(s,"-parent"),l="".concat(a,"freezed"),u="".concat(a,"hovered"),d=[s,c,l,u],h=r&&!t.noExtHl?'':s;this.$el.removeClass(d.join(' '));var f=i.getAttribute('class')||'',p='';switch(o){case'selected':p="".concat(f," ").concat(h);break;case'selected-parent':p="".concat(f," ").concat(c);break;case'freezed':p="".concat(f," ").concat(l);break;case'freezed-selected':p="".concat(f," ").concat(l," ").concat(h);break;case'hovered':p=t.avoidHover?'':"".concat(f," ").concat(u)}(p=p.trim())&&i.setAttribute('class',p)},updateHighlight:function(){var t=this.model.get('highlightable');this.setAttribute('data-highlightable',t?1:'')},updateStyle:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.model,i=this.em,o=this.el;if(i&&i.getConfig('avoidInlineStyle')&&!n.inline){var a=r.getStyle(),c=Object(s["isEmpty"])(a);!c&&r.setStyle(a),r.get('_innertext')&&c?o.removeAttribute('id'):o.id=r.getId()}else this.setAttribute('style',r.styleToString(n))},updateClasses:function(){var t=this.model.get('classes').pluck('name').join(' ');this.setAttribute('class',t),this.updateStatus(),this.onAttrUpdate()},setAttribute:function(t,e){var n=this.$el;e?n.attr(t,e):n.removeAttr(t)},getClasses:function(){return this.model.getClasses().join(' ')},updateAttributes:function(){var t=[],e=this.model,n=this.$el,r=this.el,i=(this.config,e.attributes),o=i.highlightable,a=i.textable,c=p(p(p({'data-gjs-type':i.type||'default'},this.__isDraggable()?{draggable:!0}:{}),o?{'data-highlightable':1}:{}),a?{contenteditable:'false','data-gjs-textable':'true'}:{});Object(s["each"])(r.attributes,(function(e){return t.push(e.nodeName)})),t.forEach((function(t){return n.removeAttr(t)}));var l=p(p({},c),e.getAttributes());Object(s["keys"])(l).forEach((function(t){return!1===l[t]&&delete l[t]})),n.attr(l),this.updateStyle()},updateContent:function(){var t=this.model.get('content'),e=this.model.components().length;this.getChildrenContainer().innerHTML=e?'':t},prevDef:function(t){t.preventDefault()},updateScript:function(){var t=this.model,e=this.em;t.get('script')&&e&&e.get('Canvas').getCanvasView().updateScript(this)},getChildrenContainer:function(){var t=this.el;return'function'==typeof this.getChildrenSelector?t=this.el.querySelector(this.getChildrenSelector()):this.getTemplate,t},getOffsetRect:function(){var t={},e=this.el,n=0,r=0;return function i(o){var a=o.offsetParent;a?(n+=a.offsetTop,r+=a.offsetLeft,i(a)):(t.top=e.offsetTop+n,t.left=e.offsetLeft+r,t.bottom=t.top+e.offsetHeight,t.right=t.left+e.offsetWidth)}(e),t},isInViewport:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.rect,n=this.el,r=n.ownerDocument,i=r.body,o=r.defaultView.frameElement,a=e||this.getOffsetRect(),s=a.top,c=a.left,l=this._getFrame().getOffsetRect();return s>=l.scrollTop&&c>=l.scrollLeft&&s<=l.scrollBottom&&c<=o.offsetWidth+i.scrollLeft},scrollIntoView:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getOffsetRect(),n=this.isInViewport({rect:e});if(!n||t.force){var r=this.el;'smooth'!==t.behavior?r.ownerDocument.defaultView.scrollTo(0,e.top):r.scrollIntoView(p({behavior:'smooth',block:'nearest'},t))}},reset:function(){var t=this.el;this.el='',this._ensureElement(),this._setData(),Object(d["l"])(t,this.el),this.render()},_setData:function(){var t=this.model,e=t.components();this.$el.data({model:t,collection:e,view:this})},_getFrame:function(){return this.config.frameView},renderChildren:function(){this.updateContent();var t=this.getChildrenContainer(),e=this.childrenView||new l["a"]({collection:this.model.get('components'),config:this.config,componentTypes:this.opts.componentTypes});e.render(t),this.childrenView=e;for(var n=Array.prototype.slice.call(e.el.childNodes),r=0,i=n.length;r1&&void 0!==arguments[1]?arguments[1]:{};return t&&t.setAttribute&&Object(r["each"])(e,(function(e,n){return t.setAttribute(n,e)}))},d=function(t){return t&&!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},h=function(t,e){t.parentNode.replaceChild(e,t)},f=function(t,e,n){var i=t.childNodes,o=i.length,a=Object(r["isUndefined"])(n)?o:n;Object(r["isString"])(e)&&(t.insertAdjacentHTML('beforeEnd',e),e=t.lastChild,t.removeChild(e)),a>=o?t.appendChild(e):t.insertBefore(e,i[a])},p=function(t,e){return f(t,e)},g=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'',n=arguments.length>2?arguments[2]:void 0,i=document.createElement(t);return e&&Object(r["each"])(e,(function(t,e){return i.setAttribute(e,t)})),n&&(Object(r["isString"])(n)?i.innerHTML=n:i.appendChild(n)),i},v=function(t,e){var n;try{n=new window[e](t.type,t)}catch(t){(n=document.createEvent(e)).initEvent(t.type,!0,!0)}return n.keyCodeVal=t.keyCode,n._parentEvent=t,['keyCode','which'].forEach((function(t){Object.defineProperty(n,t,{get:function(){return this.keyCodeVal}})})),n},m=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=Array.isArray(e)?e:[e];n.forEach((function(e){var n=e[i]||'div',a=e[o]||{},s=document.createElement(n);Object(r["each"])(a,(function(t,e){s.setAttribute(e,t)})),t.appendChild(s)}))}},function(t,e){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e){function n(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=e.config,r=void 0===n?{}:n,i=this.get('name'),o=this.get('label');i?o||this.set('label',i):this.set('name',o);var a=this.get('name'),s=r.escapeName,c=s?s(a):l.escapeName(a);this.set('name',c),this.em=r.em},isId:function(){return this.get('type')===s},isClass:function(){return this.get('type')===a},getFullName:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.escape,n=this.get('name'),r='';switch(this.get('type')){case a:r='.';break;case s:r='#'}return r+(e?e(n):n)},toJSON:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=c.prototype.toJSON.call(this,[t]),r=Object(o["result"])(this,'defaults');if(e&&e.getConfig('avoidDefaults')){Object(o["forEach"])(r,(function(t,e){n[e]===t&&delete n[e]})),n.label===n.name&&delete n.label;var i=Object(o["keys"])(n).length;1===i&&n.name&&(n=n.name),2===i&&n.name&&n.type&&(n=this.getFullName())}return n}},{TYPE_CLASS:a,TYPE_ID:s,escapeName:function(t){return"".concat(t).trim().replace(/([^a-z0-9\w-\:]+)/gi,'-')}});e["a"]=l},function(t,e,n){"use strict";n.r(e);var r=document,i=window,o=Array.prototype,a=o.filter,s=o.indexOf,c=o.map,l=o.push,u=o.reverse,d=o.slice,h=o.splice,f=/^#[\w-]*$/,p=/^\.[\w-]*$/,g=/<.+>/,v=/^\w+$/;function m(t,e){return void 0===e&&(e=r),p.test(t)?e.getElementsByClassName(t.slice(1)):v.test(t)?e.getElementsByTagName(t):e.querySelectorAll(t)}function b(t,e){if(void 0===e&&(e=r),t){if(t.__cash)return t;var n=t;if(P(t)){if(e.__cash&&(e=e[0]),!(n=f.test(t)?e.getElementById(t.slice(1)):g.test(t)?ht(t):m(t,e)))return}else if(T(t))return this.ready(t);(n.nodeType||n===i)&&(n=[n]),this.length=n.length;for(var o=0,a=this.length;o=0})):n.value=i}))},w.clone=function(){return this.map((function(t,e){return e.cloneNode(!0)}))},w.detach=function(){return this.each((function(t,e){e.parentNode&&e.parentNode.removeChild(e)}))};var lt,ut=/^\s*<(\w+)[^>]*>/,dt=/^\s*<(\w+)\s*\/?>(?:<\/\1>)?\s*$/;function ht(t){if(function(){if(!lt){var t=r.createElement('table'),e=r.createElement('tr');lt={'*':r.createElement('div'),tr:r.createElement('tbody'),td:e,th:e,thead:t,tbody:t,tfoot:t}}}(),!P(t))return[];if(dt.test(t))return[r.createElement(RegExp.$1)];var e=ut.test(t)&&RegExp.$1,n=lt[e]||lt['*'];return n.innerHTML=t,y(n.childNodes).detach().get()}function ft(t,e,n){if(void 0!==e){var r=P(e);!r&&e.length?S(e,(function(e){return ft(t,e,n)})):S(t,r?function(t){t.insertAdjacentHTML(n?'afterbegin':'beforeend',e)}:function(t,r){return function(t,e,n){n?t.insertBefore(e,t.childNodes[0]):t.appendChild(e)}(t,r?e.cloneNode(!0):e,n)})}}y.parseHTML=ht,w.empty=function(){var t=this[0];if(t)for(;t.firstChild;)t.removeChild(t.firstChild);return this},w.append=function(){var t=this;return S(arguments,(function(e){ft(t,e)})),this},w.appendTo=function(t){return ft(y(t),this),this},w.html=function(t){if(void 0===t)return this[0]&&this[0].innerHTML;var e=t.nodeType?t[0].outerHTML:t;return this.each((function(t,n){n.innerHTML=e}))},w.insertAfter=function(t){var e=this;return y(t).each((function(t,n){var r=n.parentNode;e.each((function(e,i){r.insertBefore(t?i.cloneNode(!0):i,n.nextSibling)}))})),this},w.after=function(){var t=this;return S(u.apply(arguments),(function(e){u.apply(y(e).slice()).insertAfter(t)})),this},w.insertBefore=function(t){var e=this;return y(t).each((function(t,n){var r=n.parentNode;e.each((function(e,i){r.insertBefore(t?i.cloneNode(!0):i,n)}))})),this},w.before=function(){var t=this;return S(arguments,(function(e){y(e).insertBefore(t)})),this},w.prepend=function(){var t=this;return S(arguments,(function(e){ft(t,e,!0)})),this},w.prependTo=function(t){return ft(y(t),u.apply(this.slice()),!0),this},w.remove=function(){return this.detach().off()},w.replaceWith=function(t){var e=this;return this.each((function(n,r){var i=r.parentNode;if(i){var o=n?y(t).clone():y(t);if(!o[0])return e.remove(),!1;i.replaceChild(o[0],r),y(o[0]).after(o.slice(1))}}))},w.replaceAll=function(t){return y(t).replaceWith(this),this},w.text=function(t){return void 0===t?this[0]?this[0].textContent:'':this.each((function(e,n){n.textContent=t}))};var pt=r.documentElement;w.offset=function(){var t=this[0];if(t){var e=t.getBoundingClientRect();return{top:e.top+i.pageYOffset-pt.clientTop,left:e.left+i.pageXOffset-pt.clientLeft}}},w.offsetParent=function(){return y(this[0]&&this[0].offsetParent)},w.position=function(){var t=this[0];if(t)return{left:t.offsetLeft,top:t.offsetTop}},w.children=function(t){var e=[];return this.each((function(t,n){l.apply(e,n.children)})),e=y(L(e)),t?e.filter((function(e,n){return j(n,t)})):e},w.contents=function(){var t=[];return this.each((function(e,n){l.apply(t,'IFRAME'===n.tagName?[n.contentDocument]:n.childNodes)})),y(t.length&&L(t))},w.find=function(t){for(var e=[],n=0,r=this.length;n0&&void 0!==arguments[0]?arguments[0]:{},e=t.noDisabled;return Object(r["filter"])(this.models,(function(t){return!t.get('private')})).filter((function(t){return e?t.get('active'):1}))},getFullString:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[],r=t||this;return r.forEach((function(t){return n.push(t.getFullName(e))})),n.join('').trim()}})},function(t,e,n){var r=n(8)["default"],i=n(92);t.exports=function(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?i(t):e},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e,n){1&&(t.exports=function(){'use strict';var t=navigator.userAgent,e=navigator.platform,n=/gecko\/\d/i.test(t),r=/MSIE \d/.test(t),i=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(t),o=/Edge\/(\d+)/.exec(t),a=r||i||o,s=a&&(r?document.documentMode||6:+(o||i)[1]),c=!o&&/WebKit\//.test(t),l=c&&/Qt\/\d+\.\d+/.test(t),u=!o&&/Chrome\//.test(t),d=/Opera\//.test(t),h=/Apple Computer/.test(navigator.vendor),f=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(t),p=/PhantomJS/.test(t),g=h&&(/Mobile\/\w+/.test(t)||navigator.maxTouchPoints>2),v=/Android/.test(t),m=g||v||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(t),b=g||/Mac/.test(e),y=/\bCrOS\b/.test(t),w=/win/i.test(e),x=d&&t.match(/Version\/(\d*\.\d*)/);x&&(x=Number(x[1])),x&&x>=15&&(d=!1,c=!0);var O=b&&(l||d&&(null==x||x<12.11)),C=n||a&&s>=9;function S(t){return new RegExp("(^|\\s)"+t+"(?:$|\\s)\\s*")}var k,j=function(t,e){var n=t.className,r=S(e).exec(n);if(r){var i=n.slice(r.index+r[0].length);t.className=n.slice(0,r.index)+(i?r[1]+i:"")}};function T(t){for(var e=t.childNodes.length;e>0;--e)t.removeChild(t.firstChild);return t}function P(t,e){return T(t).appendChild(e)}function E(t,e,n,r){var i=document.createElement(t);if(n&&(i.className=n),r&&(i.style.cssText=r),"string"==typeof e)i.appendChild(document.createTextNode(e));else if(e)for(var o=0;o=e)return a+(e-o);a+=s-o,a+=n-a%n,o=s+1}}g?N=function(t){t.selectionStart=0,t.selectionEnd=t.value.length}:a&&(N=function(t){try{t.select()}catch(t){}});var V=function(){this.id=null,this.f=null,this.time=0,this.handler=I(this.onTimeout,this)};function z(t,e){for(var n=0;n=e)return r+Math.min(a,e-i);if(i+=o-r,r=o+1,(i+=n-i%n)>=e)return r}}var G=[""];function K(t){for(;G.length<=t;)G.push(Y(G)+" ");return G[t]}function Y(t){return t[t.length-1]}function X(t,e){for(var n=[],r=0;r"€"&&(t.toUpperCase()!=t.toLowerCase()||Q.test(t))}function et(t,e){return e?!!(e.source.indexOf("\\w")>-1&&tt(t))||e.test(t):tt(t)}function nt(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e])return!1;return!0}var rt=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function it(t){return t.charCodeAt(0)>=768&&rt.test(t)}function ot(t,e,n){for(;(n<0?e>0:en?-1:1;;){if(e==n)return e;var i=(e+n)/2,o=r<0?Math.ceil(i):Math.floor(i);if(o==e)return t(o)?e:n;t(o)?n=o:e=o+r}}var st=null;function ct(t,e,n){var r;st=null;for(var i=0;ie)return i;o.to==e&&(o.from!=o.to&&"before"==n?r=i:st=i),o.from==e&&(o.from!=o.to&&"before"!=n?r=i:st=i)}return null!=r?r:st}var lt=function(){var t="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",e="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",n=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,r=/[stwN]/,i=/[LRr]/,o=/[Lb1n]/,a=/[1n]/;function s(t,e,n){this.level=t,this.from=e,this.to=n}return function(c,l){var u="ltr"==l?"L":"R";if(0==c.length||"ltr"==l&&!n.test(c))return!1;for(var d,h=c.length,f=[],p=0;p-1&&(r[e]=i.slice(0,o).concat(i.slice(o+1)))}}}function gt(t,e){var n=ft(t,e);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i0}function yt(t){t.prototype.on=function(t,e){ht(this,t,e)},t.prototype.off=function(t,e){pt(this,t,e)}}function wt(t){t.preventDefault?t.preventDefault():t.returnValue=!1}function xt(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0}function Ot(t){return null!=t.defaultPrevented?t.defaultPrevented:0==t.returnValue}function Ct(t){wt(t),xt(t)}function St(t){return t.target||t.srcElement}function kt(t){var e=t.which;return null==e&&(1&t.button?e=1:2&t.button?e=3:4&t.button&&(e=2)),b&&t.ctrlKey&&1==e&&(e=3),e}var jt,Tt,Pt=function(){if(a&&s<9)return!1;var t=E('div');return"draggable"in t||"dragDrop"in t}();function Et(t){if(null==jt){var e=E("span","​");P(t,E("span",[e,document.createTextNode("x")])),0!=t.firstChild.offsetHeight&&(jt=e.offsetWidth<=1&&e.offsetHeight>2&&!(a&&s<8))}var n=jt?E("span","​"):E("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}function Mt(t){if(null!=Tt)return Tt;var e=P(t,document.createTextNode("AخA")),n=k(e,0,1).getBoundingClientRect(),r=k(e,1,2).getBoundingClientRect();return T(t),!(!n||n.left==n.right)&&(Tt=r.right-n.right<3)}var Dt,At=3!="\n\nb".split(/\n/).length?function(t){for(var e=0,n=[],r=t.length;e<=r;){var i=t.indexOf("\n",e);-1==i&&(i=t.length);var o=t.slice(e,"\r"==t.charAt(i-1)?i-1:i),a=o.indexOf("\r");-1!=a?(n.push(o.slice(0,a)),e+=a+1):(n.push(o),e=i+1)}return n}:function(t){return t.split(/\r\n?|\n/)},_t=window.getSelection?function(t){try{return t.selectionStart!=t.selectionEnd}catch(t){return!1}}:function(t){var e;try{e=t.ownerDocument.selection.createRange()}catch(t){}return!(!e||e.parentElement()!=t)&&0!=e.compareEndPoints("StartToEnd",e)},Lt="oncopy"in(Dt=E("div"))||(Dt.setAttribute("oncopy","return;"),"function"==typeof Dt.oncopy),Nt=null,It={},Ft={};function Rt(t,e){arguments.length>2&&(e.dependencies=Array.prototype.slice.call(arguments,2)),It[t]=e}function Vt(t){if("string"==typeof t&&Ft.hasOwnProperty(t))t=Ft[t];else if(t&&"string"==typeof t.name&&Ft.hasOwnProperty(t.name)){var e=Ft[t.name];"string"==typeof e&&(e={name:e}),(t=Z(e,t)).name=e.name}else{if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+xml$/.test(t))return Vt("application/xml");if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+json$/.test(t))return Vt("application/json")}return"string"==typeof t?{name:t}:t||{name:"null"}}function zt(t,e){e=Vt(e);var n=It[e.name];if(!n)return zt(t,"text/plain");var r=n(t,e);if(Ht.hasOwnProperty(e.name)){var i=Ht[e.name];for(var o in i)i.hasOwnProperty(o)&&(r.hasOwnProperty(o)&&(r["_"+o]=r[o]),r[o]=i[o])}if(r.name=e.name,e.helperType&&(r.helperType=e.helperType),e.modeProps)for(var a in e.modeProps)r[a]=e.modeProps[a];return r}var Ht={};function Ut(t,e){F(e,Ht.hasOwnProperty(t)?Ht[t]:Ht[t]={})}function Bt(t,e){if(!0===e)return e;if(t.copyState)return t.copyState(e);var n={};for(var r in e){var i=e[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n}function $t(t,e){for(var n;t.innerMode&&(n=t.innerMode(e))&&n.mode!=t;)e=n.state,t=n.mode;return n||{mode:t,state:e}}function Wt(t,e,n){return!t.startState||t.startState(e,n)}var qt=function(t,e,n){this.pos=this.start=0,this.string=t,this.tabSize=e||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};function Gt(t,e){if((e-=t.first)<0||e>=t.size)throw new Error("There is no line "+(e+t.first)+" in the document.");for(var n=t;!n.lines;)for(var r=0;;++r){var i=n.children[r],o=i.chunkSize();if(e=t.first&&en?ee(n,Gt(t,n).text.length):function(t,e){var n=t.ch;return null==n||n>e?ee(t.line,e):n<0?ee(t.line,0):t}(e,Gt(t,e.line).text.length)}function le(t,e){for(var n=[],r=0;r=this.string.length},qt.prototype.sol=function(){return this.pos==this.lineStart},qt.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},qt.prototype.next=function(){if(this.pose},qt.prototype.eatSpace=function(){for(var t=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>t},qt.prototype.skipToEnd=function(){this.pos=this.string.length},qt.prototype.skipTo=function(t){var e=this.string.indexOf(t,this.pos);if(e>-1)return this.pos=e,!0},qt.prototype.backUp=function(t){this.pos-=t},qt.prototype.column=function(){return this.lastColumnPos0?null:(r&&!1!==e&&(this.pos+=r[0].length),r)}var i=function(t){return n?t.toLowerCase():t};if(i(this.string.substr(this.pos,t.length))==i(t))return!1!==e&&(this.pos+=t.length),!0},qt.prototype.current=function(){return this.string.slice(this.start,this.pos)},qt.prototype.hideFirstChars=function(t,e){this.lineStart+=t;try{return e()}finally{this.lineStart-=t}},qt.prototype.lookAhead=function(t){var e=this.lineOracle;return e&&e.lookAhead(t)},qt.prototype.baseToken=function(){var t=this.lineOracle;return t&&t.baseToken(this.pos)};var ue=function(t,e){this.state=t,this.lookAhead=e},de=function(t,e,n,r){this.state=e,this.doc=t,this.line=n,this.maxLookAhead=r||0,this.baseTokens=null,this.baseTokenPos=1};function he(t,e,n,r){var i=[t.state.modeGen],o={};xe(t,e.text,t.doc.mode,n,(function(t,e){return i.push(t,e)}),o,r);for(var a=n.state,s=function(r){n.baseTokens=i;var s=t.state.overlays[r],c=1,l=0;n.state=!0,xe(t,e.text,s.mode,n,(function(t,e){for(var n=c;lt&&i.splice(c,1,t,i[c+1],r),c+=2,l=Math.min(t,r)}if(e)if(s.opaque)i.splice(n,c-n,t,"overlay "+e),c=n+2;else for(;nt.options.maxHighlightLength&&Bt(t.doc.mode,r.state),o=he(t,e,r);i&&(r.state=i),e.stateAfter=r.save(!i),e.styles=o.styles,o.classes?e.styleClasses=o.classes:e.styleClasses&&(e.styleClasses=null),n===t.doc.highlightFrontier&&(t.doc.modeFrontier=Math.max(t.doc.modeFrontier,++t.doc.highlightFrontier))}return e.styles}function pe(t,e,n){var r=t.doc,i=t.display;if(!r.mode.startState)return new de(r,!0,e);var o=function(t,e,n){for(var r,i,o=t.doc,a=n?-1:e-(t.doc.mode.innerMode?1e3:100),s=e;s>a;--s){if(s<=o.first)return o.first;var c=Gt(o,s-1),l=c.stateAfter;if(l&&(!n||s+(l instanceof ue?l.lookAhead:0)<=o.modeFrontier))return s;var u=R(c.text,null,t.options.tabSize);(null==i||r>u)&&(i=s-1,r=u)}return i}(t,e,n),a=o>r.first&&Gt(r,o-1).stateAfter,s=a?de.fromSaved(r,a,o):new de(r,Wt(r.mode),o);return r.iter(o,e,(function(n){ge(t,n.text,s);var r=s.line;n.stateAfter=r==e-1||r%5==0||r>=i.viewFrom&&re.start)return o}throw new Error("Mode "+t.name+" failed to advance stream.")}de.prototype.lookAhead=function(t){var e=this.doc.getLine(this.line+t);return null!=e&&t>this.maxLookAhead&&(this.maxLookAhead=t),e},de.prototype.baseToken=function(t){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=t;)this.baseTokenPos+=2;var e=this.baseTokens[this.baseTokenPos+1];return{type:e&&e.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-t}},de.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},de.fromSaved=function(t,e,n){return e instanceof ue?new de(t,Bt(t.mode,e.state),n,e.lookAhead):new de(t,Bt(t.mode,e),n)},de.prototype.save=function(t){var e=!1!==t?Bt(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new ue(e,this.maxLookAhead):e};var be=function(t,e,n){this.start=t.start,this.end=t.pos,this.string=t.current(),this.type=e||null,this.state=n};function ye(t,e,n,r){var i,o,a=t.doc,s=a.mode,c=Gt(a,(e=ce(a,e)).line),l=pe(t,e.line,n),u=new qt(c.text,t.options.tabSize,l);for(r&&(o=[]);(r||u.post.options.maxHighlightLength?(s=!1,a&&ge(t,e,r,d.pos),d.pos=e.length,c=null):c=we(me(n,d,r.state,h),o),h){var f=h[0].name;f&&(c="m-"+(c?f+" "+c:f))}if(!s||u!=c){for(;l=e:o.to>e);(r||(r=[])).push(new Se(a,o.from,s?null:o.to))}}return r}(n,i,a),c=function(t,e,n){var r;if(t)for(var i=0;i=e:o.to>e)||o.from==e&&"bookmark"==a.type&&(!n||o.marker.insertLeft)){var s=null==o.from||(a.inclusiveLeft?o.from<=e:o.from0&&s)for(var y=0;ye)&&(!n||_e(n,o.marker)<0)&&(n=o.marker)}return n}function Re(t,e,n,r,i){var o=Gt(t,e),a=Ce&&o.markedSpans;if(a)for(var s=0;s=0&&d<=0||u<=0&&d>=0)&&(u<=0&&(c.marker.inclusiveRight&&i.inclusiveLeft?ne(l.to,n)>=0:ne(l.to,n)>0)||u>=0&&(c.marker.inclusiveRight&&i.inclusiveLeft?ne(l.from,r)<=0:ne(l.from,r)<0)))return!0}}}function Ve(t){for(var e;e=Ne(t);)t=e.find(-1,!0).line;return t}function ze(t,e){var n=Gt(t,e),r=Ve(n);return n==r?e:Jt(r)}function He(t,e){if(e>t.lastLine())return e;var n,r=Gt(t,e);if(!Ue(t,r))return e;for(;n=Ie(r);)r=n.find(1,!0).line;return Jt(r)+1}function Ue(t,e){var n=Ce&&e.markedSpans;if(n)for(var r=void 0,i=0;ie.maxLineLength&&(e.maxLineLength=n,e.maxLine=t)}))}var Ge=function(t,e,n){this.text=t,Me(this,e),this.height=n?n(this):1};function Ke(t){t.parent=null,Ee(t)}Ge.prototype.lineNo=function(){return Jt(this)},yt(Ge);var Ye={},Xe={};function Je(t,e){if(!t||/^\s*$/.test(t))return null;var n=e.addModeClass?Xe:Ye;return n[t]||(n[t]=t.replace(/\S+/g,"cm-$&"))}function Ze(t,e){var n=M("span",null,null,c?"padding-right: .1px":null),r={pre:M("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:t,trailingSpace:!1,splitSpaces:t.getOption("lineWrapping")};e.measure={};for(var i=0;i<=(e.rest?e.rest.length:0);i++){var o=i?e.rest[i-1]:e.line,a=void 0;r.pos=0,r.addToken=tn,Mt(t.display.measure)&&(a=ut(o,t.doc.direction))&&(r.addToken=en(r.addToken,a)),r.map=[],rn(o,r,fe(t,o,e!=t.display.externalMeasured&&Jt(o))),o.styleClasses&&(o.styleClasses.bgClass&&(r.bgClass=L(o.styleClasses.bgClass,r.bgClass||"")),o.styleClasses.textClass&&(r.textClass=L(o.styleClasses.textClass,r.textClass||""))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(Et(t.display.measure))),0==i?(e.measure.map=r.map,e.measure.cache={}):((e.measure.maps||(e.measure.maps=[])).push(r.map),(e.measure.caches||(e.measure.caches=[])).push({}))}if(c){var s=r.content.lastChild;(/\bcm-tab\b/.test(s.className)||s.querySelector&&s.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return gt(t,"renderLine",t,e.line,r.pre),r.pre.className&&(r.textClass=L(r.pre.className,r.textClass||"")),r}function Qe(t){var e=E("span","•","cm-invalidchar");return e.title="\\u"+t.charCodeAt(0).toString(16),e.setAttribute("aria-label",e.title),e}function tn(t,e,n,r,i,o,c){if(e){var l,u=t.splitSpaces?function(t,e){if(t.length>1&&!/ /.test(t))return t;for(var n=e,r="",i=0;il&&d.from<=l);h++);if(d.to>=u)return t(n,r,i,o,a,s,c);t(n,r.slice(0,d.to-l),i,o,null,s,c),o=null,r=r.slice(d.to-l),l=d.to}}}function nn(t,e,n,r){var i=!r&&n.widgetNode;i&&t.map.push(t.pos,t.pos+e,i),!r&&t.cm.display.input.needsContentAttribute&&(i||(i=t.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",n.id)),i&&(t.cm.display.input.setUneditable(i),t.content.appendChild(i)),t.pos+=e,t.trailingSpace=!1}function rn(t,e,n){var r=t.markedSpans,i=t.text,o=0;if(r)for(var a,s,c,l,u,d,h,f=i.length,p=0,g=1,v="",m=0;;){if(m==p){c=l=u=s="",h=null,d=null,m=1/0;for(var b=[],y=void 0,w=0;wp||O.collapsed&&x.to==p&&x.from==p)){if(null!=x.to&&x.to!=p&&m>x.to&&(m=x.to,l=""),O.className&&(c+=" "+O.className),O.css&&(s=(s?s+";":"")+O.css),O.startStyle&&x.from==p&&(u+=" "+O.startStyle),O.endStyle&&x.to==m&&(y||(y=[])).push(O.endStyle,x.to),O.title&&((h||(h={})).title=O.title),O.attributes)for(var C in O.attributes)(h||(h={}))[C]=O.attributes[C];O.collapsed&&(!d||_e(d.marker,O)<0)&&(d=x)}else x.from>p&&m>x.from&&(m=x.from)}if(y)for(var S=0;S=f)break;for(var j=Math.min(f,m);1;){if(v){var T=p+v.length;if(!d){var P=T>j?v.slice(0,j-p):v;e.addToken(e,P,a?a+c:c,u,p+P.length==m?l:"",s,h)}if(T>=j){v=v.slice(j-p),p=j;break}p=T,u=""}v=i.slice(o,o=n[g++]),a=Je(n[g++],e.cm.options)}}else for(var E=1;En)return{map:t.measure.maps[i],cache:t.measure.caches[i],before:!0}}function Dn(t,e,n,r){return Ln(t,_n(t,e),n,r)}function An(t,e){if(e>=t.display.viewFrom&&e=n.lineN&&e2&&o.push((c.bottom+l.top)/2-n.top)}}o.push(n.bottom-n.top)}}(t,e.view,e.rect),e.hasHeights=!0),(o=function(t,e,n,r){var i,o=Fn(e.map,n,r),c=o.node,l=o.start,u=o.end,d=o.collapse;if(3==c.nodeType){for(var h=0;h<4;h++){for(;l&&it(e.line.text.charAt(o.coverStart+l));)--l;for(;o.coverStart+u1}(t))return e;var n=screen.logicalXDPI/screen.deviceXDPI,r=screen.logicalYDPI/screen.deviceYDPI;return{left:e.left*n,right:e.right*n,top:e.top*r,bottom:e.bottom*r}}(t.display.measure,i))}else{var f;l>0&&(d=r="right"),i=t.options.lineWrapping&&(f=c.getClientRects()).length>1?f["right"==r?f.length-1:0]:c.getBoundingClientRect()}if(a&&s<9&&!l&&(!i||!i.left&&!i.right)){var p=c.parentNode.getClientRects()[0];i=p?{left:p.left,right:p.left+or(t.display),top:p.top,bottom:p.bottom}:In}for(var g=i.top-e.rect.top,v=i.bottom-e.rect.top,m=(g+v)/2,b=e.view.measure.heights,y=0;ye)&&(i=(o=c-s)-1,e>=c&&(a="right")),null!=i){if(r=t[l+2],s==c&&n==(r.insertLeft?"left":"right")&&(a=n),"left"==n&&0==i)for(;l&&t[l-2]==t[l-3]&&t[l-1].insertLeft;)r=t[(l-=3)+2],a="left";if("right"==n&&i==c-s)for(;l=0&&(n=t[i]).left==n.right;i--);return n}function Vn(t){if(t.measure&&(t.measure.cache={},t.measure.heights=null,t.rest))for(var e=0;e=r.text.length?(c=r.text.length,l="before"):c<=0&&(c=0,l="after"),!s)return a("before"==l?c-1:c,"before"==l);function u(t,e,n){return a(n?t-1:t,1==s[e].level!=n)}var d=ct(s,c,l),h=st,f=u(c,d,"before"==l);return null!=h&&(f.other=u(c,h,"before"!=l)),f}function Yn(t,e){var n=0;e=ce(t.doc,e),t.options.lineWrapping||(n=or(t.display)*e.ch);var r=Gt(t.doc,e.line),i=$e(r)+Sn(t.display);return{left:n,right:n,top:i,bottom:i+r.height}}function Xn(t,e,n,r,i){var o=ee(t,e,n);return o.xRel=i,r&&(o.outside=r),o}function Jn(t,e,n){var r=t.doc;if((n+=t.display.viewOffset)<0)return Xn(r.first,0,null,-1,-1);var i=Zt(r,n),o=r.first+r.size-1;if(i>o)return Xn(r.first+r.size-1,Gt(r,o).text.length,null,1,1);e<0&&(e=0);for(var a=Gt(r,i);;){var s=er(t,a,i,e,n),c=Fe(a,s.ch+(s.xRel>0||s.outside>0?1:0));if(!c)return s;var l=c.find(1);if(l.line==i)return l;a=Gt(r,i=l.line)}}function Zn(t,e,n,r){r-=$n(e);var i=e.text.length,o=at((function(e){return Ln(t,n,e-1).bottom<=r}),i,0);return{begin:o,end:i=at((function(e){return Ln(t,n,e).top>r}),o,i)}}function Qn(t,e,n,r){return n||(n=_n(t,e)),Zn(t,e,n,Wn(t,e,Ln(t,n,r),"line").top)}function tr(t,e,n,r){return!(t.bottom<=n)&&(t.top>n||(r?t.left:t.right)>e)}function er(t,e,n,r,i){i-=$e(e);var o=_n(t,e),a=$n(e),s=0,c=e.text.length,l=!0,u=ut(e,t.doc.direction);if(u){var d=(t.options.lineWrapping?rr:nr)(t,e,n,o,u,r,i);s=(l=1!=d.level)?d.from:d.to-1,c=l?d.to:d.from-1}var h,f,p=null,g=null,v=at((function(e){var n=Ln(t,o,e);return n.top+=a,n.bottom+=a,!!tr(n,r,i,!1)&&(n.top<=i&&n.left<=r&&(p=e,g=n),!0)}),s,c),m=!1;if(g){var b=r-g.left=w.bottom?1:0}return Xn(n,v=ot(e.text,v,1),f,m,r-h)}function nr(t,e,n,r,i,o,a){var s=at((function(s){var c=i[s],l=1!=c.level;return tr(Kn(t,ee(n,l?c.to:c.from,l?"before":"after"),"line",e,r),o,a,!0)}),0,i.length-1),c=i[s];if(s>0){var l=1!=c.level,u=Kn(t,ee(n,l?c.from:c.to,l?"after":"before"),"line",e,r);tr(u,o,a,!0)&&u.top>a&&(c=i[s-1])}return c}function rr(t,e,n,r,i,o,a){var s=Zn(t,e,r,a),c=s.begin,l=s.end;/\s/.test(e.text.charAt(l-1))&&l--;for(var u=null,d=null,h=0;h=l||f.to<=c)){var p=Ln(t,r,1!=f.level?Math.min(l,f.to)-1:Math.max(c,f.from)).right,g=pg)&&(u=f,d=g)}}return u||(u=i[i.length-1]),u.froml&&(u={from:u.from,to:l,level:u.level}),u}function ir(t){if(null!=t.cachedTextHeight)return t.cachedTextHeight;if(null==Nn){Nn=E("pre",null,"CodeMirror-line-like");for(var e=0;e<49;++e)Nn.appendChild(document.createTextNode("x")),Nn.appendChild(E("br"));Nn.appendChild(document.createTextNode("x"))}P(t.measure,Nn);var n=Nn.offsetHeight/50;return n>3&&(t.cachedTextHeight=n),T(t.measure),n||1}function or(t){if(null!=t.cachedCharWidth)return t.cachedCharWidth;var e=E("span","xxxxxxxxxx"),n=E("pre",[e],"CodeMirror-line-like");P(t.measure,n);var r=e.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(t.cachedCharWidth=i),i||10}function ar(t){for(var e=t.display,n={},r={},i=e.gutters.clientLeft,o=e.gutters.firstChild,a=0;o;o=o.nextSibling,++a){var s=t.display.gutterSpecs[a].className;n[s]=o.offsetLeft+o.clientLeft+i,r[s]=o.clientWidth}return{fixedPos:sr(e),gutterTotalWidth:e.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:e.wrapper.clientWidth}}function sr(t){return t.scroller.getBoundingClientRect().left-t.sizer.getBoundingClientRect().left}function cr(t){var e=ir(t.display),n=t.options.lineWrapping,r=n&&Math.max(5,t.display.scroller.clientWidth/or(t.display)-3);return function(i){if(Ue(t.doc,i))return 0;var o=0;if(i.widgets)for(var a=0;a0&&(c=Gt(t.doc,l.line).text).length==l.ch){var u=R(c,c.length,t.options.tabSize)-c.length;l=ee(l.line,Math.max(0,Math.round((o-jn(t.display).left)/or(t.display))-u))}return l}function dr(t,e){if(e>=t.display.viewTo)return null;if((e-=t.display.viewFrom)<0)return null;for(var n=t.display.view,r=0;re)&&(i.updateLineNumbers=e),t.curOp.viewChanged=!0,e>=i.viewTo)Ce&&ze(t.doc,e)i.viewFrom?pr(t):(i.viewFrom+=r,i.viewTo+=r);else if(e<=i.viewFrom&&n>=i.viewTo)pr(t);else if(e<=i.viewFrom){var o=gr(t,n,n+r,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=r):pr(t)}else if(n>=i.viewTo){var a=gr(t,e,e,-1);a?(i.view=i.view.slice(0,a.index),i.viewTo=a.lineN):pr(t)}else{var s=gr(t,e,e,-1),c=gr(t,n,n+r,1);s&&c?(i.view=i.view.slice(0,s.index).concat(an(t,s.lineN,c.lineN)).concat(i.view.slice(c.index)),i.viewTo+=r):pr(t)}var l=i.externalMeasured;l&&(n=i.lineN&&e=r.viewTo)){var o=r.view[dr(t,e)];if(null!=o.node){var a=o.changes||(o.changes=[]);-1==z(a,n)&&a.push(n)}}}function pr(t){t.display.viewFrom=t.display.viewTo=t.doc.first,t.display.view=[],t.display.viewOffset=0}function gr(t,e,n,r){var i,o=dr(t,e),a=t.display.view;if(!Ce||n==t.doc.first+t.doc.size)return{index:o,lineN:n};for(var s=t.display.viewFrom,c=0;c0){if(o==a.length-1)return null;i=s+a[o].size-e,o++}else i=s-e;e+=i,n+=i}for(;ze(t.doc,n)!=n;){if(o==(r<0?0:a.length-1))return null;n+=r*a[o-(r<0?1:0)].size,o+=r}return{index:o,lineN:n}}function vr(t){for(var e=t.display.view,n=0,r=0;r=t.display.viewTo||s.to().linee||e==n&&a.to==e)&&(r(Math.max(a.from,e),Math.min(a.to,n),1==a.level?"rtl":"ltr",o),i=!0)}i||r(e,n,"ltr")}(g,n||0,null==r?h:r,(function(t,e,i,d){var v="ltr"==i,m=f(t,v?"left":"right"),b=f(e-1,v?"right":"left"),y=null==n&&0==t,w=null==r&&e==h,x=0==d,O=!g||d==g.length-1;if(b.top-m.top<=3){var C=(l?w:y)&&O,S=(l?y:w)&&x?s:(v?m:b).left,k=C?c:(v?b:m).right;u(S,m.top,k-S,m.bottom)}else{var j,T,P,E;v?(j=l&&y&&x?s:m.left,T=l?c:p(t,i,"before"),P=l?s:p(e,i,"after"),E=l&&w&&O?c:b.right):(j=l?p(t,i,"before"):s,T=!l&&y&&x?c:m.right,P=!l&&w&&O?s:b.left,E=l?p(e,i,"after"):c),u(j,m.top,T-j,m.bottom),m.bottom0?e.blinker=setInterval((function(){t.hasFocus()||jr(t),e.cursorDiv.style.visibility=(n=!n)?"":"hidden"}),t.options.cursorBlinkRate):t.options.cursorBlinkRate<0&&(e.cursorDiv.style.visibility="hidden")}}function Cr(t){t.hasFocus()||(t.display.input.focus(),t.state.focused||kr(t))}function Sr(t){t.state.delayingBlurEvent=!0,setTimeout((function(){t.state.delayingBlurEvent&&(t.state.delayingBlurEvent=!1,t.state.focused&&jr(t))}),100)}function kr(t,e){t.state.delayingBlurEvent&&!t.state.draggingText&&(t.state.delayingBlurEvent=!1),"nocursor"!=t.options.readOnly&&(t.state.focused||(gt(t,"focus",t,e),t.state.focused=!0,_(t.display.wrapper,"CodeMirror-focused"),t.curOp||t.display.selForContextMenu==t.doc.sel||(t.display.input.reset(),c&&setTimeout((function(){return t.display.input.reset(!0)}),20)),t.display.input.receivedFocus()),Or(t))}function jr(t,e){t.state.delayingBlurEvent||(t.state.focused&&(gt(t,"blur",t,e),t.state.focused=!1,j(t.display.wrapper,"CodeMirror-focused")),clearInterval(t.display.blinker),setTimeout((function(){t.state.focused||(t.display.shift=!1)}),150))}function Tr(t){for(var e=t.display,n=e.lineDiv.offsetTop,r=0;r.005||h<-.005)&&(Xt(i.line,c),Pr(i.line),i.rest))for(var f=0;ft.display.sizerWidth){var p=Math.ceil(l/or(t.display));p>t.display.maxLineLength&&(t.display.maxLineLength=p,t.display.maxLine=i.line,t.display.maxLineChanged=!0)}}}}function Pr(t){if(t.widgets)for(var e=0;e=a&&(o=Zt(e,$e(Gt(e,c))-t.wrapper.clientHeight),a=c)}return{from:o,to:Math.max(a,o+1)}}function Mr(t,e){var n=t.display,r=ir(t.display);e.top<0&&(e.top=0);var i=t.curOp&&null!=t.curOp.scrollTop?t.curOp.scrollTop:n.scroller.scrollTop,o=En(t),a={};e.bottom-e.top>o&&(e.bottom=e.top+o);var s=t.doc.height+kn(n),c=e.tops-r;if(e.topi+o){var u=Math.min(e.top,(l?s:e.bottom)-o);u!=i&&(a.scrollTop=u)}var d=t.options.fixedGutter?0:n.gutters.offsetWidth,h=t.curOp&&null!=t.curOp.scrollLeft?t.curOp.scrollLeft:n.scroller.scrollLeft-d,f=Pn(t)-n.gutters.offsetWidth,p=e.right-e.left>f;return p&&(e.right=e.left+f),e.left<10?a.scrollLeft=0:e.leftf+h-3&&(a.scrollLeft=e.right+(p?0:10)-f),a}function Dr(t,e){null!=e&&(Lr(t),t.curOp.scrollTop=(null==t.curOp.scrollTop?t.doc.scrollTop:t.curOp.scrollTop)+e)}function Ar(t){Lr(t);var e=t.getCursor();t.curOp.scrollToPos={from:e,to:e,margin:t.options.cursorScrollMargin}}function _r(t,e,n){null==e&&null==n||Lr(t),null!=e&&(t.curOp.scrollLeft=e),null!=n&&(t.curOp.scrollTop=n)}function Lr(t){var e=t.curOp.scrollToPos;e&&(t.curOp.scrollToPos=null,Nr(t,Yn(t,e.from),Yn(t,e.to),e.margin))}function Nr(t,e,n,r){var i=Mr(t,{left:Math.min(e.left,n.left),top:Math.min(e.top,n.top)-r,right:Math.max(e.right,n.right),bottom:Math.max(e.bottom,n.bottom)+r});_r(t,i.scrollLeft,i.scrollTop)}function Ir(t,e){Math.abs(t.doc.scrollTop-e)<2||(n||li(t,{top:e}),Fr(t,e,!0),n&&li(t),ii(t,100))}function Fr(t,e,n){e=Math.max(0,Math.min(t.display.scroller.scrollHeight-t.display.scroller.clientHeight,e)),(t.display.scroller.scrollTop!=e||n)&&(t.doc.scrollTop=e,t.display.scrollbars.setScrollTop(e),t.display.scroller.scrollTop!=e&&(t.display.scroller.scrollTop=e))}function Rr(t,e,n,r){e=Math.max(0,Math.min(e,t.display.scroller.scrollWidth-t.display.scroller.clientWidth)),(n?e==t.doc.scrollLeft:Math.abs(t.doc.scrollLeft-e)<2)&&!r||(t.doc.scrollLeft=e,hi(t),t.display.scroller.scrollLeft!=e&&(t.display.scroller.scrollLeft=e),t.display.scrollbars.setScrollLeft(e))}function Vr(t){var e=t.display,n=e.gutters.offsetWidth,r=Math.round(t.doc.height+kn(t.display));return{clientHeight:e.scroller.clientHeight,viewHeight:e.wrapper.clientHeight,scrollWidth:e.scroller.scrollWidth,clientWidth:e.scroller.clientWidth,viewWidth:e.wrapper.clientWidth,barLeft:t.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+Tn(t)+e.barHeight,nativeBarWidth:e.nativeBarWidth,gutterWidth:n}}var zr=function(t,e,n){this.cm=n;var r=this.vert=E("div",[E("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=E("div",[E("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=i.tabIndex=-1,t(r),t(i),ht(r,"scroll",(function(){r.clientHeight&&e(r.scrollTop,"vertical")})),ht(i,"scroll",(function(){i.clientWidth&&e(i.scrollLeft,"horizontal")})),this.checkedZeroWidth=!1,a&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};zr.prototype.update=function(t){var e=t.scrollWidth>t.clientWidth+1,n=t.scrollHeight>t.clientHeight+1,r=t.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=e?r+"px":"0";var i=t.viewHeight-(e?r:0);this.vert.firstChild.style.height=Math.max(0,t.scrollHeight-t.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(e){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=t.barLeft+"px";var o=t.viewWidth-t.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,t.scrollWidth-t.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&t.clientHeight>0&&(0==r&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:e?r:0}},zr.prototype.setScrollLeft=function(t){this.horiz.scrollLeft!=t&&(this.horiz.scrollLeft=t),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},zr.prototype.setScrollTop=function(t){this.vert.scrollTop!=t&&(this.vert.scrollTop=t),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},zr.prototype.zeroWidthHack=function(){var t=b&&!f?"12px":"18px";this.horiz.style.height=this.vert.style.width=t,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new V,this.disableVert=new V},zr.prototype.enableZeroWidthBar=function(t,e,n){t.style.pointerEvents="auto",e.set(1e3,(function r(){var i=t.getBoundingClientRect();("vert"==n?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=t?t.style.pointerEvents="none":e.set(1e3,r)}))},zr.prototype.clear=function(){var t=this.horiz.parentNode;t.removeChild(this.horiz),t.removeChild(this.vert)};var Hr=function(){};function Ur(t,e){e||(e=Vr(t));var n=t.display.barWidth,r=t.display.barHeight;Br(t,e);for(var i=0;i<4&&n!=t.display.barWidth||r!=t.display.barHeight;i++)n!=t.display.barWidth&&t.options.lineWrapping&&Tr(t),Br(t,Vr(t)),n=t.display.barWidth,r=t.display.barHeight}function Br(t,e){var n=t.display,r=n.scrollbars.update(e);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&t.options.coverGutterNextToScrollbar&&t.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=e.gutterWidth+"px"):n.gutterFiller.style.display=""}Hr.prototype.update=function(){return{bottom:0,right:0}},Hr.prototype.setScrollLeft=function(){},Hr.prototype.setScrollTop=function(){},Hr.prototype.clear=function(){};var $r={native:zr,null:Hr};function Wr(t){t.display.scrollbars&&(t.display.scrollbars.clear(),t.display.scrollbars.addClass&&j(t.display.wrapper,t.display.scrollbars.addClass)),t.display.scrollbars=new $r[t.options.scrollbarStyle]((function(e){t.display.wrapper.insertBefore(e,t.display.scrollbarFiller),ht(e,"mousedown",(function(){t.state.focused&&setTimeout((function(){return t.display.input.focus()}),0)})),e.setAttribute("cm-not-content","true")}),(function(e,n){"horizontal"==n?Rr(t,e):Ir(t,e)}),t),t.display.scrollbars.addClass&&_(t.display.wrapper,t.display.scrollbars.addClass)}var qr=0;function Gr(t){var e;t.curOp={cm:t,viewChanged:!1,startHeight:t.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++qr,markArrays:null},e=t.curOp,sn?sn.ops.push(e):e.ownsGroup=sn={ops:[e],delayedCallbacks:[]}}function Kr(t){var e=t.curOp;e&&function(t,e){var n=t.ownsGroup;if(n)try{!function(t){var e=t.delayedCallbacks,n=0;do{for(;n=n.viewTo)||n.maxLineChanged&&e.options.lineWrapping,t.update=t.mustUpdate&&new ai(e,t.mustUpdate&&{top:t.scrollTop,ensure:t.scrollToPos},t.forceUpdate)}function Xr(t){t.updatedDisplay=t.mustUpdate&&si(t.cm,t.update)}function Jr(t){var e=t.cm,n=e.display;t.updatedDisplay&&Tr(e),t.barMeasure=Vr(e),n.maxLineChanged&&!e.options.lineWrapping&&(t.adjustWidthTo=Dn(e,n.maxLine,n.maxLine.text.length).left+3,e.display.sizerWidth=t.adjustWidthTo,t.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+t.adjustWidthTo+Tn(e)+e.display.barWidth),t.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+t.adjustWidthTo-Pn(e))),(t.updatedDisplay||t.selectionChanged)&&(t.preparedSelection=n.input.prepareSelection())}function Zr(t){var e=t.cm;null!=t.adjustWidthTo&&(e.display.sizer.style.minWidth=t.adjustWidthTo+"px",t.maxScrollLeft(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!p){var o=E("div","​",null,"position: absolute;\n top: "+(e.top-n.viewOffset-Sn(t.display))+"px;\n height: "+(e.bottom-e.top+Tn(t)+n.barHeight)+"px;\n left: "+e.left+"px; width: "+Math.max(2,e.right-e.left)+"px;");t.display.lineSpace.appendChild(o),o.scrollIntoView(i),t.display.lineSpace.removeChild(o)}}}(e,function(t,e,n,r){var i;null==r&&(r=0),t.options.lineWrapping||e!=n||(n="before"==e.sticky?ee(e.line,e.ch+1,"before"):e,e=e.ch?ee(e.line,"before"==e.sticky?e.ch-1:e.ch,"after"):e);for(var o=0;o<5;o++){var a=!1,s=Kn(t,e),c=n&&n!=e?Kn(t,n):s,l=Mr(t,i={left:Math.min(s.left,c.left),top:Math.min(s.top,c.top)-r,right:Math.max(s.left,c.left),bottom:Math.max(s.bottom,c.bottom)+r}),u=t.doc.scrollTop,d=t.doc.scrollLeft;if(null!=l.scrollTop&&(Ir(t,l.scrollTop),Math.abs(t.doc.scrollTop-u)>1&&(a=!0)),null!=l.scrollLeft&&(Rr(t,l.scrollLeft),Math.abs(t.doc.scrollLeft-d)>1&&(a=!0)),!a)break}return i}(e,ce(r,t.scrollToPos.from),ce(r,t.scrollToPos.to),t.scrollToPos.margin));var i=t.maybeHiddenMarkers,o=t.maybeUnhiddenMarkers;if(i)for(var a=0;a=t.display.viewTo)){var n=+new Date+t.options.workTime,r=pe(t,e.highlightFrontier),i=[];e.iter(r.line,Math.min(e.first+e.size,t.display.viewTo+500),(function(o){if(r.line>=t.display.viewFrom){var a=o.styles,s=o.text.length>t.options.maxHighlightLength?Bt(e.mode,r.state):null,c=he(t,o,r,!0);s&&(r.state=s),o.styles=c.styles;var l=o.styleClasses,u=c.classes;u?o.styleClasses=u:l&&(o.styleClasses=null);for(var d=!a||a.length!=o.styles.length||l!=u&&(!l||!u||l.bgClass!=u.bgClass||l.textClass!=u.textClass),h=0;!d&&hn)return ii(t,t.options.workDelay),!0})),e.highlightFrontier=r.line,e.modeFrontier=Math.max(e.modeFrontier,r.line),i.length&&ti(t,(function(){for(var e=0;e=n.viewFrom&&e.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==vr(t))return!1;fi(t)&&(pr(t),e.dims=ar(t));var i=r.first+r.size,o=Math.max(e.visible.from-t.options.viewportMargin,r.first),a=Math.min(i,e.visible.to+t.options.viewportMargin);n.viewFroma&&n.viewTo-a<20&&(a=Math.min(i,n.viewTo)),Ce&&(o=ze(t.doc,o),a=He(t.doc,a));var s=o!=n.viewFrom||a!=n.viewTo||n.lastWrapHeight!=e.wrapperHeight||n.lastWrapWidth!=e.wrapperWidth;!function(t,e,n){var r=t.display;0==r.view.length||e>=r.viewTo||n<=r.viewFrom?(r.view=an(t,e,n),r.viewFrom=e):(r.viewFrom>e?r.view=an(t,e,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,dr(t,n)))),r.viewTo=n}(t,o,a),n.viewOffset=$e(Gt(t.doc,n.viewFrom)),t.display.mover.style.top=n.viewOffset+"px";var l=vr(t);if(!s&&0==l&&!e.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var u=function(t){if(t.hasFocus())return null;var e=A();if(!e||!D(t.display.lineDiv,e))return null;var n={activeElt:e};if(window.getSelection){var r=window.getSelection();r.anchorNode&&r.extend&&D(t.display.lineDiv,r.anchorNode)&&(n.anchorNode=r.anchorNode,n.anchorOffset=r.anchorOffset,n.focusNode=r.focusNode,n.focusOffset=r.focusOffset)}return n}(t);return l>4&&(n.lineDiv.style.display="none"),function(t,e,n){var r=t.display,i=t.options.lineNumbers,o=r.lineDiv,a=o.firstChild;function s(e){var n=e.nextSibling;return c&&b&&t.display.currentWheelTarget==e?e.style.display="none":e.parentNode.removeChild(e),n}for(var l=r.view,u=r.viewFrom,d=0;d-1&&(f=!1),dn(t,h,u,n)),f&&(T(h.lineNumber),h.lineNumber.appendChild(document.createTextNode(te(t.options,u)))),a=h.node.nextSibling}else{var p=bn(t,h,u,n);o.insertBefore(p,a)}u+=h.size}for(;a;)a=s(a)}(t,n.updateLineNumbers,e.dims),l>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,function(t){if(t&&t.activeElt&&t.activeElt!=A()&&(t.activeElt.focus(),!/^(INPUT|TEXTAREA)$/.test(t.activeElt.nodeName)&&t.anchorNode&&D(document.body,t.anchorNode)&&D(document.body,t.focusNode))){var e=window.getSelection(),n=document.createRange();n.setEnd(t.anchorNode,t.anchorOffset),n.collapse(!1),e.removeAllRanges(),e.addRange(n),e.extend(t.focusNode,t.focusOffset)}}(u),T(n.cursorDiv),T(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,s&&(n.lastWrapHeight=e.wrapperHeight,n.lastWrapWidth=e.wrapperWidth,ii(t,400)),n.updateLineNumbers=null,!0}function ci(t,e){for(var n=e.viewport,r=!0;;r=!1){if(r&&t.options.lineWrapping&&e.oldDisplayWidth!=Pn(t))r&&(e.visible=Er(t.display,t.doc,n));else if(n&&null!=n.top&&(n={top:Math.min(t.doc.height+kn(t.display)-En(t),n.top)}),e.visible=Er(t.display,t.doc,n),e.visible.from>=t.display.viewFrom&&e.visible.to<=t.display.viewTo)break;if(!si(t,e))break;Tr(t);var i=Vr(t);mr(t),Ur(t,i),di(t,i),e.force=!1}e.signal(t,"update",t),t.display.viewFrom==t.display.reportedViewFrom&&t.display.viewTo==t.display.reportedViewTo||(e.signal(t,"viewportChange",t,t.display.viewFrom,t.display.viewTo),t.display.reportedViewFrom=t.display.viewFrom,t.display.reportedViewTo=t.display.viewTo)}function li(t,e){var n=new ai(t,e);if(si(t,n)){Tr(t),ci(t,n);var r=Vr(t);mr(t),Ur(t,r),di(t,r),n.finish()}}function ui(t){var e=t.gutters.offsetWidth;t.sizer.style.marginLeft=e+"px",ln(t,"gutterChanged",t)}function di(t,e){t.display.sizer.style.minHeight=e.docHeight+"px",t.display.heightForcer.style.top=e.docHeight+"px",t.display.gutters.style.height=e.docHeight+t.display.barHeight+Tn(t)+"px"}function hi(t){var e=t.display,n=e.view;if(e.alignWidgets||e.gutters.firstChild&&t.options.fixedGutter){for(var r=sr(e)-e.scroller.scrollLeft+t.doc.scrollLeft,i=e.gutters.offsetWidth,o=r+"px",a=0;as.clientWidth,u=s.scrollHeight>s.clientHeight;if(i&&l||o&&u){if(o&&b&&c)t:for(var h=e.target,f=a.view;h!=s;h=h.parentNode)for(var p=0;p=0&&ne(t,r.to())<=0)return n}return-1};var Si=function(t,e){this.anchor=t,this.head=e};function ki(t,e,n){var r=t&&t.options.selectionsMayTouch,i=e[n];e.sort((function(t,e){return ne(t.from(),e.from())})),n=z(e,i);for(var o=1;o0:c>=0){var l=ae(s.from(),a.from()),u=oe(s.to(),a.to()),d=s.empty()?a.from()==a.head:s.from()==s.head;o<=n&&--n,e.splice(--o,2,new Si(d?u:l,d?l:u))}}return new Ci(e,n)}function ji(t,e){return new Ci([new Si(t,e||t)],0)}function Ti(t){return t.text?ee(t.from.line+t.text.length-1,Y(t.text).length+(1==t.text.length?t.from.ch:0)):t.to}function Pi(t,e){if(ne(t,e.from)<0)return t;if(ne(t,e.to)<=0)return Ti(e);var n=t.line+e.text.length-(e.to.line-e.from.line)-1,r=t.ch;return t.line==e.to.line&&(r+=Ti(e).ch-e.to.ch),ee(n,r)}function Ei(t,e){for(var n=[],r=0;r1&&t.remove(s.line+1,p-1),t.insert(s.line+1,m)}ln(t,"change",t,e)}function Ni(t,e,n){!function t(r,i,o){if(r.linked)for(var a=0;as-(t.cm?t.cm.options.historyEventDelay:500)||"*"==e.origin.charAt(0)))&&(o=function(t,e){return e?(zi(t.done),Y(t.done)):t.done.length&&!Y(t.done).ranges?Y(t.done):t.done.length>1&&!t.done[t.done.length-2].ranges?(t.done.pop(),Y(t.done)):void 0}(i,i.lastOp==r)))a=Y(o.changes),0==ne(e.from,e.to)&&0==ne(e.from,a.to)?a.to=Ti(e):o.changes.push(Vi(t,e));else{var c=Y(i.done);for(c&&c.ranges||Bi(t.sel,i.done),o={changes:[Vi(t,e)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=e.origin,a||gt(t,"historyAdded")}function Ui(t,e,n,r){var i=t.history,o=r&&r.origin;n==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||function(t,e,n,r){var i=e.charAt(0);return"*"==i||"+"==i&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-t.history.lastSelTime<=(t.cm?t.cm.options.historyEventDelay:500)}(t,o,Y(i.done),e))?i.done[i.done.length-1]=e:Bi(e,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=n,r&&!1!==r.clearRedo&&zi(i.undone)}function Bi(t,e){var n=Y(e);n&&n.ranges&&n.equals(t)||e.push(t)}function $i(t,e,n,r){var i=e["spans_"+t.id],o=0;t.iter(Math.max(t.first,n),Math.min(t.first+t.size,r),(function(n){n.markedSpans&&((i||(i=e["spans_"+t.id]={}))[o]=n.markedSpans),++o}))}function Wi(t){if(!t)return null;for(var e,n=0;n-1&&(Y(s)[d]=l[d],delete l[d])}}}return r}function Ki(t,e,n,r){if(r){var i=t.anchor;if(n){var o=ne(e,i)<0;o!=ne(n,i)<0?(i=e,e=n):o!=ne(e,n)<0&&(e=n)}return new Si(i,e)}return new Si(n||e,e)}function Yi(t,e,n,r,i){null==i&&(i=t.cm&&(t.cm.display.shift||t.extend)),to(t,new Ci([Ki(t.sel.primary(),e,n,i)],0),r)}function Xi(t,e,n){for(var r=[],i=t.cm&&(t.cm.display.shift||t.extend),o=0;o=e.ch:s.to>e.ch))){if(i&&(gt(c,"beforeCursorEnter"),c.explicitlyCleared)){if(o.markedSpans){--a;continue}break}if(!c.atomic)continue;if(n){var d=c.find(r<0?1:-1),h=void 0;if((r<0?u:l)&&(d=so(t,d,-r,d&&d.line==e.line?o:null)),d&&d.line==e.line&&(h=ne(d,n))&&(r<0?h<0:h>0))return oo(t,d,e,r,i)}var f=c.find(r<0?-1:1);return(r<0?l:u)&&(f=so(t,f,r,f.line==e.line?o:null)),f?oo(t,f,e,r,i):null}}return e}function ao(t,e,n,r,i){var o=r||1,a=oo(t,e,n,o,i)||!i&&oo(t,e,n,o,!0)||oo(t,e,n,-o,i)||!i&&oo(t,e,n,-o,!0);return a||(t.cantEdit=!0,ee(t.first,0))}function so(t,e,n,r){return n<0&&0==e.ch?e.line>t.first?ce(t,ee(e.line-1)):null:n>0&&e.ch==(r||Gt(t,e.line)).text.length?e.line0)){var u=[c,1],d=ne(l.from,s.from),h=ne(l.to,s.to);(d<0||!a.inclusiveLeft&&!d)&&u.push({from:l.from,to:s.from}),(h>0||!a.inclusiveRight&&!h)&&u.push({from:s.to,to:l.to}),i.splice.apply(i,u),c+=u.length-3}}return i}(t,e.from,e.to);if(r)for(var i=r.length-1;i>=0;--i)ho(t,{from:r[i].from,to:r[i].to,text:i?[""]:e.text,origin:e.origin});else ho(t,e)}}function ho(t,e){if(1!=e.text.length||""!=e.text[0]||0!=ne(e.from,e.to)){var n=Ei(t,e);Hi(t,e,n,t.cm?t.cm.curOp.id:NaN),go(t,e,n,Te(t,e));var r=[];Ni(t,(function(t,n){n||-1!=z(r,t.history)||(yo(t.history,e),r.push(t.history)),go(t,e,null,Te(t,e))}))}}function fo(t,e,n){var r=t.cm&&t.cm.state.suppressEdits;if(!r||n){for(var i,o=t.history,a=t.sel,s="undo"==e?o.done:o.undone,c="undo"==e?o.undone:o.done,l=0;l=0;--f){var p=h(f);if(p)return p.v}}}}function po(t,e){if(0!=e&&(t.first+=e,t.sel=new Ci(X(t.sel.ranges,(function(t){return new Si(ee(t.anchor.line+e,t.anchor.ch),ee(t.head.line+e,t.head.ch))})),t.sel.primIndex),t.cm)){hr(t.cm,t.first,t.first-e,e);for(var n=t.cm.display,r=n.viewFrom;rt.lastLine())){if(e.from.lineo&&(e={from:e.from,to:ee(o,Gt(t,o).text.length),text:[e.text[0]],origin:e.origin}),e.removed=Kt(t,e.from,e.to),n||(n=Ei(t,e)),t.cm?function(t,e,n){var r=t.doc,i=t.display,o=e.from,a=e.to,s=!1,c=o.line;t.options.lineWrapping||(c=Jt(Ve(Gt(r,o.line))),r.iter(c,a.line+1,(function(t){if(t==i.maxLine)return s=!0,!0}))),r.sel.contains(e.from,e.to)>-1&&mt(t),Li(r,e,n,cr(t)),t.options.lineWrapping||(r.iter(c,o.line+e.text.length,(function(t){var e=We(t);e>i.maxLineLength&&(i.maxLine=t,i.maxLineLength=e,i.maxLineChanged=!0,s=!1)})),s&&(t.curOp.updateMaxLine=!0)),function(t,e){if(t.modeFrontier=Math.min(t.modeFrontier,e),!(t.highlightFrontiern;r--){var i=Gt(t,r).stateAfter;if(i&&(!(i instanceof ue)||r+i.lookAhead1||!(this.children[0]instanceof xo))){var s=[];this.collapse(s),this.children=[new xo(s)],this.children[0].parent=this}},collapse:function(t){for(var e=0;e50){for(var a=i.lines.length%25+25,s=a;s10);t.parent.maybeSpill()}},iterN:function(t,e,n){for(var r=0;r0||0==a&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=M("span",[o.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Re(t,e.line,e,n,o)||e.line!=n.line&&Re(t,n.line,e,n,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");Ce=!0}o.addToHistory&&Hi(t,{from:e,to:n,origin:"markText"},t.sel,NaN);var s,c=e.line,l=t.cm;if(t.iter(c,n.line+1,(function(r){l&&o.collapsed&&!l.options.lineWrapping&&Ve(r)==l.display.maxLine&&(s=!0),o.collapsed&&c!=e.line&&Xt(r,0),function(t,e,n){var r=n&&window.WeakSet&&(n.markedSpans||(n.markedSpans=new WeakSet));r&&r.has(t.markedSpans)?t.markedSpans.push(e):(t.markedSpans=t.markedSpans?t.markedSpans.concat([e]):[e],r&&r.add(t.markedSpans)),e.marker.attachLine(t)}(r,new Se(o,c==e.line?e.ch:null,c==n.line?n.ch:null),t.cm&&t.cm.curOp),++c})),o.collapsed&&t.iter(e.line,n.line+1,(function(e){Ue(t,e)&&Xt(e,0)})),o.clearOnEnter&&ht(o,"beforeCursorEnter",(function(){return o.clear()})),o.readOnly&&(Oe=!0,(t.history.done.length||t.history.undone.length)&&t.clearHistory()),o.collapsed&&(o.id=++ko,o.atomic=!0),l){if(s&&(l.curOp.updateMaxLine=!0),o.collapsed)hr(l,e.line,n.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var u=e.line;u<=n.line;u++)fr(l,u,"text");o.atomic&&ro(l.doc),ln(l,"markerAdded",l,o)}return o}jo.prototype.clear=function(){if(!this.explicitlyCleared){var t=this.doc.cm,e=t&&!t.curOp;if(e&&Gr(t),bt(this,"clear")){var n=this.find();n&&ln(this,"clear",n.from,n.to)}for(var r=null,i=null,o=0;ot.display.maxLineLength&&(t.display.maxLine=l,t.display.maxLineLength=u,t.display.maxLineChanged=!0)}null!=r&&t&&this.collapsed&&hr(t,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&ro(t.doc)),t&&ln(t,"markerCleared",t,this,r,i),e&&Kr(t),this.parent&&this.parent.clear()}},jo.prototype.find=function(t,e){var n,r;null==t&&"bookmark"==this.type&&(t=1);for(var i=0;i=0;c--)uo(this,r[c]);s?Qi(this,s):this.cm&&Ar(this.cm)})),undo:ri((function(){fo(this,"undo")})),redo:ri((function(){fo(this,"redo")})),undoSelection:ri((function(){fo(this,"undo",!0)})),redoSelection:ri((function(){fo(this,"redo",!0)})),setExtending:function(t){this.extend=t},getExtending:function(){return this.extend},historySize:function(){for(var t=this.history,e=0,n=0,r=0;r=t.ch)&&e.push(i.marker.parent||i.marker)}return e},findMarks:function(t,e,n){t=ce(this,t),e=ce(this,e);var r=[],i=t.line;return this.iter(t.line,e.line+1,(function(o){var a=o.markedSpans;if(a)for(var s=0;s=c.to||null==c.from&&i!=t.line||null!=c.from&&i==e.line&&c.from>=e.ch||n&&!n(c.marker)||r.push(c.marker.parent||c.marker)}++i})),r},getAllMarks:function(){var t=[];return this.iter((function(e){var n=e.markedSpans;if(n)for(var r=0;rt)return e=t,!0;t-=o,++n})),ce(this,ee(n,e))},indexFromPos:function(t){var e=(t=ce(this,t)).ch;if(t.linee&&(e=t.from),null!=t.to&&t.to-1)return e.state.draggingText(t),void setTimeout((function(){return e.display.input.focus()}),20);try{var d=t.dataTransfer.getData("Text");if(d){var h;if(e.state.draggingText&&!e.state.draggingText.copy&&(h=e.listSelections()),eo(e.doc,ji(n,n)),h)for(var f=0;f=0;e--)vo(t.doc,"",r[e].from,r[e].to,"+delete");Ar(t)}))}function Qo(t,e,n){var r=ot(t.text,e+n,n);return r<0||r>t.text.length?null:r}function ta(t,e,n){var r=Qo(t,e.ch,n);return null==r?null:new ee(e.line,r,n<0?"after":"before")}function ea(t,e,n,r,i){if(t){"rtl"==e.doc.direction&&(i=-i);var o=ut(n,e.doc.direction);if(o){var a,s=i<0?Y(o):o[0],c=i<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==e.doc.direction){var l=_n(e,n);a=i<0?n.text.length-1:0;var u=Ln(e,l,a).top;a=at((function(t){return Ln(e,l,t).top==u}),i<0==(1==s.level)?s.from:s.to-1,a),"before"==c&&(a=Qo(n,a,1))}else a=i<0?s.to:s.from;return new ee(r,a,c)}}return new ee(r,i<0?n.text.length:0,i<0?"before":"after")}$o.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},$o.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},$o.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},$o.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},$o["default"]=b?$o.macDefault:$o.pcDefault;var na={selectAll:co,singleSelection:function(t){return t.setSelection(t.getCursor("anchor"),t.getCursor("head"),B)},killLine:function(t){return Zo(t,(function(e){if(e.empty()){var n=Gt(t.doc,e.head.line).text.length;return e.head.ch==n&&e.head.line0)i=new ee(i.line,i.ch+1),t.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),ee(i.line,i.ch-2),i,"+transpose");else if(i.line>t.doc.first){var a=Gt(t.doc,i.line-1).text;a&&(i=new ee(i.line,1),t.replaceRange(o.charAt(0)+t.doc.lineSeparator()+a.charAt(a.length-1),ee(i.line-1,a.length-1),i,"+transpose"))}n.push(new Si(i,i))}t.setSelections(n)}))},newlineAndIndent:function(t){return ti(t,(function(){for(var e=t.listSelections(),n=e.length-1;n>=0;n--)t.replaceRange(t.doc.lineSeparator(),e[n].anchor,e[n].head,"+input");e=t.listSelections();for(var r=0;r-1&&(ne((i=l.ranges[i]).from(),e)<0||e.xRel>0)&&(ne(i.to(),e)>0||e.xRel<0)?function(t,e,n,r){var i=t.display,o=!1,l=ei(t,(function(e){c&&(i.scroller.draggable=!1),t.state.draggingText=!1,t.state.delayingBlurEvent&&(t.hasFocus()?t.state.delayingBlurEvent=!1:Sr(t)),pt(i.wrapper.ownerDocument,"mouseup",l),pt(i.wrapper.ownerDocument,"mousemove",u),pt(i.scroller,"dragstart",d),pt(i.scroller,"drop",l),o||(wt(e),r.addNew||Yi(t.doc,n,null,null,r.extend),c&&!h||a&&9==s?setTimeout((function(){i.wrapper.ownerDocument.body.focus({preventScroll:!0}),i.input.focus()}),20):i.input.focus())})),u=function(t){o=o||Math.abs(e.clientX-t.clientX)+Math.abs(e.clientY-t.clientY)>=10},d=function(){return o=!0};c&&(i.scroller.draggable=!0),t.state.draggingText=l,l.copy=!r.moveOnDrag,ht(i.wrapper.ownerDocument,"mouseup",l),ht(i.wrapper.ownerDocument,"mousemove",u),ht(i.scroller,"dragstart",d),ht(i.scroller,"drop",l),t.state.delayingBlurEvent=!0,setTimeout((function(){return i.input.focus()}),20),i.scroller.dragDrop&&i.scroller.dragDrop()}(t,r,e,o):function(t,e,n,r){a&&Sr(t);var i=t.display,o=t.doc;wt(e);var s,c,l=o.sel,u=l.ranges;if(r.addNew&&!r.extend?(c=o.sel.contains(n),s=c>-1?u[c]:new Si(n,n)):(s=o.sel.primary(),c=o.sel.primIndex),"rectangle"==r.unit)r.addNew||(s=new Si(n,n)),n=ur(t,e,!0,!0),c=-1;else{var d=ya(t,n,r.unit);s=r.extend?Ki(s,d.anchor,d.head,r.extend):d}r.addNew?-1==c?(c=u.length,to(o,ki(t,u.concat([s]),c),{scroll:!1,origin:"*mouse"})):u.length>1&&u[c].empty()&&"char"==r.unit&&!r.extend?(to(o,ki(t,u.slice(0,c).concat(u.slice(c+1)),0),{scroll:!1,origin:"*mouse"}),l=o.sel):Ji(o,c,s,$):(c=0,to(o,new Ci([s],0),$),l=o.sel);var h=n;function f(e){if(0!=ne(h,e))if(h=e,"rectangle"==r.unit){for(var i=[],a=t.options.tabSize,u=R(Gt(o,n.line).text,n.ch,a),d=R(Gt(o,e.line).text,e.ch,a),f=Math.min(u,d),p=Math.max(u,d),g=Math.min(n.line,e.line),v=Math.min(t.lastLine(),Math.max(n.line,e.line));g<=v;g++){var m=Gt(o,g).text,b=q(m,f,a);f==p?i.push(new Si(ee(g,b),ee(g,b))):m.length>b&&i.push(new Si(ee(g,b),ee(g,q(m,p,a))))}i.length||i.push(new Si(n,n)),to(o,ki(t,l.ranges.slice(0,c).concat(i),c),{origin:"*mouse",scroll:!1}),t.scrollIntoView(e)}else{var y,w=s,x=ya(t,e,r.unit),O=w.anchor;ne(x.anchor,O)>0?(y=x.head,O=ae(w.from(),x.anchor)):(y=x.anchor,O=oe(w.to(),x.head));var C=l.ranges.slice(0);C[c]=function(t,e){var n=e.anchor,r=e.head,i=Gt(t.doc,n.line);if(0==ne(n,r)&&n.sticky==r.sticky)return e;var o=ut(i);if(!o)return e;var a=ct(o,n.ch,n.sticky),s=o[a];if(s.from!=n.ch&&s.to!=n.ch)return e;var c,l=a+(s.from==n.ch==(1!=s.level)?0:1);if(0==l||l==o.length)return e;if(r.line!=n.line)c=(r.line-n.line)*("ltr"==t.doc.direction?1:-1)>0;else{var u=ct(o,r.ch,r.sticky),d=u-a||(r.ch-n.ch)*(1==s.level?-1:1);c=u==l-1||u==l?d<0:d>0}var h=o[l+(c?-1:0)],f=c==(1==h.level),p=f?h.from:h.to,g=f?"after":"before";return n.ch==p&&n.sticky==g?e:new Si(new ee(n.line,p,g),r)}(t,new Si(ce(o,O),y)),to(o,ki(t,C,c),$)}}var p=i.wrapper.getBoundingClientRect(),g=0;function v(e){t.state.selectingText=!1,g=1/0,e&&(wt(e),i.input.focus()),pt(i.wrapper.ownerDocument,"mousemove",m),pt(i.wrapper.ownerDocument,"mouseup",b),o.history.lastSelOrigin=null}var m=ei(t,(function(e){0!==e.buttons&&kt(e)?function e(n){var a=++g,s=ur(t,n,!0,"rectangle"==r.unit);if(s)if(0!=ne(s,h)){t.curOp.focus=A(),f(s);var c=Er(i,o);(s.line>=c.to||s.linep.bottom?20:0;l&&setTimeout(ei(t,(function(){g==a&&(i.scroller.scrollTop+=l,e(n))})),50)}}(e):v(e)})),b=ei(t,v);t.state.selectingText=b,ht(i.wrapper.ownerDocument,"mousemove",m),ht(i.wrapper.ownerDocument,"mouseup",b)}(t,r,e,o)}(e,r,o,t):St(t)==n.scroller&&wt(t):2==i?(r&&Yi(e.doc,r),setTimeout((function(){return n.input.focus()}),20)):3==i&&(C?e.display.input.onContextMenu(t):Sr(e)))}}function ya(t,e,n){if("char"==n)return new Si(e,e);if("word"==n)return t.findWordAt(e);if("line"==n)return new Si(ee(e.line,0),ce(t.doc,ee(e.line+1,0)));var r=n(t,e);return new Si(r.from,r.to)}function wa(t,e,n,r){var i,o;if(e.touches)i=e.touches[0].clientX,o=e.touches[0].clientY;else try{i=e.clientX,o=e.clientY}catch(t){return!1}if(i>=Math.floor(t.display.gutters.getBoundingClientRect().right))return!1;r&&wt(e);var a=t.display,s=a.lineDiv.getBoundingClientRect();if(o>s.bottom||!bt(t,n))return Ot(e);o-=s.top-a.viewOffset;for(var c=0;c=i)return gt(t,n,t,Zt(t.doc,o),t.display.gutterSpecs[c].className,e),Ot(e)}}function xa(t,e){return wa(t,e,"gutterClick",!0)}function Oa(t,e){Cn(t.display,e)||function(t,e){return!!bt(t,"gutterContextMenu")&&wa(t,e,"gutterContextMenu",!1)}(t,e)||vt(t,e,"contextmenu")||C||t.display.input.onContextMenu(e)}function Ca(t){t.display.wrapper.className=t.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+t.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Hn(t)}ma.prototype.compare=function(t,e,n){return this.time+va>t&&0==ne(e,this.pos)&&n==this.button};var Sa={toString:function(){return"CodeMirror.Init"}},ka={},ja={};function Ta(t,e,n){if(!e!=!(n&&n!=Sa)){var r=t.display.dragFunctions,i=e?ht:pt;i(t.display.scroller,"dragstart",r.start),i(t.display.scroller,"dragenter",r.enter),i(t.display.scroller,"dragover",r.over),i(t.display.scroller,"dragleave",r.leave),i(t.display.scroller,"drop",r.drop)}}function Pa(t){t.options.lineWrapping?(_(t.display.wrapper,"CodeMirror-wrap"),t.display.sizer.style.minWidth="",t.display.sizerWidth=null):(j(t.display.wrapper,"CodeMirror-wrap"),qe(t)),lr(t),hr(t),Hn(t),setTimeout((function(){return Ur(t)}),100)}function Ea(t,e){var n=this;if(!(this instanceof Ea))return new Ea(t,e);this.options=e=e?F(e):{},F(ka,e,!1);var r=e.value;"string"==typeof r?r=new Ao(r,e.mode,null,e.lineSeparator,e.direction):e.mode&&(r.modeOption=e.mode),this.doc=r;var i=new Ea.inputStyles[e.inputStyle](this),o=this.display=new mi(t,r,i,e);for(var l in o.wrapper.CodeMirror=this,Ca(this),e.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Wr(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new V,keySeq:null,specialChars:null},e.autofocus&&!m&&o.input.focus(),a&&s<11&&setTimeout((function(){return n.display.input.reset(!0)}),20),function(t){var e=t.display;ht(e.scroller,"mousedown",ei(t,ba)),ht(e.scroller,"dblclick",a&&s<11?ei(t,(function(e){if(!vt(t,e)){var n=ur(t,e);if(n&&!xa(t,e)&&!Cn(t.display,e)){wt(e);var r=t.findWordAt(n);Yi(t.doc,r.anchor,r.head)}}})):function(e){return vt(t,e)||wt(e)}),ht(e.scroller,"contextmenu",(function(e){return Oa(t,e)})),ht(e.input.getField(),"contextmenu",(function(n){e.scroller.contains(n.target)||Oa(t,n)}));var n,r={end:0};function i(){e.activeTouch&&(n=setTimeout((function(){return e.activeTouch=null}),1e3),(r=e.activeTouch).end=+new Date)}function o(t,e){if(null==e.left)return!0;var n=e.left-t.left,r=e.top-t.top;return n*n+r*r>20*20}ht(e.scroller,"touchstart",(function(i){if(!vt(t,i)&&!function(t){if(1!=t.touches.length)return!1;var e=t.touches[0];return e.radiusX<=1&&e.radiusY<=1}(i)&&!xa(t,i)){e.input.ensurePolled(),clearTimeout(n);var o=+new Date;e.activeTouch={start:o,moved:!1,prev:o-r.end<=300?r:null},1==i.touches.length&&(e.activeTouch.left=i.touches[0].pageX,e.activeTouch.top=i.touches[0].pageY)}})),ht(e.scroller,"touchmove",(function(){e.activeTouch&&(e.activeTouch.moved=!0)})),ht(e.scroller,"touchend",(function(n){var r=e.activeTouch;if(r&&!Cn(e,n)&&null!=r.left&&!r.moved&&new Date-r.start<300){var a,s=t.coordsChar(e.activeTouch,"page");a=!r.prev||o(r,r.prev)?new Si(s,s):!r.prev.prev||o(r,r.prev.prev)?t.findWordAt(s):new Si(ee(s.line,0),ce(t.doc,ee(s.line+1,0))),t.setSelection(a.anchor,a.head),t.focus(),wt(n)}i()})),ht(e.scroller,"touchcancel",i),ht(e.scroller,"scroll",(function(){e.scroller.clientHeight&&(Ir(t,e.scroller.scrollTop),Rr(t,e.scroller.scrollLeft,!0),gt(t,"scroll",t))})),ht(e.scroller,"mousewheel",(function(e){return Oi(t,e)})),ht(e.scroller,"DOMMouseScroll",(function(e){return Oi(t,e)})),ht(e.wrapper,"scroll",(function(){return e.wrapper.scrollTop=e.wrapper.scrollLeft=0})),e.dragFunctions={enter:function(e){vt(t,e)||Ct(e)},over:function(e){vt(t,e)||(function(t,e){var n=ur(t,e);if(n){var r=document.createDocumentFragment();yr(t,n,r),t.display.dragCursor||(t.display.dragCursor=E("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),t.display.lineSpace.insertBefore(t.display.dragCursor,t.display.cursorDiv)),P(t.display.dragCursor,r)}}(t,e),Ct(e))},start:function(e){return function(t,e){if(a&&(!t.state.draggingText||+new Date-_o<100))Ct(e);else if(!vt(t,e)&&!Cn(t.display,e)&&(e.dataTransfer.setData("Text",t.getSelection()),e.dataTransfer.effectAllowed="copyMove",e.dataTransfer.setDragImage&&!h)){var n=E("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",d&&(n.width=n.height=1,t.display.wrapper.appendChild(n),n._top=n.offsetTop),e.dataTransfer.setDragImage(n,0,0),d&&n.parentNode.removeChild(n)}}(t,e)},drop:ei(t,Lo),leave:function(e){vt(t,e)||No(t)}};var c=e.input.getField();ht(c,"keyup",(function(e){return ha.call(t,e)})),ht(c,"keydown",ei(t,da)),ht(c,"keypress",ei(t,fa)),ht(c,"focus",(function(e){return kr(t,e)})),ht(c,"blur",(function(e){return jr(t,e)}))}(this),Ro(),Gr(this),this.curOp.forceUpdate=!0,Ii(this,r),e.autofocus&&!m||this.hasFocus()?setTimeout((function(){n.hasFocus()&&!n.state.focused&&kr(n)}),20):jr(this),ja)ja.hasOwnProperty(l)&&ja[l](this,e[l],Sa);fi(this),e.finishInit&&e.finishInit(this);for(var u=0;u150)){if(!r)return;n="prev"}}else l=0,n="not";"prev"==n?l=e>o.first?R(Gt(o,e-1).text,null,a):0:"add"==n?l=c+t.options.indentUnit:"subtract"==n?l=c-t.options.indentUnit:"number"==typeof n&&(l=c+n),l=Math.max(0,l);var d="",h=0;if(t.options.indentWithTabs)for(var f=Math.floor(l/a);f;--f)h+=a,d+="\t";if(ha,c=At(e),l=null;if(s&&r.ranges.length>1)if(Aa&&Aa.text.join("\n")==e){if(r.ranges.length%Aa.text.length==0){l=[];for(var u=0;u=0;h--){var f=r.ranges[h],p=f.from(),g=f.to();f.empty()&&(n&&n>0?p=ee(p.line,p.ch-n):t.state.overwrite&&!s?g=ee(g.line,Math.min(Gt(o,g.line).text.length,g.ch+Y(c).length)):s&&Aa&&Aa.lineWise&&Aa.text.join("\n")==c.join("\n")&&(p=g=ee(p.line,0)));var v={from:p,to:g,text:l?l[h%l.length]:c,origin:i||(s?"paste":t.state.cutIncoming>a?"cut":"+input")};uo(t.doc,v),ln(t,"inputRead",t,v)}e&&!s&&Ia(t,e),Ar(t),t.curOp.updateInput<2&&(t.curOp.updateInput=d),t.curOp.typing=!0,t.state.pasteIncoming=t.state.cutIncoming=-1}function Na(t,e){var n=t.clipboardData&&t.clipboardData.getData("Text");if(n)return t.preventDefault(),e.isReadOnly()||e.options.disableInput||ti(e,(function(){return La(e,n,0,null,"paste")})),!0}function Ia(t,e){if(t.options.electricChars&&t.options.smartIndent)for(var n=t.doc.sel,r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(!(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)){var o=t.getModeAt(i.head),a=!1;if(o.electricChars){for(var s=0;s-1){a=Da(t,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Gt(t.doc,i.head.line).text.slice(0,i.head.ch))&&(a=Da(t,i.head.line,"smart"));a&&ln(t,"electricInput",t,i.head.line)}}}function Fa(t){for(var e=[],n=[],r=0;r0?0:-1));if(isNaN(u))a=null;else{var d=n>0?u>=55296&&u<56320:u>=56320&&u<57343;a=new ee(e.line,Math.max(0,Math.min(s.text.length,e.ch+n*(d?2:1))),-n)}}else a=i?function(t,e,n,r){var i=ut(e,t.doc.direction);if(!i)return ta(e,n,r);n.ch>=e.text.length?(n.ch=e.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var o=ct(i,n.ch,n.sticky),a=i[o];if("ltr"==t.doc.direction&&a.level%2==0&&(r>0?a.to>n.ch:a.from=a.from&&h>=u.begin)){var f=d?"before":"after";return new ee(n.line,h,f)}}var p=function(t,e,r){for(var o=function(t,e){return e?new ee(n.line,c(t,1),"before"):new ee(n.line,t,"after")};t>=0&&t0==(1!=a.level),l=s?r.begin:c(r.end,-1);if(a.from<=l&&l0?u.end:c(u.begin,-1);return null==v||r>0&&v==e.text.length||!(g=p(r>0?0:i.length-1,r,l(v)))?null:g}(t.cm,s,e,n):ta(s,e,n);if(null==a){if(o||(l=e.line+c)=t.first+t.size||(e=new ee(l,e.ch,e.sticky),!(s=Gt(t,l))))return!1;e=ea(i,t.cm,s,e.line,c)}else e=a;return!0}if("char"==r||"codepoint"==r)l();else if("column"==r)l(!0);else if("word"==r||"group"==r)for(var u=null,d="group"==r,h=t.cm&&t.cm.getHelper(e,"wordChars"),f=!0;!(n<0)||l(!f);f=!1){var p=s.text.charAt(e.ch)||"\n",g=et(p,h)?"w":d&&"\n"==p?"n":!d||/\s/.test(p)?null:"p";if(!d||f||g||(g="s"),u&&u!=g){n<0&&(n=1,l(),e.sticky="after");break}if(g&&(u=g),n>0&&!l(!f))break}var v=ao(t,e,o,a,!0);return re(o,v)&&(v.hitSide=!0),v}function Ha(t,e,n,r){var i,o,a=t.doc,s=e.left;if("page"==r){var c=Math.min(t.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),l=Math.max(c-.5*ir(t.display),3);i=(n>0?e.bottom:e.top)+n*l}else"line"==r&&(i=n>0?e.bottom+3:e.top-3);for(;(o=Jn(t,s,i)).outside;){if(n<0?i<=0:i>=a.height){o.hitSide=!0;break}i+=5*n}return o}var Ua=function(t){this.cm=t,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new V,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Ba(t,e){var n=An(t,e.line);if(!n||n.hidden)return null;var r=Gt(t.doc,e.line),i=Mn(n,r,e.line),o=ut(r,t.doc.direction),a="left";o&&(a=ct(o,e.ch)%2?"right":"left");var s=Fn(i.map,e.ch,a);return s.offset="right"==s.collapse?s.end:s.start,s}function $a(t,e){return e&&(t.bad=!0),t}function Wa(t,e,n){var r;if(e==t.display.lineDiv){if(!(r=t.display.lineDiv.childNodes[n]))return $a(t.clipPos(ee(t.display.viewTo-1)),!0);e=null,n=0}else for(r=e;;r=r.parentNode){if(!r||r==t.display.lineDiv)return null;if(r.parentNode&&r.parentNode==t.display.lineDiv)break}for(var i=0;i=e.display.viewTo||o.line=e.display.viewFrom&&Ba(e,i)||{node:c[0].measure.map[2],offset:0},u=o.liner.firstLine()&&(a=ee(a.line-1,Gt(r.doc,a.line-1).length)),s.ch==Gt(r.doc,s.line).text.length&&s.linei.viewTo-1)return!1;a.line==i.viewFrom||0==(t=dr(r,a.line))?(e=Jt(i.view[0].line),n=i.view[0].node):(e=Jt(i.view[t].line),n=i.view[t-1].node.nextSibling);var c,l,u=dr(r,s.line);if(u==i.view.length-1?(c=i.viewTo-1,l=i.lineDiv.lastChild):(c=Jt(i.view[u+1].line)-1,l=i.view[u+1].node.previousSibling),!n)return!1;for(var d=r.doc.splitLines(function(t,e,n,r,i){var o="",a=!1,s=t.doc.lineSeparator(),c=!1;function l(){a&&(o+=s,c&&(o+=s),a=c=!1)}function u(t){t&&(l(),o+=t)}function d(e){if(1==e.nodeType){var n=e.getAttribute("cm-text");if(n)return void u(n);var o,h=e.getAttribute("cm-marker");if(h){var f=t.findMarks(ee(r,0),ee(i+1,0),(v=+h,function(t){return t.id==v}));return void(f.length&&(o=f[0].find(0))&&u(Kt(t.doc,o.from,o.to).join(s)))}if("false"==e.getAttribute("contenteditable"))return;var p=/^(pre|div|p|li|table|br)$/i.test(e.nodeName);if(!/^br$/i.test(e.nodeName)&&0==e.textContent.length)return;p&&l();for(var g=0;g1&&h.length>1;)if(Y(d)==Y(h))d.pop(),h.pop(),c--;else{if(d[0]!=h[0])break;d.shift(),h.shift(),e++}for(var f=0,p=0,g=d[0],v=h[0],m=Math.min(g.length,v.length);fa.ch&&b.charCodeAt(b.length-p-1)==y.charCodeAt(y.length-p-1);)f--,p++;d[d.length-1]=b.slice(0,b.length-p).replace(/^\u200b+/,""),d[0]=d[0].slice(f).replace(/\u200b+$/,"");var x=ee(e,f),O=ee(c,h.length?Y(h).length-p:0);return d.length>1||d[0]||ne(x,O)?(vo(r.doc,d,x,O,"+input"),!0):void 0},Ua.prototype.ensurePolled=function(){this.forceCompositionEnd()},Ua.prototype.reset=function(){this.forceCompositionEnd()},Ua.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Ua.prototype.readFromDOMSoon=function(){var t=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout((function(){if(t.readDOMTimeout=null,t.composing){if(!t.composing.done)return;t.composing=null}t.updateFromDOM()}),80))},Ua.prototype.updateFromDOM=function(){var t=this;!this.cm.isReadOnly()&&this.pollContent()||ti(this.cm,(function(){return hr(t.cm)}))},Ua.prototype.setUneditable=function(t){t.contentEditable="false"},Ua.prototype.onKeyPress=function(t){0==t.charCode||this.composing||(t.preventDefault(),this.cm.isReadOnly()||ei(this.cm,La)(this.cm,String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),0))},Ua.prototype.readOnlyChanged=function(t){this.div.contentEditable=String("nocursor"!=t)},Ua.prototype.onContextMenu=function(){},Ua.prototype.resetPosition=function(){},Ua.prototype.needsContentAttribute=!0;var Ga=function(t){this.cm=t,this.prevInput="",this.pollingFast=!1,this.polling=new V,this.hasSelection=!1,this.composing=null};Ga.prototype.init=function(t){var e=this,n=this,r=this.cm;this.createField(t);var i=this.textarea;function o(t){if(!vt(r,t)){if(r.somethingSelected())_a({lineWise:!1,text:r.getSelections()});else{if(!r.options.lineWiseCopyCut)return;var e=Fa(r);_a({lineWise:!0,text:e.text}),"cut"==t.type?r.setSelections(e.ranges,null,B):(n.prevInput="",i.value=e.text.join("\n"),N(i))}"cut"==t.type&&(r.state.cutIncoming=+new Date)}}t.wrapper.insertBefore(this.wrapper,t.wrapper.firstChild),g&&(i.style.width="0px"),ht(i,"input",(function(){a&&s>=9&&e.hasSelection&&(e.hasSelection=null),n.poll()})),ht(i,"paste",(function(t){vt(r,t)||Na(t,r)||(r.state.pasteIncoming=+new Date,n.fastPoll())})),ht(i,"cut",o),ht(i,"copy",o),ht(t.scroller,"paste",(function(e){if(!Cn(t,e)&&!vt(r,e)){if(!i.dispatchEvent)return r.state.pasteIncoming=+new Date,void n.focus();var o=new Event("paste");o.clipboardData=e.clipboardData,i.dispatchEvent(o)}})),ht(t.lineSpace,"selectstart",(function(e){Cn(t,e)||wt(e)})),ht(i,"compositionstart",(function(){var t=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:t,range:r.markText(t,r.getCursor("to"),{className:"CodeMirror-composing"})}})),ht(i,"compositionend",(function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)}))},Ga.prototype.createField=function(t){this.wrapper=Va(),this.textarea=this.wrapper.firstChild},Ga.prototype.screenReaderLabelChanged=function(t){t?this.textarea.setAttribute('aria-label',t):this.textarea.removeAttribute('aria-label')},Ga.prototype.prepareSelection=function(){var t=this.cm,e=t.display,n=t.doc,r=br(t);if(t.options.moveInputWithCursor){var i=Kn(t,n.sel.primary().head,"div"),o=e.wrapper.getBoundingClientRect(),a=e.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(e.wrapper.clientHeight-10,i.top+a.top-o.top)),r.teLeft=Math.max(0,Math.min(e.wrapper.clientWidth-10,i.left+a.left-o.left))}return r},Ga.prototype.showSelection=function(t){var e=this.cm.display;P(e.cursorDiv,t.cursors),P(e.selectionDiv,t.selection),null!=t.teTop&&(this.wrapper.style.top=t.teTop+"px",this.wrapper.style.left=t.teLeft+"px")},Ga.prototype.reset=function(t){if(!this.contextMenuPending&&!this.composing){var e=this.cm;if(e.somethingSelected()){this.prevInput="";var n=e.getSelection();this.textarea.value=n,e.state.focused&&N(this.textarea),a&&s>=9&&(this.hasSelection=n)}else t||(this.prevInput=this.textarea.value="",a&&s>=9&&(this.hasSelection=null))}},Ga.prototype.getField=function(){return this.textarea},Ga.prototype.supportsTouch=function(){return!1},Ga.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!m||A()!=this.textarea))try{this.textarea.focus()}catch(t){}},Ga.prototype.blur=function(){this.textarea.blur()},Ga.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Ga.prototype.receivedFocus=function(){this.slowPoll()},Ga.prototype.slowPoll=function(){var t=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,(function(){t.poll(),t.cm.state.focused&&t.slowPoll()}))},Ga.prototype.fastPoll=function(){var t=!1,e=this;e.pollingFast=!0,e.polling.set(20,(function n(){e.poll()||t?(e.pollingFast=!1,e.slowPoll()):(t=!0,e.polling.set(60,n))}))},Ga.prototype.poll=function(){var t=this,e=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||!e.state.focused||_t(n)&&!r&&!this.composing||e.isReadOnly()||e.options.disableInput||e.state.keySeq)return!1;var i=n.value;if(i==r&&!e.somethingSelected())return!1;if(a&&s>=9&&this.hasSelection===i||b&&/[\uf700-\uf7ff]/.test(i))return e.display.input.reset(),!1;if(e.doc.sel==e.display.selForContextMenu){var o=i.charCodeAt(0);if(8203!=o||r||(r="​"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var c=0,l=Math.min(r.length,i.length);c1e3||i.indexOf("\n")>-1?n.value=t.prevInput="":t.prevInput=i,t.composing&&(t.composing.range.clear(),t.composing.range=e.markText(t.composing.start,e.getCursor("to"),{className:"CodeMirror-composing"}))})),!0},Ga.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Ga.prototype.onKeyPress=function(){a&&s>=9&&(this.hasSelection=null),this.fastPoll()},Ga.prototype.onContextMenu=function(t){var e=this,n=e.cm,r=n.display,i=e.textarea;e.contextMenuPending&&e.contextMenuPending();var o=ur(n,t),l=r.scroller.scrollTop;if(o&&!d){n.options.resetSelectionOnContextMenu&&-1==n.doc.sel.contains(o)&&ei(n,to)(n.doc,ji(o),B);var u,h=i.style.cssText,f=e.wrapper.style.cssText,p=e.wrapper.offsetParent.getBoundingClientRect();if(e.wrapper.style.cssText="position: static",i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(t.clientY-p.top-5)+"px; left: "+(t.clientX-p.left-5)+"px;\n z-index: 1000; background: "+(a?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",c&&(u=window.scrollY),r.input.focus(),c&&window.scrollTo(null,u),r.input.reset(),n.somethingSelected()||(i.value=e.prevInput=" "),e.contextMenuPending=m,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll),a&&s>=9&&v(),C){Ct(t);var g=function(){pt(window,"mouseup",g),setTimeout(m,20)};ht(window,"mouseup",g)}else setTimeout(m,50)}function v(){if(null!=i.selectionStart){var t=n.somethingSelected(),o="​"+(t?i.value:"");i.value="⇚",i.value=o,e.prevInput=t?"":"​",i.selectionStart=1,i.selectionEnd=o.length,r.selForContextMenu=n.doc.sel}}function m(){if(e.contextMenuPending==m&&(e.contextMenuPending=!1,e.wrapper.style.cssText=f,i.style.cssText=h,a&&s<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=l),null!=i.selectionStart)){(!a||a&&s<9)&&v();var t=0,o=function(){r.selForContextMenu==n.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==e.prevInput?ei(n,co)(n):t++<10?r.detectingSelectAll=setTimeout(o,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(o,200)}}},Ga.prototype.readOnlyChanged=function(t){t||this.reset(),this.textarea.disabled="nocursor"==t,this.textarea.readOnly=!!t},Ga.prototype.setUneditable=function(){},Ga.prototype.needsContentAttribute=!1,function(t){var e=t.optionHandlers;function n(n,r,i,o){t.defaults[n]=r,i&&(e[n]=o?function(t,e,n){n!=Sa&&i(t,e,n)}:i)}t.defineOption=n,t.Init=Sa,n("value","",(function(t,e){return t.setValue(e)}),!0),n("mode",null,(function(t,e){t.doc.modeOption=e,Di(t)}),!0),n("indentUnit",2,Di,!0),n("indentWithTabs",!1),n("smartIndent",!0),n("tabSize",4,(function(t){Ai(t),Hn(t),hr(t)}),!0),n("lineSeparator",null,(function(t,e){if(t.doc.lineSep=e,e){var n=[],r=t.doc.first;t.doc.iter((function(t){for(var i=0;;){var o=t.text.indexOf(e,i);if(-1==o)break;i=o+e.length,n.push(ee(r,o))}r++}));for(var i=n.length-1;i>=0;i--)vo(t.doc,e,n[i],ee(n[i].line,n[i].ch+e.length))}})),n("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,(function(t,e,n){t.state.specialChars=new RegExp(e.source+(e.test("\t")?"":"|\t"),"g"),n!=Sa&&t.refresh()})),n("specialCharPlaceholder",Qe,(function(t){return t.refresh()}),!0),n("electricChars",!0),n("inputStyle",m?"contenteditable":"textarea",(function(){throw new Error("inputStyle can not (yet) be changed in a running editor")}),!0),n("spellcheck",!1,(function(t,e){return t.getInputField().spellcheck=e}),!0),n("autocorrect",!1,(function(t,e){return t.getInputField().autocorrect=e}),!0),n("autocapitalize",!1,(function(t,e){return t.getInputField().autocapitalize=e}),!0),n("rtlMoveVisually",!w),n("wholeLineUpdateBefore",!0),n("theme","default",(function(t){Ca(t),vi(t)}),!0),n("keyMap","default",(function(t,e,n){var r=Jo(e),i=n!=Sa&&Jo(n);i&&i.detach&&i.detach(t,r),r.attach&&r.attach(t,i||null)})),n("extraKeys",null),n("configureMouse",null),n("lineWrapping",!1,Pa,!0),n("gutters",[],(function(t,e){t.display.gutterSpecs=pi(e,t.options.lineNumbers),vi(t)}),!0),n("fixedGutter",!0,(function(t,e){t.display.gutters.style.left=e?sr(t.display)+"px":"0",t.refresh()}),!0),n("coverGutterNextToScrollbar",!1,(function(t){return Ur(t)}),!0),n("scrollbarStyle","native",(function(t){Wr(t),Ur(t),t.display.scrollbars.setScrollTop(t.doc.scrollTop),t.display.scrollbars.setScrollLeft(t.doc.scrollLeft)}),!0),n("lineNumbers",!1,(function(t,e){t.display.gutterSpecs=pi(t.options.gutters,e),vi(t)}),!0),n("firstLineNumber",1,vi,!0),n("lineNumberFormatter",(function(t){return t}),vi,!0),n("showCursorWhenSelecting",!1,mr,!0),n("resetSelectionOnContextMenu",!0),n("lineWiseCopyCut",!0),n("pasteLinesPerSelection",!0),n("selectionsMayTouch",!1),n("readOnly",!1,(function(t,e){"nocursor"==e&&(jr(t),t.display.input.blur()),t.display.input.readOnlyChanged(e)})),n("screenReaderLabel",null,(function(t,e){e=''===e?null:e,t.display.input.screenReaderLabelChanged(e)})),n("disableInput",!1,(function(t,e){e||t.display.input.reset()}),!0),n("dragDrop",!0,Ta),n("allowDropFileTypes",null),n("cursorBlinkRate",530),n("cursorScrollMargin",0),n("cursorHeight",1,mr,!0),n("singleCursorHeightPerLine",!0,mr,!0),n("workTime",100),n("workDelay",100),n("flattenSpans",!0,Ai,!0),n("addModeClass",!1,Ai,!0),n("pollInterval",100),n("undoDepth",200,(function(t,e){return t.doc.history.undoDepth=e})),n("historyEventDelay",1250),n("viewportMargin",10,(function(t){return t.refresh()}),!0),n("maxHighlightLength",1e4,Ai,!0),n("moveInputWithCursor",!0,(function(t,e){e||t.display.input.resetPosition()})),n("tabindex",null,(function(t,e){return t.display.input.getField().tabIndex=e||""})),n("autofocus",null),n("direction","ltr",(function(t,e){return t.doc.setDirection(e)}),!0),n("phrases",null)}(Ea),function(t){var e=t.optionHandlers,n=t.helpers={};t.prototype={constructor:t,focus:function(){window.focus(),this.display.input.focus()},setOption:function(t,n){var r=this.options,i=r[t];r[t]==n&&"mode"!=t||(r[t]=n,e.hasOwnProperty(t)&&ei(this,e[t])(this,n,i),gt(this,"optionChange",this,t))},getOption:function(t){return this.options[t]},getDoc:function(){return this.doc},addKeyMap:function(t,e){this.state.keyMaps[e?"push":"unshift"](Jo(t))},removeKeyMap:function(t){for(var e=this.state.keyMaps,n=0;nn&&(Da(this,i.head.line,t,!0),n=i.head.line,r==this.doc.sel.primIndex&&Ar(this));else{var o=i.from(),a=i.to(),s=Math.max(n,o.line);n=Math.min(this.lastLine(),a.line-(a.ch?0:1))+1;for(var c=s;c0&&Ji(this.doc,r,new Si(o,l[r].to()),B)}}})),getTokenAt:function(t,e){return ye(this,t,e)},getLineTokens:function(t,e){return ye(this,ee(t),e,!0)},getTokenTypeAt:function(t){t=ce(this.doc,t);var e,n=fe(this,Gt(this.doc,t.line)),r=0,i=(n.length-1)/2,o=t.ch;if(0==o)e=n[2];else for(;;){var a=r+i>>1;if((a?n[2*a-1]:0)>=o)i=a;else{if(!(n[2*a+1]o&&(t=o,i=!0),r=Gt(this.doc,t)}else r=t;return Wn(this,r,{top:0,left:0},e||"page",n||i).top+(i?this.doc.height-$e(r):0)},defaultTextHeight:function(){return ir(this.display)},defaultCharWidth:function(){return or(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(t,e,n,r,i){var o,a,s,c=this.display,l=(t=Kn(this,ce(this.doc,t))).bottom,u=t.left;if(e.style.position="absolute",e.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(e),c.sizer.appendChild(e),"over"==r)l=t.top;else if("above"==r||"near"==r){var d=Math.max(c.wrapper.clientHeight,this.doc.height),h=Math.max(c.sizer.clientWidth,c.lineSpace.clientWidth);('above'==r||t.bottom+e.offsetHeight>d)&&t.top>e.offsetHeight?l=t.top-e.offsetHeight:t.bottom+e.offsetHeight<=d&&(l=t.bottom),u+e.offsetWidth>h&&(u=h-e.offsetWidth)}e.style.top=l+"px",e.style.left=e.style.right="","right"==i?(u=c.sizer.clientWidth-e.offsetWidth,e.style.right="0px"):("left"==i?u=0:"middle"==i&&(u=(c.sizer.clientWidth-e.offsetWidth)/2),e.style.left=u+"px"),n&&(o=this,a={left:u,top:l,right:u+e.offsetWidth,bottom:l+e.offsetHeight},null!=(s=Mr(o,a)).scrollTop&&Ir(o,s.scrollTop),null!=s.scrollLeft&&Rr(o,s.scrollLeft))},triggerOnKeyDown:ni(da),triggerOnKeyPress:ni(fa),triggerOnKeyUp:ha,triggerOnMouseDown:ni(ba),execCommand:function(t){if(na.hasOwnProperty(t))return na[t].call(null,this)},triggerElectric:ni((function(t){Ia(this,t)})),findPosH:function(t,e,n,r){var i=1;e<0&&(i=-1,e=-e);for(var o=ce(this.doc,t),a=0;a0&&a(e.charAt(n-1));)--n;for(;r.5||this.options.lineWrapping)&&lr(this),gt(this,"refresh",this)})),swapDoc:ni((function(t){var e=this.doc;return e.cm=null,this.state.selectingText&&this.state.selectingText(),Ii(this,t),Hn(this),this.display.input.reset(),_r(this,t.scrollLeft,t.scrollTop),this.curOp.forceScroll=!0,ln(this,"swapDoc",this,e),e})),phrase:function(t){var e=this.options.phrases;return e&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:t},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},yt(t),t.registerHelper=function(e,r,i){n.hasOwnProperty(e)||(n[e]=t[e]={_global:[]}),n[e][r]=i},t.registerGlobalHelper=function(e,r,i,o){t.registerHelper(e,r,o),n[e]._global.push({pred:i,val:o})}}(Ea);var Ka="iter insert remove copy getEditor constructor".split(" ");for(var Ya in Ao.prototype)Ao.prototype.hasOwnProperty(Ya)&&z(Ka,Ya)<0&&(Ea.prototype[Ya]=function(t){return function(){return t.apply(this.doc,arguments)}}(Ao.prototype[Ya]));return yt(Ao),Ea.inputStyles={textarea:Ga,contenteditable:Ua},Ea.defineMode=function(t){Ea.defaults.mode||"null"==t||(Ea.defaults.mode=t),Rt.apply(this,arguments)},Ea.defineMIME=function(t,e){Ft[t]=e},Ea.defineMode("null",(function(){return{token:function(t){return t.skipToEnd()}}})),Ea.defineMIME("text/plain","null"),Ea.defineExtension=function(t,e){Ea.prototype[t]=e},Ea.defineDocExtension=function(t,e){Ao.prototype[t]=e},Ea.fromTextArea=function(t,e){if((e=e?F(e):{}).value=t.value,!e.tabindex&&t.tabIndex&&(e.tabindex=t.tabIndex),!e.placeholder&&t.placeholder&&(e.placeholder=t.placeholder),null==e.autofocus){var n=A();e.autofocus=n==t||null!=t.getAttribute("autofocus")&&n==document.body}function r(){t.value=s.getValue()}var i;if(t.form&&(ht(t.form,"submit",r),!e.leaveSubmitMethodAlone)){var o=t.form;i=o.submit;try{var a=o.submit=function(){r(),o.submit=i,o.submit(),o.submit=a}}catch(t){}}e.finishInit=function(n){n.save=r,n.getTextArea=function(){return t},n.toTextArea=function(){n.toTextArea=isNaN,r(),t.parentNode.removeChild(n.getWrapperElement()),t.style.display="",t.form&&(pt(t.form,"submit",r),e.leaveSubmitMethodAlone||"function"!=typeof t.form.submit||(t.form.submit=i))}},t.style.display="none";var s=Ea((function(e){return t.parentNode.insertBefore(e,t.nextSibling)}),e);return s},function(t){t.off=pt,t.on=ht,t.wheelEventPixels=xi,t.Doc=Ao,t.splitLines=At,t.countColumn=R,t.findColumn=q,t.isWordChar=tt,t.Pass=U,t.signal=gt,t.Line=Ge,t.changeEnd=Ti,t.scrollbarModel=$r,t.Pos=ee,t.cmpPos=ne,t.modes=It,t.mimeModes=Ft,t.resolveMode=Vt,t.getMode=zt,t.modeExtensions=Ht,t.extendMode=Ut,t.copyState=Bt,t.startState=Wt,t.innerMode=$t,t.commands=na,t.keyMap=$o,t.keyName=Xo,t.isModifierKey=Ko,t.lookupKey=Go,t.normalizeKeyMap=qo,t.StringStream=qt,t.SharedTextMarker=Po,t.TextMarker=jo,t.LineWidget=Co,t.e_preventDefault=wt,t.e_stopPropagation=xt,t.e_stop=Ct,t.addClass=_,t.contains=D,t.rmClass=j,t.keyNames=zo}(Ea),Ea.version="5.61.1",Ea}())},function(t,e,n){var r=n(77);t.exports=function(t,e){if(null==t)return{};var n,i,o=r(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e,n){"use strict";n.r(e);var r=n(8),i=n.n(r),o=n(2),a=n.n(o),s=n(1),c=n.n(s),l=n(0),u=n(3),d=n(9),h=n(25);function f(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function p(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=t.config,n=void 0===e?{}:e;this.em=n.em,this.editor=n.editor},handleClick:function(t){t.preventDefault(),t.stopPropagation();var e=this.editor,n=this.em,r=e.Canvas.getFrameEl().getBoundingClientRect(),i=r.left,o=r.top,a=p(p({},t),{},{clientX:t.clientX-i,clientY:t.clientY-o});n.trigger('toolbar:run:before'),this.execCommand(a)},execCommand:function(t){var e={event:t},n=this.model.get('command'),r=this.editor;'function'==typeof n&&n(r,null,e),'string'==typeof n&&r.runCommand(n,e)},render:function(){var t=this.editor,e=this.$el,n=this.model,r=n.get('id'),i=n.get('label'),o=t.getConfig('stylePrefix');return e.addClass("".concat(o,"toolbar-item")),r&&e.addClass("".concat(o,"toolbar-item__").concat(r)),i&&e.append(i),this}}),v=h["a"].extend({itemView:g,initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config={editor:t.editor||'',em:t.em},this.listenTo(this.collection,'reset',this.render)}}),m=c.a.Model.extend({defaults:{command:'',attributes:{}}}),b=c.a.Collection.extend({model:m});function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function w(t){for(var e=1;e2&&void 0!==arguments[2]?arguments[2]:{},r=n.el||this.canvas.getToolsEl(e);return r&&(r.style.display=t?'':'none'),r||{}},showElementOffset:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};x&&this.editor.runCommand('show-offset',{el:t,elPos:e,view:n.view,force:1,top:0,left:0})},hideElementOffset:function(t){this.editor.stopCommand('show-offset',{view:t})},showFixedElementOffset:function(t,e){this.editor.runCommand('show-offset',{el:t,elPos:e,state:'Fixed'})},hideFixedElementOffset:function(t,e){this.editor&&this.editor.stopCommand('show-offset',{state:'Fixed'})},hideHighlighter:function(t){this.canvas.getHighlighter(t).style.opacity=0},onClick:function(t){t.stopPropagation(),t.preventDefault();var e=this.em;if(e.get('_cmpDrag'))return e.set('_cmpDrag');var n=O(t.target),r=n.data('model');if(!r)for(var i=n.parent();!r&&i.length&&!Object(d["h"])(i[0]);)r=i.data('model'),i=i.parent();if(r)if(r.get('selectable'))this.select(r,t);else{for(var o=r.parent();o&&!o.get('selectable');)o=o.parent();this.select(o,t)}},select:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t&&(this.editor.select(t,{scroll:{},event:e}),this.initResize(t))},updateBadge:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=O(t).data('model');if(r&&r.get('badgable')){var i=this.getBadge(n);if(!n.posOnly){var o=this.canvas.getConfig(),a=r.getIcon(),s=o.pStylePrefix||'',c="".concat(s,"badge"),l=o.customBadgeLabel,u="".concat(a?"
").concat(a,"
"):'',"\n
").concat(r.getName(),"
");i.innerHTML=l?l(r):u}var d='px',h=i.style;h.display='block';var f=i?i.offsetHeight:0,p=0-f,g=n.topOff-f<0?-n.topOff:p,v=n.leftOff<0?-n.leftOff:0;h.top=g+d,h.left=v+d}},showHighlighter:function(t){this.canvas.getHighlighter(t).style.opacity=''},initResize:function(t){var e,n=this.em,r=this.canvas,o=n?n.get('Editor'):'',a=(n?n.get('Config'):'').stylePrefix||'',s="".concat(a,"resizing"),c=!Object(l["isElement"])(t)&&Object(u["t"])(t)?t:n.getSelected(),d=c&&c.get('resizable'),h={},f=function(t,e,n){var r=n.docs;r&&r.forEach((function(e){var n=e.body,r=n.className||'';n.className=('add'==t?"".concat(r," ").concat(s):r.replace(s,'')).trim()}))};if(o&&d){var p=Object(l["isElement"])(t)?t:c.getEl();h={onStart:function(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=i.el,a=i.config,s=i.resizer,l=a.keyHeight,d=a.keyWidth,h=a.currentUnit,p=a.keepAutoHeight,g=a.keepAutoWidth;f('add',0,i),e=n.get('StyleManager').getModelToStyle(c),r.toggleFramesEvents();var v=getComputedStyle(o),m=e.getStyle(),b=m[d];a.autoWidth=g&&'auto'===b,isNaN(parseFloat(b))&&(b=v[d]);var y=m[l];a.autoHeight=p&&'auto'===y,isNaN(parseFloat(y))&&(y=v[l]),s.startDim.w=parseFloat(b),s.startDim.h=parseFloat(y),x=0,h&&(a.unitHeight=Object(u["k"])(y),a.unitWidth=Object(u["k"])(b))},onMove:function(){o.trigger('component:resize')},onEnd:function(t,e){f('remove',0,e),o.trigger('component:resize'),r.toggleFramesEvents(1),x=1},updateTarget:function(t,i){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var a=o.store,s=o.selectedHandler,c=o.config,l=c.keyHeight,u=c.keyWidth,d=c.autoHeight,h=c.autoWidth,f=c.unitWidth,p=c.unitHeight,g=['tc','bc'].indexOf(s)>=0,v=['cl','cr'].indexOf(s)>=0,m={},b=a?'':1;if(!g){var y=r.getBody().offsetWidth,x=i.w0&&void 0!==arguments[0]?arguments[0]:{};return this.canvas.getBadgeEl(t.view)},onFrameScroll:function(){this.updateTools()},updateTools:function(){this.updateLocalPos(),this.updateGlobalPos()},isCompSelected:function(t){return t&&'selected'===t.get('status')},updateToolsLocal:function(t){var e=t||this.getElHovered(),n=e.el,r=e.pos,i=e.view,o=e.component;if(n){var a=o.get('hoverable'),s=this.lastHovered!==n,c=s?{}:{posOnly:1};s&&a&&(this.lastHovered=n,this.showHighlighter(i),this.showElementOffset(n,r,{view:i})),this.isCompSelected(o)&&(this.hideHighlighter(i),this.hideElementOffset(i));var l='px',u=this.toggleToolsEl(1,i),d=u.style,h=this.canvas.canvasRectOffset(n,r),f=h.top,p=h.left;this.updateBadge(n,r,w(w({},c),{},{view:i,topOff:f,leftOff:p})),d.top=f+l,d.left=p+l,d.width=r.width+l,d.height=r.height+l,this._trgToolUp('local',{component:o,el:u,top:f,left:p,width:r.width,height:r.height})}else this.lastHovered=0},_upToolbar:Object(l["debounce"])((function(){this.updateToolsGlobal({force:1})})),_trgToolUp:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.em.trigger('canvas:tools:update',w({type:t},e))},updateToolsGlobal:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getElSelected(),n=e.el,r=e.pos,i=e.component;if(!n)return this.toggleToolsEl(),void(this.lastSelected=0);var o=this.canvas,a=this.lastSelected!==n;(a||t.force)&&(this.lastSelected=n,this.updateToolbar(i));var s='px',c=this.toggleToolsEl(1),l=c.style,u=o.getTargetToElementFixed(n,o.getToolbarEl(),{pos:r}),d=u.canvasOffsetTop,h=u.canvasOffsetLeft;l.top=d+s,l.left=h+s,l.width=r.width+s,l.height=r.height+s,this.updateToolbarPos({top:u.top,left:u.left}),this._trgToolUp('global',{component:i,el:c,top:d,left:h,width:r.width,height:r.height})},updateAttached:Object(l["debounce"])((function(){this.updateGlobalPos()})),onContainerChange:Object(l["debounce"])((function(){this.em.refreshCanvas()}),150),getElementPos:function(t){return this.canvas.getCanvasView().getElementPos(t)},hideBadge:function(){this.getBadge().style.display='none'},cleanPrevious:function(t){t&&t.set({status:'',state:''})},getContentWindow:function(){return this.canvas.getWindow()},run:function(t){this.editor=t&&t.get('Editor'),this.enable()},stop:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.em,i=this.editor;this.onHovered(),this.stopSelectComponent(),!n.preserveSelected&&r.setSelected(null),this.toggleToolsEl(),i&&i.stopCommand('resize')}}},function(t,e,n){"use strict";n.d(e,"a",(function(){return f}));var r=n(2),i=n.n(r),o=n(10),a=n.n(o),s=n(11),c=n.n(s),l=n(0),u=n(3);function d(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function h(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return a()(this,t),this.opts={container:null,onStart:null,onDrag:null,onEnd:null,setPosition:null,getPosition:null,guidesStatic:null,guidesTarget:null,snapOffset:5,doc:0,scale:1},Object(l["bindAll"])(this,'drag','stop','keyHandle','handleScroll'),this.setOptions(e),this.delta={x:0,y:0},this}return c()(t,[{key:"setOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.opts=h(h({},this.opts),t)}},{key:"toggleDrag",value:function(t){var e=this.getDocumentEl(),n=this.getContainerEl(),r=this.getWindowEl(),i=t?'on':'off',o={on:u["y"],off:u["x"]};o[i](n,'mousemove dragover',this.drag),o[i](e,'mouseup dragend touchend',this.stop),o[i](e,'keydown',this.keyHandle),o[i](r,'scroll',this.handleScroll)}},{key:"handleScroll",value:function(){var t=this.lastScroll,e=this.delta,n=this.getScrollInfo(),r={x:n.x-t.x,y:n.y-t.y};this.move(e.x+r.x,e.y+r.y),this.lastScrollDiff=r}},{key:"start",value:function(t){var e=this.opts,n=e.onStart;this.toggleDrag(1),this.startPointer=this.getPointerPos(t),this.guidesStatic=Object(l["result"])(e,'guidesStatic')||[],this.guidesTarget=Object(l["result"])(e,'guidesTarget')||[],Object(l["isFunction"])(n)&&n(t,this),this.startPosition=this.getStartPosition(),this.lastScrollDiff={x:0,y:0},this.globScrollDiff={x:0,y:0},this.drag(t)}},{key:"drag",value:function(t){var e=this,n=this.opts,r=this.lastScrollDiff,i=this.globScrollDiff,o=n.onDrag,a=this.startPointer,s=this.getPointerPos(t),c={x:i.x+r.x,y:i.y+r.y};this.globScrollDiff=c;var u={x:s.x-a.x+c.x,y:s.y-a.y+c.y};this.lastScrollDiff={x:0,y:0};var d=this.lockedAxis;'x'===(d=t.shiftKey?!d&&this.detectAxisLock(u.x,u.y):null)?u.x=a.x:'y'===d&&(u.y=a.y);var f=function(r){['x','y'].forEach((function(t){return r[t]=r[t]*Object(l["result"])(n,'scale')})),e.delta=r,e.move(r.x,r.y),Object(l["isFunction"])(o)&&o(t,e)},p=h({},u);if(this.currentPointer=s,this.lockedAxis=d,this.lastScroll=this.getScrollInfo(),f(u),this.guidesTarget.length){var g=this.snapGuides(p),v=g.newDelta,m=g.trgX,b=g.trgY;(m||b)&&f(v)}0===t.which&&this.stop(t)}},{key:"snapGuides",value:function(t){var e=this,n=t,r=this.trgX,i=this.trgY;return this.guidesTarget.forEach((function(n){n.x&&e.trgX||n.y&&e.trgY||(n.active=0,e.guidesStatic.forEach((function(o){if(!(n.y&&o.x||n.x&&o.y)){var a=n.y&&o.y,s=a?'y':'x',c=n[s],u=o[s],d=t[s],h=a?i:r;if(e.isPointIn(c,u)&&Object(l["isUndefined"])(h)){var f=d-(c-u);e.setGuideLock(n,f)}}})))})),r=this.trgX,i=this.trgY,['x','y'].forEach((function(r){var i=r.toUpperCase(),o=e["trg".concat(i)];o&&!e.isPointIn(t[r],o.lock)&&(e.setGuideLock(o,null),o=null),o&&!Object(l["isUndefined"])(o.lock)&&(n[r]=o.lock)})),{newDelta:n,trgX:this.trgX,trgY:this.trgY}}},{key:"isPointIn",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.offset,i=r||this.opts.snapOffset;return t>=e&&t<=e+i||t<=e&&t>=e-i}},{key:"setGuideLock",value:function(t,e){var n=Object(l["isUndefined"])(t.x)?'Y':'X',r="trg".concat(n);return null!==e?(t.active=1,t.lock=e,this[r]=t):(delete t.active,delete t.lock,delete this[r]),t}},{key:"stop",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.delta,r=e.cancel,i=r?0:n.x,o=r?0:n.y;this.toggleDrag(),this.lockedAxis=null,this.move(i,o,1);var a=this.opts.onEnd;Object(l["isFunction"])(a)&&a(t,this,{cancelled:r})}},{key:"keyHandle",value:function(t){Object(u["q"])(t)&&this.stop(t,{cancel:1})}},{key:"move",value:function(t,e,n){var r=this.el,i=this.opts,o=this.startPosition;if(o){var a=i.setPosition,s=o.x+t,c=o.y+e;this.position={x:s,y:c,end:n},Object(l["isFunction"])(a)&&a(this.position),r&&(r.style.left="".concat(s,"px"),r.style.top="".concat(c,"px"))}}},{key:"getContainerEl",value:function(){var t=this.opts.container;return t?[t]:this.getDocumentEl()}},{key:"getWindowEl",value:function(){return this.getContainerEl().map((function(t){var e=t.ownerDocument||t;return e.defaultView||e.parentWindow}))}},{key:"getDocumentEl",value:function(t){var e=this.opts.doc;if(t=t||this.el,!this.docs){var n=[document];t&&n.push(t.ownerDocument),e&&n.push(e),this.docs=n}return this.docs}},{key:"getPointerPos",value:function(t){var e=this.opts.getPointerPosition,n=Object(u["j"])(t);return e?e(t):{x:n.clientX,y:n.clientY}}},{key:"getStartPosition",value:function(){var t=this.el,e=this.opts.getPosition,n={x:0,y:0};return Object(l["isFunction"])(e)?n=e():t&&(n={x:parseFloat(t.style.left),y:parseFloat(t.style.top)}),n}},{key:"getScrollInfo",value:function(){var t=this.opts.doc,e=t&&t.body;return{y:e?e.scrollTop:0,x:e?e.scrollLeft:0}}},{key:"detectAxisLock",value:function(t,e){var n=t,r=e,i=Math.abs(n),o=Math.abs(r);return r>=i||r<=-i?'x':n>o||n<-o?'y':void 0}}]),t}()},function(t,e,n){"use strict";var r=n(1),i=n.n(r),o=i.a.$;e["a"]=i.a.View.extend({events:{change:'handleChange'},template:function(){return"")},inputClass:function(){return"".concat(this.ppfx,"field")},holderClass:function(){return"".concat(this.ppfx,"input-holder")},initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.ppfx||'';this.opts=t,this.ppfx=e,this.em=t.target||{},this.listenTo(this.model,'change:value',this.handleModelChange)},elementUpdated:function(){this.model.trigger('el:change')},setValue:function(t){var e=this.model,n=t||e.get('defaults'),r=this.getInputEl();r&&(r.value=n)},handleModelChange:function(t,e,n){this.setValue(e,n)},handleChange:function(t){t.stopPropagation();var e=this.getInputEl().value;this.model.set({value:e},{fromInput:1}),this.elementUpdated()},getInputEl:function(){if(!this.inputEl){var t=this.model,e=this.opts.type||'text',n=t.get('placeholder')||t.get('defaults')||t.get('default')||'';this.inputEl=o(""))}return this.inputEl.get(0)},render:function(){this.inputEl=null;var t=this.$el;return t.addClass(this.inputClass()),t.html(this.template()),t.find(".".concat(this.holderClass())).append(this.getInputEl()),this}})},function(t,e,n){t.exports=n(90)},function(t,e,n){"use strict";n.r(e);var r=n(1),i=n.n(r),o=n(9);e["default"]=i.a.View.extend({initialize:function(t){this.config=t.config||{},this.pfx=this.config.stylePrefix||'',this.target=t.target||{},this.propTarget=t.propTarget||{},this.onChange=t.onChange,this.onInputRender=t.onInputRender||{},this.customValue=t.customValue||{},this.properties=[];var e=this.collection;this.listenTo(e,'add',this.addTo),this.listenTo(e,'reset',this.render)},addTo:function(t,e,n){this.add(t,null,n)},add:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=e||this.el,i=new t.typeView({model:t,name:t.get('name'),id:this.pfx+t.get('property'),target:this.target,propTarget:this.propTarget,onChange:this.onChange,onInputRender:this.onInputRender,config:this.config});'composite'!=t.get('type')&&(i.customValue=this.customValue),i.render();var a=i.el;this.properties.push(i),i.updateVisibility(),Object(o["b"])(r,a,n.at)},render:function(){var t=this,e=this.$el;this.clearItems();var n=document.createDocumentFragment();return this.collection.each((function(e){return t.add(e,n)})),e.empty(),e.append(n),e.attr('class',"".concat(this.pfx,"properties")),this},remove:function(){i.a.View.prototype.remove.apply(this,arguments),this.clearItems()},clearItems:function(){this.properties.forEach((function(t){return t.remove()})),this.properties=[]}})},function(t,e,n){"use strict";var r=n(0),i=n(1),o=n.n(i);e["a"]=o.a.View.extend({itemView:'',itemsView:'',itemType:'type',autoAdd:0,initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;this.config=e||t.config||{},this.autoAdd&&this.listenTo(this.collection,'add',this.addTo),this.items=[],this.init()},init:function(){},addTo:function(t){this.add(t)},itemViewNotFound:function(t){var e=this.config,n=this.ns,r=e.em,i="".concat(n?"[".concat(n,"]: "):'',"'").concat(t,"' type not found");r&&r.logWarning(i)},add:function(t,e){var n,i=this.config,o=this.reuseView,a=this.items,s=this.itemsView,c=void 0===s?{}:s,l=e||null,u=this.itemView,d=t.get(this.itemType);c[d]?u=c[d]:!d||c[d]||Object(r["includes"])(['button','checkbox','color','date','datetime-local','email','file','hidden','image','month','number','password','radio','range','reset','search','submit','tel','text','time','url','week'],d)||this.itemViewNotFound(d),n=t.view&&o?t.view:new u({model:t,config:i},i),a&&a.push(n);var h=n.render().el;l?l.appendChild(h):this.$el.append(h)},render:function(){var t=document.createDocumentFragment();return this.clearItems(),this.$el.empty(),this.collection.length&&this.collection.each((function(e){this.add(e,t)}),this),this.$el.append(t),this.onRender(),this},onRender:function(){},onRemoveBefore:function(){},onRemove:function(){},remove:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.items;this.onRemoveBefore(e,t),this.clearItems(),o.a.View.prototype.remove.apply(this,arguments),this.onRemove(e,t)},clearItems:function(){this.items}})},function(t,e,n){"use strict";var r=n(8),i=n.n(r),o=n(2),a=n.n(o),s=n(19),c=n.n(s),l=n(1),u=n.n(l),d=n(0),h=n(5),f=["at"];function p(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function g(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:[],r=e||[];return r.forEach((function(e){n.push(e.getId()),t(e.components(),n)})),n},m=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.map((function(e){n.push(e.getId()),t(e.components(),n)})),n};e["a"]=u.a.Collection.extend({initialize:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.opt=e,this.listenTo(this,'add',this.onAdd),this.listenTo(this,'remove',this.removeChildren),this.listenTo(this,'reset',this.resetChildren);var n=e.em,r=e.config;this.config=r,this.em=n,this.domc=e.domc||n&&n.get('DomComponents')},resetChildren:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this,i=n.previousModels||[],o=i.filter((function(e){return!t.get(e.cid)})),a=m(t);n.keepIds=v(i).filter((function(t){return a.indexOf(t)>=0})),o.forEach((function(t){return e.removeChildren(t,r,n)})),t.each((function(t){return e.onAdd(t)}))},removeChildren:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t){var i=this.domc,o=this.em,a=i?i.allById():{},s=r.temporary;if(t.prevColl=this,!s){var c=t.getId(),l=o.get('SelectorManager').getAll(),u=o.get('CssComposer').getAll(),d=(r.keepIds||[]).indexOf(c)<0;delete a[c];var h=d?u.remove(u.filter((function(t){return t.getSelectors().getFullString()==="#".concat(c)})),r):[];l.remove(h.map((function(t){return t.getSelectors().at(0)}))),t.opt.temporary||(t.removed(),t.trigger('removed'),o.trigger('component:remove',t));var f=t.components();f.forEach((function(t){return n.removeChildren(t,e,r)}))}var p=t.components();o.stopListening(p),o.stopListening(t),o.stopListening(t.get('classes')),t.__postRemove()}},model:function(t,e){var n,r=e.collection.opt,i=r.em,o=i.get('DomComponents').componentTypes;e.em=i,e.config=r.config,e.componentTypes=o,e.domc=r.domc;for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:{},n=this.em,r=this.domc,i=n.get('CssComposer'),o=n.get('Parser').parseHtml(t);if(h["a"].checkId(o.html,o.css,r.componentsById,e),o.css&&i&&!e.temporary){e.at;var a=c()(e,f);i.addCollection(o.css,g(g({},a),{},{extend:1}))}return o.html},add:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.parent;n.keepIds=v(n.previousModels),Object(d["isString"])(t)?t=this.parseString(t,n):Object(d["isArray"])(t)&&t.forEach((function(r,i){if(Object(d["isString"])(r)){var o=e.parseString(r,n);t[i]=Object(d["isArray"])(o)&&!o.length?null:o}}));var r=Object(d["isArray"])(t);t=(r?t:[t]).filter((function(t){return t})).map((function(t){return e.processDef(t)})),t=r?Object(d["flatten"])(t,1):t[0];var i=u.a.Collection.prototype.add.apply(this,[t,n]);return this.__firstAdd=i,i},processDef:function(t){if(t.cid&&t.ccid)return t;var e=this.em,n=this.config,r=(void 0===n?{}:n).processor,o=t;if(r){var a=r(o=g({},o));a&&(Object(d["each"])(o,(function(t,e){return delete o[e]})),Object(d["extend"])(o,a))}if(o.$$typeof&&'object'==i()(o.props)){(o=g({},o)).props=g({},o.props);var s=e.get('DomComponents'),c=e.get('Parser').parserHtml;Object(d["each"])(o,(function(t,e){Object(d["includes"])(['props','type'],e)||delete o[e]}));var l=o.props,u=l.children;delete l.children,delete o.props;var h=c.splitPropsFromAttr(l);o.attributes=h.attrs,u&&(o.components=u),o.type?s.getType(o.type)||(o.tagName=o.type,delete o.type):o.type='textnode',Object(d["extend"])(o,h.props)}return o},onAdd:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.domc,i=this.em,o=t.getStyle(),a=i&&i.getConfig('avoidInlineStyle');if(r&&r.Component.ensureInList(t),!Object(d["isEmpty"])(o)&&!a&&i&&i.get&&i.getConfig('forceClass')&&!n.temporary){var s=t.cid;i.get('CssComposer').setClassRule(s,o);t.setStyle({}),t.addClass(s)}t.__postAdd({recursive:1}),this.__onAddEnd()},__onAddEnd:Object(d["debounce"])((function(){}))})},function(t,e,n){"use strict";n.r(e);var r=n(1),i=n.n(r);i.a.$;e["default"]=i.a.View.extend({initialize:function(t){this.config=t||{},this.editorModel=this.em=this.config.em||{},this.pfx=this.config.stylePrefix,this.ppfx=this.config.pStylePrefix,this.hoverClass=this.pfx+'hover',this.badgeClass=this.pfx+'badge',this.plhClass=this.pfx+'placeholder',this.freezClass=this.ppfx+'freezed',this.canvas=this.em.get&&this.em.get('Canvas'),this.init(this.config)},onFrameScroll:function(t){},getCanvas:function(){return this.canvas.getElement()},getCanvasBody:function(){return this.canvas.getBody()},getCanvasTools:function(){return this.canvas.getToolsEl()},offset:function(t){var e=t.getBoundingClientRect();return{top:e.top+t.ownerDocument.body.scrollTop,left:e.left+t.ownerDocument.body.scrollLeft}},init:function(t){},callRun:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.id;if(t.trigger("run:".concat(n,":before"),e),!e||!e.abort){var r=e.sender||t,i=this.run(t,r,e);return t.trigger("run:".concat(n),i,e),t.trigger('run',n,i,e),i}t.trigger("abort:".concat(n),e)},callStop:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.id,r=e.sender||t;t.trigger("stop:".concat(n,":before"),e);var i=this.stop(t,r,e);return t.trigger("stop:".concat(n),i,e),t.trigger('stop',n,i,e),i},stopCommand:function(){this.em.get('Commands').stop(this.id)},run:function(t,e){},stop:function(t,e){}})},function(t,e,n){"use strict";var r=n(2),i=n.n(r),o=n(0),a=n(3),s=n(34);function c(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function l(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Object(o["isString"])(e)&&(e=u(e));var r=this.getStyle(n),i=l({},e);this.set('style',i,n);var s=Object(a["A"])(r,i);return Object(o["keys"])(s).forEach((function(e){var n=t.em;t.trigger("change:style:".concat(e)),n&&(n.trigger("styleable:change",t,e),n.trigger("styleable:change:".concat(e),t,e))})),i},addStyle:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'',n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};'string'==typeof t?t={prop:e}:n=e||{},t=this.extendStyle(t),this.setStyle(t,n)},removeStyle:function(t){var e=this.getStyle();delete e[t],this.setStyle(e)},styleToString:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=[],n=this.getStyle(t);for(var r in n){var i=t.important,a=Object(o["isArray"])(i)?i.indexOf(r)>=0:i,s="".concat(n[r]).concat(a?' !important':''),c='__'==r.substr(0,2);s&&!c&&e.push("".concat(r,":").concat(s,";"))}return e.join('')},getSelectors:function(){return this.get('selectors')||this.get('classes')},getSelectorsString:function(){return this.selectorsToString?this.selectorsToString():this.getSelectors().getFullString()}}},function(t,e,n){"use strict";n.r(e);var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(35),c=n(0),l=n(3);function u(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function d(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.get('id')||'',r=this.get('name')||'';!this.get('property')&&this.set('property',(r||n).replace(/ /g,'-'));var i=this.get('property');!this.get('id')&&this.set('id',i),!r&&this.set('name',Object(l["c"])(i).replace(/-/g,' ')),h.callInit(this,t,e)},init:function(){},clearValue:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.set({value:void 0,status:''},t),this},setValue:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.parseValue(t),i=!e;!i&&this.set({value:void 0},{avoidStore:i,silent:!0}),this.set(r,d({avoidStore:i},n))},setValueFromInput:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.setValue(t,e,d(d({},n),{},{fromInput:1}))},parseValue:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={value:t},r='!important';if(Object(c["isString"])(t)&&-1!==t.indexOf(r)&&(n.value=t.replace(r,'').trim(),n.important=1),!this.get('functionName')&&!e.complete)return n;var i=[],o="".concat(n.value),a=o.indexOf('(')+1,s=o.lastIndexOf(')'),l=o.substring(0,a-1);if(l&&(n.functionName=l),i.push(a),s>=0&&i.push(s),n.value=String.prototype.substring.apply(o,i),e.numeric){var u=parseFloat(n.value);n.unit=n.value.replace(u,''),n.value=u}return n},splitValues:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:',',n=[],r='(',i=')',o='',a=0;return(t||'').split('').forEach((function(t){t==r?(a++,o+=r):t==i&&a>0?(a--,o+=i):t===e&&0==a?(n.push(o),o=''):o+=t})),''!==o&&n.push(o),n.map((function(t){return t.trim()}))},getDefaultValue:function(){return this.get('defaults')},getFullValue:function(t){var e=this.get('functionName'),n=this.getDefaultValue(),r=Object(c["isUndefined"])(t)?this.get('value'):t,i=!Object(c["isUndefined"])(r)&&''!==r;if(r&&n&&r===n)return n;if(e&&i){var o='url'===e?"'".concat(r.replace(/'/g,''),"'"):r;r="".concat(e,"(").concat(o,")")}return i&&this.get('important')&&(r="".concat(r," !important")),r||''}},{callParentInit:function(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};t.prototype.initialize.apply(e,[n,d(d({},r),{},{skipInit:1})])},callInit:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!n.skipInit&&t.init(e,n)}}),f=h;function p(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function g(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};f.callParentInit(f,this,t,e);var r=this.get('properties')||[],i=n(29).default;this.set('properties',new i(r)),this.listenTo(this,'change:value',this.updateValues),f.callInit(this,t,e)},clearValue:function(){return this.get('properties').each((function(t){return t.clearValue()})),f.prototype.clearValue.apply(this,arguments)},updateValues:function(){var t=this.getFullValue().split(this.getSplitSeparator());this.get('properties').each((function(e,n){var r=t.length;t[n]||t[n%r+(1!=r&&r%2?1:0)]}))},getSplitSeparator:function(){return new RegExp("".concat(this.get('separator'),"(?![^\\(]*\\))"))},getDefaultValue:function(t){var e=this.get('defaults');return e&&!t?e:(e='',this.get('properties').each((function(t,n){return e+="".concat(t.getDefaultValue()," ")})),e.trim())},getFullValue:function(){return this.get('detached')?'':this.get('properties').getFullValue()},getPropertyAt:function(t){return this.get('properties').at(t)}}),m=a.a.Model.extend({defaults:{index:'',value:'',values:{},active:!1,preview:!1,properties:[]},initialize:function(){var t=this.get('properties'),e=this.get('value');this.set('properties',t instanceof xt?t:new xt(t));var n=this.get('properties');if(n.forEach(this.onPropAdd,this),this.listenTo(n,'add',this.onPropAdd),!e){var r='',i=this.get('values');for(var o in i)r+=' '+i[o];this.set('value',r.trim())}},onPropAdd:function(t){var e=this.collection;t.parent=e&&e.property},getPropertyAt:function(t){return this.get('properties').at(t)},getPropertyValue:function(t){var e='';return this.get('properties').each((function(n){n.get('property')==t&&(e=n.getFullValue())})),e},getFullValue:function(){var t=[];return this.get('properties').each((function(e){return t.push(e.getFullValue())})),t.join(' ').trim()}});function b(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function y(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};v.callParentInit(v,this,t,e);var n=this.get('layers'),r=new w(n);r.property=this,r.properties=this.get('properties'),this.set('layers',r),v.callInit(this,t,e)},getLayers:function(){return this.get('layers')},getCurrentLayer:function(){return this.getLayers().filter((function(t){return t.get('active')}))[0]},getFullValue:function(){return this.get('detached')?'':this.get('layers').getFullValue()},getValueFromStyle:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.getLayers().getLayersFromStyle(t);return new w(e).getFullValue()},clearValue:function(){return this.getLayers().reset(),v.prototype.clearValue.apply(this,arguments)},getValueFromTarget:function(t){var e=this.attributes,n=e.detached,r=e.property,i=e.properties,o=t.getStyle(),a={};return i.forEach((function(t){var e=t.get('property'),n=o[e];n&&(a[e]=n)})),n?Object(c["keys"])(a).length?a:'':o[r]},getLayersFromTarget:function(t){}}),S=n(19),k=n.n(S),j=["status","value"],T=["complete"];function P(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function E(t){for(var e=1;e\n
\n ")},templateLabel:function(t){var e=this.pfx,n=this.em,r=t.parent,i=t.attributes,o=i.icon,a=void 0===o?'':o,s=i.info,c=void 0===s?'':s,l=i.id,u=i.name,d=n&&n.t("styleManager.properties.".concat(l))||u;return"\n \n ").concat(d,"\n \n ").concat(r?'':""),"\n ")},templateInput:function(t){return"\n
\n \n
\n ")},events:i()({change:'inputValueChanged'},"click [".concat(M,"]"),'clear'),initialize:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object(c["bindAll"])(this,'targetUpdated','__change','__updateStyle'),this.config=e.config||{};var n=this.config.em;this.em=n,this.pfx=this.config.stylePrefix||'',this.ppfx=this.config.pStylePrefix||'',this.target=e.target||{},this.propTarget=e.propTarget||{},this.onChange=e.onChange,this.onInputRender=e.onInputRender||{},this.customValue=e.customValue||{};var r=this.model;this.property=r.get('property'),this.input=null;var i=this.pfx;if(this.inputHolderId='#'+i+'input-holder',this.sector=r.collection&&r.collection.sector,this.__destroyFn=this.destroy?this.destroy.bind(this):function(){},r.view=this,r.get('value')||r.set('value',r.getDefaultValue()),n){this.listenTo(n,"update:component:style:".concat(this.property),this.targetUpdated);var o=r.get('requires')||{};Object.keys(o).forEach((function(e){t.listenTo(n,"component:styleUpdate:".concat(e),t.targetUpdated)}))}this.listenTo(this.propTarget,'update',this.targetUpdated),this.listenTo(r,'destroy remove',this.remove),this.listenTo(r,'change:value',this.modelValueChanged),this.listenTo(r,'targetUpdated',this.targetUpdated),this.listenTo(r,'change:visible',this.updateVisibility),this.listenTo(r,'change:status',this.updateStatus),this.listenTo(r,'change:name change:className change:full',this.render);var a=this.init&&this.init.bind(this);a&&a()},remove:function(){var t=this;a.a.View.prototype.remove.apply(this,arguments),['em','target','input','$input','propTarget','sector'].forEach((function(e){return t[e]={}})),this.__destroyFn(this._getClbOpts())},updateStatus:function(){var t=this.model,e=t.get('status'),n=t.parent,r=this.pfx,i=this.ppfx,o=this.config,a="".concat(i,"four-color"),s="".concat(i,"color-warn"),c=this.$el.children(".".concat(r,"label")),l=this.getClearEl(),u=l?l.style:{};switch(c.removeClass("".concat(a," ").concat(s)),u.display='none',e){case'updated':!n&&c.addClass(a),o.clearProperties&&(u.display='inline');break;case'computed':c.addClass(s)}},clear:function(t){var e=this;t&&t.stopPropagation(),this.model.clearValue(),this.__unset(),setTimeout((function(){return e.targetUpdated()}))},getClearEl:function(){return this.clearEl||(this.clearEl=this.el.querySelector("[".concat(M,"]"))),this.clearEl},getTarget:function(){return this.getTargetModel()},getTargets:function(){return this.propTarget.targets||[this.getTarget()]},getFirstTarget:function(){return this.getTargets()[0]},getTargetModel:function(){return this.propTarget&&this.propTarget.model},getHelperModel:function(){return this.propTarget&&this.propTarget.helper},inputValueChanged:function(t){t&&t.stopPropagation(),this.emit||(this.model.setValueFromInput(this.getInputValue()),this.elementUpdated())},elementUpdated:function(){this.setStatus('updated')},setStatus:function(t){this.model.set('status',t);var e=this.model.parent;e&&'updated'==t&&e.set('status',t)},emitUpdateTarget:Object(c["debounce"])((function(){var t=this.config.em;t&&t.trigger('styleManager:update:target',this.getFirstTarget())})),_getTargetData:function(){var t=this.model,e=this.config,n=this.getTargetValue({ignoreDefault:1}),r=t.getDefaultValue(),i=this.getComputedValue(),o='',a='';return n?(o=n,e.highlightChanged&&(a='updated')):i&&e.showComputed&&i!=r?(o=i,e.highlightComputed&&(a='computed')):(o=r,a=''),{value:o,status:a,targetValue:n,defaultValue:r,computedValue:i}},targetUpdated:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!this.config.fromLayer&&(this.emitUpdateTarget(),this.checkVisibility())){var r=this.config,i=r.em,o=this.model,a=o.get('property'),s=this._getTargetData(),c=s.status,l=s.value,u=k()(s,j),d=E({status:c,value:l},u);return this.setStatus(c),o.setValue(l,0,E({fromTarget:1},n)),this.__update(l),i&&(i.trigger('styleManager:change',this,a,l,d),i.trigger("styleManager:change:".concat(a),this,l,d),this._emitUpdate(d)),d}},_emitUpdate:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=this.model;if(e){var r=n.get('property'),i=E(E({},this._getEventData()),t),o=i.id;e.trigger('style:update',i),e.trigger("style:update:".concat(r),i),r!==o&&e.trigger("style:update:".concat(o),i)}},_getEventData:function(){var t=this.model;return{propertyView:this,targets:this.getTargets(),value:t.getFullValue(),property:t,id:t.get('id'),name:t.get('property')}},checkVisibility:function(){var t=1;return this.config.hideNotStylable&&(this.isTargetStylable()&&this.isComponentStylable()?this.show():(this.hide(),t=0),this.sector&&this.sector.trigger('updateVisibility')),t},getTargetValue:function(){var t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=this.model,r=this.getFirstTarget(),i=this.customValue;if(!r)return t;if((t=r.getStyle()[n.get('property')])||e.ignoreDefault||(t=n.getDefaultValue()),'function'==typeof i&&!e.ignoreCustomValue){var o=n.collection.indexOf(n),a=i(this,o,t);a&&(t=a)}return t},getComputedValue:function(){var t=this.propTarget,e=t.computed||{},n=t.computedDefault||{},r=this.config.avoidComputed||[],i=this.model.get('property'),o=r.indexOf(i)<0,a=e[i],s=n[Object(l["b"])(i)];return e&&o&&s!==a&&a||''},getInputValue:function(){var t=this.getInputEl();return t?t.value:''},modelValueChanged:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=this.model,a=o.getFullValue();if(r.fromInput||this.setValue(a),!r.fromTarget){this.getTargets().forEach((function(t){return n.__updateTarget(t,r)}));var s=this.config.em;if(!s)return;var c=o.get('property'),l=i()({},c,a);s.getSelectedAll().forEach((function(t){!r.noEmit&&s.trigger('component:update',t,l,r),s.trigger(D,t,c,r),s.trigger("".concat(D,":").concat(c),t,a,r),t.trigger("change:style",t,l,r),t.trigger("change:style:".concat(c),t,a,r)}))}},__updateTarget:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.model,r=n.getFullValue(),i=this.onChange;t&&this.isComponentStylable()&&(e.fromTarget||(i&&!e.fromParent?i(t,this,e):this.updateTargetStyle(r,null,E(E({},e),{},{target:t}))),this._emitUpdate())},updateTargetStyle:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'',n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=e||this.model.get('property'),i=n.target||this.getFirstTarget(),o=i.getStyle();t?o[r]=t:delete o[r],n.avoidStore?o.__=1:delete o.__,i.setStyle(o,n);var a=this.getHelperModel();a&&a.setStyle(o,n)},isTargetStylable:function(t){var e=t||this.getFirstTarget(),n=this.model,r=n.get('id'),i=n.get('property'),o=n.get('toRequire'),a=e.get('unstylable'),s=e.get('stylable-require'),l=n.get('requires'),u=n.get('requiresParent'),d=this.sector?this.sector.collection:null,h=this.em?this.em.getSelected():null,f=e.get('stylable');if(Object(c["isArray"])(f)&&(f=f.indexOf(i)>=0),Object(c["isArray"])(a)&&(f=a.indexOf(i)<0),o&&(f=!t||s&&(s.indexOf(r)>=0||s.indexOf(i)>=0)),d&&l){var p=Object.keys(l);d.each((function(t){t.get('properties').each((function(t){if(Object(c["includes"])(p,t.id)){var e=l[t.id];f=f&&Object(c["includes"])(e,t.get('value'))}}))}))}if(u){var g=h&&h.parent(),v=g&&g.getEl();if(v){var m=window.getComputedStyle(v);Object(c["each"])(u,(function(t,e){f=f&&m[e]&&Object(c["includes"])(t,m[e])}))}else f=!1}return f},isComponentStylable:function(){var t=this.em,e=t&&t.getSelected();return!e||this.isTargetStylable(e)},setRawValue:function(t){this.setValue(this.model.parseValue(t))},setValue:function(t){var e=this.model,n=Object(c["isUndefined"])(t)?e.getDefaultValue():t;if(this.update)return this.__update(n);var r=this.getInputEl();r&&(r.value=n)},getInputEl:function(){return this.input||(this.input=this.el.querySelector('input')),this.input},updateVisibility:function(){this.el.style.display=this.model.get('visible')?'':'none'},show:function(){this.model.set('visible',1)},hide:function(){this.model.set('visible',0)},cleanValue:function(){this.setValue('')},clearCached:function(){this.clearEl=null,this.input=null,this.$input=null},__unset:function(){var t=this.unset&&this.unset.bind(this);t&&t(this._getClbOpts())},__update:function(t){var e=this.update&&this.update.bind(this);e&&e(E(E({},this._getClbOpts()),{},{value:t}))},__change:function(){for(var t=this.emit&&this.emit.bind(this),e=arguments.length,n=new Array(e),r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=e.complete,r=k()(e,T),i=this.em,o=this.model,a=o.get('property'),s=!1!==n;Object(l["r"])(t)?this.getTargets().forEach((function(e){e.addStyle(t,{avoidStore:!s}),i&&i.trigger(D,e,a,r)})):o.setValueFromInput(t,n,r),s&&this.elementUpdated()},_getClbOpts:function(){var t=this.model,e=this.el,n=this.createdEl,r=this.propTarget,i=t.get('property'),o=r.computed||{},a=r.parentRules||[],s=Object(l["e"])(a,(function(t){return!!t.getStyle()[i]}));return{el:e,createdEl:n,props:t.attributes,setProps:function(){return t.set.apply(t,arguments)},change:this.__change,updateStyle:this.__updateStyle,targets:this.getTargets(),target:this.getFirstTarget(),computed:o,parentRules:a,parentRule:s}},render:function(){this.clearCached();var t=this.pfx,e=this.model,n=this.el,r=this.$el,i=e.get('property'),o=e.get('full'),a=e.get('className')||'',s="".concat(t,"property");this.createdEl&&this.__destroyFn(this._getClbOpts()),r.empty().append(this.template(e)),r.find('[data-sm-label]').append(this.templateLabel(e));var c=this.create&&this.create.bind(this);this.createdEl=c&&c(this._getClbOpts()),r.find('[data-sm-fields]').append(this.createdEl||this.templateInput(e)),n.className="".concat(s," ").concat(t).concat(e.get('type')," ").concat(s,"__").concat(i," ").concat(a).trim(),n.className+=o?" ".concat(s,"--full"):'',this.updateStatus();var l=this.onRender&&this.onRender.bind(this);l&&l(),this.setValue(e.get('value'),{fromTarget:1})}});function _(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function L(t){for(var e=1;e\n \n \n ")},inputValueChanged:function(){if(!this.model.get('detached')){for(var t=arguments.length,e=new Array(t),n=0;n'),this.input=this.$input.get(0)),this.props||(this.props=t.get('properties')),!this.$props)){this.props.each((function(e,n){e&&'composite'==e.get('type')&&(this.props.remove(e),console.warn('Nested composite types not yet allowed.')),e.parent=t}),this);var r=new(0,n(24).default)(this.getPropsConfig());this.$props=r.render().$el,this.properties=r.properties,this.$el.find("#".concat(this.pfx,"input-holder")).append(this.$props)}},getPropsConfig:function(t){var e=this,n=this.model,r={config:L(L({},this.config),{},{highlightComputed:0}),collection:this.props,target:this.target,propTarget:this.propTarget,onChange:function(t,e,r){n.set('value',n.getFullValue(),r)},customValue:function(t,n){return e.valueOnIndex(n,t)}};return n.get('detached')&&delete r.onChange,r},valueOnIndex:function(t,e){var n,r=this.getTargetValue({ignoreDefault:1});r?n=r.split(this.model.getSplitSeparator())[t]:n=e&&e.getTargetValue({ignoreCustomValue:1,ignoreDefault:1});return n},clearCached:function(){A.prototype.clearCached.apply(this,arguments),this.$input=null,this.props=null,this.$props=null}}),F=n(24);function R(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function V(t){for(var e=1;e\n \n \n
").concat(i,"
\n
\n \t
\n
\n
\n ⨯\n
\n
\n
\n ")},initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.model;this.stackModel=t.stackModel,this.config=t.config||{},this.em=this.config.em,this.pfx=this.config.stylePrefix||'',this.ppfx=this.config.pStylePrefix||'',this.sorter=t.sorter||null,this.propsConfig=t.propsConfig||{},this.customPreview=t.onPreview,this.listenTo(e,'destroy remove',this.remove),this.listenTo(e,'change:active',this.updateVisibility),this.listenTo(e.get('properties'),'change',this.updatePreview),e.view=this,e.set({droppable:0,draggable:1}),this.$el.data('model',e)},initSorter:function(t){this.sorter&&this.sorter.startSort(this.el)},removeItem:function(t){t&&t.stopPropagation(),this.remove()},remove:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.model,n=this.props,r=e.collection,i=this.stackModel;a.a.View.prototype.remove.apply(this,arguments),r&&r.contains(e)&&r.remove(e),i&&i.set&&(i.set({stackIndex:null},{silent:!0}),!t.fromTarget&&i.trigger('updateValue')),n&&n.remove()},onPreview:function(t){var e=this.stackModel,n=e&&e.get('detached'),r=t.split(' '),i=3,o=[],a={};return this.model.get('properties').each((function(t,e){var s=t.get('property'),c=n?t.getFullValue():r[e]||'';if(c&&'integer'==t.get('type')){var l=parseInt(c,10),u=c.replace(l,'');c=(l=(l=(l=isNaN(l)?0:l)>i?i:l)<-i?-i:l)+u}o.push(c),a[s]=c})),n?a:o.join(' ')},updatePreview:function(){var t=this.stackModel,e=this.customPreview,n=this.getPreviewEl(),r=this.model.getFullValue(),i=e?e(r):this.onPreview(r);if(i&&t&&n){var o=n.style;if(Object(c["isString"])(i))o[t.get('property')]=i;else{var a=[];Object(c["each"])(i,(function(t,e){return a.push("".concat(e,":").concat(t))})),n.setAttribute('style',a.join(';'))}}},getPropertiesWrapper:function(){return this.propsWrapEl||(this.propsWrapEl=this.el.querySelector('[data-properties]')),this.propsWrapEl},getPreviewEl:function(){return this.previewEl||(this.previewEl=this.el.querySelector('[data-preview]')),this.previewEl},active:function(){var t=this.model,e=t.collection;e.active(e.indexOf(t))},updateVisibility:function(){var t=this.pfx,e=this.getPropertiesWrapper(),n=this.model.get('active');e.style.display=n?'':'none',this.$el[n?'addClass':'removeClass']("".concat(t,"active"))},render:function(){var t=this.propsConfig,e=this.model,n=this.el,r=this.pfx,i=e.get('preview'),o=new F["default"]({collection:e.get('properties'),config:V(V({},this.config),{},{fromLayer:1}),target:t.target,customValue:t.customValue,propTarget:t.propTarget,onChange:t.onChange}),a=o.render().el;return n.innerHTML=this.template(e),n.className="".concat(r,"layer").concat(i?'':" ".concat(r,"no-preview")),this.props=o,this.getPropertiesWrapper().appendChild(a),this.updateVisibility(),this.updatePreview(),this}}),H=a.a.View.extend({initialize:function(t){this.config=t.config||{},this.stackModel=t.stackModel,this.preview=t.preview,this.pfx=this.config.stylePrefix||'',this.ppfx=this.config.pStylePrefix||'',this.propsConfig=t.propsConfig;var e=this.pfx,n=this.ppfx,r=this.collection;this.className="".concat(e,"layers ").concat(n,"field"),this.listenTo(r,'add',this.addTo),this.listenTo(r,'deselectAll',this.deselectAll),this.listenTo(r,'reset',this.reset),this.items=[];var i=this.config.em||'',o=i?i.get('Utils'):'';this.sorter=o?new o.Sorter({container:this.el,ignoreViewChildren:1,containerSel:".".concat(e,"layers"),itemSel:".".concat(e,"layer"),pfx:this.config.pStylePrefix}):'',r.view=this,this.$el.data('model',r),this.$el.data('collection',r)},addTo:function(t){var e=this.collection.indexOf(t);this.addToCollection(t,null,e)},addToCollection:function(t,e,n){var r=e||null,i=this.stackModel,o=this.config,a=this.sorter,s=this.propsConfig;void 0!==this.preview&&t.set('preview',this.preview);var c=new z({model:t,config:o,sorter:a,stackModel:i,propsConfig:s}),l=c.render().el;if(this.items.push(c),r)r.appendChild(l);else if(void 0!==n){var u='before';this.$el.children().length==n&&(n--,u='after'),n<0?this.$el.append(l):this.$el.children().eq(n)[u](l)}else this.$el.append(l);return l},deselectAll:function(){this.$el.find('.'+this.pfx+'layer').removeClass(this.pfx+'active')},reset:function(t,e){this.clearItems(e),this.render()},render:function(){var t=document.createDocumentFragment();return this.$el.empty(),this.collection.each((function(e){this.addToCollection(e,t)}),this),this.$el.append(t),this.$el.attr('class',this.className),this.sorter&&(this.sorter.plh=null),this},remove:function(){this.clearItems(),a.a.View.prototype.remove.apply(this,arguments)},clearItems:function(t){this.items.forEach((function(e){return e.remove(t)})),this.items=[]}});function U(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}var B=new(n(36)["a"]),$=I.extend({templateInput:function(){var t=this.pfx;this.ppfx;return"\n
\n \n
\n
\n ")},init:function(){var t=this.model;this.pfx;t.set('stackIndex',null),this.events["click [data-add-layer]"]='addLayer',this.listenTo(t,'change:stackIndex',this.indexChanged),this.listenTo(t,'updateValue',this.inputValueChanged),this.delegateEvents();var e=this.getPropsConfig();this.layers=new H({collection:this.getLayers(),stackModel:t,preview:t.get('preview'),config:this.config,propsConfig:e});var r=n(24).default;this.propsView=new r({target:this.target,collection:t.get('properties'),stackModel:t,config:this.config,onChange:e.onChange,propTarget:e.propTarget})},targetUpdated:function(){var t,e=this;if(this.model.get('detached'))t=this._getTargetData(),this.setStatus(t.status),this.checkVisibility();else{for(var n=arguments.length,r=new Array(n),i=0;i0&&void 0!==arguments[0]?arguments[0]:{},e=this.model;t.up&&this.elementUpdated(),e.get('detached')?e.get('properties').each((function(t){return t.trigger('change:value')})):e.set('value',this.getLayerValues())},setValue:function(){},getLayerValues:function(){return this.getLayers().getFullValue()},_getClassRule:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.em,n=t.skipAdd,r=void 0===n?1:n,i=e.getSelected(),o=e.get('StyleManager').getModelToStyle(i,{skipAdd:r,useClasses:1});return o!==i&&o},_getParentTarget:function(t){for(var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em,i=this.model,o=i.get('property'),a=n.isValid||function(t){return t.getStyle()[o]},s=r.get('CssComposer').getAll().filter((function(e){return e.selectorsToString()===t.getSelectorsString()})),c=s.reduce((function(t,e){return t[e.getAtRule()]=e,t}),{}),l=B.sortMediaObject(c),u=l.map((function(t){return t.value})),d=u.indexOf(t),h=u.splice(0,d),f=h.length-1;f>-1;f--){var p=h[f];if(a(p)){e=p;break}}return e},refreshLayers:function(){var t,e,n,r,i,o,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=[],l=this.model,u=this.em,d=this.getLayers(),h=l.get('detached'),f=l.get('property'),p=this.getFirstTarget(),g=this.getComputedValue(),v=u.getSelected(),m={fromTarget:1};if(h){e=a.targetValue||{};var b=function(t){var e=l.get('properties').at(0).get('property');return t&&!Object(c["isUndefined"])(t.getStyle()[e])};if(!Object(c["keys"])(e).length&&g&&v){var y={isValid:function(t){return b(t)}};(r=this._getParentTarget(p,y))?e=r.getStyle():(n=this._getClassRule(),r=!(i=b(n)&&n.getStyle())&&this._getParentTarget(this._getClassRule({skipAdd:0}),y),o=b(r)&&r.getStyle(),e=i||o||{})}t=e,s=d.getLayersFromStyle(e)}else{var w=this.getTargetValue({ignoreDefault:1}),x=w;!x&&g&&((r=this._getParentTarget(p))?x=r.getStyle()[f]:(o=(r=!(i=(n=this._getClassRule())&&n.getStyle()[f])&&this._getParentTarget(this._getClassRule({skipAdd:0})))&&r.getStyle()[f],x=i||o||g)),t=x=x==l.getDefaultValue()?'':x,s=d.getLayersFromValue(x)}var O=l.getLayersFromTarget(p,{resultValue:t,layersObj:s})||s;d.reset(null,m),d.add(O,m),l.set({stackIndex:null},{silent:!0})},getTargetValue:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.model,n=e.attributes.detached,r=this.getFirstTarget(),i=I.prototype.getTargetValue.call(this,t);return Object(c["isUndefined"])(i)&&!n?i=e.getValueFromStyle(r.getStyle()):n&&(i=e.getValueFromTarget(r)),i},getPropsConfig:function(){var t=this,e=t.model;return{target:t.target,propTarget:t.propTarget,onChange:function(n,r,o){var a=r.model,s=e.get('status');if(e.get('detached')){var c=a.get('property'),l=a.getDefaultValue(),u=t.getLayers(),d=u.getPropertyValues(c,l);r.updateTargetStyle(d,null,o),'background-image'!=c||o.avoidStore||'computed'!=s||e.get('properties').filter((function(t){return'__'==t.get('property').substr(0,2)})).forEach((function(e){var n=e.get('property'),r=u.getPropertyValues(n,e.getDefaultValue());t.getTargets().forEach((function(t){return t.addStyle(i()({},n,r),o)}))}))}else if('updated'==s){var h=e.getFullValue();e.set('value',h,o),!h&&r.updateTargetStyle(h,null,o)}}}},onRender:function(){var t=this.el,e=this.layers,n=this.propsView,r=t.querySelector('[data-layers-wrapper]');n.render(),r.appendChild(e.render().el)}}),W=a.a.$,q=A.extend({templateInput:function(){var t=this.pfx,e=this.em;return"\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n ")},init:function(){var t=this.em;this.modal=t.get('Modal'),this.am=t.get('AssetManager'),this.events['click #'+this.pfx+'close']='removeFile',this.events['click #'+this.pfx+'images']='openAssetManager',this.delegateEvents()},onRender:function(){if(!this.$input){var t=this.model.getDefaultValue();this.$input=W(""))}this.$preview||(this.$preview=this.$el.find('#'+this.pfx+'preview-file')),this.$previewBox||(this.$previewBox=this.$el.find('#'+this.pfx+'preview-box')),this.setValue(this.componentValue,0)},clearCached:function(){A.prototype.clearCached.apply(this,arguments),this.$preview=null,this.$previewBox=null},setValue:function(t,e){A.prototype.setValue.apply(this,arguments),this.setPreviewView(t&&t!=this.model.getDefaultValue()),this.setPreview(t)},setPreviewView:function(t){var e=this.$previewBox;e&&e[t?'addClass':'removeClass']("".concat(this.pfx,"show")),e&&e.css({display:t?'block':'none'})},spreadUrl:function(t){this.model.set('value',t),this.setPreviewView(1)},setPreview:function(t){var e=this.$preview;t=t&&t.indexOf('url(')<0?"url(".concat(t,")"):t,e&&e.css('background-image',t)},cleanValue:function(){this.setPreviewView(0),this.model.set({value:''},{silent:!0})},removeFile:function(){this.model.set('value',this.model.getDefaultValue());for(var t=arguments.length,e=new Array(t),n=0;n1&&void 0!==arguments[1]?arguments[1]:{};e=J(J({},e),{},{silent:1}),this.inputInst.setValue(t,e)},remove:function(){var t=this;K.prototype.remove.apply(this,arguments);var e=this.inputInst;e&&e.remove&&e.remove(),['inputInst','$color'].forEach((function(e){return t[e]={}}))},onRender:function(){if(!this.input){var t=this.ppfx,e=new Y["a"]({target:this.target,model:this.model,ppfx:t}).render();this.el.querySelector(".".concat(t,"fields")).appendChild(e.el),this.$input=e.inputEl,this.$color=e.colorEl,this.input=this.$input.get(0),this.inputInst=e}}}),Q=n(7),tt=n.n(Q);function et(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function nt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:[];return this.set('options',t),this},addOption:function(t){if(t){var e=this.getOptions();this.setOptions([].concat(tt()(e),[t]))}return this}});function it(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function ot(t){for(var e=1;e\n \n
\n
\n
\n \n ")},initialize:function(){for(var t=arguments.length,e=new Array(t),n=0;n").concat(e,"")}));var r=this.el.querySelector("#".concat(t,"input-holder"));r.innerHTML=""),this.input=r.firstChild}}})),ct=A.extend({templateInput:function(){this.pfx;var t=this.ppfx;return"\n
\n
\n ")},onRender:function(){var t=this.pfx,e=this.ppfx,n="".concat(e,"radio-item-label"),r=this.model,i=r.get('property'),o=r.get('list')||r.get('options')||[],a=r.cid,s="".concat(t,"radio ").concat(t,"radio-").concat(i);if(!this.input&&o&&o.length){var c='';o.forEach((function(r){var o=r.className?"".concat(r.className," ").concat(t,"icon ").concat(n):'',l="".concat(i,"-").concat(r.value,"-").concat(a),u=r.name||r.value,d=r.title?"title=\"".concat(r.title,"\""):'';c+="\n
\n \n \n
\n ")}));var l=this.el.querySelector(".".concat(e,"field"));l.innerHTML="
").concat(c,"
"),this.input=l.firstChild}},getInputValue:function(){var t=this.getCheckedEl();return t?t.value:''},getCheckedEl:function(){var t=this.getInputEl();return t?t.querySelector('input:checked'):''},setValue:function(t){var e=this.model,n=t||e.get('value')||e.getDefaultValue(),r=this.getInputEl(),i=r?r.querySelector("[value=\"".concat(n,"\"]")):'';if(i)i.checked=!0;else{var o=this.getCheckedEl();o&&(o.checked=!1)}}}),lt=n(37);function ut(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function dt(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};f.callParentInit(f,this,t,e);var n=this.get('unit'),r=this.get('units');this.input=new lt["a"]({model:this}),r.length&&!n&&this.set('unit',r[0]),f.callInit(this,t,e)},clearValue:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.set({value:void 0,unit:void 0},t),this},parseValue:function(t){var e=f.prototype.parseValue.apply(this,arguments),n=this.input.validateInputValue(e.value,{deepCheck:1}),r=n.value,i=n.unit;return e.value=r,e.unit=i,e},getFullValue:function(){var t=this.get('value'),e=this.get('unit');return t=Object(c["isUndefined"])(t)?'':t,e=!Object(c["isUndefined"])(e)&&t?e:'',t="".concat(t).concat(e),f.prototype.getFullValue.apply(this,[t])}});function ft(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function pt(t){for(var e=1;e\n \n \n ")},getSliderEl:function(){return this.slider||(this.slider=this.el.querySelector('input[type=range]')),this.slider},inputValueChanged:function(){var t=this.model,e=t.get('step');this.getInputEl().value=this.getSliderEl().value;var n=this.getInputValue()-e;t.set('value',n,{avoidStore:1}).set('value',n+e),this.elementUpdated()},inputValueChangedSoft:function(){this.getInputEl().value=this.getSliderEl().value,this.model.set('value',this.getInputValue(),{avoidStore:1}),this.elementUpdated()},setValue:function(t){var e=this.model.parseValue(t);this.getSliderEl().value=parseFloat(e.value),K.prototype.setValue.apply(this,arguments)},onRender:function(){K.prototype.onRender.apply(this,arguments),this.model.get('showInput')||(this.inputInst.el.style.display='none')},clearCached:function(){K.prototype.clearCached.apply(this,arguments),this.slider=null}});function yt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function wt(t){for(var e=1;e2&&void 0!==arguments[2]?arguments[2]:{};this.isPointed=!1;var i=this.editorModel.get('Utils'),o=t.ownerDocument.body;i&&!this.sorter&&(this.sorter=new i.Sorter({container:o,placer:this.canvas.getPlacerEl(),containerSel:'*',itemSel:'*',pfx:this.ppfx,direction:'a',document:e,wmargin:1,nested:1,em:this.editorModel,canvasRelative:1,scale:function(){return n.em.getZoomDecimal()}})),r.onStart&&(this.sorter.onStart=r.onStart),t&&this.sorter.startSort(t,{container:o})},getOffsetDim:function(){var t=this.offset(this.canvas.getFrameEl()),e=this.offset(this.canvas.getElement());return{top:t.top-e.top,left:t.left-e.left}},stopSelectPosition:function(){this.posTargetCollection=null,this.posIndex='after'==this.posMethod&&0!==this.cDim.length?this.posIndex+1:this.posIndex,this.sorter&&(this.sorter.moved=0,this.sorter.endMove()),this.cDim&&(this.posIsLastEl=0!==this.cDim.length&&'after'==this.posMethod&&this.posIndex==this.cDim.length,this.posTargetEl=0===this.cDim.length?i(this.outsideElem):!this.posIsLastEl&&this.cDim[this.posIndex]?i(this.cDim[this.posIndex][5]).parent():i(this.outsideElem),this.posTargetModel=this.posTargetEl.data('model'),this.posTargetCollection=this.posTargetEl.data('model-comp'))},enable:function(){this.startSelectPosition()},nearFloat:function(t,e,n){var r=t||0,i=e||'before',o=n.length,a=0!==o&&'after'==i&&r==o;return 0!==o&&(!a&&!n[r][4]||n[r-1]&&!n[r-1][4]||a&&!n[r-1][4])?1:0},run:function(){this.enable()},stop:function(){this.stopSelectPosition(),this.$wrapper.css('cursor',''),this.$wrapper.unbind()}}},function(t,e,n){"use strict";var r=n(43);window.Promise=window.Promise||r["a"],e["a"]='function'==typeof fetch?fetch.bind():function(t,e){return new r["a"]((function(n,i){var o=new XMLHttpRequest;for(var a in o.open(e.method||'get',t),o.withCredentials='include'==e.credentials,e.headers||{})o.setRequestHeader(a,e.headers[a]);o.onload=function(t){return n({status:o.status,statusText:o.statusText,text:function(){return r["a"].resolve(o.responseText)}})},o.onerror=i,o.upload&&e.onProgress&&(o.upload.onprogress=e.onProgress),e.body?o.send(e.body):o.send()}))}},function(t,e,n){"use strict";var r=n(8),i=n.n(r),o=n(0);e["a"]=function(t){var e=t,n='data-gjs-';return{compTypes:'',modelAttrStart:n,splitPropsFromAttr:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r={},i={};return Object(o["each"])(e,(function(e,a){if(0===a.indexOf(t.modelAttrStart)){var s=a.replace(n,''),c=e.length,l=e&&Object(o["isString"])(e),u=l&&e.substr(0,1),d=l&&e.substr(c-1);e='false'!==(e='true'===e||e)&&e;try{e='{'==u&&'}'==d||'['==u&&']'==d?JSON.parse(e):e}catch(t){}r[s]=e}else i[a]=e})),{props:r,attrs:i}},parseStyle:function(t){for(var e={},n=t.split(';'),r=0,i=n.length;r0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(i&&i.type){var a=n.getBaseType();t=(r=n.getType(i.type))?r.model:a.model,e=r?r.view:a.view}else{var s=n.recognizeType(i);t=(r=s.type).model,e=r.view,i=s.attributes}var c=new t(i,o);return c.typeView=e,c};var r=this.init&&this.init.bind(this);r&&r()},recognizeType:function(t){for(var e=this.getTypes(),n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r='',i=this.em,o=i&&i.getConfig('avoidInlineStyle'),a=t.styleToString(),s=t.get('classes'),c=n.wrapperIsBody,l=t.get('wrapper');if(this.ids.push("#".concat(t.getId())),s.each((function(t){return e.compCls.push(t.getFullName())})),!o&&a){var u="#".concat(t.getId());r="".concat(u=c&&l?'body':u,"{").concat(a,"}")}var d=t.components();return d.each((function(t){return r+=e.buildFromModel(t,n)})),r},build:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.cssc,i=n.em||'';this.em=i,this.compCls=[],this.ids=[];var a=this.buildFromModel(t,n),s=Object(o["isUndefined"])(n.clearStyles)&&i?i.getConfig('clearStyles'):n.clearStyles;if(r){var c=r.getAll(),l={},u=[];c.each((function(t){var r=t.getAtRule();if(r){var i=l[r];i?i.push(t):l[r]=[t]}else a+=e.buildFromRule(t,u,n)})),this.sortMediaObject(l).forEach((function(t){var r='',i=t.key;t.value.forEach((function(t){var o=e.buildFromRule(t,u,n);t.get('singleAtRule')?a+="".concat(i,"{").concat(o,"}"):r+=o})),r&&(a+="".concat(i,"{").concat(r,"}"))})),i&&s&&c.remove(u)}return a},buildFromRule:function(t,e){var n,r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o='',a=t.selectorsToString({skipAdd:1}),s=t.get('selectorsAdd'),c=t.get('singleAtRule');if(t.get('selectors').each((function(t){var e=t.getFullName();(r.compCls.indexOf(e)>=0||r.ids.indexOf(e)>=0||i.keepUnusedStyles)&&(n=1)})),a&&n||s||c){var l=t.getDeclaration({body:1});l&&(o+=l)}else e.push(t);return o},getQueryLength:function(t){var e=/(-?\d*\.?\d+)\w{0,}/.exec(t);return e?parseFloat(e[1]):a},sortMediaObject:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=[];return Object(o["each"])(e,(function(t,e){return n.push({key:e,value:t})})),n.sort((function(e,n){var r=[e.key,n.key].every((function(t){return-1!==t.indexOf('min-width')})),i=r?e.key:n.key,o=r?n.key:e.key;return t.getQueryLength(i)-t.getQueryLength(o)}))},sortRules:function(t,e){var n=function(t){return t.get('mediaText')},r=[n(t),n(e)].every((function(t){return-1!==t.indexOf('min-width')})),i=n(r?t:e),o=n(r?e:t);return this.getQueryLength(i)-this.getQueryLength(o)}})},function(t,e,n){"use strict";var r=n(1),i=n.n(r),o=n(0),a=n(3),s=n(22);i.a.$;e["a"]=s["a"].extend({events:{'change input':'handleChange','change select':'handleUnitChange','click [data-arrow-up]':'upArrowClick','click [data-arrow-down]':'downArrowClick','mousedown [data-arrows]':'downIncrement',keydown:'handleKeyDown'},template:function(){var t=this.ppfx;return"\n \n \n
\n
\n
\n
\n ")},inputClass:function(){var t=this.ppfx;return this.opts.contClass||"".concat(t,"field ").concat(t,"field-integer")},initialize:function(){s["a"].prototype.initialize.apply(this,arguments),Object(o["bindAll"])(this,'moveIncrement','upIncrement'),this.doc=document,this.listenTo(this.model,'change:unit',this.handleModelChange)},setValue:function(t,e){var n=e||{},r=this.validateInputValue(t,{deepCheck:1}),i={value:r.value};(r.unit||r.force)&&(i.unit=r.unit),this.model.set(i,n),n.silent&&this.handleModelChange()},handleChange:function(t){t.stopPropagation(),this.setValue(this.getInputEl().value),this.elementUpdated()},handleUnitChange:function(t){t.stopPropagation();var e=this.getUnitEl().value;this.model.set('unit',e),this.elementUpdated()},handleKeyDown:function(t){'ArrowUp'===t.key&&(t.preventDefault(),this.upArrowClick()),'ArrowDown'===t.key&&(t.preventDefault(),this.downArrowClick())},elementUpdated:function(){this.model.trigger('el:change')},handleModelChange:function(){var t=this.model;this.getInputEl().value=t.get('value');var e=this.getUnitEl();e&&(e.value=t.get('unit')||'')},getUnitEl:function(){if(!this.unitEl){var t=this.model,e=t.get('units')||[];if(e.length){var n=[];e.forEach((function(e){var r=e==t.get('unit')?'selected':'';n.push(""))}));var r=document.createElement('div');r.innerHTML=""),this.unitEl=r.firstChild}}return this.unitEl},upArrowClick:function(){var t=this.model,e=t.get('step'),n=parseFloat(t.get('value'));n=this.normalizeValue(n+e);var r=this.validateInputValue(n);t.set('value',r.value),this.elementUpdated()},downArrowClick:function(){var t=this.model,e=t.get('step'),n=parseFloat(t.get('value')),r=this.normalizeValue(n-e),i=this.validateInputValue(r);t.set('value',i.value),this.elementUpdated()},downIncrement:function(t){t.preventDefault(),this.moved=0;var e=this.model.get('value');e=this.normalizeValue(e),this.current={y:t.pageY,val:e},Object(a["y"])(this.doc,'mousemove',this.moveIncrement),Object(a["y"])(this.doc,'mouseup',this.upIncrement)},moveIncrement:function(t){this.moved=1;var e=this.model,n=e.get('step'),r=this.current,i=this.normalizeValue(r.val+(r.y-t.pageY)*n);return this.prValue=this.validateInputValue(i).value,e.set('value',this.prValue,{avoidStore:1}),!1},upIncrement:function(){var t=this.model,e=t.get('step');if(Object(a["x"])(this.doc,'mouseup',this.upIncrement),Object(a["x"])(this.doc,'mousemove',this.moveIncrement),this.prValue&&this.moved){var n=this.prValue-e;t.set('value',n,{avoidStore:1}).set('value',n+e),this.elementUpdated()}},normalizeValue:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.model,r=n.get('step'),i=0;if(isNaN(t))return e;if(t=parseFloat(t),Math.floor(t)!==t){var o=r.toString().split('.')[1];i=o?o.length:0}return i?parseFloat(t.toFixed(i)):t},validateInputValue:function(t,e){var n=0,r=e||{},i=this.model,a='',s=Object(o["isUndefined"])(t)?a:t,c=i.get('units')||[],l=i.get('unit')||c.length&&c[0]||'',u=i.get('max'),d=i.get('min'),h=!!i.get('limitlessMax'),f=!!i.get('limitlessMin');if(r.deepCheck){var p=i.get('fixedValues')||[];if(s){var g=new RegExp('^'+p.join('|'),'g');if(p.length&&g.test(s))s=s.match(g)[0],l='',n=1;else{var v=s+'';s+='',s=parseFloat(s.replace(',','.')),s=isNaN(s)?a:s;var m=v.replace(s,'');Object(o["indexOf"])(c,m)>=0&&(l=m)}}}return h||Object(o["isUndefined"])(u)||''===u||(s=s>u?u:s),f||Object(o["isUndefined"])(d)||''===d||(s=s2&&void 0!==arguments[2]?arguments[2]:{};t.views.forEach((function(t){if(t){var e=t.childrenView,n=t.scriptContainer;e&&e.stopListening(),n&&n.remove(),t.remove.apply(t)}}));var i=t.components();i.forEach((function(t){return n.removeChildren(t,e,r)}))},addTo:function(t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=this.config.em,r=this.collection.indexOf(t);if(this.addToCollection(t,null,r),n&&!e.temporary){var i=function t(e){n.trigger('component:add',e),e.components().forEach((function(e){return t(e)}))};i(t)}},addToCollection:function(t,e,r){this.compView||(this.compView=n(6).default);for(var i=this.config,a=this.opts,s=this.em,c=e||null,l=i.frameView,u=void 0===l?{}:l,d=u.model&&t.getView(u.model),h=a.componentTypes||s&&s.get('DomComponents').getTypes(),f=t.get('type'),p=this.compView,g=0;g1&&void 0!==arguments[1]?arguments[1]:{},r=n.previousModels,i=void 0===r?[]:r;this.parentEl.innerHTML='',i.forEach((function(t){return e.removeChildren(t,e.collection)})),t.each((function(t){return e.addToCollection(t)}))},render:function(t){var e=this,n=this.el,r=document.createDocumentFragment();return this.parentEl=t||this.el,this.collection.each((function(t){return e.addToCollection(t,r)})),n.innerHTML='',n.appendChild(r),this}})},function(t,e,n){"use strict";var r=n(1),i=n.n(r),o=i.a.View.extend({tagName:'style',initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config=t.config||{};var e=this.model;this.listenTo(e,'change',this.render),this.listenTo(e,'destroy remove',this.remove),this.listenTo(e.get('selectors'),'change',this.render)},render:function(){var t=this.model,e=this.el,n=t.get('important');return e.innerHTML=t.toCSS({important:n}),this}}),a=o.extend({_createElement:function(t){return document.createTextNode('')},render:function(){var t=this.model,e=t.get('important');return this.el.textContent=t.getDeclaration({important:e}),this}}),s=i.a.$,c=function(t,e){return"".concat(t).concat(e?"-".concat(parseFloat(e)):'')};e["a"]=i.a.View.extend({initialize:function(t){var e=t.config||{};this.atRules={},this.config=e,this.em=e.em,this.pfx=e.stylePrefix||'',this.className=this.pfx+'rules';var n=this.collection;this.listenTo(n,'add',this.addTo),this.listenTo(n,'reset',this.render)},addTo:function(t){this.addToCollection(t)},addToCollection:function(t,e){if(this.renderStarted){var n,r,i=e||null,s={model:t,config:this.config};if('keyframes'===t.get('atRuleType')){var l=t.getAtRule(),u=this.atRules[l];if(!u){var d=document.createElement('style');u=document.createTextNode(''),d.appendChild(document.createTextNode("".concat(l,"{"))),d.appendChild(u),d.appendChild(document.createTextNode("}")),this.atRules[l]=u,n=d}r=new a(s),u.appendData(r.render().el.textContent)}else n=(r=new o(s)).render().el;var h=this.className,f=t.get('mediaText'),p=c(h),g=p;if(f&&(g=c(h,this.getMediaWidth(f))),n){var v,m=i||this.el;try{v=m.querySelector("#".concat(g))}catch(t){}v||(v=m.querySelector("#".concat(p))),v.appendChild(n)}return n}},getMediaWidth:function(t){return t&&t.replace("(".concat(this.em.getConfig('mediaCondition'),": "),'').replace(')','')},render:function(){var t=this;this.renderStarted=1,this.atRules={};var e=this.em,n=this.$el,r=this.className,i=this.collection,o=document.createDocumentFragment();n.empty();var a=e.get('DeviceManager').getAll().pluck('priority');return a.every((function(t){return t}))&&a.unshift(0),a.forEach((function(t){return s("
")).appendTo(o)})),i.each((function(e){return t.addToCollection(e,o)})),n.append(o),n.attr('class',r),this}})},function(t,e,n){"use strict";var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(0),c=n(8),l=n.n(c),u=n(22);function d(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function h(t){for(var e=1;e","
","
",''].join(''),s=function(){var t='';if(i)for(var e=1;e<=6;e++)t+="
";return["
","
","
","
","",'
','
',"
","
","
","
","
","
","
","
",'
','
','
',"
",'
',"
","
",t,'
','
',"
",'
',"
","",'
',"
","
","","",'
','
','
'].join('')}();function c(e,n,r,i){for(var a=[],s=0;s')}else{a.push(t('
').append(t('').attr('title',i.noColorSelectedText)).html())}}return"
"+a.join('')+'
'}function u(l,u){var d,v,m,b,y=function(e,r){var i=t.extend({},n,e);return i.callbacks={move:f(i.move,r),change:f(i.change,r),show:f(i.show,r),hide:f(i.hide,r),beforeShow:f(i.beforeShow,r)},i}(u,l),w=y.flat,x=y.showSelectionPalette,O=y.localStorageKey,C=y.theme,S=y.callbacks,j=(d=$t,v=10,function(){var t=this,e=arguments,n=function(){b=null,d.apply(t,e)};m&&clearTimeout(b),!m&&b||(b=setTimeout(n,v))}),T=!1,P=!1,E=0,M=0,D=0,A=0,_=0,L=0,N=0,I=0,F=0,R=0,V=1,z=[],H=[],U={},B=y.selectionPalette.slice(0),$=y.maxSelectionSize,W='sp-dragging',q=null,G=l.ownerDocument,K=(G.body,t(l)),Y=!1,X=t(s,G).addClass(C),J=X.find('.sp-picker-container'),Z=X.find('.sp-color'),Q=X.find('.sp-dragger'),tt=X.find('.sp-hue'),et=X.find('.sp-slider'),nt=X.find('.sp-alpha-inner'),rt=X.find('.sp-alpha'),it=X.find('.sp-alpha-handle'),ot=X.find('.sp-input'),at=X.find('.sp-palette'),st=X.find('.sp-initial'),ct=X.find('.sp-cancel'),lt=X.find('.sp-clear'),ut=X.find('.sp-choose'),dt=X.find('.sp-palette-toggle'),ht=K.is('input'),ft=ht&&'color'===K.attr('type')&&g(),pt=ht&&!w,gt=pt?t(a).addClass(C).addClass(y.className).addClass(y.replacerClassName):t([]),vt=pt?gt:K,mt=gt.find('.sp-preview-inner'),bt=y.color||ht&&K.val(),yt=!1,wt=y.preferredFormat,xt=!y.showButtons||y.clickoutFiresChange,Ot=!bt,Ct=y.allowEmpty&&!ft;function St(){if(y.showPaletteOnly&&(y.showPalette=!0),dt.text(y.showPaletteOnly?y.togglePaletteMoreText:y.togglePaletteLessText),y.palette){z=y.palette.slice(0),H=t.isArray(z[0])?z:[z],U={};for(var e=0;e1&&(delete window.localStorage[O],t.each(e,(function(t,e){jt(e)})))}catch(t){}try{B=window.localStorage[O].split(';')}catch(t){}}}function jt(e){if(x){var n=k(e).toRgbString();if(!U[n]&&-1===t.inArray(n,B))for(B.push(n);B.length>$;)B.shift();if(O&&window.localStorage)try{window.localStorage[O]=B.join(';')}catch(t){}}}function Tt(){var e=Vt(),n=t.map(H,(function(t,n){return c(t,e,'sp-palette-row sp-palette-row-'+n,y)}));kt(),B&&n.push(c(function(){var t=[];if(y.showPalette)for(var e=0;ef&&f>i?Math.abs(g.left+i-f):0),g.top-=Math.min(g.top,g.top+o>p&&p>o?Math.abs(o+a-r):r),g}(X,vt))),Ut(),y.showPalette&&Tt(),K.trigger('reflow.spectrum'))}function Wt(){It(),Y=!0,K.attr('disabled',!0),vt.addClass('sp-disabled')}!function(){if(i&&X.find('*:not(input)').attr('unselectable','on'),St(),pt&&K.after(gt).hide(),Ct||lt.hide(),w)K.after(X).hide();else{var e='parent'===y.appendTo?K.parent():t(y.appendTo);1!==e.length&&(e=t('body')),e.append(X)}function n(e){return e.data&&e.data.ignore?(Rt(t(e.target).closest('.sp-thumb-el').data('color')),zt()):(Rt(t(e.target).closest('.sp-thumb-el').data('color')),zt(),Bt(!0),y.hideAfterPaletteSelect&&It()),!1}kt(),vt.bind('click.spectrum touchstart.spectrum',(function(e){Y||At(),e.stopPropagation(),t(e.target).is('input')||e.preventDefault()})),(K.is(':disabled')||!0===y.disabled)&&Wt(),X.click(h),ot.change(Dt),ot.bind('paste',(function(){setTimeout(Dt,1)})),ot.keydown((function(t){13==t.keyCode&&Dt()})),ct.text(y.cancelText),ct.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),Ft(),It()})),lt.attr('title',y.clearText),lt.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),Ot=!0,zt(),w&&Bt(!0)})),ut.text(y.chooseText),ut.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),i&&ot.is(':focus')&&ot.trigger('change'),ot.hasClass('sp-validation-error')||(Bt(!0),It())})),dt.text(y.showPaletteOnly?y.togglePaletteMoreText:y.togglePaletteLessText),dt.bind('click.spectrum',(function(t){t.stopPropagation(),t.preventDefault(),y.showPaletteOnly=!y.showPaletteOnly,y.showPaletteOnly||w||X.css('left','-='+(J.outerWidth(!0)+5)),St()})),p(rt,(function(t,e,n){V=t/_,Ot=!1,n.shiftKey&&(V=Math.round(10*V)/10),zt()}),Et,Mt),p(tt,(function(t,e){I=parseFloat(e/A),Ot=!1,y.showAlpha||(V=1),zt()}),Et,Mt),p(Z,(function(t,e,n){if(n.shiftKey){if(!q){var r=F*E,i=M-R*M,o=Math.abs(t-r)>Math.abs(e-i);q=o?'x':'y'}}else q=null;var a=!q||'y'===q;(!q||'x'===q)&&(F=parseFloat(t/E)),a&&(R=parseFloat((M-e)/M)),Ot=!1,y.showAlpha||(V=1),zt()}),Et,Mt),bt?(Rt(bt),Ht(),wt=y.preferredFormat||k(bt).format,jt(bt)):Ht(),w&&_t();var r=i?'mousedown.spectrum':'click.spectrum touchstart.spectrum';at.delegate('.sp-thumb-el',r,n),st.delegate('.sp-thumb-el:nth-child(1)',r,{ignore:!0},n)}();var qt={show:_t,hide:It,toggle:At,reflow:$t,option:function(n,r){return n===e?t.extend({},y):r===e?y[n]:(y[n]=r,'preferredFormat'===n&&(wt=y.preferredFormat),void St())},enable:function(){Y=!1,K.attr('disabled',!1),vt.removeClass('sp-disabled')},disable:Wt,offset:function(t){y.offset=t,$t()},set:function(t){Rt(t),Bt()},get:Vt,destroy:function(){K.show(),vt.unbind('click.spectrum touchstart.spectrum'),X.remove(),gt.remove(),r[qt.id]=null},container:X};return qt.id=r.push(qt)-1,qt}function d(){}function h(t){t.stopPropagation()}function f(t,e){var n=Array.prototype.slice,r=n.call(arguments,2);return function(){return t.apply(e,r.concat(n.call(arguments)))}}function p(e,n,r,o){n=n||function(){},r=r||function(){},o=o||function(){};var a=document,s=!1,c={},l=0,u=0,d='ontouchstart'in window,h={};function f(t){t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),t.returnValue=!1}function p(t){if(s){if(i&&a.documentMode<9&&!t.button)return g();var r=t&&t.touches&&t.touches[0],o=r&&r.pageX||t.pageX,h=r&&r.pageY||t.pageY,p=Math.max(0,Math.min(o-c.left,u)),v=Math.max(0,Math.min(h-c.top,l));d&&f(t),n.apply(e,[p,v,t])}}function g(){s&&(t(a).unbind(h),t(a.body).removeClass('sp-dragging'),setTimeout((function(){o.apply(e,arguments)}),0)),s=!1}h['selectstart']=f,h['dragstart']=f,h['touchmove mousemove']=p,h['touchend mouseup']=g,t(e).bind('touchstart mousedown',(function(n){var i=n.which?3==n.which:2==n.button;i||s||!1!==r.apply(e,arguments)&&(s=!0,l=t(e).height(),u=t(e).width(),c=t(e).offset(),t(a).bind(h),t(a.body).addClass('sp-dragging'),p(n),f(n))}))}function g(){return t.fn.spectrum.inputTypeColorSupport()}var v='spectrum.id';t.fn.spectrum=function(e,n){if('string'==typeof e){var i=this,o=Array.prototype.slice.call(arguments,1);return this.each((function(){var n=r[t(this).data(v)];if(n){var a=n[e];if(!a)throw new Error("Spectrum: no such method: '"+e+"'");'get'==e?i=n.get():'container'==e?i=n.container:'option'==e?i=n.option.apply(n,o):'destroy'==e?(n.destroy(),t(this).removeData(v)):a.apply(n,o)}})),i}return this.spectrum('destroy').each((function(){var n=u(this,t.extend({},e,t(this).data()));t(this).data(v,n.id)}))},t.fn.spectrum.load=!0,t.fn.spectrum.loadOpts={},t.fn.spectrum.draggable=p,t.fn.spectrum.defaults=n,t.fn.spectrum.inputTypeColorSupport=function e(){if(void 0===e._cachedResult){var n=t("")[0];e._cachedResult='color'===n.type&&''!==n.value}return e._cachedResult},t.spectrum={},t.spectrum.localization={},t.spectrum.palettes={},t.fn.spectrum.processNativeColorInputs=function(){var e=t('input[type=color]');e.length&&!g()&&e.spectrum({preferredFormat:'hex6'})};var m=/^[\s,#]+/,b=/\s+$/,y=0,w=Math,x=w.round,O=w.min,C=w.max,S=w.random,k=function t(e,n){if(n=n||{},(e=e||'')instanceof t)return e;if(!(this instanceof t))return new t(e,n);var r=function(t){var e={r:0,g:0,b:0},n=1,r=!1,i=!1;'string'==typeof t&&(t=function(t){t=t.replace(m,'').replace(b,'').toLowerCase();var e,n=!1;if(B[t])t=B[t],n=!0;else if('transparent'==t)return{r:0,g:0,b:0,a:0,format:'name'};if(e=tt.rgb.exec(t))return{r:e[1],g:e[2],b:e[3]};if(e=tt.rgba.exec(t))return{r:e[1],g:e[2],b:e[3],a:e[4]};if(e=tt.hsl.exec(t))return{h:e[1],s:e[2],l:e[3]};if(e=tt.hsla.exec(t))return{h:e[1],s:e[2],l:e[3],a:e[4]};if(e=tt.hsv.exec(t))return{h:e[1],s:e[2],v:e[3]};if(e=tt.hsva.exec(t))return{h:e[1],s:e[2],v:e[3],a:e[4]};if(e=tt.hex8.exec(t))return{a:(r=e[1],K(r)/255),r:K(e[2]),g:K(e[3]),b:K(e[4]),format:n?'name':'hex8'};var r;if(e=tt.hex6.exec(t))return{r:K(e[1]),g:K(e[2]),b:K(e[3]),format:n?'name':'hex'};if(e=tt.hex3.exec(t))return{r:K(e[1]+''+e[1]),g:K(e[2]+''+e[2]),b:K(e[3]+''+e[3]),format:n?'name':'hex'};return!1}(t));'object'==l()(t)&&(t.hasOwnProperty('r')&&t.hasOwnProperty('g')&&t.hasOwnProperty('b')?(o=t.r,a=t.g,s=t.b,e={r:255*q(o,255),g:255*q(a,255),b:255*q(s,255)},r=!0,i='%'===String(t.r).substr(-1)?'prgb':'rgb'):t.hasOwnProperty('h')&&t.hasOwnProperty('s')&&t.hasOwnProperty('v')?(t.s=X(t.s),t.v=X(t.v),e=function(t,e,n){t=6*q(t,360),e=q(e,100),n=q(n,100);var r=w.floor(t),i=t-r,o=n*(1-e),a=n*(1-i*e),s=n*(1-(1-i)*e),c=r%6;return{r:255*[n,a,o,o,s,n][c],g:255*[s,n,n,a,o,o][c],b:255*[o,o,s,n,n,a][c]}}(t.h,t.s,t.v),r=!0,i='hsv'):t.hasOwnProperty('h')&&t.hasOwnProperty('s')&&t.hasOwnProperty('l')&&(t.s=X(t.s),t.l=X(t.l),e=function(t,e,n){var r,i,o;function a(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<1/2?e:n<2/3?t+(e-t)*(2/3-n)*6:t}if(t=q(t,360),e=q(e,100),n=q(n,100),0===e)r=i=o=n;else{var s=n<.5?n*(1+e):n+e-n*e,c=2*n-s;r=a(c,s,t+1/3),i=a(c,s,t),o=a(c,s,t-1/3)}return{r:255*r,g:255*i,b:255*o}}(t.h,t.s,t.l),r=!0,i='hsl'),t.hasOwnProperty('a')&&(n=t.a));var o,a,s;return n=W(n),{ok:r,format:t.format||i,r:O(255,C(e.r,0)),g:O(255,C(e.g,0)),b:O(255,C(e.b,0)),a:n}}(e);this._originalInput=e,this._r=r.r,this._g=r.g,this._b=r.b,this._a=r.a,this._roundA=x(100*this._a)/100,this._format=n.format||r.format,this._gradientType=n.gradientType,this._r<1&&(this._r=x(this._r)),this._g<1&&(this._g=x(this._g)),this._b<1&&(this._b=x(this._b)),this._ok=r.ok,this._tc_id=y++};function j(t,e,n){t=q(t,255),e=q(e,255),n=q(n,255);var r,i,o=C(t,e,n),a=O(t,e,n),s=(o+a)/2;if(o==a)r=i=0;else{var c=o-a;switch(i=s>.5?c/(2-o-a):c/(o+a),o){case t:r=(e-n)/c+(e>1)+720)%360;--e;)r.h=(r.h+i)%360,o.push(k(r));return o}function U(t,e){e=e||6;for(var n=k(t).toHsv(),r=n.h,i=n.s,o=n.v,a=[],s=1/e;e--;)a.push(k({h:r,s:i,v:o})),o=(o+s)%1;return a}k.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},setAlpha:function(t){return this._a=W(t),this._roundA=x(100*this._a)/100,this},toHsv:function(){var t=T(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=T(this._r,this._g,this._b),e=x(360*t.h),n=x(100*t.s),r=x(100*t.v);return 1==this._a?'hsv('+e+', '+n+'%, '+r+'%)':'hsva('+e+', '+n+'%, '+r+'%, '+this._roundA+')'},toHsl:function(){var t=j(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=j(this._r,this._g,this._b),e=x(360*t.h),n=x(100*t.s),r=x(100*t.l);return 1==this._a?'hsl('+e+', '+n+'%, '+r+'%)':'hsla('+e+', '+n+'%, '+r+'%, '+this._roundA+')'},toHex:function(t){return P(this._r,this._g,this._b,t)},toHexString:function(t){return'#'+this.toHex(t)},toHex8:function(){return E(this._r,this._g,this._b,this._a)},toHex8String:function(){return'#'+this.toHex8()},toRgb:function(){return{r:x(this._r),g:x(this._g),b:x(this._b),a:this._a}},toRgbString:function(){return 1==this._a?'rgb('+x(this._r)+', '+x(this._g)+', '+x(this._b)+')':'rgba('+x(this._r)+', '+x(this._g)+', '+x(this._b)+', '+this._roundA+')'},toPercentageRgb:function(){return{r:x(100*q(this._r,255))+'%',g:x(100*q(this._g,255))+'%',b:x(100*q(this._b,255))+'%',a:this._a}},toPercentageRgbString:function(){return 1==this._a?'rgb('+x(100*q(this._r,255))+'%, '+x(100*q(this._g,255))+'%, '+x(100*q(this._b,255))+'%)':'rgba('+x(100*q(this._r,255))+'%, '+x(100*q(this._g,255))+'%, '+x(100*q(this._b,255))+'%, '+this._roundA+')'},toName:function(){return 0===this._a?'transparent':!(this._a<1)&&($[P(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e='#'+E(this._r,this._g,this._b,this._a),n=e,r=this._gradientType?'GradientType = 1, ':'';t&&(n=k(t).toHex8String());return'progid:DXImageTransform.Microsoft.gradient('+r+'startColorstr='+e+',endColorstr='+n+')'},toString:function(t){var e=!!t;t=t||this._format;var n=!1,r=this._a<1&&this._a>=0;return e||!r||'hex'!==t&&'hex6'!==t&&'hex3'!==t&&'name'!==t?('rgb'===t&&(n=this.toRgbString()),'prgb'===t&&(n=this.toPercentageRgbString()),'hex'!==t&&'hex6'!==t||(n=this.toHexString()),'hex3'===t&&(n=this.toHexString(!0)),'hex8'===t&&(n=this.toHex8String()),'name'===t&&(n=this.toName()),'hsl'===t&&(n=this.toHslString()),'hsv'===t&&(n=this.toHsvString()),n||this.toHexString()):'name'===t&&0===this._a?this.toName():this.toRgbString()},_applyModification:function(t,e){var n=t.apply(null,[this].concat([].slice.call(e)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(_,arguments)},brighten:function(){return this._applyModification(L,arguments)},darken:function(){return this._applyModification(N,arguments)},desaturate:function(){return this._applyModification(M,arguments)},saturate:function(){return this._applyModification(D,arguments)},greyscale:function(){return this._applyModification(A,arguments)},spin:function(){return this._applyModification(I,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(H,arguments)},complement:function(){return this._applyCombination(F,arguments)},monochromatic:function(){return this._applyCombination(U,arguments)},splitcomplement:function(){return this._applyCombination(z,arguments)},triad:function(){return this._applyCombination(R,arguments)},tetrad:function(){return this._applyCombination(V,arguments)}},k.fromRatio=function(t,e){if('object'==l()(t)){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]='a'===r?t[r]:X(t[r]));t=n}return k(t,e)},k.equals=function(t,e){return!(!t||!e)&&k(t).toRgbString()==k(e).toRgbString()},k.random=function(){return k.fromRatio({r:S(),g:S(),b:S()})},k.mix=function(t,e,n){n=0===n?0:n||50;var r,i=k(t).toRgb(),o=k(e).toRgb(),a=n/100,s=2*a-1,c=o.a-i.a,l=1-(r=((r=s*c==-1?s:(s+c)/(1+s*c))+1)/2),u={r:o.r*r+i.r*l,g:o.g*r+i.g*l,b:o.b*r+i.b*l,a:o.a*a+i.a*(1-a)};return k(u)},k.readability=function(t,e){var n=k(t),r=k(e),i=n.toRgb(),o=r.toRgb(),a=n.getBrightness(),s=r.getBrightness(),c=Math.max(i.r,o.r)-Math.min(i.r,o.r)+Math.max(i.g,o.g)-Math.min(i.g,o.g)+Math.max(i.b,o.b)-Math.min(i.b,o.b);return{brightness:Math.abs(a-s),color:c}},k.isReadable=function(t,e){var n=k.readability(t,e);return n.brightness>125&&n.color>500},k.mostReadable=function(t,e){for(var n=null,r=0,i=!1,o=0;o125&&a.color>500,c=3*(a.brightness/125)+a.color/500;(s&&!i||s&&i&&c>r||!s&&!i&&c>r)&&(i=s,r=c,n=k(e[o]))}return n};var B=k.names={aliceblue:'f0f8ff',antiquewhite:'faebd7',aqua:'0ff',aquamarine:'7fffd4',azure:'f0ffff',beige:'f5f5dc',bisque:'ffe4c4',black:'000',blanchedalmond:'ffebcd',blue:'00f',blueviolet:'8a2be2',brown:'a52a2a',burlywood:'deb887',burntsienna:'ea7e5d',cadetblue:'5f9ea0',chartreuse:'7fff00',chocolate:'d2691e',coral:'ff7f50',cornflowerblue:'6495ed',cornsilk:'fff8dc',crimson:'dc143c',cyan:'0ff',darkblue:'00008b',darkcyan:'008b8b',darkgoldenrod:'b8860b',darkgray:'a9a9a9',darkgreen:'006400',darkgrey:'a9a9a9',darkkhaki:'bdb76b',darkmagenta:'8b008b',darkolivegreen:'556b2f',darkorange:'ff8c00',darkorchid:'9932cc',darkred:'8b0000',darksalmon:'e9967a',darkseagreen:'8fbc8f',darkslateblue:'483d8b',darkslategray:'2f4f4f',darkslategrey:'2f4f4f',darkturquoise:'00ced1',darkviolet:'9400d3',deeppink:'ff1493',deepskyblue:'00bfff',dimgray:'696969',dimgrey:'696969',dodgerblue:'1e90ff',firebrick:'b22222',floralwhite:'fffaf0',forestgreen:'228b22',fuchsia:'f0f',gainsboro:'dcdcdc',ghostwhite:'f8f8ff',gold:'ffd700',goldenrod:'daa520',gray:'808080',green:'008000',greenyellow:'adff2f',grey:'808080',honeydew:'f0fff0',hotpink:'ff69b4',indianred:'cd5c5c',indigo:'4b0082',ivory:'fffff0',khaki:'f0e68c',lavender:'e6e6fa',lavenderblush:'fff0f5',lawngreen:'7cfc00',lemonchiffon:'fffacd',lightblue:'add8e6',lightcoral:'f08080',lightcyan:'e0ffff',lightgoldenrodyellow:'fafad2',lightgray:'d3d3d3',lightgreen:'90ee90',lightgrey:'d3d3d3',lightpink:'ffb6c1',lightsalmon:'ffa07a',lightseagreen:'20b2aa',lightskyblue:'87cefa',lightslategray:'789',lightslategrey:'789',lightsteelblue:'b0c4de',lightyellow:'ffffe0',lime:'0f0',limegreen:'32cd32',linen:'faf0e6',magenta:'f0f',maroon:'800000',mediumaquamarine:'66cdaa',mediumblue:'0000cd',mediumorchid:'ba55d3',mediumpurple:'9370db',mediumseagreen:'3cb371',mediumslateblue:'7b68ee',mediumspringgreen:'00fa9a',mediumturquoise:'48d1cc',mediumvioletred:'c71585',midnightblue:'191970',mintcream:'f5fffa',mistyrose:'ffe4e1',moccasin:'ffe4b5',navajowhite:'ffdead',navy:'000080',oldlace:'fdf5e6',olive:'808000',olivedrab:'6b8e23',orange:'ffa500',orangered:'ff4500',orchid:'da70d6',palegoldenrod:'eee8aa',palegreen:'98fb98',paleturquoise:'afeeee',palevioletred:'db7093',papayawhip:'ffefd5',peachpuff:'ffdab9',peru:'cd853f',pink:'ffc0cb',plum:'dda0dd',powderblue:'b0e0e6',purple:'800080',rebeccapurple:'663399',red:'f00',rosybrown:'bc8f8f',royalblue:'4169e1',saddlebrown:'8b4513',salmon:'fa8072',sandybrown:'f4a460',seagreen:'2e8b57',seashell:'fff5ee',sienna:'a0522d',silver:'c0c0c0',skyblue:'87ceeb',slateblue:'6a5acd',slategray:'708090',slategrey:'708090',snow:'fffafa',springgreen:'00ff7f',steelblue:'4682b4',tan:'d2b48c',teal:'008080',thistle:'d8bfd8',tomato:'ff6347',turquoise:'40e0d0',violet:'ee82ee',wheat:'f5deb3',white:'fff',whitesmoke:'f5f5f5',yellow:'ff0',yellowgreen:'9acd32'},$=k.hexNames=function(t){var e={};for(var n in t)t.hasOwnProperty(n)&&(e[t[n]]=n);return e}(B);function W(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function q(t,e){(function(t){return'string'==typeof t&&-1!=t.indexOf('.')&&1===parseFloat(t)})(t)&&(t='100%');var n=function(t){return'string'==typeof t&&-1!=t.indexOf('%')}(t);return t=O(e,C(0,parseFloat(t))),n&&(t=parseInt(t*e,10)/100),w.abs(t-e)<1e-6?1:t%e/parseFloat(e)}function G(t){return O(1,C(0,t))}function K(t){return parseInt(t,16)}function Y(t){return 1==t.length?'0'+t:''+t}function X(t){return t<=1&&(t=100*t+'%'),t}var J,Z,Q,tt=(Z='[\\s|\\(]+('+(J='(?:'+'[-\\+]?\\d*\\.\\d+%?'+')|(?:'+'[-\\+]?\\d+%?'+')')+')[,|\\s]+('+J+')[,|\\s]+('+J+')\\s*\\)?',Q='[\\s|\\(]+('+J+')[,|\\s]+('+J+')[,|\\s]+('+J+')[,|\\s]+('+J+')\\s*\\)?',{rgb:new RegExp('rgb'+Z),rgba:new RegExp('rgba'+Q),hsl:new RegExp('hsl'+Z),hsla:new RegExp('hsla'+Q),hsv:new RegExp('hsv'+Z),hsva:new RegExp('hsva'+Q),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});window.tinycolor=k,t((function(){t.fn.spectrum.load&&t.fn.spectrum.processNativeColorInputs()}))}(f);e["a"]=u["a"].extend({template:function(){var t=this.ppfx;return"\n
\n
\n
\n
\n
\n
\n ")},inputClass:function(){var t=this.ppfx;return"".concat(t,"field ").concat(t,"field-color")},holderClass:function(){return"".concat(this.ppfx,"input-holder")},remove:function(){u["a"].prototype.remove.apply(this,arguments),this.colorEl.spectrum('destroy')},setValue:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.model,r=n.get('defaults'),i=Object(s["isUndefined"])(t)?Object(s["isUndefined"])(r)?'':r:t,o=this.getInputEl(),a=this.getColorEl(),c='none'!=i?i:'';o.value=i,a.get(0).style.backgroundColor=c,(e.fromTarget||e.fromInput&&!e.avoidStore)&&(a.spectrum('set',c),this.noneColor='none'==i)},getColorEl:function(){if(!this.colorEl){var t,e=this.em,n=this,r=this.ppfx,i=this.model,o=f("
")),a=o.get(0).style,s=e&&e.config?e.config.el:'',c=e&&e.getConfig&&e.getConfig('colorPicker')||{},l=function(t){return(1==t.getAlpha()?t.toHexString():t.toRgbString()).replace(/ /g,'')},u=0;this.$el.find("[data-colorp-c]").append(o),o.spectrum(h(h(h({containerClassName:"".concat(r,"one-bg ").concat(r,"two-color"),appendTo:s||'body',maxSelectionSize:8,showPalette:!0,showAlpha:!0,chooseText:'Ok',cancelText:'⨯',palette:[]},c),i.get('colorPicker')||{}),{},{move:function(t){var e=l(t);a.backgroundColor=e,i.setValueFromInput(e,0)},change:function(t){u=1;var e=l(t);a.backgroundColor=e,i.setValueFromInput(0,0),i.setValueFromInput(e),n.noneColor=0},show:function(e){u=0,t=l(e)},hide:function(e){!u&&t&&(n.noneColor&&(t=''),a.backgroundColor=t,o.spectrum('set',t),i.setValueFromInput(t,0))}})),e&&e.on&&e.on('component:selected',(function(){u=1,o.spectrum('hide')})),this.colorEl=o}return this.colorEl},render:function(){return u["a"].prototype.render.call(this),this.getColorEl(),this}})},function(t,e,n){!function(e){var n,r={},i={16:!1,18:!1,17:!1,91:!1},o='all',a={'⇧':16,shift:16,'⌥':18,alt:18,option:18,'⌃':17,ctrl:17,control:17,'⌘':91,command:91},s={backspace:8,tab:9,clear:12,enter:13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,delete:46,home:36,end:35,pageup:33,pagedown:34,',':188,'.':190,'/':191,'`':192,'-':189,'=':187,';':186,'\'':222,'[':219,']':221,'\\':220},c=function(t){return s[t]||t.toUpperCase().charCodeAt(0)},l=[];for(n=1;n<20;n++)s['f'+n]=111+n;function u(t,e){for(var n=t.length;n--;)if(t[n]===e)return n;return-1}function d(t,e){if(t.length!=e.length)return!1;for(var n=0;n1&&(o=m(t),t=[t[t.length-1]]),t=t[0],(t=c(t))in r||(r[t]=[]),r[t].push({shortcut:i[a],scope:e,method:n,key:i[a],mods:o})}for(n in a)p[n]=!1;function g(){return o||'all'}function v(t){var e;return''==(e=(t=t.replace(/\s/g,'')).split(','))[e.length-1]&&(e[e.length-2]+=','),e}function m(t){for(var e=t.slice(0,t.length-1),n=0;n0,i)(!i[o]&&u(n.mods,+o)>-1||i[o]&&-1==u(n.mods,+o))&&(c=!1);(0!=n.mods.length||i[16]||i[18]||i[17]||i[91])&&!c||!1===n.method(t,n)&&(t.preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation&&t.stopPropagation(),t.cancelBubble&&(t.cancelBubble=!0))}}(t)})),b(document,'keyup',(function(t){var e,n=t.keyCode,r=u(l,n);if(r>=0&&l.splice(r,1),93!=n&&224!=n||(n=91),n in i)for(e in i[n]=!1,a)a[e]==n&&(p[e]=!1)})),b(window,'focus',(function(){for(n in i)i[n]=!1;for(n in a)p[n]=!1}));var y=e.key;e.key=p,e.key.setScope=function(t){o=t||'all'},e.key.getScope=g,e.key.deleteScope=function(t){var e,n,i;for(e in r)for(n=r[e],i=0;i1&&(l=m(i),t=i[i.length-1]),t=c(t),void 0===e&&(e=g()),!r[t])return;for(o=0;o1&&void 0!==arguments[1]?arguments[1]:{},n=e.config,r=n.em,i=this.attributes,s=i.styles,c=i.component,l=r.get('DomComponents'),u=l.getConfig(),d=r.get('CssComposer').getAll(),h={};this.em=r;var f={em:r,config:u,frame:this,idMap:h};if(!Object(a["n"])(c)){var p=Object(a["r"])(c)?c:{components:c};!p.type&&(p.type='wrapper');var g=l.getType('wrapper').model;this.set('component',new g(p,f))}if(s){if(!Object(a["r"])(s)){var v=Object.keys(h);v.length&&Array.isArray(s)&&s.forEach((function(t){var e=t.selectors;if(e&&1==e.length){var n=e[0],r=n.name&&2===n.type&&n;if(r&&h[r.name])r.name=h[r.name];else if(Object(o["isString"])(n)&&'#'===n[0]){var i=n.substring(1);i&&h[i]&&(e[0]="#".concat(h[i]))}}})),d.add(s),this.set('styles',d)}}else this.set('styles',d);!t.width&&this.set(C,1),!t.height&&this.set(S,1)}},{key:"onRemove",value:function(){this.getComponent().remove({root:1})}},{key:"changesUp",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t.temporary||t.noCount||t.avoidStore||this.set('changesCount',this.get('changesCount')+1)}},{key:"getComponent",value:function(){return this.get('component')}},{key:"getStyles",value:function(){return this.get('styles')}},{key:"disable",value:function(){this.trigger('disable')}},{key:"remove",value:function(){this.view=0;var t=this.collection;return t&&t.remove(this)}},{key:"getHead",value:function(){var t=this.get('head')||[];return y()(t)}},{key:"setHead",value:function(t){return this.set('head',y()(t))}},{key:"addHeadItem",value:function(t){var e=this.getHead();e.push(t),this.setHead(e)}},{key:"getHeadByAttr",value:function(t,e,n){return this.getHead().filter((function(r){return r.attributes&&r.attributes[t]==e&&(!n||n===r.tag)}))[0]}},{key:"removeHeadByAttr",value:function(t,e,n){var r=this.getHead(),i=this.getHeadByAttr(t,e,n),o=r.indexOf(i);o>=0&&(r.splice(o,1),this.setHead(r))}},{key:"addLink",value:function(t){var e='link';!this.getHeadByAttr('href',t,e)&&this.addHeadItem({tag:e,attributes:{href:t,rel:'stylesheet'}})}},{key:"removeLink",value:function(t){this.removeHeadByAttr('href',t,'link')}},{key:"addScript",value:function(t){var e='script';!this.getHeadByAttr('src',t,e)&&this.addHeadItem({tag:e,attributes:{src:t}})}},{key:"removeScript",value:function(t){this.removeHeadByAttr('src',t,'script')}},{key:"getPage",value:function(){var t=this.collection;return t&&t.page}},{key:"_emitUpdated",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.em.trigger('frame:updated',x({frame:this},t))}},{key:"toJSON",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=s["Model"].prototype.toJSON.call(this,t),n=this.em,r=n&&n.get('StorageManager'),i=r&&r.getConfig(),a=Object(o["result"])(this,'defaults');if(i&&!t.fromUndo){var c={component:this.getComponent()};i.storeHtml&&(e.html=n.getHtml(c)),i.storeCss&&(e.css=n.getCss(c))}return t.fromUndo&&delete e.component,delete e.styles,delete e.changesCount,e[C]&&delete e.width,e[S]&&delete e.height,Object(o["forEach"])(e,(function(t,n){0===n.indexOf('_')&&delete e[n]})),Object(o["forEach"])(a,(function(t,n){e[n]===t&&delete e[n]})),Object(o["forEach"])(['attributes','head'],(function(t){Object(o["isEmpty"])(e[t])&&delete e[t]})),e}}]),n}(s["Model"]);function j(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function T(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};Object(o["bindAll"])(this,'itemLoaded'),this.config=e,this.on('reset',this.onReset),this.on('remove',this.onRemove)}},{key:"onReset",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.previousModels||[];r.map((function(t){return e.onRemove(t)}))}},{key:"onRemove",value:function(t){t&&t.onRemove()}},{key:"itemLoaded",value:function(){this.loadedItems++,this.loadedItems>=this.itemsToLoad&&(this.trigger('loaded:all'),this.listenToLoadItems(0))}},{key:"listenToLoad",value:function(){this.loadedItems=0,this.itemsToLoad=this.length,this.listenToLoadItems(1)}},{key:"listenToLoadItems",value:function(t){var e=this;this.forEach((function(n){return n[t?'on':'off']('loaded',e.itemLoaded)}))}},{key:"add",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.config;return s["Collection"].prototype.add.call(this,t,T(T({},e),{},{config:n}))}}]),n}(s["Collection"]);function M(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=m()(t);if(e){var i=m()(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return g()(this,n)}}E.prototype.model=k;var D=function(t){f()(n,t);var e=M(n);function n(){return l()(this,n),e.apply(this,arguments)}return d()(n,[{key:"defaults",value:function(){return{frames:[],_undo:!0}}},{key:"initialize",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.config,i=void 0===r?{}:r,o=i.em,a={};this.em=o,t.frames||(a.component=t.component,a.styles=t.styles,['component','styles'].map((function(t){return e.unset(t)})));var s=t.frames||[a],c=new E(s,i);c.page=this,this.set('frames',c);var l=o&&o.get('UndoManager');l&&l.add(c)}},{key:"onRemove",value:function(){this.get('frames').reset()}},{key:"getFrames",value:function(){return this.get('frames')}},{key:"getMainFrame",value:function(){return this.getFrames().at(0)}},{key:"getMainComponent",value:function(){var t=this.getMainFrame();return t&&t.getComponent()}},{key:"toJSON",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=s["Model"].prototype.toJSON.call(this,t),n=Object(o["result"])(this,'defaults');return Object(o["forEach"])(e,(function(t,n){0===n.indexOf('_')&&delete e[n]})),Object(o["forEach"])(n,(function(t,n){e[n]===t&&delete e[n]})),e}}]),n}(s["Model"]);function A(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function _(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{};this.config=e,this.on('reset',this.onReset),this.on('remove',this.onRemove)}},{key:"onReset",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.previousModels||[];r.map((function(t){return e.onRemove(t)}))}},{key:"onRemove",value:function(t){t&&t.onRemove()}},{key:"add",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.config;return s["Collection"].prototype.add.call(this,t,_(_({},e),{},{config:n}))}}]),n}(s["Collection"]);function I(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function F(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};Object(o["bindAll"])(this,'_onPageChange');var n=e.em,r=F({},e);this.config=r,this.em=n;var i=new N([],r);this.pages=i;var a=new s["Model"]({_undo:!0});return this.model=a,i.on('add',(function(t,e,r){return n.trigger(B,t,r)})),i.on('remove',(function(t,e,r){return n.trigger(W,t,r)})),i.on('change',(function(t,e){n.trigger(U,t,t.changedAttributes(),e)})),i.on('reset',(function(e){return e.at(0)&&t.select(e.at(0))})),i.on('all',this.__onChange,this),a.on(G,this._onPageChange),this},__onChange:function(t,e,n,r){var i=r||n;this.em.trigger(R,{event:t,page:e,options:i})},onLoad:function(){var t=this.pages,e={silent:!0};t.add(this.config.pages||[],e);var n=t.length?this.getMain():this.add({type:K},e);this.select(n,e)},_onPageChange:function(t,e,n){var r=this.em,i=r.get('LayerManager'),o=e.getMainComponent();i&&o&&i.setRoot(o),r.trigger(z,e,t.previous('selected')),this.__onChange(G,e,n)},postLoad:function(){var t=this.em,e=this.model,n=t.get('UndoManager');n&&n.add(e),n&&n.add(this.pages)},add:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em;t.id=t.id||this._createId();var i=function(){var r=e.pages.add(t,n);return n.select&&e.select(r),r};return!n.silent&&r.trigger($,t,i,n),!n.abort&&i()},remove:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.em,i=Object(o["isString"])(t)?this.get(t):t,a=function(){return i&&e.pages.remove(i,n),i};return!n.silent&&r.trigger(q,i,a,n),!n.abort&&a()},get:function(t){return this.pages.filter((function(e){return e.get('id')===t}))[0]},getMain:function(){var t=this.pages;return t.filter((function(t){return t.get('type')===K}))[0]||t.at(0)},getAll:function(){return this.pages.models},getAllMap:function(){return this.getAll().reduce((function(t,e){return t[e.get('id')]=e,t}),{})},select:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object(o["isString"])(t)?this.get(t):t;return n&&(this.em.trigger(H,n,e),this.model.set('selected',n,e)),this},getSelected:function(){return this.model.get('selected')},destroy:function(){var t=this;this.pages.off().reset(),this.model.stopListening(),this.model.clear({silent:!0}),['selected','config','em','pages','model'].map((function(e){return t[e]=0}))},store:function(t){if(!this.em.get('hasPages'))return{};var e={},n=this.config;return e[this.storageKey]=JSON.stringify(this.getAll()),!t&&n.stm&&n.stm.store(e),e},load:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.storageKey,n=t[e]||[];if('string'==typeof n)try{n=JSON.parse(t[e])}catch(t){}return n&&n.length&&this.pages.reset(n),n},_createId:function(){var t,e=this.getAll().length+16,n=this.getAllMap();do{t=Object(a["d"])(e)}while(n[t]);return t}}}},function(t,e,n){"use strict";n.r(e);var r=n(1),i=n.n(r),o=i.a.Model.extend({defaults:{id:'',label:'',tagName:'span',className:'',command:'',context:'',buttons:[],attributes:{},options:{},active:!1,dragDrop:!1,togglable:!0,runDefaultCommand:!0,stopDefaultCommand:!1,disable:!1},initialize:function(t){if(this.get('buttons').length){var e=n(45).default;this.set('buttons',new e(this.get('buttons')))}}});e["default"]=i.a.Collection.extend({model:o,deactivateAllExceptOne:function(t,e){this.forEach((function(n,r){n!==t&&(n.set('active',!1),e&&n.get('buttons').length&&n.get('buttons').deactivateAllExceptOne(t,e))}))},deactivateAll:function(t,e){var n=t||'';this.forEach((function(t){t.get('context')==n&&t!==e&&t.set('active',!1,{fromCollection:1})}))},disableAllButtons:function(t){var e=t||'';this.forEach((function(t,n){t.get('context')==e&&t.set('disable',!0)}))},disableAllButtonsExceptOne:function(t,e){this.forEach((function(n,r){n!==t&&(n.set('disable',!0),e&&n.get('buttons').length&&n.get('buttons').disableAllButtonsExceptOne(t,e))}))}})},function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n*\/]/.test(n)?O(null,"select-op"):"."==n&&t.match(/^-?[_a-z][_a-z0-9-]*/i)?O("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(n)?O(null,n):t.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(t.current())&&(e.tokenize=k),O("variable callee","variable")):/[\w\\\-]/.test(n)?(t.eatWhile(/[\w\\\-]/),O("property","word")):O(null,null):/[\d.]/.test(t.peek())?(t.eatWhile(/[\w.%]/),O("number","unit")):t.match(/^-[\w\\\-]*/)?(t.eatWhile(/[\w\\\-]/),t.match(/^\s*:/,!1)?O("variable-2","variable-definition"):O("variable-2","variable")):t.match(/^\w+-/)?O("meta","meta"):void 0}function S(t){return function(e,n){for(var r,i=!1;null!=(r=e.next());){if(r==t&&!i){")"==t&&e.backUp(1);break}i=!i&&"\\"==r}return(r==t||!i&&")"!=t)&&(n.tokenize=null),O("string","string")}}function k(t,e){return t.next(),t.match(/^\s*[\"\')]/,!1)?e.tokenize=null:e.tokenize=S(")"),O(null,"(")}function j(t,e,n){this.type=t,this.indent=e,this.prev=n}function T(t,e,n,r){return t.context=new j(n,e.indentation()+(!1===r?0:a),t.context),n}function P(t){return t.context.prev&&(t.context=t.context.prev),t.context.type}function E(t,e,n){return A[n.context.type](t,e,n)}function M(t,e,n,r){for(var i=r||1;i>0;i--)n.context=n.context.prev;return E(t,e,n)}function D(t){var e=t.current().toLowerCase();o=m.hasOwnProperty(e)?"atom":v.hasOwnProperty(e)?"keyword":"variable"}var A={top:function(t,e,n){if("{"==t)return T(n,e,"block");if("}"==t&&n.context.prev)return P(n);if(w&&/@component/i.test(t))return T(n,e,"atComponentBlock");if(/^@(-moz-)?document$/i.test(t))return T(n,e,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(t))return T(n,e,"atBlock");if(/^@(font-face|counter-style)/i.test(t))return n.stateArg=t,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(t))return"keyframes";if(t&&"@"==t.charAt(0))return T(n,e,"at");if("hash"==t)o="builtin";else if("word"==t)o="tag";else{if("variable-definition"==t)return"maybeprop";if("interpolation"==t)return T(n,e,"interpolation");if(":"==t)return"pseudo";if(b&&"("==t)return T(n,e,"parens")}return n.context.type},block:function(t,e,n){if("word"==t){var r=e.current().toLowerCase();return h.hasOwnProperty(r)?(o="property","maybeprop"):f.hasOwnProperty(r)?(o=x?"string-2":"property","maybeprop"):b?(o=e.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(o+=" error","maybeprop")}return"meta"==t?"block":b||"hash"!=t&&"qualifier"!=t?A.top(t,e,n):(o="error","block")},maybeprop:function(t,e,n){return":"==t?T(n,e,"prop"):E(t,e,n)},prop:function(t,e,n){if(";"==t)return P(n);if("{"==t&&b)return T(n,e,"propBlock");if("}"==t||"{"==t)return M(t,e,n);if("("==t)return T(n,e,"parens");if("hash"!=t||/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(e.current())){if("word"==t)D(e);else if("interpolation"==t)return T(n,e,"interpolation")}else o+=" error";return"prop"},propBlock:function(t,e,n){return"}"==t?P(n):"word"==t?(o="property","maybeprop"):n.context.type},parens:function(t,e,n){return"{"==t||"}"==t?M(t,e,n):")"==t?P(n):"("==t?T(n,e,"parens"):"interpolation"==t?T(n,e,"interpolation"):("word"==t&&D(e),"parens")},pseudo:function(t,e,n){return"meta"==t?"pseudo":"word"==t?(o="variable-3",n.context.type):E(t,e,n)},documentTypes:function(t,e,n){return"word"==t&&c.hasOwnProperty(e.current())?(o="tag",n.context.type):A.atBlock(t,e,n)},atBlock:function(t,e,n){if("("==t)return T(n,e,"atBlock_parens");if("}"==t||";"==t)return M(t,e,n);if("{"==t)return P(n)&&T(n,e,b?"block":"top");if("interpolation"==t)return T(n,e,"interpolation");if("word"==t){var r=e.current().toLowerCase();o="only"==r||"not"==r||"and"==r||"or"==r?"keyword":l.hasOwnProperty(r)?"attribute":u.hasOwnProperty(r)?"property":d.hasOwnProperty(r)?"keyword":h.hasOwnProperty(r)?"property":f.hasOwnProperty(r)?x?"string-2":"property":m.hasOwnProperty(r)?"atom":v.hasOwnProperty(r)?"keyword":"error"}return n.context.type},atComponentBlock:function(t,e,n){return"}"==t?M(t,e,n):"{"==t?P(n)&&T(n,e,b?"block":"top",!1):("word"==t&&(o="error"),n.context.type)},atBlock_parens:function(t,e,n){return")"==t?P(n):"{"==t||"}"==t?M(t,e,n,2):A.atBlock(t,e,n)},restricted_atBlock_before:function(t,e,n){return"{"==t?T(n,e,"restricted_atBlock"):"word"==t&&"@counter-style"==n.stateArg?(o="variable","restricted_atBlock_before"):E(t,e,n)},restricted_atBlock:function(t,e,n){return"}"==t?(n.stateArg=null,P(n)):"word"==t?(o="@font-face"==n.stateArg&&!p.hasOwnProperty(e.current().toLowerCase())||"@counter-style"==n.stateArg&&!g.hasOwnProperty(e.current().toLowerCase())?"error":"property","maybeprop"):"restricted_atBlock"},keyframes:function(t,e,n){return"word"==t?(o="variable","keyframes"):"{"==t?T(n,e,"top"):E(t,e,n)},at:function(t,e,n){return";"==t?P(n):"{"==t||"}"==t?M(t,e,n):("word"==t?o="tag":"hash"==t&&(o="builtin"),"at")},interpolation:function(t,e,n){return"}"==t?P(n):"{"==t||";"==t?M(t,e,n):("word"==t?o="variable":"variable"!=t&&"("!=t&&")"!=t&&(o="error"),"interpolation")}};return{startState:function(t){return{tokenize:null,state:r?"block":"top",stateArg:null,context:new j(r?"block":"top",t||0,null)}},token:function(t,e){if(!e.tokenize&&t.eatSpace())return null;var n=(e.tokenize||C)(t,e);return n&&"object"==typeof n&&(i=n[1],n=n[0]),o=n,"comment"!=i&&(e.state=A[e.state](i,t,e)),o},indent:function(t,e){var n=t.context,r=e&&e.charAt(0),i=n.indent;return"prop"!=n.type||"}"!=r&&")"!=r||(n=n.prev),n.prev&&("}"!=r||"block"!=n.type&&"top"!=n.type&&"interpolation"!=n.type&&"restricted_atBlock"!=n.type?(")"!=r||"parens"!=n.type&&"atBlock_parens"!=n.type)&&("{"!=r||"at"!=n.type&&"atBlock"!=n.type)||(i=Math.max(0,n.indent-a)):i=(n=n.prev).indent),i},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:y,fold:"brace"}}));var n=["domain","regexp","url","url-prefix"],r=e(n),i=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],o=e(i),a=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","orientation","device-pixel-ratio","min-device-pixel-ratio","max-device-pixel-ratio","pointer","any-pointer","hover","any-hover","prefers-color-scheme"],s=e(a),c=["landscape","portrait","none","coarse","fine","on-demand","hover","interlace","progressive","dark","light"],l=e(c),u=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","all","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","binding","bleed","block-size","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-gap","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-gap","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","left","letter-spacing","line-break","line-height","line-height-step","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","place-content","place-items","place-self","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotate","rotation","rotation-point","row-gap","ruby-align","ruby-overhang","ruby-position","ruby-span","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-type","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-orientation","text-outline","text-overflow","text-rendering","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","touch-action","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-select","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","paint-order","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],d=e(u),h=["border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","margin-block","margin-block-end","margin-block-start","margin-inline","margin-inline-end","margin-inline-start","padding-block","padding-block-end","padding-block-start","padding-inline","padding-inline-end","padding-inline-start","scroll-snap-stop","scrollbar-3d-light-color","scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-track-color","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","shape-inside","zoom"],f=e(h),p=e(["font-display","font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]),g=e(["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"]),v=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],m=e(v),b=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","auto-flow","avoid","avoid-column","avoid-page","avoid-region","axis-pan","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","color","color-burn","color-dodge","column","column-reverse","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","darken","dashed","decimal","decimal-leading-zero","default","default-button","dense","destination-atop","destination-in","destination-out","destination-over","devanagari","difference","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","exclusion","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fill-box","fixed","flat","flex","flex-end","flex-start","footnotes","forwards","from","geometricPrecision","georgian","graytext","grid","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hard-light","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","hue","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-grid","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","lighten","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","luminosity","malayalam","manipulation","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","multiple_mask_images","multiply","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","opacity","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","pinch-zoom","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row","row-resize","row-reverse","rtl","run-in","running","s-resize","sans-serif","saturation","scale","scale3d","scaleX","scaleY","scaleZ","screen","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","self-start","self-end","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","soft-light","solid","somali","source-atop","source-in","source-out","source-over","space","space-around","space-between","space-evenly","spell-out","square","square-button","start","static","status-bar","stretch","stroke","stroke-box","sub","subpixel-antialiased","svg_masks","super","sw-resize","symbolic","symbols","system-ui","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","transform","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","unidirectional-pan","unset","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","view-box","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","wrap","wrap-reverse","x-large","x-small","xor","xx-large","xx-small"],y=e(b),w=n.concat(i).concat(a).concat(c).concat(u).concat(h).concat(v).concat(b);function x(t,e){for(var n,r=!1;null!=(n=t.next());){if(r&&"/"==n){e.tokenize=null;break}r="*"==n}return["comment","comment"]}t.registerHelper("hintWords","css",w),t.defineMIME("text/css",{documentTypes:r,mediaTypes:o,mediaFeatures:s,mediaValueKeywords:l,propertyKeywords:d,nonStandardPropertyKeywords:f,fontProperties:p,counterDescriptors:g,colorKeywords:m,valueKeywords:y,tokenHooks:{"/":function(t,e){return!!t.eat("*")&&(e.tokenize=x,x(t,e))}},name:"css"}),t.defineMIME("text/x-scss",{mediaTypes:o,mediaFeatures:s,mediaValueKeywords:l,propertyKeywords:d,nonStandardPropertyKeywords:f,colorKeywords:m,valueKeywords:y,fontProperties:p,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(t,e){return t.eat("/")?(t.skipToEnd(),["comment","comment"]):t.eat("*")?(e.tokenize=x,x(t,e)):["operator","operator"]},":":function(t){return!!t.match(/^\s*\{/,!1)&&[null,null]},$:function(t){return t.match(/^[\w-]+/),t.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"]},"#":function(t){return!!t.eat("{")&&[null,"interpolation"]}},name:"css",helperType:"scss"}),t.defineMIME("text/x-less",{mediaTypes:o,mediaFeatures:s,mediaValueKeywords:l,propertyKeywords:d,nonStandardPropertyKeywords:f,colorKeywords:m,valueKeywords:y,fontProperties:p,allowNested:!0,lineComment:"//",tokenHooks:{"/":function(t,e){return t.eat("/")?(t.skipToEnd(),["comment","comment"]):t.eat("*")?(e.tokenize=x,x(t,e)):["operator","operator"]},"@":function(t){return t.eat("{")?[null,"interpolation"]:!t.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/i,!1)&&(t.eatWhile(/[\w\\\-]/),t.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"])},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"}),t.defineMIME("text/x-gss",{documentTypes:r,mediaTypes:o,mediaFeatures:s,propertyKeywords:d,nonStandardPropertyKeywords:f,fontProperties:p,counterDescriptors:g,colorKeywords:m,valueKeywords:y,supportsAtComponent:!0,tokenHooks:{"/":function(t,e){return!!t.eat("*")&&(e.tokenize=x,x(t,e))}},name:"css",helperType:"gss"})}(n(18))},function(t,e,n){"use strict";n.r(e),e["default"]={run:function(t){t.DomComponents.clear(),t.CssComposer.clear()}}},function(t,e,n){"use strict";n.r(e);var r=n(0),i=n(3),o=n(21);e["default"]={run:function(t){Object(r["bindAll"])(this,'onKeyUp','enableDragger','disableDragger'),this.editor=t,this.canvasModel=this.canvas.getCanvasView().model,this.toggleMove(1)},stop:function(t){this.toggleMove(),this.disableDragger()},onKeyUp:function(t){' '===Object(i["h"])(t)&&this.editor.stopCommand(this.id)},enableDragger:function(t){this.toggleDragger(1,t)},disableDragger:function(t){this.toggleDragger(0,t)},toggleDragger:function(t,e){var n=this.canvasModel,r=this.em,i=this.dragger,a=t?'add':'remove';this.getCanvas().classList[a]("".concat(this.ppfx,"is__grabbing")),i||(i=new o["a"]({getPosition:function(){return{x:n.get('x'),y:n.get('y')}},setPosition:function(t){var e=t.x,r=t.y;n.set({x:e,y:r})},onStart:function(t,e){r.trigger('canvas:move:start',e)},onDrag:function(t,e){r.trigger('canvas:move',e)},onEnd:function(t,e){r.trigger('canvas:move:end',e)}}),this.dragger=i),t?i.start(e):i.stop()},toggleMove:function(t){var e=this.ppfx,n=t?'add':'remove',r=t?'on':'off',o={on:i["y"],off:i["x"]},a=this.getCanvas(),s=["".concat(e,"is__grab")];!t&&s.push("".concat(e,"is__grabbing")),s.forEach((function(t){return a.classList[n](t)})),o[r](document,'keyup',this.onKeyUp),o[r](a,'mousedown',this.enableDragger),o[r](document,'mouseup',this.disableDragger)}}},function(t,e,n){"use strict";n.r(e);var r=n(7),i=n.n(r),o=n(0);e["default"]={run:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=[],s=r.component||t.getSelectedAll();return s=Object(o["isArray"])(s)?i()(s):[s],t.select(null),s.forEach((function(t){if(!t||!t.get('removable'))return n.em.logWarning('The element is not removable',{component:t});t.remove(),t.collection&&a.push(t)})),a.length&&t.select(a),s}}},function(t,e,n){"use strict";n.r(e);var r=n(2),i=n.n(r),o=n(0),a=n(21);function s(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function c(t){for(var e=1;e2&&void 0!==arguments[2]?arguments[2]:{};Object(o["bindAll"])(this,'setPosition','onStart','onDrag','onEnd','getPosition','getGuidesStatic','renderGuide','getGuidesTarget');var i=r.target,s=r.event,u=r.mode,d=r.dragger,h=void 0===d?{}:d,f=i.getEl(),p=c({doc:f.ownerDocument,onStart:this.onStart,onEnd:this.onEnd,onDrag:this.onDrag,getPosition:this.getPosition,setPosition:this.setPosition,guidesStatic:function(){return n.guidesStatic},guidesTarget:function(){return n.guidesTarget}},h);this.setupGuides(),this.opts=r,this.editor=t,this.em=t.getModel(),this.target=i,this.isTran='translate'==u,this.guidesContainer=this.getGuidesContainer(),this.guidesTarget=this.getGuidesTarget(),this.guidesStatic=this.getGuidesStatic();var g=this.dragger;return g?g.setOptions(p):(g=new a["a"](p),this.dragger=g),s&&g.start(s),this.toggleDrag(1),this.em.trigger("".concat(l,":start"),this.getEventOpts()),g},getEventOpts:function(){return{mode:this.opts.mode,target:this.target,guidesTarget:this.guidesTarget,guidesStatic:this.guidesStatic}},stop:function(){this.toggleDrag()},setupGuides:function(){(this.guides||[]).forEach((function(t){var e=t.guide;e&&e.parentNode.removeChild(e)})),this.guides=[]},getGuidesContainer:function(){var t=this,e=this.guidesEl;if(!e){var n=this.editor,r=this.em,i=this.opts,a=n.getConfig('stylePrefix'),s=document.createElement('div'),c=document.createElement('div'),l="
\n
\n
");(e=document.createElement('div')).className="".concat(a,"guides"),s.className="".concat(a,"guide-info ").concat(a,"guide-info__x"),c.className="".concat(a,"guide-info ").concat(a,"guide-info__y"),s.innerHTML=l,c.innerHTML=l,e.appendChild(s),e.appendChild(c),n.Canvas.getGlobalToolsEl().appendChild(e),this.guidesEl=e,this.elGuideInfoX=s,this.elGuideInfoY=c,this.elGuideInfoContentX=s.querySelector(".".concat(a,"guide-info__content")),this.elGuideInfoContentY=c.querySelector(".".concat(a,"guide-info__content")),r.on('canvas:update frame:scroll',Object(o["debounce"])((function(){t.updateGuides(),i.debug&&t.guides.forEach((function(e){return t.renderGuide(e)}))}),200))}return e},getGuidesStatic:function(){var t=this,e=[],n=this.target.getEl(),r=n.parentNode,i=void 0===r?{}:r;return Object(o["each"])(i.children,(function(r){return e=e.concat(n!==r?t.getElementGuides(r):[])})),e.concat(this.getElementGuides(i))},getGuidesTarget:function(){return this.getElementGuides(this.target.getEl())},updateGuides:function(t){var e,n,r=this;(t||this.guides).forEach((function(t){var i=t.origin,a=e===i?n:r.getElementPos(i);e=i,n=a,Object(o["each"])(r.getGuidePosUpdate(t,a),(function(e,n){return t[n]=e})),t.originRect=a}))},getGuidePosUpdate:function(t,e){var n={},r=e.top,i=e.height,o=e.left,a=e.width;switch(t.type){case't':n.y=r;break;case'b':n.y=r+i;break;case'l':n.x=o;break;case'r':n.x=o+a;break;case'x':n.x=o+a/2;break;case'y':n.y=r+i/2}return n},renderGuide:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.guide||document.createElement('div'),n='px',r=t.active?2:1,i=e.children[0];return e.style="position: absolute; background-color: ".concat(t.active?'green':'red',";"),e.children.length||((i=document.createElement('div')).style='position: absolute; color: red; padding: 5px; top: 0; left: 0;',e.appendChild(i)),t.y?(e.style.width='100%',e.style.height="".concat(r).concat(n),e.style.top="".concat(t.y).concat(n),e.style.left=0):(e.style.width="".concat(r).concat(n),e.style.height='100%',e.style.left="".concat(t.x).concat(n),e.style.top="0".concat(n)),!t.guide&&this.guidesContainer.appendChild(e),e},getElementPos:function(t){return this.editor.Canvas.getElementPos(t,{noScroll:1})},getElementGuides:function(t){var e=this,n=this.opts,r=this.getElementPos(t),i=r.top,o=r.height,a=r.left,s=r.width,l=[{type:'t',y:i},{type:'b',y:i+o},{type:'l',x:a},{type:'r',x:a+s},{type:'x',x:a+s/2},{type:'y',y:i+o/2}].map((function(i){return c(c({},i),{},{origin:t,originRect:r,guide:n.debug&&e.renderGuide(i)})}));return l.forEach((function(t){return e.guides.push(t)})),l},getTranslate:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:'x',n=0;return(t||'').split(' ').forEach((function(t){var r=t.trim(),i="translate".concat(e.toUpperCase(),"(");0===r.indexOf(i)&&(n=parseFloat(r.replace(i,'')))})),n},setTranslate:function(t,e,n){var r="translate".concat(e.toUpperCase(),"("),i="".concat(r).concat(n,")"),o=(t||'').split(' ').map((function(t){return 0===t.trim().indexOf(r)&&(t=i),t})).join(' ');return o.indexOf(r)<0&&(o+=" ".concat(i)),o},getPosition:function(){var t=this.target,e=this.isTran,n=t.getStyle(),r=n.left,i=n.top,o=n.transform,a=0,s=0;return e?(a=this.getTranslate(o),s=this.getTranslate(o,'y')):(a=parseFloat(r),s=parseFloat(i)),{x:a,y:s}},setPosition:function(t){var e=t.x,n=t.y,r=t.end,i=t.position,a=t.width,s=t.height,c=this.target,l=this.isTran,u='px',d=r?'':1,h="".concat(e).concat(u),f="".concat(n).concat(u);if(l){var p=c.getStyle()['transform']||'';return p=this.setTranslate(p,'x',h),p=this.setTranslate(p,'y',f),c.addStyle({transform:p,en:d},{avoidStore:!r})}var g={position:i,width:a,height:s},v={left:h,top:f,en:d};Object(o["keys"])(g).forEach((function(t){var e=g[t];e&&(v[t]=e)})),c.addStyle(v,{avoidStore:!r})},_getDragData:function(){var t=this.target;return{target:t,parent:t.parent(),index:t.index()}},onStart:function(t){var e=this.target,n=this.editor,r=this.isTran,i=this.opts,o=i.center,a=i.onStart,s=n.Canvas,c=e.getStyle(),l='absolute';if(a&&a(this._getDragData()),!r&&c.position!==l){var u=s.offset(e.getEl()),d=u.left,h=u.top,f=u.width,p=u.height;if(o){var g=s.getMouseRelativeCanvas(t);d=g.x,h=g.y}this.setPosition({x:d,y:h,width:"".concat(f,"px"),height:"".concat(p,"px"),position:l})}},onDrag:function(){var t=this,e=this.guidesTarget,n=this.opts,r=n.onDrag;this.updateGuides(e),n.debug&&e.forEach((function(e){return t.renderGuide(e)})),n.guidesInfo&&this.renderGuideInfo(e.filter((function(t){return t.active}))),r&&r(this._getDragData())},onEnd:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.editor,i=this.opts,o=this.id,a=i.onEnd;a&&a(t,n,c(c({event:t},n),this._getDragData())),r.stopCommand(o),this.hideGuidesInfo(),this.em.trigger("".concat(l,":end"),this.getEventOpts())},hideGuidesInfo:function(){var t=this;['X','Y'].forEach((function(e){var n=t["elGuideInfo".concat(e)];n&&(n.style.display='none')}))},renderGuideInfo:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=this.guidesStatic;this.hideGuidesInfo(),e.forEach((function(e){var r=e.origin,i=e.x,a=t.getElementPos(r),s=Object(o["isUndefined"])(i)?'y':'x',u='y'===s,d=a[u?'left':'top'],h=a.rect[u?'left':'top'],f=u?d+a.width:d+a.height,p=u?h+a.rect.width:h+a.rect.height,g=t["elGuideInfo".concat(s.toUpperCase())],v=t["elGuideInfoContent".concat(s.toUpperCase())],m=g.style,b=n.filter((function(t){return t.type===e.type})).map((function(t){var e=t.originRect,n=e.left,r=e.width,i=e.top,o=e.height,a=u?n+r:i+o;return{gap:a0})).sort((function(t,e){return t.gap-e.gap})).map((function(t){return t.guide}))[0];if(b){var y=b.originRect,w=y.left,x=y.width,O=y.top,C=y.height,S=y.rect,k=u?w2&&void 0!==arguments[2]?arguments[2]:{};if(t.Canvas.hasFocus()||n.force){var r=[];t.getSelectedAll().forEach((function(t){for(var e=t.parent();e&&!e.get('selectable');)e=e.parent();e&&r.push(e)})),r.length&&t.select(r)}}}},function(t,e,n){"use strict";n.r(e),e["default"]={run:function(t){if(t.Canvas.hasFocus()){var e=[];t.getSelectedAll().forEach((function(t){var n=t.collection,r=n.indexOf(t),i=n.at(r+1);e.push(i||t)})),e.length&&t.select(e)}}}},function(t,e,n){"use strict";n.r(e),e["default"]={run:function(t){if(t.Canvas.hasFocus()){var e=[];t.getSelectedAll().forEach((function(t){var n=t.collection,r=n.indexOf(t),i=n.at(r-1);e.push(i&&r-1>=0?i:t)})),e.length&&t.select(e)}}}},function(t,e,n){"use strict";n.r(e);var r=n(0);e["default"]={run:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=n.target,o=t.DomComponents,a=i.get('type'),s=o.getWrapper().findType(a).length,c=[];if(!s){var l=t.CssComposer.getAll(),u=i.get('style-signature');u=Object(r["isArray"])(u)?u:[u],l.forEach((function(t){var e=t.selectorsToString();u.forEach((function(n){n&&e.indexOf(n)>=0&&c.push(t)}))})),l.remove(c)}return c}}},function(t,e,n){"use strict";n.r(e);var r=n(7),i=n.n(r);e["default"]={run:function(t){var e=t.getModel(),n=i()(t.getSelectedAll());n.length&&e.set('clipboard',n)}}},function(t,e,n){"use strict";n.r(e);var r=n(0),i=n(1),o=n.n(i),a=n(20),s=o.a.$;e["default"]=Object(r["extend"])({},a["default"],{init:function(t){Object(r["bindAll"])(this,'startDelete','stopDelete','onDelete'),this.hoverClass=this.pfx+'hover-delete',this.badgeClass=this.pfx+'badge-red'},enable:function(){this.$el.find('*').mouseover(this.startDelete).mouseout(this.stopDelete).click(this.onDelete)},startDelete:function(t){t.stopPropagation();var e=s(t.target);e.data('model').get('removable')&&(e.addClass(this.hoverClass),this.attachBadge(e.get(0)))},stopDelete:function(t){t.stopPropagation(),s(t.target).removeClass(this.hoverClass),this.badge&&this.badge.css({left:-1e3,top:-1e3})},onDelete:function(t){t.stopPropagation();var e=s(t.target);e.data('model').get('removable')&&(e.data('model').destroy(),this.removeBadge(),this.clean())},updateBadgeLabel:function(t){this.badge.html('Remove '+t.getName())}})},function(t,e,n){"use strict";n.r(e);var r=n(1),i=n.n(r).a.$;e["default"]={run:function(t,e){var n=this;e&&e.set&&e.set('active',0);var r=t.getConfig(),o=t.Modal,a=r.stylePrefix;if(this.cm=t.CodeManager||null,!this.$editors){var s=this.buildEditor('htmlmixed','hopscotch','HTML'),c=this.buildEditor('css','hopscotch','CSS');this.htmlEditor=s.el,this.cssEditor=c.el;var l=i("
"));l.append(s.$el).append(c.$el),this.$editors=l}o.open({title:r.textViewCode,content:this.$editors}).getModel().once('change:open',(function(){return t.stopCommand(n.id)})),this.htmlEditor.setContent(t.getHtml()),this.cssEditor.setContent(t.getCss())},stop:function(t){var e=t.Modal;e&&e.close()},buildEditor:function(t,e,n){var r=document.createElement('textarea');!this.codeMirror&&(this.codeMirror=this.cm.getViewer('CodeMirror'));var i=this.codeMirror.clone().set({label:n,codeName:t,theme:e,input:r}),o=new this.cm.EditorView({model:i,config:this.cm.getConfig()}).render().$el;return i.init(r),{el:i,$el:o}}}},function(t,e,n){"use strict";n.r(e);var r=n(0);e["default"]={isEnabled:function(){var t=document;return t.fullscreenElement||t.webkitFullscreenElement||t.mozFullScreenElement?1:0},enable:function(t){var e='';return t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen?(e='webkit',t.webkitRequestFullscreen()):t.mozRequestFullScreen?(e='moz',t.mozRequestFullScreen()):t.msRequestFullscreen?t.msRequestFullscreen():console.warn('Fullscreen not supported'),e},disable:function(){var t=document;this.isEnabled()&&(t.exitFullscreen?t.exitFullscreen():t.webkitExitFullscreen?t.webkitExitFullscreen():t.mozCancelFullScreen?t.mozCancelFullScreen():t.msExitFullscreen&&t.msExitFullscreen())},fsChanged:function(t,e){document;var n=(t||'')+'fullscreenchange';this.isEnabled()||(this.stop(null,this.sender),document.removeEventListener(n,this.fsChanged))},run:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.sender=e;var i=n.target,o=Object(r["isElement"])(i)?i:document.querySelector(i),a=this.enable(o||t.getContainer());this.fsChanged=this.fsChanged.bind(this,a),document.addEventListener(a+'fullscreenchange',this.fsChanged),t.trigger('change:canvasOffset')},stop:function(t,e){e&&e.set&&e.set('active',!1),this.disable(),t&&t.trigger('change:canvasOffset')}}},function(t,e,n){"use strict";n.r(e);var r=n(0),i=n(1),o=n.n(i),a=n(3),s=n(20),c=n(32),l=o.a.$;e["default"]=Object(r["extend"])({},c["default"],s["default"],{init:function(t){s["default"].init.apply(this,arguments),Object(r["bindAll"])(this,'initSorter','rollback','onEndMove'),this.opt=t,this.hoverClass=this.ppfx+'highlighter-warning',this.badgeClass=this.ppfx+'badge-warning',this.noSelClass=this.ppfx+'no-select'},enable:function(){for(var t=arguments.length,e=new Array(t),n=0;n2&&void 0!==arguments[2]?arguments[2]:{},i=t.Modal,o=t.AssetManager,a=o.getConfig(),s=o.getContainer(),c=r.modalTitle||t.t('assetManager.modalTitle')||'',l=r.types,u=r.accept;if(o.setTarget(r.target),o.onClick(r.onClick),o.onDblClick(r.onDblClick),o.onSelect(r.onSelect),!this.rendered||l){var d=o.getAll().filter((function(t){return 1}));l&&l.length&&(d=d.filter((function(t){return-1!==l.indexOf(t.get('type'))}))),o.render(d),this.rendered=1}if(u){var h=s.querySelector("input#".concat(a.stylePrefix,"uploadFile"));h&&h.setAttribute('accept',u)}return i.open({title:c,content:s}).getModel().once('change:open',(function(){return t.stopCommand(n.id)})),this},stop:function(t){return t.Modal.close(),this}}},function(t,e,n){"use strict";n.r(e),e["default"]={run:function(t,e){var n=t.BlockManager,r=t.Panels;if(!this.blocks){n.render();var i='views-container',o=document.createElement('div'),a=r.getPanel(i)||r.addPanel({id:i});o.appendChild(n.getContainer()),a.set('appendContent',o).trigger('change:appendContent'),this.blocks=o}this.blocks.style.display='block'},stop:function(){var t=this.blocks;t&&(t.style.display='none')}}},function(t,e,n){"use strict";n.r(e);var r=n(1);n.n(r).a.$;e["default"]={run:function(t){var e=t.LayerManager,n=t.Panels;if(!this.layers){var r='views-container',i=document.createElement('div'),o=n.getPanel(r)||n.addPanel({id:r});i.appendChild(e.render()),o.set('appendContent',i).trigger('change:appendContent'),this.layers=i}this.layers.style.display='block'},stop:function(){var t=this.layers;t&&(t.style.display='none')}}},function(t,e,n){"use strict";n.r(e);var r=n(1),i=n.n(r).a.$;e["default"]={run:function(t,e){if(this.sender=e,!this.$cn){var n=t.getConfig(),r=t.Panels;this.$cn=i('
'),this.$cn2=i('
'),this.$cn.append(this.$cn2);var o=t.DeviceManager;if(o&&n.showDevices)r.addPanel({id:'devices-c'}).set('appendContent',o.render()).trigger('change:appendContent');var a=t.SelectorManager;a&&this.$cn2.append(a.render([])),this.$cn2.append(t.StyleManager.render());var s=t.StyleManager.getConfig().stylePrefix;this.$header=i("
").concat(t.t('styleManager.empty'),"
")),this.$cn.append(this.$header),r.getPanel('views-container')?this.panel=r.getPanel('views-container'):this.panel=r.addPanel({id:'views-container'}),this.panel.set('appendContent',this.$cn).trigger('change:appendContent'),this.target=t.editor,this.listenTo(this.target,'component:toggled',this.toggleSm)}this.toggleSm()},toggleSm:function(){var t=this.target,e=this.sender;if(!e||!e.get||e.get('active')){var n=t.get('SelectorManager').getConfig().componentFirst,r=t.getSelectedAll().length;1===r||r>1&&n?(this.$cn2.show(),this.$header.hide()):(this.$cn2.hide(),this.$header.show())}},stop:function(){this.$cn2&&this.$cn2.hide(),this.$header&&this.$header.hide()}}},function(t,e,n){"use strict";n.r(e);var r=n(1),i=n.n(r).a.$;e["default"]={run:function(t,e){this.sender=e;var n=t.getModel(),r=t.Config.stylePrefix,o=t.TraitManager;if(!this.$cn){var a=o.getTraitsViewer(),s=o.getConfig();this.$cn=i('
'),this.$cn2=i('
'),this.$cn.append(this.$cn2),this.$header=i('
').append("
").concat(n.t('traitManager.empty'),"
")),this.$cn.append(this.$header),this.$cn2.append("
").concat(n.t('traitManager.label'),"
")),this.$cn2.append(a.render().el);var c=t.Panels;(c.getPanel('views-container')?c.getPanel('views-container'):c.addPanel({id:'views-container'})).set('appendContent',this.$cn.get(0)).trigger('change:appendContent'),this.target=t.getModel(),this.listenTo(this.target,'component:toggled',this.toggleTm)}this.toggleTm()},toggleTm:function(){var t=this.sender;t&&t.get&&!t.get('active')||(1===this.target.getSelectedAll().length?(this.$cn2.show(),this.$header.hide()):(this.$cn2.hide(),this.$header.show()))},stop:function(){this.$cn2&&this.$cn2.hide(),this.$header&&this.$header.hide()}}},function(t,e,n){"use strict";n.r(e);var r=n(0);e["default"]={run:function(t){var e=t.getModel().get('clipboard'),n=t.getSelected();e&&n&&(t.getSelectedAll().forEach((function(n){if(n){var i,o=n.collection,a=o.indexOf(n)+1,s=e.filter((function(t){return t.get('copyable')}));i=Object(r["contains"])(e,n)&&n.get('copyable')?o.add(n.clone(),{at:a}):o.add(s.map((function(t){return t.clone()})),{at:a}),(i=Object(r["isArray"])(i)?i:[i]).forEach((function(e){return t.trigger('component:paste',e)}))}})),n.emitUpdate())}}},function(t,e,n){"use strict";n.r(e);var r=n(7),i=n.n(r),o=n(0),a='sw-visibility';e["default"]={getPanels:function(t){return this.panels||(this.panels=t.Panels.getPanels()),this.panels},preventDrag:function(t){t.abort=1},tglEffects:function(t){var e=this.em,n=t?'on':'off';if(e){var r=e.get('Canvas'),i=r.getBody(),a=r.getToolbarEl();a&&(a.style.display=t?'none':'');var s=i.querySelectorAll(".".concat(this.ppfx,"no-pointer"));Object(o["each"])(s,(function(e){return e.style.pointerEvents=t?'all':''})),e[n]('run:tlb-move:before',this.preventDrag)}},run:function(t,e){var n=this;this.sender=e,this.selected=i()(t.getSelectedAll()),t.select(),this.shouldRunSwVisibility||(this.shouldRunSwVisibility=t.Commands.isActive(a)),this.shouldRunSwVisibility&&t.stopCommand(a),t.getModel().stopDefault();var r=this.getPanels(t),o=t.Canvas.getElement(),s=t.getEl(),c=t.Config.stylePrefix;if(!this.helper){var l=document.createElement('span');l.className="".concat(c,"off-prv fa fa-eye-slash"),s.appendChild(l),l.onclick=function(){return n.stopCommand()},this.helper=l}this.helper.style.display='inline-block',r.forEach((function(t){return t.set('visible',!1)}));var u=o.style;u.width='100%',u.height='100%',u.top='0',u.left='0',u.padding='0',u.margin='0',t.refresh(),this.tglEffects(1)},stop:function(t){var e=this.sender,n=void 0===e?{}:e,r=this.selected;n.set&&n.set('active',0);var i=this.getPanels(t);this.shouldRunSwVisibility&&(t.runCommand(a),this.shouldRunSwVisibility=!1),t.getModel().runDefault(),i.forEach((function(t){return t.set('visible',!0)})),t.Canvas.getElement().setAttribute('style',''),r&&t.select(r),delete this.selected,this.helper&&(this.helper.style.display='none'),t.refresh(),this.tglEffects()}}},function(t,e,n){"use strict";n.r(e),e["default"]={run:function(t,e,n){var r=n||{},i=r.el||'',o=t.Canvas,a=this.canvasResizer,s=r.options||{},c=o.getCanvasView();return s.appendTo=o.getResizerEl(),s.prefix=t.getConfig().stylePrefix,s.posFetcher=c.getElementPos.bind(c),s.mousePosFetcher=o.getMouseRelativePos,a&&!r.forceNew||(this.canvasResizer=t.Utils.Resizer.init(s),a=this.canvasResizer),a.setOptions(s),a.blur(),a.focus(i),a},stop:function(){var t=this.canvasResizer;t&&t.blur()}}},function(t,e,n){"use strict";n.r(e);var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(0),c=n(3);function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}var u=a.a.$;e["default"]={getOffsetMethod:function(t){return'get'+(t||'')+'OffsetViewerEl'},run:function(t,e,n){var r=n||{},o=r.state||'',a=t.getConfig(),d=this.em.getZoomDecimal(),h=r.el||'';if(!a.showOffsets||Object(c["u"])(h)||!a.showOffsetsSelected&&'Fixed'==o)t.stopCommand(this.id,n);else{var f=t.Canvas,p=function(t){for(var e=1;e")).get(0),D=u("
")).get(0),A=v+E+'-el',_="".concat(v+P+'-el'," ").concat(v+P),L="".concat(A," ").concat(v+E);y=u("
")).get(0),w=u("
")).get(0),x=u("
")).get(0),O=u("
")).get(0),C=u("
")).get(0),S=u("
")).get(0),k=u("
")).get(0),j=u("
")).get(0),this['marginT'+o]=y,this['marginB'+o]=w,this['marginL'+o]=x,this['marginR'+o]=O,this['padT'+o]=C,this['padB'+o]=S,this['padL'+o]=k,this['padR'+o]=j,M.appendChild(y),M.appendChild(w),M.appendChild(x),M.appendChild(O),D.appendChild(C),D.appendChild(S),D.appendChild(k),D.appendChild(j),b.appendChild(M),b.appendChild(D),this[m]='1'}var N='px',I=parseFloat(g.marginLeft.replace(N,''))*d,F=parseFloat(g.marginRight.replace(N,''))*d,R=parseFloat(g.marginTop.replace(N,''))*d,V=parseFloat(g.marginBottom.replace(N,''))*d,z=y.style,H=w.style,U=x.style,B=O.style,$=C.style,W=S.style,q=k.style,G=j.style,K=parseFloat(p.left),Y=parseFloat(g.width)*d+N;z.height=R+N,z.width=Y,z.top=p.top-R+N,z.left=K+N,H.height=V+N,H.width=Y,H.top=p.top+p.height+N,H.left=K+N;var X=p.height+R+V+N,J=p.top-R+N;U.height=X,U.width=I+N,U.top=J,U.left=K-I+N,B.height=X,B.width=F+N,B.top=J,B.left=K+p.width+N;var Z=parseFloat(g.paddingTop)*d;$.height=Z+N;var Q=parseFloat(g.paddingBottom)*d;W.height=Q+N;var tt=p.height-Q-Z+N,et=p.top+Z+N;q.height=tt,q.width=parseFloat(g.paddingLeft)*d+N,q.top=et;var nt=parseFloat(g.paddingRight)*d;G.height=tt,G.width=nt+N,G.top=et}},stop:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n||{},i=r.state||'',o=this.getOffsetMethod(i),a=t.Canvas,s=a[o](n.view);s.style.opacity=0}}},function(t,e,n){"use strict";n.r(e);var r=n(0);e["default"]={init:function(){Object(r["bindAll"])(this,'_onFramesChange')},run:function(t){this.toggleVis(t)},stop:function(t){this.toggleVis(t,0)},toggleVis:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(!t.Commands.isActive('preview')){var r=t.Canvas,i=n?'on':'off';r.getFrames().forEach((function(t){return e._upFrame(t,n)})),r.getModel()[i]('change:frames',this._onFramesChange)}},_onFramesChange:function(t,e){var n=this;e.forEach((function(t){return n._upFrame(t,1)}))},_upFrame:function(t,e){var n=e?'add':'remove';t.view.getBody().classList[n]("".concat(this.ppfx,"dashed"))}}},function(t,e,n){"use strict";n.r(e);var r,i=n(2),o=n.n(i),a={stylePrefix:'',appendTo:'',sortable:1,hidable:1,hideTextnode:1,root:'',showWrapper:1,showHover:1,scrollCanvas:{behavior:'smooth',block:'nearest'},scrollLayers:{behavior:'auto',block:'nearest'},highlightHover:1,onInit:function(){},onRender:function(){},extend:{}},s=n(0),c=n(3),l=n(1),u=n.n(l),d=n(6),h=n(5),f='contentEditable',p={mediaText:''},g=u.a.$,v=u.a.View.extend({events:{'mousedown [data-toggle-move]':'startSort','touchstart [data-toggle-move]':'startSort','click [data-toggle-visible]':'toggleVisibility','click [data-toggle-open]':'toggleOpening','click [data-toggle-select]':'handleSelect','mouseover [data-toggle-select]':'handleHover','mouseout [data-toggle-select]':'handleHoverOut','dblclick [data-name]':'handleEdit','keydown [data-name]':'handleEditKey','focusout [data-name]':'handleEditEnd'},template:function(t){var e=this.pfx,n=this.ppfx,r=this.config,i=this.clsNoEdit,o=r.hidable,a=this.countChildren(t),s=a?'':this.clsNoChild,c="".concat(this.clsTitle," ").concat(s),l="".concat(this.clsTitleC," ").concat(n,"one-bg"),u="".concat(this.clsCaret," fa fa-chevron-right"),d="".concat(this.inputNameCls," ").concat(i," ").concat(n,"no-app"),h=this.level+1,f="".concat(30+10*h,"px"),p=t.getName(),g=t.getIcon(),v="".concat(e,"layer");return"\n ".concat(o?""):'',"\n
\n
\n
\n \n ").concat(g?"").concat(g,""):'',"\n ").concat(p,"\n
\n
\n
\n
").concat(a||'',"
\n
\n \n
\n
")},initialize:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object(s["bindAll"])(this,'__render'),this.opt=e,this.level=e.level;var n=e.config||{},r=n.onInit;this.config=n,this.em=e.config.em,this.ppfx=this.em.get('Config').stylePrefix,this.sorter=e.sorter||'',this.pfx=this.config.stylePrefix,this.parentView=e.parentView;var i=this.pfx,o=this.ppfx,a=this.model,c=a.get('components'),l=a.get('type')||'default';a.set('open',!1),this.listenTo(c,'remove add reset',this.checkChildren),[['change:status',this.updateStatus],['change:open',this.updateOpening],['change:layerable',this.updateLayerable],['change:style:display',this.updateVisibility],['rerender:layer',this.render]].forEach((function(e){return t.listenTo(a,e[0],e[1])})),this.className="".concat(i,"layer ").concat(i,"layer__t-").concat(l," no-select ").concat(o,"two-color"),this.inputNameCls="".concat(o,"layer-name"),this.clsTitleC="".concat(i,"layer-title-c"),this.clsTitle="".concat(i,"layer-title"),this.clsCaret="".concat(i,"layer-caret"),this.clsCount="".concat(i,"layer-count"),this.clsMove="".concat(i,"layer-move"),this.clsChildren="".concat(i,"layer-children"),this.clsNoChild="".concat(i,"layer-no-chld"),this.clsEdit="".concat(this.inputNameCls,"--edit"),this.clsNoEdit="".concat(this.inputNameCls,"--no-edit"),this.$el.data('model',a),this.$el.data('collection',c),a.viewLayer=this,r.bind(this)({component:a,render:this.__render,listenTo:this.listenTo})},getVisibilityEl:function(){return this.eyeEl||(this.eyeEl=this.$el.children(".".concat(this.pfx,"layer-vis"))),this.eyeEl},updateVisibility:function(){var t=this.pfx,e=this.model,n="".concat(t,"layer-hidden"),r='none'===e.getStyle(p).display?'addClass':'removeClass';this.$el[r](n),this.getVisibilityEl()[r]('fa-eye-slash')},toggleVisibility:function(t){t&&t.stopPropagation();var e=this.model,n=this.em,r='__prev-display',i=e.get(r),o=e.getStyle(p),a=o.display;'none'==a?(delete o.display,i&&(o.display=i,e.unset(r))):(a&&e.set(r,a),o.display='none'),e.setStyle(o,p),n&&n.trigger('component:toggled')},handleEdit:function(t){t&&t.stopPropagation();var e=this.em,n=this.$el,r=this.clsNoEdit,i=this.clsEdit,o=this.getInputName();o[f]=!0,o.focus(),document.execCommand('selectAll',!1,null),e&&e.setEditing(1),n.find(".".concat(this.inputNameCls)).removeClass(r).addClass(i)},handleEditKey:function(t){t.stopPropagation(),(Object(c["q"])(t)||Object(c["p"])(t))&&this.handleEditEnd(t)},handleEditEnd:function(t){t&&t.stopPropagation();var e=this.em,n=this.$el,r=this.clsNoEdit,i=this.clsEdit,o=this.getInputName(),a=o.textContent;o.scrollLeft=0,o[f]=!1,this.setName(a,{component:this.model,propName:'custom-name'}),e&&e.setEditing(0),n.find(".".concat(this.inputNameCls)).addClass(r).removeClass(i)},setName:function(t,e){var n=e.propName;this.model.set(n,t)},getInputName:function(){return this.inputName||(this.inputName=this.el.querySelector(".".concat(this.inputNameCls))),this.inputName},updateOpening:function(){var t=this.opt.opened||{},e=this.model,n='fa-chevron-down';e.get('open')?(this.$el.addClass('open'),this.getCaret().addClass(n),t[e.cid]=e):(this.$el.removeClass('open'),this.getCaret().removeClass(n),delete t[e.cid])},toggleOpening:function(t){var e=this.model;t.stopImmediatePropagation(),e.get('components').length&&e.set('open',!e.get('open'))},handleSelect:function(t){t.stopPropagation();var e=this.em,n=this.config,r=this.model;if(e){e.setSelected(r,{fromLayers:1,event:t});var i=n.scrollCanvas;i&&r.views.forEach((function(t){return t.scrollIntoView(i)}))}},handleHover:function(t){t.stopPropagation();var e=this.em,n=this.config,r=this.model;e&&n.showHover&&e.setHovered(r,{fromLayers:1})},handleHoverOut:function(t){t.stopPropagation();var e=this.em,n=this.config;e&&n.showHover&&e.setHovered(0,{fromLayers:1})},startSort:function(t){t.stopPropagation();var e=this.em,n=this.sorter;t.button&&0!==t.button||n&&(n.onStart=function(t){return e.trigger("".concat(h["b"],":start"),t)},n.onMoveClb=function(t){return e.trigger(h["b"],t)},n.startSort(t.target))},freeze:function(){this.$el.addClass(this.pfx+'opac50'),this.model.set('open',0)},unfreeze:function(){this.$el.removeClass(this.pfx+'opac50')},updateStatus:function(t){d["default"].prototype.updateStatus.apply(this,[{avoidHover:!this.config.highlightHover,noExtHl:1}])},isVisible:function(){var t=this.model.getStyle().display;return!(t&&'none'===t)},checkChildren:function(){var t=this.model,e=this.clsNoChild,n=this.countChildren(t),r=this.$el.children(".".concat(this.clsTitleC)).children(".".concat(this.clsTitle)),i=this.cnt;i||(i=this.$el.children('[data-count]').get(0),this.cnt=i),r[n?'removeClass':'addClass'](e),i&&(i.innerHTML=n||''),!n&&t.set('open',0)},countChildren:function(t){var e=0;return t.get('components').each((function(t){var n=this.opt.isCountable,r=this.config.hideTextnode;n&&!n(t,r)||e++}),this),e},getCaret:function(){if(!this.caret||!this.caret.length){this.pfx;this.caret=this.$el.children(".".concat(this.clsTitleC)).find(".".concat(this.clsCaret))}return this.caret},setRoot:function(t){t=Object(s["isString"])(t)?this.em.getWrapper().find(t)[0]:t;var e=Object(c["i"])(t,g);e&&(this.stopListening(),this.model=e,this.initialize(this.opt),this._rendered&&this.render())},updateLayerable:function(){(this.parentView||this).render()},__clearItems:function(){var t=this.items;t&&t.remove()},remove:function(){u.a.View.prototype.remove.apply(this,arguments),this.__clearItems()},render:function(){var t=this.model,e=this.config,i=this.pfx,o=this.ppfx,a=this.opt;this.__clearItems();var c=a.isCountable,l=c&&!c(t,e.hideTextnode),u=this.isVisible(),d=this.$el.empty(),h=this.level+1;this.inputName=0,Object(s["isUndefined"])(r)&&(r=n(96).default),this.items=new r({ItemView:a.ItemView,collection:t.get('components'),config:this.config,sorter:this.sorter,opened:this.opt.opened,parentView:this,parent:t,level:h});var f=this.items.render().$el;return this.config.showWrapper||1!==h?(d.html(this.template(t)),d.find(".".concat(this.clsChildren)).append(f)):d.append(f),t.get('draggable')&&this.config.sortable||d.children(".".concat(this.clsMove)).remove(),!u&&(this.className+=" ".concat(i,"hide")),l&&(this.className+=" ".concat(o,"hidden")),d.attr('class',this.className),this.updateOpening(),this.updateStatus(),this.updateVisibility(),this.__render(),this._rendered=1,this},__render:function(){var t=this.model,e=this.config,n={component:t,el:this.el};e.onRender.bind(this)(n),this.em.trigger('layer:render',n)}});function m(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function b(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return(n=b(b({},a),e)).stylePrefix=e.pStylePrefix,t=n.em,this},getConfig:function(){return n},onLoad:function(){var r=v.extend(n.extend);e=new r({ItemView:r,level:0,config:n,opened:n.opened||{},model:t.get('DomComponents').getWrapper()}),t&&t.on('component:selected',this.componentChanged),this.componentChanged()},postRender:function(){var t=n.appendTo,e=n.root;(e&&this.setRoot(e),t)&&(Object(s["isElement"])(t)?t:document.querySelector(t)).appendChild(this.render())},setRoot:function(t){return e&&e.setRoot(t),this},getRoot:function(){return e.model},getAll:function(){return e},componentChanged:function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!r.fromLayers){var i=t.get('opened'),o=t.getSelected(),a=n.scrollLayers,s=o&&o.collection?o.collection.parent:null;for(var c in i)i[c].set('open',0);for(;s;)s.set('open',1),i[s.cid]=s,s=s.collection?s.collection.parent:null;if(o&&a){var l=o.viewLayer&&o.viewLayer.el;l&&l.scrollIntoView(a)}}},render:function(){return e.render().el},destroy:function(){e&&e.remove(),[t,e,n].forEach((function(t){return{}}))}}}},function(t,e,n){var r,i,o;1&&(i=[n(0),n(1)],void 0===(o='function'==typeof(r=function(t,e){var n=Array.prototype.slice;function r(t,e,n){return n.length<=4?t.call(e,n[0],n[1],n[2],n[3]):t.apply(e,n)}function i(t,e){return n.call(t,e)}function o(e,n){return null!=e&&(t.isArray(n)||(n=i(arguments,1)),t.all(n,(function(t){return t in e})))}var a,s,c=(a=!1,s=-1,function(){return a||(s++,a=!0,t.defer((function(){a=!1}))),s});function l(){this.registeredObjects=[],this.cidIndexes=[]}function u(e,n,r,i){for(var o,a=0,s=n.length;at.maximumStackLength&&(t.shift(),t.pointer--)}}}l.prototype={isRegistered:function(e){return e&&e.cid?this.registeredObjects[e.cid]:t.contains(this.registeredObjects,e)},register:function(t){return!this.isRegistered(t)&&(t&&t.cid?(this.registeredObjects[t.cid]=t,this.cidIndexes.push(t.cid)):this.registeredObjects.push(t),!0)},unregister:function(e){if(this.isRegistered(e)){if(e&&e.cid)delete this.registeredObjects[e.cid],this.cidIndexes.splice(t.indexOf(this.cidIndexes,e.cid),1);else{var n=t.indexOf(this.registeredObjects,e);this.registeredObjects.splice(n,1)}return!0}return!1},get:function(){return t.map(this.cidIndexes,(function(t){return this.registeredObjects[t]}),this).concat(this.registeredObjects)}};var p={add:{undo:function(t,e,n,r){t.remove(n,r)},redo:function(t,e,n,r){r.index&&(r.at=r.index),t.add(n,r)},on:function(e,n,r){return{object:n,before:void 0,after:e,options:t.clone(r)}}},remove:{undo:function(t,e,n,r){"index"in r&&(r.at=r.index),t.add(e,r)},redo:function(t,e,n,r){t.remove(e,r)},on:function(e,n,r){return{object:n,before:e,after:void 0,options:t.clone(r)}}},change:{undo:function(e,n,r,i){t.isEmpty(n)?t.each(t.keys(r),e.unset,e):(e.set(n),i&&i.unsetData&&i.unsetData.before&&i.unsetData.before.length&&t.each(i.unsetData.before,e.unset,e))},redo:function(e,n,r,i){t.isEmpty(r)?t.each(t.keys(n),e.unset,e):(e.set(r),i&&i.unsetData&&i.unsetData.after&&i.unsetData.after.length&&t.each(i.unsetData.after,e.unset,e))},on:function(e,n){var r=e.changedAttributes(),i=t.keys(r),o=t.pick(e.previousAttributes(),i),a=t.keys(o),s=(n||(n={})).unsetData={after:[],before:[]};return i.length!=a.length&&(i.length>a.length?t.each(i,(function(t){t in o||s.before.push(t)}),this):t.each(a,(function(t){t in r||s.after.push(t)}))),{object:e,before:o,after:r,options:t.clone(n)}}},reset:{undo:function(t,e,n){t.reset(e)},redo:function(t,e,n){t.reset(n)},on:function(e,n){return{object:e,before:n.previousModels,after:t.clone(e.models)}}}};function g(){}function v(e,n,r,i){if("object"==typeof n)return t.each(n,(function(t,n){2===e?v(e,t,r,i):v(e,n,t,r)}));switch(e){case 0:o(r,"undo","redo","on")&&t.all(t.pick(r,"undo","redo","on"),t.isFunction)&&(i[n]=r);break;case 1:i[n]&&t.isObject(r)&&(i[n]=t.extend({},i[n],r));break;case 2:delete i[n]}return this}g.prototype=p;var m=e.Model.extend({defaults:{type:null,object:null,before:null,after:null,magicFusionIndex:null},undo:function(t){d("undo",this.attributes)},redo:function(t){d("redo",this.attributes)}}),b=e.Collection.extend({model:m,pointer:-1,track:!1,isCurrentlyUndoRedoing:!1,maximumStackLength:1/0,setMaxLength:function(t){this.maximumStackLength=t}}),y=e.Model.extend({defaults:{maximumStackLength:1/0,track:!1},initialize:function(e){this.stack=new b,this.objectRegistry=new l,this.undoTypes=new g,this.stack.setMaxLength(this.get("maximumStackLength")),this.on("change:maximumStackLength",(function(t,e){this.stack.setMaxLength(e)}),this),e&&e.track&&this.startTracking(),e&&e.register&&(t.isArray(e.register)||t.isArguments(e.register)?r(this.register,this,e.register):this.register(e.register))},startTracking:function(){this.set("track",!0),this.stack.track=!0},stopTracking:function(){this.set("track",!1),this.stack.track=!1},isTracking:function(){return this.get("track")},_addToStack:function(t){f(this.stack,t,i(arguments,1),this.undoTypes)},register:function(){u("on",arguments,this._addToStack,this)},unregister:function(){u("off",arguments,this._addToStack,this)},unregisterAll:function(){r(this.unregister,this,this.objectRegistry.get())},undo:function(t){h("undo",this,this.stack,t)},undoAll:function(){h("undo",this,this.stack,!1,!0)},redo:function(t){h("redo",this,this.stack,t)},redoAll:function(){h("redo",this,this.stack,!1,!0)},isAvailable:function(t){var e=this.stack,n=e.length;switch(t){case"undo":return n>0&&e.pointer>-1;case"redo":return n>0&&e.pointer=0||(i[n]=t[n]);return i},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e,n){var r=n(46);t.exports=function(t){if(Array.isArray(t))return r(t)},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e,n){"use strict";n.r(e);var r=n(8),i=n.n(r),o=n(2),a=n.n(o),s=n(0),c=n(42),l=n.n(c);function u(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function d(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};return e=d(d({},r),n),t=e.em,this.em=t,this},onLoad:function(){var t=e.defaults;for(var n in t){var r=t[n];this.add(n,r.keys,r.handler,r.opts||{})}},add:function(t,e,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=this.em,c=a.get('Commands'),u=a.getEditor(),d=a.get('Canvas'),h={id:t,keys:e,handler:r},f=n[t];return f&&this.remove(t),n[t]=h,l()(e,(function(e,n){var l={event:e,h:n};if(r=Object(s["isString"])(r)?c.get(r):r,!a.isEditing()&&!u.Canvas.isInputFocused()||o.force){o.prevent&&d.getCanvasView().preventDefault(e),'object'==i()(r)?c.runCommand(r,l):r(u,0,l);var h=[t,n.shortcut,e];a.trigger.apply(a,['keymap:emit'].concat(h)),a.trigger.apply(a,["keymap:emit:".concat(t)].concat(h))}})),a.trigger('keymap:add',h),h},get:function(t){return n[t]},getAll:function(){return n},remove:function(t){var e=this.em,r=this.get(t);if(r)return delete n[t],r.keys.split(', ').forEach((function(t){return l.a.unbind(t.trim())})),e&&e.trigger('keymap:remove',r),r},removeAll:function(){var t=this;return Object.keys(n).forEach((function(e){return t.remove(e)})),this},destroy:function(){this.removeAll(),[t,e,n].forEach((function(t){return{}})),this.em={}}}}},function(t,e,n){"use strict";n.r(e);var r=n(2),i=n.n(r),o=n(74),a=n.n(o),s=n(0);function c(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function l(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};n=l(l({},i),d),t=n.em,this.em=t;var h=!0;return(e=new a.a(l({track:!0,register:[]},n))).changeUndoType('change',{condition:function(t){var e=t.get('_undo');if(e){var n=t.get('_undoexc');if(Object(s["isArray"])(n)&&c(t).some((function(t){return n.indexOf(t)>=0})))return!1;if(Object(s["isBoolean"])(e))return!0;if(Object(s["isArray"])(e)&&c(t).some((function(t){return e.indexOf(t)>=0})))return!0}return!1},on:function(t,e,n){!r&&(r=t.previousAttributes());var i=n||e||{};if(i.noUndo&&setTimeout((function(){r=null})),!o(i)){var a=t.toJSON({fromUndo:h}),c={object:t,before:r,after:a};if(r=null,!Object(s["isEmpty"])(a))return c}}}),e.changeUndoType('add',{on:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!o(n)&&u.isRegistered(e))return{object:e,before:void 0,after:t,options:l(l({},n),{},{fromUndo:h})}}}),e.changeUndoType('remove',{on:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!o(n)&&u.isRegistered(e))return{object:e,before:t,after:void 0,options:l(l({},n),{},{fromUndo:h})}}}),e.on('undo redo',(function(){t.trigger('component:toggled change:canvasOffset'),t.getSelectedAll().map((function(t){return t.trigger('rerender:layer')}))})),['undo','redo'].forEach((function(n){return e.on(n,(function(){return t.trigger(n)}))})),this},postLoad:function(){n.trackSelection&&t&&this.add(t.get('selected'))},getConfig:function(){return n},add:function(t){return e.register(t),this},remove:function(t){return e.unregister(t),this},removeAll:function(){return e.unregisterAll(),this},start:function(){return e.startTracking(),this},stop:function(){return e.stopTracking(),this},undo:function(){var n=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return!t.isEditing()&&e.undo(n),this},undoAll:function(){return e.undoAll(),this},redo:function(){var n=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return!t.isEditing()&&e.redo(n),this},redoAll:function(){return e.redoAll(),this},hasUndo:function(){return e.isAvailable('undo')},hasRedo:function(){return e.isAvailable('redo')},isRegistered:function(t){return!!this.getInstance().objectRegistry.isRegistered(t)},getStack:function(){return e.stack},getStackGroup:function(){var t=[],e=[];return this.getStack().forEach((function(n){var r=n.get('magicFusionIndex');e.indexOf(r)<0&&(e.push(r),t.push(n))})),t},__getStackRead:function(){var t={};return this.getStack().forEach((function(e){var n=e.get('magicFusionIndex'),r=function(t){var e=t.attributes;return{type:e.type,after:e.after,before:e.before,object:e.object}}(e);t[n]?t[n].push(r):t[n]=[r]})),Object.keys(t).map((function(e){return t[e]}))},getPointer:function(){return this.getStack().pointer},clear:function(){return e.clear(),this},getInstance:function(){return e},destroy:function(){this.clear().removeAll(),[t,e,n,r].forEach((function(t){return{}})),this.em={}}}}},function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},n(84),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(31))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i,o,a,s,c=1,l={},u=!1,d=t.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(t);h=h&&h.setTimeout?h:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){p(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){p(t.data)},r=function(t){o.port2.postMessage(t)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,r=function(t){var e=d.createElement("script");e.onreadystatechange=function(){p(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e)}):r=function(t){setTimeout(p,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&p(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(a+e,"*")}),h.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n1)for(var n=1;n","i")}function o(t,e){for(var n in t)for(var r=e[n]||(e[n]=[]),i=t[n],o=i.length-1;o>=0;o--)r.unshift(i[o])}t.defineMode("htmlmixed",(function(n,a){var s=t.getMode(n,{name:"xml",htmlMode:!0,multilineTagIndentFactor:a.multilineTagIndentFactor,multilineTagIndentPastTag:a.multilineTagIndentPastTag,allowMissingTagName:a.allowMissingTagName}),c={},l=a&&a.tags,u=a&&a.scriptTypes;if(o(e,c),l&&o(l,c),u)for(var d=u.length-1;d>=0;d--)c.script.unshift(["type",u[d].matches,u[d].mode]);function h(e,o){var a,l=s.token(e,o.htmlState),u=/\btag\b/.test(l);if(u&&!/[<>\s\/]/.test(e.current())&&(a=o.htmlState.tagName&&o.htmlState.tagName.toLowerCase())&&c.hasOwnProperty(a))o.inTag=a+" ";else if(o.inTag&&u&&/>$/.test(e.current())){var d=/^([\S]+) (.*)/.exec(o.inTag);o.inTag=null;var f=">"==e.current()&&function(t,e){for(var n=0;n-1?t.backUp(r.length-i):r.match(/<\/?$/)&&(t.backUp(r.length),t.match(e,!1)||t.match(r)),n}(t,v,e.localMode.token(t,e.localState))},o.localMode=p,o.localState=t.startState(p,s.indent(o.htmlState,"",""))}else o.inTag&&(o.inTag+=e.current(),e.eol()&&(o.inTag+=" "));return l}return{startState:function(){return{token:h,inTag:null,localMode:null,localState:null,htmlState:t.startState(s)}},copyState:function(e){var n;return e.localState&&(n=t.copyState(e.localMode,e.localState)),{token:e.token,inTag:e.inTag,localMode:e.localMode,localState:n,htmlState:t.copyState(s,e.htmlState)}},token:function(t,e){return e.token(t,e)},indent:function(e,n,r){return!e.localMode||/^\s*<\//.test(n)?s.indent(e.htmlState,n,r):e.localMode.indent?e.localMode.indent(e.localState,n,r):t.Pass},innerMode:function(t){return{state:t.localState||t.htmlState,mode:t.localMode||s}}}}),"xml","javascript","css"),t.defineMIME("text/html","htmlmixed")}(n(18),n(87),n(88),n(48))},function(t,e,n){1&&function(t){"use strict";var e={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},n={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};t.defineMode("xml",(function(r,i){var o,a,s=r.indentUnit,c={},l=i.htmlMode?e:n;for(var u in l)c[u]=l[u];for(var u in i)c[u]=i[u];function d(t,e){function n(n){return e.tokenize=n,n(t,e)}var r=t.next();return"<"==r?t.eat("!")?t.eat("[")?t.match("CDATA[")?n(f("atom","]]>")):null:t.match("--")?n(f("comment","--\x3e")):t.match("DOCTYPE",!0,!0)?(t.eatWhile(/[\w\._\-]/),n(function t(e){return function(n,r){for(var i;null!=(i=n.next());){if("<"==i)return r.tokenize=t(e+1),r.tokenize(n,r);if(">"==i){if(1==e){r.tokenize=d;break}return r.tokenize=t(e-1),r.tokenize(n,r)}}return"meta"}}(1))):null:t.eat("?")?(t.eatWhile(/[\w\._\-]/),e.tokenize=f("meta","?>"),"meta"):(o=t.eat("/")?"closeTag":"openTag",e.tokenize=h,"tag bracket"):"&"==r?(t.eat("#")?t.eat("x")?t.eatWhile(/[a-fA-F\d]/)&&t.eat(";"):t.eatWhile(/[\d]/)&&t.eat(";"):t.eatWhile(/[\w\.\-:]/)&&t.eat(";"))?"atom":"error":(t.eatWhile(/[^&<]/),null)}function h(t,e){var n,r,i=t.next();if(">"==i||"/"==i&&t.eat(">"))return e.tokenize=d,o=">"==i?"endTag":"selfcloseTag","tag bracket";if("="==i)return o="equals",null;if("<"==i){e.tokenize=d,e.state=m,e.tagName=e.tagStart=null;var a=e.tokenize(t,e);return a?a+" tag error":"tag error"}return/[\'\"]/.test(i)?(e.tokenize=(n=i,(r=function(t,e){for(;!t.eol();)if(t.next()==n){e.tokenize=h;break}return"string"}).isInAttribute=!0,r),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function f(t,e){return function(n,r){for(;!n.eol();){if(n.match(e)){r.tokenize=d;break}n.next()}return t}}function p(t,e,n){this.prev=t.context,this.tagName=e||"",this.indent=t.indented,this.startOfLine=n,(c.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function g(t){t.context&&(t.context=t.context.prev)}function v(t,e){for(var n;1;){if(!t.context)return;if(n=t.context.tagName,!c.contextGrabbers.hasOwnProperty(n)||!c.contextGrabbers[n].hasOwnProperty(e))return;g(t)}}function m(t,e,n){return"openTag"==t?(n.tagStart=e.column(),b):"closeTag"==t?y:m}function b(t,e,n){return"word"==t?(n.tagName=e.current(),a="tag",O):c.allowMissingTagName&&"endTag"==t?(a="tag bracket",O(t,0,n)):(a="error",b)}function y(t,e,n){if("word"==t){var r=e.current();return n.context&&n.context.tagName!=r&&c.implicitlyClosed.hasOwnProperty(n.context.tagName)&&g(n),n.context&&n.context.tagName==r||!1===c.matchClosing?(a="tag",w):(a="tag error",x)}return c.allowMissingTagName&&"endTag"==t?(a="tag bracket",w(t,0,n)):(a="error",x)}function w(t,e,n){return"endTag"!=t?(a="error",w):(g(n),m)}function x(t,e,n){return a="error",w(t,0,n)}function O(t,e,n){if("word"==t)return a="attribute",C;if("endTag"==t||"selfcloseTag"==t){var r=n.tagName,i=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==t||c.autoSelfClosers.hasOwnProperty(r)?v(n,r):(v(n,r),n.context=new p(n,r,i==n.indented)),m}return a="error",O}function C(t,e,n){return"equals"==t?S:(c.allowMissing||(a="error"),O(t,0,n))}function S(t,e,n){return"string"==t?k:"word"==t&&c.allowUnquoted?(a="string",O):(a="error",O(t,0,n))}function k(t,e,n){return"string"==t?k:O(t,0,n)}return d.isInText=!0,{startState:function(t){var e={tokenize:d,state:m,indented:t||0,tagName:null,tagStart:null,context:null};return null!=t&&(e.baseIndent=t),e},token:function(t,e){if(!e.tagName&&t.sol()&&(e.indented=t.indentation()),t.eatSpace())return null;o=null;var n=e.tokenize(t,e);return(n||o)&&"comment"!=n&&(a=null,e.state=e.state(o||n,t,e),a&&(n="error"==a?n+" error":a)),n},indent:function(e,n,r){var i=e.context;if(e.tokenize.isInAttribute)return e.tagStart==e.indented?e.stringStartCol+1:e.indented+s;if(i&&i.noIndent)return t.Pass;if(e.tokenize!=h&&e.tokenize!=d)return r?r.match(/^(\s*)/)[0].length:0;if(e.tagName)return!1!==c.multilineTagIndentPastTag?e.tagStart+e.tagName.length+2:e.tagStart+s*(c.multilineTagIndentFactor||1);if(c.alignCDATA&&/$/,blockCommentStart:"\x3c!--",blockCommentEnd:"--\x3e",configuration:c.htmlMode?"html":"xml",helperType:c.htmlMode?"html":"xml",skipAttribute:function(t){t.state==S&&(t.state=O)},xmlCurrentTag:function(t){return t.tagName?{name:t.tagName,close:"closeTag"==t.type}:null},xmlCurrentContext:function(t){for(var e=[],n=t.context;n;n=n.prev)e.push(n.tagName);return e.reverse()}}})),t.defineMIME("text/xml","xml"),t.defineMIME("application/xml","xml"),t.mimeModes.hasOwnProperty("text/html")||t.defineMIME("text/html",{name:"xml",htmlMode:!0})}(n(18))},function(t,e,n){1&&function(t){"use strict";t.defineMode("javascript",(function(e,n){var r,i,o=e.indentUnit,a=n.statementIndent,s=n.jsonld,c=n.json||s,l=!1!==n.trackScope,u=n.typescript,d=n.wordCharacters||/[\w$\xa1-\uffff]/,h=function(){function t(t){return{type:t,style:"keyword"}}var e=t("keyword a"),n=t("keyword b"),r=t("keyword c"),i=t("keyword d"),o=t("operator"),a={type:"atom",style:"atom"};return{if:t("if"),while:e,with:e,else:n,do:n,try:n,finally:n,return:i,break:i,continue:i,new:t("new"),delete:r,void:r,throw:r,debugger:t("debugger"),var:t("var"),const:t("var"),let:t("var"),function:t("function"),catch:t("catch"),for:t("for"),switch:t("switch"),case:t("case"),default:t("default"),in:o,typeof:o,instanceof:o,true:a,false:a,null:a,undefined:a,NaN:a,Infinity:a,this:t("this"),class:t("class"),super:t("atom"),yield:r,export:t("export"),import:t("import"),extends:r,await:r}}(),f=/[+\-*&%=<>!?|~^@]/,p=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function g(t,e,n){return r=t,i=n,e}function v(t,e){var n,r=t.next();if('"'==r||"'"==r)return e.tokenize=(n=r,function(t,e){var r,i=!1;if(s&&"@"==t.peek()&&t.match(p))return e.tokenize=v,g("jsonld-keyword","meta");for(;null!=(r=t.next())&&(r!=n||i);)i=!i&&"\\"==r;return i||(e.tokenize=v),g("string","string")}),e.tokenize(t,e);if("."==r&&t.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return g("number","number");if("."==r&&t.match(".."))return g("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(r))return g(r);if("="==r&&t.eat(">"))return g("=>","operator");if("0"==r&&t.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return g("number","number");if(/\d/.test(r))return t.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),g("number","number");if("/"==r)return t.eat("*")?(e.tokenize=m,m(t,e)):t.eat("/")?(t.skipToEnd(),g("comment","comment")):Qt(t,e,1)?(function(t){for(var e,n=!1,r=!1;null!=(e=t.next());){if(!n){if("/"==e&&!r)return;"["==e?r=!0:r&&"]"==e&&(r=!1)}n=!n&&"\\"==e}}(t),t.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),g("regexp","string-2")):(t.eat("="),g("operator","operator",t.current()));if("`"==r)return e.tokenize=b,b(t,e);if("#"==r&&"!"==t.peek())return t.skipToEnd(),g("meta","meta");if("#"==r&&t.eatWhile(d))return g("variable","property");if("<"==r&&t.match("!--")||"-"==r&&t.match("->")&&!/\S/.test(t.string.slice(0,t.start)))return t.skipToEnd(),g("comment","comment");if(f.test(r))return">"==r&&e.lexical&&">"==e.lexical.type||(t.eat("=")?"!"!=r&&"="!=r||t.eat("="):/[<>*+\-|&?]/.test(r)&&(t.eat(r),">"==r&&t.eat(r))),"?"==r&&t.eat(".")?g("."):g("operator","operator",t.current());if(d.test(r)){t.eatWhile(d);var i=t.current();if("."!=e.lastType){if(h.propertyIsEnumerable(i)){var o=h[i];return g(o.type,o.style,i)}if("async"==i&&t.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return g("async","keyword",i)}return g("variable","variable",i)}}function m(t,e){for(var n,r=!1;n=t.next();){if("/"==n&&r){e.tokenize=v;break}r="*"==n}return g("comment","comment")}function b(t,e){for(var n,r=!1;null!=(n=t.next());){if(!r&&("`"==n||"$"==n&&t.eat("{"))){e.tokenize=v;break}r=!r&&"\\"==n}return g("quasi","string-2",t.current())}var y="([{}])";function w(t,e){e.fatArrowAt&&(e.fatArrowAt=null);var n=t.string.indexOf("=>",t.start);if(!(n<0)){if(u){var r=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(t.string.slice(t.start,n));r&&(n=r.index)}for(var i=0,o=!1,a=n-1;a>=0;--a){var s=t.string.charAt(a),c=y.indexOf(s);if(c>=0&&c<3){if(!i){++a;break}if(0==--i){"("==s&&(o=!0);break}}else if(c>=3&&c<6)++i;else if(d.test(s))o=!0;else if(/["'\/`]/.test(s))for(;;--a){if(0==a)return;if(t.string.charAt(a-1)==s&&"\\"!=t.string.charAt(a-2)){a--;break}}else if(o&&!i){++a;break}}o&&!i&&(e.fatArrowAt=a)}}var x={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function O(t,e,n,r,i,o){this.indented=t,this.column=e,this.type=n,this.prev=i,this.info=o,null!=r&&(this.align=r)}function C(t,e){if(!l)return!1;for(var n=t.localVars;n;n=n.next)if(n.name==e)return!0;for(var r=t.context;r;r=r.prev)for(n=r.vars;n;n=n.next)if(n.name==e)return!0}function S(t,e,n,r,i){var o=t.cc;for(k.state=t,k.stream=i,k.marked=null,k.cc=o,k.style=e,t.lexical.hasOwnProperty("align")||(t.lexical.align=!0);1;)if((o.length?o.pop():c?U:z)(n,r)){for(;o.length&&o[o.length-1].lex;)o.pop()();return k.marked?k.marked:"variable"==n&&C(t,r)?"variable-2":e}}var k={state:null,column:null,marked:null,cc:null};function j(){for(var t=arguments.length-1;t>=0;t--)k.cc.push(arguments[t])}function T(){return j.apply(null,arguments),!0}function P(t,e){for(var n=e;n;n=n.next)if(n.name==t)return!0;return!1}function E(t){var e=k.state;if(k.marked="def",l){if(e.context)if("var"==e.lexical.info&&e.context&&e.context.block){var r=function t(e,n){if(n){if(n.block){var r=t(e,n.prev);return r?r==n.prev?n:new D(r,n.vars,!0):null}return P(e,n.vars)?n:new D(n.prev,new A(e,n.vars),!1)}return null}(t,e.context);if(null!=r)return void(e.context=r)}else if(!P(t,e.localVars))return void(e.localVars=new A(t,e.localVars));n.globalVars&&!P(t,e.globalVars)&&(e.globalVars=new A(t,e.globalVars))}}function M(t){return"public"==t||"private"==t||"protected"==t||"abstract"==t||"readonly"==t}function D(t,e,n){this.prev=t,this.vars=e,this.block=n}function A(t,e){this.name=t,this.next=e}var _=new A("this",new A("arguments",null));function L(){k.state.context=new D(k.state.context,k.state.localVars,!1),k.state.localVars=_}function N(){k.state.context=new D(k.state.context,k.state.localVars,!0),k.state.localVars=null}function I(){k.state.localVars=k.state.context.vars,k.state.context=k.state.context.prev}function F(t,e){var n=function(){var n=k.state,r=n.indented;if("stat"==n.lexical.type)r=n.lexical.indented;else for(var i=n.lexical;i&&")"==i.type&&i.align;i=i.prev)r=i.indented;n.lexical=new O(r,k.stream.column(),t,null,n.lexical,e)};return n.lex=!0,n}function R(){var t=k.state;t.lexical.prev&&(")"==t.lexical.type&&(t.indented=t.lexical.indented),t.lexical=t.lexical.prev)}function V(t){return function e(n){return n==t?T():";"==t||"}"==n||")"==n||"]"==n?j():T(e)}}function z(t,e){return"var"==t?T(F("vardef",e),St,V(";"),R):"keyword a"==t?T(F("form"),$,z,R):"keyword b"==t?T(F("form"),z,R):"keyword d"==t?k.stream.match(/^\s*$/,!1)?T():T(F("stat"),q,V(";"),R):"debugger"==t?T(V(";")):"{"==t?T(F("}"),N,ct,R,I):";"==t?T():"if"==t?("else"==k.state.lexical.info&&k.state.cc[k.state.cc.length-1]==R&&k.state.cc.pop()(),T(F("form"),$,z,R,Mt)):"function"==t?T(Lt):"for"==t?T(F("form"),N,Dt,z,I,R):"class"==t||u&&"interface"==e?(k.marked="keyword",T(F("form","class"==t?t:e),Vt,R)):"variable"==t?u&&"declare"==e?(k.marked="keyword",T(z)):u&&("module"==e||"enum"==e||"type"==e)&&k.stream.match(/^\s*\w/,!1)?(k.marked="keyword","enum"==e?T(Jt):"type"==e?T(It,V("operator"),ft,V(";")):T(F("form"),kt,V("{"),F("}"),ct,R,R)):u&&"namespace"==e?(k.marked="keyword",T(F("form"),U,z,R)):u&&"abstract"==e?(k.marked="keyword",T(z)):T(F("stat"),et):"switch"==t?T(F("form"),$,V("{"),F("}","switch"),N,ct,R,R,I):"case"==t?T(U,V(":")):"default"==t?T(V(":")):"catch"==t?T(F("form"),L,H,z,R,I):"export"==t?T(F("stat"),Bt,R):"import"==t?T(F("stat"),Wt,R):"async"==t?T(z):"@"==e?T(U,z):j(F("stat"),U,V(";"),R)}function H(t){if("("==t)return T(Ft,V(")"))}function U(t,e){return W(t,e,!1)}function B(t,e){return W(t,e,!0)}function $(t){return"("!=t?j():T(F(")"),q,V(")"),R)}function W(t,e,n){if(k.state.fatArrowAt==k.stream.start){var r=n?Z:J;if("("==t)return T(L,F(")"),at(Ft,")"),R,V("=>"),r,I);if("variable"==t)return j(L,kt,V("=>"),r,I)}var i=n?K:G;return x.hasOwnProperty(t)?T(i):"function"==t?T(Lt,i):"class"==t||u&&"interface"==e?(k.marked="keyword",T(F("form"),Rt,R)):"keyword c"==t||"async"==t?T(n?B:U):"("==t?T(F(")"),q,V(")"),R,i):"operator"==t||"spread"==t?T(n?B:U):"["==t?T(F("]"),Xt,R,i):"{"==t?st(rt,"}",null,i):"quasi"==t?j(Y,i):"new"==t?T(function(t){return function(e){return"."==e?T(t?tt:Q):"variable"==e&&u?T(xt,t?K:G):j(t?B:U)}}(n)):T()}function q(t){return t.match(/[;\}\)\],]/)?j():j(U)}function G(t,e){return","==t?T(q):K(t,e,!1)}function K(t,e,n){var r=0==n?G:K,i=0==n?U:B;return"=>"==t?T(L,n?Z:J,I):"operator"==t?/\+\+|--/.test(e)||u&&"!"==e?T(r):u&&"<"==e&&k.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?T(F(">"),at(ft,">"),R,r):"?"==e?T(U,V(":"),i):T(i):"quasi"==t?j(Y,r):";"!=t?"("==t?st(B,")","call",r):"."==t?T(nt,r):"["==t?T(F("]"),q,V("]"),R,r):u&&"as"==e?(k.marked="keyword",T(ft,r)):"regexp"==t?(k.state.lastType=k.marked="operator",k.stream.backUp(k.stream.pos-k.stream.start-1),T(i)):void 0:void 0}function Y(t,e){return"quasi"!=t?j():"${"!=e.slice(e.length-2)?T(Y):T(U,X)}function X(t){if("}"==t)return k.marked="string-2",k.state.tokenize=b,T(Y)}function J(t){return w(k.stream,k.state),j("{"==t?z:U)}function Z(t){return w(k.stream,k.state),j("{"==t?z:B)}function Q(t,e){if("target"==e)return k.marked="keyword",T(G)}function tt(t,e){if("target"==e)return k.marked="keyword",T(K)}function et(t){return":"==t?T(R,z):j(G,V(";"),R)}function nt(t){if("variable"==t)return k.marked="property",T()}function rt(t,e){return"async"==t?(k.marked="property",T(rt)):"variable"==t||"keyword"==k.style?(k.marked="property","get"==e||"set"==e?T(it):(u&&k.state.fatArrowAt==k.stream.start&&(n=k.stream.match(/^\s*:\s*/,!1))&&(k.state.fatArrowAt=k.stream.pos+n[0].length),T(ot))):"number"==t||"string"==t?(k.marked=s?"property":k.style+" property",T(ot)):"jsonld-keyword"==t?T(ot):u&&M(e)?(k.marked="keyword",T(rt)):"["==t?T(U,lt,V("]"),ot):"spread"==t?T(B,ot):"*"==e?(k.marked="keyword",T(rt)):":"==t?j(ot):void 0;var n}function it(t){return"variable"!=t?j(ot):(k.marked="property",T(Lt))}function ot(t){return":"==t?T(B):"("==t?j(Lt):void 0}function at(t,e,n){function r(i,o){if(n?n.indexOf(i)>-1:","==i){var a=k.state.lexical;return"call"==a.info&&(a.pos=(a.pos||0)+1),T((function(n,r){return n==e||r==e?j():j(t)}),r)}return i==e||o==e?T():n&&n.indexOf(";")>-1?j(t):T(V(e))}return function(n,i){return n==e||i==e?T():j(t,r)}}function st(t,e,n){for(var r=3;r"),ft):"quasi"==t?j(mt,wt):void 0}function pt(t){if("=>"==t)return T(ft)}function gt(t){return t.match(/[\}\)\]]/)?T():","==t||";"==t?T(gt):j(vt,gt)}function vt(t,e){return"variable"==t||"keyword"==k.style?(k.marked="property",T(vt)):"?"==e||"number"==t||"string"==t?T(vt):":"==t?T(ft):"["==t?T(V("variable"),ut,V("]"),vt):"("==t?j(Nt,vt):t.match(/[;\}\)\],]/)?void 0:T()}function mt(t,e){return"quasi"!=t?j():"${"!=e.slice(e.length-2)?T(mt):T(ft,bt)}function bt(t){if("}"==t)return k.marked="string-2",k.state.tokenize=b,T(mt)}function yt(t,e){return"variable"==t&&k.stream.match(/^\s*[?:]/,!1)||"?"==e?T(yt):":"==t?T(ft):"spread"==t?T(yt):j(ft)}function wt(t,e){return"<"==e?T(F(">"),at(ft,">"),R,wt):"|"==e||"."==t||"&"==e?T(ft):"["==t?T(ft,V("]"),wt):"extends"==e||"implements"==e?(k.marked="keyword",T(ft)):"?"==e?T(ft,V(":"),ft):void 0}function xt(t,e){if("<"==e)return T(F(">"),at(ft,">"),R,wt)}function Ot(){return j(ft,Ct)}function Ct(t,e){if("="==e)return T(ft)}function St(t,e){return"enum"==e?(k.marked="keyword",T(Jt)):j(kt,lt,Pt,Et)}function kt(t,e){return u&&M(e)?(k.marked="keyword",T(kt)):"variable"==t?(E(e),T()):"spread"==t?T(kt):"["==t?st(Tt,"]"):"{"==t?st(jt,"}"):void 0}function jt(t,e){return"variable"!=t||k.stream.match(/^\s*:/,!1)?("variable"==t&&(k.marked="property"),"spread"==t?T(kt):"}"==t?j():"["==t?T(U,V(']'),V(':'),jt):T(V(":"),kt,Pt)):(E(e),T(Pt))}function Tt(){return j(kt,Pt)}function Pt(t,e){if("="==e)return T(B)}function Et(t){if(","==t)return T(St)}function Mt(t,e){if("keyword b"==t&&"else"==e)return T(F("form","else"),z,R)}function Dt(t,e){return"await"==e?T(Dt):"("==t?T(F(")"),At,R):void 0}function At(t){return"var"==t?T(St,_t):"variable"==t?T(_t):j(_t)}function _t(t,e){return")"==t?T():";"==t?T(_t):"in"==e||"of"==e?(k.marked="keyword",T(U,_t)):j(U,_t)}function Lt(t,e){return"*"==e?(k.marked="keyword",T(Lt)):"variable"==t?(E(e),T(Lt)):"("==t?T(L,F(")"),at(Ft,")"),R,dt,z,I):u&&"<"==e?T(F(">"),at(Ot,">"),R,Lt):void 0}function Nt(t,e){return"*"==e?(k.marked="keyword",T(Nt)):"variable"==t?(E(e),T(Nt)):"("==t?T(L,F(")"),at(Ft,")"),R,dt,I):u&&"<"==e?T(F(">"),at(Ot,">"),R,Nt):void 0}function It(t,e){return"keyword"==t||"variable"==t?(k.marked="type",T(It)):"<"==e?T(F(">"),at(Ot,">"),R):void 0}function Ft(t,e){return"@"==e&&T(U,Ft),"spread"==t?T(Ft):u&&M(e)?(k.marked="keyword",T(Ft)):u&&"this"==t?T(lt,Pt):j(kt,lt,Pt)}function Rt(t,e){return"variable"==t?Vt(t,e):zt(t,e)}function Vt(t,e){if("variable"==t)return E(e),T(zt)}function zt(t,e){return"<"==e?T(F(">"),at(Ot,">"),R,zt):"extends"==e||"implements"==e||u&&","==t?("implements"==e&&(k.marked="keyword"),T(u?ft:U,zt)):"{"==t?T(F("}"),Ht,R):void 0}function Ht(t,e){return"async"==t||"variable"==t&&("static"==e||"get"==e||"set"==e||u&&M(e))&&k.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(k.marked="keyword",T(Ht)):"variable"==t||"keyword"==k.style?(k.marked="property",T(Ut,Ht)):"number"==t||"string"==t?T(Ut,Ht):"["==t?T(U,lt,V("]"),Ut,Ht):"*"==e?(k.marked="keyword",T(Ht)):u&&"("==t?j(Nt,Ht):";"==t||","==t?T(Ht):"}"==t?T():"@"==e?T(U,Ht):void 0}function Ut(t,e){if("!"==e)return T(Ut);if("?"==e)return T(Ut);if(":"==t)return T(ft,Pt);if("="==e)return T(B);var n=k.state.lexical.prev;return j(n&&"interface"==n.info?Nt:Lt)}function Bt(t,e){return"*"==e?(k.marked="keyword",T(Yt,V(";"))):"default"==e?(k.marked="keyword",T(U,V(";"))):"{"==t?T(at($t,"}"),Yt,V(";")):j(z)}function $t(t,e){return"as"==e?(k.marked="keyword",T(V("variable"))):"variable"==t?j(B,$t):void 0}function Wt(t){return"string"==t?T():"("==t?j(U):"."==t?j(G):j(qt,Gt,Yt)}function qt(t,e){return"{"==t?st(qt,"}"):("variable"==t&&E(e),"*"==e&&(k.marked="keyword"),T(Kt))}function Gt(t){if(","==t)return T(qt,Gt)}function Kt(t,e){if("as"==e)return k.marked="keyword",T(qt)}function Yt(t,e){if("from"==e)return k.marked="keyword",T(U)}function Xt(t){return"]"==t?T():j(at(B,"]"))}function Jt(){return j(F("form"),kt,V("{"),F("}"),at(Zt,"}"),R,R)}function Zt(){return j(kt,Pt)}function Qt(t,e,n){return e.tokenize==v&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(e.lastType)||"quasi"==e.lastType&&/\{\s*$/.test(t.string.slice(0,t.pos-(n||0)))}return I.lex=!0,R.lex=!0,{startState:function(t){var e={tokenize:v,lastType:"sof",cc:[],lexical:new O((t||0)-o,0,"block",!1),localVars:n.localVars,context:n.localVars&&new D(null,null,!1),indented:t||0};return n.globalVars&&"object"==typeof n.globalVars&&(e.globalVars=n.globalVars),e},token:function(t,e){if(t.sol()&&(e.lexical.hasOwnProperty("align")||(e.lexical.align=!1),e.indented=t.indentation(),w(t,e)),e.tokenize!=m&&t.eatSpace())return null;var n=e.tokenize(t,e);return"comment"==r?n:(e.lastType="operator"!=r||"++"!=i&&"--"!=i?r:"incdec",S(e,n,r,i,t))},indent:function(e,r){if(e.tokenize==m||e.tokenize==b)return t.Pass;if(e.tokenize!=v)return 0;var i,s=r&&r.charAt(0),c=e.lexical;if(!/^\s*else\b/.test(r))for(var l=e.cc.length-1;l>=0;--l){var u=e.cc[l];if(u==R)c=c.prev;else if(u!=Mt&&u!=I)break}for(;("stat"==c.type||"form"==c.type)&&("}"==s||(i=e.cc[e.cc.length-1])&&(i==G||i==K)&&!/^[,\.=+\-*:?[\(]/.test(r));)c=c.prev;a&&")"==c.type&&"stat"==c.prev.type&&(c=c.prev);var d=c.type,h=s==d;return"vardef"==d?c.indented+("operator"==e.lastType||","==e.lastType?c.info.length+1:0):"form"==d&&"{"==s?c.indented:"form"==d?c.indented+o:"stat"==d?c.indented+(function(t,e){return"operator"==t.lastType||","==t.lastType||f.test(e.charAt(0))||/[,.]/.test(e.charAt(0))}(e,r)?a||o:0):"switch"!=c.info||h||0==n.doubleIndentSwitch?c.align?c.column+(h?0:1):c.indented+(h?0:o):c.indented+(/^(?:case|default)\b/.test(r)?o:2*o)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:c?null:"/*",blockCommentEnd:c?null:"*/",blockCommentContinue:c?null:" * ",lineComment:c?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:c?"json":"javascript",jsonldMode:s,jsonMode:c,expressionAllowed:Qt,skipExpression:function(e){S(e,"atom","atom","true",new t.StringStream("",2,null))}}})),t.registerHelper("wordChars","javascript",/[\w$]/),t.defineMIME("text/javascript","javascript"),t.defineMIME("text/ecmascript","javascript"),t.defineMIME("application/javascript","javascript"),t.defineMIME("application/x-javascript","javascript"),t.defineMIME("application/ecmascript","javascript"),t.defineMIME("application/json",{name:"javascript",json:!0}),t.defineMIME("application/x-json",{name:"javascript",json:!0}),t.defineMIME("application/manifest+json",{name:"javascript",json:!0}),t.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),t.defineMIME("text/typescript",{name:"javascript",typescript:!0}),t.defineMIME("application/typescript",{name:"javascript",typescript:!0})}(n(18))},function(t,e,n){1&&function(t){t.extendMode("css",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(t,e){return/^[;{}]$/.test(e)}}),t.extendMode("javascript",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(t,e,n,r){return this.jsonMode?/^[\[,{]$/.test(e)||/^}/.test(n):(";"!=e||!r.lexical||")"!=r.lexical.type)&&/^[;{}]$/.test(e)&&!/^;/.test(n)}});var e=/^(a|abbr|acronym|area|base|bdo|big|br|button|caption|cite|code|col|colgroup|dd|del|dfn|em|frame|hr|iframe|img|input|ins|kbd|label|legend|link|map|object|optgroup|option|param|q|samp|script|select|small|span|strong|sub|sup|textarea|tt|var)$/;t.extendMode("xml",{commentStart:"\x3c!--",commentEnd:"--\x3e",newlineAfterToken:function(t,n,r,i){var o=!1;return"html"==this.configuration&&(o=!!i.context&&e.test(i.context.tagName)),!o&&("tag"==t&&/>$/.test(n)&&i.context||/^-1&&s>-1&&s>a&&(t=t.substr(0,a)+t.substring(a+o.commentStart.length,s)+t.substr(s+o.commentEnd.length)),i.replaceRange(t,n,r)}}))})),t.defineExtension("autoIndentRange",(function(t,e){var n=this;this.operation((function(){for(var r=t.line;r<=e.line;r++)n.indentLine(r,"smart")}))})),t.defineExtension("autoFormatRange",(function(e,n){var r=this,i=r.getMode(),o=r.getRange(e,n).split("\n"),a=t.copyState(i,r.getTokenAt(e).state),s=r.getOption("tabSize"),c="",l=0,u=0===e.ch;function d(){c+="\n",u=!0,++l}for(var h=0;h=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var c=r.call(a,"catchLoc"),l=r.call(a,"finallyLoc");if(c&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),T(n),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;T(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:E(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),g}},t}(1?t.exports:void 0);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,e){function n(e,r){return t.exports=n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},t.exports["default"]=t.exports,t.exports.__esModule=!0,n(e,r)}t.exports=n,t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t){if(Array.isArray(t))return t},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(t,e){var n=t&&("undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"]);if(null!=n){var r,i,o=[],a=!0,s=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(o.push(r.value),!e||o.length!==e);a=!0);}catch(t){s=!0,i=t}finally{try{a||null==n["return"]||n["return"]()}finally{if(s)throw i}}return o}},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports["default"]=t.exports,t.exports.__esModule=!0},function(t,e,n){"use strict";n.r(e);var r=n(1),i=n(5);e["default"]=r["View"].extend({initialize:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.items=[],this.opt=t;var e=t.config||{};this.level=t.level,this.config=e,this.preview=t.preview,this.ppfx=e.pStylePrefix||'',this.pfx=e.stylePrefix||'',this.parent=t.parent,this.parentView=t.parentView;var n=this.pfx,r=this.ppfx,o=this.parent,a=this.collection;this.listenTo(a,'add',this.addTo),this.listenTo(a,'reset resetNavigator',this.render),this.listenTo(a,'remove',this.removeChildren),this.className="".concat(n,"layers");var s=e.em;if(e.sortable&&!this.opt.sorter){var c=s.get('Utils');this.opt.sorter=new c.Sorter({container:e.sortContainer||this.el,containerSel:".".concat(this.className),itemSel:".".concat(n,"layer"),ignoreViewChildren:1,onEndMove:function(t,e,n){var r=e.getSourceModel();s.setSelected(r,{forceChange:1}),s.trigger("".concat(i["b"],":end"),n)},avoidSelectOnEnd:1,nested:1,ppfx:r,pfx:n})}this.sorter=this.opt.sorter||'',this.$el.data('collection',a),o&&this.$el.data('model',o)},removeChildren:function(t){var e=t.viewLayer;e&&(e.remove(),t.viewLayer=0)},addTo:function(t){var e=this.collection.indexOf(t);this.addToCollection(t,null,e)},addToCollection:function(t,e,n){var r=this.level,i=this.parentView,o=this.opt.ItemView,a=e||null,s=new o({ItemView:o,level:r,model:t,parentView:i,config:this.config,sorter:this.sorter,isCountable:this.isCountable,opened:this.opt.opened}),c=s.render().el;if(a)a.appendChild(c);else if(void 0!==n){var l='before';this.$el.children().length==n&&(n--,l='after'),n<0?this.$el.append(c):this.$el.children().eq(n)[l](c)}else this.$el.append(c);return this.items.push(s),c},remove:function(){r["View"].prototype.remove.apply(this,arguments),this.items.map((function(t){return t.remove()}))},isCountable:function(t,e){var n=t.get('type'),r=t.get('tagName');return!(('textnode'==n||'br'==r)&&e||!t.get('layerable'))},render:function(){var t=this,e=document.createDocumentFragment(),n=this.el;return n.innerHTML='',this.collection.each((function(n){return t.addToCollection(n,e)})),n.appendChild(e),n.className=this.className,this}})},function(t,e,n){var r={"./CanvasClear":49,"./CanvasClear.js":49,"./CanvasMove":50,"./CanvasMove.js":50,"./CommandAbstract":27,"./CommandAbstract.js":27,"./ComponentDelete":51,"./ComponentDelete.js":51,"./ComponentDrag":52,"./ComponentDrag.js":52,"./ComponentEnter":53,"./ComponentEnter.js":53,"./ComponentExit":54,"./ComponentExit.js":54,"./ComponentNext":55,"./ComponentNext.js":55,"./ComponentPrev":56,"./ComponentPrev.js":56,"./ComponentStyleClear":57,"./ComponentStyleClear.js":57,"./CopyComponent":58,"./CopyComponent.js":58,"./DeleteComponent":59,"./DeleteComponent.js":59,"./ExportTemplate":60,"./ExportTemplate.js":60,"./Fullscreen":61,"./Fullscreen.js":61,"./MoveComponent":62,"./MoveComponent.js":62,"./OpenAssets":63,"./OpenAssets.js":63,"./OpenBlocks":64,"./OpenBlocks.js":64,"./OpenLayers":65,"./OpenLayers.js":65,"./OpenStyleManager":66,"./OpenStyleManager.js":66,"./OpenTraitManager":67,"./OpenTraitManager.js":67,"./PasteComponent":68,"./PasteComponent.js":68,"./Preview":69,"./Preview.js":69,"./Resize":70,"./Resize.js":70,"./SelectComponent":20,"./SelectComponent.js":20,"./SelectPosition":32,"./SelectPosition.js":32,"./ShowOffset":71,"./ShowOffset.js":71,"./SwitchVisibility":72,"./SwitchVisibility.js":72};function i(t){var e=o(t);return n(e)}function o(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code='MODULE_NOT_FOUND',e}return r[t]}i.keys=function(){return Object.keys(r)},i.resolve=o,t.exports=i,i.id=97},function(t,e,n){"use strict";n.r(e);var r=n(2),i=n.n(r),o=n(8),a=n.n(o),s=(n(1),n(0)),c={stylePrefix:'comp-',components:[],draggableComponents:1,storeWrapper:0,processor:0,voidElements:['area','base','br','col','embed','hr','img','input','keygen','link','menuitem','meta','param','source','track','wbr']},l=n(5),u=n(26),d=n(6),h=n(39);function f(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function p(t){for(var e=1;e\n \n "),fallback:"\n \n "),file:''}),initialize:function(t,e){l["a"].prototype.initialize.apply(this,arguments);var n=this.get('attributes'),r=n.src;r&&this.set('src',r,{silent:1})},initToolbar:function(){for(var t=arguments.length,e=new Array(t),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=this.get(t.fallback?'fallback':'src')||'',n=e;return e&&'2&&void 0!==arguments[2]?arguments[2]:{};!n.fromDisable&&this.disableEditing()},onActive:function(t){var e=this;return Q()(et.a.mark((function n(){var r,i;return et.a.wrap((function(n){for(;1;)switch(n.prev=n.next){case 0:if(r=e.rte,i=e.em,!(e.rteEnabled||!e.model.get('editable')||i&&i.isEditing())){n.next=3;break}return n.abrupt("return");case 3:if(t&&t.stopPropagation&&t.stopPropagation(),!r){n.next=14;break}return n.prev=5,n.next=8,r.enable(e,e.activeRte);case 8:e.activeRte=n.sent,n.next=14;break;case 11:n.prev=11,n.t0=n["catch"](5),i.logError(n.t0);case 14:e.toggleEvents(1);case 15:case"end":return n.stop()}}),n,null,[[5,11]])})))()},onDisable:function(){this.disableEditing()},disableEditing:function(){var t=this;return Q()(et.a.mark((function e(){var n,r,i,o,a;return et.a.wrap((function(e){for(;1;)switch(e.prev=e.next){case 0:if(n=t.model,r=t.rte,i=t.activeRte,o=t.em,a=n&&n.get('editable'),!r){e.next=12;break}return e.prev=3,e.next=6,r.disable(t,i);case 6:e.next=11;break;case 8:e.prev=8,e.t0=e["catch"](3),o.logError(e.t0);case 11:a&&t.syncContent();case 12:t.toggleEvents();case 13:case"end":return e.stop()}}),e,null,[[3,8]])})))()},getContent:function(){var t=this.activeRte;return t&&'function'==typeof t.getContent?t.getContent():this.getChildrenContainer().innerHTML},syncContent:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.model,n=this.rte,r=this.rteEnabled;if(r||t.force){var i=this.getContent(),o=e.components(),a=it({fromDisable:1},t);if(e.set('content','',a),n.customRte)o.length&&o.reset(null,t),e.set('content',i,a);else{var s=function e(n){var r=!!n.get('textable'),i=!['text','default',''].some((function(t){return n.is(t)}))||r;n.set(it({_innertext:!i,editable:i&&n.get('editable'),selectable:i,hoverable:i,removable:r,draggable:r,highlightable:0,copyable:r},!r&&{toolbar:''}),t),n.get('components').each((function(t){return e(t)}))};o.reset(i,t),o.each((function(t){return s(t)})),o.trigger('resetNavigator')}}},onInput:function(){var t=this.em,e='component',n=["".concat(e,":update"),"".concat(e,":input")].join(' ');t&&t.trigger(n,this.model)},disablePropagation:function(t){t.stopPropagation()},toggleEvents:function(t){var e=this.em,n=this.model,r=this.$el,i={on:nt["y"],off:nt["x"]},o=t?'on':'off';e.setEditing(t?this:0),this.rteEnabled=!!t;var a=[this.el.ownerDocument,document];if(i.off(a,'mousedown',this.disableEditing),i[o](a,'mousedown',this.disableEditing),e[o]('toolbar:run:before',this.disableEditing),n&&(n[o]('removed',this.disableEditing),n.trigger("rte:".concat(t?'enable':'disable'))),r&&r.off('mousedown',this.disablePropagation),r&&r[o]('mousedown',this.disablePropagation),this.config.draggableComponents)for(var s=this.el;s;)s.draggable=!t,(s=s.parentNode)&&'BODY'==s.tagName&&(s=0)}}),st=at.extend({render:function(){for(var t=arguments.length,e=new Array(t),n=0;n/g,'>').replace(/"/g,'"').replace(/'/g,''')}},{isComponent:function(t){var e='';return 3===t.nodeType&&(e={type:'textnode',content:t.textContent}),e}});function _t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}var Lt=At.extend({defaults:function(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:'',e=this.em,n='';!t&&r.stm&&(t=r.em.getCacheLoad());var i=t,o=i.components,a=i.html;if(o)if(Object(s["isObject"])(o)||Object(s["isArray"])(o))n=o;else try{n=JSON.parse(o)}catch(t){e&&e.logError(t)}else a&&(n=a);var c=n&&n.constructor===Object;return(n&&n.length||c)&&(this.clear(),c?this.getWrapper().set(n):this.getComponents().add(n)),n},store:function(t){if(!r.stm||this.em.get('hasPages'))return{};var e={},n=this.storageKey();if(n.indexOf('html')>=0&&(e.html=r.em.getHtml()),n.indexOf('components')>=0){var i=r.storeWrapper?this.getWrapper():this.getComponents();e.components=JSON.stringify(i)}return t||r.stm.store(e),e},getComponent:function(){var t=this.em.get('PageManager').getSelected(),e=t&&t.getMainFrame();return e&&e.getComponent()},getWrapper:function(){return this.getComponent()},getComponents:function(){var t=this.getWrapper();return t&&t.get('components')},addComponent:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getComponents().add(t,e)},render:function(){return n.render().el},clear:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.getComponents().map((function(t){return t})).forEach((function(e){return e.remove(t)})),this},setComponents:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.clear(e).addComponent(t,e)},addType:function(t,e){var n=this.em,r=e.model,i=void 0===r?{}:r,c=e.view,l=void 0===c?{}:c,u=e.isComponent,d=e.extend,h=e.extendView,f=e.extendFn,p=void 0===f?[]:f,g=e.extendFnView,v=void 0===g?[]:g,m=this.getType(t),b=this.getType(d),y=this.getType(h),w=b||(m||this.getType('default')),x=w.model,O=y?y.view:w.view,C=function(t,e,n){return t.reduce((function(t,r){var i=e[r],o=n.prototype[r];return i&&o&&(t[r]=function(){o.bind(this).apply(void 0,arguments),i.bind(this).apply(void 0,arguments)}),t}),{})};'object'===a()(i)&&(e.model=x.extend(Gt(Gt(Gt({},i),C(p,i,x)),{},{defaults:Gt(Gt({},x.prototype.defaults),Object(s["result"])(i,'defaults')||{})}),{isComponent:!m||b||u?u||function(){return 0}:x.isComponent})),'object'===a()(l)&&(e.view=O.extend(Gt(Gt({},l),C(v,l,O)))),m?(m.model=e.model,m.view=e.view):(e.id=t,o.unshift(e));var S="component:type:".concat(m?'update':'add');return n&&n.trigger(S,m||e),this},getType:function(t){for(var e=o,n=0;n1&&void 0!==arguments[1]?arguments[1]:{};t&&(t.set({status:'selected'}),['component:selected','component:toggled'].forEach((function(r){return e.em.trigger(r,t,n)})))},selectRemove:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t){this.em;t.set({status:'',state:''}),['component:deselected','component:toggled'].forEach((function(r){return e.em.trigger(r,t,n)}))}},componentHovered:function(){var t=r.em,e=t.get('componentHovered'),n=t.previous('componentHovered'),i='hovered';n&&n.get('status')==i&&n.set({status:'',state:''}),e&&Object(s["isEmpty"])(e.get('status'))&&e.set('status',i)},allById:function(){return i},destroy:function(){var o=this.allById();Object.keys(o).forEach((function(t){return o[t]&&o[t].remove()})),n&&n.remove(),[r,t,i,e,n].forEach((function(t){return{}})),this.em={}}}}},function(t,e,n){"use strict";n.r(e);var r=n(2),i=n.n(r),o=n(14),a={stylePrefix:'gjs-',components:'',style:'',fromElement:0,noticeOnUnload:!0,showOffsets:!1,showOffsetsSelected:!1,forceClass:!0,height:'900px',width:'100%',log:['warning','error'],baseCss:"\n * {\n box-sizing: border-box;\n }\n html, body, [data-gjs-type=wrapper] {\n min-height: 100%;\n }\n body {\n margin: 0;\n height: 100%;\n background-color: #fff\n }\n [data-gjs-type=wrapper] {\n overflow: auto;\n overflow-x: hidden;\n }\n\n * ::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.1)\n }\n\n * ::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.2)\n }\n\n * ::-webkit-scrollbar {\n width: 10px\n }\n ",protectedCss:'* { box-sizing: border-box; } body {margin: 0;}',canvasCss:'',defaultCommand:'select-comp',showToolbar:1,allowScripts:0,showDevices:1,devicePreviewMode:0,mediaCondition:'max-width',tagVarStart:'{[ ',tagVarEnd:' ]}',keepEmptyTextNodes:0,jsInHtml:!0,nativeDnD:1,multipleSelection:1,exportWrapper:0,wrapperIsBody:1,optsHtml:{},optsCss:{},avoidInlineStyle:1,avoidDefaults:1,clearStyles:0,dragMode:0,listenToEl:[],cssIcons:'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css',el:'',i18n:{},undoManager:{},assetManager:{},canvas:{},layers:{},storageManager:{},richTextEditor:{},domComponents:{},modal:{},codeManager:{},panels:{},commands:{},cssComposer:{},selectorManager:{},deviceManager:{devices:[{id:'desktop',name:'Desktop',width:''},{id:'tablet',name:'Tablet',width:'768px',widthMedia:'992px'},{id:'mobileLandscape',name:'Mobile landscape',width:'568px',widthMedia:'768px'},{id:'mobilePortrait',name:'Mobile portrait',width:'320px',widthMedia:'480px'}]},styleManager:{sectors:[{name:'General',open:!1,buildProps:['float','display','position','top','right','left','bottom']},{name:'Flex',open:!1,buildProps:['flex-direction','flex-wrap','justify-content','align-items','align-content','order','flex-basis','flex-grow','flex-shrink','align-self']},{name:'Dimension',open:!1,buildProps:['width','height','max-width','min-height','margin','padding']},{name:'Typography',open:!1,buildProps:['font-family','font-size','font-weight','letter-spacing','color','line-height','text-align','text-shadow'],properties:[{property:'text-align',list:[{value:'left',className:'fa fa-align-left'},{value:'center',className:'fa fa-align-center'},{value:'right',className:'fa fa-align-right'},{value:'justify',className:'fa fa-align-justify'}]}]},{name:'Decorations',open:!1,buildProps:['border-radius-c','background-color','border-radius','border','box-shadow','background']},{name:'Extra',open:!1,buildProps:['transition','perspective','transform']}]},blockManager:{},traitManager:{},textViewCode:'Code',keepUnusedStyles:0,multiFrames:0},s=n(19),c=n.n(s),l=n(0),u=n(1),d=n.n(u),h=n(3),f=n(11),p=n.n(f),g=n(10),v=n.n(g),m=n(15),b=n.n(m),y=n(17),w=n.n(y),x=n(12),O=n.n(x);function C(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=O()(t);if(e){var i=O()(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return w()(this,n)}}var S=function(t){b()(n,t);var e=C(n);function n(){return v()(this,n),e.apply(this,arguments)}return n}(u["Model"]),k=function(t){b()(n,t);var e=C(n);function n(){return v()(this,n),e.apply(this,arguments)}return p()(n,[{key:"getByComponent",value:function(t){var e=this;return this.filter((function(n){return e.getComponent(n)===t}))[0]}},{key:"addComponent",value:function(t,e){var n=this,r=(Object(l["isArray"])(t)?t:[t]).filter((function(t){return!n.hasComponent(t)})).map((function(t){return{component:t}}));return this.push(r,e)}},{key:"getComponent",value:function(t){return t.get('component')}},{key:"hasComponent",value:function(t){var e=this.getByComponent(t);return e&&this.contains(e)}},{key:"lastComponent",value:function(){var t=this.last();return t&&this.getComponent(t)}},{key:"allComponents",value:function(){var t=this;return this.map((function(e){return t.getComponent(e)})).filter((function(t){return t}))}},{key:"removeComponent",value:function(t,e){var n=this,r=(Object(l["isArray"])(t)?t:[t]).map((function(t){return n.getByComponent(t)}));return this.remove(r,e)}}]),n}(u["Collection"]);k.prototype.model=S;var j=["unset"];function T(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function P(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{};this.config=e,this.set('Config',e),this.set('modules',[]),this.set('toLoad',[]),this.set('storables',[]),this.set('selected',new k),this.set('dmode',e.dragMode),this.set('hasPages',!!e.pageManager);var n=e.el,r=e.log,i=!0===r?Object(l["keys"])(A):Object(l["isArray"])(r)?r:[];Object(l["bindAll"])(this,'initBaseColorPicker'),n&&e.fromElement&&(this.config.components=n.innerHTML),this.attrsOrig=n?Object(l["toArray"])(n.attributes).reduce((function(t,e){return t[e.nodeName]=e.nodeValue,t}),{}):'',D.forEach((function(e){return t.loadModule(e)})),this.on('change:componentHovered',this.componentHovered,this),this.on('change:changesCount',this.updateChanges,this),this.on('change:readyLoad change:readyCanvas',this._checkReady,this),i.forEach((function(e){return t.listenLog(e)})),[{from:'change:selectedComponent',to:'component:toggled'}].forEach((function(e){var n=e.from,r=e.to;t.listenTo(t,n,(function(){for(var e=arguments.length,i=new Array(e),o=0;o0&&void 0!==arguments[0]?arguments[0]:null,n=this.get('StorageManager');this.get('toLoad').forEach((function(t){t.onLoad()}));var r=function(){t.get('modules').forEach((function(e){return e.postLoad&&e.postLoad(t)})),t.set('readyLoad',1),e&&e()};n&&n.canAutoload()?this.load(r):r()},updateChanges:function(){var t=this,e=this.get('StorageManager'),n=this.get('changesCount');M&&clearTimeout(M),M=setTimeout((function(){return t.trigger('update')})),this.config.noticeOnUnload&&(window.onbeforeunload=n?function(t){return 1}:null),e.isAutosave()&&n>=e.getStepsBeforeSave()&&this.store()},loadModule:function(t){var e=this.config,n=new(t.default||t),r=n.name.charAt(0).toLowerCase()+n.name.slice(1),i=Object(l["isUndefined"])(e[r])?e[n.name]:e[r],o=!0===i?{}:i||{},a=this.get('StorageManager');if(o.pStylePrefix=e.pStylePrefix||'',Object(l["isUndefined"])(i)||i||(o._disable=1),n.storageKey&&n.store&&n.load&&a){o.stm=a;var s='domComponents'==r?'unshift':'push';this.get('storables')[s](n)}return o.em=this,n.init(P({},o)),!n.private&&this.set(n.name,n),n.onLoad&&this.get('toLoad').push(n),this.get('modules').push(n),this},init:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.destroyed&&(this.initialize(e),this.destroyed=0),this.set('Editor',t)},getEditor:function(){return this.get('Editor')},handleUpdates:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.temporary||r.noCount||r.avoidStore||(E&&clearTimeout(E),E=setTimeout((function(){var t=n.get('changesCount')||0,e=(r.unset,c()(r,j));n.set('changesCount',t+1,e)}),0))},changesUp:function(t){this.handleUpdates(0,0,t)},componentHovered:function(t,e,n){var r=this.previous('componentHovered');r&&this.trigger('component:unhovered',r,n),e&&this.trigger('component:hovered',e,n)},getSelected:function(){return this.get('selected').lastComponent()},getSelectedAll:function(){return this.get('selected').allComponents()},setSelected:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=n.event,i=r&&(r.ctrlKey||r.metaKey),a=r||{},s=a.shiftKey,c=Object(l["isArray"])(t),u=(c?t:[t]).map((function(t){return Object(h["i"])(t,o["default"])})),d=this.getSelectedAll(),f=this.getConfig('multipleSelection');c&&this.removeSelected(d.filter((function(t){return!Object(l["contains"])(u,t)}))),u.forEach((function(t){var r=Object(h["i"])(t,o["default"]);if(!r||r.get('selectable')){if(i&&f)return e.toggleSelected(r);if(s&&f){e.clearSelection(e.get('Canvas').getWindow());var a,u,p=r.collection,g=r.index();if(e.getSelectedAll().forEach((function(t){var e=t.collection,n=t.index();e===p&&(ng&&(u=Object(l["isUndefined"])(u)?n:Math.min(u,n)))})),!Object(l["isUndefined"])(a))for(;a!==g;)e.addSelected(p.at(a)),a++;if(!Object(l["isUndefined"])(u))for(;u!==g;)e.addSelected(p.at(u)),u--;return e.addSelected(r)}!c&&e.removeSelected(d.filter((function(t){return t!==r}))),e.addSelected(r,n),r}}))},addSelected:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Object(h["i"])(t,o["default"]),i=Object(l["isArray"])(r)?r:[r];i.forEach((function(t){if(!t||t.get('selectable')){var r=e.get('selected');n.forceChange&&e.removeSelected(t,n),r.addComponent(t,n)}}))},removeSelected:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.get('selected').removeComponent(Object(h["i"])(t,o["default"]),e)},toggleSelected:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=Object(h["i"])(t,o["default"]),i=Object(l["isArray"])(r)?r:[r];i.forEach((function(t){e.get('selected').hasComponent(t)?e.removeSelected(t,n):e.addSelected(t,n)}))},setHovered:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Object(h["i"])(t,o["default"]);n&&!n.get('hoverable')||(e.forceChange&&this.set('componentHovered',''),this.set('componentHovered',n,e))},getHovered:function(){return this.get('componentHovered')},setComponents:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.get('DomComponents').setComponents(t,e)},getComponents:function(){var t=this.get('DomComponents'),e=this.get('CodeManager');if(t&&e){var n=t.getComponents();return e.getCode(n,'json')}},setStyle:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this.get('CssComposer');return n.clear(e),n.getAll().add(t,e),this},getStyle:function(){return this.get('CssComposer').getAll()},setState:function(t){return this.set('state',t),this},getState:function(){return this.get('state')||''},getHtml:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.config,n=e.optsHtml,r=e.exportWrapper,i=e.wrapperIsBody,o=e.jsInHtml?this.getJs(t):'',a=t.component||this.get('DomComponents').getComponent(),s=a?this.get('CodeManager').getCode(a,'html',P(P({exportWrapper:r,wrapperIsBody:i},n),t)):'';return s+=o?"` : '';\n return html;\n },\n\n /**\n * Returns CSS built inside canvas\n * @param {Object} [opts={}] Options\n * @returns {string} CSS string\n * @private\n */\n getCss(opts = {}) {\n const config = this.config;\n const { optsCss } = config;\n const wrapperIsBody = config.wrapperIsBody;\n const avoidProt = opts.avoidProtected;\n const keepUnusedStyles = !isUndefined(opts.keepUnusedStyles)\n ? opts.keepUnusedStyles\n : config.keepUnusedStyles;\n const cssc = this.get('CssComposer');\n const wrp = opts.component || this.get('DomComponents').getComponent();\n const protCss = !avoidProt ? config.protectedCss : '';\n\n return wrp\n ? protCss +\n this.get('CodeManager').getCode(wrp, 'css', {\n cssc,\n wrapperIsBody,\n keepUnusedStyles,\n ...optsCss\n })\n : '';\n },\n\n /**\n * Returns JS of all components\n * @return {string} JS string\n * @private\n */\n getJs(opts = {}) {\n var wrp = opts.component || this.get('DomComponents').getWrapper();\n return wrp\n ? this.get('CodeManager')\n .getCode(wrp, 'js')\n .trim()\n : '';\n },\n\n /**\n * Store data to the current storage\n * @param {Function} clb Callback function\n * @return {Object} Stored data\n * @private\n */\n store(clb) {\n var sm = this.get('StorageManager');\n var store = {};\n if (!sm) return;\n\n // Fetch what to store\n this.get('storables').forEach(m => {\n var obj = m.store(1);\n for (var el in obj) store[el] = obj[el];\n });\n\n sm.store(store, res => {\n clb && clb(res, store);\n this.set('changesCount', 0);\n this.trigger('storage:store', store);\n });\n\n return store;\n },\n\n /**\n * Load data from the current storage\n * @param {Function} clb Callback function\n * @private\n */\n load(clb = null) {\n this.getCacheLoad(1, res => {\n this.get('storables').forEach(module => {\n module.load(res);\n module.postLoad && module.postLoad(this);\n });\n clb && clb(res);\n });\n },\n\n /**\n * Returns cached load\n * @param {Boolean} force Force to reload\n * @param {Function} clb Callback function\n * @return {Object}\n * @private\n */\n getCacheLoad(force, clb) {\n if (this.cacheLoad && !force) return this.cacheLoad;\n const sm = this.get('StorageManager');\n const load = [];\n\n if (!sm) return {};\n\n this.get('storables').forEach(m => {\n let key = m.storageKey;\n key = isFunction(key) ? key() : key;\n const keys = isArray(key) ? key : [key];\n keys.forEach(k => load.push(k));\n });\n\n sm.load(load, res => {\n this.cacheLoad = res;\n clb && clb(res);\n setTimeout(() => this.trigger('storage:load', res));\n });\n },\n\n /**\n * Returns device model by name\n * @return {Device|null}\n * @private\n */\n getDeviceModel() {\n var name = this.get('device');\n return this.get('DeviceManager').get(name);\n },\n\n /**\n * Run default command if setted\n * @param {Object} [opts={}] Options\n * @private\n */\n runDefault(opts = {}) {\n var command = this.get('Commands').get(this.config.defaultCommand);\n if (!command || this.defaultRunning) return;\n command.stop(this, this, opts);\n command.run(this, this, opts);\n this.defaultRunning = 1;\n },\n\n /**\n * Stop default command\n * @param {Object} [opts={}] Options\n * @private\n */\n stopDefault(opts = {}) {\n const commands = this.get('Commands');\n const command = commands.get(this.config.defaultCommand);\n if (!command) return;\n command.stop(this, this, opts);\n this.defaultRunning = 0;\n },\n\n /**\n * Update canvas dimensions and refresh data useful for tools positioning\n * @private\n */\n refreshCanvas(opts = {}) {\n this.set('canvasOffset', null);\n this.set('canvasOffset', this.get('Canvas').getOffset());\n opts.tools && this.trigger('canvas:updateTools');\n },\n\n /**\n * Clear all selected stuf inside the window, sometimes is useful to call before\n * doing some dragging opearation\n * @param {Window} win If not passed the current one will be used\n * @private\n */\n clearSelection(win) {\n var w = win || window;\n w.getSelection().removeAllRanges();\n },\n\n /**\n * Get the current media text\n * @return {string}\n */\n getCurrentMedia() {\n const config = this.config;\n const device = this.getDeviceModel();\n const condition = config.mediaCondition;\n const preview = config.devicePreviewMode;\n const width = device && device.get('widthMedia');\n return device && width && !preview ? `(${condition}: ${width})` : '';\n },\n\n /**\n * Return the component wrapper\n * @return {Component}\n */\n getWrapper() {\n return this.get('DomComponents').getWrapper();\n },\n\n setCurrentFrame(frameView) {\n return this.set('currentFrame', frameView);\n },\n\n getCurrentFrame() {\n return this.get('currentFrame');\n },\n\n getCurrentFrameModel() {\n return (this.getCurrentFrame() || {}).model;\n },\n\n /**\n * Return the count of changes made to the content and not yet stored.\n * This count resets at any `store()`\n * @return {number}\n */\n getDirtyCount() {\n return this.get('changesCount');\n },\n\n getZoomDecimal() {\n return this.get('Canvas').getZoomDecimal();\n },\n\n getZoomMultiplier() {\n return this.get('Canvas').getZoomMultiplier();\n },\n\n setDragMode(value) {\n return this.set('dmode', value);\n },\n\n t(...args) {\n return this.get('I18n').t(...args);\n },\n\n /**\n * Returns true if the editor is in absolute mode\n * @returns {Boolean}\n */\n inAbsoluteMode() {\n return this.get('dmode') === 'absolute';\n },\n\n /**\n * Destroy editor\n */\n destroyAll() {\n const { config } = this;\n const editor = this.getEditor();\n const { editors = [] } = config.grapesjs || {};\n this.stopDefault();\n this.get('modules')\n .slice()\n .reverse()\n .forEach(mod => mod.destroy());\n this.view.remove();\n this.stopListening();\n this.clear({ silent: true });\n this.destroyed = 1;\n ['config', 'view', '_previousAttributes', '_events', '_listeners'].forEach(\n i => (this[i] = {})\n );\n editors.splice(editors.indexOf(editor), 1);\n $(config.el)\n .empty()\n .attr(this.attrsOrig);\n },\n\n setEditing(value) {\n this.set('editing', value);\n return this;\n },\n\n isEditing() {\n return !!this.get('editing');\n },\n\n log(msg, opts = {}) {\n const { ns, level = 'debug' } = opts;\n this.trigger('log', msg, opts);\n level && this.trigger(`log:${level}`, msg, opts);\n\n if (ns) {\n const logNs = `log-${ns}`;\n this.trigger(logNs, msg, opts);\n level && this.trigger(`${logNs}:${level}`, msg, opts);\n }\n },\n\n logInfo(msg, opts) {\n this.log(msg, { ...opts, level: 'info' });\n },\n\n logWarning(msg, opts) {\n this.log(msg, { ...opts, level: 'warning' });\n },\n\n logError(msg, opts) {\n this.log(msg, { ...opts, level: 'error' });\n },\n\n initBaseColorPicker(el, opts = {}) {\n const config = this.getConfig();\n const { colorPicker = {} } = config;\n const elToAppend = config.el;\n const ppfx = config.stylePrefix;\n\n return $(el).spectrum({\n containerClassName: `${ppfx}one-bg ${ppfx}two-color`,\n appendTo: elToAppend || 'body',\n maxSelectionSize: 8,\n showPalette: true,\n palette: [],\n showAlpha: true,\n chooseText: 'Ok',\n cancelText: '⨯',\n ...opts,\n ...colorPicker\n });\n },\n\n /**\n * Set/get data from the HTMLElement\n * @param {HTMLElement} el\n * @param {string} name Data name\n * @param {any} value Date value\n * @return {any}\n * @private\n */\n data(el, name, value) {\n const varName = '_gjs-data';\n\n if (!el[varName]) {\n el[varName] = {};\n }\n\n if (isUndefined(value)) {\n return el[varName][name];\n } else {\n el[varName][name] = value;\n }\n }\n});\n","import { isObject, isString, each, isUndefined } from 'underscore';\n\nexport default ({ $ }) => {\n if ($ && $.prototype.constructor.name !== 'jQuery') {\n const fn = $.fn;\n\n // Additional helpers\n\n fn.hide = function() {\n return this.css('display', 'none');\n };\n\n fn.show = function() {\n return this.css('display', 'block');\n };\n\n fn.focus = function() {\n const el = this.get(0);\n el && el.focus();\n return this;\n };\n\n // For SVGs in IE\n // (fn.removeClass = function(c) {\n // if (!arguments.length) {\n // return this.attr('class', '');\n // }\n // const classes = isString(c) && c.match(/\\S+/g);\n // return classes\n // ? this.each(function(el) {\n // each(classes, function(c) {\n // if (el.classList) {\n // el.classList.remove(c);\n // } else {\n // const val = el.className;\n // const bval = el.className.baseVal;\n\n // if (!isUndefined(bval)) {\n // val.baseVal = bval.replace(c, '');\n // } else {\n // el.className = val.replace(c, '');\n // }\n // }\n // });\n // })\n // : this;\n // }),\n // (fn.remove = function() {\n // return this.each(node => {\n // return node.parentNode && node.parentNode.removeChild(node);\n // });\n // }),\n\n // For spectrum compatibility\n\n fn.bind = function(ev, h) {\n return this.on(ev, h);\n };\n\n fn.unbind = function(ev, h) {\n if (isObject(ev)) {\n for (let name in ev) {\n ev.hasOwnProperty(name) && this.off(name, ev[name]);\n }\n\n return this;\n } else {\n return this.off(ev, h);\n }\n };\n\n fn.click = function(h) {\n return h ? this.on('click', h) : this.trigger('click');\n };\n\n fn.change = function(h) {\n return h ? this.on('change', h) : this.trigger('change');\n };\n\n fn.keydown = function(h) {\n return h ? this.on('keydown', h) : this.trigger('keydown');\n };\n\n fn.delegate = function(selector, events, data, handler) {\n if (!handler) {\n handler = data;\n }\n\n return this.on(events, selector, function(e) {\n e.data = data;\n handler(e);\n });\n };\n\n fn.scrollLeft = function() {\n let el = this.get(0);\n el = el.nodeType == 9 ? el.defaultView : el;\n let win = el instanceof Window ? el : null;\n return win ? win.pageXOffset : el.scrollLeft || 0;\n };\n\n fn.scrollTop = function() {\n let el = this.get(0);\n el = el.nodeType == 9 ? el.defaultView : el;\n let win = el instanceof Window ? el : null;\n return win ? win.pageYOffset : el.scrollTop || 0;\n };\n\n const offset = $.prototype.offset;\n fn.offset = function(coords) {\n let top, left;\n\n if (coords) {\n top = coords.top;\n left = coords.left;\n }\n\n if (typeof top != 'undefined') {\n this.css('top', `${top}px`);\n }\n if (typeof left != 'undefined') {\n this.css('left', `${left}px`);\n }\n\n return offset.call(this);\n };\n\n $.map = function(items, clb) {\n const ar = [];\n\n for (var i = 0; i < items.length; i++) {\n ar.push(clb(items[i], i));\n }\n\n return ar;\n };\n\n const indexOf = Array.prototype.indexOf;\n\n $.inArray = function(val, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, val, i);\n };\n\n $.Event = function(src, props) {\n if (!(this instanceof $.Event)) {\n return new $.Event(src, props);\n }\n\n this.type = src;\n this.isDefaultPrevented = () => false;\n };\n }\n};\n","import Backbone from 'backbone';\nimport { appendStyles } from 'utils/mixins';\n\nconst $ = Backbone.$;\n\nexport default Backbone.View.extend({\n initialize() {\n const { model } = this;\n model.view = this;\n this.conf = model.config;\n this.pn = model.get('Panels');\n this.cv = model.get('Canvas');\n model.once('change:ready', () => {\n this.pn.active();\n this.pn.disableButtons();\n setTimeout(() => {\n model.trigger('load', model.get('Editor'));\n model.set('changesCount', 0);\n });\n });\n },\n\n render() {\n const { model, $el, conf } = this;\n const pfx = conf.stylePrefix;\n const contEl = $(conf.el || `body ${conf.container}`);\n appendStyles(conf.cssIcons, { unique: 1, prepand: 1 });\n $el.empty();\n\n if (conf.width) contEl.css('width', conf.width);\n if (conf.height) contEl.css('height', conf.height);\n\n $el.append(this.cv.render());\n $el.append(this.pn.render());\n $el.attr('class', `${pfx}editor ${pfx}one-bg ${pfx}two-color`);\n contEl\n .addClass(`${pfx}editor-cont`)\n .empty()\n .append($el);\n\n return this;\n }\n});\n","/**\n * Editor contains the top level API which you'll probably use to customize the editor or extend it with plugins.\n * You get the Editor instance on init method and you can pass options via its [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/editor/config/config.js)\n *\n * ```js\n * const editor = grapesjs.init({\n * // options\n * });\n * ```\n *\n * ## Available Events\n *\n * You can make use of available events in this way\n * ```js\n * editor.on('EVENT-NAME', (some, argument) => {\n * // do something\n * })\n * ```\n *\n * ### Components\n * * `component:create` - Component is created (only the model, is not yet mounted in the canvas), called after the init() method\n * * `component:mount` - Component is mounted to an element and rendered in canvas\n * * `component:add` - Triggered when a new component is added to the editor, the model is passed as an argument to the callback\n * * `component:remove` - Triggered when a component is removed, the model is passed as an argument to the callback\n * * `component:remove:before` - Triggered before the remove of the component, the model, remove function (if aborted via options, with this function you can complete the remove) and options (use options.abort = true to prevent remove), are passed as arguments to the callback\n * * `component:clone` - Triggered when a component is cloned, the new model is passed as an argument to the callback\n * * `component:update` - Triggered when a component is updated (moved, styled, etc.), the model is passed as an argument to the callback\n * * `component:update:{propertyName}` - Listen any property change, the model is passed as an argument to the callback\n * * `component:styleUpdate` - Triggered when the style of the component is updated, the model is passed as an argument to the callback\n * * `component:styleUpdate:{propertyName}` - Listen for a specific style property change, the model is passed as an argument to the callback\n * * `component:selected` - New component selected, the selected model is passed as an argument to the callback\n * * `component:deselected` - Component deselected, the deselected model is passed as an argument to the callback\n * * `component:toggled` - Component selection changed, toggled model is passed as an argument to the callback\n * * `component:type:add` - New component type added, the new type is passed as an argument to the callback\n * * `component:type:update` - Component type updated, the updated type is passed as an argument to the callback\n * * `component:drag:start` - Component drag started. Passed an object, to the callback, containing the `target` (component to drag), `parent` (parent of the component) and `index` (component index in the parent)\n * * `component:drag` - During component drag. Passed the same object as in `component:drag:start` event, but in this case, `parent` and `index` are updated by the current pointer\n * * `component:drag:end` - Component drag ended. Passed the same object as in `component:drag:start` event, but in this case, `parent` and `index` are updated by the final pointer\n * ### Blocks\n * * `block:add` - New block added\n * * `block:remove` - Block removed\n * * `block:drag:start` - Started dragging block, model of the block is passed as an argument\n * * `block:drag` - Dragging block, the block's model and the drag event are passed as arguments\n * * `block:drag:stop` - Dragging of the block is stopped. As agruments for the callback you get, the dropped component model (if dropped successfully) and the model of the block\n * ### Assets\n * * `asset:add` - New asset added\n * * `asset:remove` - Asset removed\n * * `asset:upload:start` - Before the upload is started\n * * `asset:upload:end` - After the upload is ended\n * * `asset:upload:error` - On any error in upload, passes the error as an argument\n * * `asset:upload:response` - On upload response, passes the result as an argument\n * ### Keymaps\n * * `keymap:add` - New keymap added. The new keyamp object is passed as an argument\n * * `keymap:remove` - Keymap removed. The removed keyamp object is passed as an argument\n * * `keymap:emit` - Some keymap emitted, in arguments you get keymapId, shortcutUsed, Event\n * * `keymap:emit:{keymapId}` - `keymapId` emitted, in arguments you get keymapId, shortcutUsed, Event\n * ### Style Manager\n * * `styleManager:update:target` - The target (Component or CSSRule) is changed\n * * `styleManager:change` - Triggered on style property change from new selected component, the view of the property is passed as an argument to the callback\n * * `styleManager:change:{propertyName}` - As above but for a specific style property\n * ### Storages\n * * `storage:start` - Before the storage request is started\n * * `storage:start:store` - Before the store request. The object to store is passed as an argumnet (which you can edit)\n * * `storage:start:load` - Before the load request. Items to load are passed as an argumnet (which you can edit)\n * * `storage:load` - Triggered when something was loaded from the storage, loaded object passed as an argumnet\n * * `storage:store` - Triggered when something is stored to the storage, stored object passed as an argumnet\n * * `storage:end` - After the storage request is ended\n * * `storage:end:store` - After the store request\n * * `storage:end:load` - After the load request\n * * `storage:error` - On any error on storage request, passes the error as an argument\n * * `storage:error:store` - Error on store request, passes the error as an argument\n * * `storage:error:load` - Error on load request, passes the error as an argument\n * ### Canvas\n * * `canvas:dragenter` - When something is dragged inside the canvas, `DataTransfer` instance passed as an argument\n * * `canvas:dragover` - When something is dragging on canvas, `DataTransfer` instance passed as an argument\n * * `canvas:drop` - Something is dropped in canvas, `DataTransfer` instance and the dropped model are passed as arguments\n * * `canvas:dragend` - When a drag operation is ended, `DataTransfer` instance passed as an argument\n * * `canvas:dragdata` - On any dataTransfer parse, `DataTransfer` instance and the `result` are passed as arguments.\n * By changing `result.content` you're able to customize what is dropped\n * ### Selectors\n * * `selector:add` - New selector is add. Passes the new selector as an argument\n * * `selector:remove` - Selector removed. Passes the removed selector as an argument\n * * `selector:update` - Selector updated. Passes the updated selector as an argument\n * * `selector:state` - State changed. Passes the new state value as an argument\n * ### RTE\n * * `rte:enable` - RTE enabled. The view, on which RTE is enabled, is passed as an argument\n * * `rte:disable` - RTE disabled. The view, on which RTE is disabled, is passed as an argument\n * ### Modal\n * * `modal:open` - Modal is opened\n * * `modal:close` - Modal is closed\n * ### Parser\n * * `parse:html` - On HTML parse, an object containing the input and the output of the parser is passed as an argument\n * * `parse:css` - On CSS parse, an object containing the input and the output of the parser is passed as an argument\n * ### Commands\n * * `run:{commandName}` - Triggered when some command is called to run (eg. editor.runCommand('preview'))\n * * `stop:{commandName}` - Triggered when some command is called to stop (eg. editor.stopCommand('preview'))\n * * `run:{commandName}:before` - Triggered before the command is called\n * * `stop:{commandName}:before` - Triggered before the command is called to stop\n * * `abort:{commandName}` - Triggered when the command execution is aborted (`editor.on(`run:preview:before`, opts => opts.abort = 1);`)\n * * `run` - Triggered on run of any command. The id and the result are passed as arguments to the callback\n * * `stop` - Triggered on stop of any command. The id and the result are passed as arguments to the callback\n * ### Pages\n * Check the [Pages](/api/pages.html) module.\n * ### General\n * * `canvasScroll` - Canvas is scrolled\n * * `update` - The structure of the template is updated (its HTML/CSS)\n * * `undo` - Undo executed\n * * `redo` - Redo executed\n * * `load` - Editor is loaded\n *\n * @module Editor\n */\nimport $ from 'cash-dom';\nimport defaults from './config/config';\nimport EditorModel from './model/Editor';\nimport EditorView from './view/EditorView';\n\nexport default (config = {}) => {\n const c = {\n ...defaults,\n ...config\n };\n\n c.pStylePrefix = c.stylePrefix;\n var em = new EditorModel(c);\n var editorView = new EditorView({\n model: em,\n config: c\n });\n\n return {\n $,\n\n /**\n * @property {EditorModel}\n * @private\n */\n editor: em,\n\n /**\n * Initialize editor model\n * @return {this}\n * @private\n */\n init(opts = {}) {\n em.init(this, { ...c, ...opts });\n\n [\n 'I18n',\n 'Utils',\n 'Config',\n 'Commands',\n 'Keymaps',\n 'Modal',\n 'Panels',\n 'Canvas',\n 'Parser',\n 'CodeManager',\n 'UndoManager',\n 'RichTextEditor',\n ['Pages', 'PageManager'],\n 'DomComponents',\n ['Components', 'DomComponents'],\n 'LayerManager',\n ['Layers', 'LayerManager'],\n 'CssComposer',\n ['Css', 'CssComposer'],\n 'StorageManager',\n ['Storage', 'StorageManager'],\n 'AssetManager',\n ['Assets', 'AssetManager'],\n 'BlockManager',\n ['Blocks', 'BlockManager'],\n 'TraitManager',\n ['Traits', 'TraitManager'],\n 'SelectorManager',\n ['Selectors', 'SelectorManager'],\n 'StyleManager',\n ['Styles', 'StyleManager'],\n 'DeviceManager',\n ['Devices', 'DeviceManager']\n ].forEach(prop => {\n if (Array.isArray(prop)) {\n this[prop[0]] = em.get(prop[1]);\n } else {\n this[prop] = em.get(prop);\n }\n });\n\n // Do post render stuff after the iframe is loaded otherwise it'll\n // be empty during tests\n em.once('change:ready', () => {\n this.UndoManager.clear();\n em.get('modules').forEach(module => {\n module.postRender && module.postRender(editorView);\n });\n });\n\n return this;\n },\n\n /**\n * Returns configuration object\n * @param {string} [prop] Property name\n * @returns {any} Returns the configuration object or\n * the value of the specified property\n */\n getConfig(prop) {\n return em.getConfig(prop);\n },\n\n /**\n * Returns HTML built inside canvas\n * @param {Object} [opts={}] Options\n * @param {Boolean} [opts.cleanId=false] Remove unnecessary IDs (eg. those created automatically)\n * @returns {string} HTML string\n */\n getHtml(opts) {\n return em.getHtml(opts);\n },\n\n /**\n * Returns CSS built inside canvas\n * @param {Object} [opts={}] Options\n * @param {Boolean} [opts.avoidProtected=false] Don't include protected CSS\n * @returns {string} CSS string\n */\n getCss(opts) {\n return em.getCss(opts);\n },\n\n /**\n * Returns JS of all components\n * @param {Object} [opts={}] Options\n * @param {Component} [opts.component] Get the JS of a particular component\n * @returns {string} JS string\n */\n getJs(opts) {\n return em.getJs(opts);\n },\n\n /**\n * Return the complete tree of components. Use `getWrapper` to include also the wrapper\n * @return {Components}\n */\n getComponents() {\n return em.get('DomComponents').getComponents();\n },\n\n /**\n * Return the wrapper and its all components\n * @return {Component}\n */\n getWrapper() {\n return em.get('DomComponents').getWrapper();\n },\n\n /**\n * Set components inside editor's canvas. This method overrides actual components\n * @param {Array|Object|string} components HTML string or components model\n * @param {Object} opt the options object to be used by the [setComponents]{@link em#setComponents} method\n * @return {this}\n * @example\n * editor.setComponents('
New component
');\n * // or\n * editor.setComponents({\n * type: 'text',\n * classes:['cls'],\n * content: 'New component'\n * });\n */\n setComponents(components, opt = {}) {\n em.setComponents(components, opt);\n return this;\n },\n\n /**\n * Add components\n * @param {Array|Object|string} components HTML string or components model\n * @param {Object} opts Options\n * @param {Boolean} [opts.avoidUpdateStyle=false] If the HTML string contains styles,\n * by default, they will be created and, if already exist, updated. When this option\n * is true, styles already created will not be updated.\n * @return {Array}\n * @example\n * editor.addComponents('
New component
');\n * // or\n * editor.addComponents({\n * type: 'text',\n * classes:['cls'],\n * content: 'New component'\n * });\n */\n addComponents(components, opts) {\n return this.getWrapper().append(components, opts);\n },\n\n /**\n * Returns style in JSON format object\n * @return {Object}\n */\n getStyle() {\n return em.get('CssComposer').getAll();\n },\n\n /**\n * Set style inside editor's canvas. This method overrides actual style\n * @param {Array|Object|string} style CSS string or style model\n * @param {Object} opt the options object to be used by the [setStyle]{@link em#setStyle} method\n * @return {this}\n * @example\n * editor.setStyle('.cls{color: red}');\n * //or\n * editor.setStyle({\n * selectors: ['cls']\n * style: { color: 'red' }\n * });\n */\n setStyle(style, opt = {}) {\n em.setStyle(style, opt);\n return this;\n },\n\n /**\n * Returns the last selected component, if there is one\n * @return {Model}\n */\n getSelected() {\n return em.getSelected();\n },\n\n /**\n * Returns an array of all selected components\n * @return {Array}\n */\n getSelectedAll() {\n return em.getSelectedAll();\n },\n\n /**\n * Get a stylable entity from the selected component.\n * If you select a component without classes the entity is the Component\n * itself and all changes will go inside its 'style' attribute. Otherwise,\n * if the selected component has one or more classes, the function will\n * return the corresponding CSS Rule\n * @return {Model}\n */\n getSelectedToStyle() {\n let selected = em.getSelected();\n\n if (selected) {\n return this.StyleManager.getModelToStyle(selected);\n }\n },\n\n /**\n * Select a component\n * @param {Component|HTMLElement} el Component to select\n * @param {Object} [opts] Options\n * @param {Boolean} [opts.scroll] Scroll canvas to the selected element\n * @return {this}\n * @example\n * // Select dropped block\n * editor.on('block:drag:stop', function(model) {\n * editor.select(model);\n * });\n */\n select(el, opts) {\n em.setSelected(el, opts);\n return this;\n },\n\n /**\n * Add component to selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectAdd(model);\n */\n selectAdd(el) {\n em.addSelected(el);\n return this;\n },\n\n /**\n * Remove component from selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectRemove(model);\n */\n selectRemove(el) {\n em.removeSelected(el);\n return this;\n },\n\n /**\n * Toggle component selection\n * @param {Component|HTMLElement|Array} el Component to select\n * @return {this}\n * @example\n * editor.selectToggle(model);\n */\n selectToggle(el) {\n em.toggleSelected(el);\n return this;\n },\n\n /**\n * Set device to the editor. If the device exists it will\n * change the canvas to the proper width\n * @param {string} name Name of the device\n * @return {this}\n * @example\n * editor.setDevice('Tablet');\n */\n setDevice(name) {\n em.set('device', name);\n return this;\n },\n\n /**\n * Return the actual active device\n * @return {string} Device name\n * @example\n * var device = editor.getDevice();\n * console.log(device);\n * // 'Tablet'\n */\n getDevice() {\n return em.get('device');\n },\n\n /**\n * Execute command\n * @param {string} id Command ID\n * @param {Object} options Custom options\n * @return {*} The return is defined by the command\n * @example\n * editor.runCommand('myCommand', {someValue: 1});\n */\n runCommand(id, options = {}) {\n return em.get('Commands').run(id, options);\n },\n\n /**\n * Stop the command if stop method was provided\n * @param {string} id Command ID\n * @param {Object} options Custom options\n * @return {*} The return is defined by the command\n * @example\n * editor.stopCommand('myCommand', {someValue: 1});\n */\n stopCommand(id, options = {}) {\n return em.get('Commands').stop(id, options);\n },\n\n /**\n * Store data to the current storage\n * @param {Function} clb Callback function\n * @return {Object} Stored data\n */\n store(clb) {\n return em.store(clb);\n },\n\n /**\n * Load data from the current storage\n * @param {Function} clb Callback function\n * @return {Object} Stored data\n */\n load(clb) {\n return em.load(clb);\n },\n\n /**\n * Returns container element. The one which was indicated as 'container'\n * on init method\n * @return {HTMLElement}\n */\n getContainer() {\n return c.el;\n },\n\n /**\n * Return the count of changes made to the content and not yet stored.\n * This count resets at any `store()`\n * @return {number}\n */\n getDirtyCount() {\n return em.getDirtyCount();\n },\n\n /**\n * Update editor dimension offsets\n *\n * This method could be useful when you update, for example, some position\n * of the editor element (eg. canvas, panels, etc.) with CSS, where without\n * refresh you'll get misleading position of tools\n * @param {Object} [options] Options\n * @param {Boolean} [options.tools=false] Update the position of tools (eg. rich text editor, component highlighter, etc.)\n */\n refresh(opts) {\n em.refreshCanvas(opts);\n },\n\n /**\n * Replace the built-in Rich Text Editor with a custom one.\n * @param {Object} obj Custom RTE Interface\n * @example\n * editor.setCustomRte({\n * // Function for enabling custom RTE\n * // el is the HTMLElement of the double clicked Text Component\n * // rte is the same instance you have returned the first time you call\n * // enable(). This is useful if need to check if the RTE is already enabled so\n * // ion this case you'll need to return the RTE and the end of the function\n * enable: function(el, rte) {\n * rte = new MyCustomRte(el, {}); // this depends on the Custom RTE API\n * ...\n * return rte; // return the RTE instance\n * },\n *\n * // Disable the editor, called for example when you unfocus the Text Component\n * disable: function(el, rte) {\n * rte.blur(); // this depends on the Custom RTE API\n * }\n *\n * // Called when the Text Component is focused again. If you returned the RTE instance\n * // from the enable function, the enable won't be called again instead will call focus,\n * // in this case to avoid double binding of the editor\n * focus: function (el, rte) {\n * rte.focus(); // this depends on the Custom RTE API\n * }\n * });\n */\n setCustomRte(obj) {\n this.RichTextEditor.customRte = obj;\n },\n\n /**\n * Replace the default CSS parser with a custom one.\n * The parser function receives a CSS string as a parameter and expects\n * an array of CSSRule objects as a result. If you need to remove the\n * custom parser, pass `null` as the argument\n * @param {Function|null} parser Parser function\n * @return {this}\n * @example\n * editor.setCustomParserCss(css => {\n * const result = [];\n * // ... parse the CSS string\n * result.push({\n * selectors: '.someclass, div .otherclass',\n * style: { color: 'red' }\n * })\n * // ...\n * return result;\n * });\n */\n setCustomParserCss(parser) {\n this.Parser.getConfig().parserCss = parser;\n return this;\n },\n\n /**\n * Change the global drag mode of components.\n * To get more about this feature read: https://github.com/artf/grapesjs/issues/1936\n * @param {String} value Drag mode, options: 'absolute' | 'translate'\n * @returns {this}\n */\n setDragMode(value) {\n em.setDragMode(value);\n return this;\n },\n\n /**\n * Trigger event log message\n * @param {*} msg Message to log\n * @param {Object} [opts={}] Custom options\n * @param {String} [opts.ns=''] Namespace of the log (eg. to use in plugins)\n * @param {String} [opts.level='debug'] Level of the log, `debug`, `info`, `warning`, `error`\n * @return {this}\n * @example\n * editor.log('Something done!', { ns: 'from-plugin-x', level: 'info' });\n * // This will trigger following events\n * // `log`, `log:info`, `log-from-plugin-x`, `log-from-plugin-x:info`\n * // Callbacks of those events will always receive the message and\n * // options, as arguments, eg:\n * // editor.on('log:info', (msg, opts) => console.info(msg, opts))\n */\n log(msg, opts = {}) {\n em.log(msg, opts);\n return this;\n },\n\n /**\n * Translate label\n * @param {String} key Label to translate\n * @param {Object} [opts] Options for the translation\n * @param {Object} [opts.params] Params for the translation\n * @param {Boolean} [opts.noWarn] Avoid warnings in case of missing resources\n * @returns {String}\n * @example\n * editor.t('msg');\n * // use params\n * editor.t('msg2', { params: { test: 'hello' } });\n * // custom local\n * editor.t('msg2', { params: { test: 'hello' }, l: 'it' });\n */\n t(...args) {\n return em.t(...args);\n },\n\n /**\n * Attach event\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n on(event, callback) {\n em.on(event, callback);\n return this;\n },\n\n /**\n * Attach event and detach it after the first run\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n once(event, callback) {\n em.once(event, callback);\n return this;\n },\n\n /**\n * Detach event\n * @param {string} event Event name\n * @param {Function} callback Callback function\n * @return {this}\n */\n off(event, callback) {\n em.off(event, callback);\n return this;\n },\n\n /**\n * Trigger event\n * @param {string} event Event to trigger\n * @return {this}\n */\n trigger(event) {\n em.trigger.apply(em, arguments);\n return this;\n },\n\n /**\n * Destroy the editor\n */\n destroy() {\n return em.destroyAll();\n },\n\n /**\n * Returns editor element\n * @return {HTMLElement}\n * @private\n */\n getEl() {\n return editorView.el;\n },\n\n /**\n * Returns editor model\n * @return {Model}\n * @private\n */\n getModel() {\n return em;\n },\n\n /**\n * Render editor\n * @return {HTMLElement}\n */\n render() {\n editorView.render();\n return editorView.el;\n }\n };\n};\n","export default {\n plugins: []\n};\n","/**\n * File made for IE/Edge support\n * https://github.com/artf/grapesjs/issues/214\n */\n\nexport default () => {\n /**\n * Check if IE/Edge\n * @return {Boolean}\n */\n const isIE = () => {\n let match;\n const agent = window.navigator.userAgent;\n const rules = [\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/]\n ];\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n match = rule[1].exec(agent);\n if (match) break;\n }\n\n return !!match;\n };\n\n if (isIE()) {\n const originalCreateHTMLDocument =\n DOMImplementation.prototype.createHTMLDocument;\n DOMImplementation.prototype.createHTMLDocument = title => {\n if (!title) title = '';\n return originalCreateHTMLDocument.apply(document.implementation, [title]);\n };\n }\n};\n","import $ from 'cash-dom';\nimport Editor from './editor';\nimport { isElement, isFunction } from 'underscore';\nimport polyfills from 'utils/polyfills';\nimport PluginManager from './plugin_manager';\n\npolyfills();\n\nconst plugins = new PluginManager();\nconst editors = [];\nconst defaultConfig = {\n // If true renders editor on init\n autorender: 1,\n\n // Array of plugins to init\n plugins: [],\n\n // Custom options for plugins\n pluginsOpts: {}\n};\n\nexport default {\n $,\n\n editors,\n\n plugins,\n\n // Will be replaced on build\n version: '<# VERSION #>',\n\n /**\n * Initialize the editor with passed options\n * @param {Object} config Configuration object\n * @param {string|HTMLElement} config.container Selector which indicates where render the editor\n * @param {Boolean} [config.autorender=true] If true, auto-render the content\n * @param {Array} [config.plugins=[]] Array of plugins to execute on start\n * @param {Object} [config.pluginsOpts={}] Custom options for plugins\n * @return {Editor} Editor instance\n * @example\n * var editor = grapesjs.init({\n * container: '#myeditor',\n * components: '
Hello world
',\n * style: '.hello{color: red}',\n * })\n */\n init(config = {}) {\n const els = config.container;\n if (!els) throw new Error(\"'container' is required\");\n config = { ...defaultConfig, ...config, grapesjs: this };\n config.el = isElement(els) ? els : document.querySelector(els);\n const editor = new Editor(config).init();\n const em = editor.getModel();\n\n // Load plugins\n config.plugins.forEach(pluginId => {\n let plugin = plugins.get(pluginId);\n const plgOptions = config.pluginsOpts[pluginId] || {};\n\n // Try to search in global context\n if (!plugin) {\n const wplg = window[pluginId];\n plugin = wplg && wplg.default ? wplg.default : wplg;\n }\n\n if (plugin) {\n plugin(editor, plgOptions);\n } else if (isFunction(pluginId)) {\n pluginId(editor, plgOptions);\n } else {\n em.logWarning(`Plugin ${pluginId} not found`, {\n context: 'plugins',\n plugin: pluginId\n });\n }\n });\n\n // Execute `onLoad` on modules once all plugins are initialized.\n // A plugin might have extended/added some custom type so this\n // is a good point to load stuff like components, css rules, etc.\n em.loadOnStart();\n config.autorender && editor.render();\n editors.push(editor);\n\n return editor;\n }\n};\n","import defaults from './config/config';\n\nexport default config => {\n var c = config || {};\n\n // Set default options\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var plugins = {};\n\n return {\n /**\n * Add new plugin. Plugins could not be overwritten\n * @param {string} id Plugin ID\n * @param {Function} plugin Function which contains all plugin logic\n * @return {Function} The plugin function\n * @example\n * PluginManager.add('some-plugin', function(editor){\n * editor.Commands.add('new-command', {\n * run: function(editor, senderBtn){\n * console.log('Executed new-command');\n * }\n * })\n * });\n */\n add(id, plugin) {\n if (plugins[id]) {\n return plugins[id];\n }\n\n plugins[id] = plugin;\n return plugin;\n },\n\n /**\n * Returns plugin by ID\n * @param {string} id Plugin ID\n * @return {Function|undefined} Plugin\n * @example\n * var plugin = PluginManager.get('some-plugin');\n * plugin(editor);\n */\n get(id) {\n return plugins[id];\n },\n\n /**\n * Returns object with all plugins\n * @return {Object}\n */\n getAll() {\n return plugins;\n }\n };\n};\n","export default {\n stylePrefix: 'trt-',\n\n // Specify the element to use as a container, string (query) or HTMLElement\n // With the empty value, nothing will be rendered\n appendTo: '',\n\n // Default options for the target input\n optionsTarget: [{ value: false }, { value: '_blank' }]\n};\n","import Backbone from 'backbone';\nimport { isUndefined, isString, isFunction } from 'underscore';\nimport { capitalize } from 'utils/mixins';\n\nconst $ = Backbone.$;\n\nexport default Backbone.View.extend({\n events: {},\n eventCapture: ['change'],\n\n appendInput: 1,\n\n attributes() {\n return this.model.get('attributes');\n },\n\n templateLabel() {\n const { ppfx } = this;\n const label = this.getLabel();\n return `
${label}
`;\n },\n\n templateInput() {\n const { clsField } = this;\n return `
`;\n },\n\n initialize(o = {}) {\n const { config = {} } = o;\n const { model, eventCapture } = this;\n const { target } = model;\n const { type } = model.attributes;\n this.config = config;\n this.em = config.em;\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.target = target;\n const { ppfx } = this;\n this.clsField = `${ppfx}field ${ppfx}field-${type}`;\n [\n ['change:value', this.onValueChange],\n ['remove', this.removeView]\n ].forEach(([event, clb]) => {\n model.off(event, clb);\n this.listenTo(model, event, clb);\n });\n model.view = this;\n this.listenTo(model, 'change:label', this.render);\n this.listenTo(model, 'change:placeholder', this.rerender);\n this.events = {};\n eventCapture.forEach(event => (this.events[event] = 'onChange'));\n this.delegateEvents();\n this.init();\n },\n\n getClbOpts() {\n return {\n component: this.target,\n trait: this.model,\n elInput: this.getInputElem()\n };\n },\n\n removeView() {\n this.remove();\n this.removed();\n },\n\n init() {},\n removed() {},\n onRender() {},\n onUpdate() {},\n onEvent() {},\n\n /**\n * Fires when the input is changed\n * @private\n */\n onChange(event) {\n const el = this.getInputElem();\n if (el && !isUndefined(el.value)) {\n this.model.set('value', el.value);\n }\n this.onEvent({\n ...this.getClbOpts(),\n event\n });\n },\n\n getValueForTarget() {\n return this.model.get('value');\n },\n\n setInputValue(value) {\n const el = this.getInputElem();\n el && (el.value = value);\n },\n\n /**\n * On change callback\n * @private\n */\n onValueChange(model, value, opts = {}) {\n if (opts.fromTarget) {\n this.setInputValue(model.get('value'));\n this.postUpdate();\n } else {\n const val = this.getValueForTarget();\n model.setTargetValue(val, opts);\n }\n },\n\n /**\n * Render label\n * @private\n */\n renderLabel() {\n const { $el, target } = this;\n const label = this.getLabel();\n let tpl = this.templateLabel(target);\n\n if (this.createLabel) {\n tpl =\n this.createLabel({\n label,\n component: target,\n trait: this\n }) || '';\n }\n\n $el.find('[data-label]').append(tpl);\n },\n\n /**\n * Returns label for the input\n * @return {string}\n * @private\n */\n getLabel() {\n const { em } = this;\n const { label, name } = this.model.attributes;\n return (\n em.t(`traitManager.traits.labels.${name}`) ||\n capitalize(label || name).replace(/-/g, ' ')\n );\n },\n\n /**\n * Returns current target component\n */\n getComponent() {\n return this.target;\n },\n\n /**\n * Returns input element\n * @return {HTMLElement}\n * @private\n */\n getInputEl() {\n if (!this.$input) {\n const { em, model } = this;\n const md = model;\n const { name } = model.attributes;\n const plh = md.get('placeholder') || md.get('default') || '';\n const type = md.get('type') || 'text';\n const min = md.get('min');\n const max = md.get('max');\n const value = this.getModelValue();\n const input = $(``);\n const i18nAttr = em.t(`traitManager.traits.attributes.${name}`) || {};\n input.attr(i18nAttr);\n\n if (!isUndefined(value)) {\n md.set({ value }, { silent: true });\n input.prop('value', value);\n }\n\n if (min) {\n input.prop('min', min);\n }\n\n if (max) {\n input.prop('max', max);\n }\n\n this.$input = input;\n }\n return this.$input.get(0);\n },\n\n getInputElem() {\n const { input, $input } = this;\n return (\n input || ($input && $input.get && $input.get(0)) || this.getElInput()\n );\n },\n\n getModelValue() {\n let value;\n const model = this.model;\n const target = this.target;\n const name = model.get('name');\n\n if (model.get('changeProp')) {\n value = target.get(name);\n } else {\n const attrs = target.get('attributes');\n value = model.get('value') || attrs[name];\n }\n\n return !isUndefined(value) ? value : '';\n },\n\n getElInput() {\n return this.elInput;\n },\n\n /**\n * Renders input\n * @private\n * */\n renderField() {\n const { $el, appendInput, model } = this;\n const inputs = $el.find('[data-input]');\n const el = inputs[inputs.length - 1];\n let tpl = model.el;\n\n if (!tpl) {\n tpl = this.createInput\n ? this.createInput(this.getClbOpts())\n : this.getInputEl();\n }\n\n if (isString(tpl)) {\n el.innerHTML = tpl;\n this.elInput = el.firstChild;\n } else {\n appendInput ? el.appendChild(tpl) : el.insertBefore(tpl, el.firstChild);\n this.elInput = tpl;\n }\n\n model.el = this.elInput;\n },\n\n hasLabel() {\n const { label } = this.model.attributes;\n return !this.noLabel && label !== false;\n },\n\n rerender() {\n this.model.el = null;\n this.render();\n },\n\n postUpdate() {\n this.onUpdate(this.getClbOpts());\n },\n\n render() {\n const { $el, pfx, ppfx, model } = this;\n const { type, id } = model.attributes;\n const hasLabel = this.hasLabel && this.hasLabel();\n const cls = `${pfx}trait`;\n this.$input = null;\n let tmpl = `
\n ${hasLabel ? `
` : ''}\n
\n ${\n this.templateInput\n ? isFunction(this.templateInput)\n ? this.templateInput(this.getClbOpts())\n : this.templateInput\n : ''\n }\n
\n
`;\n $el.empty().append(tmpl);\n hasLabel && this.renderLabel();\n this.renderField();\n this.el.className = `${cls}__wrp ${cls}__wrp-${id}`;\n this.postUpdate();\n this.onRender(this.getClbOpts());\n return this;\n }\n});\n","import Backbone from 'backbone';\nimport { isString, isUndefined } from 'underscore';\nimport TraitView from './TraitView';\n\nconst $ = Backbone.$;\n\nexport default TraitView.extend({\n init() {\n this.listenTo(this.model, 'change:options', this.rerender);\n },\n\n templateInput() {\n const { ppfx, clsField } = this;\n return `
\n
\n
\n
\n
\n
`;\n },\n\n /**\n * Returns input element\n * @return {HTMLElement}\n * @private\n */\n getInputEl() {\n if (!this.$input) {\n const { model, em } = this;\n const propName = model.get('name');\n const opts = model.get('options') || [];\n const values = [];\n let input = '';\n this.$input = $(input);\n const val = model.getTargetValue();\n const valResult = values.indexOf(val) >= 0 ? val : model.get('default');\n !isUndefined(valResult) && this.$input.val(valResult);\n }\n\n return this.$input.get(0);\n }\n});\n","import { isUndefined } from 'underscore';\nimport TraitView from './TraitView';\n\nexport default TraitView.extend({\n appendInput: 0,\n\n templateInput() {\n const { ppfx, clsField } = this;\n return ``;\n },\n\n /**\n * Fires when the input is changed\n * @private\n */\n onChange() {\n const value = this.getInputElem().checked;\n this.model.set('value', this.getCheckedValue(value));\n },\n\n getCheckedValue(checked) {\n let result = checked;\n const { valueTrue, valueFalse } = this.model.attributes;\n\n if (result && !isUndefined(valueTrue)) {\n result = valueTrue;\n }\n\n if (!result && !isUndefined(valueFalse)) {\n result = valueFalse;\n }\n\n return result;\n },\n\n /**\n * Returns input element\n * @return {HTMLElement}\n * @private\n */\n getInputEl(...args) {\n const toInit = !this.$input;\n const el = TraitView.prototype.getInputEl.apply(this, args);\n\n if (toInit) {\n let checked, targetValue;\n const { model, target } = this;\n const { valueTrue, valueFalse } = model.attributes;\n const name = model.get('name');\n\n if (model.get('changeProp')) {\n checked = target.get(name);\n targetValue = checked;\n } else {\n targetValue = target.get('attributes')[name];\n checked = targetValue || targetValue === '' ? !0 : !1;\n }\n\n if (!isUndefined(valueFalse) && targetValue === valueFalse) {\n checked = !1;\n }\n\n el.checked = checked;\n }\n\n return el;\n }\n});\n","import TraitView from './TraitView';\nimport { isUndefined } from 'underscore';\nimport InputNumber from 'domain_abstract/ui/InputNumber';\n\nexport default TraitView.extend({\n getValueForTarget() {\n const { model } = this;\n const { value, unit } = model.attributes;\n return !isUndefined(value) && value !== ''\n ? value + unit\n : model.get('default');\n },\n\n /**\n * Returns input element\n * @return {HTMLElement}\n * @private\n */\n getInputEl() {\n if (!this.input) {\n const { ppfx, model } = this;\n const value = this.getModelValue();\n const inputNumber = new InputNumber({\n contClass: `${ppfx}field-int`,\n type: 'number',\n model: model,\n ppfx\n });\n this.input = inputNumber.render();\n this.$input = this.input.inputEl;\n this.$unit = this.input.unitEl;\n model.set('value', value, { fromTarget: 1 });\n this.$input.val(value);\n this.input = inputNumber.el;\n }\n return this.input;\n }\n});\n","import TraitView from './TraitView';\nimport InputColor from 'domain_abstract/ui/InputColor';\n\nexport default TraitView.extend({\n templateInput: '',\n\n /**\n * Returns input element\n * @return {HTMLElement}\n * @private\n */\n getInputEl() {\n if (!this.input) {\n const model = this.model;\n const value = this.getModelValue();\n const inputColor = new InputColor({\n model,\n target: this.config.em,\n contClass: this.ppfx + 'field-color',\n ppfx: this.ppfx\n });\n const input = inputColor.render();\n input.setValue(value, { fromTarget: 1 });\n this.input = input.el;\n }\n\n return this.input;\n }\n});\n","import { isString } from 'underscore';\nimport TraitView from './TraitView';\n\nexport default TraitView.extend({\n eventCapture: ['click button'],\n\n templateInput: '',\n\n onChange() {\n this.handleClick();\n },\n\n handleClick() {\n const { model, em } = this;\n const command = model.get('command');\n\n if (command) {\n if (isString(command)) {\n em.get('Commands').run(command);\n } else {\n command(em.get('Editor'), model);\n }\n }\n },\n\n renderLabel() {\n if (this.model.get('label')) {\n TraitView.prototype.renderLabel.apply(this, arguments);\n }\n },\n\n getInputEl() {\n const { model, ppfx } = this;\n const { labelButton, text, full } = model.props();\n const label = labelButton || text;\n const className = `${ppfx}btn`;\n const input = ``;\n return input;\n }\n});\n","import DomainViews from 'domain_abstract/view/DomainViews';\nimport TraitView from './TraitView';\nimport TraitSelectView from './TraitSelectView';\nimport TraitCheckboxView from './TraitCheckboxView';\nimport TraitNumberView from './TraitNumberView';\nimport TraitColorView from './TraitColorView';\nimport TraitButtonView from './TraitButtonView';\n\nexport default DomainViews.extend({\n ns: 'Traits',\n itemView: TraitView,\n reuseView: 1,\n\n itemsView: {\n text: TraitView,\n number: TraitNumberView,\n select: TraitSelectView,\n checkbox: TraitCheckboxView,\n color: TraitColorView,\n button: TraitButtonView\n },\n\n initialize(o = {}) {\n const config = o.config || {};\n this.config = config;\n this.em = o.editor;\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.className = this.pfx + 'traits';\n const toListen = 'component:toggled';\n this.listenTo(this.em, toListen, this.updatedCollection);\n this.updatedCollection();\n },\n\n /**\n * Update view collection\n * @private\n */\n updatedCollection() {\n const ppfx = this.ppfx;\n const comp = this.em.getSelected();\n this.el.className = `${this.className} ${ppfx}one-bg ${ppfx}two-color`;\n this.collection = comp ? comp.get('traits') : [];\n this.render();\n }\n});\n","import { defaults, isElement } from 'underscore';\nimport defaultOpts from './config/config';\nimport TraitsView from './view/TraitsView';\n\nexport default () => {\n let c = {};\n let TraitsViewer;\n\n return {\n TraitsView,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'TraitManager',\n\n /**\n * Get configuration object\n * @return {Object}\n * @private\n */\n getConfig() {\n return c;\n },\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n */\n init(config = {}) {\n c = config;\n defaults(c, defaultOpts);\n const ppfx = c.pStylePrefix;\n ppfx && (c.stylePrefix = `${ppfx}${c.stylePrefix}`);\n TraitsViewer = new TraitsView({\n collection: [],\n editor: c.em,\n config: c\n });\n return this;\n },\n\n postRender() {\n const elTo = this.getConfig().appendTo;\n\n if (elTo) {\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\n el.appendChild(this.render());\n }\n },\n\n /**\n *\n * Get Traits viewer\n * @private\n */\n getTraitsViewer() {\n return TraitsViewer;\n },\n\n /**\n * Add new trait type\n * @param {string} name Type name\n * @param {Object} methods Object representing the trait\n */\n addType(name, trait) {\n var itemView = TraitsViewer.itemView;\n TraitsViewer.itemsView[name] = itemView.extend(trait);\n },\n\n /**\n * Get trait type\n * @param {string} name Type name\n * @return {Object}\n */\n getType(name) {\n return TraitsViewer.itemsView[name];\n },\n\n render() {\n return TraitsViewer.render().el;\n },\n\n destroy() {\n TraitsViewer.remove();\n [c, TraitsViewer].forEach(i => (i = {}));\n }\n };\n};\n","export default {\n // Default assets\n // eg. [\n // 'https://...image1.png',\n // 'https://...image2.png',\n // {type: 'image', src: 'https://...image3.png', someOtherCustomProp: 1},\n // ..\n // ]\n assets: [],\n\n // Content to add where there is no assets to show\n // eg. 'No assets here, drag to upload'\n noAssets: '',\n\n // Style prefix\n stylePrefix: 'am-',\n\n // Upload endpoint, set `false` to disable upload\n // upload: 'https://endpoint/upload/assets',\n // upload: false,\n upload: 0,\n\n // The name used in POST to pass uploaded files\n uploadName: 'files',\n\n // Custom headers to pass with the upload request\n headers: {},\n\n // Custom parameters to pass with the upload request, eg. csrf token\n params: {},\n\n // The credentials setting for the upload request, eg. 'include', 'omit'\n credentials: 'include',\n\n // Allow uploading multiple files per request.\n // If disabled filename will not have '[]' appended\n multiUpload: true,\n\n // If true, tries to add automatically uploaded assets.\n // To make it work the server should respond with a JSON containing assets\n // in a data key, eg:\n // {\n // data: [\n // 'https://.../image.png',\n // ...\n // {src: 'https://.../image2.png'},\n // ...\n // ]\n // }\n autoAdd: 1,\n\n // To upload your assets, the module uses Fetch API, with this option you\n // overwrite it with something else.\n // It should return a Promise\n // @example\n // customFetch: (url, options) => axios(url, { data: options.body }),\n customFetch: '',\n\n // Custom uploadFile function.\n // Differently from the `customFetch` option, this gives a total control\n // over the uploading process, but you also have to emit all `asset:upload:*` events\n // by yourself (if you need to use them somewhere)\n // @example\n // uploadFile: (e) => {\n // var files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\n // // ...send somewhere\n // }\n uploadFile: '',\n\n // In the absence of 'uploadFile' or 'upload' assets will be embedded as Base64\n embedAsBase64: 1,\n\n // Handle the image url submit from the built-in 'Add image' form\n // @example\n // handleAdd: (textFromInput) => {\n // // some check...\n // editor.AssetManager.add(textFromInput);\n // }\n handleAdd: '',\n\n // Enable an upload dropzone on the entire editor (not document) when dragging\n // files over it\n // If active the dropzone disable/hide the upload dropzone in asset modal,\n // otherwise you will get double drops (#507)\n dropzone: 0,\n\n // Open the asset manager once files are been dropped via the dropzone\n openAssetsOnDrop: 1,\n\n // Any dropzone content to append inside dropzone element\n dropzoneContent: '',\n\n //method called before upload, on return false upload is canceled.\n // @example\n // beforeUpload: (files) => {\n // // logic...\n // var stopUpload = true;\n // if(stopUpload) return false;\n // }\n beforeUpload: null,\n\n // Toggles visiblity of assets url input\n showUrlInput: true\n};\n","import Backbone from 'backbone';\n\nexport default Backbone.Model.extend({\n idAttribute: 'src',\n\n defaults: {\n type: '',\n src: ''\n },\n\n /**\n * Get filename of the asset\n * @return {string}\n * @private\n * */\n getFilename() {\n return this.get('src')\n .split('/')\n .pop();\n },\n\n /**\n * Get extension of the asset\n * @return {string}\n * @private\n * */\n getExtension() {\n return this.getFilename()\n .split('.')\n .pop();\n }\n});\n","import Asset from './Asset';\n\nexport default Asset.extend({\n defaults: {\n ...Asset.prototype.defaults,\n type: 'image',\n unitDim: 'px',\n height: 0,\n width: 0\n }\n});\n","import { isFunction } from 'underscore';\nimport AssetView from './AssetView';\n\nexport default AssetView.extend({\n events: {\n 'click [data-toggle=asset-remove]': 'onRemove',\n click: 'onClick',\n dblclick: 'onDblClick'\n },\n\n getPreview() {\n const pfx = this.pfx;\n const src = this.model.get('src');\n return `\n
\n
\n `;\n },\n\n getInfo() {\n const pfx = this.pfx;\n const model = this.model;\n let name = model.get('name');\n let width = model.get('width');\n let height = model.get('height');\n let unit = model.get('unitDim');\n let dim = width && height ? `${width}x${height}${unit}` : '';\n name = name || model.getFilename();\n return `\n
${name}
\n
${dim}
\n `;\n },\n\n init(o) {\n const pfx = this.pfx;\n this.className += ` ${pfx}asset-image`;\n },\n\n /**\n * Triggered when the asset is clicked\n * @private\n * */\n onClick() {\n var onClick = this.config.onClick;\n var model = this.model;\n this.collection.trigger('deselectAll');\n this.$el.addClass(this.pfx + 'highlight');\n\n if (isFunction(onClick)) {\n onClick(model);\n } else {\n this.updateTarget(this.collection.target);\n }\n },\n\n /**\n * Triggered when the asset is double clicked\n * @private\n * */\n onDblClick() {\n const { em, model } = this;\n const onDblClick = this.config.onDblClick;\n\n if (isFunction(onDblClick)) {\n onDblClick(model);\n } else {\n this.updateTarget(this.collection.target);\n em && em.get('Modal').close();\n }\n\n var onSelect = this.collection.onSelect;\n isFunction(onSelect) && onSelect(model);\n },\n\n /**\n * Remove asset from collection\n * @private\n * */\n onRemove(e) {\n e.stopImmediatePropagation();\n this.model.collection.remove(this.model);\n }\n});\n","import Backbone from 'backbone';\nimport { clone } from 'underscore';\n\nexport default Backbone.View.extend({\n initialize(o = {}) {\n this.options = o;\n this.collection = o.collection;\n const config = o.config || {};\n this.config = config;\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.em = config.em;\n this.className = this.pfx + 'asset';\n this.listenTo(this.model, 'destroy remove', this.remove);\n this.model.view = this;\n const init = this.init && this.init.bind(this);\n init && init(o);\n },\n\n template() {\n const pfx = this.pfx;\n return `\n
\n ${this.getPreview()}\n
\n
\n ${this.getInfo()}\n
\n
\n ⨯\n
\n `;\n },\n\n /**\n * Update target if exists\n * @param {Model} target\n * @private\n * */\n updateTarget(target) {\n if (target && target.set) {\n target.set('attributes', clone(target.get('attributes')));\n target.set('src', this.model.get('src'));\n }\n },\n\n getPreview() {\n return '';\n },\n\n getInfo() {\n return '';\n },\n\n render() {\n const el = this.el;\n el.innerHTML = this.template(this, this.model);\n el.className = this.className;\n return this;\n }\n});\n","import Backbone from 'backbone';\nimport AssetImage from './AssetImage';\nimport AssetImageView from './../view/AssetImageView';\nimport TypeableCollection from 'domain_abstract/model/TypeableCollection';\n\nexport default Backbone.Collection.extend(TypeableCollection).extend({\n types: [\n {\n id: 'image',\n model: AssetImage,\n view: AssetImageView,\n isType(value) {\n if (typeof value == 'string') {\n return {\n type: 'image',\n src: value\n };\n }\n return value;\n }\n }\n ]\n});\n","import Backbone from 'backbone';\n\nexport default Backbone.View.extend({\n events: {\n submit: 'handleSubmit'\n },\n\n template({ pfx, ppfx, em, ...view }) {\n let form = '';\n if (this.config.showUrlInput) {\n form = `\n
\n
\n \n
\n \n
\n
\n `;\n }\n\n return `\n
\n
\n ${form}\n
\n
\n
\n
\n `;\n },\n\n initialize(o) {\n this.options = o;\n this.config = o.config;\n this.pfx = this.config.stylePrefix || '';\n this.ppfx = this.config.pStylePrefix || '';\n this.em = this.config.em;\n const coll = this.collection;\n this.listenTo(coll, 'reset', this.renderAssets);\n this.listenTo(coll, 'add', this.addToAsset);\n this.listenTo(coll, 'remove', this.removedAsset);\n this.listenTo(coll, 'deselectAll', this.deselectAll);\n },\n\n /**\n * Add new asset to the collection via string\n * @param {Event} e Event object\n * @return {this}\n * @private\n */\n handleSubmit(e) {\n e.preventDefault();\n const input = this.getAddInput();\n const url = input && input.value.trim();\n const handleAdd = this.config.handleAdd;\n\n if (!url) {\n return;\n }\n\n input.value = '';\n this.getAssetsEl().scrollTop = 0;\n\n if (handleAdd) {\n handleAdd.bind(this)(url);\n } else {\n this.options.globalCollection.add(url, { at: 0 });\n }\n },\n\n /**\n * Returns assets element\n * @return {HTMLElement}\n * @private\n */\n getAssetsEl() {\n //if(!this.assets) // Not able to cache as after the rerender it losses the ref\n return this.el.querySelector(`.${this.pfx}assets`);\n },\n\n /**\n * Returns input url element\n * @return {HTMLElement}\n * @private\n */\n getAddInput() {\n if (!this.inputUrl || !this.inputUrl.value)\n this.inputUrl = this.el.querySelector(`.${this.pfx}add-asset input`);\n return this.inputUrl;\n },\n\n /**\n * Triggered when an asset is removed\n * @param {Asset} model Removed asset\n * @private\n */\n removedAsset(model) {\n if (!this.collection.length) {\n this.toggleNoAssets();\n }\n },\n\n /**\n * Add asset to collection\n * @private\n * */\n addToAsset(model) {\n if (this.collection.length == 1) {\n this.toggleNoAssets(1);\n }\n this.addAsset(model);\n },\n\n /**\n * Add new asset to collection\n * @param Object Model\n * @param Object Fragment collection\n * @return Object Object created\n * @private\n * */\n addAsset(model, fragmentEl = null) {\n const fragment = fragmentEl;\n const collection = this.collection;\n const config = this.config;\n const rendered = new model.typeView({\n model,\n collection,\n config\n }).render().el;\n\n if (fragment) {\n fragment.appendChild(rendered);\n } else {\n const assetsEl = this.getAssetsEl();\n if (assetsEl) {\n assetsEl.insertBefore(rendered, assetsEl.firstChild);\n }\n }\n\n return rendered;\n },\n\n /**\n * Checks if to show noAssets\n * @param {Boolean} hide\n * @private\n */\n toggleNoAssets(hide) {\n const assetsEl = this.$el.find(`.${this.pfx}assets`);\n\n if (hide) {\n assetsEl.empty();\n } else {\n const noAssets = this.config.noAssets;\n noAssets && assetsEl.append(noAssets);\n }\n },\n\n /**\n * Deselect all assets\n * @private\n * */\n deselectAll() {\n const pfx = this.pfx;\n this.$el.find(`.${pfx}highlight`).removeClass(`${pfx}highlight`);\n },\n\n renderAssets() {\n const fragment = document.createDocumentFragment();\n const assets = this.$el.find(`.${this.pfx}assets`);\n assets.empty();\n this.toggleNoAssets(this.collection.length);\n this.collection.each(model => this.addAsset(model, fragment));\n assets.append(fragment);\n },\n\n render() {\n const fuRendered = this.options.fu.render().el;\n this.$el.empty();\n this.$el.append(fuRendered).append(this.template(this));\n this.el.className = `${this.ppfx}asset-manager`;\n this.renderAssets();\n this.rendered = 1;\n return this;\n }\n});\n","import { template } from 'underscore';\nimport Backbone from 'backbone';\nimport fetch from 'utils/fetch';\n\nexport default Backbone.View.extend(\n {\n template: template(`\n
\n
title\"><%= title %>
\n \" name=\"file\" accept=\"*/*\" <%= disabled ? 'disabled' : '' %> <%= multiUpload ? 'multiple' : '' %>/>\n
\n
\n `),\n\n events: {},\n\n initialize(opts = {}) {\n this.options = opts;\n const c = opts.config || {};\n this.config = c;\n this.em = this.config.em;\n this.pfx = c.stylePrefix || '';\n this.ppfx = c.pStylePrefix || '';\n this.target = this.options.globalCollection || {};\n this.uploadId = this.pfx + 'uploadFile';\n this.disabled =\n c.disableUpload !== undefined\n ? c.disableUpload\n : !c.upload && !c.embedAsBase64;\n this.multiUpload = c.multiUpload !== undefined ? c.multiUpload : true;\n this.events['change #' + this.uploadId] = 'uploadFile';\n let uploadFile = c.uploadFile;\n\n if (uploadFile) {\n this.uploadFile = uploadFile.bind(this);\n } else if (!c.upload && c.embedAsBase64) {\n this.uploadFile = this.constructor.embedAsBase64;\n }\n\n this.delegateEvents();\n },\n\n /**\n * Triggered before the upload is started\n * @private\n */\n onUploadStart() {\n const em = this.config.em;\n em && em.trigger('asset:upload:start');\n },\n\n /**\n * Triggered after the upload is ended\n * @param {Object|string} res End result\n * @private\n */\n onUploadEnd(res) {\n const { $el, config } = this;\n const em = config.em;\n em && em.trigger('asset:upload:end', res);\n const input = $el.find('input');\n input && input.val('');\n },\n\n /**\n * Triggered on upload error\n * @param {Object} err Error\n * @private\n */\n onUploadError(err) {\n const em = this.config.em;\n console.error(err);\n this.onUploadEnd(err);\n em && em.trigger('asset:upload:error', err);\n },\n\n /**\n * Triggered on upload response\n * @param {string} text Response text\n * @private\n */\n onUploadResponse(text, clb) {\n const em = this.config.em;\n const config = this.config;\n const target = this.target;\n let json;\n try {\n json = typeof text === 'string' ? JSON.parse(text) : text;\n } catch (e) {\n json = text;\n }\n\n em && em.trigger('asset:upload:response', json);\n\n if (config.autoAdd && target) {\n target.add(json.data, { at: 0 });\n }\n\n this.onUploadEnd(text);\n clb && clb(json);\n },\n\n /**\n * Upload files\n * @param {Object} e Event\n * @return {Promise}\n * @private\n * */\n uploadFile(e, clb) {\n const files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\n const { config } = this;\n const { beforeUpload } = config;\n\n const beforeUploadResponse = beforeUpload && beforeUpload(files);\n if (beforeUploadResponse === false) return;\n\n const body = new FormData();\n const { params, customFetch } = config;\n\n for (let param in params) {\n body.append(param, params[param]);\n }\n\n if (this.multiUpload) {\n for (let i = 0; i < files.length; i++) {\n body.append(`${config.uploadName}[]`, files[i]);\n }\n } else if (files.length) {\n body.append(config.uploadName, files[0]);\n }\n\n var target = this.target;\n const url = config.upload;\n const headers = config.headers;\n const reqHead = 'X-Requested-With';\n\n if (typeof headers[reqHead] == 'undefined') {\n headers[reqHead] = 'XMLHttpRequest';\n }\n\n if (url) {\n this.onUploadStart();\n const fetchOpts = {\n method: 'post',\n credentials: config.credentials || 'include',\n headers,\n body\n };\n const fetchResult = customFetch\n ? customFetch(url, fetchOpts)\n : fetch(url, fetchOpts).then(res =>\n ((res.status / 200) | 0) == 1\n ? res.text()\n : res.text().then(text => Promise.reject(text))\n );\n return fetchResult\n .then(text => this.onUploadResponse(text, clb))\n .catch(err => this.onUploadError(err));\n }\n },\n\n /**\n * Make input file droppable\n * @private\n * */\n initDrop() {\n var that = this;\n if (!this.uploadForm) {\n this.uploadForm = this.$el.find('form').get(0);\n if ('draggable' in this.uploadForm) {\n var uploadFile = this.uploadFile;\n this.uploadForm.ondragover = function() {\n this.className = that.pfx + 'hover';\n return false;\n };\n this.uploadForm.ondragleave = function() {\n this.className = '';\n return false;\n };\n this.uploadForm.ondrop = function(e) {\n this.className = '';\n e.preventDefault();\n that.uploadFile(e);\n return;\n };\n }\n }\n },\n\n initDropzone(ev) {\n let addedCls = 0;\n const c = this.config;\n const em = ev.model;\n const edEl = ev.el;\n const editor = em.get('Editor');\n const container = em.get('Config').el;\n const frameEl = em.get('Canvas').getBody();\n const ppfx = this.ppfx;\n const updatedCls = `${ppfx}dropzone-active`;\n const dropzoneCls = `${ppfx}dropzone`;\n const cleanEditorElCls = () => {\n edEl.className = edEl.className.replace(updatedCls, '').trim();\n addedCls = 0;\n };\n const onDragOver = () => {\n if (!addedCls) {\n edEl.className += ` ${updatedCls}`;\n addedCls = 1;\n }\n return false;\n };\n const onDragLeave = () => {\n cleanEditorElCls();\n return false;\n };\n const onDrop = e => {\n cleanEditorElCls();\n e.preventDefault();\n e.stopPropagation();\n this.uploadFile(e);\n\n if (c.openAssetsOnDrop && editor) {\n const target = editor.getSelected();\n editor.runCommand('open-assets', {\n target,\n onSelect() {\n editor.Modal.close();\n editor.AssetManager.setTarget(null);\n }\n });\n }\n\n return false;\n };\n\n ev.$el.append(`
${c.dropzoneContent}
`);\n cleanEditorElCls();\n\n if ('draggable' in edEl) {\n [edEl, frameEl].forEach(item => {\n item.ondragover = onDragOver;\n item.ondragleave = onDragLeave;\n item.ondrop = onDrop;\n });\n }\n },\n\n render() {\n const { $el, pfx, em } = this;\n $el.html(\n this.template({\n title: em && em.t('assetManager.uploadTitle'),\n uploadId: this.uploadId,\n disabled: this.disabled,\n multiUpload: this.multiUpload,\n pfx\n })\n );\n this.initDrop();\n $el.attr('class', pfx + 'file-uploader');\n return this;\n }\n },\n {\n embedAsBase64: function(e, clb) {\n // List files dropped\n const files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\n const response = { data: [] };\n\n // Unlikely, widely supported now\n if (!FileReader) {\n this.onUploadError(\n new Error('Unsupported platform, FileReader is not defined')\n );\n return;\n }\n\n const promises = [];\n const mimeTypeMatcher = /^(.+)\\/(.+)$/;\n\n for (const file of files) {\n // For each file a reader (to read the base64 URL)\n // and a promise (to track and merge results and errors)\n const promise = new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.addEventListener('load', event => {\n let type;\n const name = file.name;\n\n // Try to find the MIME type of the file.\n const match = mimeTypeMatcher.exec(file.type);\n if (match) {\n type = match[1]; // The first part in the MIME, \"image\" in image/png\n } else {\n type = file.type;\n }\n\n /*\n // Show local video files, http://jsfiddle.net/dsbonev/cCCZ2/embedded/result,js,html,css/\n var URL = window.URL || window.webkitURL\n var file = this.files[0]\n var type = file.type\n var videoNode = document.createElement('video');\n var canPlay = videoNode.canPlayType(type) // can use also for 'audio' types\n if (canPlay === '') canPlay = 'no'\n var message = 'Can play type \"' + type + '\": ' + canPlay\n var isError = canPlay === 'no'\n displayMessage(message, isError)\n\n if (isError) {\n return\n }\n\n var fileURL = URL.createObjectURL(file)\n videoNode.src = fileURL\n */\n\n // If it's an image, try to find its size\n if (type === 'image') {\n const data = {\n src: reader.result,\n name,\n type,\n height: 0,\n width: 0\n };\n\n const image = new Image();\n image.addEventListener('error', error => {\n reject(error);\n });\n image.addEventListener('load', () => {\n data.height = image.height;\n data.width = image.width;\n resolve(data);\n });\n image.src = data.src;\n } else if (type) {\n // Not an image, but has a type\n resolve({\n src: reader.result,\n name,\n type\n });\n } else {\n // No type found, resolve with the URL only\n resolve(reader.result);\n }\n });\n reader.addEventListener('error', error => {\n reject(error);\n });\n reader.addEventListener('abort', error => {\n reject('Aborted');\n });\n\n reader.readAsDataURL(file);\n });\n\n promises.push(promise);\n }\n\n Promise.all(promises).then(\n data => {\n response.data = data;\n this.onUploadResponse(response, clb);\n },\n error => {\n this.onUploadError(error);\n }\n );\n }\n }\n);\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/asset_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * assetManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const assetManager = editor.AssetManager;\n * ```\n *\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [getAllVisible](#getallvisible)\n * * [remove](#remove)\n * * [store](#store)\n * * [load](#load)\n * * [getContainer](#getcontainer)\n * * [getAssetsEl](#getassetsel)\n * * [addType](#addtype)\n * * [getType](#gettype)\n * * [getTypes](#gettypes)\n *\n * @module AssetManager\n */\n\nimport defaults from './config/config';\nimport Assets from './model/Assets';\nimport AssetsView from './view/AssetsView';\nimport FileUpload from './view/FileUploader';\n\nexport default () => {\n let c = {};\n let assets, am, fu;\n\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'AssetManager',\n\n /**\n * Mandatory for the storage manager\n * @type {String}\n * @private\n */\n storageKey: 'assets',\n\n getConfig() {\n return c;\n },\n\n /**\n * Initialize module\n * @param {Object} config Configurations\n * @private\n */\n init(config) {\n c = config || {};\n\n for (let name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n const ppfx = c.pStylePrefix;\n const em = c.em;\n\n if (ppfx) {\n c.stylePrefix = ppfx + c.stylePrefix;\n }\n\n // Global assets collection\n assets = new Assets([]);\n const obj = {\n // Collection visible in asset manager\n collection: new Assets([]),\n globalCollection: assets,\n config: c\n };\n fu = new FileUpload(obj);\n obj.fu = fu;\n am = new AssetsView(obj);\n\n // Setup the sync between the global and public collections\n assets.listenTo(assets, 'add', model => {\n this.getAllVisible().add(model);\n em && em.trigger('asset:add', model);\n });\n\n assets.listenTo(assets, 'remove', model => {\n this.getAllVisible().remove(model);\n em && em.trigger('asset:remove', model);\n });\n\n return this;\n },\n\n /**\n * Add new asset/s to the collection. URLs are supposed to be unique\n * @param {string|Object|Array|Array} asset URL strings or an objects representing the resource.\n * @param {Object} [opts] Options\n * @return {Model}\n * @example\n * // In case of strings, would be interpreted as images\n * assetManager.add('http://img.jpg');\n * assetManager.add(['http://img.jpg', './path/to/img.png']);\n *\n * // Using objects you could indicate the type and other meta informations\n * assetManager.add({\n * \tsrc: 'http://img.jpg',\n * \t//type: 'image',\t//image is default\n * \theight: 300,\n *\twidth: 200,\n * });\n * assetManager.add([{\n * \tsrc: 'http://img.jpg',\n * },{\n * \tsrc: './path/to/img.png',\n * }]);\n */\n add(asset, opts = {}) {\n // Put the model at the beginning\n if (typeof opts.at == 'undefined') {\n opts.at = 0;\n }\n\n return assets.add(asset, opts);\n },\n\n /**\n * Returns the asset by URL\n * @param {string} src URL of the asset\n * @return {Object} Object representing the asset\n * @example\n * var asset = assetManager.get('http://img.jpg');\n */\n get(src) {\n return assets.where({ src })[0];\n },\n\n /**\n * Return the global collection, containing all the assets\n * @return {Collection}\n */\n getAll() {\n return assets;\n },\n\n /**\n * Return the visible collection, which contains assets actually rendered\n * @return {Collection}\n */\n getAllVisible() {\n return am.collection;\n },\n\n /**\n * Remove the asset by its URL\n * @param {string} src URL of the asset\n * @return {this}\n * @example\n * assetManager.remove('http://img.jpg');\n */\n remove(src) {\n var asset = this.get(src);\n this.getAll().remove(asset);\n return this;\n },\n\n /**\n * Store assets data to the selected storage\n * @param {Boolean} noStore If true, won't store\n * @return {Object} Data to store\n * @example\n * var assets = assetManager.store();\n */\n store(noStore) {\n var obj = {};\n var assets = JSON.stringify(this.getAll().toJSON());\n obj[this.storageKey] = assets;\n if (!noStore && c.stm) c.stm.store(obj);\n return obj;\n },\n\n /**\n * Load data from the passed object.\n * The fetched data will be added to the collection.\n * @param {Object} data Object of data to load\n * @return {Object} Loaded assets\n * @example\n * var assets = assetManager.load({\n * \tassets: [...]\n * })\n *\n */\n load(data = {}) {\n const name = this.storageKey;\n let assets = data[name] || [];\n\n if (typeof assets == 'string') {\n try {\n assets = JSON.parse(data[name]);\n } catch (err) {}\n }\n\n if (assets && assets.length) {\n this.getAll().reset(assets);\n }\n\n return assets;\n },\n\n /**\n * Return the Asset Manager Container\n * @return {HTMLElement}\n */\n getContainer() {\n return am.el;\n },\n\n /**\n * Get assets element container\n * @return {HTMLElement}\n */\n getAssetsEl() {\n return am.el.querySelector('[data-el=assets]');\n },\n\n /**\n * Render assets\n * @param {array} assets Assets to render, without the argument will render\n * all global assets\n * @return {HTMLElement}\n * @example\n * // Render all assets\n * assetManager.render();\n *\n * // Render some of the assets\n * const assets = assetManager.getAll();\n * assetManager.render(assets.filter(\n * asset => asset.get('category') == 'cats'\n * ));\n */\n render(assets) {\n const toRender = assets || this.getAll().models;\n\n if (!am.rendered) {\n am.render();\n }\n\n am.collection.reset(toRender);\n return this.getContainer();\n },\n\n /**\n * Add new type. If you want to get more about type definition we suggest to read the [module's page](/modules/Assets.html)\n * @param {string} id Type ID\n * @param {Object} definition Definition of the type. Each definition contains\n * `model` (business logic), `view` (presentation logic)\n * and `isType` function which recognize the type of the\n * passed entity\n * @example\n * assetManager.addType('my-type', {\n * model: {},\n * view: {},\n * isType: (value) => {},\n * })\n */\n addType(id, definition) {\n this.getAll().addType(id, definition);\n },\n\n /**\n * Get type\n * @param {string} id Type ID\n * @return {Object} Type definition\n */\n getType(id) {\n return this.getAll().getType(id);\n },\n\n /**\n * Get types\n * @return {Array}\n */\n getTypes() {\n return this.getAll().getTypes();\n },\n\n //-------\n\n AssetsView() {\n return am;\n },\n\n FileUploader() {\n return fu;\n },\n\n onLoad() {\n this.getAll().reset(c.assets);\n },\n\n postRender(editorView) {\n c.dropzone && fu.initDropzone(editorView);\n },\n\n /**\n * Set new target\n * @param\t{Object}\tm Model\n * @private\n * */\n setTarget(m) {\n am.collection.target = m;\n },\n\n /**\n * Set callback after asset was selected\n * @param\t{Object}\tf Callback function\n * @private\n * */\n onSelect(f) {\n am.collection.onSelect = f;\n },\n\n /**\n * Set callback to fire when the asset is clicked\n * @param {function} func\n * @private\n */\n onClick(func) {\n c.onClick = func;\n },\n\n /**\n * Set callback to fire when the asset is double clicked\n * @param {function} func\n * @private\n */\n onDblClick(func) {\n c.onDblClick = func;\n },\n\n destroy() {\n assets.reset();\n fu.collection.reset();\n fu.remove();\n am.remove();\n [assets, am, fu].forEach(i => (i = null));\n c = {};\n }\n };\n};\n","export default {\n // Specify the element to use as a container, string (query) or HTMLElement\n // With the empty value, nothing will be rendered\n appendTo: '',\n\n // Append blocks to canvas on click\n appendOnClick: 0,\n\n blocks: []\n};\n","import Backbone from 'backbone';\n\nexport default Backbone.Model.extend({\n defaults: {\n // If true, triggers an 'active' event on dropped component\n activate: 0,\n // If true, the dropped component will be selected\n select: 0,\n // If true, all IDs of dropped component and its style will be changed\n resetId: 0,\n // Block label\n label: '',\n // Disable the drag of the block\n disable: 0,\n // HTML string for the media of the block, eg. SVG icon, image, etc.\n media: '',\n content: '',\n category: '',\n attributes: {}\n }\n});\n","import Backbone from 'backbone';\nimport Block from './Block';\n\nexport default Backbone.Collection.extend({\n model: Block\n});\n","import Backbone from 'backbone';\n\nexport default Backbone.Model.extend({\n defaults: {\n id: '',\n label: '',\n open: true,\n attributes: {}\n }\n});\n","import Backbone from 'backbone';\nimport Category from './Category';\n\nexport default Backbone.Collection.extend({\n model: Category\n});\n","import Backbone from 'backbone';\nimport { isObject } from 'underscore';\nimport { on, off, hasDnd } from 'utils/mixins';\n\nexport default Backbone.View.extend({\n events: {\n click: 'handleClick',\n mousedown: 'startDrag',\n dragstart: 'handleDragStart',\n drag: 'handleDrag',\n dragend: 'handleDragEnd'\n },\n\n initialize(o, config = {}) {\n const { model } = this;\n this.em = config.em;\n this.config = config;\n this.endDrag = this.endDrag.bind(this);\n this.ppfx = config.pStylePrefix || '';\n this.listenTo(model, 'destroy remove', this.remove);\n this.listenTo(model, 'change', this.render);\n },\n\n handleClick() {\n const { config, model, em } = this;\n if (!config.appendOnClick) return;\n const sorter = config.getSorter();\n const content = model.get('content');\n const selected = em.getSelected();\n sorter.setDropContent(content);\n let target, valid;\n\n // If there is a selected component, try first to append\n // the block inside, otherwise, try to place it as a next sibling\n if (selected) {\n valid = sorter.validTarget(selected.getEl(), content);\n\n if (valid.valid) {\n target = selected;\n } else {\n const parent = selected.parent();\n valid = sorter.validTarget(parent.getEl(), content);\n if (valid.valid) target = parent;\n }\n }\n\n // If no target found yet, try to append the block to the wrapper\n if (!target) {\n const wrapper = em.getWrapper();\n valid = sorter.validTarget(wrapper.getEl(), content);\n if (valid.valid) target = wrapper;\n }\n\n const result = target && target.append(content)[0];\n result && em.setSelected(result, { scroll: 1 });\n },\n\n /**\n * Start block dragging\n * @private\n */\n startDrag(e) {\n const { config, em, model } = this;\n const disable = model.get('disable');\n //Right or middel click\n if (e.button !== 0 || !config.getSorter || this.el.draggable || disable)\n return;\n em.refreshCanvas();\n const sorter = config.getSorter();\n sorter.setDragHelper(this.el, e);\n sorter.setDropContent(this.model.get('content'));\n sorter.startSort(this.el);\n on(document, 'mouseup', this.endDrag);\n },\n\n handleDragStart(ev) {\n const { em, model } = this;\n const content = model.get('content');\n const isObj = isObject(content);\n const data = isObj ? JSON.stringify(content) : content;\n em.set('dragResult');\n\n // Note: data are not available on dragenter for security reason,\n // we have to use dragContent as we need it for the Sorter context\n // IE11 supports only 'text' data type\n ev.dataTransfer.setData('text', data);\n em.set('dragContent', content);\n em.trigger('block:drag:start', model, ev);\n },\n\n handleDrag(ev) {\n this.em.trigger('block:drag', this.model, ev);\n },\n\n handleDragEnd() {\n const { em, model } = this;\n const result = em.get('dragResult');\n\n if (result) {\n const oldKey = 'activeOnRender';\n const oldActive = result.get && result.get(oldKey);\n\n if (model.get('activate') || oldActive) {\n result.trigger('active');\n result.unset(oldKey);\n }\n\n if (model.get('select')) {\n em.setSelected(result);\n }\n\n if (model.get('resetId')) {\n result.onAll(model => model.resetId());\n }\n }\n\n em.set({\n dragResult: null,\n dragContent: null\n });\n\n em.trigger('block:drag:stop', result, model);\n },\n\n /**\n * Drop block\n * @private\n */\n endDrag(e) {\n off(document, 'mouseup', this.endDrag);\n const sorter = this.config.getSorter();\n\n // After dropping the block in the canvas the mouseup event is not yet\n // triggerd on 'this.doc' and so clicking outside, the sorter, tries to move\n // things (throws false positives). As this method just need to drop away\n // the block helper I use the trick of 'moved = 0' to void those errors.\n sorter.moved = 0;\n sorter.endMove();\n },\n\n render() {\n const { em, el, $el, ppfx, model } = this;\n const disable = model.get('disable');\n const attr = model.get('attributes') || {};\n const cls = attr.class || '';\n const className = `${ppfx}block`;\n const label =\n (em && em.t(`blockManager.labels.${model.id}`)) || model.get('label');\n const render = model.get('render');\n const media = model.get('media');\n const clsAdd = disable ? `${className}--disable` : `${ppfx}four-color-h`;\n $el.attr(attr);\n el.className = `${cls} ${className} ${ppfx}one-bg ${clsAdd}`.trim();\n el.innerHTML = `\n ${media ? `
${media}
` : ''}\n
${label}
\n `;\n el.title = el.textContent.trim();\n el.setAttribute('draggable', hasDnd(em) && !disable ? true : false);\n const result = render && render({ el, model, className, prefix: ppfx });\n if (result) el.innerHTML = result;\n return this;\n }\n});\n","import { template } from 'underscore';\nimport Backbone from 'backbone';\n\nexport default Backbone.View.extend({\n template: template(`\n
title\">\n caret-icon\">\n <%= label %>\n
\n
blocks-c\">
\n `),\n\n events: {},\n\n attributes() {\n return this.model.get('attributes');\n },\n\n initialize(o = {}, config = {}) {\n this.config = config;\n const pfx = config.pStylePrefix || '';\n this.em = config.em;\n this.pfx = pfx;\n this.caretR = 'fa fa-caret-right';\n this.caretD = 'fa fa-caret-down';\n this.iconClass = `${pfx}caret-icon`;\n this.activeClass = `${pfx}open`;\n this.className = `${pfx}block-category`;\n this.events[`click .${pfx}title`] = 'toggle';\n this.listenTo(this.model, 'change:open', this.updateVisibility);\n this.delegateEvents();\n this.model.view = this;\n },\n\n updateVisibility() {\n if (this.model.get('open')) this.open();\n else this.close();\n },\n\n open() {\n this.$el.addClass(this.activeClass);\n this.getIconEl().className = `${this.iconClass} ${this.caretD}`;\n this.getBlocksEl().style.display = '';\n },\n\n close() {\n this.$el.removeClass(this.activeClass);\n this.getIconEl().className = `${this.iconClass} ${this.caretR}`;\n this.getBlocksEl().style.display = 'none';\n },\n\n toggle() {\n var model = this.model;\n model.set('open', !model.get('open'));\n },\n\n getIconEl() {\n if (!this.iconEl) {\n this.iconEl = this.el.querySelector('.' + this.iconClass);\n }\n\n return this.iconEl;\n },\n\n getBlocksEl() {\n if (!this.blocksEl) {\n this.blocksEl = this.el.querySelector('.' + this.pfx + 'blocks-c');\n }\n\n return this.blocksEl;\n },\n\n append(el) {\n this.getBlocksEl().appendChild(el);\n },\n\n render() {\n const { em, el, $el, model } = this;\n const label =\n em.t(`blockManager.categories.${model.id}`) || model.get('label');\n el.innerHTML = this.template({\n pfx: this.pfx,\n label\n });\n $el.addClass(this.className);\n $el.css({ order: model.get('order') });\n this.updateVisibility();\n\n return this;\n }\n});\n","import Backbone from 'backbone';\nimport { isString, isObject, bindAll } from 'underscore';\nimport BlockView from './BlockView';\nimport CategoryView from './CategoryView';\n\nexport default Backbone.View.extend({\n initialize(opts, config) {\n bindAll(this, 'getSorter', 'onDrag', 'onDrop');\n this.config = config || {};\n this.categories = opts.categories || '';\n this.renderedCategories = [];\n var ppfx = this.config.pStylePrefix || '';\n this.ppfx = ppfx;\n this.noCatClass = `${ppfx}blocks-no-cat`;\n this.blockContClass = `${ppfx}blocks-c`;\n this.catsClass = `${ppfx}block-categories`;\n const coll = this.collection;\n this.listenTo(coll, 'add', this.addTo);\n this.listenTo(coll, 'reset', this.render);\n this.em = this.config.em;\n this.tac = 'test-tac';\n this.grabbingCls = this.ppfx + 'grabbing';\n\n if (this.em) {\n this.config.getSorter = this.getSorter;\n this.canvas = this.em.get('Canvas');\n }\n },\n\n updateConfig(opts = {}) {\n this.config = {\n ...this.config,\n ...opts\n };\n },\n\n /**\n * Get sorter\n * @private\n */\n getSorter() {\n if (!this.em) return;\n if (!this.sorter) {\n var utils = this.em.get('Utils');\n var canvas = this.canvas;\n this.sorter = new utils.Sorter({\n container: canvas.getBody(),\n placer: canvas.getPlacerEl(),\n containerSel: '*',\n itemSel: '*',\n pfx: this.ppfx,\n onStart: this.onDrag,\n onEndMove: this.onDrop,\n onMove: this.onMove,\n document: canvas.getFrameEl().contentDocument,\n direction: 'a',\n wmargin: 1,\n nested: 1,\n em: this.em,\n canvasRelative: 1\n });\n }\n return this.sorter;\n },\n\n /**\n * Callback when block is on drag\n * @private\n */\n onDrag(e) {\n this.em.stopDefault();\n this.em.trigger('block:drag:start', e);\n },\n\n onMove(e) {\n this.em.trigger('block:drag:move', e);\n },\n\n /**\n * Callback when block is dropped\n * @private\n */\n onDrop(model) {\n const { em } = this;\n em.runDefault();\n\n if (model && model.get) {\n const oldActive = 'activeOnRender';\n\n if (model.get(oldActive)) {\n model.trigger('active');\n model.unset(oldActive);\n }\n\n em.trigger('block:drag:stop', model);\n }\n },\n\n /**\n * Add new model to the collection\n * @param {Model} model\n * @private\n * */\n addTo(model) {\n this.add(model);\n },\n\n /**\n * Render new model inside the view\n * @param {Model} model\n * @param {Object} fragment Fragment collection\n * @private\n * */\n add(model, fragment) {\n const { config } = this;\n var frag = fragment || null;\n var view = new BlockView(\n {\n model,\n attributes: model.get('attributes')\n },\n config\n );\n var rendered = view.render().el;\n var category = model.get('category');\n\n // Check for categories\n if (category && this.categories && !config.ignoreCategories) {\n if (isString(category)) {\n category = {\n id: category,\n label: category\n };\n } else if (isObject(category) && !category.id) {\n category.id = category.label;\n }\n\n var catModel = this.categories.add(category);\n var catId = catModel.get('id');\n var catView = this.renderedCategories[catId];\n var categories = this.getCategoriesEl();\n model.set('category', catModel, { silent: true });\n\n if (!catView && categories) {\n catView = new CategoryView(\n {\n model: catModel\n },\n this.config\n ).render();\n this.renderedCategories[catId] = catView;\n categories.appendChild(catView.el);\n }\n\n catView && catView.append(rendered);\n return;\n }\n\n if (frag) frag.appendChild(rendered);\n else this.append(rendered);\n },\n\n getCategoriesEl() {\n if (!this.catsEl) {\n this.catsEl = this.el.querySelector(`.${this.catsClass}`);\n }\n\n return this.catsEl;\n },\n\n getBlocksEl() {\n if (!this.blocksEl) {\n this.blocksEl = this.el.querySelector(\n `.${this.noCatClass} .${this.blockContClass}`\n );\n }\n\n return this.blocksEl;\n },\n\n append(el) {\n let blocks = this.getBlocksEl();\n blocks && blocks.appendChild(el);\n },\n\n render() {\n const ppfx = this.ppfx;\n const frag = document.createDocumentFragment();\n this.catsEl = null;\n this.blocksEl = null;\n this.renderedCategories = [];\n this.el.innerHTML = `\n
\n
\n
\n
\n `;\n\n this.collection.each(model => this.add(model, frag));\n this.append(frag);\n const cls = `${this.blockContClass}s ${ppfx}one-bg ${ppfx}two-color`;\n this.$el.addClass(cls);\n this.rendered = true;\n return this;\n }\n});\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/block_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * blockManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const blockManager = editor.BlockManager;\n * ```\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [getAllVisible](#getallvisible)\n * * [remove](#remove)\n * * [getConfig](#getconfig)\n * * [getCategories](#getcategories)\n * * [getContainer](#getcontainer)\n * * [render](#render)\n *\n * @module BlockManager\n */\nimport { isElement } from 'underscore';\nimport defaults from './config/config';\nimport Blocks from './model/Blocks';\nimport BlockCategories from './model/Categories';\nimport BlocksView from './view/BlocksView';\n\nexport default () => {\n var c = {};\n var blocks, blocksVisible, blocksView;\n var categories = [];\n\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'BlockManager',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @return {this}\n * @private\n */\n init(config) {\n c = config || {};\n const em = c.em;\n\n for (let name in defaults) {\n if (!(name in c)) {\n c[name] = defaults[name];\n }\n }\n\n // Global blocks collection\n blocks = new Blocks([]);\n blocksVisible = new Blocks([]);\n categories = new BlockCategories();\n\n // Setup the sync between the global and public collections\n blocks.listenTo(blocks, 'add', model => {\n blocksVisible.add(model);\n em && em.trigger('block:add', model);\n });\n\n blocks.listenTo(blocks, 'remove', model => {\n blocksVisible.remove(model);\n em && em.trigger('block:remove', model);\n });\n\n blocks.listenTo(blocks, 'reset', coll => {\n blocksVisible.reset(coll.models);\n });\n\n return this;\n },\n\n /**\n * Get configuration object\n * @return {Object}\n */\n getConfig() {\n return c;\n },\n\n /**\n * Load default blocks if the collection is empty\n */\n onLoad() {\n const blocks = this.getAll();\n !blocks.length && blocks.reset(c.blocks);\n },\n\n /**\n * Executed once the main editor instance is rendered\n * @private\n */\n postRender() {\n const collection = blocksVisible;\n blocksView = new BlocksView({ collection, categories }, c);\n const elTo = this.getConfig().appendTo;\n\n if (elTo) {\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\n el.appendChild(this.render(blocksVisible.models));\n }\n },\n\n /**\n * Add new block to the collection.\n * @param {string} id Block id\n * @param {Object} opts Options\n * @param {string} opts.label Name of the block\n * @param {string} opts.content HTML content\n * @param {string|Object} opts.category Group the block inside a catgegory.\n * You should pass objects with id property, eg:\n * {id: 'some-uid', label: 'My category'}\n * The string will be converted in:\n * 'someid' => {id: 'someid', label: 'someid'}\n * @param {Object} [opts.attributes={}] Block attributes\n * @return {Block} Added block\n * @example\n * blockManager.add('h1-block', {\n * label: 'Heading',\n * content: '

Put your title here

',\n * category: 'Basic',\n * attributes: {\n * title: 'Insert h1 block'\n * }\n * });\n */\n add(id, opts) {\n var obj = opts || {};\n obj.id = id;\n return blocks.add(obj);\n },\n\n /**\n * Return the block by id\n * @param {string} id Block id\n * @example\n * const block = blockManager.get('h1-block');\n * console.log(JSON.stringify(block));\n * // {label: 'Heading', content: '

Put your ...', ...}\n */\n get(id) {\n return blocks.get(id);\n },\n\n /**\n * Return all blocks\n * @return {Collection}\n * @example\n * const blocks = blockManager.getAll();\n * console.log(JSON.stringify(blocks));\n * // [{label: 'Heading', content: '

Put your ...'}, ...]\n */\n getAll() {\n return blocks;\n },\n\n /**\n * Return the visible collection, which containes blocks actually rendered\n * @return {Collection}\n */\n getAllVisible() {\n return blocksVisible;\n },\n\n /**\n * Remove a block by id\n * @param {string} id Block id\n * @return {Block} Removed block\n * @example\n * // Id of the block which need to be removed\n * const id = 'button';\n * blockManager.remove(id);\n */\n remove(id) {\n return blocks.remove(id);\n },\n\n /**\n * Get all available categories.\n * It's possible to add categories only within blocks via 'add()' method\n * @return {Array|Collection}\n */\n getCategories() {\n return categories;\n },\n\n /**\n * Return the Blocks container element\n * @return {HTMLElement}\n */\n getContainer() {\n return blocksView.el;\n },\n\n /**\n * Render blocks\n * @param {Array} blocks Blocks to render, without the argument will render all global blocks\n * @param {Object} [opts={}] Options\n * @param {Boolean} [opts.external] Render blocks in a new container (HTMLElement will be returned)\n * @param {Boolean} [opts.ignoreCategories] Render blocks without categories\n * @return {HTMLElement} Rendered element\n * @example\n * // Render all blocks (inside the global collection)\n * blockManager.render();\n *\n * // Render new set of blocks\n * const blocks = blockManager.getAll();\n * const filtered = blocks.filter(block => block.get('category') == 'sections')\n *\n * blockManager.render(filtered);\n * // Or a new set from an array\n * blockManager.render([\n * {label: 'Label text', content: '
Content
'}\n * ]);\n *\n * // Back to blocks from the global collection\n * blockManager.render();\n *\n * // You can also render your blocks outside of the main block container\n * const newBlocksEl = blockManager.render(filtered, { external: true });\n * document.getElementById('some-id').appendChild(newBlocksEl);\n */\n render(blocks, opts = {}) {\n const toRender = blocks || this.getAll().models;\n\n if (opts.external) {\n const collection = new Blocks(toRender);\n return new BlocksView(\n { collection, categories },\n { ...c, ...opts }\n ).render().el;\n }\n\n if (blocksView) {\n blocksView.updateConfig(opts);\n blocksView.collection.reset(toRender);\n\n if (!blocksView.rendered) {\n blocksView.render();\n blocksView.rendered = 1;\n }\n }\n\n return this.getContainer();\n },\n\n destroy() {\n blocks.reset();\n blocks.stopListening();\n blocksVisible.reset();\n categories.reset();\n blocksView && blocksView.remove();\n [blocks, blocksVisible, categories, blocksView].forEach(i => (i = null));\n c = {};\n }\n };\n};\n","const swv = 'sw-visibility';\nconst expt = 'export-template';\nconst osm = 'open-sm';\nconst otm = 'open-tm';\nconst ola = 'open-layers';\nconst obl = 'open-blocks';\nconst ful = 'fullscreen';\nconst prv = 'preview';\n\nexport default {\n stylePrefix: 'pn-',\n\n // Default panels fa-sliders for features\n defaults: [\n {\n id: 'commands',\n buttons: [{}]\n },\n {\n id: 'options',\n buttons: [\n {\n active: true,\n id: swv,\n className: 'fa fa-square-o',\n command: swv,\n context: swv,\n attributes: { title: 'View components' }\n },\n {\n id: prv,\n className: 'fa fa-eye',\n command: prv,\n context: prv,\n attributes: { title: 'Preview' }\n },\n {\n id: ful,\n className: 'fa fa-arrows-alt',\n command: ful,\n context: ful,\n attributes: { title: 'Fullscreen' }\n },\n {\n id: expt,\n className: 'fa fa-code',\n command: expt,\n attributes: { title: 'View code' }\n }\n ]\n },\n {\n id: 'views',\n buttons: [\n {\n id: osm,\n className: 'fa fa-paint-brush',\n command: osm,\n active: true,\n togglable: 0,\n attributes: { title: 'Open Style Manager' }\n },\n {\n id: otm,\n className: 'fa fa-cog',\n command: otm,\n togglable: 0,\n attributes: { title: 'Settings' }\n },\n {\n id: ola,\n className: 'fa fa-bars',\n command: ola,\n togglable: 0,\n attributes: { title: 'Open Layer Manager' }\n },\n {\n id: obl,\n className: 'fa fa-th-large',\n command: obl,\n togglable: 0,\n attributes: { title: 'Open Blocks' }\n }\n ]\n }\n ],\n\n // Editor model\n em: null,\n\n // Delay before show children buttons (in milliseconds)\n delayBtnsShow: 300\n};\n","import Backbone from 'backbone';\nimport Buttons from './Buttons';\n\nexport default Backbone.Model.extend({\n defaults: {\n id: '',\n content: '',\n visible: true,\n buttons: [],\n attributes: {}\n },\n\n initialize(options) {\n this.btn = this.get('buttons') || [];\n this.buttons = new Buttons(this.btn);\n this.set('buttons', this.buttons);\n }\n});\n","import Backbone from 'backbone';\nimport Panel from './Panel';\n\nexport default Backbone.Collection.extend({\n model: Panel\n});\n","import Backbone from 'backbone';\nimport { isString, isObject, isFunction } from 'underscore';\n\nconst $ = Backbone.$;\n\nexport default Backbone.View.extend({\n tagName() {\n return this.model.get('tagName');\n },\n\n events: {\n click: 'clicked'\n },\n\n initialize(o) {\n const { model } = this;\n const cls = model.get('className');\n const { command, listen } = model.attributes;\n const config = o.config || {};\n const { em } = config;\n this.config = config;\n this.em = em;\n const pfx = this.config.stylePrefix || '';\n const ppfx = this.config.pStylePrefix || '';\n this.pfx = pfx;\n this.ppfx = this.config.pStylePrefix || '';\n this.id = pfx + model.get('id');\n this.activeCls = `${pfx}active ${ppfx}four-color`;\n this.disableCls = `${ppfx}disabled`;\n this.btnsVisCls = `${pfx}visible`;\n this.className = pfx + 'btn' + (cls ? ' ' + cls : '');\n this.listenTo(model, 'change', this.render);\n this.listenTo(model, 'change:active updateActive', this.updateActive);\n this.listenTo(model, 'checkActive', this.checkActive);\n this.listenTo(model, 'change:bntsVis', this.updateBtnsVis);\n this.listenTo(model, 'change:attributes', this.updateAttributes);\n this.listenTo(model, 'change:className', this.updateClassName);\n this.listenTo(model, 'change:disable', this.updateDisable);\n\n if (em && isString(command) && listen) {\n const chnOpt = { fromListen: 1 };\n this.listenTo(em, `run:${command}`, () =>\n model.set('active', true, chnOpt)\n );\n this.listenTo(em, `stop:${command}`, () =>\n model.set('active', false, chnOpt)\n );\n }\n\n if (em && em.get) this.commands = em.get('Commands');\n },\n\n /**\n * Updates class name of the button\n *\n * @return void\n * */\n updateClassName() {\n const { model, pfx } = this;\n const cls = model.get('className');\n const attrCls = model.get('attributes').class;\n const classStr = `${attrCls ? attrCls : ''} ${pfx}btn ${cls ? cls : ''}`;\n this.$el.attr('class', classStr.trim());\n },\n\n /**\n * Updates attributes of the button\n *\n * @return void\n * */\n updateAttributes() {\n const { em, model, $el } = this;\n const attr = model.get('attributes') || {};\n const title = em && em.t && em.t(`panels.buttons.titles.${model.id}`);\n $el.attr(attr);\n title && $el.attr({ title });\n\n this.updateClassName();\n },\n\n /**\n * Updates visibility of children buttons\n *\n * @return void\n * */\n updateBtnsVis() {\n if (!this.$buttons) return;\n\n if (this.model.get('bntsVis')) this.$buttons.addClass(this.btnsVisCls);\n else this.$buttons.removeClass(this.btnsVisCls);\n },\n\n /**\n * Update active status of the button\n *\n * @return void\n * */\n updateActive(m, v, opts = {}) {\n const { model, commands, $el, activeCls } = this;\n const { fromCollection, fromListen } = opts;\n const context = model.get('context');\n const options = model.get('options');\n const commandName = model.get('command');\n let command = {};\n\n if (!commandName) return;\n\n if (commands && isString(commandName)) {\n command = commands.get(commandName) || {};\n } else if (isFunction(commandName)) {\n command = commands.create({ run: commandName });\n } else if (commandName !== null && isObject(commandName)) {\n command = commands.create(commandName);\n }\n\n if (model.get('active')) {\n !fromCollection && model.collection.deactivateAll(context, model);\n model.set('active', true, { silent: true }).trigger('checkActive');\n !fromListen &&\n commands.runCommand(command, { ...options, sender: model });\n\n // Disable button if the command has no stop method\n command.noStop && model.set('active', false);\n } else {\n $el.removeClass(activeCls);\n !fromListen &&\n commands.stopCommand(command, { ...options, sender: model, force: 1 });\n }\n },\n\n updateDisable() {\n const { disableCls, model } = this;\n const disable = model.get('disable');\n this.$el[disable ? 'addClass' : 'removeClass'](disableCls);\n },\n\n /**\n * Update active style status\n *\n * @return void\n * */\n checkActive() {\n const { model, $el, activeCls } = this;\n model.get('active') ? $el.addClass(activeCls) : $el.removeClass(activeCls);\n },\n\n /**\n * Triggered when button is clicked\n * @param {Object} e Event\n *\n * @return void\n * */\n clicked(e) {\n const { model } = this;\n\n if (model.get('bntsVis') || model.get('disable') || !model.get('command'))\n return;\n\n this.toggleActive();\n },\n\n toggleActive() {\n const { model, em } = this;\n const { active, togglable } = model.attributes;\n\n if (active && !togglable) return;\n\n model.set('active', !active);\n\n // If the stop is requested\n if (active) {\n if (model.get('runDefaultCommand')) em.runDefault();\n } else {\n if (model.get('stopDefaultCommand')) em.stopDefault();\n }\n },\n\n render() {\n const { model } = this;\n const label = model.get('label');\n const { $el } = this;\n !model.get('el') && $el.empty();\n this.updateAttributes();\n label && $el.append(label);\n this.checkActive();\n this.updateDisable();\n\n return this;\n }\n});\n","import Backbone from 'backbone';\nimport ButtonView from './ButtonView';\nimport { result } from 'underscore';\n\nexport default Backbone.View.extend({\n initialize(o) {\n this.opt = o || {};\n this.config = this.opt.config || {};\n this.pfx = this.config.stylePrefix || '';\n this.parentM = this.opt.parentM || null;\n this.listenTo(this.collection, 'add', this.addTo);\n this.listenTo(this.collection, 'reset remove', this.render);\n this.className = this.pfx + 'buttons';\n },\n\n /**\n * Add to collection\n * @param Object Model\n *\n * @return Object\n * */\n addTo(model) {\n this.addToCollection(model);\n },\n\n /**\n * Add new object to collection\n * @param Object Model\n * @param Object Fragment collection\n *\n * @return Object Object created\n * */\n addToCollection(model, fragmentEl) {\n const fragment = fragmentEl || null;\n const viewObject = ButtonView;\n const el = model.get('el');\n const view = new viewObject({\n el,\n model,\n config: this.config,\n parentM: this.parentM\n });\n const rendered = view.render().el;\n\n if (fragment) {\n fragment.appendChild(rendered);\n } else {\n this.$el.append(rendered);\n }\n\n return rendered;\n },\n\n render() {\n var fragment = document.createDocumentFragment();\n this.$el.empty();\n\n this.collection.each(function(model) {\n this.addToCollection(model, fragment);\n }, this);\n\n this.$el.append(fragment);\n this.$el.attr('class', result(this, 'className'));\n return this;\n }\n});\n","import Backbone from 'backbone';\nimport ButtonsView from './ButtonsView';\n\nexport default Backbone.View.extend({\n initialize(o) {\n const config = o.config || {};\n const model = this.model;\n this.config = config;\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.buttons = model.get('buttons');\n this.className = this.pfx + 'panel';\n this.id = this.pfx + model.get('id');\n this.listenTo(model, 'change:appendContent', this.appendContent);\n this.listenTo(model, 'change:content', this.updateContent);\n this.listenTo(model, 'change:visible', this.toggleVisible);\n model.view = this;\n },\n\n /**\n * Append content of the panel\n * */\n appendContent() {\n this.$el.append(this.model.get('appendContent'));\n },\n\n /**\n * Update content\n * */\n updateContent() {\n this.$el.html(this.model.get('content'));\n },\n\n toggleVisible() {\n if (!this.model.get('visible')) {\n this.$el.addClass(`${this.ppfx}hidden`);\n return;\n }\n this.$el.removeClass(`${this.ppfx}hidden`);\n },\n\n attributes() {\n return this.model.get('attributes');\n },\n\n initResize() {\n const em = this.config.em;\n const editor = em ? em.get('Editor') : '';\n const resizable = this.model.get('resizable');\n\n if (editor && resizable) {\n var resz = resizable === true ? [1, 1, 1, 1] : resizable;\n var resLen = resz.length;\n var tc,\n cr,\n bc,\n cl = 0;\n\n // Choose which sides of the panel are resizable\n if (resLen == 2) {\n tc = resz[0];\n bc = resz[0];\n cr = resz[1];\n cl = resz[1];\n } else if (resLen == 4) {\n tc = resz[0];\n cr = resz[1];\n bc = resz[2];\n cl = resz[3];\n }\n\n var resizer = editor.Utils.Resizer.init({\n tc,\n cr,\n bc,\n cl,\n tl: 0,\n tr: 0,\n bl: 0,\n br: 0,\n appendTo: this.el,\n silentFrames: 1,\n avoidContainerUpdate: 1,\n prefix: editor.getConfig().stylePrefix,\n onEnd() {\n em && em.trigger('change:canvasOffset');\n },\n posFetcher: (el, { target }) => {\n const style = el.style;\n const config = resizer.getConfig();\n const keyWidth = config.keyWidth;\n const keyHeight = config.keyHeight;\n const rect = el.getBoundingClientRect();\n const forContainer = target == 'container';\n const styleWidth = style[keyWidth];\n const styleHeight = style[keyHeight];\n const width =\n styleWidth && !forContainer ? parseFloat(styleWidth) : rect.width;\n const height =\n styleHeight && !forContainer\n ? parseFloat(styleHeight)\n : rect.height;\n return {\n left: 0,\n top: 0,\n width,\n height\n };\n },\n ...resizable\n });\n resizer.blur = () => {};\n resizer.focus(this.el);\n }\n },\n\n render() {\n const $el = this.$el;\n const ppfx = this.ppfx;\n const cls = `${this.className} ${this.id} ${ppfx}one-bg ${ppfx}two-color`;\n $el.addClass(cls);\n\n this.toggleVisible();\n\n if (this.buttons.length) {\n var buttons = new ButtonsView({\n collection: this.buttons,\n config: this.config\n });\n $el.append(buttons.render().el);\n }\n\n $el.append(this.model.get('content'));\n return this;\n }\n});\n","import Backbone from 'backbone';\nimport PanelView from './PanelView';\n\nexport default Backbone.View.extend({\n initialize(o) {\n this.opt = o || {};\n this.config = this.opt.config || {};\n this.pfx = this.config.stylePrefix || '';\n const items = this.collection;\n this.listenTo(items, 'add', this.addTo);\n this.listenTo(items, 'reset', this.render);\n this.listenTo(items, 'remove', this.onRemove);\n this.className = this.pfx + 'panels';\n },\n\n onRemove(model) {\n const view = model.view;\n view && view.remove();\n },\n\n /**\n * Add to collection\n * @param Object Model\n *\n * @return Object\n * @private\n * */\n addTo(model) {\n this.addToCollection(model);\n },\n\n /**\n * Add new object to collection\n * @param Object Model\n * @param Object Fragment collection\n * @param integer Index of append\n *\n * @return Object Object created\n * @private\n * */\n addToCollection(model, fragmentEl) {\n const fragment = fragmentEl || null;\n const config = this.config;\n const el = model.get('el');\n const view = new PanelView({\n el,\n model,\n config\n });\n const rendered = view.render().el;\n const appendTo = model.get('appendTo');\n\n // Do nothing if the panel was requested to be another element\n if (el) {\n } else if (appendTo) {\n var appendEl = document.querySelector(appendTo);\n appendEl.appendChild(rendered);\n } else {\n if (fragment) {\n fragment.appendChild(rendered);\n } else {\n this.$el.append(rendered);\n }\n }\n\n view.initResize();\n return rendered;\n },\n\n render() {\n const $el = this.$el;\n const frag = document.createDocumentFragment();\n $el.empty();\n this.collection.each(model => this.addToCollection(model, frag));\n $el.append(frag);\n $el.attr('class', this.className);\n return this;\n }\n});\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/panels/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * panels: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const panelManager = editor.Panels;\n * ```\n *\n * * [addPanel](#addpanel)\n * * [addButton](#addbutton)\n * * [getButton](#getbutton)\n * * [getPanel](#getpanel)\n * * [getPanels](#getpanels)\n * * [getPanelsEl](#getpanelsel)\n * * [removePanel](#removepanel)\n * * [removeButton](#removebutton)\n *\n * @module Panels\n */\nimport defaults from './config/config';\nimport Panel from './model/Panel';\nimport Panels from './model/Panels';\nimport PanelsView from './view/PanelsView';\n\nexport default () => {\n var c = {};\n var panels, PanelsViewObj;\n\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Panels',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config) {\n c = config || {};\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n panels = new Panels(c.defaults);\n PanelsViewObj = new PanelsView({\n collection: panels,\n config: c\n });\n return this;\n },\n\n /**\n * Returns the collection of panels\n * @return {Collection} Collection of panel\n */\n getPanels() {\n return panels;\n },\n\n /**\n * Returns panels element\n * @return {HTMLElement}\n */\n getPanelsEl() {\n return PanelsViewObj.el;\n },\n\n /**\n * Add new panel to the collection\n * @param {Object|Panel} panel Object with right properties or an instance of Panel\n * @return {Panel} Added panel. Useful in case passed argument was an Object\n * @example\n * var newPanel = panelManager.addPanel({\n * id: 'myNewPanel',\n * visible : true,\n * buttons : [...],\n * });\n */\n addPanel(panel) {\n return panels.add(panel);\n },\n\n /**\n * Remove a panel from the collection\n * @param {Object|Panel|String} panel Object with right properties or an instance of Panel or Painel id\n * @return {Panel} Removed panel. Useful in case passed argument was an Object\n * @example\n * const newPanel = panelManager.removePanel({\n * id: 'myNewPanel',\n * visible : true,\n * buttons : [...],\n * });\n *\n * const newPanel = panelManager.removePanel('myNewPanel');\n *\n */\n removePanel(panel) {\n return panels.remove(panel);\n },\n\n /**\n * Get panel by ID\n * @param {string} id Id string\n * @return {Panel|null}\n * @example\n * var myPanel = panelManager.getPanel('myNewPanel');\n */\n getPanel(id) {\n var res = panels.where({ id });\n return res.length ? res[0] : null;\n },\n\n /**\n * Add button to the panel\n * @param {string} panelId Panel's ID\n * @param {Object|Button} button Button object or instance of Button\n * @return {Button|null} Added button. Useful in case passed button was an Object\n * @example\n * var newButton = panelManager.addButton('myNewPanel',{\n * id: 'myNewButton',\n * className: 'someClass',\n * command: 'someCommand',\n * attributes: { title: 'Some title'},\n * active: false,\n * });\n * // It's also possible to pass the command as an object\n * // with .run and .stop methods\n * ...\n * command: {\n * run: function(editor) {\n * ...\n * },\n * stop: function(editor) {\n * ...\n * }\n * },\n * // Or simply like a function which will be evaluated as a single .run command\n * ...\n * command: function(editor) {\n * ...\n * }\n */\n addButton(panelId, button) {\n var pn = this.getPanel(panelId);\n return pn ? pn.get('buttons').add(button) : null;\n },\n\n /**\n * Remove button from the panel\n * @param {String} panelId Panel's ID\n * @param {String} buttonId Button's ID\n * @return {Button|null} Removed button.\n * @example\n * const removedButton = panelManager.addButton('myNewPanel',{\n * id: 'myNewButton',\n * className: 'someClass',\n * command: 'someCommand',\n * attributes: { title: 'Some title'},\n * active: false,\n * });\n *\n * const removedButton = panelManager.removeButton('myNewPanel', 'myNewButton');\n *\n */\n removeButton(panelId, button) {\n var pn = this.getPanel(panelId);\n return pn && pn.get('buttons').remove(button);\n },\n\n /**\n * Get button from the panel\n * @param {string} panelId Panel's ID\n * @param {string} id Button's ID\n * @return {Button|null}\n * @example\n * var button = panelManager.getButton('myPanel','myButton');\n */\n getButton(panelId, id) {\n var pn = this.getPanel(panelId);\n if (pn) {\n var res = pn.get('buttons').where({ id });\n return res.length ? res[0] : null;\n }\n return null;\n },\n\n /**\n * Render panels and buttons\n * @return {HTMLElement}\n * @private\n */\n render() {\n return PanelsViewObj.render().el;\n },\n\n /**\n * Active activable buttons\n * @private\n */\n active() {\n this.getPanels().each(p => {\n p.get('buttons').each(btn => {\n btn.get('active') && btn.trigger('updateActive');\n });\n });\n },\n\n /**\n * Disable buttons flagged as disabled\n * @private\n */\n disableButtons() {\n this.getPanels().each(p => {\n p.get('buttons').each(btn => {\n if (btn.get('disable')) btn.trigger('change:disable');\n });\n });\n },\n\n destroy() {\n panels.reset();\n panels.stopListening();\n PanelsViewObj.remove();\n [c, panels, PanelsViewObj].forEach(i => (i = {}));\n },\n\n Panel\n };\n};\n","export default {\n stylePrefix: 'cv-',\n\n /*\n * Append external scripts to the `` of the iframe.\n * Be aware that these scripts will not be printed in the export code\n * @example\n * scripts: [ 'https://...1.js', 'https://...2.js' ]\n * * // or passing objects as attributes\n * scripts: [ { src: '/file.js', someattr: 'value' }, ... ]\n */\n scripts: [],\n\n /*\n * Append external styles to the `` of the iframe\n * Be aware that these styles will not be printed in the export code\n * @example\n * styles: [ 'https://...1.css', 'https://...2.css' ]\n * // or passing objects as attributes\n * styles: [ { href: '/style.css', someattr: 'value' }, ... ]\n */\n styles: [],\n\n /**\n * Add custom badge naming strategy\n * @example\n * customBadgeLabel: function(component) {\n * return component.getName();\n * }\n */\n customBadgeLabel: '',\n\n /**\n * Indicate when to start the auto scroll of the canvas on component/block dragging (value in px )\n */\n autoscrollLimit: 50,\n\n // Experimental: external highlighter box\n extHl: 0,\n\n /**\n * When some textable component is selected and focused (eg. input or text component) the editor\n * stops some commands (eg. disables the copy/paste of components with CTRL+C/V to allow the copy/paste of the text).\n * This option allows to customize, by a selector, which element should not be considered textable\n */\n notTextable: ['button', 'a', 'input[type=checkbox]', 'input[type=radio]']\n};\n","import { Model } from 'backbone';\nimport { evPageSelect } from 'pages';\n\nexport default class Canvas extends Model {\n defaults() {\n return {\n frame: '',\n frames: '',\n rulers: false,\n zoom: 100,\n x: 0,\n y: 0,\n // Scripts to apply on all frames\n scripts: [],\n // Styles to apply on all frames\n styles: []\n };\n }\n\n initialize(props, config = {}) {\n const { em } = config;\n this.config = config;\n this.em = em;\n this.listenTo(this, 'change:zoom', this.onZoomChange);\n this.listenTo(em, 'change:device', this.updateDevice);\n this.listenTo(em, evPageSelect, this._pageUpdated);\n }\n\n init() {\n const { em } = this;\n this.set(\n 'frames',\n em\n .get('PageManager')\n .getMain()\n .getFrames()\n );\n }\n\n _pageUpdated(page, prev) {\n const { em } = this;\n em.setSelected();\n em.get('readyCanvas') && em.stopDefault(); // We have to stop before changing current frames\n prev && prev.getFrames().map(frame => frame.disable());\n this.set('frames', page.getFrames());\n }\n\n updateDevice() {\n const { em } = this;\n const device = em.getDeviceModel();\n const model = em.getCurrentFrameModel();\n\n if (model && device) {\n const { width, height } = device.attributes;\n model.set({ width, height }, { noUndo: 1 });\n }\n }\n\n onZoomChange() {\n const zoom = this.get('zoom');\n zoom < 1 && this.set('zoom', 1);\n }\n}\n","/*\n This class makes the canvas droppable\n */\n\nimport { on, off } from 'utils/mixins';\nimport { bindAll, indexOf } from 'underscore';\n\nexport default class Droppable {\n constructor(em, rootEl) {\n this.em = em;\n const el =\n rootEl ||\n em\n .get('Canvas')\n .getFrames()\n .map(frame => frame.getComponent().getEl());\n const els = Array.isArray(el) ? el : [el];\n this.el = el;\n this.counter = 0;\n bindAll(\n this,\n 'handleDragEnter',\n 'handleDragOver',\n 'handleDrop',\n 'handleDragLeave'\n );\n els.forEach(el => this.toggleEffects(el, 1));\n\n return this;\n }\n\n toggleEffects(el, enable) {\n const methods = { on, off };\n const method = enable ? 'on' : 'off';\n methods[method](el, 'dragenter', this.handleDragEnter);\n methods[method](el, 'dragover', this.handleDragOver);\n methods[method](el, 'drop', this.handleDrop);\n methods[method](el, 'dragleave', this.handleDragLeave);\n }\n\n endDrop(cancel, ev) {\n const { em, dragStop } = this;\n this.counter = 0;\n dragStop && dragStop(cancel);\n em.trigger('canvas:dragend', ev);\n }\n\n handleDragLeave(ev) {\n this.updateCounter(-1, ev);\n }\n\n updateCounter(value, ev) {\n this.counter += value;\n this.counter === 0 && this.endDrop(1, ev);\n }\n\n handleDragEnter(ev) {\n const { em } = this;\n const dt = ev.dataTransfer;\n this.updateCounter(1, ev);\n if (this.over) return;\n this.over = 1;\n const utils = em.get('Utils');\n const canvas = em.get('Canvas');\n // For security reason I can't read the drag data on dragenter, but\n // as I need it for the Sorter context I will use `dragContent` or just\n // any not empty element\n let content = em.get('dragContent') || '
';\n let dragStop, dragContent;\n em.stopDefault();\n\n // Select the right drag provider\n if (em.inAbsoluteMode()) {\n const wrapper = em.get('DomComponents').getWrapper();\n const target = wrapper.append({})[0];\n const dragger = em.get('Commands').run('core:component-drag', {\n event: ev,\n guidesInfo: 1,\n center: 1,\n target,\n onEnd: (ev, dragger, { cancelled }) => {\n let comp;\n if (!cancelled) {\n comp = wrapper.append(content)[0];\n const { left, top, position } = target.getStyle();\n comp.addStyle({ left, top, position });\n }\n this.handleDragEnd(comp, dt);\n target.remove();\n }\n });\n dragStop = cancel => dragger.stop(ev, { cancel });\n dragContent = cnt => (content = cnt);\n } else {\n const sorter = new utils.Sorter({\n em,\n wmargin: 1,\n nested: 1,\n canvasRelative: 1,\n direction: 'a',\n container: this.el,\n placer: canvas.getPlacerEl(),\n containerSel: '*',\n itemSel: '*',\n pfx: 'gjs-',\n onEndMove: model => this.handleDragEnd(model, dt),\n document: this.el.ownerDocument\n });\n sorter.setDropContent(content);\n sorter.startSort();\n this.sorter = sorter;\n dragStop = cancel => {\n cancel && (sorter.moved = 0);\n sorter.endMove();\n };\n dragContent = content => sorter.setDropContent(content);\n }\n\n this.dragStop = dragStop;\n this.dragContent = dragContent;\n em.trigger('canvas:dragenter', dt, content);\n }\n\n handleDragEnd(model, dt) {\n const { em } = this;\n this.over = 0;\n if (model) {\n em.set('dragResult', model);\n em.trigger('canvas:drop', dt, model);\n }\n em.runDefault({ preserveSelected: 1 });\n }\n\n /**\n * Always need to have this handler active for enabling the drop\n * @param {Event} ev\n */\n handleDragOver(ev) {\n ev.preventDefault();\n this.em.trigger('canvas:dragover', ev);\n }\n\n /**\n * WARNING: This function might fail to run on drop, for example, when the\n * drop, accidentally, happens on some external element (DOM not inside the iframe)\n */\n handleDrop(ev) {\n ev.preventDefault();\n const { dragContent } = this;\n const dt = ev.dataTransfer;\n const content = this.getContentByData(dt).content;\n ev.target.style.border = '';\n content && dragContent && dragContent(content);\n this.endDrop(!content, ev);\n }\n\n getContentByData(dataTransfer) {\n const em = this.em;\n const types = dataTransfer.types;\n const files = dataTransfer.files || [];\n const dragContent = em.get('dragContent');\n let content = dataTransfer.getData('text');\n\n if (files.length) {\n content = [];\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n const type = file.type.split('/')[0];\n\n if (type == 'image') {\n content.push({\n type,\n file,\n attributes: { alt: file.name }\n });\n }\n }\n } else if (dragContent) {\n content = dragContent;\n } else if (indexOf(types, 'text/html') >= 0) {\n content = dataTransfer\n .getData('text/html')\n .replace(/<\\/?meta[^>]*>/g, '');\n } else if (indexOf(types, 'text/uri-list') >= 0) {\n content = {\n type: 'link',\n attributes: { href: content },\n content: content\n };\n } else if (indexOf(types, 'text/json') >= 0) {\n const json = dataTransfer.getData('text/json');\n json && (content = JSON.parse(json));\n } else if (types.length === 1 && types[0] === 'text/plain') {\n // Avoid dropping non-selectable and non-editable text nodes inside the editor\n content = `
${content}
`;\n }\n\n const result = { content };\n em.trigger('canvas:dragdata', dataTransfer, result);\n\n return result;\n }\n}\n","import Backbone from 'backbone';\nimport { bindAll, isString, debounce, isUndefined } from 'underscore';\nimport CssRulesView from 'css_composer/view/CssRulesView';\nimport ComponentView from 'dom_components/view/ComponentView';\nimport Droppable from 'utils/Droppable';\nimport {\n appendVNodes,\n empty,\n append,\n createEl,\n createCustomEvent,\n motionsEv\n} from 'utils/dom';\nimport { on, off, setViewEl, hasDnd, getPointerEvent } from 'utils/mixins';\n\nexport default Backbone.View.extend({\n tagName: 'iframe',\n\n attributes: {\n allowfullscreen: 'allowfullscreen',\n 'data-frame-el': true\n },\n\n initialize(o) {\n bindAll(\n this,\n 'updateClientY',\n 'stopAutoscroll',\n 'autoscroll',\n '_emitUpdate'\n );\n const { model, el } = this;\n this.config = {\n ...(o.config || {}),\n frameView: this\n };\n this.ppfx = this.config.pStylePrefix || '';\n this.em = this.config.em;\n const cvModel = this.getCanvasModel();\n this.listenTo(model, 'change:head', this.updateHead);\n this.listenTo(cvModel, 'change:styles', this.renderStyles);\n model.view = this;\n setViewEl(el, this);\n },\n\n /**\n * Update `` content of the frame\n */\n updateHead() {\n const { model } = this;\n const headEl = this.getHead();\n const toRemove = [];\n const toAdd = [];\n const current = model.get('head');\n const prev = model.previous('head');\n const attrStr = (attr = {}) =>\n Object.keys(attr)\n .sort()\n .map(i => `[${i}=\"${attr[i]}\"]`)\n .join('');\n const find = (items, stack, res) => {\n items.forEach(item => {\n const { tag, attributes } = item;\n const has = stack.some(\n s => s.tag === tag && attrStr(s.attributes) === attrStr(attributes)\n );\n !has && res.push(item);\n });\n };\n find(current, prev, toAdd);\n find(prev, current, toRemove);\n toRemove.forEach(stl => {\n const el = headEl.querySelector(`${stl.tag}${attrStr(stl.attributes)}`);\n el && el.parentNode.removeChild(el);\n });\n appendVNodes(headEl, toAdd);\n },\n\n getEl() {\n return this.el;\n },\n\n getCanvasModel() {\n return this.em.get('Canvas').getModel();\n },\n\n getWindow() {\n return this.getEl().contentWindow;\n },\n\n getDoc() {\n return this.getEl().contentDocument;\n },\n\n getHead() {\n return this.getDoc().querySelector('head');\n },\n\n getBody() {\n return this.getDoc().querySelector('body');\n },\n\n getWrapper() {\n return this.getBody().querySelector('[data-gjs-type=wrapper]');\n },\n\n getJsContainer() {\n if (!this.jsContainer) {\n this.jsContainer = createEl('div', { class: `${this.ppfx}js-cont` });\n }\n\n return this.jsContainer;\n },\n\n getToolsEl() {\n const { frameWrapView } = this.config;\n return frameWrapView && frameWrapView.elTools;\n },\n\n getGlobalToolsEl() {\n return this.em.get('Canvas').getGlobalToolsEl();\n },\n\n getHighlighter() {\n return this._getTool('[data-hl]');\n },\n\n getBadgeEl() {\n return this._getTool('[data-badge]');\n },\n\n getOffsetViewerEl() {\n return this._getTool('[data-offset]');\n },\n\n getRect() {\n if (!this.rect) {\n this.rect = this.el.getBoundingClientRect();\n }\n\n return this.rect;\n },\n\n /**\n * Get rect data, not affected by the canvas zoom\n */\n getOffsetRect() {\n const { el } = this;\n const { scrollTop, scrollLeft } = this.getBody();\n const height = el.offsetHeight;\n const width = el.offsetWidth;\n\n return {\n top: el.offsetTop,\n left: el.offsetLeft,\n height,\n width,\n scrollTop,\n scrollLeft,\n scrollBottom: scrollTop + height,\n scrollRight: scrollLeft + width\n };\n },\n\n _getTool(name) {\n const toolsEl = this.getToolsEl();\n\n if (!this[name]) {\n this[name] = toolsEl.querySelector(name);\n }\n\n return this[name];\n },\n\n remove() {\n const wrp = this.wrapper;\n this._toggleEffects();\n wrp && wrp.remove();\n Backbone.View.prototype.remove.apply(this, arguments);\n },\n\n startAutoscroll() {\n this.lastMaxHeight = this.getWrapper().offsetHeight - this.el.offsetHeight;\n\n // By detaching those from the stack avoid browsers lags\n // Noticeable with \"fast\" drag of blocks\n setTimeout(() => {\n this._toggleAutoscrollFx(1);\n requestAnimationFrame(this.autoscroll);\n }, 0);\n },\n\n autoscroll() {\n if (this.dragging) {\n const { lastClientY } = this;\n const canvas = this.em.get('Canvas');\n const win = this.getWindow();\n const body = this.getBody();\n const actualTop = body.scrollTop;\n const clientY = lastClientY || 0;\n const limitTop = canvas.getConfig().autoscrollLimit;\n const limitBottom = this.getRect().height - limitTop;\n let nextTop = actualTop;\n\n if (clientY < limitTop) {\n nextTop -= limitTop - clientY;\n }\n\n if (clientY > limitBottom) {\n nextTop += clientY - limitBottom;\n }\n\n if (\n !isUndefined(lastClientY) && // Fixes #3134\n nextTop !== actualTop &&\n nextTop > 0 &&\n nextTop < this.lastMaxHeight\n ) {\n const toolsEl = this.getGlobalToolsEl();\n toolsEl.style.opacity = 0;\n this.showGlobalTools();\n win.scrollTo(0, nextTop);\n }\n\n requestAnimationFrame(this.autoscroll);\n }\n },\n\n updateClientY(ev) {\n ev.preventDefault();\n this.lastClientY = getPointerEvent(ev).clientY * this.em.getZoomDecimal();\n },\n\n showGlobalTools: debounce(function() {\n this.getGlobalToolsEl().style.opacity = '';\n }, 50),\n\n stopAutoscroll() {\n this.dragging && this._toggleAutoscrollFx();\n },\n\n _toggleAutoscrollFx(enable) {\n this.dragging = enable;\n const win = this.getWindow();\n const method = enable ? 'on' : 'off';\n const mt = { on, off };\n mt[method](win, 'mousemove dragover', this.updateClientY);\n mt[method](win, 'mouseup', this.stopAutoscroll);\n },\n\n render() {\n const { $el, ppfx } = this;\n $el.attr({ class: `${ppfx}frame` });\n this.renderScripts();\n return this;\n },\n\n renderScripts() {\n const { el, model, em } = this;\n const evLoad = 'frame:load';\n const evOpts = { el, model, view: this };\n const canvas = this.getCanvasModel();\n const appendScript = scripts => {\n if (scripts.length > 0) {\n const src = scripts.shift();\n const scriptEl = createEl('script', {\n type: 'text/javascript',\n ...(isString(src) ? { src } : src)\n });\n scriptEl.onerror = scriptEl.onload = appendScript.bind(null, scripts);\n el.contentDocument.head.appendChild(scriptEl);\n } else {\n this.renderBody();\n em && em.trigger(evLoad, evOpts);\n }\n };\n\n el.onload = () => {\n em && em.trigger(`${evLoad}:before`, evOpts);\n appendScript([...canvas.get('scripts')]);\n };\n },\n\n renderStyles(opts = {}) {\n const head = this.getHead();\n const canvas = this.getCanvasModel();\n const normalize = stls =>\n stls.map(href => ({\n tag: 'link',\n attributes: {\n rel: 'stylesheet',\n ...(isString(href) ? { href } : href)\n }\n }));\n const prevStyles = normalize(opts.prev || canvas.previous('styles'));\n const styles = normalize(canvas.get('styles'));\n const toRemove = [];\n const toAdd = [];\n const find = (items, stack, res) => {\n items.forEach(item => {\n const { href } = item.attributes;\n const has = stack.some(s => s.attributes.href === href);\n !has && res.push(item);\n });\n };\n find(styles, prevStyles, toAdd);\n find(prevStyles, styles, toRemove);\n toRemove.forEach(stl => {\n const el = head.querySelector(`link[href=\"${stl.attributes.href}\"]`);\n el && el.parentNode.removeChild(el);\n });\n appendVNodes(head, toAdd);\n },\n\n renderBody() {\n const { config, model, ppfx } = this;\n const { em } = config;\n const doc = this.getDoc();\n const body = this.getBody();\n const win = this.getWindow();\n const conf = em.get('Config');\n win._isEditor = true;\n this.renderStyles({ prev: [] });\n\n const colorWarn = '#ffca6f';\n\n // I need all this styles to make the editor work properly\n // Remove `html { height: 100%;}` from the baseCss as it gives jumpings\n // effects (on ENTER) with RTE like CKEditor (maybe some bug there?!?)\n // With `body {height: auto;}` jumps in CKEditor are removed but in\n // Firefox is impossible to drag stuff in empty canvas, so bring back\n // `body {height: 100%;}`.\n // For the moment I give the priority to Firefox as it might be\n // CKEditor's issue\n append(\n body,\n ``\n );\n const component = model.getComponent();\n this.wrapper = new ComponentView({\n model: component,\n config: {\n ...component.config,\n frameView: this\n }\n }).render();\n append(body, this.wrapper.el);\n append(\n body,\n new CssRulesView({\n collection: model.getStyles(),\n config: {\n ...em.get('CssComposer').getConfig(),\n frameView: this\n }\n }).render().el\n );\n append(body, this.getJsContainer());\n // em.trigger('loaded'); // I need to manage only the first one maybe\n //this.updateOffset(); // TOFIX (check if I need it)\n\n // Avoid some default behaviours\n on(\n body,\n 'click',\n ev => ev && ev.target.tagName == 'A' && ev.preventDefault()\n );\n on(body, 'submit', ev => ev && ev.preventDefault());\n\n // When the iframe is focused the event dispatcher is not the same so\n // I need to delegate all events to the parent document\n [\n { event: 'keydown keyup keypress', class: 'KeyboardEvent' },\n { event: 'mousedown mousemove mouseup', class: 'MouseEvent' },\n { event: 'wheel', class: 'WheelEvent' }\n ].forEach(obj =>\n obj.event.split(' ').forEach(event => {\n doc.addEventListener(event, ev =>\n this.el.dispatchEvent(createCustomEvent(ev, obj.class))\n );\n })\n );\n\n this._toggleEffects(1);\n this.droppable = hasDnd(em) && new Droppable(em, this.wrapper.el);\n model.trigger('loaded');\n },\n\n _toggleEffects(enable) {\n const method = enable ? on : off;\n const win = this.getWindow();\n win && method(win, `${motionsEv} resize`, this._emitUpdate);\n },\n\n _emitUpdate() {\n this.model._emitUpdated();\n }\n});\n","import Backbone from 'backbone';\nimport FrameView from './FrameView';\nimport { bindAll, isNumber, isNull, debounce } from 'underscore';\nimport { createEl, removeEl } from 'utils/dom';\nimport Dragger from 'utils/Dragger';\n\nexport default Backbone.View.extend({\n events: {\n 'click [data-action-remove]': 'remove',\n 'mousedown [data-action-move]': 'startDrag'\n },\n\n initialize(opts = {}, conf = {}) {\n bindAll(\n this,\n 'onScroll',\n 'frameLoaded',\n 'updateOffset',\n 'remove',\n 'startDrag'\n );\n const { model } = this;\n const config = {\n ...(opts.config || conf),\n frameWrapView: this\n };\n const { canvasView, em } = config;\n this.cv = canvasView;\n this.config = config;\n this.em = em;\n this.canvas = em && em.get('Canvas');\n this.ppfx = config.pStylePrefix || '';\n this.frame = new FrameView({ model, config });\n this.classAnim = `${this.ppfx}frame-wrapper--anim`;\n this.updateOffset = debounce(this.updateOffset.bind(this));\n this.updateSize = debounce(this.updateSize.bind(this));\n this.listenTo(model, 'loaded', this.frameLoaded);\n this.listenTo(model, 'change:x change:y', this.updatePos);\n this.listenTo(model, 'change:width change:height', this.updateSize);\n this.listenTo(model, 'destroy remove', this.remove);\n this.updatePos();\n this.setupDragger();\n },\n\n setupDragger() {\n const { canvas, model } = this;\n let dragX, dragY, zoom;\n const toggleEffects = on => {\n canvas.toggleFramesEvents(on);\n };\n\n this.dragger = new Dragger({\n onStart: () => {\n const { x, y } = model.attributes;\n zoom = this.em.getZoomMultiplier();\n dragX = x;\n dragY = y;\n toggleEffects();\n },\n onEnd: () => toggleEffects(1),\n setPosition: posOpts => {\n model.set({\n x: dragX + posOpts.x * zoom,\n y: dragY + posOpts.y * zoom\n });\n }\n });\n },\n\n startDrag(ev) {\n ev && this.dragger.start(ev);\n },\n\n remove(opts) {\n this.frame.remove(opts);\n removeEl(this.elTools);\n Backbone.View.prototype.remove.apply(this, arguments);\n ['frame', 'dragger', 'cv', 'em', 'canvas', 'elTools'].forEach(\n i => (this[i] = 0)\n );\n return this;\n },\n\n updateOffset() {\n const { em, $el, frame } = this;\n if (!em) return;\n em.runDefault({ preserveSelected: 1 });\n $el.removeClass(this.classAnim);\n frame.model._emitUpdated();\n },\n\n updatePos(md) {\n const { model, el } = this;\n const { x, y } = model.attributes;\n const { style } = el;\n this.frame.rect = 0;\n style.left = isNaN(x) ? x : `${x}px`;\n style.top = isNaN(y) ? y : `${y}px`;\n md && this.updateOffset();\n },\n\n updateSize() {\n this.updateDim();\n },\n\n /**\n * Update dimensions of the frame\n * @private\n */\n updateDim() {\n const { em, el, $el, model, classAnim, frame } = this;\n if (!frame) return;\n frame.rect = 0;\n $el.addClass(classAnim);\n const { noChanges, width, height } = this.__handleSize();\n\n // Set width and height from DOM (should be done only once)\n if (isNull(width) || isNull(height)) {\n model.set(\n {\n ...(!width ? { width: el.offsetWidth } : {}),\n ...(!height ? { height: el.offsetHeight } : {})\n },\n { silent: 1 }\n );\n }\n\n // Prevent fixed highlighting box which appears when on\n // component hover during the animation\n em.stopDefault({ preserveSelected: 1 });\n noChanges ? this.updateOffset() : setTimeout(this.updateOffset, 350);\n },\n\n onScroll() {\n const { frame, em } = this;\n em.trigger('frame:scroll', {\n frame,\n body: frame.getBody(),\n target: frame.getWindow()\n });\n },\n\n frameLoaded() {\n const { frame } = this;\n frame.getWindow().onscroll = this.onScroll;\n this.updateDim();\n },\n\n __handleSize() {\n const un = 'px';\n const { model, el } = this;\n const { style } = el;\n const { width, height } = model.attributes;\n const currW = style.width || '';\n const currH = style.height || '';\n const newW = width || '';\n const newH = height || '';\n const noChanges = currW == newW && currH == newH;\n style.width = isNumber(newW) ? `${newW}${un}` : newW;\n style.height = isNumber(newH) ? `${newH}${un}` : newH;\n return { noChanges, width, height, newW, newH };\n },\n\n render() {\n const { frame, $el, ppfx, cv, model, el } = this;\n const { onRender } = model.attributes;\n frame && frame.remove();\n this.__handleSize();\n frame.render();\n $el\n .empty()\n .attr({ class: `${ppfx}frame-wrapper` })\n .append(\n `\n
\n
\n ${model.get('name') || ''}\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n `\n )\n .append(frame.el);\n const elTools = createEl(\n 'div',\n {\n class: `${ppfx}tools`,\n style: 'pointer-events:none; display: none'\n },\n `\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n `\n );\n this.elTools = elTools;\n const twrp = cv.toolsWrapper;\n twrp && twrp.appendChild(elTools); // TODO remove on frame remove\n onRender &&\n onRender({\n el,\n elTop: el.querySelector('[data-frame-top]'),\n elRight: el.querySelector('[data-frame-right]'),\n elBottom: el.querySelector('[data-frame-bottom]'),\n elLeft: el.querySelector('[data-frame-left]'),\n frame: model,\n frameWrapperView: this,\n remove: this.remove,\n startDrag: this.startDrag\n });\n return this;\n }\n});\n","import DomainViews from 'domain_abstract/view/DomainViews';\nimport FrameWrapView from './FrameWrapView';\n\nexport default DomainViews.extend({\n itemView: FrameWrapView,\n autoAdd: 1,\n\n init() {\n this.listenTo(this.collection, 'reset', this.render);\n },\n\n onRemoveBefore(items, opts) {\n items.forEach(item => item.remove(opts));\n },\n\n onRender() {\n const { config, $el } = this;\n const { em } = config;\n em && $el.attr({ class: `${em.getConfig('stylePrefix')}frames` });\n }\n});\n","import Backbone from 'backbone';\nimport { bindAll } from 'underscore';\nimport {\n on,\n off,\n getElement,\n getKeyChar,\n isTextNode,\n getElRect\n} from 'utils/mixins';\nimport FramesView from './FramesView';\n\nconst $ = Backbone.$;\nlet timerZoom;\n\nexport default Backbone.View.extend({\n events: {\n wheel: 'onWheel'\n },\n\n template() {\n const { pfx } = this;\n return `\n
\n
\n `;\n },\n\n initialize(o) {\n bindAll(this, 'clearOff', 'onKeyPress', 'onCanvasMove');\n const { model } = this;\n this.config = o.config || {};\n this.em = this.config.em || {};\n this.pfx = this.config.stylePrefix || '';\n this.ppfx = this.config.pStylePrefix || '';\n this.className = this.config.stylePrefix + 'canvas';\n const { em } = this;\n this._initFrames();\n this.listenTo(em, 'change:canvasOffset', this.clearOff);\n this.listenTo(em, 'component:selected', this.checkSelected);\n this.listenTo(model, 'change:zoom change:x change:y', this.updateFrames);\n this.listenTo(model, 'change:frames', this._onFramesUpdate);\n this.toggleListeners(1);\n },\n\n _onFramesUpdate() {\n this._initFrames();\n this._renderFrames();\n },\n\n _initFrames() {\n const { frames, model, config, em } = this;\n const collection = model.get('frames');\n em.set('readyCanvas', 0);\n collection.once('loaded:all', () => em.set('readyCanvas', 1));\n frames && frames.remove();\n this.frames = new FramesView({\n collection,\n config: {\n ...config,\n canvasView: this\n }\n });\n },\n\n checkSelected(component, opts = {}) {\n const { scroll } = opts;\n const currFrame = this.em.get('currentFrame');\n\n scroll &&\n component.views.forEach(view => {\n view._getFrame() !== currFrame && view.scrollIntoView(scroll);\n });\n },\n\n remove() {\n this.frames.remove();\n const frm = this.model.get('frames');\n frm.remove(frm.models);\n this.frames = {};\n Backbone.View.prototype.remove.apply(this, arguments);\n this.toggleListeners();\n },\n\n preventDefault(ev) {\n if (ev) {\n ev.preventDefault();\n ev._parentEvent && ev._parentEvent.preventDefault();\n }\n },\n\n onCanvasMove(ev) {\n // const data = { x: ev.clientX, y: ev.clientY };\n // const data2 = this.em.get('Canvas').getMouseRelativeCanvas(ev);\n // const data3 = this.em.get('Canvas').getMouseRelativePos(ev);\n // this.em.trigger('canvas:over', data, data2, data3);\n },\n\n toggleListeners(enable) {\n const { el } = this;\n const fn = enable ? on : off;\n fn(document, 'keypress', this.onKeyPress);\n fn(window, 'scroll resize', this.clearOff);\n // fn(el, 'mousemove dragover', this.onCanvasMove);\n },\n\n onKeyPress(ev) {\n const { em } = this;\n const key = getKeyChar(ev);\n\n if (\n key === ' ' &&\n em.getZoomDecimal() !== 1 &&\n !em.get('Canvas').isInputFocused()\n ) {\n this.preventDefault(ev);\n em.get('Editor').runCommand('core:canvas-move');\n }\n },\n\n onWheel(ev) {\n if ((ev.ctrlKey || ev.metaKey) && this.em.getConfig('multiFrames')) {\n this.preventDefault(ev);\n const { model } = this;\n const delta = Math.max(-1, Math.min(1, ev.wheelDelta || -ev.detail));\n const zoom = model.get('zoom');\n model.set('zoom', zoom + delta * 2);\n }\n },\n\n updateFrames(ev) {\n const { em, model } = this;\n const { x, y } = model.attributes;\n const zoom = this.getZoom();\n const defOpts = { preserveSelected: 1 };\n const mpl = zoom ? 1 / zoom : 1;\n this.framesArea.style.transform = `scale(${zoom}) translate(${x *\n mpl}px, ${y * mpl}px)`;\n this.clearOff();\n em.stopDefault(defOpts);\n em.trigger('canvas:update', ev);\n timerZoom && clearTimeout(timerZoom);\n timerZoom = setTimeout(() => em.runDefault(defOpts), 300);\n },\n\n getZoom() {\n return this.em.getZoomDecimal();\n },\n\n /**\n * Checks if the element is visible in the canvas's viewport\n * @param {HTMLElement} el\n * @return {Boolean}\n */\n isElInViewport(el) {\n const elem = getElement(el);\n const rect = getElRect(elem);\n const frameRect = this.getFrameOffset(elem);\n const rTop = rect.top;\n const rLeft = rect.left;\n return (\n rTop >= 0 &&\n rLeft >= 0 &&\n rTop <= frameRect.height &&\n rLeft <= frameRect.width\n );\n },\n\n /**\n * Get the offset of the element\n * @param {HTMLElement} el\n * @return {Object}\n */\n offset(el, opts = {}) {\n const rect = getElRect(el);\n const docBody = el.ownerDocument.body;\n const { noScroll } = opts;\n\n return {\n top: rect.top + (noScroll ? 0 : docBody.scrollTop),\n left: rect.left + (noScroll ? 0 : docBody.scrollLeft),\n width: rect.width,\n height: rect.height\n };\n },\n\n /**\n * Cleare cached offsets\n * @private\n */\n clearOff() {\n this.frmOff = null;\n this.cvsOff = null;\n },\n\n /**\n * Return frame offset\n * @return {Object}\n * @private\n */\n getFrameOffset(el) {\n if (!this.frmOff || el) {\n const frame = this.frame.el;\n const frEl = el ? el.ownerDocument.defaultView.frameElement : frame;\n this.frmOff = this.offset(frEl || frame);\n }\n return this.frmOff;\n },\n\n /**\n * Return canvas offset\n * @return {Object}\n * @private\n */\n getCanvasOffset() {\n if (!this.cvsOff) this.cvsOff = this.offset(this.el);\n return this.cvsOff;\n },\n\n /**\n * Returns element's rect info\n * @param {HTMLElement} el\n * @return {Object}\n * @private\n */\n getElementPos(el, opts) {\n const zoom = this.getZoom();\n var opt = opts || {};\n var frmOff = this.getFrameOffset(el);\n var cvsOff = this.getCanvasOffset();\n var eo = this.offset(el, opts);\n\n var frmTop = opt.avoidFrameOffset ? 0 : frmOff.top;\n var frmLeft = opt.avoidFrameOffset ? 0 : frmOff.left;\n\n const top = eo.top * zoom + frmTop - cvsOff.top;\n const left = eo.left * zoom + frmLeft - cvsOff.left;\n const height = eo.height * zoom;\n const width = eo.width * zoom;\n\n return { top, left, height, width, zoom, rect: eo };\n },\n\n /**\n * Returns element's offsets like margins and paddings\n * @param {HTMLElement} el\n * @return {Object}\n * @private\n */\n getElementOffsets(el) {\n if (!el || isTextNode(el)) return {};\n const result = {};\n const styles = window.getComputedStyle(el);\n [\n 'marginTop',\n 'marginRight',\n 'marginBottom',\n 'marginLeft',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft'\n ].forEach(offset => {\n result[offset] = parseFloat(styles[offset]) * this.getZoom();\n });\n\n return result;\n },\n\n /**\n * Returns position data of the canvas element\n * @return {Object} obj Position object\n * @private\n */\n getPosition(opts = {}) {\n const doc = this.frame.el.contentDocument;\n if (!doc) return;\n const bEl = doc.body;\n const zoom = this.getZoom();\n const fo = this.getFrameOffset();\n const co = this.getCanvasOffset();\n const { noScroll } = opts;\n\n return {\n top: fo.top + (noScroll ? 0 : bEl.scrollTop) * zoom - co.top,\n left: fo.left + (noScroll ? 0 : bEl.scrollLeft) * zoom - co.left,\n width: co.width,\n height: co.height\n };\n },\n\n /**\n * Update javascript of a specific component passed by its View\n * @param {View} view Component's View\n * @private\n */\n updateScript(view) {\n const model = view.model;\n const id = model.getId();\n\n if (!view.scriptContainer) {\n view.scriptContainer = $(`
`);\n this.getJsContainer().appendChild(view.scriptContainer.get(0));\n }\n\n view.el.id = id;\n view.scriptContainer.html('');\n // In editor, I make use of setTimeout as during the append process of elements\n // those will not be available immediately, therefore 'item' variable\n const script = document.createElement('script');\n const scriptFn = model.getScriptString();\n const scriptFnStr = model.get('script-props')\n ? scriptFn\n : `function(){\\n${scriptFn}\\n;}`;\n const scriptProps = JSON.stringify(model.__getScriptProps());\n script.innerHTML = `\n setTimeout(function() {\n var item = document.getElementById('${id}');\n if (!item) return;\n (${scriptFnStr}.bind(item))(${scriptProps})\n }, 1);`;\n // #873\n // Adding setTimeout will make js components work on init of the editor\n setTimeout(() => {\n const scr = view.scriptContainer;\n scr && scr.get(0).appendChild(script);\n }, 0);\n },\n\n /**\n * Get javascript container\n * @private\n */\n getJsContainer(view) {\n const frameView = this.getFrameView(view);\n return frameView && frameView.getJsContainer();\n },\n\n getFrameView(view) {\n return (view && view._getFrame()) || this.em.get('currentFrame');\n },\n\n _renderFrames() {\n if (!this.ready) return;\n const { model, frames, em, framesArea } = this;\n const frms = model.get('frames');\n frms.listenToLoad();\n frames.render();\n const mainFrame = frms.at(0);\n const currFrame = mainFrame && mainFrame.view;\n em.setCurrentFrame(currFrame);\n framesArea && framesArea.appendChild(frames.el);\n this.frame = currFrame;\n },\n\n render() {\n const { el, $el, ppfx, config } = this;\n $el.html(this.template());\n const $frames = $el.find('[data-frames]');\n this.framesArea = $frames.get(0);\n\n const toolsWrp = $el.find('[data-tools]');\n this.toolsWrapper = toolsWrp.get(0);\n toolsWrp.append(`\n
\n
\n
\n
\n
\n
\n ${config.extHl ? `
` : ''}\n
\n
\n
\n
\n
\n
\n
\n `);\n const toolsEl = el.querySelector(`#${ppfx}tools`);\n this.hlEl = el.querySelector(`.${ppfx}highlighter`);\n this.badgeEl = el.querySelector(`.${ppfx}badge`);\n this.placerEl = el.querySelector(`.${ppfx}placeholder`);\n this.ghostEl = el.querySelector(`.${ppfx}ghost`);\n this.toolbarEl = el.querySelector(`.${ppfx}toolbar`);\n this.resizerEl = el.querySelector(`.${ppfx}resizer`);\n this.offsetEl = el.querySelector(`.${ppfx}offset-v`);\n this.fixedOffsetEl = el.querySelector(`.${ppfx}offset-fixed-v`);\n this.toolsGlobEl = el.querySelector(`.${ppfx}tools-gl`);\n this.toolsEl = toolsEl;\n this.el.className = this.className;\n this.ready = 1;\n this._renderFrames();\n\n return this;\n }\n});\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/canvas/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * canvas: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const canvas = editor.Canvas;\n * ```\n *\n * * [getConfig](#getconfig)\n * * [getElement](#getelement)\n * * [getFrameEl](#getframeel)\n * * [getWindow](#getwindow)\n * * [getDocument](#getdocument)\n * * [getBody](#getbody)\n * * [setCustomBadgeLabel](#setcustombadgelabel)\n * * [hasFocus](#hasfocus)\n * * [scrollTo](#scrollto)\n * * [setZoom](#setzoom)\n * * [getZoom](#getzoom)\n *\n * @module Canvas\n */\n\nimport { getElement, getViewEl } from 'utils/mixins';\nimport defaults from './config/config';\nimport Canvas from './model/Canvas';\nimport canvasView from './view/CanvasView';\n\nexport default () => {\n let c = {};\n let canvas;\n let CanvasView;\n\n return {\n /**\n * Used inside RTE\n * @private\n */\n getCanvasView() {\n return CanvasView;\n },\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Canvas',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config = {}) {\n c = {\n ...defaults,\n ...config,\n module: this\n };\n\n this.em = c.em;\n const { scripts, styles } = c;\n const ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n canvas = new Canvas({ scripts, styles }, config);\n this.model = canvas;\n this.startAutoscroll = this.startAutoscroll.bind(this);\n this.stopAutoscroll = this.stopAutoscroll.bind(this);\n return this;\n },\n\n onLoad() {\n this.model.init();\n CanvasView = new canvasView({\n model: canvas,\n config: c\n });\n },\n\n getModel() {\n return canvas;\n },\n\n /**\n * Get the configuration object\n * @return {Object}\n */\n getConfig() {\n return c;\n },\n\n /**\n * Get the canvas element\n * @return {HTMLElement}\n */\n getElement() {\n return CanvasView.el;\n },\n\n getFrame(index) {\n return this.getFrames()[index || 0];\n },\n\n /**\n * Get the iframe element of the canvas\n * @return {HTMLIFrameElement}\n */\n getFrameEl() {\n const { frame } = CanvasView;\n return frame && frame.el;\n },\n\n getFramesEl() {\n return CanvasView.framesArea;\n },\n\n /**\n * Get the window instance of the iframe element\n * @return {Window}\n */\n getWindow() {\n return this.getFrameEl().contentWindow;\n },\n\n /**\n * Get the document of the iframe element\n * @return {HTMLDocument}\n */\n getDocument() {\n const frame = this.getFrameEl();\n return frame && frame.contentDocument;\n },\n\n /**\n * Get the body of the iframe element\n * @return {HTMLBodyElement}\n */\n getBody() {\n const doc = this.getDocument();\n return doc && doc.body;\n },\n\n _getCompFrame(compView) {\n return compView && compView._getFrame();\n },\n\n _getLocalEl(globalEl, compView, method) {\n let result = globalEl;\n const frameView = this._getCompFrame(compView);\n result = frameView ? frameView[method]() : result;\n\n return result;\n },\n\n /**\n * Returns element containing all global canvas tools\n * @return {HTMLElement}\n * @private\n */\n getGlobalToolsEl() {\n return CanvasView.toolsGlobEl;\n },\n\n /**\n * Returns element containing all canvas tools\n * @return {HTMLElement}\n * @private\n */\n getToolsEl(compView) {\n return this._getLocalEl(CanvasView.toolsEl, compView, 'getToolsEl');\n },\n\n /**\n * Returns highlighter element\n * @return {HTMLElement}\n * @private\n */\n getHighlighter(compView) {\n return this._getLocalEl(CanvasView.hlEl, compView, 'getHighlighter');\n },\n\n /**\n * Returns badge element\n * @return {HTMLElement}\n * @private\n */\n getBadgeEl(compView) {\n return this._getLocalEl(CanvasView.badgeEl, compView, 'getBadgeEl');\n },\n\n /**\n * Returns placer element\n * @return {HTMLElement}\n * @private\n */\n getPlacerEl() {\n return CanvasView.placerEl;\n },\n\n /**\n * Returns ghost element\n * @return {HTMLElement}\n * @private\n */\n getGhostEl() {\n return CanvasView.ghostEl;\n },\n\n /**\n * Returns toolbar element\n * @return {HTMLElement}\n * @private\n */\n getToolbarEl() {\n return CanvasView.toolbarEl;\n },\n\n /**\n * Returns resizer element\n * @return {HTMLElement}\n * @private\n */\n getResizerEl() {\n return CanvasView.resizerEl;\n },\n\n /**\n * Returns offset viewer element\n * @return {HTMLElement}\n * @private\n */\n getOffsetViewerEl(compView) {\n return this._getLocalEl(\n CanvasView.offsetEl,\n compView,\n 'getOffsetViewerEl'\n );\n },\n\n /**\n * Returns fixed offset viewer element\n * @return {HTMLElement}\n * @private\n */\n getFixedOffsetViewerEl() {\n return CanvasView.fixedOffsetEl;\n },\n\n /**\n * Render canvas\n * @private\n * */\n render() {\n return CanvasView.render().el;\n },\n\n /**\n * Get frame position\n * @return {Object}\n * @private\n */\n getOffset() {\n var frameOff = this.offset(this.getFrameEl());\n var canvasOff = this.offset(this.getElement());\n return {\n top: frameOff.top - canvasOff.top,\n left: frameOff.left - canvasOff.left\n };\n },\n\n /**\n * Get the offset of the passed component element\n * @param {HTMLElement} el\n * @return {Object}\n * @private\n */\n offset(el) {\n return CanvasView.offset(el);\n },\n\n /**\n * Set custom badge naming strategy\n * @param {Function} f\n * @example\n * canvas.setCustomBadgeLabel(function(component){\n * return component.getName();\n * });\n */\n setCustomBadgeLabel(f) {\n c.customBadgeLabel = f;\n },\n\n /**\n * Get element position relative to the canvas\n * @param {HTMLElement} el\n * @return {Object}\n * @private\n */\n getElementPos(el, opts) {\n return CanvasView.getElementPos(el, opts);\n },\n\n /**\n * Returns element's offsets like margins and paddings\n * @param {HTMLElement} el\n * @return {Object}\n * @private\n */\n getElementOffsets(el) {\n return CanvasView.getElementOffsets(el);\n },\n\n /**\n * Get canvas rectangular data\n * @returns {Object}\n */\n getRect() {\n const { top, left } = CanvasView.getPosition();\n return {\n ...CanvasView.getCanvasOffset(),\n topScroll: top,\n leftScroll: left\n };\n },\n\n /**\n * This method comes handy when you need to attach something like toolbars\n * to elements inside the canvas, dealing with all relative position,\n * offsets, etc. and returning as result the object with positions which are\n * viewable by the user (when the canvas is scrolled the top edge of the element\n * is not viewable by the user anymore so the new top edge is the one of the canvas)\n *\n * The target should be visible before being passed here as invisible elements\n * return empty string as width\n * @param {HTMLElement} target The target in this case could be the toolbar\n * @param {HTMLElement} element The element on which I'd attach the toolbar\n * @param {Object} options Custom options\n * @param {Boolean} options.toRight Set to true if you want the toolbar attached to the right\n * @return {Object}\n * @private\n */\n getTargetToElementDim(target, element, options = {}) {\n var opts = options || {};\n var canvasPos = CanvasView.getPosition();\n if (!canvasPos) return;\n var pos = opts.elPos || CanvasView.getElementPos(element);\n var toRight = options.toRight || 0;\n var targetHeight = opts.targetHeight || target.offsetHeight;\n var targetWidth = opts.targetWidth || target.offsetWidth;\n var eventToTrigger = opts.event || null;\n\n var elTop = pos.top - targetHeight;\n var elLeft = pos.left;\n elLeft += toRight ? pos.width : 0;\n elLeft = toRight ? elLeft - targetWidth : elLeft;\n\n var leftPos = elLeft < canvasPos.left ? canvasPos.left : elLeft;\n var topPos = elTop < canvasPos.top ? canvasPos.top : elTop;\n topPos = topPos > pos.top + pos.height ? pos.top + pos.height : topPos;\n\n var result = {\n top: topPos,\n left: leftPos,\n elementTop: pos.top,\n elementLeft: pos.left,\n elementWidth: pos.width,\n elementHeight: pos.height,\n targetWidth: target.offsetWidth,\n targetHeight: target.offsetHeight,\n canvasTop: canvasPos.top,\n canvasLeft: canvasPos.left,\n canvasWidth: canvasPos.width,\n canvasHeight: canvasPos.height\n };\n\n // In this way I can catch data and also change the position strategy\n if (eventToTrigger && c.em) {\n c.em.trigger(eventToTrigger, result);\n }\n\n return result;\n },\n\n canvasRectOffset(el, pos, opts = {}) {\n const getFrameElFromDoc = doc => {\n const { defaultView } = doc;\n return defaultView && defaultView.frameElement;\n };\n\n const rectOff = (el, top = 1, pos) => {\n const zoom = this.em.getZoomDecimal();\n const side = top ? 'top' : 'left';\n const doc = el.ownerDocument;\n const { offsetTop = 0, offsetLeft = 0 } = opts.offset\n ? getFrameElFromDoc(doc)\n : {};\n const { scrollTop = 0, scrollLeft = 0 } = doc.body || {};\n const scroll = top ? scrollTop : scrollLeft;\n const offset = top ? offsetTop : offsetLeft;\n\n // if (!top) {\n // console.log('LEFT', { posLeft: pos[side], scroll, offset }, el);\n // }\n\n return pos[side] - (scroll - offset) * zoom;\n };\n\n return {\n top: rectOff(el, 1, pos),\n left: rectOff(el, 0, pos)\n };\n },\n\n getTargetToElementFixed(el, elToMove, opts = {}) {\n const pos = opts.pos || this.getElementPos(el);\n const cvOff = opts.canvasOff || this.canvasRectOffset(el, pos);\n const toolbarH = elToMove.offsetHeight || 0;\n const toolbarW = elToMove.offsetWidth || 0;\n const elRight = pos.left + pos.width;\n const cv = this.getCanvasView();\n const frCvOff = cv.getPosition();\n const frameOffset = cv.getFrameOffset(el);\n const { event } = opts;\n\n let top = -toolbarH;\n let left = pos.width - toolbarW;\n left = pos.left < -left ? -pos.left : left;\n left = elRight > frCvOff.width ? left - (elRight - frCvOff.width) : left;\n\n // Scroll with the window if the top edge is reached and the\n // element is bigger than the canvas\n const fullHeight = pos.height + toolbarH;\n const elIsShort = fullHeight < frameOffset.height;\n\n if (cvOff.top < toolbarH) {\n if (elIsShort) {\n top = top + fullHeight;\n } else {\n top = -cvOff.top < pos.height ? -cvOff.top : pos.height;\n }\n }\n\n const result = {\n top,\n left,\n canvasOffsetTop: cvOff.top,\n canvasOffsetLeft: cvOff.left\n };\n\n // In this way I can catch data and also change the position strategy\n event && this.em.trigger(event, result);\n\n return result;\n },\n\n /**\n * Instead of simply returning e.clientX and e.clientY this function\n * calculates also the offset based on the canvas. This is helpful when you\n * need to get X and Y position while moving between the editor area and\n * canvas area, which is in the iframe\n * @param {Event} e\n * @return {Object}\n * @private\n */\n getMouseRelativePos(e, options) {\n var opts = options || {};\n var addTop = 0;\n var addLeft = 0;\n var subWinOffset = opts.subWinOffset;\n var doc = e.target.ownerDocument;\n var win = doc.defaultView || doc.parentWindow;\n var frame = win.frameElement;\n var yOffset = subWinOffset ? win.pageYOffset : 0;\n var xOffset = subWinOffset ? win.pageXOffset : 0;\n\n if (frame) {\n var frameRect = frame.getBoundingClientRect();\n addTop = frameRect.top || 0;\n addLeft = frameRect.left || 0;\n }\n\n return {\n y: e.clientY + addTop - yOffset,\n x: e.clientX + addLeft - xOffset\n };\n },\n\n /**\n * X and Y mouse position relative to the canvas\n * @param {Event} ev\n * @return {Object}\n * @private\n */\n getMouseRelativeCanvas(ev, opts) {\n const zoom = this.getZoomDecimal();\n const { top, left } = CanvasView.getPosition(opts);\n\n return {\n y: ev.clientY * zoom + top,\n x: ev.clientX * zoom + left\n };\n },\n\n /**\n * Check if the canvas is focused\n * @return {Boolean}\n */\n hasFocus() {\n return this.getDocument().hasFocus();\n },\n\n /**\n * Detects if some input is focused (input elements, text components, etc.)\n * @return {Boolean}\n * @private\n */\n isInputFocused() {\n const doc = this.getDocument();\n const frame = this.getFrameEl();\n const toIgnore = ['body', ...this.getConfig().notTextable];\n const docActive = frame && document.activeElement === frame;\n const focused = docActive\n ? doc && doc.activeElement\n : document.activeElement;\n\n return focused && !toIgnore.some(item => focused.matches(item));\n },\n\n /**\n * Scroll canvas to the element if it's not visible. The scrolling is\n * executed via `scrollIntoView` API and options of this method are\n * passed to it. For instance, you can scroll smoothly by using\n * `{ behavior: 'smooth' }`.\n * @param {HTMLElement|Component} el\n * @param {Object} [opts={}] Options, same as options for `scrollIntoView`\n * @param {Boolean} [opts.force=false] Force the scroll, even if the element is already visible\n * @example\n * const selected = editor.getSelected();\n * // Scroll smoothly (this behavior can be polyfilled)\n * canvas.scrollTo(selected, { behavior: 'smooth' });\n * // Force the scroll, even if the element is alredy visible\n * canvas.scrollTo(selected, { force: true });\n */\n scrollTo(el, opts = {}) {\n const elem = getElement(el);\n const view = elem && getViewEl(elem);\n view && view.scrollIntoView(opts);\n },\n\n /**\n * Start autoscroll\n * @private\n */\n startAutoscroll(frame) {\n const fr = (frame && frame.view) || this.em.getCurrentFrame();\n fr && fr.startAutoscroll();\n },\n\n /**\n * Stop autoscroll\n * @private\n */\n stopAutoscroll(frame) {\n const fr = (frame && frame.view) || this.em.getCurrentFrame();\n fr && fr.stopAutoscroll();\n },\n\n /**\n * Set zoom value\n * @param {Number} value The zoom value, from 0 to 100\n * @returns {this}\n */\n setZoom(value) {\n canvas.set('zoom', parseFloat(value));\n return this;\n },\n\n /**\n * Get zoom value\n * @returns {Number}\n */\n getZoom() {\n return parseFloat(canvas.get('zoom'));\n },\n\n getZoomDecimal() {\n return this.getZoom() / 100;\n },\n\n getZoomMultiplier() {\n const zoom = this.getZoomDecimal();\n return zoom ? 1 / zoom : 1;\n },\n\n toggleFramesEvents(on) {\n const { style } = this.getFramesEl();\n style.pointerEvents = on ? '' : 'none';\n },\n\n getFrames() {\n return canvas.get('frames').map(item => item);\n },\n\n /**\n * Add new frame to the canvas\n * @param {Object} props Frame properties\n * @returns {Frame}\n * @example\n *\n editor.Canvas.addFrame({\n name: 'Mobile home page',\n x: 100, // Position in canvas\n y: 100,\n width: 500, // Frame dimensions\n height: 600,\n // device: 'DEVICE-ID',\n components: [\n '

Title frame

',\n '

Paragraph frame

',\n ],\n styles: `\n .testh { color: red; }\n .testp { color: blue; }\n `,\n });\n */\n addFrame(props = {}, opts = {}) {\n return canvas.get('frames').add(\n {\n ...props\n },\n {\n ...opts,\n em: this.em\n }\n );\n },\n\n destroy() {\n canvas.stopListening();\n CanvasView && CanvasView.remove();\n [c, canvas, CanvasView].forEach(i => (i = {}));\n ['em', 'model', 'droppable'].forEach(i => (this[i] = {}));\n }\n };\n};\n","export default {\n stylePrefix: 'sm-',\n\n sectors: [],\n\n // Specify the element to use as a container, string (query) or HTMLElement\n // With the empty value, nothing will be rendered\n appendTo: '',\n\n // Hide the property in case it's not stylable for the\n // selected component (each component has 'stylable' property)\n hideNotStylable: true,\n\n // Highlight changed properties of the selected component\n highlightChanged: true,\n\n // Highlight computed properties of the selected component\n highlightComputed: true,\n\n // Show computed properties of the selected component, if this value\n // is set to false, highlightComputed will not take effect\n showComputed: true,\n\n // Adds the possibility to clear property value from the target style\n clearProperties: 0,\n\n // Properties not to take in account for computed styles\n avoidComputed: ['width', 'height']\n};\n","export default () => ({\n /**\n * Build props object by their name\n * @param {Array|string} props Array of properties name\n * @return {Array}\n */\n build(props) {\n var objs = [];\n var dftFixedValues = ['initial', 'inherit'];\n\n if (typeof props === 'string') props = [props];\n\n for (var i = 0, len = props.length; i < len; i++) {\n var obj = {};\n var prop = props[i];\n obj.property = prop;\n\n // Property\n switch (prop) {\n case 'border-radius-c':\n obj.property = 'border-radius';\n break;\n }\n\n // Fixed values\n switch (prop) {\n case 'top':\n case 'right':\n case 'bottom':\n case 'left':\n case 'margin-top':\n case 'margin-right':\n case 'margin-bottom':\n case 'margin-left':\n case 'padding-top':\n case 'padding-right':\n case 'padding-bottom':\n case 'padding-left':\n case 'width':\n case 'max-width':\n case 'min-width':\n case 'height':\n case 'max-height':\n case 'min-height':\n case 'flex-basis':\n obj.fixedValues = ['initial', 'inherit', 'auto'];\n break;\n case 'font-size':\n obj.fixedValues = [\n 'medium',\n 'xx-small',\n 'x-small',\n 'small',\n 'large',\n 'x-large',\n 'xx-large',\n 'smaller',\n 'larger',\n 'length',\n 'initial',\n 'inherit'\n ];\n break;\n case 'letter-spacing':\n case 'line-height':\n obj.fixedValues = ['normal', 'initial', 'inherit'];\n break;\n }\n\n // Type\n switch (prop) {\n case 'float':\n case 'position':\n case 'text-align':\n obj.type = 'radio';\n break;\n case 'display':\n case 'flex-direction':\n case 'flex-wrap':\n case 'justify-content':\n case 'align-items':\n case 'align-content':\n case 'align-self':\n case 'font-family':\n case 'font-weight':\n case 'border-style':\n case 'box-shadow-type':\n case 'background-repeat':\n case 'background-position':\n case 'background-attachment':\n case 'background-size':\n case 'transition-property':\n case 'transition-timing-function':\n case 'cursor':\n case 'overflow':\n case 'overflow-x':\n case 'overflow-y':\n obj.type = 'select';\n break;\n case 'top':\n case 'right':\n case 'bottom':\n case 'left':\n case 'margin-top':\n case 'margin-right':\n case 'margin-bottom':\n case 'margin-left':\n case 'padding-top':\n case 'padding-right':\n case 'padding-bottom':\n case 'padding-left':\n case 'min-height':\n case 'min-width':\n case 'max-height':\n case 'max-width':\n case 'width':\n case 'height':\n case 'font-size':\n case 'letter-spacing':\n case 'line-height':\n case 'text-shadow-h':\n case 'text-shadow-v':\n case 'text-shadow-blur':\n case 'border-radius-c':\n case 'border-top-left-radius':\n case 'border-top-right-radius':\n case 'border-bottom-left-radius':\n case 'border-bottom-right-radius':\n case 'border-width':\n case 'box-shadow-h':\n case 'box-shadow-v':\n case 'box-shadow-blur':\n case 'box-shadow-spread':\n case 'transition-duration':\n case 'perspective':\n case 'transform-rotate-x':\n case 'transform-rotate-y':\n case 'transform-rotate-z':\n case 'transform-scale-x':\n case 'transform-scale-y':\n case 'transform-scale-z':\n case 'order':\n case 'flex-grow':\n case 'flex-shrink':\n case 'flex-basis':\n obj.type = 'integer';\n break;\n case 'margin':\n case 'padding':\n case 'border-radius':\n case 'border':\n case 'transform':\n obj.type = 'composite';\n break;\n case 'color':\n case 'text-shadow-color':\n case 'background-color':\n case 'border-color':\n case 'box-shadow-color':\n obj.type = 'color';\n break;\n case 'text-shadow':\n case 'box-shadow':\n case 'background':\n case 'transition':\n obj.type = 'stack';\n break;\n case 'background-image':\n obj.type = 'file';\n break;\n }\n\n // Defaults\n switch (prop) {\n case 'float':\n case 'background-color':\n case 'text-shadow':\n obj.defaults = 'none';\n break;\n case 'display':\n obj.defaults = 'block';\n break;\n case 'flex-direction':\n obj.defaults = 'row';\n break;\n case 'flex-wrap':\n obj.defaults = 'nowrap';\n break;\n case 'justify-content':\n obj.defaults = 'flex-start';\n break;\n case 'align-items':\n obj.defaults = 'stretch';\n break;\n case 'align-content':\n obj.defaults = 'stretch';\n break;\n case 'align-self':\n obj.defaults = 'auto';\n break;\n case 'position':\n obj.defaults = 'static';\n break;\n case 'margin-top':\n case 'margin-right':\n case 'margin-bottom':\n case 'margin-left':\n case 'padding-top':\n case 'padding-right':\n case 'padding-bottom':\n case 'padding-left':\n case 'text-shadow-h':\n case 'text-shadow-v':\n case 'text-shadow-blur':\n case 'border-radius-c':\n case 'box-shadow-h':\n case 'box-shadow-v':\n case 'box-shadow-spread':\n case 'perspective':\n case 'transform-rotate-x':\n case 'transform-rotate-y':\n case 'transform-rotate-z':\n case 'order':\n case 'flex-grow':\n obj.defaults = 0;\n break;\n case 'border-top-left-radius':\n case 'border-top-right-radius':\n case 'border-bottom-left-radius':\n case 'border-bottom-right-radius':\n obj.defaults = '0px';\n break;\n case 'transform-scale-x':\n case 'transform-scale-y':\n case 'transform-scale-z':\n case 'flex-shrink':\n obj.defaults = 1;\n break;\n case 'box-shadow-blur':\n obj.defaults = '5px';\n break;\n case 'top':\n case 'right':\n case 'bottom':\n case 'left':\n case 'min-height':\n case 'min-width':\n case 'max-height':\n case 'max-width':\n case 'width':\n case 'height':\n case 'background-size':\n case 'cursor':\n case 'flex-basis':\n obj.defaults = 'auto';\n break;\n case 'font-family':\n obj.defaults = 'Arial, Helvetica, sans-serif';\n break;\n case 'font-size':\n case 'border-width':\n obj.defaults = 'medium';\n break;\n case 'font-weight':\n obj.defaults = '400';\n break;\n case 'letter-spacing':\n case 'line-height':\n obj.defaults = 'normal';\n break;\n case 'color':\n case 'text-shadow-color':\n case 'border-color':\n case 'box-shadow-color':\n obj.defaults = 'black';\n break;\n case 'text-align':\n obj.defaults = 'left';\n break;\n case 'border-style':\n obj.defaults = 'solid';\n break;\n case 'box-shadow-type':\n obj.defaults = '';\n break;\n case 'background-repeat':\n obj.defaults = 'repeat';\n break;\n case 'background-position':\n obj.defaults = 'left top';\n break;\n case 'background-attachment':\n obj.defaults = 'scroll';\n break;\n case 'transition-property':\n obj.defaults = 'width';\n break;\n case 'transition-duration':\n obj.defaults = '2';\n break;\n case 'transition-timing-function':\n obj.defaults = 'ease';\n break;\n case 'overflow':\n case 'overflow-x':\n case 'overflow-y':\n obj.defaults = 'visible';\n break;\n }\n\n /*\n * Add styleable dependency on other properties. Allows properties to be\n * dynamically hidden or shown based on values of other properties.\n *\n * Property will be styleable if all of the properties (keys) in the\n * requires object have any of the values specified in the array.\n */\n switch (prop) {\n case 'flex-direction':\n case 'flex-wrap':\n case 'justify-content':\n case 'align-items':\n case 'align-content':\n obj.requires = { display: ['flex'] };\n break;\n case 'order':\n case 'flex-basis':\n case 'flex-grow':\n case 'flex-shrink':\n case 'align-self':\n obj.requiresParent = { display: ['flex'] };\n break;\n }\n\n // Units\n switch (prop) {\n case 'top':\n case 'bottom':\n case 'margin-top':\n case 'margin-bottom':\n case 'padding-top':\n case 'padding-bottom':\n case 'min-height':\n case 'max-height':\n case 'height':\n obj.units = ['px', '%', 'vh'];\n break;\n case 'right':\n case 'left':\n case 'margin-right':\n case 'margin-left':\n case 'padding-right':\n case 'padding-left':\n case 'min-width':\n case 'max-width':\n case 'width':\n obj.units = ['px', '%', 'vw'];\n break;\n case 'flex-basis':\n obj.units = ['px', '%', 'vw', 'vh'];\n break;\n case 'text-shadow-v':\n case 'text-shadow-h':\n case 'text-shadow-blur':\n case 'border-radius-c':\n case 'border-top-left-radius':\n case 'border-top-right-radius':\n case 'border-bottom-left-radius':\n case 'border-bottom-right-radius':\n case 'box-shadow-h':\n case 'box-shadow-v':\n obj.units = ['px', '%'];\n break;\n case 'font-size':\n case 'letter-spacing':\n case 'line-height':\n obj.units = ['px', 'em', 'rem', '%'];\n break;\n case 'border-width':\n obj.units = ['px', 'em'];\n break;\n case 'box-shadow-blur':\n case 'box-shadow-spread':\n case 'perspective':\n obj.units = ['px'];\n break;\n case 'transition-duration':\n obj.units = ['s'];\n break;\n case 'transform-rotate-x':\n case 'transform-rotate-y':\n case 'transform-rotate-z':\n obj.units = ['deg'];\n break;\n }\n\n // Min/Max\n switch (prop) {\n case 'padding-top':\n case 'padding-right':\n case 'padding-bottom':\n case 'padding-left':\n case 'min-height':\n case 'min-width':\n case 'max-height':\n case 'max-width':\n case 'width':\n case 'height':\n case 'font-size':\n case 'text-shadow-blur':\n case 'border-radius-c':\n case 'border-top-left-radius':\n case 'border-top-right-radius':\n case 'border-bottom-left-radius':\n case 'border-bottom-right-radius':\n case 'border-width':\n case 'box-shadow-blur':\n case 'transition-duration':\n case 'perspective':\n case 'flex-basis':\n obj.min = 0;\n break;\n }\n\n // Preview\n switch (prop) {\n case 'text-shadow':\n case 'box-shadow':\n case 'background':\n obj.preview = true;\n break;\n }\n\n // Detached\n switch (prop) {\n case 'background':\n obj.detached = true;\n break;\n }\n\n // Functions\n switch (prop) {\n case 'transform-rotate-x':\n obj.functionName = 'rotateX';\n break;\n case 'transform-rotate-y':\n obj.functionName = 'rotateY';\n break;\n case 'transform-rotate-z':\n obj.functionName = 'rotateZ';\n break;\n case 'transform-scale-x':\n obj.functionName = 'scaleX';\n break;\n case 'transform-scale-y':\n obj.functionName = 'scaleY';\n break;\n case 'transform-scale-z':\n obj.functionName = 'scaleZ';\n break;\n case 'background-image':\n obj.functionName = 'url';\n break;\n }\n\n // Options\n switch (prop) {\n case 'float':\n obj.list = [{ value: 'none' }, { value: 'left' }, { value: 'right' }];\n break;\n case 'display':\n obj.list = [\n { value: 'block' },\n { value: 'inline' },\n { value: 'inline-block' },\n { value: 'flex' },\n { value: 'none' }\n ];\n break;\n case 'flex-direction':\n obj.list = [\n { value: 'row' },\n { value: 'row-reverse' },\n { value: 'column' },\n { value: 'column-reverse' }\n ];\n break;\n case 'flex-wrap':\n obj.list = [\n { value: 'nowrap' },\n { value: 'wrap' },\n { value: 'wrap-reverse' }\n ];\n break;\n case 'justify-content':\n obj.list = [\n { value: 'flex-start' },\n { value: 'flex-end' },\n { value: 'center' },\n { value: 'space-between' },\n { value: 'space-around' },\n { value: 'space-evenly' }\n ];\n break;\n case 'align-items':\n obj.list = [\n { value: 'flex-start' },\n { value: 'flex-end' },\n { value: 'center' },\n { value: 'baseline' },\n { value: 'stretch' }\n ];\n break;\n case 'align-content':\n obj.list = [\n { value: 'flex-start' },\n { value: 'flex-end' },\n { value: 'center' },\n { value: 'space-between' },\n { value: 'space-around' },\n { value: 'stretch' }\n ];\n break;\n case 'align-self':\n obj.list = [\n { value: 'auto' },\n { value: 'flex-start' },\n { value: 'flex-end' },\n { value: 'center' },\n { value: 'baseline' },\n { value: 'stretch' }\n ];\n break;\n case 'position':\n obj.list = [\n { value: 'static' },\n { value: 'relative' },\n { value: 'absolute' },\n { value: 'fixed' }\n ];\n break;\n case 'font-family':\n var ss = ', sans-serif';\n var fonts = [\n 'Arial, Helvetica' + ss,\n 'Arial Black, Gadget' + ss,\n 'Brush Script MT' + ss,\n 'Comic Sans MS, cursive' + ss,\n 'Courier New, Courier, monospace',\n 'Georgia, serif',\n 'Helvetica' + ss,\n 'Impact, Charcoal' + ss,\n 'Lucida Sans Unicode, Lucida Grande' + ss,\n 'Tahoma, Geneva' + ss,\n 'Times New Roman, Times, serif',\n 'Trebuchet MS, Helvetica' + ss,\n 'Verdana, Geneva' + ss\n ];\n obj.list = [];\n for (var j = 0, l = fonts.length; j < l; j++) {\n var font = {};\n font.value = fonts[j];\n font.name = fonts[j].split(',')[0];\n obj.list.push(font);\n }\n break;\n case 'font-weight':\n obj.list = [\n { value: '100', name: 'Thin' },\n { value: '200', name: 'Extra-Light' },\n { value: '300', name: 'Light' },\n { value: '400', name: 'Normal' },\n { value: '500', name: 'Medium' },\n { value: '600', name: 'Semi-Bold' },\n { value: '700', name: 'Bold' },\n { value: '800', name: 'Extra-Bold' },\n { value: '900', name: 'Ultra-Bold' }\n ];\n break;\n case 'text-align':\n obj.list = [\n { value: 'left' },\n { value: 'center' },\n { value: 'right' },\n { value: 'justify' }\n ];\n break;\n case 'border-style':\n obj.list = [\n { value: 'none' },\n { value: 'solid' },\n { value: 'dotted' },\n { value: 'dashed' },\n { value: 'double' },\n { value: 'groove' },\n { value: 'ridge' },\n { value: 'inset' },\n { value: 'outset' }\n ];\n break;\n case 'box-shadow-type':\n obj.list = [\n { value: '', name: 'Outside' },\n { value: 'inset', name: 'Inside' }\n ];\n break;\n case 'background-repeat':\n obj.list = [\n { value: 'repeat' },\n { value: 'repeat-x' },\n { value: 'repeat-y' },\n { value: 'no-repeat' }\n ];\n break;\n case 'background-position':\n obj.list = [\n { value: 'left top' },\n { value: 'left center' },\n { value: 'left bottom' },\n { value: 'right top' },\n { value: 'right center' },\n { value: 'right bottom' },\n { value: 'center top' },\n { value: 'center center' },\n { value: 'center bottom' }\n ];\n break;\n case 'background-attachment':\n obj.list = [\n { value: 'scroll' },\n { value: 'fixed' },\n { value: 'local' }\n ];\n break;\n case 'background-size':\n obj.list = [\n { value: 'auto' },\n { value: 'cover' },\n { value: 'contain' }\n ];\n break;\n case 'transition-property':\n obj.list = [\n { value: 'all' },\n { value: 'width' },\n { value: 'height' },\n { value: 'background-color' },\n { value: 'transform' },\n { value: 'box-shadow' },\n { value: 'opacity' }\n ];\n break;\n case 'transition-timing-function':\n obj.list = [\n { value: 'linear' },\n { value: 'ease' },\n { value: 'ease-in' },\n { value: 'ease-out' },\n { value: 'ease-in-out' }\n ];\n break;\n case 'cursor':\n obj.list = [\n { value: 'auto' },\n { value: 'pointer' },\n { value: 'copy' },\n { value: 'crosshair' },\n { value: 'grab' },\n { value: 'grabbing' },\n { value: 'help' },\n { value: 'move' },\n { value: 'text' }\n ];\n break;\n case 'overflow':\n case 'overflow-x':\n case 'overflow-y':\n obj.list = [\n { value: 'visible' },\n { value: 'hidden' },\n { value: 'scroll' },\n { value: 'auto' }\n ];\n break;\n }\n\n // Properties\n switch (prop) {\n case 'margin':\n obj.properties = this.build([\n 'margin-top',\n 'margin-right',\n 'margin-bottom',\n 'margin-left'\n ]);\n break;\n case 'padding':\n obj.properties = this.build([\n 'padding-top',\n 'padding-right',\n 'padding-bottom',\n 'padding-left'\n ]);\n break;\n case 'text-shadow':\n obj.properties = this.build([\n 'text-shadow-h',\n 'text-shadow-v',\n 'text-shadow-blur',\n 'text-shadow-color'\n ]);\n break;\n case 'border':\n obj.properties = this.build([\n 'border-width',\n 'border-style',\n 'border-color'\n ]);\n break;\n case 'border-radius':\n obj.properties = this.build([\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-bottom-right-radius',\n 'border-bottom-left-radius'\n ]);\n break;\n case 'box-shadow':\n obj.properties = this.build([\n 'box-shadow-h',\n 'box-shadow-v',\n 'box-shadow-blur',\n 'box-shadow-spread',\n 'box-shadow-color',\n 'box-shadow-type'\n ]);\n break;\n case 'background':\n obj.properties = this.build([\n 'background-image',\n 'background-repeat',\n 'background-position',\n 'background-attachment',\n 'background-size'\n ]);\n break;\n case 'transition':\n obj.properties = this.build([\n 'transition-property',\n 'transition-duration',\n 'transition-timing-function'\n ]);\n break;\n case 'transform':\n obj.properties = this.build([\n 'transform-rotate-x',\n 'transform-rotate-y',\n 'transform-rotate-z',\n 'transform-scale-x',\n 'transform-scale-y',\n 'transform-scale-z'\n ]);\n break;\n }\n\n objs.push(obj);\n }\n\n return objs;\n }\n});\n","import Backbone from 'backbone';\nimport { extend } from 'underscore';\nimport Properties from './Properties';\nimport PropertyFactory from './PropertyFactory';\n\nexport default Backbone.Model.extend({\n defaults: {\n id: '',\n name: '',\n open: true,\n buildProps: '',\n extendBuilded: 1,\n properties: []\n },\n\n initialize(opts) {\n const o = opts || {};\n const builded = this.buildProperties(o.buildProps);\n const name = this.get('name') || '';\n let props = [];\n !this.get('id') && this.set('id', name.replace(/ /g, '_').toLowerCase());\n\n if (!builded) props = this.get('properties');\n else props = this.extendProperties(builded);\n\n const propsModel = new Properties(props);\n propsModel.sector = this;\n this.set('properties', propsModel);\n },\n\n /**\n * Extend properties\n * @param {Array} props Start properties\n * @param {Array} moProps Model props\n * @param {Boolean} ex Returns the same amount of passed model props\n * @return {Array} Final props\n * @private\n */\n extendProperties(props, moProps, ex) {\n var pLen = props.length;\n var mProps = moProps || this.get('properties');\n var ext = this.get('extendBuilded');\n var isolated = [];\n\n for (var i = 0, len = mProps.length; i < len; i++) {\n var mProp = mProps[i];\n var found = 0;\n\n for (var j = 0; j < pLen; j++) {\n var prop = props[j];\n if (mProp.property == prop.property || mProp.id == prop.property) {\n // Check for nested properties\n var mPProps = mProp.properties;\n if (mPProps && mPProps.length) {\n mProp.properties = this.extendProperties(\n prop.properties || [],\n mPProps,\n 1\n );\n }\n props[j] = ext ? extend(prop, mProp) : mProp;\n isolated[j] = props[j];\n found = 1;\n continue;\n }\n }\n\n if (!found) {\n props.push(mProp);\n isolated.push(mProp);\n }\n }\n\n return ex ? isolated.filter(i => i) : props;\n },\n\n /**\n * Build properties\n * @param {Array} propr Array of props as sting\n * @return {Array}\n * @private\n */\n buildProperties(props) {\n var r;\n var buildP = props || [];\n\n if (!buildP.length) return;\n\n if (!this.propFactory) this.propFactory = new PropertyFactory();\n\n r = this.propFactory.build(buildP);\n\n return r;\n }\n});\n","import Backbone from 'backbone';\nimport Sector from './Sector';\n\nexport default Backbone.Collection.extend({\n model: Sector,\n\n initialize() {\n this.listenTo(this, 'reset', this.onReset);\n },\n\n onReset(models, opts = {}) {\n const prev = opts.previousModels || [];\n prev.forEach(sect => sect.get('properties').reset());\n }\n});\n","import Backbone from 'backbone';\nimport { template } from 'underscore';\nimport PropertiesView from './PropertiesView';\n\nexport default Backbone.View.extend({\n template: template(`\n
title\" data-sector-title>\n caret\" class=\"fa\">\n <%= label %>\n
`),\n\n events: {\n 'click [data-sector-title]': 'toggle'\n },\n\n initialize(o) {\n this.config = o.config || {};\n this.em = this.config.em;\n this.pfx = this.config.stylePrefix || '';\n this.target = o.target || {};\n this.propTarget = o.propTarget || {};\n this.caretR = 'fa-caret-right';\n this.caretD = 'fa-caret-down';\n const model = this.model;\n this.listenTo(model, 'change:open', this.updateOpen);\n this.listenTo(model, 'updateVisibility', this.updateVisibility);\n this.listenTo(model, 'destroy remove', this.remove);\n },\n\n /**\n * If all properties are hidden this will hide the sector\n */\n updateVisibility() {\n var show;\n this.model.get('properties').each(prop => {\n if (prop.get('visible')) {\n show = 1;\n }\n });\n this.el.style.display = show ? '' : 'none';\n },\n\n /**\n * Update visibility\n */\n updateOpen() {\n if (this.model.get('open')) this.show();\n else this.hide();\n },\n\n /**\n * Show the content of the sector\n * */\n show() {\n this.$el.addClass(this.pfx + 'open');\n this.getPropertiesEl().style.display = '';\n this.$caret.removeClass(this.caretR).addClass(this.caretD);\n },\n\n /**\n * Hide the content of the sector\n * */\n hide() {\n this.$el.removeClass(this.pfx + 'open');\n this.getPropertiesEl().style.display = 'none';\n this.$caret.removeClass(this.caretD).addClass(this.caretR);\n },\n\n getPropertiesEl() {\n return this.$el.find(`.${this.pfx}properties`).get(0);\n },\n\n /**\n * Toggle visibility\n * */\n toggle(e) {\n var v = this.model.get('open') ? 0 : 1;\n this.model.set('open', v);\n },\n\n render() {\n const { pfx, model, em, $el } = this;\n const { id, name } = model.attributes;\n const label = (em && em.t(`styleManager.sectors.${id}`)) || name;\n $el.html(this.template({ pfx, label }));\n this.$caret = $el.find(`#${pfx}caret`);\n this.renderProperties();\n $el.attr('class', `${pfx}sector ${pfx}sector__${id} no-select`);\n this.updateOpen();\n return this;\n },\n\n renderProperties() {\n var objs = this.model.get('properties');\n\n if (objs) {\n var view = new PropertiesView({\n collection: objs,\n target: this.target,\n propTarget: this.propTarget,\n config: this.config\n });\n this.$el.append(view.render().el);\n }\n }\n});\n","import Backbone from 'backbone';\nimport { extend, isString, isArray } from 'underscore';\nimport { isTaggableNode } from 'utils/mixins';\nimport { appendAtIndex } from 'utils/dom';\nimport SectorView from './SectorView';\n\nconst helperCls = 'hc-state';\n\nexport default Backbone.View.extend({\n initialize(o = {}) {\n const config = o.config || {};\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.target = o.target || {};\n this.config = config;\n\n // The target that will emit events for properties\n const target = {};\n extend(target, Backbone.Events);\n const body = document.body;\n const dummy = document.createElement(`el-${new Date().getTime()}`);\n body.appendChild(dummy);\n target.computedDefault = { ...window.getComputedStyle(dummy) };\n body.removeChild(dummy);\n this.propTarget = target;\n const coll = this.collection;\n const events =\n 'component:toggled component:update:classes change:state change:device frame:resized';\n this.listenTo(coll, 'add', this.addTo);\n this.listenTo(coll, 'reset', this.render);\n this.listenTo(this.target, events, this.targetUpdated);\n },\n\n remove() {\n Backbone.View.prototype.remove.apply(this, arguments);\n ['target', 'config', 'propTarget'].forEach(i => (this[i] = {}));\n },\n\n /**\n * Add to collection\n * @param {Object} model Model\n * @return {Object}\n * @private\n * */\n addTo(model, coll, opts = {}) {\n this.addToCollection(model, null, opts);\n },\n\n toggleStateCls(targets = [], enable) {\n targets.forEach(trg => {\n const el = trg.getEl();\n el && el.classList && el.classList[enable ? 'add' : 'remove'](helperCls);\n });\n },\n\n /**\n * Fired when target is updated\n * @private\n */\n targetUpdated(trg) {\n const em = this.target;\n const pt = this.propTarget;\n const targets = em.getSelectedAll();\n let model = em.getSelected();\n const mdToClear = trg && !!trg.toHTML ? trg : model;\n\n // Clean components\n mdToClear && this.toggleStateCls([mdToClear]);\n if (!model) return;\n\n const config = em.get('Config');\n const state = !config.devicePreviewMode ? em.get('state') : '';\n const { componentFirst } = em.get('SelectorManager').getConfig();\n const el = model.getEl();\n pt.helper = null;\n pt.targets = null;\n\n // Create computed style container\n if (el && isTaggableNode(el)) {\n const stateStr = state ? `:${state}` : null;\n pt.computed = window.getComputedStyle(el, stateStr);\n }\n\n // Create a new rule for the state as a helper\n const appendStateRule = (style = {}) => {\n const cc = em.get('CssComposer');\n const rules = cc.getAll();\n let helperRule = cc.getClassRule(helperCls);\n\n if (!helperRule) {\n helperRule = cc.setClassRule(helperCls);\n } else {\n // I will make it last again, otherwise it could be overridden\n rules.remove(helperRule);\n rules.add(helperRule);\n }\n\n helperRule.set('important', 1);\n helperRule.setStyle(style);\n pt.helper = helperRule;\n };\n\n const sm = em.get('StyleManager');\n const target = sm.getModelToStyle(model);\n\n if (state) {\n appendStateRule(target.getStyle());\n this.toggleStateCls(targets, 1);\n }\n\n pt.model = target;\n pt.parentRules = sm.getParentRules(target, state);\n if (componentFirst) {\n pt.targets = targets.map(t => sm.getModelToStyle(t)).filter(Boolean);\n }\n pt.trigger('update');\n },\n\n /**\n * Select different target for the Style Manager.\n * It could be a Component, CSSRule, or a string of any CSS selector\n * @param {Component|CSSRule|String|Array} target\n * @return {Array} Array of Components/CSSRules\n */\n setTarget(target, opts = {}) {\n const em = this.target;\n const trgs = isArray(target) ? target : [target];\n const { targetIsClass, stylable } = opts;\n const models = [];\n\n trgs.forEach(target => {\n let model = target;\n\n if (isString(target)) {\n let rule;\n const rules = em.get('CssComposer').getAll();\n\n if (targetIsClass) {\n rule = rules.filter(\n rule => rule.get('selectors').getFullString() === target\n )[0];\n }\n\n if (!rule) {\n rule = rules.filter(rule => rule.get('selectorsAdd') === target)[0];\n }\n\n if (!rule) {\n rule = rules.add({ selectors: [], selectorsAdd: target });\n }\n\n stylable && rule.set({ stylable });\n model = rule;\n }\n\n models.push(model);\n });\n\n const pt = this.propTarget;\n pt.targets = models;\n pt.trigger('update', { targets: models });\n return models;\n },\n\n /**\n * Add new object to collection\n * @param {Object} model Model\n * @param {Object} fragmentEl collection\n * @return {Object} Object created\n * @private\n * */\n addToCollection(model, fragmentEl, opts = {}) {\n const { pfx, target, propTarget, config, el } = this;\n const appendTo = fragmentEl || el;\n const rendered = new SectorView({\n model,\n id: `${pfx}${model.get('id')}`,\n name: model.get('name'),\n properties: model.get('properties'),\n target,\n propTarget,\n config\n }).render().el;\n appendAtIndex(appendTo, rendered, opts.at);\n\n return rendered;\n },\n\n render() {\n const frag = document.createDocumentFragment();\n const $el = this.$el;\n const pfx = this.pfx;\n const ppfx = this.ppfx;\n $el.empty();\n this.collection.each(model => this.addToCollection(model, frag));\n $el.append(frag);\n $el.addClass(`${pfx}sectors ${ppfx}one-bg ${ppfx}two-color`);\n return this;\n }\n});\n","/**\n * With Style Manager you build categories (called sectors) of CSS properties which could be used to customize the style of components.\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/style_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * styleManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const styleManager = editor.StyleManager;\n * ```\n *\n * * [getConfig](#getconfig)\n * * [addSector](#addsector)\n * * [getSector](#getsector)\n * * [removeSector](#removesector)\n * * [getSectors](#getsectors)\n * * [addProperty](#addproperty)\n * * [getProperty](#getproperty)\n * * [removeProperty](#removeproperty)\n * * [getProperties](#getproperties)\n * * [getModelToStyle](#getmodeltostyle)\n * * [addType](#addtype)\n * * [getType](#gettype)\n * * [getTypes](#gettypes)\n * * [createType](#createtype)\n *\n * @module StyleManager\n */\n\nimport { isElement } from 'underscore';\nimport defaults from './config/config';\nimport Sectors from './model/Sectors';\nimport Properties from './model/Properties';\nimport PropertyFactory from './model/PropertyFactory';\nimport SectorsView from './view/SectorsView';\n\nexport default () => {\n var c = {};\n let properties;\n var sectors, SectView;\n\n return {\n PropertyFactory: PropertyFactory(),\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'StyleManager',\n\n /**\n * Get configuration object\n * @return {Object}\n */\n getConfig() {\n return c;\n },\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config) {\n c = { ...defaults, ...config };\n const ppfx = c.pStylePrefix;\n this.em = c.em;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n properties = new Properties();\n sectors = new Sectors([], c);\n SectView = new SectorsView({\n collection: sectors,\n target: c.em,\n config: c\n });\n\n return this;\n },\n\n onLoad() {\n // Use silent as sectors' view will be created and rendered on StyleManager.render\n sectors.add(c.sectors, { silent: true });\n },\n\n postRender() {\n const elTo = this.getConfig().appendTo;\n\n if (elTo) {\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\n el.appendChild(this.render());\n }\n },\n\n /**\n * Add new sector to the collection. If the sector with the same id already exists,\n * that one will be returned\n * @param {string} id Sector id\n * @param {Object} sector Object representing sector\n * @param {string} [sector.name=''] Sector's label\n * @param {Boolean} [sector.open=true] Indicates if the sector should be opened\n * @param {Array} [sector.properties=[]] Array of properties\n * @param {Object} [options={}] Options\n * @return {Sector} Added Sector\n * @example\n * var sector = styleManager.addSector('mySector',{\n * name: 'My sector',\n * open: true,\n * properties: [{ name: 'My property'}]\n * }, { at: 0 });\n * // With `at: 0` we place the new sector at the beginning of the collection\n * */\n addSector(id, sector, opts = {}) {\n let result = this.getSector(id);\n\n if (!result) {\n sector.id = id;\n result = sectors.add(sector, opts);\n }\n\n return result;\n },\n\n /**\n * Get sector by id\n * @param {string} id Sector id\n * @return {Sector|null}\n * @example\n * var sector = styleManager.getSector('mySector');\n * */\n getSector(id, opts = {}) {\n const res = sectors.where({ id })[0];\n !res && opts.warn && this._logNoSector(id);\n return res;\n },\n\n /**\n * Remove a sector by id\n * @param {string} id Sector id\n * @return {Sector} Removed sector\n * @example\n * const removed = styleManager.removeSector('mySector');\n */\n removeSector(id) {\n return this.getSectors().remove(this.getSector(id, { warn: 1 }));\n },\n\n /**\n * Get all sectors\n * @return {Sectors} Collection of sectors\n * */\n getSectors() {\n return sectors;\n },\n\n /**\n * Add property to the sector identified by id\n * @param {string} sectorId Sector id\n * @param {Object} property Property object\n * @param {string} [property.name=''] Name of the property\n * @param {string} [property.property=''] CSS property, eg. `min-height`\n * @param {string} [property.type=''] Type of the property: integer | radio | select | color | file | composite | stack\n * @param {Array} [property.units=[]] Unit of measure available, eg. ['px','%','em']. Only for integer type\n * @param {string} [property.unit=''] Default selected unit from `units`. Only for integer type\n * @param {number} [property.min=null] Min possible value. Only for integer type\n * @param {number} [property.max=null] Max possible value. Only for integer type\n * @param {string} [property.defaults=''] Default value\n * @param {string} [property.info=''] Some description\n * @param {string} [property.icon=''] Class name. If exists no text will be displayed\n * @param {Boolean} [property.preview=false] Show layers preview. Only for stack type\n * @param {string} [property.functionName=''] Indicates if value need to be wrapped in some function, for istance `transform: rotate(90deg)`\n * @param {Array} [property.properties=[]] Nested properties for composite and stack type\n * @param {Array} [property.layers=[]] Layers for stack properties\n * @param {Array} [property.list=[]] List of possible options for radio and select types\n * @param {Object} [options={}] Options\n * @return {Property|null} Added Property or `null` in case sector doesn't exist\n * @example\n * var property = styleManager.addProperty('mySector',{\n * name: 'Minimum height',\n * property: 'min-height',\n * type: 'select',\n * defaults: '100px',\n * list: [{\n * value: '100px',\n * name: '100',\n * },{\n * value: '200px',\n * name: '200',\n * }],\n * }, { at: 0 });\n * // With `at: 0` we place the new property at the beginning of the collection\n */\n addProperty(sectorId, property, opts = {}) {\n const sector = this.getSector(sectorId, { warn: 1 });\n let prop = null;\n if (sector) prop = sector.get('properties').add(property, opts);\n\n return prop;\n },\n\n /**\n * Get property by its CSS name and sector id\n * @param {string} sectorId Sector id\n * @param {string} name CSS property name (or id), eg. 'min-height'\n * @return {Property|null}\n * @example\n * var property = styleManager.getProperty('mySector','min-height');\n */\n getProperty(sectorId, name) {\n const sector = this.getSector(sectorId, { warn: 1 });\n let prop;\n\n if (sector) {\n prop = sector\n .get('properties')\n .filter(\n prop => prop.get('property') === name || prop.get('id') === name\n )[0];\n }\n\n return prop || null;\n },\n\n /**\n * Remove a property from the sector\n * @param {string} sectorId Sector id\n * @param {string} name CSS property name, eg. 'min-height'\n * @return {Property} Removed property\n * @example\n * const property = styleManager.removeProperty('mySector', 'min-height');\n */\n removeProperty(sectorId, name) {\n const props = this.getProperties(sectorId);\n return props && props.remove(this.getProperty(sectorId, name));\n },\n\n /**\n * Get properties of the sector\n * @param {string} sectorId Sector id\n * @return {Properties} Collection of properties\n * @example\n * var properties = styleManager.getProperties('mySector');\n */\n getProperties(sectorId) {\n let props = null;\n const sector = this.getSector(sectorId, { warn: 1 });\n if (sector) props = sector.get('properties');\n\n return props;\n },\n\n /**\n * Get what to style inside Style Manager. If you select the component\n * without classes the entity is the Component itself and all changes will\n * go inside its 'style' property. Otherwise, if the selected component has\n * one or more classes, the function will return the corresponding CSS Rule\n * @param {Model} model\n * @return {Model}\n */\n getModelToStyle(model, options = {}) {\n const em = c.em;\n const { skipAdd } = options;\n const classes = model.get('classes');\n const id = model.getId();\n\n if (em) {\n const config = em.getConfig();\n const um = em.get('UndoManager');\n const cssC = em.get('CssComposer');\n const sm = em.get('SelectorManager');\n const smConf = sm ? sm.getConfig() : {};\n const state = !config.devicePreviewMode ? em.get('state') : '';\n const valid = classes.getStyleable();\n const hasClasses = valid.length;\n const useClasses = !smConf.componentFirst || options.useClasses;\n const addOpts = { noCount: 1 };\n const opts = { state, addOpts };\n let rule;\n\n // I stop undo manager here as after adding the CSSRule (generally after\n // selecting the component) and calling undo() it will remove the rule from\n // the collection, therefore updating it in style manager will not affect it\n // #268\n um.stop();\n\n if (hasClasses && useClasses) {\n const deviceW = em.getCurrentMedia();\n rule = cssC.get(valid, state, deviceW);\n\n if (!rule && !skipAdd) {\n rule = cssC.add(valid, state, deviceW, {}, addOpts);\n }\n } else if (config.avoidInlineStyle) {\n rule = cssC.getIdRule(id, opts);\n !rule && !skipAdd && (rule = cssC.setIdRule(id, {}, opts));\n if (model.is('wrapper')) rule.set('wrapper', 1, addOpts);\n }\n\n rule && (model = rule);\n um.start();\n }\n\n return model;\n },\n\n getParentRules(target, state) {\n const { em } = c;\n let result = [];\n\n if (em) {\n const cssC = em.get('CssComposer');\n const cssGen = em.get('CodeManager').getGenerator('css');\n const all = cssC\n .getRules(target.getSelectors().getFullString())\n .filter(rule => (state ? rule.get('state') === state : 1))\n .sort(cssGen.sortRules)\n .reverse();\n result = all.slice(all.indexOf(target) + 1);\n }\n\n return result;\n },\n\n /**\n * Add new property type\n * @param {string} id Type ID\n * @param {Object} definition Definition of the type. Each definition contains\n * `model` (business logic), `view` (presentation logic)\n * and `isType` function which recognize the type of the\n * passed entity\n *@example\n * styleManager.addType('my-custom-prop', {\n * create({ props, change }) {\n * const el = document.createElement('div');\n * el.innerHTML = '';\n * const inputEl = el.querySelector('.my-input');\n * inputEl.addEventListener('change', event => change({ event })); // change will trigger the emit\n * inputEl.addEventListener('input', event => change({ event, complete: false }));\n * return el;\n * },\n * emit({ props, updateStyle }, { event, complete }) {\n * const { value } = event.target;\n * const valueRes = value + 'px';\n * // Pass a string value for the exact CSS property or an object containing multiple properties\n * // eg. updateStyle({ [props.property]: valueRes, color: 'red' });\n * updateStyle(valueRes, { complete });\n * },\n * update({ value, el }) {\n * el.querySelector('.my-input').value = parseInt(value, 10);\n * },\n * destroy() {\n * // In order to prevent memory leaks, use this method to clean, eventually, created instances, global event listeners, etc.\n * }\n *})\n */\n addType(id, definition) {\n properties.addType(id, definition);\n },\n\n /**\n * Get type\n * @param {string} id Type ID\n * @return {Object} Type definition\n */\n getType(id) {\n return properties.getType(id);\n },\n\n /**\n * Get all types\n * @return {Array}\n */\n getTypes() {\n return properties.getTypes();\n },\n\n /**\n * Create new property from type\n * @param {string} id Type ID\n * @param {Object} [options={}] Options\n * @param {Object} [options.model={}] Custom model object\n * @param {Object} [options.view={}] Custom view object\n * @return {PropertyView}\n * @example\n * const propView = styleManager.createType('integer', {\n * model: {units: ['px', 'rem']}\n * });\n * propView.render();\n * propView.model.on('change:value', ...);\n * someContainer.appendChild(propView.el);\n */\n createType(id, { model = {}, view = {} } = {}) {\n const type = this.getType(id);\n\n if (type) {\n return new type.view({\n model: new type.model(model),\n config: c,\n ...view\n });\n }\n },\n\n /**\n * Select different target for the Style Manager.\n * It could be a Component, CSSRule, or a string of any CSS selector\n * @param {Component|CSSRule|String} target\n * @return {Styleable} A Component or CSSRule\n */\n setTarget(target, opts) {\n return SectView.setTarget(target, opts);\n },\n\n getEmitter() {\n return SectView.propTarget;\n },\n\n /**\n * Render sectors and properties\n * @return {HTMLElement}\n * @private\n * */\n render() {\n return SectView.render().el;\n },\n\n _logNoSector(sectorId) {\n const { em } = this;\n em && em.logWarning(`'${sectorId}' sector not found`);\n },\n\n destroy() {\n [properties, sectors].forEach(coll => {\n coll.reset();\n coll.stopListening();\n });\n SectView.remove();\n [c, properties, sectors, SectView].forEach(i => (i = {}));\n this.em = {};\n }\n };\n};\n","export default {\n // Style prefix\n stylePrefix: 'cm-',\n\n inlineCss: false\n};\n","import Backbone from 'backbone';\n\nexport default Backbone.Model.extend({\n build(model, opts = {}) {\n const models = model.components();\n const htmlOpts = {};\n const { em } = opts;\n\n // Remove unnecessary IDs\n if (opts.cleanId && em) {\n const rules = em.get('CssComposer').getAll();\n const idRules = rules\n .toJSON()\n .map(rule => {\n const sels = rule.selectors;\n const sel = sels && sels.length === 1 && sels.models[0];\n return sel && sel.isId() && sel.get('name');\n })\n .filter(i => i);\n\n htmlOpts.attributes = (mod, attrs) => {\n const { id } = attrs;\n if (\n id &&\n id[0] === 'i' && // all autogenerated IDs start with 'i'\n !mod.get('script') && // if the component has script, we have to leave the ID\n !mod.get('attributes').id && // id is not intentionally in attributes\n idRules.indexOf(id) < 0 // we shouldn't have any rule with this ID\n ) {\n delete attrs.id;\n }\n return attrs;\n };\n }\n\n if (opts.exportWrapper) {\n return model.toHTML({\n ...htmlOpts,\n ...(opts.wrapperIsBody && { tag: 'body' })\n });\n }\n\n return this.buildModels(models, htmlOpts);\n },\n\n buildModels(models, opts = {}) {\n let code = '';\n models.forEach(mod => (code += mod.toHTML(opts)));\n return code;\n }\n});\n","import { each } from 'underscore';\nimport Backbone from 'backbone';\n\nexport default Backbone.Model.extend({\n /** @inheritdoc */\n build(model) {\n var json = model.toJSON();\n this.beforeEach(json);\n\n each(\n json,\n function(v, attr) {\n var obj = json[attr];\n if (obj instanceof Backbone.Model) {\n json[attr] = this.build(obj);\n } else if (obj instanceof Backbone.Collection) {\n var coll = obj;\n json[attr] = [];\n if (coll.length) {\n coll.each(function(el, index) {\n json[attr][index] = this.build(el);\n }, this);\n }\n }\n },\n this\n );\n\n return json;\n },\n\n /**\n * Execute on each object\n * @param {Object} obj\n */\n beforeEach(obj) {\n delete obj.status;\n }\n});\n","import { extend } from 'underscore';\nimport Backbone from 'backbone';\n\nexport default Backbone.Model.extend({\n mapModel(model) {\n var code = '';\n var script = model.get('script-export') || model.get('script');\n var type = model.get('type');\n var comps = model.get('components');\n var id = model.getId();\n\n if (script) {\n // If the component has scripts we need to expose his ID\n var attr = model.get('attributes');\n attr = extend({}, attr, { id });\n model.set('attributes', attr, { silent: 1 });\n var scrStr = model.getScriptString(script);\n const scrProps = model.get('script-props');\n\n // If the script was updated, I'll put its code in a separate container\n if (model.get('scriptUpdated') && !scrProps) {\n this.mapJs[type + '-' + id] = { ids: [id], code: scrStr };\n } else {\n let props;\n const mapType = this.mapJs[type];\n\n if (scrProps) {\n props = model.__getScriptProps();\n }\n\n if (mapType) {\n mapType.ids.push(id);\n if (props) mapType.props[id] = props;\n } else {\n const res = { ids: [id], code: scrStr };\n if (props) res.props = { [id]: props };\n this.mapJs[type] = res;\n }\n }\n }\n\n comps.each(function(model) {\n code += this.mapModel(model);\n }, this);\n\n return code;\n },\n\n build(model) {\n this.mapJs = {};\n this.mapModel(model);\n let code = '';\n\n for (let type in this.mapJs) {\n const mapType = this.mapJs[type];\n\n if (mapType.props) {\n code += `\n var props = ${JSON.stringify(mapType.props)};\n var ids = Object.keys(props).map(function(id) { return '#'+id }).join(',');\n var els = document.querySelectorAll(ids);\n for (var i = 0, len = els.length; i < len; i++) {\n var el = els[i];\n (${mapType.code}.bind(el))(props[el.id]);\n }`;\n } else {\n // Deprecated\n const ids = '#' + mapType.ids.join(', #');\n code += `\n var items = document.querySelectorAll('${ids}');\n for (var i = 0, len = items.length; i < len; i++) {\n (function(){\\n${mapType.code}\\n}.bind(items[i]))();\n }`;\n }\n }\n\n return code;\n }\n});\n","import { bindAll } from 'underscore';\nimport Backbone from 'backbone';\nimport CodeMirror from 'codemirror/lib/codemirror';\nimport 'codemirror/mode/htmlmixed/htmlmixed';\nimport 'codemirror/mode/css/css';\nimport 'codemirror-formatting';\n\nexport default Backbone.Model.extend({\n CodeMirror,\n\n defaults: {\n input: '',\n label: '',\n codeName: '',\n theme: 'hopscotch',\n readOnly: true,\n lineNumbers: true\n },\n\n /** @inheritdoc */\n init(el) {\n bindAll(this, 'onChange');\n this.editor = CodeMirror.fromTextArea(el, {\n dragDrop: false,\n lineWrapping: true,\n mode: this.get('codeName'),\n ...this.attributes\n });\n this.element = el;\n this.editor.on('change', this.onChange);\n\n return this;\n },\n\n onChange() {\n this.trigger('update', this);\n },\n\n getEditor() {\n return this.editor;\n },\n\n /**\n * The element where the viewer is attached\n * @return {HTMLElement}\n */\n getElement() {\n return this.element;\n },\n\n /**\n * Set the element which contains the viewer attached.\n * Generally, it should be just a textarea, but some editor might require\n * a container for it some in that case this method can be used\n * @param {HTMLElement} el\n * @return {self}\n */\n setElement(el) {\n this.element = el;\n return this;\n },\n\n /**\n * Refresh the viewer\n * @return {self}\n */\n refresh() {\n this.getEditor().refresh();\n return this;\n },\n\n /**\n * Focus the viewer\n * @return {self}\n */\n focus() {\n this.getEditor().focus();\n return this;\n },\n\n getContent() {\n const ed = this.getEditor();\n return ed && ed.getValue();\n },\n\n /** @inheritdoc */\n setContent(v, opts = {}) {\n const { editor } = this;\n if (!editor) return;\n editor.setValue(v);\n\n if (editor.autoFormatRange) {\n CodeMirror.commands.selectAll(editor);\n editor.autoFormatRange(editor.getCursor(true), editor.getCursor(false));\n CodeMirror.commands.goDocStart(editor);\n }\n\n !opts.noRefresh && setTimeout(() => this.refresh());\n }\n});\n","import { template } from 'underscore';\nimport Backbone from 'backbone';\n\nexport default Backbone.View.extend({\n template: template(`\n
editor\" id=\"<%= pfx %><%= codeName %>\">\n \t
title\"><%= label %>
\n \t
code\">
\n
`),\n\n initialize(o) {\n this.config = o.config || {};\n this.pfx = this.config.stylePrefix;\n },\n\n render() {\n var obj = this.model.toJSON();\n obj.pfx = this.pfx;\n this.$el.html(this.template(obj));\n this.$el.attr('class', this.pfx + 'editor-c');\n this.$el.find('#' + this.pfx + 'code').append(this.model.get('input'));\n return this;\n }\n});\n","/**\n * - [addGenerator](#addgenerator)\n * - [getGenerator](#getgenerator)\n * - [getGenerators](#getgenerators)\n * - [addViewer](#addviewer)\n * - [getViewer](#getviewer)\n * - [getViewers](#getviewers)\n * - [updateViewer](#updateviewer)\n * - [getCode](#getcode)\n *\n *\n * Before using methods you should get first the module from the editor instance, in this way:\n *\n * ```js\n * var codeManager = editor.CodeManager;\n * ```\n *\n * @module CodeManager\n */\nimport { isUndefined } from 'underscore';\nimport defaults from './config/config';\nimport gHtml from './model/HtmlGenerator';\nimport gCss from './model/CssGenerator';\nimport gJson from './model/JsonGenerator';\nimport gJs from './model/JsGenerator';\nimport eCM from './model/CodeMirrorEditor';\nimport editorView from './view/EditorView';\n\nexport default () => {\n var c = {};\n var generators = {},\n defGenerators = {},\n viewers = {},\n defViewers = {};\n\n const defaultViewer = 'CodeMirror';\n\n return {\n getConfig() {\n return c;\n },\n\n config: c,\n\n EditorView: editorView,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'CodeManager',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n */\n init(config) {\n c = config || {};\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n defGenerators.html = new gHtml();\n defGenerators.css = new gCss();\n defGenerators.json = new gJson();\n defGenerators.js = new gJs();\n defViewers.CodeMirror = new eCM();\n this.loadDefaultGenerators().loadDefaultViewers();\n\n return this;\n },\n\n /**\n * Add new code generator to the collection\n * @param {string} id Code generator ID\n * @param {Object} generator Code generator wrapper\n * @param {Function} generator.build Function that builds the code\n * @return {this}\n * @example\n * codeManager.addGenerator('html7',{\n * build: function(model){\n * return 'myCode';\n * }\n * });\n * */\n addGenerator(id, generator) {\n generators[id] = generator;\n return this;\n },\n\n /**\n * Get code generator by id\n * @param {string} id Code generator ID\n * @return {Object|null}\n * @example\n * var generator = codeManager.getGenerator('html7');\n * generator.build = function(model){\n * //extend\n * };\n * */\n getGenerator(id) {\n return generators[id] || null;\n },\n\n /**\n * Returns all code generators\n * @return {Array}\n * */\n getGenerators() {\n return generators;\n },\n\n /**\n * Add new code viewer\n * @param {string} id Code viewer ID\n * @param {Object} viewer Code viewer wrapper\n * @param {Function} viewer.init Set element on which viewer will be displayed\n * @param {Function} viewer.setContent Set content to the viewer\n * @return {this}\n * @example\n * codeManager.addViewer('ace',{\n * init: function(el){\n * var ace = require('ace-editor');\n * this.editor = ace.edit(el.id);\n * },\n * setContent: function(code){\n * this.editor.setValue(code);\n * }\n * });\n * */\n addViewer(id, viewer) {\n viewers[id] = viewer;\n return this;\n },\n\n /**\n * Get code viewer by id\n * @param {string} id Code viewer ID\n * @return {Object|null}\n * @example\n * var viewer = codeManager.getViewer('ace');\n * */\n getViewer(id) {\n return viewers[id] || null;\n },\n\n /**\n * Returns all code viewers\n * @return {Array}\n * */\n getViewers() {\n return viewers;\n },\n\n createViewer(opts = {}) {\n const type = !isUndefined(opts.type) ? opts.type : defaultViewer;\n const viewer = this.getViewer(type) && this.getViewer(type).clone();\n const cont = document.createElement('div');\n const txtarea = document.createElement('textarea');\n cont.appendChild(txtarea);\n viewer.set(opts);\n viewer.init(txtarea);\n viewer.setElement(cont);\n\n return viewer;\n },\n\n /**\n * Update code viewer content\n * @param {Object} viewer Viewer instance\n * @param {string} code Code string\n * @example\n * var AceViewer = codeManager.getViewer('ace');\n * // ...\n * var viewer = AceViewer.init(el);\n * // ...\n * codeManager.updateViewer(AceViewer, 'code');\n * */\n updateViewer(viewer, code) {\n viewer.setContent(code);\n },\n\n /**\n * Get code from model\n * @param {Object} model Any kind of model that will be passed to the build method of generator\n * @param {string} genId Code generator id\n * @param {Object} [opt] Options\n * @return {string}\n * @example\n * var codeStr = codeManager.getCode(model, 'html');\n * */\n getCode(model, genId, opt = {}) {\n opt.em = c.em;\n var generator = this.getGenerator(genId);\n return generator ? generator.build(model, opt) : '';\n },\n\n /**\n * Load default code generators\n * @return {this}\n * @private\n * */\n loadDefaultGenerators() {\n for (var id in defGenerators) this.addGenerator(id, defGenerators[id]);\n\n return this;\n },\n\n /**\n * Load default code viewers\n * @return {this}\n * @private\n * */\n loadDefaultViewers() {\n for (var id in defViewers) this.addViewer(id, defViewers[id]);\n\n return this;\n },\n\n destroy() {\n [c, generators, defGenerators, viewers, defViewers].forEach(\n i => (i = {})\n );\n }\n };\n};\n","export default {\n devices: []\n};\n","import Backbone from 'backbone';\n\nexport default Backbone.Model.extend({\n idAttribute: 'name',\n\n defaults: {\n name: '',\n\n // Width to set for the editor iframe\n width: null,\n\n // Height to set for the editor iframe\n height: '',\n\n // The width which will be used in media queries,\n // If empty the width will be used\n widthMedia: null,\n\n // Setup the order of media queries\n priority: null\n },\n\n initialize() {\n this.get('widthMedia') === null &&\n this.set('widthMedia', this.get('width'));\n this.get('width') === null && this.set('width', this.get('widthMedia'));\n !this.get('priority') &&\n this.set('priority', parseFloat(this.get('widthMedia')) || 0);\n const toCheck = ['width', 'height', 'widthMedia'];\n toCheck.forEach(prop => this.checkUnit(prop));\n },\n\n checkUnit(prop) {\n const pr = this.get(prop) || '';\n const noUnit = (parseFloat(pr) || 0).toString() === pr.toString();\n noUnit && this.set(prop, `${pr}px`);\n }\n});\n","import Backbone from 'backbone';\nimport Device from './Device';\n\nexport default Backbone.Collection.extend({\n model: Device,\n\n comparator: (left, right) => {\n const max = Number.MAX_VALUE;\n return (right.get('priority') || max) - (left.get('priority') || max);\n },\n\n getSorted() {\n return this.sort();\n }\n});\n","import { template } from 'underscore';\nimport Backbone from 'backbone';\n\nexport default Backbone.View.extend({\n template: template(`\n
device-label\"><%= deviceLabel %>
\n
field <%= ppfx %>select\">\n input-holder\">\n \n \n
sel-arrow\">\n
d-s-arrow\">
\n
\n
\n `),\n\n events: {\n change: 'updateDevice'\n },\n\n initialize(o) {\n this.config = o.config || {};\n this.em = this.config.em;\n this.ppfx = this.config.pStylePrefix || '';\n this.events['click .' + this.ppfx + 'add-trasp'] = this.startAdd;\n this.listenTo(this.em, 'change:device', this.updateSelect);\n this.delegateEvents();\n },\n\n /**\n * Start adding new device\n * @return {[type]} [description]\n * @private\n */\n startAdd() {},\n\n /**\n * Update device of the editor\n * @private\n */\n updateDevice() {\n var em = this.em;\n if (em) {\n var devEl = this.devicesEl;\n var val = devEl ? devEl.val() : '';\n em.set('device', val);\n }\n },\n\n /**\n * Update select value on device update\n * @private\n */\n updateSelect() {\n var em = this.em;\n var devEl = this.devicesEl;\n if (em && em.getDeviceModel && devEl) {\n var device = em.getDeviceModel();\n var name = device ? device.get('name') : '';\n devEl.val(name);\n }\n },\n\n /**\n * Return devices options\n * @return {string} String of options\n * @private\n */\n getOptions() {\n const { collection, em } = this;\n let result = '';\n\n collection.each(device => {\n const { name, id } = device.attributes;\n const label = (em && em.t && em.t(`deviceManager.devices.${id}`)) || name;\n result += ``;\n });\n\n return result;\n },\n\n render() {\n const { em, ppfx, $el, el } = this;\n $el.html(\n this.template({\n ppfx,\n deviceLabel: em && em.t && em.t('deviceManager.device')\n })\n );\n this.devicesEl = $el.find(`.${ppfx}devices`);\n this.devicesEl.append(this.getOptions());\n el.className = `${ppfx}devices-c`;\n return this;\n }\n});\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/device_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * deviceManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const deviceManager = editor.DeviceManager;\n * ```\n *\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getAll)\n *\n * @module DeviceManager\n */\nimport defaults from './config/config';\nimport Devices from './model/Devices';\nimport DevicesView from './view/DevicesView';\n\nexport default () => {\n var c = {};\n var devices, view;\n\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'DeviceManager',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @param {Array} [config.devices=[]] Default devices\n * @example\n * ...\n * {\n * devices: [\n * {name: 'Desktop', width: ''}\n * {name: 'Tablet', width: '991px'}\n * ],\n * }\n * ...\n * @return {this}\n * @private\n */\n init(config) {\n c = config || {};\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n devices = new Devices();\n (c.devices || []).forEach(dv => this.add(dv.id || dv.name, dv.width, dv));\n view = new DevicesView({\n collection: devices,\n config: c\n });\n return this;\n },\n\n /**\n * Add new device to the collection. URLs are supposed to be unique\n * @param {String} id Device id\n * @param {String} width Width of the device\n * @param {Object} [opts] Custom options\n * @returns {Device} Added device\n * @example\n * deviceManager.add('tablet', '900px');\n * deviceManager.add('tablet2', '900px', {\n * height: '300px',\n * // At first, GrapesJS tries to localize the name by device id.\n * // In case is not found, the `name` property is used (or `id` if name is missing)\n * name: 'Tablet 2',\n * widthMedia: '810px', // the width that will be used for the CSS media\n * });\n */\n add(id, width, opts = {}) {\n const obj = {\n ...opts,\n id,\n name: opts.name || id,\n width: width\n };\n return devices.add(obj);\n },\n\n /**\n * Return device by name\n * @param {string} name Name of the device\n * @example\n * var device = deviceManager.get('Tablet');\n * console.log(JSON.stringify(device));\n * // {name: 'Tablet', width: '900px'}\n */\n get(name) {\n return devices.get(name);\n },\n\n /**\n * Return all devices\n * @return {Collection}\n * @example\n * var devices = deviceManager.getAll();\n * console.log(JSON.stringify(devices));\n * // [{name: 'Desktop', width: ''}, ...]\n */\n getAll() {\n return devices;\n },\n\n /**\n * Render devices\n * @return {string} HTML string\n * @private\n */\n render() {\n return view.render().el;\n },\n\n destroy() {\n devices.reset();\n devices.stopListening();\n view.remove();\n [devices, view].forEach(i => (i = null));\n c = {};\n }\n };\n};\n","export default {\n // Prefix identifier that will be used inside storing and loading\n id: 'gjs-',\n\n // Enable/Disable autosaving\n autosave: 1,\n\n // Indicates if load data inside editor after init\n autoload: 1,\n\n // Indicates which storage to use. Available: local | remote\n type: 'local',\n\n // If autosave enabled, indicates how many steps (general changes to structure)\n // need to be done before save. Useful with remoteStorage to reduce remote calls\n stepsBeforeSave: 1,\n\n //Enable/Disable components model (JSON format)\n storeComponents: 1,\n\n //Enable/Disable styles model (JSON format)\n storeStyles: 1,\n\n //Enable/Disable saving HTML template\n storeHtml: 1,\n\n //Enable/Disable saving CSS template\n storeCss: 1,\n\n // ONLY FOR LOCAL STORAGE\n // If enabled, checks if browser supports Local Storage\n checkLocal: 1,\n\n // ONLY FOR REMOTE STORAGE\n // Custom parameters to pass with the remote storage request, eg. csrf token\n params: {},\n\n // Custom headers for the remote storage request\n headers: {},\n\n // Endpoint where to save all stuff\n urlStore: '',\n\n // Endpoint where to fetch data\n urlLoad: '',\n\n //Callback before request\n beforeSend(jqXHR, settings) {},\n\n //Callback after request\n onComplete(jqXHR, status) {},\n\n // set contentType paramater of $.ajax\n // true: application/json; charset=utf-8'\n // false: 'x-www-form-urlencoded'\n contentTypeJson: true,\n\n credentials: 'include',\n\n // Pass custom options to fetch API (remote storage)\n // You can pass a simple object: { someOption: 'someValue' }\n // or a function wich returns and object to add:\n // currentOpts => {\n // return currentOpts.method === 'post' ? { method: 'patch' } : {};\n // }\n fetchOptions: ''\n};\n","import Backbone from 'backbone';\n\nexport default Backbone.Model.extend({\n defaults: {\n checkLocal: true\n },\n\n /**\n * @private\n */\n store(data, clb) {\n this.checkStorageEnvironment();\n\n for (var key in data) localStorage.setItem(key, data[key]);\n\n if (typeof clb == 'function') {\n clb();\n }\n },\n\n /**\n * @private\n */\n load(keys, clb) {\n this.checkStorageEnvironment();\n var result = {};\n\n for (var i = 0, len = keys.length; i < len; i++) {\n var value = localStorage.getItem(keys[i]);\n if (value) result[keys[i]] = value;\n }\n\n if (typeof clb == 'function') {\n clb(result);\n }\n\n return result;\n },\n\n /**\n * @private\n */\n remove(keys) {\n this.checkStorageEnvironment();\n\n for (var i = 0, len = keys.length; i < len; i++)\n localStorage.removeItem(keys[i]);\n },\n\n /**\n * Check storage environment\n * @private\n * */\n checkStorageEnvironment() {\n if (this.get('checkLocal') && !localStorage)\n console.warn(\"Your browser doesn't support localStorage\");\n }\n});\n","import Backbone from 'backbone';\nimport fetch from 'utils/fetch';\nimport { isUndefined, isFunction } from 'underscore';\n\nexport default Backbone.Model.extend({\n fetch,\n\n defaults: {\n urlStore: '',\n urlLoad: '',\n params: {},\n beforeSend() {},\n onComplete() {},\n contentTypeJson: false,\n credentials: 'include',\n fetchOptions: ''\n },\n\n /**\n * Triggered before the request is started\n * @private\n */\n onStart() {\n const em = this.get('em');\n const before = this.get('beforeSend');\n before && before();\n },\n\n /**\n * Triggered on request error\n * @param {Object} err Error\n * @param {Function} [clbErr] Error callback\n * @private\n */\n onError(err, clbErr) {\n if (clbErr) {\n clbErr(err);\n } else {\n const em = this.get('em');\n console.error(err);\n em && em.trigger('storage:error', err);\n }\n },\n\n /**\n * Triggered on request response\n * @param {string} text Response text\n * @private\n */\n onResponse(text, clb) {\n const em = this.get('em');\n const complete = this.get('onComplete');\n const typeJson = this.get('contentTypeJson');\n const parsable = text && typeof text === 'string';\n const res = typeJson && parsable ? JSON.parse(text) : text;\n complete && complete(res);\n clb && clb(res);\n em && em.trigger('storage:response', res);\n },\n\n store(data, clb, clbErr) {\n const body = {};\n\n for (let key in data) {\n body[key] = data[key];\n }\n\n this.request(this.get('urlStore'), { body }, clb, clbErr);\n },\n\n load(keys, clb, clbErr) {\n this.request(this.get('urlLoad'), { method: 'get' }, clb, clbErr);\n },\n\n /**\n * Execute remote request\n * @param {string} url Url\n * @param {Object} [opts={}] Options\n * @param {Function} [clb=null] Callback\n * @param {Function} [clbErr=null] Error callback\n * @private\n */\n request(url, opts = {}, clb = null, clbErr = null) {\n const typeJson = this.get('contentTypeJson');\n const headers = this.get('headers') || {};\n const params = this.get('params');\n const reqHead = 'X-Requested-With';\n const typeHead = 'Content-Type';\n const bodyObj = opts.body || {};\n let fetchOptions;\n let body;\n\n for (let param in params) {\n bodyObj[param] = params[param];\n }\n\n if (isUndefined(headers[reqHead])) {\n headers[reqHead] = 'XMLHttpRequest';\n }\n\n // With `fetch`, have to send FormData without any 'Content-Type'\n // https://stackoverflow.com/questions/39280438/fetch-missing-boundary-in-multipart-form-data-post\n\n if (isUndefined(headers[typeHead]) && typeJson) {\n headers[typeHead] = 'application/json; charset=utf-8';\n }\n\n if (typeJson) {\n body = JSON.stringify(bodyObj);\n } else {\n body = new FormData();\n\n for (let bodyKey in bodyObj) {\n body.append(bodyKey, bodyObj[bodyKey]);\n }\n }\n fetchOptions = {\n method: opts.method || 'post',\n credentials: this.get('credentials'),\n headers\n };\n\n // Body should only be included on POST method\n if (fetchOptions.method === 'post') {\n fetchOptions.body = body;\n }\n\n const fetchOpts = this.get('fetchOptions') || {};\n const addOpts = isFunction(fetchOpts)\n ? fetchOpts(fetchOptions)\n : fetchOptions;\n\n this.onStart();\n this.fetch(url, {\n ...fetchOptions,\n ...(addOpts || {})\n })\n .then(res =>\n ((res.status / 200) | 0) == 1\n ? res.text()\n : res.text().then(text => Promise.reject(text))\n )\n .then(text => this.onResponse(text, clb))\n .catch(err => this.onError(err, clbErr));\n }\n});\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/storage_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * storageManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const storageManager = editor.StorageManager;\n * ```\n *\n * * [getConfig](#getconfig)\n * * [isAutosave](#isautosave)\n * * [setAutosave](#setautosave)\n * * [getStepsBeforeSave](#getstepsbeforesave)\n * * [setStepsBeforeSave](#setstepsbeforesave)\n * * [setStepsBeforeSave](#setstepsbeforesave)\n * * [getStorages](#getstorages)\n * * [getCurrent](#getcurrent)\n * * [getCurrentStorage](#getcurrentstorage)\n * * [setCurrent](#setcurrent)\n * * [add](#add)\n * * [get](#get)\n * * [store](#store)\n * * [load](#load)\n *\n * @module StorageManager\n */\n\nimport defaults from './config/config';\nimport LocalStorage from './model/LocalStorage';\nimport RemoteStorage from './model/RemoteStorage';\n\nconst eventStart = 'storage:start';\nconst eventAfter = 'storage:after';\nconst eventEnd = 'storage:end';\nconst eventError = 'storage:error';\n\nexport default () => {\n var c = {};\n let em;\n var storages = {};\n var defaultStorages = {};\n\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'StorageManager',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @param {string} [config.id='gjs-'] The prefix for the fields, useful to differentiate storing/loading\n * with multiple editors on the same page. For example, in local storage, the item of HTML will be saved like 'gjs-html'\n * @param {Boolean} [config.autosave=true] Indicates if autosave mode is enabled, works in conjunction with stepsBeforeSave\n * @param {number} [config.stepsBeforeSave=1] If autosave enabled, indicates how many steps/changes are necessary\n * before autosave is triggered\n * @param {string} [config.type='local'] Default storage type. Available: 'local' | 'remote' | ''(do not store)\n * @private\n * @example\n * ...\n * {\n * autosave: false,\n * type: 'remote',\n * }\n * ...\n */\n init(config = {}) {\n c = { ...defaults, ...config };\n em = c.em;\n if (c._disable) c.type = 0;\n defaultStorages.remote = new RemoteStorage(c);\n defaultStorages.local = new LocalStorage(c);\n c.currentStorage = c.type;\n this.loadDefaultProviders().setCurrent(c.type);\n return this;\n },\n\n /**\n * Get configuration object\n * @return {Object}\n * */\n getConfig() {\n return c;\n },\n\n /**\n * Checks if autosave is enabled\n * @return {Boolean}\n * */\n isAutosave() {\n return !!c.autosave;\n },\n\n /**\n * Set autosave value\n * @param {Boolean} v\n * @return {this}\n * */\n setAutosave(v) {\n c.autosave = !!v;\n return this;\n },\n\n /**\n * Returns number of steps required before trigger autosave\n * @return {number}\n * */\n getStepsBeforeSave() {\n return c.stepsBeforeSave;\n },\n\n /**\n * Set steps required before trigger autosave\n * @param {number} v\n * @return {this}\n * */\n setStepsBeforeSave(v) {\n c.stepsBeforeSave = v;\n return this;\n },\n\n /**\n * Add new storage\n * @param {string} id Storage ID\n * @param {Object} storage Storage wrapper\n * @param {Function} storage.load Load method\n * @param {Function} storage.store Store method\n * @return {this}\n * @example\n * storageManager.add('local2', {\n * load: function(keys, clb, clbErr) {\n * var res = {};\n * for (var i = 0, len = keys.length; i < len; i++){\n * var v = localStorage.getItem(keys[i]);\n * if(v) res[keys[i]] = v;\n * }\n * clb(res); // might be called inside some async method\n * // In case of errors...\n * // clbErr('Went something wrong');\n * },\n * store: function(data, clb, clbErr) {\n * for(var key in data)\n * localStorage.setItem(key, data[key]);\n * clb(); // might be called inside some async method\n * }\n * });\n * */\n add(id, storage) {\n storages[id] = storage;\n return this;\n },\n\n /**\n * Returns storage by id\n * @param {string} id Storage ID\n * @return {Object|null}\n * */\n get(id) {\n return storages[id] || null;\n },\n\n /**\n * Returns all storages\n * @return {Array}\n * */\n getStorages() {\n return storages;\n },\n\n /**\n * Returns current storage type\n * @return {string}\n * */\n getCurrent() {\n return c.currentStorage;\n },\n\n /**\n * Set current storage type\n * @param {string} id Storage ID\n * @return {this}\n * */\n setCurrent(id) {\n c.currentStorage = id;\n return this;\n },\n\n /**\n * Store key-value resources in the current storage\n * @param {Object} data Data in key-value format, eg. {item1: value1, item2: value2}\n * @param {Function} clb Callback function\n * @return {Object|null}\n * @example\n * storageManager.store({item1: value1, item2: value2});\n * */\n store(data, clb) {\n const st = this.get(this.getCurrent());\n const toStore = {};\n this.onStart('store', data);\n\n for (let key in data) {\n toStore[c.id + key] = data[key];\n }\n\n return st\n ? st.store(\n toStore,\n res => {\n this.onAfter('store', res);\n clb && clb(res);\n this.onEnd('store', res);\n },\n err => {\n this.onError('store', err);\n }\n )\n : null;\n },\n\n /**\n * Load resource from the current storage by keys\n * @param {string|Array} keys Keys to load\n * @param {Function} clb Callback function\n * @example\n * storageManager.load(['item1', 'item2'], res => {\n * // res -> {item1: value1, item2: value2}\n * });\n * storageManager.load('item1', res => {\n * // res -> {item1: value1}\n * });\n * */\n load(keys, clb) {\n var st = this.get(this.getCurrent());\n var keysF = [];\n var result = {};\n\n if (typeof keys === 'string') keys = [keys];\n this.onStart('load', keys);\n\n for (var i = 0, len = keys.length; i < len; i++) {\n keysF.push(c.id + keys[i]);\n }\n\n if (st) {\n st.load(\n keysF,\n res => {\n // Restore keys name\n var reg = new RegExp('^' + c.id + '');\n for (var itemKey in res) {\n var itemKeyR = itemKey.replace(reg, '');\n result[itemKeyR] = res[itemKey];\n }\n\n this.onAfter('load', result);\n clb && clb(result);\n this.onEnd('load', result);\n },\n err => {\n clb && clb(result);\n this.onError('load', err);\n }\n );\n } else {\n clb && clb(result);\n }\n },\n\n /**\n * Load default storages\n * @return {this}\n * @private\n * */\n loadDefaultProviders() {\n for (var id in defaultStorages) this.add(id, defaultStorages[id]);\n return this;\n },\n\n /**\n * Get current storage\n * @return {Storage}\n * */\n getCurrentStorage() {\n return this.get(this.getCurrent());\n },\n\n /**\n * On start callback\n * @private\n */\n onStart(ctx, data) {\n if (em) {\n em.trigger(eventStart);\n ctx && em.trigger(`${eventStart}:${ctx}`, data);\n }\n },\n\n /**\n * On after callback (before passing data to the callback)\n * @private\n */\n onAfter(ctx, data) {\n if (em) {\n em.trigger(eventAfter);\n ctx && em.trigger(`${eventAfter}:${ctx}`, data);\n }\n },\n\n /**\n * On end callback\n * @private\n */\n onEnd(ctx, data) {\n if (em) {\n em.trigger(eventEnd);\n ctx && em.trigger(`${eventEnd}:${ctx}`, data);\n }\n },\n\n /**\n * On error callback\n * @private\n */\n onError(ctx, data) {\n if (em) {\n em.trigger(eventError, data);\n ctx && em.trigger(`${eventError}:${ctx}`, data);\n this.onEnd(ctx, data);\n }\n },\n\n /**\n * Check if autoload is possible\n * @return {Boolean}\n * @private\n * */\n canAutoload() {\n const storage = this.getCurrentStorage();\n return storage && this.getConfig().autoload;\n },\n\n destroy() {\n [c, em, storages, defaultStorages].forEach(i => (i = {}));\n }\n };\n};\n","export default {\n stylePrefix: 'mdl-',\n\n title: '',\n\n content: '',\n\n backdrop: true\n};\n","import Backbone from 'backbone';\n\nexport default Backbone.Model.extend({\n defaults: {\n title: '',\n content: '',\n open: false\n }\n});\n","import Backbone from 'backbone';\n\nexport default Backbone.View.extend({\n template({ pfx, ppfx, content, title }) {\n return `
\n
\n
${title}
\n
\n
\n
\n
${content}
\n
\n
\n
\n
`;\n },\n\n events: {\n click: 'onClick',\n 'click [data-close-modal]': 'hide'\n },\n\n initialize(o) {\n const model = this.model;\n const config = o.config || {};\n const pfx = config.stylePrefix || '';\n this.config = config;\n this.pfx = pfx;\n this.ppfx = config.pStylePrefix || '';\n this.listenTo(model, 'change:open', this.updateOpen);\n this.listenTo(model, 'change:title', this.updateTitle);\n this.listenTo(model, 'change:content', this.updateContent);\n },\n\n onClick(e) {\n const bkd = this.config.backdrop;\n bkd && e.target === this.el && this.hide();\n },\n\n /**\n * Returns collector element\n * @return {HTMLElement}\n * @private\n */\n getCollector() {\n if (!this.$collector)\n this.$collector = this.$el.find('.' + this.pfx + 'collector');\n return this.$collector;\n },\n\n /**\n * Returns content element\n * @return {HTMLElement}\n * @private\n */\n getContent() {\n const pfx = this.pfx;\n\n if (!this.$content) {\n this.$content = this.$el.find(`.${pfx}content #${pfx}c`);\n }\n\n return this.$content;\n },\n\n /**\n * Returns title element\n * @return {HTMLElement}\n * @private\n */\n getTitle() {\n if (!this.$title) this.$title = this.$el.find('.' + this.pfx + 'title');\n return this.$title.get(0);\n },\n\n /**\n * Update content\n * @private\n * */\n updateContent() {\n var content = this.getContent();\n const children = content.children();\n const coll = this.getCollector();\n const body = this.model.get('content');\n children.length && coll.append(children);\n content.empty().append(body);\n },\n\n /**\n * Update title\n * @private\n * */\n updateTitle() {\n var title = this.getTitle();\n if (title) title.innerHTML = this.model.get('title');\n },\n\n /**\n * Update open\n * @private\n * */\n updateOpen() {\n this.el.style.display = this.model.get('open') ? '' : 'none';\n },\n\n /**\n * Hide modal\n * @private\n * */\n hide() {\n this.model.set('open', 0);\n },\n\n /**\n * Show modal\n * @private\n * */\n show(opts = {}) {\n this.model.set('open', 1);\n this.updateAttr(opts.attributes);\n },\n\n updateAttr(attr) {\n const { pfx, $el, el } = this;\n const currAttr = [].slice.call(el.attributes).map(i => i.name);\n $el.removeAttr(currAttr.join(' '));\n $el.attr({\n ...(attr || {}),\n class: `${pfx}container ${(attr && attr.class) || ''}`.trim()\n });\n },\n\n render() {\n const el = this.$el;\n const obj = this.model.toJSON();\n obj.pfx = this.pfx;\n obj.ppfx = this.ppfx;\n el.html(this.template(obj));\n this.updateAttr();\n this.updateOpen();\n return this;\n }\n});\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/modal_dialog/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * modal: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const modal = editor.Modal;\n * ```\n *\n * * [open](#open)\n * * [close](#close)\n * * [isOpen](#isopen)\n * * [setTitle](#settitle)\n * * [getTitle](#gettitle)\n * * [setContent](#setcontent)\n * * [getContent](#getcontent)\n * * [onceClose](#onceclose)\n * * [onceOpen](#onceopen)\n *\n * @module Modal\n */\n\nimport defaults from './config/config';\nimport ModalM from './model/Modal';\nimport ModalView from './view/ModalView';\n\nexport default () => {\n var c = {};\n var model, modal;\n\n const triggerEvent = (enable, em) => {\n em && em.trigger(`modal:${enable ? 'open' : 'close'}`);\n };\n\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Modal',\n\n getConfig() {\n return c;\n },\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config = {}) {\n c = {\n ...defaults,\n ...config\n };\n\n const em = c.em;\n this.em = em;\n var ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n model = new ModalM(c);\n model.on('change:open', (m, enb) => triggerEvent(enb, em));\n modal = new ModalView({\n model,\n config: c\n });\n\n return this;\n },\n\n postRender(view) {\n const el = view.model.getConfig().el || view.el;\n this.render().appendTo(el);\n },\n\n /**\n * Open the modal window\n * @param {Object} [opts={}] Options\n * @param {String|HTMLElement} [opts.title] Title to set for the modal\n * @param {String|HTMLElement} [opts.content] Content to set for the modal\n * @param {Object} [opts.attributes] Updates the modal wrapper with custom attributes\n * @return {this}\n */\n open(opts = {}) {\n opts.title && this.setTitle(opts.title);\n opts.content && this.setContent(opts.content);\n modal.show(opts);\n return this;\n },\n\n /**\n * Close the modal window\n * @return {this}\n */\n close() {\n modal.hide();\n return this;\n },\n\n /**\n * Execute callback when the modal will be closed.\n * The callback will be called one only time\n * @param {Function} clb\n * @returns {this}\n */\n onceClose(clb) {\n this.em.once('modal:close', clb);\n return this;\n },\n\n /**\n * Execute callback when the modal will be opened.\n * The callback will be called one only time\n * @param {Function} clb\n * @returns {this}\n */\n onceOpen(clb) {\n this.em.once('modal:open', clb);\n return this;\n },\n\n /**\n * Checks if the modal window is open\n * @return {Boolean}\n */\n isOpen() {\n return !!model.get('open');\n },\n\n /**\n * Set the title to the modal window\n * @param {string} title Title\n * @return {this}\n * @example\n * modal.setTitle('New title');\n */\n setTitle(title) {\n model.set('title', title);\n return this;\n },\n\n /**\n * Returns the title of the modal window\n * @return {string}\n */\n getTitle() {\n return model.get('title');\n },\n\n /**\n * Set the content of the modal window\n * @param {string|HTMLElement} content Content\n * @return {this}\n * @example\n * modal.setContent('
Some HTML content
');\n */\n setContent(content) {\n model.set('content', ' ');\n model.set('content', content);\n return this;\n },\n\n /**\n * Get the content of the modal window\n * @return {string}\n */\n getContent() {\n return model.get('content');\n },\n\n /**\n * Returns content element\n * @return {HTMLElement}\n * @private\n */\n getContentEl() {\n return modal.getContent().get(0);\n },\n\n /**\n * Returns modal model\n * @return {Model}\n * @private\n */\n getModel() {\n return model;\n },\n\n /**\n * Render the modal window\n * @return {HTMLElement}\n * @private\n */\n render() {\n return modal.render().$el;\n },\n\n destroy() {\n modal.remove();\n [c, model, modal].forEach(i => (i = {}));\n this.em = {};\n }\n };\n};\n","export default {\n textTags: ['br', 'b', 'i', 'u', 'a', 'ul', 'ol'],\n\n // Custom CSS parser\n parserCss: null,\n\n // Custom HTML parser\n parserHtml: null\n};\n","import { keys } from 'underscore';\n\n// At-rules\n// https://developer.mozilla.org/it/docs/Web/API/CSSRule#Type_constants\nconst atRules = {\n 4: 'media',\n 5: 'font-face',\n 6: 'page',\n 7: 'keyframes',\n 11: 'counter-style',\n 12: 'supports',\n 13: 'document',\n 14: 'font-feature-values',\n 15: 'viewport'\n};\nconst atRuleKeys = keys(atRules);\nconst singleAtRules = ['5', '6', '11', '15'];\nconst singleAtRulesNames = ['font-face', 'page', 'counter-style', 'viewport'];\n\n/**\n * Parse selector string to array.\n * Only classe based are valid as CSS rules inside editor, not valid\n * selectors will be dropped as additional\n * It's ok with the last part of the string as state (:hover, :active)\n * @param {string} str Selectors string\n * @return {Object}\n * @example\n * var res = parseSelector('.test1, .test1.test2, .test2 .test3');\n * console.log(res);\n * // {\n * //result: [['test1'], ['test1', 'test2']],\n * //add: ['.test2 .test3']\n * //}\n */\nexport const parseSelector = (str = '') => {\n const add = [];\n const result = [];\n const sels = str.split(',');\n\n for (var i = 0, len = sels.length; i < len; i++) {\n var sel = sels[i].trim();\n\n // Will accept only concatenated classes and last\n // class might be with state (eg. :hover), nothing else.\n // Can also accept SINGLE ID selectors, eg. `#myid`, `#myid:hover`\n // Composed are not valid: `#myid.some-class`, `#myid.some-class:hover`\n if (\n /^(\\.{1}[\\w\\-]+)+(:{1,2}[\\w\\-()]+)?$/gi.test(sel) ||\n /^(#{1}[\\w\\-]+){1}(:{1,2}[\\w\\-()]+)?$/gi.test(sel)\n ) {\n var cls = sel.split('.').filter(Boolean);\n result.push(cls);\n } else {\n add.push(sel);\n }\n }\n\n return {\n result,\n add\n };\n};\n\n/**\n * Parse style declarations of the node\n * @param {CSSRule} node\n * @return {Object}\n */\nexport const parseStyle = node => {\n const stl = node.style;\n const style = {};\n\n for (var i = 0, len = stl.length; i < len; i++) {\n const propName = stl[i];\n const propValue = stl.getPropertyValue(propName);\n const important = stl.getPropertyPriority(propName);\n style[propName] = `${propValue}${important ? ` !${important}` : ''}`;\n }\n\n return style;\n};\n\n/**\n * Get the condition when possible\n * @param {CSSRule} node\n * @return {string}\n */\nexport const parseCondition = node => {\n const condition =\n node.conditionText ||\n (node.media && node.media.mediaText) ||\n node.name ||\n node.selectorText ||\n '';\n return condition.trim();\n};\n\n/**\n * Create node for the editor\n * @param {Array} selectors Array containing strings of classes\n * @param {Object} style Key-value object of style declarations\n * @return {Object}\n */\nexport const createNode = (selectors, style = {}, opts = {}) => {\n const node = {};\n const selLen = selectors.length;\n const lastClass = selectors[selLen - 1];\n const stateArr = lastClass ? lastClass.split(/:(.+)/) : [];\n const state = stateArr[1];\n const { atRule, selectorsAdd, mediaText } = opts;\n const singleAtRule = singleAtRulesNames.indexOf(atRule) >= 0;\n singleAtRule && (node.singleAtRule = 1);\n atRule && (node.atRuleType = atRule);\n selectorsAdd && (node.selectorsAdd = selectorsAdd);\n mediaText && (node.mediaText = mediaText);\n\n // Isolate the state from selectors\n if (state) {\n selectors[selLen - 1] = stateArr[0];\n node.state = state;\n stateArr.splice(stateArr.length - 1, 1);\n }\n\n node.selectors = selectors;\n node.style = style;\n\n return node;\n};\n\n/**\n * Fetch data from node\n * @param {StyleSheet|CSSRule} el\n * @return {Array}\n */\nexport const parseNode = el => {\n var result = [];\n var nodes = el.cssRules || [];\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n const node = nodes[i];\n const type = node.type.toString();\n let singleAtRule = 0;\n let atRuleType = '';\n let condition = '';\n // keyText is for CSSKeyframeRule\n let sels = node.selectorText || node.keyText;\n const isSingleAtRule = singleAtRules.indexOf(type) >= 0;\n\n // Check if the node is an at-rule\n if (isSingleAtRule) {\n singleAtRule = 1;\n atRuleType = atRules[type];\n condition = parseCondition(node);\n } else if (atRuleKeys.indexOf(type) >= 0) {\n var subRules = parseNode(node);\n condition = parseCondition(node);\n\n for (var s = 0, lens = subRules.length; s < lens; s++) {\n var subRule = subRules[s];\n condition && (subRule.mediaText = condition);\n subRule.atRuleType = atRules[type];\n }\n result = result.concat(subRules);\n }\n\n if (!sels && !isSingleAtRule) continue;\n const style = parseStyle(node);\n const selsParsed = parseSelector(sels);\n const selsAdd = selsParsed.add;\n sels = selsParsed.result;\n\n let lastRule;\n // For each group of selectors\n for (var k = 0, len3 = sels.length; k < len3; k++) {\n const model = createNode(sels[k], style, {\n atRule: atRules[type]\n });\n result.push(model);\n lastRule = model;\n }\n\n // Need to push somewhere not class-based selectors, if some rule was\n // created will push them there, otherwise will create a new rule\n if (selsAdd.length) {\n var selsAddStr = selsAdd.join(', ');\n if (lastRule) {\n lastRule.selectorsAdd = selsAddStr;\n } else {\n const model = {\n selectors: [],\n selectorsAdd: selsAddStr,\n style\n };\n singleAtRule && (model.singleAtRule = singleAtRule);\n atRuleType && (model.atRuleType = atRuleType);\n condition && (model.mediaText = condition);\n result.push(model);\n }\n }\n // console.log('LAST PUSH', result[result.length - 1]);\n }\n\n return result;\n};\n\n/**\n * Parse CSS string and return the array of objects\n * @param {String} str CSS string\n * @return {Array} Array of objects for the definition of CSSRules\n */\nexport default str => {\n const el = document.createElement('style');\n el.innerHTML = str;\n\n // There is no .sheet before adding it to the \n document.head.appendChild(el);\n const sheet = el.sheet;\n document.head.removeChild(el);\n\n return parseNode(sheet);\n};\n","import { isString } from 'underscore';\nimport BrowserCssParser, {\n parseSelector,\n createNode\n} from './BrowserParserCss';\n\nexport default (config = {}) => ({\n /**\n * Parse CSS string to a desired model object\n * @param {String} str CSS string\n * @return {Array}\n */\n parse(str) {\n let result = [];\n const { parserCss, em } = config;\n const editor = em && em.get && em.get('Editor');\n const nodes = parserCss ? parserCss(str, editor) : BrowserCssParser(str);\n nodes.forEach(node => (result = result.concat(this.checkNode(node))));\n em && em.trigger('parse:css', { input: str, output: result });\n\n return result;\n },\n\n /**\n * Check the returned node from a custom parser and transforms it to\n * a valid object for the CSS composer\n * @return {[type]}\n */\n checkNode(node) {\n const { selectors, style } = node;\n\n if (isString(selectors)) {\n const nodes = [];\n const selsParsed = parseSelector(selectors);\n const classSets = selsParsed.result;\n const selectorsAdd = selsParsed.add.join(', ');\n const opts = {\n atRule: node.atRule,\n mediaText: node.params\n };\n\n if (classSets.length) {\n classSets.forEach(classSet => {\n nodes.push(createNode(classSet, style, opts));\n });\n } else {\n nodes.push(createNode([], style, opts));\n }\n\n if (selectorsAdd) {\n const lastNode = nodes[nodes.length - 1];\n lastNode.selectorsAdd = selectorsAdd;\n }\n\n node = nodes;\n }\n\n return node;\n }\n});\n","import defaults from './config/config';\nimport parserCss from './model/ParserCss';\nimport parserHtml from './model/ParserHtml';\n\nexport default () => {\n let conf = {};\n let pHtml, pCss;\n\n return {\n compTypes: '',\n\n parserCss: null,\n\n parserHtml: null,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Parser',\n\n /**\n * Get config object\n * @return {Object}\n */\n getConfig() {\n return conf;\n },\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @param {Array} [config.blocks=[]] Default blocks\n * @return {this}\n * @example\n * ...\n * {\n * blocks: [\n * {id:'h1-block' label: 'Heading', content:'

...

'},\n * ...\n * ],\n * }\n * ...\n */\n init(config = {}) {\n conf = { ...defaults, ...config };\n conf.Parser = this;\n pHtml = new parserHtml(conf);\n pCss = new parserCss(conf);\n this.em = conf.em;\n this.parserCss = pCss;\n this.parserHtml = pHtml;\n return this;\n },\n\n /**\n * Parse HTML string and return valid model\n * @param {string} str HTML string\n * @return {Object}\n */\n parseHtml(str) {\n const { em, compTypes } = this;\n pHtml.compTypes = em ? em.get('DomComponents').getTypes() : compTypes;\n return pHtml.parse(str, pCss);\n },\n\n /**\n * Parse CSS string and return valid model\n * @param {string} str CSS string\n * @return {Array}\n */\n parseCss(str) {\n return pCss.parse(str);\n },\n\n destroy() {\n [conf, pHtml, pCss].forEach(i => (i = {}));\n ['em', 'parserCss', 'parserHtml'].forEach(i => (this[i] = {}));\n }\n };\n};\n","export default {\n // Style prefix\n stylePrefix: 'clm-',\n\n // Specify the element to use as a container, string (query) or HTMLElement\n // With the empty value, nothing will be rendered\n appendTo: '',\n\n // Default selectors\n selectors: [],\n\n // States\n states: [{ name: 'hover' }, { name: 'active' }, { name: 'nth-of-type(2n)' }],\n\n // Custom selector name escaping strategy, eg.\n // name => name.replace(' ', '_')\n escapeName: 0,\n\n // Custom selected name strategy (the string you see after 'Selected')\n // ({ result, state, target }) => {\n // return `${result} - ID: ${target.getId()}`\n // }\n selectedName: 0,\n\n // Icon used to add new selector\n iconAdd:\n '',\n\n // Icon used to sync styles\n iconSync:\n '',\n\n // Icon to show when the selector is enabled\n iconTagOn:\n '',\n\n // Icon to show when the selector is disabled\n iconTagOff:\n '',\n\n // Icon used to remove the selector\n iconTagRemove:\n '',\n\n /**\n * Custom render function for the Select Manager\n * @example\n * render: ({ el, labelHead, labelStates, labelInfo, }) => {\n * // You can use the default `el` to extend/edit the current\n * // DOM element of the Selector Manager\n * const someEl = document.createElement('div');\n * // ...\n * el.appendChild(someEl);\n * // no need to return anything from the function\n *\n * // Create and return a new DOM element\n * const newEl = document.createElement('div');\n * // ...\n * return newEl;\n *\n * // Return an HTML string for a completely different layout.\n * // Use `data-*` attributes to make the module recognize some elements:\n * // `data-states` - Where to append state ``\n )\n );\n\n return result.join('');\n },\n\n /**\n * Add new model\n * @param {Object} model\n * @private\n */\n addNew(model) {\n this.addToClasses(model);\n },\n\n /**\n * Start tag creation\n * @param {Object} e\n * @private\n */\n startNewTag() {\n this.$addBtn.css({ display: 'none' });\n this.$input.show().focus();\n },\n\n /**\n * End tag creation\n * @param {Object} e\n * @private\n */\n endNewTag() {\n this.$addBtn.css({ display: '' });\n this.$input.hide().val('');\n },\n\n /**\n * Checks what to do on keyup event\n * @param {Object} e\n * @private\n */\n onInputKeyUp(e) {\n if (e.keyCode === 13) this.addNewTag(this.$input.val());\n else if (e.keyCode === 27) this.endNewTag();\n },\n\n checkStates() {\n const state = this.em.getState();\n const statesEl = this.getStates();\n statesEl && statesEl.val(state);\n },\n\n /**\n * Triggered when component is changed\n * @param {Object} e\n * @private\n */\n componentChanged: debounce(function({ targets } = {}) {\n this.updateSelection(targets);\n }),\n\n updateSelection(targets) {\n let trgs = targets || this.getTargets();\n trgs = isArray(trgs) ? trgs : [trgs];\n let selectors = [];\n\n if (trgs && trgs.length) {\n selectors = this.getCommonSelectors({ targets: trgs });\n this.checkSync({ validSelectors: selectors });\n }\n\n this.collection.reset(selectors);\n this.updateStateVis(trgs);\n\n return selectors;\n },\n\n getCommonSelectors({ targets, opts = {} } = {}) {\n const trgs = targets || this.getTargets();\n const selectors = trgs\n .map(tr => tr.getSelectors && tr.getSelectors().getValid(opts))\n .filter(i => i);\n return this._commonSelectors(...selectors);\n },\n\n _commonSelectors(...args) {\n if (!args.length) return [];\n if (args.length === 1) return args[0];\n if (args.length === 2)\n return args[0].filter(item => args[1].indexOf(item) >= 0);\n\n return args\n .slice(1)\n .reduce((acc, item) => this._commonSelectors(acc, item), args[0]);\n },\n\n checkSync: debounce(function() {\n const { $btnSyncEl, config, collection } = this;\n const target = this.getTarget();\n let hasStyle;\n\n if (target && config.componentFirst && collection.length) {\n const style = target.getStyle();\n hasStyle = !isEmpty(style);\n }\n\n $btnSyncEl && $btnSyncEl[hasStyle ? 'show' : 'hide']();\n }),\n\n getTarget() {\n return this.target.getSelected();\n },\n\n getTargets() {\n return this.target.getSelectedAll();\n },\n\n /**\n * Update states visibility. Hides states in case there is no tags\n * inside collection\n * @private\n */\n updateStateVis(target) {\n const em = this.em;\n const avoidInline = em && em.getConfig('avoidInlineStyle');\n const display = this.collection.length || avoidInline ? '' : 'none';\n this.getStatesC().css('display', display);\n this.updateSelector(target);\n },\n\n __handleStateChange() {\n this.updateSelector(this.getTargets());\n },\n\n /**\n * Update selector helper\n * @return {this}\n * @private\n */\n updateSelector(targets) {\n const elSel = this.el.querySelector('[data-selected]');\n const result = [];\n let trgs = targets || this.getTargets();\n trgs = isArray(trgs) ? trgs : [trgs];\n\n trgs.forEach(target => result.push(this.__getName(target)));\n elSel && (elSel.innerHTML = result.join(', '));\n this.checkStates();\n },\n\n __getName(target) {\n const { pfx, config, em } = this;\n const { selectedName, componentFirst } = config;\n let result;\n\n if (isString(target)) {\n result = `${target}`;\n } else {\n const sel = target && target.get && target.getSelectors();\n if (!sel) return;\n const selectors = sel.getStyleable();\n const state = em.get('state');\n const idRes = target.getId\n ? `${target.getName()}#${target.getId()}`\n : '';\n result = this.collection.getFullString(selectors);\n result = result\n ? `${result}`\n : target.get('selectorsAdd') || idRes;\n result = componentFirst && idRes ? idRes : result;\n result += state ? `:${state}` : '';\n result = selectedName ? selectedName({ result, state, target }) : result;\n }\n\n return result && `${result}`;\n },\n\n /**\n * Triggered when the select with states is changed\n * @param {Object} e\n * @private\n */\n stateChanged(ev) {\n const { em } = this;\n const { value } = ev.target;\n em.set('state', value);\n },\n\n /**\n * Add new tag to collection, if possible, and to the component\n * @param {Object} e\n * @private\n */\n addNewTag(label) {\n const { em } = this;\n\n if (!label.trim()) return;\n\n if (em) {\n const sm = em.get('SelectorManager');\n const model = sm.add({ label });\n\n this.getTargets().forEach(target => {\n target.getSelectors().add(model);\n this.collection.add(model);\n this.updateStateVis();\n });\n }\n\n this.endNewTag();\n },\n\n /**\n * Add new object to collection\n * @param {Object} model Model\n * @param {Object} fragmentEl Fragment collection\n * @return {Object} Object created\n * @private\n * */\n addToClasses(model, fragmentEl = null) {\n const fragment = fragmentEl;\n const classes = this.getClasses();\n const rendered = new ClassTagView({\n model,\n config: this.config,\n coll: this.collection\n }).render().el;\n\n fragment ? fragment.appendChild(rendered) : classes.append(rendered);\n\n return rendered;\n },\n\n /**\n * Render the collection of classes\n * @private\n */\n renderClasses() {\n const frag = document.createDocumentFragment();\n const classes = this.getClasses();\n classes.empty();\n this.collection.each(model => this.addToClasses(model, frag));\n classes.append(frag);\n },\n\n /**\n * Return classes element\n * @return {HTMLElement}\n * @private\n */\n getClasses() {\n return this.$el.find('[data-selectors]');\n },\n\n /**\n * Return states element\n * @return {HTMLElement}\n * @private\n */\n getStates() {\n if (!this.$states) {\n const el = this.$el.find('[data-states]');\n this.$states = el[0] && el;\n }\n return this.$states;\n },\n\n /**\n * Return states container element\n * @return {HTMLElement}\n * @private\n */\n getStatesC() {\n if (!this.$statesC) this.$statesC = this.$el.find('#' + this.stateInputC);\n return this.$statesC;\n },\n\n render() {\n const { em, pfx, ppfx, config, $el, el } = this;\n const { render, iconSync, iconAdd } = config;\n const tmpOpts = {\n iconSync,\n iconAdd,\n labelHead: em.t('selectorManager.label'),\n labelStates: em.t('selectorManager.emptyState'),\n labelInfo: em.t('selectorManager.selected'),\n ppfx,\n pfx,\n el\n };\n $el.html(this.template(tmpOpts));\n const renderRes = render && render(tmpOpts);\n renderRes && renderRes !== el && $el.empty().append(renderRes);\n this.$input = $el.find('[data-input]');\n this.$addBtn = $el.find('[data-add]');\n this.$classes = $el.find('#' + pfx + 'tags-c');\n this.$btnSyncEl = $el.find('[data-sync-style]');\n this.$input.hide();\n const statesEl = this.getStates();\n statesEl && statesEl.append(this.getStateOptions());\n this.renderClasses();\n $el.attr('class', `${this.className} ${ppfx}one-bg ${ppfx}two-color`);\n return this;\n }\n});\n","/**\n * Selectors in GrapesJS are used in CSS Composer inside Rules and in Components as classes. To illustrate this concept let's take\n * a look at this code:\n *\n * ```css\n * span > #send-btn.btn{\n * ...\n * }\n * ```\n * ```html\n * \n * \n * \n * ```\n *\n * In this scenario we get:\n * * span -> selector of type `tag`\n * * send-btn -> selector of type `id`\n * * btn -> selector of type `class`\n *\n * So, for example, being `btn` the same class entity it'll be easier to refactor and track things.\n *\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/selector_manager/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * selectorManager: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const selectorManager = editor.SelectorManager;\n * ```\n *\n * * [getConfig](#getconfig)\n * * [add](#add)\n * * [addClass](#addclass)\n * * [get](#get)\n * * [getAll](#getall)\n * * [setState](#setstate)\n * * [getState](#getstate)\n *\n * @module SelectorManager\n */\n\nimport { isString, isElement, isObject, isArray } from 'underscore';\nimport { isComponent, isRule } from 'utils/mixins';\nimport defaults from './config/config';\nimport Selector from './model/Selector';\nimport Selectors from './model/Selectors';\nimport ClassTagsView from './view/ClassTagsView';\n\nconst isId = str => isString(str) && str[0] == '#';\nconst isClass = str => isString(str) && str[0] == '.';\n\nexport default config => {\n var c = config || {};\n var selectors;\n\n return {\n Selector,\n\n Selectors,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'SelectorManager',\n\n /**\n * Get configuration object\n * @return {Object}\n */\n getConfig() {\n return c;\n },\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @return {this}\n * @private\n */\n init(conf = {}) {\n c = {\n ...defaults,\n ...conf\n };\n const em = c.em;\n const ppfx = c.pStylePrefix;\n this.em = em;\n\n if (ppfx) {\n c.stylePrefix = ppfx + c.stylePrefix;\n }\n\n this.selectorTags = new ClassTagsView({\n collection: new Selectors([], { em, config: c }),\n config: c\n });\n\n // Global selectors container\n selectors = new Selectors(c.selectors);\n selectors.on('add', model => em.trigger('selector:add', model));\n selectors.on('remove', model => em.trigger('selector:remove', model));\n selectors.on('change', model =>\n em.trigger(\n 'selector:update',\n model,\n model.previousAttributes(),\n model.changedAttributes()\n )\n );\n em.on('change:state', (m, value) => em.trigger('selector:state', value));\n\n return this;\n },\n\n postRender() {\n const elTo = this.getConfig().appendTo;\n\n if (elTo) {\n const el = isElement(elTo) ? elTo : document.querySelector(elTo);\n el.appendChild(this.render([]));\n }\n },\n\n select(value, opts = {}) {\n const targets = Array.isArray(value) ? value : [value];\n const toSelect = this.em.get('StyleManager').setTarget(targets, opts);\n const res = toSelect\n .filter(i => i)\n .map(sel =>\n isComponent(sel)\n ? sel\n : isRule(sel) && !sel.get('selectorsAdd')\n ? sel\n : sel.getSelectorsString()\n );\n this.selectorTags.componentChanged({ targets: res });\n return this;\n },\n\n /**\n * Change the selector state\n * @param {String} value State value\n * @returns {this}\n * @example\n * selectorManager.setState('hover');\n */\n setState(value) {\n this.em.setState(value);\n return this;\n },\n\n /**\n * Get the current selector state\n * @returns {String}\n */\n getState() {\n return this.em.getState();\n },\n\n addSelector(name, opt = {}) {\n let opts = { ...opt };\n\n if (isObject(name)) {\n opts = name;\n } else {\n opts.name = name;\n }\n\n if (isId(opts.name)) {\n opts.name = opts.name.substr(1);\n opts.type = Selector.TYPE_ID;\n } else if (isClass(opts.name)) {\n opts.name = opts.name.substr(1);\n }\n\n if (opts.label && !opts.name) {\n opts.name = this.escapeName(opts.label);\n }\n\n const cname = opts.name;\n const selector = cname\n ? this.get(cname, opts.type)\n : selectors.where(opts)[0];\n\n if (!selector) {\n return selectors.add(opts, { config: c });\n }\n\n return selector;\n },\n\n getSelector(name, type = Selector.TYPE_CLASS) {\n if (isId(name)) {\n name = name.substr(1);\n type = Selector.TYPE_ID;\n } else if (isClass(name)) {\n name = name.substr(1);\n }\n\n return selectors.where({ name, type })[0];\n },\n\n /**\n * Add a new selector to collection if it's not already exists. Class type is a default one\n * @param {String|Array} name Selector/s name\n * @param {Object} opts Selector options\n * @param {String} [opts.label=''] Label for the selector, if it's not provided the label will be the same as the name\n * @param {String} [opts.type=1] Type of the selector. At the moment, only 'class' (1) is available\n * @return {Model|Array}\n * @example\n * const selector = selectorManager.add('selectorName');\n * // Same as\n * const selector = selectorManager.add('selectorName', {\n * type: 1,\n * label: 'selectorName'\n * });\n * // Multiple selectors\n * const selectors = selectorManager.add(['.class1', '.class2', '#id1']);\n * */\n add(name, opts = {}) {\n if (isArray(name)) {\n return name.map(item => this.addSelector(item, opts));\n } else {\n return this.addSelector(name, opts);\n }\n },\n\n /**\n * Add class selectors\n * @param {Array|string} classes Array or string of classes\n * @return {Array} Array of added selectors\n * @example\n * sm.addClass('class1');\n * sm.addClass('class1 class2');\n * sm.addClass(['class1', 'class2']);\n * // -> [SelectorObject, ...]\n */\n addClass(classes) {\n const added = [];\n\n if (isString(classes)) {\n classes = classes.trim().split(' ');\n }\n\n classes.forEach(name => added.push(this.addSelector(name)));\n return added;\n },\n\n /**\n * Get the selector by its name\n * @param {String|Array} name Selector name\n * @param {String} type Selector type\n * @return {Model|Array}\n * @example\n * const selector = selectorManager.get('selectorName');\n * // or get an array\n * const selectors = selectorManager.get(['class1', 'class2']);\n * */\n get(name, type) {\n if (isArray(name)) {\n const result = [];\n const selectors = name\n .map(item => this.getSelector(item))\n .filter(item => item);\n selectors.forEach(\n item => result.indexOf(item) < 0 && result.push(item)\n );\n return result;\n } else {\n return this.getSelector(name, type);\n }\n },\n\n /**\n * Get all selectors\n * @return {Collection}\n * */\n getAll() {\n return selectors;\n },\n\n /**\n * Return escaped selector name\n * @param {String} name Selector name to escape\n * @returns {String} Escaped name\n */\n escapeName(name) {\n const { escapeName } = c;\n return escapeName ? escapeName(name) : Selector.escapeName(name);\n },\n\n /**\n * Render class selectors. If an array of selectors is provided a new instance of the collection will be rendered\n * @param {Array} selectors\n * @return {HTMLElement}\n * @private\n */\n render(selectors) {\n if (selectors) {\n this.selectorTags = new ClassTagsView({\n collection: new Selectors(selectors),\n config: c\n });\n return this.selectorTags.render().el;\n } else return this.selectorTags.render().el;\n },\n\n destroy() {\n selectors.reset();\n selectors.stopListening();\n this.selectorTags.remove();\n [c, selectors].forEach(i => (i = {}));\n this.em = {};\n this.selectorTags = {};\n }\n };\n};\n","export default {\n // Style prefix\n stylePrefix: 'css-',\n\n // Default CSS style\n rules: []\n};\n","import { map } from 'underscore';\nimport Backbone from 'backbone';\nimport Styleable from 'domain_abstract/model/Styleable';\nimport { isEmpty, forEach, isString } from 'underscore';\nimport Selectors from 'selector_manager/model/Selectors';\nimport { isEmptyObj } from 'utils/mixins';\n\nconst { CSS } = window;\n\nexport default Backbone.Model.extend(Styleable).extend({\n defaults: {\n // Css selectors\n selectors: [],\n\n // Additional string css selectors\n selectorsAdd: '',\n\n // Css properties style\n style: {},\n\n // On which device width this rule should be rendered, eg. @media (max-width: 1000px)\n mediaText: '',\n\n // State of the rule, eg: hover | pressed | focused\n state: '',\n\n // Indicates if the rule is stylable\n stylable: true,\n\n // Type of at-rule, eg. 'media', 'font-face', etc.\n atRuleType: '',\n\n // This particolar property is used only on at-rules, like 'page' or\n // 'font-face', where the block containes only style declarations\n singleAtRule: 0,\n\n // If true, sets '!important' on all properties\n // You can use an array to specify properties to set important\n // Used in view\n important: 0,\n\n _undo: true\n },\n\n initialize(c, opt = {}) {\n this.config = c || {};\n this.opt = opt;\n this.em = opt.em;\n this.ensureSelectors();\n this.on('change', this.__onChange);\n },\n\n __onChange(m, opts) {\n const { em } = this;\n const changed = this.changedAttributes();\n !isEmptyObj(changed) && em && em.changesUp(opts);\n },\n\n clone() {\n const opts = { ...this.opt };\n const attr = { ...this.attributes };\n attr.selectors = this.get('selectors').map(s => s.clone());\n return new this.constructor(attr, opts);\n },\n\n ensureSelectors(m, c, opts) {\n const { em } = this;\n const sm = em && em.get('SelectorManager');\n const toListen = [this, 'change:selectors', this.ensureSelectors];\n let sels = this.getSelectors();\n this.stopListening(...toListen);\n\n if (sels.models) {\n sels = [...sels.models];\n }\n\n sels = isString(sels) ? [sels] : sels;\n\n if (Array.isArray(sels)) {\n const res = sels.filter(i => i).map(i => (sm ? sm.add(i) : i));\n sels = new Selectors(res);\n }\n\n this.set('selectors', sels, opts);\n this.listenTo(...toListen);\n },\n\n /**\n * Returns an at-rule statement if possible, eg. '@media (...)', '@keyframes'\n * @return {string}\n */\n getAtRule() {\n const type = this.get('atRuleType');\n const condition = this.get('mediaText');\n // Avoid breaks with the last condition\n const typeStr = type ? `@${type}` : condition ? '@media' : '';\n\n return typeStr + (condition && typeStr ? ` ${condition}` : '');\n },\n\n /**\n * Return selectors fo the rule as a string\n * @return {string}\n */\n selectorsToString(opts = {}) {\n const result = [];\n const state = this.get('state');\n const wrapper = this.get('wrapper');\n const addSelector = this.get('selectorsAdd');\n const isBody = wrapper && opts.body;\n const selOpts = {\n escape: str => (CSS && CSS.escape ? CSS.escape(str) : str)\n };\n const selectors = isBody\n ? 'body'\n : this.get('selectors').getFullString(0, selOpts);\n const stateStr = state && !opts.skipState ? `:${state}` : '';\n selectors && result.push(`${selectors}${stateStr}`);\n addSelector && !opts.skipAdd && result.push(addSelector);\n return result.join(', ');\n },\n\n /**\n * Get declaration block\n * @param {Object} [opts={}] Options\n * @return {string}\n */\n getDeclaration(opts = {}) {\n let result = '';\n const selectors = this.selectorsToString(opts);\n const style = this.styleToString(opts);\n const singleAtRule = this.get('singleAtRule');\n\n if ((selectors || singleAtRule) && style) {\n result = singleAtRule ? style : `${selectors}{${style}}`;\n }\n\n return result;\n },\n\n /**\n * Returns CSS string of the rule\n * @param {Object} [opts={}] Options\n * @return {string}\n */\n toCSS(opts = {}) {\n let result = '';\n const atRule = this.getAtRule();\n const block = this.getDeclaration(opts);\n block && (result = block);\n\n if (atRule && result) {\n result = `${atRule}{${result}}`;\n }\n\n return result;\n },\n\n toJSON(...args) {\n const obj = Backbone.Model.prototype.toJSON.apply(this, args);\n\n if (this.em.getConfig('avoidDefaults')) {\n const defaults = this.defaults;\n\n forEach(defaults, (value, key) => {\n if (obj[key] === value) {\n delete obj[key];\n }\n });\n\n if (isEmpty(obj.selectors)) delete obj.selectors;\n if (isEmpty(obj.style)) delete obj.style;\n }\n\n return obj;\n },\n\n /**\n * Compare the actual model with parameters\n * @param {Object} selectors Collection of selectors\n * @param {String} state Css rule state\n * @param {String} width For which device this style is oriented\n * @param {Object} ruleProps Other rule props\n * @return {Boolean}\n * @private\n */\n compare(selectors, state, width, ruleProps = {}) {\n var st = state || '';\n var wd = width || '';\n var selectorsAdd = ruleProps.selectorsAdd || '';\n var atRuleType = ruleProps.atRuleType || '';\n if (!(selectors instanceof Array) && !selectors.models)\n selectors = [selectors];\n var a1 = map(selectors.models || selectors, model => model.getFullName());\n var a2 = map(this.get('selectors').models, model => model.getFullName());\n var f = false;\n\n if (a1.length !== a2.length) return f;\n\n for (var i = 0; i < a1.length; i++) {\n var re = 0;\n for (var j = 0; j < a2.length; j++) {\n if (a1[i] === a2[j]) re = 1;\n }\n if (re === 0) return f;\n }\n\n if (\n this.get('state') !== st ||\n this.get('mediaText') !== wd ||\n this.get('selectorsAdd') !== selectorsAdd ||\n this.get('atRuleType') !== atRuleType\n ) {\n return f;\n }\n\n return true;\n }\n});\n","import Backbone from 'backbone';\nimport CssRule from './CssRule';\n\nconst { Collection } = Backbone;\n\nexport default Collection.extend({\n model: CssRule,\n\n initialize(models, opt) {\n // Inject editor\n if (opt && opt.em) this.editor = opt.em;\n\n // This will put the listener post CssComposer.postLoad\n setTimeout(() => {\n this.on('remove', this.onRemove);\n this.on('add', this.onAdd);\n });\n },\n\n toJSON(opts) {\n const result = Collection.prototype.toJSON.call(this, opts);\n return result.filter(i => i.style);\n },\n\n onAdd(model, c, o) {\n model.ensureSelectors(model, c, o); // required for undo\n },\n\n onRemove(removed) {\n const em = this.editor;\n em.stopListening(removed);\n em.get('UndoManager').remove(removed);\n },\n\n add(models, opt = {}) {\n if (typeof models === 'string') {\n models = this.editor.get('Parser').parseCss(models);\n }\n opt.em = this.editor;\n return Collection.prototype.add.apply(this, [models, opt]);\n }\n});\n","/**\n * This module contains and manage CSS rules for the template inside the canvas.\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/css_composer/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * cssComposer: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const cssComposer = editor.CssComposer;\n * ```\n *\n * * [load](#load)\n * * [store](#store)\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [clear](#clear)\n * * [setRule](#setrule)\n * * [getRule](#getrule)\n *\n * @module CssComposer\n */\n\nimport { isArray, isUndefined } from 'underscore';\nimport defaults from './config/config';\nimport CssRule from './model/CssRule';\nimport CssRules from './model/CssRules';\nimport CssRulesView from './view/CssRulesView';\nimport Selectors from 'selector_manager/model/Selectors';\nimport Selector from 'selector_manager/model/Selector';\n\nexport default () => {\n let em;\n var c = {};\n var rules, rulesView;\n\n return {\n Selectors,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'CssComposer',\n\n getConfig() {\n return c;\n },\n\n /**\n * Mandatory for the storage manager\n * @type {String}\n * @private\n */\n storageKey() {\n var keys = [];\n var smc = (c.stm && c.stm.getConfig()) || {};\n if (smc.storeCss) keys.push('css');\n if (smc.storeStyles) keys.push('styles');\n return keys;\n },\n\n /**\n * Initializes module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config) {\n c = config || {};\n for (var name in defaults) {\n if (!(name in c)) c[name] = defaults[name];\n }\n\n var ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n var elStyle = (c.em && c.em.config.style) || '';\n c.rules = elStyle || c.rules;\n\n em = c.em;\n rules = new CssRules([], c);\n rulesView = new CssRulesView({\n collection: rules,\n config: c\n });\n return this;\n },\n\n /**\n * On load callback\n * @private\n */\n onLoad() {\n rules.add(c.rules, { silent: 1 });\n },\n\n /**\n * Do stuff after load\n * @param {Editor} em\n * @private\n */\n postLoad() {\n const um = em && em.get('UndoManager');\n um && um.add(this.getAll());\n },\n\n /**\n * Load data from the passed object, if the object is empty will try to fetch them\n * autonomously from the storage manager.\n * The fetched data will be added to the collection\n * @param {Object} data Object of data to load\n * @return {Object} Loaded rules\n */\n load(data) {\n var d = data || '';\n\n if (!d && c.stm) {\n d = c.em.getCacheLoad();\n }\n\n var obj = d.styles || '';\n\n if (d.styles) {\n try {\n obj = JSON.parse(d.styles);\n } catch (err) {}\n } else if (d.css) {\n obj = c.em.get('Parser').parseCss(d.css);\n }\n\n if (isArray(obj)) {\n obj.length && rules.reset(obj);\n } else if (obj) {\n rules.reset(obj);\n }\n\n return obj;\n },\n\n /**\n * Store data to the selected storage\n * @param {Boolean} noStore If true, won't store\n * @return {Object} Data to store\n */\n store(noStore) {\n if (!c.stm) return;\n const obj = {};\n const keys = this.storageKey();\n const hasPages = em && em.get('hasPages');\n if (keys.indexOf('css') >= 0 && !hasPages) obj.css = c.em.getCss();\n if (keys.indexOf('styles') >= 0) obj.styles = JSON.stringify(rules);\n if (!noStore) c.stm.store(obj);\n return obj;\n },\n\n /**\n * Add new rule to the collection, if not yet exists with the same selectors\n * @param {Array} selectors Array of selectors\n * @param {String} state Css rule state\n * @param {String} width For which device this style is oriented\n * @param {Object} props Other props for the rule\n * @param {Object} opts Options for the add of new rule\n * @return {Model}\n * @example\n * var sm = editor.SelectorManager;\n * var sel1 = sm.add('myClass1');\n * var sel2 = sm.add('myClass2');\n * var rule = cssComposer.add([sel1, sel2], 'hover');\n * rule.set('style', {\n * width: '100px',\n * color: '#fff',\n * });\n * */\n add(selectors, state, width, opts = {}, addOpts = {}) {\n var s = state || '';\n var w = width || '';\n var opt = { ...opts };\n var rule = this.get(selectors, s, w, opt);\n\n // do not create rules that were found before\n // unless this is a single at-rule, for which multiple declarations\n // make sense (e.g. multiple `@font-type`s)\n if (rule && rule.config && !rule.config.singleAtRule) {\n return rule;\n } else {\n opt.state = s;\n opt.mediaText = w;\n opt.selectors = [];\n rule = new CssRule(opt, c);\n rule.get('selectors').add(selectors, addOpts);\n rules.add(rule, addOpts);\n return rule;\n }\n },\n\n /**\n * Get the rule\n * @param {Array} selectors Array of selectors\n * @param {String} state Css rule state\n * @param {String} width For which device this style is oriented\n * @param {Object} ruleProps Other rule props\n * @return {Model|null}\n * @example\n * var sm = editor.SelectorManager;\n * var sel1 = sm.add('myClass1');\n * var sel2 = sm.add('myClass2');\n * var rule = cssComposer.get([sel1, sel2], 'hover');\n * // Update the style\n * rule.set('style', {\n * width: '300px',\n * color: '#000',\n * });\n * */\n get(selectors, state, width, ruleProps) {\n var rule = null;\n rules.each(m => {\n if (rule) return;\n if (m.compare(selectors, state, width, ruleProps)) rule = m;\n });\n return rule;\n },\n\n /**\n * Get the collection of rules\n * @return {Collection}\n * */\n getAll() {\n return rules;\n },\n\n /**\n * Remove all rules\n * @return {this}\n */\n clear(opts = {}) {\n this.getAll().reset(null, opts);\n return this;\n },\n\n /**\n * Add a raw collection of rule objects\n * This method overrides styles, in case, of already defined rule\n * @param {Array} data Array of rule objects, eg . [{selectors: ['class1'], style: {....}}, ..]\n * @param {Object} opts Options\n * @return {Array}\n * @private\n */\n addCollection(data, opts = {}) {\n var result = [];\n var d = data instanceof Array ? data : [data];\n\n for (var i = 0, l = d.length; i < l; i++) {\n var rule = d[i] || {};\n if (!rule.selectors) continue;\n var sm = c.em && c.em.get('SelectorManager');\n if (!sm) console.warn('Selector Manager not found');\n var sl = rule.selectors;\n var sels = sl instanceof Array ? sl : [sl];\n var newSels = [];\n\n for (var j = 0, le = sels.length; j < le; j++) {\n var selec = sm.add(sels[j]);\n newSels.push(selec);\n }\n\n var modelExists = this.get(newSels, rule.state, rule.mediaText, rule);\n var model = this.add(newSels, rule.state, rule.mediaText, rule, opts);\n var updateStyle = !modelExists || !opts.avoidUpdateStyle;\n const style = rule.style || {};\n\n if (updateStyle) {\n let styleUpdate = opts.extend\n ? { ...model.get('style'), ...style }\n : style;\n model.set('style', styleUpdate, opts);\n }\n\n result.push(model);\n }\n\n return result;\n },\n\n /**\n * Add/update the CSS rule with a generic selector\n * @param {string} selectors Selector, eg. '.myclass'\n * @param {Object} style Style properties and values\n * @param {Object} [opts={}] Additional properties\n * @param {String} [opts.atRuleType=''] At-rule type, eg. 'media'\n * @param {String} [opts.atRuleParams=''] At-rule parameters, eg. '(min-width: 500px)'\n * @return {CssRule} The new/updated rule\n * @example\n * // Simple class-based rule\n * const rule = cc.setRule('.class1.class2', { color: 'red' });\n * console.log(rule.toCSS()) // output: .class1.class2 { color: red }\n * // With state and other mixed selector\n * const rule = cc.setRule('.class1.class2:hover, div#myid', { color: 'red' });\n * // output: .class1.class2:hover, div#myid { color: red }\n * // With media\n * const rule = cc.setRule('.class1:hover', { color: 'red' }, {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)',\n * });\n * // output: @media (min-width: 500px) { .class1:hover { color: red } }\n */\n setRule(selectors, style, opts = {}) {\n const { atRuleType, atRuleParams } = opts;\n const node = em.get('Parser').parserCss.checkNode({\n selectors,\n style\n })[0];\n const { state, selectorsAdd } = node;\n const sm = em.get('SelectorManager');\n const selector = sm.add(node.selectors);\n const rule = this.add(selector, state, atRuleParams, {\n selectorsAdd,\n atRule: atRuleType\n });\n rule.setStyle(style, opts);\n return rule;\n },\n\n /**\n * Get the CSS rule by a generic selector\n * @param {string} selectors Selector, eg. '.myclass:hover'\n * @param {String} [opts.atRuleType=''] At-rule type, eg. 'media'\n * @param {String} [opts.atRuleParams=''] At-rule parameters, eg. '(min-width: 500px)'\n * @return {CssRule}\n * @example\n * const rule = cc.getRule('.myclass1:hover');\n * const rule2 = cc.getRule('.myclass1:hover, div#myid');\n * const rule3 = cc.getRule('.myclass1', {\n * atRuleType: 'media',\n * atRuleParams: '(min-width: 500px)',\n * });\n */\n getRule(selectors, opts = {}) {\n const sm = em.get('SelectorManager');\n const node = em.get('Parser').parserCss.checkNode({ selectors })[0];\n const selector = sm.get(node.selectors);\n const { state, selectorsAdd } = node;\n const { atRuleType, atRuleParams } = opts;\n return (\n selector &&\n this.get(selector, state, atRuleParams, {\n selectorsAdd,\n atRule: atRuleType\n })\n );\n },\n\n /**\n * Find rules, in different states (eg. like `:hover`) and media queries, matching the selector.\n * @param {string} selector Selector, eg. '.myclass'\n * @returns {Array}\n * @example\n * // Common scenario, take all the component specific rules\n * const id = someComponent.getId();\n * const rules = cc.getRules(`#${id}`);\n * console.log(rules.map(rule => rule.toCSS()))\n */\n getRules(selector) {\n const rules = this.getAll();\n const result = rules.filter(\n r => r.getSelectors().getFullString() === selector\n );\n return result;\n },\n\n /**\n * Add/update the CSS rule with id selector\n * @param {string} name Id selector name, eg. 'my-id'\n * @param {Object} style Style properties and values\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule} The new/updated rule\n * @private\n * @example\n * const rule = cc.setIdRule('myid', { color: 'red' });\n * const ruleHover = cc.setIdRule('myid', { color: 'blue' }, { state: 'hover' });\n * // This will add current CSS:\n * // #myid { color: red }\n * // #myid:hover { color: blue }\n */\n setIdRule(name, style = {}, opts = {}) {\n const { addOpts = {}, mediaText } = opts;\n const state = opts.state || '';\n const media = !isUndefined(mediaText) ? mediaText : em.getCurrentMedia();\n const sm = em.get('SelectorManager');\n const selector = sm.add({ name, type: Selector.TYPE_ID }, addOpts);\n const rule = this.add(selector, state, media, {}, addOpts);\n rule.setStyle(style, { ...opts, ...addOpts });\n return rule;\n },\n\n /**\n * Get the CSS rule by id selector\n * @param {string} name Id selector name, eg. 'my-id'\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule}\n * @private\n * @example\n * const rule = cc.getIdRule('myid');\n * const ruleHover = cc.setIdRule('myid', { state: 'hover' });\n */\n getIdRule(name, opts = {}) {\n const { mediaText } = opts;\n const state = opts.state || '';\n const media = !isUndefined(mediaText) ? mediaText : em.getCurrentMedia();\n const selector = em.get('SelectorManager').get(name, Selector.TYPE_ID);\n return selector && this.get(selector, state, media);\n },\n\n /**\n * Add/update the CSS rule with class selector\n * @param {string} name Class selector name, eg. 'my-class'\n * @param {Object} style Style properties and values\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule} The new/updated rule\n * @private\n * @example\n * const rule = cc.setClassRule('myclass', { color: 'red' });\n * const ruleHover = cc.setClassRule('myclass', { color: 'blue' }, { state: 'hover' });\n * // This will add current CSS:\n * // .myclass { color: red }\n * // .myclass:hover { color: blue }\n */\n setClassRule(name, style = {}, opts = {}) {\n const state = opts.state || '';\n const media = opts.mediaText || em.getCurrentMedia();\n const sm = em.get('SelectorManager');\n const selector = sm.add({ name, type: Selector.TYPE_CLASS });\n const rule = this.add(selector, state, media);\n rule.setStyle(style, opts);\n return rule;\n },\n\n /**\n * Get the CSS rule by class selector\n * @param {string} name Class selector name, eg. 'my-class'\n * @param {Object} [opts={}] Custom options, like `state` and `mediaText`\n * @return {CssRule}\n * @private\n * @example\n * const rule = cc.getClassRule('myclass');\n * const ruleHover = cc.getClassRule('myclass', { state: 'hover' });\n */\n getClassRule(name, opts = {}) {\n const state = opts.state || '';\n const media = opts.mediaText || em.getCurrentMedia();\n const selector = em.get('SelectorManager').get(name, Selector.TYPE_CLASS);\n return selector && this.get(selector, state, media);\n },\n\n getComponentRules(cmp, opts = {}) {\n let { state, mediaText, current } = opts;\n if (current) {\n state = em.get('state') || '';\n mediaText = em.getCurrentMedia();\n }\n const id = cmp.getId();\n const rules = this.getAll().filter(r => {\n if (!isUndefined(state) && r.get('state') !== state) return;\n if (!isUndefined(mediaText) && r.get('mediaText') !== mediaText) return;\n return r.getSelectorsString() === `#${id}`;\n });\n return rules;\n },\n\n /**\n * Render the block of CSS rules\n * @return {HTMLElement}\n * @private\n */\n render() {\n return rulesView.render().el;\n },\n\n destroy() {\n rules.reset();\n rules.stopListening();\n rulesView.remove();\n [em, rules, rulesView].forEach(i => (i = null));\n c = {};\n }\n };\n};\n","// The initial version of this RTE was borrowed from https://github.com/jaredreich/pell\n// and adapted to the GrapesJS's need\n\nimport { on, off } from 'utils/mixins';\n\nconst RTE_KEY = '_rte';\n\nconst btnState = {\n ACTIVE: 1,\n INACTIVE: 0,\n DISABLED: -1\n};\nconst isValidAnchor = rte => {\n const anchor = rte.selection().anchorNode;\n const parentNode = anchor && anchor.parentNode;\n const nextSibling = anchor && anchor.nextSibling;\n return (\n (parentNode && parentNode.nodeName == 'A') ||\n (nextSibling && nextSibling.nodeName == 'A')\n );\n};\nconst defActions = {\n bold: {\n name: 'bold',\n icon: 'B',\n attributes: { title: 'Bold' },\n result: rte => rte.exec('bold')\n },\n italic: {\n name: 'italic',\n icon: 'I',\n attributes: { title: 'Italic' },\n result: rte => rte.exec('italic')\n },\n underline: {\n name: 'underline',\n icon: 'U',\n attributes: { title: 'Underline' },\n result: rte => rte.exec('underline')\n },\n strikethrough: {\n name: 'strikethrough',\n icon: 'S',\n attributes: { title: 'Strike-through' },\n result: rte => rte.exec('strikeThrough')\n },\n link: {\n icon: ``,\n name: 'link',\n attributes: {\n style: 'font-size:1.4rem;padding:0 4px 2px;',\n title: 'Link'\n },\n state: (rte, doc) => {\n if (rte && rte.selection()) {\n return isValidAnchor(rte) ? btnState.ACTIVE : btnState.INACTIVE;\n } else {\n return btnState.INACTIVE;\n }\n },\n result: rte => {\n if (isValidAnchor(rte)) {\n rte.exec('unlink');\n } else {\n rte.insertHTML(`${rte.selection()}`);\n }\n }\n }\n};\n\nexport default class RichTextEditor {\n constructor(settings = {}) {\n const el = settings.el;\n\n if (el[RTE_KEY]) {\n return el[RTE_KEY];\n }\n\n el[RTE_KEY] = this;\n this.setEl(el);\n this.updateActiveActions = this.updateActiveActions.bind(this);\n\n const acts = (settings.actions || []).map(action => {\n let result = action;\n if (typeof action === 'string') {\n result = { ...defActions[action] };\n } else if (defActions[action.name]) {\n result = { ...defActions[action.name], ...action };\n }\n return result;\n });\n const actions = acts.length\n ? acts\n : Object.keys(defActions).map(a => defActions[a]);\n\n settings.classes = {\n ...{\n actionbar: 'actionbar',\n button: 'action',\n active: 'active',\n disabled: 'disabled',\n inactive: 'inactive'\n },\n ...settings.classes\n };\n\n const classes = settings.classes;\n let actionbar = settings.actionbar;\n this.actionbar = actionbar;\n this.settings = settings;\n this.classes = classes;\n this.actions = actions;\n\n if (!actionbar) {\n const actionbarCont = settings.actionbarContainer;\n actionbar = document.createElement('div');\n actionbar.className = classes.actionbar;\n actionbarCont.appendChild(actionbar);\n this.actionbar = actionbar;\n actions.forEach(action => this.addAction(action));\n }\n\n settings.styleWithCSS && this.exec('styleWithCSS');\n this.syncActions();\n\n return this;\n }\n\n destroy() {\n this.el = 0;\n this.doc = 0;\n this.actionbar = 0;\n this.settings = {};\n this.classes = {};\n this.actions = [];\n }\n\n setEl(el) {\n this.el = el;\n this.doc = el.ownerDocument;\n }\n\n updateActiveActions() {\n this.getActions().forEach(action => {\n const btn = action.btn;\n const update = action.update;\n const { active, inactive, disabled } = { ...this.classes };\n const state = action.state;\n const name = action.name;\n const doc = this.doc;\n btn.className = btn.className.replace(active, '').trim();\n btn.className = btn.className.replace(inactive, '').trim();\n btn.className = btn.className.replace(disabled, '').trim();\n\n // if there is a state function, which depicts the state,\n // i.e. `active`, `disabled`, then call it\n if (state) {\n switch (state(this, doc)) {\n case btnState.ACTIVE:\n btn.className += ` ${active}`;\n break;\n case btnState.INACTIVE:\n btn.className += ` ${inactive}`;\n break;\n case btnState.DISABLED:\n btn.className += ` ${disabled}`;\n break;\n }\n } else {\n // otherwise default to checking if the name command is supported & enabled\n if (doc.queryCommandSupported(name) && doc.queryCommandState(name)) {\n btn.className += ` ${active}`;\n }\n }\n update && update(this, action);\n });\n }\n\n enable() {\n if (this.enabled) {\n return this;\n }\n\n this.actionbarEl().style.display = '';\n this.el.contentEditable = true;\n on(this.el, 'mouseup keyup', this.updateActiveActions);\n this.syncActions();\n this.updateActiveActions();\n this.el.focus();\n this.enabled = 1;\n return this;\n }\n\n disable() {\n this.actionbarEl().style.display = 'none';\n this.el.contentEditable = false;\n off(this.el, 'mouseup keyup', this.updateActiveActions);\n this.enabled = 0;\n return this;\n }\n\n /**\n * Sync actions with the current RTE\n */\n syncActions() {\n this.getActions().forEach(action => {\n if (this.settings.actionbar) {\n if (\n !action.state ||\n (action.state && action.state(this, this.doc) >= 0)\n ) {\n const event = action.event || 'click';\n action.btn[`on${event}`] = e => {\n action.result(this, action);\n this.updateActiveActions();\n };\n }\n }\n });\n }\n\n /**\n * Add new action to the actionbar\n * @param {Object} action\n * @param {Object} [opts={}]\n */\n addAction(action, opts = {}) {\n const sync = opts.sync;\n const btn = document.createElement('span');\n const icon = action.icon;\n const attr = action.attributes || {};\n btn.className = this.classes.button;\n action.btn = btn;\n\n for (let key in attr) {\n btn.setAttribute(key, attr[key]);\n }\n\n if (typeof icon == 'string') {\n btn.innerHTML = icon;\n } else {\n btn.appendChild(icon);\n }\n\n this.actionbarEl().appendChild(btn);\n\n if (sync) {\n this.actions.push(action);\n this.syncActions();\n }\n }\n\n /**\n * Get the array of current actions\n * @return {Array}\n */\n getActions() {\n return this.actions;\n }\n\n /**\n * Returns the Selection instance\n * @return {Selection}\n */\n selection() {\n return this.doc.getSelection();\n }\n\n /**\n * Execute the command\n * @param {string} command Command name\n * @param {any} [value=null Command's arguments\n */\n exec(command, value = null) {\n this.doc.execCommand(command, false, value);\n }\n\n /**\n * Get the actionbar element\n * @return {HTMLElement}\n */\n actionbarEl() {\n return this.actionbar;\n }\n\n /**\n * Set custom HTML to the selection, useful as the default 'insertHTML' command\n * doesn't work in the same way on all browsers\n * @param {string} value HTML string\n */\n insertHTML(value) {\n let lastNode;\n const doc = this.doc;\n const sel = doc.getSelection();\n\n if (sel && sel.rangeCount) {\n const node = doc.createElement('div');\n const range = sel.getRangeAt(0);\n range.deleteContents();\n node.innerHTML = value;\n Array.prototype.slice.call(node.childNodes).forEach(nd => {\n range.insertNode(nd);\n lastNode = nd;\n });\n\n sel.removeAllRanges();\n sel.addRange(range);\n this.el.focus();\n }\n }\n}\n","export default {\n stylePrefix: 'rte-',\n\n // If true, moves the toolbar below the element when the top canvas\n // edge is reached\n adjustToolbar: 1,\n\n // Default RTE actions\n actions: ['bold', 'italic', 'underline', 'strikethrough', 'link']\n};\n","/**\n * This module allows to customize the built-in toolbar of the Rich Text Editor and use commands from the [HTML Editing APIs](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand).\n * It's highly recommended to keep this toolbar as small as possible, especially from styling commands (eg. 'fontSize') and leave this task to the Style Manager\n *\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/rich_text_editor/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * richTextEditor: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const rte = editor.RichTextEditor;\n * ```\n *\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [remove](#remove)\n * * [getToolbarEl](#gettoolbarel)\n *\n * @module RichTextEditor\n */\n\nimport RichTextEditor from './model/RichTextEditor';\nimport { on, off } from 'utils/mixins';\nimport defaults from './config/config';\n\nexport default () => {\n let config = {};\n let toolbar, actions, lastEl, lastElPos, globalRte;\n const eventsUp =\n 'change:canvasOffset canvasScroll frame:scroll component:update';\n const hideToolbar = () => {\n const style = toolbar.style;\n const size = '-1000px';\n style.top = size;\n style.left = size;\n style.display = 'none';\n };\n\n return {\n customRte: null,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'RichTextEditor',\n\n getConfig() {\n return config;\n },\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} opts Options\n * @private\n */\n init(opts = {}) {\n config = {\n ...defaults,\n ...opts\n };\n const ppfx = config.pStylePrefix;\n\n if (ppfx) {\n config.stylePrefix = ppfx + config.stylePrefix;\n }\n\n this.pfx = config.stylePrefix;\n actions = config.actions || [];\n toolbar = document.createElement('div');\n toolbar.className = `${ppfx}rte-toolbar ${ppfx}one-bg`;\n globalRte = this.initRte(document.createElement('div'));\n\n //Avoid closing on toolbar clicking\n on(toolbar, 'mousedown', e => e.stopPropagation());\n return this;\n },\n\n destroy() {\n const { customRte } = this;\n globalRte && globalRte.destroy();\n customRte && customRte.destroy && customRte.destroy();\n this.actionbar = 0;\n this.actions = 0;\n [config, toolbar, actions, lastEl, lastElPos, globalRte].forEach(\n i => (i = {})\n );\n },\n\n /**\n * Post render callback\n * @param {View} ev\n * @private\n */\n postRender(ev) {\n const canvas = ev.model.get('Canvas');\n toolbar.style.pointerEvents = 'all';\n hideToolbar();\n canvas.getToolsEl().appendChild(toolbar);\n },\n\n /**\n * Init the built-in RTE\n * @param {HTMLElement} el\n * @return {RichTextEditor}\n * @private\n */\n initRte(el) {\n const pfx = this.pfx;\n const actionbarContainer = toolbar;\n const actionbar = this.actionbar;\n const actions = this.actions || [...config.actions];\n const classes = {\n actionbar: `${pfx}actionbar`,\n button: `${pfx}action`,\n active: `${pfx}active`,\n inactive: `${pfx}inactive`,\n disabled: `${pfx}disabled`\n };\n const rte = new RichTextEditor({\n el,\n classes,\n actions,\n actionbar,\n actionbarContainer\n });\n globalRte && globalRte.setEl(el);\n\n if (rte.actionbar) {\n this.actionbar = rte.actionbar;\n }\n\n if (rte.actions) {\n this.actions = rte.actions;\n }\n\n return rte;\n },\n\n /**\n * Add a new action to the built-in RTE toolbar\n * @param {string} name Action name\n * @param {Object} action Action options\n * @example\n * rte.add('bold', {\n * icon: 'B',\n * attributes: {title: 'Bold'},\n * result: rte => rte.exec('bold')\n * });\n * rte.add('link', {\n * icon: document.getElementById('t'),\n * attributes: {title: 'Link',}\n * // Example on it's easy to wrap a selected content\n * result: rte => rte.insertHTML(`${rte.selection()}`)\n * });\n * // An example with fontSize\n * rte.add('fontSize', {\n * icon: ``,\n * // Bind the 'result' on 'change' listener\n * event: 'change',\n * result: (rte, action) => rte.exec('fontSize', action.btn.firstChild.value),\n * // Callback on any input change (mousedown, keydown, etc..)\n * update: (rte, action) => {\n * const value = rte.doc.queryCommandValue(action.name);\n * if (value != 'false') { // value is a string\n * action.btn.firstChild.value = value;\n * }\n * }\n * })\n * // An example with state\n * const isValidAnchor = (rte) => {\n * // a utility function to help determine if the selected is a valid anchor node\n * const anchor = rte.selection().anchorNode;\n * const parentNode = anchor && anchor.parentNode;\n * const nextSibling = anchor && anchor.nextSibling;\n * return (parentNode && parentNode.nodeName == 'A') || (nextSibling && nextSibling.nodeName == 'A')\n * }\n * rte.add('toggleAnchor', {\n * icon: ``,\n * state: (rte, doc) => {\n * if (rte && rte.selection()) {\n * // `btnState` is a integer, -1 for disabled, 0 for inactive, 1 for active\n * return isValidAnchor(rte) ? btnState.ACTIVE : btnState.INACTIVE;\n * } else {\n * return btnState.INACTIVE;\n * }\n * },\n * result: (rte, action) => {\n * if (isValidAnchor(rte)) {\n * rte.exec('unlink');\n * } else {\n * rte.insertHTML(`${rte.selection()}`);\n * }\n * }\n * })\n */\n add(name, action = {}) {\n action.name = name;\n globalRte.addAction(action, { sync: 1 });\n },\n\n /**\n * Get the action by its name\n * @param {string} name Action name\n * @return {Object}\n * @example\n * const action = rte.get('bold');\n * // {name: 'bold', ...}\n */\n get(name) {\n let result;\n globalRte.getActions().forEach(action => {\n if (action.name == name) {\n result = action;\n }\n });\n return result;\n },\n\n /**\n * Get all actions\n * @return {Array}\n */\n getAll() {\n return globalRte.getActions();\n },\n\n /**\n * Remove the action from the toolbar\n * @param {string} name\n * @return {Object} Removed action\n * @example\n * const action = rte.remove('bold');\n * // {name: 'bold', ...}\n */\n remove(name) {\n const actions = this.getAll();\n const action = this.get(name);\n\n if (action) {\n const btn = action.btn;\n const index = actions.indexOf(action);\n btn.parentNode.removeChild(btn);\n actions.splice(index, 1);\n }\n\n return action;\n },\n\n /**\n * Get the toolbar element\n * @return {HTMLElement}\n */\n getToolbarEl() {\n return toolbar;\n },\n\n /**\n * Triggered when the offset of the editor is changed\n * @private\n */\n updatePosition() {\n const un = 'px';\n const canvas = config.em.get('Canvas');\n const { style } = toolbar;\n const pos = canvas.getTargetToElementFixed(lastEl, toolbar, {\n event: 'rteToolbarPosUpdate'\n });\n\n style.top = pos.top + un;\n style.left = 0 + un;\n },\n\n /**\n * Enable rich text editor on the element\n * @param {View} view Component view\n * @param {Object} rte The instance of already defined RTE\n * @private\n * */\n async enable(view, rte) {\n lastEl = view.el;\n const { customRte } = this;\n const canvas = config.em.get('Canvas');\n const em = config.em;\n const el = view.getChildrenContainer();\n lastElPos = canvas.getElementPos(lastEl);\n\n toolbar.style.display = '';\n const rteInst = await (customRte\n ? customRte.enable(el, rte)\n : this.initRte(el).enable());\n\n if (em) {\n setTimeout(this.updatePosition.bind(this), 0);\n em.off(eventsUp, this.updatePosition, this);\n em.on(eventsUp, this.updatePosition, this);\n em.trigger('rte:enable', view, rteInst);\n }\n\n return rteInst;\n },\n\n /**\n * Unbind rich text editor from the element\n * @param {View} view\n * @param {Object} rte The instance of already defined RTE\n * @private\n * */\n disable(view, rte) {\n const em = config.em;\n const customRte = this.customRte;\n var el = view.getChildrenContainer();\n\n if (customRte) {\n customRte.disable(el, rte);\n } else {\n rte && rte.disable();\n }\n\n hideToolbar();\n if (em) {\n em.off(eventsUp, this.updatePosition, this);\n em.trigger('rte:disable', view, rte);\n }\n }\n };\n};\n","const traitInputAttr = { placeholder: 'eg. Text here' };\n\nexport default {\n assetManager: {\n addButton: 'Add image',\n inputPlh: 'http://path/to/the/image.jpg',\n modalTitle: 'Select Image',\n uploadTitle: 'Drop files here or click to upload'\n },\n // Here just as a reference, GrapesJS core doesn't contain any block,\n // so this should be omitted from other local files\n blockManager: {\n labels: {\n // 'block-id': 'Block Label',\n },\n categories: {\n // 'category-id': 'Category Label',\n }\n },\n domComponents: {\n names: {\n '': 'Box',\n wrapper: 'Body',\n text: 'Text',\n comment: 'Comment',\n image: 'Image',\n video: 'Video',\n label: 'Label',\n link: 'Link',\n map: 'Map',\n tfoot: 'Table foot',\n tbody: 'Table body',\n thead: 'Table head',\n table: 'Table',\n row: 'Table row',\n cell: 'Table cell'\n }\n },\n deviceManager: {\n device: 'Device',\n devices: {\n desktop: 'Desktop',\n tablet: 'Tablet',\n mobileLandscape: 'Mobile Landscape',\n mobilePortrait: 'Mobile Portrait'\n }\n },\n panels: {\n buttons: {\n titles: {\n preview: 'Preview',\n fullscreen: 'Fullscreen',\n 'sw-visibility': 'View components',\n 'export-template': 'View code',\n 'open-sm': 'Open Style Manager',\n 'open-tm': 'Settings',\n 'open-layers': 'Open Layer Manager',\n 'open-blocks': 'Open Blocks'\n }\n }\n },\n selectorManager: {\n label: 'Classes',\n selected: 'Selected',\n emptyState: '- State -',\n states: {\n hover: 'Hover',\n active: 'Click',\n 'nth-of-type(2n)': 'Even/Odd'\n }\n },\n styleManager: {\n empty: 'Select an element before using Style Manager',\n layer: 'Layer',\n fileButton: 'Images',\n sectors: {\n general: 'General',\n layout: 'Layout',\n typography: 'Typography',\n decorations: 'Decorations',\n extra: 'Extra',\n flex: 'Flex',\n dimension: 'Dimension'\n },\n // The core library generates the name by their `property` name\n properties: {\n // float: 'Float',\n }\n },\n traitManager: {\n empty: 'Select an element before using Trait Manager',\n label: 'Component settings',\n traits: {\n // The core library generates the name by their `name` property\n labels: {\n // id: 'Id',\n // alt: 'Alt',\n // title: 'Title',\n // href: 'Href',\n },\n // In a simple trait, like text input, these are used on input attributes\n attributes: {\n id: traitInputAttr,\n alt: traitInputAttr,\n title: traitInputAttr,\n href: { placeholder: 'eg. https://google.com' }\n },\n // In a trait like select, these are used to translate option names\n options: {\n target: {\n false: 'This window',\n _blank: 'New window'\n }\n }\n }\n }\n};\n","import en from './locale/en';\n\nexport default {\n // Locale value\n locale: 'en',\n\n // Fallback locale\n localeFallback: 'en',\n\n // Detect locale by checking browser language\n detectLocale: 1,\n\n // Show warnings when some of the i18n resources are missing\n debug: 0,\n\n // Messages to translate\n messages: {\n en\n }\n};\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/i18n/config.js)\n * ```js\n * const editor = grapesjs.init({\n * i18n: {\n * locale: 'en',\n * localeFallback: 'en',\n * messages: {\n * it: { hello: 'Ciao', ... },\n * ...\n * }\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const i18n = editor.I18n;\n * ```\n *\n * ### Events\n * * `i18n:add` - New set of messages is added\n * * `i18n:update` - The set of messages is updated\n * * `i18n:locale` - Locale changed\n *\n * @module I18n\n */\nimport { isUndefined, isString } from 'underscore';\nimport config from './config';\n\nconst isObj = el => !Array.isArray(el) && el !== null && typeof el === 'object';\n\nconst deepAssign = (...args) => {\n const target = { ...args[0] };\n\n for (let i = 1; i < args.length; i++) {\n const source = { ...args[i] };\n\n for (let key in source) {\n const targValue = target[key];\n const srcValue = source[key];\n\n if (isObj(targValue) && isObj(srcValue)) {\n target[key] = deepAssign(targValue, srcValue);\n } else {\n target[key] = srcValue;\n }\n }\n }\n\n return target;\n};\n\nexport default () => {\n return {\n name: 'I18n',\n\n config,\n\n /**\n * Initialize module\n * @param {Object} config Configurations\n * @private\n */\n init(opts = {}) {\n this.config = {\n ...config,\n ...opts,\n messages: {\n ...config.messages,\n ...(opts.messages || {})\n }\n };\n\n if (this.config.detectLocale) {\n this.config.locale = this._localLang();\n }\n\n this.em = opts.em;\n return this;\n },\n\n /**\n * Get module configurations\n * @returns {Object} Configuration object\n */\n getConfig() {\n return this.config;\n },\n\n /**\n * Update current locale\n * @param {String} locale Locale value\n * @returns {this}\n * @example\n * i18n.setLocale('it');\n */\n setLocale(locale) {\n const { em, config } = this;\n const evObj = { value: locale, valuePrev: config.locale };\n em && em.trigger('i18n:locale', evObj);\n config.locale = locale;\n return this;\n },\n\n /**\n * Get current locale\n * @returns {String} Current locale value\n */\n getLocale() {\n return this.config.locale;\n },\n\n /**\n * Get all messages\n * @param {String} [lang] Specify the language of messages to return\n * @param {Object} [opts] Options\n * @param {Boolean} [opts.debug] Show warnings in case of missing language\n * @returns {Object}\n * @example\n * i18n.getMessages();\n * // -> { en: { hello: '...' }, ... }\n * i18n.getMessages('en');\n * // -> { hello: '...' }\n */\n getMessages(lang, opts = {}) {\n const { messages } = this.config;\n lang &&\n !messages[lang] &&\n this._debug(`'${lang}' i18n lang not found`, opts);\n return lang ? messages[lang] : messages;\n },\n\n /**\n * Set new set of messages\n * @param {Object} msg Set of messages\n * @returns {this}\n * @example\n * i18n.getMessages();\n * // -> { en: { msg1: 'Msg 1', msg2: 'Msg 2', } }\n * i18n.setMessages({ en: { msg2: 'Msg 2 up', msg3: 'Msg 3', } });\n * // Set replaced\n * i18n.getMessages();\n * // -> { en: { msg2: 'Msg 2 up', msg3: 'Msg 3', } }\n */\n setMessages(msg) {\n const { em, config } = this;\n config.messages = msg;\n em && em.trigger('i18n:update', msg);\n return this;\n },\n\n /**\n * Update messages\n * @param {Object} msg Set of messages to add\n * @returns {this}\n * @example\n * i18n.getMessages();\n * // -> { en: { msg1: 'Msg 1', msg2: 'Msg 2', } }\n * i18n.addMessages({ en: { msg2: 'Msg 2 up', msg3: 'Msg 3', } });\n * // Set updated\n * i18n.getMessages();\n * // -> { en: { msg1: 'Msg 1', msg2: 'Msg 2 up', msg3: 'Msg 3', } }\n */\n addMessages(msg) {\n const { em } = this;\n const { messages } = this.config;\n em && em.trigger('i18n:add', msg);\n this.setMessages(deepAssign(messages, msg));\n\n return this;\n },\n\n /**\n * Translate the locale message\n * @param {String} key Label to translate\n * @param {Object} [opts] Options for the translation\n * @param {Object} [opts.params] Params for the translation\n * @param {Boolean} [opts.debug] Show warnings in case of missing resources\n * @returns {String}\n * @example\n * obj.setMessages({\n * en: { msg: 'Msg', msg2: 'Msg {test}'},\n * it: { msg2: 'Msg {test} it'},\n * });\n * obj.t('msg');\n * // -> outputs `Msg`\n * obj.t('msg2', { params: { test: 'hello' } }); // use params\n * // -> outputs `Msg hello`\n * obj.t('msg2', { l: 'it', params: { test: 'hello' } }); // custom local\n * // -> outputs `Msg hello it`\n */\n t(key, opts = {}) {\n const { config } = this;\n const param = opts.params || {};\n const locale = opts.l || this.getLocale();\n const localeFlb = opts.lFlb || config.localeFallback;\n let result = this._getMsg(key, locale, opts);\n\n // Try with fallback\n if (!result) result = this._getMsg(key, localeFlb, opts);\n\n !result &&\n this._debug(`'${key}' i18n key not found in '${locale}' lang`, opts);\n result =\n result && isString(result) ? this._addParams(result, param) : result;\n\n return result;\n },\n\n _localLang() {\n const nav = window.navigator || {};\n const lang = nav.language || nav.userLanguage;\n return lang ? lang.split('-')[0] : 'en';\n },\n\n _addParams(str, params) {\n const reg = new RegExp(`\\{([\\\\w\\\\d-]*)\\}`, 'g');\n return str.replace(reg, (m, val) => params[val] || '').trim();\n },\n\n _getMsg(key, locale, opts = {}) {\n const msgSet = this.getMessages(locale, opts);\n\n // Lang set is missing\n if (!msgSet) return;\n\n let result = msgSet[key];\n\n // Check for nested getter\n if (!result && key.indexOf('.') > 0) {\n result = key.split('.').reduce((lang, key) => {\n if (isUndefined(lang)) return;\n return lang[key];\n }, msgSet);\n }\n\n return result;\n },\n\n _debug(str, opts = {}) {\n const { em, config } = this;\n (opts.debug || config.debug) && em && em.logWarning(str);\n },\n\n destroy() {\n this.config = config;\n this.em = {};\n }\n };\n};\n","import Backbone from 'backbone';\nimport {\n isString,\n isFunction,\n isArray,\n result,\n each,\n bindAll\n} from 'underscore';\nimport {\n on,\n off,\n matches,\n getElement,\n getPointerEvent,\n isTextNode,\n getModel\n} from 'utils/mixins';\nconst $ = Backbone.$;\n\nexport default Backbone.View.extend({\n initialize(opt) {\n this.opt = opt || {};\n bindAll(\n this,\n 'startSort',\n 'onMove',\n 'endMove',\n 'rollback',\n 'updateOffset',\n 'moveDragHelper'\n );\n var o = opt || {};\n this.elT = 0;\n this.elL = 0;\n this.borderOffset = o.borderOffset || 10;\n\n var el = o.container;\n this.el = typeof el === 'string' ? document.querySelector(el) : el;\n this.$el = $(this.el);\n\n this.containerSel = o.containerSel || 'div';\n this.itemSel = o.itemSel || 'div';\n this.draggable = o.draggable || true;\n this.nested = o.nested || 0;\n this.pfx = o.pfx || '';\n this.ppfx = o.ppfx || '';\n this.freezeClass = o.freezeClass || this.pfx + 'freezed';\n this.onStart = o.onStart || '';\n this.onEndMove = o.onEndMove || '';\n this.direction = o.direction || 'v'; // v (vertical), h (horizontal), a (auto)\n this.onMoveClb = o.onMove || '';\n this.relative = o.relative || 0;\n this.ignoreViewChildren = o.ignoreViewChildren || 0;\n this.ignoreModels = o.ignoreModels || 0;\n this.plh = o.placer || '';\n // Frame offset\n this.wmargin = o.wmargin || 0;\n this.offTop = o.offsetTop || 0;\n this.offLeft = o.offsetLeft || 0;\n this.document = o.document || document;\n this.$document = $(this.document);\n this.dropContent = null;\n this.em = o.em || '';\n this.dragHelper = null;\n this.canvasRelative = o.canvasRelative || 0;\n this.selectOnEnd = !o.avoidSelectOnEnd;\n this.scale = o.scale;\n this.activeTextModel = null;\n\n if (this.em && this.em.on) {\n this.em.on('change:canvasOffset', this.updateOffset);\n this.updateOffset();\n }\n },\n\n getScale() {\n return result(this, scale) || 1;\n },\n\n getContainerEl(elem) {\n if (elem) this.el = elem;\n\n if (!this.el) {\n var el = this.opt.container;\n this.el = typeof el === 'string' ? document.querySelector(el) : el;\n this.$el = $(this.el);\n }\n return this.el;\n },\n\n getDocuments(el) {\n const em = this.em;\n const elDoc = el\n ? el.ownerDocument\n : em && em.get('Canvas').getBody().ownerDocument;\n const docs = [document];\n elDoc && docs.push(elDoc);\n return docs;\n },\n\n /**\n * Triggered when the offset of the editro is changed\n */\n updateOffset() {\n const offset = this.em.get('canvasOffset') || {};\n this.offTop = offset.top;\n this.offLeft = offset.left;\n },\n\n /**\n * Set content to drop\n * @param {String|Object} content\n */\n setDropContent(content) {\n this.dropModel = null;\n this.dropContent = content;\n },\n\n updateTextViewCursorPosition(e) {\n const Canvas = this.em.get('Canvas');\n const targetDoc = Canvas.getDocument();\n let range = null;\n\n if (targetDoc.caretRangeFromPoint) {\n // Chrome\n const poiner = getPointerEvent(e);\n range = targetDoc.caretRangeFromPoint(poiner.clientX, poiner.clientY);\n } else if (e.rangeParent) {\n // Firefox\n range = targetDoc.createRange();\n range.setStart(e.rangeParent, e.rangeOffset);\n }\n\n const sel = Canvas.getWindow().getSelection();\n Canvas.getFrameEl().focus();\n sel.removeAllRanges();\n range && sel.addRange(range);\n },\n\n setContentEditable(model, mode) {\n if (model) {\n const el = model.getEl();\n if (el.contentEditable != mode) el.contentEditable = mode;\n }\n },\n\n /**\n * Toggle cursor while sorting\n * @param {Boolean} active\n */\n toggleSortCursor(active) {\n const { em } = this;\n const cv = em && em.get('Canvas');\n\n // Avoid updating body className as it causes a huge repaint\n // Noticeable with \"fast\" drag of blocks\n cv && (active ? cv.startAutoscroll() : cv.stopAutoscroll());\n },\n\n /**\n * Set drag helper\n * @param {HTMLElement} el\n * @param {Event} event\n */\n setDragHelper(el, event) {\n const ev = event || '';\n const clonedEl = el.cloneNode(1);\n const rect = el.getBoundingClientRect();\n const computed = getComputedStyle(el);\n let style = '';\n\n for (var i = 0; i < computed.length; i++) {\n const prop = computed[i];\n style += `${prop}:${computed.getPropertyValue(prop)};`;\n }\n\n document.body.appendChild(clonedEl);\n clonedEl.className += ` ${this.pfx}bdrag`;\n clonedEl.setAttribute('style', style);\n this.dragHelper = clonedEl;\n clonedEl.style.width = `${rect.width}px`;\n clonedEl.style.height = `${rect.height}px`;\n ev && this.moveDragHelper(ev);\n\n // Listen mouse move events\n if (this.em) {\n $(this.em.get('Canvas').getBody().ownerDocument)\n .off('mousemove', this.moveDragHelper)\n .on('mousemove', this.moveDragHelper);\n }\n $(document)\n .off('mousemove', this.moveDragHelper)\n .on('mousemove', this.moveDragHelper);\n },\n\n /**\n * Update the position of the helper\n * @param {Event} e\n */\n moveDragHelper(e) {\n const doc = e.target.ownerDocument;\n\n if (!this.dragHelper || !doc) {\n return;\n }\n\n let posY = e.pageY;\n let posX = e.pageX;\n let addTop = 0;\n let addLeft = 0;\n const window = doc.defaultView || doc.parentWindow;\n const frame = window.frameElement;\n const dragHelperStyle = this.dragHelper.style;\n\n // If frame is present that means mouse has moved over the editor's canvas,\n // which is rendered inside the iframe and the mouse move event comes from\n // the iframe, not the parent window. Mouse position relative to the frame's\n // parent window needs to account for the frame's position relative to the\n // parent window.\n if (frame) {\n const frameRect = frame.getBoundingClientRect();\n addTop = frameRect.top + document.documentElement.scrollTop;\n addLeft = frameRect.left + document.documentElement.scrollLeft;\n posY = e.clientY;\n posX = e.clientX;\n }\n\n dragHelperStyle.top = posY + addTop + 'px';\n dragHelperStyle.left = posX + addLeft + 'px';\n },\n\n /**\n * Returns true if the element matches with selector\n * @param {Element} el\n * @param {String} selector\n * @return {Boolean}\n */\n matches(el, selector, useBody) {\n return matches.call(el, selector);\n },\n\n /**\n * Closest parent\n * @param {Element} el\n * @param {String} selector\n * @return {Element|null}\n */\n closest(el, selector) {\n if (!el) return;\n var elem = el.parentNode;\n while (elem && elem.nodeType === 1) {\n if (this.matches(elem, selector)) return elem;\n elem = elem.parentNode;\n }\n return null;\n },\n\n /**\n * Get the offset of the element\n * @param {HTMLElement} el\n * @return {Object}\n */\n offset(el) {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n };\n },\n\n /**\n * Create placeholder\n * @return {HTMLElement}\n */\n createPlaceholder() {\n var pfx = this.pfx;\n var el = document.createElement('div');\n var ins = document.createElement('div');\n el.className = pfx + 'placeholder';\n el.style.display = 'none';\n el.style['pointer-events'] = 'none';\n ins.className = pfx + 'placeholder-int';\n el.appendChild(ins);\n return el;\n },\n\n /**\n * Picking component to move\n * @param {HTMLElement} src\n * */\n startSort(src, opts = {}) {\n const em = this.em;\n const itemSel = this.itemSel;\n const contSel = this.containerSel;\n const container = this.getContainerEl(opts.container);\n const docs = this.getDocuments(src);\n const onStart = this.onStart;\n let srcModel;\n let plh = this.plh;\n this.dropModel = null;\n this.target = null;\n this.prevTarget = null;\n this.moved = 0;\n\n // Check if the start element is a valid one, if not get the\n // closest valid one\n if (src && !this.matches(src, `${itemSel}, ${contSel}`)) {\n src = this.closest(src, itemSel);\n }\n\n this.eV = src;\n\n // Create placeholder if not yet exists\n if (!plh) {\n plh = this.createPlaceholder();\n container.appendChild(plh);\n this.plh = plh;\n }\n\n if (src) {\n srcModel = this.getSourceModel(src);\n srcModel && srcModel.set && srcModel.set('status', 'freezed');\n this.srcModel = srcModel;\n }\n\n on(container, 'mousemove dragover', this.onMove);\n on(docs, 'mouseup dragend touchend', this.endMove);\n on(docs, 'keydown', this.rollback);\n onStart &&\n onStart({\n target: srcModel,\n parent: srcModel && srcModel.parent(),\n index: srcModel && srcModel.index()\n });\n\n // Avoid strange effects on dragging\n em && em.clearSelection();\n this.toggleSortCursor(1);\n\n em && em.trigger('sorter:drag:start', src, srcModel);\n },\n\n /**\n * Get the model from HTMLElement target\n * @return {Model|null}\n */\n getTargetModel(el) {\n let elem = el || this.target;\n return $(elem).data('model');\n },\n\n /**\n * Get the model of the current source element (element to drag)\n * @return {Model}\n */\n getSourceModel(source, { target, avoidChildren = 1 } = {}) {\n const { em, eV } = this;\n const src = source || eV;\n let { dropModel, dropContent } = this;\n const isTextable = src =>\n src &&\n target &&\n src.opt &&\n src.opt.avoidChildren &&\n this.isTextableActive(src, target);\n\n if (dropContent && em) {\n if (isTextable(dropModel)) {\n dropModel = null;\n }\n\n if (!dropModel) {\n const comps = em.get('DomComponents').getComponents();\n const opts = {\n avoidChildren,\n avoidStore: 1,\n avoidUpdateStyle: 1\n };\n const tempModel = comps.add(dropContent, { ...opts, temporary: 1 });\n dropModel = comps.remove(tempModel, opts);\n dropModel = dropModel instanceof Array ? dropModel[0] : dropModel;\n this.dropModel = dropModel;\n\n if (isTextable(dropModel)) {\n return this.getSourceModel(src, { target, avoidChildren: 0 });\n }\n }\n\n return dropModel;\n }\n\n return src && $(src).data('model');\n },\n\n /**\n * Highlight target\n * @param {Model|null} model\n */\n selectTargetModel(model, source) {\n if (model instanceof Backbone.Collection) {\n return;\n }\n\n // Prevents loops in Firefox\n // https://github.com/artf/grapesjs/issues/2911\n if (source && source === model) return;\n\n const { targetModel } = this;\n\n // Reset the previous model but not if it's the same as the source\n // https://github.com/artf/grapesjs/issues/2478#issuecomment-570314736\n if (targetModel && targetModel !== this.srcModel) {\n targetModel.set('status', '');\n }\n\n if (model && model.set) {\n model.set('status', 'selected-parent');\n this.targetModel = model;\n }\n },\n\n /**\n * During move\n * @param {Event} e\n * */\n onMove(e) {\n const ev = e;\n const { em, onMoveClb, plh } = this;\n this.moved = 1;\n\n // Turn placeholder visibile\n var dsp = plh.style.display;\n if (!dsp || dsp === 'none') plh.style.display = 'block';\n\n // Cache all necessary positions\n var eO = this.offset(this.el);\n this.elT = this.wmargin ? Math.abs(eO.top) : eO.top;\n this.elL = this.wmargin ? Math.abs(eO.left) : eO.left;\n var rY = e.pageY - this.elT + this.el.scrollTop;\n var rX = e.pageX - this.elL + this.el.scrollLeft;\n\n if (this.canvasRelative && em) {\n const mousePos = em\n .get('Canvas')\n .getMouseRelativeCanvas(e, { noScroll: 1 });\n rX = mousePos.x;\n rY = mousePos.y;\n }\n\n this.rX = rX;\n this.rY = rY;\n this.eventMove = e;\n\n //var targetNew = this.getTargetFromEl(e.target);\n const sourceModel = this.getSourceModel();\n const dims = this.dimsFromTarget(e.target, rX, rY);\n const target = this.target;\n const targetModel = target && this.getTargetModel(target);\n this.selectTargetModel(targetModel, sourceModel);\n if (!targetModel) plh.style.display = 'none';\n if (!target) return;\n\n this.lastDims = dims;\n const pos = this.findPosition(dims, rX, rY);\n\n if (this.isTextableActive(sourceModel, targetModel)) {\n this.activeTextModel = targetModel;\n this.setContentEditable(targetModel, true);\n\n plh.style.display = 'none';\n this.lastPos = pos;\n this.updateTextViewCursorPosition(ev);\n } else {\n this.disableTextable();\n this.activeTextModel = null;\n\n // If there is a significant changes with the pointer\n if (\n !this.lastPos ||\n this.lastPos.index != pos.index ||\n this.lastPos.method != pos.method\n ) {\n this.movePlaceholder(this.plh, dims, pos, this.prevTargetDim);\n if (!this.$plh) this.$plh = $(this.plh);\n\n // With canvasRelative the offset is calculated automatically for\n // each element\n if (!this.canvasRelative) {\n if (this.offTop) this.$plh.css('top', '+=' + this.offTop + 'px');\n if (this.offLeft) this.$plh.css('left', '+=' + this.offLeft + 'px');\n }\n\n this.lastPos = pos;\n }\n }\n\n isFunction(onMoveClb) &&\n onMoveClb({\n event: e,\n target: sourceModel,\n parent: targetModel,\n index: pos.index + (pos.method == 'after' ? 1 : 0)\n });\n\n em &&\n em.trigger('sorter:drag', {\n target,\n targetModel,\n sourceModel,\n dims,\n pos,\n x: rX,\n y: rY\n });\n },\n\n isTextableActive(src, trg) {\n return src && src.get && src.get('textable') && trg && trg.is('text');\n },\n\n disableTextable() {\n const { activeTextModel } = this;\n activeTextModel && activeTextModel.getView().disableEditing();\n },\n\n /**\n * Returns true if the elements is in flow, so is not in flow where\n * for example the component is with float:left\n * @param {HTMLElement} el\n * @param {HTMLElement} parent\n * @return {Boolean}\n * @private\n * */\n isInFlow(el, parent) {\n if (!el) return false;\n\n parent = parent || document.body;\n var ch = -1,\n h;\n var elem = el;\n h = elem.offsetHeight;\n if (/*h < ch || */ !this.styleInFlow(elem, parent)) return false;\n else return true;\n },\n\n /**\n * Check if el has style to be in flow\n * @param {HTMLElement} el\n * @param {HTMLElement} parent\n * @return {Boolean}\n * @private\n */\n styleInFlow(el, parent) {\n if (isTextNode(el)) return;\n const style = el.style || {};\n const $el = $(el);\n const $parent = parent && $(parent);\n\n if (style.overflow && style.overflow !== 'visible') return;\n const propFloat = $el.css('float');\n if (propFloat && propFloat !== 'none') return;\n if (\n $parent &&\n $parent.css('display') == 'flex' &&\n $parent.css('flex-direction') !== 'column'\n )\n return;\n switch (style.position) {\n case 'static':\n case 'relative':\n case '':\n break;\n default:\n return;\n }\n switch (el.tagName) {\n case 'TR':\n case 'TBODY':\n case 'THEAD':\n case 'TFOOT':\n return true;\n }\n switch ($el.css('display')) {\n case 'block':\n case 'list-item':\n case 'table':\n case 'flex':\n return true;\n }\n return;\n },\n\n /**\n * Check if the target is valid with the actual source\n * @param {HTMLElement} trg\n * @return {Boolean}\n */\n validTarget(trg, src) {\n const trgModel = this.getTargetModel(trg);\n const srcModel = this.getSourceModel(src, { target: trgModel });\n src = srcModel && srcModel.view && srcModel.view.el;\n trg = trgModel && trgModel.view && trgModel.view.el;\n let result = {\n valid: true,\n src,\n srcModel,\n trg,\n trgModel\n };\n\n if (!src || !trg) {\n result.valid = false;\n return result;\n }\n\n // check if the source is draggable in target\n let draggable = srcModel.get('draggable');\n draggable = draggable instanceof Array ? draggable.join(', ') : draggable;\n result.dragInfo = draggable;\n draggable = isString(draggable) ? this.matches(trg, draggable) : draggable;\n result.draggable = draggable;\n\n // Check if the target could accept the source\n let droppable = trgModel.get('droppable');\n\n if (isFunction(droppable)) {\n const res = droppable(srcModel, trgModel);\n result.droppable = res;\n result.dropInfo = res;\n droppable = res;\n } else {\n droppable = droppable instanceof Backbone.Collection ? 1 : droppable;\n droppable = droppable instanceof Array ? droppable.join(', ') : droppable;\n result.dropInfo = droppable;\n droppable = isString(droppable)\n ? this.matches(src, droppable)\n : droppable;\n droppable =\n draggable && this.isTextableActive(srcModel, trgModel) ? 1 : droppable;\n result.droppable = droppable;\n }\n\n if (!droppable || !draggable) {\n result.valid = false;\n }\n\n return result;\n },\n\n /**\n * Get dimensions of nodes relative to the coordinates\n * @param {HTMLElement} target\n * @param {number} rX Relative X position\n * @param {number} rY Relative Y position\n * @return {Array}\n */\n dimsFromTarget(target, rX, rY) {\n const em = this.em;\n var dims = [];\n\n if (!target) {\n return dims;\n }\n\n // Select the first valuable target\n if (!this.matches(target, `${this.itemSel}, ${this.containerSel}`)) {\n target = this.closest(target, this.itemSel);\n }\n\n // If draggable is an array the target will be one of those\n if (this.draggable instanceof Array) {\n target = this.closest(target, this.draggable.join(','));\n }\n\n if (!target) {\n return dims;\n }\n\n // Check if the target is different from the previous one\n if (this.prevTarget && this.prevTarget != target) {\n this.prevTarget = null;\n }\n\n // New target found\n if (!this.prevTarget) {\n this.targetP = this.closest(target, this.containerSel);\n\n // Check if the source is valid with the target\n let validResult = this.validTarget(target);\n em && em.trigger('sorter:drag:validation', validResult);\n\n if (!validResult.valid && this.targetP) {\n return this.dimsFromTarget(this.targetP, rX, rY);\n }\n\n this.prevTarget = target;\n this.prevTargetDim = this.getDim(target);\n this.cacheDimsP = this.getChildrenDim(this.targetP);\n this.cacheDims = this.getChildrenDim(target);\n }\n\n // If the target is the previous one will return the cached dims\n if (this.prevTarget == target) dims = this.cacheDims;\n\n // Target when I will drop element to sort\n this.target = this.prevTarget;\n\n // Generally, on any new target the poiner enters inside its area and\n // triggers nearBorders(), so have to take care of this\n if (\n this.nearBorders(this.prevTargetDim, rX, rY) ||\n (!this.nested && !this.cacheDims.length)\n ) {\n const targetParent = this.targetP;\n\n if (targetParent && this.validTarget(targetParent).valid) {\n dims = this.cacheDimsP;\n this.target = targetParent;\n }\n }\n\n this.lastPos = null;\n return dims;\n },\n\n /**\n * Get valid target from element\n * This method should replace dimsFromTarget()\n * @param {HTMLElement} el\n * @return {HTMLElement}\n */\n getTargetFromEl(el) {\n let target = el;\n let targetParent;\n let targetPrev = this.targetPrev;\n const em = this.em;\n const containerSel = this.containerSel;\n const itemSel = this.itemSel;\n\n // Select the first valuable target\n if (!this.matches(target, `${itemSel}, ${containerSel}`)) {\n target = this.closest(target, itemSel);\n }\n\n // If draggable is an array the target will be one of those\n // TODO check if this options is used somewhere\n if (this.draggable instanceof Array) {\n target = this.closest(target, this.draggable.join(','));\n }\n\n // Check if the target is different from the previous one\n if (targetPrev && targetPrev != target) {\n this.targetPrev = '';\n }\n\n // New target found\n if (!this.targetPrev) {\n targetParent = this.closest(target, containerSel);\n\n // If the current target is not valid (src/trg reasons) try with\n // the parent one (if exists)\n const validResult = this.validTarget(target);\n em && em.trigger('sorter:drag:validation', validResult);\n\n if (!validResult.valid && targetParent) {\n return this.getTargetFromEl(targetParent);\n }\n\n this.targetPrev = target;\n }\n\n // Generally, on any new target the poiner enters inside its area and\n // triggers nearBorders(), so have to take care of this\n if (this.nearElBorders(target)) {\n targetParent = this.closest(target, containerSel);\n\n if (targetParent && this.validTarget(targetParent).valid) {\n target = targetParent;\n }\n }\n\n return target;\n },\n\n /**\n * Check if the current pointer is neare to element borders\n * @return {Boolen}\n */\n nearElBorders(el) {\n const off = 10;\n const rect = el.getBoundingClientRect();\n const body = el.ownerDocument.body;\n const { x, y } = this.getCurrentPos();\n const top = rect.top + body.scrollTop;\n const left = rect.left + body.scrollLeft;\n const width = rect.width;\n const height = rect.height;\n\n if (\n y < top + off || // near top edge\n y > top + height - off || // near bottom edge\n x < left + off || // near left edge\n x > left + width - off // near right edge\n ) {\n return 1;\n }\n },\n\n getCurrentPos() {\n const ev = this.eventMove;\n const x = ev.pageX || 0;\n const y = ev.pageY || 0;\n return { x, y };\n },\n\n /**\n * Returns dimensions and positions about the element\n * @param {HTMLElement} el\n * @return {Array}\n */\n getDim(el) {\n const { em, canvasRelative } = this;\n var top, left, height, width;\n\n if (canvasRelative && em) {\n const canvas = em.get('Canvas');\n const pos = canvas.getElementPos(el, { noScroll: 1 });\n const elOffsets = canvas.getElementOffsets(el);\n top = pos.top - elOffsets.marginTop;\n left = pos.left - elOffsets.marginLeft;\n height = pos.height + elOffsets.marginTop + elOffsets.marginBottom;\n width = pos.width + elOffsets.marginLeft + elOffsets.marginRight;\n } else {\n var o = this.offset(el);\n top = this.relative\n ? el.offsetTop\n : o.top - (this.wmargin ? -1 : 1) * this.elT;\n left = this.relative\n ? el.offsetLeft\n : o.left - (this.wmargin ? -1 : 1) * this.elL;\n height = el.offsetHeight;\n width = el.offsetWidth;\n }\n\n return [top, left, height, width];\n },\n\n /**\n * Get children dimensions\n * @param {HTMLELement} el Element root\n * @retun {Array}\n * */\n getChildrenDim(trg) {\n const dims = [];\n if (!trg) return dims;\n\n // Get children based on getChildrenContainer\n const trgModel = this.getTargetModel(trg);\n if (trgModel && trgModel.view && !this.ignoreViewChildren) {\n const view = trgModel.getCurrentView\n ? trgModel.getCurrentView()\n : trgModel.view;\n trg = view.getChildrenContainer();\n }\n\n each(trg.children, (el, i) => {\n const model = getModel(el, $);\n const elIndex = model && model.index ? model.index() : i;\n\n if (!isTextNode(el) && !this.matches(el, this.itemSel)) {\n return;\n }\n\n const dim = this.getDim(el);\n let dir = this.direction;\n\n if (dir == 'v') dir = true;\n else if (dir == 'h') dir = false;\n else dir = this.isInFlow(el, trg);\n\n dim.push(dir, el, elIndex);\n dims.push(dim);\n });\n\n return dims;\n },\n\n /**\n * Check if the coordinates are near to the borders\n * @param {Array} dim\n * @param {number} rX Relative X position\n * @param {number} rY Relative Y position\n * @return {Boolean}\n * */\n nearBorders(dim, rX, rY) {\n var result = 0;\n var off = this.borderOffset;\n var x = rX || 0;\n var y = rY || 0;\n var t = dim[0];\n var l = dim[1];\n var h = dim[2];\n var w = dim[3];\n if (t + off > y || y > t + h - off || l + off > x || x > l + w - off)\n result = 1;\n\n return !!result;\n },\n\n /**\n * Find the position based on passed dimensions and coordinates\n * @param {Array} dims Dimensions of nodes to parse\n * @param {number} posX X coordindate\n * @param {number} posY Y coordindate\n * @retun {Object}\n * */\n findPosition(dims, posX, posY) {\n var result = { index: 0, indexEl: 0, method: 'before' };\n var leftLimit = 0,\n xLimit = 0,\n dimRight = 0,\n yLimit = 0,\n xCenter = 0,\n yCenter = 0,\n dimDown = 0,\n dim = 0;\n // Each dim is: Top, Left, Height, Width\n for (var i = 0, len = dims.length; i < len; i++) {\n dim = dims[i];\n // Right position of the element. Left + Width\n dimRight = dim[1] + dim[3];\n // Bottom position of the element. Top + Height\n dimDown = dim[0] + dim[2];\n // X center position of the element. Left + (Width / 2)\n xCenter = dim[1] + dim[3] / 2;\n // Y center position of the element. Top + (Height / 2)\n yCenter = dim[0] + dim[2] / 2;\n // Skip if over the limits\n if (\n (xLimit && dim[1] > xLimit) ||\n (yLimit && yCenter >= yLimit) || // >= avoid issue with clearfixes\n (leftLimit && dimRight < leftLimit)\n )\n continue;\n result.index = i;\n result.indexEl = dim[6];\n // If it's not in flow (like 'float' element)\n if (!dim[4]) {\n if (posY < dimDown) yLimit = dimDown;\n //If x lefter than center\n if (posX < xCenter) {\n xLimit = xCenter;\n result.method = 'before';\n } else {\n leftLimit = xCenter;\n result.method = 'after';\n }\n } else {\n // If y upper than center\n if (posY < yCenter) {\n result.method = 'before';\n break;\n } else result.method = 'after'; // After last element\n }\n }\n return result;\n },\n\n /**\n * Updates the position of the placeholder\n * @param {HTMLElement} phl\n * @param {Array} dims\n * @param {Object} pos Position object\n * @param {Array} trgDim target dimensions\n * */\n movePlaceholder(plh, dims, pos, trgDim) {\n var marg = 0,\n t = 0,\n l = 0,\n w = 0,\n h = 0,\n un = 'px',\n margI = 5,\n method = pos.method;\n var elDim = dims[pos.index];\n\n // Placeholder orientation\n plh.classList.remove('vertical');\n plh.classList.add('horizontal');\n\n if (elDim) {\n // If it's not in flow (like 'float' element)\n if (!elDim[4]) {\n w = 'auto';\n h = elDim[2] - marg * 2 + un;\n t = elDim[0] + marg;\n l = method == 'before' ? elDim[1] - marg : elDim[1] + elDim[3] - marg;\n\n plh.classList.remove('horizontal');\n plh.classList.add('vertical');\n } else {\n w = elDim[3] + un;\n h = 'auto';\n t = method == 'before' ? elDim[0] - marg : elDim[0] + elDim[2] - marg;\n l = elDim[1];\n }\n } else {\n if (!this.nested) {\n plh.style.display = 'none';\n return;\n }\n if (trgDim) {\n t = trgDim[0] + margI;\n l = trgDim[1] + margI;\n w = parseInt(trgDim[3]) - margI * 2 + un;\n h = 'auto';\n }\n }\n plh.style.top = t + un;\n plh.style.left = l + un;\n if (w) plh.style.width = w;\n if (h) plh.style.height = h;\n },\n\n /**\n * Leave item\n * @param event\n *\n * @return void\n * */\n endMove(e) {\n const src = this.eV;\n const moved = [];\n const docs = this.getDocuments();\n const container = this.getContainerEl();\n const onEndMove = this.onEndMove;\n const { target, lastPos } = this;\n let srcModel;\n off(container, 'mousemove dragover', this.onMove);\n off(docs, 'mouseup dragend touchend', this.endMove);\n off(docs, 'keydown', this.rollback);\n this.plh.style.display = 'none';\n\n if (src) {\n srcModel = this.getSourceModel();\n if (this.selectOnEnd && srcModel && srcModel.set) {\n srcModel.set('status', '');\n srcModel.set('status', 'selected');\n }\n }\n\n if (this.moved && target) {\n const toMove = this.toMove;\n const toMoveArr = isArray(toMove) ? toMove : toMove ? [toMove] : [src];\n toMoveArr.forEach(model => {\n moved.push(this.move(target, model, lastPos));\n });\n }\n\n if (this.plh) this.plh.style.display = 'none';\n var dragHelper = this.dragHelper;\n\n if (dragHelper) {\n dragHelper.parentNode.removeChild(dragHelper);\n this.dragHelper = null;\n }\n\n this.disableTextable();\n this.selectTargetModel();\n this.toggleSortCursor();\n\n this.toMove = null;\n this.eventMove = 0;\n this.dropModel = null;\n\n if (isFunction(onEndMove)) {\n const data = {\n target: srcModel,\n parent: srcModel && srcModel.parent(),\n index: srcModel && srcModel.index()\n };\n moved.length\n ? moved.forEach(m => onEndMove(m, this, data))\n : onEndMove(null, this, { ...data, cancelled: 1 });\n }\n },\n\n /**\n * Move component to new position\n * @param {HTMLElement} dst Destination target\n * @param {HTMLElement} src Element to move\n * @param {Object} pos Object with position coordinates\n * */\n move(dst, src, pos) {\n const { em, activeTextModel, dropContent } = this;\n const srcEl = getElement(src);\n em && em.trigger('component:dragEnd:before', dst, srcEl, pos); // @depricated\n let index = pos.indexEl;\n let modelToDrop, modelTemp, created;\n const warns = [];\n const validResult = this.validTarget(dst, srcEl);\n const targetCollection = $(dst).data('collection');\n const model = validResult.srcModel;\n let { droppable } = validResult;\n const { trgModel, draggable } = validResult;\n const dropInfo =\n validResult.dropInfo || (trgModel && trgModel.get('droppable'));\n const dragInfo = validResult.dragInfo || (model && model.get('draggable'));\n droppable = trgModel instanceof Backbone.Collection ? 1 : droppable;\n const isTextableActive = this.isTextableActive(model, trgModel);\n\n if (targetCollection && droppable && draggable) {\n index = pos.method === 'after' ? index + 1 : index;\n var opts = { at: index, noIncrement: 1 };\n\n if (!dropContent) {\n // Putting `avoidStore` here will make the UndoManager behave wrong\n opts.temporary = 1;\n modelTemp = targetCollection.add({}, { ...opts });\n\n if (model.collection) {\n modelToDrop = model.collection.remove(model, { temporary: 1 });\n }\n } else {\n modelToDrop = isFunction(dropContent) ? dropContent() : dropContent;\n opts.silent = false;\n opts.avoidUpdateStyle = 1;\n }\n\n if (isTextableActive) {\n const viewActive = activeTextModel.getView();\n activeTextModel.trigger('active');\n const { activeRte } = viewActive;\n const modelEl = model.getEl();\n delete model.opt.temporary;\n model.getView().render();\n modelEl.setAttribute('data-gjs-textable', 'true');\n const { outerHTML } = modelEl;\n activeRte.insertHTML && activeRte.insertHTML(outerHTML);\n } else {\n created = targetCollection.add(modelToDrop, opts);\n }\n\n if (!dropContent) {\n targetCollection.remove(modelTemp);\n } else {\n this.dropContent = null;\n }\n\n // This will cause to recalculate children dimensions\n this.prevTarget = null;\n } else if (em) {\n !targetCollection && warns.push('Target collection not found');\n !droppable &&\n dropInfo &&\n warns.push(`Target is not droppable, accepts [${dropInfo}]`);\n !draggable &&\n dragInfo &&\n warns.push(`Component not draggable, acceptable by [${dragInfo}]`);\n em.logWarning('Invalid target position', {\n errors: warns,\n model,\n context: 'sorter',\n target: trgModel\n });\n }\n\n if (em) {\n em.trigger('component:dragEnd', targetCollection, modelToDrop, warns); // @deprecated\n em.trigger('sorter:drag:end', {\n targetCollection,\n modelToDrop,\n warns,\n validResult,\n dst,\n srcEl\n });\n }\n\n return created;\n },\n\n /**\n * Rollback to previous situation\n * @param {Event}\n * @param {Bool} Indicates if rollback in anycase\n * */\n rollback(e) {\n off(this.getDocuments(), 'keydown', this.rollback);\n const key = e.which || e.keyCode;\n\n if (key == 27) {\n this.moved = 0;\n this.endMove();\n }\n }\n});\n","import { bindAll, defaults, isFunction, each } from 'underscore';\nimport { on, off, normalizeFloat } from 'utils/mixins';\n\nvar defaultOpts = {\n // Function which returns custom X and Y coordinates of the mouse\n mousePosFetcher: null,\n // Indicates custom target updating strategy\n updateTarget: null,\n // Function which gets HTMLElement as an arg and returns it relative position\n ratioDefault: 0,\n posFetcher: null,\n onStart: null,\n onMove: null,\n onEnd: null,\n onUpdateContainer: () => {},\n\n // Resize unit step\n step: 1,\n\n // Minimum dimension\n minDim: 10,\n\n // Maximum dimension\n maxDim: '',\n\n // Unit used for height resizing\n unitHeight: 'px',\n\n // Unit used for width resizing\n unitWidth: 'px',\n\n // The key used for height resizing\n keyHeight: 'height',\n\n // The key used for width resizing\n keyWidth: 'width',\n\n // If true, will override unitHeight and unitWidth, on start, with units\n // from the current focused element (currently used only in SelectComponent)\n currentUnit: 1,\n\n // With this option active the mousemove event won't be altered when\n // the pointer comes over iframes\n silentFrames: 0,\n\n // If true the container of handlers won't be updated\n avoidContainerUpdate: 0,\n\n // If height is 'auto', this setting will preserve it and only update width\n keepAutoHeight: false,\n\n // If width is 'auto', this setting will preserve it and only update height\n keepAutoWidth: false,\n\n // When keepAutoHeight is true and the height has the value 'auto', this is set to true and height isn't updated\n autoHeight: false,\n\n // When keepAutoWidth is true and the width has the value 'auto', this is set to true and width isn't updated\n autoWidth: false,\n\n // Handlers\n tl: 1, // Top left\n tc: 1, // Top center\n tr: 1, // Top right\n cl: 1, // Center left\n cr: 1, // Center right\n bl: 1, // Bottom left\n bc: 1, // Bottom center\n br: 1 // Bottom right\n};\n\nvar createHandler = (name, opts) => {\n var pfx = opts.prefix || '';\n var el = document.createElement('i');\n el.className = pfx + 'resizer-h ' + pfx + 'resizer-h-' + name;\n el.setAttribute('data-' + pfx + 'handler', name);\n return el;\n};\n\nvar getBoundingRect = (el, win) => {\n var w = win || window;\n var rect = el.getBoundingClientRect();\n return {\n left: rect.left + w.pageXOffset,\n top: rect.top + w.pageYOffset,\n width: rect.width,\n height: rect.height\n };\n};\n\nclass Resizer {\n /**\n * Init the Resizer with options\n * @param {Object} options\n */\n constructor(opts = {}) {\n this.setOptions(opts);\n bindAll(this, 'handleKeyDown', 'handleMouseDown', 'move', 'stop');\n return this;\n }\n\n /**\n * Get current connfiguration options\n * @return {Object}\n */\n getConfig() {\n return this.opts;\n }\n\n /**\n * Setup options\n * @param {Object} options\n */\n setOptions(options = {}) {\n this.opts = defaults(options, defaultOpts);\n this.setup();\n }\n\n /**\n * Setup resizer\n */\n setup() {\n const opts = this.opts;\n const pfx = opts.prefix || '';\n const appendTo = opts.appendTo || document.body;\n let container = this.container;\n\n // Create container if not yet exist\n if (!container) {\n container = document.createElement('div');\n container.className = `${pfx}resizer-c`;\n appendTo.appendChild(container);\n this.container = container;\n }\n\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n\n // Create handlers\n const handlers = {};\n ['tl', 'tc', 'tr', 'cl', 'cr', 'bl', 'bc', 'br'].forEach(\n hdl => (handlers[hdl] = opts[hdl] ? createHandler(hdl, opts) : '')\n );\n\n for (let n in handlers) {\n const handler = handlers[n];\n handler && container.appendChild(handler);\n }\n\n this.handlers = handlers;\n this.mousePosFetcher = opts.mousePosFetcher;\n this.updateTarget = opts.updateTarget;\n this.posFetcher = opts.posFetcher;\n this.onStart = opts.onStart;\n this.onMove = opts.onMove;\n this.onEnd = opts.onEnd;\n this.onUpdateContainer = opts.onUpdateContainer;\n }\n\n /**\n * Toggle iframes pointer event\n * @param {Boolean} silent If true, iframes will be silented\n */\n toggleFrames(silent) {\n if (this.opts.silentFrames) {\n const frames = document.querySelectorAll('iframe');\n each(frames, frame => (frame.style.pointerEvents = silent ? 'none' : ''));\n }\n }\n\n /**\n * Detects if the passed element is a resize handler\n * @param {HTMLElement} el\n * @return {Boolean}\n */\n isHandler(el) {\n var handlers = this.handlers;\n\n for (var n in handlers) {\n if (handlers[n] === el) return true;\n }\n\n return false;\n }\n\n /**\n * Returns the focused element\n * @return {HTMLElement}\n */\n getFocusedEl() {\n return this.el;\n }\n\n /**\n * Returns the parent of the focused element\n * @return {HTMLElement}\n */\n getParentEl() {\n return this.el.parentElement;\n }\n\n /**\n * Returns documents\n */\n getDocumentEl() {\n return [this.el.ownerDocument, document];\n }\n\n /**\n * Return element position\n * @param {HTMLElement} el\n * @param {Object} opts Custom options\n * @return {Object}\n */\n getElementPos(el, opts = {}) {\n var posFetcher = this.posFetcher || '';\n return posFetcher ? posFetcher(el, opts) : getBoundingRect(el);\n }\n\n /**\n * Focus resizer on the element, attaches handlers to it\n * @param {HTMLElement} el\n */\n focus(el) {\n // Avoid focusing on already focused element\n if (el && el === this.el) {\n return;\n }\n\n this.el = el;\n this.updateContainer({ forceShow: 1 });\n on(this.getDocumentEl(), 'mousedown', this.handleMouseDown);\n }\n\n /**\n * Blur from element\n */\n blur() {\n this.container.style.display = 'none';\n\n if (this.el) {\n off(this.getDocumentEl(), 'mousedown', this.handleMouseDown);\n this.el = null;\n }\n }\n\n /**\n * Start resizing\n * @param {Event} e\n */\n start(e) {\n //Right or middel click\n if (e.button !== 0) return;\n e.preventDefault();\n e.stopPropagation();\n const el = this.el;\n const parentEl = this.getParentEl();\n const resizer = this;\n const config = this.opts || {};\n var attrName = 'data-' + config.prefix + 'handler';\n var rect = this.getElementPos(el, { target: 'el' });\n var parentRect = this.getElementPos(parentEl);\n this.handlerAttr = e.target.getAttribute(attrName);\n this.clickedHandler = e.target;\n this.startDim = {\n t: rect.top,\n l: rect.left,\n w: rect.width,\n h: rect.height\n };\n this.rectDim = {\n t: rect.top,\n l: rect.left,\n w: rect.width,\n h: rect.height\n };\n this.startPos = {\n x: e.clientX,\n y: e.clientY\n };\n this.parentDim = {\n t: parentRect.top,\n l: parentRect.left,\n w: parentRect.width,\n h: parentRect.height\n };\n\n // Listen events\n var doc = this.getDocumentEl();\n on(doc, 'mousemove', this.move);\n on(doc, 'keydown', this.handleKeyDown);\n on(doc, 'mouseup', this.stop);\n isFunction(this.onStart) &&\n this.onStart(e, { docs: doc, config, el, resizer });\n this.toggleFrames(1);\n this.move(e);\n }\n\n /**\n * While resizing\n * @param {Event} e\n */\n move(e) {\n const onMove = this.onMove;\n var mouseFetch = this.mousePosFetcher;\n var currentPos = mouseFetch\n ? mouseFetch(e)\n : {\n x: e.clientX,\n y: e.clientY\n };\n\n this.currentPos = currentPos;\n this.delta = {\n x: currentPos.x - this.startPos.x,\n y: currentPos.y - this.startPos.y\n };\n this.keys = {\n shift: e.shiftKey,\n ctrl: e.ctrlKey,\n alt: e.altKey\n };\n\n this.rectDim = this.calc(this);\n this.updateRect(0);\n\n // Move callback\n onMove && onMove(e);\n\n // In case the mouse button was released outside of the window\n if (e.which === 0) {\n this.stop(e);\n }\n }\n\n /**\n * Stop resizing\n * @param {Event} e\n */\n stop(e) {\n const config = this.opts;\n var doc = this.getDocumentEl();\n off(doc, 'mousemove', this.move);\n off(doc, 'keydown', this.handleKeyDown);\n off(doc, 'mouseup', this.stop);\n this.updateRect(1);\n this.toggleFrames();\n isFunction(this.onEnd) && this.onEnd(e, { docs: doc, config });\n }\n\n /**\n * Update rect\n */\n updateRect(store) {\n const el = this.el;\n const resizer = this;\n const config = this.opts;\n const rect = this.rectDim;\n const updateTarget = this.updateTarget;\n const selectedHandler = this.getSelectedHandler();\n const { unitHeight, unitWidth, keyWidth, keyHeight } = config;\n\n // Use custom updating strategy if requested\n if (isFunction(updateTarget)) {\n updateTarget(el, rect, {\n store,\n selectedHandler,\n resizer,\n config\n });\n } else {\n const elStyle = el.style;\n elStyle[keyWidth] = rect.w + unitWidth;\n elStyle[keyHeight] = rect.h + unitHeight;\n }\n\n this.updateContainer();\n }\n\n updateContainer(opt = {}) {\n const { opts, container, el } = this;\n const { style } = container;\n\n if (!opts.avoidContainerUpdate && el) {\n // On component resize container fits the tool,\n // to check if this update is required somewhere else point\n // const toUpdate = ['left', 'top', 'width', 'height'];\n // const rectEl = this.getElementPos(el, { target: 'container' });\n // toUpdate.forEach(pos => (style[pos] = `${rectEl[pos]}px`));\n if (opt.forceShow) style.display = 'block';\n }\n\n this.onUpdateContainer({\n el: container,\n resizer: this,\n opts: {\n ...opts,\n ...opt\n }\n });\n }\n\n /**\n * Get selected handler name\n * @return {string}\n */\n getSelectedHandler() {\n var handlers = this.handlers;\n\n if (!this.selectedHandler) {\n return;\n }\n\n for (let n in handlers) {\n if (handlers[n] === this.selectedHandler) return n;\n }\n }\n\n /**\n * Handle ESC key\n * @param {Event} e\n */\n handleKeyDown(e) {\n if (e.keyCode === 27) {\n // Rollback to initial dimensions\n this.rectDim = this.startDim;\n this.stop(e);\n }\n }\n\n /**\n * Handle mousedown to check if it's possible to start resizing\n * @param {Event} e\n */\n handleMouseDown(e) {\n var el = e.target;\n if (this.isHandler(el)) {\n this.selectedHandler = el;\n this.start(e);\n } else if (el !== this.el) {\n this.selectedHandler = '';\n this.blur();\n }\n }\n\n /**\n * All positioning logic\n * @return {Object}\n */\n calc(data) {\n let value;\n const opts = this.opts || {};\n const step = opts.step;\n const startDim = this.startDim;\n const minDim = opts.minDim;\n const maxDim = opts.maxDim;\n const deltaX = data.delta.x;\n const deltaY = data.delta.y;\n const parentW = this.parentDim.w;\n const parentH = this.parentDim.h;\n const unitWidth = this.opts.unitWidth;\n const unitHeight = this.opts.unitHeight;\n const startW =\n unitWidth === '%' ? (startDim.w / 100) * parentW : startDim.w;\n const startH =\n unitHeight === '%' ? (startDim.h / 100) * parentH : startDim.h;\n var box = {\n t: 0,\n l: 0,\n w: startW,\n h: startH\n };\n\n if (!data) return;\n\n var attr = data.handlerAttr;\n if (~attr.indexOf('r')) {\n value =\n unitWidth === '%'\n ? normalizeFloat(((startW + deltaX * step) / parentW) * 100, 0.01)\n : normalizeFloat(startW + deltaX * step, step);\n value = Math.max(minDim, value);\n maxDim && (value = Math.min(maxDim, value));\n box.w = value;\n }\n if (~attr.indexOf('b')) {\n value =\n unitHeight === '%'\n ? normalizeFloat(((startH + deltaY * step) / parentH) * 100, 0.01)\n : normalizeFloat(startH + deltaY * step, step);\n value = Math.max(minDim, value);\n maxDim && (value = Math.min(maxDim, value));\n box.h = value;\n }\n if (~attr.indexOf('l')) {\n value =\n unitWidth === '%'\n ? normalizeFloat(((startW - deltaX * step) / parentW) * 100, 0.01)\n : normalizeFloat(startW - deltaX * step, step);\n value = Math.max(minDim, value);\n maxDim && (value = Math.min(maxDim, value));\n box.w = value;\n }\n if (~attr.indexOf('t')) {\n value =\n unitHeight === '%'\n ? normalizeFloat(((startH - deltaY * step) / parentH) * 100, 0.01)\n : normalizeFloat(startH - deltaY * step, step);\n value = Math.max(minDim, value);\n maxDim && (value = Math.min(maxDim, value));\n box.h = value;\n }\n\n // Enforce aspect ratio (unless shift key is being held)\n var ratioActive = opts.ratioDefault ? !data.keys.shift : data.keys.shift;\n if (attr.indexOf('c') < 0 && ratioActive) {\n var ratio = startDim.w / startDim.h;\n if (box.w / box.h > ratio) {\n box.h = Math.round(box.w / ratio);\n } else {\n box.w = Math.round(box.h * ratio);\n }\n }\n\n if (~attr.indexOf('l')) {\n box.l = startDim.w - box.w;\n }\n if (~attr.indexOf('t')) {\n box.t = startDim.h - box.h;\n }\n\n return box;\n }\n}\n\nexport default {\n init(opts) {\n return new Resizer(opts);\n }\n};\n","import Dragger from './Dragger';\nimport Sorter from './Sorter';\nimport Resizer from './Resizer';\n\nexport default () => {\n return {\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Utils',\n\n /**\n * Initialize module\n */\n init() {\n return this;\n },\n\n destroy() {},\n\n Sorter,\n Resizer,\n Dragger\n };\n};\n","export default {\n stylePrefix: 'com-',\n\n // Default array of commands\n defaults: [],\n\n // If true, stateful commands (with `run` and `stop` methods) can't be runned multiple times.\n // So, if the command is already active, running it again will not execute the `run` method\n strict: 1\n};\n","/**\n * You can customize the initial state of the module from the editor initialization, by passing the following [Configuration Object](https://github.com/artf/grapesjs/blob/master/src/commands/config/config.js)\n * ```js\n * const editor = grapesjs.init({\n * commands: {\n * // options\n * }\n * })\n * ```\n *\n * Once the editor is instantiated you can use its API. Before using these methods you should get the module from the instance\n *\n * ```js\n * const commands = editor.Commands;\n * ```\n *\n * * [add](#add)\n * * [get](#get)\n * * [getAll](#getall)\n * * [extend](#extend)\n * * [has](#has)\n * * [run](#run)\n * * [stop](#stop)\n * * [isActive](#isactive)\n * * [getActive](#getactive)\n *\n * @module Commands\n */\n\nimport { isFunction, includes } from 'underscore';\nimport CommandAbstract from './view/CommandAbstract';\nimport defaults from './config/config';\nimport { eventDrag } from 'dom_components/model/Component';\n\nconst commandsDef = [\n ['preview', 'Preview', 'preview'],\n ['resize', 'Resize', 'resize'],\n ['fullscreen', 'Fullscreen', 'fullscreen'],\n ['copy', 'CopyComponent'],\n ['paste', 'PasteComponent'],\n ['canvas-move', 'CanvasMove'],\n ['canvas-clear', 'CanvasClear'],\n ['open-code', 'ExportTemplate', 'export-template'],\n ['open-layers', 'OpenLayers', 'open-layers'],\n ['open-styles', 'OpenStyleManager', 'open-sm'],\n ['open-traits', 'OpenTraitManager', 'open-tm'],\n ['open-blocks', 'OpenBlocks', 'open-blocks'],\n ['open-assets', 'OpenAssets', 'open-assets'],\n ['component-select', 'SelectComponent', 'select-comp'],\n ['component-outline', 'SwitchVisibility', 'sw-visibility'],\n ['component-offset', 'ShowOffset', 'show-offset'],\n ['component-move', 'MoveComponent', 'move-comp'],\n ['component-next', 'ComponentNext'],\n ['component-prev', 'ComponentPrev'],\n ['component-enter', 'ComponentEnter'],\n ['component-exit', 'ComponentExit', 'select-parent'],\n ['component-delete', 'ComponentDelete'],\n ['component-style-clear', 'ComponentStyleClear'],\n ['component-drag', 'ComponentDrag']\n];\n\nexport default () => {\n let em;\n let c = {};\n const commands = {};\n const defaultCommands = {};\n const active = {};\n\n // Need it here as it would be used below\n const add = function(id, obj) {\n if (isFunction(obj)) obj = { run: obj };\n if (!obj.stop) obj.noStop = 1;\n delete obj.initialize;\n obj.id = id;\n commands[id] = CommandAbstract.extend(obj);\n return this;\n };\n\n return {\n CommandAbstract,\n\n /**\n * Name of the module\n * @type {String}\n * @private\n */\n name: 'Commands',\n\n /**\n * Initialize module. Automatically called with a new instance of the editor\n * @param {Object} config Configurations\n * @private\n */\n init(config = {}) {\n c = {\n ...defaults,\n ...config\n };\n em = c.em;\n const ppfx = c.pStylePrefix;\n if (ppfx) c.stylePrefix = ppfx + c.stylePrefix;\n\n // Load commands passed via configuration\n Object.keys(c.defaults).forEach(k => {\n const obj = c.defaults[k];\n if (obj.id) this.add(obj.id, obj);\n });\n\n defaultCommands['tlb-delete'] = {\n run(ed) {\n return ed.runCommand('core:component-delete');\n }\n };\n\n defaultCommands['tlb-clone'] = {\n run(ed) {\n ed.runCommand('core:copy');\n ed.runCommand('core:paste');\n }\n };\n\n defaultCommands['tlb-move'] = {\n run(ed, sender, opts = {}) {\n let dragger;\n const em = ed.getModel();\n const event = opts && opts.event;\n const { target } = opts;\n const sel = target || ed.getSelected();\n const selAll = target ? [target] : [...ed.getSelectedAll()];\n const nativeDrag = event && event.type == 'dragstart';\n const defComOptions = { preserveSelected: 1 };\n const modes = ['absolute', 'translate'];\n\n if (!sel || !sel.get('draggable')) {\n return em.logWarning('The element is not draggable');\n }\n\n const mode = sel.get('dmode') || em.get('dmode');\n const hideTlb = () => em.stopDefault(defComOptions);\n const altMode = includes(modes, mode);\n selAll.forEach(sel => sel.trigger('disable'));\n\n // Without setTimeout the ghost image disappears\n nativeDrag ? setTimeout(hideTlb, 0) : hideTlb();\n\n const onStart = data => {\n em.trigger(`${eventDrag}:start`, data);\n };\n const onDrag = data => {\n em.trigger(eventDrag, data);\n };\n const onEnd = (e, opts, data) => {\n selAll.forEach(sel => sel.set('status', 'selected'));\n ed.select(selAll);\n sel.emitUpdate();\n em.trigger(`${eventDrag}:end`, data);\n\n // Defer selectComponent in order to prevent canvas \"freeze\" #2692\n setTimeout(() => em.runDefault(defComOptions));\n\n // Dirty patch to prevent parent selection on drop\n (altMode || data.cancelled) && em.set('_cmpDrag', 1);\n };\n\n if (altMode) {\n // TODO move grabbing func in editor/canvas from the Sorter\n dragger = ed.runCommand('core:component-drag', {\n guidesInfo: 1,\n mode,\n target: sel,\n onStart,\n onDrag,\n onEnd,\n event\n });\n } else {\n if (nativeDrag) {\n event.dataTransfer.setDragImage(sel.view.el, 0, 0);\n //sel.set('status', 'freezed');\n }\n\n const cmdMove = ed.Commands.get('move-comp');\n cmdMove.onStart = onStart;\n cmdMove.onDrag = onDrag;\n cmdMove.onEndMoveFromModel = onEnd;\n cmdMove.initSorterFromModels(selAll);\n }\n\n selAll.forEach(sel => sel.set('status', 'freezed-selected'));\n }\n };\n\n // Core commands\n defaultCommands['core:undo'] = e => e.UndoManager.undo();\n defaultCommands['core:redo'] = e => e.UndoManager.redo();\n commandsDef.forEach(item => {\n const oldCmd = item[2];\n const cmd = require(`./view/${item[1]}`).default;\n const cmdName = `core:${item[0]}`;\n defaultCommands[cmdName] = cmd;\n if (oldCmd) {\n defaultCommands[oldCmd] = cmd;\n // Propogate old commands (can be removed once we stop to call old commands)\n ['run', 'stop'].forEach(name => {\n em.on(`${name}:${oldCmd}`, (...args) =>\n em.trigger(`${name}:${cmdName}`, ...args)\n );\n });\n }\n });\n\n if (c.em) c.model = c.em.get('Canvas');\n\n this.loadDefaultCommands();\n\n return this;\n },\n\n /**\n * Add new command to the collection\n * @param\t{string} id Command's ID\n * @param\t{Object|Function} command Object representing your command,\n * By passing just a function it's intended as a stateless command\n * (just like passing an object with only `run` method).\n * @return {this}\n * @example\n * commands.add('myCommand', {\n * \trun(editor, sender) {\n * \t\talert('Hello world!');\n * \t},\n * \tstop(editor, sender) {\n * \t},\n * });\n * // As a function\n * commands.add('myCommand2', editor => { ... });\n * */\n add,\n\n /**\n * Get command by ID\n * @param\t{string}\tid Command's ID\n * @return {Object} Object representing the command\n * @example\n * var myCommand = commands.get('myCommand');\n * myCommand.run();\n * */\n get(id) {\n let el = commands[id];\n\n if (isFunction(el)) {\n el = new el(c);\n commands[id] = el;\n } else if (!el) {\n em.logWarning(`'${id}' command not found`);\n }\n\n return el;\n },\n\n /**\n * Extend the command. The command to extend should be defined as an object\n * @param\t{string}\tid Command's ID\n * @param {Object} Object with the new command functions\n * @returns {this}\n * @example\n * commands.extend('old-command', {\n * someInnerFunction() {\n * // ...\n * }\n * });\n * */\n extend(id, cmd = {}) {\n const command = this.get(id);\n if (command) {\n const cmdObj = {\n ...command.constructor.prototype,\n ...cmd\n };\n this.add(id, cmdObj);\n // Extend also old name commands if exist\n const oldCmd = commandsDef.filter(\n cmd => `core:${cmd[0]}` === id && cmd[2]\n )[0];\n oldCmd && this.add(oldCmd[2], cmdObj);\n }\n return this;\n },\n\n /**\n * Check if command exists\n * @param\t{string}\tid Command's ID\n * @return {Boolean}\n * */\n has(id) {\n return !!commands[id];\n },\n\n /**\n * Get an object containing all the commands\n * @return {Object}\n */\n getAll() {\n return commands;\n },\n\n /**\n * Execute the command\n * @param {String} id Command ID\n * @param {Object} [options={}] Options\n * @return {*} The return is defined by the command\n * @example\n * commands.run('myCommand', { someOption: 1 });\n */\n run(id, options = {}) {\n return this.runCommand(this.get(id), options);\n },\n\n /**\n * Stop the command\n * @param {String} id Command ID\n * @param {Object} [options={}] Options\n * @return {*} The return is defined by the command\n * @example\n * commands.stop('myCommand', { someOption: 1 });\n */\n stop(id, options = {}) {\n return this.stopCommand(this.get(id), options);\n },\n\n /**\n * Check if the command is active. You activate commands with `run`\n * and disable them with `stop`. If the command was created without `stop`\n * method it can't be registered as active\n * @param {String} id Command id\n * @return {Boolean}\n * @example\n * const cId = 'some-command';\n * commands.run(cId);\n * commands.isActive(cId);\n * // -> true\n * commands.stop(cId);\n * commands.isActive(cId);\n * // -> false\n */\n isActive(id) {\n return this.getActive().hasOwnProperty(id);\n },\n\n /**\n * Get all active commands\n * @return {Object}\n * @example\n * console.log(commands.getActive());\n * // -> { someCommand: itsLastReturn, anotherOne: ... };\n */\n getActive() {\n return active;\n },\n\n /**\n * Load default commands\n * @return {this}\n * @private\n * */\n loadDefaultCommands() {\n for (var id in defaultCommands) {\n this.add(id, defaultCommands[id]);\n }\n\n return this;\n },\n\n /**\n * Run command via its object\n * @param {Object} command\n * @param {Object} options\n * @return {*} Result of the command\n * @private\n */\n runCommand(command, options = {}) {\n let result;\n\n if (command && command.run) {\n const id = command.id;\n const editor = em.get('Editor');\n\n if (!this.isActive(id) || options.force || !c.strict) {\n result = command.callRun(editor, options);\n if (id && command.stop && !command.noStop && !options.abort) {\n active[id] = result;\n }\n }\n }\n\n return result;\n },\n\n /**\n * Stop the command\n * @param {Object} command\n * @param {Object} options\n * @return {*} Result of the command\n * @private\n */\n stopCommand(command, options = {}) {\n let result;\n\n if (command && command.run) {\n const id = command.id;\n const editor = em.get('Editor');\n\n if (this.isActive(id) || options.force || !c.strict) {\n if (id) delete active[id];\n result = command.callStop(editor, options);\n }\n }\n\n return result;\n },\n\n /**\n * Create anonymous Command instance\n * @param {Object} command Command object\n * @return {Command}\n * @private\n * */\n create(command) {\n if (!command.stop) command.noStop = 1;\n const cmd = CommandAbstract.extend(command);\n return new cmd(c);\n },\n\n destroy() {\n [em, c, commands, defaultCommands, active].forEach(i => (i = {}));\n }\n };\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/grapesjs/plugins/gramateria.js b/grapesjs/plugins/gramateria.js similarity index 100% rename from dist/grapesjs/plugins/gramateria.js rename to grapesjs/plugins/gramateria.js diff --git a/dist/grapesjs/plugins/grapesjs-plugin-export.min.js b/grapesjs/plugins/grapesjs-plugin-export.min.js similarity index 100% rename from dist/grapesjs/plugins/grapesjs-plugin-export.min.js rename to grapesjs/plugins/grapesjs-plugin-export.min.js diff --git a/index.html b/index.html index 9c9e643..d6b2097 100755 --- a/index.html +++ b/index.html @@ -4,18 +4,18 @@ Gramateria - - + + - - + +
- + diff --git a/package-lock.json b/package-lock.json index b61b2e8..ebbb62c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1753 +1,7090 @@ { "name": "gramateria", - "version": "1.0.3", + "version": "1.0.4", "lockfileVersion": 1, "requires": true, "dependencies": { - "@electron/get": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.3.tgz", - "integrity": "sha512-NFwSnVZQK7dhOYF1NQCt+HGqgL1aNdj0LUSx75uCqnZJqyiWCVdAMFV4b4/kC8HjUJAnsvdSEmjEt4G2qNQ9+Q==", - "dev": true, + "7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "dev": true + }, + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", "requires": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "filenamify": "^4.1.0", - "fs-extra": "^8.1.0", - "global-agent": "^2.0.2", - "global-tunnel-ng": "^2.7.1", - "got": "^9.6.0", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" + "@babel/highlight": "^7.14.5" + } + }, + "@babel/compat-data": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz", + "integrity": "sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw==" + }, + "@babel/core": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.6.tgz", + "integrity": "sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helpers": "^7.14.6", + "@babel/parser": "^7.14.6", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" }, "dependencies": { "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "requires": { "ms": "2.1.2" } }, - "env-paths": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", - "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, + "@babel/generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.14.5.tgz", + "integrity": "sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA==", "requires": { - "defer-to-connect": "^1.0.1" + "@babel/types": "^7.14.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" } }, - "@types/node": { - "version": "12.19.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.15.tgz", - "integrity": "sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw==", - "dev": true + "@babel/helper-annotate-as-pure": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz", + "integrity": "sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA==", + "requires": { + "@babel/types": "^7.14.5" + } }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz", + "integrity": "sha512-YTA/Twn0vBXDVGJuAX6PwW7x5zQei1luDDo2Pl6q1qZ7hVNl0RZrhHCQG/ArGpR29Vl7ETiB8eJyrvpuRp300w==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.14.5", + "@babel/types": "^7.14.5" + } }, - "ajv": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", - "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", - "dev": true, + "@babel/helper-compilation-targets": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz", + "integrity": "sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw==", "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/compat-data": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "@babel/helper-create-class-features-plugin": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.6.tgz", + "integrity": "sha512-Z6gsfGofTxH/+LQXqYEK45kxmcensbzmk/oi8DmaQytlQCgqNZt9XQF8iqlI/SeXWVjaMNxvYvzaYw+kh42mDg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5" + } }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true + "@babel/helper-create-regexp-features-plugin": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "regexpu-core": "^4.7.1" + } }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true + "@babel/helper-define-polyfill-provider": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } }, - "asar": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/asar/-/asar-0.14.3.tgz", - "integrity": "sha512-+hNnVVDmYbv05We/a9knj/98w171+A94A9DNHj+3kXUr3ENTQoSEcfbJRvBBRHyOh4vukBYWujmHvvaMmQoQbg==", - "dev": true, + "@babel/helper-explode-assignable-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.14.5.tgz", + "integrity": "sha512-Htb24gnGJdIGT4vnRKMdoXiOIlqOLmdiUYpAQ0mYfgVT/GDm8GOYhgi4GL+hMKrkiPRohO4ts34ELFsGAPQLDQ==", "requires": { - "chromium-pickle-js": "^0.2.0", - "commander": "^2.9.0", - "cuint": "^0.2.1", - "glob": "^6.0.4", - "minimatch": "^3.0.3", - "mkdirp": "^0.5.0", - "mksnapshot": "^0.3.0", - "tmp": "0.0.28" + "@babel/types": "^7.14.5" } }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, + "@babel/helper-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz", + "integrity": "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==", "requires": { - "safer-buffer": "~2.1.0" + "@babel/helper-get-function-arity": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/types": "^7.14.5" } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "@babel/helper-get-function-arity": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz", + "integrity": "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==", + "requires": { + "@babel/types": "^7.14.5" + } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "@babel/helper-hoist-variables": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz", + "integrity": "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==", + "requires": { + "@babel/types": "^7.14.5" + } }, - "author-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", - "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=", - "dev": true + "@babel/helper-member-expression-to-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz", + "integrity": "sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA==", + "requires": { + "@babel/types": "^7.14.5" + } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true + "@babel/helper-module-imports": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", + "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", + "requires": { + "@babel/types": "^7.14.5" + } }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true + "@babel/helper-module-transforms": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz", + "integrity": "sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "@babel/helper-optimise-call-expression": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz", + "integrity": "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==", + "requires": { + "@babel/types": "^7.14.5" + } }, - "base64-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", - "dev": true + "@babel/helper-plugin-utils": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, + "@babel/helper-remap-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.14.5.tgz", + "integrity": "sha512-rLQKdQU+HYlxBwQIj8dk4/0ENOUEhA/Z0l4hN8BexpvmSMN9oA9EagjnhnDpNsRdWCfjwa4mn/HyBXO9yhQP6A==", "requires": { - "tweetnacl": "^0.14.3" + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-wrap-function": "^7.14.5", + "@babel/types": "^7.14.5" } }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, + "@babel/helper-replace-supers": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz", + "integrity": "sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow==", "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" + "@babel/helper-member-expression-to-functions": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" } }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true + "@babel/helper-simple-access": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz", + "integrity": "sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw==", + "requires": { + "@babel/types": "^7.14.5" + } }, - "boolean": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz", - "integrity": "sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==", - "dev": true, - "optional": true + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.14.5.tgz", + "integrity": "sha512-dmqZB7mrb94PZSAOYtr+ZN5qt5owZIAgqtoTuqiFbHFtxgEcmQlRJVI+bO++fciBunXtB6MK7HrzrfcAzIz2NQ==", + "requires": { + "@babel/types": "^7.14.5" + } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "@babel/helper-split-export-declaration": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz", + "integrity": "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==", "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/types": "^7.14.5" } }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "dev": true + "@babel/helper-validator-identifier": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", + "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==" }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, + "@babel/helper-wrap-function": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.14.5.tgz", + "integrity": "sha512-YEdjTCq+LNuNS1WfxsDCNpgXkJaIyqco6DAelTUjT4f2KIWC1nBcaCaSdHTBqQVLnTBexBcVcFhLSU1KnYuePQ==", "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" + "@babel/helper-function-name": "^7.14.5", + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/helpers": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.6.tgz", + "integrity": "sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA==", + "requires": { + "@babel/template": "^7.14.5", + "@babel/traverse": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" }, "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "pump": "^3.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" } } }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true + "@babel/parser": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz", + "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA==" }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ZoJS2XCKPBfTmL122iP6NM9dOg+d4lc9fFk3zxc8iDjvt8Pk4+TlsHSKhIPf6X+L5ORCdBzqMZDjL/WHj7WknQ==", "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.14.7.tgz", + "integrity": "sha512-RK8Wj7lXLY3bqei69/cc25gwS5puEc3dknoFPFbqfy3XxYQBQFvu4ioWpafMBAB+L9NyptQK4nMOa5Xz16og8Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, + "@babel/plugin-proposal-class-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", "requires": { - "traverse": ">=0.3.0 <0.4" + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, - "chromium-pickle-js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", - "dev": true + "@babel/plugin-proposal-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.14.5.tgz", + "integrity": "sha512-KBAH5ksEnYHCegqseI5N9skTdxgJdmDoAOc0uXa+4QMYKeZD0w5IARh4FMlTNtaHhbB8v+KzMdTgxMMzsIy6Yg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz", + "integrity": "sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g==", + "requires": { + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.14.5" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-62EyfyA3WA0mZiF2e2IV9mc9Ghwxcg8YTu8BS4Wss4Y3PY725OmS9M0qLORbJwLqFtGh+jiE4wAmocK2CTUK2Q==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz", + "integrity": "sha512-LBYm4ZocNgoCqyxMLoOnwpsmQ18HWTQvql64t3GvMUzLQrNoV1BDG0lNftC8QKYERkZgCCT/7J5xWGObGAyHDw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz", + "integrity": "sha512-J4VxKAMykM06K/64z9rwiL6xnBHgB1+FVspqvlgCdwD1KUbQNfszeKVVOMh59w3sztHYIZDgnhOC4WbdEfHFDA==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-optimise-call-expression": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", + "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.14.5.tgz", + "integrity": "sha512-CfmqxSUZzBl0rSjpoQSFoR9UEj3HzbGuGNL21/iFTmjb5gFggJp3ph0xR1YBhexmLoKRHzgxuFvty2xdSt6gTA==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", + "requires": { + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz", + "integrity": "sha512-en8GfBtgnydoao2PS+87mKyw62k02k7kJ9ltbKe0fXTHrQmG6QZZflYuGI1VVG7sVpx4E1n7KBpNlPb8m78J+A==", + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.14.5.tgz", + "integrity": "sha512-mNMQdvBEE5DcMQaL5LbzXFMANrQjd2W7FPzg34Y4yEz7dBgdaC+9B84dSO+/1Wba98zoDbInctCDo4JGxz1VYA==", + "requires": { + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", + "requires": { + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.7.tgz", + "integrity": "sha512-DTNOTaS7TkW97xsDMrp7nycUVh6sn/eq22VaxWfEdzuEbRsiaOU0pqU7DlyUGHVsbQbSghvjKRpEl+nUCKGQSg==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz", + "integrity": "sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz", + "integrity": "sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==", + "requires": { + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", + "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/preset-env": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.14.7.tgz", + "integrity": "sha512-itOGqCKLsSUl0Y+1nSfhbuuOlTs0MJk2Iv7iSH+XT/mR8U1zRLO7NjWlYXB47yhK4J/7j+HYty/EhFZDYKa/VA==", + "requires": { + "@babel/compat-data": "^7.14.7", + "@babel/helper-compilation-targets": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-async-generator-functions": "^7.14.7", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.14.5", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.14.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.14.5", + "@babel/plugin-transform-classes": "^7.14.5", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.14.5", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.14.5", + "@babel/plugin-transform-modules-systemjs": "^7.14.5", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.14.5", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.14.6", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", + "@babel/preset-modules": "^0.1.4", + "@babel/types": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.2", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.15.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.14.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz", + "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", + "integrity": "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.14.5", + "@babel/types": "^7.14.5" + } + }, + "@babel/traverse": { + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.7.tgz", + "integrity": "sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ==", + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.14.5", + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-hoist-variables": "^7.14.5", + "@babel/helper-split-export-declaration": "^7.14.5", + "@babel/parser": "^7.14.7", + "@babel/types": "^7.14.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "@babel/types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", + "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "to-fast-properties": "^2.0.0" + } + }, + "@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "requires": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", + "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==" + }, + "@electron/get": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz", + "integrity": "sha512-6nr9DbJPUR9Xujw6zD3y+rS95TyItEVM0NVjt1EehY2vUWfIgPiIPVHxCvaTS0xr2B+DRxovYVKbuOWqC35kjg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^2.0.2", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@electron/universal": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.5.tgz", + "integrity": "sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag==", + "dev": true, + "requires": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.0.3", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1" + }, + "dependencies": { + "asar": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.0.3.tgz", + "integrity": "sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + } + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@trysound/sax": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz", + "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==" + }, + "@types/babel__core": { + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.14.2", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", + "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/clean-css": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.5.tgz", + "integrity": "sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==", + "requires": { + "@types/node": "*", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@types/debug": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.6.tgz", + "integrity": "sha512-7fDOJFA/x8B+sO1901BmHlf5dE1cxBU8mRXj8QOEDnn16hhGJv/IHxJtZhvsabZsIMn0eLIyeOKAeqSNJJYTpA==", + "dev": true + }, + "@types/eslint": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", + "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + }, + "@types/fs-extra": { + "version": "9.0.12", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.12.tgz", + "integrity": "sha512-I+bsBr67CurCGnSenZZ7v94gd3tc3+Aj2taxMT4yu4ABLuOgOjeFxX3dokG24ztSRg5tnT00sL8BszO7gSMoIw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", + "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", + "requires": { + "@types/node": "*" + } + }, + "@types/imagemin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-7.0.1.tgz", + "integrity": "sha512-xEn5+M3lDBtI3JxLy6eU3ksoVurygnlG7OYhTqJfGGP4PcvYnfn+IABCmMve7ziM/SneHDm5xgJFKC8hCYPicw==", + "requires": { + "@types/node": "*" + } + }, + "@types/imagemin-gifsicle": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", + "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-mozjpeg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", + "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-svgo": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", + "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", + "requires": { + "@types/imagemin": "*", + "@types/svgo": "^1" + } + }, + "@types/json-schema": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.8.tgz", + "integrity": "sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg==" + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "@types/node": { + "version": "12.20.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.16.tgz", + "integrity": "sha512-6CLxw83vQf6DKqXxMPwl8qpF8I7THFZuIwLt4TnNsumxkp1VsRZWT8txQxncT/Rl2UojTsFzWgDG4FRMwafrlA==" + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + }, + "@types/svgo": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", + "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==" + }, + "@types/verror": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz", + "integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==", + "dev": true, + "optional": true + }, + "@types/yargs": { + "version": "16.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", + "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.4.tgz", + "integrity": "sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==" + }, + "@webpack-cli/info": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.3.0.tgz", + "integrity": "sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w==", + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.1.tgz", + "integrity": "sha512-4vSVUiOPJLmr45S8rMGy7WDvpWxfFxfP/Qx/cxZFCfvoypTYpPPL1X8VIZMe0WTA+Jr7blUxwUSEZNkjoMTgSw==" + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==" + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "dependencies": { + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + } + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" + }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "optional": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-builder-bin": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.13.tgz", + "integrity": "sha512-ighVe9G+bT1ENGdp9ecO1P+94vv/f+FUwaI+XkNzeg9bYF8Oi3BQ+mJuxS00UgyHs8luuOzjzC+qnAtdb43Mpg==", + "dev": true + }, + "app-builder-lib": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.11.7.tgz", + "integrity": "sha512-pS9/cR4/TnNZVAHZECiSvvwTBzbwblj7KBBZkMKDG57nibq0I1XY8zAaYeHFdlYTyrRcz9JUXbAqJKezya7UFQ==", + "dev": true, + "requires": { + "7zip-bin": "~5.1.1", + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.0.5", + "@malept/flatpak-bundler": "^0.4.0", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.2", + "ejs": "^3.1.6", + "electron-publish": "22.11.7", + "fs-extra": "^10.0.0", + "hosted-git-info": "^4.0.2", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.8", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.0.4", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.5", + "temp-file": "^3.4.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "asar": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/asar/-/asar-0.14.6.tgz", + "integrity": "sha512-ZqybKcdO5At6y3ge2RHxVImc6Eltb2t3sxT7lk4T4zjZBSFUuIGCIZY6f41dCjlvJSizN5QPRr8YTgMhpgBjLg==", + "dev": true, + "requires": { + "chromium-pickle-js": "^0.2.0", + "commander": "^2.9.0", + "cuint": "^0.2.1", + "glob": "^6.0.4", + "minimatch": "^3.0.3", + "mkdirp": "^0.5.0", + "mksnapshot": "^0.3.4", + "tmp": "0.0.28" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, + "async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "autoprefixer": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.1.tgz", + "integrity": "sha512-L8AmtKzdiRyYg7BUXJTzigmhbQRCXFKz6SA1Lqo0+AR2FBbQ4aTAPFSDlOutnFkjhiz8my4agGXog1xlMjPJ6A==", + "requires": { + "browserslist": "^4.16.6", + "caniuse-lite": "^1.0.30001243", + "colorette": "^1.2.2", + "fraction.js": "^4.1.1", + "normalize-range": "^0.1.2", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "babel-loader": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", + "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz", + "integrity": "sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.14.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.2.2" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", + "dev": true, + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dev": true, + "requires": { + "bluebird": "^3.5.5" + } + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + }, + "boolean": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.1.2.tgz", + "integrity": "sha512-YN6UmV0FfLlBVvRvNPx3pz5W/mUoYB24J4WSXOKP/OOJpi+Oq6WYqPaNTHzjI0QzwWtnvEd5CGYyQPgp1jFxnw==", + "dev": true, + "optional": true + }, + "boxen": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.1.tgz", + "integrity": "sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.0", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } + } + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", + "dev": true + }, + "builder-util": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.11.7.tgz", + "integrity": "sha512-ihqUe5ey82LM9qqQe0/oIcaSm9w+B9UjcsWJZxJliTBsbU+sErOpDFpHW+sim0veiTF/EIcGUh9HoduWw+l9FA==", + "dev": true, + "requires": { + "7zip-bin": "~5.1.1", + "@types/debug": "^4.1.5", + "@types/fs-extra": "^9.0.11", + "app-builder-bin": "3.5.13", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "builder-util-runtime": { + "version": "8.7.7", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.7.tgz", + "integrity": "sha512-RUfoXzVrmFFI0K/Oft0CtP1LpTIOlBeLJatt5DePTI0KlxE156am4SGUpqtbbdqZNm++LkV9mX4olBDcXyGPow==", + "dev": true, + "requires": { + "debug": "^4.3.2", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001245", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001245.tgz", + "integrity": "sha512-768fM9j1PKXpOCKws6eTo3RHmvTUsG9UrpT4WoREFeZgJBTi4/X9g565azS/rVUGtqb8nt7FjLeF5u4kukERnA==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", + "dev": true, + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "dev": true + }, + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "clean-css": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.3.tgz", + "integrity": "sha512-qGXzUCDpLwAlPx0kYeU4QXjzQIcIYZbJjD4FNm7NnSjoP0hYMVZhHOpUYJ6AwfkMX2cceLRq54MeCgHy/va1cA==", + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true + }, + "cli-table3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", + "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "dev": true, + "optional": true, + "requires": { + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "collect.js": { + "version": "4.28.6", + "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.28.6.tgz", + "integrity": "sha512-NAyuk1DnCotRaDZIS5kJ4sptgkwOeYqElird10yziN5JBuwYOGkOTguhNcPn5g344IfylZecxNYZAVXgv19p5Q==" + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colord": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.2.0.tgz", + "integrity": "sha512-LNYryRuHYAiq+5/22oIblna5nWztTm6LM4xGvvpB42jYQgE1AhmW/dN+rhem8L3tVz0B/Ej2zuDB8zlaS1OSWw==" + }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "optional": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", + "integrity": "sha1-QPM1MInWVGdpXLGIa0Xt1jfYzKg=", + "requires": { + "commander": "^2.9.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "optional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz", + "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==", + "dev": true, + "optional": true + }, + "core-js-compat": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.15.2.tgz", + "integrity": "sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==", + "requires": { + "browserslist": "^4.16.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "dependencies": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + } + } + }, + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.1.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "optional": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, + "css-color-names": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", + "integrity": "sha512-/loXYOch1qU1biStIFsHH8SxTmOseh1IJqFvy8IujXOm1h+QjUdDhkzOrR5HG8K8mlxREj0yfi8ewCHx0eMxzA==" + }, + "css-declaration-sorter": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.0.3.tgz", + "integrity": "sha512-52P95mvW1SMzuRZegvpluT6yEv0FqQusydKQPZsNN5Q7hh8EwQvN8E2nwuJ16BBvNN6LcoIZXu/Bk58DAhrrxw==", + "requires": { + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "requires": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "css-select": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-what": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", + "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.6.tgz", + "integrity": "sha512-NiaLH/7yqGksFGsFNvSRe2IV/qmEBAeDE64dYeD8OBrgp6lE8YoMeQJMtsv5ijo6MPyhuoOvFhI94reahBRDkw==", + "requires": { + "cosmiconfig": "^7.0.0", + "cssnano-preset-default": "^5.1.3", + "is-resolvable": "^1.1.0" + } + }, + "cssnano-preset-default": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz", + "integrity": "sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ==", + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^2.0.1", + "postcss-calc": "^8.0.0", + "postcss-colormin": "^5.2.0", + "postcss-convert-values": "^5.0.1", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.1", + "postcss-merge-longhand": "^5.0.2", + "postcss-merge-rules": "^5.0.2", + "postcss-minify-font-values": "^5.0.1", + "postcss-minify-gradients": "^5.0.1", + "postcss-minify-params": "^5.0.1", + "postcss-minify-selectors": "^5.1.0", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.1", + "postcss-normalize-positions": "^5.0.1", + "postcss-normalize-repeat-style": "^5.0.1", + "postcss-normalize-string": "^5.0.1", + "postcss-normalize-timing-functions": "^5.0.1", + "postcss-normalize-unicode": "^5.0.1", + "postcss-normalize-url": "^5.0.2", + "postcss-normalize-whitespace": "^5.0.1", + "postcss-ordered-values": "^5.0.2", + "postcss-reduce-initial": "^5.0.1", + "postcss-reduce-transforms": "^5.0.1", + "postcss-svgo": "^5.0.2", + "postcss-unique-selectors": "^5.0.1" + } + }, + "cssnano-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-2.0.1.tgz", + "integrity": "sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==" + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "requires": { + "css-tree": "^1.1.2" + } + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "decompress-zip": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.3.tgz", + "integrity": "sha512-/fy1L4s+4jujqj3kNptWjilFw3E6De8U6XUFvqmh4npN3Vsypm3oT2V0bXcmbBWS+5j5tr4okYaFrOmyZkszEg==", + "dev": true, + "requires": { + "binary": "^0.3.0", + "graceful-fs": "^4.1.3", + "mkpath": "^0.1.0", + "nopt": "^3.0.1", + "q": "^1.1.2", + "readable-stream": "^1.1.8", + "touch": "0.0.3" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + } + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "requires": { + "execa": "^5.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + } + } + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dev": true, + "requires": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "dev": true + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + } + } + }, + "dmg-builder": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.11.7.tgz", + "integrity": "sha512-+I+XfP2DODHB6PwFANgpH/WMzzCA5r5XoMvbFCIYjQjJpXlO0XnqQaamzFl2vh/Wz/Qt0d0lJMgRy8gKR3MGdQ==", + "dev": true, + "requires": { + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.6", + "dmg-license": "^1.0.9", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "builder-util-runtime": { + "version": "8.7.6", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.6.tgz", + "integrity": "sha512-rj9AIY7CzLSuTOXpToiaQkruYh6UEQ+kYnd5UET22ch8MGClEtIZKXHG14qEiXEr2x4EOKDMxkcTa+9TYaE+ug==", + "dev": true, + "requires": { + "debug": "^4.3.2", + "sax": "^1.2.4" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "dmg-license": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.9.tgz", + "integrity": "sha512-Rq6qMDaDou2+aPN2SYy0x7LDznoJ/XaG6oDcH5wXUp+WRWQMUYE6eM+F+nex+/LSXOp1uw4HLFoed0YbfU8R/Q==", + "dev": true, + "optional": true, + "requires": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "cli-truncate": "^1.1.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.6", + "plist": "^3.0.1", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" + }, + "domhandler": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz", + "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz", + "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dev": true, + "requires": { + "jake": "^10.6.1" + } + }, + "electron": { + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/electron/-/electron-9.4.4.tgz", + "integrity": "sha512-dcPlTrMWQu5xuSm6sYV42KK/BRIqh3erM8v/WtZqaDmG7pkCeJpvw26Dgbqhdt78XmqqGiN96giEe6A3S9vpAQ==", + "dev": true, + "requires": { + "@electron/get": "^1.0.1", + "@types/node": "^12.0.12", + "extract-zip": "^1.0.3" + } + }, + "electron-builder": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.11.7.tgz", + "integrity": "sha512-yQExSLt7Hbz/P8lLkZDdE/OnJJ7NCX+uiQcV+XIH0TeEZcD87ZnSqBBzGUN5akySU4BXXlrVZKeUsXACWrm5Kw==", + "dev": true, + "requires": { + "@types/yargs": "^16.0.2", + "app-builder-lib": "22.11.7", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "dmg-builder": "22.11.7", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "update-notifier": "^5.1.0", + "yargs": "^17.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "electron-publish": { + "version": "22.11.7", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.11.7.tgz", + "integrity": "sha512-A4EhRRNBVz4SPzUlBrPO6BmuyDeI0pyprggPAV9rQ+SDVSnSB/WKPot9JwWMyArkGj3AUUTMNVT6hwZhMvhfqw==", + "dev": true, + "requires": { + "@types/fs-extra": "^9.0.11", + "builder-util": "22.11.7", + "builder-util-runtime": "8.7.7", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + }, + "dependencies": { + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "electron-to-chromium": { + "version": "1.3.779", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.779.tgz", + "integrity": "sha512-nreave0y/1Qhmo8XtO6C/LpawNyC6U26+q7d814/e+tIqUK073pM+4xW7WUXyqCRa5K4wdxHmNMBAi8ap9nEew==" + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", + "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==" + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", + "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==" + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "optional": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extract-zip": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", + "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "dev": true, + "requires": { + "concat-stream": "1.6.0", + "debug": "2.6.9", + "mkdirp": "0.5.0", + "yauzl": "2.4.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", + "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==" + }, + "fastq": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz", + "integrity": "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + } + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "file-type": { + "version": "12.4.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", + "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==" + }, + "filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fraction.js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.1.tgz", + "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs-extra": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", + "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "global-agent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.2.0.tgz", + "integrity": "sha512-+20KpaW6DDLqhG7JDiJpD1JvNvb8ts+TNl7BPOYcURqCrXqnN1Vf+XVOrkKJAFPqfX+oEhsdzOj1hLWkBTdNJg==", + "dev": true, + "optional": true, + "requires": { + "boolean": "^3.0.1", + "core-js": "^3.6.5", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dev": true, + "requires": { + "ini": "2.0.0" + }, + "dependencies": { + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + } + } + }, + "global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "dev": true, + "optional": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "dev": true, + "optional": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } }, - "clone-response": { + "hash-sum": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=" + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=" + }, + "html-entities": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" + }, + "html-loader": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", + "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", + "requires": { + "html-minifier-terser": "^5.1.1", + "htmlparser2": "^4.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "dependencies": { + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "requires": { + "source-map": "~0.6.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + } + } + }, + "htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + }, + "dependencies": { + "domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "requires": { + "domelementtype": "^2.0.1" + } + } + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==" + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz", + "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==", + "requires": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "iconv-corefoundation": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz", + "integrity": "sha512-1NBe55C75bKGZaY9UHxvXG3G0gEp0ziht7quhuFrW3SPgZDw9HI6qvYXRSV5M/Eupyu8ljuJ6Cba+ec15PZ4Xw==", + "dev": true, + "optional": true, + "requires": { + "cli-truncate": "^1.1.0", + "node-addon-api": "^1.6.3" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==" + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + }, + "imagemin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", + "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", + "requires": { + "file-type": "^12.0.0", + "globby": "^10.0.0", + "graceful-fs": "^4.2.2", + "junk": "^3.1.0", + "make-dir": "^3.0.0", + "p-pipe": "^3.0.0", + "replace-ext": "^1.0.0" + } + }, + "img-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", + "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", + "requires": { + "loader-utils": "^1.1.0" + } + }, + "import-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", + "integrity": "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==", + "requires": { + "import-from": "^3.0.0" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", + "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "internal-ip": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", + "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", + "requires": { + "default-gateway": "^6.0.0", + "ipaddr.js": "^1.9.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + } + } + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==" + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dev": true, + "requires": { + "ci-info": "^3.1.1" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + }, + "dependencies": { + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + } + } + }, + "is-core-module": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", + "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==" + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "requires": { - "mimic-response": "^1.0.0" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "is-ip": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", + "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", + "requires": { + "ip-regex": "^4.0.0" + } + }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", "dev": true }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "delayed-stream": "~1.0.0" + "isobject": "^3.0.1" } }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "compare-version": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", "dev": true }, - "concat-map": { + "isarray": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", "dev": true }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "isbinaryfile": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", "dev": true, "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", "dev": true }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + } + } + }, + "jest-worker": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "requires": { - "safe-buffer": "~5.1.0" + "has-flag": "^4.0.0" } } } }, - "config-chain": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", - "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "optional": true, "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "argparse": "^2.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + } + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==" + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" + }, + "laravel-mix": { + "version": "6.0.25", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.25.tgz", + "integrity": "sha512-SDpLGUnXJ8g0rvtiLljSTJSR6awj86M2Jd3MhbtT32TCgwXdtajVLF7Mv2blsPLixGHtynwZgi+UFlYQbquPLg==", + "requires": { + "@babel/core": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.14.5", + "@babel/preset-env": "^7.14.5", + "@babel/runtime": "^7.14.5", + "@types/babel__core": "^7.1.14", + "@types/clean-css": "^4.2.4", + "@types/imagemin-gifsicle": "^7.0.0", + "@types/imagemin-mozjpeg": "^8.0.0", + "@types/imagemin-optipng": "^5.2.0", + "@types/imagemin-svgo": "^8.0.0", + "autoprefixer": "^10.2.6", + "babel-loader": "^8.2.2", + "chalk": "^4.1.1", + "chokidar": "^3.5.1", + "clean-css": "^4.2.3 || ^5.1.2", + "cli-table3": "^0.6.0", + "collect.js": "^4.28.5", + "commander": "^7.2.0", + "concat": "^1.0.3", + "css-loader": "^5.2.6", + "cssnano": "^5.0.6", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "glob": "^7.1.7", + "html-loader": "^1.3.2", + "imagemin": "^7.0.1", + "img-loader": "^4.0.0", + "lodash": "^4.17.21", + "md5": "^2.3.0", + "mini-css-extract-plugin": "^1.6.0", + "node-libs-browser": "^2.2.1", + "postcss-load-config": "^3.0.1", + "postcss-loader": "^6.1.0", + "semver": "^7.3.5", + "strip-ansi": "^6.0.0", + "style-loader": "^2.0.0", + "terser": "^5.7.0", + "terser-webpack-plugin": "^5.1.3", + "vue-style-loader": "^4.1.3", + "webpack": "^5.38.1", + "webpack-cli": "^4.7.2", + "webpack-dev-server": "4.0.0-beta.3", + "webpack-merge": "^5.8.0", + "webpack-notifier": "^1.13.0", + "webpackbar": "^5.0.0-3", + "yargs": "^17.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } + } + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, + "lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", + "dev": true + }, + "lilconfig": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", + "integrity": "sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==" + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==" + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + } + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" } }, - "core-js": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", - "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==", - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, - "cuint": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", - "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", - "dev": true + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "requires": { - "array-find-index": "^1.0.1" + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", "requires": { - "assert-plus": "^1.0.0" + "p-defer": "^1.0.0" } }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", "dev": true, + "optional": true, "requires": { - "ms": "2.0.0" + "escape-string-regexp": "^4.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", "requires": { - "mimic-response": "^1.0.0" + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" } }, - "decompress-zip": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", - "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", - "dev": true, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "requires": { - "binary": "^0.3.0", - "graceful-fs": "^4.1.3", - "mkpath": "^0.1.0", - "nopt": "^3.0.1", - "q": "^1.1.2", - "readable-stream": "^1.1.8", - "touch": "0.0.3" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", - "dev": true + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "optional": true, + "mem": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", "requires": { - "object-keys": "^1.0.12" + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" }, "dependencies": { - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "optional": true + "mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==" } } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "memfs": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.2.2.tgz", + "integrity": "sha512-RE0CwmIM3CEvpcdK3rZ19BC4E6hv9kADkMN5rPduRak58cNArWLi/9jFLsa4rhsjfVxMP3v0jO7FHXq7SvFY5Q==", + "requires": { + "fs-monkey": "1.0.3" + } }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", - "dev": true, - "optional": true + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, - "electron": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-9.4.0.tgz", - "integrity": "sha512-hOC4q0jkb+UDYZRy8vrZ1IANnq+jznZnbkD62OEo06nU+hIbp2IrwDRBNuSLmQ3cwZMVir0WSIA1qEVK0PkzGA==", - "dev": true, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "requires": { - "@electron/get": "^1.0.1", - "@types/node": "^12.0.12", - "extract-zip": "^1.0.3" + "braces": "^3.0.1", + "picomatch": "^2.2.3" } }, - "electron-osx-sign": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.10.tgz", - "integrity": "sha1-vk87ibKnWh3F8eckkIGrKSnKOiY=", - "dev": true, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { - "bluebird": "^3.5.0", - "compare-version": "^0.1.2", - "debug": "^2.6.8", - "isbinaryfile": "^3.0.2", - "minimist": "^1.2.0", - "plist": "^2.1.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" }, "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, - "electron-packager": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-11.2.0.tgz", - "integrity": "sha1-+swX0rksENob+h18X1jxN3RXGDk=", - "dev": true, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" + }, + "mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "requires": { + "mime-db": "1.48.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", "requires": { - "asar": "^0.14.0", - "debug": "^3.0.0", - "electron-download": "^4.0.0", - "electron-osx-sign": "^0.4.1", - "extract-zip": "^1.0.3", - "fs-extra": "^5.0.0", - "get-package-info": "^1.0.0", - "mz": "^2.6.0", - "nodeify": "^1.0.1", - "parse-author": "^2.0.0", - "pify": "^3.0.0", - "plist": "^2.0.0", - "pruner": "^0.0.7", - "rcedit": "^1.0.0", - "resolve": "^1.1.6", - "sanitize-filename": "^1.6.0", - "semver": "^5.3.0", - "yargs-parser": "^9.0.2" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "electron-download": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.0.tgz", - "integrity": "sha1-v5MsdG8vh//MCdHdRy8v9rkYeEU=", - "dev": true, - "requires": { - "debug": "^2.2.0", - "env-paths": "^1.0.0", - "fs-extra": "^2.0.0", - "minimist": "^1.2.0", - "nugget": "^2.0.0", - "path-exists": "^3.0.0", - "rc": "^1.1.2", - "semver": "^5.3.0", - "sumchecker": "^2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "fs-extra": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", - "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0" - } - } - } - }, - "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "dev": true, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "dependencies": { - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - } + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "sumchecker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", - "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", - "dev": true, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "requires": { - "debug": "^2.2.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } } } }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "optional": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, - "env-paths": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", - "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=", - "dev": true + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "is-arrayish": "^0.2.1" + "brace-expansion": "^1.1.7" } }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true, - "optional": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extract-zip": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", - "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", - "dev": true, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "concat-stream": "1.6.0", - "debug": "2.6.9", - "mkdirp": "0.5.0", - "yauzl": "2.4.1" + "minimist": "^1.2.5" }, "dependencies": { - "mkdirp": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", - "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "mkpath": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", + "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=", "dev": true }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "mksnapshot": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.5.tgz", + "integrity": "sha512-PSBoZaj9h9myC3uRRW62RxmX8mrN3XbOkMEyURUD7v5CeJgtYTar50XU738t7Q0LtG1pBPtp5n5QwDGggRnEvw==", "dev": true, "requires": { - "pend": "~1.2.0" + "decompress-zip": "0.3.x", + "fs-extra": "0.26.7", + "request": "2.x" } }, - "filename-reserved-regex": { + "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=", - "dev": true + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "filenamify": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.2.0.tgz", - "integrity": "sha512-pkgE+4p7N1n7QieOopmn3TqJaefjdWXwEkj2XLZJLKfOgcQKkn11ahvGNgTD8mLggexLiDFQxeTs14xVU22XPA==", - "dev": true, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true + "nanoid": { + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==" }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "fs-extra": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", - "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } + "optional": true }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" }, - "get-package-info": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", - "integrity": "sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=", - "dev": true, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "requires": { - "bluebird": "^3.1.1", - "debug": "^2.2.0", - "lodash.get": "^4.0.0", - "read-pkg-up": "^2.0.0" + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true } } }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "global-agent": { - "version": "2.1.12", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz", - "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==", - "dev": true, - "optional": true, + "node-notifier": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", + "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", "requires": { - "boolean": "^3.0.1", - "core-js": "^3.6.5", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", + "growly": "^1.3.0", + "is-wsl": "^2.2.0", "semver": "^7.3.2", - "serialize-error": "^7.0.1" + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" }, "dependencies": { "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "optional": true, + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "requires": { "lru-cache": "^6.0.0" } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" } } }, - "global-tunnel-ng": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", - "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", - "dev": true, - "optional": true, - "requires": { - "encodeurl": "^1.0.2", - "lodash": "^4.17.10", - "npm-conf": "^1.1.3", - "tunnel": "^0.0.6" - } - }, - "globalthis": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", - "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", - "dev": true, - "optional": true, - "requires": { - "define-properties": "^1.1.3" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true + "node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==" }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" + "abbrev": "1" } }, - "hoek": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.0.4.tgz", - "integrity": "sha512-9D47elppcwrTx2x9B6TrovxnUtlTBYFcHGgo0+LRA1+YfUkCecT//41ovdh6zbl7whB9Hc2whRO1c6lzPoTgww==" + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, - "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", - "dev": true + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", "dev": true, + "optional": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "optional": true + } } }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "requires": { - "repeating": "^2.0.0" + "path-key": "^3.0.0" } }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, + "nth-check": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", + "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "boolbase": "^1.0.0" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "requires": { - "builtin-modules": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "requires": { - "number-is-nan": "^1.0.0" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + } } }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "requires": { - "number-is-nan": "^1.0.0" + "ee-first": "1.1.1" } }, - "is-promise": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" }, - "isbinaryfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", - "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", - "dev": true + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, + "p-event": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", + "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", "requires": { - "graceful-fs": "^4.1.6" + "p-timeout": "^3.1.0" } }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" + "aggregate-error": "^3.0.0" } }, - "keyv": { + "p-pipe": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "requires": { - "json-buffer": "3.0.0" - } + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==" }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", "requires": { - "graceful-fs": "^4.1.9" + "@types/retry": "^0.12.0", + "retry": "^0.13.1" } }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "p-finally": "^1.0.0" } }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" }, "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true, - "optional": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "lowercase-keys": { + "parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "optional": true, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "requires": { - "yallist": "^4.0.0" + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "map-obj": { + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" + }, + "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", "dev": true }, - "matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dev": true, - "optional": true, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "requires": { - "escape-string-regexp": "^4.0.0" + "find-up": "^4.0.0" }, "dependencies": { - "escape-string-regexp": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + } + } + }, + "plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-MSrkwZBdQ6YapHy87/8hDU8MnIcyxBKjeF+McXnr5A9MtffPewTs7G3hlpodT5TacyfIyFTaJEhh3GGcmasTgQ==", + "dev": true, + "optional": true, + "requires": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7", + "xmldom": "^0.5.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", "dev": true, "optional": true } } }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" }, "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, - "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==", - "dev": true - }, - "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", - "dev": true, + "postcss": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.5.tgz", + "integrity": "sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==", "requires": { - "mime-db": "~1.37.0" + "colorette": "^1.2.2", + "nanoid": "^3.1.23", + "source-map-js": "^0.6.2" } }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, + "postcss-calc": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.0.0.tgz", + "integrity": "sha512-5NglwDrcbiy8XXfPM11F3HeC6hoT9W7GUH/Zi5U/p7u3Irv4rHhdDcIZwG0llHXV4ftsBjpfWMXAnXNl4lnt8g==", "requires": { - "brace-expansion": "^1.1.7" + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, + "postcss-colormin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.0.tgz", + "integrity": "sha512-+HC6GfWU3upe5/mqmxuqYZ9B2Wl4lcoUUNkoaX59nEWV4EtADCMiBqui111Bu8R8IvaZTmqmxrqOAqjbHIwXPw==", "requires": { - "minimist": "0.0.8" + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "mkpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", - "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=", - "dev": true - }, - "mksnapshot": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.1.tgz", - "integrity": "sha1-JQHAVldDbXQs6Vik/5LHfkDdN+Y=", - "dev": true, + "postcss-convert-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.1.tgz", + "integrity": "sha512-C3zR1Do2BkKkCgC0g3sF8TS0koF2G+mN8xxayZx3f10cIRmTaAnpgpRQZjNekTZxM2ciSPoh2IWJm0VZx8NoQg==", "requires": { - "decompress-zip": "0.3.0", - "fs-extra": "0.26.7", - "request": "^2.79.0" + "postcss-value-parser": "^4.1.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==" }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==" + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==" + }, + "postcss-discard-overridden": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.1.tgz", + "integrity": "sha512-Y28H7y93L2BpJhrdUR2SR2fnSsT+3TVx1NmVQLbcnZWwIUpJ7mfcTC6Za9M2PG6w8j7UQRfzxqn8jU2VwFxo3Q==" + }, + "postcss-load-config": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.0.tgz", + "integrity": "sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g==", "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" + "import-cwd": "^3.0.0", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" } }, - "nodeify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz", - "integrity": "sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0=", - "dev": true, + "postcss-loader": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", + "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==", "requires": { - "is-promise": "~1.0.0", - "promise": "~1.3.0" + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } } }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, + "postcss-merge-longhand": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.2.tgz", + "integrity": "sha512-BMlg9AXSI5G9TBT0Lo/H3PfUy63P84rVz3BjCFE9e9Y9RXQZD3+h3YO1kgTNsNJy7bBc1YQp8DmSnwLIW5VPcw==", "requires": { - "abbrev": "1" + "css-color-names": "^1.0.1", + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" } }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, + "postcss-merge-rules": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.2.tgz", + "integrity": "sha512-5K+Md7S3GwBewfB4rjDeol6V/RZ8S+v4B66Zk2gChRqLTCC8yjnHQ601omj9TKftS19OPGqZ/XzoqpzNQQLwbg==", "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^2.0.1", + "postcss-selector-parser": "^6.0.5", + "vendors": "^1.0.3" } }, - "normalize-url": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", - "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", - "dev": true - }, - "npm-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", - "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", - "dev": true, - "optional": true, + "postcss-minify-font-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.1.tgz", + "integrity": "sha512-7JS4qIsnqaxk+FXY1E8dHBDmraYFWmuL6cgt0T1SWGRO5bzJf8sUoelwa4P88LEWJZweHevAiDKxHlofuvtIoA==", "requires": { - "config-chain": "^1.1.11", - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "optional": true - } + "postcss-value-parser": "^4.1.0" } }, - "nugget": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", - "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", - "dev": true, + "postcss-minify-gradients": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz", + "integrity": "sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g==", "requires": { - "debug": "^2.1.3", - "minimist": "^1.1.0", - "pretty-bytes": "^1.0.2", - "progress-stream": "^1.1.0", - "request": "^2.45.0", - "single-line-log": "^1.1.2", - "throttleit": "0.0.2" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } + "cssnano-utils": "^2.0.1", + "is-color-stop": "^1.1.0", + "postcss-value-parser": "^4.1.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "postcss-minify-params": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.1.tgz", + "integrity": "sha512-4RUC4k2A/Q9mGco1Z8ODc7h+A0z7L7X2ypO1B6V8057eVK6mZ6xwz6QN64nHuHLbqbclkX1wyzRnIrdZehTEHw==", + "requires": { + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.0", + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0", + "uniqs": "^2.0.0" + } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "postcss-minify-selectors": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.0.tgz", + "integrity": "sha512-NzGBXDa7aPsAcijXZeagnJBKBPMYLaJJzB8CQh6ncvyl2sIndLVWfbcDi0SBjRWk5VqEjXvf8tYwzoKf4Z07og==", + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==" }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", - "dev": true + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "requires": { - "wrappy": "1" + "postcss-selector-parser": "^6.0.4" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "requires": { + "icss-utils": "^5.0.0" + } }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==" }, - "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", - "dev": true, + "postcss-normalize-display-values": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.1.tgz", + "integrity": "sha512-uupdvWk88kLDXi5HEyI9IaAJTE3/Djbcrqq8YgjvAVuzgVuqIk3SuJWUisT2gaJbZm1H9g5k2w1xXilM3x8DjQ==", "requires": { - "p-try": "^1.0.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, + "postcss-normalize-positions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.1.tgz", + "integrity": "sha512-rvzWAJai5xej9yWqlCb1OWLd9JjW2Ex2BCPzUJrbaXmtKtgfL8dBMOOMTX6TnvQMtjk3ei1Lswcs78qKO1Skrg==", "requires": { - "p-limit": "^1.1.0" + "postcss-value-parser": "^4.1.0" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "parse-author": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", - "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=", - "dev": true, + "postcss-normalize-repeat-style": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.1.tgz", + "integrity": "sha512-syZ2itq0HTQjj4QtXZOeefomckiV5TaUO6ReIEabCh3wgDs4Mr01pkif0MeVwKyU/LHEkPJnpwFKRxqWA/7O3w==", "requires": { - "author-regex": "^1.0.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, + "postcss-normalize-string": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.1.tgz", + "integrity": "sha512-Ic8GaQ3jPMVl1OEn2U//2pm93AXUcF3wz+OriskdZ1AOuYV25OdgS7w9Xu2LO5cGyhHCgn8dMXh9bO7vi3i9pA==", "requires": { - "error-ex": "^1.2.0" + "postcss-value-parser": "^4.1.0" } }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, + "postcss-normalize-timing-functions": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.1.tgz", + "integrity": "sha512-cPcBdVN5OsWCNEo5hiXfLUnXfTGtSFiBU9SK8k7ii8UD7OLuznzgNRYkLZow11BkQiiqMcgPyh4ZqXEEUrtQ1Q==", "requires": { - "pinkie-promise": "^2.0.0" + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "postcss-normalize-unicode": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.1.tgz", + "integrity": "sha512-kAtYD6V3pK0beqrU90gpCQB7g6AOfP/2KIPCVBKJM2EheVsBQmx/Iof+9zR9NFKLAx4Pr9mDhogB27pmn354nA==", + "requires": { + "browserslist": "^4.16.0", + "postcss-value-parser": "^4.1.0" + } }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true + "postcss-normalize-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.2.tgz", + "integrity": "sha512-k4jLTPUxREQ5bpajFQZpx8bCF2UrlqOTzP9kEqcEnOfwsRshWs2+oAFIHfDQB8GO2PaUaSE0NlTAYtbluZTlHQ==", + "requires": { + "is-absolute-url": "^3.0.3", + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + } + } }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, + "postcss-normalize-whitespace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.1.tgz", + "integrity": "sha512-iPklmI5SBnRvwceb/XH568yyzK0qRVuAG+a1HFUsFRf11lEJTiQQa03a4RSCQvLKdcpX7XsI1Gen9LuLoqwiqA==", "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "postcss-value-parser": "^4.1.0" } }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true + "postcss-ordered-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.2.tgz", + "integrity": "sha512-8AFYDSOYWebJYLyJi3fyjl6CqMEG/UVworjiyK1r573I56kb3e879sCJLGvR3merj+fAdPpVplXKQZv+ey6CgQ==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "postcss-reduce-initial": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.1.tgz", + "integrity": "sha512-zlCZPKLLTMAqA3ZWH57HlbCjkD55LX9dsRyxlls+wfuRfqCi5mSlZVan0heX5cHr154Dq9AfbH70LyhrSAezJw==", + "requires": { + "browserslist": "^4.16.0", + "caniuse-api": "^3.0.0" + } }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "postcss-reduce-transforms": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.1.tgz", + "integrity": "sha512-a//FjoPeFkRuAguPscTVmRQUODP+f3ke2HqFNgGPwdYnpeC29RZdCBvGRGTsKpMURb/I3p6jdKoBQ2zI+9Q7kA==", + "requires": { + "cssnano-utils": "^2.0.1", + "postcss-value-parser": "^4.1.0" + } }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "postcss-selector-parser": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, + "postcss-svgo": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.2.tgz", + "integrity": "sha512-YzQuFLZu3U3aheizD+B1joQ94vzPfE6BNUcSYuceNxlVnKKsOtdo6hL9/zyC168Q8EwfLSgaDSalsUGa9f2C0A==", "requires": { - "pinkie": "^2.0.0" + "postcss-value-parser": "^4.1.0", + "svgo": "^2.3.0" } }, - "plist": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", - "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=", - "dev": true, + "postcss-unique-selectors": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.1.tgz", + "integrity": "sha512-gwi1NhHV4FMmPn+qwBNuot1sG1t2OmacLQ/AX29lzyggnjd+MnVD5uqQmpXO3J17KGL2WAxQruj1qTd3H0gG/w==", "requires": { - "base64-js": "1.2.0", - "xmlbuilder": "8.2.2", - "xmldom": "0.1.x" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5", + "uniqs": "^2.0.0" } }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + }, "prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", "dev": true }, - "pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.1.0" - } + "pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "progress": { "version": "2.0.3", @@ -1755,25 +7092,6 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "progress-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", - "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", - "dev": true, - "requires": { - "speedometer": "~0.1.2", - "through2": "~0.2.3" - } - }, - "promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-1.3.0.tgz", - "integrity": "sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU=", - "dev": true, - "requires": { - "is-promise": "~1" - } - }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -1781,43 +7099,48 @@ "dev": true, "optional": true }, - "pruner": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/pruner/-/pruner-0.0.7.tgz", - "integrity": "sha1-NF+8s+gHARY6HXrfVrrCKaWh5ME=", - "dev": true, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "requires": { - "fs-extra": "^4.0.0" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" } } }, "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -1831,8 +7154,16 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } }, "q": { "version": "1.5.1", @@ -1846,51 +7177,100 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + } + } + }, "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true } } }, - "rcedit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-1.0.0.tgz", - "integrity": "sha512-W7DNa34x/3OgWyDHsI172AG/Lr/lZ+PkavFkHj0QhhkBRcV9QTmRJE1tDKrWkx8XHPSBsmZkNv9OKue6pncLFQ==", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "read-config-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + }, + "dependencies": { + "dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "dev": true + } } }, "readable-stream": { @@ -1905,29 +7285,128 @@ "string_decoder": "~0.10.x" } }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "requires": { + "resolve": "^1.9.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "dev": true, "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "rc": "^1.2.8" } }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", "dev": true, "requires": { - "is-finite": "^1.0.0" + "rc": "^1.2.8" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" + }, + "regjsparser": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", + "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } } }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" + }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -1937,7 +7416,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -1947,18 +7426,128 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, "resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", "dev": true, "requires": { - "path-parse": "^1.0.5" + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "responselike": { @@ -1970,19 +7559,39 @@ "lowercase-keys": "^1.0.0" } }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=" + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=" + }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" }, "dependencies": { "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1995,6 +7604,15 @@ } } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -2010,103 +7628,393 @@ "sprintf-js": "^1.1.2" } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "sass": { + "version": "1.35.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.35.2.tgz", + "integrity": "sha512-jhO5KAR+AMxCEwIH3v+4zbB2WB0z67V1X0jbapfVwQQdjHZUGUyukpnoM6+iCMfsIUC016w9OPKQ5jrNOS9uXw==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", + "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, - "sanitize-filename": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", - "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true, + "optional": true + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "requires": { + "type-fest": "^0.13.1" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", "dev": true, + "optional": true, "requires": { - "truncate-utf8-bytes": "^1.0.0" + "is-fullwidth-code-point": "^2.0.0" } }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", "dev": true, "optional": true }, - "serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "optional": true, + "sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "requires": { - "type-fest": "^0.13.1" + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" } }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "single-line-log": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", - "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", - "dev": true, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "requires": { - "string-width": "^1.0.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", - "dev": true, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } } }, - "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", - "dev": true - }, - "spdx-expression-parse": { + "spdy-transport": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } } }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", - "dev": true - }, - "speedometer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", - "dev": true - }, "sprintf-js": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", @@ -2115,9 +8023,9 @@ "optional": true }, "sshpk": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", - "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -2131,15 +8039,123 @@ "tweetnacl": "~0.14.0" } }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "std-env": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-2.3.0.tgz", + "integrity": "sha512-4qT5B45+Kjef2Z6pE0BkskzsH0GO7GrND0wGlTM1ioUe3v0dGYx9ZJH0Aro/YyA8fqQ5EyIKDRjZojJYMFTflw==", + "requires": { + "ci-info": "^3.0.0" + } + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + } + } + }, "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, + "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "string_decoder": { @@ -2149,31 +8165,19 @@ "dev": true }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, + "optional": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^3.0.0" } }, - "strip-bom": { + "strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "^4.0.1" - } + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" }, "strip-json-comments": { "version": "2.0.1", @@ -2181,13 +8185,44 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dev": true, + "style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", "requires": { - "escape-string-regexp": "^1.0.2" + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" } }, "sumchecker": { @@ -2200,9 +8235,9 @@ }, "dependencies": { "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -2216,40 +8251,157 @@ } } }, - "thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", - "dev": true, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "any-promise": "^1.0.0" + "has-flag": "^3.0.0" } }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dev": true, + "svgo": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.3.1.tgz", + "integrity": "sha512-riDDIQgXpEnn0BEl9Gvhh1LNLIyiusSpt64IR8upJu7MwxnzetmF/Y57pXQD2NMX2lVyMRzXt5f2M5rO4wG7Dw==", "requires": { - "thenify": ">= 3.1.0 < 4" + "@trysound/sax": "0.1.1", + "chalk": "^4.1.0", + "commander": "^7.1.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.2", + "csso": "^4.2.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + } } }, - "throttleit": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", - "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", - "dev": true + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==" }, - "through2": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", - "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", "dev": true, "requires": { - "readable-stream": "~1.1.9", - "xtend": "~2.1.1" + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "terser": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "terser-webpack-plugin": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz", + "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==", + "requires": { + "jest-worker": "^27.0.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.0" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "requires": { + "setimmediate": "^1.0.4" } }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, "tmp": { "version": "0.0.28", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", @@ -2259,12 +8411,78 @@ "os-tmpdir": "~1.0.1" } }, + "tmp-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz", + "integrity": "sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA==", + "dev": true, + "requires": { + "tmp": "^0.2.0" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + } + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, "to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, "touch": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", @@ -2286,21 +8504,13 @@ } }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "traverse": { @@ -2309,21 +8519,6 @@ "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", "dev": true }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.2" - } - }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -2333,6 +8528,16 @@ "utf8-byte-length": "^1.0.1" } }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, "tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -2362,27 +8567,142 @@ "dev": true, "optional": true }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, "universalify": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", "dev": true }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", "dev": true, + "requires": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "requires": { "punycode": "^2.1.0" } }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -2398,27 +8718,43 @@ "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", "dev": true }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" }, "verror": { "version": "1.10.0", @@ -2431,54 +8767,503 @@ "extsprintf": "^1.2.0" } }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "watchpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", + "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "5.45.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.45.1.tgz", + "integrity": "sha512-68VT2ZgG9EHs6h6UxfV2SEYewA9BA3SOLSnC2NEbJJiEwbAiueDL033R1xX0jzjmXvMh0oSeKnKgbO2bDXIEyQ==", + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.0", + "es-module-lexer": "^0.7.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.2.0", + "webpack-sources": "^2.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "webpack-sources": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz", + "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==", + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + } + } + }, + "webpack-cli": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.7.2.tgz", + "integrity": "sha512-mEoLmnmOIZQNiRl0ebnjzQ74Hk0iKS5SiEEnpq3dRezoyR3yPaeQZCMCe+db4524pj1Pd5ghZXjT41KLzIhSLw==", + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.4", + "@webpack-cli/info": "^1.3.0", + "@webpack-cli/serve": "^1.5.1", + "colorette": "^1.2.1", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + } + } + }, + "webpack-dev-middleware": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-4.3.0.tgz", + "integrity": "sha512-PjwyVY95/bhBh6VUqt6z4THplYcsvQ8YNNBTBM873xLVmw8FLeALn0qurHbs9EmcfhzQis/eoqypSnZeuUz26w==", + "requires": { + "colorette": "^1.2.2", + "mem": "^8.1.1", + "memfs": "^3.2.2", + "mime-types": "^2.1.30", + "range-parser": "^1.2.1", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-dev-server": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.0.0-beta.3.tgz", + "integrity": "sha512-Ud7ieH15No/KiSdRuzk+2k+S4gSCR/N7m4hJhesDbKQEZy3P+NPXTXfsimNOZvbVX2TRuIEFB+VdLZFn8DwGwg==", + "requires": { + "ansi-html": "^0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^3.5.1", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "del": "^6.0.0", + "express": "^4.17.1", + "find-cache-dir": "^3.3.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^1.3.1", + "internal-ip": "^6.2.0", + "ipaddr.js": "^2.0.0", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "open": "^7.4.2", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^3.0.0", + "selfsigned": "^1.10.11", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^6.0.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^4.1.0", + "ws": "^7.4.5" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-notifier": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.13.0.tgz", + "integrity": "sha512-QLk6l/TZKGhyN6Hd1zobaiYno7S9YPX3wH86+YOSufHes77SegGhnGdj+4vrLDFK5A4ZKoQD5GRXXFnM0h0N8A==", + "requires": { + "node-notifier": "^9.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "webpackbar": { + "version": "5.0.0-3", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.0-3.tgz", + "integrity": "sha512-viW6KCYjMb0NPoDrw2jAmLXU2dEOhRrtku28KmOfeE1vxbfwCYuTbTaMhnkrCZLFAFyY9Q49Z/jzYO80Dw5b8g==", + "requires": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.1.0", + "consola": "^2.15.0", + "figures": "^3.2.0", + "pretty-time": "^1.1.0", + "std-env": "^2.2.1", + "text-table": "^0.2.0", + "wrap-ansi": "^7.0.0" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==" + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, "xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=", - "dev": true + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "optional": true }, "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", - "dev": true - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.5.0.tgz", + "integrity": "sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==", "dev": true, - "requires": { - "object-keys": "~0.4.0" - } + "optional": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "optional": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", - "dev": true, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + }, + "yargs": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz", + "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==", "requires": { - "camelcase": "^4.1.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" } } }, @@ -2490,6 +9275,11 @@ "requires": { "fd-slicer": "~1.0.1" } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/package.json b/package.json index 1c36e83..5dabb81 100644 --- a/package.json +++ b/package.json @@ -1,30 +1,60 @@ { "name": "gramateria", - "version": "1.0.3", + "version": "1.0.4", "private": true, "description": "Open source drag and drop website builder", "main": "index.js", "scripts": { + "gen": "mix", "start": "electron index.js", - "build:mac": "electron-packager . Gramateria --overwrite --platform=darwin --arch=x64 --icon=build/icon.icns --prune=true --out=release-builds", - "build:win": "electron-packager . Gramateria --overwrite --platform=win32 --arch=x64 --icon=build/icon.ico --out=release-builds --version 1.8.2", - "build:lin": "electron-packager . Gramateria --overwrite --asar=true --platform=linux --arch=x64 --icon=build/icon.png --prune=true --out=release-builds" + "pack": "electron-builder --dir", + "dist": "electron-builder" }, "keywords": [ "Gramateria", "gramateria", - "grapes", + "webite", + "grapejs", "materialize", - "grapgesjs" + "builder", + "drag and drop" ], - "author": "Ronald", + "author": { + "name": "Ronald", + "email": "info@ronaldaug.work", + "url": "https://www.augusthost.com" + }, + "build": { + "productName": "gramateria", + "appId": "com.augusthost.gramateria", + "directories": { + "output":"export", + "buildResources": "build" + }, + "win": { + "asar": false, + "target": "nsis", + "icon": "build/icon.ico" + }, + "mac": { + "icon": "build/icon.png" + }, + "nsis": { + "installerIcon": "build/icon.ico", + "installerHeaderIcon": "build/icon.ico", + "deleteAppDataOnUninstall": true + } + }, "license": "MIT", "devDependencies": { - "asar": "^0.14.3", + "asar": "^0.14.6", "electron": "^9.4.0", - "electron-packager": "^11.2.0" + "resolve-url-loader": "^4.0.0", + "sass": "^1.35.2", + "sass-loader": "^12.1.0", + "electron-builder": "^22.10.5" }, "dependencies": { - "hoek": "^6.0.4" + "laravel-mix": "^6.0.25" } } diff --git a/webpack.mix.js b/webpack.mix.js new file mode 100644 index 0000000..51d3474 --- /dev/null +++ b/webpack.mix.js @@ -0,0 +1,6 @@ +const mix = require('laravel-mix'); +mix.disableNotifications(); + +mix +.sass('gramateria/develop/gramateria.scss','gramateria/dist/gram.min.css') +.js('gramateria/develop/gramateria.js','gramateria/dist/gram.min.js') \ No newline at end of file From 4fdeade5cccb131e627c978827ac17a79131c80b Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Tue, 20 Jul 2021 15:36:50 +0630 Subject: [PATCH 02/27] change to bootstrap, es6 syntaxs, organize folders, fix style panel, add icons --- dist/fonts/roboto/LICENSE.txt | 202 - dist/materialize/materialize.min.css | 34 - dist/materialize/materialize.min.js | 5827 ---------------- gramateria/develop/blocks.js | 1017 --- gramateria/develop/fonts/Glyphter.eot | Bin 0 -> 2320 bytes gramateria/develop/fonts/Glyphter.svg | 1 + gramateria/develop/fonts/Glyphter.ttf | Bin 0 -> 2152 bytes gramateria/develop/fonts/Glyphter.woff | Bin 0 -> 1076 bytes gramateria/develop/gramateria.js | 819 --- gramateria/develop/js/config/assetManager.js | 78 + gramateria/develop/js/config/blockManager.js | 294 + gramateria/develop/js/config/buttons.js | 74 + gramateria/develop/js/config/commands.js | 24 + gramateria/develop/js/config/styleManager.js | 426 ++ gramateria/develop/js/config/templates.js | 36 + gramateria/develop/js/gramateria.js | 241 + gramateria/develop/sass/_flex-icons.scss | 114 + gramateria/develop/sass/_global.scss | 8 + gramateria/develop/sass/_glyphter.scss | 34 + .../{gramateria.scss => sass/_overwrite.scss} | 50 +- gramateria/develop/sass/gramateria.scss | 4 + gramateria/develop/svg/flex-al-center.svg | 9 + gramateria/develop/svg/flex-al-end.svg | 9 + gramateria/develop/svg/flex-al-start.svg | 9 + gramateria/develop/svg/flex-al-str.svg | 9 + gramateria/develop/svg/flex-dir-col-rev.svg | 9 + gramateria/develop/svg/flex-dir-col.svg | 9 + gramateria/develop/svg/flex-dir-row-rev.svg | 9 + gramateria/develop/svg/flex-dir-row.svg | 9 + gramateria/develop/svg/flex-just-end.svg | 9 + gramateria/develop/svg/flex-just-sp-ar.svg | 9 + gramateria/develop/svg/flex-just-sp-bet.svg | 9 + gramateria/develop/svg/flex-just-sp-cent.svg | 9 + gramateria/develop/svg/flex-just-start.svg | 9 + gramateria/dist/fonts/Glyphter.eot | Bin 0 -> 2320 bytes gramateria/dist/fonts/Glyphter.svg | 1 + gramateria/dist/fonts/Glyphter.ttf | Bin 0 -> 2152 bytes gramateria/dist/fonts/Glyphter.woff | Bin 0 -> 1076 bytes gramateria/dist/gram.min.css | 241 +- gramateria/dist/gram.min.js | 1564 ++--- gramateria/dist/svg/flex-al-center.svg | 9 + gramateria/dist/svg/flex-al-end.svg | 9 + gramateria/dist/svg/flex-al-start.svg | 9 + gramateria/dist/svg/flex-al-str.svg | 9 + gramateria/dist/svg/flex-dir-col-rev.svg | 9 + gramateria/dist/svg/flex-dir-col.svg | 9 + gramateria/dist/svg/flex-dir-row-rev.svg | 9 + gramateria/dist/svg/flex-dir-row.svg | 9 + gramateria/dist/svg/flex-just-end.svg | 9 + gramateria/dist/svg/flex-just-sp-ar.svg | 9 + gramateria/dist/svg/flex-just-sp-bet.svg | 9 + gramateria/dist/svg/flex-just-sp-cent.svg | 9 + gramateria/dist/svg/flex-just-start.svg | 9 + grapesjs/plugins/gramateria.js | 1553 ----- .../plugins/grapesjs-plugin-export.min.js | 6158 ----------------- index.html | 4 +- webpack.mix.js | 19 +- 57 files changed, 2462 insertions(+), 16595 deletions(-) delete mode 100755 dist/fonts/roboto/LICENSE.txt delete mode 100755 dist/materialize/materialize.min.css delete mode 100755 dist/materialize/materialize.min.js delete mode 100644 gramateria/develop/blocks.js create mode 100755 gramateria/develop/fonts/Glyphter.eot create mode 100755 gramateria/develop/fonts/Glyphter.svg create mode 100755 gramateria/develop/fonts/Glyphter.ttf create mode 100755 gramateria/develop/fonts/Glyphter.woff delete mode 100755 gramateria/develop/gramateria.js create mode 100644 gramateria/develop/js/config/assetManager.js create mode 100644 gramateria/develop/js/config/blockManager.js create mode 100644 gramateria/develop/js/config/buttons.js create mode 100644 gramateria/develop/js/config/commands.js create mode 100644 gramateria/develop/js/config/styleManager.js create mode 100644 gramateria/develop/js/config/templates.js create mode 100755 gramateria/develop/js/gramateria.js create mode 100644 gramateria/develop/sass/_flex-icons.scss create mode 100644 gramateria/develop/sass/_global.scss create mode 100644 gramateria/develop/sass/_glyphter.scss rename gramateria/develop/{gramateria.scss => sass/_overwrite.scss} (95%) mode change 100755 => 100644 create mode 100755 gramateria/develop/sass/gramateria.scss create mode 100755 gramateria/develop/svg/flex-al-center.svg create mode 100755 gramateria/develop/svg/flex-al-end.svg create mode 100755 gramateria/develop/svg/flex-al-start.svg create mode 100755 gramateria/develop/svg/flex-al-str.svg create mode 100755 gramateria/develop/svg/flex-dir-col-rev.svg create mode 100755 gramateria/develop/svg/flex-dir-col.svg create mode 100755 gramateria/develop/svg/flex-dir-row-rev.svg create mode 100755 gramateria/develop/svg/flex-dir-row.svg create mode 100755 gramateria/develop/svg/flex-just-end.svg create mode 100755 gramateria/develop/svg/flex-just-sp-ar.svg create mode 100755 gramateria/develop/svg/flex-just-sp-bet.svg create mode 100755 gramateria/develop/svg/flex-just-sp-cent.svg create mode 100755 gramateria/develop/svg/flex-just-start.svg create mode 100755 gramateria/dist/fonts/Glyphter.eot create mode 100755 gramateria/dist/fonts/Glyphter.svg create mode 100755 gramateria/dist/fonts/Glyphter.ttf create mode 100755 gramateria/dist/fonts/Glyphter.woff create mode 100755 gramateria/dist/svg/flex-al-center.svg create mode 100755 gramateria/dist/svg/flex-al-end.svg create mode 100755 gramateria/dist/svg/flex-al-start.svg create mode 100755 gramateria/dist/svg/flex-al-str.svg create mode 100755 gramateria/dist/svg/flex-dir-col-rev.svg create mode 100755 gramateria/dist/svg/flex-dir-col.svg create mode 100755 gramateria/dist/svg/flex-dir-row-rev.svg create mode 100755 gramateria/dist/svg/flex-dir-row.svg create mode 100755 gramateria/dist/svg/flex-just-end.svg create mode 100755 gramateria/dist/svg/flex-just-sp-ar.svg create mode 100755 gramateria/dist/svg/flex-just-sp-bet.svg create mode 100755 gramateria/dist/svg/flex-just-sp-cent.svg create mode 100755 gramateria/dist/svg/flex-just-start.svg delete mode 100755 grapesjs/plugins/gramateria.js delete mode 100755 grapesjs/plugins/grapesjs-plugin-export.min.js diff --git a/dist/fonts/roboto/LICENSE.txt b/dist/fonts/roboto/LICENSE.txt deleted file mode 100755 index 75b5248..0000000 --- a/dist/fonts/roboto/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/dist/materialize/materialize.min.css b/dist/materialize/materialize.min.css deleted file mode 100755 index cd4d8d7..0000000 --- a/dist/materialize/materialize.min.css +++ /dev/null @@ -1,34 +0,0 @@ -/*! - * Materialize v0.100.2 (http://materializecss.com) - * Copyright 2014-2017 Materialize - * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) - */ -.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#a0f !important}.purple-text.text-accent-4{color:#a0f !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.text-lighten-1{color:#7e57c2 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.text-lighten-1{color:#5c6bc0 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.text-lighten-1{color:#42A5F5 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.text-lighten-1{color:#29b6f6 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.text-lighten-1{color:#26c6da !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#26a69a !important}.teal-text.text-lighten-1{color:#26a69a !important}.teal.darken-1{background-color:#00897b !important}.teal-text.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green{background-color:#4CAF50 !important}.green-text{color:#4CAF50 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.text-lighten-1{color:#66BB6A !important}.green.darken-1{background-color:#43A047 !important}.green-text.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.text-lighten-1{color:#9ccc65 !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.text-lighten-1{color:#d4e157 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.text-lighten-1{color:#ffee58 !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ff0 !important}.yellow-text.text-accent-2{color:#ff0 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.text-lighten-1{color:#ffca28 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.text-lighten-1{color:#ffa726 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.text-lighten-1{color:#ff7043 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.text-lighten-1{color:#8d6e63 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.text-lighten-1{color:#78909c !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eee !important}.grey-text.text-lighten-3{color:#eee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.text-lighten-1{color:#bdbdbd !important}.grey.darken-1{background-color:#757575 !important}.grey-text.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.black{background-color:#000 !important}.black-text{color:#000 !important}.white{background-color:#fff !important}.white-text{color:#fff !important}.transparent{background-color:transparent !important}.transparent-text{color:transparent !important}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,*:before,*:after{-webkit-box-sizing:inherit;box-sizing:inherit}ul:not(.browser-default){padding-left:0;list-style-type:none}ul:not(.browser-default)>li{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.clearfix{clear:both}.z-depth-0{-webkit-box-shadow:none !important;box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-floating,.dropdown-content,.collapsible,.side-nav{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 1px 5px 0 rgba(0,0,0,0.12),0 3px 1px -2px rgba(0,0,0,0.2);box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 1px 5px 0 rgba(0,0,0,0.12),0 3px 1px -2px rgba(0,0,0,0.2)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-floating:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,0.14),0 1px 7px 0 rgba(0,0,0,0.12),0 3px 1px -1px rgba(0,0,0,0.2);box-shadow:0 3px 3px 0 rgba(0,0,0,0.14),0 1px 7px 0 rgba(0,0,0,0.12),0 3px 1px -1px rgba(0,0,0,0.2)}.z-depth-2{-webkit-box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.3);box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.3)}.z-depth-3{-webkit-box-shadow:0 6px 10px 0 rgba(0,0,0,0.14),0 1px 18px 0 rgba(0,0,0,0.12),0 3px 5px -1px rgba(0,0,0,0.3);box-shadow:0 6px 10px 0 rgba(0,0,0,0.14),0 1px 18px 0 rgba(0,0,0,0.12),0 3px 5px -1px rgba(0,0,0,0.3)}.z-depth-4,.modal{-webkit-box-shadow:0 8px 10px 1px rgba(0,0,0,0.14),0 3px 14px 2px rgba(0,0,0,0.12),0 5px 5px -3px rgba(0,0,0,0.3);box-shadow:0 8px 10px 1px rgba(0,0,0,0.14),0 3px 14px 2px rgba(0,0,0,0.12),0 5px 5px -3px rgba(0,0,0,0.3)}.z-depth-5{-webkit-box-shadow:0 16px 24px 2px rgba(0,0,0,0.14),0 6px 30px 5px rgba(0,0,0,0.12),0 8px 10px -5px rgba(0,0,0,0.3);box-shadow:0 16px 24px 2px rgba(0,0,0,0.14),0 6px 30px 5px rgba(0,0,0,0.12),0 8px 10px -5px rgba(0,0,0,0.3)}.hoverable{-webkit-transition:-webkit-box-shadow .25s;transition:-webkit-box-shadow .25s;transition:box-shadow .25s;transition:box-shadow .25s, -webkit-box-shadow .25s}.hoverable:hover{-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;border-radius:2px;text-align:center;vertical-align:top;height:30px}.pagination li a{color:#444;display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width: 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:rgba(255,255,255,0.7)}.breadcrumb i,.breadcrumb [class^="mdi-"],.breadcrumb [class*="mdi-"],.breadcrumb i.material-icons{display:inline-block;float:left;font-size:24px}.breadcrumb:before{content:'\E5CC';color:rgba(255,255,255,0.7);vertical-align:top;display:inline-block;font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax-container .parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax-container .parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%}@media only screen and (max-width: 600px){.hide-on-small-only,.hide-on-small-and-down{display:none !important}}@media only screen and (max-width: 992px){.hide-on-med-and-down{display:none !important}}@media only screen and (min-width: 601px){.hide-on-med-and-up{display:none !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important}}@media only screen and (min-width: 993px){.hide-on-large-only{display:none !important}}@media only screen and (min-width: 993px){.show-on-large{display:block !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:block !important}}@media only screen and (max-width: 600px){.show-on-small{display:block !important}}@media only screen and (min-width: 601px){.show-on-medium-and-up{display:block !important}}@media only screen and (max-width: 992px){.show-on-medium-and-down{display:block !important}}@media only screen and (max-width: 600px){.center-on-small-only{text-align:center}}.page-footer{padding-top:20px;color:#fff;background-color:#ee6e73}.page-footer .footer-copyright{overflow:hidden;min-height:50px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:10px 0px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table}table.bordered>thead>tr,table.bordered>tbody>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0}table.highlight>tbody>tr{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:#f2f2f2}table.centered thead tr th,table.centered tbody tr td{text-align:center}thead{border-bottom:1px solid #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width: 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table td:empty:before{content:'\00a0'}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar:not(.circle-clipper)>.circle,.collection .collection-item.avatar :not(.circle-clipper)>.circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;-webkit-transition:.25s;transition:.25s;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}.collapsible .collection{margin:0;border:none}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#26a69a;-webkit-transition:width .3s linear;transition:width .3s linear}.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}span.badge{min-width:3rem;padding:0 6px;margin-left:14px;text-align:center;font-size:1rem;line-height:22px;height:22px;color:#757575;float:right;-webkit-box-sizing:border-box;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}span.badge[data-badge-caption]::after{content:" " attr(data-badge-caption)}nav ul a span.badge{display:inline-block;float:none;margin-left:4px;line-height:22px;height:22px;-webkit-font-smoothing:auto}.collection-item span.badge{margin-top:calc(.75rem - 11px)}.collapsible span.badge{margin-left:auto}.side-nav span.badge{margin-top:calc(24px - 11px)}.material-icons{text-rendering:optimizeLegibility;-webkit-font-feature-settings:'liga';-moz-font-feature-settings:'liga';font-feature-settings:'liga'}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width: 601px){.container{width:85%}}@media only screen and (min-width: 993px){.container{width:70%}}.container .row{margin-left:-.75rem;margin-right:-.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{float:left;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 .75rem;min-height:1px}.row .col[class*="push-"],.row .col[class*="pull-"]{position:relative}.row .col.s1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.s4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.s7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.s10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-s1{margin-left:8.3333333333%}.row .col.pull-s1{right:8.3333333333%}.row .col.push-s1{left:8.3333333333%}.row .col.offset-s2{margin-left:16.6666666667%}.row .col.pull-s2{right:16.6666666667%}.row .col.push-s2{left:16.6666666667%}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.offset-s4{margin-left:33.3333333333%}.row .col.pull-s4{right:33.3333333333%}.row .col.push-s4{left:33.3333333333%}.row .col.offset-s5{margin-left:41.6666666667%}.row .col.pull-s5{right:41.6666666667%}.row .col.push-s5{left:41.6666666667%}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.offset-s7{margin-left:58.3333333333%}.row .col.pull-s7{right:58.3333333333%}.row .col.push-s7{left:58.3333333333%}.row .col.offset-s8{margin-left:66.6666666667%}.row .col.pull-s8{right:66.6666666667%}.row .col.push-s8{left:66.6666666667%}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.offset-s10{margin-left:83.3333333333%}.row .col.pull-s10{right:83.3333333333%}.row .col.push-s10{left:83.3333333333%}.row .col.offset-s11{margin-left:91.6666666667%}.row .col.pull-s11{right:91.6666666667%}.row .col.push-s11{left:91.6666666667%}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width: 601px){.row .col.m1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.m4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.m7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.m10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-m1{margin-left:8.3333333333%}.row .col.pull-m1{right:8.3333333333%}.row .col.push-m1{left:8.3333333333%}.row .col.offset-m2{margin-left:16.6666666667%}.row .col.pull-m2{right:16.6666666667%}.row .col.push-m2{left:16.6666666667%}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.offset-m4{margin-left:33.3333333333%}.row .col.pull-m4{right:33.3333333333%}.row .col.push-m4{left:33.3333333333%}.row .col.offset-m5{margin-left:41.6666666667%}.row .col.pull-m5{right:41.6666666667%}.row .col.push-m5{left:41.6666666667%}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.offset-m7{margin-left:58.3333333333%}.row .col.pull-m7{right:58.3333333333%}.row .col.push-m7{left:58.3333333333%}.row .col.offset-m8{margin-left:66.6666666667%}.row .col.pull-m8{right:66.6666666667%}.row .col.push-m8{left:66.6666666667%}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.offset-m10{margin-left:83.3333333333%}.row .col.pull-m10{right:83.3333333333%}.row .col.push-m10{left:83.3333333333%}.row .col.offset-m11{margin-left:91.6666666667%}.row .col.pull-m11{right:91.6666666667%}.row .col.push-m11{left:91.6666666667%}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width: 993px){.row .col.l1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.l4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.l7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.l10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-l1{margin-left:8.3333333333%}.row .col.pull-l1{right:8.3333333333%}.row .col.push-l1{left:8.3333333333%}.row .col.offset-l2{margin-left:16.6666666667%}.row .col.pull-l2{right:16.6666666667%}.row .col.push-l2{left:16.6666666667%}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.offset-l4{margin-left:33.3333333333%}.row .col.pull-l4{right:33.3333333333%}.row .col.push-l4{left:33.3333333333%}.row .col.offset-l5{margin-left:41.6666666667%}.row .col.pull-l5{right:41.6666666667%}.row .col.push-l5{left:41.6666666667%}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.offset-l7{margin-left:58.3333333333%}.row .col.pull-l7{right:58.3333333333%}.row .col.push-l7{left:58.3333333333%}.row .col.offset-l8{margin-left:66.6666666667%}.row .col.pull-l8{right:66.6666666667%}.row .col.push-l8{left:66.6666666667%}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.offset-l10{margin-left:83.3333333333%}.row .col.pull-l10{right:83.3333333333%}.row .col.push-l10{left:83.3333333333%}.row .col.offset-l11{margin-left:91.6666666667%}.row .col.pull-l11{right:91.6666666667%}.row .col.push-l11{left:91.6666666667%}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}@media only screen and (min-width: 1201px){.row .col.xl1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.xl4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.xl7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.xl10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-xl1{margin-left:8.3333333333%}.row .col.pull-xl1{right:8.3333333333%}.row .col.push-xl1{left:8.3333333333%}.row .col.offset-xl2{margin-left:16.6666666667%}.row .col.pull-xl2{right:16.6666666667%}.row .col.push-xl2{left:16.6666666667%}.row .col.offset-xl3{margin-left:25%}.row .col.pull-xl3{right:25%}.row .col.push-xl3{left:25%}.row .col.offset-xl4{margin-left:33.3333333333%}.row .col.pull-xl4{right:33.3333333333%}.row .col.push-xl4{left:33.3333333333%}.row .col.offset-xl5{margin-left:41.6666666667%}.row .col.pull-xl5{right:41.6666666667%}.row .col.push-xl5{left:41.6666666667%}.row .col.offset-xl6{margin-left:50%}.row .col.pull-xl6{right:50%}.row .col.push-xl6{left:50%}.row .col.offset-xl7{margin-left:58.3333333333%}.row .col.pull-xl7{right:58.3333333333%}.row .col.push-xl7{left:58.3333333333%}.row .col.offset-xl8{margin-left:66.6666666667%}.row .col.pull-xl8{right:66.6666666667%}.row .col.push-xl8{left:66.6666666667%}.row .col.offset-xl9{margin-left:75%}.row .col.pull-xl9{right:75%}.row .col.push-xl9{left:75%}.row .col.offset-xl10{margin-left:83.3333333333%}.row .col.pull-xl10{right:83.3333333333%}.row .col.push-xl10{left:83.3333333333%}.row .col.offset-xl11{margin-left:91.6666666667%}.row .col.pull-xl11{right:91.6666666667%}.row .col.push-xl11{left:91.6666666667%}.row .col.offset-xl12{margin-left:100%}.row .col.pull-xl12{right:100%}.row .col.push-xl12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav.nav-extended{height:auto}nav.nav-extended .nav-wrapper{min-height:56px;height:auto}nav.nav-extended .nav-content{position:relative;line-height:normal}nav a{color:#fff}nav i,nav [class^="mdi-"],nav [class*="mdi-"],nav i.material-icons{display:block;font-size:24px;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}@media only screen and (min-width: 993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px;margin:0 18px}nav .button-collapse i{height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width: 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;transform:none}nav .brand-logo.left{left:0.5rem}nav .brand-logo.right{right:0.5rem;left:auto}}nav .brand-logo.right{right:0.5rem;padding:0}nav .brand-logo i,nav .brand-logo [class^="mdi-"],nav .brand-logo [class*="mdi-"],nav .brand-logo i.material-icons{float:left;margin-right:15px}nav .nav-title{display:inline-block;font-size:32px;padding:28px 0}nav ul{margin:0}nav ul li{-webkit-transition:background-color .3s;transition:background-color .3s;float:left;padding:0}nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{-webkit-transition:background-color .3s;transition:background-color .3s;font-size:1rem;color:#fff;display:block;padding:0 15px;cursor:pointer}nav ul a.btn,nav ul a.btn-large,nav ul a.btn-large,nav ul a.btn-flat,nav ul a.btn-floating{margin-top:-2px;margin-left:15px;margin-right:15px}nav ul a.btn>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-flat>.material-icons,nav ul a.btn-floating>.material-icons{height:inherit;line-height:inherit}nav ul a:hover{background-color:rgba(0,0,0,0.1)}nav ul.left{float:left}nav form{height:100%}nav .input-field{margin:0;height:100%}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;-webkit-box-shadow:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);-webkit-transition:color .3s;transition:color .3s}nav .input-field label.active i{color:#fff}.navbar-fixed{position:relative;height:56px;z-index:997}.navbar-fixed nav{position:fixed}@media only screen and (min-width: 601px){nav.nav-extended .nav-wrapper{min-height:64px}nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:"Roboto";src:local(Roboto Thin),url("../fonts/roboto/Roboto-Thin.woff2") format("woff2"),url("../fonts/roboto/Roboto-Thin.woff") format("woff");font-weight:100}@font-face{font-family:"Roboto";src:local(Roboto Light),url("../fonts/roboto/Roboto-Light.woff2") format("woff2"),url("../fonts/roboto/Roboto-Light.woff") format("woff");font-weight:300}@font-face{font-family:"Roboto";src:local(Roboto Regular),url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"),url("../fonts/roboto/Roboto-Regular.woff") format("woff");font-weight:400}@font-face{font-family:"Roboto";src:local(Roboto Medium),url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"),url("../fonts/roboto/Roboto-Medium.woff") format("woff");font-weight:500}@font-face{font-family:"Roboto";src:local(Roboto Bold),url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"),url("../fonts/roboto/Roboto-Bold.woff") format("woff");font-weight:700}a{text-decoration:none}html{line-height:1.5;font-family:"Roboto", sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@media only screen and (min-width: 0){html{font-size:14px}}@media only screen and (min-width: 992px){html{font-size:14.5px}}@media only screen and (min-width: 1200px){html{font-size:15px}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 .912rem 0}h5{font-size:1.64rem;line-height:110%;margin:.82rem 0 .656rem 0}h6{font-size:1rem;line-height:110%;margin:.5rem 0 .4rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,.page-footer .footer-copyright{font-weight:300}.thin{font-weight:200}.flow-text{font-weight:300}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem}}.scale-transition{-webkit-transition:-webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:-webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important}.scale-transition.scale-out{-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform .2s !important;transition:-webkit-transform .2s !important;transition:transform .2s !important;transition:transform .2s, -webkit-transform .2s !important}.scale-transition.scale-in{-webkit-transform:scale(1);transform:scale(1)}.card-panel{-webkit-transition:-webkit-box-shadow .25s;transition:-webkit-box-shadow .25s;transition:box-shadow .25s;transition:box-shadow .25s, -webkit-box-shadow .25s;padding:24px;margin:.5rem 0 1rem 0;border-radius:2px;background-color:#fff}.card{position:relative;margin:.5rem 0 1rem 0;background-color:#fff;-webkit-transition:-webkit-box-shadow .25s;transition:-webkit-box-shadow .25s;transition:box-shadow .25s;transition:box-shadow .25s, -webkit-box-shadow .25s;border-radius:2px}.card .card-title{font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.small,.card.medium,.card.large{position:relative}.card.small .card-image,.card.medium .card-image,.card.large .card-image{max-height:60%;overflow:hidden}.card.small .card-image+.card-content,.card.medium .card-image+.card-content,.card.large .card-image+.card-content{max-height:40%}.card.small .card-content,.card.medium .card-content,.card.large .card-content{max-height:100%;overflow:hidden}.card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0}.card.small{height:300px}.card.medium{height:400px}.card.large{height:500px}.card.horizontal{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.card.horizontal.small .card-image,.card.horizontal.medium .card-image,.card.horizontal.large .card-image{height:100%;max-height:none;overflow:visible}.card.horizontal.small .card-image img,.card.horizontal.medium .card-image img,.card.horizontal.large .card-image img{height:100%}.card.horizontal .card-image{max-width:50%}.card.horizontal .card-image img{border-radius:2px 0 0 2px;max-width:100%;width:auto}.card.horizontal .card-stacked{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;position:relative}.card.horizontal .card-stacked .card-content{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.card.sticky-action .card-action{z-index:2}.card.sticky-action .card-reveal{z-index:1;padding-bottom:64px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;max-width:100%;padding:24px}.card .card-content{padding:24px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{display:block;line-height:32px;margin-bottom:8px}.card .card-content .card-title i{line-height:32px}.card .card-action{position:relative;background-color:inherit;border-top:1px solid rgba(160,160,160,0.2);padding:16px 24px}.card .card-action:last-child{border-radius:0 0 2px 2px}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating){color:#ffab40;margin-right:24px;-webkit-transition:color .3s ease;transition:color .3s ease;text-transform:uppercase}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover{color:#ffd8a6}.card .card-reveal{padding:24px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;left:0;top:100%;height:100%;z-index:3;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width: 600px){#toast-container{min-width:100%;bottom:0%}}@media only screen and (min-width: 601px) and (max-width: 992px){#toast-container{left:5%;bottom:7%;max-width:90%}}@media only screen and (min-width: 993px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{border-radius:2px;top:35px;width:auto;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;cursor:default}.toast .toast-action{color:#eeff41;font-weight:500;margin-right:-25px;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width: 600px){.toast{width:100%;border-radius:0}}.tabs{position:relative;overflow-x:auto;overflow-y:hidden;height:48px;width:100%;background-color:#fff;margin:0 auto;white-space:nowrap}.tabs.tabs-transparent{background-color:transparent}.tabs.tabs-transparent .tab a,.tabs.tabs-transparent .tab.disabled a,.tabs.tabs-transparent .tab.disabled a:hover{color:rgba(255,255,255,0.7)}.tabs.tabs-transparent .tab a:hover,.tabs.tabs-transparent .tab a.active{color:#fff}.tabs.tabs-transparent .indicator{background-color:#fff}.tabs.tabs-fixed-width{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs.tabs-fixed-width .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab{display:inline-block;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase}.tabs .tab a{color:rgba(238,110,115,0.7);display:block;width:100%;height:100%;padding:0 24px;font-size:14px;text-overflow:ellipsis;overflow:hidden;-webkit-transition:color .28s ease;transition:color .28s ease}.tabs .tab a:hover,.tabs .tab a.active{background-color:transparent;color:#ee6e73}.tabs .tab.disabled a,.tabs .tab.disabled a:hover{color:rgba(238,110,115,0.7);cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}@media only screen and (max-width: 992px){.tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab a{padding:0 12px}}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;opacity:0;position:absolute;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;pointer-events:none;visibility:hidden}.backdrop{position:absolute;opacity:0;height:7px;width:14px;border-radius:0 0 50% 50%;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 0%;transform-origin:50% 0%;visibility:hidden}.btn,.btn-large,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn.disabled,.disabled.btn-large,.btn-floating.disabled,.btn-large.disabled,.btn-flat.disabled,.btn:disabled,.btn-large:disabled,.btn-floating:disabled,.btn-large:disabled,.btn-flat:disabled,.btn[disabled],[disabled].btn-large,.btn-floating[disabled],.btn-large[disabled],.btn-flat[disabled]{pointer-events:none;background-color:#DFDFDF !important;-webkit-box-shadow:none;box-shadow:none;color:#9F9F9F !important;cursor:default}.btn.disabled:hover,.disabled.btn-large:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn-flat.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-floating:disabled:hover,.btn-large:disabled:hover,.btn-flat:disabled:hover,.btn[disabled]:hover,[disabled].btn-large:hover,.btn-floating[disabled]:hover,.btn-large[disabled]:hover,.btn-flat[disabled]:hover{background-color:#DFDFDF !important;color:#9F9F9F !important}.btn,.btn-large,.btn-floating,.btn-large,.btn-flat{font-size:1rem;outline:0}.btn i,.btn-large i,.btn-floating i,.btn-large i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn:focus,.btn-large:focus,.btn-floating:focus{background-color:#1d7d74}.btn,.btn-large{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:40px;height:40px;line-height:40px;padding:0;background-color:#26a69a;border-radius:50%;-webkit-transition:.3s;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating:hover{background-color:#26a69a}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:56px;height:56px}.btn-floating.btn-large.halfway-fab{bottom:-28px}.btn-floating.btn-large i{line-height:56px}.btn-floating.halfway-fab{position:absolute;right:24px;bottom:-20px}.btn-floating.halfway-fab.left{right:auto;left:24px}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:40px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:997}.fixed-action-btn.active ul{visibility:visible}.fixed-action-btn.horizontal{padding:0 0 0 15px}.fixed-action-btn.horizontal ul{text-align:right;right:64px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;left:auto;width:500px}.fixed-action-btn.horizontal ul li{display:inline-block;margin:15px 15px 0 0}.fixed-action-btn.toolbar{padding:0;height:56px}.fixed-action-btn.toolbar.active>a i{opacity:0}.fixed-action-btn.toolbar ul{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;top:0;bottom:0;z-index:1}.fixed-action-btn.toolbar ul li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;display:inline-block;margin:0;height:100%;-webkit-transition:none;transition:none}.fixed-action-btn.toolbar ul li a{display:block;overflow:hidden;position:relative;width:100%;height:100%;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#fff;line-height:56px;z-index:1}.fixed-action-btn.toolbar ul li a i{line-height:inherit}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.fixed-action-btn .fab-backdrop{position:absolute;top:0;left:0;z-index:-1;width:40px;height:40px;background-color:#26a69a;border-radius:50%;-webkit-transform:scale(0);transform:scale(0)}.btn-flat{-webkit-box-shadow:none;box-shadow:none;background-color:transparent;color:#343434;cursor:pointer;-webkit-transition:background-color .2s;transition:background-color .2s}.btn-flat:focus,.btn-flat:hover{-webkit-box-shadow:none;box-shadow:none}.btn-flat:focus{background-color:rgba(0,0,0,0.1)}.btn-flat.disabled{background-color:transparent !important;color:#b3b2b2 !important;cursor:default}.btn-large{height:54px;line-height:54px}.btn-large i{font-size:1.6rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width, height}.dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li:hover,.dropdown-content li.active,.dropdown-content li.selected{background-color:#eee}.dropdown-content li.active.selected{background-color:#e1e1e1}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#26a69a;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:0;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit;float:left;margin:0 24px 0 0;width:24px}.input-field.col .dropdown-content [type="checkbox"]+label{top:1px;left:0;height:18px}/*! - * Waves v0.6.0 - * http://fian.my.id/Waves - * - * Copyright 2014 Alfiana E. Sibuea and other contributors - * Released under the MIT license - * https://github.com/fians/Waves/blob/master/LICENSE - */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;-webkit-transition:.3s ease-out;transition:.3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);-webkit-transition:all 0.7s ease-out;transition:all 0.7s ease-out;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:transform, opacity;transition-property:transform, opacity, -webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-effect input[type="button"],.waves-effect input[type="reset"],.waves-effect input[type="submit"]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-effect img{position:relative;z-index:-1}.waves-notransition{-webkit-transition:none !important;transition:none !important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, white 100%, black 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}@media only screen and (max-width: 992px){.modal{width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%;text-align:right}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-flat{margin:6px 0}.modal-overlay{position:fixed;z-index:999;top:-25%;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem 0}.collapsible-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-tap-highlight-color:transparent;line-height:1.5;padding:1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;display:inline-block;text-align:center;margin-right:1rem}.collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;box-sizing:border-box;padding:2rem}.side-nav .collapsible,.side-nav.fixed .collapsible{border:none;-webkit-box-shadow:none;box-shadow:none}.side-nav .collapsible li,.side-nav.fixed .collapsible li{padding:0}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.side-nav .collapsible-header:hover,.side-nav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,0.05)}.side-nav .collapsible-header i,.side-nav.fixed .collapsible-header i{line-height:inherit}.side-nav .collapsible-body,.side-nav.fixed .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a,.side-nav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;-webkit-box-shadow:none;box-shadow:none}.collapsible.popout>li{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;-webkit-transition:margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);transition:margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{-webkit-box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4;margin-bottom:5px;margin-right:5px}.chip>img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip .close{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.chips{border:none;border-bottom:1px solid #9e9e9e;-webkit-box-shadow:none;box-shadow:none;margin:0 0 20px 0;min-height:45px;outline:none;-webkit-transition:all .3s;transition:all .3s}.chips.focus{border-bottom:1px solid #26a69a;-webkit-box-shadow:0 1px 0 0 #26a69a;box-shadow:0 1px 0 0 #26a69a}.chips:hover{cursor:text}.chips .chip.selected{background-color:#26a69a;color:#fff}.chips .input{background:none;border:0;color:rgba(0,0,0,0.6);display:inline-block;font-size:1rem;height:3rem;line-height:32px;outline:0;margin:0;padding:0 !important;width:120px !important}.chips .input:focus{border:0 !important;-webkit-box-shadow:none !important;box-shadow:none !important}.chips .autocomplete-content{margin-top:0;margin-bottom:0}.prefix ~ .chips{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.chips:empty ~ label{font-size:0.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.materialboxed{display:block;cursor:-webkit-zoom-in;cursor:zoom-in;position:relative;-webkit-transition:opacity .4s;transition:opacity .4s;-webkit-backface-visibility:hidden}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:-webkit-zoom-out;cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#292929;z-index:1000;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;left:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}::placeholder{color:#d1d1d1}input:not([type]),input[type=text]:not(.browser-default),input[type=password]:not(.browser-default),input[type=email]:not(.browser-default),input[type=url]:not(.browser-default),input[type=time]:not(.browser-default),input[type=date]:not(.browser-default),input[type=datetime]:not(.browser-default),input[type=datetime-local]:not(.browser-default),input[type=tel]:not(.browser-default),input[type=number]:not(.browser-default),input[type=search]:not(.browser-default),textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 20px 0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-transition:all 0.3s;transition:all 0.3s}input:not([type]):disabled,input:not([type])[readonly="readonly"],input[type=text]:not(.browser-default):disabled,input[type=text]:not(.browser-default)[readonly="readonly"],input[type=password]:not(.browser-default):disabled,input[type=password]:not(.browser-default)[readonly="readonly"],input[type=email]:not(.browser-default):disabled,input[type=email]:not(.browser-default)[readonly="readonly"],input[type=url]:not(.browser-default):disabled,input[type=url]:not(.browser-default)[readonly="readonly"],input[type=time]:not(.browser-default):disabled,input[type=time]:not(.browser-default)[readonly="readonly"],input[type=date]:not(.browser-default):disabled,input[type=date]:not(.browser-default)[readonly="readonly"],input[type=datetime]:not(.browser-default):disabled,input[type=datetime]:not(.browser-default)[readonly="readonly"],input[type=datetime-local]:not(.browser-default):disabled,input[type=datetime-local]:not(.browser-default)[readonly="readonly"],input[type=tel]:not(.browser-default):disabled,input[type=tel]:not(.browser-default)[readonly="readonly"],input[type=number]:not(.browser-default):disabled,input[type=number]:not(.browser-default)[readonly="readonly"],input[type=search]:not(.browser-default):disabled,input[type=search]:not(.browser-default)[readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.42);border-bottom:1px dotted rgba(0,0,0,0.42)}input:not([type]):disabled+label,input:not([type])[readonly="readonly"]+label,input[type=text]:not(.browser-default):disabled+label,input[type=text]:not(.browser-default)[readonly="readonly"]+label,input[type=password]:not(.browser-default):disabled+label,input[type=password]:not(.browser-default)[readonly="readonly"]+label,input[type=email]:not(.browser-default):disabled+label,input[type=email]:not(.browser-default)[readonly="readonly"]+label,input[type=url]:not(.browser-default):disabled+label,input[type=url]:not(.browser-default)[readonly="readonly"]+label,input[type=time]:not(.browser-default):disabled+label,input[type=time]:not(.browser-default)[readonly="readonly"]+label,input[type=date]:not(.browser-default):disabled+label,input[type=date]:not(.browser-default)[readonly="readonly"]+label,input[type=datetime]:not(.browser-default):disabled+label,input[type=datetime]:not(.browser-default)[readonly="readonly"]+label,input[type=datetime-local]:not(.browser-default):disabled+label,input[type=datetime-local]:not(.browser-default)[readonly="readonly"]+label,input[type=tel]:not(.browser-default):disabled+label,input[type=tel]:not(.browser-default)[readonly="readonly"]+label,input[type=number]:not(.browser-default):disabled+label,input[type=number]:not(.browser-default)[readonly="readonly"]+label,input[type=search]:not(.browser-default):disabled+label,input[type=search]:not(.browser-default)[readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.42)}input:not([type]):focus:not([readonly]),input[type=text]:not(.browser-default):focus:not([readonly]),input[type=password]:not(.browser-default):focus:not([readonly]),input[type=email]:not(.browser-default):focus:not([readonly]),input[type=url]:not(.browser-default):focus:not([readonly]),input[type=time]:not(.browser-default):focus:not([readonly]),input[type=date]:not(.browser-default):focus:not([readonly]),input[type=datetime]:not(.browser-default):focus:not([readonly]),input[type=datetime-local]:not(.browser-default):focus:not([readonly]),input[type=tel]:not(.browser-default):focus:not([readonly]),input[type=number]:not(.browser-default):focus:not([readonly]),input[type=search]:not(.browser-default):focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;-webkit-box-shadow:0 1px 0 0 #26a69a;box-shadow:0 1px 0 0 #26a69a}input:not([type]):focus:not([readonly])+label,input[type=text]:not(.browser-default):focus:not([readonly])+label,input[type=password]:not(.browser-default):focus:not([readonly])+label,input[type=email]:not(.browser-default):focus:not([readonly])+label,input[type=url]:not(.browser-default):focus:not([readonly])+label,input[type=time]:not(.browser-default):focus:not([readonly])+label,input[type=date]:not(.browser-default):focus:not([readonly])+label,input[type=datetime]:not(.browser-default):focus:not([readonly])+label,input[type=datetime-local]:not(.browser-default):focus:not([readonly])+label,input[type=tel]:not(.browser-default):focus:not([readonly])+label,input[type=number]:not(.browser-default):focus:not([readonly])+label,input[type=search]:not(.browser-default):focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input:not([type]).validate+label,input[type=text]:not(.browser-default).validate+label,input[type=password]:not(.browser-default).validate+label,input[type=email]:not(.browser-default).validate+label,input[type=url]:not(.browser-default).validate+label,input[type=time]:not(.browser-default).validate+label,input[type=date]:not(.browser-default).validate+label,input[type=datetime]:not(.browser-default).validate+label,input[type=datetime-local]:not(.browser-default).validate+label,input[type=tel]:not(.browser-default).validate+label,input[type=number]:not(.browser-default).validate+label,input[type=search]:not(.browser-default).validate+label,textarea.materialize-textarea.validate+label{width:100%}input:not([type]).invalid+label:after,input:not([type]).valid+label:after,input[type=text]:not(.browser-default).invalid+label:after,input[type=text]:not(.browser-default).valid+label:after,input[type=password]:not(.browser-default).invalid+label:after,input[type=password]:not(.browser-default).valid+label:after,input[type=email]:not(.browser-default).invalid+label:after,input[type=email]:not(.browser-default).valid+label:after,input[type=url]:not(.browser-default).invalid+label:after,input[type=url]:not(.browser-default).valid+label:after,input[type=time]:not(.browser-default).invalid+label:after,input[type=time]:not(.browser-default).valid+label:after,input[type=date]:not(.browser-default).invalid+label:after,input[type=date]:not(.browser-default).valid+label:after,input[type=datetime]:not(.browser-default).invalid+label:after,input[type=datetime]:not(.browser-default).valid+label:after,input[type=datetime-local]:not(.browser-default).invalid+label:after,input[type=datetime-local]:not(.browser-default).valid+label:after,input[type=tel]:not(.browser-default).invalid+label:after,input[type=tel]:not(.browser-default).valid+label:after,input[type=number]:not(.browser-default).invalid+label:after,input[type=number]:not(.browser-default).valid+label:after,input[type=search]:not(.browser-default).invalid+label:after,input[type=search]:not(.browser-default).valid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea.valid+label:after{display:none}input:not([type]).invalid+label.active:after,input:not([type]).valid+label.active:after,input[type=text]:not(.browser-default).invalid+label.active:after,input[type=text]:not(.browser-default).valid+label.active:after,input[type=password]:not(.browser-default).invalid+label.active:after,input[type=password]:not(.browser-default).valid+label.active:after,input[type=email]:not(.browser-default).invalid+label.active:after,input[type=email]:not(.browser-default).valid+label.active:after,input[type=url]:not(.browser-default).invalid+label.active:after,input[type=url]:not(.browser-default).valid+label.active:after,input[type=time]:not(.browser-default).invalid+label.active:after,input[type=time]:not(.browser-default).valid+label.active:after,input[type=date]:not(.browser-default).invalid+label.active:after,input[type=date]:not(.browser-default).valid+label.active:after,input[type=datetime]:not(.browser-default).invalid+label.active:after,input[type=datetime]:not(.browser-default).valid+label.active:after,input[type=datetime-local]:not(.browser-default).invalid+label.active:after,input[type=datetime-local]:not(.browser-default).valid+label.active:after,input[type=tel]:not(.browser-default).invalid+label.active:after,input[type=tel]:not(.browser-default).valid+label.active:after,input[type=number]:not(.browser-default).invalid+label.active:after,input[type=number]:not(.browser-default).valid+label.active:after,input[type=search]:not(.browser-default).invalid+label.active:after,input[type=search]:not(.browser-default).valid+label.active:after,textarea.materialize-textarea.invalid+label.active:after,textarea.materialize-textarea.valid+label.active:after{display:block}input.valid:not([type]),input.valid:not([type]):focus,input[type=text].valid:not(.browser-default),input[type=text].valid:not(.browser-default):focus,input[type=password].valid:not(.browser-default),input[type=password].valid:not(.browser-default):focus,input[type=email].valid:not(.browser-default),input[type=email].valid:not(.browser-default):focus,input[type=url].valid:not(.browser-default),input[type=url].valid:not(.browser-default):focus,input[type=time].valid:not(.browser-default),input[type=time].valid:not(.browser-default):focus,input[type=date].valid:not(.browser-default),input[type=date].valid:not(.browser-default):focus,input[type=datetime].valid:not(.browser-default),input[type=datetime].valid:not(.browser-default):focus,input[type=datetime-local].valid:not(.browser-default),input[type=datetime-local].valid:not(.browser-default):focus,input[type=tel].valid:not(.browser-default),input[type=tel].valid:not(.browser-default):focus,input[type=number].valid:not(.browser-default),input[type=number].valid:not(.browser-default):focus,input[type=search].valid:not(.browser-default),input[type=search].valid:not(.browser-default):focus,textarea.materialize-textarea.valid,textarea.materialize-textarea.valid:focus,.select-wrapper.valid>input.select-dropdown{border-bottom:1px solid #4CAF50;-webkit-box-shadow:0 1px 0 0 #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input.invalid:not([type]),input.invalid:not([type]):focus,input[type=text].invalid:not(.browser-default),input[type=text].invalid:not(.browser-default):focus,input[type=password].invalid:not(.browser-default),input[type=password].invalid:not(.browser-default):focus,input[type=email].invalid:not(.browser-default),input[type=email].invalid:not(.browser-default):focus,input[type=url].invalid:not(.browser-default),input[type=url].invalid:not(.browser-default):focus,input[type=time].invalid:not(.browser-default),input[type=time].invalid:not(.browser-default):focus,input[type=date].invalid:not(.browser-default),input[type=date].invalid:not(.browser-default):focus,input[type=datetime].invalid:not(.browser-default),input[type=datetime].invalid:not(.browser-default):focus,input[type=datetime-local].invalid:not(.browser-default),input[type=datetime-local].invalid:not(.browser-default):focus,input[type=tel].invalid:not(.browser-default),input[type=tel].invalid:not(.browser-default):focus,input[type=number].invalid:not(.browser-default),input[type=number].invalid:not(.browser-default):focus,input[type=search].invalid:not(.browser-default),input[type=search].invalid:not(.browser-default):focus,textarea.materialize-textarea.invalid,textarea.materialize-textarea.invalid:focus,.select-wrapper.invalid>input.select-dropdown{border-bottom:1px solid #F44336;-webkit-box-shadow:0 1px 0 0 #F44336;box-shadow:0 1px 0 0 #F44336}input:not([type]).valid+label:after,input:not([type]):focus.valid+label:after,input[type=text]:not(.browser-default).valid+label:after,input[type=text]:not(.browser-default):focus.valid+label:after,input[type=password]:not(.browser-default).valid+label:after,input[type=password]:not(.browser-default):focus.valid+label:after,input[type=email]:not(.browser-default).valid+label:after,input[type=email]:not(.browser-default):focus.valid+label:after,input[type=url]:not(.browser-default).valid+label:after,input[type=url]:not(.browser-default):focus.valid+label:after,input[type=time]:not(.browser-default).valid+label:after,input[type=time]:not(.browser-default):focus.valid+label:after,input[type=date]:not(.browser-default).valid+label:after,input[type=date]:not(.browser-default):focus.valid+label:after,input[type=datetime]:not(.browser-default).valid+label:after,input[type=datetime]:not(.browser-default):focus.valid+label:after,input[type=datetime-local]:not(.browser-default).valid+label:after,input[type=datetime-local]:not(.browser-default):focus.valid+label:after,input[type=tel]:not(.browser-default).valid+label:after,input[type=tel]:not(.browser-default):focus.valid+label:after,input[type=number]:not(.browser-default).valid+label:after,input[type=number]:not(.browser-default):focus.valid+label:after,input[type=search]:not(.browser-default).valid+label:after,input[type=search]:not(.browser-default):focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after,.select-wrapper.valid+label:after{content:attr(data-success);color:#4CAF50;opacity:1;-webkit-transform:translateY(9px);transform:translateY(9px)}input:not([type]).invalid+label:after,input:not([type]):focus.invalid+label:after,input[type=text]:not(.browser-default).invalid+label:after,input[type=text]:not(.browser-default):focus.invalid+label:after,input[type=password]:not(.browser-default).invalid+label:after,input[type=password]:not(.browser-default):focus.invalid+label:after,input[type=email]:not(.browser-default).invalid+label:after,input[type=email]:not(.browser-default):focus.invalid+label:after,input[type=url]:not(.browser-default).invalid+label:after,input[type=url]:not(.browser-default):focus.invalid+label:after,input[type=time]:not(.browser-default).invalid+label:after,input[type=time]:not(.browser-default):focus.invalid+label:after,input[type=date]:not(.browser-default).invalid+label:after,input[type=date]:not(.browser-default):focus.invalid+label:after,input[type=datetime]:not(.browser-default).invalid+label:after,input[type=datetime]:not(.browser-default):focus.invalid+label:after,input[type=datetime-local]:not(.browser-default).invalid+label:after,input[type=datetime-local]:not(.browser-default):focus.invalid+label:after,input[type=tel]:not(.browser-default).invalid+label:after,input[type=tel]:not(.browser-default):focus.invalid+label:after,input[type=number]:not(.browser-default).invalid+label:after,input[type=number]:not(.browser-default):focus.invalid+label:after,input[type=search]:not(.browser-default).invalid+label:after,input[type=search]:not(.browser-default):focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after,.select-wrapper.invalid+label:after{content:attr(data-error);color:#F44336;opacity:1;-webkit-transform:translateY(9px);transform:translateY(9px)}input:not([type])+label:after,input[type=text]:not(.browser-default)+label:after,input[type=password]:not(.browser-default)+label:after,input[type=email]:not(.browser-default)+label:after,input[type=url]:not(.browser-default)+label:after,input[type=time]:not(.browser-default)+label:after,input[type=date]:not(.browser-default)+label:after,input[type=datetime]:not(.browser-default)+label:after,input[type=datetime-local]:not(.browser-default)+label:after,input[type=tel]:not(.browser-default)+label:after,input[type=number]:not(.browser-default)+label:after,input[type=search]:not(.browser-default)+label:after,textarea.materialize-textarea+label:after,.select-wrapper+label:after{display:block;content:"";position:absolute;top:100%;left:0;opacity:0;-webkit-transition:.2s opacity ease-out, .2s color ease-out;transition:.2s opacity ease-out, .2s color ease-out}.input-field{position:relative;margin-top:1rem}.input-field.inline{display:inline-block;vertical-align:middle;margin-left:5px}.input-field.inline input,.input-field.inline .select-dropdown{margin-bottom:1rem}.input-field.col label{left:.75rem}.input-field.col .prefix ~ label,.input-field.col .prefix ~ .validate ~ label{width:calc(100% - 3rem - 1.5rem)}.input-field label{color:#9e9e9e;position:absolute;top:0;left:0;height:100%;font-size:1rem;cursor:text;-webkit-transition:-webkit-transform .2s ease-out;transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out, -webkit-transform .2s ease-out;-webkit-transform-origin:0% 100%;transform-origin:0% 100%;text-align:initial;-webkit-transform:translateY(12px);transform:translateY(12px);pointer-events:none}.input-field label:not(.label-icon).active{-webkit-transform:translateY(-14px) scale(0.8);transform:translateY(-14px) scale(0.8);-webkit-transform-origin:0 0;transform-origin:0 0}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;-webkit-transition:color .2s;transition:color .2s}.input-field .prefix.active{color:#26a69a}.input-field .prefix ~ input,.input-field .prefix ~ textarea,.input-field .prefix ~ label,.input-field .prefix ~ .validate ~ label,.input-field .prefix ~ .autocomplete-content{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width: 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width: 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit}.nav-wrapper .input-field input[type=search]{height:inherit;padding-left:4rem;width:calc(100% - 4rem);border:0;-webkit-box-shadow:none;box-shadow:none}.input-field input[type=search]:focus{background-color:#fff;border:0;-webkit-box-shadow:none;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus ~ .mdi-navigation-close,.input-field input[type=search]:focus ~ .material-icons{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search] ~ .mdi-navigation-close,.input-field input[type=search] ~ .material-icons{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;-webkit-transition:.3s color;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:.8rem 0 1.6rem 0;resize:none;min-height:3rem}textarea.materialize-textarea.validate+label{height:100%}textarea.materialize-textarea.validate+label::after{top:calc(100% - 12px)}textarea.materialize-textarea.validate+label:not(.label-icon).active{-webkit-transform:translateY(-25px);transform:translateY(-25px)}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem;position:absolute;top:0}.autocomplete-content{margin-top:-20px;margin-bottom:20px;display:block;opacity:1;position:static}.autocomplete-content li .highlight{color:#444}.autocomplete-content li img{height:40px;width:40px;margin:5px 15px}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;opacity:0;pointer-events:none}[type="radio"]:not(:checked)+label,[type="radio"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type="radio"]+label:before,[type="radio"]+label:after{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;transition:.28s ease}[type="radio"]:not(:checked)+label:before,[type="radio"]:not(:checked)+label:after,[type="radio"]:checked+label:before,[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:before,[type="radio"].with-gap:checked+label:after{border-radius:50%}[type="radio"]:not(:checked)+label:before,[type="radio"]:not(:checked)+label:after{border:2px solid #5a5a5a}[type="radio"]:not(:checked)+label:after{-webkit-transform:scale(0);transform:scale(0)}[type="radio"]:checked+label:before{border:2px solid transparent}[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:before,[type="radio"].with-gap:checked+label:after{border:2px solid #26a69a}[type="radio"]:checked+label:after,[type="radio"].with-gap:checked+label:after{background-color:#26a69a}[type="radio"]:checked+label:after{-webkit-transform:scale(1.02);transform:scale(1.02)}[type="radio"].with-gap:checked+label:after{-webkit-transform:scale(0.5);transform:scale(0.5)}[type="radio"].tabbed:focus+label:before{-webkit-box-shadow:0 0 0 10px rgba(0,0,0,0.1);box-shadow:0 0 0 10px rgba(0,0,0,0.1)}[type="radio"].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,0.42)}[type="radio"].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,0.42)}[type="radio"]:disabled:not(:checked)+label:before,[type="radio"]:disabled:checked+label:before{background-color:transparent;border-color:rgba(0,0,0,0.42)}[type="radio"]:disabled+label{color:rgba(0,0,0,0.42)}[type="radio"]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,0.42)}[type="radio"]:disabled:checked+label:after{background-color:rgba(0,0,0,0.42);border-color:#949494}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;opacity:0;pointer-events:none}[type="checkbox"]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type="checkbox"]+label:before,[type="checkbox"]:not(.filled-in)+label:after{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;-webkit-transition:.2s;transition:.2s}[type="checkbox"]:not(.filled-in)+label:after{border:0;-webkit-transform:scale(0);transform:scale(0)}[type="checkbox"]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,0.42)}[type="checkbox"].tabbed:focus+label:after{-webkit-transform:scale(1);transform:scale(1);border:0;border-radius:50%;-webkit-box-shadow:0 0 0 10px rgba(0,0,0,0.1);box-shadow:0 0 0 10px rgba(0,0,0,0.1);background-color:rgba(0,0,0,0.1)}[type="checkbox"]:checked+label:before{top:-4px;left:-5px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,0.42);border-bottom:2px solid rgba(0,0,0,0.42)}[type="checkbox"]:indeterminate+label:before{top:-11px;left:-12px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,0.42);background-color:transparent}[type="checkbox"].filled-in+label:after{border-radius:2px}[type="checkbox"].filled-in+label:before,[type="checkbox"].filled-in+label:after{content:'';left:0;position:absolute;-webkit-transition:border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;transition:border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0px;z-index:0}[type="checkbox"].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type="checkbox"].filled-in.tabbed:focus+label:after{border-radius:2px;border-color:#5a5a5a;background-color:rgba(0,0,0,0.1)}[type="checkbox"].filled-in.tabbed:checked:focus+label:after{border-radius:2px;background-color:#26a69a;border-color:#26a69a}[type="checkbox"].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#949494}[type="checkbox"].filled-in:disabled:checked+label:before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+label:after{background-color:#949494;border-color:#949494}.switch,.switch *{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:before,.switch label input[type=checkbox]:checked+.lever:after{left:18px}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a}.switch label .lever{content:"";display:inline-block;position:relative;width:36px;height:14px;background-color:rgba(0,0,0,0.38);border-radius:15px;margin-right:10px;-webkit-transition:background 0.3s ease;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:before,.switch label .lever:after{content:"";position:absolute;display:inline-block;width:20px;height:20px;border-radius:50%;left:0;top:-3px;-webkit-transition:left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease;transition:left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease;transition:left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease;transition:left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease}.switch label .lever:before{background-color:rgba(38,166,154,0.15)}.switch label .lever:after{background-color:#F1F1F1;-webkit-box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}input[type=checkbox]:checked:not(:disabled) ~ .lever:active::before,input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before{-webkit-transform:scale(2.4);transform:scale(2.4);background-color:rgba(38,166,154,0.15)}input[type=checkbox]:not(:disabled) ~ .lever:active:before,input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before{-webkit-transform:scale(2.4);transform:scale(2.4);background-color:rgba(0,0,0,0.08)}.switch input[type=checkbox][disabled]+.lever{cursor:default;background-color:rgba(0,0,0,0.12)}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#949494}select{display:none}select.browser-default{display:block}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.input-field>select{display:block;position:absolute;width:0;pointer-events:none;height:0;top:0;left:0;opacity:0}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper.valid+label,.select-wrapper.invalid+label{width:100%;pointer-events:none}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 20px 0;padding:0;display:block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:0;bottom:0;height:10px;margin:auto 0;font-size:10px;line-height:10px}.select-wrapper+label{position:absolute;top:-26px;font-size:.8rem}select:disabled{color:rgba(0,0,0,0.42)}.select-wrapper.disabled span.caret,.select-wrapper.disabled+label{color:rgba(0,0,0,0.42)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.42);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,0.3);background-color:transparent}.select-dropdown.dropdown-content li.active{background-color:transparent}.select-dropdown.dropdown-content li:hover{background-color:rgba(0,0,0,0.06)}.select-dropdown.dropdown-content li.selected{background-color:rgba(0,0,0,0.03)}.prefix ~ .select-wrapper{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.prefix ~ label{margin-left:3rem}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,0.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,0.4)}.select-dropdown li.optgroup ~ li.optgroup-option{padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.file-field input[type=file]::-webkit-file-upload-button{display:none}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0;padding:0}input[type=range]:focus{outline:none}input[type=range]+.thumb{position:absolute;top:10px;left:0;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;margin-left:7px;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#26a69a;font-size:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#26a69a;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;margin:-5px 0 0 0;-webkit-transition:.3s;transition:.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ee6e73}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ee6e73}.side-nav{position:fixed;width:300px;left:0;top:0;margin:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.right-aligned{right:0;-webkit-transform:translateX(105%);transform:translateX(105%);left:auto;-webkit-transform:translateX(100%);transform:translateX(100%)}.side-nav .collapsible{margin:0}.side-nav li{float:none;line-height:48px}.side-nav li.active{background-color:rgba(0,0,0,0.05)}.side-nav li>a{color:rgba(0,0,0,0.87);display:block;font-size:14px;font-weight:500;height:48px;line-height:48px;padding:0 32px}.side-nav li>a:hover{background-color:rgba(0,0,0,0.05)}.side-nav li>a.btn,.side-nav li>a.btn-large,.side-nav li>a.btn-large,.side-nav li>a.btn-flat,.side-nav li>a.btn-floating{margin:10px 15px}.side-nav li>a.btn,.side-nav li>a.btn-large,.side-nav li>a.btn-large,.side-nav li>a.btn-floating{color:#fff}.side-nav li>a.btn-flat{color:#343434}.side-nav li>a.btn:hover,.side-nav li>a.btn-large:hover,.side-nav li>a.btn-large:hover{background-color:#2bbbad}.side-nav li>a.btn-floating:hover{background-color:#26a69a}.side-nav li>a>i,.side-nav li>a>[class^="mdi-"],.side-nav li>a li>a>[class*="mdi-"],.side-nav li>a>i.material-icons{float:left;height:48px;line-height:48px;margin:0 32px 0 0;width:24px;color:rgba(0,0,0,0.54)}.side-nav .divider{margin:8px 0 0 0}.side-nav .subheader{cursor:initial;pointer-events:none;color:rgba(0,0,0,0.54);font-size:14px;font-weight:500;line-height:48px}.side-nav .subheader:hover{background-color:transparent}.side-nav .user-view,.side-nav .userView{position:relative;padding:32px 32px 0;margin-bottom:8px}.side-nav .user-view>a,.side-nav .userView>a{height:auto;padding:0}.side-nav .user-view>a:hover,.side-nav .userView>a:hover{background-color:transparent}.side-nav .user-view .background,.side-nav .userView .background{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.side-nav .user-view .circle,.side-nav .user-view .name,.side-nav .user-view .email,.side-nav .userView .circle,.side-nav .userView .name,.side-nav .userView .email{display:block}.side-nav .user-view .circle,.side-nav .userView .circle{height:64px;width:64px}.side-nav .user-view .name,.side-nav .user-view .email,.side-nav .userView .name,.side-nav .userView .email{font-size:14px;line-height:24px}.side-nav .user-view .name,.side-nav .userView .name{margin-top:16px;font-weight:500}.side-nav .user-view .email,.side-nav .userView .email{padding-bottom:16px;font-weight:400}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed{left:0;-webkit-transform:translateX(0);transform:translateX(0);position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width: 992px){.side-nav.fixed{-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.fixed.right-aligned{-webkit-transform:translateX(105%);transform:translateX(105%)}.side-nav a{padding:0 16px}.side-nav .user-view,.side-nav .userView{padding:16px 16px 0}}.side-nav .collapsible-body>ul:not(.collapsible)>li.active,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active{background-color:#ee6e73}.side-nav .collapsible-body>ul:not(.collapsible)>li.active a,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active a{color:#fff}.side-nav .collapsible-body{padding:0}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:50px;height:50px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#26a69a}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent !important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;-webkit-transition:background-color .3s;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4CAF50}.carousel{overflow:hidden;position:relative;width:100%;height:400px;-webkit-perspective:500px;perspective:500px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0% 50%;transform-origin:0% 50%}.carousel.carousel-slider{top:0;left:0}.carousel.carousel-slider .carousel-fixed-item{position:absolute;left:0;right:0;bottom:20px;z-index:1}.carousel.carousel-slider .carousel-fixed-item.with-indicators{bottom:68px}.carousel.carousel-slider .carousel-item{width:100%;height:100%;min-height:400px;position:absolute;top:0;left:0}.carousel.carousel-slider .carousel-item h2{font-size:24px;font-weight:500;line-height:32px}.carousel.carousel-slider .carousel-item p{font-size:15px}.carousel .carousel-item{display:none;width:200px;height:200px;position:absolute;top:0;left:0}.carousel .carousel-item>img{width:100%}.carousel .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.carousel .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:8px;width:8px;margin:24px 4px;background-color:rgba(255,255,255,0.5);-webkit-transition:background-color .3s;transition:background-color .3s;border-radius:50%}.carousel .indicators .indicator-item.active{background-color:#fff}.carousel.scrolling .carousel-item .materialboxed,.carousel .carousel-item:not(.active) .materialboxed{pointer-events:none}.tap-target-wrapper{width:800px;height:800px;position:fixed;z-index:1000;visibility:hidden;-webkit-transition:visibility 0s .3s;transition:visibility 0s .3s}.tap-target-wrapper.open{visibility:visible;-webkit-transition:visibility 0s;transition:visibility 0s}.tap-target-wrapper.open .tap-target{-webkit-transform:scale(1);transform:scale(1);opacity:.95;-webkit-transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1)}.tap-target-wrapper.open .tap-target-wave::before{-webkit-transform:scale(1);transform:scale(1)}.tap-target-wrapper.open .tap-target-wave::after{visibility:visible;-webkit-animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;-webkit-transition:opacity .3s, - visibility 0s 1s, - -webkit-transform .3s;transition:opacity .3s, - visibility 0s 1s, - -webkit-transform .3s;transition:opacity .3s, - transform .3s, - visibility 0s 1s;transition:opacity .3s, - transform .3s, - visibility 0s 1s, - -webkit-transform .3s}.tap-target{position:absolute;font-size:1rem;border-radius:50%;background-color:#ee6e73;-webkit-box-shadow:0 20px 20px 0 rgba(0,0,0,0.14),0 10px 50px 0 rgba(0,0,0,0.12),0 30px 10px -20px rgba(0,0,0,0.2);box-shadow:0 20px 20px 0 rgba(0,0,0,0.14),0 10px 50px 0 rgba(0,0,0,0.12),0 30px 10px -20px rgba(0,0,0,0.2);width:100%;height:100%;opacity:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1)}.tap-target-content{position:relative;display:table-cell}.tap-target-wave{position:absolute;border-radius:50%;z-index:10001}.tap-target-wave::before,.tap-target-wave::after{content:'';display:block;position:absolute;width:100%;height:100%;border-radius:50%;background-color:#ffffff}.tap-target-wave::before{-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s}.tap-target-wave::after{visibility:hidden;-webkit-transition:opacity .3s, - visibility 0s, - -webkit-transform .3s;transition:opacity .3s, - visibility 0s, - -webkit-transform .3s;transition:opacity .3s, - transform .3s, - visibility 0s;transition:opacity .3s, - transform .3s, - visibility 0s, - -webkit-transform .3s;z-index:-1}.tap-target-origin{top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);z-index:10002;position:absolute !important}.tap-target-origin:not(.btn):not(.btn-large),.tap-target-origin:not(.btn):not(.btn-large):hover{background:none}@media only screen and (max-width: 600px){.tap-target,.tap-target-wrapper{width:600px;height:600px}}.pulse{overflow:initial;position:relative}.pulse::before{content:'';display:block;position:absolute;width:100%;height:100%;top:0;left:0;background-color:inherit;border-radius:inherit;-webkit-transition:opacity .3s, -webkit-transform .3s;transition:opacity .3s, -webkit-transform .3s;transition:opacity .3s, transform .3s;transition:opacity .3s, transform .3s, -webkit-transform .3s;-webkit-animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;z-index:-1}@-webkit-keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}100%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}@keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}100%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*! - * Default mobile-first, responsive styling for pickadate.js - * Demo: http://amsul.github.io/pickadate.js - */.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;-webkit-transition:background 0.15s ease-out, top 0s 0.15s;transition:background 0.15s ease-out, top 0s 0.15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-webkit-transition:all 0.15s ease-out;transition:all 0.15s ease-out}@media (min-height: 28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height: 40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height: 28.875em){.picker__wrap{display:block}}.picker__box{background:#ffffff;display:table-cell;vertical-align:middle}@media (min-height: 28.875em){.picker__box{display:block;border:1px solid #777777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;-webkit-box-shadow:0 12px 36px 16px rgba(0,0,0,0.24);box-shadow:0 12px 36px 16px rgba(0,0,0,0.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,0.32);-webkit-transition:background 0.15s ease-out;transition:background 0.15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height: 35.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__input.picker__input--active{border-color:#E3F2FD}.picker__frame{margin:0 auto;max-width:325px}@media (min-height: 38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}@media only screen and (min-width: 601px){.picker__box{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.picker__frame{width:80%;max-width:600px}}.picker__box{padding:0;border-radius:2px;overflow:hidden}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#FFFFFF;width:40%}.picker__select--year.browser-default{display:inline;background-color:#FFFFFF;width:26%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,0.05)}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;-webkit-box-sizing:content-box;box-sizing:content-box;top:-0.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em;margin-bottom:.5em}.picker__table th,.picker__table td{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999999;font-weight:500}@media (min-height: 33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaaaaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#dddddd;font-weight:500}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{cursor:pointer}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.75);transform:scale(0.75);background:#0089ec;color:#ffffff}.picker__day--disabled,.picker__day--disabled:hover,.picker--focused .picker__day--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbbbbb}.picker__footer{text-align:right}.picker__button--today,.picker__button--clear,.picker__button--close{border:1px solid #ffffff;background:#ffffff;font-size:.8em;padding:.66em 0;font-weight:bold;width:33%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover,.picker__button--close:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus,.picker__button--close:focus{background:#b1dcfb;border-color:rgba(0,0,0,0.05);outline:none}.picker__button--today:before,.picker__button--clear:before,.picker__button--close:before{position:relative;display:inline-block;height:0}.picker__button--today:before,.picker__button--clear:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-0.05em;width:0;border-top:0.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-0.25em;width:.66em;border-top:3px solid #ee2200}.picker__button--close:before{content:"\D7";top:-0.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaaaaa}.picker__date-display{text-align:left;background-color:#26a69a;color:#fff;padding:18px;font-weight:300}@media only screen and (min-width: 601px){.picker__date-display{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.picker__weekday-display{display:block}.picker__container__wrapper{-webkit-box-flex:2;-webkit-flex:2;-ms-flex:2;flex:2}}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000000;background:#a1ded8}.picker__weekday-display{font-weight:500;font-size:2.8rem;margin-right:5px;margin-top:4px}.picker__month-display{font-size:2.8rem;font-weight:500}.picker__day-display{font-size:2.8rem;font-weight:500;margin-right:5px}.picker__year-display{font-size:1.5rem;font-weight:500;color:rgba(255,255,255,0.7)}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:rgba(0,0,0,0.87);letter-spacing:-.3px;padding:0.75rem 0;font-weight:400;border:1px solid transparent}@media only screen and (min-width: 601px){.picker__day--infocus{padding:1.1rem 0}}.picker__day.picker__day--today{color:#26a69a}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(0.9);transform:scale(0.9);background-color:#26a69a;color:#ffffff}.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus,.picker--focused .picker__day--selected.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today,.picker__clear{font-size:1.1rem;padding:0 1rem;color:#26a69a}.picker__clear{color:#f44336;float:left}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:0.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:0.75em solid #676767}button.picker__today:focus,button.picker__clear:focus,button.picker__close:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:0.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:-1px;position:relative;background:#fff;padding:.75em 1.25em}@media (min-height: 46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--highlighted{border-color:#0089ec;z-index:10}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{cursor:pointer;color:#000;background:#b1dcfb}.picker__list-item--selected,.picker__list-item--selected:hover,.picker--focused .picker__list-item--selected{background:#0089ec;color:#fff;z-index:10}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default;border-color:#ddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:rgba(0,0,0,0.87)}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000;background:#b1dcfb;background:#ee2200;border-color:#ee2200;cursor:pointer;color:#fff;outline:none}.picker--time .picker__button--clear:before{top:-0.25em;color:rgba(0,0,0,0.87);font-size:1.25em;font-weight:bold}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#fff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height: 40.125em){.picker--time .picker__box{margin-bottom:5em}}.clockpicker-display{font-size:4rem;font-weight:bold;text-align:center;color:rgba(255,255,255,0.6);font-weight:400;clear:both;position:relative}.clockpicker-span-am-pm{font-size:1.3rem;position:absolute;right:1rem;bottom:0.3rem;line-height:2rem;font-weight:500}@media only screen and (min-width: 601px){.clockpicker-display{top:32%}.clockpicker-span-am-pm{position:relative;right:auto;bottom:auto;text-align:center;margin-top:1.2rem}}.text-primary{color:#fff}.clockpicker-span-hours{margin-right:3px}.clockpicker-span-minutes{margin-left:3px}.clockpicker-span-hours,.clockpicker-span-minutes,.clockpicker-span-am-pm div{cursor:pointer}.clockpicker-moving{cursor:move}.clockpicker-plate{background-color:#eee;border-radius:50%;width:270px;height:270px;overflow:visible;position:relative;margin:auto;margin-top:25px;margin-bottom:5px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.clockpicker-canvas,.clockpicker-dial{width:270px;height:270px;position:absolute;left:-1px;top:-1px}.clockpicker-minutes{visibility:hidden}.clockpicker-tick{border-radius:50%;color:rgba(0,0,0,0.87);line-height:40px;text-align:center;width:40px;height:40px;position:absolute;cursor:pointer}.clockpicker-tick.active,.clockpicker-tick:hover{background-color:rgba(38,166,154,0.25)}.clockpicker-dial{-webkit-transition:-webkit-transform 350ms, opacity 350ms;-webkit-transition:opacity 350ms, -webkit-transform 350ms;transition:opacity 350ms, -webkit-transform 350ms;transition:transform 350ms, opacity 350ms;transition:transform 350ms, opacity 350ms, -webkit-transform 350ms}.clockpicker-dial-out{opacity:0}.clockpicker-hours.clockpicker-dial-out{-webkit-transform:scale(1.2, 1.2);transform:scale(1.2, 1.2)}.clockpicker-minutes.clockpicker-dial-out{-webkit-transform:scale(0.8, 0.8);transform:scale(0.8, 0.8)}.clockpicker-canvas{-webkit-transition:opacity 175ms;transition:opacity 175ms}.clockpicker-canvas-out{opacity:0.25}.clockpicker-canvas-bearing{stroke:none;fill:#26a69a}.clockpicker-canvas-bg{stroke:none;fill:#26a69a}.clockpicker-canvas-bg-trans{fill:#26a69a}.clockpicker-canvas line{stroke:#26a69a;stroke-width:4;stroke-linecap:round} diff --git a/dist/materialize/materialize.min.js b/dist/materialize/materialize.min.js deleted file mode 100755 index 54ac263..0000000 --- a/dist/materialize/materialize.min.js +++ /dev/null @@ -1,5827 +0,0 @@ -/*! - * Materialize v0.100.2 (http://materializecss.com) - * Copyright 2014-2017 Materialize - * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) - */ -function _classCallCheck(t, e) { - if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") -} -var _createClass = function () { - function t(t, e) { - for (var i = 0; i < e.length; i++) { - var n = e[i]; - n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, n.key, n) - } - } - return function (e, i, n) { - return i && t(e.prototype, i), n && t(e, n), e - } -}(); -"undefined" == typeof jQuery && ("function" == typeof require ? jQuery = $ = require("jquery") : jQuery = $), - function (t) { - "function" == typeof define && define.amd ? define(["jquery"], function (e) { - return t(e) - }) : "object" == typeof module && "object" == typeof module.exports ? exports = t(require("jquery")) : t(jQuery) - }(function (t) { - function e(t) { - var e = 7.5625, - i = 2.75; - return t < 1 / i ? e * t * t : t < 2 / i ? e * (t -= 1.5 / i) * t + .75 : t < 2.5 / i ? e * (t -= 2.25 / i) * t + .9375 : e * (t -= 2.625 / i) * t + .984375 - } - t.easing.jswing = t.easing.swing; - var i = Math.pow, - n = Math.sqrt, - o = Math.sin, - a = Math.cos, - r = Math.PI, - s = 1.70158, - l = 1.525 * s, - c = 2 * r / 3, - u = 2 * r / 4.5; - t.extend(t.easing, { - def: "easeOutQuad", - swing: function (e) { - return t.easing[t.easing.def](e) - }, - easeInQuad: function (t) { - return t * t - }, - easeOutQuad: function (t) { - return 1 - (1 - t) * (1 - t) - }, - easeInOutQuad: function (t) { - return t < .5 ? 2 * t * t : 1 - i(-2 * t + 2, 2) / 2 - }, - easeInCubic: function (t) { - return t * t * t - }, - easeOutCubic: function (t) { - return 1 - i(1 - t, 3) - }, - easeInOutCubic: function (t) { - return t < .5 ? 4 * t * t * t : 1 - i(-2 * t + 2, 3) / 2 - }, - easeInQuart: function (t) { - return t * t * t * t - }, - easeOutQuart: function (t) { - return 1 - i(1 - t, 4) - }, - easeInOutQuart: function (t) { - return t < .5 ? 8 * t * t * t * t : 1 - i(-2 * t + 2, 4) / 2 - }, - easeInQuint: function (t) { - return t * t * t * t * t - }, - easeOutQuint: function (t) { - return 1 - i(1 - t, 5) - }, - easeInOutQuint: function (t) { - return t < .5 ? 16 * t * t * t * t * t : 1 - i(-2 * t + 2, 5) / 2 - }, - easeInSine: function (t) { - return 1 - a(t * r / 2) - }, - easeOutSine: function (t) { - return o(t * r / 2) - }, - easeInOutSine: function (t) { - return -(a(r * t) - 1) / 2 - }, - easeInExpo: function (t) { - return 0 === t ? 0 : i(2, 10 * t - 10) - }, - easeOutExpo: function (t) { - return 1 === t ? 1 : 1 - i(2, -10 * t) - }, - easeInOutExpo: function (t) { - return 0 === t ? 0 : 1 === t ? 1 : t < .5 ? i(2, 20 * t - 10) / 2 : (2 - i(2, -20 * t + 10)) / 2 - }, - easeInCirc: function (t) { - return 1 - n(1 - i(t, 2)) - }, - easeOutCirc: function (t) { - return n(1 - i(t - 1, 2)) - }, - easeInOutCirc: function (t) { - return t < .5 ? (1 - n(1 - i(2 * t, 2))) / 2 : (n(1 - i(-2 * t + 2, 2)) + 1) / 2 - }, - easeInElastic: function (t) { - return 0 === t ? 0 : 1 === t ? 1 : -i(2, 10 * t - 10) * o((10 * t - 10.75) * c) - }, - easeOutElastic: function (t) { - return 0 === t ? 0 : 1 === t ? 1 : i(2, -10 * t) * o((10 * t - .75) * c) + 1 - }, - easeInOutElastic: function (t) { - return 0 === t ? 0 : 1 === t ? 1 : t < .5 ? -i(2, 20 * t - 10) * o((20 * t - 11.125) * u) / 2 : i(2, -20 * t + 10) * o((20 * t - 11.125) * u) / 2 + 1 - }, - easeInBack: function (t) { - return 2.70158 * t * t * t - s * t * t - }, - easeOutBack: function (t) { - return 1 + 2.70158 * i(t - 1, 3) + s * i(t - 1, 2) - }, - easeInOutBack: function (t) { - return t < .5 ? i(2 * t, 2) * (7.189819 * t - l) / 2 : (i(2 * t - 2, 2) * ((l + 1) * (2 * t - 2) + l) + 2) / 2 - }, - easeInBounce: function (t) { - return 1 - e(1 - t) - }, - easeOutBounce: e, - easeInOutBounce: function (t) { - return t < .5 ? (1 - e(1 - 2 * t)) / 2 : (1 + e(2 * t - 1)) / 2 - } - }) - }), jQuery.extend(jQuery.easing, { - easeInOutMaterial: function (t, e, i, n, o) { - return (e /= o / 2) < 1 ? n / 2 * e * e + i : n / 4 * ((e -= 2) * e * e + 2) + i - } - }), jQuery.Velocity ? console.log("Velocity is already loaded. You may be needlessly importing Velocity again; note that Materialize includes Velocity.") : (function (t) { - function e(t) { - var e = t.length, - n = i.type(t); - return "function" !== n && !i.isWindow(t) && (!(1 !== t.nodeType || !e) || ("array" === n || 0 === e || "number" == typeof e && e > 0 && e - 1 in t)) - } - if (!t.jQuery) { - var i = function (t, e) { - return new i.fn.init(t, e) - }; - i.isWindow = function (t) { - return null != t && t == t.window - }, i.type = function (t) { - return null == t ? t + "" : "object" == typeof t || "function" == typeof t ? o[r.call(t)] || "object" : typeof t - }, i.isArray = Array.isArray || function (t) { - return "array" === i.type(t) - }, i.isPlainObject = function (t) { - var e; - if (!t || "object" !== i.type(t) || t.nodeType || i.isWindow(t)) return !1; - try { - if (t.constructor && !a.call(t, "constructor") && !a.call(t.constructor.prototype, "isPrototypeOf")) return !1 - } catch (t) { - return !1 - } - for (e in t); - return void 0 === e || a.call(t, e) - }, i.each = function (t, i, n) { - var o = 0, - a = t.length, - r = e(t); - if (n) { - if (r) - for (; a > o && !1 !== i.apply(t[o], n); o++); - else - for (o in t) - if (!1 === i.apply(t[o], n)) break - } else if (r) - for (; a > o && !1 !== i.call(t[o], o, t[o]); o++); - else - for (o in t) - if (!1 === i.call(t[o], o, t[o])) break; - return t - }, i.data = function (t, e, o) { - if (void 0 === o) { - var a = (r = t[i.expando]) && n[r]; - if (void 0 === e) return a; - if (a && e in a) return a[e] - } else if (void 0 !== e) { - var r = t[i.expando] || (t[i.expando] = ++i.uuid); - return n[r] = n[r] || {}, n[r][e] = o, o - } - }, i.removeData = function (t, e) { - var o = t[i.expando], - a = o && n[o]; - a && i.each(e, function (t, e) { - delete a[e] - }) - }, i.extend = function () { - var t, e, n, o, a, r, s = arguments[0] || {}, - l = 1, - c = arguments.length, - u = !1; - for ("boolean" == typeof s && (u = s, s = arguments[l] || {}, l++), "object" != typeof s && "function" !== i.type(s) && (s = {}), l === c && (s = this, l--); c > l; l++) - if (null != (a = arguments[l])) - for (o in a) t = s[o], s !== (n = a[o]) && (u && n && (i.isPlainObject(n) || (e = i.isArray(n))) ? (e ? (e = !1, r = t && i.isArray(t) ? t : []) : r = t && i.isPlainObject(t) ? t : {}, s[o] = i.extend(u, r, n)) : void 0 !== n && (s[o] = n)); - return s - }, i.queue = function (t, n, o) { - if (t) { - n = (n || "fx") + "queue"; - var a = i.data(t, n); - return o ? (!a || i.isArray(o) ? a = i.data(t, n, function (t, i) { - var n = i || []; - return null != t && (e(Object(t)) ? function (t, e) { - for (var i = +e.length, n = 0, o = t.length; i > n;) t[o++] = e[n++]; - if (i !== i) - for (; void 0 !== e[n];) t[o++] = e[n++]; - t.length = o - }(n, "string" == typeof t ? [t] : t) : [].push.call(n, t)), n - }(o)) : a.push(o), a) : a || [] - } - }, i.dequeue = function (t, e) { - i.each(t.nodeType ? [t] : t, function (t, n) { - e = e || "fx"; - var o = i.queue(n, e), - a = o.shift(); - "inprogress" === a && (a = o.shift()), a && ("fx" === e && o.unshift("inprogress"), a.call(n, function () { - i.dequeue(n, e) - })) - }) - }, i.fn = i.prototype = { - init: function (t) { - if (t.nodeType) return this[0] = t, this; - throw new Error("Not a DOM node.") - }, - offset: function () { - var e = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : { - top: 0, - left: 0 - }; - return { - top: e.top + (t.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0), - left: e.left + (t.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0) - } - }, - position: function () { - function t() { - for (var t = this.offsetParent || document; t && "html" === !t.nodeType.toLowerCase && "static" === t.style.position;) t = t.offsetParent; - return t || document - } - var e = this[0], - t = t.apply(e), - n = this.offset(), - o = /^(?:body|html)$/i.test(t.nodeName) ? { - top: 0, - left: 0 - } : i(t).offset(); - return n.top -= parseFloat(e.style.marginTop) || 0, n.left -= parseFloat(e.style.marginLeft) || 0, t.style && (o.top += parseFloat(t.style.borderTopWidth) || 0, o.left += parseFloat(t.style.borderLeftWidth) || 0), { - top: n.top - o.top, - left: n.left - o.left - } - } - }; - var n = {}; - i.expando = "velocity" + (new Date).getTime(), i.uuid = 0; - for (var o = {}, a = o.hasOwnProperty, r = o.toString, s = "Boolean Number String Function Array Date RegExp Object Error".split(" "), l = 0; l < s.length; l++) o["[object " + s[l] + "]"] = s[l].toLowerCase(); - i.fn.init.prototype = i.fn, t.Velocity = { - Utilities: i - } - } - }(window), function (t) { - "object" == typeof module && "object" == typeof module.exports ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : t() - }(function () { - return function (t, e, i, n) { - function o(t) { - for (var e = -1, i = t ? t.length : 0, n = []; ++e < i;) { - var o = t[e]; - o && n.push(o) - } - return n - } - - function a(t) { - return v.isWrapped(t) ? t = [].slice.call(t) : v.isNode(t) && (t = [t]), t - } - - function r(t) { - var e = p.data(t, "velocity"); - return null === e ? n : e - } - - function s(t) { - return function (e) { - return Math.round(e * t) * (1 / t) - } - } - - function l(t, i, n, o) { - function a(t, e) { - return 1 - 3 * e + 3 * t - } - - function r(t, e) { - return 3 * e - 6 * t - } - - function s(t) { - return 3 * t - } - - function l(t, e, i) { - return ((a(e, i) * t + r(e, i)) * t + s(e)) * t - } - - function c(t, e, i) { - return 3 * a(e, i) * t * t + 2 * r(e, i) * t + s(e) - } - - function u(e, i) { - for (var o = 0; v > o; ++o) { - var a = c(i, t, n); - if (0 === a) return i; - i -= (l(i, t, n) - e) / a - } - return i - } - - function d() { - for (var e = 0; b > e; ++e) C[e] = l(e * w, t, n) - } - - function p(e, i, o) { - var a, r, s = 0; - do { - (a = l(r = i + (o - i) / 2, t, n) - e) > 0 ? o = r : i = r - } while (Math.abs(a) > g && ++s < y); - return r - } - - function h(e) { - for (var i = 0, o = 1, a = b - 1; o != a && C[o] <= e; ++o) i += w; - var r = i + (e - C[--o]) / (C[o + 1] - C[o]) * w, - s = c(r, t, n); - return s >= m ? u(e, r) : 0 == s ? r : p(e, i, i + w) - } - - function f() { - T = !0, (t != i || n != o) && d() - } - var v = 4, - m = .001, - g = 1e-7, - y = 10, - b = 11, - w = 1 / (b - 1), - k = "Float32Array" in e; - if (4 !== arguments.length) return !1; - for (var x = 0; 4 > x; ++x) - if ("number" != typeof arguments[x] || isNaN(arguments[x]) || !isFinite(arguments[x])) return !1; - t = Math.min(t, 1), n = Math.min(n, 1), t = Math.max(t, 0), n = Math.max(n, 0); - var C = k ? new Float32Array(b) : new Array(b), - T = !1, - S = function (e) { - return T || f(), t === i && n === o ? e : 0 === e ? 0 : 1 === e ? 1 : l(h(e), i, o) - }; - S.getControlPoints = function () { - return [{ - x: t, - y: i - }, { - x: n, - y: o - }] - }; - var P = "generateBezier(" + [t, i, n, o] + ")"; - return S.toString = function () { - return P - }, S - } - - function c(t, e) { - var i = t; - return v.isString(t) ? b.Easings[t] || (i = !1) : i = v.isArray(t) && 1 === t.length ? s.apply(null, t) : v.isArray(t) && 2 === t.length ? w.apply(null, t.concat([e])) : !(!v.isArray(t) || 4 !== t.length) && l.apply(null, t), !1 === i && (i = b.Easings[b.defaults.easing] ? b.defaults.easing : y), i - } - - function u(t) { - if (t) { - var e = (new Date).getTime(), - i = b.State.calls.length; - i > 1e4 && (b.State.calls = o(b.State.calls)); - for (var a = 0; i > a; a++) - if (b.State.calls[a]) { - var s = b.State.calls[a], - l = s[0], - c = s[2], - h = s[3], - f = !!h, - m = null; - h || (h = b.State.calls[a][3] = e - 16); - for (var g = Math.min((e - h) / c.duration, 1), y = 0, w = l.length; w > y; y++) { - var x = l[y], - T = x.element; - if (r(T)) { - var S = !1; - if (c.display !== n && null !== c.display && "none" !== c.display) { - if ("flex" === c.display) { - var P = ["-webkit-box", "-moz-box", "-ms-flexbox", "-webkit-flex"]; - p.each(P, function (t, e) { - k.setPropertyValue(T, "display", e) - }) - } - k.setPropertyValue(T, "display", c.display) - } - c.visibility !== n && "hidden" !== c.visibility && k.setPropertyValue(T, "visibility", c.visibility); - for (var A in x) - if ("element" !== A) { - var O, E = x[A], - _ = v.isString(E.easing) ? b.Easings[E.easing] : E.easing; - if (1 === g) O = E.endValue; - else { - var M = E.endValue - E.startValue; - if (O = E.startValue + M * _(g, c, M), !f && O === E.currentValue) continue - } - if (E.currentValue = O, "tween" === A) m = O; - else { - if (k.Hooks.registered[A]) { - var I = k.Hooks.getRoot(A), - D = r(T).rootPropertyValueCache[I]; - D && (E.rootPropertyValue = D) - } - var q = k.setPropertyValue(T, A, E.currentValue + (0 === parseFloat(O) ? "" : E.unitType), E.rootPropertyValue, E.scrollData); - k.Hooks.registered[A] && (r(T).rootPropertyValueCache[I] = k.Normalizations.registered[I] ? k.Normalizations.registered[I]("extract", null, q[1]) : q[1]), "transform" === q[0] && (S = !0) - } - } - c.mobileHA && r(T).transformCache.translate3d === n && (r(T).transformCache.translate3d = "(0px, 0px, 0px)", S = !0), S && k.flushTransformCache(T) - } - } - c.display !== n && "none" !== c.display && (b.State.calls[a][2].display = !1), c.visibility !== n && "hidden" !== c.visibility && (b.State.calls[a][2].visibility = !1), c.progress && c.progress.call(s[1], s[1], g, Math.max(0, h + c.duration - e), h, m), 1 === g && d(a) - } - } - b.State.isTicking && C(u) - } - - function d(t, e) { - if (!b.State.calls[t]) return !1; - for (var i = b.State.calls[t][0], o = b.State.calls[t][1], a = b.State.calls[t][2], s = b.State.calls[t][4], l = !1, c = 0, u = i.length; u > c; c++) { - var d = i[c].element; - if (e || a.loop || ("none" === a.display && k.setPropertyValue(d, "display", a.display), "hidden" === a.visibility && k.setPropertyValue(d, "visibility", a.visibility)), !0 !== a.loop && (p.queue(d)[1] === n || !/\.velocityQueueEntryFlag/i.test(p.queue(d)[1])) && r(d)) { - r(d).isAnimating = !1, r(d).rootPropertyValueCache = {}; - var h = !1; - p.each(k.Lists.transforms3D, function (t, e) { - var i = /^scale/.test(e) ? 1 : 0, - o = r(d).transformCache[e]; - r(d).transformCache[e] !== n && new RegExp("^\\(" + i + "[^.]").test(o) && (h = !0, delete r(d).transformCache[e]) - }), a.mobileHA && (h = !0, delete r(d).transformCache.translate3d), h && k.flushTransformCache(d), k.Values.removeClass(d, "velocity-animating") - } - if (!e && a.complete && !a.loop && c === u - 1) try { - a.complete.call(o, o) - } catch (t) { - setTimeout(function () { - throw t - }, 1) - } - s && !0 !== a.loop && s(o), r(d) && !0 === a.loop && !e && (p.each(r(d).tweensContainer, function (t, e) { - /^rotate/.test(t) && 360 === parseFloat(e.endValue) && (e.endValue = 0, e.startValue = 360), /^backgroundPosition/.test(t) && 100 === parseFloat(e.endValue) && "%" === e.unitType && (e.endValue = 0, e.startValue = 100) - }), b(d, "reverse", { - loop: !0, - delay: a.delay - })), !1 !== a.queue && p.dequeue(d, a.queue) - } - b.State.calls[t] = !1; - for (var f = 0, v = b.State.calls.length; v > f; f++) - if (!1 !== b.State.calls[f]) { - l = !0; - break - }!1 === l && (b.State.isTicking = !1, delete b.State.calls, b.State.calls = []) - } - var p, h = function () { - if (i.documentMode) return i.documentMode; - for (var t = 7; t > 4; t--) { - var e = i.createElement("div"); - if (e.innerHTML = "\x3c!--[if IE " + t + "]> 0) - }, - isWrapped: function (t) { - return t && (t.jquery || e.Zepto && e.Zepto.zepto.isZ(t)) - }, - isSVG: function (t) { - return e.SVGElement && t instanceof e.SVGElement - }, - isEmptyObject: function (t) { - for (var e in t) return !1; - return !0 - } - }, - m = !1; - if (t.fn && t.fn.jquery ? (p = t, m = !0) : p = e.Velocity.Utilities, 8 >= h && !m) throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity."); { - if (!(7 >= h)) { - var g = 400, - y = "swing", - b = { - State: { - isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), - isAndroid: /Android/i.test(navigator.userAgent), - isGingerbread: /Android 2\.3\.[3-7]/i.test(navigator.userAgent), - isChrome: e.chrome, - isFirefox: /Firefox/i.test(navigator.userAgent), - prefixElement: i.createElement("div"), - prefixMatches: {}, - scrollAnchor: null, - scrollPropertyLeft: null, - scrollPropertyTop: null, - isTicking: !1, - calls: [] - }, - CSS: {}, - Utilities: p, - Redirects: {}, - Easings: {}, - Promise: e.Promise, - defaults: { - queue: "", - duration: g, - easing: y, - begin: n, - complete: n, - progress: n, - display: n, - visibility: n, - loop: !1, - delay: !1, - mobileHA: !0, - _cacheValues: !0 - }, - init: function (t) { - p.data(t, "velocity", { - isSVG: v.isSVG(t), - isAnimating: !1, - computedStyle: null, - tweensContainer: null, - rootPropertyValueCache: {}, - transformCache: {} - }) - }, - hook: null, - mock: !1, - version: { - major: 1, - minor: 2, - patch: 2 - }, - debug: !1 - }; - e.pageYOffset !== n ? (b.State.scrollAnchor = e, b.State.scrollPropertyLeft = "pageXOffset", b.State.scrollPropertyTop = "pageYOffset") : (b.State.scrollAnchor = i.documentElement || i.body.parentNode || i.body, b.State.scrollPropertyLeft = "scrollLeft", b.State.scrollPropertyTop = "scrollTop"); - var w = function () { - function t(t) { - return -t.tension * t.x - t.friction * t.v - } - - function e(e, i, n) { - var o = { - x: e.x + n.dx * i, - v: e.v + n.dv * i, - tension: e.tension, - friction: e.friction - }; - return { - dx: o.v, - dv: t(o) - } - } - - function i(i, n) { - var o = { - dx: i.v, - dv: t(i) - }, - a = e(i, .5 * n, o), - r = e(i, .5 * n, a), - s = e(i, n, r), - l = 1 / 6 * (o.dx + 2 * (a.dx + r.dx) + s.dx), - c = 1 / 6 * (o.dv + 2 * (a.dv + r.dv) + s.dv); - return i.x = i.x + l * n, i.v = i.v + c * n, i - } - return function t(e, n, o) { - var a, r, s, l = { - x: -1, - v: 0, - tension: null, - friction: null - }, - c = [0], - u = 0; - for (e = parseFloat(e) || 500, n = parseFloat(n) || 20, o = o || null, l.tension = e, l.friction = n, (a = null !== o) ? (u = t(e, n), r = u / o * .016) : r = .016; s = i(s || l, r), c.push(1 + s.x), u += 16, Math.abs(s.x) > 1e-4 && Math.abs(s.v) > 1e-4;); - return a ? function (t) { - return c[t * (c.length - 1) | 0] - } : u - } - }(); - b.Easings = { - linear: function (t) { - return t - }, - swing: function (t) { - return .5 - Math.cos(t * Math.PI) / 2 - }, - spring: function (t) { - return 1 - Math.cos(4.5 * t * Math.PI) * Math.exp(6 * -t) - } - }, p.each([["ease", [.25, .1, .25, 1]], ["ease-in", [.42, 0, 1, 1]], ["ease-out", [0, 0, .58, 1]], ["ease-in-out", [.42, 0, .58, 1]], ["easeInSine", [.47, 0, .745, .715]], ["easeOutSine", [.39, .575, .565, 1]], ["easeInOutSine", [.445, .05, .55, .95]], ["easeInQuad", [.55, .085, .68, .53]], ["easeOutQuad", [.25, .46, .45, .94]], ["easeInOutQuad", [.455, .03, .515, .955]], ["easeInCubic", [.55, .055, .675, .19]], ["easeOutCubic", [.215, .61, .355, 1]], ["easeInOutCubic", [.645, .045, .355, 1]], ["easeInQuart", [.895, .03, .685, .22]], ["easeOutQuart", [.165, .84, .44, 1]], ["easeInOutQuart", [.77, 0, .175, 1]], ["easeInQuint", [.755, .05, .855, .06]], ["easeOutQuint", [.23, 1, .32, 1]], ["easeInOutQuint", [.86, 0, .07, 1]], ["easeInExpo", [.95, .05, .795, .035]], ["easeOutExpo", [.19, 1, .22, 1]], ["easeInOutExpo", [1, 0, 0, 1]], ["easeInCirc", [.6, .04, .98, .335]], ["easeOutCirc", [.075, .82, .165, 1]], ["easeInOutCirc", [.785, .135, .15, .86]]], function (t, e) { - b.Easings[e[0]] = l.apply(null, e[1]) - }); - var k = b.CSS = { - RegEx: { - isHex: /^#([A-f\d]{3}){1,2}$/i, - valueUnwrap: /^[A-z]+\((.*)\)$/i, - wrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, - valueSplit: /([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi - }, - Lists: { - colors: ["fill", "stroke", "stopColor", "color", "backgroundColor", "borderColor", "borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor", "outlineColor"], - transformsBase: ["translateX", "translateY", "scale", "scaleX", "scaleY", "skewX", "skewY", "rotateZ"], - transforms3D: ["transformPerspective", "translateZ", "scaleZ", "rotateX", "rotateY"] - }, - Hooks: { - templates: { - textShadow: ["Color X Y Blur", "black 0px 0px 0px"], - boxShadow: ["Color X Y Blur Spread", "black 0px 0px 0px 0px"], - clip: ["Top Right Bottom Left", "0px 0px 0px 0px"], - backgroundPosition: ["X Y", "0% 0%"], - transformOrigin: ["X Y Z", "50% 50% 0px"], - perspectiveOrigin: ["X Y", "50% 50%"] - }, - registered: {}, - register: function () { - for (a = 0; a < k.Lists.colors.length; a++) { - var t = "color" === k.Lists.colors[a] ? "0 0 0 1" : "255 255 255 1"; - k.Hooks.templates[k.Lists.colors[a]] = ["Red Green Blue Alpha", t] - } - var e, i, n; - if (h) - for (e in k.Hooks.templates) { - n = (i = k.Hooks.templates[e])[0].split(" "); - var o = i[1].match(k.RegEx.valueSplit); - "Color" === n[0] && (n.push(n.shift()), o.push(o.shift()), k.Hooks.templates[e] = [n.join(" "), o.join(" ")]) - } - for (e in k.Hooks.templates) { - n = (i = k.Hooks.templates[e])[0].split(" "); - for (var a in n) { - var r = e + n[a], - s = a; - k.Hooks.registered[r] = [e, s] - } - } - }, - getRoot: function (t) { - var e = k.Hooks.registered[t]; - return e ? e[0] : t - }, - cleanRootPropertyValue: function (t, e) { - return k.RegEx.valueUnwrap.test(e) && (e = e.match(k.RegEx.valueUnwrap)[1]), k.Values.isCSSNullValue(e) && (e = k.Hooks.templates[t][1]), e - }, - extractValue: function (t, e) { - var i = k.Hooks.registered[t]; - if (i) { - var n = i[0], - o = i[1]; - return (e = k.Hooks.cleanRootPropertyValue(n, e)).toString().match(k.RegEx.valueSplit)[o] - } - return e - }, - injectValue: function (t, e, i) { - var n = k.Hooks.registered[t]; - if (n) { - var o, a = n[0], - r = n[1]; - return i = k.Hooks.cleanRootPropertyValue(a, i), o = i.toString().match(k.RegEx.valueSplit), o[r] = e, o.join(" ") - } - return i - } - }, - Normalizations: { - registered: { - clip: function (t, e, i) { - switch (t) { - case "name": - return "clip"; - case "extract": - var n; - return k.RegEx.wrappedValueAlreadyExtracted.test(i) ? n = i : (n = i.toString().match(k.RegEx.valueUnwrap), n = n ? n[1].replace(/,(\s+)?/g, " ") : i), n; - case "inject": - return "rect(" + i + ")" - } - }, - blur: function (t, e, i) { - switch (t) { - case "name": - return b.State.isFirefox ? "filter" : "-webkit-filter"; - case "extract": - var n = parseFloat(i); - if (!n && 0 !== n) { - var o = i.toString().match(/blur\(([0-9]+[A-z]+)\)/i); - n = o ? o[1] : 0 - } - return n; - case "inject": - return parseFloat(i) ? "blur(" + i + ")" : "none" - } - }, - opacity: function (t, e, i) { - if (8 >= h) switch (t) { - case "name": - return "filter"; - case "extract": - var n = i.toString().match(/alpha\(opacity=(.*)\)/i); - return i = n ? n[1] / 100 : 1; - case "inject": - return e.style.zoom = 1, parseFloat(i) >= 1 ? "" : "alpha(opacity=" + parseInt(100 * parseFloat(i), 10) + ")" - } else switch (t) { - case "name": - return "opacity"; - case "extract": - case "inject": - return i - } - } - }, - register: function () { - 9 >= h || b.State.isGingerbread || (k.Lists.transformsBase = k.Lists.transformsBase.concat(k.Lists.transforms3D)); - for (t = 0; t < k.Lists.transformsBase.length; t++) ! function () { - var e = k.Lists.transformsBase[t]; - k.Normalizations.registered[e] = function (t, i, o) { - switch (t) { - case "name": - return "transform"; - case "extract": - return r(i) === n || r(i).transformCache[e] === n ? /^scale/i.test(e) ? 1 : 0 : r(i).transformCache[e].replace(/[()]/g, ""); - case "inject": - var a = !1; - switch (e.substr(0, e.length - 1)) { - case "translate": - a = !/(%|px|em|rem|vw|vh|\d)$/i.test(o); - break; - case "scal": - case "scale": - b.State.isAndroid && r(i).transformCache[e] === n && 1 > o && (o = 1), a = !/(\d)$/i.test(o); - break; - case "skew": - a = !/(deg|\d)$/i.test(o); - break; - case "rotate": - a = !/(deg|\d)$/i.test(o) - } - return a || (r(i).transformCache[e] = "(" + o + ")"), r(i).transformCache[e] - } - } - }(); - for (var t = 0; t < k.Lists.colors.length; t++) ! function () { - var e = k.Lists.colors[t]; - k.Normalizations.registered[e] = function (t, i, o) { - switch (t) { - case "name": - return e; - case "extract": - var a; - if (k.RegEx.wrappedValueAlreadyExtracted.test(o)) a = o; - else { - var r, s = { - black: "rgb(0, 0, 0)", - blue: "rgb(0, 0, 255)", - gray: "rgb(128, 128, 128)", - green: "rgb(0, 128, 0)", - red: "rgb(255, 0, 0)", - white: "rgb(255, 255, 255)" - }; - /^[A-z]+$/i.test(o) ? r = s[o] !== n ? s[o] : s.black : k.RegEx.isHex.test(o) ? r = "rgb(" + k.Values.hexToRgb(o).join(" ") + ")" : /^rgba?\(/i.test(o) || (r = s.black), a = (r || o).toString().match(k.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g, " ") - } - return 8 >= h || 3 !== a.split(" ").length || (a += " 1"), a; - case "inject": - return 8 >= h ? 4 === o.split(" ").length && (o = o.split(/\s+/).slice(0, 3).join(" ")) : 3 === o.split(" ").length && (o += " 1"), (8 >= h ? "rgb" : "rgba") + "(" + o.replace(/\s+/g, ",").replace(/\.(\d)+(?=,)/g, "") + ")" - } - } - }() - } - }, - Names: { - camelCase: function (t) { - return t.replace(/-(\w)/g, function (t, e) { - return e.toUpperCase() - }) - }, - SVGAttribute: function (t) { - var e = "width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2"; - return (h || b.State.isAndroid && !b.State.isChrome) && (e += "|transform"), new RegExp("^(" + e + ")$", "i").test(t) - }, - prefixCheck: function (t) { - if (b.State.prefixMatches[t]) return [b.State.prefixMatches[t], !0]; - for (var e = ["", "Webkit", "Moz", "ms", "O"], i = 0, n = e.length; n > i; i++) { - var o; - if (o = 0 === i ? t : e[i] + t.replace(/^\w/, function (t) { - return t.toUpperCase() - }), v.isString(b.State.prefixElement.style[o])) return b.State.prefixMatches[t] = o, [o, !0] - } - return [t, !1] - } - }, - Values: { - hexToRgb: function (t) { - var e, i = /^#?([a-f\d])([a-f\d])([a-f\d])$/i, - n = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i; - return t = t.replace(i, function (t, e, i, n) { - return e + e + i + i + n + n - }), e = n.exec(t), e ? [parseInt(e[1], 16), parseInt(e[2], 16), parseInt(e[3], 16)] : [0, 0, 0] - }, - isCSSNullValue: function (t) { - return 0 == t || /^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(t) - }, - getUnitType: function (t) { - return /^(rotate|skew)/i.test(t) ? "deg" : /(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(t) ? "" : "px" - }, - getDisplayType: function (t) { - var e = t && t.tagName.toString().toLowerCase(); - return /^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(e) ? "inline" : /^(li)$/i.test(e) ? "list-item" : /^(tr)$/i.test(e) ? "table-row" : /^(table)$/i.test(e) ? "table" : /^(tbody)$/i.test(e) ? "table-row-group" : "block" - }, - addClass: function (t, e) { - t.classList ? t.classList.add(e) : t.className += (t.className.length ? " " : "") + e - }, - removeClass: function (t, e) { - t.classList ? t.classList.remove(e) : t.className = t.className.toString().replace(new RegExp("(^|\\s)" + e.split(" ").join("|") + "(\\s|$)", "gi"), " ") - } - }, - getPropertyValue: function (t, i, o, a) { - function s(t, i) { - function o() { - c && k.setPropertyValue(t, "display", "none") - } - var l = 0; - if (8 >= h) l = p.css(t, i); - else { - var c = !1; - if (/^(width|height)$/.test(i) && 0 === k.getPropertyValue(t, "display") && (c = !0, k.setPropertyValue(t, "display", k.Values.getDisplayType(t))), !a) { - if ("height" === i && "border-box" !== k.getPropertyValue(t, "boxSizing").toString().toLowerCase()) { - var u = t.offsetHeight - (parseFloat(k.getPropertyValue(t, "borderTopWidth")) || 0) - (parseFloat(k.getPropertyValue(t, "borderBottomWidth")) || 0) - (parseFloat(k.getPropertyValue(t, "paddingTop")) || 0) - (parseFloat(k.getPropertyValue(t, "paddingBottom")) || 0); - return o(), u - } - if ("width" === i && "border-box" !== k.getPropertyValue(t, "boxSizing").toString().toLowerCase()) { - var d = t.offsetWidth - (parseFloat(k.getPropertyValue(t, "borderLeftWidth")) || 0) - (parseFloat(k.getPropertyValue(t, "borderRightWidth")) || 0) - (parseFloat(k.getPropertyValue(t, "paddingLeft")) || 0) - (parseFloat(k.getPropertyValue(t, "paddingRight")) || 0); - return o(), d - } - } - var f; - f = r(t) === n ? e.getComputedStyle(t, null) : r(t).computedStyle ? r(t).computedStyle : r(t).computedStyle = e.getComputedStyle(t, null), "borderColor" === i && (i = "borderTopColor"), ("" === (l = 9 === h && "filter" === i ? f.getPropertyValue(i) : f[i]) || null === l) && (l = t.style[i]), o() - } - if ("auto" === l && /^(top|right|bottom|left)$/i.test(i)) { - var v = s(t, "position"); - ("fixed" === v || "absolute" === v && /top|left/i.test(i)) && (l = p(t).position()[i] + "px") - } - return l - } - var l; - if (k.Hooks.registered[i]) { - var c = i, - u = k.Hooks.getRoot(c); - o === n && (o = k.getPropertyValue(t, k.Names.prefixCheck(u)[0])), k.Normalizations.registered[u] && (o = k.Normalizations.registered[u]("extract", t, o)), l = k.Hooks.extractValue(c, o) - } else if (k.Normalizations.registered[i]) { - var d, f; - "transform" !== (d = k.Normalizations.registered[i]("name", t)) && (f = s(t, k.Names.prefixCheck(d)[0]), k.Values.isCSSNullValue(f) && k.Hooks.templates[i] && (f = k.Hooks.templates[i][1])), l = k.Normalizations.registered[i]("extract", t, f) - } - if (!/^[\d-]/.test(l)) - if (r(t) && r(t).isSVG && k.Names.SVGAttribute(i)) - if (/^(height|width)$/i.test(i)) try { - l = t.getBBox()[i] - } catch (t) { - l = 0 - } else l = t.getAttribute(i); - else l = s(t, k.Names.prefixCheck(i)[0]); - return k.Values.isCSSNullValue(l) && (l = 0), b.debug >= 2 && console.log("Get " + i + ": " + l), l - }, - setPropertyValue: function (t, i, n, o, a) { - var s = i; - if ("scroll" === i) a.container ? a.container["scroll" + a.direction] = n : "Left" === a.direction ? e.scrollTo(n, a.alternateValue) : e.scrollTo(a.alternateValue, n); - else if (k.Normalizations.registered[i] && "transform" === k.Normalizations.registered[i]("name", t)) k.Normalizations.registered[i]("inject", t, n), s = "transform", n = r(t).transformCache[i]; - else { - if (k.Hooks.registered[i]) { - var l = i, - c = k.Hooks.getRoot(i); - o = o || k.getPropertyValue(t, c), n = k.Hooks.injectValue(l, n, o), i = c - } - if (k.Normalizations.registered[i] && (n = k.Normalizations.registered[i]("inject", t, n), i = k.Normalizations.registered[i]("name", t)), s = k.Names.prefixCheck(i)[0], 8 >= h) try { - t.style[s] = n - } catch (t) { - b.debug && console.log("Browser does not support [" + n + "] for [" + s + "]") - } else r(t) && r(t).isSVG && k.Names.SVGAttribute(i) ? t.setAttribute(i, n) : t.style[s] = n; - b.debug >= 2 && console.log("Set " + i + " (" + s + "): " + n) - } - return [s, n] - }, - flushTransformCache: function (t) { - function e(e) { - return parseFloat(k.getPropertyValue(t, e)) - } - var i = ""; - if ((h || b.State.isAndroid && !b.State.isChrome) && r(t).isSVG) { - var n = { - translate: [e("translateX"), e("translateY")], - skewX: [e("skewX")], - skewY: [e("skewY")], - scale: 1 !== e("scale") ? [e("scale"), e("scale")] : [e("scaleX"), e("scaleY")], - rotate: [e("rotateZ"), 0, 0] - }; - p.each(r(t).transformCache, function (t) { - /^translate/i.test(t) ? t = "translate" : /^scale/i.test(t) ? t = "scale" : /^rotate/i.test(t) && (t = "rotate"), n[t] && (i += t + "(" + n[t].join(" ") + ") ", delete n[t]) - }) - } else { - var o, a; - p.each(r(t).transformCache, function (e) { - return o = r(t).transformCache[e], "transformPerspective" === e ? (a = o, !0) : (9 === h && "rotateZ" === e && (e = "rotate"), void(i += e + o + " ")) - }), a && (i = "perspective" + a + " " + i) - } - k.setPropertyValue(t, "transform", i) - } - }; - k.Hooks.register(), k.Normalizations.register(), b.hook = function (t, e, i) { - var o = n; - return t = a(t), p.each(t, function (t, a) { - if (r(a) === n && b.init(a), i === n) o === n && (o = b.CSS.getPropertyValue(a, e)); - else { - var s = b.CSS.setPropertyValue(a, e, i); - "transform" === s[0] && b.CSS.flushTransformCache(a), o = s - } - }), o - }; - var x = function () { - function t() { - return s ? P.promise || null : l - } - - function o() { - function t(t) { - function d(t, e) { - var i = n, - o = n, - r = n; - return v.isArray(t) ? (i = t[0], !v.isArray(t[1]) && /^[\d-]/.test(t[1]) || v.isFunction(t[1]) || k.RegEx.isHex.test(t[1]) ? r = t[1] : (v.isString(t[1]) && !k.RegEx.isHex.test(t[1]) || v.isArray(t[1])) && (o = e ? t[1] : c(t[1], s.duration), t[2] !== n && (r = t[2]))) : i = t, e || (o = o || s.easing), v.isFunction(i) && (i = i.call(a, T, C)), v.isFunction(r) && (r = r.call(a, T, C)), [i || 0, o, r] - } - - function h(t, e) { - var i, n; - return n = (e || "0").toString().toLowerCase().replace(/[%A-z]+$/, function (t) { - return i = t, "" - }), i || (i = k.Values.getUnitType(t)), [n, i] - } - if (s.begin && 0 === T) try { - s.begin.call(f, f) - } catch (t) { - setTimeout(function () { - throw t - }, 1) - } - if ("scroll" === A) { - var g, w, x, S = /^x$/i.test(s.axis) ? "Left" : "Top", - O = parseFloat(s.offset) || 0; - s.container ? v.isWrapped(s.container) || v.isNode(s.container) ? (s.container = s.container[0] || s.container, g = s.container["scroll" + S], x = g + p(a).position()[S.toLowerCase()] + O) : s.container = null : (g = b.State.scrollAnchor[b.State["scrollProperty" + S]], w = b.State.scrollAnchor[b.State["scrollProperty" + ("Left" === S ? "Top" : "Left")]], x = p(a).offset()[S.toLowerCase()] + O), l = { - scroll: { - rootPropertyValue: !1, - startValue: g, - currentValue: g, - endValue: x, - unitType: "", - easing: s.easing, - scrollData: { - container: s.container, - direction: S, - alternateValue: w - } - }, - element: a - }, b.debug && console.log("tweensContainer (scroll): ", l.scroll, a) - } else if ("reverse" === A) { - if (!r(a).tweensContainer) return void p.dequeue(a, s.queue); - "none" === r(a).opts.display && (r(a).opts.display = "auto"), "hidden" === r(a).opts.visibility && (r(a).opts.visibility = "visible"), r(a).opts.loop = !1, r(a).opts.begin = null, r(a).opts.complete = null, y.easing || delete s.easing, y.duration || delete s.duration, s = p.extend({}, r(a).opts, s); - M = p.extend(!0, {}, r(a).tweensContainer); - for (var E in M) - if ("element" !== E) { - var _ = M[E].startValue; - M[E].startValue = M[E].currentValue = M[E].endValue, M[E].endValue = _, v.isEmptyObject(y) || (M[E].easing = s.easing), b.debug && console.log("reverse tweensContainer (" + E + "): " + JSON.stringify(M[E]), a) - } - l = M - } else if ("start" === A) { - var M; - r(a).tweensContainer && !0 === r(a).isAnimating && (M = r(a).tweensContainer), p.each(m, function (t, e) { - if (RegExp("^" + k.Lists.colors.join("$|^") + "$").test(t)) { - var i = d(e, !0), - o = i[0], - a = i[1], - r = i[2]; - if (k.RegEx.isHex.test(o)) { - for (var s = ["Red", "Green", "Blue"], l = k.Values.hexToRgb(o), c = r ? k.Values.hexToRgb(r) : n, u = 0; u < s.length; u++) { - var p = [l[u]]; - a && p.push(a), c !== n && p.push(c[u]), m[t + s[u]] = p - } - delete m[t] - } - } - }); - for (var q in m) { - var z = d(m[q]), - V = z[0], - H = z[1], - L = z[2]; - q = k.Names.camelCase(q); - var j = k.Hooks.getRoot(q), - $ = !1; - if (r(a).isSVG || "tween" === j || !1 !== k.Names.prefixCheck(j)[1] || k.Normalizations.registered[j] !== n) { - (s.display !== n && null !== s.display && "none" !== s.display || s.visibility !== n && "hidden" !== s.visibility) && /opacity|filter/.test(q) && !L && 0 !== V && (L = 0), s._cacheValues && M && M[q] ? (L === n && (L = M[q].endValue + M[q].unitType), $ = r(a).rootPropertyValueCache[j]) : k.Hooks.registered[q] ? L === n ? ($ = k.getPropertyValue(a, j), L = k.getPropertyValue(a, q, $)) : $ = k.Hooks.templates[j][1] : L === n && (L = k.getPropertyValue(a, q)); - var N, W, F, Q = !1; - if (N = h(q, L), L = N[0], F = N[1], N = h(q, V), V = N[0].replace(/^([+-\/*])=/, function (t, e) { - return Q = e, "" - }), W = N[1], L = parseFloat(L) || 0, V = parseFloat(V) || 0, "%" === W && (/^(fontSize|lineHeight)$/.test(q) ? (V /= 100, W = "em") : /^scale/.test(q) ? (V /= 100, W = "") : /(Red|Green|Blue)$/i.test(q) && (V = V / 100 * 255, W = "")), /[\/*]/.test(Q)) W = F; - else if (F !== W && 0 !== L) - if (0 === V) W = F; - else { - o = o || function () { - var t = { - myParent: a.parentNode || i.body, - position: k.getPropertyValue(a, "position"), - fontSize: k.getPropertyValue(a, "fontSize") - }, - n = t.position === I.lastPosition && t.myParent === I.lastParent, - o = t.fontSize === I.lastFontSize; - I.lastParent = t.myParent, I.lastPosition = t.position, I.lastFontSize = t.fontSize; - var s = 100, - l = {}; - if (o && n) l.emToPx = I.lastEmToPx, l.percentToPxWidth = I.lastPercentToPxWidth, l.percentToPxHeight = I.lastPercentToPxHeight; - else { - var c = r(a).isSVG ? i.createElementNS("http://www.w3.org/2000/svg", "rect") : i.createElement("div"); - b.init(c), t.myParent.appendChild(c), p.each(["overflow", "overflowX", "overflowY"], function (t, e) { - b.CSS.setPropertyValue(c, e, "hidden") - }), b.CSS.setPropertyValue(c, "position", t.position), b.CSS.setPropertyValue(c, "fontSize", t.fontSize), b.CSS.setPropertyValue(c, "boxSizing", "content-box"), p.each(["minWidth", "maxWidth", "width", "minHeight", "maxHeight", "height"], function (t, e) { - b.CSS.setPropertyValue(c, e, s + "%") - }), b.CSS.setPropertyValue(c, "paddingLeft", s + "em"), l.percentToPxWidth = I.lastPercentToPxWidth = (parseFloat(k.getPropertyValue(c, "width", null, !0)) || 1) / s, l.percentToPxHeight = I.lastPercentToPxHeight = (parseFloat(k.getPropertyValue(c, "height", null, !0)) || 1) / s, l.emToPx = I.lastEmToPx = (parseFloat(k.getPropertyValue(c, "paddingLeft")) || 1) / s, t.myParent.removeChild(c) - } - return null === I.remToPx && (I.remToPx = parseFloat(k.getPropertyValue(i.body, "fontSize")) || 16), null === I.vwToPx && (I.vwToPx = parseFloat(e.innerWidth) / 100, I.vhToPx = parseFloat(e.innerHeight) / 100), l.remToPx = I.remToPx, l.vwToPx = I.vwToPx, l.vhToPx = I.vhToPx, b.debug >= 1 && console.log("Unit ratios: " + JSON.stringify(l), a), l - }(); - var X = /margin|padding|left|right|width|text|word|letter/i.test(q) || /X$/.test(q) || "x" === q ? "x" : "y"; - switch (F) { - case "%": - L *= "x" === X ? o.percentToPxWidth : o.percentToPxHeight; - break; - case "px": - break; - default: - L *= o[F + "ToPx"] - } - switch (W) { - case "%": - L *= 1 / ("x" === X ? o.percentToPxWidth : o.percentToPxHeight); - break; - case "px": - break; - default: - L *= 1 / o[W + "ToPx"] - } - } - switch (Q) { - case "+": - V = L + V; - break; - case "-": - V = L - V; - break; - case "*": - V *= L; - break; - case "/": - V = L / V - } - l[q] = { - rootPropertyValue: $, - startValue: L, - currentValue: L, - endValue: V, - unitType: W, - easing: H - }, b.debug && console.log("tweensContainer (" + q + "): " + JSON.stringify(l[q]), a) - } else b.debug && console.log("Skipping [" + j + "] due to a lack of browser support.") - } - l.element = a - } - l.element && (k.Values.addClass(a, "velocity-animating"), D.push(l), "" === s.queue && (r(a).tweensContainer = l, r(a).opts = s), r(a).isAnimating = !0, T === C - 1 ? (b.State.calls.push([D, f, s, null, P.resolver]), !1 === b.State.isTicking && (b.State.isTicking = !0, u())) : T++) - } - var o, a = this, - s = p.extend({}, b.defaults, y), - l = {}; - switch (r(a) === n && b.init(a), parseFloat(s.delay) && !1 !== s.queue && p.queue(a, s.queue, function (t) { - b.velocityQueueEntryFlag = !0, r(a).delayTimer = { - setTimeout: setTimeout(t, parseFloat(s.delay)), - next: t - } - }), s.duration.toString().toLowerCase()) { - case "fast": - s.duration = 200; - break; - case "normal": - s.duration = g; - break; - case "slow": - s.duration = 600; - break; - default: - s.duration = parseFloat(s.duration) || 1 - }!1 !== b.mock && (!0 === b.mock ? s.duration = s.delay = 1 : (s.duration *= parseFloat(b.mock) || 1, s.delay *= parseFloat(b.mock) || 1)), s.easing = c(s.easing, s.duration), s.begin && !v.isFunction(s.begin) && (s.begin = null), s.progress && !v.isFunction(s.progress) && (s.progress = null), s.complete && !v.isFunction(s.complete) && (s.complete = null), s.display !== n && null !== s.display && (s.display = s.display.toString().toLowerCase(), "auto" === s.display && (s.display = b.CSS.Values.getDisplayType(a))), s.visibility !== n && null !== s.visibility && (s.visibility = s.visibility.toString().toLowerCase()), s.mobileHA = s.mobileHA && b.State.isMobile && !b.State.isGingerbread, !1 === s.queue ? s.delay ? setTimeout(t, s.delay) : t() : p.queue(a, s.queue, function (e, i) { - return !0 === i ? (P.promise && P.resolver(f), !0) : (b.velocityQueueEntryFlag = !0, void t(e)) - }), "" !== s.queue && "fx" !== s.queue || "inprogress" === p.queue(a)[0] || p.dequeue(a) - } - var s, l, h, f, m, y, w = arguments[0] && (arguments[0].p || p.isPlainObject(arguments[0].properties) && !arguments[0].properties.names || v.isString(arguments[0].properties)); - if (v.isWrapped(this) ? (s = !1, h = 0, f = this, l = this) : (s = !0, h = 1, f = w ? arguments[0].elements || arguments[0].e : arguments[0]), f = a(f)) { - w ? (m = arguments[0].properties || arguments[0].p, y = arguments[0].options || arguments[0].o) : (m = arguments[h], y = arguments[h + 1]); - var C = f.length, - T = 0; - if (!/^(stop|finish)$/i.test(m) && !p.isPlainObject(y)) { - y = {}; - for (var S = h + 1; S < arguments.length; S++) v.isArray(arguments[S]) || !/^(fast|normal|slow)$/i.test(arguments[S]) && !/^\d/.test(arguments[S]) ? v.isString(arguments[S]) || v.isArray(arguments[S]) ? y.easing = arguments[S] : v.isFunction(arguments[S]) && (y.complete = arguments[S]) : y.duration = arguments[S] - } - var P = { - promise: null, - resolver: null, - rejecter: null - }; - s && b.Promise && (P.promise = new b.Promise(function (t, e) { - P.resolver = t, P.rejecter = e - })); - var A; - switch (m) { - case "scroll": - A = "scroll"; - break; - case "reverse": - A = "reverse"; - break; - case "finish": - case "stop": - p.each(f, function (t, e) { - r(e) && r(e).delayTimer && (clearTimeout(r(e).delayTimer.setTimeout), r(e).delayTimer.next && r(e).delayTimer.next(), delete r(e).delayTimer) - }); - var O = []; - return p.each(b.State.calls, function (t, e) { - e && p.each(e[1], function (i, o) { - var a = y === n ? "" : y; - return !0 !== a && e[2].queue !== a && (y !== n || !1 !== e[2].queue) || void p.each(f, function (i, n) { - n === o && ((!0 === y || v.isString(y)) && (p.each(p.queue(n, v.isString(y) ? y : ""), function (t, e) { - v.isFunction(e) && e(null, !0) - }), p.queue(n, v.isString(y) ? y : "", [])), "stop" === m ? (r(n) && r(n).tweensContainer && !1 !== a && p.each(r(n).tweensContainer, function (t, e) { - e.endValue = e.currentValue - }), O.push(t)) : "finish" === m && (e[2].duration = 1)) - }) - }) - }), "stop" === m && (p.each(O, function (t, e) { - d(e, !0) - }), P.promise && P.resolver(f)), t(); - default: - if (!p.isPlainObject(m) || v.isEmptyObject(m)) { - if (v.isString(m) && b.Redirects[m]) { - var E = (z = p.extend({}, y)).duration, - _ = z.delay || 0; - return !0 === z.backwards && (f = p.extend(!0, [], f).reverse()), p.each(f, function (t, e) { - parseFloat(z.stagger) ? z.delay = _ + parseFloat(z.stagger) * t : v.isFunction(z.stagger) && (z.delay = _ + z.stagger.call(e, t, C)), z.drag && (z.duration = parseFloat(E) || (/^(callout|transition)/.test(m) ? 1e3 : g), z.duration = Math.max(z.duration * (z.backwards ? 1 - t / C : (t + 1) / C), .75 * z.duration, 200)), b.Redirects[m].call(e, e, z || {}, t, C, f, P.promise ? P : n) - }), t() - } - var M = "Velocity: First argument (" + m + ") was not a property map, a known action, or a registered redirect. Aborting."; - return P.promise ? P.rejecter(new Error(M)) : console.log(M), t() - } - A = "start" - } - var I = { - lastParent: null, - lastPosition: null, - lastFontSize: null, - lastPercentToPxWidth: null, - lastPercentToPxHeight: null, - lastEmToPx: null, - remToPx: null, - vwToPx: null, - vhToPx: null - }, - D = []; - p.each(f, function (t, e) { - v.isNode(e) && o.call(e) - }); - var q, z = p.extend({}, b.defaults, y); - if (z.loop = parseInt(z.loop), q = 2 * z.loop - 1, z.loop) - for (var V = 0; q > V; V++) { - var H = { - delay: z.delay, - progress: z.progress - }; - V === q - 1 && (H.display = z.display, H.visibility = z.visibility, H.complete = z.complete), x(f, "reverse", H) - } - return t() - } - }; - (b = p.extend(x, b)).animate = x; - var C = e.requestAnimationFrame || f; - return b.State.isMobile || i.hidden === n || i.addEventListener("visibilitychange", function () { - i.hidden ? (C = function (t) { - return setTimeout(function () { - t(!0) - }, 16) - }, u()) : C = e.requestAnimationFrame || f - }), t.Velocity = b, t !== e && (t.fn.velocity = x, t.fn.velocity.defaults = b.defaults), p.each(["Down", "Up"], function (t, e) { - b.Redirects["slide" + e] = function (t, i, o, a, r, s) { - var l = p.extend({}, i), - c = l.begin, - u = l.complete, - d = { - height: "", - marginTop: "", - marginBottom: "", - paddingTop: "", - paddingBottom: "" - }, - h = {}; - l.display === n && (l.display = "Down" === e ? "inline" === b.CSS.Values.getDisplayType(t) ? "inline-block" : "block" : "none"), l.begin = function () { - c && c.call(r, r); - for (var i in d) { - h[i] = t.style[i]; - var n = b.CSS.getPropertyValue(t, i); - d[i] = "Down" === e ? [n, 0] : [0, n] - } - h.overflow = t.style.overflow, t.style.overflow = "hidden" - }, l.complete = function () { - for (var e in h) t.style[e] = h[e]; - u && u.call(r, r), s && s.resolver(r) - }, b(t, d, l) - } - }), p.each(["In", "Out"], function (t, e) { - b.Redirects["fade" + e] = function (t, i, o, a, r, s) { - var l = p.extend({}, i), - c = { - opacity: "In" === e ? 1 : 0 - }, - u = l.complete; - l.complete = o !== a - 1 ? l.begin = null : function () { - u && u.call(r, r), s && s.resolver(r) - }, l.display === n && (l.display = "In" === e ? "auto" : "none"), b(this, c, l) - } - }), b - } - jQuery.fn.velocity = jQuery.fn.animate - } - }(window.jQuery || window.Zepto || window, window, document) - })), - function (t, e, i, n) { - "use strict"; - - function o(t, e, i) { - return setTimeout(u(t, i), e) - } - - function a(t, e, i) { - return !!Array.isArray(t) && (r(t, i[e], i), !0) - } - - function r(t, e, i) { - var o; - if (t) - if (t.forEach) t.forEach(e, i); - else if (t.length !== n) - for (o = 0; o < t.length;) e.call(i, t[o], o, t), o++; - else - for (o in t) t.hasOwnProperty(o) && e.call(i, t[o], o, t) - } - - function s(t, e, i) { - for (var o = Object.keys(e), a = 0; a < o.length;)(!i || i && t[o[a]] === n) && (t[o[a]] = e[o[a]]), a++; - return t - } - - function l(t, e) { - return s(t, e, !0) - } - - function c(t, e, i) { - var n, o = e.prototype; - (n = t.prototype = Object.create(o)).constructor = t, n._super = o, i && s(n, i) - } - - function u(t, e) { - return function () { - return t.apply(e, arguments) - } - } - - function d(t, e) { - return typeof t == ut ? t.apply(e ? e[0] || n : n, e) : t - } - - function p(t, e) { - return t === n ? e : t - } - - function h(t, e, i) { - r(g(e), function (e) { - t.addEventListener(e, i, !1) - }) - } - - function f(t, e, i) { - r(g(e), function (e) { - t.removeEventListener(e, i, !1) - }) - } - - function v(t, e) { - for (; t;) { - if (t == e) return !0; - t = t.parentNode - } - return !1 - } - - function m(t, e) { - return t.indexOf(e) > -1 - } - - function g(t) { - return t.trim().split(/\s+/g) - } - - function y(t, e, i) { - if (t.indexOf && !i) return t.indexOf(e); - for (var n = 0; n < t.length;) { - if (i && t[n][i] == e || !i && t[n] === e) return n; - n++ - } - return -1 - } - - function b(t) { - return Array.prototype.slice.call(t, 0) - } - - function w(t, e, i) { - for (var n = [], o = [], a = 0; a < t.length;) { - var r = e ? t[a][e] : t[a]; - y(o, r) < 0 && n.push(t[a]), o[a] = r, a++ - } - return i && (n = e ? n.sort(function (t, i) { - return t[e] > i[e] - }) : n.sort()), n - } - - function k(t, e) { - for (var i, o, a = e[0].toUpperCase() + e.slice(1), r = 0; r < lt.length;) { - if (i = lt[r], (o = i ? i + a : e) in t) return o; - r++ - } - return n - } - - function x() { - return ft++ - } - - function C(t) { - var e = t.ownerDocument; - return e.defaultView || e.parentWindow - } - - function T(t, e) { - var i = this; - this.manager = t, this.callback = e, this.element = t.element, this.target = t.options.inputTarget, this.domHandler = function (e) { - d(t.options.enable, [t]) && i.handler(e) - }, this.init() - } - - function S(t) { - var e = t.options.inputClass; - return new(e || (gt ? j : yt ? W : mt ? Q : L))(t, P) - } - - function P(t, e, i) { - var n = i.pointers.length, - o = i.changedPointers.length, - a = e & xt && 0 == n - o, - r = e & (Tt | St) && 0 == n - o; - i.isFirst = !!a, i.isFinal = !!r, a && (t.session = {}), i.eventType = e, A(t, i), t.emit("hammer.input", i), t.recognize(i), t.session.prevInput = i - } - - function A(t, e) { - var i = t.session, - n = e.pointers, - o = n.length; - i.firstInput || (i.firstInput = _(e)), o > 1 && !i.firstMultiple ? i.firstMultiple = _(e) : 1 === o && (i.firstMultiple = !1); - var a = i.firstInput, - r = i.firstMultiple, - s = r ? r.center : a.center, - l = e.center = M(n); - e.timeStamp = ht(), e.deltaTime = e.timeStamp - a.timeStamp, e.angle = z(s, l), e.distance = q(s, l), O(i, e), e.offsetDirection = D(e.deltaX, e.deltaY), e.scale = r ? H(r.pointers, n) : 1, e.rotation = r ? V(r.pointers, n) : 0, E(i, e); - var c = t.element; - v(e.srcEvent.target, c) && (c = e.srcEvent.target), e.target = c - } - - function O(t, e) { - var i = e.center, - n = t.offsetDelta || {}, - o = t.prevDelta || {}, - a = t.prevInput || {}; - (e.eventType === xt || a.eventType === Tt) && (o = t.prevDelta = { - x: a.deltaX || 0, - y: a.deltaY || 0 - }, n = t.offsetDelta = { - x: i.x, - y: i.y - }), e.deltaX = o.x + (i.x - n.x), e.deltaY = o.y + (i.y - n.y) - } - - function E(t, e) { - var i, o, a, r, s = t.lastInterval || e, - l = e.timeStamp - s.timeStamp; - if (e.eventType != St && (l > kt || s.velocity === n)) { - var c = s.deltaX - e.deltaX, - u = s.deltaY - e.deltaY, - d = I(l, c, u); - o = d.x, a = d.y, i = pt(d.x) > pt(d.y) ? d.x : d.y, r = D(c, u), t.lastInterval = e - } else i = s.velocity, o = s.velocityX, a = s.velocityY, r = s.direction; - e.velocity = i, e.velocityX = o, e.velocityY = a, e.direction = r - } - - function _(t) { - for (var e = [], i = 0; i < t.pointers.length;) e[i] = { - clientX: dt(t.pointers[i].clientX), - clientY: dt(t.pointers[i].clientY) - }, i++; - return { - timeStamp: ht(), - pointers: e, - center: M(e), - deltaX: t.deltaX, - deltaY: t.deltaY - } - } - - function M(t) { - var e = t.length; - if (1 === e) return { - x: dt(t[0].clientX), - y: dt(t[0].clientY) - }; - for (var i = 0, n = 0, o = 0; e > o;) i += t[o].clientX, n += t[o].clientY, o++; - return { - x: dt(i / e), - y: dt(n / e) - } - } - - function I(t, e, i) { - return { - x: e / t || 0, - y: i / t || 0 - } - } - - function D(t, e) { - return t === e ? Pt : pt(t) >= pt(e) ? t > 0 ? At : Ot : e > 0 ? Et : _t - } - - function q(t, e, i) { - i || (i = qt); - var n = e[i[0]] - t[i[0]], - o = e[i[1]] - t[i[1]]; - return Math.sqrt(n * n + o * o) - } - - function z(t, e, i) { - i || (i = qt); - var n = e[i[0]] - t[i[0]], - o = e[i[1]] - t[i[1]]; - return 180 * Math.atan2(o, n) / Math.PI - } - - function V(t, e) { - return z(e[1], e[0], zt) - z(t[1], t[0], zt) - } - - function H(t, e) { - return q(e[0], e[1], zt) / q(t[0], t[1], zt) - } - - function L() { - this.evEl = Ht, this.evWin = Lt, this.allow = !0, this.pressed = !1, T.apply(this, arguments) - } - - function j() { - this.evEl = Nt, this.evWin = Wt, T.apply(this, arguments), this.store = this.manager.session.pointerEvents = [] - } - - function $() { - this.evTarget = Qt, this.evWin = Xt, this.started = !1, T.apply(this, arguments) - } - - function N(t, e) { - var i = b(t.touches), - n = b(t.changedTouches); - return e & (Tt | St) && (i = w(i.concat(n), "identifier", !0)), [i, n] - } - - function W() { - this.evTarget = Yt, this.targetIds = {}, T.apply(this, arguments) - } - - function F(t, e) { - var i = b(t.touches), - n = this.targetIds; - if (e & (xt | Ct) && 1 === i.length) return n[i[0].identifier] = !0, [i, i]; - var o, a, r = b(t.changedTouches), - s = [], - l = this.target; - if (a = i.filter(function (t) { - return v(t.target, l) - }), e === xt) - for (o = 0; o < a.length;) n[a[o].identifier] = !0, o++; - for (o = 0; o < r.length;) n[r[o].identifier] && s.push(r[o]), e & (Tt | St) && delete n[r[o].identifier], o++; - return s.length ? [w(a.concat(s), "identifier", !0), s] : void 0 - } - - function Q() { - T.apply(this, arguments); - var t = u(this.handler, this); - this.touch = new W(this.manager, t), this.mouse = new L(this.manager, t) - } - - function X(t, e) { - this.manager = t, this.set(e) - } - - function R(t) { - if (m(t, Kt)) return Kt; - var e = m(t, te), - i = m(t, ee); - return e && i ? te + " " + ee : e || i ? e ? te : ee : m(t, Jt) ? Jt : Zt - } - - function Y(t) { - this.id = x(), this.manager = null, this.options = l(t || {}, this.defaults), this.options.enable = p(this.options.enable, !0), this.state = ie, this.simultaneous = {}, this.requireFail = [] - } - - function B(t) { - return t & se ? "cancel" : t & ae ? "end" : t & oe ? "move" : t & ne ? "start" : "" - } - - function U(t) { - return t == _t ? "down" : t == Et ? "up" : t == At ? "left" : t == Ot ? "right" : "" - } - - function G(t, e) { - var i = e.manager; - return i ? i.get(t) : t - } - - function Z() { - Y.apply(this, arguments) - } - - function J() { - Z.apply(this, arguments), this.pX = null, this.pY = null - } - - function K() { - Z.apply(this, arguments) - } - - function tt() { - Y.apply(this, arguments), this._timer = null, this._input = null - } - - function et() { - Z.apply(this, arguments) - } - - function it() { - Z.apply(this, arguments) - } - - function nt() { - Y.apply(this, arguments), this.pTime = !1, this.pCenter = !1, this._timer = null, this._input = null, this.count = 0 - } - - function ot(t, e) { - return e = e || {}, e.recognizers = p(e.recognizers, ot.defaults.preset), new at(t, e) - } - - function at(t, e) { - e = e || {}, this.options = l(e, ot.defaults), this.options.inputTarget = this.options.inputTarget || t, this.handlers = {}, this.session = {}, this.recognizers = [], this.element = t, this.input = S(this), this.touchAction = new X(this, this.options.touchAction), rt(this, !0), r(e.recognizers, function (t) { - var e = this.add(new t[0](t[1])); - t[2] && e.recognizeWith(t[2]), t[3] && e.requireFailure(t[3]) - }, this) - } - - function rt(t, e) { - var i = t.element; - r(t.options.cssProps, function (t, n) { - i.style[k(i.style, n)] = e ? t : "" - }) - } - - function st(t, i) { - var n = e.createEvent("Event"); - n.initEvent(t, !0, !0), n.gesture = i, i.target.dispatchEvent(n) - } - var lt = ["", "webkit", "moz", "MS", "ms", "o"], - ct = e.createElement("div"), - ut = "function", - dt = Math.round, - pt = Math.abs, - ht = Date.now, - ft = 1, - vt = /mobile|tablet|ip(ad|hone|od)|android/i, - mt = "ontouchstart" in t, - gt = k(t, "PointerEvent") !== n, - yt = mt && vt.test(navigator.userAgent), - bt = "touch", - wt = "mouse", - kt = 25, - xt = 1, - Ct = 2, - Tt = 4, - St = 8, - Pt = 1, - At = 2, - Ot = 4, - Et = 8, - _t = 16, - Mt = At | Ot, - It = Et | _t, - Dt = Mt | It, - qt = ["x", "y"], - zt = ["clientX", "clientY"]; - T.prototype = { - handler: function () {}, - init: function () { - this.evEl && h(this.element, this.evEl, this.domHandler), this.evTarget && h(this.target, this.evTarget, this.domHandler), this.evWin && h(C(this.element), this.evWin, this.domHandler) - }, - destroy: function () { - this.evEl && f(this.element, this.evEl, this.domHandler), this.evTarget && f(this.target, this.evTarget, this.domHandler), this.evWin && f(C(this.element), this.evWin, this.domHandler) - } - }; - var Vt = { - mousedown: xt, - mousemove: Ct, - mouseup: Tt - }, - Ht = "mousedown", - Lt = "mousemove mouseup"; - c(L, T, { - handler: function (t) { - var e = Vt[t.type]; - e & xt && 0 === t.button && (this.pressed = !0), e & Ct && 1 !== t.which && (e = Tt), this.pressed && this.allow && (e & Tt && (this.pressed = !1), this.callback(this.manager, e, { - pointers: [t], - changedPointers: [t], - pointerType: wt, - srcEvent: t - })) - } - }); - var jt = { - pointerdown: xt, - pointermove: Ct, - pointerup: Tt, - pointercancel: St, - pointerout: St - }, - $t = { - 2: bt, - 3: "pen", - 4: wt, - 5: "kinect" - }, - Nt = "pointerdown", - Wt = "pointermove pointerup pointercancel"; - t.MSPointerEvent && (Nt = "MSPointerDown", Wt = "MSPointerMove MSPointerUp MSPointerCancel"), c(j, T, { - handler: function (t) { - var e = this.store, - i = !1, - n = t.type.toLowerCase().replace("ms", ""), - o = jt[n], - a = $t[t.pointerType] || t.pointerType, - r = a == bt, - s = y(e, t.pointerId, "pointerId"); - o & xt && (0 === t.button || r) ? 0 > s && (e.push(t), s = e.length - 1) : o & (Tt | St) && (i = !0), 0 > s || (e[s] = t, this.callback(this.manager, o, { - pointers: e, - changedPointers: [t], - pointerType: a, - srcEvent: t - }), i && e.splice(s, 1)) - } - }); - var Ft = { - touchstart: xt, - touchmove: Ct, - touchend: Tt, - touchcancel: St - }, - Qt = "touchstart", - Xt = "touchstart touchmove touchend touchcancel"; - c($, T, { - handler: function (t) { - var e = Ft[t.type]; - if (e === xt && (this.started = !0), this.started) { - var i = N.call(this, t, e); - e & (Tt | St) && 0 == i[0].length - i[1].length && (this.started = !1), this.callback(this.manager, e, { - pointers: i[0], - changedPointers: i[1], - pointerType: bt, - srcEvent: t - }) - } - } - }); - var Rt = { - touchstart: xt, - touchmove: Ct, - touchend: Tt, - touchcancel: St - }, - Yt = "touchstart touchmove touchend touchcancel"; - c(W, T, { - handler: function (t) { - var e = Rt[t.type], - i = F.call(this, t, e); - i && this.callback(this.manager, e, { - pointers: i[0], - changedPointers: i[1], - pointerType: bt, - srcEvent: t - }) - } - }), c(Q, T, { - handler: function (t, e, i) { - var n = i.pointerType == bt, - o = i.pointerType == wt; - if (n) this.mouse.allow = !1; - else if (o && !this.mouse.allow) return; - e & (Tt | St) && (this.mouse.allow = !0), this.callback(t, e, i) - }, - destroy: function () { - this.touch.destroy(), this.mouse.destroy() - } - }); - var Bt = k(ct.style, "touchAction"), - Ut = Bt !== n, - Gt = "compute", - Zt = "auto", - Jt = "manipulation", - Kt = "none", - te = "pan-x", - ee = "pan-y"; - X.prototype = { - set: function (t) { - t == Gt && (t = this.compute()), Ut && (this.manager.element.style[Bt] = t), this.actions = t.toLowerCase().trim() - }, - update: function () { - this.set(this.manager.options.touchAction) - }, - compute: function () { - var t = []; - return r(this.manager.recognizers, function (e) { - d(e.options.enable, [e]) && (t = t.concat(e.getTouchAction())) - }), R(t.join(" ")) - }, - preventDefaults: function (t) { - if (!Ut) { - var e = t.srcEvent, - i = t.offsetDirection; - if (this.manager.session.prevented) return void e.preventDefault(); - var n = this.actions, - o = m(n, Kt), - a = m(n, ee), - r = m(n, te); - return o || a && i & Mt || r && i & It ? this.preventSrc(e) : void 0 - } - }, - preventSrc: function (t) { - this.manager.session.prevented = !0, t.preventDefault() - } - }; - var ie = 1, - ne = 2, - oe = 4, - ae = 8, - re = ae, - se = 16; - Y.prototype = { - defaults: {}, - set: function (t) { - return s(this.options, t), this.manager && this.manager.touchAction.update(), this - }, - recognizeWith: function (t) { - if (a(t, "recognizeWith", this)) return this; - var e = this.simultaneous; - return t = G(t, this), e[t.id] || (e[t.id] = t, t.recognizeWith(this)), this - }, - dropRecognizeWith: function (t) { - return a(t, "dropRecognizeWith", this) ? this : (t = G(t, this), delete this.simultaneous[t.id], this) - }, - requireFailure: function (t) { - if (a(t, "requireFailure", this)) return this; - var e = this.requireFail; - return t = G(t, this), -1 === y(e, t) && (e.push(t), t.requireFailure(this)), this - }, - dropRequireFailure: function (t) { - if (a(t, "dropRequireFailure", this)) return this; - t = G(t, this); - var e = y(this.requireFail, t); - return e > -1 && this.requireFail.splice(e, 1), this - }, - hasRequireFailures: function () { - return this.requireFail.length > 0 - }, - canRecognizeWith: function (t) { - return !!this.simultaneous[t.id] - }, - emit: function (t) { - function e(e) { - i.manager.emit(i.options.event + (e ? B(n) : ""), t) - } - var i = this, - n = this.state; - ae > n && e(!0), e(), n >= ae && e(!0) - }, - tryEmit: function (t) { - return this.canEmit() ? this.emit(t) : void(this.state = 32) - }, - canEmit: function () { - for (var t = 0; t < this.requireFail.length;) { - if (!(this.requireFail[t].state & (32 | ie))) return !1; - t++ - } - return !0 - }, - recognize: function (t) { - var e = s({}, t); - return d(this.options.enable, [this, e]) ? (this.state & (re | se | 32) && (this.state = ie), this.state = this.process(e), void(this.state & (ne | oe | ae | se) && this.tryEmit(e))) : (this.reset(), void(this.state = 32)) - }, - process: function () {}, - getTouchAction: function () {}, - reset: function () {} - }, c(Z, Y, { - defaults: { - pointers: 1 - }, - attrTest: function (t) { - var e = this.options.pointers; - return 0 === e || t.pointers.length === e - }, - process: function (t) { - var e = this.state, - i = t.eventType, - n = e & (ne | oe), - o = this.attrTest(t); - return n && (i & St || !o) ? e | se : n || o ? i & Tt ? e | ae : e & ne ? e | oe : ne : 32 - } - }), c(J, Z, { - defaults: { - event: "pan", - threshold: 10, - pointers: 1, - direction: Dt - }, - getTouchAction: function () { - var t = this.options.direction, - e = []; - return t & Mt && e.push(ee), t & It && e.push(te), e - }, - directionTest: function (t) { - var e = this.options, - i = !0, - n = t.distance, - o = t.direction, - a = t.deltaX, - r = t.deltaY; - return o & e.direction || (e.direction & Mt ? (o = 0 === a ? Pt : 0 > a ? At : Ot, i = a != this.pX, n = Math.abs(t.deltaX)) : (o = 0 === r ? Pt : 0 > r ? Et : _t, i = r != this.pY, n = Math.abs(t.deltaY))), t.direction = o, i && n > e.threshold && o & e.direction - }, - attrTest: function (t) { - return Z.prototype.attrTest.call(this, t) && (this.state & ne || !(this.state & ne) && this.directionTest(t)) - }, - emit: function (t) { - this.pX = t.deltaX, this.pY = t.deltaY; - var e = U(t.direction); - e && this.manager.emit(this.options.event + e, t), this._super.emit.call(this, t) - } - }), c(K, Z, { - defaults: { - event: "pinch", - threshold: 0, - pointers: 2 - }, - getTouchAction: function () { - return [Kt] - }, - attrTest: function (t) { - return this._super.attrTest.call(this, t) && (Math.abs(t.scale - 1) > this.options.threshold || this.state & ne) - }, - emit: function (t) { - if (this._super.emit.call(this, t), 1 !== t.scale) { - var e = t.scale < 1 ? "in" : "out"; - this.manager.emit(this.options.event + e, t) - } - } - }), c(tt, Y, { - defaults: { - event: "press", - pointers: 1, - time: 500, - threshold: 5 - }, - getTouchAction: function () { - return [Zt] - }, - process: function (t) { - var e = this.options, - i = t.pointers.length === e.pointers, - n = t.distance < e.threshold, - a = t.deltaTime > e.time; - if (this._input = t, !n || !i || t.eventType & (Tt | St) && !a) this.reset(); - else if (t.eventType & xt) this.reset(), this._timer = o(function () { - this.state = re, this.tryEmit() - }, e.time, this); - else if (t.eventType & Tt) return re; - return 32 - }, - reset: function () { - clearTimeout(this._timer) - }, - emit: function (t) { - this.state === re && (t && t.eventType & Tt ? this.manager.emit(this.options.event + "up", t) : (this._input.timeStamp = ht(), this.manager.emit(this.options.event, this._input))) - } - }), c(et, Z, { - defaults: { - event: "rotate", - threshold: 0, - pointers: 2 - }, - getTouchAction: function () { - return [Kt] - }, - attrTest: function (t) { - return this._super.attrTest.call(this, t) && (Math.abs(t.rotation) > this.options.threshold || this.state & ne) - } - }), c(it, Z, { - defaults: { - event: "swipe", - threshold: 10, - velocity: .65, - direction: Mt | It, - pointers: 1 - }, - getTouchAction: function () { - return J.prototype.getTouchAction.call(this) - }, - attrTest: function (t) { - var e, i = this.options.direction; - return i & (Mt | It) ? e = t.velocity : i & Mt ? e = t.velocityX : i & It && (e = t.velocityY), this._super.attrTest.call(this, t) && i & t.direction && t.distance > this.options.threshold && pt(e) > this.options.velocity && t.eventType & Tt - }, - emit: function (t) { - var e = U(t.direction); - e && this.manager.emit(this.options.event + e, t), this.manager.emit(this.options.event, t) - } - }), c(nt, Y, { - defaults: { - event: "tap", - pointers: 1, - taps: 1, - interval: 300, - time: 250, - threshold: 2, - posThreshold: 10 - }, - getTouchAction: function () { - return [Jt] - }, - process: function (t) { - var e = this.options, - i = t.pointers.length === e.pointers, - n = t.distance < e.threshold, - a = t.deltaTime < e.time; - if (this.reset(), t.eventType & xt && 0 === this.count) return this.failTimeout(); - if (n && a && i) { - if (t.eventType != Tt) return this.failTimeout(); - var r = !this.pTime || t.timeStamp - this.pTime < e.interval, - s = !this.pCenter || q(this.pCenter, t.center) < e.posThreshold; - if (this.pTime = t.timeStamp, this.pCenter = t.center, s && r ? this.count += 1 : this.count = 1, this._input = t, 0 === this.count % e.taps) return this.hasRequireFailures() ? (this._timer = o(function () { - this.state = re, this.tryEmit() - }, e.interval, this), ne) : re - } - return 32 - }, - failTimeout: function () { - return this._timer = o(function () { - this.state = 32 - }, this.options.interval, this), 32 - }, - reset: function () { - clearTimeout(this._timer) - }, - emit: function () { - this.state == re && (this._input.tapCount = this.count, this.manager.emit(this.options.event, this._input)) - } - }), ot.VERSION = "2.0.4", ot.defaults = { - domEvents: !1, - touchAction: Gt, - enable: !0, - inputTarget: null, - inputClass: null, - preset: [[et, { - enable: !1 - }], [K, { - enable: !1 - }, ["rotate"]], [it, { - direction: Mt - }], [J, { - direction: Mt - }, ["swipe"]], [nt], [nt, { - event: "doubletap", - taps: 2 - }, ["tap"]], [tt]], - cssProps: { - userSelect: "default", - touchSelect: "none", - touchCallout: "none", - contentZooming: "none", - userDrag: "none", - tapHighlightColor: "rgba(0,0,0,0)" - } - }; - at.prototype = { - set: function (t) { - return s(this.options, t), t.touchAction && this.touchAction.update(), t.inputTarget && (this.input.destroy(), this.input.target = t.inputTarget, this.input.init()), this - }, - stop: function (t) { - this.session.stopped = t ? 2 : 1 - }, - recognize: function (t) { - var e = this.session; - if (!e.stopped) { - this.touchAction.preventDefaults(t); - var i, n = this.recognizers, - o = e.curRecognizer; - (!o || o && o.state & re) && (o = e.curRecognizer = null); - for (var a = 0; a < n.length;) i = n[a], 2 === e.stopped || o && i != o && !i.canRecognizeWith(o) ? i.reset() : i.recognize(t), !o && i.state & (ne | oe | ae) && (o = e.curRecognizer = i), a++ - } - }, - get: function (t) { - if (t instanceof Y) return t; - for (var e = this.recognizers, i = 0; i < e.length; i++) - if (e[i].options.event == t) return e[i]; - return null - }, - add: function (t) { - if (a(t, "add", this)) return this; - var e = this.get(t.options.event); - return e && this.remove(e), this.recognizers.push(t), t.manager = this, this.touchAction.update(), t - }, - remove: function (t) { - if (a(t, "remove", this)) return this; - var e = this.recognizers; - return t = this.get(t), e.splice(y(e, t), 1), this.touchAction.update(), this - }, - on: function (t, e) { - var i = this.handlers; - return r(g(t), function (t) { - i[t] = i[t] || [], i[t].push(e) - }), this - }, - off: function (t, e) { - var i = this.handlers; - return r(g(t), function (t) { - e ? i[t].splice(y(i[t], e), 1) : delete i[t] - }), this - }, - emit: function (t, e) { - this.options.domEvents && st(t, e); - var i = this.handlers[t] && this.handlers[t].slice(); - if (i && i.length) { - e.type = t, e.preventDefault = function () { - e.srcEvent.preventDefault() - }; - for (var n = 0; n < i.length;) i[n](e), n++ - } - }, - destroy: function () { - this.element && rt(this, !1), this.handlers = {}, this.session = {}, this.input.destroy(), this.element = null - } - }, s(ot, { - INPUT_START: xt, - INPUT_MOVE: Ct, - INPUT_END: Tt, - INPUT_CANCEL: St, - STATE_POSSIBLE: ie, - STATE_BEGAN: ne, - STATE_CHANGED: oe, - STATE_ENDED: ae, - STATE_RECOGNIZED: re, - STATE_CANCELLED: se, - STATE_FAILED: 32, - DIRECTION_NONE: Pt, - DIRECTION_LEFT: At, - DIRECTION_RIGHT: Ot, - DIRECTION_UP: Et, - DIRECTION_DOWN: _t, - DIRECTION_HORIZONTAL: Mt, - DIRECTION_VERTICAL: It, - DIRECTION_ALL: Dt, - Manager: at, - Input: T, - TouchAction: X, - TouchInput: W, - MouseInput: L, - PointerEventInput: j, - TouchMouseInput: Q, - SingleTouchInput: $, - Recognizer: Y, - AttrRecognizer: Z, - Tap: nt, - Pan: J, - Swipe: it, - Pinch: K, - Rotate: et, - Press: tt, - on: h, - off: f, - each: r, - merge: l, - extend: s, - inherit: c, - bindFn: u, - prefixed: k - }), typeof define == ut && define.amd ? define(function () { - return ot - }) : "undefined" != typeof module && module.exports ? module.exports = ot : t.Hammer = ot - }(window, document), - function (t) { - "function" == typeof define && define.amd ? define(["jquery", "hammerjs"], t) : "object" == typeof exports ? t(require("jquery"), require("hammerjs")) : t(jQuery, Hammer) - }(function (t, e) { - function i(i, n) { - var o = t(i); - o.data("hammer") || o.data("hammer", new e(o[0], n)) - } - t.fn.hammer = function (t) { - return this.each(function () { - i(this, t) - }) - }, e.Manager.prototype.emit = function (e) { - return function (i, n) { - e.call(this, i, n), t(this.element).trigger({ - type: i, - gesture: n - }) - } - }(e.Manager.prototype.emit) - }), - function (t) { - t.Package ? Materialize = {} : t.Materialize = {} - }(window), "undefined" == typeof exports || exports.nodeType || ("undefined" != typeof module && !module.nodeType && module.exports && (exports = module.exports = Materialize), exports.default = Materialize), - function (t) { - for (var e = 0, i = ["webkit", "moz"], n = t.requestAnimationFrame, o = t.cancelAnimationFrame, a = i.length; --a >= 0 && !n;) n = t[i[a] + "RequestAnimationFrame"], o = t[i[a] + "CancelRequestAnimationFrame"]; - n && o || (n = function (t) { - var i = +Date.now(), - n = Math.max(e + 16, i); - return setTimeout(function () { - t(e = n) - }, n - i) - }, o = clearTimeout), t.requestAnimationFrame = n, t.cancelAnimationFrame = o - }(window), Materialize.objectSelectorString = function (t) { - return ((t.prop("tagName") || "") + (t.attr("id") || "") + (t.attr("class") || "")).replace(/\s/g, "") - }, Materialize.guid = function () { - function t() { - return Math.floor(65536 * (1 + Math.random())).toString(16).substring(1) - } - return function () { - return t() + t() + "-" + t() + "-" + t() + "-" + t() + "-" + t() + t() + t() - } - }(), Materialize.escapeHash = function (t) { - return t.replace(/(:|\.|\[|\]|,|=)/g, "\\$1") - }, Materialize.elementOrParentIsFixed = function (t) { - var e = $(t), - i = !1; - return e.add(e.parents()).each(function () { - if ("fixed" === $(this).css("position")) return i = !0, !1 - }), i - }; -var getTime = Date.now || function () { - return (new Date).getTime() -}; -Materialize.throttle = function (t, e, i) { - var n, o, a, r = null, - s = 0; - i || (i = {}); - var l = function () { - s = !1 === i.leading ? 0 : getTime(), r = null, a = t.apply(n, o), n = o = null - }; - return function () { - var c = getTime(); - s || !1 !== i.leading || (s = c); - var u = e - (c - s); - return n = this, o = arguments, u <= 0 ? (clearTimeout(r), r = null, s = c, a = t.apply(n, o), n = o = null) : r || !1 === i.trailing || (r = setTimeout(l, u)), a - } -}; -var Vel; -Vel = jQuery ? jQuery.Velocity : $ ? $.Velocity : Velocity, Materialize.Vel = Vel || Velocity, - function (t) { - t.fn.collapsible = function (e, i) { - var n = { - accordion: void 0, - onOpen: void 0, - onClose: void 0 - }, - o = e; - return e = t.extend(n, e), this.each(function () { - function n(e) { - p = d.find("> li > .collapsible-header"), e.hasClass("active") ? e.parent().addClass("active") : e.parent().removeClass("active"), e.parent().hasClass("active") ? e.siblings(".collapsible-body").stop(!0, !1).slideDown({ - duration: 350, - easing: "easeOutQuart", - queue: !1, - complete: function () { - t(this).css("height", "") - } - }) : e.siblings(".collapsible-body").stop(!0, !1).slideUp({ - duration: 350, - easing: "easeOutQuart", - queue: !1, - complete: function () { - t(this).css("height", "") - } - }), p.not(e).removeClass("active").parent().removeClass("active"), p.not(e).parent().children(".collapsible-body").stop(!0, !1).each(function () { - t(this).is(":visible") && t(this).slideUp({ - duration: 350, - easing: "easeOutQuart", - queue: !1, - complete: function () { - t(this).css("height", ""), s(t(this).siblings(".collapsible-header")) - } - }) - }) - } - - function a(e) { - e.hasClass("active") ? e.parent().addClass("active") : e.parent().removeClass("active"), e.parent().hasClass("active") ? e.siblings(".collapsible-body").stop(!0, !1).slideDown({ - duration: 350, - easing: "easeOutQuart", - queue: !1, - complete: function () { - t(this).css("height", "") - } - }) : e.siblings(".collapsible-body").stop(!0, !1).slideUp({ - duration: 350, - easing: "easeOutQuart", - queue: !1, - complete: function () { - t(this).css("height", "") - } - }) - } - - function r(t, i) { - i || t.toggleClass("active"), e.accordion || "accordion" === h || void 0 === h ? n(t) : a(t), s(t) - } - - function s(t) { - t.hasClass("active") ? "function" == typeof e.onOpen && e.onOpen.call(this, t.parent()) : "function" == typeof e.onClose && e.onClose.call(this, t.parent()) - } - - function l(t) { - return c(t).length > 0 - } - - function c(t) { - return t.closest("li > .collapsible-header") - } - - function u() { - d.off("click.collapse", "> li > .collapsible-header") - } - var d = t(this), - p = t(this).find("> li > .collapsible-header"), - h = d.data("collapsible"); - if ("destroy" !== o) - if (i >= 0 && i < p.length) { - var f = p.eq(i); - f.length && ("open" === o || "close" === o && f.hasClass("active")) && r(f) - } else u(), d.on("click.collapse", "> li > .collapsible-header", function (e) { - var i = t(e.target); - l(i) && (i = c(i)), r(i) - }), e.accordion || "accordion" === h || void 0 === h ? r(p.filter(".active").first(), !0) : p.filter(".active").each(function () { - r(t(this), !0) - }); - else u() - }) - }, t(document).ready(function () { - t(".collapsible").collapsible() - }) - }(jQuery), - function (t) { - t.fn.scrollTo = function (e) { - return t(this).scrollTop(t(this).scrollTop() - t(this).offset().top + t(e).offset().top), this - }, t.fn.dropdown = function (e) { - var i = { - inDuration: 300, - outDuration: 225, - constrainWidth: !0, - hover: !1, - gutter: 0, - belowOrigin: !1, - alignment: "left", - stopPropagation: !1 - }; - return "open" === e ? (this.each(function () { - t(this).trigger("open") - }), !1) : "close" === e ? (this.each(function () { - t(this).trigger("close") - }), !1) : void this.each(function () { - function n() { - void 0 !== r.data("induration") && (s.inDuration = r.data("induration")), void 0 !== r.data("outduration") && (s.outDuration = r.data("outduration")), void 0 !== r.data("constrainwidth") && (s.constrainWidth = r.data("constrainwidth")), void 0 !== r.data("hover") && (s.hover = r.data("hover")), void 0 !== r.data("gutter") && (s.gutter = r.data("gutter")), void 0 !== r.data("beloworigin") && (s.belowOrigin = r.data("beloworigin")), void 0 !== r.data("alignment") && (s.alignment = r.data("alignment")), void 0 !== r.data("stoppropagation") && (s.stopPropagation = r.data("stoppropagation")) - } - - function o(e) { - "focus" === e && (l = !0), n(), c.addClass("active"), r.addClass("active"); - var i = r[0].getBoundingClientRect().width; - !0 === s.constrainWidth ? c.css("width", i) : c.css("white-space", "nowrap"); - var o = window.innerHeight, - u = r.innerHeight(), - d = r.offset().left, - p = r.offset().top - t(window).scrollTop(), - h = s.alignment, - f = 0, - v = 0, - m = 0; - !0 === s.belowOrigin && (m = u); - var g = 0, - y = 0, - b = r.parent(); - if (b.is("body") || (b[0].scrollHeight > b[0].clientHeight && (g = b[0].scrollTop), b[0].scrollWidth > b[0].clientWidth && (y = b[0].scrollLeft)), d + c.innerWidth() > t(window).width() ? h = "right" : d - c.innerWidth() + r.innerWidth() < 0 && (h = "left"), p + c.innerHeight() > o) - if (p + u - c.innerHeight() < 0) { - var w = o - p - m; - c.css("max-height", w) - } else m || (m += u), m -= c.innerHeight(); - "left" === h ? (f = s.gutter, v = r.position().left + f) : "right" === h && (c.stop(!0, !0).css({ - opacity: 0, - left: 0 - }), v = r.position().left + i - c.width() + (f = -s.gutter)), c.css({ - position: "absolute", - top: r.position().top + m + g, - left: v + y - }), c.slideDown({ - queue: !1, - duration: s.inDuration, - easing: "easeOutCubic", - complete: function () { - t(this).css("height", "") - } - }).animate({ - opacity: 1 - }, { - queue: !1, - duration: s.inDuration, - easing: "easeOutSine" - }), setTimeout(function () { - t(document).on("click." + c.attr("id"), function (e) { - a(), t(document).off("click." + c.attr("id")) - }) - }, 0) - } - - function a() { - l = !1, c.fadeOut(s.outDuration), c.removeClass("active"), r.removeClass("active"), t(document).off("click." + c.attr("id")), setTimeout(function () { - c.css("max-height", "") - }, s.outDuration) - } - var r = t(this), - s = t.extend({}, i, e), - l = !1, - c = t("#" + r.attr("data-activates")); - if (n(), r.after(c), s.hover) { - var u = !1; - r.off("click." + r.attr("id")), r.on("mouseenter", function (t) { - !1 === u && (o(), u = !0) - }), r.on("mouseleave", function (e) { - var i = e.toElement || e.relatedTarget; - t(i).closest(".dropdown-content").is(c) || (c.stop(!0, !0), a(), u = !1) - }), c.on("mouseleave", function (e) { - var i = e.toElement || e.relatedTarget; - t(i).closest(".dropdown-button").is(r) || (c.stop(!0, !0), a(), u = !1) - }) - } else r.off("click." + r.attr("id")), r.on("click." + r.attr("id"), function (e) { - l || (r[0] != e.currentTarget || r.hasClass("active") || 0 !== t(e.target).closest(".dropdown-content").length ? r.hasClass("active") && (a(), t(document).off("click." + c.attr("id"))) : (e.preventDefault(), s.stopPropagation && e.stopPropagation(), o("click"))) - }); - r.on("open", function (t, e) { - o(e) - }), r.on("close", a) - }) - }, t(document).ready(function () { - t(".dropdown-button").dropdown() - }) - }(jQuery), - function (t, e) { - "use strict"; - var i = { - opacity: .5, - inDuration: 250, - outDuration: 250, - ready: void 0, - complete: void 0, - dismissible: !0, - startingTop: "4%", - endingTop: "10%" - }, - n = function () { - function n(e, i) { - _classCallCheck(this, n), e[0].M_Modal && e[0].M_Modal.destroy(), this.$el = e, this.options = t.extend({}, n.defaults, i), this.isOpen = !1, this.$el[0].M_Modal = this, this.id = e.attr("id"), this.openingTrigger = void 0, this.$overlay = t(''), n._increment++, n._count++, this.$overlay[0].style.zIndex = 1e3 + 2 * n._increment, this.$el[0].style.zIndex = 1e3 + 2 * n._increment + 1, this.setupEventHandlers() - } - return _createClass(n, [{ - key: "getInstance", - value: function () { - return this - } - }, { - key: "destroy", - value: function () { - this.removeEventHandlers(), this.$el[0].removeAttribute("style"), this.$overlay[0].parentNode && this.$overlay[0].parentNode.removeChild(this.$overlay[0]), this.$el[0].M_Modal = void 0, n._count-- - } - }, { - key: "setupEventHandlers", - value: function () { - this.handleOverlayClickBound = this.handleOverlayClick.bind(this), this.handleModalCloseClickBound = this.handleModalCloseClick.bind(this), 1 === n._count && document.body.addEventListener("click", this.handleTriggerClick), this.$overlay[0].addEventListener("click", this.handleOverlayClickBound), this.$el[0].addEventListener("click", this.handleModalCloseClickBound) - } - }, { - key: "removeEventHandlers", - value: function () { - 0 === n._count && document.body.removeEventListener("click", this.handleTriggerClick), this.$overlay[0].removeEventListener("click", this.handleOverlayClickBound), this.$el[0].removeEventListener("click", this.handleModalCloseClickBound) - } - }, { - key: "handleTriggerClick", - value: function (e) { - var i = t(e.target).closest(".modal-trigger"); - if (e.target && i.length) { - var n = i[0].getAttribute("href"); - n = n ? n.slice(1) : i[0].getAttribute("data-target"); - var o = document.getElementById(n).M_Modal; - o && o.open(i), e.preventDefault() - } - } - }, { - key: "handleOverlayClick", - value: function () { - this.options.dismissible && this.close() - } - }, { - key: "handleModalCloseClick", - value: function (e) { - var i = t(e.target).closest(".modal-close"); - e.target && i.length && this.close() - } - }, { - key: "handleKeydown", - value: function (t) { - 27 === t.keyCode && this.options.dismissible && this.close() - } - }, { - key: "animateIn", - value: function () { - var i = this; - t.extend(this.$el[0].style, { - display: "block", - opacity: 0 - }), t.extend(this.$overlay[0].style, { - display: "block", - opacity: 0 - }), e(this.$overlay[0], { - opacity: this.options.opacity - }, { - duration: this.options.inDuration, - queue: !1, - ease: "easeOutCubic" - }); - var n = { - duration: this.options.inDuration, - queue: !1, - ease: "easeOutCubic", - complete: function () { - "function" == typeof i.options.ready && i.options.ready.call(i, i.$el, i.openingTrigger) - } - }; - this.$el[0].classList.contains("bottom-sheet") ? e(this.$el[0], { - bottom: 0, - opacity: 1 - }, n) : (e.hook(this.$el[0], "scaleX", .7), this.$el[0].style.top = this.options.startingTop, e(this.$el[0], { - top: this.options.endingTop, - opacity: 1, - scaleX: 1 - }, n)) - } - }, { - key: "animateOut", - value: function () { - var t = this; - e(this.$overlay[0], { - opacity: 0 - }, { - duration: this.options.outDuration, - queue: !1, - ease: "easeOutQuart" - }); - var i = { - duration: this.options.outDuration, - queue: !1, - ease: "easeOutCubic", - complete: function () { - t.$el[0].style.display = "none", "function" == typeof t.options.complete && t.options.complete.call(t, t.$el), t.$overlay[0].parentNode.removeChild(t.$overlay[0]) - } - }; - this.$el[0].classList.contains("bottom-sheet") ? e(this.$el[0], { - bottom: "-100%", - opacity: 0 - }, i) : e(this.$el[0], { - top: this.options.startingTop, - opacity: 0, - scaleX: .7 - }, i) - } - }, { - key: "open", - value: function (t) { - if (!this.isOpen) { - this.isOpen = !0; - var e = document.body; - return e.style.overflow = "hidden", this.$el[0].classList.add("open"), e.appendChild(this.$overlay[0]), this.openingTrigger = t || void 0, this.options.dismissible && (this.handleKeydownBound = this.handleKeydown.bind(this), document.addEventListener("keydown", this.handleKeydownBound)), this.animateIn(), this - } - } - }, { - key: "close", - value: function () { - if (this.isOpen) return this.isOpen = !1, this.$el[0].classList.remove("open"), document.body.style.overflow = "", this.options.dismissible && document.removeEventListener("keydown", this.handleKeydownBound), this.animateOut(), this - } - }], [{ - key: "init", - value: function (e, i) { - var o = []; - return e.each(function () { - o.push(new n(t(this), i)) - }), o - } - }, { - key: "defaults", - get: function () { - return i - } - }]), n - }(); - n._increment = 0, n._count = 0, Materialize.Modal = n, t.fn.modal = function (e) { - return n.prototype[e] ? "get" === e.slice(0, 3) ? this.first()[0].M_Modal[e]() : this.each(function () { - this.M_Modal[e]() - }) : "object" != typeof e && e ? void t.error("Method " + e + " does not exist on jQuery.modal") : (n.init(this, arguments[0]), this) - } - }(jQuery, Materialize.Vel), - function (t) { - t.fn.materialbox = function () { - return this.each(function () { - function e() { - a = !1; - var e = s.parent(".material-placeholder"), - n = (window.innerWidth, window.innerHeight, s.data("width")), - l = s.data("height"); - s.velocity("stop", !0), t("#materialbox-overlay").velocity("stop", !0), t(".materialbox-caption").velocity("stop", !0), t(window).off("scroll.materialbox"), t(document).off("keyup.materialbox"), t(window).off("resize.materialbox"), t("#materialbox-overlay").velocity({ - opacity: 0 - }, { - duration: r, - queue: !1, - easing: "easeOutQuad", - complete: function () { - o = !1, t(this).remove() - } - }), s.velocity({ - width: n, - height: l, - left: 0, - top: 0 - }, { - duration: r, - queue: !1, - easing: "easeOutQuad", - complete: function () { - e.css({ - height: "", - width: "", - position: "", - top: "", - left: "" - }), s.removeAttr("style"), s.attr("style", c), s.removeClass("active"), a = !0, i && i.css("overflow", "") - } - }), t(".materialbox-caption").velocity({ - opacity: 0 - }, { - duration: r, - queue: !1, - easing: "easeOutQuad", - complete: function () { - t(this).remove() - } - }) - } - if (!t(this).hasClass("initialized")) { - t(this).addClass("initialized"); - var i, n, o = !1, - a = !0, - r = 200, - s = t(this), - l = t("
").addClass("material-placeholder"), - c = s.attr("style"); - s.wrap(l), s.on("click", function () { - var r = s.parent(".material-placeholder"), - l = window.innerWidth, - c = window.innerHeight, - u = s.width(), - d = s.height(); - if (!1 === a) return e(), !1; - if (o && !0 === a) return e(), !1; - a = !1, s.addClass("active"), o = !0, r.css({ - width: r[0].getBoundingClientRect().width, - height: r[0].getBoundingClientRect().height, - position: "relative", - top: 0, - left: 0 - }), i = void 0, n = r[0].parentNode; - for (; null !== n && !t(n).is(document);) { - var p = t(n); - "visible" !== p.css("overflow") && (p.css("overflow", "visible"), i = void 0 === i ? p : i.add(p)), n = n.parentNode - } - s.css({ - position: "absolute", - "z-index": 1e3, - "will-change": "left, top, width, height" - }).data("width", u).data("height", d); - var h = t('
').css({ - opacity: 0 - }).click(function () { - !0 === a && e() - }); - s.before(h); - var f = h[0].getBoundingClientRect(); - if (h.css({ - width: l, - height: c, - left: -1 * f.left, - top: -1 * f.top - }), h.velocity({ - opacity: 1 - }, { - duration: 275, - queue: !1, - easing: "easeOutQuad" - }), "" !== s.data("caption")) { - var v = t('
'); - v.text(s.data("caption")), t("body").append(v), v.css({ - display: "inline" - }), v.velocity({ - opacity: 1 - }, { - duration: 275, - queue: !1, - easing: "easeOutQuad" - }) - } - var m = 0, - g = 0; - u / l > d / c ? (m = .9 * l, g = .9 * l * (d / u)) : (m = .9 * c * (u / d), g = .9 * c), s.hasClass("responsive-img") ? s.velocity({ - "max-width": m, - width: u - }, { - duration: 0, - queue: !1, - complete: function () { - s.css({ - left: 0, - top: 0 - }).velocity({ - height: g, - width: m, - left: t(document).scrollLeft() + l / 2 - s.parent(".material-placeholder").offset().left - m / 2, - top: t(document).scrollTop() + c / 2 - s.parent(".material-placeholder").offset().top - g / 2 - }, { - duration: 275, - queue: !1, - easing: "easeOutQuad", - complete: function () { - a = !0 - } - }) - } - }) : s.css("left", 0).css("top", 0).velocity({ - height: g, - width: m, - left: t(document).scrollLeft() + l / 2 - s.parent(".material-placeholder").offset().left - m / 2, - top: t(document).scrollTop() + c / 2 - s.parent(".material-placeholder").offset().top - g / 2 - }, { - duration: 275, - queue: !1, - easing: "easeOutQuad", - complete: function () { - a = !0 - } - }), t(window).on("scroll.materialbox", function () { - o && e() - }), t(window).on("resize.materialbox", function () { - o && e() - }), t(document).on("keyup.materialbox", function (t) { - 27 === t.keyCode && !0 === a && o && e() - }) - }) - } - }) - }, t(document).ready(function () { - t(".materialboxed").materialbox() - }) - }(jQuery), - function (t) { - t.fn.parallax = function () { - var e = t(window).width(); - return this.each(function (i) { - function n(i) { - var n; - n = e < 601 ? o.height() > 0 ? o.height() : o.children("img").height() : o.height() > 0 ? o.height() : 500; - var a = o.children("img").first(), - r = a.height() - n, - s = o.offset().top + n, - l = o.offset().top, - c = t(window).scrollTop(), - u = window.innerHeight, - d = (c + u - l) / (n + u), - p = Math.round(r * d); - i && a.css("display", "block"), s > c && l < c + u && a.css("transform", "translate3D(-50%," + p + "px, 0)") - } - var o = t(this); - o.addClass("parallax"), o.children("img").one("load", function () { - n(!0) - }).each(function () { - this.complete && t(this).trigger("load") - }), t(window).scroll(function () { - e = t(window).width(), n(!1) - }), t(window).resize(function () { - e = t(window).width(), n(!1) - }) - }) - } - }(jQuery), - function (t) { - var e = { - init: function (e) { - var i = { - onShow: null, - swipeable: !1, - responsiveThreshold: 1 / 0 - }; - e = t.extend(i, e); - var n = Materialize.objectSelectorString(t(this)); - return this.each(function (i) { - var o, a, r, s, l, c = n + i, - u = t(this), - d = t(window).width(), - p = u.find("li.tab a"), - h = u.width(), - f = t(), - v = Math.max(h, u[0].scrollWidth) / p.length, - m = 0, - g = 0, - y = !1, - b = function (t) { - return Math.ceil(h - t.position().left - t[0].getBoundingClientRect().width - u.scrollLeft()) - }, - w = function (t) { - return Math.floor(t.position().left + u.scrollLeft()) - }, - k = function (t) { - m - t >= 0 ? (s.velocity({ - right: b(o) - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad" - }), s.velocity({ - left: w(o) - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad", - delay: 90 - })) : (s.velocity({ - left: w(o) - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad" - }), s.velocity({ - right: b(o) - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad", - delay: 90 - })) - }; - e.swipeable && d > e.responsiveThreshold && (e.swipeable = !1), 0 === (o = t(p.filter('[href="' + location.hash + '"]'))).length && (o = t(this).find("li.tab a.active").first()), 0 === o.length && (o = t(this).find("li.tab a").first()), o.addClass("active"), (m = p.index(o)) < 0 && (m = 0), void 0 !== o[0] && (a = t(o[0].hash)).addClass("active"), u.find(".indicator").length || u.append('
  • '), s = u.find(".indicator"), u.append(s), u.is(":visible") && setTimeout(function () { - s.css({ - right: b(o) - }), s.css({ - left: w(o) - }) - }, 0), t(window).off("resize.tabs-" + c).on("resize.tabs-" + c, function () { - h = u.width(), v = Math.max(h, u[0].scrollWidth) / p.length, m < 0 && (m = 0), 0 !== v && 0 !== h && (s.css({ - right: b(o) - }), s.css({ - left: w(o) - })) - }), e.swipeable ? (p.each(function () { - var e = t(Materialize.escapeHash(this.hash)); - e.addClass("carousel-item"), f = f.add(e) - }), r = f.wrapAll(''), f.css("display", ""), t(".tabs-content.carousel").carousel({ - fullWidth: !0, - noWrap: !0, - onCycleTo: function (t) { - if (!y) { - var i = m; - m = r.index(t), o.removeClass("active"), (o = p.eq(m)).addClass("active"), k(i), "function" == typeof e.onShow && e.onShow.call(u[0], a) - } - } - })) : p.not(o).each(function () { - t(Materialize.escapeHash(this.hash)).hide() - }), u.off("click.tabs").on("click.tabs", "a", function (i) { - if (t(this).parent().hasClass("disabled")) i.preventDefault(); - else if (!t(this).attr("target")) { - y = !0, h = u.width(), v = Math.max(h, u[0].scrollWidth) / p.length, o.removeClass("active"); - var n = a; - o = t(this), a = t(Materialize.escapeHash(this.hash)), p = u.find("li.tab a"); - o.position(); - o.addClass("active"), g = m, (m = p.index(t(this))) < 0 && (m = 0), e.swipeable ? f.length && f.carousel("set", m, function () { - "function" == typeof e.onShow && e.onShow.call(u[0], a) - }) : (void 0 !== a && (a.show(), a.addClass("active"), "function" == typeof e.onShow && e.onShow.call(this, a)), void 0 === n || n.is(a) || (n.hide(), n.removeClass("active"))), l = setTimeout(function () { - y = !1 - }, 300), k(g), i.preventDefault() - } - }) - }) - }, - select_tab: function (t) { - this.find('a[href="#' + t + '"]').trigger("click") - } - }; - t.fn.tabs = function (i) { - return e[i] ? e[i].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof i && i ? void t.error("Method " + i + " does not exist on jQuery.tabs") : e.init.apply(this, arguments) - }, t(document).ready(function () { - t("ul.tabs").tabs() - }) - }(jQuery), - function (t) { - t.fn.tooltip = function (i) { - var n = { - delay: 350, - tooltip: "", - position: "bottom", - html: !1 - }; - return "remove" === i ? (this.each(function () { - t("#" + t(this).attr("data-tooltip-id")).remove(), t(this).removeAttr("data-tooltip-id"), t(this).off("mouseenter.tooltip mouseleave.tooltip") - }), !1) : (i = t.extend(n, i), this.each(function () { - var n = Materialize.guid(), - o = t(this); - o.attr("data-tooltip-id") && t("#" + o.attr("data-tooltip-id")).remove(), o.attr("data-tooltip-id", n); - var a, r, s, l, c, u, d = function () { - a = o.attr("data-html") ? "true" === o.attr("data-html") : i.html, r = o.attr("data-delay"), r = void 0 === r || "" === r ? i.delay : r, s = o.attr("data-position"), s = void 0 === s || "" === s ? i.position : s, l = o.attr("data-tooltip"), l = void 0 === l || "" === l ? i.tooltip : l - }; - d(); - c = function () { - var e = t('
    '); - return l = a ? t("").html(l) : t("").text(l), e.append(l).appendTo(t("body")).attr("id", n), (u = t('
    ')).appendTo(e), e - }(), o.off("mouseenter.tooltip mouseleave.tooltip"); - var p, h = !1; - o.on({ - "mouseenter.tooltip": function (t) { - p = setTimeout(function () { - d(), h = !0, c.velocity("stop"), u.velocity("stop"), c.css({ - visibility: "visible", - left: "0px", - top: "0px" - }); - var t, i, n, a = o.outerWidth(), - r = o.outerHeight(), - l = c.outerHeight(), - p = c.outerWidth(), - f = "0px", - v = "0px", - m = u[0].offsetWidth, - g = u[0].offsetHeight, - y = 8, - b = 8, - w = 0; - "top" === s ? (t = o.offset().top - l - 5, i = o.offset().left + a / 2 - p / 2, n = e(i, t, p, l), f = "-10px", u.css({ - bottom: 0, - left: 0, - borderRadius: "14px 14px 0 0", - transformOrigin: "50% 100%", - marginTop: l, - marginLeft: p / 2 - m / 2 - })) : "left" === s ? (t = o.offset().top + r / 2 - l / 2, i = o.offset().left - p - 5, n = e(i, t, p, l), v = "-10px", u.css({ - top: "-7px", - right: 0, - width: "14px", - height: "14px", - borderRadius: "14px 0 0 14px", - transformOrigin: "95% 50%", - marginTop: l / 2, - marginLeft: p - })) : "right" === s ? (t = o.offset().top + r / 2 - l / 2, i = o.offset().left + a + 5, n = e(i, t, p, l), v = "+10px", u.css({ - top: "-7px", - left: 0, - width: "14px", - height: "14px", - borderRadius: "0 14px 14px 0", - transformOrigin: "5% 50%", - marginTop: l / 2, - marginLeft: "0px" - })) : (t = o.offset().top + o.outerHeight() + 5, i = o.offset().left + a / 2 - p / 2, n = e(i, t, p, l), f = "+10px", u.css({ - top: 0, - left: 0, - marginLeft: p / 2 - m / 2 - })), c.css({ - top: n.y, - left: n.x - }), y = Math.SQRT2 * p / parseInt(m), b = Math.SQRT2 * l / parseInt(g), w = Math.max(y, b), c.velocity({ - translateY: f, - translateX: v - }, { - duration: 350, - queue: !1 - }).velocity({ - opacity: 1 - }, { - duration: 300, - delay: 50, - queue: !1 - }), u.css({ - visibility: "visible" - }).velocity({ - opacity: 1 - }, { - duration: 55, - delay: 0, - queue: !1 - }).velocity({ - scaleX: w, - scaleY: w - }, { - duration: 300, - delay: 0, - queue: !1, - easing: "easeInOutQuad" - }) - }, r) - }, - "mouseleave.tooltip": function () { - h = !1, clearTimeout(p), setTimeout(function () { - !0 !== h && (c.velocity({ - opacity: 0, - translateY: 0, - translateX: 0 - }, { - duration: 225, - queue: !1 - }), u.velocity({ - opacity: 0, - scaleX: 1, - scaleY: 1 - }, { - duration: 225, - queue: !1, - complete: function () { - u.css({ - visibility: "hidden" - }), c.css({ - visibility: "hidden" - }), h = !1 - } - })) - }, 225) - } - }) - })) - }; - var e = function (e, i, n, o) { - var a = e, - r = i; - return a < 0 ? a = 4 : a + n > window.innerWidth && (a -= a + n - window.innerWidth), r < 0 ? r = 4 : r + o > window.innerHeight + t(window).scrollTop && (r -= r + o - window.innerHeight), { - x: a, - y: r - } - }; - t(document).ready(function () { - t(".tooltipped").tooltip() - }) - }(jQuery), - function (t) { - "use strict"; - - function e(t) { - return null !== t && t === t.window - } - - function i(t) { - return e(t) ? t : 9 === t.nodeType && t.defaultView - } - - function n(t) { - var e, n, o = { - top: 0, - left: 0 - }, - a = t && t.ownerDocument; - return e = a.documentElement, void 0 !== t.getBoundingClientRect && (o = t.getBoundingClientRect()), n = i(a), { - top: o.top + n.pageYOffset - e.clientTop, - left: o.left + n.pageXOffset - e.clientLeft - } - } - - function o(t) { - var e = ""; - for (var i in t) t.hasOwnProperty(i) && (e += i + ":" + t[i] + ";"); - return e - } - - function a(t) { - if (!1 === u.allowEvent(t)) return null; - for (var e = null, i = t.target || t.srcElement; null !== i.parentNode;) { - if (!(i instanceof SVGElement) && -1 !== i.className.indexOf("waves-effect")) { - e = i; - break - } - i = i.parentNode - } - return e - } - - function r(e) { - var i = a(e); - null !== i && (c.show(e, i), "ontouchstart" in t && (i.addEventListener("touchend", c.hide, !1), i.addEventListener("touchcancel", c.hide, !1)), i.addEventListener("mouseup", c.hide, !1), i.addEventListener("mouseleave", c.hide, !1), i.addEventListener("dragend", c.hide, !1)) - } - var s = s || {}, - l = document.querySelectorAll.bind(document), - c = { - duration: 750, - show: function (t, e) { - if (2 === t.button) return !1; - var i = e || this, - a = document.createElement("div"); - a.className = "waves-ripple", i.appendChild(a); - var r = n(i), - s = t.pageY - r.top, - l = t.pageX - r.left, - u = "scale(" + i.clientWidth / 100 * 10 + ")"; - "touches" in t && (s = t.touches[0].pageY - r.top, l = t.touches[0].pageX - r.left), a.setAttribute("data-hold", Date.now()), a.setAttribute("data-scale", u), a.setAttribute("data-x", l), a.setAttribute("data-y", s); - var d = { - top: s + "px", - left: l + "px" - }; - a.className = a.className + " waves-notransition", a.setAttribute("style", o(d)), a.className = a.className.replace("waves-notransition", ""), d["-webkit-transform"] = u, d["-moz-transform"] = u, d["-ms-transform"] = u, d["-o-transform"] = u, d.transform = u, d.opacity = "1", d["-webkit-transition-duration"] = c.duration + "ms", d["-moz-transition-duration"] = c.duration + "ms", d["-o-transition-duration"] = c.duration + "ms", d["transition-duration"] = c.duration + "ms", d["-webkit-transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", d["-moz-transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", d["-o-transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", d["transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", a.setAttribute("style", o(d)) - }, - hide: function (t) { - u.touchup(t); - var e = this, - i = (e.clientWidth, null), - n = e.getElementsByClassName("waves-ripple"); - if (!(n.length > 0)) return !1; - var a = (i = n[n.length - 1]).getAttribute("data-x"), - r = i.getAttribute("data-y"), - s = i.getAttribute("data-scale"), - l = 350 - (Date.now() - Number(i.getAttribute("data-hold"))); - l < 0 && (l = 0), setTimeout(function () { - var t = { - top: r + "px", - left: a + "px", - opacity: "0", - "-webkit-transition-duration": c.duration + "ms", - "-moz-transition-duration": c.duration + "ms", - "-o-transition-duration": c.duration + "ms", - "transition-duration": c.duration + "ms", - "-webkit-transform": s, - "-moz-transform": s, - "-ms-transform": s, - "-o-transform": s, - transform: s - }; - i.setAttribute("style", o(t)), setTimeout(function () { - try { - e.removeChild(i) - } catch (t) { - return !1 - } - }, c.duration) - }, l) - }, - wrapInput: function (t) { - for (var e = 0; e < t.length; e++) { - var i = t[e]; - if ("input" === i.tagName.toLowerCase()) { - var n = i.parentNode; - if ("i" === n.tagName.toLowerCase() && -1 !== n.className.indexOf("waves-effect")) continue; - var o = document.createElement("i"); - o.className = i.className + " waves-input-wrapper"; - var a = i.getAttribute("style"); - a || (a = ""), o.setAttribute("style", a), i.className = "waves-button-input", i.removeAttribute("style"), n.replaceChild(o, i), o.appendChild(i) - } - } - } - }, - u = { - touches: 0, - allowEvent: function (t) { - var e = !0; - return "touchstart" === t.type ? u.touches += 1 : "touchend" === t.type || "touchcancel" === t.type ? setTimeout(function () { - u.touches > 0 && (u.touches -= 1) - }, 500) : "mousedown" === t.type && u.touches > 0 && (e = !1), e - }, - touchup: function (t) { - u.allowEvent(t) - } - }; - s.displayEffect = function (e) { - "duration" in (e = e || {}) && (c.duration = e.duration), c.wrapInput(l(".waves-effect")), "ontouchstart" in t && document.body.addEventListener("touchstart", r, !1), document.body.addEventListener("mousedown", r, !1) - }, s.attach = function (e) { - "input" === e.tagName.toLowerCase() && (c.wrapInput([e]), e = e.parentNode), "ontouchstart" in t && e.addEventListener("touchstart", r, !1), e.addEventListener("mousedown", r, !1) - }, t.Waves = s, document.addEventListener("DOMContentLoaded", function () { - s.displayEffect() - }, !1) - }(window), - function (t, e) { - "use strict"; - var i = { - displayLength: 1 / 0, - inDuration: 300, - outDuration: 375, - className: void 0, - completeCallback: void 0, - activationPercent: .8 - }, - n = function () { - function n(e, i, o, a) { - if (_classCallCheck(this, n), e) { - this.options = { - displayLength: i, - className: o, - completeCallback: a - }, this.options = t.extend({}, n.defaults, this.options), this.message = e, this.panning = !1, this.timeRemaining = this.options.displayLength, 0 === n._toasts.length && n._createContainer(), n._toasts.push(this); - var r = this.createToast(); - r.M_Toast = this, this.el = r, this._animateIn(), this.setTimer() - } - } - return _createClass(n, [{ - key: "createToast", - value: function () { - var e = document.createElement("div"); - if (e.classList.add("toast"), this.options.className) { - var i = this.options.className.split(" "), - o = void 0, - a = void 0; - for (o = 0, a = i.length; o < a; o++) e.classList.add(i[o]) - } - return ("object" == typeof HTMLElement ? this.message instanceof HTMLElement : this.message && "object" == typeof this.message && null !== this.message && 1 === this.message.nodeType && "string" == typeof this.message.nodeName) ? e.appendChild(this.message) : this.message instanceof jQuery ? t(e).append(this.message) : e.innerHTML = this.message, n._container.appendChild(e), e - } - }, { - key: "_animateIn", - value: function () { - e(this.el, { - top: 0, - opacity: 1 - }, { - duration: 300, - easing: "easeOutCubic", - queue: !1 - }) - } - }, { - key: "setTimer", - value: function () { - var t = this; - this.timeRemaining !== 1 / 0 && (this.counterInterval = setInterval(function () { - t.panning || (t.timeRemaining -= 20), t.timeRemaining <= 0 && t.remove() - }, 20)) - } - }, { - key: "remove", - value: function () { - var t = this; - window.clearInterval(this.counterInterval); - var i = this.el.offsetWidth * this.options.activationPercent; - this.wasSwiped && (this.el.style.transition = "transform .05s, opacity .05s", this.el.style.transform = "translateX(" + i + "px)", this.el.style.opacity = 0), e(this.el, { - opacity: 0, - marginTop: "-40px" - }, { - duration: this.options.outDuration, - easing: "easeOutExpo", - queue: !1, - complete: function () { - "function" == typeof t.options.completeCallback && t.options.completeCallback(), t.el.parentNode.removeChild(t.el), n._toasts.splice(n._toasts.indexOf(t), 1), 0 === n._toasts.length && n._removeContainer() - } - }) - } - }], [{ - key: "_createContainer", - value: function () { - var t = document.createElement("div"); - t.setAttribute("id", "toast-container"), t.addEventListener("touchstart", n._onDragStart), t.addEventListener("touchmove", n._onDragMove), t.addEventListener("touchend", n._onDragEnd), t.addEventListener("mousedown", n._onDragStart), document.addEventListener("mousemove", n._onDragMove), document.addEventListener("mouseup", n._onDragEnd), document.body.appendChild(t), n._container = t - } - }, { - key: "_removeContainer", - value: function () { - document.removeEventListener("mousemove", n._onDragMove), document.removeEventListener("mouseup", n._onDragEnd), n._container.parentNode.removeChild(n._container), n._container = null - } - }, { - key: "_onDragStart", - value: function (e) { - if (e.target && t(e.target).closest(".toast").length) { - var i = t(e.target).closest(".toast")[0].M_Toast; - i.panning = !0, n._draggedToast = i, i.el.classList.add("panning"), i.el.style.transition = "", i.startingXPos = n._xPos(e), i.time = Date.now(), i.xPos = n._xPos(e) - } - } - }, { - key: "_onDragMove", - value: function (t) { - if (n._draggedToast) { - t.preventDefault(); - var e = n._draggedToast; - e.deltaX = Math.abs(e.xPos - n._xPos(t)), e.xPos = n._xPos(t), e.velocityX = e.deltaX / (Date.now() - e.time), e.time = Date.now(); - var i = e.xPos - e.startingXPos, - o = e.el.offsetWidth * e.options.activationPercent; - e.el.style.transform = "translateX(" + i + "px)", e.el.style.opacity = 1 - Math.abs(i / o) - } - } - }, { - key: "_onDragEnd", - value: function (t) { - if (n._draggedToast) { - var e = n._draggedToast; - e.panning = !1, e.el.classList.remove("panning"); - var i = e.xPos - e.startingXPos, - o = e.el.offsetWidth * e.options.activationPercent; - Math.abs(i) > o || e.velocityX > 1 ? (e.wasSwiped = !0, e.remove()) : (e.el.style.transition = "transform .2s, opacity .2s", e.el.style.transform = "", e.el.style.opacity = ""), n._draggedToast = null - } - } - }, { - key: "_xPos", - value: function (t) { - return t.targetTouches && t.targetTouches.length >= 1 ? t.targetTouches[0].clientX : t.clientX - } - }, { - key: "removeAll", - value: function () { - for (var t in n._toasts) n._toasts[t].remove() - } - }, { - key: "defaults", - get: function () { - return i - } - }]), n - }(); - n._toasts = [], n._container = null, n._draggedToast = null, Materialize.Toast = n, Materialize.toast = function (t, e, i, o) { - return new n(t, e, i, o) - } - }(jQuery, Materialize.Vel), - function (t) { - var e = { - init: function (e) { - var i = { - menuWidth: 300, - edge: "left", - closeOnClick: !1, - draggable: !0, - onOpen: null, - onClose: null - }; - e = t.extend(i, e), t(this).each(function () { - var i = t(this), - n = i.attr("data-activates"), - o = t("#" + n); - 300 != e.menuWidth && o.css("width", e.menuWidth); - var a = t('.drag-target[data-sidenav="' + n + '"]'); - e.draggable ? (a.length && a.remove(), a = t('
    ').attr("data-sidenav", n), t("body").append(a)) : a = t(), "left" == e.edge ? (o.css("transform", "translateX(-100%)"), a.css({ - left: 0 - })) : (o.addClass("right-aligned").css("transform", "translateX(100%)"), a.css({ - right: 0 - })), o.hasClass("fixed") && window.innerWidth > 992 && o.css("transform", "translateX(0)"), o.hasClass("fixed") && t(window).resize(function () { - window.innerWidth > 992 ? 0 !== t("#sidenav-overlay").length && l ? r(!0) : o.css("transform", "translateX(0%)") : !1 === l && ("left" === e.edge ? o.css("transform", "translateX(-100%)") : o.css("transform", "translateX(100%)")) - }), !0 === e.closeOnClick && o.on("click.itemclick", "a:not(.collapsible-header)", function () { - window.innerWidth > 992 && o.hasClass("fixed") || r() - }); - var r = function (i) { - s = !1, l = !1, t("body").css({ - overflow: "", - width: "" - }), t("#sidenav-overlay").velocity({ - opacity: 0 - }, { - duration: 200, - queue: !1, - easing: "easeOutQuad", - complete: function () { - t(this).remove() - } - }), "left" === e.edge ? (a.css({ - width: "", - right: "", - left: "0" - }), o.velocity({ - translateX: "-100%" - }, { - duration: 200, - queue: !1, - easing: "easeOutCubic", - complete: function () { - !0 === i && (o.removeAttr("style"), o.css("width", e.menuWidth)) - } - })) : (a.css({ - width: "", - right: "0", - left: "" - }), o.velocity({ - translateX: "100%" - }, { - duration: 200, - queue: !1, - easing: "easeOutCubic", - complete: function () { - !0 === i && (o.removeAttr("style"), o.css("width", e.menuWidth)) - } - })), "function" == typeof e.onClose && e.onClose.call(this, o) - }, - s = !1, - l = !1; - e.draggable && (a.on("click", function () { - l && r() - }), a.hammer({ - prevent_default: !1 - }).on("pan", function (i) { - if ("touch" == i.gesture.pointerType) { - i.gesture.direction; - var n = i.gesture.center.x, - a = i.gesture.center.y; - i.gesture.velocityX; - if (0 === n && 0 === a) return; - var s = t("body"), - c = t("#sidenav-overlay"), - u = s.innerWidth(); - if (s.css("overflow", "hidden"), s.width(u), 0 === c.length && ((c = t('
    ')).css("opacity", 0).click(function () { - r() - }), "function" == typeof e.onOpen && e.onOpen.call(this, o), t("body").append(c)), "left" === e.edge && (n > e.menuWidth ? n = e.menuWidth : n < 0 && (n = 0)), "left" === e.edge) n < e.menuWidth / 2 ? l = !1 : n >= e.menuWidth / 2 && (l = !0), o.css("transform", "translateX(" + (n - e.menuWidth) + "px)"); - else { - n < window.innerWidth - e.menuWidth / 2 ? l = !0 : n >= window.innerWidth - e.menuWidth / 2 && (l = !1); - var d = n - e.menuWidth / 2; - d < 0 && (d = 0), o.css("transform", "translateX(" + d + "px)") - } - var p; - "left" === e.edge ? (p = n / e.menuWidth, c.velocity({ - opacity: p - }, { - duration: 10, - queue: !1, - easing: "easeOutQuad" - })) : (p = Math.abs((n - window.innerWidth) / e.menuWidth), c.velocity({ - opacity: p - }, { - duration: 10, - queue: !1, - easing: "easeOutQuad" - })) - } - }).on("panend", function (i) { - if ("touch" == i.gesture.pointerType) { - var n = t("#sidenav-overlay"), - r = i.gesture.velocityX, - c = i.gesture.center.x, - u = c - e.menuWidth, - d = c - e.menuWidth / 2; - u > 0 && (u = 0), d < 0 && (d = 0), s = !1, "left" === e.edge ? l && r <= .3 || r < -.5 ? (0 !== u && o.velocity({ - translateX: [0, u] - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad" - }), n.velocity({ - opacity: 1 - }, { - duration: 50, - queue: !1, - easing: "easeOutQuad" - }), a.css({ - width: "50%", - right: 0, - left: "" - }), l = !0) : (!l || r > .3) && (t("body").css({ - overflow: "", - width: "" - }), o.velocity({ - translateX: [-1 * e.menuWidth - 10, u] - }, { - duration: 200, - queue: !1, - easing: "easeOutQuad" - }), n.velocity({ - opacity: 0 - }, { - duration: 200, - queue: !1, - easing: "easeOutQuad", - complete: function () { - "function" == typeof e.onClose && e.onClose.call(this, o), t(this).remove() - } - }), a.css({ - width: "10px", - right: "", - left: 0 - })) : l && r >= -.3 || r > .5 ? (0 !== d && o.velocity({ - translateX: [0, d] - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad" - }), n.velocity({ - opacity: 1 - }, { - duration: 50, - queue: !1, - easing: "easeOutQuad" - }), a.css({ - width: "50%", - right: "", - left: 0 - }), l = !0) : (!l || r < -.3) && (t("body").css({ - overflow: "", - width: "" - }), o.velocity({ - translateX: [e.menuWidth + 10, d] - }, { - duration: 200, - queue: !1, - easing: "easeOutQuad" - }), n.velocity({ - opacity: 0 - }, { - duration: 200, - queue: !1, - easing: "easeOutQuad", - complete: function () { - "function" == typeof e.onClose && e.onClose.call(this, o), t(this).remove() - } - }), a.css({ - width: "10px", - right: 0, - left: "" - })) - } - })), i.off("click.sidenav").on("click.sidenav", function () { - if (!0 === l) l = !1, s = !1, r(); - else { - var i = t("body"), - n = t('
    '), - c = i.innerWidth(); - i.css("overflow", "hidden"), i.width(c), t("body").append(a), "left" === e.edge ? (a.css({ - width: "50%", - right: 0, - left: "" - }), o.velocity({ - translateX: [0, -1 * e.menuWidth] - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad" - })) : (a.css({ - width: "50%", - right: "", - left: 0 - }), o.velocity({ - translateX: [0, e.menuWidth] - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad" - })), n.css("opacity", 0).click(function () { - l = !1, s = !1, r(), n.velocity({ - opacity: 0 - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad", - complete: function () { - t(this).remove() - } - }) - }), t("body").append(n), n.velocity({ - opacity: 1 - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad", - complete: function () { - l = !0, s = !1 - } - }), "function" == typeof e.onOpen && e.onOpen.call(this, o) - } - return !1 - }) - }) - }, - destroy: function () { - var e = t("#sidenav-overlay"), - i = t('.drag-target[data-sidenav="' + t(this).attr("data-activates") + '"]'); - e.trigger("click"), i.remove(), t(this).off("click"), e.remove() - }, - show: function () { - this.trigger("click") - }, - hide: function () { - t("#sidenav-overlay").trigger("click") - } - }; - t.fn.sideNav = function (i) { - return e[i] ? e[i].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof i && i ? void t.error("Method " + i + " does not exist on jQuery.sideNav") : e.init.apply(this, arguments) - } - }(jQuery), - function (t) { - function e(e, i, n, o) { - var r = t(); - return t.each(a, function (t, a) { - if (a.height() > 0) { - var s = a.offset().top, - l = a.offset().left, - c = l + a.width(), - u = s + a.height(); - !(l > i || c < o || s > n || u < e) && r.push(a) - } - }), r - } - - function i(i) { - ++l; - var n = o.scrollTop(), - a = o.scrollLeft(), - s = a + o.width(), - u = n + o.height(), - d = e(n + c.top + i || 200, s + c.right, u + c.bottom, a + c.left); - t.each(d, function (t, e) { - "number" != typeof e.data("scrollSpy:ticks") && e.triggerHandler("scrollSpy:enter"), e.data("scrollSpy:ticks", l) - }), t.each(r, function (t, e) { - var i = e.data("scrollSpy:ticks"); - "number" == typeof i && i !== l && (e.triggerHandler("scrollSpy:exit"), e.data("scrollSpy:ticks", null)) - }), r = d - } - - function n() { - o.trigger("scrollSpy:winSize") - } - var o = t(window), - a = [], - r = [], - s = !1, - l = 0, - c = { - top: 0, - right: 0, - bottom: 0, - left: 0 - }; - t.scrollSpy = function (e, n) { - var r = { - throttle: 100, - scrollOffset: 200, - activeClass: "active", - getActiveElement: function (t) { - return 'a[href="#' + t + '"]' - } - }; - n = t.extend(r, n); - var l = []; - (e = t(e)).each(function (e, i) { - a.push(t(i)), t(i).data("scrollSpy:id", e), t('a[href="#' + t(i).attr("id") + '"]').click(function (e) { - e.preventDefault(); - var i = t(Materialize.escapeHash(this.hash)).offset().top + 1; - t("html, body").animate({ - scrollTop: i - n.scrollOffset - }, { - duration: 400, - queue: !1, - easing: "easeOutCubic" - }) - }) - }), c.top = n.offsetTop || 0, c.right = n.offsetRight || 0, c.bottom = n.offsetBottom || 0, c.left = n.offsetLeft || 0; - var u = Materialize.throttle(function () { - i(n.scrollOffset) - }, n.throttle || 100), - d = function () { - t(document).ready(u) - }; - return s || (o.on("scroll", d), o.on("resize", d), s = !0), setTimeout(d, 0), e.on("scrollSpy:enter", function () { - l = t.grep(l, function (t) { - return 0 != t.height() - }); - var e = t(this); - l[0] ? (t(n.getActiveElement(l[0].attr("id"))).removeClass(n.activeClass), e.data("scrollSpy:id") < l[0].data("scrollSpy:id") ? l.unshift(t(this)) : l.push(t(this))) : l.push(t(this)), t(n.getActiveElement(l[0].attr("id"))).addClass(n.activeClass) - }), e.on("scrollSpy:exit", function () { - if ((l = t.grep(l, function (t) { - return 0 != t.height() - }))[0]) { - t(n.getActiveElement(l[0].attr("id"))).removeClass(n.activeClass); - var e = t(this); - (l = t.grep(l, function (t) { - return t.attr("id") != e.attr("id") - }))[0] && t(n.getActiveElement(l[0].attr("id"))).addClass(n.activeClass) - } - }), e - }, t.winSizeSpy = function (e) { - return t.winSizeSpy = function () { - return o - }, e = e || { - throttle: 100 - }, o.on("resize", Materialize.throttle(n, e.throttle || 100)) - }, t.fn.scrollSpy = function (e) { - return t.scrollSpy(t(this), e) - } - }(jQuery), - function (t) { - t(document).ready(function () { - function e(e) { - var i = e.css("font-family"), - o = e.css("font-size"), - a = e.css("line-height"), - r = e.css("padding"); - o && n.css("font-size", o), i && n.css("font-family", i), a && n.css("line-height", a), r && n.css("padding", r), e.data("original-height") || e.data("original-height", e.height()), "off" === e.attr("wrap") && n.css("overflow-wrap", "normal").css("white-space", "pre"), n.text(e.val() + "\n"); - var s = n.html().replace(/\n/g, "
    "); - n.html(s), e.is(":visible") ? n.css("width", e.width()) : n.css("width", t(window).width() / 2), e.data("original-height") <= n.height() ? e.css("height", n.height()) : e.val().length < e.data("previous-length") && e.css("height", e.data("original-height")), e.data("previous-length", e.val().length) - } - Materialize.updateTextFields = function () { - t("input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea").each(function (e, i) { - var n = t(this); - t(i).val().length > 0 || t(i).is(":focus") || i.autofocus || void 0 !== n.attr("placeholder") ? n.siblings("label").addClass("active") : t(i)[0].validity ? n.siblings("label").toggleClass("active", !0 === t(i)[0].validity.badInput) : n.siblings("label").removeClass("active") - }) - }; - var i = "input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea"; - t(document).on("change", i, function () { - 0 === t(this).val().length && void 0 === t(this).attr("placeholder") || t(this).siblings("label").addClass("active"), validate_field(t(this)) - }), t(document).ready(function () { - Materialize.updateTextFields() - }), t(document).on("reset", function (e) { - var n = t(e.target); - n.is("form") && (n.find(i).removeClass("valid").removeClass("invalid"), n.find(i).each(function () { - "" === t(this).attr("value") && t(this).siblings("label").removeClass("active") - }), n.find("select.initialized").each(function () { - var t = n.find("option[selected]").text(); - n.siblings("input.select-dropdown").val(t) - })) - }), t(document).on("focus", i, function () { - t(this).siblings("label, .prefix").addClass("active") - }), t(document).on("blur", i, function () { - var e = t(this), - i = ".prefix"; - 0 === e.val().length && !0 !== e[0].validity.badInput && void 0 === e.attr("placeholder") && (i += ", label"), e.siblings(i).removeClass("active"), validate_field(e) - }), window.validate_field = function (t) { - var e = void 0 !== t.attr("data-length"), - i = parseInt(t.attr("data-length")), - n = t.val().length; - 0 !== t.val().length || !1 !== t[0].validity.badInput || t.is(":required") ? t.hasClass("validate") && (t.is(":valid") && e && n <= i || t.is(":valid") && !e ? (t.removeClass("invalid"), t.addClass("valid")) : (t.removeClass("valid"), t.addClass("invalid"))) : t.hasClass("validate") && (t.removeClass("valid"), t.removeClass("invalid")) - }; - t(document).on("keyup.radio", "input[type=radio], input[type=checkbox]", function (e) { - if (9 === e.which) return t(this).addClass("tabbed"), void t(this).one("blur", function (e) { - t(this).removeClass("tabbed") - }) - }); - var n = t(".hiddendiv").first(); - n.length || (n = t('
    '), t("body").append(n)); - t(".materialize-textarea").each(function () { - var e = t(this); - e.data("original-height", e.height()), e.data("previous-length", e.val().length) - }), t("body").on("keyup keydown autoresize", ".materialize-textarea", function () { - e(t(this)) - }), t(document).on("change", '.file-field input[type="file"]', function () { - for (var e = t(this).closest(".file-field").find("input.file-path"), i = t(this)[0].files, n = [], o = 0; o < i.length; o++) n.push(i[o].name); - e.val(n.join(", ")), e.trigger("change") - }); - var o = "input[type=range]", - a = !1; - t(o).each(function () { - var e = t(''); - t(this).after(e) - }); - var r = function (t) { - var e = -7 + parseInt(t.parent().css("padding-left")) + "px"; - t.velocity({ - height: "30px", - width: "30px", - top: "-30px", - marginLeft: e - }, { - duration: 300, - easing: "easeOutExpo" - }) - }, - s = function (t) { - var e = t.width() - 15, - i = parseFloat(t.attr("max")), - n = parseFloat(t.attr("min")); - return (parseFloat(t.val()) - n) / (i - n) * e - }; - t(document).on("change", o, function (e) { - var i = t(this).siblings(".thumb"); - i.find(".value").html(t(this).val()), i.hasClass("active") || r(i); - var n = s(t(this)); - i.addClass("active").css("left", n) - }), t(document).on("mousedown touchstart", o, function (e) { - var i = t(this).siblings(".thumb"); - if (i.length <= 0 && (i = t(''), t(this).after(i)), i.find(".value").html(t(this).val()), a = !0, t(this).addClass("active"), i.hasClass("active") || r(i), "input" !== e.type) { - var n = s(t(this)); - i.addClass("active").css("left", n) - } - }), t(document).on("mouseup touchend", ".range-field", function () { - a = !1, t(this).removeClass("active") - }), t(document).on("input mousemove touchmove", ".range-field", function (e) { - var i = t(this).children(".thumb"), - n = t(this).find(o); - if (a) { - i.hasClass("active") || r(i); - var l = s(n); - i.addClass("active").css("left", l), i.find(".value").html(i.siblings(o).val()) - } - }), t(document).on("mouseout touchleave", ".range-field", function () { - if (!a) { - var e = t(this).children(".thumb"), - i = 7 + parseInt(t(this).css("padding-left")) + "px"; - e.hasClass("active") && e.velocity({ - height: "0", - width: "0", - top: "10px", - marginLeft: i - }, { - duration: 100 - }), e.removeClass("active") - } - }), t.fn.autocomplete = function (e) { - var i = { - data: {}, - limit: 1 / 0, - onAutocomplete: null, - minLength: 1 - }; - return e = t.extend(i, e), this.each(function () { - var i, n = t(this), - o = e.data, - a = 0, - r = -1, - s = n.closest(".input-field"); - if (t.isEmptyObject(o)) n.off("keyup.autocomplete focus.autocomplete"); - else { - var l, c = t(''); - s.length ? (l = s.children(".autocomplete-content.dropdown-content").first()).length || s.append(c) : (l = n.next(".autocomplete-content.dropdown-content")).length || n.after(c), l.length && (c = l); - var u = function (t, e) { - var i = e.find("img"), - n = e.text().toLowerCase().indexOf("" + t.toLowerCase()), - o = n + t.length - 1, - a = e.text().slice(0, n), - r = e.text().slice(n, o + 1), - s = e.text().slice(o + 1); - e.html("" + a + "" + r + "" + s + ""), i.length && e.prepend(i) - }, - d = function () { - r = -1, c.find(".active").removeClass("active") - }, - p = function () { - c.empty(), d(), i = void 0 - }; - n.off("blur.autocomplete").on("blur.autocomplete", function () { - p() - }), n.off("keyup.autocomplete focus.autocomplete").on("keyup.autocomplete focus.autocomplete", function (r) { - a = 0; - var s = n.val().toLowerCase(); - if (13 !== r.which && 38 !== r.which && 40 !== r.which) { - if (i !== s && (p(), s.length >= e.minLength)) - for (var l in o) - if (o.hasOwnProperty(l) && -1 !== l.toLowerCase().indexOf(s)) { - if (a >= e.limit) break; - var d = t("
  • "); - o[l] ? d.append('' + l + "") : d.append("" + l + ""), c.append(d), u(s, d), a++ - } - i = s - } - }), n.off("keydown.autocomplete").on("keydown.autocomplete", function (t) { - var e, i = t.which, - n = c.children("li").length, - o = c.children(".active").first(); - 13 === i && r >= 0 ? (e = c.children("li").eq(r)).length && (e.trigger("mousedown.autocomplete"), t.preventDefault()) : 38 !== i && 40 !== i || (t.preventDefault(), 38 === i && r > 0 && r--, 40 === i && r < n - 1 && r++, o.removeClass("active"), r >= 0 && c.children("li").eq(r).addClass("active")) - }), c.off("mousedown.autocomplete touchstart.autocomplete").on("mousedown.autocomplete touchstart.autocomplete", "li", function () { - var i = t(this).text().trim(); - n.val(i), n.trigger("change"), p(), "function" == typeof e.onAutocomplete && e.onAutocomplete.call(this, i) - }) - } - }) - } - }), t.fn.material_select = function (e) { - function i(t, e, i) { - var o = t.indexOf(e), - a = -1 === o; - return a ? t.push(e) : t.splice(o, 1), i.siblings("ul.dropdown-content").find("li:not(.optgroup)").eq(e).toggleClass("active"), i.find("option").eq(e).prop("selected", a), n(t, i), a - } - - function n(t, e) { - for (var i = "", n = 0, o = t.length; n < o; n++) { - var a = e.find("option").eq(t[n]).text(); - i += 0 === n ? a : ", " + a - } - "" === i && (i = e.find("option:disabled").eq(0).text()), e.siblings("input.select-dropdown").val(i) - } - t(this).each(function () { - var n = t(this); - if (!n.hasClass("browser-default")) { - var o = !!n.attr("multiple"), - a = n.attr("data-select-id"); - if (a && (n.parent().find("span.caret").remove(), n.parent().find("input").remove(), n.unwrap(), t("ul#select-options-" + a).remove()), "destroy" === e) return n.removeAttr("data-select-id").removeClass("initialized"), void t(window).off("click.select"); - var r = Materialize.guid(); - n.attr("data-select-id", r); - var s = t('
    '); - s.addClass(n.attr("class")), n.is(":disabled") && s.addClass("disabled"); - var l = t(''), - c = n.children("option, optgroup"), - u = [], - d = !1, - p = n.find("option:selected").html() || n.find("option:first").html() || "", - h = function (e, i, n) { - var a = i.is(":disabled") ? "disabled " : "", - r = "optgroup-option" === n ? "optgroup-option " : "", - s = o ? '" : "", - c = i.data("icon"), - u = i.attr("class"); - if (c) { - var d = ""; - return u && (d = ' class="' + u + '"'), l.append(t('
  • " + s + i.html() + "
  • ")), !0 - } - l.append(t('
  • ' + s + i.html() + "
  • ")) - }; - c.length && c.each(function () { - if (t(this).is("option")) o ? h(0, t(this), "multiple") : h(0, t(this)); - else if (t(this).is("optgroup")) { - var e = t(this).children("option"); - l.append(t('
  • ' + t(this).attr("label") + "
  • ")), e.each(function () { - h(0, t(this), "optgroup-option") - }) - } - }), l.find("li:not(.optgroup)").each(function (a) { - t(this).click(function (r) { - if (!t(this).hasClass("disabled") && !t(this).hasClass("optgroup")) { - var s = !0; - o ? (t('input[type="checkbox"]', this).prop("checked", function (t, e) { - return !e - }), s = i(u, a, n), m.trigger("focus")) : (l.find("li").removeClass("active"), t(this).toggleClass("active"), m.val(t(this).text())), g(l, t(this)), n.find("option").eq(a).prop("selected", s), n.trigger("change"), void 0 !== e && e() - } - r.stopPropagation() - }) - }), n.wrap(s); - var f = t(''), - v = p.replace(/"/g, """), - m = t(''); - n.before(m), m.before(f), m.after(l), n.is(":disabled") || m.dropdown({ - hover: !1 - }), n.attr("tabindex") && t(m[0]).attr("tabindex", n.attr("tabindex")), n.addClass("initialized"), m.on({ - focus: function () { - if (t("ul.select-dropdown").not(l[0]).is(":visible") && (t("input.select-dropdown").trigger("close"), t(window).off("click.select")), !l.is(":visible")) { - t(this).trigger("open", ["focus"]); - var e = t(this).val(); - o && e.indexOf(",") >= 0 && (e = e.split(",")[0]); - var i = l.find("li").filter(function () { - return t(this).text().toLowerCase() === e.toLowerCase() - })[0]; - g(l, i, !0), t(window).off("click.select").on("click.select", function () { - o && (d || m.trigger("close")), t(window).off("click.select") - }) - } - }, - click: function (t) { - t.stopPropagation() - } - }), m.on("blur", function () { - o || (t(this).trigger("close"), t(window).off("click.select")), l.find("li.selected").removeClass("selected") - }), l.hover(function () { - d = !0 - }, function () { - d = !1 - }), o && n.find("option:selected:not(:disabled)").each(function () { - var t = this.index; - i(u, t, n), l.find("li:not(.optgroup)").eq(t).find(":checkbox").prop("checked", !0) - }); - var g = function (e, i, n) { - if (i) { - e.find("li.selected").removeClass("selected"); - var a = t(i); - a.addClass("selected"), o && !n || l.scrollTo(a) - } - }, - y = []; - m.on("keydown", function (e) { - if (9 != e.which) - if (40 != e.which || l.is(":visible")) { - if (13 != e.which || l.is(":visible")) { - e.preventDefault(); - var i = String.fromCharCode(e.which).toLowerCase(), - n = [9, 13, 27, 38, 40]; - if (i && -1 === n.indexOf(e.which)) { - y.push(i); - var a = y.join(""), - r = l.find("li").filter(function () { - return 0 === t(this).text().toLowerCase().indexOf(a) - })[0]; - r && g(l, r) - } - if (13 == e.which) { - var s = l.find("li.selected:not(.disabled)")[0]; - s && (t(s).trigger("click"), o || m.trigger("close")) - } - 40 == e.which && (r = l.find("li.selected").length ? l.find("li.selected").next("li:not(.disabled)")[0] : l.find("li:not(.disabled)")[0], g(l, r)), 27 == e.which && m.trigger("close"), 38 == e.which && (r = l.find("li.selected").prev("li:not(.disabled)")[0]) && g(l, r), setTimeout(function () { - y = [] - }, 1e3) - } - } else m.trigger("open"); - else m.trigger("close") - }) - } - }) - } - }(jQuery), - function (t) { - var e = { - init: function (e) { - var i = { - indicators: !0, - height: 400, - transition: 500, - interval: 6e3 - }; - return e = t.extend(i, e), this.each(function () { - function i(t, e) { - t.hasClass("center-align") ? t.velocity({ - opacity: 0, - translateY: -100 - }, { - duration: e, - queue: !1 - }) : t.hasClass("right-align") ? t.velocity({ - opacity: 0, - translateX: 100 - }, { - duration: e, - queue: !1 - }) : t.hasClass("left-align") && t.velocity({ - opacity: 0, - translateX: -100 - }, { - duration: e, - queue: !1 - }) - } - - function n(t) { - t >= c.length ? t = 0 : t < 0 && (t = c.length - 1), (u = l.find(".active").index()) != t && (o = c.eq(u), $caption = o.find(".caption"), o.removeClass("active"), o.velocity({ - opacity: 0 - }, { - duration: e.transition, - queue: !1, - easing: "easeOutQuad", - complete: function () { - c.not(".active").velocity({ - opacity: 0, - translateX: 0, - translateY: 0 - }, { - duration: 0, - queue: !1 - }) - } - }), i($caption, e.transition), e.indicators && a.eq(u).removeClass("active"), c.eq(t).velocity({ - opacity: 1 - }, { - duration: e.transition, - queue: !1, - easing: "easeOutQuad" - }), c.eq(t).find(".caption").velocity({ - opacity: 1, - translateX: 0, - translateY: 0 - }, { - duration: e.transition, - delay: e.transition, - queue: !1, - easing: "easeOutQuad" - }), c.eq(t).addClass("active"), e.indicators && a.eq(t).addClass("active")) - } - var o, a, r, s = t(this), - l = s.find("ul.slides").first(), - c = l.find("> li"), - u = l.find(".active").index(); - 1 != u && (o = c.eq(u)), s.hasClass("fullscreen") || (e.indicators ? s.height(e.height + 40) : s.height(e.height), l.height(e.height)), c.find(".caption").each(function () { - i(t(this), 0) - }), c.find("img").each(function () { - var e = "data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; - t(this).attr("src") !== e && (t(this).css("background-image", 'url("' + t(this).attr("src") + '")'), t(this).attr("src", e)) - }), e.indicators && (a = t('
      '), c.each(function (i) { - var o = t('
    • '); - o.click(function () { - n(l.parent().find(t(this)).index()), clearInterval(r), r = setInterval(function () { - u = l.find(".active").index(), c.length == u + 1 ? u = 0 : u += 1, n(u) - }, e.transition + e.interval) - }), a.append(o) - }), s.append(a), a = s.find("ul.indicators").find("li.indicator-item")), o ? o.show() : (c.first().addClass("active").velocity({ - opacity: 1 - }, { - duration: e.transition, - queue: !1, - easing: "easeOutQuad" - }), u = 0, o = c.eq(u), e.indicators && a.eq(u).addClass("active")), o.find("img").each(function () { - o.find(".caption").velocity({ - opacity: 1, - translateX: 0, - translateY: 0 - }, { - duration: e.transition, - queue: !1, - easing: "easeOutQuad" - }) - }), r = setInterval(function () { - n((u = l.find(".active").index()) + 1) - }, e.transition + e.interval); - var d = !1, - p = !1, - h = !1; - s.hammer({ - prevent_default: !1 - }).on("pan", function (t) { - if ("touch" === t.gesture.pointerType) { - clearInterval(r); - var e = t.gesture.direction, - i = t.gesture.deltaX, - n = t.gesture.velocityX, - o = t.gesture.velocityY; - $curr_slide = l.find(".active"), Math.abs(n) > Math.abs(o) && $curr_slide.velocity({ - translateX: i - }, { - duration: 50, - queue: !1, - easing: "easeOutQuad" - }), 4 === e && (i > s.innerWidth() / 2 || n < -.65) ? h = !0 : 2 === e && (i < -1 * s.innerWidth() / 2 || n > .65) && (p = !0); - var a; - p && (0 === (a = $curr_slide.next()).length && (a = c.first()), a.velocity({ - opacity: 1 - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad" - })), h && (0 === (a = $curr_slide.prev()).length && (a = c.last()), a.velocity({ - opacity: 1 - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad" - })) - } - }).on("panend", function (t) { - "touch" === t.gesture.pointerType && ($curr_slide = l.find(".active"), d = !1, curr_index = l.find(".active").index(), !h && !p || c.length <= 1 ? $curr_slide.velocity({ - translateX: 0 - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad" - }) : p ? (n(curr_index + 1), $curr_slide.velocity({ - translateX: -1 * s.innerWidth() - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad", - complete: function () { - $curr_slide.velocity({ - opacity: 0, - translateX: 0 - }, { - duration: 0, - queue: !1 - }) - } - })) : h && (n(curr_index - 1), $curr_slide.velocity({ - translateX: s.innerWidth() - }, { - duration: 300, - queue: !1, - easing: "easeOutQuad", - complete: function () { - $curr_slide.velocity({ - opacity: 0, - translateX: 0 - }, { - duration: 0, - queue: !1 - }) - } - })), p = !1, h = !1, clearInterval(r), r = setInterval(function () { - u = l.find(".active").index(), c.length == u + 1 ? u = 0 : u += 1, n(u) - }, e.transition + e.interval)) - }), s.on("sliderPause", function () { - clearInterval(r) - }), s.on("sliderStart", function () { - clearInterval(r), r = setInterval(function () { - u = l.find(".active").index(), c.length == u + 1 ? u = 0 : u += 1, n(u) - }, e.transition + e.interval) - }), s.on("sliderNext", function () { - n((u = l.find(".active").index()) + 1) - }), s.on("sliderPrev", function () { - n((u = l.find(".active").index()) - 1) - }) - }) - }, - pause: function () { - t(this).trigger("sliderPause") - }, - start: function () { - t(this).trigger("sliderStart") - }, - next: function () { - t(this).trigger("sliderNext") - }, - prev: function () { - t(this).trigger("sliderPrev") - } - }; - t.fn.slider = function (i) { - return e[i] ? e[i].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof i && i ? void t.error("Method " + i + " does not exist on jQuery.tooltip") : e.init.apply(this, arguments) - } - }(jQuery), - function (t) { - t(document).ready(function () { - t(document).on("click.card", ".card", function (e) { - if (t(this).find("> .card-reveal").length) { - var i = t(e.target).closest(".card"); - void 0 === i.data("initialOverflow") && i.data("initialOverflow", void 0 === i.css("overflow") ? "" : i.css("overflow")), t(e.target).is(t(".card-reveal .card-title")) || t(e.target).is(t(".card-reveal .card-title i")) ? t(this).find(".card-reveal").velocity({ - translateY: 0 - }, { - duration: 225, - queue: !1, - easing: "easeInOutQuad", - complete: function () { - t(this).css({ - display: "none" - }), i.css("overflow", i.data("initialOverflow")) - } - }) : (t(e.target).is(t(".card .activator")) || t(e.target).is(t(".card .activator i"))) && (i.css("overflow", "hidden"), t(this).find(".card-reveal").css({ - display: "block" - }).velocity("stop", !1).velocity({ - translateY: "-100%" - }, { - duration: 300, - queue: !1, - easing: "easeInOutQuad" - })) - } - }) - }) - }(jQuery), - function (t) { - var e = { - data: [], - placeholder: "", - secondaryPlaceholder: "", - autocompleteOptions: {} - }; - t(document).ready(function () { - t(document).on("click", ".chip .close", function (e) { - t(this).closest(".chips").attr("data-initialized") || t(this).closest(".chip").remove() - }) - }), t.fn.material_chip = function (i) { - var n = this; - if (this.$el = t(this), this.$document = t(document), this.SELS = { - CHIPS: ".chips", - CHIP: ".chip", - INPUT: "input", - DELETE: ".material-icons", - SELECTED_CHIP: ".selected" - }, "data" === i) return this.$el.data("chips"); - var o = t.extend({}, e, i); - n.hasAutocomplete = !t.isEmptyObject(o.autocompleteOptions.data), this.init = function () { - var e = 0; - n.$el.each(function () { - var i = t(this), - a = Materialize.guid(); - n.chipId = a, o.data && o.data instanceof Array || (o.data = []), i.data("chips", o.data), i.attr("data-index", e), i.attr("data-initialized", !0), i.hasClass(n.SELS.CHIPS) || i.addClass("chips"), n.chips(i, a), e++ - }) - }, this.handleEvents = function () { - var e = n.SELS; - n.$document.off("click.chips-focus", e.CHIPS).on("click.chips-focus", e.CHIPS, function (i) { - t(i.target).find(e.INPUT).focus() - }), n.$document.off("click.chips-select", e.CHIP).on("click.chips-select", e.CHIP, function (i) { - var o = t(i.target); - if (o.length) { - var a = o.hasClass("selected"), - r = o.closest(e.CHIPS); - t(e.CHIP).removeClass("selected"), a || n.selectChip(o.index(), r) - } - }), n.$document.off("keydown.chips").on("keydown.chips", function (i) { - if (!t(i.target).is("input, textarea")) { - var o, a = n.$document.find(e.CHIP + e.SELECTED_CHIP), - r = a.closest(e.CHIPS), - s = a.siblings(e.CHIP).length; - if (a.length) - if (8 === i.which || 46 === i.which) { - i.preventDefault(), o = a.index(), n.deleteChip(o, r); - var l = null; - o + 1 < s ? l = o : o !== s && o + 1 !== s || (l = s - 1), l < 0 && (l = null), null !== l && n.selectChip(l, r), s || r.find("input").focus() - } else if (37 === i.which) { - if ((o = a.index() - 1) < 0) return; - t(e.CHIP).removeClass("selected"), n.selectChip(o, r) - } else if (39 === i.which) { - if (o = a.index() + 1, t(e.CHIP).removeClass("selected"), o > s) return void r.find("input").focus(); - n.selectChip(o, r) - } - } - }), n.$document.off("focusin.chips", e.CHIPS + " " + e.INPUT).on("focusin.chips", e.CHIPS + " " + e.INPUT, function (i) { - var n = t(i.target).closest(e.CHIPS); - n.addClass("focus"), n.siblings("label, .prefix").addClass("active"), t(e.CHIP).removeClass("selected") - }), n.$document.off("focusout.chips", e.CHIPS + " " + e.INPUT).on("focusout.chips", e.CHIPS + " " + e.INPUT, function (i) { - var n = t(i.target).closest(e.CHIPS); - n.removeClass("focus"), void 0 !== n.data("chips") && n.data("chips").length || n.siblings("label").removeClass("active"), n.siblings(".prefix").removeClass("active") - }), n.$document.off("keydown.chips-add", e.CHIPS + " " + e.INPUT).on("keydown.chips-add", e.CHIPS + " " + e.INPUT, function (i) { - var o = t(i.target), - a = o.closest(e.CHIPS), - r = a.children(e.CHIP).length; - if (13 === i.which) { - if (n.hasAutocomplete && a.find(".autocomplete-content.dropdown-content").length && a.find(".autocomplete-content.dropdown-content").children().length) return; - return i.preventDefault(), n.addChip({ - tag: o.val() - }, a), void o.val("") - } - if ((8 === i.keyCode || 37 === i.keyCode) && "" === o.val() && r) return i.preventDefault(), n.selectChip(r - 1, a), void o.blur() - }), n.$document.off("click.chips-delete", e.CHIPS + " " + e.DELETE).on("click.chips-delete", e.CHIPS + " " + e.DELETE, function (i) { - var o = t(i.target), - a = o.closest(e.CHIPS), - r = o.closest(e.CHIP); - i.stopPropagation(), n.deleteChip(r.index(), a), a.find("input").focus() - }) - }, this.chips = function (e, i) { - e.empty(), e.data("chips").forEach(function (t) { - e.append(n.renderChip(t)) - }), e.append(t('')), n.setPlaceholder(e); - var a = e.next("label"); - a.length && (a.attr("for", i), void 0 !== e.data("chips") && e.data("chips").length && a.addClass("active")); - var r = t("#" + i); - n.hasAutocomplete && (o.autocompleteOptions.onAutocomplete = function (t) { - n.addChip({ - tag: t - }, e), r.val(""), r.focus() - }, r.autocomplete(o.autocompleteOptions)) - }, this.renderChip = function (e) { - if (e.tag) { - var i = t('
      '); - return i.text(e.tag), e.image && i.prepend(t("").attr("src", e.image)), i.append(t('close')), i - } - }, this.setPlaceholder = function (t) { - void 0 !== t.data("chips") && !t.data("chips").length && o.placeholder ? t.find("input").prop("placeholder", o.placeholder) : (void 0 === t.data("chips") || t.data("chips").length) && o.secondaryPlaceholder && t.find("input").prop("placeholder", o.secondaryPlaceholder) - }, this.isValid = function (t, e) { - for (var i = t.data("chips"), n = !1, o = 0; o < i.length; o++) - if (i[o].tag === e.tag) return void(n = !0); - return "" !== e.tag && !n - }, this.addChip = function (t, e) { - if (n.isValid(e, t)) { - for (var i = n.renderChip(t), o = [], a = e.data("chips"), r = 0; r < a.length; r++) o.push(a[r]); - o.push(t), e.data("chips", o), i.insertBefore(e.find("input")), e.trigger("chip.add", t), n.setPlaceholder(e) - } - }, this.deleteChip = function (t, e) { - var i = e.data("chips")[t]; - e.find(".chip").eq(t).remove(); - for (var o = [], a = e.data("chips"), r = 0; r < a.length; r++) r !== t && o.push(a[r]); - e.data("chips", o), e.trigger("chip.delete", i), n.setPlaceholder(e) - }, this.selectChip = function (t, e) { - var i = e.find(".chip").eq(t); - i && !1 === i.hasClass("selected") && (i.addClass("selected"), e.trigger("chip.select", e.data("chips")[t])) - }, this.getChipsElement = function (t, e) { - return e.eq(t) - }, this.init(), this.handleEvents() - } - }(jQuery), - function (t) { - t.fn.pushpin = function (e) { - var i = { - top: 0, - bottom: 1 / 0, - offset: 0 - }; - return "remove" === e ? (this.each(function () { - (id = t(this).data("pushpin-id")) && (t(window).off("scroll." + id), t(this).removeData("pushpin-id").removeClass("pin-top pinned pin-bottom").removeAttr("style")) - }), !1) : (e = t.extend(i, e), $index = 0, this.each(function () { - function i(t) { - t.removeClass("pin-top"), t.removeClass("pinned"), t.removeClass("pin-bottom") - } - - function n(n, o) { - n.each(function () { - e.top <= o && e.bottom >= o && !t(this).hasClass("pinned") && (i(t(this)), t(this).css("top", e.offset), t(this).addClass("pinned")), o < e.top && !t(this).hasClass("pin-top") && (i(t(this)), t(this).css("top", 0), t(this).addClass("pin-top")), o > e.bottom && !t(this).hasClass("pin-bottom") && (i(t(this)), t(this).addClass("pin-bottom"), t(this).css("top", e.bottom - r)) - }) - } - var o = Materialize.guid(), - a = t(this), - r = t(this).offset().top; - t(this).data("pushpin-id", o), n(a, t(window).scrollTop()), t(window).on("scroll." + o, function () { - var i = t(window).scrollTop() + e.offset; - n(a, i) - }) - })) - } - }(jQuery), - function (t) { - t(document).ready(function () { - t.fn.reverse = [].reverse, t(document).on("mouseenter.fixedActionBtn", ".fixed-action-btn:not(.click-to-toggle):not(.toolbar)", function (i) { - var n = t(this); - e(n) - }), t(document).on("mouseleave.fixedActionBtn", ".fixed-action-btn:not(.click-to-toggle):not(.toolbar)", function (e) { - var n = t(this); - i(n) - }), t(document).on("click.fabClickToggle", ".fixed-action-btn.click-to-toggle > a", function (n) { - var o = t(this).parent(); - o.hasClass("active") ? i(o) : e(o) - }), t(document).on("click.fabToolbar", ".fixed-action-btn.toolbar > a", function (e) { - var i = t(this).parent(); - n(i) - }) - }), t.fn.extend({ - openFAB: function () { - e(t(this)) - }, - closeFAB: function () { - i(t(this)) - }, - openToolbar: function () { - n(t(this)) - }, - closeToolbar: function () { - o(t(this)) - } - }); - var e = function (e) { - var i = e; - if (!1 === i.hasClass("active")) { - var n, o; - !0 === i.hasClass("horizontal") ? o = 40 : n = 40, i.addClass("active"), i.find("ul .btn-floating").velocity({ - scaleY: ".4", - scaleX: ".4", - translateY: n + "px", - translateX: o + "px" - }, { - duration: 0 - }); - var a = 0; - i.find("ul .btn-floating").reverse().each(function () { - t(this).velocity({ - opacity: "1", - scaleX: "1", - scaleY: "1", - translateY: "0", - translateX: "0" - }, { - duration: 80, - delay: a - }), a += 40 - }) - } - }, - i = function (t) { - var e, i, n = t; - !0 === n.hasClass("horizontal") ? i = 40 : e = 40, n.removeClass("active"); - n.find("ul .btn-floating").velocity("stop", !0), n.find("ul .btn-floating").velocity({ - opacity: "0", - scaleX: ".4", - scaleY: ".4", - translateY: e + "px", - translateX: i + "px" - }, { - duration: 80 - }) - }, - n = function (e) { - if ("true" !== e.attr("data-open")) { - var i, n, a, r = window.innerWidth, - s = window.innerHeight, - l = e[0].getBoundingClientRect(), - c = e.find("> a").first(), - u = e.find("> ul").first(), - d = t('
      '), - p = c.css("background-color"); - c.append(d), i = l.left - r / 2 + l.width / 2, n = s - l.bottom, a = r / d.width(), e.attr("data-origin-bottom", l.bottom), e.attr("data-origin-left", l.left), e.attr("data-origin-width", l.width), e.addClass("active"), e.attr("data-open", !0), e.css({ - "text-align": "center", - width: "100%", - bottom: 0, - left: 0, - transform: "translateX(" + i + "px)", - transition: "none" - }), c.css({ - transform: "translateY(" + -n + "px)", - transition: "none" - }), d.css({ - "background-color": p - }), setTimeout(function () { - e.css({ - transform: "", - transition: "transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s" - }), c.css({ - overflow: "visible", - transform: "", - transition: "transform .2s" - }), setTimeout(function () { - e.css({ - overflow: "hidden", - "background-color": p - }), d.css({ - transform: "scale(" + a + ")", - transition: "transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)" - }), u.find("> li > a").css({ - opacity: 1 - }), t(window).on("scroll.fabToolbarClose", function () { - o(e), t(window).off("scroll.fabToolbarClose"), t(document).off("click.fabToolbarClose") - }), t(document).on("click.fabToolbarClose", function (i) { - t(i.target).closest(u).length || (o(e), t(window).off("scroll.fabToolbarClose"), t(document).off("click.fabToolbarClose")) - }) - }, 100) - }, 0) - } - }, - o = function (t) { - if ("true" === t.attr("data-open")) { - var e, i, n = window.innerWidth, - o = window.innerHeight, - a = t.attr("data-origin-width"), - r = t.attr("data-origin-bottom"), - s = t.attr("data-origin-left"), - l = t.find("> .btn-floating").first(), - c = t.find("> ul").first(), - u = t.find(".fab-backdrop"), - d = l.css("background-color"); - e = s - n / 2 + a / 2, i = o - r, n / u.width(), t.removeClass("active"), t.attr("data-open", !1), t.css({ - "background-color": "transparent", - transition: "none" - }), l.css({ - transition: "none" - }), u.css({ - transform: "scale(0)", - "background-color": d - }), c.find("> li > a").css({ - opacity: "" - }), setTimeout(function () { - u.remove(), t.css({ - "text-align": "", - width: "", - bottom: "", - left: "", - overflow: "", - "background-color": "", - transform: "translate3d(" + -e + "px,0,0)" - }), l.css({ - overflow: "", - transform: "translate3d(0," + i + "px,0)" - }), setTimeout(function () { - t.css({ - transform: "translate3d(0,0,0)", - transition: "transform .2s" - }), l.css({ - transform: "translate3d(0,0,0)", - transition: "transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)" - }) - }, 20) - }, 200) - } - } - }(jQuery), - function (t) { - Materialize.fadeInImage = function (e) { - var i; - if ("string" == typeof e) i = t(e); - else { - if ("object" != typeof e) return; - i = e - } - i.css({ - opacity: 0 - }), t(i).velocity({ - opacity: 1 - }, { - duration: 650, - queue: !1, - easing: "easeOutSine" - }), t(i).velocity({ - opacity: 1 - }, { - duration: 1300, - queue: !1, - easing: "swing", - step: function (e, i) { - i.start = 100; - var n = e / 100, - o = 150 - (100 - e) / 1.75; - o < 100 && (o = 100), e >= 0 && t(this).css({ - "-webkit-filter": "grayscale(" + n + ")brightness(" + o + "%)", - filter: "grayscale(" + n + ")brightness(" + o + "%)" - }) - } - }) - }, Materialize.showStaggeredList = function (e) { - var i; - if ("string" == typeof e) i = t(e); - else { - if ("object" != typeof e) return; - i = e - } - var n = 0; - i.find("li").velocity({ - translateX: "-100px" - }, { - duration: 0 - }), i.find("li").each(function () { - t(this).velocity({ - opacity: "1", - translateX: "0" - }, { - duration: 800, - delay: n, - easing: [60, 10] - }), n += 120 - }) - }, t(document).ready(function () { - var e = !1, - i = !1; - t(".dismissable").each(function () { - t(this).hammer({ - prevent_default: !1 - }).on("pan", function (n) { - if ("touch" === n.gesture.pointerType) { - var o = t(this), - a = n.gesture.direction, - r = n.gesture.deltaX, - s = n.gesture.velocityX; - o.velocity({ - translateX: r - }, { - duration: 50, - queue: !1, - easing: "easeOutQuad" - }), 4 === a && (r > o.innerWidth() / 2 || s < -.75) && (e = !0), 2 === a && (r < -1 * o.innerWidth() / 2 || s > .75) && (i = !0) - } - }).on("panend", function (n) { - if (Math.abs(n.gesture.deltaX) < t(this).innerWidth() / 2 && (i = !1, e = !1), "touch" === n.gesture.pointerType) { - var o = t(this); - if (e || i) { - var a; - a = e ? o.innerWidth() : -1 * o.innerWidth(), o.velocity({ - translateX: a - }, { - duration: 100, - queue: !1, - easing: "easeOutQuad", - complete: function () { - o.css("border", "none"), o.velocity({ - height: 0, - padding: 0 - }, { - duration: 200, - queue: !1, - easing: "easeOutQuad", - complete: function () { - o.remove() - } - }) - } - }) - } else o.velocity({ - translateX: 0 - }, { - duration: 100, - queue: !1, - easing: "easeOutQuad" - }); - e = !1, i = !1 - } - }) - }) - }) - }(jQuery), - function (t) { - var e = !1; - Materialize.scrollFire = function (t) { - var i = function () { - for (var e = window.pageYOffset + window.innerHeight, i = 0; i < t.length; i++) { - var n = t[i], - o = n.selector, - a = n.offset, - r = n.callback, - s = document.querySelector(o); - null !== s && e > s.getBoundingClientRect().top + window.pageYOffset + a && !0 !== n.done && ("function" == typeof r ? r.call(this, s) : "string" == typeof r && new Function(r)(s), n.done = !0) - } - }, - n = Materialize.throttle(function () { - i() - }, t.throttle || 100); - e || (window.addEventListener("scroll", n), window.addEventListener("resize", n), e = !0), setTimeout(n, 0) - } - }(jQuery), - function (t) { - Materialize.Picker = t(jQuery) - }(function (t) { - function e(a, s, u, d) { - function p() { - return e._.node("div", e._.node("div", e._.node("div", e._.node("div", T.component.nodes(b.open), k.box), k.wrap), k.frame), k.holder) - } - - function h() { - x.data(s, T).addClass(k.input).attr("tabindex", -1).val(x.data("value") ? T.get("select", w.format) : a.value), w.editable || x.on("focus." + b.id + " click." + b.id, function (t) { - t.preventDefault(), T.$root.eq(0).focus() - }).on("keydown." + b.id, m), o(a, { - haspopup: !0, - expanded: !1, - readonly: !1, - owns: a.id + "_root" - }) - } - - function f() { - T.$root.on({ - keydown: m, - focusin: function (t) { - T.$root.removeClass(k.focused), t.stopPropagation() - }, - "mousedown click": function (e) { - var i = e.target; - i != T.$root.children()[0] && (e.stopPropagation(), "mousedown" != e.type || t(i).is("input, select, textarea, button, option") || (e.preventDefault(), T.$root.eq(0).focus())) - } - }).on({ - focus: function () { - x.addClass(k.target) - }, - blur: function () { - x.removeClass(k.target) - } - }).on("focus.toOpen", g).on("click", "[data-pick], [data-nav], [data-clear], [data-close]", function () { - var e = t(this), - i = e.data(), - n = e.hasClass(k.navDisabled) || e.hasClass(k.disabled), - o = r(); - o = o && (o.type || o.href) && o, (n || o && !t.contains(T.$root[0], o)) && T.$root.eq(0).focus(), !n && i.nav ? T.set("highlight", T.component.item.highlight, { - nav: i.nav - }) : !n && "pick" in i ? (T.set("select", i.pick), w.closeOnSelect && T.close(!0)) : i.clear ? (T.clear(), w.closeOnSelect && T.close(!0)) : i.close && T.close(!0) - }), o(T.$root[0], "hidden", !0) - } - - function v() { - var e; - !0 === w.hiddenName ? (e = a.name, a.name = "") : e = (e = ["string" == typeof w.hiddenPrefix ? w.hiddenPrefix : "", "string" == typeof w.hiddenSuffix ? w.hiddenSuffix : "_submit"])[0] + a.name + e[1], T._hidden = t('")[0], x.on("change." + b.id, function () { - T._hidden.value = a.value ? T.get("select", w.formatSubmit) : "" - }), w.container ? t(w.container).append(T._hidden) : x.before(T._hidden) - } - - function m(t) { - var e = t.keyCode, - i = /^(8|46)$/.test(e); - if (27 == e) return T.close(), !1; - (32 == e || i || !b.open && T.component.key[e]) && (t.preventDefault(), t.stopPropagation(), i ? T.clear().close() : T.open()) - } - - function g(t) { - t.stopPropagation(), "focus" == t.type && T.$root.addClass(k.focused), T.open() - } - if (!a) return e; - var y = !1, - b = { - id: a.id || "P" + Math.abs(~~(Math.random() * new Date)) - }, - w = u ? t.extend(!0, {}, u.defaults, d) : d || {}, - k = t.extend({}, e.klasses(), w.klass), - x = t(a), - C = function () { - return this.start() - }, - T = C.prototype = { - constructor: C, - $node: x, - start: function () { - return b && b.start ? T : (b.methods = {}, b.start = !0, b.open = !1, b.type = a.type, a.autofocus = a == r(), a.readOnly = !w.editable, a.id = a.id || b.id, "text" != a.type && (a.type = "text"), T.component = new u(T, w), T.$root = t(e._.node("div", p(), k.picker, 'id="' + a.id + '_root" tabindex="0"')), f(), w.formatSubmit && v(), h(), w.container ? t(w.container).append(T.$root) : x.before(T.$root), T.on({ - start: T.component.onStart, - render: T.component.onRender, - stop: T.component.onStop, - open: T.component.onOpen, - close: T.component.onClose, - set: T.component.onSet - }).on({ - start: w.onStart, - render: w.onRender, - stop: w.onStop, - open: w.onOpen, - close: w.onClose, - set: w.onSet - }), y = i(T.$root.children()[0]), a.autofocus && T.open(), T.trigger("start").trigger("render")) - }, - render: function (t) { - return t ? T.$root.html(p()) : T.$root.find("." + k.box).html(T.component.nodes(b.open)), T.trigger("render") - }, - stop: function () { - return b.start ? (T.close(), T._hidden && T._hidden.parentNode.removeChild(T._hidden), T.$root.remove(), x.removeClass(k.input).removeData(s), setTimeout(function () { - x.off("." + b.id) - }, 0), a.type = b.type, a.readOnly = !1, T.trigger("stop"), b.methods = {}, b.start = !1, T) : T - }, - open: function (i) { - return b.open ? T : (x.addClass(k.active), o(a, "expanded", !0), setTimeout(function () { - T.$root.addClass(k.opened), o(T.$root[0], "hidden", !1) - }, 0), !1 !== i && (b.open = !0, y && c.css("overflow", "hidden").css("padding-right", "+=" + n()), T.$root.eq(0).focus(), l.on("click." + b.id + " focusin." + b.id, function (t) { - var e = t.target; - e != a && e != document && 3 != t.which && T.close(e === T.$root.children()[0]) - }).on("keydown." + b.id, function (i) { - var n = i.keyCode, - o = T.component.key[n], - a = i.target; - 27 == n ? T.close(!0) : a != T.$root[0] || !o && 13 != n ? t.contains(T.$root[0], a) && 13 == n && (i.preventDefault(), a.click()) : (i.preventDefault(), o ? e._.trigger(T.component.key.go, T, [e._.trigger(o)]) : T.$root.find("." + k.highlighted).hasClass(k.disabled) || (T.set("select", T.component.item.highlight), w.closeOnSelect && T.close(!0))) - })), T.trigger("open")) - }, - close: function (t) { - return t && (T.$root.off("focus.toOpen").eq(0).focus(), setTimeout(function () { - T.$root.on("focus.toOpen", g) - }, 0)), x.removeClass(k.active), o(a, "expanded", !1), setTimeout(function () { - T.$root.removeClass(k.opened + " " + k.focused), o(T.$root[0], "hidden", !0) - }, 0), b.open ? (b.open = !1, y && c.css("overflow", "").css("padding-right", "-=" + n()), l.off("." + b.id), T.trigger("close")) : T - }, - clear: function (t) { - return T.set("clear", null, t) - }, - set: function (e, i, n) { - var o, a, r = t.isPlainObject(e), - s = r ? e : {}; - if (n = r && t.isPlainObject(i) ? i : n || {}, e) { - r || (s[e] = i); - for (o in s) a = s[o], o in T.component.item && (void 0 === a && (a = null), T.component.set(o, a, n)), "select" != o && "clear" != o || x.val("clear" == o ? "" : T.get(o, w.format)).trigger("change"); - T.render() - } - return n.muted ? T : T.trigger("set", s) - }, - get: function (t, i) { - if (t = t || "value", null != b[t]) return b[t]; - if ("valueSubmit" == t) { - if (T._hidden) return T._hidden.value; - t = "value" - } - if ("value" == t) return a.value; - if (t in T.component.item) { - if ("string" == typeof i) { - var n = T.component.get(t); - return n ? e._.trigger(T.component.formats.toString, T.component, [i, n]) : "" - } - return T.component.get(t) - } - }, - on: function (e, i, n) { - var o, a, r = t.isPlainObject(e), - s = r ? e : {}; - if (e) { - r || (s[e] = i); - for (o in s) a = s[o], n && (o = "_" + o), b.methods[o] = b.methods[o] || [], b.methods[o].push(a) - } - return T - }, - off: function () { - var t, e, i = arguments; - for (t = 0, namesCount = i.length; t < namesCount; t += 1)(e = i[t]) in b.methods && delete b.methods[e]; - return T - }, - trigger: function (t, i) { - var n = function (t) { - var n = b.methods[t]; - n && n.map(function (t) { - e._.trigger(t, T, [i]) - }) - }; - return n("_" + t), n(t), T - } - }; - return new C - } - - function i(t) { - var e; - return t.currentStyle ? e = t.currentStyle.position : window.getComputedStyle && (e = getComputedStyle(t).position), "fixed" == e - } - - function n() { - if (c.height() <= s.height()) return 0; - var e = t('
      ').appendTo("body"), - i = e[0].offsetWidth; - e.css("overflow", "scroll"); - var n = t('
      ').appendTo(e)[0].offsetWidth; - return e.remove(), i - n - } - - function o(e, i, n) { - if (t.isPlainObject(i)) - for (var o in i) a(e, o, i[o]); - else a(e, i, n) - } - - function a(t, e, i) { - t.setAttribute(("role" == e ? "" : "aria-") + e, i) - } - - function r() { - try { - return document.activeElement - } catch (t) {} - } - var s = t(window), - l = t(document), - c = t(document.documentElement); - return e.klasses = function (t) { - return t = t || "picker", { - picker: t, - opened: t + "--opened", - focused: t + "--focused", - input: t + "__input", - active: t + "__input--active", - target: t + "__input--target", - holder: t + "__holder", - frame: t + "__frame", - wrap: t + "__wrap", - box: t + "__box" - } - }, e._ = { - group: function (t) { - for (var i, n = "", o = e._.trigger(t.min, t); o <= e._.trigger(t.max, t, [o]); o += t.i) i = e._.trigger(t.item, t, [o]), n += e._.node(t.node, i[0], i[1], i[2]); - return n - }, - node: function (e, i, n, o) { - return i ? (i = t.isArray(i) ? i.join("") : i, n = n ? ' class="' + n + '"' : "", o = o ? " " + o : "", "<" + e + n + o + ">" + i + "") : "" - }, - lead: function (t) { - return (t < 10 ? "0" : "") + t - }, - trigger: function (t, e, i) { - return "function" == typeof t ? t.apply(e, i || []) : t - }, - digits: function (t) { - return /\d/.test(t[1]) ? 2 : 1 - }, - isDate: function (t) { - return {}.toString.call(t).indexOf("Date") > -1 && this.isInteger(t.getDate()) - }, - isInteger: function (t) { - return {}.toString.call(t).indexOf("Number") > -1 && t % 1 == 0 - }, - ariaAttr: function (e, i) { - t.isPlainObject(e) || (e = { - attribute: i - }), i = ""; - for (var n in e) { - var o = ("role" == n ? "" : "aria-") + n; - i += null == e[n] ? "" : o + '="' + e[n] + '"' - } - return i - } - }, e.extend = function (i, n) { - t.fn[i] = function (o, a) { - var r = this.data(i); - return "picker" == o ? r : r && "string" == typeof o ? e._.trigger(r[o], r, [a]) : this.each(function () { - t(this).data(i) || new e(this, i, n, o) - }) - }, t.fn[i].defaults = n.defaults - }, e - }), - function (t) { - t(Materialize.Picker, jQuery) - }(function (t, e) { - function i(t, e) { - var i = this, - n = t.$node[0], - o = n.value, - a = t.$node.data("value"), - r = a || o, - s = a ? e.formatSubmit : e.format, - l = function () { - return n.currentStyle ? "rtl" == n.currentStyle.direction : "rtl" == getComputedStyle(t.$root[0]).direction - }; - i.settings = e, i.$node = t.$node, i.queue = { - min: "measure create", - max: "measure create", - now: "now create", - select: "parse create validate", - highlight: "parse navigate create validate", - view: "parse create validate viewset", - disable: "deactivate", - enable: "activate" - }, i.item = {}, i.item.clear = null, i.item.disable = (e.disable || []).slice(0), i.item.enable = - function (t) { - return !0 === t[0] ? t.shift() : -1 - }(i.item.disable), i.set("min", e.min).set("max", e.max).set("now"), r ? i.set("select", r, { - format: s - }) : i.set("select", null).set("highlight", i.item.now), i.key = { - 40: 7, - 38: -7, - 39: function () { - return l() ? -1 : 1 - }, - 37: function () { - return l() ? 1 : -1 - }, - go: function (t) { - var e = i.item.highlight, - n = new Date(e.year, e.month, e.date + t); - i.set("highlight", n, { - interval: t - }), this.render() - } - }, t.on("render", function () { - t.$root.find("." + e.klass.selectMonth).on("change", function () { - var i = this.value; - i && (t.set("highlight", [t.get("view").year, i, t.get("highlight").date]), t.$root.find("." + e.klass.selectMonth).trigger("focus")) - }), t.$root.find("." + e.klass.selectYear).on("change", function () { - var i = this.value; - i && (t.set("highlight", [i, t.get("view").month, t.get("highlight").date]), t.$root.find("." + e.klass.selectYear).trigger("focus")) - }) - }, 1).on("open", function () { - var n = ""; - i.disabled(i.get("now")) && (n = ":not(." + e.klass.buttonToday + ")"), t.$root.find("button" + n + ", select").attr("disabled", !1) - }, 1).on("close", function () { - t.$root.find("button, select").attr("disabled", !0) - }, 1) - } - var n = t._; - i.prototype.set = function (t, e, i) { - var n = this, - o = n.item; - return null === e ? ("clear" == t && (t = "select"), o[t] = e, n) : (o["enable" == t ? "disable" : "flip" == t ? "enable" : t] = n.queue[t].split(" ").map(function (o) { - return e = n[o](t, e, i) - }).pop(), "select" == t ? n.set("highlight", o.select, i) : "highlight" == t ? n.set("view", o.highlight, i) : t.match(/^(flip|min|max|disable|enable)$/) && (o.select && n.disabled(o.select) && n.set("select", o.select, i), o.highlight && n.disabled(o.highlight) && n.set("highlight", o.highlight, i)), n) - }, i.prototype.get = function (t) { - return this.item[t] - }, i.prototype.create = function (t, i, o) { - var a, r = this; - return i = void 0 === i ? t : i, i == -1 / 0 || i == 1 / 0 ? a = i : e.isPlainObject(i) && n.isInteger(i.pick) ? i = i.obj : e.isArray(i) ? (i = new Date(i[0], i[1], i[2]), i = n.isDate(i) ? i : r.create().obj) : i = n.isInteger(i) || n.isDate(i) ? r.normalize(new Date(i), o) : r.now(t, i, o), { - year: a || i.getFullYear(), - month: a || i.getMonth(), - date: a || i.getDate(), - day: a || i.getDay(), - obj: a || i, - pick: a || i.getTime() - } - }, i.prototype.createRange = function (t, i) { - var o = this, - a = function (t) { - return !0 === t || e.isArray(t) || n.isDate(t) ? o.create(t) : t - }; - return n.isInteger(t) || (t = a(t)), n.isInteger(i) || (i = a(i)), n.isInteger(t) && e.isPlainObject(i) ? t = [i.year, i.month, i.date + t] : n.isInteger(i) && e.isPlainObject(t) && (i = [t.year, t.month, t.date + i]), { - from: a(t), - to: a(i) - } - }, i.prototype.withinRange = function (t, e) { - return t = this.createRange(t.from, t.to), e.pick >= t.from.pick && e.pick <= t.to.pick - }, i.prototype.overlapRanges = function (t, e) { - var i = this; - return t = i.createRange(t.from, t.to), e = i.createRange(e.from, e.to), i.withinRange(t, e.from) || i.withinRange(t, e.to) || i.withinRange(e, t.from) || i.withinRange(e, t.to) - }, i.prototype.now = function (t, e, i) { - return e = new Date, i && i.rel && e.setDate(e.getDate() + i.rel), this.normalize(e, i) - }, i.prototype.navigate = function (t, i, n) { - var o, a, r, s, l = e.isArray(i), - c = e.isPlainObject(i), - u = this.item.view; - if (l || c) { - for (c ? (a = i.year, r = i.month, s = i.date) : (a = +i[0], r = +i[1], s = +i[2]), n && n.nav && u && u.month !== r && (a = u.year, r = u.month), a = (o = new Date(a, r + (n && n.nav ? n.nav : 0), 1)).getFullYear(), r = o.getMonth(); new Date(a, r, s).getMonth() !== r;) s -= 1; - i = [a, r, s] - } - return i - }, i.prototype.normalize = function (t) { - return t.setHours(0, 0, 0, 0), t - }, i.prototype.measure = function (t, e) { - var i = this; - return e ? "string" == typeof e ? e = i.parse(t, e) : n.isInteger(e) && (e = i.now(t, e, { - rel: e - })) : e = "min" == t ? -1 / 0 : 1 / 0, e - }, i.prototype.viewset = function (t, e) { - return this.create([e.year, e.month, 1]) - }, i.prototype.validate = function (t, i, o) { - var a, r, s, l, c = this, - u = i, - d = o && o.interval ? o.interval : 1, - p = -1 === c.item.enable, - h = c.item.min, - f = c.item.max, - v = p && c.item.disable.filter(function (t) { - if (e.isArray(t)) { - var o = c.create(t).pick; - o < i.pick ? a = !0 : o > i.pick && (r = !0) - } - return n.isInteger(t) - }).length; - if ((!o || !o.nav) && (!p && c.disabled(i) || p && c.disabled(i) && (v || a || r) || !p && (i.pick <= h.pick || i.pick >= f.pick))) - for (p && !v && (!r && d > 0 || !a && d < 0) && (d *= -1); c.disabled(i) && (Math.abs(d) > 1 && (i.month < u.month || i.month > u.month) && (i = u, d = d > 0 ? 1 : -1), i.pick <= h.pick ? (s = !0, d = 1, i = c.create([h.year, h.month, h.date + (i.pick === h.pick ? 0 : -1)])) : i.pick >= f.pick && (l = !0, d = -1, i = c.create([f.year, f.month, f.date + (i.pick === f.pick ? 0 : 1)])), !s || !l);) i = c.create([i.year, i.month, i.date + d]); - return i - }, i.prototype.disabled = function (t) { - var i = this, - o = i.item.disable.filter(function (o) { - return n.isInteger(o) ? t.day === (i.settings.firstDay ? o : o - 1) % 7 : e.isArray(o) || n.isDate(o) ? t.pick === i.create(o).pick : e.isPlainObject(o) ? i.withinRange(o, t) : void 0 - }); - return o = o.length && !o.filter(function (t) { - return e.isArray(t) && "inverted" == t[3] || e.isPlainObject(t) && t.inverted - }).length, -1 === i.item.enable ? !o : o || t.pick < i.item.min.pick || t.pick > i.item.max.pick - }, i.prototype.parse = function (t, e, i) { - var o = this, - a = {}; - return e && "string" == typeof e ? (i && i.format || ((i = i || {}).format = o.settings.format), o.formats.toArray(i.format).map(function (t) { - var i = o.formats[t], - r = i ? n.trigger(i, o, [e, a]) : t.replace(/^!/, "").length; - i && (a[t] = e.substr(0, r)), e = e.substr(r) - }), [a.yyyy || a.yy, +(a.mm || a.m) - 1, a.dd || a.d]) : e - }, i.prototype.formats = function () { - function t(t, e, i) { - var n = t.match(/\w+/)[0]; - return i.mm || i.m || (i.m = e.indexOf(n) + 1), n.length - } - - function e(t) { - return t.match(/\w+/)[0].length - } - return { - d: function (t, e) { - return t ? n.digits(t) : e.date - }, - dd: function (t, e) { - return t ? 2 : n.lead(e.date) - }, - ddd: function (t, i) { - return t ? e(t) : this.settings.weekdaysShort[i.day] - }, - dddd: function (t, i) { - return t ? e(t) : this.settings.weekdaysFull[i.day] - }, - m: function (t, e) { - return t ? n.digits(t) : e.month + 1 - }, - mm: function (t, e) { - return t ? 2 : n.lead(e.month + 1) - }, - mmm: function (e, i) { - var n = this.settings.monthsShort; - return e ? t(e, n, i) : n[i.month] - }, - mmmm: function (e, i) { - var n = this.settings.monthsFull; - return e ? t(e, n, i) : n[i.month] - }, - yy: function (t, e) { - return t ? 2 : ("" + e.year).slice(2) - }, - yyyy: function (t, e) { - return t ? 4 : e.year - }, - toArray: function (t) { - return t.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g) - }, - toString: function (t, e) { - var i = this; - return i.formats.toArray(t).map(function (t) { - return n.trigger(i.formats[t], i, [0, e]) || t.replace(/^!/, "") - }).join("") - } - } - }(), i.prototype.isDateExact = function (t, i) { - var o = this; - return n.isInteger(t) && n.isInteger(i) || "boolean" == typeof t && "boolean" == typeof i ? t === i : (n.isDate(t) || e.isArray(t)) && (n.isDate(i) || e.isArray(i)) ? o.create(t).pick === o.create(i).pick : !(!e.isPlainObject(t) || !e.isPlainObject(i)) && (o.isDateExact(t.from, i.from) && o.isDateExact(t.to, i.to)) - }, i.prototype.isDateOverlap = function (t, i) { - var o = this, - a = o.settings.firstDay ? 1 : 0; - return n.isInteger(t) && (n.isDate(i) || e.isArray(i)) ? (t = t % 7 + a) === o.create(i).day + 1 : n.isInteger(i) && (n.isDate(t) || e.isArray(t)) ? (i = i % 7 + a) === o.create(t).day + 1 : !(!e.isPlainObject(t) || !e.isPlainObject(i)) && o.overlapRanges(t, i) - }, i.prototype.flipEnable = function (t) { - var e = this.item; - e.enable = t || (-1 == e.enable ? 1 : -1) - }, i.prototype.deactivate = function (t, i) { - var o = this, - a = o.item.disable.slice(0); - return "flip" == i ? o.flipEnable() : !1 === i ? (o.flipEnable(1), a = []) : !0 === i ? (o.flipEnable(-1), a = []) : i.map(function (t) { - for (var i, r = 0; r < a.length; r += 1) - if (o.isDateExact(t, a[r])) { - i = !0; - break - } - i || (n.isInteger(t) || n.isDate(t) || e.isArray(t) || e.isPlainObject(t) && t.from && t.to) && a.push(t) - }), a - }, i.prototype.activate = function (t, i) { - var o = this, - a = o.item.disable, - r = a.length; - return "flip" == i ? o.flipEnable() : !0 === i ? (o.flipEnable(1), a = []) : !1 === i ? (o.flipEnable(-1), a = []) : i.map(function (t) { - var i, s, l, c; - for (l = 0; l < r; l += 1) { - if (s = a[l], o.isDateExact(s, t)) { - i = a[l] = null, c = !0; - break - } - if (o.isDateOverlap(s, t)) { - e.isPlainObject(t) ? (t.inverted = !0, i = t) : e.isArray(t) ? (i = t)[3] || i.push("inverted") : n.isDate(t) && (i = [t.getFullYear(), t.getMonth(), t.getDate(), "inverted"]); - break - } - } - if (i) - for (l = 0; l < r; l += 1) - if (o.isDateExact(a[l], t)) { - a[l] = null; - break - } - if (c) - for (l = 0; l < r; l += 1) - if (o.isDateOverlap(a[l], t)) { - a[l] = null; - break - } - i && a.push(i) - }), a.filter(function (t) { - return null != t - }) - }, i.prototype.nodes = function (t) { - var e = this, - i = e.settings, - o = e.item, - a = o.now, - r = o.select, - s = o.highlight, - l = o.view, - c = o.disable, - u = o.min, - d = o.max, - p = function (t, e) { - return i.firstDay && (t.push(t.shift()), e.push(e.shift())), n.node("thead", n.node("tr", n.group({ - min: 0, - max: 6, - i: 1, - node: "th", - item: function (n) { - return [t[n], i.klass.weekdays, 'scope=col title="' + e[n] + '"'] - } - }))) - }((i.showWeekdaysFull ? i.weekdaysFull : i.weekdaysLetter).slice(0), i.weekdaysFull.slice(0)), - h = function (t) { - return n.node("div", " ", i.klass["nav" + (t ? "Next" : "Prev")] + (t && l.year >= d.year && l.month >= d.month || !t && l.year <= u.year && l.month <= u.month ? " " + i.klass.navDisabled : ""), "data-nav=" + (t || -1) + " " + n.ariaAttr({ - role: "button", - controls: e.$node[0].id + "_table" - }) + ' title="' + (t ? i.labelMonthNext : i.labelMonthPrev) + '"') - }, - f = function (o) { - var a = i.showMonthsShort ? i.monthsShort : i.monthsFull; - return "short_months" == o && (a = i.monthsShort), i.selectMonths && void 0 == o ? n.node("select", n.group({ - min: 0, - max: 11, - i: 1, - node: "option", - item: function (t) { - return [a[t], 0, "value=" + t + (l.month == t ? " selected" : "") + (l.year == u.year && t < u.month || l.year == d.year && t > d.month ? " disabled" : "")] - } - }), i.klass.selectMonth + " browser-default", (t ? "" : "disabled") + " " + n.ariaAttr({ - controls: e.$node[0].id + "_table" - }) + ' title="' + i.labelMonthSelect + '"') : "short_months" == o ? null != r ? a[r.month] : a[l.month] : n.node("div", a[l.month], i.klass.month) - }, - v = function (o) { - var a = l.year, - s = !0 === i.selectYears ? 5 : ~~(i.selectYears / 2); - if (s) { - var c = u.year, - p = d.year, - h = a - s, - f = a + s; - if (c > h && (f += c - h, h = c), p < f) { - var v = h - c, - m = f - p; - h -= v > m ? m : v, f = p - } - if (i.selectYears && void 0 == o) return n.node("select", n.group({ - min: h, - max: f, - i: 1, - node: "option", - item: function (t) { - return [t, 0, "value=" + t + (a == t ? " selected" : "")] - } - }), i.klass.selectYear + " browser-default", (t ? "" : "disabled") + " " + n.ariaAttr({ - controls: e.$node[0].id + "_table" - }) + ' title="' + i.labelYearSelect + '"') - } - return "raw" === o && null != r ? n.node("div", r.year) : n.node("div", a, i.klass.year) - }; - return createDayLabel = function () { - return null != r ? r.date : a.date - }, createWeekdayLabel = function () { - var t; - return t = null != r ? r.day : a.day, i.weekdaysShort[t] - }, n.node("div", n.node("div", v("raw"), i.klass.year_display) + n.node("span", createWeekdayLabel() + ", ", "picker__weekday-display") + n.node("span", f("short_months") + " ", i.klass.month_display) + n.node("span", createDayLabel(), i.klass.day_display), i.klass.date_display) + n.node("div", n.node("div", n.node("div", (i.selectYears, f() + v() + h() + h(1)), i.klass.header) + n.node("table", p + n.node("tbody", n.group({ - min: 0, - max: 5, - i: 1, - node: "tr", - item: function (t) { - var o = i.firstDay && 0 === e.create([l.year, l.month, 1]).day ? -7 : 0; - return [n.group({ - min: 7 * t - l.day + o + 1, - max: function () { - return this.min + 7 - 1 - }, - i: 1, - node: "td", - item: function (t) { - t = e.create([l.year, l.month, t + (i.firstDay ? 1 : 0)]); - var o = r && r.pick == t.pick, - p = s && s.pick == t.pick, - h = c && e.disabled(t) || t.pick < u.pick || t.pick > d.pick, - f = n.trigger(e.formats.toString, e, [i.format, t]); - return [n.node("div", t.date, function (e) { - return e.push(l.month == t.month ? i.klass.infocus : i.klass.outfocus), a.pick == t.pick && e.push(i.klass.now), o && e.push(i.klass.selected), p && e.push(i.klass.highlighted), h && e.push(i.klass.disabled), e.join(" ") - }([i.klass.day]), "data-pick=" + t.pick + " " + n.ariaAttr({ - role: "gridcell", - label: f, - selected: !(!o || e.$node.val() !== f) || null, - activedescendant: !!p || null, - disabled: !!h || null - }) + " " + (h ? "" : 'tabindex="0"')), "", n.ariaAttr({ - role: "presentation" - })] - } - })] - } - })), i.klass.table, 'id="' + e.$node[0].id + '_table" ' + n.ariaAttr({ - role: "grid", - controls: e.$node[0].id, - readonly: !0 - })), i.klass.calendar_container) + n.node("div", n.node("button", i.today, "btn-flat picker__today waves-effect", "type=button data-pick=" + a.pick + (t && !e.disabled(a) ? "" : " disabled") + " " + n.ariaAttr({ - controls: e.$node[0].id - })) + n.node("button", i.clear, "btn-flat picker__clear waves-effect", "type=button data-clear=1" + (t ? "" : " disabled") + " " + n.ariaAttr({ - controls: e.$node[0].id - })) + n.node("button", i.close, "btn-flat picker__close waves-effect", "type=button data-close=true " + (t ? "" : " disabled") + " " + n.ariaAttr({ - controls: e.$node[0].id - })), i.klass.footer), "picker__container__wrapper") - }, i.defaults = function (t) { - return { - labelMonthNext: "Next month", - labelMonthPrev: "Previous month", - labelMonthSelect: "Select a month", - labelYearSelect: "Select a year", - monthsFull: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], - monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], - weekdaysFull: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], - weekdaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], - weekdaysLetter: ["S", "M", "T", "W", "T", "F", "S"], - today: "Today", - clear: "Clear", - close: "Ok", - closeOnSelect: !1, - format: "d mmmm, yyyy", - klass: { - table: t + "table", - header: t + "header", - date_display: t + "date-display", - day_display: t + "day-display", - month_display: t + "month-display", - year_display: t + "year-display", - calendar_container: t + "calendar-container", - navPrev: t + "nav--prev", - navNext: t + "nav--next", - navDisabled: t + "nav--disabled", - month: t + "month", - year: t + "year", - selectMonth: t + "select--month", - selectYear: t + "select--year", - weekdays: t + "weekday", - day: t + "day", - disabled: t + "day--disabled", - selected: t + "day--selected", - highlighted: t + "day--highlighted", - now: t + "day--today", - infocus: t + "day--infocus", - outfocus: t + "day--outfocus", - footer: t + "footer", - buttonClear: t + "button--clear", - buttonToday: t + "button--today", - buttonClose: t + "button--close" - } - } - }(t.klasses().picker + "__"), t.extend("pickadate", i) - }), - function (t) { - function e(t) { - return document.createElementNS(l, t) - } - - function i(t) { - return (t < 10 ? "0" : "") + t - } - - function n(t) { - var e = ++m + ""; - return t ? t + e : e - } - - function o(o, r) { - function l(t, e) { - var i = d.offset(), - n = /^touch/.test(t.type), - o = i.left + g, - a = i.top + g, - l = (n ? t.originalEvent.touches[0] : t).pageX - o, - c = (n ? t.originalEvent.touches[0] : t).pageY - a, - u = Math.sqrt(l * l + c * c), - p = !1; - if (!e || !(u < y - w || u > y + w)) { - t.preventDefault(); - var v = setTimeout(function () { - E.popover.addClass("clockpicker-moving") - }, 200); - E.setHand(l, c, !e, !0), s.off(h).on(h, function (t) { - t.preventDefault(); - var e = /^touch/.test(t.type), - i = (e ? t.originalEvent.touches[0] : t).pageX - o, - n = (e ? t.originalEvent.touches[0] : t).pageY - a; - (p || i !== l || n !== c) && (p = !0, E.setHand(i, n, !1, !0)) - }), s.off(f).on(f, function (t) { - s.off(f), t.preventDefault(); - var i = /^touch/.test(t.type), - n = (i ? t.originalEvent.changedTouches[0] : t).pageX - o, - u = (i ? t.originalEvent.changedTouches[0] : t).pageY - a; - (e || p) && n === l && u === c && E.setHand(n, u), "hours" === E.currentView ? E.toggleView("minutes", x / 2) : r.autoclose && (E.minutesView.addClass("clockpicker-dial-out"), setTimeout(function () { - E.done() - }, x / 2)), d.prepend(z), clearTimeout(v), E.popover.removeClass("clockpicker-moving"), s.off(h) - }) - } - } - var u = t(C), - d = u.find(".clockpicker-plate"), - v = u.find(".picker__holder"), - m = u.find(".clockpicker-hours"), - T = u.find(".clockpicker-minutes"), - S = u.find(".clockpicker-am-pm-block"), - P = "INPUT" === o.prop("tagName"), - A = P ? o : o.find("input"), - O = t("label[for=" + A.attr("id") + "]"), - E = this; - this.id = n("cp"), this.element = o, this.holder = v, this.options = r, this.isAppended = !1, this.isShown = !1, this.currentView = "hours", this.isInput = P, this.input = A, this.label = O, this.popover = u, this.plate = d, this.hoursView = m, this.minutesView = T, this.amPmBlock = S, this.spanHours = u.find(".clockpicker-span-hours"), this.spanMinutes = u.find(".clockpicker-span-minutes"), this.spanAmPm = u.find(".clockpicker-span-am-pm"), this.footer = u.find(".picker__footer"), this.amOrPm = "PM", r.twelvehour && (r.ampmclickable ? (this.spanAmPm.empty(), t('
      AM
      ').on("click", function () { - E.spanAmPm.children("#click-am").addClass("text-primary"), E.spanAmPm.children("#click-pm").removeClass("text-primary"), E.amOrPm = "AM" - }).appendTo(this.spanAmPm), t('
      PM
      ').on("click", function () { - E.spanAmPm.children("#click-pm").addClass("text-primary"), E.spanAmPm.children("#click-am").removeClass("text-primary"), E.amOrPm = "PM" - }).appendTo(this.spanAmPm)) : (this.spanAmPm.empty(), t('
      AM
      ').appendTo(this.spanAmPm), t('
      PM
      ').appendTo(this.spanAmPm))), t('").click(t.proxy(this.clear, this)).appendTo(this.footer), t('").click(t.proxy(this.hide, this)).appendTo(this.footer), t('").click(t.proxy(this.done, this)).appendTo(this.footer), this.spanHours.click(t.proxy(this.toggleView, this, "hours")), this.spanMinutes.click(t.proxy(this.toggleView, this, "minutes")), A.on("focus.clockpicker click.clockpicker", t.proxy(this.show, this)); - var _, M, I, D, q = t('
      '); - if (r.twelvehour) - for (_ = 1; _ < 13; _ += 1) M = q.clone(), I = _ / 6 * Math.PI, D = y, M.css({ - left: g + Math.sin(I) * D - w, - top: g - Math.cos(I) * D - w - }), M.html(0 === _ ? "00" : _), m.append(M), M.on(p, l); - else - for (_ = 0; _ < 24; _ += 1) M = q.clone(), I = _ / 6 * Math.PI, D = _ > 0 && _ < 13 ? b : y, M.css({ - left: g + Math.sin(I) * D - w, - top: g - Math.cos(I) * D - w - }), M.html(0 === _ ? "00" : _), m.append(M), M.on(p, l); - for (_ = 0; _ < 60; _ += 5) M = q.clone(), I = _ / 30 * Math.PI, M.css({ - left: g + Math.sin(I) * y - w, - top: g - Math.cos(I) * y - w - }), M.html(i(_)), T.append(M), M.on(p, l); - if (d.on(p, function (e) { - 0 === t(e.target).closest(".clockpicker-tick").length && l(e, !0) - }), c) { - var z = u.find(".clockpicker-canvas"), - V = e("svg"); - V.setAttribute("class", "clockpicker-svg"), V.setAttribute("width", k), V.setAttribute("height", k); - var H = e("g"); - H.setAttribute("transform", "translate(" + g + "," + g + ")"); - var L = e("circle"); - L.setAttribute("class", "clockpicker-canvas-bearing"), L.setAttribute("cx", 0), L.setAttribute("cy", 0), L.setAttribute("r", 4); - var j = e("line"); - j.setAttribute("x1", 0), j.setAttribute("y1", 0); - var $ = e("circle"); - $.setAttribute("class", "clockpicker-canvas-bg"), $.setAttribute("r", w), H.appendChild(j), H.appendChild($), H.appendChild(L), V.appendChild(H), z.append(V), this.hand = j, this.bg = $, this.bearing = L, this.g = H, this.canvas = z - } - a(this.options.init) - } - - function a(t) { - t && "function" == typeof t && t() - } - var r = t(window), - s = t(document), - l = "http://www.w3.org/2000/svg", - c = "SVGAngle" in window && function () { - var t, e = document.createElement("div"); - return e.innerHTML = "", t = (e.firstChild && e.firstChild.namespaceURI) == l, e.innerHTML = "", t - }(), - u = function () { - var t = document.createElement("div").style; - return "transition" in t || "WebkitTransition" in t || "MozTransition" in t || "msTransition" in t || "OTransition" in t - }(), - d = "ontouchstart" in window, - p = "mousedown" + (d ? " touchstart" : ""), - h = "mousemove.clockpicker" + (d ? " touchmove.clockpicker" : ""), - f = "mouseup.clockpicker" + (d ? " touchend.clockpicker" : ""), - v = navigator.vibrate ? "vibrate" : navigator.webkitVibrate ? "webkitVibrate" : null, - m = 0, - g = 135, - y = 105, - b = 70, - w = 20, - k = 2 * g, - x = u ? 350 : 1, - C = ['
      ', '
      ', '
      ', '
      ', '
      ', '
      ', '
      ', '
      ', '', ":", '', "
      ", '
      ', '
      ', "
      ", "
      ", "
      ", '
      ', '
      ', '
      ', '
      ', '
      ', '
      ', "
      ", '
      ', "
      ", "
      ", '", "
      ", "
      ", "
      ", "
      ", "
      ", "
      "].join(""); - o.DEFAULTS = { - default: "", - fromnow: 0, - donetext: "Ok", - cleartext: "Clear", - canceltext: "Cancel", - autoclose: !1, - ampmclickable: !0, - darktheme: !1, - twelvehour: !0, - vibrate: !0 - }, o.prototype.toggle = function () { - this[this.isShown ? "hide" : "show"]() - }, o.prototype.locate = function () { - var t = this.element, - e = this.popover; - t.offset(), t.outerWidth(), t.outerHeight(), this.options.align; - e.show() - }, o.prototype.show = function (e) { - if (!this.isShown) { - a(this.options.beforeShow), t(":input").each(function () { - t(this).attr("tabindex", -1) - }); - var n = this; - this.input.blur(), this.popover.addClass("picker--opened"), this.input.addClass("picker__input picker__input--active"), t(document.body).css("overflow", "hidden"); - var o = ((this.input.prop("value") || this.options.default || "") + "").split(":"); - if (this.options.twelvehour && void 0 !== o[1] && (o[1].indexOf("AM") > 0 ? this.amOrPm = "AM" : this.amOrPm = "PM", o[1] = o[1].replace("AM", "").replace("PM", "")), "now" === o[0]) { - var l = new Date(+new Date + this.options.fromnow); - o = [l.getHours(), l.getMinutes()], this.options.twelvehour && (this.amOrPm = o[0] >= 12 && o[0] < 24 ? "PM" : "AM") - } - if (this.hours = +o[0] || 0, this.minutes = +o[1] || 0, this.spanHours.html(this.hours), this.spanMinutes.html(i(this.minutes)), !this.isAppended) { - var c = document.querySelector(this.options.container); - this.options.container && c ? c.appendChild(this.popover[0]) : this.popover.insertAfter(this.input), this.options.twelvehour && ("PM" === this.amOrPm ? (this.spanAmPm.children("#click-pm").addClass("text-primary"), this.spanAmPm.children("#click-am").removeClass("text-primary")) : (this.spanAmPm.children("#click-am").addClass("text-primary"), this.spanAmPm.children("#click-pm").removeClass("text-primary"))), r.on("resize.clockpicker" + this.id, function () { - n.isShown && n.locate() - }), this.isAppended = !0 - } - this.toggleView("hours"), this.locate(), this.isShown = !0, s.on("click.clockpicker." + this.id + " focusin.clockpicker." + this.id, function (e) { - var i = t(e.target); - 0 === i.closest(n.popover.find(".picker__wrap")).length && 0 === i.closest(n.input).length && n.hide() - }), s.on("keyup.clockpicker." + this.id, function (t) { - 27 === t.keyCode && n.hide() - }), a(this.options.afterShow) - } - }, o.prototype.hide = function () { - a(this.options.beforeHide), this.input.removeClass("picker__input picker__input--active"), this.popover.removeClass("picker--opened"), t(document.body).css("overflow", "visible"), this.isShown = !1, t(":input").each(function (e) { - t(this).attr("tabindex", e + 1) - }), s.off("click.clockpicker." + this.id + " focusin.clockpicker." + this.id), s.off("keyup.clockpicker." + this.id), this.popover.hide(), a(this.options.afterHide) - }, o.prototype.toggleView = function (e, i) { - var n = !1; - "minutes" === e && "visible" === t(this.hoursView).css("visibility") && (a(this.options.beforeHourSelect), n = !0); - var o = "hours" === e, - r = o ? this.hoursView : this.minutesView, - s = o ? this.minutesView : this.hoursView; - this.currentView = e, this.spanHours.toggleClass("text-primary", o), this.spanMinutes.toggleClass("text-primary", !o), s.addClass("clockpicker-dial-out"), r.css("visibility", "visible").removeClass("clockpicker-dial-out"), this.resetClock(i), clearTimeout(this.toggleViewTimer), this.toggleViewTimer = setTimeout(function () { - s.css("visibility", "hidden") - }, x), n && a(this.options.afterHourSelect) - }, o.prototype.resetClock = function (t) { - var e = this.currentView, - i = this[e], - n = "hours" === e, - o = i * (Math.PI / (n ? 6 : 30)), - a = n && i > 0 && i < 13 ? b : y, - r = Math.sin(o) * a, - s = -Math.cos(o) * a, - l = this; - c && t ? (l.canvas.addClass("clockpicker-canvas-out"), setTimeout(function () { - l.canvas.removeClass("clockpicker-canvas-out"), l.setHand(r, s) - }, t)) : this.setHand(r, s) - }, o.prototype.setHand = function (e, n, o, a) { - var r, s = Math.atan2(e, -n), - l = "hours" === this.currentView, - u = Math.PI / (l || o ? 6 : 30), - d = Math.sqrt(e * e + n * n), - p = this.options, - h = l && d < (y + b) / 2, - f = h ? b : y; - if (p.twelvehour && (f = y), s < 0 && (s = 2 * Math.PI + s), r = Math.round(s / u), s = r * u, p.twelvehour ? l ? 0 === r && (r = 12) : (o && (r *= 5), 60 === r && (r = 0)) : l ? (12 === r && (r = 0), r = h ? 0 === r ? 12 : r : 0 === r ? 0 : r + 12) : (o && (r *= 5), 60 === r && (r = 0)), this[this.currentView] !== r && v && this.options.vibrate && (this.vibrateTimer || (navigator[v](10), this.vibrateTimer = setTimeout(t.proxy(function () { - this.vibrateTimer = null - }, this), 100))), this[this.currentView] = r, l ? this.spanHours.html(r) : this.spanMinutes.html(i(r)), c) { - var m = Math.sin(s) * (f - w), - g = -Math.cos(s) * (f - w), - k = Math.sin(s) * f, - x = -Math.cos(s) * f; - this.hand.setAttribute("x2", m), this.hand.setAttribute("y2", g), this.bg.setAttribute("cx", k), this.bg.setAttribute("cy", x) - } else this[l ? "hoursView" : "minutesView"].find(".clockpicker-tick").each(function () { - var e = t(this); - e.toggleClass("active", r === +e.html()) - }) - }, o.prototype.done = function () { - a(this.options.beforeDone), this.hide(), this.label.addClass("active"); - var t = this.input.prop("value"), - e = i(this.hours) + ":" + i(this.minutes); - this.options.twelvehour && (e += this.amOrPm), this.input.prop("value", e), e !== t && (this.input.triggerHandler("change"), this.isInput || this.element.trigger("change")), this.options.autoclose && this.input.trigger("blur"), a(this.options.afterDone) - }, o.prototype.clear = function () { - this.hide(), this.label.removeClass("active"); - var t = this.input.prop("value"); - this.input.prop("value", ""), "" !== t && (this.input.triggerHandler("change"), this.isInput || this.element.trigger("change")), this.options.autoclose && this.input.trigger("blur") - }, o.prototype.remove = function () { - this.element.removeData("clockpicker"), this.input.off("focus.clockpicker click.clockpicker"), this.isShown && this.hide(), this.isAppended && (r.off("resize.clockpicker" + this.id), this.popover.remove()) - }, t.fn.pickatime = function (e) { - var i = Array.prototype.slice.call(arguments, 1); - return this.each(function () { - var n = t(this), - a = n.data("clockpicker"); - if (a) "function" == typeof a[e] && a[e].apply(a, i); - else { - var r = t.extend({}, o.DEFAULTS, n.data(), "object" == typeof e && e); - n.data("clockpicker", new o(n, r)) - } - }) - } - }(jQuery), - function (t) { - function e() { - var e = +t(this).attr("data-length"), - i = +t(this).val().length, - n = i <= e; - t(this).parent().find('span[class="character-counter"]').html(i + "/" + e), o(n, t(this)) - } - - function i(e) { - var i = e.parent().find('span[class="character-counter"]'); - i.length || (i = t("").addClass("character-counter").css("float", "right").css("font-size", "12px").css("height", 1), e.parent().append(i)) - } - - function n() { - t(this).parent().find('span[class="character-counter"]').html("") - } - - function o(t, e) { - var i = e.hasClass("invalid"); - t && i ? e.removeClass("invalid") : t || i || (e.removeClass("valid"), e.addClass("invalid")) - } - t.fn.characterCounter = function () { - return this.each(function () { - var o = t(this); - o.parent().find('span[class="character-counter"]').length || void 0 !== o.attr("data-length") && (o.on("input", e), o.on("focus", e), o.on("blur", n), i(o)) - }) - }, t(document).ready(function () { - t("input, textarea").characterCounter() - }) - }(jQuery), - function (t) { - var e = { - init: function (e) { - var i = { - duration: 200, - dist: -100, - shift: 0, - padding: 0, - fullWidth: !1, - indicators: !1, - noWrap: !1, - onCycleTo: null - }; - e = t.extend(i, e); - var n = Materialize.objectSelectorString(t(this)); - return this.each(function (i) { - function o(t) { - return t.targetTouches && t.targetTouches.length >= 1 ? t.targetTouches[0].clientX : t.clientX - } - - function a(t) { - return t.targetTouches && t.targetTouches.length >= 1 ? t.targetTouches[0].clientY : t.clientY - } - - function r(t) { - return t >= C ? t % C : t < 0 ? r(C + t % C) : t - } - - function s(i) { - E = !0, j.hasClass("scrolling") || j.addClass("scrolling"), null != H && window.clearTimeout(H), H = window.setTimeout(function () { - E = !1, j.removeClass("scrolling") - }, e.duration); - var n, o, a, s, l, c, u, d = w; - if (b = "number" == typeof i ? i : b, w = Math.floor((b + x / 2) / x), a = b - w * x, s = a < 0 ? 1 : -1, l = -s * a * 2 / x, o = C >> 1, e.fullWidth ? u = "translateX(0)" : (u = "translateX(" + (j[0].clientWidth - m) / 2 + "px) ", u += "translateY(" + (j[0].clientHeight - g) / 2 + "px)"), N) { - var p = w % C, - h = V.find(".indicator-item.active"); - h.index() !== p && (h.removeClass("active"), V.find(".indicator-item").eq(p).addClass("active")) - } - for ((!W || w >= 0 && w < C) && (c = v[r(w)], t(c).hasClass("active") || (j.find(".carousel-item").removeClass("active"), t(c).addClass("active")), c.style[_] = u + " translateX(" + -a / 2 + "px) translateX(" + s * e.shift * l * n + "px) translateZ(" + e.dist * l + "px)", c.style.zIndex = 0, e.fullWidth ? tweenedOpacity = 1 : tweenedOpacity = 1 - .2 * l, c.style.opacity = tweenedOpacity, c.style.display = "block"), n = 1; n <= o; ++n) e.fullWidth ? (zTranslation = e.dist, tweenedOpacity = n === o && a < 0 ? 1 - l : 1) : (zTranslation = e.dist * (2 * n + l * s), tweenedOpacity = 1 - .2 * (2 * n + l * s)), (!W || w + n < C) && ((c = v[r(w + n)]).style[_] = u + " translateX(" + (e.shift + (x * n - a) / 2) + "px) translateZ(" + zTranslation + "px)", c.style.zIndex = -n, c.style.opacity = tweenedOpacity, c.style.display = "block"), e.fullWidth ? (zTranslation = e.dist, tweenedOpacity = n === o && a > 0 ? 1 - l : 1) : (zTranslation = e.dist * (2 * n - l * s), tweenedOpacity = 1 - .2 * (2 * n - l * s)), (!W || w - n >= 0) && ((c = v[r(w - n)]).style[_] = u + " translateX(" + (-e.shift + (-x * n - a) / 2) + "px) translateZ(" + zTranslation + "px)", c.style.zIndex = -n, c.style.opacity = tweenedOpacity, c.style.display = "block"); - if ((!W || w >= 0 && w < C) && ((c = v[r(w)]).style[_] = u + " translateX(" + -a / 2 + "px) translateX(" + s * e.shift * l + "px) translateZ(" + e.dist * l + "px)", c.style.zIndex = 0, e.fullWidth ? tweenedOpacity = 1 : tweenedOpacity = 1 - .2 * l, c.style.opacity = tweenedOpacity, c.style.display = "block"), d !== w && "function" == typeof e.onCycleTo) { - var f = j.find(".carousel-item").eq(r(w)); - e.onCycleTo.call(this, f, q) - } - "function" == typeof L && (L.call(this, f, q), L = null) - } - - function l() { - var t, e, i; - e = (t = Date.now()) - I, I = t, i = b - M, M = b, O = .8 * (1e3 * i / (1 + e)) + .2 * O - } - - function c() { - var t, i; - P && (t = Date.now() - I, (i = P * Math.exp(-t / e.duration)) > 2 || i < -2 ? (s(A - i), requestAnimationFrame(c)) : s(A)) - } - - function u(i) { - if (q) return i.preventDefault(), i.stopPropagation(), !1; - if (!e.fullWidth) { - var n = t(i.target).closest(".carousel-item").index(); - 0 !== r(w) - n && (i.preventDefault(), i.stopPropagation()), d(n) - } - } - - function d(t) { - var e = w % C - t; - W || (e < 0 ? Math.abs(e + C) < Math.abs(e) && (e += C) : e > 0 && Math.abs(e - C) < e && (e -= C)), e < 0 ? j.trigger("carouselNext", [Math.abs(e)]) : e > 0 && j.trigger("carouselPrev", [e]) - } - - function p(e) { - "mousedown" === e.type && t(e.target).is("img") && e.preventDefault(), k = !0, q = !1, z = !1, T = o(e), S = a(e), O = P = 0, M = b, I = Date.now(), clearInterval(D), D = setInterval(l, 100) - } - - function h(t) { - var e, i; - if (k) - if (e = o(t), y = a(t), i = T - e, Math.abs(S - y) < 30 && !z)(i > 2 || i < -2) && (q = !0, T = e, s(b + i)); - else { - if (q) return t.preventDefault(), t.stopPropagation(), !1; - z = !0 - } - if (q) return t.preventDefault(), t.stopPropagation(), !1 - } - - function f(t) { - if (k) return k = !1, clearInterval(D), A = b, (O > 10 || O < -10) && (A = b + (P = .9 * O)), A = Math.round(A / x) * x, W && (A >= x * (C - 1) ? A = x * (C - 1) : A < 0 && (A = 0)), P = A - b, I = Date.now(), requestAnimationFrame(c), q && (t.preventDefault(), t.stopPropagation()), !1 - } - var v, m, g, b, w, k, x, C, T, S, P, A, O, E, _, M, I, D, q, z, V = t('
        '), - H = null, - L = null, - j = t(this), - $ = j.find(".carousel-item").length > 1, - N = (j.attr("data-indicators") || e.indicators) && $, - W = j.attr("data-no-wrap") || e.noWrap || !$, - F = j.attr("data-namespace") || n + i; - j.attr("data-namespace", F); - var Q = function (e) { - var i = j.find(".carousel-item.active").length ? j.find(".carousel-item.active").first() : j.find(".carousel-item").first(), - n = i.find("img").first(); - if (n.length) - if (n[0].complete) - if (n.height() > 0) j.css("height", n.height()); - else { - var o = n[0].naturalWidth, - a = n[0].naturalHeight, - r = j.width() / o * a; - j.css("height", r) - } - else n.on("load", function () { - j.css("height", t(this).height()) - }); - else if (!e) { - var s = i.height(); - j.css("height", s) - } - }; - if (e.fullWidth && (e.dist = 0, Q(), N && j.find(".carousel-fixed-item").addClass("with-indicators")), j.hasClass("initialized")) return t(window).trigger("resize"), j.trigger("carouselNext", [1e-6]), !0; - j.addClass("initialized"), k = !1, b = A = 0, v = [], m = j.find(".carousel-item").first().innerWidth(), g = j.find(".carousel-item").first().innerHeight(), x = 2 * m + e.padding, j.find(".carousel-item").each(function (e) { - if (v.push(t(this)[0]), N) { - var i = t('
      • '); - 0 === e && i.addClass("active"), i.click(function (e) { - e.stopPropagation(), d(t(this).index()) - }), V.append(i) - } - }), N && j.append(V), C = v.length, _ = "transform", ["webkit", "Moz", "O", "ms"].every(function (t) { - var e = t + "Transform"; - return void 0 === document.body.style[e] || (_ = e, !1) - }); - var X = Materialize.throttle(function () { - if (e.fullWidth) { - m = j.find(".carousel-item").first().innerWidth(); - j.find(".carousel-item.active").height(); - x = 2 * m + e.padding, A = b = 2 * w * m, Q(!0) - } else s() - }, 200); - t(window).off("resize.carousel-" + F).on("resize.carousel-" + F, X), void 0 !== window.ontouchstart && (j.on("touchstart.carousel", p), j.on("touchmove.carousel", h), j.on("touchend.carousel", f)), j.on("mousedown.carousel", p), j.on("mousemove.carousel", h), j.on("mouseup.carousel", f), j.on("mouseleave.carousel", f), j.on("click.carousel", u), s(b), t(this).on("carouselNext", function (t, e, i) { - void 0 === e && (e = 1), "function" == typeof i && (L = i), A = x * Math.round(b / x) + x * e, b !== A && (P = A - b, I = Date.now(), requestAnimationFrame(c)) - }), t(this).on("carouselPrev", function (t, e, i) { - void 0 === e && (e = 1), "function" == typeof i && (L = i), A = x * Math.round(b / x) - x * e, b !== A && (P = A - b, I = Date.now(), requestAnimationFrame(c)) - }), t(this).on("carouselSet", function (t, e, i) { - void 0 === e && (e = 0), "function" == typeof i && (L = i), d(e) - }) - }) - }, - next: function (e, i) { - t(this).trigger("carouselNext", [e, i]) - }, - prev: function (e, i) { - t(this).trigger("carouselPrev", [e, i]) - }, - set: function (e, i) { - t(this).trigger("carouselSet", [e, i]) - }, - destroy: function () { - var e = t(this).attr("data-namespace"); - t(this).removeAttr("data-namespace"), t(this).removeClass("initialized"), t(this).find(".indicators").remove(), t(this).off("carouselNext carouselPrev carouselSet"), t(window).off("resize.carousel-" + e), void 0 !== window.ontouchstart && t(this).off("touchstart.carousel touchmove.carousel touchend.carousel"), t(this).off("mousedown.carousel mousemove.carousel mouseup.carousel mouseleave.carousel click.carousel") - } - }; - t.fn.carousel = function (i) { - return e[i] ? e[i].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != typeof i && i ? void t.error("Method " + i + " does not exist on jQuery.carousel") : e.init.apply(this, arguments) - } - }(jQuery), - function (t) { - var e = { - init: function (e) { - return this.each(function () { - var i = t("#" + t(this).attr("data-activates")), - n = (t("body"), t(this)), - o = n.parent(".tap-target-wrapper"), - a = o.find(".tap-target-wave"), - r = o.find(".tap-target-origin"), - s = n.find(".tap-target-content"); - o.length || (o = n.wrap(t('
        ')).parent()), s.length || (s = t('
        '), n.append(s)), a.length || (a = t('
        '), r.length || ((r = i.clone(!0, !0)).addClass("tap-target-origin"), r.removeAttr("id"), r.removeAttr("style"), a.append(r)), o.append(a)); - var l = function () { - o.is(".open") && (o.removeClass("open"), r.off("click.tapTarget"), t(document).off("click.tapTarget"), t(window).off("resize.tapTarget")) - }, - c = function () { - var e = "fixed" === i.css("position"); - if (!e) - for (var r = i.parents(), l = 0; l < r.length && !(e = "fixed" == t(r[l]).css("position")); l++); - var c = i.outerWidth(), - u = i.outerHeight(), - d = e ? i.offset().top - t(document).scrollTop() : i.offset().top, - p = e ? i.offset().left - t(document).scrollLeft() : i.offset().left, - h = t(window).width(), - f = t(window).height(), - v = h / 2, - m = f / 2, - g = p <= v, - y = p > v, - b = d <= m, - w = d > m, - k = p >= .25 * h && p <= .75 * h, - x = n.outerWidth(), - C = n.outerHeight(), - T = d + u / 2 - C / 2, - S = p + c / 2 - x / 2, - P = e ? "fixed" : "absolute", - A = k ? x : x / 2 + c, - O = C / 2, - E = b ? C / 2 : 0, - _ = g && !k ? x / 2 - c : 0, - M = c, - I = w ? "bottom" : "top", - D = 2 * c, - q = D, - z = C / 2 - q / 2, - V = x / 2 - D / 2, - H = {}; - H.top = b ? T : "", H.right = y ? h - S - x : "", H.bottom = w ? f - T - C : "", H.left = g ? S : "", H.position = P, o.css(H), s.css({ - width: A, - height: O, - top: E, - right: 0, - bottom: 0, - left: _, - padding: M, - verticalAlign: I - }), a.css({ - top: z, - left: V, - width: D, - height: q - }) - }; - "open" == e && (c(), o.is(".open") || (o.addClass("open"), setTimeout(function () { - r.off("click.tapTarget").on("click.tapTarget", function (t) { - l(), r.off("click.tapTarget") - }), t(document).off("click.tapTarget").on("click.tapTarget", function (e) { - l(), t(document).off("click.tapTarget") - }); - var e = Materialize.throttle(function () { - c() - }, 200); - t(window).off("resize.tapTarget").on("resize.tapTarget", e) - }, 0))), "close" == e && l() - }) - }, - open: function () {}, - close: function () {} - }; - t.fn.tapTarget = function (i) { - if (e[i] || "object" == typeof i) return e.init.apply(this, arguments); - t.error("Method " + i + " does not exist on jQuery.tap-target") - } - }(jQuery); diff --git a/gramateria/develop/blocks.js b/gramateria/develop/blocks.js deleted file mode 100644 index 88674d2..0000000 --- a/gramateria/develop/blocks.js +++ /dev/null @@ -1,1017 +0,0 @@ -module.exports = [ - { - id: 'std', - label: 'Starter', - category: 'Section', - content: '' + - ``, - attributes: { - class: 'fa fa-wpforms' - } - }, - { - id: 'parallax', - label: 'Parallax', - category: 'Section', - content: '
        ' - + '
        ' - + '' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '

        Parallax

        ' - + '

        Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ' + - '' - + '', - attributes: { - class: 'fa fa-list-alt' - } - } - , - { - id: 'nav', - label: 'Navbar 1', - category: 'Section', - content: '' + - ``, - attributes: { - class: 'fa fa-window-maximize' - } - }, - { - id: 'dropdownNav', - label: 'Navbar 2', - category: 'Section', - content: '' - + '' - + '' - + '' - + '', - attributes: { - class: 'fa fa-toggle-down' - } - } - , - { - id: 'footer', - label: 'Footer', - category: 'Section', - content: '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        Company Bio
        ' + - '

        We are a team of college students working on this project like its our full time job.Any amount would help support and continue development on this project and is greatly appreciated.

        ' + - '
        ' + - '
        ' + - '
        Settings
        ' + - '' + - '
        ' + - '
        ' + - '
        Connect
        ' + - '' + - '
        ' + - '
        ' + - '
        ' + - '' + - '
        ', - attributes: { - class: 'fa fa-desktop' - } - }, - { - id: 'b1', - label: '1 Block', - category: 'Grid', - attributes: { - class: 'fa fa-reorder' - }, - content: `
        -
        -
        ` - }, - { - id: 'b2', - label: '2 Blocks', - category: 'Grid', - attributes: { - class: 'fa fa-th-large' - }, - content: `
        -
        -
        -
        ` - }, - { - id: 'b3', - label: '3 Blocks', - category: 'Grid', - attributes: { - class: 'fa fa-th' - }, - content: '
        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ', - }, - { - id: 'b4', - label: '4 Blocks', - category: 'Grid', - attributes: { - class: 'fa fa-calendar' - }, - content: '
        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ', - }, - { - id: 'b5', - label: '4/8 Block', - category: 'Grid', - attributes: { - class: 'fa fa-th-list' - }, - content: '
        ' - + '
        ' - + '
        ' - + '
        ', - }, - { - id: 'b6', - label: '5/7 Block', - category: 'Grid', - attributes: { - class: 'fa fa-dedent' - }, - content: '
        ' - + '
        ' - + '
        ' - + '
        ', - }, - { - id: 'b7', - label: '3/9 Block', - category: 'Grid', - attributes: { - class: 'fa fa-list' - }, - content: '
        ' - + '
        ' - + '
        ' - + '
        ', - }, - { - id: 'b8', - label: 'Center Block', - category: 'Grid', - attributes: { - class: 'fa fa-minus-square-o' - }, - content: '
        ' - + '
        ' - + '
        ', - }, - { - id: '3ba', - label: 'Badges', - category: 'Section', - content: '
        ' - + '
        ' - + '
        ' - + '
        ' - + '

        flash_on

        ' - + '
        Speeds up development
        ' - - + '

        We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

        ' - + '
        ' - + '
        ' - - + '
        ' - + '
        ' - + '

        group

        ' - + '
        User Experience Focused
        ' - - + '

        By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

        ' - + '
        ' - + '
        ' - - + '
        ' - + '
        ' - + '

        settings

        ' - + '
        Easy to work with
        ' - - + '

        We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '', - attributes: { - class: 'fa fa-sitemap' - } - }, - { - id: 'text', - label: 'Text', - attributes: { - class: 'fa fa-text-width' - }, - category: 'Basic', - content: { - type: 'text', - content: 'Insert your text here', - activeOnRender: 1 - }, - }, { - id: 'image', - label: 'Image', - category: 'Basic', - attributes: { - class: 'fa fa-file-image-o' - }, - content: { - type: 'image', - activeOnRender: 1 - }, - }, { - id: 'list', - label: 'List', - category: 'Basic', - attributes: { - class: 'fa fa-bars' - }, - content: `
          -
        • List One
        • -
        • List Two
        • -
        • List Three
        • -
        • List Four
        • -
        `, - }, - - { - id: 'list2', - label: 'List Two', - category: 'Basic', - attributes: { - class: 'fa fa-bars' - }, - content: '
          ' - + '
        • ' - + '' - + 'Title' - + '

          First Line
          Second Line

          ' - + 'grade' - + '
        • ' - + '
        • ' - + 'folder' - + 'Title' - + '

          First Line
          Second Line

          ' - + 'grade' - + '
        • ' - + '
        • ' - + 'insert_chart' - + 'Title' - + '

          First Line
          Second Line

          ' - + 'grade' - + '
        • ' - + '
        • ' - + 'play_arrow' - + 'Title' - + '

          First Line
          Second Line

          ' - + 'grade' - + '
        • ' - + '
        ', - }, - { - id: 'table', - label: 'Table', - category: 'Basic', - attributes: { - class: 'fa fa-table' - }, - content: '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '
        NameItem NameItem Price
        AlvinEclair$0.87
        AlanJellybean$3.76
        JonathanLollipop$7.00
        ', - }, - { - id: 'res', - label: 'respon image', - category: 'Media', - content: '', - attributes: { - class: 'fa fa-image' - } - }, - { - id: 'popup', - label: 'popup image', - category: 'Media', - content: '' - + '', - attributes: { - class: 'fa fa-object-group' - } - } - , - { - id: 'dropdown', - label: 'dropdown', - category: 'Button', - content: '' - + 'Drop Me!' - + '' + - '', - attributes: { - class: 'fa fa-list' - } - } - , { - id: 'modal', - label: 'modal', - category: 'Button', - content: '' - + 'Modal' - + '' + - '', - attributes: { - class: 'fa fa-object-ungroup' - } - }, - { - id: 'slider', - label: 'Slider', - category: 'Section', - content: '
        ' + - '
          ' - + '
        • ' - + ' ' - + '
          ' - + '

          This is our big Tagline!

          ' - + '
          Heres our small slogan.
          ' - + '
          ' - + '
        • ' - + '
        • ' - + ' ' - + '
          ' - + '

          Left Aligned Caption

          ' - + '
          Heres our small slogan.
          ' - + '
          ' - + '
        • ' - + '
        • ' - + ' ' - + '
          ' - + '

          Right Aligned Caption

          ' - + '
          Heres our small slogan.
          ' - + '
          ' - + '
        • ' - + '
        • ' - + ' ' - + '
          ' - + '

          This is our big Tagline!

          ' - + '
          Heres our small slogan.
          ' - + '
          ' - + '
        • ' - + '
        ' - + '
        ' + - '', - attributes: { - class: 'fa fa-credit-card' - } - }, - - { - id: 'btn', - label: 'button', - category: 'Button', - content: 'button', - attributes: { - class: 'fa fa-square-o' - } - }, - { - id: 'target', - label: 'tap target', - category: 'Button', - content: '' - + '
        ' - + '
        ' - + '
        Title
        ' - + '

        Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Proin eget tortor risus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Nulla porttitor accumsan tincidunt.

        ' - + '
        ' - + '
        ', - attributes: { - class: 'fa fa-bullseye' - } - }, - { - id: 'fab', - label: 'FAB', - category: 'Button', - content: '', - attributes: { - class: 'fa fa-bullseye' - } - }, { - id: 'fabtool', - label: 'FAB toolbar', - category: 'Button', - content: '
        ' + - '' - + 'mode_edit' - + '' - + '' - + '
        ', - attributes: { - class: 'fa fa-ellipsis-h' - } - }, - { - id: 'cbtn', - label: 'Circle Button', - category: 'Button', - content: 'add', - attributes: { - class: 'fa fa-circle-thin' - } - }, { - id: 'link', - label: 'Link', - category: 'Basic', - attributes: { - class: 'fa fa-link' - }, - content: { - type: 'link', - content: 'Link', - }, - }, { - id: 'formtag', - label: 'Form Tag', - category: 'Form', - attributes: { - class: 'fa fa-file-text' - }, - content: '
        ' + - '
        ' + - '
        ' + - '
        ' + - '', - } - , { - id: 'formgroup', - label: 'Form group', - category: 'Form', - attributes: { - class: 'fa fa-list' - }, - content: '
        ' - + '
        ' - + '
        ' - + '
        ' - + '' - + '' - + '
        ' - + '
        ' - + '' - + '' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '' - + '' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '' - + '' - + '
        ' - + '
        ' - + '
        ' - + '
        This is an inline input field:' - + '
        ' - + '' - + '' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '', - }, - { - id: 'iconinput', - label: 'Input', - category: 'Form', - attributes: { - class: 'fa fa-minus-square' - }, - content: '
        ' - + '
        ' - + 'account_circle' - + '' - + '' - + '
        ' - + '
        ' - + 'phone' - + '' - + '' - + '
        ' - + '
        ', - }, { - id: 'textarea', - label: 'Textarea', - category: 'Form', - attributes: { - class: 'fa fa-sticky-note-o' - }, - content: '
        ' - + '
        ' - + '' - + '' - + '
        ' - + '
        ', - }, { - id: 'select', - label: 'Select', - category: 'Form', - attributes: { - class: 'fa fa-caret-square-o-down' - }, - content: '
        ' - + '' - + '' - + '
        ' - + '' - }, - { - id: 'radio', - label: 'Radio', - category: 'Form', - attributes: { - class: 'fa fa-dot-circle-o' - }, - content: `
        -
        -

        - - -

        -

        - - -

        -

        - - -

        -

        - - -

        -
        -
        ` - }, { - id: 'checkbox', - label: 'Checkbox', - category: 'Form', - attributes: { - class: 'fa fa-check-square-o' - }, - content: `
        -
        -

        - - -

        -

        - - -

        -
        -
        ` - }, { - id: 'map', - label: 'Map', - category: 'Extra', - attributes: { - class: 'fa fa-map-o' - }, - content: { - type: 'map', - style: { - height: '350px' - } - }, - } - , - { - id: 'sidenav', - label: 'SideNav', - category: 'Extra', - content: ` -menu - `, - attributes: { - class: 'fa fa-indent' - } - }, - { - id: 'accor', - label: 'Accordian', - category: 'Extra', - attributes: { - class: 'fa fa-reorder' - }, - content: `
          -
        • -
          filter_dramaFirst
          -
          Lorem ipsum dolor sit amet.
          -
        • -
        • -
          placeSecond
          -
          Lorem ipsum dolor sit amet.
          -
        • -
        • -
          whatshotThird
          -
          Lorem ipsum dolor sit amet.
          -
        • -
        - -`, - }, - { - id: 'tap', - label: 'Tap', - category: 'Extra', - attributes: { - class: 'fa fa-ellipsis-h' - }, - content: '
        ' - + '
        ' - + '' - + '
        ' - + '
        Test 1
        ' - + '
        Test 2
        ' - + '
        Test 3
        ' - + '
        Test 4
        ' - + '
        ' - + '', - }, - { - id: 'members', - label: 'Members', - category: 'Section', - content: `
        -
        -
        -
        -

        Members

        -
        -
        -
        -
        -
        - -
        Marian Holmes
        -

        Developer

        - -
        -
        -
        -
        - -
        Peggy Henry
        -

        Marketing manager

        - -
        -
        -
        -
        - -
        Eduardo Carter
        -

        Director

        - -
        -
        -
        -
        -
        -`, - attributes: { - class: "fa fa-users" - } - }, - { - id: 'blog', - label: 'Blog', - category: 'Section', - content: '
        ' - + '
        ' - + '
        ' - + '

        Blog

        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '22 / July / 18' - + '
        ' - + '' - + '
        ' - + '

        Blog Title

        ' - + '
        ' - + '
        ' - + '
          ' - + '
        • person_outline by John Doe
        • ' - + '
        • ' - + 'chat_bubble_outline 5 Comments' - + '
        • ' - + '
        ' - - + '
        ' - - + '

        ' - + 'Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.' - + '

        ' - + 'Read More' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '22 / July / 18' - + '
        ' - + '' - + '
        ' - + '

        Blog Title

        ' - + '
        ' - + '
        ' - + '
          ' - + '
        • person_outline by John Doe
        • ' - + '
        • ' - + 'chat_bubble_outline 5 Comments' - + '
        • ' - + '
        ' - - + '
        ' - - + '

        ' - + 'Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.' - + '

        ' - + 'Read More' - + '
        ' - + '
        ' - + '
        ' - + '
        ' - + '', - attributes: { - class: "fa fa-dedent" - } - }, - { - id: 'card', - label: 'Card', - category: 'Section', - content: '
        ' - + '
        ' - + '
        ' - + '
        ' - + '' - + 'Card Title' - + '
        ' - + '
        ' - + '

        I am a very simple card. I am good at containing small bits of information.' - + 'I am convenient because I require little markup to use effectively.

        ' - + '
        ' - + '
        ' - + 'This is a link' - + '
        ' - + '
        ' - + '
        ' - + '
        ', - attributes: { - class: 'fa fa-newspaper-o' - }, - }, - { - id: 'video', - label: 'Video', - category: 'Media', - attributes: { - class: 'fa fa-youtube-play' - }, - content: { - type: 'video', - src: 'img/video2.webm', - style: { - height: '350px', - width: '615px', - } - }, - }, { - id: 'h1p', - label: 'Text section', - category: 'Typography', - content: '
        ' - + '

        Insert title here

        ' - + '

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

        ' - + '
        ', - attributes: { - class: 'fa fa-align-center' - } - }, { - id: 'quo', - label: 'Quote', - category: 'Typography', - content: '
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
        ', - attributes: { - class: 'fa fa-quote-right' - } - } -]; \ No newline at end of file diff --git a/gramateria/develop/fonts/Glyphter.eot b/gramateria/develop/fonts/Glyphter.eot new file mode 100755 index 0000000000000000000000000000000000000000..871042e1063b92c0ddea4675c60725891637e733 GIT binary patch literal 2320 zcmc&$&u)Hz? zaN)wC5)wJ~56BUz6;-RMQbn#6P1Q?9FRg@xdMO;?6r6rDJG-%sBZ@e5teN@VH}l@S znKwJnqr*To4G0*J#ei)pKxS1)boxvrZ?}r3cz6B5?QJ$jqgX%(cC|7{p8CDac@PI(mFhmr4dX-v|=+n7hp?ju?P!d z6*khwm&PxYZ$`cN2PNtKc6`o4 zAsM$6`{>%8+KRkCA^WZMcuj65#d$AVgkf5CYA8LN$-bU=6?GZ#)qb zq9jh!9~CThOKfB@hSz|x{Oe+JY?AHap4P(V{epN{=xj_|nCr}Ss64Qf+f>g%Vz>+*gi%Ox7mxeFZ()B$q%EBTVg8S3Z_6i8!SV*^9judzvf zN@I)opvH2iZ)=<)e_Z1X-ilsYTFzoOlL}uKYnalTxUR8aGWl9#gGuO)#wPg`~0{=l9Joa+b8jqV6?&nF|M%5nez;n8FgaNQohl7Q-SV JvVwef`4Generated by Glyphter \ No newline at end of file diff --git a/gramateria/develop/fonts/Glyphter.ttf b/gramateria/develop/fonts/Glyphter.ttf new file mode 100755 index 0000000000000000000000000000000000000000..ce4035c00ecb74e80c4f04ad6523e2cbcc7f65b0 GIT binary patch literal 2152 zcmc&#&uW z^umQhB_ufZ56BS-1Oin^2(G9N>IK0CB&4dB!m&LChc~n1m6JG15r>X7^S$rw_iN^x zT|)p!;Sx+Z-+nh*DBdX@2E+*2VyWuZGq-nKrhb$2>$%FJ|MK3kBY-&w7{8P~cQ*Uu zgGaRegY%0riR2k;2k~{z;c_*+I7UFZ>NfKk)q2nj6UXd*K+@s!X|Ps{0N<-sVp)CX=u-^YTYoMlu-1NVL0p54r17)yJGrZo6n~>2t2bbq+H!+9Nj*oLq~lKPu(g!*)&{TY`4)JA`3c zcA_WQn@YcLsQ=ObAf|8*OIXHZ{DptTpeTrMSdVI!x+ON!=*P!EfA$kG)IY>^eBEkc z^<_@H%C%NTEKIg0TXgO!$u<+J6Uqg=Mi7_H3fi>IwzG~@iOWtsn)k;#r+H8L{lJH>qS^gqSydWLab zo#(Nvicnt(edhYarKWony-n0vYSim>U5Wb5-i+tOiB0W^V|1;l?aTWSr;9zdxeG0H z^#L+?5x>a;Y_-}Q*CYlsHqe8;8k^*YHMWQkYAkp9nZ^n7M>J01K=h?$T5n<3aZ?`hZ<)CE<(y#IGDjA*J)HJ>nJO}u}MEo>p3jY%BA;q z)sD2vb3nL|TyV9B%=9gdYI_ literal 0 HcmV?d00001 diff --git a/gramateria/develop/fonts/Glyphter.woff b/gramateria/develop/fonts/Glyphter.woff new file mode 100755 index 0000000000000000000000000000000000000000..35c89424596612669719f6b5f1f53d99ba65b6a2 GIT binary patch literal 1076 zcmXT-cXMN4WB>vd69z62&5;4&gV?CRKUm)gDDnk}?SMEeY-_S@a&BS)0|TQ8knawp zy@WRNwx;J)rUBVCK(YM{3`{c~?sBrvNKH%uvTcB3+CXe3QojFW22c>3 zEDLW&Zb=1DtO3a92Vw&QAd!=w3{p1%$dm$MmMZ3Lxrr4(dzsb%`SL)lz$nF_l9!m9 z3KTm7wA&g;=U(keRVm0XE&=+D1E>aMuREI)t8&GhR#6 zPR9Gv43eHCBqSsyq^2FSSSB6QP~kp2zkOCuzRCZ& zR}&Hoemwus&&bZoJU=rCp{xCHTso^6sjbS5M3h|pz+?ULC>RS7QqcX;-E9UDa|4(Fcrvq& zf!&{ykihWB*Z*4j@z1wwfWAm%Xq3+WwoLJ|4o^ZMADfy0D}#M2=Rug-M202_1I{F4 zqXkTI4BP<><-o8^1O}!eBQpc50D~bgihw|e!Hpq-p^9M%!#Rd$4Br?f7>yWxAmI+Q z??K{(goH!}Mm2?JOipZV{}b$(8F-u+?SXcb_IvvsHV|m5|IWHaXw`~@_9v`Kj2g8a zq2_O9)r#L;zV>qaC5xgvUbYO+A9BoTP`)5tz+QKWabZwW<)5?WlM9(1Fj;H7neYA1 zR(p=o?P5;#9b$Ty?{kEo;6D^<@LkE!t1YA8M`ppcvyEJhk<;#L8&}%-gdBXIsV9^>bG3c6`44OSR9wnP2zxm%e%9#h>%acT&V$%iSiz@@Mv*|Mj*^$8N?A(fa!e zPs=(URQfG6JT}eH<&g2=Js;lr+ojA&^p%!fDfeu#(zA#IpX_?|m`eKge7%4D$&C-& zrE7K#l3 literal 0 HcmV?d00001 diff --git a/gramateria/develop/gramateria.js b/gramateria/develop/gramateria.js deleted file mode 100755 index ff21430..0000000 --- a/gramateria/develop/gramateria.js +++ /dev/null @@ -1,819 +0,0 @@ -const blocks = require('./blocks'); - -let editor = grapesjs.init({ - allowScripts: 1, - showOffsets: 1, - autorender: 0, - noticeOnUnload: 0, - container: '#gjs', - height: '100%', - fromElement: true, - clearOnRender: 0, - plugins: [ - 'gjs-plugin-export' - ], - pluginsOpts: { - 'gjs-plugin-export': { - btnLabel: 'Download Zip', - preHtml: ` - - - - - - - - - - `, - postHtml: ` - - ` - } - }, - canvas: { - styles: ['https://fonts.googleapis.com/css?family=Roboto', 'https://fonts.googleapis.com/icon?family=Material+Icons', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css'], - scripts: ['https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.1/js/materialize.min.js'] - }, - commands: { - defaults: [ -// { -// id: 'open-github', -// run: function (editor, sender) { -// sender.set('active', false); -// window.open('https://github.com/ronaldaug/gramateria', '_blank'); -// } -// }, - { - id: 'undo', - run: function (editor, sender) { - sender.set('active', false); - editor.UndoManager.undo(true); - } - }, { - id: 'redo', - run: function (editor, sender) { - sender.set('active', false); - editor.UndoManager.redo(true); - } - }, { - id: 'clean-all', - run: function (editor, sender) { - sender.set('active', false); - if (confirm('Are you sure to clean the canvas?')) { - let comps = editor.DomComponents.clear(); - } - } - }], - }, - - assetManager: { - upload: 'https://test.page', - params: { - _token: 'pCYrSwjuiV0t5NVtZpQDY41Gn5lNUwo3it1FIkAj', - }, - assets: [ - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background_ckgyqe.jpg', - date: '2015-02-01', - height: 808, - width: 1440 - }, - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419441/background2_gjvaxs.jpg', - date: '2015-02-01', - height: 800, - width: 1600 - }, - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background3_d0ghix.jpg', - date: '2015-02-01', - height: 743, - width: 1440 - }, - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419446/background4_pzh5ou.jpg', - date: '2015-02-01', - height: 808, - width: 1440 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/0174DF/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/5FB404/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/BF00FF/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/B40431/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/088A68/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/DF7401/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/00BFFF/ffffff/', - height: 350, - width: 250 - } - ] - }, - blockManager: { - blocks - }, - storageManager: { - id: 'gjs-', - type: 'local', - autosave: 1, - autoload: 1, - stepsBeforeSave: 1, - storeComponents: 1, - storeStyles: 1, - storeHtml: 1, - storeCss: 1, - }, - customStyleManager: [{ - name: 'General', - buildProps: ['float', 'display', 'position', 'top', 'right', 'left', 'bottom'], - properties:[{ - name: 'Alignment', - property: 'float', - type: 'radio', - defaults: 'none', - list: [ - { value: 'none', className: 'fa fa-times'}, - { value: 'left', className: 'fa fa-align-left'}, - { value: 'right', className: 'fa fa-align-right'} - ], - }, - { property: 'position', type: 'select'} - ], - },{ - name: 'Dimension', - open: false, - buildProps: ['width', 'flex-width', 'height', 'max-width', 'min-height', 'margin', 'padding'], - properties: [{ - id: 'flex-width', - type: 'integer', - name: 'Width', - units: ['px', '%'], - property: 'flex-basis', - toRequire: 1, - },{ - property: 'margin', - properties:[ - { name: 'Top', property: 'margin-top'}, - { name: 'Right', property: 'margin-right'}, - { name: 'Bottom', property: 'margin-bottom'}, - { name: 'Left', property: 'margin-left'} - ], - },{ - property : 'padding', - properties:[ - { name: 'Top', property: 'padding-top'}, - { name: 'Right', property: 'padding-right'}, - { name: 'Bottom', property: 'padding-bottom'}, - { name: 'Left', property: 'padding-left'} - ], - }], - },{ - name: 'Typography', - open: false, - buildProps: ['font-family', 'font-size', 'font-weight', 'letter-spacing', 'color', 'line-height', 'text-align', 'text-decoration', 'text-shadow'], - properties:[ - { name: 'Font', property: 'font-family'}, - { name: 'Weight', property: 'font-weight'}, - { name: 'Font color', property: 'color'}, - { - property: 'text-align', - type: 'radio', - defaults: 'left', - list: [ - { value : 'left', name : 'Left', className: 'fa fa-align-left'}, - { value : 'center', name : 'Center', className: 'fa fa-align-center' }, - { value : 'right', name : 'Right', className: 'fa fa-align-right'}, - { value : 'justify', name : 'Justify', className: 'fa fa-align-justify'} - ], - },{ - property: 'text-decoration', - type: 'radio', - defaults: 'none', - list: [ - { value: 'none', name: 'None', className: 'fa fa-times'}, - { value: 'underline', name: 'underline', className: 'fa fa-underline' }, - { value: 'line-through', name: 'Line-through', className: 'fa fa-strikethrough'} - ], - },{ - property: 'text-shadow', - properties: [ - { name: 'X position', property: 'text-shadow-h'}, - { name: 'Y position', property: 'text-shadow-v'}, - { name: 'Blur', property: 'text-shadow-blur'}, - { name: 'Color', property: 'text-shadow-color'} - ], - }], - },{ - name: 'Decorations', - open: false, - buildProps: ['opacity', 'background-color', 'border-radius', 'border', 'box-shadow', 'background'], - properties: [{ - type: 'slider', - property: 'opacity', - defaults: 1, - step: 0.01, - max: 1, - min:0, - },{ - property: 'border-radius', - properties : [ - { name: 'Top', property: 'border-top-left-radius'}, - { name: 'Right', property: 'border-top-right-radius'}, - { name: 'Bottom', property: 'border-bottom-left-radius'}, - { name: 'Left', property: 'border-bottom-right-radius'} - ], - },{ - property: 'box-shadow', - properties: [ - { name: 'X position', property: 'box-shadow-h'}, - { name: 'Y position', property: 'box-shadow-v'}, - { name: 'Blur', property: 'box-shadow-blur'}, - { name: 'Spread', property: 'box-shadow-spread'}, - { name: 'Color', property: 'box-shadow-color'}, - { name: 'Shadow type', property: 'box-shadow-type'} - ], - },{ - property: 'background', - properties: [ - { name: 'Image', property: 'background-image'}, - { name: 'Repeat', property: 'background-repeat'}, - { name: 'Position', property: 'background-position'}, - { name: 'Attachment', property: 'background-attachment'}, - { name: 'Size', property: 'background-size'} - ], - },], - },{ - name: 'Extra', - open: false, - buildProps: ['transition', 'perspective', 'transform'], - properties: [{ - property: 'transition', - properties:[ - { name: 'Property', property: 'transition-property'}, - { name: 'Duration', property: 'transition-duration'}, - { name: 'Easing', property: 'transition-timing-function'} - ], - },{ - property: 'transform', - properties:[ - { name: 'Rotate X', property: 'transform-rotate-x'}, - { name: 'Rotate Y', property: 'transform-rotate-y'}, - { name: 'Rotate Z', property: 'transform-rotate-z'}, - { name: 'Scale X', property: 'transform-scale-x'}, - { name: 'Scale Y', property: 'transform-scale-y'}, - { name: 'Scale Z', property: 'transform-scale-z'} - ], - }] - },{ - name: 'Flex', - open: false, - properties: [{ - name: 'Flex Container', - property: 'display', - type: 'select', - defaults: 'block', - list: [ - { value: 'block', name: 'Disable'}, - { value: 'flex', name: 'Enable'} - ], - },{ - name: 'Flex Parent', - property: 'label-parent-flex', - type: 'integer', - },{ - name : 'Direction', - property : 'flex-direction', - type : 'radio', - defaults : 'row', - list : [{ - value : 'row', - name : 'Row', - className : 'icons-flex icon-dir-row', - title : 'Row', - },{ - value : 'row-reverse', - name : 'Row reverse', - className : 'icons-flex icon-dir-row-rev', - title : 'Row reverse', - },{ - value : 'column', - name : 'Column', - title : 'Column', - className : 'icons-flex icon-dir-col', - },{ - value : 'column-reverse', - name : 'Column reverse', - title : 'Column reverse', - className : 'icons-flex icon-dir-col-rev', - }], - },{ - name : 'Justify', - property : 'justify-content', - type : 'radio', - defaults : 'flex-start', - list : [{ - value : 'flex-start', - className : 'icons-flex icon-just-start', - title : 'Start', - },{ - value : 'flex-end', - title : 'End', - className : 'icons-flex icon-just-end', - },{ - value : 'space-between', - title : 'Space between', - className : 'icons-flex icon-just-sp-bet', - },{ - value : 'space-around', - title : 'Space around', - className : 'icons-flex icon-just-sp-ar', - },{ - value : 'center', - title : 'Center', - className : 'icons-flex icon-just-sp-cent', - }], - },{ - name : 'Align', - property : 'align-items', - type : 'radio', - defaults : 'center', - list : [{ - value : 'flex-start', - title : 'Start', - className : 'icons-flex icon-al-start', - },{ - value : 'flex-end', - title : 'End', - className : 'icons-flex icon-al-end', - },{ - value : 'stretch', - title : 'Stretch', - className : 'icons-flex icon-al-str', - },{ - value : 'center', - title : 'Center', - className : 'icons-flex icon-al-center', - }], - },{ - name: 'Flex Children', - property: 'label-parent-flex', - type: 'integer', - },{ - name: 'Order', - property: 'order', - type: 'integer', - defaults : 0, - min: 0 - },{ - name : 'Flex', - property : 'flex', - type : 'composite', - properties : [{ - name: 'Grow', - property: 'flex-grow', - type: 'integer', - defaults : 0, - min: 0 - },{ - name: 'Shrink', - property: 'flex-shrink', - type: 'integer', - defaults : 0, - min: 0 - },{ - name: 'Basis', - property: 'flex-basis', - type: 'integer', - units: ['px','%',''], - unit: '', - defaults : 'auto', - }], - },{ - name : 'Align', - property : 'align-self', - type : 'radio', - defaults : 'auto', - list : [{ - value : 'auto', - name : 'Auto', - },{ - value : 'flex-start', - title : 'Start', - className : 'icons-flex icon-al-start', - },{ - value : 'flex-end', - title : 'End', - className : 'icons-flex icon-al-end', - },{ - value : 'stretch', - title : 'Stretch', - className : 'icons-flex icon-al-str', - },{ - value : 'center', - title : 'Center', - className : 'icons-flex icon-al-center', - }], - }] - } - ]}); - -let pnm = editor.Panels; -pnm.addButton('options', [{ - id: 'undo', - className: 'fa fa-undo icon-undo', - command: function (editor, sender) { - sender.set('active', 0); - editor.UndoManager.undo(1); - }, - attributes: { - title: 'Undo (CTRL/CMD + Z)' - } -}, - { - id: 'redo', - className: 'fa fa-repeat icon-redo', - command: function (editor, sender) { - sender.set('active', 0); - editor.UndoManager.redo(1); - }, - attributes: { - title: 'Redo (CTRL/CMD + SHIFT + Z)' - } - }, - { - id: 'import', - className: 'fa fa-edit', - command: 'html-edit', - attributes: { - title: 'Edit and Import' - } - }, { - id: 'clean-all', - className: 'fa fa-trash icon-blank', - command: function (editor, sender) { - if (sender) sender.set('active', false); - if (confirm('Are you sure to clean the canvas?')) { - editor.DomComponents.clear(); - setTimeout(function () { - localStorage.setItem('gjs-assets', ''); - localStorage.setItem('gjs-components', ''); - localStorage.setItem('gjs-html', ''); - localStorage.setItem('gjs-css', ''); - localStorage.setItem('gjs-styles', ''); - }, 0); - } - }, - attributes: { - title: 'Empty canvas' - } - }, - { - id: 'clear-local', - className: 'fa fa-close', - command: function () { - if (confirm('Reset to original?')) { - localStorage.setItem('gjs-assets', ''); - localStorage.setItem('gjs-components', ''); - localStorage.setItem('gjs-html', ''); - localStorage.setItem('gjs-css', ''); - localStorage.setItem('gjs-styles', ''); - location.reload(); - } - }, - attributes: { - title: 'Reset' - } - }, - { - id: 'save-project', - className: 'fa fa-save', - command: function (editor, sender) { - sender.set('active', 0); - alert('No database for this version but your work is automatically saved in localstorage.'); - }, - attributes: { - title: 'github' - } - } -]); - - -// --------------------- -// Import/Edit -// --------------------- -let gra = { - // append in container - _a: function (appendName) { - return container.appendChild(appendName); - }, - // create elements - _c: function (tagName) { - return document.createElement(tagName); - }, - // check extensions - _e: function (fname) { - let ext = /^.+\.([^.]+)$/.exec(fname); - return ext == null ? "" : ext[1]; - }, - // select id - _d: function (name, tag) { - switch (tag) { - case 'class': - return document.getElementsByClassName(name); - break; - case 'id': - return document.getElementById(name); - break; - default: - return document.getElementById(name); - } - } -} - -let pmodel = gra._d("modelPopup", "class"); -let pfx = editor.getConfig().stylePrefix; -let modal = editor.Modal; -let cmdm = editor.Commands; -let container = gra._c("div"); -let fileform = gra._c("div"); -let btnEdit = gra._c("button"); -let copyHtml = gra._c("button"); -let copyCss = gra._c("button"); -let btnZip = gra._c("button"); -let exportTxt = gra._c("button"); -let loadTxt = gra._c("button"); -let fileLoader = gra._c("form"); -let anchor = gra._c("a"); - - -function buildCodeEditor(type) { - let codeEditor = editor.CodeManager.getViewer('CodeMirror').clone(); - codeEditor.set({ - codeName: type === 'html' ? 'htmlmixed' : 'css', - readOnly: 0, - theme: 'hopscotch', - autoBeautify: true, - autoCloseTags: true, - autoCloseBrackets: true, - lineWrapping: true, - styleActiveLine: true, - smartIndent: true, - indentWithTabs: true - }); - return codeEditor; -} -let htmlCodeEditor = buildCodeEditor('html'); -let cssCodeEditor = buildCodeEditor('css'); - -btnEdit.innerHTML = ' Apply'; -btnZip.innerHTML = ' Download Project (zip)'; -exportTxt.innerHTML = ' Save as .gram file'; -loadTxt.innerHTML = ' Load .gram file'; -copyHtml.innerHTML = ' Copy HTML'; -copyCss.innerHTML = ' Copy CSS'; -fileLoader.innerHTML = ''; -fileform.innerHTML = ''; - -fileform.className = 'modelPopup'; -fileLoader.className = pfx + 'import-file'; -btnEdit.className = pfx + 'btn-prim ' + pfx + 'btn-import'; -copyHtml.className = pfx + 'btn-prim ' + pfx + 'btn-html'; -copyCss.className = pfx + 'btn-prim ' + pfx + 'btn-css'; -btnZip.className = pfx + 'btn-prim ' + pfx + 'btn-zip'; -exportTxt.className = pfx + 'btn-prim ' + pfx + 'btn-export'; -loadTxt.className = pfx + 'btn-prim ' + pfx + 'btn-load'; - -// import button inside import editor -btnEdit.onclick = function () { - let htmlCode = htmlCodeEditor.editor.getValue(); - let cssCode = cssCodeEditor.editor.getValue(); - editor.DomComponents.getWrapper().set('content', ''); - editor.setComponents(htmlCode.trim() + ''); - modal.close(); -}; - -btnZip.onclick = function() { - editor.runCommand('gjs-export-zip'); -}; - -// onclick load file button inside import editor -loadTxt.onclick = function (e) { - e.preventDefault(); - let fileToLoad = document.getElementById("fileToLoad").files[0]; - let fType = gra._e(fileToLoad['name']); - if (fileToLoad === undefined) { - alert('Please select a file'); - return; - } - if (fType !== 'gram' || fType !== 'txt') { - alert('You can only import .gram or .txt extension'); - } - - let reader = new FileReader(); - reader.onload = function (e) { - let fileData = e.target.result; - editor.DomComponents.getWrapper().set('content', ''); - editor.setComponents(fileData); - modal.close(); - } - reader.readAsText(fileToLoad); -} - -copyHtml.onclick = function(){ - let htmlCodes = htmlCodeEditor.editor.getValue(); - let dummy = gra._c("input"); - document.body.appendChild(dummy); - dummy.setAttribute('value', htmlCodes); - dummy.select(); - document.execCommand("copy"); - document.body.removeChild(dummy); - document.execCommand('copy'); - alert('You have copied HTML codes!'); -}; -copyCss.onclick = function(){ - let cssCodes = cssCodeEditor.editor.getValue(); - console.log(cssCodes); - let dummy = gra._c("input"); - document.body.appendChild(dummy); - dummy.setAttribute('value', cssCodes); - dummy.select(); - document.execCommand("copy"); - document.body.removeChild(dummy); - document.execCommand('copy'); - alert('You have copied CSS codes!'); -}; - -// onclick save as button inside import editor -exportTxt.onclick = function () { - pmodel[0].className += " " + 'showup'; -} - -// export file as .gram extension -function exportgramfile() { - let fileName = gra._d("file_name", "id").value; - if (fileName !== undefined && fileName !== '') { - alert('Please type a file name'); - return; - } - let InnerHtml = editor.getHtml(); - let Css = editor.getCss(); - let text = InnerHtml + "'; - let blob = new Blob([text], { - type: "text/plain" - }); - anchor.download = fileName + ".gram"; - anchor.href = window.URL.createObjectURL(blob); - anchor.target = "_blank"; - anchor.style.display = "none"; // just to be safe! - document.body.appendChild(anchor); - anchor.click(); - document.body.removeChild(anchor); - pmodel[0].className = "modelPopup"; -} - - -// import nav button click event -cmdm.add('html-edit', { - run: function importArea(editor, sender) { - sender && sender.set('active', 0); - let htmlViewer = htmlCodeEditor.editor; - let cssViewer = cssCodeEditor.editor; - let htmlBox = gra._c('div'); - htmlBox.className = 'html-wrapper'; - htmlBox.innerHTML = "

        HTML

        "; - let cssBox = gra._c('div'); - cssBox.className = 'css-wrapper'; - cssBox.innerHTML = "

        CSS

        "; - modal.setTitle('Edit and Import'); - let headline = gra._c('div'); - headline.className = 'clear-head'; - let htmlWrap = gra._c('textarea'); - let cssWrap = gra._c('textarea'); - htmlBox.appendChild(htmlWrap); - cssBox.appendChild(cssWrap); - if (!htmlViewer && !cssViewer) { - gra._a(fileLoader); - gra._a(fileform); - gra._a(loadTxt); - gra._a(exportTxt); - gra._a(headline); - gra._a(htmlBox); - gra._a(cssBox); - gra._a(copyCss); - gra._a(copyHtml); - gra._a(btnEdit); - gra._a(btnZip); - htmlCodeEditor.init(htmlWrap); - cssCodeEditor.init(cssWrap); - } - modal.setContent(''); - modal.setContent(container); - htmlCodeEditor.setContent(editor.getHtml()); - cssCodeEditor.setContent(editor.getCss({ avoidProtected: true })); - modal.open(); - htmlCodeEditor.editor.refresh(); - cssCodeEditor.editor.refresh(); - } -}); - -editor.BlockManager.getCategories().each(function (ctg) { - ctg.set('open', false); -}) -// let bm = editor.BlockManager; -// bm.add('link-block', { -// label: 'Link Block', -// attributes: {class:'fa fa-link'}, -// category: 'Basic', -// content: { -// type:'link', -// editable: false, -// droppable: true, -// style:{ -// display: 'inline-block', -// padding: '5px', -// 'min-height': '50px', -// 'min-width': '50px' -// } -// }, -// }); - -let domc = editor.DomComponents; -let defaultType = domc.getType('default'); -// let defaultModel = defaultType.model; -let defaultView = defaultType.view; - -// model: defaultModel.extend({ -// defaults: Object.assign({}, defaultModel.prototype.defaults, { -// traits: [{ -// name: 'title', -// label: 'Título', -// placeholder: 'Insira um texto aqui' -// }] -// }), -// }), -// }); - - -// editor.on('storage:load', function (e) { -// console.log('LOAD ', e); -// }) -// editor.on('storage:store', function (e) { -// console.log('STORE ', e); -// }) - -// let newButton = editor.Panels.addButton('myPanelID', { -// id: 'create-comp', -// className: 'fa fa-pencil-square-o', -// command: 'create-comp', // <-- the ID of the command -// attributes: {title: 'Create element'}, -// stopDefaultCommand: 1, -// }); - - -editor.on('styleManager:change:text-shadow', function (view) { - let model = view.model; - let targetValue = view.getTargetValue({ - ignoreDefault: 1 - }); - let computedValue = view.getComputedValue(); - let defaultValue = view.model.getDefaultValue(); - //console.log('Style of ', model.get('property'), 'Target: ', targetValue, 'Computed:', computedValue, 'Default:', defaultValue); -}); -editor.Panels.removeButton('options', 'export-template'); -editor.render(); diff --git a/gramateria/develop/js/config/assetManager.js b/gramateria/develop/js/config/assetManager.js new file mode 100644 index 0000000..622ee6f --- /dev/null +++ b/gramateria/develop/js/config/assetManager.js @@ -0,0 +1,78 @@ +export default { + upload: 'https://test.page', + params: { + _token: 'pCYrSwjuiV0t5NVtZpQDY41Gn5lNUwo3it1FIkAj', + }, + assets: [ + { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background_ckgyqe.jpg', + date: '2015-02-01', + height: 808, + width: 1440 + }, + { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419441/background2_gjvaxs.jpg', + date: '2015-02-01', + height: 800, + width: 1600 + }, + { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background3_d0ghix.jpg', + date: '2015-02-01', + height: 743, + width: 1440 + }, + { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419446/background4_pzh5ou.jpg', + date: '2015-02-01', + height: 808, + width: 1440 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/0174DF/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/5FB404/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/BF00FF/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/B40431/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/088A68/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/DF7401/ffffff/', + height: 350, + width: 250 + }, + { + type: 'image', + src: 'http://via.placeholder.com/250x350/00BFFF/ffffff/', + height: 350, + width: 250 + } + ] +} \ No newline at end of file diff --git a/gramateria/develop/js/config/blockManager.js b/gramateria/develop/js/config/blockManager.js new file mode 100644 index 0000000..03e6b87 --- /dev/null +++ b/gramateria/develop/js/config/blockManager.js @@ -0,0 +1,294 @@ +export default { + blocks: [ + { + id: 'nav', + label: 'nav', + category: 'Section', + attributes: { + class: 'gly-one-column' + }, + content: `` + }, + { + id: 'modal', + label: 'modal', + category: 'Section', + attributes: { + class: 'gly-three-columns' + }, + content: ` + + + + `, + }, + // These are basic blocks + { + id: 'b1', + label: '1 Block', + category: 'Grid', + attributes: { + class: 'gly-one-column' + }, + content: `
        +
        +
        ` + }, + { + id: 'b2', + label: '2 Blocks', + category: 'Grid', + attributes: { + class: 'gly-two-columns' + }, + content: `
        +
        +
        +
        ` + }, + { + id: 'b3', + label: '3 Blocks', + category: 'Grid', + attributes: { + class: 'gly-three-columns' + }, + content: '
        ' + + '
        ' + + '
        ' + + '
        ' + + '
        ', + }, + { + id: 'b5', + label: '4/8 Block', + category: 'Grid', + attributes: { + class: 'gly-four-eight' + }, + content: '
        ' + + '
        ' + + '
        ' + + '
        ', + }, + { + id: 'b6', + label: '5/7 Block', + category: 'Grid', + attributes: { + class: 'gly-four-eight' + }, + content: '
        ' + + '
        ' + + '
        ' + + '
        ', + }, + { + id: 'b7', + label: '3/9 Block', + category: 'Grid', + attributes: { + class: 'gly-three-nine' + }, + content: '
        ' + + '
        ' + + '
        ' + + '
        ', + }, + { + id: 'text', + label: 'Text', + attributes: { + class: 'fa fa-text-width' + }, + category: 'Basic', + content: { type: "text", content: "Insert your text here", style: { padding: "10px" } } + }, { + id: 'image', + label: 'Image', + category: 'Basic', + attributes: { + class: 'fa fa-file-image-o' + }, + content: { + type: 'image', + activeOnRender: 1 + }, + }, { + id: 'list', + label: 'List', + category: 'Basic', + attributes: { + class: 'fa fa-bars' + }, + content: `
          +
        • List One
        • +
        • List Two
        • +
        • List Three
        • +
        • List Four
        • +
        `, + }, + { + id: 'list2', + label: 'List Two', + category: 'Basic', + attributes: { + class: 'fa fa-bars' + }, + content: `` + }, + { + id: 'table', + label: 'Table', + category: 'Basic', + attributes: { + class: 'fa fa-table' + }, + content: ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #FirstLastHandle
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larrythe Bird@twitter
        ` + }, + { + id: 'res', + label: 'respon image', + category: 'Media', + content: '', + attributes: { + class: 'fa fa-image' + } + }, + { + id: 'video', + label: 'Video', + category: 'Media', + attributes: { + class: 'fa fa-youtube-play' + }, + content: { + type: 'video', + src: 'img/video2.webm', + style: { + height: '350px', + width: '615px', + } + }, + }, { + id: 'h1p', + label: 'Text section', + category: 'Typography', + content: '
        ' + + '

        Insert title here

        ' + + '

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

        ' + + '
        ', + attributes: { + class: 'fa fa-align-center' + } + }, { + id: 'quo', + label: 'Quote', + category: 'Typography', + content: '
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
        ', + attributes: { + class: 'fa fa-quote-right' + } + } + ], +} diff --git a/gramateria/develop/js/config/buttons.js b/gramateria/develop/js/config/buttons.js new file mode 100644 index 0000000..ca6ff60 --- /dev/null +++ b/gramateria/develop/js/config/buttons.js @@ -0,0 +1,74 @@ +export default [{ + id: 'undo', + className: 'fa fa-undo icon-undo', + command: function (editor, sender) { + sender.set('active', 0); + editor.UndoManager.undo(1); + }, + attributes: { + title: 'Undo (CTRL/CMD + Z)' + } +}, +{ + id: 'redo', + className: 'fas fa fa-repeat icon-redo', + command: function (editor, sender) { + sender.set('active', 0); + editor.UndoManager.redo(1); + }, + attributes: { + title: 'Redo (CTRL/CMD + SHIFT + Z)' + } +}, +{ + id: 'import', + className: 'fa fa-edit', + command: 'html-edit', + attributes: { + title: 'Import' + } +}, { + id: 'clean-all', + className: 'fa fa-trash icon-blank', + command: (editor, sender) =>{ + if (sender) sender.set('active', false); + if (confirm('Are you sure to clean the canvas?')) { + editor.runCommand('core:canvas-clear'); + setTimeout(function () { + localStorage.setItem('gjs-assets', ''); + localStorage.setItem('gjs-components', ''); + localStorage.setItem('gjs-html', ''); + localStorage.setItem('gjs-css', ''); + localStorage.setItem('gjs-styles', ''); + }, 0); + } + }, + attributes: { + title: 'Empty canvas' + } +}, +{ + id: 'publish', + className: 'fa fa-globe', + command: (editor, sender) => { + sender.set('active', 0); + let modal = editor.Modal; + modal.setTitle('Publish'); + modal.setContent('To be continue'); + modal.open(); + }, + attributes: { + title: 'Publish web' + } +}, +{ + id: 'download', + className: 'fa fa-download', + command: (editor, sender) =>{ + sender.set('active', 0); + }, + attributes: { + title: 'Download as zip' + } +} +] \ No newline at end of file diff --git a/gramateria/develop/js/config/commands.js b/gramateria/develop/js/config/commands.js new file mode 100644 index 0000000..7a4d5c6 --- /dev/null +++ b/gramateria/develop/js/config/commands.js @@ -0,0 +1,24 @@ +export default { + defaults: [ + { + id: 'undo', + run: (editor, sender) => { + sender.set('active', false); + editor.UndoManager.undo(true); + } + }, { + id: 'redo', + run: (editor, sender) => { + sender.set('active', false); + editor.UndoManager.redo(true); + } + }, { + id: 'clean-all', + run: (editor, sender) => { + sender.set('active', false); + if (confirm('Are you sure to clean the canvas?')) { + editor.runCommand('core:canvas-clear'); + } + } + }], +} \ No newline at end of file diff --git a/gramateria/develop/js/config/styleManager.js b/gramateria/develop/js/config/styleManager.js new file mode 100644 index 0000000..dce64a7 --- /dev/null +++ b/gramateria/develop/js/config/styleManager.js @@ -0,0 +1,426 @@ +export default { + sectors: [{ + name: 'General', + buildProps: ['float', 'display', 'position', 'top', 'right', 'left', 'bottom'], + properties: [{ + name: 'Alignment', + property: 'float', + type: 'radio', + defaults: 'none', + list: [{ + value: 'none', + className: 'fa fa-times' + }, + { + value: 'left', + className: 'fa fa-align-left' + }, + { + value: 'right', + className: 'fa fa-align-right' + } + ], + }, + { + property: 'position', + type: 'select' + } + ], + }, { + name: 'Dimension', + open: false, + buildProps: ['width', 'flex-width', 'height', 'max-width', 'min-height', 'margin', 'padding'], + properties: [{ + id: 'flex-width', + type: 'integer', + name: 'Width', + units: ['px', '%'], + property: 'flex-basis', + toRequire: 1, + }, { + property: 'margin', + properties: [{ + name: 'Top', + property: 'margin-top' + }, + { + name: 'Right', + property: 'margin-right' + }, + { + name: 'Bottom', + property: 'margin-bottom' + }, + { + name: 'Left', + property: 'margin-left' + } + ], + }, { + property: 'padding', + properties: [{ + name: 'Top', + property: 'padding-top' + }, + { + name: 'Right', + property: 'padding-right' + }, + { + name: 'Bottom', + property: 'padding-bottom' + }, + { + name: 'Left', + property: 'padding-left' + } + ], + }], + }, { + name: 'Typography', + open: false, + buildProps: ['font-family', 'font-size', 'font-weight', 'letter-spacing', 'color', 'line-height', 'text-align', 'text-decoration', 'text-shadow'], + properties: [{ + name: 'Font', + property: 'font-family' + }, + { + name: 'Weight', + property: 'font-weight' + }, + { + name: 'Font color', + property: 'color' + }, + { + property: 'text-align', + type: 'radio', + defaults: 'left', + list: [{ + value: 'left', + name: 'Left', + className: 'fa fa-align-left' + }, + { + value: 'center', + name: 'Center', + className: 'fa fa-align-center' + }, + { + value: 'right', + name: 'Right', + className: 'fa fa-align-right' + }, + { + value: 'justify', + name: 'Justify', + className: 'fa fa-align-justify' + } + ], + }, { + property: 'text-decoration', + type: 'radio', + defaults: 'none', + list: [{ + value: 'none', + name: 'None', + className: 'fa fa-times' + }, + { + value: 'underline', + name: 'underline', + className: 'fa fa-underline' + }, + { + value: 'line-through', + name: 'Line-through', + className: 'fa fa-strikethrough' + } + ], + }, { + property: 'text-shadow', + properties: [{ + name: 'X position', + property: 'text-shadow-h' + }, + { + name: 'Y position', + property: 'text-shadow-v' + }, + { + name: 'Blur', + property: 'text-shadow-blur' + }, + { + name: 'Color', + property: 'text-shadow-color' + } + ], + } + ], + }, { + name: 'Decorations', + open: false, + buildProps: ['opacity', 'border-radius', 'border', 'box-shadow', 'background-bg'], + properties: [{ + type: 'slider', + property: 'opacity', + defaults: 1, + step: 0.01, + max: 1, + min: 0, + }, { + property: 'border-radius', + properties: [{ + name: 'Top', + property: 'border-top-left-radius' + }, + { + name: 'Right', + property: 'border-top-right-radius' + }, + { + name: 'Bottom', + property: 'border-bottom-left-radius' + }, + { + name: 'Left', + property: 'border-bottom-right-radius' + } + ], + }, { + property: 'box-shadow', + properties: [{ + name: 'X position', + property: 'box-shadow-h' + }, + { + name: 'Y position', + property: 'box-shadow-v' + }, + { + name: 'Blur', + property: 'box-shadow-blur' + }, + { + name: 'Spread', + property: 'box-shadow-spread' + }, + { + name: 'Color', + property: 'box-shadow-color' + }, + { + name: 'Shadow type', + property: 'box-shadow-type' + } + ], + }, { + id: 'background-bg', + property: 'background', + type: 'bg', + }, ], + }, { + name: 'Extra', + open: false, + buildProps: ['transition', 'perspective', 'transform'], + properties: [{ + property: 'transition', + properties: [{ + name: 'Property', + property: 'transition-property' + }, + { + name: 'Duration', + property: 'transition-duration' + }, + { + name: 'Easing', + property: 'transition-timing-function' + } + ], + }, { + property: 'transform', + properties: [{ + name: 'Rotate X', + property: 'transform-rotate-x' + }, + { + name: 'Rotate Y', + property: 'transform-rotate-y' + }, + { + name: 'Rotate Z', + property: 'transform-rotate-z' + }, + { + name: 'Scale X', + property: 'transform-scale-x' + }, + { + name: 'Scale Y', + property: 'transform-scale-y' + }, + { + name: 'Scale Z', + property: 'transform-scale-z' + } + ], + }] + }, { + name: 'Flex', + open: false, + properties: [{ + name: 'Flex Container', + property: 'display', + type: 'select', + defaults: 'block', + list: [{ + value: 'block', + name: 'Disable' + }, + { + value: 'flex', + name: 'Enable' + } + ], + }, { + name: 'Flex Parent', + property: 'label-parent-flex', + type: 'integer', + }, { + name: 'Direction', + property: 'flex-direction', + type: 'radio', + defaults: 'row', + list: [{ + value: 'row', + name: 'Row', + className: 'icons-flex icon-dir-row', + title: 'Row', + }, { + value: 'row-reverse', + name: 'Row reverse', + className: 'icons-flex icon-dir-row-rev', + title: 'Row reverse', + }, { + value: 'column', + name: 'Column', + title: 'Column', + className: 'icons-flex icon-dir-col', + }, { + value: 'column-reverse', + name: 'Column reverse', + title: 'Column reverse', + className: 'icons-flex icon-dir-col-rev', + }], + }, { + name: 'Justify', + property: 'justify-content', + type: 'radio', + defaults: 'flex-start', + list: [{ + value: 'flex-start', + className: 'icons-flex icon-just-start', + title: 'Start', + }, { + value: 'flex-end', + title: 'End', + className: 'icons-flex icon-just-end', + }, { + value: 'space-between', + title: 'Space between', + className: 'icons-flex icon-just-sp-bet', + }, { + value: 'space-around', + title: 'Space around', + className: 'icons-flex icon-just-sp-ar', + }, { + value: 'center', + title: 'Center', + className: 'icons-flex icon-just-sp-cent', + }], + }, { + name: 'Align', + property: 'align-items', + type: 'radio', + defaults: 'center', + list: [{ + value: 'flex-start', + title: 'Start', + className: 'icons-flex icon-al-start', + }, { + value: 'flex-end', + title: 'End', + className: 'icons-flex icon-al-end', + }, { + value: 'stretch', + title: 'Stretch', + className: 'icons-flex icon-al-str', + }, { + value: 'center', + title: 'Center', + className: 'icons-flex icon-al-center', + }], + }, { + name: 'Flex Children', + property: 'label-parent-flex', + type: 'integer', + }, { + name: 'Order', + property: 'order', + type: 'integer', + defaults: 0, + min: 0 + }, { + name: 'Flex', + property: 'flex', + type: 'composite', + properties: [{ + name: 'Grow', + property: 'flex-grow', + type: 'integer', + defaults: 0, + min: 0 + }, { + name: 'Shrink', + property: 'flex-shrink', + type: 'integer', + defaults: 0, + min: 0 + }, { + name: 'Basis', + property: 'flex-basis', + type: 'integer', + units: ['px', '%', ''], + unit: '', + defaults: 'auto', + }], + }, { + name: 'Align', + property: 'align-self', + type: 'radio', + defaults: 'auto', + list: [{ + value: 'auto', + name: 'Auto', + }, { + value: 'flex-start', + title: 'Start', + className: 'icons-flex icon-al-start', + }, { + value: 'flex-end', + title: 'End', + className: 'icons-flex icon-al-end', + }, { + value: 'stretch', + title: 'Stretch', + className: 'icons-flex icon-al-str', + }, { + value: 'center', + title: 'Center', + className: 'icons-flex icon-al-center', + }], + }] + }] +} \ No newline at end of file diff --git a/gramateria/develop/js/config/templates.js b/gramateria/develop/js/config/templates.js new file mode 100644 index 0000000..d8eee96 --- /dev/null +++ b/gramateria/develop/js/config/templates.js @@ -0,0 +1,36 @@ +const templates = [ + { + id:"blank-template", + name:'Blank template', + img:'https://via.placeholder.com/400/ffffff/ffffff/?text=.', + gjsCSS:"", + gjsHTML:"", + gjsJS:'', + gjsAssets:'', + gjsComponents:'', + gjsStyles:'' + }, + { + id:"template-one", + name:'Template one', + img:'https://picsum.photos/400/400', + gjsCSS:`h1{color:green}`, + gjsHTML:`

        This is template one!

        `, + gjsJS:'', + gjsAssets:'', + gjsComponents:'', + gjsStyles:'' + }, + { + id:"template-two", + name:'Template two', + img:'https://picsum.photos/400/401', + gjsCSS:`h1{color:green}`, + gjsHTML:`

        This is template two!

        `, + gjsJS:'', + gjsAssets:'', + gjsComponents:'', + gjsStyles:'' + } +] +export default templates; \ No newline at end of file diff --git a/gramateria/develop/js/gramateria.js b/gramateria/develop/js/gramateria.js new file mode 100755 index 0000000..42966d2 --- /dev/null +++ b/gramateria/develop/js/gramateria.js @@ -0,0 +1,241 @@ +import blockManager from './config/blockManager' +import styleManager from './config/styleManager' +import commands from './config/commands' +import assetManager from './config/assetManager' +import buttons from './config/buttons' +class Gramateria { + constructor(){ + this.editor = grapesjs.init({ + allowScripts: 1, + showOffsets: 1, + autorender: 0, + noticeOnUnload: 0, + container: '#gjs', + height: '100%', + fromElement: true, + clearOnRender: 0, + canvas: { + styles: [ + 'https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.0.2/materia/bootstrap.min.css' + ], + scripts: [ + 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js' + ], + }, + commands, + assetManager, + blockManager, + styleManager, + storageManager: { + id: 'gjs-', + type: 'local', + autosave: 1, + autoload: 1, + stepsBeforeSave: 1, + storeComponents: 1, + storeStyles: 1, + storeHtml: 1, + storeCss: 1, + } + }); + + this.editor.Panels.addButton('options', buttons); + } + checkExtension (fname) { + let ext = /^.+\.([^.]+)$/.exec(fname); + return ext == null ? "" : ext[1]; + } + editModal() { + + // --------------------- + // Import/Edit + // --------------------- + let prefix = this.editor.getConfig().stylePrefix; + let modal = this.editor.Modal; + + let modal_content_wrapper = document.createElement("div"); + modal_content_wrapper.id = "modal-wrapper"; + + let btnEdit = document.createElement("button"); + let copyHtml = document.createElement("button"); + let copyCss = document.createElement("button"); + let exportTxt = document.createElement("button"); + let loadTxt = document.createElement("button"); + let fileLoader = document.createElement("form"); + let anchor = document.createElement("a"); + + + + + let htmlCodeEditor = this.buildCodeEditor('html'); + let cssCodeEditor = this.buildCodeEditor('css'); + + btnEdit.innerHTML = ' Apply'; + exportTxt.innerHTML = ' Save as .gram file'; + loadTxt.innerHTML = ' Load .gram file'; + copyHtml.innerHTML = ' Copy HTML'; + copyCss.innerHTML = ' Copy CSS'; + fileLoader.innerHTML = ''; + + fileLoader.className = prefix + 'import-file'; + btnEdit.className = prefix + 'btn-prim ' + prefix + 'btn-import'; + copyHtml.className = prefix + 'btn-prim ' + prefix + 'btn-html'; + copyCss.className = prefix + 'btn-prim ' + prefix + 'btn-css'; + exportTxt.className = prefix + 'btn-prim ' + prefix + 'btn-export'; + loadTxt.className = prefix + 'btn-prim ' + prefix + 'btn-load'; + + // import button inside import editor + btnEdit.onclick = () => { + let htmlCode = htmlCodeEditor.editor.getValue(); + let cssCode = cssCodeEditor.editor.getValue(); + this.editor.DomComponents.getWrapper().set('content', ''); + this.editor.setComponents(htmlCode.trim() + ''); + modal.close(); + }; + + // onclick load file button inside import editor + loadTxt.onclick = (e) =>{ + e.preventDefault(); + let fileToLoad = document.getElementById("fileToLoad").files[0]; + let fType = this.checkExtension(fileToLoad['name']); + if (fileToLoad === undefined) { + alert('Please select a file'); + return; + } + if (fType === 'gram' || fType === 'txt') { + let reader = new FileReader(); + reader.onload = (e) =>{ + let fileData = e.target.result; + this.editor.DomComponents.getWrapper().set('content', ''); + this.editor.setComponents(fileData); + modal.close(); + } + reader.readAsText(fileToLoad); + } else { + alert('You can only import .gram or .txt extension'); + } + } + + copyHtml.onclick = () => { + let htmlCodes = htmlCodeEditor.editor.getValue(); + let dummy = document.createElement("input"); + document.body.appendChild(dummy); + dummy.setAttribute('value', htmlCodes); + dummy.select(); + document.execCommand("copy"); + document.body.removeChild(dummy); + document.execCommand('copy'); + alert('You have copied HTML codes!'); + }; + + copyCss.onclick = function () { + let cssCodes = cssCodeEditor.editor.getValue(); + let dummy = document.createElement("input"); + document.body.appendChild(dummy); + dummy.setAttribute('value', cssCodes); + dummy.select(); + document.execCommand("copy"); + document.body.removeChild(dummy); + document.execCommand('copy'); + alert('You have copied CSS codes!'); + }; + + // onclick save as button inside import editor + exportTxt.onclick = () => { + let InnerHtml = this.editor.getHtml(); + let Css = this.editor.getCss(); + let text = InnerHtml + "'; + let blob = new Blob([text], { + type: "text/plain" + }); + anchor.download = "download.gram"; + anchor.href = window.URL.createObjectURL(blob); + anchor.target = "_blank"; + anchor.style.display = "none"; // just to be safe! + document.body.appendChild(anchor); + anchor.click(); + document.body.removeChild(anchor); + } + + // import nav button click event + this.editor.Commands.add('html-edit', { + run: (editor, sender) => { + sender && sender.set('active', 0); + + let html_textarea_box = document.createElement('textarea'); + let css_textarea_box = document.createElement('textarea'); + + let htmlBox = document.createElement('div'); + htmlBox.className = 'html-wrapper'; + htmlBox.innerHTML = "

        HTML

        "; + htmlBox.appendChild(html_textarea_box); + + let cssBox = document.createElement('div'); + cssBox.className = 'css-wrapper'; + cssBox.innerHTML = "

        CSS

        "; + cssBox.appendChild(css_textarea_box); + + let headline = document.createElement('div'); + headline.className = 'clear-fix'; + + if (!htmlCodeEditor.editor && !cssCodeEditor.editor) { + modal_content_wrapper.appendChild(fileLoader); + modal_content_wrapper.appendChild(loadTxt); + modal_content_wrapper.appendChild(exportTxt); + modal_content_wrapper.appendChild(headline); + modal_content_wrapper.appendChild(htmlBox); + modal_content_wrapper.appendChild(cssBox); + modal_content_wrapper.appendChild(copyCss); + modal_content_wrapper.appendChild(copyHtml); + modal_content_wrapper.appendChild(btnEdit); + htmlCodeEditor.init(html_textarea_box); + cssCodeEditor.init(css_textarea_box); + } + + modal.setTitle('Edit and Import'); + modal.setContent(''); + modal.setContent(modal_content_wrapper); + htmlCodeEditor.setContent(editor.getHtml()); + cssCodeEditor.setContent(editor.getCss({ avoidProtected: true })); + modal.open(); + htmlCodeEditor.editor.refresh(); + cssCodeEditor.editor.refresh(); + } + }); + + } + + buildCodeEditor = (type) => { + let codeEditor = this.editor.CodeManager.getViewer('CodeMirror').clone(); + codeEditor.set({ + codeName: type === 'html' ? 'htmlmixed' : 'css', + readOnly: 0, + theme: 'hopscotch', + autoBeautify: true, + autoCloseTags: true, + autoCloseBrackets: true, + lineWrapping: true, + styleActiveLine: true, + smartIndent: true, + indentWithTabs: true + }); + return codeEditor; + } + + init(){ + this.editModal(); + this.editor.Panels.removeButton('options', 'export-template'); + this.editor.on('load', (editor)=>{ + editor.Panels.getButton('views', 'open-blocks').set('active', true) + editor.BlockManager.getCategories().each(function (ctg) { + if(ctg.attributes.id == 'Section'){ + return; + } + ctg.set('open', false); + }); + }); + this.editor.render(); + } +} + +(new Gramateria()).init(); \ No newline at end of file diff --git a/gramateria/develop/sass/_flex-icons.scss b/gramateria/develop/sass/_flex-icons.scss new file mode 100644 index 0000000..e5ddb28 --- /dev/null +++ b/gramateria/develop/sass/_flex-icons.scss @@ -0,0 +1,114 @@ +.icon-add-comp::before, .icon-comp100::before,.icon-comp50::before,.icon-comp30::before,.icon-rm::before{ content: '';} +.icon-add-comp { + background: url("./svg/icon-sq-a.svg") no-repeat center; +} +.icon-comp100 { + background: url("./svg/icon-sq-1.svg") no-repeat center; +} +.icon-comp50 { + background: url("./svg/icon-sq-2.svg") no-repeat center; +} +.icon-comp30 { + background: url("./svg/icon-sq-3.svg") no-repeat center; +} +.icon-rm { + background: url("./svg/icon-sq-r.svg") no-repeat center; +} + +.icons-flex { + background-size: 70% 65% !important; + height: 15px; + width: 17px; + opacity: 0.9; +} +.icon-dir-row { + background: url("./svg/flex-dir-row.svg") no-repeat center; +} +.icon-dir-row-rev { + background: url("./svg/flex-dir-row-rev.svg") no-repeat center; +} +.icon-dir-col { + background: url("./svg/flex-dir-col.svg") no-repeat center; +} +.icon-dir-col-rev { + background: url("./svg/flex-dir-col-rev.svg") no-repeat center; +} +.icon-just-start{ + background: url("./svg/flex-just-start.svg") no-repeat center; +} +.icon-just-end{ + background: url("./svg/flex-just-end.svg") no-repeat center; +} +.icon-just-sp-bet{ + background: url("./svg/flex-just-sp-bet.svg") no-repeat center; +} +.icon-just-sp-ar{ + background: url("./svg/flex-just-sp-ar.svg") no-repeat center; +} +.icon-just-sp-cent{ + background: url("./svg/flex-just-sp-cent.svg") no-repeat center; +} +.icon-al-start{ + background: url("./svg/flex-al-start.svg") no-repeat center; +} +.icon-al-end{ + background: url("./svg/flex-al-end.svg") no-repeat center; +} +.icon-al-str{ + background: url("./svg/flex-al-str.svg") no-repeat center; +} +.icon-al-center{ + background: url("./svg/flex-al-center.svg") no-repeat center; +} + + [data-tooltip]::after { + background: rgba(51, 51, 51, 0.9); + } + + .gjs-pn-commands { + min-height: 40px; + } + + #gjs-sm-float, + .gjs-pn-views .fa-cog { + display: none; + } + + .gjs-am-preview-cont { + height: 100px; + width: 100%; + } + + .gjs-logo-version { + background-color: #756467; + } + +.gjs-pn-panel.gjs-pn-views { + padding: 0; + border-bottom: none; +} + +.gjs-pn-btn.gjs-pn-active { + box-shadow: none; +} + +.gjs-pn-views .gjs-pn-btn { + margin: 0; + height: 40px; + padding: 10px; + width: 33.3333%; + border-bottom: 2px solid rgba(0, 0, 0, 0.3); +} + +.CodeMirror { + min-height: 450px; + margin-bottom: 8px; +} +.grp-handler-close { + background-color: transparent; + color: #ddd; +} + +.grp-handler-cp-wrap { + border-color: transparent; +} \ No newline at end of file diff --git a/gramateria/develop/sass/_global.scss b/gramateria/develop/sass/_global.scss new file mode 100644 index 0000000..97aee4d --- /dev/null +++ b/gramateria/develop/sass/_global.scss @@ -0,0 +1,8 @@ +body, +html { + height: 100%; + margin: 0; +} +.fa::before { + -webkit-text-stroke: .5px #fff +} diff --git a/gramateria/develop/sass/_glyphter.scss b/gramateria/develop/sass/_glyphter.scss new file mode 100644 index 0000000..ee35186 --- /dev/null +++ b/gramateria/develop/sass/_glyphter.scss @@ -0,0 +1,34 @@ +/* Generated by Glyphter (http://www.glyphter.com) on Tue Mar 12 2019*/ +@font-face { + font-family: 'Glyphter'; + src: url('./fonts/Glyphter.eot'); + src: url('./fonts/Glyphter.eot?#iefix') format('embedded-opentype'), + url('./fonts/Glyphter.woff') format('woff'), + url('./fonts/Glyphter.ttf') format('truetype'), + url('./fonts/Glyphter.svg#Glyphter') format('svg'); + font-weight: normal; + font-style: normal; +} +[class*='gly-']:before{ + font-size: 2em; + line-height: 2em; + padding: 11px; + display: inline-block; + font-family: 'Glyphter'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} +.gly-four-columns:before{content:'\0041';} +.gly-four-eight:before{content:'\0042';} +.gly-menu-bottom:before{content:'\0043';} +.gly-menu-center:before{content:'\0044';} +.gly-menu-left:before{content:'\0045';} +.gly-menu-right:before{content:'\0046';} +.gly-menu-top:before{content:'\0047';} +.gly-one-column:before{content:'\0048';} +.gly-three-columns:before{content:'\0049';} +.gly-three-nine:before{content:'\004a';} +.gly-two-columns:before{content:'\004b';} \ No newline at end of file diff --git a/gramateria/develop/gramateria.scss b/gramateria/develop/sass/_overwrite.scss old mode 100755 new mode 100644 similarity index 95% rename from gramateria/develop/gramateria.scss rename to gramateria/develop/sass/_overwrite.scss index ffc822e..46bd6b8 --- a/gramateria/develop/gramateria.scss +++ b/gramateria/develop/sass/_overwrite.scss @@ -1,15 +1,7 @@ -body, -html { - height: 100%; - margin: 0; -} -.fa::before{ - -webkit-text-stroke: 0.5px #fff; -} - .gjs-cm-editor#gjs-cm-css #gjs-cm-title, .gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title, .gjs-two-color, +.gjs-four-color, .gjs-color-warn, .gjs-sm-sector .gjs-sm-field input, .gjs-clm-tags .gjs-sm-field input, .gjs-sm-sector .gjs-clm-field input, .gjs-clm-tags .gjs-clm-field input, .gjs-sm-sector .gjs-sm-field select, .gjs-clm-tags .gjs-sm-field select, .gjs-sm-sector .gjs-clm-field select, .gjs-clm-tags .gjs-clm-field select { color: #464973; } @@ -214,27 +206,6 @@ html { background: #232c3c; } -.cm-s-hopscotch span.cm-tag { - color: #9a648b; -} - -.cm-s-hopscotch span.cm-atom { - color: #836fb6; -} - -.cm-s-hopscotch span.cm-number { - color: #a06d91; -} - -.cm-s-hopscotch span.cm-string { - color: #816eb5; -} - -.cm-s-hopscotch span.cm-property, -.cm-s-hopscotch span.cm-attribute { - color: #5eb6cc; -} - /* class name */ .gjs-clm-tags #gjs-clm-close, @@ -297,6 +268,9 @@ html { color: #587899; font-size: 13px; margin:10px 0 10px; + background:#fff; + box-shadow:0 1px 10px #dddddd70; + padding:8px 16px; } .CodeMirror{ @@ -352,7 +326,7 @@ button.exportgram { .gjs-mdl-dialog{ max-width:none; } -.clear-head{ +.clear-fix{ width:100%; clear:both; } @@ -360,3 +334,17 @@ button.exportgram { margin-left:2%; } + + +.gjs-sm-sectors .gjs-radio-items .gjs-radio-item{ + background:#585858; +} + +label.gjs-radio-item-label, +.gjs-sm-sectors .gjs-radio-item .fa{ + color:#fff; +} + +.gjs-four-color-h:hover{ + color:#41dad2; +} \ No newline at end of file diff --git a/gramateria/develop/sass/gramateria.scss b/gramateria/develop/sass/gramateria.scss new file mode 100755 index 0000000..c8f8793 --- /dev/null +++ b/gramateria/develop/sass/gramateria.scss @@ -0,0 +1,4 @@ +@import 'flex-icons'; +@import 'global'; +@import 'glyphter'; +@import 'overwrite'; \ No newline at end of file diff --git a/gramateria/develop/svg/flex-al-center.svg b/gramateria/develop/svg/flex-al-center.svg new file mode 100755 index 0000000..a11e42b --- /dev/null +++ b/gramateria/develop/svg/flex-al-center.svg @@ -0,0 +1,9 @@ + + + + flex-al-center + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-al-end.svg b/gramateria/develop/svg/flex-al-end.svg new file mode 100755 index 0000000..4273e9c --- /dev/null +++ b/gramateria/develop/svg/flex-al-end.svg @@ -0,0 +1,9 @@ + + + + flex-al-end + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-al-start.svg b/gramateria/develop/svg/flex-al-start.svg new file mode 100755 index 0000000..234494a --- /dev/null +++ b/gramateria/develop/svg/flex-al-start.svg @@ -0,0 +1,9 @@ + + + + flex-al-start + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-al-str.svg b/gramateria/develop/svg/flex-al-str.svg new file mode 100755 index 0000000..f19dc50 --- /dev/null +++ b/gramateria/develop/svg/flex-al-str.svg @@ -0,0 +1,9 @@ + + + + flex-al-str + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-dir-col-rev.svg b/gramateria/develop/svg/flex-dir-col-rev.svg new file mode 100755 index 0000000..f3c4a95 --- /dev/null +++ b/gramateria/develop/svg/flex-dir-col-rev.svg @@ -0,0 +1,9 @@ + + + + flex-dir-col-rev + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-dir-col.svg b/gramateria/develop/svg/flex-dir-col.svg new file mode 100755 index 0000000..de509aa --- /dev/null +++ b/gramateria/develop/svg/flex-dir-col.svg @@ -0,0 +1,9 @@ + + + + flex-dir-col + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-dir-row-rev.svg b/gramateria/develop/svg/flex-dir-row-rev.svg new file mode 100755 index 0000000..0479bd7 --- /dev/null +++ b/gramateria/develop/svg/flex-dir-row-rev.svg @@ -0,0 +1,9 @@ + + + + flex-dir-row-rev + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-dir-row.svg b/gramateria/develop/svg/flex-dir-row.svg new file mode 100755 index 0000000..5388fec --- /dev/null +++ b/gramateria/develop/svg/flex-dir-row.svg @@ -0,0 +1,9 @@ + + + + flex-dir-row + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-just-end.svg b/gramateria/develop/svg/flex-just-end.svg new file mode 100755 index 0000000..8495a10 --- /dev/null +++ b/gramateria/develop/svg/flex-just-end.svg @@ -0,0 +1,9 @@ + + + + flex-just-end + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-just-sp-ar.svg b/gramateria/develop/svg/flex-just-sp-ar.svg new file mode 100755 index 0000000..e584498 --- /dev/null +++ b/gramateria/develop/svg/flex-just-sp-ar.svg @@ -0,0 +1,9 @@ + + + + flex-just-sp-ar + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-just-sp-bet.svg b/gramateria/develop/svg/flex-just-sp-bet.svg new file mode 100755 index 0000000..eaee3ea --- /dev/null +++ b/gramateria/develop/svg/flex-just-sp-bet.svg @@ -0,0 +1,9 @@ + + + + flex-just-sp-bet + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-just-sp-cent.svg b/gramateria/develop/svg/flex-just-sp-cent.svg new file mode 100755 index 0000000..d8abc50 --- /dev/null +++ b/gramateria/develop/svg/flex-just-sp-cent.svg @@ -0,0 +1,9 @@ + + + + flex-just-sp-cent + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/develop/svg/flex-just-start.svg b/gramateria/develop/svg/flex-just-start.svg new file mode 100755 index 0000000..d797201 --- /dev/null +++ b/gramateria/develop/svg/flex-just-start.svg @@ -0,0 +1,9 @@ + + + + flex-just-start + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/fonts/Glyphter.eot b/gramateria/dist/fonts/Glyphter.eot new file mode 100755 index 0000000000000000000000000000000000000000..871042e1063b92c0ddea4675c60725891637e733 GIT binary patch literal 2320 zcmc&$&u)Hz? zaN)wC5)wJ~56BUz6;-RMQbn#6P1Q?9FRg@xdMO;?6r6rDJG-%sBZ@e5teN@VH}l@S znKwJnqr*To4G0*J#ei)pKxS1)boxvrZ?}r3cz6B5?QJ$jqgX%(cC|7{p8CDac@PI(mFhmr4dX-v|=+n7hp?ju?P!d z6*khwm&PxYZ$`cN2PNtKc6`o4 zAsM$6`{>%8+KRkCA^WZMcuj65#d$AVgkf5CYA8LN$-bU=6?GZ#)qb zq9jh!9~CThOKfB@hSz|x{Oe+JY?AHap4P(V{epN{=xj_|nCr}Ss64Qf+f>g%Vz>+*gi%Ox7mxeFZ()B$q%EBTVg8S3Z_6i8!SV*^9judzvf zN@I)opvH2iZ)=<)e_Z1X-ilsYTFzoOlL}uKYnalTxUR8aGWl9#gGuO)#wPg`~0{=l9Joa+b8jqV6?&nF|M%5nez;n8FgaNQohl7Q-SV JvVwef`4Generated by Glyphter \ No newline at end of file diff --git a/gramateria/dist/fonts/Glyphter.ttf b/gramateria/dist/fonts/Glyphter.ttf new file mode 100755 index 0000000000000000000000000000000000000000..ce4035c00ecb74e80c4f04ad6523e2cbcc7f65b0 GIT binary patch literal 2152 zcmc&#&uW z^umQhB_ufZ56BS-1Oin^2(G9N>IK0CB&4dB!m&LChc~n1m6JG15r>X7^S$rw_iN^x zT|)p!;Sx+Z-+nh*DBdX@2E+*2VyWuZGq-nKrhb$2>$%FJ|MK3kBY-&w7{8P~cQ*Uu zgGaRegY%0riR2k;2k~{z;c_*+I7UFZ>NfKk)q2nj6UXd*K+@s!X|Ps{0N<-sVp)CX=u-^YTYoMlu-1NVL0p54r17)yJGrZo6n~>2t2bbq+H!+9Nj*oLq~lKPu(g!*)&{TY`4)JA`3c zcA_WQn@YcLsQ=ObAf|8*OIXHZ{DptTpeTrMSdVI!x+ON!=*P!EfA$kG)IY>^eBEkc z^<_@H%C%NTEKIg0TXgO!$u<+J6Uqg=Mi7_H3fi>IwzG~@iOWtsn)k;#r+H8L{lJH>qS^gqSydWLab zo#(Nvicnt(edhYarKWony-n0vYSim>U5Wb5-i+tOiB0W^V|1;l?aTWSr;9zdxeG0H z^#L+?5x>a;Y_-}Q*CYlsHqe8;8k^*YHMWQkYAkp9nZ^n7M>J01K=h?$T5n<3aZ?`hZ<)CE<(y#IGDjA*J)HJ>nJO}u}MEo>p3jY%BA;q z)sD2vb3nL|TyV9B%=9gdYI_ literal 0 HcmV?d00001 diff --git a/gramateria/dist/fonts/Glyphter.woff b/gramateria/dist/fonts/Glyphter.woff new file mode 100755 index 0000000000000000000000000000000000000000..35c89424596612669719f6b5f1f53d99ba65b6a2 GIT binary patch literal 1076 zcmXT-cXMN4WB>vd69z62&5;4&gV?CRKUm)gDDnk}?SMEeY-_S@a&BS)0|TQ8knawp zy@WRNwx;J)rUBVCK(YM{3`{c~?sBrvNKH%uvTcB3+CXe3QojFW22c>3 zEDLW&Zb=1DtO3a92Vw&QAd!=w3{p1%$dm$MmMZ3Lxrr4(dzsb%`SL)lz$nF_l9!m9 z3KTm7wA&g;=U(keRVm0XE&=+D1E>aMuREI)t8&GhR#6 zPR9Gv43eHCBqSsyq^2FSSSB6QP~kp2zkOCuzRCZ& zR}&Hoemwus&&bZoJU=rCp{xCHTso^6sjbS5M3h|pz+?ULC>RS7QqcX;-E9UDa|4(Fcrvq& zf!&{ykihWB*Z*4j@z1wwfWAm%Xq3+WwoLJ|4o^ZMADfy0D}#M2=Rug-M202_1I{F4 zqXkTI4BP<><-o8^1O}!eBQpc50D~bgihw|e!Hpq-p^9M%!#Rd$4Br?f7>yWxAmI+Q z??K{(goH!}Mm2?JOipZV{}b$(8F-u+?SXcb_IvvsHV|m5|IWHaXw`~@_9v`Kj2g8a zq2_O9)r#L;zV>qaC5xgvUbYO+A9BoTP`)5tz+QKWabZwW<)5?WlM9(1Fj;H7neYA1 zR(p=o?P5;#9b$Ty?{kEo;6D^<@LkE!t1YA8M`ppcvyEJhk<;#L8&}%-gdBXIsV9^>bG3c6`44OSR9wnP2zxm%e%9#h>%acT&V$%iSiz@@Mv*|Mj*^$8N?A(fa!e zPs=(URQfG6JT}eH<&g2=Js;lr+ojA&^p%!fDfeu#(zA#IpX_?|m`eKge7%4D$&C-& zrE7K#l3 literal 0 HcmV?d00001 diff --git a/gramateria/dist/gram.min.css b/gramateria/dist/gram.min.css index c3f7567..1fac195 100644 --- a/gramateria/dist/gram.min.css +++ b/gramateria/dist/gram.min.css @@ -1,3 +1,139 @@ +.icon-add-comp::before, .icon-comp100::before, .icon-comp50::before, .icon-comp30::before, .icon-rm::before { + content: ""; +} + +.icon-add-comp { + background: url("./svg/icon-sq-a.svg") no-repeat center; +} + +.icon-comp100 { + background: url("./svg/icon-sq-1.svg") no-repeat center; +} + +.icon-comp50 { + background: url("./svg/icon-sq-2.svg") no-repeat center; +} + +.icon-comp30 { + background: url("./svg/icon-sq-3.svg") no-repeat center; +} + +.icon-rm { + background: url("./svg/icon-sq-r.svg") no-repeat center; +} + +.icons-flex { + background-size: 70% 65% !important; + height: 15px; + width: 17px; + opacity: 0.9; +} + +.icon-dir-row { + background: url("./svg/flex-dir-row.svg") no-repeat center; +} + +.icon-dir-row-rev { + background: url("./svg/flex-dir-row-rev.svg") no-repeat center; +} + +.icon-dir-col { + background: url("./svg/flex-dir-col.svg") no-repeat center; +} + +.icon-dir-col-rev { + background: url("./svg/flex-dir-col-rev.svg") no-repeat center; +} + +.icon-just-start { + background: url("./svg/flex-just-start.svg") no-repeat center; +} + +.icon-just-end { + background: url("./svg/flex-just-end.svg") no-repeat center; +} + +.icon-just-sp-bet { + background: url("./svg/flex-just-sp-bet.svg") no-repeat center; +} + +.icon-just-sp-ar { + background: url("./svg/flex-just-sp-ar.svg") no-repeat center; +} + +.icon-just-sp-cent { + background: url("./svg/flex-just-sp-cent.svg") no-repeat center; +} + +.icon-al-start { + background: url("./svg/flex-al-start.svg") no-repeat center; +} + +.icon-al-end { + background: url("./svg/flex-al-end.svg") no-repeat center; +} + +.icon-al-str { + background: url("./svg/flex-al-str.svg") no-repeat center; +} + +.icon-al-center { + background: url("./svg/flex-al-center.svg") no-repeat center; +} + +[data-tooltip]::after { + background: rgba(51, 51, 51, 0.9); +} + +.gjs-pn-commands { + min-height: 40px; +} + +#gjs-sm-float, +.gjs-pn-views .fa-cog { + display: none; +} + +.gjs-am-preview-cont { + height: 100px; + width: 100%; +} + +.gjs-logo-version { + background-color: #756467; +} + +.gjs-pn-panel.gjs-pn-views { + padding: 0; + border-bottom: none; +} + +.gjs-pn-btn.gjs-pn-active { + box-shadow: none; +} + +.gjs-pn-views .gjs-pn-btn { + margin: 0; + height: 40px; + padding: 10px; + width: 33.3333%; + border-bottom: 2px solid rgba(0, 0, 0, 0.3); +} + +.CodeMirror { + min-height: 450px; + margin-bottom: 8px; +} + +.grp-handler-close { + background-color: transparent; + color: #ddd; +} + +.grp-handler-cp-wrap { + border-color: transparent; +} + body, html { height: 100%; @@ -8,9 +144,75 @@ html { -webkit-text-stroke: 0.5px #fff; } +/* Generated by Glyphter (http://www.glyphter.com) on Tue Mar 12 2019*/ +@font-face { + font-family: "Glyphter"; + src: url("./fonts/Glyphter.eot"); + src: url("./fonts/Glyphter.eot?#iefix") format("embedded-opentype"), url("./fonts/Glyphter.woff") format("woff"), url("./fonts/Glyphter.ttf") format("truetype"), url("./fonts/Glyphter.svg#Glyphter") format("svg"); + font-weight: normal; + font-style: normal; +} +[class*=gly-]:before { + font-size: 2em; + line-height: 2em; + padding: 11px; + display: inline-block; + font-family: "Glyphter"; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.gly-four-columns:before { + content: "A"; +} + +.gly-four-eight:before { + content: "B"; +} + +.gly-menu-bottom:before { + content: "C"; +} + +.gly-menu-center:before { + content: "D"; +} + +.gly-menu-left:before { + content: "E"; +} + +.gly-menu-right:before { + content: "F"; +} + +.gly-menu-top:before { + content: "G"; +} + +.gly-one-column:before { + content: "H"; +} + +.gly-three-columns:before { + content: "I"; +} + +.gly-three-nine:before { + content: "J"; +} + +.gly-two-columns:before { + content: "K"; +} + .gjs-cm-editor#gjs-cm-css #gjs-cm-title, .gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title, .gjs-two-color, +.gjs-four-color, .gjs-color-warn, .gjs-sm-sector .gjs-sm-field input, .gjs-clm-tags .gjs-sm-field input, .gjs-sm-sector .gjs-clm-field input, .gjs-clm-tags .gjs-clm-field input, .gjs-sm-sector .gjs-sm-field select, .gjs-clm-tags .gjs-sm-field select, .gjs-sm-sector .gjs-clm-field select, .gjs-clm-tags .gjs-clm-field select { color: #464973; } @@ -213,27 +415,6 @@ html { background: #232c3c; } -.cm-s-hopscotch span.cm-tag { - color: #9a648b; -} - -.cm-s-hopscotch span.cm-atom { - color: #836fb6; -} - -.cm-s-hopscotch span.cm-number { - color: #a06d91; -} - -.cm-s-hopscotch span.cm-string { - color: #816eb5; -} - -.cm-s-hopscotch span.cm-property, -.cm-s-hopscotch span.cm-attribute { - color: #5eb6cc; -} - /* class name */ .gjs-clm-tags #gjs-clm-close, .gjs-clm-tags #gjs-clm-checkbox { @@ -296,6 +477,9 @@ html { color: #587899; font-size: 13px; margin: 10px 0 10px; + background: #fff; + box-shadow: 0 1px 10px #dddddd70; + padding: 8px 16px; } .CodeMirror { @@ -354,7 +538,7 @@ button.exportgram { max-width: none; } -.clear-head { +.clear-fix { width: 100%; clear: both; } @@ -362,3 +546,16 @@ button.exportgram { .css-wrapper { margin-left: 2%; } + +.gjs-sm-sectors .gjs-radio-items .gjs-radio-item { + background: #585858; +} + +label.gjs-radio-item-label, +.gjs-sm-sectors .gjs-radio-item .fa { + color: #fff; +} + +.gjs-four-color-h:hover { + color: #41dad2; +} diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index 483ad43..a1de973 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -1,555 +1,387 @@ /******/ (() => { // webpackBootstrap +/******/ "use strict"; /******/ var __webpack_modules__ = ({ -/***/ "./gramateria/develop/blocks.js": -/*!**************************************!*\ - !*** ./gramateria/develop/blocks.js ***! - \**************************************/ -/***/ ((module) => { - -module.exports = [{ - id: 'std', - label: 'Starter', - category: 'Section', - content: '' + "", - attributes: { - "class": 'fa fa-wpforms' - } -}, { - id: 'parallax', - label: 'Parallax', - category: 'Section', - content: '
        ' + '
        ' + '' + '
        ' + '
        ' + '
        ' + '
        ' + '

        Parallax

        ' + '

        Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

        ' + '
        ' + '
        ' + '
        ' + '
        ' + '
        ' + '' + '', - attributes: { - "class": 'fa fa-list-alt' - } -}, { - id: 'nav', - label: 'Navbar 1', - category: 'Section', - content: '' + "", - attributes: { - "class": 'fa fa-window-maximize' - } -}, { - id: 'dropdownNav', - label: 'Navbar 2', - category: 'Section', - content: '' + '' + '' + '' + '', - attributes: { - "class": 'fa fa-toggle-down' - } -}, { - id: 'footer', - label: 'Footer', - category: 'Section', - content: '
        ' + '
        ' + '
        ' + '
        ' + '
        Company Bio
        ' + '

        We are a team of college students working on this project like its our full time job.Any amount would help support and continue development on this project and is greatly appreciated.

        ' + '
        ' + '
        ' + '
        Settings
        ' + '' + '
        ' + '
        ' + '
        Connect
        ' + '' + '
        ' + '
        ' + '
        ' + '' + '
        ', - attributes: { - "class": 'fa fa-desktop' - } -}, { - id: 'b1', - label: '1 Block', - category: 'Grid', - attributes: { - "class": 'fa fa-reorder' - }, - content: "
        \n
        \n
        " -}, { - id: 'b2', - label: '2 Blocks', - category: 'Grid', - attributes: { - "class": 'fa fa-th-large' - }, - content: "
        \n
        \n
        \n
        " -}, { - id: 'b3', - label: '3 Blocks', - category: 'Grid', - attributes: { - "class": 'fa fa-th' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' + '
        ' -}, { - id: 'b4', - label: '4 Blocks', - category: 'Grid', - attributes: { - "class": 'fa fa-calendar' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' + '
        ' + '
        ' -}, { - id: 'b5', - label: '4/8 Block', - category: 'Grid', - attributes: { - "class": 'fa fa-th-list' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' -}, { - id: 'b6', - label: '5/7 Block', - category: 'Grid', - attributes: { - "class": 'fa fa-dedent' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' -}, { - id: 'b7', - label: '3/9 Block', - category: 'Grid', - attributes: { - "class": 'fa fa-list' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' -}, { - id: 'b8', - label: 'Center Block', - category: 'Grid', - attributes: { - "class": 'fa fa-minus-square-o' - }, - content: '
        ' + '
        ' + '
        ' -}, { - id: '3ba', - label: 'Badges', - category: 'Section', - content: '
        ' + '
        ' + '
        ' + '
        ' + '

        flash_on

        ' + '
        Speeds up development
        ' + '

        We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

        ' + '
        ' + '
        ' + '
        ' + '
        ' + '

        group

        ' + '
        User Experience Focused
        ' + '

        By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

        ' + '
        ' + '
        ' + '
        ' + '
        ' + '

        settings

        ' + '
        Easy to work with
        ' + '

        We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

        ' + '
        ' + '
        ' + '
        ' + '
        ' + '
        ' + '', - attributes: { - "class": 'fa fa-sitemap' - } -}, { - id: 'text', - label: 'Text', - attributes: { - "class": 'fa fa-text-width' - }, - category: 'Basic', - content: { - type: 'text', - content: 'Insert your text here', - activeOnRender: 1 - } -}, { - id: 'image', - label: 'Image', - category: 'Basic', - attributes: { - "class": 'fa fa-file-image-o' +/***/ "./gramateria/develop/js/config/assetManager.js": +/*!******************************************************!*\ + !*** ./gramateria/develop/js/config/assetManager.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + upload: 'https://test.page', + params: { + _token: 'pCYrSwjuiV0t5NVtZpQDY41Gn5lNUwo3it1FIkAj' }, - content: { + assets: [{ type: 'image', - activeOnRender: 1 - } -}, { - id: 'list', - label: 'List', - category: 'Basic', - attributes: { - "class": 'fa fa-bars' - }, - content: "
          \n
        • List One
        • \n
        • List Two
        • \n
        • List Three
        • \n
        • List Four
        • \n
        " -}, { - id: 'list2', - label: 'List Two', - category: 'Basic', - attributes: { - "class": 'fa fa-bars' - }, - content: '
          ' + '
        • ' + '' + 'Title' + '

          First Line
          Second Line

          ' + 'grade' + '
        • ' + '
        • ' + 'folder' + 'Title' + '

          First Line
          Second Line

          ' + 'grade' + '
        • ' + '
        • ' + 'insert_chart' + 'Title' + '

          First Line
          Second Line

          ' + 'grade' + '
        • ' + '
        • ' + 'play_arrow' + 'Title' + '

          First Line
          Second Line

          ' + 'grade' + '
        • ' + '
        ' -}, { - id: 'table', - label: 'Table', - category: 'Basic', - attributes: { - "class": 'fa fa-table' + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background_ckgyqe.jpg', + date: '2015-02-01', + height: 808, + width: 1440 + }, { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419441/background2_gjvaxs.jpg', + date: '2015-02-01', + height: 800, + width: 1600 + }, { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background3_d0ghix.jpg', + date: '2015-02-01', + height: 743, + width: 1440 + }, { + type: 'image', + src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419446/background4_pzh5ou.jpg', + date: '2015-02-01', + height: 808, + width: 1440 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/0174DF/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/5FB404/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/BF00FF/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/B40431/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/088A68/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/DF7401/ffffff/', + height: 350, + width: 250 + }, { + type: 'image', + src: 'http://via.placeholder.com/250x350/00BFFF/ffffff/', + height: 350, + width: 250 + }] +}); + +/***/ }), + +/***/ "./gramateria/develop/js/config/blockManager.js": +/*!******************************************************!*\ + !*** ./gramateria/develop/js/config/blockManager.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + blocks: [{ + id: 'nav', + label: 'nav', + category: 'Section', + attributes: { + "class": 'gly-one-column' + }, + content: "" + }, { + id: 'modal', + label: 'modal', + category: 'Section', + attributes: { + "class": 'gly-three-columns' + }, + content: "\n \n \n \n
        \n
        \n
        \n
        \n
        Modal title
        \n \n
        \n
        \n

        Modal body text goes here.

        \n
        \n
        \n \n \n
        \n
        \n
        \n
        " + }, // These are basic blocks + { + id: 'b1', + label: '1 Block', + category: 'Grid', + attributes: { + "class": 'gly-one-column' + }, + content: "
        \n
        \n
        " + }, { + id: 'b2', + label: '2 Blocks', + category: 'Grid', + attributes: { + "class": 'gly-two-columns' + }, + content: "
        \n
        \n
        \n
        " + }, { + id: 'b3', + label: '3 Blocks', + category: 'Grid', + attributes: { + "class": 'gly-three-columns' + }, + content: '
        ' + '
        ' + '
        ' + '
        ' + '
        ' + }, { + id: 'b5', + label: '4/8 Block', + category: 'Grid', + attributes: { + "class": 'gly-four-eight' + }, + content: '
        ' + '
        ' + '
        ' + '
        ' + }, { + id: 'b6', + label: '5/7 Block', + category: 'Grid', + attributes: { + "class": 'gly-four-eight' + }, + content: '
        ' + '
        ' + '
        ' + '
        ' + }, { + id: 'b7', + label: '3/9 Block', + category: 'Grid', + attributes: { + "class": 'gly-three-nine' + }, + content: '
        ' + '
        ' + '
        ' + '
        ' + }, { + id: 'text', + label: 'Text', + attributes: { + "class": 'fa fa-text-width' + }, + category: 'Basic', + content: { + type: "text", + content: "Insert your text here", + style: { + padding: "10px" + } + } + }, { + id: 'image', + label: 'Image', + category: 'Basic', + attributes: { + "class": 'fa fa-file-image-o' + }, + content: { + type: 'image', + activeOnRender: 1 + } + }, { + id: 'list', + label: 'List', + category: 'Basic', + attributes: { + "class": 'fa fa-bars' + }, + content: "
          \n
        • List One
        • \n
        • List Two
        • \n
        • List Three
        • \n
        • List Four
        • \n
        " + }, { + id: 'list2', + label: 'List Two', + category: 'Basic', + attributes: { + "class": 'fa fa-bars' + }, + content: "" + }, { + id: 'table', + label: 'Table', + category: 'Basic', + attributes: { + "class": 'fa fa-table' + }, + content: "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
        #FirstLastHandle
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larrythe Bird@twitter
        " + }, { + id: 'res', + label: 'respon image', + category: 'Media', + content: '', + attributes: { + "class": 'fa fa-image' + } + }, { + id: 'video', + label: 'Video', + category: 'Media', + attributes: { + "class": 'fa fa-youtube-play' + }, + content: { + type: 'video', + src: 'img/video2.webm', + style: { + height: '350px', + width: '615px' + } + } + }, { + id: 'h1p', + label: 'Text section', + category: 'Typography', + content: '
        ' + '

        Insert title here

        ' + '

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

        ' + '
        ', + attributes: { + "class": 'fa fa-align-center' + } + }, { + id: 'quo', + label: 'Quote', + category: 'Typography', + content: '
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
        ', + attributes: { + "class": 'fa fa-quote-right' + } + }] +}); + +/***/ }), + +/***/ "./gramateria/develop/js/config/buttons.js": +/*!*************************************************!*\ + !*** ./gramateria/develop/js/config/buttons.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{ + id: 'undo', + className: 'fa fa-undo icon-undo', + command: function command(editor, sender) { + sender.set('active', 0); + editor.UndoManager.undo(1); }, - content: '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '
        NameItem NameItem Price
        AlvinEclair$0.87
        AlanJellybean$3.76
        JonathanLollipop$7.00
        ' -}, { - id: 'res', - label: 'respon image', - category: 'Media', - content: '', attributes: { - "class": 'fa fa-image' - } -}, { - id: 'popup', - label: 'popup image', - category: 'Media', - content: '' + '', - attributes: { - "class": 'fa fa-object-group' - } -}, { - id: 'dropdown', - label: 'dropdown', - category: 'Button', - content: '' + 'Drop Me!' + '' + '', - attributes: { - "class": 'fa fa-list' - } -}, { - id: 'modal', - label: 'modal', - category: 'Button', - content: '' + 'Modal' + '' + '', - attributes: { - "class": 'fa fa-object-ungroup' - } -}, { - id: 'slider', - label: 'Slider', - category: 'Section', - content: '
        ' + '
          ' + '
        • ' + ' ' + '
          ' + '

          This is our big Tagline!

          ' + '
          Heres our small slogan.
          ' + '
          ' + '
        • ' + '
        • ' + ' ' + '
          ' + '

          Left Aligned Caption

          ' + '
          Heres our small slogan.
          ' + '
          ' + '
        • ' + '
        • ' + ' ' + '
          ' + '

          Right Aligned Caption

          ' + '
          Heres our small slogan.
          ' + '
          ' + '
        • ' + '
        • ' + ' ' + '
          ' + '

          This is our big Tagline!

          ' + '
          Heres our small slogan.
          ' + '
          ' + '
        • ' + '
        ' + '
        ' + '', - attributes: { - "class": 'fa fa-credit-card' - } -}, { - id: 'btn', - label: 'button', - category: 'Button', - content: 'button', - attributes: { - "class": 'fa fa-square-o' - } -}, { - id: 'target', - label: 'tap target', - category: 'Button', - content: '' + '
        ' + '
        ' + '
        Title
        ' + '

        Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Proin eget tortor risus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Nulla porttitor accumsan tincidunt.

        ' + '
        ' + '
        ', - attributes: { - "class": 'fa fa-bullseye' - } -}, { - id: 'fab', - label: 'FAB', - category: 'Button', - content: '', - attributes: { - "class": 'fa fa-bullseye' - } -}, { - id: 'fabtool', - label: 'FAB toolbar', - category: 'Button', - content: '', - attributes: { - "class": 'fa fa-ellipsis-h' - } -}, { - id: 'cbtn', - label: 'Circle Button', - category: 'Button', - content: 'add', - attributes: { - "class": 'fa fa-circle-thin' - } -}, { - id: 'link', - label: 'Link', - category: 'Basic', - attributes: { - "class": 'fa fa-link' - }, - content: { - type: 'link', - content: 'Link' + title: 'Undo (CTRL/CMD + Z)' } }, { - id: 'formtag', - label: 'Form Tag', - category: 'Form', - attributes: { - "class": 'fa fa-file-text' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' + '' -}, { - id: 'formgroup', - label: 'Form group', - category: 'Form', - attributes: { - "class": 'fa fa-list' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' + '' + '' + '
        ' + '
        ' + '' + '' + '
        ' + '
        ' + '
        ' + '
        ' + '' + '' + '
        ' + '
        ' + '
        ' + '
        ' + '' + '' + '
        ' + '
        ' + '
        ' + '
        This is an inline input field:' + '
        ' + '' + '' + '
        ' + '
        ' + '
        ' + '
        ' + '
        ' + '' -}, { - id: 'iconinput', - label: 'Input', - category: 'Form', - attributes: { - "class": 'fa fa-minus-square' - }, - content: '
        ' + '
        ' + 'account_circle' + '' + '' + '
        ' + '
        ' + 'phone' + '' + '' + '
        ' + '
        ' -}, { - id: 'textarea', - label: 'Textarea', - category: 'Form', - attributes: { - "class": 'fa fa-sticky-note-o' - }, - content: '
        ' + '
        ' + '' + '' + '
        ' + '
        ' -}, { - id: 'select', - label: 'Select', - category: 'Form', - attributes: { - "class": 'fa fa-caret-square-o-down' - }, - content: '
        ' + '' + '' + '
        ' + '' -}, { - id: 'radio', - label: 'Radio', - category: 'Form', - attributes: { - "class": 'fa fa-dot-circle-o' - }, - content: "
        \n
        \n

        \n\n\n

        \n

        \n\n\n

        \n

        \n\n\n

        \n

        \n\n\n

        \n
        \n
        " -}, { - id: 'checkbox', - label: 'Checkbox', - category: 'Form', - attributes: { - "class": 'fa fa-check-square-o' + id: 'redo', + className: 'fas fa fa-repeat icon-redo', + command: function command(editor, sender) { + sender.set('active', 0); + editor.UndoManager.redo(1); }, - content: "
        \n
        \n

        \n\n\n

        \n

        \n\n\n

        \n
        \n
        " -}, { - id: 'map', - label: 'Map', - category: 'Extra', attributes: { - "class": 'fa fa-map-o' - }, - content: { - type: 'map', - style: { - height: '350px' - } + title: 'Redo (CTRL/CMD + SHIFT + Z)' } }, { - id: 'sidenav', - label: 'SideNav', - category: 'Extra', - content: "\nmenu\n ", + id: 'import', + className: 'fa fa-edit', + command: 'html-edit', attributes: { - "class": 'fa fa-indent' + title: 'Import' } }, { - id: 'accor', - label: 'Accordian', - category: 'Extra', - attributes: { - "class": 'fa fa-reorder' - }, - content: "
          \n
        • \n
          filter_dramaFirst
          \n
          Lorem ipsum dolor sit amet.
          \n
        • \n
        • \n
          placeSecond
          \n
          Lorem ipsum dolor sit amet.
          \n
        • \n
        • \n
          whatshotThird
          \n
          Lorem ipsum dolor sit amet.
          \n
        • \n
        \n\n" -}, { - id: 'tap', - label: 'Tap', - category: 'Extra', - attributes: { - "class": 'fa fa-ellipsis-h' + id: 'clean-all', + className: 'fa fa-trash icon-blank', + command: function command(editor, sender) { + if (sender) sender.set('active', false); + + if (confirm('Are you sure to clean the canvas?')) { + editor.runCommand('core:canvas-clear'); + setTimeout(function () { + localStorage.setItem('gjs-assets', ''); + localStorage.setItem('gjs-components', ''); + localStorage.setItem('gjs-html', ''); + localStorage.setItem('gjs-css', ''); + localStorage.setItem('gjs-styles', ''); + }, 0); + } }, - content: '
        ' + '
        ' + '' + '
        ' + '
        Test 1
        ' + '
        Test 2
        ' + '
        Test 3
        ' + '
        Test 4
        ' + '
        ' + '' -}, { - id: 'members', - label: 'Members', - category: 'Section', - content: "
        \n
        \n
        \n
        \n

        Members

        \n
        \n
        \n
        \n
        \n
        \n\"\"\n
        Marian Holmes
        \n

        Developer

        \n\n
        \n
        \n
        \n
        \n\"\"\n
        Peggy Henry
        \n

        Marketing manager

        \n\n
        \n
        \n
        \n
        \n\"\"\n
        Eduardo Carter
        \n

        Director

        \n\n
        \n
        \n
        \n
        \n
        \n", - attributes: { - "class": "fa fa-users" - } -}, { - id: 'blog', - label: 'Blog', - category: 'Section', - content: '
        ' + '
        ' + '
        ' + '

        Blog

        ' + '
        ' + '
        ' + '
        ' + '
        ' + '22 / July / 18' + '
        ' + '' + '
        ' + '

        Blog Title

        ' + '
        ' + '
        ' + '
          ' + '
        • person_outline by John Doe
        • ' + '
        • ' + 'chat_bubble_outline 5 Comments' + '
        • ' + '
        ' + '
        ' + '

        ' + 'Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.' + '

        ' + 'Read More' + '
        ' + '
        ' + '
        ' + '
        ' + '
        ' + '22 / July / 18' + '
        ' + '' + '
        ' + '

        Blog Title

        ' + '
        ' + '
        ' + '
          ' + '
        • person_outline by John Doe
        • ' + '
        • ' + 'chat_bubble_outline 5 Comments' + '
        • ' + '
        ' + '
        ' + '

        ' + 'Nulla porttitor accumsan tincidunt. Vivamus suscipit tortor eget felis porttitor volutpat. Sed porttitor lectus nibh. Proin eget tortor risus. Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a.' + '

        ' + 'Read More' + '
        ' + '
        ' + '
        ' + '
        ' + '', attributes: { - "class": "fa fa-dedent" - } -}, { - id: 'card', - label: 'Card', - category: 'Section', - content: '
        ' + '
        ' + '
        ' + '
        ' + '' + 'Card Title' + '
        ' + '
        ' + '

        I am a very simple card. I am good at containing small bits of information.' + 'I am convenient because I require little markup to use effectively.

        ' + '
        ' + '
        ' + 'This is a link' + '
        ' + '
        ' + '
        ' + '
        ', - attributes: { - "class": 'fa fa-newspaper-o' + title: 'Empty canvas' } }, { - id: 'video', - label: 'Video', - category: 'Media', - attributes: { - "class": 'fa fa-youtube-play' + id: 'publish', + className: 'fa fa-globe', + command: function command(editor, sender) { + sender.set('active', 0); + var modal = editor.Modal; + modal.setTitle('Publish'); + modal.setContent('To be continue'); + modal.open(); }, - content: { - type: 'video', - src: 'img/video2.webm', - style: { - height: '350px', - width: '615px' - } - } -}, { - id: 'h1p', - label: 'Text section', - category: 'Typography', - content: '
        ' + '

        Insert title here

        ' + '

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

        ' + '
        ', attributes: { - "class": 'fa fa-align-center' + title: 'Publish web' } }, { - id: 'quo', - label: 'Quote', - category: 'Typography', - content: '
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
        ', + id: 'download', + className: 'fa fa-download', + command: function command(editor, sender) { + sender.set('active', 0); + }, attributes: { - "class": 'fa fa-quote-right' + title: 'Download as zip' } -}]; +}]); /***/ }), -/***/ "./gramateria/develop/gramateria.js": -/*!******************************************!*\ - !*** ./gramateria/develop/gramateria.js ***! - \******************************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -var blocks = __webpack_require__(/*! ./blocks */ "./gramateria/develop/blocks.js"); - -var editor = grapesjs.init({ - allowScripts: 1, - showOffsets: 1, - autorender: 0, - noticeOnUnload: 0, - container: '#gjs', - height: '100%', - fromElement: true, - clearOnRender: 0, - plugins: ['gjs-plugin-export'], - pluginsOpts: { - 'gjs-plugin-export': { - btnLabel: 'Download Zip', - preHtml: "\n \n \n \n \n \n \n \n \n \n ", - postHtml: "\n \n " +/***/ "./gramateria/develop/js/config/commands.js": +/*!**************************************************!*\ + !*** ./gramateria/develop/js/config/commands.js ***! + \**************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + defaults: [{ + id: 'undo', + run: function run(editor, sender) { + sender.set('active', false); + editor.UndoManager.undo(true); } - }, - canvas: { - styles: ['https://fonts.googleapis.com/css?family=Roboto', 'https://fonts.googleapis.com/icon?family=Material+Icons', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css'], - scripts: ['https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.1/js/materialize.min.js'] - }, - commands: { - defaults: [// { - // id: 'open-github', - // run: function (editor, sender) { - // sender.set('active', false); - // window.open('https://github.com/ronaldaug/gramateria', '_blank'); - // } - // }, - { - id: 'undo', - run: function run(editor, sender) { - sender.set('active', false); - editor.UndoManager.undo(true); - } - }, { - id: 'redo', - run: function run(editor, sender) { - sender.set('active', false); - editor.UndoManager.redo(true); - } - }, { - id: 'clean-all', - run: function run(editor, sender) { - sender.set('active', false); + }, { + id: 'redo', + run: function run(editor, sender) { + sender.set('active', false); + editor.UndoManager.redo(true); + } + }, { + id: 'clean-all', + run: function run(editor, sender) { + sender.set('active', false); - if (confirm('Are you sure to clean the canvas?')) { - var comps = editor.DomComponents.clear(); - } + if (confirm('Are you sure to clean the canvas?')) { + editor.runCommand('core:canvas-clear'); } - }] - }, - assetManager: { - upload: 'https://test.page', - params: { - _token: 'pCYrSwjuiV0t5NVtZpQDY41Gn5lNUwo3it1FIkAj' - }, - assets: [{ - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background_ckgyqe.jpg', - date: '2015-02-01', - height: 808, - width: 1440 - }, { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419441/background2_gjvaxs.jpg', - date: '2015-02-01', - height: 800, - width: 1600 - }, { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background3_d0ghix.jpg', - date: '2015-02-01', - height: 743, - width: 1440 - }, { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419446/background4_pzh5ou.jpg', - date: '2015-02-01', - height: 808, - width: 1440 - }, { - type: 'image', - src: 'http://via.placeholder.com/250x350/0174DF/ffffff/', - height: 350, - width: 250 - }, { - type: 'image', - src: 'http://via.placeholder.com/250x350/5FB404/ffffff/', - height: 350, - width: 250 - }, { - type: 'image', - src: 'http://via.placeholder.com/250x350/BF00FF/ffffff/', - height: 350, - width: 250 - }, { - type: 'image', - src: 'http://via.placeholder.com/250x350/B40431/ffffff/', - height: 350, - width: 250 - }, { - type: 'image', - src: 'http://via.placeholder.com/250x350/088A68/ffffff/', - height: 350, - width: 250 - }, { - type: 'image', - src: 'http://via.placeholder.com/250x350/DF7401/ffffff/', - height: 350, - width: 250 - }, { - type: 'image', - src: 'http://via.placeholder.com/250x350/00BFFF/ffffff/', - height: 350, - width: 250 - }] - }, - blockManager: { - blocks: blocks - }, - storageManager: { - id: 'gjs-', - type: 'local', - autosave: 1, - autoload: 1, - stepsBeforeSave: 1, - storeComponents: 1, - storeStyles: 1, - storeHtml: 1, - storeCss: 1 - }, - customStyleManager: [{ + } + }] +}); + +/***/ }), + +/***/ "./gramateria/develop/js/config/styleManager.js": +/*!******************************************************!*\ + !*** ./gramateria/develop/js/config/styleManager.js ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + sectors: [{ name: 'General', buildProps: ['float', 'display', 'position', 'top', 'right', 'left', 'bottom'], properties: [{ @@ -683,7 +515,7 @@ var editor = grapesjs.init({ }, { name: 'Decorations', open: false, - buildProps: ['opacity', 'background-color', 'border-radius', 'border', 'box-shadow', 'background'], + buildProps: ['opacity', 'border-radius', 'border', 'box-shadow', 'background-bg'], properties: [{ type: 'slider', property: 'opacity', @@ -728,23 +560,9 @@ var editor = grapesjs.init({ property: 'box-shadow-type' }] }, { + id: 'background-bg', property: 'background', - properties: [{ - name: 'Image', - property: 'background-image' - }, { - name: 'Repeat', - property: 'background-repeat' - }, { - name: 'Position', - property: 'background-position' - }, { - name: 'Attachment', - property: 'background-attachment' - }, { - name: 'Size', - property: 'background-size' - }] + type: 'bg' }] }, { name: 'Extra', @@ -939,411 +757,293 @@ var editor = grapesjs.init({ }] }] }); -var pnm = editor.Panels; -pnm.addButton('options', [{ - id: 'undo', - className: 'fa fa-undo icon-undo', - command: function command(editor, sender) { - sender.set('active', 0); - editor.UndoManager.undo(1); - }, - attributes: { - title: 'Undo (CTRL/CMD + Z)' - } -}, { - id: 'redo', - className: 'fa fa-repeat icon-redo', - command: function command(editor, sender) { - sender.set('active', 0); - editor.UndoManager.redo(1); - }, - attributes: { - title: 'Redo (CTRL/CMD + SHIFT + Z)' - } -}, { - id: 'import', - className: 'fa fa-edit', - command: 'html-edit', - attributes: { - title: 'Edit and Import' - } -}, { - id: 'clean-all', - className: 'fa fa-trash icon-blank', - command: function command(editor, sender) { - if (sender) sender.set('active', false); - - if (confirm('Are you sure to clean the canvas?')) { - editor.DomComponents.clear(); - setTimeout(function () { - localStorage.setItem('gjs-assets', ''); - localStorage.setItem('gjs-components', ''); - localStorage.setItem('gjs-html', ''); - localStorage.setItem('gjs-css', ''); - localStorage.setItem('gjs-styles', ''); - }, 0); - } - }, - attributes: { - title: 'Empty canvas' - } -}, { - id: 'clear-local', - className: 'fa fa-close', - command: function command() { - if (confirm('Reset to original?')) { - localStorage.setItem('gjs-assets', ''); - localStorage.setItem('gjs-components', ''); - localStorage.setItem('gjs-html', ''); - localStorage.setItem('gjs-css', ''); - localStorage.setItem('gjs-styles', ''); - location.reload(); - } - }, - attributes: { - title: 'Reset' - } -}, { - id: 'save-project', - className: 'fa fa-save', - command: function command(editor, sender) { - sender.set('active', 0); - alert('No database for this version but your work is automatically saved in localstorage.'); - }, - attributes: { - title: 'github' - } -}]); // --------------------- -// Import/Edit -// --------------------- - -var gra = { - // append in container - _a: function _a(appendName) { - return container.appendChild(appendName); - }, - // create elements - _c: function _c(tagName) { - return document.createElement(tagName); - }, - // check extensions - _e: function _e(fname) { - var ext = /^.+\.([^.]+)$/.exec(fname); - return ext == null ? "" : ext[1]; - }, - // select id - _d: function _d(name, tag) { - switch (tag) { - case 'class': - return document.getElementsByClassName(name); - break; - - case 'id': - return document.getElementById(name); - break; - - default: - return document.getElementById(name); - } - } -}; - -var pmodel = gra._d("modelPopup", "class"); - -var pfx = editor.getConfig().stylePrefix; -var modal = editor.Modal; -var cmdm = editor.Commands; - -var container = gra._c("div"); - -var fileform = gra._c("div"); - -var btnEdit = gra._c("button"); - -var copyHtml = gra._c("button"); - -var copyCss = gra._c("button"); - -var btnZip = gra._c("button"); - -var exportTxt = gra._c("button"); - -var loadTxt = gra._c("button"); - -var fileLoader = gra._c("form"); - -var anchor = gra._c("a"); - -function buildCodeEditor(type) { - var codeEditor = editor.CodeManager.getViewer('CodeMirror').clone(); - codeEditor.set({ - codeName: type === 'html' ? 'htmlmixed' : 'css', - readOnly: 0, - theme: 'hopscotch', - autoBeautify: true, - autoCloseTags: true, - autoCloseBrackets: true, - lineWrapping: true, - styleActiveLine: true, - smartIndent: true, - indentWithTabs: true - }); - return codeEditor; -} - -var htmlCodeEditor = buildCodeEditor('html'); -var cssCodeEditor = buildCodeEditor('css'); -btnEdit.innerHTML = ' Apply'; -btnZip.innerHTML = ' Download Project (zip)'; -exportTxt.innerHTML = ' Save as .gram file'; -loadTxt.innerHTML = ' Load .gram file'; -copyHtml.innerHTML = ' Copy HTML'; -copyCss.innerHTML = ' Copy CSS'; -fileLoader.innerHTML = ''; -fileform.innerHTML = ''; -fileform.className = 'modelPopup'; -fileLoader.className = pfx + 'import-file'; -btnEdit.className = pfx + 'btn-prim ' + pfx + 'btn-import'; -copyHtml.className = pfx + 'btn-prim ' + pfx + 'btn-html'; -copyCss.className = pfx + 'btn-prim ' + pfx + 'btn-css'; -btnZip.className = pfx + 'btn-prim ' + pfx + 'btn-zip'; -exportTxt.className = pfx + 'btn-prim ' + pfx + 'btn-export'; -loadTxt.className = pfx + 'btn-prim ' + pfx + 'btn-load'; // import button inside import editor - -btnEdit.onclick = function () { - var htmlCode = htmlCodeEditor.editor.getValue(); - var cssCode = cssCodeEditor.editor.getValue(); - editor.DomComponents.getWrapper().set('content', ''); - editor.setComponents(htmlCode.trim() + ''); - modal.close(); -}; - -btnZip.onclick = function () { - editor.runCommand('gjs-export-zip'); -}; // onclick load file button inside import editor - - -loadTxt.onclick = function (e) { - e.preventDefault(); - var fileToLoad = document.getElementById("fileToLoad").files[0]; - - var fType = gra._e(fileToLoad['name']); - - if (fileToLoad === undefined) { - alert('Please select a file'); - return; - } - - if (fType !== 'gram' || fType !== 'txt') { - alert('You can only import .gram or .txt extension'); - } - - var reader = new FileReader(); - - reader.onload = function (e) { - var fileData = e.target.result; - editor.DomComponents.getWrapper().set('content', ''); - editor.setComponents(fileData); - modal.close(); - }; - - reader.readAsText(fileToLoad); -}; - -copyHtml.onclick = function () { - var htmlCodes = htmlCodeEditor.editor.getValue(); - - var dummy = gra._c("input"); - - document.body.appendChild(dummy); - dummy.setAttribute('value', htmlCodes); - dummy.select(); - document.execCommand("copy"); - document.body.removeChild(dummy); - document.execCommand('copy'); - alert('You have copied HTML codes!'); -}; - -copyCss.onclick = function () { - var cssCodes = cssCodeEditor.editor.getValue(); - console.log(cssCodes); - - var dummy = gra._c("input"); - - document.body.appendChild(dummy); - dummy.setAttribute('value', cssCodes); - dummy.select(); - document.execCommand("copy"); - document.body.removeChild(dummy); - document.execCommand('copy'); - alert('You have copied CSS codes!'); -}; // onclick save as button inside import editor - - -exportTxt.onclick = function () { - pmodel[0].className += " " + 'showup'; -}; // export file as .gram extension +/***/ }), -function exportgramfile() { - var fileName = gra._d("file_name", "id").value; +/***/ "./gramateria/develop/js/gramateria.js": +/*!*********************************************!*\ + !*** ./gramateria/develop/js/gramateria.js ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - if (fileName !== undefined && fileName !== '') { - alert('Please type a file name'); - return; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _config_blockManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config/blockManager */ "./gramateria/develop/js/config/blockManager.js"); +/* harmony import */ var _config_styleManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./config/styleManager */ "./gramateria/develop/js/config/styleManager.js"); +/* harmony import */ var _config_commands__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config/commands */ "./gramateria/develop/js/config/commands.js"); +/* harmony import */ var _config_assetManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config/assetManager */ "./gramateria/develop/js/config/assetManager.js"); +/* harmony import */ var _config_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config/buttons */ "./gramateria/develop/js/config/buttons.js"); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + + + + + + +var Gramateria = /*#__PURE__*/function () { + function Gramateria() { + var _this = this; + + _classCallCheck(this, Gramateria); + + _defineProperty(this, "buildCodeEditor", function (type) { + var codeEditor = _this.editor.CodeManager.getViewer('CodeMirror').clone(); + + codeEditor.set({ + codeName: type === 'html' ? 'htmlmixed' : 'css', + readOnly: 0, + theme: 'hopscotch', + autoBeautify: true, + autoCloseTags: true, + autoCloseBrackets: true, + lineWrapping: true, + styleActiveLine: true, + smartIndent: true, + indentWithTabs: true + }); + return codeEditor; + }); + + this.editor = grapesjs.init({ + allowScripts: 1, + showOffsets: 1, + autorender: 0, + noticeOnUnload: 0, + container: '#gjs', + height: '100%', + fromElement: true, + clearOnRender: 0, + canvas: { + styles: ['https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.0.2/materia/bootstrap.min.css'], + scripts: ['https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js'] + }, + commands: _config_commands__WEBPACK_IMPORTED_MODULE_2__.default, + assetManager: _config_assetManager__WEBPACK_IMPORTED_MODULE_3__.default, + blockManager: _config_blockManager__WEBPACK_IMPORTED_MODULE_0__.default, + styleManager: _config_styleManager__WEBPACK_IMPORTED_MODULE_1__.default, + storageManager: { + id: 'gjs-', + type: 'local', + autosave: 1, + autoload: 1, + stepsBeforeSave: 1, + storeComponents: 1, + storeStyles: 1, + storeHtml: 1, + storeCss: 1 + } + }); + this.editor.Panels.addButton('options', _config_buttons__WEBPACK_IMPORTED_MODULE_4__.default); } - var InnerHtml = editor.getHtml(); - var Css = editor.getCss(); - var text = InnerHtml + "'; - var blob = new Blob([text], { - type: "text/plain" - }); - anchor.download = fileName + ".gram"; - anchor.href = window.URL.createObjectURL(blob); - anchor.target = "_blank"; - anchor.style.display = "none"; // just to be safe! - - document.body.appendChild(anchor); - anchor.click(); - document.body.removeChild(anchor); - pmodel[0].className = "modelPopup"; -} // import nav button click event - - -cmdm.add('html-edit', { - run: function importArea(editor, sender) { - sender && sender.set('active', 0); - var htmlViewer = htmlCodeEditor.editor; - var cssViewer = cssCodeEditor.editor; - - var htmlBox = gra._c('div'); - - htmlBox.className = 'html-wrapper'; - htmlBox.innerHTML = "

        HTML

        "; - - var cssBox = gra._c('div'); - - cssBox.className = 'css-wrapper'; - cssBox.innerHTML = "

        CSS

        "; - modal.setTitle('Edit and Import'); - - var headline = gra._c('div'); - - headline.className = 'clear-head'; - - var htmlWrap = gra._c('textarea'); - - var cssWrap = gra._c('textarea'); - - htmlBox.appendChild(htmlWrap); - cssBox.appendChild(cssWrap); - - if (!htmlViewer && !cssViewer) { - gra._a(fileLoader); - - gra._a(fileform); - - gra._a(loadTxt); - - gra._a(exportTxt); - - gra._a(headline); - - gra._a(htmlBox); + _createClass(Gramateria, [{ + key: "checkExtension", + value: function checkExtension(fname) { + var ext = /^.+\.([^.]+)$/.exec(fname); + return ext == null ? "" : ext[1]; + } + }, { + key: "editModal", + value: function editModal() { + var _this2 = this; + + // --------------------- + // Import/Edit + // --------------------- + var prefix = this.editor.getConfig().stylePrefix; + var modal = this.editor.Modal; + var modal_content_wrapper = document.createElement("div"); + modal_content_wrapper.id = "modal-wrapper"; + var btnEdit = document.createElement("button"); + var copyHtml = document.createElement("button"); + var copyCss = document.createElement("button"); + var exportTxt = document.createElement("button"); + var loadTxt = document.createElement("button"); + var fileLoader = document.createElement("form"); + var anchor = document.createElement("a"); + var htmlCodeEditor = this.buildCodeEditor('html'); + var cssCodeEditor = this.buildCodeEditor('css'); + btnEdit.innerHTML = ' Apply'; + exportTxt.innerHTML = ' Save as .gram file'; + loadTxt.innerHTML = ' Load .gram file'; + copyHtml.innerHTML = ' Copy HTML'; + copyCss.innerHTML = ' Copy CSS'; + fileLoader.innerHTML = ''; + fileLoader.className = prefix + 'import-file'; + btnEdit.className = prefix + 'btn-prim ' + prefix + 'btn-import'; + copyHtml.className = prefix + 'btn-prim ' + prefix + 'btn-html'; + copyCss.className = prefix + 'btn-prim ' + prefix + 'btn-css'; + exportTxt.className = prefix + 'btn-prim ' + prefix + 'btn-export'; + loadTxt.className = prefix + 'btn-prim ' + prefix + 'btn-load'; // import button inside import editor + + btnEdit.onclick = function () { + var htmlCode = htmlCodeEditor.editor.getValue(); + var cssCode = cssCodeEditor.editor.getValue(); + + _this2.editor.DomComponents.getWrapper().set('content', ''); + + _this2.editor.setComponents(htmlCode.trim() + ''); + + modal.close(); + }; // onclick load file button inside import editor + + + loadTxt.onclick = function (e) { + e.preventDefault(); + var fileToLoad = document.getElementById("fileToLoad").files[0]; + + var fType = _this2.checkExtension(fileToLoad['name']); + + if (fileToLoad === undefined) { + alert('Please select a file'); + return; + } - gra._a(cssBox); + if (fType === 'gram' || fType === 'txt') { + var reader = new FileReader(); - gra._a(copyCss); + reader.onload = function (e) { + var fileData = e.target.result; - gra._a(copyHtml); + _this2.editor.DomComponents.getWrapper().set('content', ''); - gra._a(btnEdit); + _this2.editor.setComponents(fileData); - gra._a(btnZip); + modal.close(); + }; - htmlCodeEditor.init(htmlWrap); - cssCodeEditor.init(cssWrap); + reader.readAsText(fileToLoad); + } else { + alert('You can only import .gram or .txt extension'); + } + }; + + copyHtml.onclick = function () { + var htmlCodes = htmlCodeEditor.editor.getValue(); + var dummy = document.createElement("input"); + document.body.appendChild(dummy); + dummy.setAttribute('value', htmlCodes); + dummy.select(); + document.execCommand("copy"); + document.body.removeChild(dummy); + document.execCommand('copy'); + alert('You have copied HTML codes!'); + }; + + copyCss.onclick = function () { + var cssCodes = cssCodeEditor.editor.getValue(); + var dummy = document.createElement("input"); + document.body.appendChild(dummy); + dummy.setAttribute('value', cssCodes); + dummy.select(); + document.execCommand("copy"); + document.body.removeChild(dummy); + document.execCommand('copy'); + alert('You have copied CSS codes!'); + }; // onclick save as button inside import editor + + + exportTxt.onclick = function () { + var InnerHtml = _this2.editor.getHtml(); + + var Css = _this2.editor.getCss(); + + var text = InnerHtml + "'; + var blob = new Blob([text], { + type: "text/plain" + }); + anchor.download = "download.gram"; + anchor.href = window.URL.createObjectURL(blob); + anchor.target = "_blank"; + anchor.style.display = "none"; // just to be safe! + + document.body.appendChild(anchor); + anchor.click(); + document.body.removeChild(anchor); + }; // import nav button click event + + + this.editor.Commands.add('html-edit', { + run: function run(editor, sender) { + sender && sender.set('active', 0); + var html_textarea_box = document.createElement('textarea'); + var css_textarea_box = document.createElement('textarea'); + var htmlBox = document.createElement('div'); + htmlBox.className = 'html-wrapper'; + htmlBox.innerHTML = "

        HTML

        "; + htmlBox.appendChild(html_textarea_box); + var cssBox = document.createElement('div'); + cssBox.className = 'css-wrapper'; + cssBox.innerHTML = "

        CSS

        "; + cssBox.appendChild(css_textarea_box); + var headline = document.createElement('div'); + headline.className = 'clear-fix'; + + if (!htmlCodeEditor.editor && !cssCodeEditor.editor) { + modal_content_wrapper.appendChild(fileLoader); + modal_content_wrapper.appendChild(loadTxt); + modal_content_wrapper.appendChild(exportTxt); + modal_content_wrapper.appendChild(headline); + modal_content_wrapper.appendChild(htmlBox); + modal_content_wrapper.appendChild(cssBox); + modal_content_wrapper.appendChild(copyCss); + modal_content_wrapper.appendChild(copyHtml); + modal_content_wrapper.appendChild(btnEdit); + htmlCodeEditor.init(html_textarea_box); + cssCodeEditor.init(css_textarea_box); + } + + modal.setTitle('Edit and Import'); + modal.setContent(''); + modal.setContent(modal_content_wrapper); + htmlCodeEditor.setContent(editor.getHtml()); + cssCodeEditor.setContent(editor.getCss({ + avoidProtected: true + })); + modal.open(); + htmlCodeEditor.editor.refresh(); + cssCodeEditor.editor.refresh(); + } + }); } + }, { + key: "init", + value: function init() { + this.editModal(); + this.editor.Panels.removeButton('options', 'export-template'); + this.editor.on('load', function (editor) { + editor.Panels.getButton('views', 'open-blocks').set('active', true); + editor.BlockManager.getCategories().each(function (ctg) { + if (ctg.attributes.id == 'Section') { + return; + } + + ctg.set('open', false); + }); + }); + this.editor.render(); + } + }]); - modal.setContent(''); - modal.setContent(container); - htmlCodeEditor.setContent(editor.getHtml()); - cssCodeEditor.setContent(editor.getCss({ - avoidProtected: true - })); - modal.open(); - htmlCodeEditor.editor.refresh(); - cssCodeEditor.editor.refresh(); - } -}); -editor.BlockManager.getCategories().each(function (ctg) { - ctg.set('open', false); -}); // let bm = editor.BlockManager; -// bm.add('link-block', { -// label: 'Link Block', -// attributes: {class:'fa fa-link'}, -// category: 'Basic', -// content: { -// type:'link', -// editable: false, -// droppable: true, -// style:{ -// display: 'inline-block', -// padding: '5px', -// 'min-height': '50px', -// 'min-width': '50px' -// } -// }, -// }); - -var domc = editor.DomComponents; -var defaultType = domc.getType('default'); // let defaultModel = defaultType.model; - -var defaultView = defaultType.view; // model: defaultModel.extend({ -// defaults: Object.assign({}, defaultModel.prototype.defaults, { -// traits: [{ -// name: 'title', -// label: 'Título', -// placeholder: 'Insira um texto aqui' -// }] -// }), -// }), -// }); -// editor.on('storage:load', function (e) { -// console.log('LOAD ', e); -// }) -// editor.on('storage:store', function (e) { -// console.log('STORE ', e); -// }) -// let newButton = editor.Panels.addButton('myPanelID', { -// id: 'create-comp', -// className: 'fa fa-pencil-square-o', -// command: 'create-comp', // <-- the ID of the command -// attributes: {title: 'Create element'}, -// stopDefaultCommand: 1, -// }); - -editor.on('styleManager:change:text-shadow', function (view) { - var model = view.model; - var targetValue = view.getTargetValue({ - ignoreDefault: 1 - }); - var computedValue = view.getComputedValue(); - var defaultValue = view.model.getDefaultValue(); //console.log('Style of ', model.get('property'), 'Target: ', targetValue, 'Computed:', computedValue, 'Default:', defaultValue); -}); -editor.Panels.removeButton('options', 'export-template'); -editor.render(); + return Gramateria; +}(); + +new Gramateria().init(); /***/ }), -/***/ "./gramateria/develop/gramateria.scss": -/*!********************************************!*\ - !*** ./gramateria/develop/gramateria.scss ***! - \********************************************/ +/***/ "./gramateria/develop/sass/gramateria.scss": +/*!*************************************************!*\ + !*** ./gramateria/develop/sass/gramateria.scss ***! + \*************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { -"use strict"; __webpack_require__.r(__webpack_exports__); // extracted by mini-css-extract-plugin @@ -1412,6 +1112,18 @@ __webpack_require__.r(__webpack_exports__); /******/ }; /******/ })(); /******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) @@ -1485,8 +1197,8 @@ __webpack_require__.r(__webpack_exports__); /******/ // startup /******/ // Load entry module and return exports /******/ // This entry module depends on other loaded chunks and execution need to be delayed -/******/ __webpack_require__.O(undefined, ["gramateria/dist/gram.min"], () => (__webpack_require__("./gramateria/develop/gramateria.js"))) -/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["gramateria/dist/gram.min"], () => (__webpack_require__("./gramateria/develop/gramateria.scss"))) +/******/ __webpack_require__.O(undefined, ["gramateria/dist/gram.min"], () => (__webpack_require__("./gramateria/develop/js/gramateria.js"))) +/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["gramateria/dist/gram.min"], () => (__webpack_require__("./gramateria/develop/sass/gramateria.scss"))) /******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); /******/ /******/ })() diff --git a/gramateria/dist/svg/flex-al-center.svg b/gramateria/dist/svg/flex-al-center.svg new file mode 100755 index 0000000..a11e42b --- /dev/null +++ b/gramateria/dist/svg/flex-al-center.svg @@ -0,0 +1,9 @@ + + + + flex-al-center + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-al-end.svg b/gramateria/dist/svg/flex-al-end.svg new file mode 100755 index 0000000..4273e9c --- /dev/null +++ b/gramateria/dist/svg/flex-al-end.svg @@ -0,0 +1,9 @@ + + + + flex-al-end + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-al-start.svg b/gramateria/dist/svg/flex-al-start.svg new file mode 100755 index 0000000..234494a --- /dev/null +++ b/gramateria/dist/svg/flex-al-start.svg @@ -0,0 +1,9 @@ + + + + flex-al-start + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-al-str.svg b/gramateria/dist/svg/flex-al-str.svg new file mode 100755 index 0000000..f19dc50 --- /dev/null +++ b/gramateria/dist/svg/flex-al-str.svg @@ -0,0 +1,9 @@ + + + + flex-al-str + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-dir-col-rev.svg b/gramateria/dist/svg/flex-dir-col-rev.svg new file mode 100755 index 0000000..f3c4a95 --- /dev/null +++ b/gramateria/dist/svg/flex-dir-col-rev.svg @@ -0,0 +1,9 @@ + + + + flex-dir-col-rev + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-dir-col.svg b/gramateria/dist/svg/flex-dir-col.svg new file mode 100755 index 0000000..de509aa --- /dev/null +++ b/gramateria/dist/svg/flex-dir-col.svg @@ -0,0 +1,9 @@ + + + + flex-dir-col + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-dir-row-rev.svg b/gramateria/dist/svg/flex-dir-row-rev.svg new file mode 100755 index 0000000..0479bd7 --- /dev/null +++ b/gramateria/dist/svg/flex-dir-row-rev.svg @@ -0,0 +1,9 @@ + + + + flex-dir-row-rev + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-dir-row.svg b/gramateria/dist/svg/flex-dir-row.svg new file mode 100755 index 0000000..5388fec --- /dev/null +++ b/gramateria/dist/svg/flex-dir-row.svg @@ -0,0 +1,9 @@ + + + + flex-dir-row + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-just-end.svg b/gramateria/dist/svg/flex-just-end.svg new file mode 100755 index 0000000..8495a10 --- /dev/null +++ b/gramateria/dist/svg/flex-just-end.svg @@ -0,0 +1,9 @@ + + + + flex-just-end + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-just-sp-ar.svg b/gramateria/dist/svg/flex-just-sp-ar.svg new file mode 100755 index 0000000..e584498 --- /dev/null +++ b/gramateria/dist/svg/flex-just-sp-ar.svg @@ -0,0 +1,9 @@ + + + + flex-just-sp-ar + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-just-sp-bet.svg b/gramateria/dist/svg/flex-just-sp-bet.svg new file mode 100755 index 0000000..eaee3ea --- /dev/null +++ b/gramateria/dist/svg/flex-just-sp-bet.svg @@ -0,0 +1,9 @@ + + + + flex-just-sp-bet + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-just-sp-cent.svg b/gramateria/dist/svg/flex-just-sp-cent.svg new file mode 100755 index 0000000..d8abc50 --- /dev/null +++ b/gramateria/dist/svg/flex-just-sp-cent.svg @@ -0,0 +1,9 @@ + + + + flex-just-sp-cent + Created with Sketch. + + + + \ No newline at end of file diff --git a/gramateria/dist/svg/flex-just-start.svg b/gramateria/dist/svg/flex-just-start.svg new file mode 100755 index 0000000..d797201 --- /dev/null +++ b/gramateria/dist/svg/flex-just-start.svg @@ -0,0 +1,9 @@ + + + + flex-just-start + Created with Sketch. + + + + \ No newline at end of file diff --git a/grapesjs/plugins/gramateria.js b/grapesjs/plugins/gramateria.js deleted file mode 100755 index 681ea20..0000000 --- a/grapesjs/plugins/gramateria.js +++ /dev/null @@ -1,1553 +0,0 @@ - var blkStyle = '.blk-row::after{ content: ""; clear: both; display: block;} .blk-row{padding: 10px;}'; - - var editor = grapesjs.init({ - allowScripts: 1, - showOffsets: 1, - autorender: 0, - noticeOnUnload: 0, - container: '#gjs', - height: '100%', - fromElement: true, - clearOnRender: 0, - plugins: [ - 'gjs-plugin-export' - ], - pluginsOpts: { - 'gjs-plugin-export': { - btnLabel: 'Download Zip', - preHtml: ` - - - - - - - - - - `, - postHtml: ` - - ` - } - }, - canvas: { - styles: ['https://fonts.googleapis.com/css?family=Roboto', 'https://fonts.googleapis.com/icon?family=Material+Icons', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css','https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css'], - scripts: ['https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js', 'https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.1/js/materialize.min.js'] - }, - commands: { - defaults: [ -// { -// id: 'open-github', -// run: function (editor, sender) { -// sender.set('active', false); -// window.open('https://github.com/ronaldaug/gramateria', '_blank'); -// } -// }, - { - id: 'undo', - run: function (editor, sender) { - sender.set('active', false); - editor.UndoManager.undo(true); - } - }, { - id: 'redo', - run: function (editor, sender) { - sender.set('active', false); - editor.UndoManager.redo(true); - } - }, { - id: 'clean-all', - run: function (editor, sender) { - sender.set('active', false); - if (confirm('Are you sure to clean the canvas?')) { - var comps = editor.DomComponents.clear(); - } - } - }], - }, - - - assetManager: { - upload: 'https://test.page', - params: { - _token: 'pCYrSwjuiV0t5NVtZpQDY41Gn5lNUwo3it1FIkAj', - }, - assets: [ - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background_ckgyqe.jpg', - date: '2015-02-01', - height: 808, - width: 1440 - }, - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419441/background2_gjvaxs.jpg', - date: '2015-02-01', - height: 800, - width: 1600 - }, - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419443/background3_d0ghix.jpg', - date: '2015-02-01', - height: 743, - width: 1440 - }, - { - type: 'image', - src: 'https://res.cloudinary.com/ronaldaug/image/upload/v1515419446/background4_pzh5ou.jpg', - date: '2015-02-01', - height: 808, - width: 1440 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/0174DF/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/5FB404/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/BF00FF/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/B40431/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/088A68/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/DF7401/ffffff/', - height: 350, - width: 250 - }, - { - type: 'image', - src: 'http://via.placeholder.com/250x350/00BFFF/ffffff/', - height: 350, - width: 250 - } - ] - }, - - blockManager: { - blocks: [ - { - id: 'std', - label: 'Starter', - category: 'Section', - content: '' + - ``, - attributes: { - class: 'fa fa-wpforms' - } - }, - { - id: 'parallax', - label: 'Parallax', - category: 'Section', - content: `
        -
        -
        -
        -
        -

        Parallax

        -

        Parallax is an effect where the background content or image in this case, is moved at a different speed than the foreground content while scrolling.

        -
        -
        -
        -
        -
        - `, - attributes: { - class: 'fa fa-list-alt' - } - } - , - { - id: 'nav', - label: 'Navbar 1', - category: 'Section', - content: '' + - ``, - attributes: { - class: 'fa fa-window-maximize' - } - }, - { - id: 'dropdownNav', - label: 'Navbar 2', - category: 'Section', - content: ` - - - -`, - attributes: { - class: 'fa fa-toggle-down' - } - } - , - { - id: 'footer', - label: 'Footer', - category: 'Section', - content: '
        ' + - '
        ' + - '
        ' + - '
        ' + - '
        Company Bio
        ' + - '

        We are a team of college students working on this project like its our full time job.Any amount would help support and continue development on this project and is greatly appreciated.

        ' + - '
        ' + - '
        ' + - '
        Settings
        ' + - '' + - '
        ' + - '
        ' + - '
        Connect
        ' + - '' + - '
        ' + - '
        ' + - '
        ' + - '' + - '
        ', - attributes: { - class: 'fa fa-desktop' - } - }, - { - id: 'b1', - label: '1 Block', - category: 'Grid', - attributes: { - class: 'fa fa-reorder' - }, - content: `
        -
        -
        ` - }, { - id: 'b2', - label: '2 Blocks', - category: 'Grid', - attributes: { - class: 'fa fa-th-large' - }, - content: `
        -
        -
        -
        ` - }, { - id: 'b3', - label: '3 Blocks', - category: 'Grid', - attributes: { - class: 'fa fa-th' - }, - content: `
        -
        -
        -
        -
        ` - }, { - id: 'b4', - label: '4/8 Block', - category: 'Grid', - attributes: { - class: 'fa fa-th-list' - }, - content: `
        -
        -
        -
        `, - }, - - { - id: '3ba', - label: 'Badges', - category: 'Section', - content: `
        -
        -
        -
        -

        flash_on

        -
        Speeds up development
        - -

        We did most of the heavy lifting for you to provide a default stylings that incorporate our custom components. Additionally, we refined animations and transitions to provide a smoother experience for developers.

        -
        -
        - -
        -
        -

        group

        -
        User Experience Focused
        - -

        By utilizing elements and principles of Material Design, we were able to create a framework that incorporates components and animations that provide more feedback to users. Additionally, a single underlying responsive system across all platforms allow for a more unified user experience.

        -
        -
        - -
        -
        -

        settings

        -
        Easy to work with
        - -

        We have provided detailed documentation as well as specific code examples to help new users get started. We are also always open to feedback and can answer any questions a user may have about Materialize.

        -
        -
        -
        -
        -
        `, - attributes: { - class: 'fa fa-sitemap' - } - }, - { - id: 'text', - label: 'Text', - attributes: { - class: 'fa fa-text-width' - }, - category: 'Basic', - content: { - type: 'text', - content: 'Insert your text here', - activeOnRender: 1 - }, - }, { - id: 'image', - label: 'Image', - category: 'Basic', - attributes: { - class: 'fa fa-file-image-o' - }, - content: { - type: 'image', - activeOnRender: 1 - }, - }, { - id: 'list', - label: 'List', - category: 'Basic', - attributes: { - class: 'fa fa-bars' - }, - content: `
          -
        • List One
        • -
        • List Two
        • -
        • List Three
        • -
        • List Four
        • -
        `, - }, - - { - id: 'list2', - label: 'List Two', - category: 'Basic', - attributes: { - class: 'fa fa-bars' - }, - content: `
          -
        • - - Title -

          First Line
          - Second Line -

          - grade -
        • -
        • - folder - Title -

          First Line
          - Second Line -

          - grade -
        • -
        • - insert_chart - Title -

          First Line
          - Second Line -

          - grade -
        • -
        • - play_arrow - Title -

          First Line
          - Second Line -

          - grade -
        • -
        `, - }, - { - id: 'table', - label: 'Table', - category: 'Basic', - attributes: { - class: 'fa fa-table' - }, - content: ` - - - - - - - - - - - - - - - - - - - - - - - - - -
        NameItem NameItem Price
        AlvinEclair$0.87
        AlanJellybean$3.76
        JonathanLollipop$7.00
        `, - }, - { - id: 'res', - label: 'respon image', - category: 'Media', - content: '', - attributes: { - class: 'fa fa-image' - } - }, - { - id: 'popup', - label: 'popup image', - category: 'Media', - content: ` - - `, - attributes: { - class: 'fa fa-object-group' - } - } - , - { - id: 'dropdown', - label: 'dropdown', - category: 'Button', - content: ` - Drop Me! - `, - attributes: { - class: 'fa fa-list' - } - } - , { - id: 'modal', - label: 'modal', - category: 'Button', - content: ` - Modal - - `, - attributes: { - class: 'fa fa-object-ungroup' - } - }, - { - id: 'slider', - label: 'slider', - category: 'Section', - content: `
        -
          -
        • - -
          -

          This is our big Tagline!

          -
          Heres our small slogan.
          -
          -
        • -
        • - -
          -

          Left Aligned Caption

          -
          Heres our small slogan.
          -
          -
        • -
        • - -
          -

          Right Aligned Caption

          -
          Heres our small slogan.
          -
          -
        • -
        • - -
          -

          This is our big Tagline!

          -
          Heres our small slogan.
          -
          -
        • -
        -
        - `, - attributes: { - class: 'fa fa-credit-card' - } - }, - - { - id: 'btn', - label: 'button', - category: 'Button', - content: 'button', - attributes: { - class: 'fa fa-square-o' - } - }, - { - id: 'target', - label: 'tap target', - category: 'Button', - content: ` -
        -
        -
        Title
        -

        Mauris blandit aliquet elit, eget tincidunt nibh pulvinar a. Proin eget tortor risus. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Nulla porttitor accumsan tincidunt.

        -
        -
        `, - attributes: { - class: 'fa fa-bullseye' - } - }, - { - id: 'fab', - label: 'FAB', - category: 'Button', - content: ``, - attributes: { - class: 'fa fa-bullseye' - } - }, { - id: 'fabtool', - label: 'FAB toolbar', - category: 'Button', - content: ``, - attributes: { - class: 'fa fa-ellipsis-h' - } - }, - { - id: 'cbtn', - label: 'Circle Button', - category: 'Button', - content: 'add', - attributes: { - class: 'fa fa-circle-thin' - } - }, { - id: 'link', - label: 'Link', - category: 'Basic', - attributes: { - class: 'fa fa-link' - }, - content: { - type: 'link', - content: 'Link', - }, - }, { - id: 'formtag', - label: 'Form Tag', - category: 'Form', - attributes: { - class: 'fa fa-file-text' - }, - content: `
        -
        -
        ` - } - , { - id: 'formgroup', - label: 'Form group', - category: 'Form', - attributes: { - class: 'fa fa-list' - }, - content: `
        -
        -
        -
        - - -
        -
        - - -
        -
        -
        -
        - - -
        -
        -
        -
        - - -
        -
        -
        -
        - This is an inline input field: -
        - - -
        -
        -
        -
        -
        ` - }, - { - id: 'iconinput', - label: 'input', - category: 'Form', - attributes: { - class: 'fa fa-minus-square' - }, - content: `
        -
        - account_circle - - -
        -
        - phone - - -
        -
        ` - }, { - id: 'textarea', - label: 'Textarea', - category: 'Form', - attributes: { - class: 'fa fa-sticky-note-o' - }, - content: `
        -
        - - -
        -
        `, - }, { - id: 'select', - label: 'Select', - category: 'Form', - attributes: { - class: 'fa fa-caret-square-o-down' - }, - content: `
        - - -
        ` - }, - { - id: 'radio', - label: 'Radio', - category: 'Form', - attributes: { - class: 'fa fa-dot-circle-o' - }, - content: `
        -
        -

        - - -

        -

        - - -

        -

        - - -

        -

        - - -

        -
        -
        ` - }, { - id: 'checkbox', - label: 'Checkbox', - category: 'Form', - attributes: { - class: 'fa fa-check-square-o' - }, - content: `
        -
        -

        - - -

        -

        - - -

        -
        -
        ` - }, { - id: 'map', - label: 'Map', - category: 'Extra', - attributes: { - class: 'fa fa-map-o' - }, - content: { - type: 'map', - style: { - height: '350px' - } - }, - } - , - { - id: 'sidenav', - label: 'SideNav', - category: 'Extra', - content: ` - menu - `, - attributes: { - class: 'fa fa-indent' - } - }, - { - id: 'accor', - label: 'Accordian', - category: 'Extra', - attributes: { - class: 'fa fa-reorder' - }, - content: `
          -
        • -
          filter_dramaFirst
          -
          Lorem ipsum dolor sit amet.
          -
        • -
        • -
          placeSecond
          -
          Lorem ipsum dolor sit amet.
          -
        • -
        • -
          whatshotThird
          -
          Lorem ipsum dolor sit amet.
          -
        • -
        -`, - }, - { - id: 'tap', - label: 'Tap', - category: 'Extra', - attributes: { - class: 'fa fa-ellipsis-h' - }, - content: `
        - -
        Test 1
        -
        Test 2
        -
        Test 3
        -
        Test 4
        -
        -`, - }, - { - id: 'card', - label: 'Card', - category: 'Section', - content: `
        -
        -
        -
        - - Card Title -
        -
        -

        I am a very simple card. I am good at containing small bits of information. - I am convenient because I require little markup to use effectively.

        -
        - -
        -
        -
        `, - attributes: { - class: 'fa fa-newspaper-o' - }, - }, - { - id: 'video', - label: 'Video', - category: 'Media', - attributes: { - class: 'fa fa-youtube-play' - }, - content: { - type: 'video', - src: 'img/video2.webm', - style: { - height: '350px', - width: '615px', - } - }, - }, { - id: 'h1p', - label: 'Text section', - category: 'Typography', - content: `
        -

        Insert title here

        -

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

        -
        `, - attributes: { - class: 'fa fa-align-center' - } - }, { - id: 'quo', - label: 'Quote', - category: 'Typography', - content: '
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
        ', - attributes: { - class: 'fa fa-quote-right' - } - } - ], - }, - storageManager: { - id: 'gjs-', - type: 'local', - autosave: 1, - autoload: 1, - stepsBeforeSave: 1, - storeComponents: 1, - storeStyles: 1, - storeHtml: 1, - storeCss: 1, - }, - styleManager: { - sectors: [{ - name: 'General', - open: false, - buildProps: ['float', 'display', 'position', 'top', 'right', 'left', 'bottom'] - }, { - name: 'Dimension', - open: false, - buildProps: ['width', 'height', 'max-width', 'min-height', 'margin', 'padding'], - }, { - name: 'Typography', - open: false, - buildProps: ['font-family', 'font-size', 'font-weight', 'letter-spacing', 'color', 'line-height', 'text-align', 'text-shadow'], - properties: [{ - property: 'text-align', - list: [{ - value: 'left', - className: 'fa fa-align-left' - }, - { - value: 'center', - className: 'fa fa-align-center' - }, - { - value: 'right', - className: 'fa fa-align-right' - }, - { - value: 'justify', - className: 'fa fa-align-justify' - } - ], - }] - }, { - name: 'Decorations', - open: false, - buildProps: ['border-radius-c', 'background-color', 'border-radius', 'border', 'box-shadow', 'background'], - }, { - name: 'Extra', - open: false, - buildProps: ['opacity', 'transition', 'perspective', 'transform'], - properties: [{ - type: 'slider', - property: 'opacity', - defaults: 1, - step: 0.01, - max: 1, - min: 0, - }] - }, { - name: 'Flex', - open: false, - properties: [{ - name: 'Flex Container', - property: 'display', - type: 'select', - defaults: 'block', - list: [{ - value: 'block', - name: 'Disable', - }, { - value: 'flex', - name: 'Enable', - }], - }, { - name: 'Flex Parent', - property: 'label-parent-flex', - }, { - name: 'Direction', - property: 'flex-direction', - type: 'radio', - defaults: 'row', - list: [{ - value: 'row', - name: 'Row', - className: 'icons-flex icon-dir-row', - title: 'Row', - }, { - value: 'row-reverse', - name: 'Row reverse', - className: 'icons-flex icon-dir-row-rev', - title: 'Row reverse', - }, { - value: 'column', - name: 'Column', - title: 'Column', - className: 'icons-flex icon-dir-col', - }, { - value: 'column-reverse', - name: 'Column reverse', - title: 'Column reverse', - className: 'icons-flex icon-dir-col-rev', - }], - }, { - name: 'Wrap', - property: 'flex-wrap', - type: 'radio', - defaults: 'nowrap', - list: [{ - value: 'nowrap', - title: 'Single line', - }, { - value: 'wrap', - title: 'Multiple lines', - }, { - value: 'wrap-reverse', - title: 'Multiple lines reverse', - }], - }, { - name: 'Justify', - property: 'justify-content', - type: 'radio', - defaults: 'flex-start', - list: [{ - value: 'flex-start', - className: 'icons-flex icon-just-start', - title: 'Start', - }, { - value: 'flex-end', - title: 'End', - className: 'icons-flex icon-just-end', - }, { - value: 'space-between', - title: 'Space between', - className: 'icons-flex icon-just-sp-bet', - }, { - value: 'space-around', - title: 'Space around', - className: 'icons-flex icon-just-sp-ar', - }, { - value: 'center', - title: 'Center', - className: 'icons-flex icon-just-sp-cent', - }], - }, { - name: 'Align', - property: 'align-items', - type: 'radio', - defaults: 'center', - list: [{ - value: 'flex-start', - title: 'Start', - className: 'icons-flex icon-al-start', - }, { - value: 'flex-end', - title: 'End', - className: 'icons-flex icon-al-end', - }, { - value: 'stretch', - title: 'Stretch', - className: 'icons-flex icon-al-str', - }, { - value: 'center', - title: 'Center', - className: 'icons-flex icon-al-center', - }], - }, { - name: 'Flex Children', - property: 'label-parent-flex', - }, { - name: 'Order', - property: 'order', - type: 'integer', - defaults: 0, - min: 0 - }, { - name: 'Flex', - property: 'flex', - type: 'composite', - properties: [{ - name: 'Grow', - property: 'flex-grow', - type: 'integer', - defaults: 0, - min: 0 - }, { - name: 'Shrink', - property: 'flex-shrink', - type: 'integer', - defaults: 0, - min: 0 - }, { - name: 'Basis', - property: 'flex-basis', - type: 'integer', - units: ['px', '%', ''], - unit: '', - defaults: 'auto', - }], - }, { - name: 'Align', - property: 'align-self', - type: 'radio', - defaults: 'auto', - list: [{ - value: 'auto', - name: 'Auto', - }, { - value: 'flex-start', - title: 'Start', - className: 'icons-flex icon-al-start', - }, { - value: 'flex-end', - title: 'End', - className: 'icons-flex icon-al-end', - }, { - value: 'stretch', - title: 'Stretch', - className: 'icons-flex icon-al-str', - }, { - value: 'center', - title: 'Center', - className: 'icons-flex icon-al-center', - }], - }] - } - - ], - - }, - }); - - editor.setStyle(`.row{display:table;padding:10px;width:100%}#myForm .col:empty,.col:empty{display:table-cell;height:75px}#banner-gradient{background:#7abcff;background:-moz-linear-gradient(45deg,#7abcff 0,#60abf8 44%,#4096ee 100%);background:-webkit-linear-gradient(45deg,#7abcff 0,#60abf8 44%,#4096ee 100%);background:linear-gradient(45deg,#7abcff 0,#60abf8 44%,#4096ee 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#7abcff', endColorstr='#4096ee', GradientType=1)}.bg-none{background:0 0}#myForm .col:empty{position:relative}#myForm .col:empty:after{content:'Add form elements here';color:#888;position:absolute;left:10px;top:10px;display:block;width:400px}nav .brand-logo,nav ul a{color:#444}p{line-height:2rem}.button-collapse{color:#26a69a}.parallax-container{min-height:380px;line-height:0;height:auto;color:rgba(255,255,255,.9)}.parallax-container .section{width:100%}footer.gram-footer ul.collection>li.collection-header,footer.gram-footer ul.collection>li.collection-item{background:0 0;border:0}footer.gram-footer ul.collection{border:0}.input-field [type=checkbox]+label,.input-field [type=radio]:checked+label,.input-field [type=radio]:not(:checked)+label{pointer-events:auto}input:not([type]):focus:not([readonly]),input[type=date]:not(.browser-default):focus:not([readonly]),input[type=datetime-local]:not(.browser-default):focus:not([readonly]),input[type=datetime]:not(.browser-default):focus:not([readonly]),input[type=email]:not(.browser-default):focus:not([readonly]),input[type=number]:not(.browser-default):focus:not([readonly]),input[type=password]:not(.browser-default):focus:not([readonly]),input[type=search]:not(.browser-default):focus:not([readonly]),input[type=tel]:not(.browser-default):focus:not([readonly]),input[type=text]:not(.browser-default):focus:not([readonly]),input[type=time]:not(.browser-default):focus:not([readonly]),input[type=url]:not(.browser-default):focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid orange;-webkit-box-shadow:0 1px 0 0 orange;-moz-box-shadow:0 1px 0 0 orange;box-shadow:0 1px 0 0 orange}#contact input#your-email,#contact textarea#your-message{color:#fff}@media only screen and (max-width:992px){.parallax-container .section{position:absolute;top:40%}#index-banner .section{top:10%}}@media only screen and (max-width:600px){#index-banner .section{top:0}}.icon-block{padding:0 15px}.icon-block .material-icons{font-size:inherit}footer.page-footer{margin:0}.parallax{position:static}`); - - - var pnm = editor.Panels; - pnm.addButton('options', [{ - id: 'undo', - className: 'fa fa-undo icon-undo', - command: function (editor, sender) { - sender.set('active', 0); - editor.UndoManager.undo(1); - }, - attributes: { - title: 'Undo (CTRL/CMD + Z)' - } - }, - { - id: 'redo', - className: 'fa fa-repeat icon-redo', - command: function (editor, sender) { - sender.set('active', 0); - editor.UndoManager.redo(1); - }, - attributes: { - title: 'Redo (CTRL/CMD + SHIFT + Z)' - } - }, { - id: 'clear-local', - className: 'fa fa-close', - command: function () { - if (confirm('Reset to original?')) { - localStorage.clear(); - location.reload(); - } - }, - attributes: { - title: 'Reset' - } - }, - { - id: 'import', - className: 'fa fa-edit', - command: 'html-edit', - attributes: { - title: 'Import' - } - }, { - id: 'clean-all', - className: 'fa fa-trash icon-blank', - command: function (editor, sender) { - if (sender) sender.set('active', false); - if (confirm('Are you sure to clean the canvas?')) { - editor.DomComponents.clear(); - setTimeout(function () { - localStorage.clear(); - }, 0); - } - }, - attributes: { - title: 'Empty canvas' - } - }, - { - id: 'open-github', - className: 'fa fa-link', - command: function (editor, sender) { - sender.set('active', 0); - window.open('https://github.com/ronaldaug/gramateria', '_blank'); - }, - attributes: { - title: 'github' - } - } - ]); - - - // --------------------- - // Import/Edit - // --------------------- - var gra = { - // append in container - _a: function (appendName) { - return container.appendChild(appendName); - }, - // create elements - _c: function (tagName) { - return document.createElement(tagName); - }, - // check extensions - _e: function (fname) { - var ext = /^.+\.([^.]+)$/.exec(fname); - return ext == null ? "" : ext[1]; - }, - // select id - _d: function (name, tag) { - switch (tag) { - case 'class': - return document.getElementsByClassName(name); - break; - case 'id': - return document.getElementById(name); - break; - default: - return document.getElementById(name); - } - } - } - - var pmodel = gra._d("modelPopup", "class"); - var pfx = editor.getConfig().stylePrefix; - var modal = editor.Modal; - var cmdm = editor.Commands; - var codeViewer = editor.CodeManager.getViewer('CodeMirror').clone(); - var pnm = editor.Panels; - var container = gra._c("div"); - var fileform = gra._c("div"); - var btnEdit = gra._c("button"); - var exportTxt = gra._c("button"); - var loadTxt = gra._c("button"); - var fileLoader = gra._c("form"); - var anchor = gra._c("a"); - - codeViewer.set({ - codeName: 'htmlmixed', - readOnly: 0, - theme: 'hopscotch', - autoBeautify: true, - autoCloseTags: true, - autoCloseBrackets: true, - lineWrapping: true, - styleActiveLine: true, - smartIndent: true, - indentWithTabs: true - }); - - btnEdit.innerHTML = ' Import'; - exportTxt.innerHTML = ' Save as file'; - loadTxt.innerHTML = ' Load file'; - fileLoader.innerHTML = '




        '; - fileform.innerHTML = ''; - - fileform.className = 'modelPopup'; - fileLoader.className = pfx + 'import-file'; - btnEdit.className = pfx + 'btn-prim ' + pfx + 'btn-import'; - exportTxt.className = pfx + 'btn-prim ' + pfx + 'btn-export'; - loadTxt.className = pfx + 'btn-prim ' + pfx + 'btn-load'; - - - // import button inside import editor - btnEdit.onclick = function () { - var code = codeViewer.editor.getValue(); - editor.DomComponents.getWrapper().set('content', ''); - editor.setComponents(code.trim()); - modal.close(); - }; - - // onclick load file button inside import editor - loadTxt.onclick = function (e) { - e.preventDefault(); - var fileToLoad = document.getElementById("fileToLoad").files[0]; - var fType = gra._e(fileToLoad['name']); - if (fileToLoad === undefined) { - alert('Please select a file'); - return; - } - if (fType === 'gram' || fType === 'txt') { - var reader = new FileReader(); - reader.onload = function (e) { - var fileData = e.target.result; - var viewer = codeViewer.editor; - modal.setTitle('Import/Edit'); - if (!viewer) { - var txtarea = document.createElement('textarea'); - gra._a(txtarea); - gra._a(btnEdit); - gra._a(fileform); - gra._a(fileLoader); - gra._a(loadTxt); - gra._a(exportTxt); - codeViewer.init(txtarea); - viewer = codeViewer.editor; - } - modal.setContent(''); - modal.setContent(container); - codeViewer.setContent(fileData); - } - reader.readAsText(fileToLoad); - } else { - alert('You can only import .gram or .txt extension'); - } - } - - - // onclick save as button inside import editor - exportTxt.onclick = function () { - pmodel[0].className += " " + 'showup'; - } - - // export file as .gram extension - function exportgramfile() { - var fileName = gra._d("file_name", "id").value; - if (fileName !== undefined && fileName !== '') { - var InnerHtml = editor.getHtml(); - var Css = editor.getCss(); - var text = InnerHtml + "'; - var blob = new Blob([text], { - type: "text/plain" - }); - anchor.download = fileName + ".gram"; - anchor.href = window.URL.createObjectURL(blob); - anchor.target = "_blank"; - anchor.style.display = "none"; // just to be safe! - document.body.appendChild(anchor); - anchor.click(); - document.body.removeChild(anchor); - pmodel[0].className = "modelPopup"; - } else { - alert('Please type a file name'); - return; - } - } - - // import nav button click event - cmdm.add('html-edit', { - run: function importArea(editor, sender) { - sender && sender.set('active', 0); - var viewer = codeViewer.editor; - modal.setTitle('Import/Edit'); - if (!viewer) { - var txtarea = gra._c('textarea'); - gra._a(txtarea); - gra._a(btnEdit); - gra._a(fileform); - gra._a(fileLoader); - gra._a(loadTxt); - gra._a(exportTxt); - codeViewer.init(txtarea); - viewer = codeViewer.editor; - } - var InnerHtml = editor.getHtml(); - var Css = editor.getCss(); - modal.setContent(''); - modal.setContent(container); - codeViewer.setContent(InnerHtml + "'); - modal.open(); - viewer.refresh(); - } - }); - - editor.BlockManager.getCategories().each(ctg => ctg.set('open', false)) - var bm = editor.BlockManager; - // bm.add('link-block', { - // label: 'Link Block', - // attributes: {class:'fa fa-link'}, - // category: 'Basic', - // content: { - // type:'link', - // editable: false, - // droppable: true, - // style:{ - // display: 'inline-block', - // padding: '5px', - // 'min-height': '50px', - // 'min-width': '50px' - // } - // }, - // }); - - var domc = editor.DomComponents; - var defaultType = domc.getType('default'); - var defaultModel = defaultType.model; - var defaultView = defaultType.view; - - // model: defaultModel.extend({ - // defaults: Object.assign({}, defaultModel.prototype.defaults, { - // traits: [{ - // name: 'title', - // label: 'Título', - // placeholder: 'Insira um texto aqui' - // }] - // }), - // }), - // }); - - - editor.on('storage:load', function (e) { - console.log('LOAD ', e); - }) - editor.on('storage:store', function (e) { - console.log('STORE ', e); - }) - - - - editor.on('styleManager:change:text-shadow', function (view) { - var model = view.model; - let targetValue = view.getTargetValue({ - ignoreDefault: 1 - }); - let computedValue = view.getComputedValue(); - let defaultValue = view.model.getDefaultValue(); - //console.log('Style of ', model.get('property'), 'Target: ', targetValue, 'Computed:', computedValue, 'Default:', defaultValue); - }); - - editor.render(); diff --git a/grapesjs/plugins/grapesjs-plugin-export.min.js b/grapesjs/plugins/grapesjs-plugin-export.min.js deleted file mode 100755 index e3526d1..0000000 --- a/grapesjs/plugins/grapesjs-plugin-export.min.js +++ /dev/null @@ -1,6158 +0,0 @@ -! function (e, t) { - "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports["grapesjs-plugin-export"] = t() : e["grapesjs-plugin-export"] = t() -}(this, function () { - return function (e) { - function t(n) { - if (r[n]) return r[n].exports; - var i = r[n] = { - exports: {}, - id: n, - loaded: !1 - }; - return e[n].call(i.exports, i, i.exports, t), i.loaded = !0, i.exports - } - var r = {}; - return t.m = e, t.c = r, t.p = "", t(0) - }([function (e, t, r) { - "use strict"; - grapesjs.plugins.add("gjs-plugin-export", function (e, t) { - var n = t || {}, - i = r(1), - o = r(91), - a = e.getConfig(), - s = a.stylePrefix, - u = document.createElement("BUTTON"), - h = "gjs-export-zip", - f = { - addExportBtn: 1, - btnLabel: "Export to ZIP", - preHtml: '', - postHtml: "", - preCss: "", - postCss: "" - }; - for (var c in f) c in n || (n[c] = f[c]); - u.innerHTML = n.btnLabel, u.className = s + "btn-prim" + " fa fa-cloud-download right", e.Commands.add(h, { - run: function () { - var t = new i, - r = t.folder("css"), - a = "grapesjs_template_" + Date.now() + ".zip"; - t.file("index.html", n.preHtml + e.getHtml() + n.postHtml), r.file("style.css", n.preCss + e.getCss() + n.postCss), t.generateAsync({ - type: "blob" - }).then(function (e) { - o.saveAs(e, a) - }) - } - }), n.addExportBtn && e.on("run:export-template", function () { - e.Modal.getContentEl().appendChild(u), u.onclick = function () { - e.runCommand(h) - } - }) - }) - }, function (e, t, r) { - "use strict"; - - function n() { - if (!(this instanceof n)) return new n; - if (arguments.length) throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide."); - this.files = {}, this.comment = null, this.root = "", this.clone = function () { - var e = new n; - for (var t in this) "function" != typeof this[t] && (e[t] = this[t]); - return e - } - } - n.prototype = r(2), n.prototype.loadAsync = r(82), n.support = r(5), n.defaults = r(53), n.loadAsync = function (e, t) { - return (new n).loadAsync(e, t) - }, n.external = r(45), e.exports = n - }, function (e, t, r) { - "use strict"; - - function n(e) { - return "[object RegExp]" === Object.prototype.toString.call(e) - } - var i = r(3), - o = r(4), - a = r(50), - s = r(51), - u = r(53), - h = r(54), - f = r(59), - c = r(60), - l = r(42), - d = r(81), - p = function (e, t, r) { - var n, i = o.getTypeOf(t); - r = o.extend(r || {}, u), r.date = r.date || new Date, null !== r.compression && (r.compression = r.compression.toUpperCase()), "string" == typeof r.unixPermissions && (r.unixPermissions = parseInt(r.unixPermissions, 8)), r.unixPermissions && 16384 & r.unixPermissions && (r.dir = !0), r.dosPermissions && 16 & r.dosPermissions && (r.dir = !0), r.dir && (e = m(e)), r.createFolders && (n = g(e)) && _.call(this, n, !0); - var s = "string" === i && r.binary === !1 && r.base64 === !1; - r.binary = !s; - var c = t instanceof h && 0 === t.uncompressedSize; - (c || r.dir || !t || 0 === t.length) && (r.base64 = !1, r.binary = !0, t = "", r.compression = "STORE", i = "string"); - var p = null; - p = t instanceof h || t instanceof a ? t : l.isNode && l.isStream(t) ? new d(e, t) : o.prepareContent(e, t, r.binary, r.optimizedBinaryString, r.base64); - var v = new f(e, p, r); - this.files[e] = v - }, - g = function (e) { - "/" === e.slice(-1) && (e = e.substring(0, e.length - 1)); - var t = e.lastIndexOf("/"); - return t > 0 ? e.substring(0, t) : "" - }, - m = function (e) { - return "/" !== e.slice(-1) && (e += "/"), e - }, - _ = function (e, t) { - return t = "undefined" != typeof t ? t : u.createFolders, e = m(e), this.files[e] || p.call(this, e, null, { - dir: !0, - createFolders: t - }), this.files[e] - }, - v = { - load: function () { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.") - }, - forEach: function (e) { - var t, r, n; - for (t in this.files) this.files.hasOwnProperty(t) && (n = this.files[t], r = t.slice(this.root.length, t.length), r && t.slice(0, this.root.length) === this.root && e(r, n)) - }, - filter: function (e) { - var t = []; - return this.forEach(function (r, n) { - e(r, n) && t.push(n) - }), t - }, - file: function (e, t, r) { - if (1 === arguments.length) { - if (n(e)) { - var i = e; - return this.filter(function (e, t) { - return !t.dir && i.test(e) - }) - } - var o = this.files[this.root + e]; - return o && !o.dir ? o : null - } - return e = this.root + e, p.call(this, e, t, r), this - }, - folder: function (e) { - if (!e) return this; - if (n(e)) return this.filter(function (t, r) { - return r.dir && e.test(t) - }); - var t = this.root + e, - r = _.call(this, t), - i = this.clone(); - return i.root = r.name, i - }, - remove: function (e) { - e = this.root + e; - var t = this.files[e]; - if (t || ("/" !== e.slice(-1) && (e += "/"), t = this.files[e]), t && !t.dir) delete this.files[e]; - else - for (var r = this.filter(function (t, r) { - return r.name.slice(0, e.length) === e - }), n = 0; n < r.length; n++) delete this.files[r[n].name]; - return this - }, - generate: function (e) { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.") - }, - generateInternalStream: function (e) { - var t, r = {}; - try { - if (r = o.extend(e || {}, { - streamFiles: !1, - compression: "STORE", - compressionOptions: null, - type: "", - platform: "DOS", - comment: null, - mimeType: "application/zip", - encodeFileName: i.utf8encode - }), r.type = r.type.toLowerCase(), r.compression = r.compression.toUpperCase(), "binarystring" === r.type && (r.type = "string"), !r.type) throw new Error("No output type specified."); - o.checkSupport(r.type), "darwin" !== e.platform && "freebsd" !== e.platform && "linux" !== e.platform && "sunos" !== e.platform || (e.platform = "UNIX"), "win32" === e.platform && (e.platform = "DOS"); - var n = r.comment || this.comment || ""; - t = c.generateWorker(this, r, n) - } catch (u) { - t = new a("error"), t.error(u) - } - return new s(t, r.type || "string", r.mimeType) - }, - generateAsync: function (e, t) { - return this.generateInternalStream(e).accumulate(t) - }, - generateNodeStream: function (e, t) { - return e = e || {}, e.type || (e.type = "nodebuffer"), this.generateInternalStream(e).toNodejsStream(t) - } - }; - e.exports = v - }, function (e, t, r) { - "use strict"; - - function n() { - u.call(this, "utf-8 decode"), this.leftOver = null - } - - function i() { - u.call(this, "utf-8 encode") - } - for (var o = r(4), a = r(5), s = r(42), u = r(50), h = new Array(256), f = 0; f < 256; f++) h[f] = f >= 252 ? 6 : f >= 248 ? 5 : f >= 240 ? 4 : f >= 224 ? 3 : f >= 192 ? 2 : 1; - h[254] = h[254] = 1; - var c = function (e) { - var t, r, n, i, o, s = e.length, - u = 0; - for (i = 0; i < s; i++) r = e.charCodeAt(i), 55296 === (64512 & r) && i + 1 < s && (n = e.charCodeAt(i + 1), 56320 === (64512 & n) && (r = 65536 + (r - 55296 << 10) + (n - 56320), i++)), u += r < 128 ? 1 : r < 2048 ? 2 : r < 65536 ? 3 : 4; - for (t = a.uint8array ? new Uint8Array(u) : new Array(u), o = 0, i = 0; o < u; i++) r = e.charCodeAt(i), 55296 === (64512 & r) && i + 1 < s && (n = e.charCodeAt(i + 1), 56320 === (64512 & n) && (r = 65536 + (r - 55296 << 10) + (n - 56320), i++)), r < 128 ? t[o++] = r : r < 2048 ? (t[o++] = 192 | r >>> 6, t[o++] = 128 | 63 & r) : r < 65536 ? (t[o++] = 224 | r >>> 12, t[o++] = 128 | r >>> 6 & 63, t[o++] = 128 | 63 & r) : (t[o++] = 240 | r >>> 18, t[o++] = 128 | r >>> 12 & 63, t[o++] = 128 | r >>> 6 & 63, t[o++] = 128 | 63 & r); - return t - }, - l = function (e, t) { - var r; - for (t = t || e.length, t > e.length && (t = e.length), r = t - 1; r >= 0 && 128 === (192 & e[r]);) r--; - return r < 0 ? t : 0 === r ? t : r + h[e[r]] > t ? r : t - }, - d = function (e) { - var t, r, n, i, a = e.length, - s = new Array(2 * a); - for (r = 0, t = 0; t < a;) - if (n = e[t++], n < 128) s[r++] = n; - else if (i = h[n], i > 4) s[r++] = 65533, t += i - 1; - else { - for (n &= 2 === i ? 31 : 3 === i ? 15 : 7; i > 1 && t < a;) n = n << 6 | 63 & e[t++], i--; - i > 1 ? s[r++] = 65533 : n < 65536 ? s[r++] = n : (n -= 65536, s[r++] = 55296 | n >> 10 & 1023, s[r++] = 56320 | 1023 & n) - } - return s.length !== r && (s.subarray ? s = s.subarray(0, r) : s.length = r), o.applyFromCharCode(s) - }; - t.utf8encode = function (e) { - return a.nodebuffer ? s.newBuffer(e, "utf-8") : c(e) - }, t.utf8decode = function (e) { - return a.nodebuffer ? o.transformTo("nodebuffer", e).toString("utf-8") : (e = o.transformTo(a.uint8array ? "uint8array" : "array", e), d(e)) - }, o.inherits(n, u), n.prototype.processChunk = function (e) { - var r = o.transformTo(a.uint8array ? "uint8array" : "array", e.data); - if (this.leftOver && this.leftOver.length) { - if (a.uint8array) { - var n = r; - r = new Uint8Array(n.length + this.leftOver.length), r.set(this.leftOver, 0), r.set(n, this.leftOver.length) - } else r = this.leftOver.concat(r); - this.leftOver = null - } - var i = l(r), - s = r; - i !== r.length && (a.uint8array ? (s = r.subarray(0, i), this.leftOver = r.subarray(i, r.length)) : (s = r.slice(0, i), this.leftOver = r.slice(i, r.length))), this.push({ - data: t.utf8decode(s), - meta: e.meta - }) - }, n.prototype.flush = function () { - this.leftOver && this.leftOver.length && (this.push({ - data: t.utf8decode(this.leftOver), - meta: {} - }), this.leftOver = null) - }, t.Utf8DecodeWorker = n, o.inherits(i, u), i.prototype.processChunk = function (e) { - this.push({ - data: t.utf8encode(e.data), - meta: e.meta - }) - }, t.Utf8EncodeWorker = i - }, function (e, t, r) { - "use strict"; - - function n(e) { - var t = null; - return t = u.uint8array ? new Uint8Array(e.length) : new Array(e.length), o(e, t) - } - - function i(e) { - return e - } - - function o(e, t) { - for (var r = 0; r < e.length; ++r) t[r] = 255 & e.charCodeAt(r); - return t - } - - function a(e) { - var r = 65536, - n = t.getTypeOf(e), - i = !0; - if ("uint8array" === n ? i = d.applyCanBeUsed.uint8array : "nodebuffer" === n && (i = d.applyCanBeUsed.nodebuffer), i) - for (; r > 1;) try { - return d.stringifyByChunk(e, n, r) - } catch (o) { - r = Math.floor(r / 2) - } - return d.stringifyByChar(e) - } - - function s(e, t) { - for (var r = 0; r < e.length; r++) t[r] = e[r]; - return t - } - var u = r(5), - h = r(41), - f = r(42), - c = r(43), - l = r(45); - t.newBlob = function (e, r) { - t.checkSupport("blob"); - try { - return new Blob([e], { - type: r - }) - } catch (n) { - try { - var i = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder, - o = new i; - return o.append(e), o.getBlob(r) - } catch (n) { - throw new Error("Bug : can't construct the Blob.") - } - } - }; - var d = { - stringifyByChunk: function (e, t, r) { - var n = [], - i = 0, - o = e.length; - if (o <= r) return String.fromCharCode.apply(null, e); - for (; i < o;) "array" === t || "nodebuffer" === t ? n.push(String.fromCharCode.apply(null, e.slice(i, Math.min(i + r, o)))) : n.push(String.fromCharCode.apply(null, e.subarray(i, Math.min(i + r, o)))), i += r; - return n.join("") - }, - stringifyByChar: function (e) { - for (var t = "", r = 0; r < e.length; r++) t += String.fromCharCode(e[r]); - return t - }, - applyCanBeUsed: { - uint8array: function () { - try { - return u.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length - } catch (e) { - return !1 - } - }(), - nodebuffer: function () { - try { - return u.nodebuffer && 1 === String.fromCharCode.apply(null, f.newBuffer(1)).length - } catch (e) { - return !1 - } - }() - } - }; - t.applyFromCharCode = a; - var p = {}; - p.string = { - string: i, - array: function (e) { - return o(e, new Array(e.length)) - }, - arraybuffer: function (e) { - return p.string.uint8array(e).buffer - }, - uint8array: function (e) { - return o(e, new Uint8Array(e.length)) - }, - nodebuffer: function (e) { - return o(e, f.newBuffer(e.length)) - } - }, p.array = { - string: a, - array: i, - arraybuffer: function (e) { - return new Uint8Array(e).buffer - }, - uint8array: function (e) { - return new Uint8Array(e) - }, - nodebuffer: function (e) { - return f.newBuffer(e) - } - }, p.arraybuffer = { - string: function (e) { - return a(new Uint8Array(e)) - }, - array: function (e) { - return s(new Uint8Array(e), new Array(e.byteLength)) - }, - arraybuffer: i, - uint8array: function (e) { - return new Uint8Array(e) - }, - nodebuffer: function (e) { - return f.newBuffer(new Uint8Array(e)) - } - }, p.uint8array = { - string: a, - array: function (e) { - return s(e, new Array(e.length)) - }, - arraybuffer: function (e) { - return e.buffer - }, - uint8array: i, - nodebuffer: function (e) { - return f.newBuffer(e) - } - }, p.nodebuffer = { - string: a, - array: function (e) { - return s(e, new Array(e.length)) - }, - arraybuffer: function (e) { - return p.nodebuffer.uint8array(e).buffer - }, - uint8array: function (e) { - return s(e, new Uint8Array(e.length)) - }, - nodebuffer: i - }, t.transformTo = function (e, r) { - if (r || (r = ""), !e) return r; - t.checkSupport(e); - var n = t.getTypeOf(r), - i = p[n][e](r); - return i - }, t.getTypeOf = function (e) { - return "string" == typeof e ? "string" : "[object Array]" === Object.prototype.toString.call(e) ? "array" : u.nodebuffer && f.isBuffer(e) ? "nodebuffer" : u.uint8array && e instanceof Uint8Array ? "uint8array" : u.arraybuffer && e instanceof ArrayBuffer ? "arraybuffer" : void 0 - }, t.checkSupport = function (e) { - var t = u[e.toLowerCase()]; - if (!t) throw new Error(e + " is not supported by this platform") - }, t.MAX_VALUE_16BITS = 65535, t.MAX_VALUE_32BITS = -1, t.pretty = function (e) { - var t, r, n = ""; - for (r = 0; r < (e || "").length; r++) t = e.charCodeAt(r), n += "\\x" + (t < 16 ? "0" : "") + t.toString(16).toUpperCase(); - return n - }, t.delay = function (e, t, r) { - c(function () { - e.apply(r || null, t || []) - }) - }, t.inherits = function (e, t) { - var r = function () {}; - r.prototype = t.prototype, e.prototype = new r - }, t.extend = function () { - var e, t, r = {}; - for (e = 0; e < arguments.length; e++) - for (t in arguments[e]) arguments[e].hasOwnProperty(t) && "undefined" == typeof r[t] && (r[t] = arguments[e][t]); - return r - }, t.prepareContent = function (e, r, i, o, a) { - var s = null; - return s = u.blob && r instanceof Blob && "undefined" != typeof FileReader ? new l.Promise(function (e, t) { - var n = new FileReader; - n.onload = function (t) { - e(t.target.result) - }, n.onerror = function (e) { - t(e.target.error) - }, n.readAsArrayBuffer(r) - }) : l.Promise.resolve(r), s.then(function (r) { - var s = t.getTypeOf(r); - return s ? ("arraybuffer" === s ? r = t.transformTo("uint8array", r) : "string" === s && (a ? r = h.decode(r) : i && o !== !0 && (r = n(r))), r) : l.Promise.reject(new Error("The data of '" + e + "' is in an unsupported format !")) - }) - } - }, function (e, t, r) { - (function (e) { - "use strict"; - if (t.base64 = !0, t.array = !0, t.string = !0, t.arraybuffer = "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array, t.nodebuffer = "undefined" != typeof e, t.uint8array = "undefined" != typeof Uint8Array, "undefined" == typeof ArrayBuffer) t.blob = !1; - else { - var n = new ArrayBuffer(0); - try { - t.blob = 0 === new Blob([n], { - type: "application/zip" - }).size - } catch (i) { - try { - var o = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder, - a = new o; - a.append(n), t.blob = 0 === a.getBlob("application/zip").size - } catch (i) { - t.blob = !1 - } - } - } - t.nodestream = !!r(10).prototype - }).call(t, r(6).Buffer) - }, function (e, t, r) { - (function (e, n) { - /*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ - "use strict"; - - function i() { - function e() {} - try { - var t = new Uint8Array(1); - return t.foo = function () { - return 42 - }, t.constructor = e, 42 === t.foo() && t.constructor === e && "function" == typeof t.subarray && 0 === t.subarray(1, 1).byteLength - } catch (r) { - return !1 - } - } - - function o() { - return e.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 - } - - function e(t) { - return this instanceof e ? (e.TYPED_ARRAY_SUPPORT || (this.length = 0, this.parent = void 0), "number" == typeof t ? a(this, t) : "string" == typeof t ? s(this, t, arguments.length > 1 ? arguments[1] : "utf8") : u(this, t)) : arguments.length > 1 ? new e(t, arguments[1]) : new e(t) - } - - function a(t, r) { - if (t = g(t, r < 0 ? 0 : 0 | m(r)), !e.TYPED_ARRAY_SUPPORT) - for (var n = 0; n < r; n++) t[n] = 0; - return t - } - - function s(e, t, r) { - "string" == typeof r && "" !== r || (r = "utf8"); - var n = 0 | v(t, r); - return e = g(e, n), e.write(t, r), e - } - - function u(t, r) { - if (e.isBuffer(r)) return h(t, r); - if (V(r)) return f(t, r); - if (null == r) throw new TypeError("must start with number, buffer, array or string"); - if ("undefined" != typeof ArrayBuffer) { - if (r.buffer instanceof ArrayBuffer) return c(t, r); - if (r instanceof ArrayBuffer) return l(t, r) - } - return r.length ? d(t, r) : p(t, r) - } - - function h(e, t) { - var r = 0 | m(t.length); - return e = g(e, r), t.copy(e, 0, 0, r), e - } - - function f(e, t) { - var r = 0 | m(t.length); - e = g(e, r); - for (var n = 0; n < r; n += 1) e[n] = 255 & t[n]; - return e - } - - function c(e, t) { - var r = 0 | m(t.length); - e = g(e, r); - for (var n = 0; n < r; n += 1) e[n] = 255 & t[n]; - return e - } - - function l(t, r) { - return e.TYPED_ARRAY_SUPPORT ? (r.byteLength, t = e._augment(new Uint8Array(r))) : t = c(t, new Uint8Array(r)), t - } - - function d(e, t) { - var r = 0 | m(t.length); - e = g(e, r); - for (var n = 0; n < r; n += 1) e[n] = 255 & t[n]; - return e - } - - function p(e, t) { - var r, n = 0; - "Buffer" === t.type && V(t.data) && (r = t.data, n = 0 | m(r.length)), e = g(e, n); - for (var i = 0; i < n; i += 1) e[i] = 255 & r[i]; - return e - } - - function g(t, r) { - e.TYPED_ARRAY_SUPPORT ? (t = e._augment(new Uint8Array(r)), t.__proto__ = e.prototype) : (t.length = r, t._isBuffer = !0); - var n = 0 !== r && r <= e.poolSize >>> 1; - return n && (t.parent = G), t - } - - function m(e) { - if (e >= o()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + o().toString(16) + " bytes"); - return 0 | e - } - - function _(t, r) { - if (!(this instanceof _)) return new _(t, r); - var n = new e(t, r); - return delete n.parent, n - } - - function v(e, t) { - "string" != typeof e && (e = "" + e); - var r = e.length; - if (0 === r) return 0; - for (var n = !1;;) switch (t) { - case "ascii": - case "binary": - case "raw": - case "raws": - return r; - case "utf8": - case "utf-8": - return Z(e).length; - case "ucs2": - case "ucs-2": - case "utf16le": - case "utf-16le": - return 2 * r; - case "hex": - return r >>> 1; - case "base64": - return q(e).length; - default: - if (n) return Z(e).length; - t = ("" + t).toLowerCase(), n = !0 - } - } - - function w(e, t, r) { - var n = !1; - if (t = 0 | t, r = void 0 === r || r === 1 / 0 ? this.length : 0 | r, e || (e = "utf8"), t < 0 && (t = 0), r > this.length && (r = this.length), r <= t) return ""; - for (;;) switch (e) { - case "hex": - return B(this, t, r); - case "utf8": - case "utf-8": - return R(this, t, r); - case "ascii": - return I(this, t, r); - case "binary": - return T(this, t, r); - case "base64": - return A(this, t, r); - case "ucs2": - case "ucs-2": - case "utf16le": - case "utf-16le": - return O(this, t, r); - default: - if (n) throw new TypeError("Unknown encoding: " + e); - e = (e + "").toLowerCase(), n = !0 - } - } - - function b(e, t, r, n) { - r = Number(r) || 0; - var i = e.length - r; - n ? (n = Number(n), n > i && (n = i)) : n = i; - var o = t.length; - if (o % 2 !== 0) throw new Error("Invalid hex string"); - n > o / 2 && (n = o / 2); - for (var a = 0; a < n; a++) { - var s = parseInt(t.substr(2 * a, 2), 16); - if (isNaN(s)) throw new Error("Invalid hex string"); - e[r + a] = s - } - return a - } - - function y(e, t, r, n) { - return K(Z(t, e.length - r), e, r, n) - } - - function k(e, t, r, n) { - return K(Y(t), e, r, n) - } - - function E(e, t, r, n) { - return k(e, t, r, n) - } - - function S(e, t, r, n) { - return K(q(t), e, r, n) - } - - function x(e, t, r, n) { - return K(H(t, e.length - r), e, r, n) - } - - function A(e, t, r) { - return 0 === t && r === e.length ? X.fromByteArray(e) : X.fromByteArray(e.slice(t, r)) - } - - function R(e, t, r) { - r = Math.min(e.length, r); - for (var n = [], i = t; i < r;) { - var o = e[i], - a = null, - s = o > 239 ? 4 : o > 223 ? 3 : o > 191 ? 2 : 1; - if (i + s <= r) { - var u, h, f, c; - switch (s) { - case 1: - o < 128 && (a = o); - break; - case 2: - u = e[i + 1], 128 === (192 & u) && (c = (31 & o) << 6 | 63 & u, c > 127 && (a = c)); - break; - case 3: - u = e[i + 1], h = e[i + 2], 128 === (192 & u) && 128 === (192 & h) && (c = (15 & o) << 12 | (63 & u) << 6 | 63 & h, c > 2047 && (c < 55296 || c > 57343) && (a = c)); - break; - case 4: - u = e[i + 1], h = e[i + 2], f = e[i + 3], 128 === (192 & u) && 128 === (192 & h) && 128 === (192 & f) && (c = (15 & o) << 18 | (63 & u) << 12 | (63 & h) << 6 | 63 & f, c > 65535 && c < 1114112 && (a = c)) - } - } - null === a ? (a = 65533, s = 1) : a > 65535 && (a -= 65536, n.push(a >>> 10 & 1023 | 55296), a = 56320 | 1023 & a), n.push(a), i += s - } - return C(n) - } - - function C(e) { - var t = e.length; - if (t <= $) return String.fromCharCode.apply(String, e); - for (var r = "", n = 0; n < t;) r += String.fromCharCode.apply(String, e.slice(n, n += $)); - return r - } - - function I(e, t, r) { - var n = ""; - r = Math.min(e.length, r); - for (var i = t; i < r; i++) n += String.fromCharCode(127 & e[i]); - return n - } - - function T(e, t, r) { - var n = ""; - r = Math.min(e.length, r); - for (var i = t; i < r; i++) n += String.fromCharCode(e[i]); - return n - } - - function B(e, t, r) { - var n = e.length; - (!t || t < 0) && (t = 0), (!r || r < 0 || r > n) && (r = n); - for (var i = "", o = t; o < r; o++) i += W(e[o]); - return i - } - - function O(e, t, r) { - for (var n = e.slice(t, r), i = "", o = 0; o < n.length; o += 2) i += String.fromCharCode(n[o] + 256 * n[o + 1]); - return i - } - - function z(e, t, r) { - if (e % 1 !== 0 || e < 0) throw new RangeError("offset is not uint"); - if (e + t > r) throw new RangeError("Trying to access beyond buffer length") - } - - function L(t, r, n, i, o, a) { - if (!e.isBuffer(t)) throw new TypeError("buffer must be a Buffer instance"); - if (r > o || r < a) throw new RangeError("value is out of bounds"); - if (n + i > t.length) throw new RangeError("index out of range") - } - - function D(e, t, r, n) { - t < 0 && (t = 65535 + t + 1); - for (var i = 0, o = Math.min(e.length - r, 2); i < o; i++) e[r + i] = (t & 255 << 8 * (n ? i : 1 - i)) >>> 8 * (n ? i : 1 - i) - } - - function U(e, t, r, n) { - t < 0 && (t = 4294967295 + t + 1); - for (var i = 0, o = Math.min(e.length - r, 4); i < o; i++) e[r + i] = t >>> 8 * (n ? i : 3 - i) & 255 - } - - function P(e, t, r, n, i, o) { - if (t > i || t < o) throw new RangeError("value is out of bounds"); - if (r + n > e.length) throw new RangeError("index out of range"); - if (r < 0) throw new RangeError("index out of range") - } - - function M(e, t, r, n, i) { - return i || P(e, t, r, 4, 3.4028234663852886e38, -3.4028234663852886e38), J.write(e, t, r, n, 23, 4), r + 4 - } - - function N(e, t, r, n, i) { - return i || P(e, t, r, 8, 1.7976931348623157e308, -1.7976931348623157e308), J.write(e, t, r, n, 52, 8), r + 8 - } - - function F(e) { - if (e = j(e).replace(ee, ""), e.length < 2) return ""; - for (; e.length % 4 !== 0;) e += "="; - return e - } - - function j(e) { - return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "") - } - - function W(e) { - return e < 16 ? "0" + e.toString(16) : e.toString(16) - } - - function Z(e, t) { - t = t || 1 / 0; - for (var r, n = e.length, i = null, o = [], a = 0; a < n; a++) { - if (r = e.charCodeAt(a), r > 55295 && r < 57344) { - if (!i) { - if (r > 56319) { - (t -= 3) > -1 && o.push(239, 191, 189); - continue - } - if (a + 1 === n) { - (t -= 3) > -1 && o.push(239, 191, 189); - continue - } - i = r; - continue - } - if (r < 56320) { - (t -= 3) > -1 && o.push(239, 191, 189), i = r; - continue - } - r = (i - 55296 << 10 | r - 56320) + 65536 - } else i && (t -= 3) > -1 && o.push(239, 191, 189); - if (i = null, r < 128) { - if ((t -= 1) < 0) break; - o.push(r) - } else if (r < 2048) { - if ((t -= 2) < 0) break; - o.push(r >> 6 | 192, 63 & r | 128) - } else if (r < 65536) { - if ((t -= 3) < 0) break; - o.push(r >> 12 | 224, r >> 6 & 63 | 128, 63 & r | 128) - } else { - if (!(r < 1114112)) throw new Error("Invalid code point"); - if ((t -= 4) < 0) break; - o.push(r >> 18 | 240, r >> 12 & 63 | 128, r >> 6 & 63 | 128, 63 & r | 128) - } - } - return o - } - - function Y(e) { - for (var t = [], r = 0; r < e.length; r++) t.push(255 & e.charCodeAt(r)); - return t - } - - function H(e, t) { - for (var r, n, i, o = [], a = 0; a < e.length && !((t -= 2) < 0); a++) r = e.charCodeAt(a), n = r >> 8, i = r % 256, o.push(i), o.push(n); - return o - } - - function q(e) { - return X.toByteArray(F(e)) - } - - function K(e, t, r, n) { - for (var i = 0; i < n && !(i + r >= t.length || i >= e.length); i++) t[i + r] = e[i]; - return i - } - var X = r(7), - J = r(8), - V = r(9); - t.Buffer = e, t.SlowBuffer = _, t.INSPECT_MAX_BYTES = 50, e.poolSize = 8192; - var G = {}; - e.TYPED_ARRAY_SUPPORT = void 0 !== n.TYPED_ARRAY_SUPPORT ? n.TYPED_ARRAY_SUPPORT : i(), e.TYPED_ARRAY_SUPPORT ? (e.prototype.__proto__ = Uint8Array.prototype, e.__proto__ = Uint8Array) : (e.prototype.length = void 0, e.prototype.parent = void 0), e.isBuffer = function (e) { - return !(null == e || !e._isBuffer) - }, e.compare = function (t, r) { - if (!e.isBuffer(t) || !e.isBuffer(r)) throw new TypeError("Arguments must be Buffers"); - if (t === r) return 0; - for (var n = t.length, i = r.length, o = 0, a = Math.min(n, i); o < a && t[o] === r[o];) ++o; - return o !== a && (n = t[o], i = r[o]), n < i ? -1 : i < n ? 1 : 0 - }, e.isEncoding = function (e) { - switch (String(e).toLowerCase()) { - case "hex": - case "utf8": - case "utf-8": - case "ascii": - case "binary": - case "base64": - case "raw": - case "ucs2": - case "ucs-2": - case "utf16le": - case "utf-16le": - return !0; - default: - return !1 - } - }, e.concat = function (t, r) { - if (!V(t)) throw new TypeError("list argument must be an Array of Buffers."); - if (0 === t.length) return new e(0); - var n; - if (void 0 === r) - for (r = 0, n = 0; n < t.length; n++) r += t[n].length; - var i = new e(r), - o = 0; - for (n = 0; n < t.length; n++) { - var a = t[n]; - a.copy(i, o), o += a.length - } - return i - }, e.byteLength = v, e.prototype.toString = function () { - var e = 0 | this.length; - return 0 === e ? "" : 0 === arguments.length ? R(this, 0, e) : w.apply(this, arguments) - }, e.prototype.equals = function (t) { - if (!e.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); - return this === t || 0 === e.compare(this, t) - }, e.prototype.inspect = function () { - var e = "", - r = t.INSPECT_MAX_BYTES; - return this.length > 0 && (e = this.toString("hex", 0, r).match(/.{2}/g).join(" "), this.length > r && (e += " ... ")), "" - }, e.prototype.compare = function (t) { - if (!e.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); - return this === t ? 0 : e.compare(this, t) - }, e.prototype.indexOf = function (t, r) { - function n(e, t, r) { - for (var n = -1, i = 0; r + i < e.length; i++) - if (e[r + i] === t[n === -1 ? 0 : i - n]) { - if (n === -1 && (n = i), i - n + 1 === t.length) return r + n - } else n = -1; - return -1 - } - if (r > 2147483647 ? r = 2147483647 : r < -2147483648 && (r = -2147483648), r >>= 0, 0 === this.length) return -1; - if (r >= this.length) return -1; - if (r < 0 && (r = Math.max(this.length + r, 0)), "string" == typeof t) return 0 === t.length ? -1 : String.prototype.indexOf.call(this, t, r); - if (e.isBuffer(t)) return n(this, t, r); - if ("number" == typeof t) return e.TYPED_ARRAY_SUPPORT && "function" === Uint8Array.prototype.indexOf ? Uint8Array.prototype.indexOf.call(this, t, r) : n(this, [t], r); - throw new TypeError("val must be string, number or Buffer") - }, e.prototype.get = function (e) { - return console.log(".get() is deprecated. Access using array indexes instead."), this.readUInt8(e) - }, e.prototype.set = function (e, t) { - return console.log(".set() is deprecated. Access using array indexes instead."), this.writeUInt8(e, t) - }, e.prototype.write = function (e, t, r, n) { - if (void 0 === t) n = "utf8", r = this.length, t = 0; - else if (void 0 === r && "string" == typeof t) n = t, r = this.length, t = 0; - else if (isFinite(t)) t = 0 | t, isFinite(r) ? (r = 0 | r, void 0 === n && (n = "utf8")) : (n = r, r = void 0); - else { - var i = n; - n = t, t = 0 | r, r = i - } - var o = this.length - t; - if ((void 0 === r || r > o) && (r = o), e.length > 0 && (r < 0 || t < 0) || t > this.length) throw new RangeError("attempt to write outside buffer bounds"); - n || (n = "utf8"); - for (var a = !1;;) switch (n) { - case "hex": - return b(this, e, t, r); - case "utf8": - case "utf-8": - return y(this, e, t, r); - case "ascii": - return k(this, e, t, r); - case "binary": - return E(this, e, t, r); - case "base64": - return S(this, e, t, r); - case "ucs2": - case "ucs-2": - case "utf16le": - case "utf-16le": - return x(this, e, t, r); - default: - if (a) throw new TypeError("Unknown encoding: " + n); - n = ("" + n).toLowerCase(), a = !0 - } - }, e.prototype.toJSON = function () { - return { - type: "Buffer", - data: Array.prototype.slice.call(this._arr || this, 0) - } - }; - var $ = 4096; - e.prototype.slice = function (t, r) { - var n = this.length; - t = ~~t, r = void 0 === r ? n : ~~r, t < 0 ? (t += n, t < 0 && (t = 0)) : t > n && (t = n), r < 0 ? (r += n, r < 0 && (r = 0)) : r > n && (r = n), r < t && (r = t); - var i; - if (e.TYPED_ARRAY_SUPPORT) i = e._augment(this.subarray(t, r)); - else { - var o = r - t; - i = new e(o, (void 0)); - for (var a = 0; a < o; a++) i[a] = this[a + t] - } - return i.length && (i.parent = this.parent || this), i - }, e.prototype.readUIntLE = function (e, t, r) { - e = 0 | e, t = 0 | t, r || z(e, t, this.length); - for (var n = this[e], i = 1, o = 0; ++o < t && (i *= 256);) n += this[e + o] * i; - return n - }, e.prototype.readUIntBE = function (e, t, r) { - e = 0 | e, t = 0 | t, r || z(e, t, this.length); - for (var n = this[e + --t], i = 1; t > 0 && (i *= 256);) n += this[e + --t] * i; - return n - }, e.prototype.readUInt8 = function (e, t) { - return t || z(e, 1, this.length), this[e] - }, e.prototype.readUInt16LE = function (e, t) { - return t || z(e, 2, this.length), this[e] | this[e + 1] << 8 - }, e.prototype.readUInt16BE = function (e, t) { - return t || z(e, 2, this.length), this[e] << 8 | this[e + 1] - }, e.prototype.readUInt32LE = function (e, t) { - return t || z(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3] - }, e.prototype.readUInt32BE = function (e, t) { - return t || z(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]) - }, e.prototype.readIntLE = function (e, t, r) { - e = 0 | e, t = 0 | t, r || z(e, t, this.length); - for (var n = this[e], i = 1, o = 0; ++o < t && (i *= 256);) n += this[e + o] * i; - return i *= 128, n >= i && (n -= Math.pow(2, 8 * t)), n - }, e.prototype.readIntBE = function (e, t, r) { - e = 0 | e, t = 0 | t, r || z(e, t, this.length); - for (var n = t, i = 1, o = this[e + --n]; n > 0 && (i *= 256);) o += this[e + --n] * i; - return i *= 128, o >= i && (o -= Math.pow(2, 8 * t)), o - }, e.prototype.readInt8 = function (e, t) { - return t || z(e, 1, this.length), 128 & this[e] ? (255 - this[e] + 1) * -1 : this[e] - }, e.prototype.readInt16LE = function (e, t) { - t || z(e, 2, this.length); - var r = this[e] | this[e + 1] << 8; - return 32768 & r ? 4294901760 | r : r - }, e.prototype.readInt16BE = function (e, t) { - t || z(e, 2, this.length); - var r = this[e + 1] | this[e] << 8; - return 32768 & r ? 4294901760 | r : r - }, e.prototype.readInt32LE = function (e, t) { - return t || z(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24 - }, e.prototype.readInt32BE = function (e, t) { - return t || z(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3] - }, e.prototype.readFloatLE = function (e, t) { - return t || z(e, 4, this.length), J.read(this, e, !0, 23, 4) - }, e.prototype.readFloatBE = function (e, t) { - return t || z(e, 4, this.length), J.read(this, e, !1, 23, 4) - }, e.prototype.readDoubleLE = function (e, t) { - return t || z(e, 8, this.length), J.read(this, e, !0, 52, 8) - }, e.prototype.readDoubleBE = function (e, t) { - return t || z(e, 8, this.length), J.read(this, e, !1, 52, 8) - }, e.prototype.writeUIntLE = function (e, t, r, n) { - e = +e, t = 0 | t, r = 0 | r, n || L(this, e, t, r, Math.pow(2, 8 * r), 0); - var i = 1, - o = 0; - for (this[t] = 255 & e; ++o < r && (i *= 256);) this[t + o] = e / i & 255; - return t + r - }, e.prototype.writeUIntBE = function (e, t, r, n) { - e = +e, t = 0 | t, r = 0 | r, n || L(this, e, t, r, Math.pow(2, 8 * r), 0); - var i = r - 1, - o = 1; - for (this[t + i] = 255 & e; --i >= 0 && (o *= 256);) this[t + i] = e / o & 255; - return t + r - }, e.prototype.writeUInt8 = function (t, r, n) { - return t = +t, r = 0 | r, n || L(this, t, r, 1, 255, 0), e.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), this[r] = 255 & t, r + 1 - }, e.prototype.writeUInt16LE = function (t, r, n) { - return t = +t, r = 0 | r, n || L(this, t, r, 2, 65535, 0), e.TYPED_ARRAY_SUPPORT ? (this[r] = 255 & t, this[r + 1] = t >>> 8) : D(this, t, r, !0), r + 2 - }, e.prototype.writeUInt16BE = function (t, r, n) { - return t = +t, r = 0 | r, n || L(this, t, r, 2, 65535, 0), e.TYPED_ARRAY_SUPPORT ? (this[r] = t >>> 8, this[r + 1] = 255 & t) : D(this, t, r, !1), r + 2 - }, e.prototype.writeUInt32LE = function (t, r, n) { - return t = +t, r = 0 | r, n || L(this, t, r, 4, 4294967295, 0), e.TYPED_ARRAY_SUPPORT ? (this[r + 3] = t >>> 24, this[r + 2] = t >>> 16, this[r + 1] = t >>> 8, this[r] = 255 & t) : U(this, t, r, !0), r + 4 - }, e.prototype.writeUInt32BE = function (t, r, n) { - return t = +t, r = 0 | r, n || L(this, t, r, 4, 4294967295, 0), e.TYPED_ARRAY_SUPPORT ? (this[r] = t >>> 24, this[r + 1] = t >>> 16, this[r + 2] = t >>> 8, this[r + 3] = 255 & t) : U(this, t, r, !1), r + 4 - }, e.prototype.writeIntLE = function (e, t, r, n) { - if (e = +e, t = 0 | t, !n) { - var i = Math.pow(2, 8 * r - 1); - L(this, e, t, r, i - 1, -i) - } - var o = 0, - a = 1, - s = e < 0 ? 1 : 0; - for (this[t] = 255 & e; ++o < r && (a *= 256);) this[t + o] = (e / a >> 0) - s & 255; - return t + r - }, e.prototype.writeIntBE = function (e, t, r, n) { - if (e = +e, t = 0 | t, !n) { - var i = Math.pow(2, 8 * r - 1); - L(this, e, t, r, i - 1, -i) - } - var o = r - 1, - a = 1, - s = e < 0 ? 1 : 0; - for (this[t + o] = 255 & e; --o >= 0 && (a *= 256);) this[t + o] = (e / a >> 0) - s & 255; - return t + r - }, e.prototype.writeInt8 = function (t, r, n) { - return t = +t, r = 0 | r, n || L(this, t, r, 1, 127, -128), e.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), t < 0 && (t = 255 + t + 1), this[r] = 255 & t, r + 1 - }, e.prototype.writeInt16LE = function (t, r, n) { - return t = +t, r = 0 | r, n || L(this, t, r, 2, 32767, -32768), e.TYPED_ARRAY_SUPPORT ? (this[r] = 255 & t, this[r + 1] = t >>> 8) : D(this, t, r, !0), r + 2 - }, e.prototype.writeInt16BE = function (t, r, n) { - return t = +t, r = 0 | r, n || L(this, t, r, 2, 32767, -32768), e.TYPED_ARRAY_SUPPORT ? (this[r] = t >>> 8, this[r + 1] = 255 & t) : D(this, t, r, !1), r + 2 - }, e.prototype.writeInt32LE = function (t, r, n) { - return t = +t, r = 0 | r, n || L(this, t, r, 4, 2147483647, -2147483648), e.TYPED_ARRAY_SUPPORT ? (this[r] = 255 & t, this[r + 1] = t >>> 8, this[r + 2] = t >>> 16, this[r + 3] = t >>> 24) : U(this, t, r, !0), r + 4 - }, e.prototype.writeInt32BE = function (t, r, n) { - return t = +t, r = 0 | r, n || L(this, t, r, 4, 2147483647, -2147483648), t < 0 && (t = 4294967295 + t + 1), e.TYPED_ARRAY_SUPPORT ? (this[r] = t >>> 24, this[r + 1] = t >>> 16, this[r + 2] = t >>> 8, this[r + 3] = 255 & t) : U(this, t, r, !1), r + 4 - }, e.prototype.writeFloatLE = function (e, t, r) { - return M(this, e, t, !0, r) - }, e.prototype.writeFloatBE = function (e, t, r) { - return M(this, e, t, !1, r) - }, e.prototype.writeDoubleLE = function (e, t, r) { - return N(this, e, t, !0, r) - }, e.prototype.writeDoubleBE = function (e, t, r) { - return N(this, e, t, !1, r) - }, e.prototype.copy = function (t, r, n, i) { - if (n || (n = 0), i || 0 === i || (i = this.length), r >= t.length && (r = t.length), r || (r = 0), i > 0 && i < n && (i = n), i === n) return 0; - if (0 === t.length || 0 === this.length) return 0; - if (r < 0) throw new RangeError("targetStart out of bounds"); - if (n < 0 || n >= this.length) throw new RangeError("sourceStart out of bounds"); - if (i < 0) throw new RangeError("sourceEnd out of bounds"); - i > this.length && (i = this.length), t.length - r < i - n && (i = t.length - r + n); - var o, a = i - n; - if (this === t && n < r && r < i) - for (o = a - 1; o >= 0; o--) t[o + r] = this[o + n]; - else if (a < 1e3 || !e.TYPED_ARRAY_SUPPORT) - for (o = 0; o < a; o++) t[o + r] = this[o + n]; - else t._set(this.subarray(n, n + a), r); - return a - }, e.prototype.fill = function (e, t, r) { - if (e || (e = 0), t || (t = 0), r || (r = this.length), r < t) throw new RangeError("end < start"); - if (r !== t && 0 !== this.length) { - if (t < 0 || t >= this.length) throw new RangeError("start out of bounds"); - if (r < 0 || r > this.length) throw new RangeError("end out of bounds"); - var n; - if ("number" == typeof e) - for (n = t; n < r; n++) this[n] = e; - else { - var i = Z(e.toString()), - o = i.length; - for (n = t; n < r; n++) this[n] = i[n % o] - } - return this - } - }, e.prototype.toArrayBuffer = function () { - if ("undefined" != typeof Uint8Array) { - if (e.TYPED_ARRAY_SUPPORT) return new e(this).buffer; - for (var t = new Uint8Array(this.length), r = 0, n = t.length; r < n; r += 1) t[r] = this[r]; - return t.buffer - } - throw new TypeError("Buffer.toArrayBuffer not supported in this browser") - }; - var Q = e.prototype; - e._augment = function (t) { - return t.constructor = e, t._isBuffer = !0, t._set = t.set, t.get = Q.get, t.set = Q.set, t.write = Q.write, t.toString = Q.toString, t.toLocaleString = Q.toString, t.toJSON = Q.toJSON, t.equals = Q.equals, t.compare = Q.compare, t.indexOf = Q.indexOf, t.copy = Q.copy, t.slice = Q.slice, t.readUIntLE = Q.readUIntLE, t.readUIntBE = Q.readUIntBE, t.readUInt8 = Q.readUInt8, t.readUInt16LE = Q.readUInt16LE, t.readUInt16BE = Q.readUInt16BE, t.readUInt32LE = Q.readUInt32LE, t.readUInt32BE = Q.readUInt32BE, t.readIntLE = Q.readIntLE, t.readIntBE = Q.readIntBE, t.readInt8 = Q.readInt8, t.readInt16LE = Q.readInt16LE, t.readInt16BE = Q.readInt16BE, t.readInt32LE = Q.readInt32LE, t.readInt32BE = Q.readInt32BE, t.readFloatLE = Q.readFloatLE, t.readFloatBE = Q.readFloatBE, t.readDoubleLE = Q.readDoubleLE, t.readDoubleBE = Q.readDoubleBE, t.writeUInt8 = Q.writeUInt8, t.writeUIntLE = Q.writeUIntLE, t.writeUIntBE = Q.writeUIntBE, t.writeUInt16LE = Q.writeUInt16LE, t.writeUInt16BE = Q.writeUInt16BE, t.writeUInt32LE = Q.writeUInt32LE, t.writeUInt32BE = Q.writeUInt32BE, t.writeIntLE = Q.writeIntLE, t.writeIntBE = Q.writeIntBE, t.writeInt8 = Q.writeInt8, t.writeInt16LE = Q.writeInt16LE, t.writeInt16BE = Q.writeInt16BE, t.writeInt32LE = Q.writeInt32LE, t.writeInt32BE = Q.writeInt32BE, t.writeFloatLE = Q.writeFloatLE, t.writeFloatBE = Q.writeFloatBE, t.writeDoubleLE = Q.writeDoubleLE, t.writeDoubleBE = Q.writeDoubleBE, t.fill = Q.fill, t.inspect = Q.inspect, t.toArrayBuffer = Q.toArrayBuffer, t - }; - var ee = /[^+\/0-9A-Za-z-_]/g - }).call(t, r(6).Buffer, function () { - return this - }()) - }, function (e, t, r) { - var n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - ! function (e) { - "use strict"; - - function t(e) { - var t = e.charCodeAt(0); - return t === a || t === c ? 62 : t === s || t === l ? 63 : t < u ? -1 : t < u + 10 ? t - u + 26 + 26 : t < f + 26 ? t - f : t < h + 26 ? t - h + 26 : void 0 - } - - function r(e) { - function r(e) { - h[c++] = e - } - var n, i, a, s, u, h; - if (e.length % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); - var f = e.length; - u = "=" === e.charAt(f - 2) ? 2 : "=" === e.charAt(f - 1) ? 1 : 0, h = new o(3 * e.length / 4 - u), a = u > 0 ? e.length - 4 : e.length; - var c = 0; - for (n = 0, i = 0; n < a; n += 4, i += 3) s = t(e.charAt(n)) << 18 | t(e.charAt(n + 1)) << 12 | t(e.charAt(n + 2)) << 6 | t(e.charAt(n + 3)), r((16711680 & s) >> 16), r((65280 & s) >> 8), r(255 & s); - return 2 === u ? (s = t(e.charAt(n)) << 2 | t(e.charAt(n + 1)) >> 4, r(255 & s)) : 1 === u && (s = t(e.charAt(n)) << 10 | t(e.charAt(n + 1)) << 4 | t(e.charAt(n + 2)) >> 2, r(s >> 8 & 255), r(255 & s)), h - } - - function i(e) { - function t(e) { - return n.charAt(e) - } - - function r(e) { - return t(e >> 18 & 63) + t(e >> 12 & 63) + t(e >> 6 & 63) + t(63 & e) - } - var i, o, a, s = e.length % 3, - u = ""; - for (i = 0, a = e.length - s; i < a; i += 3) o = (e[i] << 16) + (e[i + 1] << 8) + e[i + 2], u += r(o); - switch (s) { - case 1: - o = e[e.length - 1], u += t(o >> 2), u += t(o << 4 & 63), u += "=="; - break; - case 2: - o = (e[e.length - 2] << 8) + e[e.length - 1], u += t(o >> 10), u += t(o >> 4 & 63), u += t(o << 2 & 63), u += "=" - } - return u - } - var o = "undefined" != typeof Uint8Array ? Uint8Array : Array, - a = "+".charCodeAt(0), - s = "/".charCodeAt(0), - u = "0".charCodeAt(0), - h = "a".charCodeAt(0), - f = "A".charCodeAt(0), - c = "-".charCodeAt(0), - l = "_".charCodeAt(0); - e.toByteArray = r, e.fromByteArray = i - }(t) - }, function (e, t) { - t.read = function (e, t, r, n, i) { - var o, a, s = 8 * i - n - 1, - u = (1 << s) - 1, - h = u >> 1, - f = -7, - c = r ? i - 1 : 0, - l = r ? -1 : 1, - d = e[t + c]; - for (c += l, o = d & (1 << -f) - 1, d >>= -f, f += s; f > 0; o = 256 * o + e[t + c], c += l, f -= 8); - for (a = o & (1 << -f) - 1, o >>= -f, f += n; f > 0; a = 256 * a + e[t + c], c += l, f -= 8); - if (0 === o) o = 1 - h; - else { - if (o === u) return a ? NaN : (d ? -1 : 1) * (1 / 0); - a += Math.pow(2, n), o -= h - } - return (d ? -1 : 1) * a * Math.pow(2, o - n) - }, t.write = function (e, t, r, n, i, o) { - var a, s, u, h = 8 * o - i - 1, - f = (1 << h) - 1, - c = f >> 1, - l = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, - d = n ? 0 : o - 1, - p = n ? 1 : -1, - g = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0; - for (t = Math.abs(t), isNaN(t) || t === 1 / 0 ? (s = isNaN(t) ? 1 : 0, a = f) : (a = Math.floor(Math.log(t) / Math.LN2), t * (u = Math.pow(2, -a)) < 1 && (a--, u *= 2), t += a + c >= 1 ? l / u : l * Math.pow(2, 1 - c), t * u >= 2 && (a++, u /= 2), a + c >= f ? (s = 0, a = f) : a + c >= 1 ? (s = (t * u - 1) * Math.pow(2, i), a += c) : (s = t * Math.pow(2, c - 1) * Math.pow(2, i), a = 0)); i >= 8; e[r + d] = 255 & s, d += p, s /= 256, i -= 8); - for (a = a << i | s, h += i; h > 0; e[r + d] = 255 & a, d += p, a /= 256, h -= 8); - e[r + d - p] |= 128 * g - } - }, function (e, t) { - var r = {}.toString; - e.exports = Array.isArray || function (e) { - return "[object Array]" == r.call(e) - } - }, function (e, t, r) { - "use strict"; - - function n(e, t, r) { - i.call(this, t), this._helper = e; - var n = this; - e.on("data", function (e, t) { - n.push(e) || n._helper.pause(), r && r(t) - }).on("error", function (e) { - n.emit("error", e) - }).on("end", function () { - n.push(null) - }) - } - var i = r(11).Readable, - o = r(39); - o.inherits(n, i), n.prototype._read = function () { - this._helper.resume() - }, e.exports = n - }, function (e, t, r) { - var n = function () { - try { - return r(12) - } catch (e) {} - }(); - t = e.exports = r(30), t.Stream = n || t, t.Readable = t, t.Writable = r(34), t.Duplex = r(33), t.Transform = r(37), t.PassThrough = r(38) - }, function (e, t, r) { - function n() { - i.call(this) - } - e.exports = n; - var i = r(13).EventEmitter, - o = r(14); - o(n, i), n.Readable = r(15), n.Writable = r(26), n.Duplex = r(27), n.Transform = r(28), n.PassThrough = r(29), n.Stream = n, n.prototype.pipe = function (e, t) { - function r(t) { - e.writable && !1 === e.write(t) && h.pause && h.pause() - } - - function n() { - h.readable && h.resume && h.resume() - } - - function o() { - f || (f = !0, e.end()) - } - - function a() { - f || (f = !0, "function" == typeof e.destroy && e.destroy()) - } - - function s(e) { - if (u(), 0 === i.listenerCount(this, "error")) throw e - } - - function u() { - h.removeListener("data", r), e.removeListener("drain", n), h.removeListener("end", o), h.removeListener("close", a), h.removeListener("error", s), e.removeListener("error", s), h.removeListener("end", u), h.removeListener("close", u), e.removeListener("close", u) - } - var h = this; - h.on("data", r), e.on("drain", n), e._isStdio || t && t.end === !1 || (h.on("end", o), h.on("close", a)); - var f = !1; - return h.on("error", s), e.on("error", s), h.on("end", u), h.on("close", u), e.on("close", u), e.emit("pipe", h), e - } - }, function (e, t) { - function r() { - this._events = this._events || {}, this._maxListeners = this._maxListeners || void 0 - } - - function n(e) { - return "function" == typeof e - } - - function i(e) { - return "number" == typeof e - } - - function o(e) { - return "object" == typeof e && null !== e - } - - function a(e) { - return void 0 === e - } - e.exports = r, r.EventEmitter = r, r.prototype._events = void 0, r.prototype._maxListeners = void 0, r.defaultMaxListeners = 10, r.prototype.setMaxListeners = function (e) { - if (!i(e) || e < 0 || isNaN(e)) throw TypeError("n must be a positive number"); - return this._maxListeners = e, this - }, r.prototype.emit = function (e) { - var t, r, i, s, u, h; - if (this._events || (this._events = {}), "error" === e && (!this._events.error || o(this._events.error) && !this._events.error.length)) { - if (t = arguments[1], t instanceof Error) throw t; - var f = new Error('Uncaught, unspecified "error" event. (' + t + ")"); - throw f.context = t, f - } - if (r = this._events[e], a(r)) return !1; - if (n(r)) switch (arguments.length) { - case 1: - r.call(this); - break; - case 2: - r.call(this, arguments[1]); - break; - case 3: - r.call(this, arguments[1], arguments[2]); - break; - default: - s = Array.prototype.slice.call(arguments, 1), r.apply(this, s) - } else if (o(r)) - for (s = Array.prototype.slice.call(arguments, 1), h = r.slice(), i = h.length, u = 0; u < i; u++) h[u].apply(this, s); - return !0 - }, r.prototype.addListener = function (e, t) { - var i; - if (!n(t)) throw TypeError("listener must be a function"); - return this._events || (this._events = {}), this._events.newListener && this.emit("newListener", e, n(t.listener) ? t.listener : t), this._events[e] ? o(this._events[e]) ? this._events[e].push(t) : this._events[e] = [this._events[e], t] : this._events[e] = t, o(this._events[e]) && !this._events[e].warned && (i = a(this._maxListeners) ? r.defaultMaxListeners : this._maxListeners, i && i > 0 && this._events[e].length > i && (this._events[e].warned = !0, console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.", this._events[e].length), "function" == typeof console.trace && console.trace())), this - }, r.prototype.on = r.prototype.addListener, r.prototype.once = function (e, t) { - function r() { - this.removeListener(e, r), i || (i = !0, t.apply(this, arguments)) - } - if (!n(t)) throw TypeError("listener must be a function"); - var i = !1; - return r.listener = t, this.on(e, r), this - }, r.prototype.removeListener = function (e, t) { - var r, i, a, s; - if (!n(t)) throw TypeError("listener must be a function"); - if (!this._events || !this._events[e]) return this; - if (r = this._events[e], a = r.length, i = -1, r === t || n(r.listener) && r.listener === t) delete this._events[e], this._events.removeListener && this.emit("removeListener", e, t); - else if (o(r)) { - for (s = a; s-- > 0;) - if (r[s] === t || r[s].listener && r[s].listener === t) { - i = s; - break - } - if (i < 0) return this; - 1 === r.length ? (r.length = 0, delete this._events[e]) : r.splice(i, 1), this._events.removeListener && this.emit("removeListener", e, t) - } - return this - }, r.prototype.removeAllListeners = function (e) { - var t, r; - if (!this._events) return this; - if (!this._events.removeListener) return 0 === arguments.length ? this._events = {} : this._events[e] && delete this._events[e], this; - if (0 === arguments.length) { - for (t in this._events) "removeListener" !== t && this.removeAllListeners(t); - return this.removeAllListeners("removeListener"), this._events = {}, this - } - if (r = this._events[e], n(r)) this.removeListener(e, r); - else if (r) - for (; r.length;) this.removeListener(e, r[r.length - 1]); - return delete this._events[e], this - }, r.prototype.listeners = function (e) { - var t; - return t = this._events && this._events[e] ? n(this._events[e]) ? [this._events[e]] : this._events[e].slice() : [] - }, r.prototype.listenerCount = function (e) { - if (this._events) { - var t = this._events[e]; - if (n(t)) return 1; - if (t) return t.length - } - return 0 - }, r.listenerCount = function (e, t) { - return e.listenerCount(t) - } - }, function (e, t) { - "function" == typeof Object.create ? e.exports = function (e, t) { - e.super_ = t, e.prototype = Object.create(t.prototype, { - constructor: { - value: e, - enumerable: !1, - writable: !0, - configurable: !0 - } - }) - } : e.exports = function (e, t) { - e.super_ = t; - var r = function () {}; - r.prototype = t.prototype, e.prototype = new r, e.prototype.constructor = e - } - }, function (e, t, r) { - (function (n) { - t = e.exports = r(17), t.Stream = r(12), t.Readable = t, t.Writable = r(22), t.Duplex = r(21), t.Transform = r(24), t.PassThrough = r(25), n.browser || "disable" !== n.env.READABLE_STREAM || (e.exports = r(12)) - }).call(t, r(16)) - }, function (e, t) { - function r(e) { - return u === setTimeout ? setTimeout(e, 0) : u.call(null, e, 0) - } - - function n(e) { - h === clearTimeout ? clearTimeout(e) : h.call(null, e) - } - - function i() { - d && c && (d = !1, c.length ? l = c.concat(l) : p = -1, l.length && o()) - } - - function o() { - if (!d) { - var e = r(i); - d = !0; - for (var t = l.length; t;) { - for (c = l, l = []; ++p < t;) c && c[p].run(); - p = -1, t = l.length - } - c = null, d = !1, n(e) - } - } - - function a(e, t) { - this.fun = e, this.array = t - } - - function s() {} - var u, h, f = e.exports = {}; - ! function () { - try { - u = setTimeout - } catch (e) { - u = function () { - throw new Error("setTimeout is not defined") - } - } - try { - h = clearTimeout - } catch (e) { - h = function () { - throw new Error("clearTimeout is not defined") - } - } - }(); - var c, l = [], - d = !1, - p = -1; - f.nextTick = function (e) { - var t = new Array(arguments.length - 1); - if (arguments.length > 1) - for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; - l.push(new a(e, t)), 1 !== l.length || d || r(o) - }, a.prototype.run = function () { - this.fun.apply(null, this.array) - }, f.title = "browser", f.browser = !0, f.env = {}, f.argv = [], f.version = "", f.versions = {}, f.on = s, f.addListener = s, f.once = s, f.off = s, f.removeListener = s, f.removeAllListeners = s, f.emit = s, f.binding = function (e) { - throw new Error("process.binding is not supported") - }, f.cwd = function () { - return "/" - }, f.chdir = function (e) { - throw new Error("process.chdir is not supported") - }, f.umask = function () { - return 0 - } - }, function (e, t, r) { - (function (t) { - function n(e, t) { - var n = r(21); - e = e || {}; - var i = e.highWaterMark, - o = e.objectMode ? 16 : 16384; - this.highWaterMark = i || 0 === i ? i : o, this.highWaterMark = ~~this.highWaterMark, this.buffer = [], this.length = 0, this.pipes = null, this.pipesCount = 0, this.flowing = null, this.ended = !1, this.endEmitted = !1, this.reading = !1, this.sync = !0, this.needReadable = !1, this.emittedReadable = !1, this.readableListening = !1, this.objectMode = !!e.objectMode, t instanceof n && (this.objectMode = this.objectMode || !!e.readableObjectMode), this.defaultEncoding = e.defaultEncoding || "utf8", this.ranOut = !1, this.awaitDrain = 0, this.readingMore = !1, this.decoder = null, this.encoding = null, e.encoding && (C || (C = r(23).StringDecoder), this.decoder = new C(e.encoding), this.encoding = e.encoding) - } - - function i(e) { - r(21); - return this instanceof i ? (this._readableState = new n(e, this), this.readable = !0, void A.call(this)) : new i(e) - } - - function o(e, t, r, n, i) { - var o = h(t, r); - if (o) e.emit("error", o); - else if (R.isNullOrUndefined(r)) t.reading = !1, t.ended || f(e, t); - else if (t.objectMode || r && r.length > 0) - if (t.ended && !i) { - var s = new Error("stream.push() after EOF"); - e.emit("error", s) - } else if (t.endEmitted && i) { - var s = new Error("stream.unshift() after end event"); - e.emit("error", s) - } else !t.decoder || i || n || (r = t.decoder.write(r)), i || (t.reading = !1), t.flowing && 0 === t.length && !t.sync ? (e.emit("data", r), e.read(0)) : (t.length += t.objectMode ? 1 : r.length, i ? t.buffer.unshift(r) : t.buffer.push(r), t.needReadable && c(e)), d(e, t); - else i || (t.reading = !1); - return a(t) - } - - function a(e) { - return !e.ended && (e.needReadable || e.length < e.highWaterMark || 0 === e.length) - } - - function s(e) { - if (e >= T) e = T; - else { - e--; - for (var t = 1; t < 32; t <<= 1) e |= e >> t; - e++ - } - return e - } - - function u(e, t) { - return 0 === t.length && t.ended ? 0 : t.objectMode ? 0 === e ? 0 : 1 : isNaN(e) || R.isNull(e) ? t.flowing && t.buffer.length ? t.buffer[0].length : t.length : e <= 0 ? 0 : (e > t.highWaterMark && (t.highWaterMark = s(e)), e > t.length ? t.ended ? t.length : (t.needReadable = !0, 0) : e) - } - - function h(e, t) { - var r = null; - return R.isBuffer(t) || R.isString(t) || R.isNullOrUndefined(t) || e.objectMode || (r = new TypeError("Invalid non-string/buffer chunk")), r - } - - function f(e, t) { - if (t.decoder && !t.ended) { - var r = t.decoder.end(); - r && r.length && (t.buffer.push(r), t.length += t.objectMode ? 1 : r.length) - } - t.ended = !0, c(e) - } - - function c(e) { - var r = e._readableState; - r.needReadable = !1, r.emittedReadable || (I("emitReadable", r.flowing), r.emittedReadable = !0, r.sync ? t.nextTick(function () { - l(e) - }) : l(e)) - } - - function l(e) { - I("emit readable"), e.emit("readable"), v(e) - } - - function d(e, r) { - r.readingMore || (r.readingMore = !0, t.nextTick(function () { - p(e, r) - })) - } - - function p(e, t) { - for (var r = t.length; !t.reading && !t.flowing && !t.ended && t.length < t.highWaterMark && (I("maybeReadMore read 0"), e.read(0), r !== t.length);) r = t.length; - t.readingMore = !1 - } - - function g(e) { - return function () { - var t = e._readableState; - I("pipeOnDrain", t.awaitDrain), t.awaitDrain && t.awaitDrain--, 0 === t.awaitDrain && x.listenerCount(e, "data") && (t.flowing = !0, v(e)) - } - } - - function m(e, r) { - r.resumeScheduled || (r.resumeScheduled = !0, t.nextTick(function () { - _(e, r) - })) - } - - function _(e, t) { - t.resumeScheduled = !1, e.emit("resume"), v(e), t.flowing && !t.reading && e.read(0) - } - - function v(e) { - var t = e._readableState; - if (I("flow", t.flowing), t.flowing) - do var r = e.read(); while (null !== r && t.flowing) - } - - function w(e, t) { - var r, n = t.buffer, - i = t.length, - o = !!t.decoder, - a = !!t.objectMode; - if (0 === n.length) return null; - if (0 === i) r = null; - else if (a) r = n.shift(); - else if (!e || e >= i) r = o ? n.join("") : S.concat(n, i), n.length = 0; - else if (e < n[0].length) { - var s = n[0]; - r = s.slice(0, e), n[0] = s.slice(e) - } else if (e === n[0].length) r = n.shift(); - else { - r = o ? "" : new S(e); - for (var u = 0, h = 0, f = n.length; h < f && u < e; h++) { - var s = n[0], - c = Math.min(e - u, s.length); - o ? r += s.slice(0, c) : s.copy(r, u, 0, c), c < s.length ? n[0] = s.slice(c) : n.shift(), u += c - } - } - return r - } - - function b(e) { - var r = e._readableState; - if (r.length > 0) throw new Error("endReadable called on non-empty stream"); - r.endEmitted || (r.ended = !0, t.nextTick(function () { - r.endEmitted || 0 !== r.length || (r.endEmitted = !0, e.readable = !1, e.emit("end")) - })) - } - - function y(e, t) { - for (var r = 0, n = e.length; r < n; r++) t(e[r], r) - } - - function k(e, t) { - for (var r = 0, n = e.length; r < n; r++) - if (e[r] === t) return r; - return -1 - } - e.exports = i; - var E = r(18), - S = r(6).Buffer; - i.ReadableState = n; - var x = r(13).EventEmitter; - x.listenerCount || (x.listenerCount = function (e, t) { - return e.listeners(t).length - }); - var A = r(12), - R = r(19); - R.inherits = r(14); - var C, I = r(20); - I = I && I.debuglog ? I.debuglog("stream") : function () {}, - R.inherits(i, A), i.prototype.push = function (e, t) { - var r = this._readableState; - return R.isString(e) && !r.objectMode && (t = t || r.defaultEncoding, t !== r.encoding && (e = new S(e, t), t = "")), o(this, r, e, t, !1) - }, i.prototype.unshift = function (e) { - var t = this._readableState; - return o(this, t, e, "", !0) - }, i.prototype.setEncoding = function (e) { - return C || (C = r(23).StringDecoder), this._readableState.decoder = new C(e), this._readableState.encoding = e, this - }; - var T = 8388608; - i.prototype.read = function (e) { - I("read", e); - var t = this._readableState, - r = e; - if ((!R.isNumber(e) || e > 0) && (t.emittedReadable = !1), 0 === e && t.needReadable && (t.length >= t.highWaterMark || t.ended)) return I("read: emitReadable", t.length, t.ended), 0 === t.length && t.ended ? b(this) : c(this), null; - if (e = u(e, t), 0 === e && t.ended) return 0 === t.length && b(this), null; - var n = t.needReadable; - I("need readable", n), (0 === t.length || t.length - e < t.highWaterMark) && (n = !0, I("length less than watermark", n)), (t.ended || t.reading) && (n = !1, I("reading or ended", n)), n && (I("do read"), t.reading = !0, t.sync = !0, 0 === t.length && (t.needReadable = !0), this._read(t.highWaterMark), t.sync = !1), n && !t.reading && (e = u(r, t)); - var i; - return i = e > 0 ? w(e, t) : null, R.isNull(i) && (t.needReadable = !0, e = 0), t.length -= e, 0 !== t.length || t.ended || (t.needReadable = !0), r !== e && t.ended && 0 === t.length && b(this), R.isNull(i) || this.emit("data", i), i - }, i.prototype._read = function (e) { - this.emit("error", new Error("not implemented")) - }, i.prototype.pipe = function (e, r) { - function n(e) { - I("onunpipe"), e === c && o() - } - - function i() { - I("onend"), e.end() - } - - function o() { - I("cleanup"), e.removeListener("close", u), e.removeListener("finish", h), e.removeListener("drain", m), e.removeListener("error", s), e.removeListener("unpipe", n), c.removeListener("end", i), c.removeListener("end", o), c.removeListener("data", a), !l.awaitDrain || e._writableState && !e._writableState.needDrain || m() - } - - function a(t) { - I("ondata"); - var r = e.write(t); - !1 === r && (I("false write response, pause", c._readableState.awaitDrain), c._readableState.awaitDrain++, c.pause()) - } - - function s(t) { - I("onerror", t), f(), e.removeListener("error", s), 0 === x.listenerCount(e, "error") && e.emit("error", t) - } - - function u() { - e.removeListener("finish", h), f() - } - - function h() { - I("onfinish"), e.removeListener("close", u), f() - } - - function f() { - I("unpipe"), c.unpipe(e) - } - var c = this, - l = this._readableState; - switch (l.pipesCount) { - case 0: - l.pipes = e; - break; - case 1: - l.pipes = [l.pipes, e]; - break; - default: - l.pipes.push(e) - } - l.pipesCount += 1, I("pipe count=%d opts=%j", l.pipesCount, r); - var d = (!r || r.end !== !1) && e !== t.stdout && e !== t.stderr, - p = d ? i : o; - l.endEmitted ? t.nextTick(p) : c.once("end", p), e.on("unpipe", n); - var m = g(c); - return e.on("drain", m), c.on("data", a), e._events && e._events.error ? E(e._events.error) ? e._events.error.unshift(s) : e._events.error = [s, e._events.error] : e.on("error", s), e.once("close", u), e.once("finish", h), e.emit("pipe", c), l.flowing || (I("pipe resume"), c.resume()), e - }, i.prototype.unpipe = function (e) { - var t = this._readableState; - if (0 === t.pipesCount) return this; - if (1 === t.pipesCount) return e && e !== t.pipes ? this : (e || (e = t.pipes), t.pipes = null, t.pipesCount = 0, t.flowing = !1, e && e.emit("unpipe", this), this); - if (!e) { - var r = t.pipes, - n = t.pipesCount; - t.pipes = null, t.pipesCount = 0, t.flowing = !1; - for (var i = 0; i < n; i++) r[i].emit("unpipe", this); - return this - } - var i = k(t.pipes, e); - return i === -1 ? this : (t.pipes.splice(i, 1), t.pipesCount -= 1, 1 === t.pipesCount && (t.pipes = t.pipes[0]), e.emit("unpipe", this), this) - }, i.prototype.on = function (e, r) { - var n = A.prototype.on.call(this, e, r); - if ("data" === e && !1 !== this._readableState.flowing && this.resume(), "readable" === e && this.readable) { - var i = this._readableState; - if (!i.readableListening) - if (i.readableListening = !0, i.emittedReadable = !1, i.needReadable = !0, i.reading) i.length && c(this, i); - else { - var o = this; - t.nextTick(function () { - I("readable nexttick read 0"), o.read(0) - }) - } - } - return n - }, i.prototype.addListener = i.prototype.on, i.prototype.resume = function () { - var e = this._readableState; - return e.flowing || (I("resume"), e.flowing = !0, e.reading || (I("resume read 0"), this.read(0)), m(this, e)), this - }, i.prototype.pause = function () { - return I("call pause flowing=%j", this._readableState.flowing), !1 !== this._readableState.flowing && (I("pause"), this._readableState.flowing = !1, this.emit("pause")), this - }, i.prototype.wrap = function (e) { - var t = this._readableState, - r = !1, - n = this; - e.on("end", function () { - if (I("wrapped end"), t.decoder && !t.ended) { - var e = t.decoder.end(); - e && e.length && n.push(e) - } - n.push(null) - }), e.on("data", function (i) { - if (I("wrapped data"), t.decoder && (i = t.decoder.write(i)), i && (t.objectMode || i.length)) { - var o = n.push(i); - o || (r = !0, e.pause()) - } - }); - for (var i in e) R.isFunction(e[i]) && R.isUndefined(this[i]) && (this[i] = function (t) { - return function () { - return e[t].apply(e, arguments) - } - }(i)); - var o = ["error", "close", "destroy", "pause", "resume"]; - return y(o, function (t) { - e.on(t, n.emit.bind(n, t)) - }), n._read = function (t) { - I("wrapped _read", t), r && (r = !1, e.resume()) - }, n - }, i._fromList = w - }).call(t, r(16)) - }, function (e, t) { - e.exports = Array.isArray || function (e) { - return "[object Array]" == Object.prototype.toString.call(e) - } - }, function (e, t, r) { - (function (e) { - function r(e) { - return Array.isArray ? Array.isArray(e) : "[object Array]" === m(e) - } - - function n(e) { - return "boolean" == typeof e - } - - function i(e) { - return null === e - } - - function o(e) { - return null == e - } - - function a(e) { - return "number" == typeof e - } - - function s(e) { - return "string" == typeof e - } - - function u(e) { - return "symbol" == typeof e - } - - function h(e) { - return void 0 === e - } - - function f(e) { - return "[object RegExp]" === m(e) - } - - function c(e) { - return "object" == typeof e && null !== e - } - - function l(e) { - return "[object Date]" === m(e) - } - - function d(e) { - return "[object Error]" === m(e) || e instanceof Error - } - - function p(e) { - return "function" == typeof e - } - - function g(e) { - return null === e || "boolean" == typeof e || "number" == typeof e || "string" == typeof e || "symbol" == typeof e || "undefined" == typeof e - } - - function m(e) { - return Object.prototype.toString.call(e) - } - t.isArray = r, t.isBoolean = n, t.isNull = i, t.isNullOrUndefined = o, t.isNumber = a, t.isString = s, t.isSymbol = u, t.isUndefined = h, t.isRegExp = f, t.isObject = c, t.isDate = l, t.isError = d, t.isFunction = p, t.isPrimitive = g, t.isBuffer = e.isBuffer - }).call(t, r(6).Buffer) - }, function (e, t) {}, function (e, t, r) { - (function (t) { - function n(e) { - return this instanceof n ? (u.call(this, e), h.call(this, e), e && e.readable === !1 && (this.readable = !1), e && e.writable === !1 && (this.writable = !1), this.allowHalfOpen = !0, e && e.allowHalfOpen === !1 && (this.allowHalfOpen = !1), void this.once("end", i)) : new n(e) - } - - function i() { - this.allowHalfOpen || this._writableState.ended || t.nextTick(this.end.bind(this)) - } - - function o(e, t) { - for (var r = 0, n = e.length; r < n; r++) t(e[r], r) - } - e.exports = n; - var a = Object.keys || function (e) { - var t = []; - for (var r in e) t.push(r); - return t - }, - s = r(19); - s.inherits = r(14); - var u = r(17), - h = r(22); - s.inherits(n, u), o(a(h.prototype), function (e) { - n.prototype[e] || (n.prototype[e] = h.prototype[e]) - }) - }).call(t, r(16)) - }, function (e, t, r) { - (function (t) { - function n(e, t, r) { - this.chunk = e, this.encoding = t, this.callback = r - } - - function i(e, t) { - var n = r(21); - e = e || {}; - var i = e.highWaterMark, - o = e.objectMode ? 16 : 16384; - this.highWaterMark = i || 0 === i ? i : o, this.objectMode = !!e.objectMode, t instanceof n && (this.objectMode = this.objectMode || !!e.writableObjectMode), this.highWaterMark = ~~this.highWaterMark, this.needDrain = !1, this.ending = !1, this.ended = !1, this.finished = !1; - var a = e.decodeStrings === !1; - this.decodeStrings = !a, this.defaultEncoding = e.defaultEncoding || "utf8", this.length = 0, this.writing = !1, this.corked = 0, this.sync = !0, this.bufferProcessing = !1, this.onwrite = function (e) { - d(t, e) - }, this.writecb = null, this.writelen = 0, this.buffer = [], this.pendingcb = 0, this.prefinished = !1, this.errorEmitted = !1 - } - - function o(e) { - var t = r(21); - return this instanceof o || this instanceof t ? (this._writableState = new i(e, this), this.writable = !0, void E.call(this)) : new o(e) - } - - function a(e, r, n) { - var i = new Error("write after end"); - e.emit("error", i), t.nextTick(function () { - n(i) - }) - } - - function s(e, r, n, i) { - var o = !0; - if (!(k.isBuffer(n) || k.isString(n) || k.isNullOrUndefined(n) || r.objectMode)) { - var a = new TypeError("Invalid non-string/buffer chunk"); - e.emit("error", a), t.nextTick(function () { - i(a) - }), o = !1 - } - return o - } - - function u(e, t, r) { - return !e.objectMode && e.decodeStrings !== !1 && k.isString(t) && (t = new y(t, r)), t - } - - function h(e, t, r, i, o) { - r = u(t, r, i), k.isBuffer(r) && (i = "buffer"); - var a = t.objectMode ? 1 : r.length; - t.length += a; - var s = t.length < t.highWaterMark; - return s || (t.needDrain = !0), t.writing || t.corked ? t.buffer.push(new n(r, i, o)) : f(e, t, !1, a, r, i, o), s - } - - function f(e, t, r, n, i, o, a) { - t.writelen = n, t.writecb = a, t.writing = !0, t.sync = !0, r ? e._writev(i, t.onwrite) : e._write(i, o, t.onwrite), t.sync = !1 - } - - function c(e, r, n, i, o) { - n ? t.nextTick(function () { - r.pendingcb--, o(i) - }) : (r.pendingcb--, o(i)), e._writableState.errorEmitted = !0, e.emit("error", i) - } - - function l(e) { - e.writing = !1, e.writecb = null, e.length -= e.writelen, e.writelen = 0 - } - - function d(e, r) { - var n = e._writableState, - i = n.sync, - o = n.writecb; - if (l(n), r) c(e, n, i, r, o); - else { - var a = _(e, n); - a || n.corked || n.bufferProcessing || !n.buffer.length || m(e, n), i ? t.nextTick(function () { - p(e, n, a, o) - }) : p(e, n, a, o) - } - } - - function p(e, t, r, n) { - r || g(e, t), t.pendingcb--, n(), w(e, t) - } - - function g(e, t) { - 0 === t.length && t.needDrain && (t.needDrain = !1, e.emit("drain")) - } - - function m(e, t) { - if (t.bufferProcessing = !0, e._writev && t.buffer.length > 1) { - for (var r = [], n = 0; n < t.buffer.length; n++) r.push(t.buffer[n].callback); - t.pendingcb++, f(e, t, !0, t.length, t.buffer, "", function (e) { - for (var n = 0; n < r.length; n++) t.pendingcb--, r[n](e) - }), t.buffer = [] - } else { - for (var n = 0; n < t.buffer.length; n++) { - var i = t.buffer[n], - o = i.chunk, - a = i.encoding, - s = i.callback, - u = t.objectMode ? 1 : o.length; - if (f(e, t, !1, u, o, a, s), t.writing) { - n++; - break - } - } - n < t.buffer.length ? t.buffer = t.buffer.slice(n) : t.buffer.length = 0 - } - t.bufferProcessing = !1 - } - - function _(e, t) { - return t.ending && 0 === t.length && !t.finished && !t.writing - } - - function v(e, t) { - t.prefinished || (t.prefinished = !0, e.emit("prefinish")) - } - - function w(e, t) { - var r = _(e, t); - return r && (0 === t.pendingcb ? (v(e, t), t.finished = !0, e.emit("finish")) : v(e, t)), r - } - - function b(e, r, n) { - r.ending = !0, w(e, r), n && (r.finished ? t.nextTick(n) : e.once("finish", n)), r.ended = !0 - } - e.exports = o; - var y = r(6).Buffer; - o.WritableState = i; - var k = r(19); - k.inherits = r(14); - var E = r(12); - k.inherits(o, E), o.prototype.pipe = function () { - this.emit("error", new Error("Cannot pipe. Not readable.")) - }, o.prototype.write = function (e, t, r) { - var n = this._writableState, - i = !1; - return k.isFunction(t) && (r = t, t = null), k.isBuffer(e) ? t = "buffer" : t || (t = n.defaultEncoding), k.isFunction(r) || (r = function () {}), n.ended ? a(this, n, r) : s(this, n, e, r) && (n.pendingcb++, i = h(this, n, e, t, r)), i - }, o.prototype.cork = function () { - var e = this._writableState; - e.corked++ - }, o.prototype.uncork = function () { - var e = this._writableState; - e.corked && (e.corked--, e.writing || e.corked || e.finished || e.bufferProcessing || !e.buffer.length || m(this, e)) - }, o.prototype._write = function (e, t, r) { - r(new Error("not implemented")) - }, o.prototype._writev = null, o.prototype.end = function (e, t, r) { - var n = this._writableState; - k.isFunction(e) ? (r = e, e = null, t = null) : k.isFunction(t) && (r = t, t = null), k.isNullOrUndefined(e) || this.write(e, t), n.corked && (n.corked = 1, this.uncork()), n.ending || n.finished || b(this, n, r) - } - }).call(t, r(16)) - }, function (e, t, r) { - function n(e) { - if (e && !u(e)) throw new Error("Unknown encoding: " + e) - } - - function i(e) { - return e.toString(this.encoding) - } - - function o(e) { - this.charReceived = e.length % 2, this.charLength = this.charReceived ? 2 : 0 - } - - function a(e) { - this.charReceived = e.length % 3, this.charLength = this.charReceived ? 3 : 0 - } - var s = r(6).Buffer, - u = s.isEncoding || function (e) { - switch (e && e.toLowerCase()) { - case "hex": - case "utf8": - case "utf-8": - case "ascii": - case "binary": - case "base64": - case "ucs2": - case "ucs-2": - case "utf16le": - case "utf-16le": - case "raw": - return !0; - default: - return !1 - } - }, - h = t.StringDecoder = function (e) { - switch (this.encoding = (e || "utf8").toLowerCase().replace(/[-_]/, ""), n(e), this.encoding) { - case "utf8": - this.surrogateSize = 3; - break; - case "ucs2": - case "utf16le": - this.surrogateSize = 2, this.detectIncompleteChar = o; - break; - case "base64": - this.surrogateSize = 3, this.detectIncompleteChar = a; - break; - default: - return void(this.write = i) - } - this.charBuffer = new s(6), this.charReceived = 0, this.charLength = 0 - }; - h.prototype.write = function (e) { - for (var t = ""; this.charLength;) { - var r = e.length >= this.charLength - this.charReceived ? this.charLength - this.charReceived : e.length; - if (e.copy(this.charBuffer, this.charReceived, 0, r), this.charReceived += r, this.charReceived < this.charLength) return ""; - e = e.slice(r, e.length), t = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - var n = t.charCodeAt(t.length - 1); - if (!(n >= 55296 && n <= 56319)) { - if (this.charReceived = this.charLength = 0, 0 === e.length) return t; - break - } - this.charLength += this.surrogateSize, t = "" - } - this.detectIncompleteChar(e); - var i = e.length; - this.charLength && (e.copy(this.charBuffer, 0, e.length - this.charReceived, i), i -= this.charReceived), t += e.toString(this.encoding, 0, i); - var i = t.length - 1, - n = t.charCodeAt(i); - if (n >= 55296 && n <= 56319) { - var o = this.surrogateSize; - return this.charLength += o, this.charReceived += o, this.charBuffer.copy(this.charBuffer, o, 0, o), e.copy(this.charBuffer, 0, 0, o), t.substring(0, i) - } - return t - }, h.prototype.detectIncompleteChar = function (e) { - for (var t = e.length >= 3 ? 3 : e.length; t > 0; t--) { - var r = e[e.length - t]; - if (1 == t && r >> 5 == 6) { - this.charLength = 2; - break - } - if (t <= 2 && r >> 4 == 14) { - this.charLength = 3; - break - } - if (t <= 3 && r >> 3 == 30) { - this.charLength = 4; - break - } - } - this.charReceived = t - }, h.prototype.end = function (e) { - var t = ""; - if (e && e.length && (t = this.write(e)), this.charReceived) { - var r = this.charReceived, - n = this.charBuffer, - i = this.encoding; - t += n.slice(0, r).toString(i) - } - return t - } - }, function (e, t, r) { - function n(e, t) { - this.afterTransform = function (e, r) { - return i(t, e, r) - }, this.needTransform = !1, this.transforming = !1, this.writecb = null, this.writechunk = null - } - - function i(e, t, r) { - var n = e._transformState; - n.transforming = !1; - var i = n.writecb; - if (!i) return e.emit("error", new Error("no writecb in Transform class")); - n.writechunk = null, n.writecb = null, u.isNullOrUndefined(r) || e.push(r), i && i(t); - var o = e._readableState; - o.reading = !1, (o.needReadable || o.length < o.highWaterMark) && e._read(o.highWaterMark) - } - - function o(e) { - if (!(this instanceof o)) return new o(e); - s.call(this, e), this._transformState = new n(e, this); - var t = this; - this._readableState.needReadable = !0, this._readableState.sync = !1, this.once("prefinish", function () { - u.isFunction(this._flush) ? this._flush(function (e) { - a(t, e) - }) : a(t) - }) - } - - function a(e, t) { - if (t) return e.emit("error", t); - var r = e._writableState, - n = e._transformState; - if (r.length) throw new Error("calling transform done when ws.length != 0"); - if (n.transforming) throw new Error("calling transform done when still transforming"); - return e.push(null) - } - e.exports = o; - var s = r(21), - u = r(19); - u.inherits = r(14), u.inherits(o, s), o.prototype.push = function (e, t) { - return this._transformState.needTransform = !1, s.prototype.push.call(this, e, t) - }, o.prototype._transform = function (e, t, r) { - throw new Error("not implemented") - }, o.prototype._write = function (e, t, r) { - var n = this._transformState; - if (n.writecb = r, n.writechunk = e, n.writeencoding = t, !n.transforming) { - var i = this._readableState; - (n.needTransform || i.needReadable || i.length < i.highWaterMark) && this._read(i.highWaterMark) - } - }, o.prototype._read = function (e) { - var t = this._transformState; - u.isNull(t.writechunk) || !t.writecb || t.transforming ? t.needTransform = !0 : (t.transforming = !0, this._transform(t.writechunk, t.writeencoding, t.afterTransform)) - } - }, function (e, t, r) { - function n(e) { - return this instanceof n ? void i.call(this, e) : new n(e) - } - e.exports = n; - var i = r(24), - o = r(19); - o.inherits = r(14), o.inherits(n, i), n.prototype._transform = function (e, t, r) { - r(null, e) - } - }, function (e, t, r) { - e.exports = r(22) - }, function (e, t, r) { - e.exports = r(21) - }, function (e, t, r) { - e.exports = r(24) - }, function (e, t, r) { - e.exports = r(25) - }, function (e, t, r) { - (function (t) { - "use strict"; - - function n(e, t) { - L = L || r(33), e = e || {}, this.objectMode = !!e.objectMode, t instanceof L && (this.objectMode = this.objectMode || !!e.readableObjectMode); - var n = e.highWaterMark, - i = this.objectMode ? 16 : 16384; - this.highWaterMark = n || 0 === n ? n : i, this.highWaterMark = ~~this.highWaterMark, this.buffer = [], this.length = 0, this.pipes = null, this.pipesCount = 0, this.flowing = null, this.ended = !1, this.endEmitted = !1, this.reading = !1, this.sync = !0, this.needReadable = !1, this.emittedReadable = !1, this.readableListening = !1, this.resumeScheduled = !1, this.defaultEncoding = e.defaultEncoding || "utf8", this.ranOut = !1, this.awaitDrain = 0, this.readingMore = !1, this.decoder = null, this.encoding = null, e.encoding && (z || (z = r(23).StringDecoder), this.decoder = new z(e.encoding), this.encoding = e.encoding) - } - - function i(e) { - return L = L || r(33), this instanceof i ? (this._readableState = new n(e, this), this.readable = !0, e && "function" == typeof e.read && (this._read = e.read), void C.call(this)) : new i(e) - } - - function o(e, t, r, n, i) { - var o = h(t, r); - if (o) e.emit("error", o); - else if (null === r) t.reading = !1, f(e, t); - else if (t.objectMode || r && r.length > 0) - if (t.ended && !i) { - var s = new Error("stream.push() after EOF"); - e.emit("error", s) - } else if (t.endEmitted && i) { - var s = new Error("stream.unshift() after end event"); - e.emit("error", s) - } else { - var u; - !t.decoder || i || n || (r = t.decoder.write(r), u = !t.objectMode && 0 === r.length), i || (t.reading = !1), u || (t.flowing && 0 === t.length && !t.sync ? (e.emit("data", r), e.read(0)) : (t.length += t.objectMode ? 1 : r.length, i ? t.buffer.unshift(r) : t.buffer.push(r), t.needReadable && c(e))), d(e, t) - } else i || (t.reading = !1); - return a(t) - } - - function a(e) { - return !e.ended && (e.needReadable || e.length < e.highWaterMark || 0 === e.length) - } - - function s(e) { - return e >= D ? e = D : (e--, e |= e >>> 1, e |= e >>> 2, e |= e >>> 4, e |= e >>> 8, e |= e >>> 16, e++), e - } - - function u(e, t) { - return 0 === t.length && t.ended ? 0 : t.objectMode ? 0 === e ? 0 : 1 : null === e || isNaN(e) ? t.flowing && t.buffer.length ? t.buffer[0].length : t.length : e <= 0 ? 0 : (e > t.highWaterMark && (t.highWaterMark = s(e)), e > t.length ? t.ended ? t.length : (t.needReadable = !0, 0) : e) - } - - function h(e, t) { - var r = null; - return R.isBuffer(t) || "string" == typeof t || null === t || void 0 === t || e.objectMode || (r = new TypeError("Invalid non-string/buffer chunk")), r - } - - function f(e, t) { - if (!t.ended) { - if (t.decoder) { - var r = t.decoder.end(); - r && r.length && (t.buffer.push(r), t.length += t.objectMode ? 1 : r.length) - } - t.ended = !0, c(e) - } - } - - function c(e) { - var t = e._readableState; - t.needReadable = !1, t.emittedReadable || (O("emitReadable", t.flowing), t.emittedReadable = !0, t.sync ? x(l, e) : l(e)) - } - - function l(e) { - O("emit readable"), e.emit("readable"), w(e) - } - - function d(e, t) { - t.readingMore || (t.readingMore = !0, x(p, e, t)) - } - - function p(e, t) { - for (var r = t.length; !t.reading && !t.flowing && !t.ended && t.length < t.highWaterMark && (O("maybeReadMore read 0"), e.read(0), r !== t.length);) r = t.length; - t.readingMore = !1 - } - - function g(e) { - return function () { - var t = e._readableState; - O("pipeOnDrain", t.awaitDrain), t.awaitDrain && t.awaitDrain--, 0 === t.awaitDrain && I(e, "data") && (t.flowing = !0, w(e)) - } - } - - function m(e) { - O("readable nexttick read 0"), e.read(0) - } - - function _(e, t) { - t.resumeScheduled || (t.resumeScheduled = !0, x(v, e, t)) - } - - function v(e, t) { - t.reading || (O("resume read 0"), e.read(0)), t.resumeScheduled = !1, e.emit("resume"), w(e), t.flowing && !t.reading && e.read(0) - } - - function w(e) { - var t = e._readableState; - if (O("flow", t.flowing), t.flowing) - do var r = e.read(); while (null !== r && t.flowing) - } - - function b(e, t) { - var r, n = t.buffer, - i = t.length, - o = !!t.decoder, - a = !!t.objectMode; - if (0 === n.length) return null; - if (0 === i) r = null; - else if (a) r = n.shift(); - else if (!e || e >= i) r = o ? n.join("") : 1 === n.length ? n[0] : R.concat(n, i), n.length = 0; - else if (e < n[0].length) { - var s = n[0]; - r = s.slice(0, e), n[0] = s.slice(e) - } else if (e === n[0].length) r = n.shift(); - else { - r = o ? "" : new R(e); - for (var u = 0, h = 0, f = n.length; h < f && u < e; h++) { - var s = n[0], - c = Math.min(e - u, s.length); - o ? r += s.slice(0, c) : s.copy(r, u, 0, c), c < s.length ? n[0] = s.slice(c) : n.shift(), u += c - } - } - return r - } - - function y(e) { - var t = e._readableState; - if (t.length > 0) throw new Error("endReadable called on non-empty stream"); - t.endEmitted || (t.ended = !0, x(k, t, e)) - } - - function k(e, t) { - e.endEmitted || 0 !== e.length || (e.endEmitted = !0, t.readable = !1, t.emit("end")) - } - - function E(e, t) { - for (var r = 0, n = e.length; r < n; r++) t(e[r], r) - } - - function S(e, t) { - for (var r = 0, n = e.length; r < n; r++) - if (e[r] === t) return r; - return -1 - } - e.exports = i; - var x = r(31), - A = r(9), - R = r(6).Buffer; - i.ReadableState = n; - var C, I = (r(13), function (e, t) { - return e.listeners(t).length - }); - ! function () { - try { - C = r(12) - } catch (e) {} finally { - C || (C = r(13).EventEmitter) - } - }(); - var R = r(6).Buffer, - T = r(19); - T.inherits = r(14); - var B = r(32), - O = void 0; - O = B && B.debuglog ? B.debuglog("stream") : function () {}; - var z; - T.inherits(i, C); - var L, L; - i.prototype.push = function (e, t) { - var r = this._readableState; - return r.objectMode || "string" != typeof e || (t = t || r.defaultEncoding, t !== r.encoding && (e = new R(e, t), t = "")), o(this, r, e, t, !1) - }, i.prototype.unshift = function (e) { - var t = this._readableState; - return o(this, t, e, "", !0) - }, i.prototype.isPaused = function () { - return this._readableState.flowing === !1 - }, i.prototype.setEncoding = function (e) { - return z || (z = r(23).StringDecoder), this._readableState.decoder = new z(e), this._readableState.encoding = e, this - }; - var D = 8388608; - i.prototype.read = function (e) { - O("read", e); - var t = this._readableState, - r = e; - if (("number" != typeof e || e > 0) && (t.emittedReadable = !1), 0 === e && t.needReadable && (t.length >= t.highWaterMark || t.ended)) return O("read: emitReadable", t.length, t.ended), 0 === t.length && t.ended ? y(this) : c(this), null; - if (e = u(e, t), 0 === e && t.ended) return 0 === t.length && y(this), null; - var n = t.needReadable; - O("need readable", n), (0 === t.length || t.length - e < t.highWaterMark) && (n = !0, O("length less than watermark", n)), (t.ended || t.reading) && (n = !1, O("reading or ended", n)), n && (O("do read"), t.reading = !0, t.sync = !0, 0 === t.length && (t.needReadable = !0), this._read(t.highWaterMark), t.sync = !1), n && !t.reading && (e = u(r, t)); - var i; - return i = e > 0 ? b(e, t) : null, null === i && (t.needReadable = !0, e = 0), t.length -= e, 0 !== t.length || t.ended || (t.needReadable = !0), r !== e && t.ended && 0 === t.length && y(this), null !== i && this.emit("data", i), i - }, i.prototype._read = function (e) { - this.emit("error", new Error("not implemented")) - }, i.prototype.pipe = function (e, r) { - function n(e) { - O("onunpipe"), e === c && o() - } - - function i() { - O("onend"), e.end() - } - - function o() { - O("cleanup"), e.removeListener("close", u), e.removeListener("finish", h), e.removeListener("drain", m), e.removeListener("error", s), e.removeListener("unpipe", n), c.removeListener("end", i), c.removeListener("end", o), c.removeListener("data", a), _ = !0, !l.awaitDrain || e._writableState && !e._writableState.needDrain || m() - } - - function a(t) { - O("ondata"); - var r = e.write(t); - !1 === r && (1 !== l.pipesCount || l.pipes[0] !== e || 1 !== c.listenerCount("data") || _ || (O("false write response, pause", c._readableState.awaitDrain), c._readableState.awaitDrain++), c.pause()) - } - - function s(t) { - O("onerror", t), f(), e.removeListener("error", s), 0 === I(e, "error") && e.emit("error", t) - } - - function u() { - e.removeListener("finish", h), f() - } - - function h() { - O("onfinish"), e.removeListener("close", u), f() - } - - function f() { - O("unpipe"), c.unpipe(e) - } - var c = this, - l = this._readableState; - switch (l.pipesCount) { - case 0: - l.pipes = e; - break; - case 1: - l.pipes = [l.pipes, e]; - break; - default: - l.pipes.push(e) - } - l.pipesCount += 1, O("pipe count=%d opts=%j", l.pipesCount, r); - var d = (!r || r.end !== !1) && e !== t.stdout && e !== t.stderr, - p = d ? i : o; - l.endEmitted ? x(p) : c.once("end", p), e.on("unpipe", n); - var m = g(c); - e.on("drain", m); - var _ = !1; - return c.on("data", a), e._events && e._events.error ? A(e._events.error) ? e._events.error.unshift(s) : e._events.error = [s, e._events.error] : e.on("error", s), e.once("close", u), e.once("finish", h), e.emit("pipe", c), l.flowing || (O("pipe resume"), c.resume()), e - }, i.prototype.unpipe = function (e) { - var t = this._readableState; - if (0 === t.pipesCount) return this; - if (1 === t.pipesCount) return e && e !== t.pipes ? this : (e || (e = t.pipes), t.pipes = null, t.pipesCount = 0, t.flowing = !1, e && e.emit("unpipe", this), this); - if (!e) { - var r = t.pipes, - n = t.pipesCount; - t.pipes = null, t.pipesCount = 0, t.flowing = !1; - for (var i = 0; i < n; i++) r[i].emit("unpipe", this); - return this - } - var o = S(t.pipes, e); - return o === -1 ? this : (t.pipes.splice(o, 1), t.pipesCount -= 1, 1 === t.pipesCount && (t.pipes = t.pipes[0]), e.emit("unpipe", this), this) - }, i.prototype.on = function (e, t) { - var r = C.prototype.on.call(this, e, t); - if ("data" === e && !1 !== this._readableState.flowing && this.resume(), "readable" === e && !this._readableState.endEmitted) { - var n = this._readableState; - n.readableListening || (n.readableListening = !0, n.emittedReadable = !1, n.needReadable = !0, n.reading ? n.length && c(this, n) : x(m, this)) - } - return r - }, i.prototype.addListener = i.prototype.on, i.prototype.resume = function () { - var e = this._readableState; - return e.flowing || (O("resume"), e.flowing = !0, _(this, e)), this - }, i.prototype.pause = function () { - return O("call pause flowing=%j", this._readableState.flowing), !1 !== this._readableState.flowing && (O("pause"), this._readableState.flowing = !1, this.emit("pause")), this - }, i.prototype.wrap = function (e) { - var t = this._readableState, - r = !1, - n = this; - e.on("end", function () { - if (O("wrapped end"), t.decoder && !t.ended) { - var e = t.decoder.end(); - e && e.length && n.push(e) - } - n.push(null) - }), e.on("data", function (i) { - if (O("wrapped data"), t.decoder && (i = t.decoder.write(i)), (!t.objectMode || null !== i && void 0 !== i) && (t.objectMode || i && i.length)) { - var o = n.push(i); - o || (r = !0, e.pause()) - } - }); - for (var i in e) void 0 === this[i] && "function" == typeof e[i] && (this[i] = function (t) { - return function () { - return e[t].apply(e, arguments) - } - }(i)); - var o = ["error", "close", "destroy", "pause", "resume"]; - return E(o, function (t) { - e.on(t, n.emit.bind(n, t)) - }), n._read = function (t) { - O("wrapped _read", t), r && (r = !1, e.resume()) - }, n - }, i._fromList = b - }).call(t, r(16)) - }, function (e, t, r) { - (function (t) { - "use strict"; - - function r(e, r, n, i) { - if ("function" != typeof e) throw new TypeError('"callback" argument must be a function'); - var o, a, s = arguments.length; - switch (s) { - case 0: - case 1: - return t.nextTick(e); - case 2: - return t.nextTick(function () { - e.call(null, r) - }); - case 3: - return t.nextTick(function () { - e.call(null, r, n) - }); - case 4: - return t.nextTick(function () { - e.call(null, r, n, i) - }); - default: - for (o = new Array(s - 1), a = 0; a < o.length;) o[a++] = arguments[a]; - return t.nextTick(function () { - e.apply(null, o) - }) - } - }!t.version || 0 === t.version.indexOf("v0.") || 0 === t.version.indexOf("v1.") && 0 !== t.version.indexOf("v1.8.") ? e.exports = r : e.exports = t.nextTick - }).call(t, r(16)) - }, function (e, t) {}, function (e, t, r) { - "use strict"; - - function n(e) { - return this instanceof n ? (h.call(this, e), f.call(this, e), e && e.readable === !1 && (this.readable = !1), e && e.writable === !1 && (this.writable = !1), this.allowHalfOpen = !0, e && e.allowHalfOpen === !1 && (this.allowHalfOpen = !1), void this.once("end", i)) : new n(e) - } - - function i() { - this.allowHalfOpen || this._writableState.ended || s(o, this) - } - - function o(e) { - e.end() - } - var a = Object.keys || function (e) { - var t = []; - for (var r in e) t.push(r); - return t - }; - e.exports = n; - var s = r(31), - u = r(19); - u.inherits = r(14); - var h = r(30), - f = r(34); - u.inherits(n, h); - for (var c = a(f.prototype), l = 0; l < c.length; l++) { - var d = c[l]; - n.prototype[d] || (n.prototype[d] = f.prototype[d]) - } - }, function (e, t, r) { - (function (t, n) { - "use strict"; - - function i() {} - - function o(e, t, r) { - this.chunk = e, this.encoding = t, this.callback = r, this.next = null - } - - function a(e, t) { - T = T || r(33), e = e || {}, this.objectMode = !!e.objectMode, t instanceof T && (this.objectMode = this.objectMode || !!e.writableObjectMode); - var n = e.highWaterMark, - i = this.objectMode ? 16 : 16384; - this.highWaterMark = n || 0 === n ? n : i, this.highWaterMark = ~~this.highWaterMark, this.needDrain = !1, this.ending = !1, this.ended = !1, this.finished = !1; - var o = e.decodeStrings === !1; - this.decodeStrings = !o, this.defaultEncoding = e.defaultEncoding || "utf8", this.length = 0, this.writing = !1, this.corked = 0, this.sync = !0, this.bufferProcessing = !1, this.onwrite = function (e) { - g(t, e) - }, this.writecb = null, this.writelen = 0, this.bufferedRequest = null, this.lastBufferedRequest = null, this.pendingcb = 0, this.prefinished = !1, this.errorEmitted = !1, this.bufferedRequestCount = 0, this.corkedRequestsFree = new E(this), this.corkedRequestsFree.next = new E(this) - } - - function s(e) { - return T = T || r(33), this instanceof s || this instanceof T ? (this._writableState = new a(e, this), this.writable = !0, e && ("function" == typeof e.write && (this._write = e.write), "function" == typeof e.writev && (this._writev = e.writev)), void C.call(this)) : new s(e) - } - - function u(e, t) { - var r = new Error("write after end"); - e.emit("error", r), S(t, r) - } - - function h(e, t, r, n) { - var i = !0; - if (!A.isBuffer(r) && "string" != typeof r && null !== r && void 0 !== r && !t.objectMode) { - var o = new TypeError("Invalid non-string/buffer chunk"); - e.emit("error", o), S(n, o), i = !1 - } - return i - } - - function f(e, t, r) { - return e.objectMode || e.decodeStrings === !1 || "string" != typeof t || (t = new A(t, r)), t - } - - function c(e, t, r, n, i) { - r = f(t, r, n), A.isBuffer(r) && (n = "buffer"); - var a = t.objectMode ? 1 : r.length; - t.length += a; - var s = t.length < t.highWaterMark; - if (s || (t.needDrain = !0), t.writing || t.corked) { - var u = t.lastBufferedRequest; - t.lastBufferedRequest = new o(r, n, i), u ? u.next = t.lastBufferedRequest : t.bufferedRequest = t.lastBufferedRequest, t.bufferedRequestCount += 1 - } else l(e, t, !1, a, r, n, i); - return s - } - - function l(e, t, r, n, i, o, a) { - t.writelen = n, t.writecb = a, t.writing = !0, t.sync = !0, r ? e._writev(i, t.onwrite) : e._write(i, o, t.onwrite), t.sync = !1 - } - - function d(e, t, r, n, i) { - --t.pendingcb, r ? S(i, n) : i(n), e._writableState.errorEmitted = !0, e.emit("error", n) - } - - function p(e) { - e.writing = !1, e.writecb = null, e.length -= e.writelen, e.writelen = 0 - } - - function g(e, t) { - var r = e._writableState, - n = r.sync, - i = r.writecb; - if (p(r), t) d(e, r, n, t, i); - else { - var o = w(r); - o || r.corked || r.bufferProcessing || !r.bufferedRequest || v(e, r), n ? x(m, e, r, o, i) : m(e, r, o, i) - } - } - - function m(e, t, r, n) { - r || _(e, t), t.pendingcb--, n(), y(e, t) - } - - function _(e, t) { - 0 === t.length && t.needDrain && (t.needDrain = !1, e.emit("drain")) - } - - function v(e, t) { - t.bufferProcessing = !0; - var r = t.bufferedRequest; - if (e._writev && r && r.next) { - var n = t.bufferedRequestCount, - i = new Array(n), - o = t.corkedRequestsFree; - o.entry = r; - for (var a = 0; r;) i[a] = r, r = r.next, a += 1; - l(e, t, !0, t.length, i, "", o.finish), t.pendingcb++, t.lastBufferedRequest = null, t.corkedRequestsFree = o.next, o.next = null - } else { - for (; r;) { - var s = r.chunk, - u = r.encoding, - h = r.callback, - f = t.objectMode ? 1 : s.length; - if (l(e, t, !1, f, s, u, h), r = r.next, t.writing) break - } - null === r && (t.lastBufferedRequest = null) - } - t.bufferedRequestCount = 0, t.bufferedRequest = r, t.bufferProcessing = !1 - } - - function w(e) { - return e.ending && 0 === e.length && null === e.bufferedRequest && !e.finished && !e.writing - } - - function b(e, t) { - t.prefinished || (t.prefinished = !0, e.emit("prefinish")) - } - - function y(e, t) { - var r = w(t); - return r && (0 === t.pendingcb ? (b(e, t), t.finished = !0, e.emit("finish")) : b(e, t)), r - } - - function k(e, t, r) { - t.ending = !0, y(e, t), r && (t.finished ? S(r) : e.once("finish", r)), t.ended = !0, e.writable = !1 - } - - function E(e) { - var t = this; - this.next = null, this.entry = null, this.finish = function (r) { - var n = t.entry; - for (t.entry = null; n;) { - var i = n.callback; - e.pendingcb--, i(r), n = n.next - } - e.corkedRequestsFree ? e.corkedRequestsFree.next = t : e.corkedRequestsFree = t - } - } - e.exports = s; - var S = r(31), - x = !t.browser && ["v0.10", "v0.9."].indexOf(t.version.slice(0, 5)) > -1 ? n : S, - A = r(6).Buffer; - s.WritableState = a; - var R = r(19); - R.inherits = r(14); - var C, I = { - deprecate: r(36) - }; - ! function () { - try { - C = r(12) - } catch (e) {} finally { - C || (C = r(13).EventEmitter) - } - }(); - var A = r(6).Buffer; - R.inherits(s, C); - var T; - a.prototype.getBuffer = function () { - for (var e = this.bufferedRequest, t = []; e;) t.push(e), e = e.next; - return t - }, - function () { - try { - Object.defineProperty(a.prototype, "buffer", { - get: I.deprecate(function () { - return this.getBuffer() - }, "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.") - }) - } catch (e) {} - }(); - var T; - s.prototype.pipe = function () { - this.emit("error", new Error("Cannot pipe. Not readable.")) - }, s.prototype.write = function (e, t, r) { - var n = this._writableState, - o = !1; - return "function" == typeof t && (r = t, t = null), A.isBuffer(e) ? t = "buffer" : t || (t = n.defaultEncoding), "function" != typeof r && (r = i), n.ended ? u(this, r) : h(this, n, e, r) && (n.pendingcb++, o = c(this, n, e, t, r)), o - }, s.prototype.cork = function () { - var e = this._writableState; - e.corked++ - }, s.prototype.uncork = function () { - var e = this._writableState; - e.corked && (e.corked--, e.writing || e.corked || e.finished || e.bufferProcessing || !e.bufferedRequest || v(this, e)) - }, s.prototype.setDefaultEncoding = function (e) { - if ("string" == typeof e && (e = e.toLowerCase()), !(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((e + "").toLowerCase()) > -1)) throw new TypeError("Unknown encoding: " + e); - this._writableState.defaultEncoding = e - }, s.prototype._write = function (e, t, r) { - r(new Error("not implemented")) - }, s.prototype._writev = null, s.prototype.end = function (e, t, r) { - var n = this._writableState; - "function" == typeof e ? (r = e, e = null, t = null) : "function" == typeof t && (r = t, t = null), null !== e && void 0 !== e && this.write(e, t), n.corked && (n.corked = 1, this.uncork()), n.ending || n.finished || k(this, n, r) - } - }).call(t, r(16), r(35).setImmediate) - }, function (e, t, r) { - (function (e, n) { - function i(e, t) { - this._id = e, this._clearFn = t - } - var o = r(16).nextTick, - a = Function.prototype.apply, - s = Array.prototype.slice, - u = {}, - h = 0; - t.setTimeout = function () { - return new i(a.call(setTimeout, window, arguments), clearTimeout) - }, t.setInterval = function () { - return new i(a.call(setInterval, window, arguments), clearInterval) - }, t.clearTimeout = t.clearInterval = function (e) { - e.close() - }, i.prototype.unref = i.prototype.ref = function () {}, i.prototype.close = function () { - this._clearFn.call(window, this._id) - }, t.enroll = function (e, t) { - clearTimeout(e._idleTimeoutId), e._idleTimeout = t - }, t.unenroll = function (e) { - clearTimeout(e._idleTimeoutId), e._idleTimeout = -1 - }, t._unrefActive = t.active = function (e) { - clearTimeout(e._idleTimeoutId); - var t = e._idleTimeout; - t >= 0 && (e._idleTimeoutId = setTimeout(function () { - e._onTimeout && e._onTimeout() - }, t)) - }, t.setImmediate = "function" == typeof e ? e : function (e) { - var r = h++, - n = !(arguments.length < 2) && s.call(arguments, 1); - return u[r] = !0, o(function () { - u[r] && (n ? e.apply(null, n) : e.call(null), t.clearImmediate(r)) - }), r - }, t.clearImmediate = "function" == typeof n ? n : function (e) { - delete u[e] - } - }).call(t, r(35).setImmediate, r(35).clearImmediate) - }, function (e, t) { - (function (t) { - function r(e, t) { - function r() { - if (!i) { - if (n("throwDeprecation")) throw new Error(t); - n("traceDeprecation") ? console.trace(t) : console.warn(t), i = !0 - } - return e.apply(this, arguments) - } - if (n("noDeprecation")) return e; - var i = !1; - return r - } - - function n(e) { - try { - if (!t.localStorage) return !1 - } catch (r) { - return !1 - } - var n = t.localStorage[e]; - return null != n && "true" === String(n).toLowerCase() - } - e.exports = r - }).call(t, function () { - return this - }()) - }, function (e, t, r) { - "use strict"; - - function n(e) { - this.afterTransform = function (t, r) { - return i(e, t, r) - }, this.needTransform = !1, this.transforming = !1, this.writecb = null, this.writechunk = null, this.writeencoding = null - } - - function i(e, t, r) { - var n = e._transformState; - n.transforming = !1; - var i = n.writecb; - if (!i) return e.emit("error", new Error("no writecb in Transform class")); - n.writechunk = null, n.writecb = null, null !== r && void 0 !== r && e.push(r), i(t); - var o = e._readableState; - o.reading = !1, (o.needReadable || o.length < o.highWaterMark) && e._read(o.highWaterMark) - } - - function o(e) { - if (!(this instanceof o)) return new o(e); - s.call(this, e), this._transformState = new n(this); - var t = this; - this._readableState.needReadable = !0, this._readableState.sync = !1, e && ("function" == typeof e.transform && (this._transform = e.transform), "function" == typeof e.flush && (this._flush = e.flush)), this.once("prefinish", function () { - "function" == typeof this._flush ? this._flush(function (e) { - a(t, e) - }) : a(t) - }) - } - - function a(e, t) { - if (t) return e.emit("error", t); - var r = e._writableState, - n = e._transformState; - if (r.length) throw new Error("calling transform done when ws.length != 0"); - if (n.transforming) throw new Error("calling transform done when still transforming"); - return e.push(null) - } - e.exports = o; - var s = r(33), - u = r(19); - u.inherits = r(14), u.inherits(o, s), o.prototype.push = function (e, t) { - return this._transformState.needTransform = !1, s.prototype.push.call(this, e, t) - }, o.prototype._transform = function (e, t, r) { - throw new Error("not implemented") - }, o.prototype._write = function (e, t, r) { - var n = this._transformState; - if (n.writecb = r, n.writechunk = e, n.writeencoding = t, !n.transforming) { - var i = this._readableState; - (n.needTransform || i.needReadable || i.length < i.highWaterMark) && this._read(i.highWaterMark) - } - }, o.prototype._read = function (e) { - var t = this._transformState; - null !== t.writechunk && t.writecb && !t.transforming ? (t.transforming = !0, this._transform(t.writechunk, t.writeencoding, t.afterTransform)) : t.needTransform = !0 - } - }, function (e, t, r) { - "use strict"; - - function n(e) { - return this instanceof n ? void i.call(this, e) : new n(e) - } - e.exports = n; - var i = r(37), - o = r(19); - o.inherits = r(14), o.inherits(n, i), n.prototype._transform = function (e, t, r) { - r(null, e) - } - }, function (e, t, r) { - (function (e, n) { - function i(e, r) { - var n = { - seen: [], - stylize: a - }; - return arguments.length >= 3 && (n.depth = arguments[2]), arguments.length >= 4 && (n.colors = arguments[3]), g(r) ? n.showHidden = r : r && t._extend(n, r), y(n.showHidden) && (n.showHidden = !1), y(n.depth) && (n.depth = 2), y(n.colors) && (n.colors = !1), y(n.customInspect) && (n.customInspect = !0), n.colors && (n.stylize = o), u(n, e, n.depth) - } - - function o(e, t) { - var r = i.styles[t]; - return r ? "[" + i.colors[r][0] + "m" + e + "[" + i.colors[r][1] + "m" : e - } - - function a(e, t) { - return e - } - - function s(e) { - var t = {}; - return e.forEach(function (e, r) { - t[e] = !0 - }), t - } - - function u(e, r, n) { - if (e.customInspect && r && A(r.inspect) && r.inspect !== t.inspect && (!r.constructor || r.constructor.prototype !== r)) { - var i = r.inspect(n, e); - return w(i) || (i = u(e, i, n)), i - } - var o = h(e, r); - if (o) return o; - var a = Object.keys(r), - g = s(a); - if (e.showHidden && (a = Object.getOwnPropertyNames(r)), x(r) && (a.indexOf("message") >= 0 || a.indexOf("description") >= 0)) return f(r); - if (0 === a.length) { - if (A(r)) { - var m = r.name ? ": " + r.name : ""; - return e.stylize("[Function" + m + "]", "special") - } - if (k(r)) return e.stylize(RegExp.prototype.toString.call(r), "regexp"); - if (S(r)) return e.stylize(Date.prototype.toString.call(r), "date"); - if (x(r)) return f(r) - } - var _ = "", - v = !1, - b = ["{", "}"]; - if (p(r) && (v = !0, b = ["[", "]"]), A(r)) { - var y = r.name ? ": " + r.name : ""; - _ = " [Function" + y + "]" - } - if (k(r) && (_ = " " + RegExp.prototype.toString.call(r)), S(r) && (_ = " " + Date.prototype.toUTCString.call(r)), x(r) && (_ = " " + f(r)), 0 === a.length && (!v || 0 == r.length)) return b[0] + _ + b[1]; - if (n < 0) return k(r) ? e.stylize(RegExp.prototype.toString.call(r), "regexp") : e.stylize("[Object]", "special"); - e.seen.push(r); - var E; - return E = v ? c(e, r, n, g, a) : a.map(function (t) { - return l(e, r, n, g, t, v) - }), e.seen.pop(), d(E, _, b) - } - - function h(e, t) { - if (y(t)) return e.stylize("undefined", "undefined"); - if (w(t)) { - var r = "'" + JSON.stringify(t).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'"; - return e.stylize(r, "string") - } - return v(t) ? e.stylize("" + t, "number") : g(t) ? e.stylize("" + t, "boolean") : m(t) ? e.stylize("null", "null") : void 0 - } - - function f(e) { - return "[" + Error.prototype.toString.call(e) + "]" - } - - function c(e, t, r, n, i) { - for (var o = [], a = 0, s = t.length; a < s; ++a) B(t, String(a)) ? o.push(l(e, t, r, n, String(a), !0)) : o.push(""); - return i.forEach(function (i) { - i.match(/^\d+$/) || o.push(l(e, t, r, n, i, !0)) - }), o - } - - function l(e, t, r, n, i, o) { - var a, s, h; - if (h = Object.getOwnPropertyDescriptor(t, i) || { - value: t[i] - }, h.get ? s = h.set ? e.stylize("[Getter/Setter]", "special") : e.stylize("[Getter]", "special") : h.set && (s = e.stylize("[Setter]", "special")), B(n, i) || (a = "[" + i + "]"), s || (e.seen.indexOf(h.value) < 0 ? (s = m(r) ? u(e, h.value, null) : u(e, h.value, r - 1), s.indexOf("\n") > -1 && (s = o ? s.split("\n").map(function (e) { - return " " + e - }).join("\n").substr(2) : "\n" + s.split("\n").map(function (e) { - return " " + e - }).join("\n"))) : s = e.stylize("[Circular]", "special")), y(a)) { - if (o && i.match(/^\d+$/)) return s; - a = JSON.stringify("" + i), a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/) ? (a = a.substr(1, a.length - 2), a = e.stylize(a, "name")) : (a = a.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"), a = e.stylize(a, "string")) - } - return a + ": " + s - } - - function d(e, t, r) { - var n = 0, - i = e.reduce(function (e, t) { - return n++, t.indexOf("\n") >= 0 && n++, e + t.replace(/\u001b\[\d\d?m/g, "").length + 1 - }, 0); - return i > 60 ? r[0] + ("" === t ? "" : t + "\n ") + " " + e.join(",\n ") + " " + r[1] : r[0] + t + " " + e.join(", ") + " " + r[1] - } - - function p(e) { - return Array.isArray(e) - } - - function g(e) { - return "boolean" == typeof e - } - - function m(e) { - return null === e - } - - function _(e) { - return null == e - } - - function v(e) { - return "number" == typeof e - } - - function w(e) { - return "string" == typeof e - } - - function b(e) { - return "symbol" == typeof e - } - - function y(e) { - return void 0 === e - } - - function k(e) { - return E(e) && "[object RegExp]" === C(e) - } - - function E(e) { - return "object" == typeof e && null !== e - } - - function S(e) { - return E(e) && "[object Date]" === C(e) - } - - function x(e) { - return E(e) && ("[object Error]" === C(e) || e instanceof Error) - } - - function A(e) { - return "function" == typeof e - } - - function R(e) { - return null === e || "boolean" == typeof e || "number" == typeof e || "string" == typeof e || "symbol" == typeof e || "undefined" == typeof e - } - - function C(e) { - return Object.prototype.toString.call(e) - } - - function I(e) { - return e < 10 ? "0" + e.toString(10) : e.toString(10) - } - - function T() { - var e = new Date, - t = [I(e.getHours()), I(e.getMinutes()), I(e.getSeconds())].join(":"); - return [e.getDate(), D[e.getMonth()], t].join(" ") - } - - function B(e, t) { - return Object.prototype.hasOwnProperty.call(e, t) - } - var O = /%[sdj%]/g; - t.format = function (e) { - if (!w(e)) { - for (var t = [], r = 0; r < arguments.length; r++) t.push(i(arguments[r])); - return t.join(" ") - } - for (var r = 1, n = arguments, o = n.length, a = String(e).replace(O, function (e) { - if ("%%" === e) return "%"; - if (r >= o) return e; - switch (e) { - case "%s": - return String(n[r++]); - case "%d": - return Number(n[r++]); - case "%j": - try { - return JSON.stringify(n[r++]) - } catch (t) { - return "[Circular]" - } - default: - return e - } - }), s = n[r]; r < o; s = n[++r]) a += m(s) || !E(s) ? " " + s : " " + i(s); - return a - }, t.deprecate = function (r, i) { - function o() { - if (!a) { - if (n.throwDeprecation) throw new Error(i); - n.traceDeprecation ? console.trace(i) : console.error(i), a = !0 - } - return r.apply(this, arguments) - } - if (y(e.process)) return function () { - return t.deprecate(r, i).apply(this, arguments) - }; - if (n.noDeprecation === !0) return r; - var a = !1; - return o - }; - var z, L = {}; - t.debuglog = function (e) { - if (y(z) && (z = n.env.NODE_DEBUG || ""), e = e.toUpperCase(), !L[e]) - if (new RegExp("\\b" + e + "\\b", "i").test(z)) { - var r = n.pid; - L[e] = function () { - var n = t.format.apply(t, arguments); - console.error("%s %d: %s", e, r, n) - } - } else L[e] = function () {}; - return L[e] - }, t.inspect = i, i.colors = { - bold: [1, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - white: [37, 39], - grey: [90, 39], - black: [30, 39], - blue: [34, 39], - cyan: [36, 39], - green: [32, 39], - magenta: [35, 39], - red: [31, 39], - yellow: [33, 39] - }, i.styles = { - special: "cyan", - number: "yellow", - "boolean": "yellow", - undefined: "grey", - "null": "bold", - string: "green", - date: "magenta", - regexp: "red" - }, t.isArray = p, t.isBoolean = g, t.isNull = m, t.isNullOrUndefined = _, t.isNumber = v, t.isString = w, t.isSymbol = b, t.isUndefined = y, t.isRegExp = k, t.isObject = E, t.isDate = S, t.isError = x, t.isFunction = A, t.isPrimitive = R, t.isBuffer = r(40); - var D = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; - t.log = function () { - console.log("%s - %s", T(), t.format.apply(t, arguments)) - }, t.inherits = r(14), t._extend = function (e, t) { - if (!t || !E(t)) return e; - for (var r = Object.keys(t), n = r.length; n--;) e[r[n]] = t[r[n]]; - return e - } - }).call(t, function () { - return this - }(), r(16)) - }, function (e, t) { - e.exports = function (e) { - return e && "object" == typeof e && "function" == typeof e.copy && "function" == typeof e.fill && "function" == typeof e.readUInt8 - } - }, function (e, t, r) { - "use strict"; - var n = r(4), - i = r(5), - o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - t.encode = function (e) { - for (var t, r, i, a, s, u, h, f = [], c = 0, l = e.length, d = l, p = "string" !== n.getTypeOf(e); c < e.length;) d = l - c, p ? (t = e[c++], r = c < l ? e[c++] : 0, i = c < l ? e[c++] : 0) : (t = e.charCodeAt(c++), r = c < l ? e.charCodeAt(c++) : 0, i = c < l ? e.charCodeAt(c++) : 0), a = t >> 2, s = (3 & t) << 4 | r >> 4, u = d > 1 ? (15 & r) << 2 | i >> 6 : 64, h = d > 2 ? 63 & i : 64, f.push(o.charAt(a) + o.charAt(s) + o.charAt(u) + o.charAt(h)); - return f.join("") - }, t.decode = function (e) { - var t, r, n, a, s, u, h, f = 0, - c = 0; - e = e.replace(/[^A-Za-z0-9\+\/\=]/g, ""); - var l = 3 * e.length / 4; - e.charAt(e.length - 1) === o.charAt(64) && l--, e.charAt(e.length - 2) === o.charAt(64) && l--; - var d; - for (d = i.uint8array ? new Uint8Array(l) : new Array(l); f < e.length;) a = o.indexOf(e.charAt(f++)), s = o.indexOf(e.charAt(f++)), u = o.indexOf(e.charAt(f++)), h = o.indexOf(e.charAt(f++)), t = a << 2 | s >> 4, r = (15 & s) << 4 | u >> 2, n = (3 & u) << 6 | h, d[c++] = t, 64 !== u && (d[c++] = r), 64 !== h && (d[c++] = n); - return d - } - }, function (e, t, r) { - (function (t) { - "use strict"; - e.exports = { - isNode: "undefined" != typeof t, - newBuffer: function (e, r) { - return new t(e, r) - }, - isBuffer: function (e) { - return t.isBuffer(e) - }, - isStream: function (e) { - return e && "function" == typeof e.on && "function" == typeof e.pause && "function" == typeof e.resume - } - } - }).call(t, r(6).Buffer) - }, function (e, t, r) { - "use strict"; - - function n() { - if (u.length) throw u.shift() - } - - function i(e) { - var t; - t = s.length ? s.pop() : new o, t.task = e, a(t) - } - - function o() { - this.task = null - } - var a = r(44), - s = [], - u = [], - h = a.makeRequestCallFromTimer(n); - e.exports = i, o.prototype.call = function () { - try { - this.task.call() - } catch (e) { - i.onerror ? i.onerror(e) : (u.push(e), h()) - } finally { - this.task = null, s[s.length] = this - } - } - }, function (e, t) { - (function (t) { - "use strict"; - - function r(e) { - s.length || (a(), u = !0), s[s.length] = e - } - - function n() { - for (; h < s.length;) { - var e = h; - if (h += 1, s[e].call(), h > f) { - for (var t = 0, r = s.length - h; t < r; t++) s[t] = s[t + h]; - s.length -= h, h = 0 - } - } - s.length = 0, h = 0, u = !1 - } - - function i(e) { - var t = 1, - r = new c(e), - n = document.createTextNode(""); - return r.observe(n, { - characterData: !0 - }), - function () { - t = -t, n.data = t - } - } - - function o(e) { - return function () { - function t() { - clearTimeout(r), clearInterval(n), e() - } - var r = setTimeout(t, 0), - n = setInterval(t, 50) - } - } - e.exports = r; - var a, s = [], - u = !1, - h = 0, - f = 1024, - c = t.MutationObserver || t.WebKitMutationObserver; - a = "function" == typeof c ? i(n) : o(n), r.requestFlush = a, r.makeRequestCallFromTimer = o - }).call(t, function () { - return this - }()) - }, function (e, t, r) { - "use strict"; - var n = r(46).Promise; - e.exports = { - Promise: n - } - }, function (e, t, r) { - var n; - (function (e, i, o) { - /*! - * @overview es6-promise - a tiny implementation of Promises/A+. - * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) - * @license Licensed under MIT license - * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE - * @version 3.0.2 - */ - (function () { - "use strict"; - - function a(e) { - return "function" == typeof e || "object" == typeof e && null !== e - } - - function s(e) { - return "function" == typeof e - } - - function u(e) { - return "object" == typeof e && null !== e - } - - function h(e) { - K = e - } - - function f(e) { - G = e - } - - function c() { - return function () { - e.nextTick(m) - } - } - - function l() { - return function () { - q(m) - } - } - - function d() { - var e = 0, - t = new ee(m), - r = document.createTextNode(""); - return t.observe(r, { - characterData: !0 - }), - function () { - r.data = e = ++e % 2 - } - } - - function p() { - var e = new MessageChannel; - return e.port1.onmessage = m, - function () { - e.port2.postMessage(0) - } - } - - function g() { - return function () { - setTimeout(m, 1) - } - } - - function m() { - for (var e = 0; e < V; e += 2) { - var t = ne[e], - r = ne[e + 1]; - t(r), ne[e] = void 0, ne[e + 1] = void 0 - } - V = 0 - } - - function _() { - try { - var e = r(48); - return q = e.runOnLoop || e.runOnContext, l() - } catch (t) { - return g() - } - } - - function v() {} - - function w() { - return new TypeError("You cannot resolve a promise with itself") - } - - function b() { - return new TypeError("A promises callback cannot return that same promise.") - } - - function y(e) { - try { - return e.then - } catch (t) { - return se.error = t, se - } - } - - function k(e, t, r, n) { - try { - e.call(t, r, n) - } catch (i) { - return i - } - } - - function E(e, t, r) { - G(function (e) { - var n = !1, - i = k(r, t, function (r) { - n || (n = !0, t !== r ? A(e, r) : C(e, r)) - }, function (t) { - n || (n = !0, I(e, t)) - }, "Settle: " + (e._label || " unknown promise")); - !n && i && (n = !0, I(e, i)) - }, e) - } - - function S(e, t) { - t._state === oe ? C(e, t._result) : t._state === ae ? I(e, t._result) : T(t, void 0, function (t) { - A(e, t) - }, function (t) { - I(e, t) - }) - } - - function x(e, t) { - if (t.constructor === e.constructor) S(e, t); - else { - var r = y(t); - r === se ? I(e, se.error) : void 0 === r ? C(e, t) : s(r) ? E(e, t, r) : C(e, t) - } - } - - function A(e, t) { - e === t ? I(e, w()) : a(t) ? x(e, t) : C(e, t) - } - - function R(e) { - e._onerror && e._onerror(e._result), B(e) - } - - function C(e, t) { - e._state === ie && (e._result = t, e._state = oe, 0 !== e._subscribers.length && G(B, e)) - } - - function I(e, t) { - e._state === ie && (e._state = ae, e._result = t, G(R, e)) - } - - function T(e, t, r, n) { - var i = e._subscribers, - o = i.length; - e._onerror = null, i[o] = t, i[o + oe] = r, i[o + ae] = n, 0 === o && e._state && G(B, e) - } - - function B(e) { - var t = e._subscribers, - r = e._state; - if (0 !== t.length) { - for (var n, i, o = e._result, a = 0; a < t.length; a += 3) n = t[a], i = t[a + r], n ? L(r, n, i, o) : i(o); - e._subscribers.length = 0 - } - } - - function O() { - this.error = null - } - - function z(e, t) { - try { - return e(t) - } catch (r) { - return ue.error = r, ue - } - } - - function L(e, t, r, n) { - var i, o, a, u, h = s(r); - if (h) { - if (i = z(r, n), i === ue ? (u = !0, o = i.error, i = null) : a = !0, t === i) return void I(t, b()) - } else i = n, a = !0; - t._state !== ie || (h && a ? A(t, i) : u ? I(t, o) : e === oe ? C(t, i) : e === ae && I(t, i)) - } - - function D(e, t) { - try { - t(function (t) { - A(e, t) - }, function (t) { - I(e, t) - }) - } catch (r) { - I(e, r) - } - } - - function U(e, t) { - var r = this; - r._instanceConstructor = e, r.promise = new e(v), r._validateInput(t) ? (r._input = t, r.length = t.length, r._remaining = t.length, r._init(), 0 === r.length ? C(r.promise, r._result) : (r.length = r.length || 0, r._enumerate(), 0 === r._remaining && C(r.promise, r._result))) : I(r.promise, r._validationError()) - } - - function P(e) { - return new he(this, e).promise - } - - function M(e) { - function t(e) { - A(i, e) - } - - function r(e) { - I(i, e) - } - var n = this, - i = new n(v); - if (!J(e)) return I(i, new TypeError("You must pass an array to race.")), i; - for (var o = e.length, a = 0; i._state === ie && a < o; a++) T(n.resolve(e[a]), void 0, t, r); - return i - } - - function N(e) { - var t = this; - if (e && "object" == typeof e && e.constructor === t) return e; - var r = new t(v); - return A(r, e), r - } - - function F(e) { - var t = this, - r = new t(v); - return I(r, e), r - } - - function j() { - throw new TypeError("You must pass a resolver function as the first argument to the promise constructor") - } - - function W() { - throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.") - } - - function Z(e) { - this._id = pe++, this._state = void 0, this._result = void 0, this._subscribers = [], v !== e && (s(e) || j(), this instanceof Z || W(), D(this, e)) - } - - function Y() { - var e; - if ("undefined" != typeof i) e = i; - else if ("undefined" != typeof self) e = self; - else try { - e = Function("return this")() - } catch (t) { - throw new Error("polyfill failed because global object is unavailable in this environment") - } - var r = e.Promise; - r && "[object Promise]" === Object.prototype.toString.call(r.resolve()) && !r.cast || (e.Promise = ge) - } - var H; - H = Array.isArray ? Array.isArray : function (e) { - return "[object Array]" === Object.prototype.toString.call(e) - }; - var q, K, X, J = H, - V = 0, - G = ({}.toString, function (e, t) { - ne[V] = e, ne[V + 1] = t, V += 2, 2 === V && (K ? K(m) : X()) - }), - $ = "undefined" != typeof window ? window : void 0, - Q = $ || {}, - ee = Q.MutationObserver || Q.WebKitMutationObserver, - te = "undefined" != typeof e && "[object process]" === {}.toString.call(e), - re = "undefined" != typeof Uint8ClampedArray && "undefined" != typeof importScripts && "undefined" != typeof MessageChannel, - ne = new Array(1e3); - X = te ? c() : ee ? d() : re ? p() : void 0 === $ ? _() : g(); - var ie = void 0, - oe = 1, - ae = 2, - se = new O, - ue = new O; - U.prototype._validateInput = function (e) { - return J(e) - }, U.prototype._validationError = function () { - return new Error("Array Methods must be provided an Array") - }, U.prototype._init = function () { - this._result = new Array(this.length) - }; - var he = U; - U.prototype._enumerate = function () { - for (var e = this, t = e.length, r = e.promise, n = e._input, i = 0; r._state === ie && i < t; i++) e._eachEntry(n[i], i) - }, U.prototype._eachEntry = function (e, t) { - var r = this, - n = r._instanceConstructor; - u(e) ? e.constructor === n && e._state !== ie ? (e._onerror = null, r._settledAt(e._state, t, e._result)) : r._willSettleAt(n.resolve(e), t) : (r._remaining--, r._result[t] = e) - }, U.prototype._settledAt = function (e, t, r) { - var n = this, - i = n.promise; - i._state === ie && (n._remaining--, e === ae ? I(i, r) : n._result[t] = r), 0 === n._remaining && C(i, n._result) - }, U.prototype._willSettleAt = function (e, t) { - var r = this; - T(e, void 0, function (e) { - r._settledAt(oe, t, e) - }, function (e) { - r._settledAt(ae, t, e) - }) - }; - var fe = P, - ce = M, - le = N, - de = F, - pe = 0, - ge = Z; - Z.all = fe, Z.race = ce, Z.resolve = le, Z.reject = de, Z._setScheduler = h, Z._setAsap = f, Z._asap = G, Z.prototype = { - constructor: Z, - then: function (e, t) { - var r = this, - n = r._state; - if (n === oe && !e || n === ae && !t) return this; - var i = new this.constructor(v), - o = r._result; - if (n) { - var a = arguments[n - 1]; - G(function () { - L(n, i, a, o) - }) - } else T(r, i, e, t); - return i - }, - "catch": function (e) { - return this.then(null, e) - } - }; - var me = Y, - _e = { - Promise: ge, - polyfill: me - }; - r(49).amd ? (n = function () { - return _e - }.call(t, r, t, o), !(void 0 !== n && (o.exports = n))) : "undefined" != typeof o && o.exports ? o.exports = _e : "undefined" != typeof this && (this.ES6Promise = _e), me() - }).call(this) - }).call(t, r(16), function () { - return this - }(), r(47)(e)) - }, function (e, t) { - e.exports = function (e) { - return e.webpackPolyfill || (e.deprecate = function () {}, e.paths = [], e.children = [], e.webpackPolyfill = 1), e - } - }, function (e, t) {}, function (e, t) { - e.exports = function () { - throw new Error("define cannot be used indirect") - } - }, function (e, t) { - "use strict"; - - function r(e) { - this.name = e || "default", this.streamInfo = {}, this.generatedError = null, this.extraStreamInfo = {}, this.isPaused = !0, this.isFinished = !1, this.isLocked = !1, this._listeners = { - data: [], - end: [], - error: [] - }, this.previous = null - } - r.prototype = { - push: function (e) { - this.emit("data", e) - }, - end: function () { - if (this.isFinished) return !1; - this.flush(); - try { - this.emit("end"), this.cleanUp(), this.isFinished = !0 - } catch (e) { - this.emit("error", e) - } - return !0 - }, - error: function (e) { - return !this.isFinished && (this.isPaused ? this.generatedError = e : (this.isFinished = !0, this.emit("error", e), this.previous && this.previous.error(e), this.cleanUp()), !0) - }, - on: function (e, t) { - return this._listeners[e].push(t), this - }, - cleanUp: function () { - this.streamInfo = this.generatedError = this.extraStreamInfo = null, this._listeners = [] - }, - emit: function (e, t) { - if (this._listeners[e]) - for (var r = 0; r < this._listeners[e].length; r++) this._listeners[e][r].call(this, t) - }, - pipe: function (e) { - return e.registerPrevious(this) - }, - registerPrevious: function (e) { - if (this.isLocked) throw new Error("The stream '" + this + "' has already been used."); - this.streamInfo = e.streamInfo, this.mergeStreamInfo(), this.previous = e; - var t = this; - return e.on("data", function (e) { - t.processChunk(e) - }), e.on("end", function () { - t.end() - }), e.on("error", function (e) { - t.error(e) - }), this - }, - pause: function () { - return !this.isPaused && !this.isFinished && (this.isPaused = !0, this.previous && this.previous.pause(), !0) - }, - resume: function () { - if (!this.isPaused || this.isFinished) return !1; - this.isPaused = !1; - var e = !1; - return this.generatedError && (this.error(this.generatedError), e = !0), this.previous && this.previous.resume(), !e - }, - flush: function () {}, - processChunk: function (e) { - this.push(e) - }, - withStreamInfo: function (e, t) { - return this.extraStreamInfo[e] = t, this.mergeStreamInfo(), this - }, - mergeStreamInfo: function () { - for (var e in this.extraStreamInfo) this.extraStreamInfo.hasOwnProperty(e) && (this.streamInfo[e] = this.extraStreamInfo[e]) - }, - lock: function () { - if (this.isLocked) throw new Error("The stream '" + this + "' has already been used."); - this.isLocked = !0, this.previous && this.previous.lock() - }, - toString: function () { - var e = "Worker " + this.name; - return this.previous ? this.previous + " -> " + e : e - } - }, e.exports = r - }, function (e, t, r) { - (function (t) { - "use strict"; - - function n(e, t, r) { - switch (e) { - case "blob": - return s.newBlob(s.transformTo("arraybuffer", t), r); - case "base64": - return f.encode(t); - default: - return s.transformTo(e, t) - } - } - - function i(e, r) { - var n, i = 0, - o = null, - a = 0; - for (n = 0; n < r.length; n++) a += r[n].length; - switch (e) { - case "string": - return r.join(""); - case "array": - return Array.prototype.concat.apply([], r); - case "uint8array": - for (o = new Uint8Array(a), n = 0; n < r.length; n++) o.set(r[n], i), i += r[n].length; - return o; - case "nodebuffer": - return t.concat(r); - default: - throw new Error("concat : unsupported type '" + e + "'") - } - } - - function o(e, t) { - return new l.Promise(function (r, o) { - var a = [], - s = e._internalType, - u = e._outputType, - h = e._mimeType; - e.on("data", function (e, r) { - a.push(e), t && t(r) - }).on("error", function (e) { - a = [], o(e) - }).on("end", function () { - try { - var e = n(u, i(s, a), h); - r(e) - } catch (t) { - o(t) - } - a = [] - }).resume() - }) - } - - function a(e, t, r) { - var n = t; - switch (t) { - case "blob": - case "arraybuffer": - n = "uint8array"; - break; - case "base64": - n = "string" - } - try { - this._internalType = n, this._outputType = t, this._mimeType = r, s.checkSupport(n), this._worker = e.pipe(new u(n)), e.lock() - } catch (i) { - this._worker = new h("error"), this._worker.error(i) - } - } - var s = r(4), - u = r(52), - h = r(50), - f = r(41), - c = r(10), - l = r(45); - a.prototype = { - accumulate: function (e) { - return o(this, e) - }, - on: function (e, t) { - var r = this; - return "data" === e ? this._worker.on(e, function (e) { - t.call(r, e.data, e.meta) - }) : this._worker.on(e, function () { - s.delay(t, arguments, r) - }), this - }, - resume: function () { - return s.delay(this._worker.resume, [], this._worker), this - }, - pause: function () { - return this._worker.pause(), this - }, - toNodejsStream: function (e) { - if (s.checkSupport("nodestream"), "nodebuffer" !== this._outputType) throw new Error(this._outputType + " is not supported by this method"); - return new c(this, { - objectMode: "nodebuffer" !== this._outputType - }, e) - } - }, e.exports = a - }).call(t, r(6).Buffer) - }, function (e, t, r) { - "use strict"; - - function n(e) { - i.call(this, "ConvertWorker to " + e), this.destType = e - } - var i = r(50), - o = r(4); - o.inherits(n, i), n.prototype.processChunk = function (e) { - this.push({ - data: o.transformTo(this.destType, e.data), - meta: e.meta - }) - }, e.exports = n - }, function (e, t) { - "use strict"; - t.base64 = !1, t.binary = !1, t.dir = !1, t.createFolders = !0, t.date = null, t.compression = null, t.compressionOptions = null, t.comment = null, t.unixPermissions = null, t.dosPermissions = null - }, function (e, t, r) { - "use strict"; - - function n(e, t, r, n, i) { - this.compressedSize = e, this.uncompressedSize = t, this.crc32 = r, this.compression = n, this.compressedContent = i - } - var i = r(45), - o = r(55), - a = r(56), - s = r(57), - a = r(56); - n.prototype = { - getContentWorker: function () { - var e = new o(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")), - t = this; - return e.on("end", function () { - if (this.streamInfo.data_length !== t.uncompressedSize) throw new Error("Bug : uncompressed data size mismatch") - }), e - }, - getCompressedWorker: function () { - return new o(i.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize", this.compressedSize).withStreamInfo("uncompressedSize", this.uncompressedSize).withStreamInfo("crc32", this.crc32).withStreamInfo("compression", this.compression) - } - }, n.createWorkerFrom = function (e, t, r) { - return e.pipe(new s).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression", t) - }, e.exports = n - }, function (e, t, r) { - "use strict"; - - function n(e) { - o.call(this, "DataWorker"); - var t = this; - this.dataIsReady = !1, this.index = 0, this.max = 0, this.data = null, this.type = "", this._tickScheduled = !1, e.then(function (e) { - t.dataIsReady = !0, t.data = e, t.max = e && e.length || 0, t.type = i.getTypeOf(e), t.isPaused || t._tickAndRepeat() - }, function (e) { - t.error(e) - }) - } - var i = r(4), - o = r(50), - a = 16384; - i.inherits(n, o), n.prototype.cleanUp = function () { - o.prototype.cleanUp.call(this), this.data = null - }, n.prototype.resume = function () { - return !!o.prototype.resume.call(this) && (!this._tickScheduled && this.dataIsReady && (this._tickScheduled = !0, i.delay(this._tickAndRepeat, [], this)), !0) - }, n.prototype._tickAndRepeat = function () { - this._tickScheduled = !1, this.isPaused || this.isFinished || (this._tick(), this.isFinished || (i.delay(this._tickAndRepeat, [], this), this._tickScheduled = !0)) - }, n.prototype._tick = function () { - if (this.isPaused || this.isFinished) return !1; - var e = a, - t = null, - r = Math.min(this.max, this.index + e); - if (this.index >= this.max) return this.end(); - switch (this.type) { - case "string": - t = this.data.substring(this.index, r); - break; - case "uint8array": - t = this.data.subarray(this.index, r); - break; - case "array": - case "nodebuffer": - t = this.data.slice(this.index, r) - } - return this.index = r, this.push({ - data: t, - meta: { - percent: this.max ? this.index / this.max * 100 : 0 - } - }) - }, e.exports = n - }, function (e, t, r) { - "use strict"; - - function n(e) { - o.call(this, "DataLengthProbe for " + e), this.propName = e, this.withStreamInfo(e, 0) - } - var i = r(4), - o = r(50); - i.inherits(n, o), n.prototype.processChunk = function (e) { - if (e) { - var t = this.streamInfo[this.propName] || 0; - this.streamInfo[this.propName] = t + e.data.length - } - o.prototype.processChunk.call(this, e) - }, e.exports = n - }, function (e, t, r) { - "use strict"; - - function n() { - i.call(this, "Crc32Probe") - } - var i = r(50), - o = r(58), - a = r(4); - a.inherits(n, i), n.prototype.processChunk = function (e) { - this.streamInfo.crc32 = o(e.data, this.streamInfo.crc32 || 0), this.push(e) - }, e.exports = n - }, function (e, t, r) { - "use strict"; - - function n() { - for (var e, t = [], r = 0; r < 256; r++) { - e = r; - for (var n = 0; n < 8; n++) e = 1 & e ? 3988292384 ^ e >>> 1 : e >>> 1; - t[r] = e - } - return t - } - - function i(e, t, r, n) { - var i = s, - o = n + r; - e ^= -1; - for (var a = n; a < o; a++) e = e >>> 8 ^ i[255 & (e ^ t[a])]; - return e ^ -1 - } - - function o(e, t, r, n) { - var i = s, - o = n + r; - e ^= -1; - for (var a = n; a < o; a++) e = e >>> 8 ^ i[255 & (e ^ t.charCodeAt(a))]; - return e ^ -1 - } - var a = r(4), - s = n(); - e.exports = function (e, t) { - if ("undefined" == typeof e || !e.length) return 0; - var r = "string" !== a.getTypeOf(e); - return r ? i(0 | t, e, e.length, 0) : o(0 | t, e, e.length, 0) - } - }, function (e, t, r) { - "use strict"; - var n = r(51), - i = r(55), - o = r(3), - a = r(54), - s = r(50), - u = function (e, t, r) { - this.name = e, this.dir = r.dir, this.date = r.date, this.comment = r.comment, this.unixPermissions = r.unixPermissions, this.dosPermissions = r.dosPermissions, this._data = t, this._dataBinary = r.binary, this.options = { - compression: r.compression, - compressionOptions: r.compressionOptions - } - }; - u.prototype = { - internalStream: function (e) { - var t = e.toLowerCase(), - r = "string" === t || "text" === t; - "binarystring" !== t && "text" !== t || (t = "string"); - var i = this._decompressWorker(), - a = !this._dataBinary; - return a && !r && (i = i.pipe(new o.Utf8EncodeWorker)), !a && r && (i = i.pipe(new o.Utf8DecodeWorker)), new n(i, t, "") - }, - async: function (e, t) { - return this.internalStream(e).accumulate(t) - }, - nodeStream: function (e, t) { - return this.internalStream(e || "nodebuffer").toNodejsStream(t) - }, - _compressWorker: function (e, t) { - if (this._data instanceof a && this._data.compression.magic === e.magic) return this._data.getCompressedWorker(); - var r = this._decompressWorker(); - return this._dataBinary || (r = r.pipe(new o.Utf8EncodeWorker)), a.createWorkerFrom(r, e, t) - }, - _decompressWorker: function () { - return this._data instanceof a ? this._data.getContentWorker() : this._data instanceof s ? this._data : new i(this._data) - } - }; - for (var h = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"], f = function () { - throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.") - }, c = 0; c < h.length; c++) u.prototype[h[c]] = f; - e.exports = u - }, function (e, t, r) { - "use strict"; - var n = r(61), - i = r(79), - o = function (e, t) { - var r = e || t, - i = n[r]; - if (!i) throw new Error(r + " is not a valid compression method !"); - return i - }; - t.generateWorker = function (e, t, r) { - var n = new i(t.streamFiles, r, t.platform, t.encodeFileName), - a = 0; - try { - e.forEach(function (e, r) { - a++; - var i = o(r.options.compression, t.compression), - s = r.options.compressionOptions || t.compressionOptions || {}, - u = r.dir, - h = r.date; - r._compressWorker(i, s).withStreamInfo("file", { - name: e, - dir: u, - date: h, - comment: r.comment || "", - unixPermissions: r.unixPermissions, - dosPermissions: r.dosPermissions - }).pipe(n) - }), n.entriesCount = a - } catch (s) { - n.error(s) - } - return n - } - }, function (e, t, r) { - "use strict"; - var n = r(50); - t.STORE = { - magic: "\0\0", - compressWorker: function (e) { - return new n("STORE compression") - }, - uncompressWorker: function () { - return new n("STORE decompression") - } - }, t.DEFLATE = r(62) - }, function (e, t, r) { - "use strict"; - - function n(e, t) { - s.call(this, "FlateWorker/" + e), this._pako = new o[e]({ - raw: !0, - level: t.level || -1 - }), this.meta = {}; - var r = this; - this._pako.onData = function (e) { - r.push({ - data: e, - meta: r.meta - }) - } - } - var i = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Uint32Array, - o = r(63), - a = r(4), - s = r(50), - u = i ? "uint8array" : "array"; - t.magic = "\b\0", a.inherits(n, s), n.prototype.processChunk = function (e) { - this.meta = e.meta, this._pako.push(a.transformTo(u, e.data), !1) - }, n.prototype.flush = function () { - s.prototype.flush.call(this), this._pako.push([], !0) - }, n.prototype.cleanUp = function () { - s.prototype.cleanUp.call(this), this._pako = null - }, t.compressWorker = function (e) { - return new n("Deflate", e) - }, t.uncompressWorker = function () { - return new n("Inflate", {}) - } - }, function (e, t, r) { - "use strict"; - var n = r(64).assign, - i = r(65), - o = r(73), - a = r(77), - s = {}; - n(s, i, o, a), e.exports = s - }, function (e, t) { - "use strict"; - var r = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array; - t.assign = function (e) { - for (var t = Array.prototype.slice.call(arguments, 1); t.length;) { - var r = t.shift(); - if (r) { - if ("object" != typeof r) throw new TypeError(r + "must be non-object"); - for (var n in r) r.hasOwnProperty(n) && (e[n] = r[n]) - } - } - return e - }, t.shrinkBuf = function (e, t) { - return e.length === t ? e : e.subarray ? e.subarray(0, t) : (e.length = t, e) - }; - var n = { - arraySet: function (e, t, r, n, i) { - if (t.subarray && e.subarray) return void e.set(t.subarray(r, r + n), i); - for (var o = 0; o < n; o++) e[i + o] = t[r + o] - }, - flattenChunks: function (e) { - var t, r, n, i, o, a; - for (n = 0, t = 0, r = e.length; t < r; t++) n += e[t].length; - for (a = new Uint8Array(n), i = 0, t = 0, r = e.length; t < r; t++) o = e[t], a.set(o, i), i += o.length; - return a - } - }, - i = { - arraySet: function (e, t, r, n, i) { - for (var o = 0; o < n; o++) e[i + o] = t[r + o] - }, - flattenChunks: function (e) { - return [].concat.apply([], e) - } - }; - t.setTyped = function (e) { - e ? (t.Buf8 = Uint8Array, t.Buf16 = Uint16Array, t.Buf32 = Int32Array, t.assign(t, n)) : (t.Buf8 = Array, t.Buf16 = Array, t.Buf32 = Array, t.assign(t, i)) - }, t.setTyped(r) - }, function (e, t, r) { - "use strict"; - - function n(e) { - if (!(this instanceof n)) return new n(e); - this.options = u.assign({ - level: v, - method: b, - chunkSize: 16384, - windowBits: 15, - memLevel: 8, - strategy: w, - to: "" - }, e || {}); - var t = this.options; - t.raw && t.windowBits > 0 ? t.windowBits = -t.windowBits : t.gzip && t.windowBits > 0 && t.windowBits < 16 && (t.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new c, this.strm.avail_out = 0; - var r = s.deflateInit2(this.strm, t.level, t.method, t.windowBits, t.memLevel, t.strategy); - if (r !== g) throw new Error(f[r]); - if (t.header && s.deflateSetHeader(this.strm, t.header), t.dictionary) { - var i; - if (i = "string" == typeof t.dictionary ? h.string2buf(t.dictionary) : "[object ArrayBuffer]" === l.call(t.dictionary) ? new Uint8Array(t.dictionary) : t.dictionary, r = s.deflateSetDictionary(this.strm, i), r !== g) throw new Error(f[r]); - this._dict_set = !0 - } - } - - function i(e, t) { - var r = new n(t); - if (r.push(e, !0), r.err) throw r.msg; - return r.result - } - - function o(e, t) { - return t = t || {}, t.raw = !0, i(e, t) - } - - function a(e, t) { - return t = t || {}, t.gzip = !0, i(e, t) - } - var s = r(66), - u = r(64), - h = r(71), - f = r(70), - c = r(72), - l = Object.prototype.toString, - d = 0, - p = 4, - g = 0, - m = 1, - _ = 2, - v = -1, - w = 0, - b = 8; - n.prototype.push = function (e, t) { - var r, n, i = this.strm, - o = this.options.chunkSize; - if (this.ended) return !1; - n = t === ~~t ? t : t === !0 ? p : d, "string" == typeof e ? i.input = h.string2buf(e) : "[object ArrayBuffer]" === l.call(e) ? i.input = new Uint8Array(e) : i.input = e, i.next_in = 0, i.avail_in = i.input.length; - do { - if (0 === i.avail_out && (i.output = new u.Buf8(o), i.next_out = 0, i.avail_out = o), r = s.deflate(i, n), r !== m && r !== g) return this.onEnd(r), this.ended = !0, !1; - 0 !== i.avail_out && (0 !== i.avail_in || n !== p && n !== _) || ("string" === this.options.to ? this.onData(h.buf2binstring(u.shrinkBuf(i.output, i.next_out))) : this.onData(u.shrinkBuf(i.output, i.next_out))) - } while ((i.avail_in > 0 || 0 === i.avail_out) && r !== m); - return n === p ? (r = s.deflateEnd(this.strm), this.onEnd(r), this.ended = !0, r === g) : n !== _ || (this.onEnd(g), i.avail_out = 0, !0) - }, n.prototype.onData = function (e) { - this.chunks.push(e) - }, n.prototype.onEnd = function (e) { - e === g && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = u.flattenChunks(this.chunks)), this.chunks = [], this.err = e, this.msg = this.strm.msg - }, t.Deflate = n, t.deflate = i, t.deflateRaw = o, t.gzip = a - }, function (e, t, r) { - "use strict"; - - function n(e, t) { - return e.msg = L[t], t - } - - function i(e) { - return (e << 1) - (e > 4 ? 9 : 0) - } - - function o(e) { - for (var t = e.length; --t >= 0;) e[t] = 0 - } - - function a(e) { - var t = e.state, - r = t.pending; - r > e.avail_out && (r = e.avail_out), 0 !== r && (T.arraySet(e.output, t.pending_buf, t.pending_out, r, e.next_out), e.next_out += r, t.pending_out += r, e.total_out += r, e.avail_out -= r, t.pending -= r, 0 === t.pending && (t.pending_out = 0)) - } - - function s(e, t) { - B._tr_flush_block(e, e.block_start >= 0 ? e.block_start : -1, e.strstart - e.block_start, t), e.block_start = e.strstart, a(e.strm) - } - - function u(e, t) { - e.pending_buf[e.pending++] = t - } - - function h(e, t) { - e.pending_buf[e.pending++] = t >>> 8 & 255, e.pending_buf[e.pending++] = 255 & t - } - - function f(e, t, r, n) { - var i = e.avail_in; - return i > n && (i = n), 0 === i ? 0 : (e.avail_in -= i, T.arraySet(t, e.input, e.next_in, i, r), 1 === e.state.wrap ? e.adler = O(e.adler, t, i, r) : 2 === e.state.wrap && (e.adler = z(e.adler, t, i, r)), e.next_in += i, e.total_in += i, i) - } - - function c(e, t) { - var r, n, i = e.max_chain_length, - o = e.strstart, - a = e.prev_length, - s = e.nice_match, - u = e.strstart > e.w_size - ce ? e.strstart - (e.w_size - ce) : 0, - h = e.window, - f = e.w_mask, - c = e.prev, - l = e.strstart + fe, - d = h[o + a - 1], - p = h[o + a]; - e.prev_length >= e.good_match && (i >>= 2), s > e.lookahead && (s = e.lookahead); - do - if (r = t, h[r + a] === p && h[r + a - 1] === d && h[r] === h[o] && h[++r] === h[o + 1]) { - o += 2, r++; - do; while (h[++o] === h[++r] && h[++o] === h[++r] && h[++o] === h[++r] && h[++o] === h[++r] && h[++o] === h[++r] && h[++o] === h[++r] && h[++o] === h[++r] && h[++o] === h[++r] && o < l); - if (n = fe - (l - o), o = l - fe, n > a) { - if (e.match_start = t, a = n, n >= s) break; - d = h[o + a - 1], p = h[o + a] - } - } - while ((t = c[t & f]) > u && 0 !== --i); - return a <= e.lookahead ? a : e.lookahead - } - - function l(e) { - var t, r, n, i, o, a = e.w_size; - do { - if (i = e.window_size - e.lookahead - e.strstart, e.strstart >= a + (a - ce)) { - T.arraySet(e.window, e.window, a, a, 0), e.match_start -= a, e.strstart -= a, e.block_start -= a, r = e.hash_size, t = r; - do n = e.head[--t], e.head[t] = n >= a ? n - a : 0; while (--r); - r = a, t = r; - do n = e.prev[--t], e.prev[t] = n >= a ? n - a : 0; while (--r); - i += a - } - if (0 === e.strm.avail_in) break; - if (r = f(e.strm, e.window, e.strstart + e.lookahead, i), e.lookahead += r, e.lookahead + e.insert >= he) - for (o = e.strstart - e.insert, e.ins_h = e.window[o], e.ins_h = (e.ins_h << e.hash_shift ^ e.window[o + 1]) & e.hash_mask; e.insert && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[o + he - 1]) & e.hash_mask, e.prev[o & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = o, o++, e.insert--, !(e.lookahead + e.insert < he));); - } while (e.lookahead < ce && 0 !== e.strm.avail_in) - } - - function d(e, t) { - var r = 65535; - for (r > e.pending_buf_size - 5 && (r = e.pending_buf_size - 5);;) { - if (e.lookahead <= 1) { - if (l(e), 0 === e.lookahead && t === D) return be; - if (0 === e.lookahead) break - } - e.strstart += e.lookahead, e.lookahead = 0; - var n = e.block_start + r; - if ((0 === e.strstart || e.strstart >= n) && (e.lookahead = e.strstart - n, e.strstart = n, s(e, !1), 0 === e.strm.avail_out)) return be; - if (e.strstart - e.block_start >= e.w_size - ce && (s(e, !1), 0 === e.strm.avail_out)) return be - } - return e.insert = 0, t === M ? (s(e, !0), 0 === e.strm.avail_out ? ke : Ee) : e.strstart > e.block_start && (s(e, !1), 0 === e.strm.avail_out) ? be : be - } - - function p(e, t) { - for (var r, n;;) { - if (e.lookahead < ce) { - if (l(e), e.lookahead < ce && t === D) return be; - if (0 === e.lookahead) break - } - if (r = 0, e.lookahead >= he && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + he - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), 0 !== r && e.strstart - r <= e.w_size - ce && (e.match_length = c(e, r)), e.match_length >= he) - if (n = B._tr_tally(e, e.strstart - e.match_start, e.match_length - he), e.lookahead -= e.match_length, e.match_length <= e.max_lazy_match && e.lookahead >= he) { - e.match_length--; - do e.strstart++, e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + he - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart; while (0 !== --e.match_length); - e.strstart++ - } else e.strstart += e.match_length, e.match_length = 0, e.ins_h = e.window[e.strstart], e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + 1]) & e.hash_mask; - else n = B._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++; - if (n && (s(e, !1), 0 === e.strm.avail_out)) return be - } - return e.insert = e.strstart < he - 1 ? e.strstart : he - 1, t === M ? (s(e, !0), 0 === e.strm.avail_out ? ke : Ee) : e.last_lit && (s(e, !1), 0 === e.strm.avail_out) ? be : ye - } - - function g(e, t) { - for (var r, n, i;;) { - if (e.lookahead < ce) { - if (l(e), e.lookahead < ce && t === D) return be; - if (0 === e.lookahead) break - } - if (r = 0, e.lookahead >= he && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + he - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart), e.prev_length = e.match_length, e.prev_match = e.match_start, e.match_length = he - 1, 0 !== r && e.prev_length < e.max_lazy_match && e.strstart - r <= e.w_size - ce && (e.match_length = c(e, r), e.match_length <= 5 && (e.strategy === q || e.match_length === he && e.strstart - e.match_start > 4096) && (e.match_length = he - 1)), e.prev_length >= he && e.match_length <= e.prev_length) { - i = e.strstart + e.lookahead - he, n = B._tr_tally(e, e.strstart - 1 - e.prev_match, e.prev_length - he), e.lookahead -= e.prev_length - 1, e.prev_length -= 2; - do ++e.strstart <= i && (e.ins_h = (e.ins_h << e.hash_shift ^ e.window[e.strstart + he - 1]) & e.hash_mask, r = e.prev[e.strstart & e.w_mask] = e.head[e.ins_h], e.head[e.ins_h] = e.strstart); while (0 !== --e.prev_length); - if (e.match_available = 0, e.match_length = he - 1, e.strstart++, n && (s(e, !1), 0 === e.strm.avail_out)) return be - } else if (e.match_available) { - if (n = B._tr_tally(e, 0, e.window[e.strstart - 1]), n && s(e, !1), e.strstart++, e.lookahead--, 0 === e.strm.avail_out) return be - } else e.match_available = 1, e.strstart++, e.lookahead-- - } - return e.match_available && (n = B._tr_tally(e, 0, e.window[e.strstart - 1]), e.match_available = 0), e.insert = e.strstart < he - 1 ? e.strstart : he - 1, t === M ? (s(e, !0), 0 === e.strm.avail_out ? ke : Ee) : e.last_lit && (s(e, !1), 0 === e.strm.avail_out) ? be : ye - } - - function m(e, t) { - for (var r, n, i, o, a = e.window;;) { - if (e.lookahead <= fe) { - if (l(e), e.lookahead <= fe && t === D) return be; - if (0 === e.lookahead) break - } - if (e.match_length = 0, e.lookahead >= he && e.strstart > 0 && (i = e.strstart - 1, n = a[i], n === a[++i] && n === a[++i] && n === a[++i])) { - o = e.strstart + fe; - do; while (n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && i < o); - e.match_length = fe - (o - i), e.match_length > e.lookahead && (e.match_length = e.lookahead) - } - if (e.match_length >= he ? (r = B._tr_tally(e, 1, e.match_length - he), e.lookahead -= e.match_length, e.strstart += e.match_length, e.match_length = 0) : (r = B._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++), r && (s(e, !1), 0 === e.strm.avail_out)) return be - } - return e.insert = 0, t === M ? (s(e, !0), 0 === e.strm.avail_out ? ke : Ee) : e.last_lit && (s(e, !1), 0 === e.strm.avail_out) ? be : ye - } - - function _(e, t) { - for (var r;;) { - if (0 === e.lookahead && (l(e), 0 === e.lookahead)) { - if (t === D) return be; - break - } - if (e.match_length = 0, r = B._tr_tally(e, 0, e.window[e.strstart]), e.lookahead--, e.strstart++, r && (s(e, !1), 0 === e.strm.avail_out)) return be - } - return e.insert = 0, t === M ? (s(e, !0), 0 === e.strm.avail_out ? ke : Ee) : e.last_lit && (s(e, !1), 0 === e.strm.avail_out) ? be : ye - } - - function v(e, t, r, n, i) { - this.good_length = e, this.max_lazy = t, this.nice_length = r, this.max_chain = n, this.func = i - } - - function w(e) { - e.window_size = 2 * e.w_size, o(e.head), e.max_lazy_match = I[e.level].max_lazy, e.good_match = I[e.level].good_length, e.nice_match = I[e.level].nice_length, e.max_chain_length = I[e.level].max_chain, e.strstart = 0, e.block_start = 0, e.lookahead = 0, e.insert = 0, e.match_length = e.prev_length = he - 1, e.match_available = 0, e.ins_h = 0 - } - - function b() { - this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = $, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new T.Buf16(2 * se), this.dyn_dtree = new T.Buf16(2 * (2 * oe + 1)), this.bl_tree = new T.Buf16(2 * (2 * ae + 1)), o(this.dyn_ltree), o(this.dyn_dtree), o(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new T.Buf16(ue + 1), this.heap = new T.Buf16(2 * ie + 1), o(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new T.Buf16(2 * ie + 1), o(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0 - } - - function y(e) { - var t; - return e && e.state ? (e.total_in = e.total_out = 0, e.data_type = G, t = e.state, t.pending = 0, t.pending_out = 0, t.wrap < 0 && (t.wrap = -t.wrap), t.status = t.wrap ? de : ve, e.adler = 2 === t.wrap ? 0 : 1, t.last_flush = D, B._tr_init(t), F) : n(e, W) - } - - function k(e) { - var t = y(e); - return t === F && w(e.state), t - } - - function E(e, t) { - return e && e.state ? 2 !== e.state.wrap ? W : (e.state.gzhead = t, F) : W - } - - function S(e, t, r, i, o, a) { - if (!e) return W; - var s = 1; - if (t === H && (t = 6), i < 0 ? (s = 0, i = -i) : i > 15 && (s = 2, i -= 16), o < 1 || o > Q || r !== $ || i < 8 || i > 15 || t < 0 || t > 9 || a < 0 || a > J) return n(e, W); - 8 === i && (i = 9); - var u = new b; - return e.state = u, u.strm = e, u.wrap = s, u.gzhead = null, u.w_bits = i, u.w_size = 1 << u.w_bits, u.w_mask = u.w_size - 1, u.hash_bits = o + 7, u.hash_size = 1 << u.hash_bits, u.hash_mask = u.hash_size - 1, u.hash_shift = ~~((u.hash_bits + he - 1) / he), u.window = new T.Buf8(2 * u.w_size), u.head = new T.Buf16(u.hash_size), u.prev = new T.Buf16(u.w_size), u.lit_bufsize = 1 << o + 6, u.pending_buf_size = 4 * u.lit_bufsize, u.pending_buf = new T.Buf8(u.pending_buf_size), u.d_buf = 1 * u.lit_bufsize, u.l_buf = 3 * u.lit_bufsize, u.level = t, u.strategy = a, u.method = r, k(e) - } - - function x(e, t) { - return S(e, t, $, ee, te, V) - } - - function A(e, t) { - var r, s, f, c; - if (!e || !e.state || t > N || t < 0) return e ? n(e, W) : W; - if (s = e.state, !e.output || !e.input && 0 !== e.avail_in || s.status === we && t !== M) return n(e, 0 === e.avail_out ? Y : W); - if (s.strm = e, r = s.last_flush, s.last_flush = t, s.status === de) - if (2 === s.wrap) e.adler = 0, u(s, 31), u(s, 139), u(s, 8), s.gzhead ? (u(s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (s.gzhead.extra ? 4 : 0) + (s.gzhead.name ? 8 : 0) + (s.gzhead.comment ? 16 : 0)), u(s, 255 & s.gzhead.time), u(s, s.gzhead.time >> 8 & 255), u(s, s.gzhead.time >> 16 & 255), u(s, s.gzhead.time >> 24 & 255), u(s, 9 === s.level ? 2 : s.strategy >= K || s.level < 2 ? 4 : 0), u(s, 255 & s.gzhead.os), s.gzhead.extra && s.gzhead.extra.length && (u(s, 255 & s.gzhead.extra.length), u(s, s.gzhead.extra.length >> 8 & 255)), s.gzhead.hcrc && (e.adler = z(e.adler, s.pending_buf, s.pending, 0)), s.gzindex = 0, s.status = pe) : (u(s, 0), u(s, 0), u(s, 0), u(s, 0), u(s, 0), u(s, 9 === s.level ? 2 : s.strategy >= K || s.level < 2 ? 4 : 0), u(s, Se), s.status = ve); - else { - var l = $ + (s.w_bits - 8 << 4) << 8, - d = -1; - d = s.strategy >= K || s.level < 2 ? 0 : s.level < 6 ? 1 : 6 === s.level ? 2 : 3, l |= d << 6, 0 !== s.strstart && (l |= le), l += 31 - l % 31, s.status = ve, h(s, l), 0 !== s.strstart && (h(s, e.adler >>> 16), h(s, 65535 & e.adler)), e.adler = 1 - } - if (s.status === pe) - if (s.gzhead.extra) { - for (f = s.pending; s.gzindex < (65535 & s.gzhead.extra.length) && (s.pending !== s.pending_buf_size || (s.gzhead.hcrc && s.pending > f && (e.adler = z(e.adler, s.pending_buf, s.pending - f, f)), a(e), f = s.pending, s.pending !== s.pending_buf_size));) u(s, 255 & s.gzhead.extra[s.gzindex]), s.gzindex++; - s.gzhead.hcrc && s.pending > f && (e.adler = z(e.adler, s.pending_buf, s.pending - f, f)), s.gzindex === s.gzhead.extra.length && (s.gzindex = 0, s.status = ge) - } else s.status = ge; - if (s.status === ge) - if (s.gzhead.name) { - f = s.pending; - do { - if (s.pending === s.pending_buf_size && (s.gzhead.hcrc && s.pending > f && (e.adler = z(e.adler, s.pending_buf, s.pending - f, f)), a(e), f = s.pending, s.pending === s.pending_buf_size)) { - c = 1; - break - } - c = s.gzindex < s.gzhead.name.length ? 255 & s.gzhead.name.charCodeAt(s.gzindex++) : 0, u(s, c) - } while (0 !== c); - s.gzhead.hcrc && s.pending > f && (e.adler = z(e.adler, s.pending_buf, s.pending - f, f)), 0 === c && (s.gzindex = 0, s.status = me) - } else s.status = me; - if (s.status === me) - if (s.gzhead.comment) { - f = s.pending; - do { - if (s.pending === s.pending_buf_size && (s.gzhead.hcrc && s.pending > f && (e.adler = z(e.adler, s.pending_buf, s.pending - f, f)), a(e), f = s.pending, s.pending === s.pending_buf_size)) { - c = 1; - break - } - c = s.gzindex < s.gzhead.comment.length ? 255 & s.gzhead.comment.charCodeAt(s.gzindex++) : 0, u(s, c) - } while (0 !== c); - s.gzhead.hcrc && s.pending > f && (e.adler = z(e.adler, s.pending_buf, s.pending - f, f)), 0 === c && (s.status = _e) - } else s.status = _e; - if (s.status === _e && (s.gzhead.hcrc ? (s.pending + 2 > s.pending_buf_size && a(e), s.pending + 2 <= s.pending_buf_size && (u(s, 255 & e.adler), u(s, e.adler >> 8 & 255), e.adler = 0, s.status = ve)) : s.status = ve), 0 !== s.pending) { - if (a(e), 0 === e.avail_out) return s.last_flush = -1, F - } else if (0 === e.avail_in && i(t) <= i(r) && t !== M) return n(e, Y); - if (s.status === we && 0 !== e.avail_in) return n(e, Y); - if (0 !== e.avail_in || 0 !== s.lookahead || t !== D && s.status !== we) { - var p = s.strategy === K ? _(s, t) : s.strategy === X ? m(s, t) : I[s.level].func(s, t); - if (p !== ke && p !== Ee || (s.status = we), p === be || p === ke) return 0 === e.avail_out && (s.last_flush = -1), F; - if (p === ye && (t === U ? B._tr_align(s) : t !== N && (B._tr_stored_block(s, 0, 0, !1), t === P && (o(s.head), 0 === s.lookahead && (s.strstart = 0, s.block_start = 0, s.insert = 0))), a(e), 0 === e.avail_out)) return s.last_flush = -1, F - } - return t !== M ? F : s.wrap <= 0 ? j : (2 === s.wrap ? (u(s, 255 & e.adler), u(s, e.adler >> 8 & 255), u(s, e.adler >> 16 & 255), u(s, e.adler >> 24 & 255), u(s, 255 & e.total_in), u(s, e.total_in >> 8 & 255), u(s, e.total_in >> 16 & 255), u(s, e.total_in >> 24 & 255)) : (h(s, e.adler >>> 16), h(s, 65535 & e.adler)), a(e), s.wrap > 0 && (s.wrap = -s.wrap), 0 !== s.pending ? F : j) - } - - function R(e) { - var t; - return e && e.state ? (t = e.state.status, t !== de && t !== pe && t !== ge && t !== me && t !== _e && t !== ve && t !== we ? n(e, W) : (e.state = null, t === ve ? n(e, Z) : F)) : W - } - - function C(e, t) { - var r, n, i, a, s, u, h, f, c = t.length; - if (!e || !e.state) return W; - if (r = e.state, a = r.wrap, 2 === a || 1 === a && r.status !== de || r.lookahead) return W; - for (1 === a && (e.adler = O(e.adler, t, c, 0)), r.wrap = 0, c >= r.w_size && (0 === a && (o(r.head), r.strstart = 0, r.block_start = 0, r.insert = 0), f = new T.Buf8(r.w_size), T.arraySet(f, t, c - r.w_size, r.w_size, 0), t = f, c = r.w_size), s = e.avail_in, u = e.next_in, h = e.input, e.avail_in = c, e.next_in = 0, e.input = t, l(r); r.lookahead >= he;) { - n = r.strstart, i = r.lookahead - (he - 1); - do r.ins_h = (r.ins_h << r.hash_shift ^ r.window[n + he - 1]) & r.hash_mask, r.prev[n & r.w_mask] = r.head[r.ins_h], r.head[r.ins_h] = n, n++; while (--i); - r.strstart = n, r.lookahead = he - 1, l(r) - } - return r.strstart += r.lookahead, r.block_start = r.strstart, r.insert = r.lookahead, r.lookahead = 0, r.match_length = r.prev_length = he - 1, r.match_available = 0, e.next_in = u, e.input = h, e.avail_in = s, r.wrap = a, F - } - var I, T = r(64), - B = r(67), - O = r(68), - z = r(69), - L = r(70), - D = 0, - U = 1, - P = 3, - M = 4, - N = 5, - F = 0, - j = 1, - W = -2, - Z = -3, - Y = -5, - H = -1, - q = 1, - K = 2, - X = 3, - J = 4, - V = 0, - G = 2, - $ = 8, - Q = 9, - ee = 15, - te = 8, - re = 29, - ne = 256, - ie = ne + 1 + re, - oe = 30, - ae = 19, - se = 2 * ie + 1, - ue = 15, - he = 3, - fe = 258, - ce = fe + he + 1, - le = 32, - de = 42, - pe = 69, - ge = 73, - me = 91, - _e = 103, - ve = 113, - we = 666, - be = 1, - ye = 2, - ke = 3, - Ee = 4, - Se = 3; - I = [new v(0, 0, 0, 0, d), new v(4, 4, 8, 4, p), new v(4, 5, 16, 8, p), new v(4, 6, 32, 32, p), new v(4, 4, 16, 16, g), new v(8, 16, 32, 32, g), new v(8, 16, 128, 128, g), new v(8, 32, 128, 256, g), new v(32, 128, 258, 1024, g), new v(32, 258, 258, 4096, g)], t.deflateInit = x, t.deflateInit2 = S, t.deflateReset = k, t.deflateResetKeep = y, t.deflateSetHeader = E, t.deflate = A, t.deflateEnd = R, t.deflateSetDictionary = C, t.deflateInfo = "pako deflate (from Nodeca project)" - }, function (e, t, r) { - "use strict"; - - function n(e) { - for (var t = e.length; --t >= 0;) e[t] = 0 - } - - function i(e, t, r, n, i) { - this.static_tree = e, this.extra_bits = t, this.extra_base = r, this.elems = n, this.max_length = i, this.has_stree = e && e.length - } - - function o(e, t) { - this.dyn_tree = e, this.max_code = 0, this.stat_desc = t - } - - function a(e) { - return e < 256 ? ue[e] : ue[256 + (e >>> 7)] - } - - function s(e, t) { - e.pending_buf[e.pending++] = 255 & t, e.pending_buf[e.pending++] = t >>> 8 & 255 - } - - function u(e, t, r) { - e.bi_valid > J - r ? (e.bi_buf |= t << e.bi_valid & 65535, s(e, e.bi_buf), e.bi_buf = t >> J - e.bi_valid, e.bi_valid += r - J) : (e.bi_buf |= t << e.bi_valid & 65535, e.bi_valid += r) - } - - function h(e, t, r) { - u(e, r[2 * t], r[2 * t + 1]) - } - - function f(e, t) { - var r = 0; - do r |= 1 & e, e >>>= 1, r <<= 1; while (--t > 0); - return r >>> 1 - } - - function c(e) { - 16 === e.bi_valid ? (s(e, e.bi_buf), e.bi_buf = 0, e.bi_valid = 0) : e.bi_valid >= 8 && (e.pending_buf[e.pending++] = 255 & e.bi_buf, e.bi_buf >>= 8, e.bi_valid -= 8) - } - - function l(e, t) { - var r, n, i, o, a, s, u = t.dyn_tree, - h = t.max_code, - f = t.stat_desc.static_tree, - c = t.stat_desc.has_stree, - l = t.stat_desc.extra_bits, - d = t.stat_desc.extra_base, - p = t.stat_desc.max_length, - g = 0; - for (o = 0; o <= X; o++) e.bl_count[o] = 0; - for (u[2 * e.heap[e.heap_max] + 1] = 0, r = e.heap_max + 1; r < K; r++) n = e.heap[r], o = u[2 * u[2 * n + 1] + 1] + 1, o > p && (o = p, g++), u[2 * n + 1] = o, n > h || (e.bl_count[o]++, a = 0, n >= d && (a = l[n - d]), s = u[2 * n], e.opt_len += s * (o + a), c && (e.static_len += s * (f[2 * n + 1] + a))); - if (0 !== g) { - do { - for (o = p - 1; 0 === e.bl_count[o];) o--; - e.bl_count[o]--, e.bl_count[o + 1] += 2, e.bl_count[p]--, g -= 2 - } while (g > 0); - for (o = p; 0 !== o; o--) - for (n = e.bl_count[o]; 0 !== n;) i = e.heap[--r], i > h || (u[2 * i + 1] !== o && (e.opt_len += (o - u[2 * i + 1]) * u[2 * i], u[2 * i + 1] = o), n--) - } - } - - function d(e, t, r) { - var n, i, o = new Array(X + 1), - a = 0; - for (n = 1; n <= X; n++) o[n] = a = a + r[n - 1] << 1; - for (i = 0; i <= t; i++) { - var s = e[2 * i + 1]; - 0 !== s && (e[2 * i] = f(o[s]++, s)) - } - } - - function p() { - var e, t, r, n, o, a = new Array(X + 1); - for (r = 0, n = 0; n < W - 1; n++) - for (fe[n] = r, e = 0; e < 1 << te[n]; e++) he[r++] = n; - for (he[r - 1] = n, o = 0, n = 0; n < 16; n++) - for (ce[n] = o, e = 0; e < 1 << re[n]; e++) ue[o++] = n; - for (o >>= 7; n < H; n++) - for (ce[n] = o << 7, e = 0; e < 1 << re[n] - 7; e++) ue[256 + o++] = n; - for (t = 0; t <= X; t++) a[t] = 0; - for (e = 0; e <= 143;) ae[2 * e + 1] = 8, e++, a[8]++; - for (; e <= 255;) ae[2 * e + 1] = 9, e++, a[9]++; - for (; e <= 279;) ae[2 * e + 1] = 7, e++, a[7]++; - for (; e <= 287;) ae[2 * e + 1] = 8, e++, a[8]++; - for (d(ae, Y + 1, a), e = 0; e < H; e++) se[2 * e + 1] = 5, se[2 * e] = f(e, 5); - le = new i(ae, te, Z + 1, Y, X), de = new i(se, re, 0, H, X), pe = new i(new Array(0), ne, 0, q, V) - } - - function g(e) { - var t; - for (t = 0; t < Y; t++) e.dyn_ltree[2 * t] = 0; - for (t = 0; t < H; t++) e.dyn_dtree[2 * t] = 0; - for (t = 0; t < q; t++) e.bl_tree[2 * t] = 0; - e.dyn_ltree[2 * G] = 1, e.opt_len = e.static_len = 0, e.last_lit = e.matches = 0 - } - - function m(e) { - e.bi_valid > 8 ? s(e, e.bi_buf) : e.bi_valid > 0 && (e.pending_buf[e.pending++] = e.bi_buf), e.bi_buf = 0, e.bi_valid = 0 - } - - function _(e, t, r, n) { - m(e), n && (s(e, r), s(e, ~r)), O.arraySet(e.pending_buf, e.window, t, r, e.pending), e.pending += r - } - - function v(e, t, r, n) { - var i = 2 * t, - o = 2 * r; - return e[i] < e[o] || e[i] === e[o] && n[t] <= n[r] - } - - function w(e, t, r) { - for (var n = e.heap[r], i = r << 1; i <= e.heap_len && (i < e.heap_len && v(t, e.heap[i + 1], e.heap[i], e.depth) && i++, !v(t, n, e.heap[i], e.depth));) e.heap[r] = e.heap[i], r = i, i <<= 1; - e.heap[r] = n - } - - function b(e, t, r) { - var n, i, o, s, f = 0; - if (0 !== e.last_lit) - do n = e.pending_buf[e.d_buf + 2 * f] << 8 | e.pending_buf[e.d_buf + 2 * f + 1], i = e.pending_buf[e.l_buf + f], f++, 0 === n ? h(e, i, t) : (o = he[i], h(e, o + Z + 1, t), s = te[o], 0 !== s && (i -= fe[o], u(e, i, s)), n--, o = a(n), h(e, o, r), s = re[o], 0 !== s && (n -= ce[o], u(e, n, s))); while (f < e.last_lit); - h(e, G, t) - } - - function y(e, t) { - var r, n, i, o = t.dyn_tree, - a = t.stat_desc.static_tree, - s = t.stat_desc.has_stree, - u = t.stat_desc.elems, - h = -1; - for (e.heap_len = 0, e.heap_max = K, r = 0; r < u; r++) 0 !== o[2 * r] ? (e.heap[++e.heap_len] = h = r, e.depth[r] = 0) : o[2 * r + 1] = 0; - for (; e.heap_len < 2;) i = e.heap[++e.heap_len] = h < 2 ? ++h : 0, o[2 * i] = 1, e.depth[i] = 0, e.opt_len--, s && (e.static_len -= a[2 * i + 1]); - for (t.max_code = h, r = e.heap_len >> 1; r >= 1; r--) w(e, o, r); - i = u; - do r = e.heap[1], e.heap[1] = e.heap[e.heap_len--], w(e, o, 1), n = e.heap[1], e.heap[--e.heap_max] = r, e.heap[--e.heap_max] = n, o[2 * i] = o[2 * r] + o[2 * n], e.depth[i] = (e.depth[r] >= e.depth[n] ? e.depth[r] : e.depth[n]) + 1, o[2 * r + 1] = o[2 * n + 1] = i, e.heap[1] = i++, w(e, o, 1); while (e.heap_len >= 2); - e.heap[--e.heap_max] = e.heap[1], l(e, t), d(o, h, e.bl_count) - } - - function k(e, t, r) { - var n, i, o = -1, - a = t[1], - s = 0, - u = 7, - h = 4; - for (0 === a && (u = 138, h = 3), t[2 * (r + 1) + 1] = 65535, n = 0; n <= r; n++) i = a, a = t[2 * (n + 1) + 1], ++s < u && i === a || (s < h ? e.bl_tree[2 * i] += s : 0 !== i ? (i !== o && e.bl_tree[2 * i]++, e.bl_tree[2 * $]++) : s <= 10 ? e.bl_tree[2 * Q]++ : e.bl_tree[2 * ee]++, s = 0, o = i, 0 === a ? (u = 138, h = 3) : i === a ? (u = 6, h = 3) : (u = 7, h = 4)) - } - - function E(e, t, r) { - var n, i, o = -1, - a = t[1], - s = 0, - f = 7, - c = 4; - for (0 === a && (f = 138, c = 3), n = 0; n <= r; n++) - if (i = a, a = t[2 * (n + 1) + 1], !(++s < f && i === a)) { - if (s < c) { - do h(e, i, e.bl_tree); while (0 !== --s) - } else 0 !== i ? (i !== o && (h(e, i, e.bl_tree), s--), h(e, $, e.bl_tree), u(e, s - 3, 2)) : s <= 10 ? (h(e, Q, e.bl_tree), u(e, s - 3, 3)) : (h(e, ee, e.bl_tree), u(e, s - 11, 7)); - s = 0, o = i, 0 === a ? (f = 138, c = 3) : i === a ? (f = 6, c = 3) : (f = 7, c = 4) - } - } - - function S(e) { - var t; - for (k(e, e.dyn_ltree, e.l_desc.max_code), k(e, e.dyn_dtree, e.d_desc.max_code), y(e, e.bl_desc), t = q - 1; t >= 3 && 0 === e.bl_tree[2 * ie[t] + 1]; t--); - return e.opt_len += 3 * (t + 1) + 5 + 5 + 4, t - } - - function x(e, t, r, n) { - var i; - for (u(e, t - 257, 5), u(e, r - 1, 5), u(e, n - 4, 4), i = 0; i < n; i++) u(e, e.bl_tree[2 * ie[i] + 1], 3); - E(e, e.dyn_ltree, t - 1), E(e, e.dyn_dtree, r - 1) - } - - function A(e) { - var t, r = 4093624447; - for (t = 0; t <= 31; t++, r >>>= 1) - if (1 & r && 0 !== e.dyn_ltree[2 * t]) return L; - if (0 !== e.dyn_ltree[18] || 0 !== e.dyn_ltree[20] || 0 !== e.dyn_ltree[26]) return D; - for (t = 32; t < Z; t++) - if (0 !== e.dyn_ltree[2 * t]) return D; - return L - } - - function R(e) { - ge || (p(), ge = !0), e.l_desc = new o(e.dyn_ltree, le), e.d_desc = new o(e.dyn_dtree, de), e.bl_desc = new o(e.bl_tree, pe), e.bi_buf = 0, e.bi_valid = 0, g(e) - } - - function C(e, t, r, n) { - u(e, (P << 1) + (n ? 1 : 0), 3), _(e, t, r, !0) - } - - function I(e) { - u(e, M << 1, 3), h(e, G, ae), c(e) - } - - function T(e, t, r, n) { - var i, o, a = 0; - e.level > 0 ? (e.strm.data_type === U && (e.strm.data_type = A(e)), y(e, e.l_desc), y(e, e.d_desc), a = S(e), i = e.opt_len + 3 + 7 >>> 3, o = e.static_len + 3 + 7 >>> 3, o <= i && (i = o)) : i = o = r + 5, r + 4 <= i && t !== -1 ? C(e, t, r, n) : e.strategy === z || o === i ? (u(e, (M << 1) + (n ? 1 : 0), 3), b(e, ae, se)) : (u(e, (N << 1) + (n ? 1 : 0), 3), x(e, e.l_desc.max_code + 1, e.d_desc.max_code + 1, a + 1), b(e, e.dyn_ltree, e.dyn_dtree)), g(e), n && m(e) - } - - function B(e, t, r) { - return e.pending_buf[e.d_buf + 2 * e.last_lit] = t >>> 8 & 255, e.pending_buf[e.d_buf + 2 * e.last_lit + 1] = 255 & t, e.pending_buf[e.l_buf + e.last_lit] = 255 & r, e.last_lit++, 0 === t ? e.dyn_ltree[2 * r]++ : (e.matches++, t--, e.dyn_ltree[2 * (he[r] + Z + 1)]++, e.dyn_dtree[2 * a(t)]++), e.last_lit === e.lit_bufsize - 1 - } - var O = r(64), - z = 4, - L = 0, - D = 1, - U = 2, - P = 0, - M = 1, - N = 2, - F = 3, - j = 258, - W = 29, - Z = 256, - Y = Z + 1 + W, - H = 30, - q = 19, - K = 2 * Y + 1, - X = 15, - J = 16, - V = 7, - G = 256, - $ = 16, - Q = 17, - ee = 18, - te = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], - re = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], - ne = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], - ie = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], - oe = 512, - ae = new Array(2 * (Y + 2)); - n(ae); - var se = new Array(2 * H); - n(se); - var ue = new Array(oe); - n(ue); - var he = new Array(j - F + 1); - n(he); - var fe = new Array(W); - n(fe); - var ce = new Array(H); - n(ce); - var le, de, pe, ge = !1; - t._tr_init = R, t._tr_stored_block = C, t._tr_flush_block = T, t._tr_tally = B, t._tr_align = I - }, function (e, t) { - "use strict"; - - function r(e, t, r, n) { - for (var i = 65535 & e | 0, o = e >>> 16 & 65535 | 0, a = 0; 0 !== r;) { - a = r > 2e3 ? 2e3 : r, r -= a; - do i = i + t[n++] | 0, o = o + i | 0; while (--a); - i %= 65521, o %= 65521 - } - return i | o << 16 | 0 - } - e.exports = r - }, function (e, t) { - "use strict"; - - function r() { - for (var e, t = [], r = 0; r < 256; r++) { - e = r; - for (var n = 0; n < 8; n++) e = 1 & e ? 3988292384 ^ e >>> 1 : e >>> 1; - t[r] = e - } - return t - } - - function n(e, t, r, n) { - var o = i, - a = n + r; - e ^= -1; - for (var s = n; s < a; s++) e = e >>> 8 ^ o[255 & (e ^ t[s])]; - return e ^ -1 - } - var i = r(); - e.exports = n - }, function (e, t) { - "use strict"; - e.exports = { - 2: "need dictionary", - 1: "stream end", - 0: "", - "-1": "file error", - "-2": "stream error", - "-3": "data error", - "-4": "insufficient memory", - "-5": "buffer error", - "-6": "incompatible version" - } - }, function (e, t, r) { - "use strict"; - - function n(e, t) { - if (t < 65537 && (e.subarray && a || !e.subarray && o)) return String.fromCharCode.apply(null, i.shrinkBuf(e, t)); - for (var r = "", n = 0; n < t; n++) r += String.fromCharCode(e[n]); - return r - } - var i = r(64), - o = !0, - a = !0; - try { - String.fromCharCode.apply(null, [0]) - } catch (s) { - o = !1 - } - try { - String.fromCharCode.apply(null, new Uint8Array(1)) - } catch (s) { - a = !1 - } - for (var u = new i.Buf8(256), h = 0; h < 256; h++) u[h] = h >= 252 ? 6 : h >= 248 ? 5 : h >= 240 ? 4 : h >= 224 ? 3 : h >= 192 ? 2 : 1; - u[254] = u[254] = 1, t.string2buf = function (e) { - var t, r, n, o, a, s = e.length, - u = 0; - for (o = 0; o < s; o++) r = e.charCodeAt(o), 55296 === (64512 & r) && o + 1 < s && (n = e.charCodeAt(o + 1), 56320 === (64512 & n) && (r = 65536 + (r - 55296 << 10) + (n - 56320), o++)), u += r < 128 ? 1 : r < 2048 ? 2 : r < 65536 ? 3 : 4; - for (t = new i.Buf8(u), a = 0, o = 0; a < u; o++) r = e.charCodeAt(o), 55296 === (64512 & r) && o + 1 < s && (n = e.charCodeAt(o + 1), 56320 === (64512 & n) && (r = 65536 + (r - 55296 << 10) + (n - 56320), o++)), r < 128 ? t[a++] = r : r < 2048 ? (t[a++] = 192 | r >>> 6, t[a++] = 128 | 63 & r) : r < 65536 ? (t[a++] = 224 | r >>> 12, t[a++] = 128 | r >>> 6 & 63, t[a++] = 128 | 63 & r) : (t[a++] = 240 | r >>> 18, t[a++] = 128 | r >>> 12 & 63, t[a++] = 128 | r >>> 6 & 63, t[a++] = 128 | 63 & r); - return t - }, t.buf2binstring = function (e) { - return n(e, e.length) - }, t.binstring2buf = function (e) { - for (var t = new i.Buf8(e.length), r = 0, n = t.length; r < n; r++) t[r] = e.charCodeAt(r); - return t - }, t.buf2string = function (e, t) { - var r, i, o, a, s = t || e.length, - h = new Array(2 * s); - for (i = 0, r = 0; r < s;) - if (o = e[r++], o < 128) h[i++] = o; - else if (a = u[o], a > 4) h[i++] = 65533, r += a - 1; - else { - for (o &= 2 === a ? 31 : 3 === a ? 15 : 7; a > 1 && r < s;) o = o << 6 | 63 & e[r++], a--; - a > 1 ? h[i++] = 65533 : o < 65536 ? h[i++] = o : (o -= 65536, h[i++] = 55296 | o >> 10 & 1023, h[i++] = 56320 | 1023 & o) - } - return n(h, i) - }, t.utf8border = function (e, t) { - var r; - for (t = t || e.length, t > e.length && (t = e.length), r = t - 1; r >= 0 && 128 === (192 & e[r]);) r--; - return r < 0 ? t : 0 === r ? t : r + u[e[r]] > t ? r : t - } - }, function (e, t) { - "use strict"; - - function r() { - this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0 - } - e.exports = r - }, function (e, t, r) { - "use strict"; - - function n(e) { - if (!(this instanceof n)) return new n(e); - this.options = s.assign({ - chunkSize: 16384, - windowBits: 0, - to: "" - }, e || {}); - var t = this.options; - t.raw && t.windowBits >= 0 && t.windowBits < 16 && (t.windowBits = -t.windowBits, 0 === t.windowBits && (t.windowBits = -15)), !(t.windowBits >= 0 && t.windowBits < 16) || e && e.windowBits || (t.windowBits += 32), t.windowBits > 15 && t.windowBits < 48 && 0 === (15 & t.windowBits) && (t.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new c, this.strm.avail_out = 0; - var r = a.inflateInit2(this.strm, t.windowBits); - if (r !== h.Z_OK) throw new Error(f[r]); - this.header = new l, a.inflateGetHeader(this.strm, this.header) - } - - function i(e, t) { - var r = new n(t); - if (r.push(e, !0), r.err) throw r.msg; - return r.result - } - - function o(e, t) { - return t = t || {}, t.raw = !0, i(e, t) - } - var a = r(74), - s = r(64), - u = r(71), - h = r(77), - f = r(70), - c = r(72), - l = r(78), - d = Object.prototype.toString; - n.prototype.push = function (e, t) { - var r, n, i, o, f, c, l = this.strm, - p = this.options.chunkSize, - g = this.options.dictionary, - m = !1; - if (this.ended) return !1; - n = t === ~~t ? t : t === !0 ? h.Z_FINISH : h.Z_NO_FLUSH, "string" == typeof e ? l.input = u.binstring2buf(e) : "[object ArrayBuffer]" === d.call(e) ? l.input = new Uint8Array(e) : l.input = e, l.next_in = 0, l.avail_in = l.input.length; - do { - if (0 === l.avail_out && (l.output = new s.Buf8(p), l.next_out = 0, l.avail_out = p), r = a.inflate(l, h.Z_NO_FLUSH), r === h.Z_NEED_DICT && g && (c = "string" == typeof g ? u.string2buf(g) : "[object ArrayBuffer]" === d.call(g) ? new Uint8Array(g) : g, r = a.inflateSetDictionary(this.strm, c)), r === h.Z_BUF_ERROR && m === !0 && (r = h.Z_OK, m = !1), r !== h.Z_STREAM_END && r !== h.Z_OK) return this.onEnd(r), this.ended = !0, !1; - l.next_out && (0 !== l.avail_out && r !== h.Z_STREAM_END && (0 !== l.avail_in || n !== h.Z_FINISH && n !== h.Z_SYNC_FLUSH) || ("string" === this.options.to ? (i = u.utf8border(l.output, l.next_out), o = l.next_out - i, f = u.buf2string(l.output, i), l.next_out = o, l.avail_out = p - o, o && s.arraySet(l.output, l.output, i, o, 0), this.onData(f)) : this.onData(s.shrinkBuf(l.output, l.next_out)))), 0 === l.avail_in && 0 === l.avail_out && (m = !0) - } while ((l.avail_in > 0 || 0 === l.avail_out) && r !== h.Z_STREAM_END); - return r === h.Z_STREAM_END && (n = h.Z_FINISH), n === h.Z_FINISH ? (r = a.inflateEnd(this.strm), this.onEnd(r), this.ended = !0, r === h.Z_OK) : n !== h.Z_SYNC_FLUSH || (this.onEnd(h.Z_OK), l.avail_out = 0, !0) - }, n.prototype.onData = function (e) { - this.chunks.push(e) - }, n.prototype.onEnd = function (e) { - e === h.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = s.flattenChunks(this.chunks)), this.chunks = [], this.err = e, this.msg = this.strm.msg - }, t.Inflate = n, t.inflate = i, t.inflateRaw = o, t.ungzip = i - }, function (e, t, r) { - "use strict"; - - function n(e) { - return (e >>> 24 & 255) + (e >>> 8 & 65280) + ((65280 & e) << 8) + ((255 & e) << 24) - } - - function i() { - this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new v.Buf16(320), this.work = new v.Buf16(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0 - } - - function o(e) { - var t; - return e && e.state ? (t = e.state, e.total_in = e.total_out = t.total = 0, e.msg = "", t.wrap && (e.adler = 1 & t.wrap), t.mode = P, t.last = 0, t.havedict = 0, t.dmax = 32768, t.head = null, t.hold = 0, t.bits = 0, t.lencode = t.lendyn = new v.Buf32(ge), t.distcode = t.distdyn = new v.Buf32(me), t.sane = 1, t.back = -1, I) : O - } - - function a(e) { - var t; - return e && e.state ? (t = e.state, t.wsize = 0, t.whave = 0, t.wnext = 0, o(e)) : O - } - - function s(e, t) { - var r, n; - return e && e.state ? (n = e.state, t < 0 ? (r = 0, t = -t) : (r = (t >> 4) + 1, t < 48 && (t &= 15)), t && (t < 8 || t > 15) ? O : (null !== n.window && n.wbits !== t && (n.window = null), n.wrap = r, n.wbits = t, a(e))) : O - } - - function u(e, t) { - var r, n; - return e ? (n = new i, e.state = n, n.window = null, r = s(e, t), r !== I && (e.state = null), r) : O - } - - function h(e) { - return u(e, ve) - } - - function f(e) { - if (we) { - var t; - for (m = new v.Buf32(512), _ = new v.Buf32(32), t = 0; t < 144;) e.lens[t++] = 8; - for (; t < 256;) e.lens[t++] = 9; - for (; t < 280;) e.lens[t++] = 7; - for (; t < 288;) e.lens[t++] = 8; - for (k(S, e.lens, 0, 288, m, 0, e.work, { - bits: 9 - }), t = 0; t < 32;) e.lens[t++] = 5; - k(x, e.lens, 0, 32, _, 0, e.work, { - bits: 5 - }), we = !1 - } - e.lencode = m, e.lenbits = 9, e.distcode = _, e.distbits = 5 - } - - function c(e, t, r, n) { - var i, o = e.state; - return null === o.window && (o.wsize = 1 << o.wbits, o.wnext = 0, o.whave = 0, o.window = new v.Buf8(o.wsize)), n >= o.wsize ? (v.arraySet(o.window, t, r - o.wsize, o.wsize, 0), o.wnext = 0, o.whave = o.wsize) : (i = o.wsize - o.wnext, i > n && (i = n), v.arraySet(o.window, t, r - n, i, o.wnext), n -= i, n ? (v.arraySet(o.window, t, r - n, n, 0), o.wnext = n, o.whave = o.wsize) : (o.wnext += i, o.wnext === o.wsize && (o.wnext = 0), o.whave < o.wsize && (o.whave += i))), 0 - } - - function l(e, t) { - var r, i, o, a, s, u, h, l, d, p, g, m, _, ge, me, _e, ve, we, be, ye, ke, Ee, Se, xe, Ae = 0, - Re = new v.Buf8(4), - Ce = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]; - if (!e || !e.state || !e.output || !e.input && 0 !== e.avail_in) return O; - r = e.state, r.mode === X && (r.mode = J), s = e.next_out, o = e.output, h = e.avail_out, a = e.next_in, i = e.input, u = e.avail_in, l = r.hold, d = r.bits, p = u, g = h, Ee = I; - e: for (;;) switch (r.mode) { - case P: - if (0 === r.wrap) { - r.mode = J; - break - } - for (; d < 16;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - if (2 & r.wrap && 35615 === l) { - r.check = 0, Re[0] = 255 & l, Re[1] = l >>> 8 & 255, r.check = b(r.check, Re, 2, 0), l = 0, d = 0, r.mode = M; - break - } - if (r.flags = 0, r.head && (r.head.done = !1), !(1 & r.wrap) || (((255 & l) << 8) + (l >> 8)) % 31) { - e.msg = "incorrect header check", r.mode = le; - break - } - if ((15 & l) !== U) { - e.msg = "unknown compression method", r.mode = le; - break - } - if (l >>>= 4, d -= 4, ke = (15 & l) + 8, 0 === r.wbits) r.wbits = ke; - else if (ke > r.wbits) { - e.msg = "invalid window size", r.mode = le; - break - } - r.dmax = 1 << ke, e.adler = r.check = 1, r.mode = 512 & l ? q : X, l = 0, d = 0; - break; - case M: - for (; d < 16;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - if (r.flags = l, (255 & r.flags) !== U) { - e.msg = "unknown compression method", r.mode = le; - break - } - if (57344 & r.flags) { - e.msg = "unknown header flags set", r.mode = le; - break - } - r.head && (r.head.text = l >> 8 & 1), 512 & r.flags && (Re[0] = 255 & l, Re[1] = l >>> 8 & 255, r.check = b(r.check, Re, 2, 0)), l = 0, d = 0, r.mode = N; - case N: - for (; d < 32;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - r.head && (r.head.time = l), 512 & r.flags && (Re[0] = 255 & l, Re[1] = l >>> 8 & 255, Re[2] = l >>> 16 & 255, Re[3] = l >>> 24 & 255, r.check = b(r.check, Re, 4, 0)), l = 0, d = 0, r.mode = F; - case F: - for (; d < 16;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - r.head && (r.head.xflags = 255 & l, r.head.os = l >> 8), 512 & r.flags && (Re[0] = 255 & l, Re[1] = l >>> 8 & 255, r.check = b(r.check, Re, 2, 0)), l = 0, d = 0, r.mode = j; - case j: - if (1024 & r.flags) { - for (; d < 16;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - r.length = l, r.head && (r.head.extra_len = l), 512 & r.flags && (Re[0] = 255 & l, Re[1] = l >>> 8 & 255, r.check = b(r.check, Re, 2, 0)), l = 0, d = 0 - } else r.head && (r.head.extra = null); - r.mode = W; - case W: - if (1024 & r.flags && (m = r.length, m > u && (m = u), m && (r.head && (ke = r.head.extra_len - r.length, r.head.extra || (r.head.extra = new Array(r.head.extra_len)), v.arraySet(r.head.extra, i, a, m, ke)), 512 & r.flags && (r.check = b(r.check, i, m, a)), u -= m, a += m, r.length -= m), r.length)) break e; - r.length = 0, r.mode = Z; - case Z: - if (2048 & r.flags) { - if (0 === u) break e; - m = 0; - do ke = i[a + m++], r.head && ke && r.length < 65536 && (r.head.name += String.fromCharCode(ke)); while (ke && m < u); - if (512 & r.flags && (r.check = b(r.check, i, m, a)), u -= m, a += m, ke) break e - } else r.head && (r.head.name = null); - r.length = 0, r.mode = Y; - case Y: - if (4096 & r.flags) { - if (0 === u) break e; - m = 0; - do ke = i[a + m++], r.head && ke && r.length < 65536 && (r.head.comment += String.fromCharCode(ke)); while (ke && m < u); - if (512 & r.flags && (r.check = b(r.check, i, m, a)), u -= m, a += m, ke) break e - } else r.head && (r.head.comment = null); - r.mode = H; - case H: - if (512 & r.flags) { - for (; d < 16;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - if (l !== (65535 & r.check)) { - e.msg = "header crc mismatch", r.mode = le; - break - } - l = 0, d = 0 - } - r.head && (r.head.hcrc = r.flags >> 9 & 1, r.head.done = !0), e.adler = r.check = 0, r.mode = X; - break; - case q: - for (; d < 32;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - e.adler = r.check = n(l), l = 0, d = 0, r.mode = K; - case K: - if (0 === r.havedict) return e.next_out = s, e.avail_out = h, e.next_in = a, e.avail_in = u, r.hold = l, r.bits = d, B; - e.adler = r.check = 1, r.mode = X; - case X: - if (t === R || t === C) break e; - case J: - if (r.last) { - l >>>= 7 & d, d -= 7 & d, r.mode = he; - break - } - for (; d < 3;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - switch (r.last = 1 & l, l >>>= 1, d -= 1, 3 & l) { - case 0: - r.mode = V; - break; - case 1: - if (f(r), r.mode = re, t === C) { - l >>>= 2, d -= 2; - break e - } - break; - case 2: - r.mode = Q; - break; - case 3: - e.msg = "invalid block type", r.mode = le - } - l >>>= 2, d -= 2; - break; - case V: - for (l >>>= 7 & d, d -= 7 & d; d < 32;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - if ((65535 & l) !== (l >>> 16 ^ 65535)) { - e.msg = "invalid stored block lengths", r.mode = le; - break - } - if (r.length = 65535 & l, l = 0, d = 0, r.mode = G, t === C) break e; - case G: - r.mode = $; - case $: - if (m = r.length) { - if (m > u && (m = u), m > h && (m = h), 0 === m) break e; - v.arraySet(o, i, a, m, s), u -= m, a += m, h -= m, s += m, r.length -= m; - break - } - r.mode = X; - break; - case Q: - for (; d < 14;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - if (r.nlen = (31 & l) + 257, l >>>= 5, d -= 5, r.ndist = (31 & l) + 1, l >>>= 5, d -= 5, r.ncode = (15 & l) + 4, l >>>= 4, d -= 4, r.nlen > 286 || r.ndist > 30) { - e.msg = "too many length or distance symbols", r.mode = le; - break - } - r.have = 0, r.mode = ee; - case ee: - for (; r.have < r.ncode;) { - for (; d < 3;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - r.lens[Ce[r.have++]] = 7 & l, l >>>= 3, d -= 3 - } - for (; r.have < 19;) r.lens[Ce[r.have++]] = 0; - if (r.lencode = r.lendyn, r.lenbits = 7, Se = { - bits: r.lenbits - }, Ee = k(E, r.lens, 0, 19, r.lencode, 0, r.work, Se), r.lenbits = Se.bits, Ee) { - e.msg = "invalid code lengths set", r.mode = le; - break - } - r.have = 0, r.mode = te; - case te: - for (; r.have < r.nlen + r.ndist;) { - for (; Ae = r.lencode[l & (1 << r.lenbits) - 1], me = Ae >>> 24, _e = Ae >>> 16 & 255, ve = 65535 & Ae, !(me <= d);) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - if (ve < 16) l >>>= me, d -= me, r.lens[r.have++] = ve; - else { - if (16 === ve) { - for (xe = me + 2; d < xe;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - if (l >>>= me, d -= me, 0 === r.have) { - e.msg = "invalid bit length repeat", r.mode = le; - break - } - ke = r.lens[r.have - 1], m = 3 + (3 & l), l >>>= 2, d -= 2 - } else if (17 === ve) { - for (xe = me + 3; d < xe;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - l >>>= me, d -= me, ke = 0, m = 3 + (7 & l), l >>>= 3, d -= 3 - } else { - for (xe = me + 7; d < xe;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - l >>>= me, d -= me, ke = 0, m = 11 + (127 & l), l >>>= 7, d -= 7 - } - if (r.have + m > r.nlen + r.ndist) { - e.msg = "invalid bit length repeat", r.mode = le; - break - } - for (; m--;) r.lens[r.have++] = ke - } - } - if (r.mode === le) break; - if (0 === r.lens[256]) { - e.msg = "invalid code -- missing end-of-block", r.mode = le; - break - } - if (r.lenbits = 9, Se = { - bits: r.lenbits - }, Ee = k(S, r.lens, 0, r.nlen, r.lencode, 0, r.work, Se), r.lenbits = Se.bits, Ee) { - e.msg = "invalid literal/lengths set", r.mode = le; - break - } - if (r.distbits = 6, r.distcode = r.distdyn, Se = { - bits: r.distbits - }, Ee = k(x, r.lens, r.nlen, r.ndist, r.distcode, 0, r.work, Se), r.distbits = Se.bits, Ee) { - e.msg = "invalid distances set", r.mode = le; - break - } - if (r.mode = re, t === C) break e; - case re: - r.mode = ne; - case ne: - if (u >= 6 && h >= 258) { - e.next_out = s, e.avail_out = h, e.next_in = a, e.avail_in = u, r.hold = l, r.bits = d, y(e, g), s = e.next_out, o = e.output, h = e.avail_out, a = e.next_in, i = e.input, u = e.avail_in, l = r.hold, d = r.bits, r.mode === X && (r.back = -1); - break - } - for (r.back = 0; Ae = r.lencode[l & (1 << r.lenbits) - 1], me = Ae >>> 24, _e = Ae >>> 16 & 255, ve = 65535 & Ae, !(me <= d);) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - if (_e && 0 === (240 & _e)) { - for (we = me, be = _e, ye = ve; Ae = r.lencode[ye + ((l & (1 << we + be) - 1) >> we)], me = Ae >>> 24, _e = Ae >>> 16 & 255, ve = 65535 & Ae, !(we + me <= d);) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - l >>>= we, d -= we, r.back += we - } - if (l >>>= me, d -= me, r.back += me, r.length = ve, 0 === _e) { - r.mode = ue; - break - } - if (32 & _e) { - r.back = -1, r.mode = X; - break - } - if (64 & _e) { - e.msg = "invalid literal/length code", r.mode = le; - break - } - r.extra = 15 & _e, r.mode = ie; - case ie: - if (r.extra) { - for (xe = r.extra; d < xe;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - r.length += l & (1 << r.extra) - 1, l >>>= r.extra, d -= r.extra, r.back += r.extra - } - r.was = r.length, r.mode = oe; - case oe: - for (; Ae = r.distcode[l & (1 << r.distbits) - 1], me = Ae >>> 24, _e = Ae >>> 16 & 255, ve = 65535 & Ae, !(me <= d);) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - if (0 === (240 & _e)) { - for (we = me, be = _e, ye = ve; Ae = r.distcode[ye + ((l & (1 << we + be) - 1) >> we)], me = Ae >>> 24, _e = Ae >>> 16 & 255, ve = 65535 & Ae, !(we + me <= d);) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - l >>>= we, d -= we, r.back += we - } - if (l >>>= me, d -= me, r.back += me, 64 & _e) { - e.msg = "invalid distance code", r.mode = le; - break - } - r.offset = ve, r.extra = 15 & _e, r.mode = ae; - case ae: - if (r.extra) { - for (xe = r.extra; d < xe;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - r.offset += l & (1 << r.extra) - 1, l >>>= r.extra, d -= r.extra, r.back += r.extra - } - if (r.offset > r.dmax) { - e.msg = "invalid distance too far back", r.mode = le; - break - } - r.mode = se; - case se: - if (0 === h) break e; - if (m = g - h, r.offset > m) { - if (m = r.offset - m, m > r.whave && r.sane) { - e.msg = "invalid distance too far back", r.mode = le; - break - } - m > r.wnext ? (m -= r.wnext, _ = r.wsize - m) : _ = r.wnext - m, m > r.length && (m = r.length), ge = r.window - } else ge = o, _ = s - r.offset, m = r.length; - m > h && (m = h), h -= m, r.length -= m; - do o[s++] = ge[_++]; while (--m); - 0 === r.length && (r.mode = ne); - break; - case ue: - if (0 === h) break e; - o[s++] = r.length, h--, r.mode = ne; - break; - case he: - if (r.wrap) { - for (; d < 32;) { - if (0 === u) break e; - u--, l |= i[a++] << d, d += 8 - } - if (g -= h, e.total_out += g, r.total += g, g && (e.adler = r.check = r.flags ? b(r.check, o, g, s - g) : w(r.check, o, g, s - g)), g = h, (r.flags ? l : n(l)) !== r.check) { - e.msg = "incorrect data check", r.mode = le; - break - } - l = 0, d = 0 - } - r.mode = fe; - case fe: - if (r.wrap && r.flags) { - for (; d < 32;) { - if (0 === u) break e; - u--, l += i[a++] << d, d += 8 - } - if (l !== (4294967295 & r.total)) { - e.msg = "incorrect length check", r.mode = le; - break - } - l = 0, d = 0 - } - r.mode = ce; - case ce: - Ee = T; - break e; - case le: - Ee = z; - break e; - case de: - return L; - case pe: - default: - return O - } - return e.next_out = s, e.avail_out = h, e.next_in = a, e.avail_in = u, r.hold = l, r.bits = d, (r.wsize || g !== e.avail_out && r.mode < le && (r.mode < he || t !== A)) && c(e, e.output, e.next_out, g - e.avail_out) ? (r.mode = de, L) : (p -= e.avail_in, g -= e.avail_out, e.total_in += p, e.total_out += g, r.total += g, r.wrap && g && (e.adler = r.check = r.flags ? b(r.check, o, g, e.next_out - g) : w(r.check, o, g, e.next_out - g)), e.data_type = r.bits + (r.last ? 64 : 0) + (r.mode === X ? 128 : 0) + (r.mode === re || r.mode === G ? 256 : 0), (0 === p && 0 === g || t === A) && Ee === I && (Ee = D), Ee) - } - - function d(e) { - if (!e || !e.state) return O; - var t = e.state; - return t.window && (t.window = null), e.state = null, I - } - - function p(e, t) { - var r; - return e && e.state ? (r = e.state, 0 === (2 & r.wrap) ? O : (r.head = t, t.done = !1, I)) : O - } - - function g(e, t) { - var r, n, i, o = t.length; - return e && e.state ? (r = e.state, 0 !== r.wrap && r.mode !== K ? O : r.mode === K && (n = 1, n = w(n, t, o, 0), n !== r.check) ? z : (i = c(e, t, o, o)) ? (r.mode = de, L) : (r.havedict = 1, I)) : O - } - var m, _, v = r(64), - w = r(68), - b = r(69), - y = r(75), - k = r(76), - E = 0, - S = 1, - x = 2, - A = 4, - R = 5, - C = 6, - I = 0, - T = 1, - B = 2, - O = -2, - z = -3, - L = -4, - D = -5, - U = 8, - P = 1, - M = 2, - N = 3, - F = 4, - j = 5, - W = 6, - Z = 7, - Y = 8, - H = 9, - q = 10, - K = 11, - X = 12, - J = 13, - V = 14, - G = 15, - $ = 16, - Q = 17, - ee = 18, - te = 19, - re = 20, - ne = 21, - ie = 22, - oe = 23, - ae = 24, - se = 25, - ue = 26, - he = 27, - fe = 28, - ce = 29, - le = 30, - de = 31, - pe = 32, - ge = 852, - me = 592, - _e = 15, - ve = _e, - we = !0; - t.inflateReset = a, t.inflateReset2 = s, t.inflateResetKeep = o, t.inflateInit = h, t.inflateInit2 = u, t.inflate = l, t.inflateEnd = d, t.inflateGetHeader = p, t.inflateSetDictionary = g, t.inflateInfo = "pako inflate (from Nodeca project)" - }, function (e, t) { - "use strict"; - var r = 30, - n = 12; - e.exports = function (e, t) { - var i, o, a, s, u, h, f, c, l, d, p, g, m, _, v, w, b, y, k, E, S, x, A, R, C; - i = e.state, o = e.next_in, R = e.input, a = o + (e.avail_in - 5), s = e.next_out, C = e.output, u = s - (t - e.avail_out), h = s + (e.avail_out - 257), f = i.dmax, c = i.wsize, l = i.whave, d = i.wnext, p = i.window, g = i.hold, m = i.bits, _ = i.lencode, v = i.distcode, w = (1 << i.lenbits) - 1, b = (1 << i.distbits) - 1; - e: do { - m < 15 && (g += R[o++] << m, m += 8, g += R[o++] << m, m += 8), y = _[g & w]; - t: for (;;) { - if (k = y >>> 24, g >>>= k, m -= k, k = y >>> 16 & 255, 0 === k) C[s++] = 65535 & y; - else { - if (!(16 & k)) { - if (0 === (64 & k)) { - y = _[(65535 & y) + (g & (1 << k) - 1)]; - continue t - } - if (32 & k) { - i.mode = n; - break e - } - e.msg = "invalid literal/length code", i.mode = r; - break e - } - E = 65535 & y, k &= 15, k && (m < k && (g += R[o++] << m, m += 8), E += g & (1 << k) - 1, g >>>= k, m -= k), m < 15 && (g += R[o++] << m, m += 8, g += R[o++] << m, m += 8), y = v[g & b]; - r: for (;;) { - if (k = y >>> 24, g >>>= k, m -= k, k = y >>> 16 & 255, !(16 & k)) { - if (0 === (64 & k)) { - y = v[(65535 & y) + (g & (1 << k) - 1)]; - continue r - } - e.msg = "invalid distance code", i.mode = r; - break e - } - if (S = 65535 & y, k &= 15, m < k && (g += R[o++] << m, m += 8, m < k && (g += R[o++] << m, m += 8)), S += g & (1 << k) - 1, S > f) { - e.msg = "invalid distance too far back", i.mode = r; - break e - } - if (g >>>= k, m -= k, k = s - u, S > k) { - if (k = S - k, k > l && i.sane) { - e.msg = "invalid distance too far back", i.mode = r; - break e - } - if (x = 0, A = p, 0 === d) { - if (x += c - k, k < E) { - E -= k; - do C[s++] = p[x++]; while (--k); - x = s - S, A = C - } - } else if (d < k) { - if (x += c + d - k, k -= d, k < E) { - E -= k; - do C[s++] = p[x++]; while (--k); - if (x = 0, d < E) { - k = d, E -= k; - do C[s++] = p[x++]; while (--k); - x = s - S, A = C - } - } - } else if (x += d - k, k < E) { - E -= k; - do C[s++] = p[x++]; while (--k); - x = s - S, A = C - } - for (; E > 2;) C[s++] = A[x++], C[s++] = A[x++], C[s++] = A[x++], E -= 3; - E && (C[s++] = A[x++], E > 1 && (C[s++] = A[x++])) - } else { - x = s - S; - do C[s++] = C[x++], C[s++] = C[x++], C[s++] = C[x++], E -= 3; while (E > 2); - E && (C[s++] = C[x++], E > 1 && (C[s++] = C[x++])) - } - break - } - } - break - } - } while (o < a && s < h); - E = m >> 3, o -= E, m -= E << 3, g &= (1 << m) - 1, e.next_in = o, e.next_out = s, e.avail_in = o < a ? 5 + (a - o) : 5 - (o - a), e.avail_out = s < h ? 257 + (h - s) : 257 - (s - h), i.hold = g, i.bits = m - } - }, function (e, t, r) { - "use strict"; - var n = r(64), - i = 15, - o = 852, - a = 592, - s = 0, - u = 1, - h = 2, - f = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0], - c = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78], - l = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0], - d = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]; - e.exports = function (e, t, r, p, g, m, _, v) { - var w, b, y, k, E, S, x, A, R, C = v.bits, - I = 0, - T = 0, - B = 0, - O = 0, - z = 0, - L = 0, - D = 0, - U = 0, - P = 0, - M = 0, - N = null, - F = 0, - j = new n.Buf16(i + 1), - W = new n.Buf16(i + 1), - Z = null, - Y = 0; - for (I = 0; I <= i; I++) j[I] = 0; - for (T = 0; T < p; T++) j[t[r + T]]++; - for (z = C, O = i; O >= 1 && 0 === j[O]; O--); - if (z > O && (z = O), 0 === O) return g[m++] = 20971520, g[m++] = 20971520, v.bits = 1, 0; - for (B = 1; B < O && 0 === j[B]; B++); - for (z < B && (z = B), U = 1, I = 1; I <= i; I++) - if (U <<= 1, U -= j[I], U < 0) return -1; - if (U > 0 && (e === s || 1 !== O)) return -1; - for (W[1] = 0, I = 1; I < i; I++) W[I + 1] = W[I] + j[I]; - for (T = 0; T < p; T++) 0 !== t[r + T] && (_[W[t[r + T]]++] = T); - if (e === s ? (N = Z = _, S = 19) : e === u ? (N = f, F -= 257, Z = c, Y -= 257, S = 256) : (N = l, Z = d, S = -1), M = 0, T = 0, I = B, E = m, L = z, D = 0, y = -1, P = 1 << z, k = P - 1, e === u && P > o || e === h && P > a) return 1; - for (var H = 0;;) { - H++, x = I - D, _[T] < S ? (A = 0, R = _[T]) : _[T] > S ? (A = Z[Y + _[T]], R = N[F + _[T]]) : (A = 96, R = 0), w = 1 << I - D, b = 1 << L, B = b; - do b -= w, g[E + (M >> D) + b] = x << 24 | A << 16 | R | 0; while (0 !== b); - for (w = 1 << I - 1; M & w;) w >>= 1; - if (0 !== w ? (M &= w - 1, M += w) : M = 0, T++, 0 === --j[I]) { - if (I === O) break; - I = t[r + _[T]] - } - if (I > z && (M & k) !== y) { - for (0 === D && (D = z), E += B, L = I - D, U = 1 << L; L + D < O && (U -= j[L + D], !(U <= 0));) L++, U <<= 1; - if (P += 1 << L, e === u && P > o || e === h && P > a) return 1; - y = M & k, g[y] = z << 24 | L << 16 | E - m | 0 - } - } - return 0 !== M && (g[E + M] = I - D << 24 | 64 << 16 | 0), v.bits = z, 0 - } - }, function (e, t) { - "use strict"; - e.exports = { - Z_NO_FLUSH: 0, - Z_PARTIAL_FLUSH: 1, - Z_SYNC_FLUSH: 2, - Z_FULL_FLUSH: 3, - Z_FINISH: 4, - Z_BLOCK: 5, - Z_TREES: 6, - Z_OK: 0, - Z_STREAM_END: 1, - Z_NEED_DICT: 2, - Z_ERRNO: -1, - Z_STREAM_ERROR: -2, - Z_DATA_ERROR: -3, - Z_BUF_ERROR: -5, - Z_NO_COMPRESSION: 0, - Z_BEST_SPEED: 1, - Z_BEST_COMPRESSION: 9, - Z_DEFAULT_COMPRESSION: -1, - Z_FILTERED: 1, - Z_HUFFMAN_ONLY: 2, - Z_RLE: 3, - Z_FIXED: 4, - Z_DEFAULT_STRATEGY: 0, - Z_BINARY: 0, - Z_TEXT: 1, - Z_UNKNOWN: 2, - Z_DEFLATED: 8 - } - }, function (e, t) { - "use strict"; - - function r() { - this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1 - } - e.exports = r - }, function (e, t, r) { - "use strict"; - - function n(e, t, r, n) { - o.call(this, "ZipFileWorker"), this.bytesWritten = 0, this.zipComment = t, this.zipPlatform = r, this.encodeFileName = n, this.streamFiles = e, this.accumulate = !1, this.contentBuffer = [], this.dirRecords = [], this.currentSourceOffset = 0, this.entriesCount = 0, this.currentFile = null, this._sources = [] - } - var i = r(4), - o = r(50), - a = r(3), - s = r(58), - u = r(80), - h = function (e, t) { - var r, n = ""; - for (r = 0; r < t; r++) n += String.fromCharCode(255 & e), e >>>= 8; - return n - }, - f = function (e, t) { - var r = e; - return e || (r = t ? 16893 : 33204), (65535 & r) << 16 - }, - c = function (e, t) { - return 63 & (e || 0) - }, - l = function (e, t, r, n, o, l) { - var d, p, g = e.file, - m = e.compression, - _ = l !== a.utf8encode, - v = i.transformTo("string", l(g.name)), - w = i.transformTo("string", a.utf8encode(g.name)), - b = g.comment, - y = i.transformTo("string", l(b)), - k = i.transformTo("string", a.utf8encode(b)), - E = w.length !== g.name.length, - S = k.length !== b.length, - x = "", - A = "", - R = "", - C = g.dir, - I = g.date, - T = { - crc32: 0, - compressedSize: 0, - uncompressedSize: 0 - }; - t && !r || (T.crc32 = e.crc32, T.compressedSize = e.compressedSize, T.uncompressedSize = e.uncompressedSize); - var B = 0; - t && (B |= 8), _ || !E && !S || (B |= 2048); - var O = 0, - z = 0; - C && (O |= 16), "UNIX" === o ? (z = 798, O |= f(g.unixPermissions, C)) : (z = 20, O |= c(g.dosPermissions, C)), d = I.getUTCHours(), d <<= 6, d |= I.getUTCMinutes(), d <<= 5, d |= I.getUTCSeconds() / 2, p = I.getUTCFullYear() - 1980, p <<= 4, p |= I.getUTCMonth() + 1, p <<= 5, p |= I.getUTCDate(), E && (A = h(1, 1) + h(s(v), 4) + w, x += "up" + h(A.length, 2) + A), S && (R = h(1, 1) + h(s(y), 4) + k, x += "uc" + h(R.length, 2) + R); - var L = ""; - L += "\n\0", L += h(B, 2), L += m.magic, L += h(d, 2), L += h(p, 2), L += h(T.crc32, 4), L += h(T.compressedSize, 4), L += h(T.uncompressedSize, 4), L += h(v.length, 2), L += h(x.length, 2); - var D = u.LOCAL_FILE_HEADER + L + v + x, - U = u.CENTRAL_FILE_HEADER + h(z, 2) + L + h(y.length, 2) + "\0\0\0\0" + h(O, 4) + h(n, 4) + v + x + y; - return { - fileRecord: D, - dirRecord: U - } - }, - d = function (e, t, r, n, o) { - var a = "", - s = i.transformTo("string", o(n)); - return a = u.CENTRAL_DIRECTORY_END + "\0\0\0\0" + h(e, 2) + h(e, 2) + h(t, 4) + h(r, 4) + h(s.length, 2) + s; - }, - p = function (e) { - var t = ""; - return t = u.DATA_DESCRIPTOR + h(e.crc32, 4) + h(e.compressedSize, 4) + h(e.uncompressedSize, 4) - }; - i.inherits(n, o), n.prototype.push = function (e) { - var t = e.meta.percent || 0, - r = this.entriesCount, - n = this._sources.length; - this.accumulate ? this.contentBuffer.push(e) : (this.bytesWritten += e.data.length, o.prototype.push.call(this, { - data: e.data, - meta: { - currentFile: this.currentFile, - percent: r ? (t + 100 * (r - n - 1)) / r : 100 - } - })) - }, n.prototype.openedSource = function (e) { - if (this.currentSourceOffset = this.bytesWritten, this.currentFile = e.file.name, this.streamFiles && !e.file.dir) { - var t = l(e, this.streamFiles, !1, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); - this.push({ - data: t.fileRecord, - meta: { - percent: 0 - } - }) - } else this.accumulate = !0 - }, n.prototype.closedSource = function (e) { - this.accumulate = !1; - var t = l(e, this.streamFiles, !0, this.currentSourceOffset, this.zipPlatform, this.encodeFileName); - if (this.dirRecords.push(t.dirRecord), this.streamFiles && !e.file.dir) this.push({ - data: p(e), - meta: { - percent: 100 - } - }); - else - for (this.push({ - data: t.fileRecord, - meta: { - percent: 0 - } - }); this.contentBuffer.length;) this.push(this.contentBuffer.shift()); - this.currentFile = null - }, n.prototype.flush = function () { - for (var e = this.bytesWritten, t = 0; t < this.dirRecords.length; t++) this.push({ - data: this.dirRecords[t], - meta: { - percent: 100 - } - }); - var r = this.bytesWritten - e, - n = d(this.dirRecords.length, r, e, this.zipComment, this.encodeFileName); - this.push({ - data: n, - meta: { - percent: 100 - } - }) - }, n.prototype.prepareNextSource = function () { - this.previous = this._sources.shift(), this.openedSource(this.previous.streamInfo), this.isPaused ? this.previous.pause() : this.previous.resume() - }, n.prototype.registerPrevious = function (e) { - this._sources.push(e); - var t = this; - return e.on("data", function (e) { - t.processChunk(e) - }), e.on("end", function () { - t.closedSource(t.previous.streamInfo), t._sources.length ? t.prepareNextSource() : t.end() - }), e.on("error", function (e) { - t.error(e) - }), this - }, n.prototype.resume = function () { - return !!o.prototype.resume.call(this) && (!this.previous && this._sources.length ? (this.prepareNextSource(), !0) : this.previous || this._sources.length || this.generatedError ? void 0 : (this.end(), !0)) - }, n.prototype.error = function (e) { - var t = this._sources; - if (!o.prototype.error.call(this, e)) return !1; - for (var r = 0; r < t.length; r++) try { - t[r].error(e) - } catch (e) {} - return !0 - }, n.prototype.lock = function () { - o.prototype.lock.call(this); - for (var e = this._sources, t = 0; t < e.length; t++) e[t].lock() - }, e.exports = n - }, function (e, t) { - "use strict"; - t.LOCAL_FILE_HEADER = "PK", t.CENTRAL_FILE_HEADER = "PK", t.CENTRAL_DIRECTORY_END = "PK", t.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK", t.ZIP64_CENTRAL_DIRECTORY_END = "PK", t.DATA_DESCRIPTOR = "PK\b" - }, function (e, t, r) { - "use strict"; - - function n(e, t) { - o.call(this, "Nodejs stream input adapter for " + e), this._upstreamEnded = !1, this._bindStream(t) - } - var i = r(4), - o = r(50); - i.inherits(n, o), n.prototype._bindStream = function (e) { - var t = this; - this._stream = e, e.pause(), e.on("data", function (e) { - t.push({ - data: e, - meta: { - percent: 0 - } - }) - }).on("error", function (e) { - t.isPaused ? this.generatedError = e : t.error(e) - }).on("end", function () { - t.isPaused ? t._upstreamEnded = !0 : t.end() - }) - }, n.prototype.pause = function () { - return !!o.prototype.pause.call(this) && (this._stream.pause(), !0) - }, n.prototype.resume = function () { - return !!o.prototype.resume.call(this) && (this._upstreamEnded ? this.end() : this._stream.resume(), !0) - }, e.exports = n - }, function (e, t, r) { - "use strict"; - - function n(e) { - return new o.Promise(function (t, r) { - var n = e.decompressed.getContentWorker().pipe(new u); - n.on("error", function (e) { - r(e) - }).on("end", function () { - n.streamInfo.crc32 !== e.decompressed.crc32 ? r(new Error("Corrupted zip : CRC32 mismatch")) : t() - }).resume() - }) - } - var i = r(4), - o = r(45), - a = r(3), - i = r(4), - s = r(83), - u = r(57), - h = r(42); - e.exports = function (e, t) { - var r = this; - return t = i.extend(t || {}, { - base64: !1, - checkCRC32: !1, - optimizedBinaryString: !1, - createFolders: !1, - decodeFileName: a.utf8decode - }), h.isNode && h.isStream(e) ? o.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")) : i.prepareContent("the loaded zip file", e, !0, t.optimizedBinaryString, t.base64).then(function (e) { - var r = new s(t); - return r.load(e), r - }).then(function (e) { - var r = [o.Promise.resolve(e)], - i = e.files; - if (t.checkCRC32) - for (var a = 0; a < i.length; a++) r.push(n(i[a])); - return o.Promise.all(r) - }).then(function (e) { - for (var n = e.shift(), i = n.files, o = 0; o < i.length; o++) { - var a = i[o]; - r.file(a.fileNameStr, a.decompressed, { - binary: !0, - optimizedBinaryString: !0, - date: a.date, - dir: a.dir, - comment: a.fileCommentStr.length ? a.fileCommentStr : null, - unixPermissions: a.unixPermissions, - dosPermissions: a.dosPermissions, - createFolders: t.createFolders - }) - } - return n.zipComment.length && (r.comment = n.zipComment), r - }) - } - }, function (e, t, r) { - "use strict"; - - function n(e) { - this.files = [], this.loadOptions = e - } - var i = r(84), - o = r(4), - a = r(80), - s = r(90), - u = (r(3), r(5)); - n.prototype = { - checkSignature: function (e) { - if (!this.reader.readAndCheckSignature(e)) { - this.reader.index -= 4; - var t = this.reader.readString(4); - throw new Error("Corrupted zip or bug : unexpected signature (" + o.pretty(t) + ", expected " + o.pretty(e) + ")") - } - }, - isSignature: function (e, t) { - var r = this.reader.index; - this.reader.setIndex(e); - var n = this.reader.readString(4), - i = n === t; - return this.reader.setIndex(r), i - }, - readBlockEndOfCentral: function () { - this.diskNumber = this.reader.readInt(2), this.diskWithCentralDirStart = this.reader.readInt(2), this.centralDirRecordsOnThisDisk = this.reader.readInt(2), this.centralDirRecords = this.reader.readInt(2), this.centralDirSize = this.reader.readInt(4), this.centralDirOffset = this.reader.readInt(4), this.zipCommentLength = this.reader.readInt(2); - var e = this.reader.readData(this.zipCommentLength), - t = u.uint8array ? "uint8array" : "array", - r = o.transformTo(t, e); - this.zipComment = this.loadOptions.decodeFileName(r) - }, - readBlockZip64EndOfCentral: function () { - this.zip64EndOfCentralSize = this.reader.readInt(8), this.reader.skip(4), this.diskNumber = this.reader.readInt(4), this.diskWithCentralDirStart = this.reader.readInt(4), this.centralDirRecordsOnThisDisk = this.reader.readInt(8), this.centralDirRecords = this.reader.readInt(8), this.centralDirSize = this.reader.readInt(8), this.centralDirOffset = this.reader.readInt(8), this.zip64ExtensibleData = {}; - for (var e, t, r, n = this.zip64EndOfCentralSize - 44, i = 0; i < n;) e = this.reader.readInt(2), t = this.reader.readInt(4), r = this.reader.readData(t), this.zip64ExtensibleData[e] = { - id: e, - length: t, - value: r - } - }, - readBlockZip64EndOfCentralLocator: function () { - if (this.diskWithZip64CentralDirStart = this.reader.readInt(4), this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8), this.disksCount = this.reader.readInt(4), this.disksCount > 1) throw new Error("Multi-volumes zip are not supported") - }, - readLocalFiles: function () { - var e, t; - for (e = 0; e < this.files.length; e++) t = this.files[e], this.reader.setIndex(t.localHeaderOffset), this.checkSignature(a.LOCAL_FILE_HEADER), t.readLocalPart(this.reader), t.handleUTF8(), t.processAttributes() - }, - readCentralDir: function () { - var e; - for (this.reader.setIndex(this.centralDirOffset); this.reader.readAndCheckSignature(a.CENTRAL_FILE_HEADER);) e = new s({ - zip64: this.zip64 - }, this.loadOptions), e.readCentralPart(this.reader), this.files.push(e); - if (this.centralDirRecords !== this.files.length && 0 !== this.centralDirRecords && 0 === this.files.length) throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length) - }, - readEndOfCentral: function () { - var e = this.reader.lastIndexOfSignature(a.CENTRAL_DIRECTORY_END); - if (e < 0) { - var t = !this.isSignature(0, a.LOCAL_FILE_HEADER); - throw t ? new Error("Can't find end of central directory : is this a zip file ? If it is, see http://stuk.github.io/jszip/documentation/howto/read_zip.html") : new Error("Corrupted zip : can't find end of central directory") - } - this.reader.setIndex(e); - var r = e; - if (this.checkSignature(a.CENTRAL_DIRECTORY_END), this.readBlockEndOfCentral(), this.diskNumber === o.MAX_VALUE_16BITS || this.diskWithCentralDirStart === o.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === o.MAX_VALUE_16BITS || this.centralDirRecords === o.MAX_VALUE_16BITS || this.centralDirSize === o.MAX_VALUE_32BITS || this.centralDirOffset === o.MAX_VALUE_32BITS) { - if (this.zip64 = !0, e = this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR), e < 0) throw new Error("Corrupted zip : can't find the ZIP64 end of central directory locator"); - if (this.reader.setIndex(e), this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR), this.readBlockZip64EndOfCentralLocator(), !this.isSignature(this.relativeOffsetEndOfZip64CentralDir, a.ZIP64_CENTRAL_DIRECTORY_END) && (this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_END), this.relativeOffsetEndOfZip64CentralDir < 0)) throw new Error("Corrupted zip : can't find the ZIP64 end of central directory"); - this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir), this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_END), this.readBlockZip64EndOfCentral() - } - var n = this.centralDirOffset + this.centralDirSize; - this.zip64 && (n += 20, n += 12 + this.zip64EndOfCentralSize); - var i = r - n; - if (i > 0) this.isSignature(r, a.CENTRAL_FILE_HEADER) || (this.reader.zero = i); - else if (i < 0) throw new Error("Corrupted zip: missing " + Math.abs(i) + " bytes.") - }, - prepareReader: function (e) { - this.reader = i(e) - }, - load: function (e) { - this.prepareReader(e), this.readEndOfCentral(), this.readCentralDir(), this.readLocalFiles() - } - }, e.exports = n - }, function (e, t, r) { - "use strict"; - var n = r(4), - i = r(5), - o = r(85), - a = r(87), - s = r(88), - u = r(89); - e.exports = function (e) { - var t = n.getTypeOf(e); - return n.checkSupport(t), "string" !== t || i.uint8array ? "nodebuffer" === t ? new s(e) : i.uint8array ? new u(n.transformTo("uint8array", e)) : new o(n.transformTo("array", e)) : new a(e) - } - }, function (e, t, r) { - "use strict"; - - function n(e) { - i.call(this, e); - for (var t = 0; t < this.data.length; t++) e[t] = 255 & e[t] - } - var i = r(86), - o = r(4); - o.inherits(n, i), n.prototype.byteAt = function (e) { - return this.data[this.zero + e] - }, n.prototype.lastIndexOfSignature = function (e) { - for (var t = e.charCodeAt(0), r = e.charCodeAt(1), n = e.charCodeAt(2), i = e.charCodeAt(3), o = this.length - 4; o >= 0; --o) - if (this.data[o] === t && this.data[o + 1] === r && this.data[o + 2] === n && this.data[o + 3] === i) return o - this.zero; - return -1 - }, n.prototype.readAndCheckSignature = function (e) { - var t = e.charCodeAt(0), - r = e.charCodeAt(1), - n = e.charCodeAt(2), - i = e.charCodeAt(3), - o = this.readData(4); - return t === o[0] && r === o[1] && n === o[2] && i === o[3] - }, n.prototype.readData = function (e) { - if (this.checkOffset(e), 0 === e) return []; - var t = this.data.slice(this.zero + this.index, this.zero + this.index + e); - return this.index += e, t - }, e.exports = n - }, function (e, t, r) { - "use strict"; - - function n(e) { - this.data = e, this.length = e.length, this.index = 0, this.zero = 0 - } - var i = r(4); - n.prototype = { - checkOffset: function (e) { - this.checkIndex(this.index + e) - }, - checkIndex: function (e) { - if (this.length < this.zero + e || e < 0) throw new Error("End of data reached (data length = " + this.length + ", asked index = " + e + "). Corrupted zip ?") - }, - setIndex: function (e) { - this.checkIndex(e), this.index = e - }, - skip: function (e) { - this.setIndex(this.index + e) - }, - byteAt: function (e) {}, - readInt: function (e) { - var t, r = 0; - for (this.checkOffset(e), t = this.index + e - 1; t >= this.index; t--) r = (r << 8) + this.byteAt(t); - return this.index += e, r - }, - readString: function (e) { - return i.transformTo("string", this.readData(e)) - }, - readData: function (e) {}, - lastIndexOfSignature: function (e) {}, - readAndCheckSignature: function (e) {}, - readDate: function () { - var e = this.readInt(4); - return new Date(Date.UTC((e >> 25 & 127) + 1980, (e >> 21 & 15) - 1, e >> 16 & 31, e >> 11 & 31, e >> 5 & 63, (31 & e) << 1)) - } - }, e.exports = n - }, function (e, t, r) { - "use strict"; - - function n(e) { - i.call(this, e) - } - var i = r(86), - o = r(4); - o.inherits(n, i), n.prototype.byteAt = function (e) { - return this.data.charCodeAt(this.zero + e) - }, n.prototype.lastIndexOfSignature = function (e) { - return this.data.lastIndexOf(e) - this.zero - }, n.prototype.readAndCheckSignature = function (e) { - var t = this.readData(4); - return e === t - }, n.prototype.readData = function (e) { - this.checkOffset(e); - var t = this.data.slice(this.zero + this.index, this.zero + this.index + e); - return this.index += e, t - }, e.exports = n - }, function (e, t, r) { - "use strict"; - - function n(e) { - i.call(this, e) - } - var i = r(89), - o = r(4); - o.inherits(n, i), n.prototype.readData = function (e) { - this.checkOffset(e); - var t = this.data.slice(this.zero + this.index, this.zero + this.index + e); - return this.index += e, t - }, e.exports = n - }, function (e, t, r) { - "use strict"; - - function n(e) { - i.call(this, e) - } - var i = r(85), - o = r(4); - o.inherits(n, i), n.prototype.readData = function (e) { - if (this.checkOffset(e), 0 === e) return new Uint8Array(0); - var t = this.data.subarray(this.zero + this.index, this.zero + this.index + e); - return this.index += e, t - }, e.exports = n - }, function (e, t, r) { - "use strict"; - - function n(e, t) { - this.options = e, this.loadOptions = t - } - var i = r(84), - o = r(4), - a = r(54), - s = r(58), - u = r(3), - h = r(61), - f = r(5), - c = 0, - l = 3, - d = function (e) { - for (var t in h) - if (h.hasOwnProperty(t) && h[t].magic === e) return h[t]; - return null - }; - n.prototype = { - isEncrypted: function () { - return 1 === (1 & this.bitFlag) - }, - useUTF8: function () { - return 2048 === (2048 & this.bitFlag) - }, - readLocalPart: function (e) { - var t, r; - if (e.skip(22), this.fileNameLength = e.readInt(2), r = e.readInt(2), this.fileName = e.readData(this.fileNameLength), e.skip(r), this.compressedSize === -1 || this.uncompressedSize === -1) throw new Error("Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize === -1 || uncompressedSize === -1)"); - if (t = d(this.compressionMethod), null === t) throw new Error("Corrupted zip : compression " + o.pretty(this.compressionMethod) + " unknown (inner file : " + o.transformTo("string", this.fileName) + ")"); - this.decompressed = new a(this.compressedSize, this.uncompressedSize, this.crc32, t, e.readData(this.compressedSize)) - }, - readCentralPart: function (e) { - this.versionMadeBy = e.readInt(2), e.skip(2), this.bitFlag = e.readInt(2), this.compressionMethod = e.readString(2), this.date = e.readDate(), this.crc32 = e.readInt(4), this.compressedSize = e.readInt(4), this.uncompressedSize = e.readInt(4); - var t = e.readInt(2); - if (this.extraFieldsLength = e.readInt(2), this.fileCommentLength = e.readInt(2), this.diskNumberStart = e.readInt(2), this.internalFileAttributes = e.readInt(2), this.externalFileAttributes = e.readInt(4), this.localHeaderOffset = e.readInt(4), this.isEncrypted()) throw new Error("Encrypted zip are not supported"); - e.skip(t), this.readExtraFields(e), this.parseZIP64ExtraField(e), this.fileComment = e.readData(this.fileCommentLength) - }, - processAttributes: function () { - this.unixPermissions = null, this.dosPermissions = null; - var e = this.versionMadeBy >> 8; - this.dir = !!(16 & this.externalFileAttributes), e === c && (this.dosPermissions = 63 & this.externalFileAttributes), e === l && (this.unixPermissions = this.externalFileAttributes >> 16 & 65535), this.dir || "/" !== this.fileNameStr.slice(-1) || (this.dir = !0) - }, - parseZIP64ExtraField: function (e) { - if (this.extraFields[1]) { - var t = i(this.extraFields[1].value); - this.uncompressedSize === o.MAX_VALUE_32BITS && (this.uncompressedSize = t.readInt(8)), this.compressedSize === o.MAX_VALUE_32BITS && (this.compressedSize = t.readInt(8)), this.localHeaderOffset === o.MAX_VALUE_32BITS && (this.localHeaderOffset = t.readInt(8)), this.diskNumberStart === o.MAX_VALUE_32BITS && (this.diskNumberStart = t.readInt(4)) - } - }, - readExtraFields: function (e) { - var t, r, n, i = e.index + this.extraFieldsLength; - for (this.extraFields || (this.extraFields = {}); e.index < i;) t = e.readInt(2), r = e.readInt(2), n = e.readData(r), this.extraFields[t] = { - id: t, - length: r, - value: n - } - }, - handleUTF8: function () { - var e = f.uint8array ? "uint8array" : "array"; - if (this.useUTF8()) this.fileNameStr = u.utf8decode(this.fileName), this.fileCommentStr = u.utf8decode(this.fileComment); - else { - var t = this.findExtraFieldUnicodePath(); - if (null !== t) this.fileNameStr = t; - else { - var r = o.transformTo(e, this.fileName); - this.fileNameStr = this.loadOptions.decodeFileName(r) - } - var n = this.findExtraFieldUnicodeComment(); - if (null !== n) this.fileCommentStr = n; - else { - var i = o.transformTo(e, this.fileComment); - this.fileCommentStr = this.loadOptions.decodeFileName(i) - } - } - }, - findExtraFieldUnicodePath: function () { - var e = this.extraFields[28789]; - if (e) { - var t = i(e.value); - return 1 !== t.readInt(1) ? null : s(this.fileName) !== t.readInt(4) ? null : u.utf8decode(t.readData(e.length - 5)) - } - return null - }, - findExtraFieldUnicodeComment: function () { - var e = this.extraFields[25461]; - if (e) { - var t = i(e.value); - return 1 !== t.readInt(1) ? null : s(this.fileComment) !== t.readInt(4) ? null : u.utf8decode(t.readData(e.length - 5)) - } - return null - } - }, e.exports = n - }, function (e, t, r) { - var n, i, o = o || function (e) { - "use strict"; - if (!("undefined" == typeof e || "undefined" != typeof navigator && /MSIE [1-9]\./.test(navigator.userAgent))) { - var t = e.document, - r = function () { - return e.URL || e.webkitURL || e - }, - n = t.createElementNS("http://www.w3.org/1999/xhtml", "a"), - i = "download" in n, - o = function (e) { - var t = new MouseEvent("click"); - e.dispatchEvent(t) - }, - a = /constructor/i.test(e.HTMLElement), - s = /CriOS\/[\d]+/.test(navigator.userAgent), - u = function (t) { - (e.setImmediate || e.setTimeout)(function () { - throw t - }, 0) - }, - h = "application/octet-stream", - f = 4e4, - c = function (e) { - var t = function () { - "string" == typeof e ? r().revokeObjectURL(e) : e.remove() - }; - setTimeout(t, f) - }, - l = function (e, t, r) { - t = [].concat(t); - for (var n = t.length; n--;) { - var i = e["on" + t[n]]; - if ("function" == typeof i) try { - i.call(e, r || e) - } catch (o) { - u(o) - } - } - }, - d = function (e) { - return /^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type) ? new Blob([String.fromCharCode(65279), e], { - type: e.type - }) : e - }, - p = function (t, u, f) { - f || (t = d(t)); - var p, g = this, - m = t.type, - _ = m === h, - v = function () { - l(g, "writestart progress write writeend".split(" ")) - }, - w = function () { - if ((s || _ && a) && e.FileReader) { - var n = new FileReader; - return n.onloadend = function () { - var t = s ? n.result : n.result.replace(/^data:[^;]*;/, "data:attachment/file;"), - r = e.open(t, "_blank"); - r || (e.location.href = t), t = void 0, g.readyState = g.DONE, v() - }, n.readAsDataURL(t), void(g.readyState = g.INIT) - } - if (p || (p = r().createObjectURL(t)), _) e.location.href = p; - else { - var i = e.open(p, "_blank"); - i || (e.location.href = p) - } - g.readyState = g.DONE, v(), c(p) - }; - return g.readyState = g.INIT, i ? (p = r().createObjectURL(t), void setTimeout(function () { - n.href = p, n.download = u, o(n), v(), c(p), g.readyState = g.DONE - })) : void w() - }, - g = p.prototype, - m = function (e, t, r) { - return new p(e, t || e.name || "download", r) - }; - return "undefined" != typeof navigator && navigator.msSaveOrOpenBlob ? function (e, t, r) { - return t = t || e.name || "download", r || (e = d(e)), navigator.msSaveOrOpenBlob(e, t) - } : (g.abort = function () {}, g.readyState = g.INIT = 0, g.WRITING = 1, g.DONE = 2, g.error = g.onwritestart = g.onprogress = g.onwrite = g.onabort = g.onerror = g.onwriteend = null, m) - } - }("undefined" != typeof self && self || "undefined" != typeof window && window || this.content); - "undefined" != typeof e && e.exports ? e.exports.saveAs = o : null !== r(49) && null !== r(92) && (n = [], i = function () { - return o - }.apply(t, n), !(void 0 !== i && (e.exports = i))) - }, function (e, t) { - (function (t) { - e.exports = t - }).call(t, {}) - }]) -}); diff --git a/index.html b/index.html index d6b2097..ec606f6 100755 --- a/index.html +++ b/index.html @@ -9,13 +9,13 @@ - +
        - + diff --git a/webpack.mix.js b/webpack.mix.js index 51d3474..a611b10 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -1,6 +1,17 @@ const mix = require('laravel-mix'); -mix.disableNotifications(); -mix -.sass('gramateria/develop/gramateria.scss','gramateria/dist/gram.min.css') -.js('gramateria/develop/gramateria.js','gramateria/dist/gram.min.js') \ No newline at end of file + +mix.disableNotifications() +.options({processCssUrls: false}) +.sass('gramateria/develop/sass/gramateria.scss','gramateria/dist/gram.min.css') +.js('gramateria/develop/js/gramateria.js','gramateria/dist/gram.min.js') + + + +const assets_data = [ + 'fonts', + 'svg' +] +for(let asset of assets_data){ + mix.copyDirectory(`gramateria/develop/${asset}`,`gramateria/dist/${asset}`) +} \ No newline at end of file From 55871ece9b761b0d012da0d2396c8fe2ac0c1795 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Tue, 20 Jul 2021 23:45:12 +0630 Subject: [PATCH 03/27] add file saver and zipjs, loading spinner --- gramateria/develop/js/config/buttons.js | 5 + .../develop/js/config/exportTemplate.js | 18 + gramateria/develop/js/gramateria.js | 162 +- gramateria/develop/js/helpers/index.js | 27 + gramateria/develop/sass/_overwrite.scss | 309 +- gramateria/develop/sass/_variables.scss | 3 + gramateria/develop/sass/gramateria.scss | 1 + gramateria/dist/gram.min.css | 237 +- gramateria/dist/gram.min.js | 3370 ++++++++++++++++- index.html | 70 +- package-lock.json | 68 + package.json | 7 +- webpack.mix.js | 14 +- 13 files changed, 3630 insertions(+), 661 deletions(-) create mode 100644 gramateria/develop/js/config/exportTemplate.js create mode 100644 gramateria/develop/js/helpers/index.js create mode 100644 gramateria/develop/sass/_variables.scss diff --git a/gramateria/develop/js/config/buttons.js b/gramateria/develop/js/config/buttons.js index ca6ff60..9974fb3 100644 --- a/gramateria/develop/js/config/buttons.js +++ b/gramateria/develop/js/config/buttons.js @@ -1,3 +1,5 @@ +import { exportZip } from './../helpers' + export default [{ id: 'undo', className: 'fa fa-undo icon-undo', @@ -66,6 +68,9 @@ export default [{ className: 'fa fa-download', command: (editor, sender) =>{ sender.set('active', 0); + let html = localStorage.getItem('gjs-html') || ''; + let css = localStorage.getItem('gjs-css') || ''; + exportZip({html,css}); }, attributes: { title: 'Download as zip' diff --git a/gramateria/develop/js/config/exportTemplate.js b/gramateria/develop/js/config/exportTemplate.js new file mode 100644 index 0000000..920b143 --- /dev/null +++ b/gramateria/develop/js/config/exportTemplate.js @@ -0,0 +1,18 @@ +export const exportTemplate = (data)=>{ + const {title,html} = data; + return ` + + + + + + ${title} + + + + ${html} + + + ` +} + diff --git a/gramateria/develop/js/gramateria.js b/gramateria/develop/js/gramateria.js index 42966d2..1f3d06b 100755 --- a/gramateria/develop/js/gramateria.js +++ b/gramateria/develop/js/gramateria.js @@ -3,8 +3,20 @@ import styleManager from './config/styleManager' import commands from './config/commands' import assetManager from './config/assetManager' import buttons from './config/buttons' +import { checkExtension } from './helpers/index.js' +import { Notyf } from 'notyf'; +import 'notyf/notyf.min.css'; // for React, Vue and Svelte + class Gramateria { - constructor(){ + constructor() { + + this.msg = new Notyf({ + duration: 3000, + position: { + x: 'center', + y: 'top' + } + }); this.editor = grapesjs.init({ allowScripts: 1, showOffsets: 1, @@ -40,18 +52,16 @@ class Gramateria { }); this.editor.Panels.addButton('options', buttons); + this.modal = this.editor.Modal; + } - checkExtension (fname) { - let ext = /^.+\.([^.]+)$/.exec(fname); - return ext == null ? "" : ext[1]; - } - editModal() { + + codeImportModal() { // --------------------- // Import/Edit // --------------------- let prefix = this.editor.getConfig().stylePrefix; - let modal = this.editor.Modal; let modal_content_wrapper = document.createElement("div"); modal_content_wrapper.id = "modal-wrapper"; @@ -60,63 +70,63 @@ class Gramateria { let copyHtml = document.createElement("button"); let copyCss = document.createElement("button"); let exportTxt = document.createElement("button"); - let loadTxt = document.createElement("button"); - let fileLoader = document.createElement("form"); + let fileLoader = document.createElement("label"); let anchor = document.createElement("a"); + let header_menus = document.createElement("div"); + let fileLoadInput = document.createElement("input"); + fileLoadInput.style.display = 'none'; + fileLoadInput.setAttribute('type','file'); + + let htmlCodeEditor = this.buildCodeEditor('html'); + let cssCodeEditor = this.buildCodeEditor('css'); + + btnEdit.innerHTML = ' Apply & close'; + exportTxt.innerHTML = ' Save as .gram file'; + copyHtml.innerHTML = ' Copy HTML'; + copyCss.innerHTML = ' Copy CSS'; + fileLoader.innerHTML = ' Load .gram file'; + fileLoader.appendChild(fileLoadInput); + + header_menus.className = 'header-menus'; + fileLoader.className = prefix + 'import-file'; + btnEdit.className = prefix + 'btn-prim ' + prefix + 'btn-import'; + copyHtml.className = prefix + 'btn-prim ' + prefix + 'btn-html'; + copyCss.className = prefix + 'btn-prim ' + prefix + 'btn-css'; + exportTxt.className = prefix + 'btn-prim ' + prefix + 'btn-export'; - - - let htmlCodeEditor = this.buildCodeEditor('html'); - let cssCodeEditor = this.buildCodeEditor('css'); - - btnEdit.innerHTML = ' Apply'; - exportTxt.innerHTML = ' Save as .gram file'; - loadTxt.innerHTML = ' Load .gram file'; - copyHtml.innerHTML = ' Copy HTML'; - copyCss.innerHTML = ' Copy CSS'; - fileLoader.innerHTML = ''; - - fileLoader.className = prefix + 'import-file'; - btnEdit.className = prefix + 'btn-prim ' + prefix + 'btn-import'; - copyHtml.className = prefix + 'btn-prim ' + prefix + 'btn-html'; - copyCss.className = prefix + 'btn-prim ' + prefix + 'btn-css'; - exportTxt.className = prefix + 'btn-prim ' + prefix + 'btn-export'; - loadTxt.className = prefix + 'btn-prim ' + prefix + 'btn-load'; + fileLoadInput.onchange = (e) =>{ + let currentFile = e.target.files[0]; + let fType = checkExtension(currentFile['name']); + if (currentFile === undefined) { + this.msg.error('Please select a file'); + return; + } + const allowFileType = ['gram','txt']; + if (!allowFileType.includes(fType)) { + this.msg.error('You can only import .gram or .txt extension'); + return; + } + let reader = new FileReader(); + reader.onload = (e) => { + let fileData = e.target.result; + this.editor.DomComponents.getWrapper().set('content', ''); + this.editor.setComponents(fileData); + this.modal.close(); + } + reader.readAsText(currentFile); + } // import button inside import editor - btnEdit.onclick = () => { + btnEdit.onclick = () => { let htmlCode = htmlCodeEditor.editor.getValue(); let cssCode = cssCodeEditor.editor.getValue(); this.editor.DomComponents.getWrapper().set('content', ''); this.editor.setComponents(htmlCode.trim() + ''); - modal.close(); + this.modal.close(); }; - // onclick load file button inside import editor - loadTxt.onclick = (e) =>{ - e.preventDefault(); - let fileToLoad = document.getElementById("fileToLoad").files[0]; - let fType = this.checkExtension(fileToLoad['name']); - if (fileToLoad === undefined) { - alert('Please select a file'); - return; - } - if (fType === 'gram' || fType === 'txt') { - let reader = new FileReader(); - reader.onload = (e) =>{ - let fileData = e.target.result; - this.editor.DomComponents.getWrapper().set('content', ''); - this.editor.setComponents(fileData); - modal.close(); - } - reader.readAsText(fileToLoad); - } else { - alert('You can only import .gram or .txt extension'); - } - } - - copyHtml.onclick = () => { + copyHtml.onclick = () => { let htmlCodes = htmlCodeEditor.editor.getValue(); let dummy = document.createElement("input"); document.body.appendChild(dummy); @@ -125,10 +135,10 @@ class Gramateria { document.execCommand("copy"); document.body.removeChild(dummy); document.execCommand('copy'); - alert('You have copied HTML codes!'); + this.msg.success('You have copied HTML codes!'); }; - copyCss.onclick = function () { + copyCss.onclick = () => { let cssCodes = cssCodeEditor.editor.getValue(); let dummy = document.createElement("input"); document.body.appendChild(dummy); @@ -137,11 +147,11 @@ class Gramateria { document.execCommand("copy"); document.body.removeChild(dummy); document.execCommand('copy'); - alert('You have copied CSS codes!'); + this.msg.success('You have copied CSS codes!'); }; // onclick save as button inside import editor - exportTxt.onclick = () => { + exportTxt.onclick = () => { let InnerHtml = this.editor.getHtml(); let Css = this.editor.getCss(); let text = InnerHtml + "'; @@ -157,6 +167,13 @@ class Gramateria { document.body.removeChild(anchor); } + + header_menus.appendChild(fileLoader); + header_menus.appendChild(exportTxt) + header_menus.appendChild(copyCss); + header_menus.appendChild(copyHtml); + header_menus.appendChild(btnEdit); + // import nav button click event this.editor.Commands.add('html-edit', { run: (editor, sender) => { @@ -179,25 +196,20 @@ class Gramateria { headline.className = 'clear-fix'; if (!htmlCodeEditor.editor && !cssCodeEditor.editor) { - modal_content_wrapper.appendChild(fileLoader); - modal_content_wrapper.appendChild(loadTxt); - modal_content_wrapper.appendChild(exportTxt); + modal_content_wrapper.appendChild(header_menus); modal_content_wrapper.appendChild(headline); modal_content_wrapper.appendChild(htmlBox); modal_content_wrapper.appendChild(cssBox); - modal_content_wrapper.appendChild(copyCss); - modal_content_wrapper.appendChild(copyHtml); - modal_content_wrapper.appendChild(btnEdit); htmlCodeEditor.init(html_textarea_box); cssCodeEditor.init(css_textarea_box); } - modal.setTitle('Edit and Import'); - modal.setContent(''); - modal.setContent(modal_content_wrapper); + this.modal.setTitle('Edit and Import'); + this.modal.setContent(''); + this.modal.setContent(modal_content_wrapper); htmlCodeEditor.setContent(editor.getHtml()); cssCodeEditor.setContent(editor.getCss({ avoidProtected: true })); - modal.open(); + this.modal.open(); htmlCodeEditor.editor.refresh(); cssCodeEditor.editor.refresh(); } @@ -221,14 +233,14 @@ class Gramateria { }); return codeEditor; } - - init(){ - this.editModal(); - this.editor.Panels.removeButton('options', 'export-template'); - this.editor.on('load', (editor)=>{ - editor.Panels.getButton('views', 'open-blocks').set('active', true) - editor.BlockManager.getCategories().each(function (ctg) { - if(ctg.attributes.id == 'Section'){ + + init() { + this.codeImportModal(); + this.editor.Panels.removeButton('options', 'export-template'); + this.editor.on('load', (editor) => { + editor.Panels.getButton('views', 'open-blocks').set('active', true) + editor.BlockManager.getCategories().each( (ctg) => { + if (ctg.attributes.id == 'Section') { return; } ctg.set('open', false); diff --git a/gramateria/develop/js/helpers/index.js b/gramateria/develop/js/helpers/index.js new file mode 100644 index 0000000..2c253e8 --- /dev/null +++ b/gramateria/develop/js/helpers/index.js @@ -0,0 +1,27 @@ +import JSZip from 'jszip'; +import { saveAs } from 'file-saver'; +import {exportTemplate} from '../config/exportTemplate'; + +export const checkExtension = (fname) => { + let ext = /^.+\.([^.]+)$/.exec(fname); + return ext == null ? "" : ext[1]; +} + +export const exportZip = (content) => { + let zip = new JSZip(); + const data = { + title:"Untitle project", + html:content.html + } + zip.file("index.html", exportTemplate(data)); + + let css = zip.folder("css"); + css.file("style.css", content.css); + + + zip.generateAsync({type:"blob"}) + .then(function(content) { + let fileName = Date.now()+'-export.zip'; + saveAs(content, fileName); + }); +} \ No newline at end of file diff --git a/gramateria/develop/sass/_overwrite.scss b/gramateria/develop/sass/_overwrite.scss index 46bd6b8..6c032c7 100644 --- a/gramateria/develop/sass/_overwrite.scss +++ b/gramateria/develop/sass/_overwrite.scss @@ -1,3 +1,5 @@ +/* Overwrite GrapeJS css */ + .gjs-cm-editor#gjs-cm-css #gjs-cm-title, .gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title, .gjs-two-color, @@ -6,172 +8,6 @@ color: #464973; } -.gjs-block-category .gjs-blocks-c div[title="Card"]:after { - background-image: url('http://res.cloudinary.com/ronaldaug/image/upload/v1518968468/card_urqoco.jpg'); - background-size: cover; - width: 300px; - height: 231px; - } - -.gjs-block-category .gjs-blocks-c div[title="Blog"]:after { - background-image: url('https://res.cloudinary.com/ronaldaug/image/upload/v1530116427/blog_qrhnhx.jpg'); - background-size: cover; - width: 400px; - height: 227px; -} - -.gjs-block-category .gjs-blocks-c div[title="Starter"]:after { - background-image: url('http://res.cloudinary.com/ronaldaug/image/upload/v1518968469/starter_shyx0y.png'); - background-size: cover; - width: 400px; - height: 196px; -} - -.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:after { - background-image: url('http://res.cloudinary.com/ronaldaug/image/upload/v1518968466/nav_he3fot.jpg'); - background-size: cover; - width: 600px; - height: 38px; -} - -.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:after { - background-image: url('http://res.cloudinary.com/ronaldaug/image/upload/v1518968469/nav2_iovg0o.jpg'); - background-size: cover; - width: 600px; - height: 129px; -} - -.gjs-block-category .gjs-blocks-c div[title="Footer"]:after { - background-image: url('http://res.cloudinary.com/ronaldaug/image/upload/v1518968467/footer_o8vuik.jpg'); - background-size: cover; - width: 400px; - height: 142px; -} - -.gjs-block-category .gjs-blocks-c div[title="Badges"]:after { - background-image: url('http://res.cloudinary.com/ronaldaug/image/upload/v1518968467/badges_hs1ta5.jpg'); - background-size: cover; - width: 400px; - height: 154px; -} - -.gjs-block-category .gjs-blocks-c div[title="Members"]:after { - background-image: url('https://res.cloudinary.com/ronaldaug/image/upload/v1530275580/members_v2x2tl.jpg'); - background-size: cover; - width: 400px; - height: 224px; -} - -.gjs-block-category .gjs-blocks-c div[title="Slider"]:after { - background-image: url('http://res.cloudinary.com/ronaldaug/image/upload/v1518968468/slider_l07ucf.jpg'); - background-size: cover; - width: 400px; - height: 154px; -} - -.gjs-block-category .gjs-blocks-c div[title="Input"]:after, -.gjs-block-category .gjs-blocks-c div[title="Textarea"]:after, -.gjs-block-category .gjs-blocks-c div[title="Radio"]:after, -.gjs-block-category .gjs-blocks-c div[title="Checkbox"]:after, -.gjs-block-category .gjs-blocks-c div[title="Select"]:after { - content: 'Please insert this inside the
        tag.'; -} - -.gjs-block-category .gjs-blocks-c div[title="Radio"]:after, -.gjs-block-category .gjs-blocks-c div[title="Checkbox"]:after, -.gjs-block-category .gjs-blocks-c div[title="Select"]:after, -.gjs-block-category .gjs-blocks-c div[title="Input"]:after, -.gjs-block-category .gjs-blocks-c div[title="Textarea"]:after { - line-height: 2; - position: fixed; - top: 0; - right: 220px; - opacity: 0; - z-index: 2; - visibility: hidden; - transition: all ease-in-out 0.3s; - -webkit-transition: all ease-in-out 0.3s; - -moz-transition: all ease-in-out 0.3s; - width: 300px; - height: 44px; - font-size: 13px; - padding: 10px; - background: #ffffff; - color: #000; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - box-shadow: 1px 2px 10px rgba(116, 116, 116, 0.30); - -moz-box-shadow: 1px 2px 10px rgba(116, 116, 116, 0.30); - -webkit-box-shadow: 1px 2px 10px rgba(116, 116, 116, 0.30); -} - -.gjs-block-category .gjs-blocks-c div[title="Radio"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Checkbox"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Select"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Textarea"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Input"]:hover:after { - top: 30%; - opacity: 1; - display: block; - visibility: visible; -} - - -.gjs-block-category .gjs-blocks-c div[title="Parallax"]:after { - background-image: url('http://res.cloudinary.com/ronaldaug/image/upload/v1518968470/parallax_hz2hot.jpg'); - background-size: cover; - width: 400px; - height: 197px; -} - -.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:after, -.gjs-block-category .gjs-blocks-c div[title="Starter"]:after, -.gjs-block-category .gjs-blocks-c div[title="Badges"]:after, -.gjs-block-category .gjs-blocks-c div[title="Slider"]:after, -.gjs-block-category .gjs-blocks-c div[title="Footer"]:after, -.gjs-block-category .gjs-blocks-c div[title="Members"]:after, -.gjs-block-category .gjs-blocks-c div[title="Blog"]:after, -.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:after, -.gjs-block-category .gjs-blocks-c div[title="Parallax"]:after, -.gjs-block-category .gjs-blocks-c div[title="Card"]:after { - content: ''; - line-height: 2; - position: fixed; - color: #fff; - top: 0; - right: 220px; - opacity: 0; - z-index: 2; - visibility: hidden; - transition: all ease-in-out 0.3s; - -webkit-transition: all ease-in-out 0.3s; - -moz-transition: all ease-in-out 0.3s; -} - - -.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Starter"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Badges"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Slider"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Blog"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Footer"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Members"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Parallax"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Card"]:hover:after { - top: 10%; - opacity: 1; - display: block; - visibility: visible; -} - -.right { - float: right; -} - -/* Overwrite GrapeJS css */ - .gjs-one-bg { background-color: #f6f7f9; } @@ -180,7 +16,11 @@ box-shadow: 0 3px 4px 0 rgba(204, 210, 251, 0.42); } -.gjs-category-title, .gjs-sm-sector .gjs-sm-title, .gjs-clm-tags .gjs-sm-title, .gjs-block-category .gjs-title, .gjs-layer-title { +.gjs-category-title, +.gjs-sm-sector .gjs-sm-title, +.gjs-clm-tags .gjs-sm-title, +.gjs-block-category .gjs-title, +.gjs-layer-title { background-color: #eee; border-bottom: 1px solid rgba(121, 121, 121, 0.25); } @@ -194,11 +34,16 @@ .cm-s-hopscotch.CodeMirror { /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#2f3c54+0,414251+100 */ - background: #2f3c54; /* Old browsers */ - background: -moz-linear-gradient(-45deg, #2f3c54 0%, #414251 100%); /* FF3.6-15 */ - background: -webkit-linear-gradient(-45deg, #2f3c54 0%,#414251 100%); /* Chrome10-25,Safari5.1-6 */ - background: linear-gradient(135deg, #2f3c54 0%,#414251 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2f3c54', endColorstr='#414251',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */ + background: #2f3c54; + /* Old browsers */ + background: -moz-linear-gradient(-45deg, #2f3c54 0%, #414251 100%); + /* FF3.6-15 */ + background: -webkit-linear-gradient(-45deg, #2f3c54 0%, #414251 100%); + /* Chrome10-25,Safari5.1-6 */ + background: linear-gradient(135deg, #2f3c54 0%, #414251 100%); + /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2f3c54', endColorstr='#414251', GradientType=1); + /* IE6-9 fallback on horizontal gradient */ color: #999; } @@ -209,19 +54,21 @@ /* class name */ .gjs-clm-tags #gjs-clm-close, -.gjs-clm-tags #gjs-clm-checkbox{ - color:#444; +.gjs-clm-tags #gjs-clm-checkbox { + color: #444; } + .gjs-three-bg { background-color: #f6f7f9; } /* select box */ -.gjs-field-arrow-u{ - border-bottom:4px solid #444; +.gjs-field-arrow-u { + border-bottom: 4px solid #444; } -.gjs-field-arrow-d{ - border-top:4px solid #444; + +.gjs-field-arrow-d { + border-top: 4px solid #444; } @@ -242,7 +89,7 @@ padding-bottom: 6px; } -.gjs-field select.gjs-devices{ +.gjs-field select.gjs-devices { padding: 2px; } @@ -258,54 +105,42 @@ color: #000; } -.gjs-btn-html, -.gjs-btn-css, -.gjs-btn-export{ - float: right; +#gjs-mdl-c .header-menus { + justify-content: space-between; + display: flex; + align-items: center; } -.gjs-btn-import,.gjs-btn-zip,.gjs-btn-export,.gjs-btn-load,.gjs-btn-css,.gjs-btn-html{ +#gjs-mdl-c .header-menus button{ + transition:all ease 0.2s; color: #587899; font-size: 13px; - margin:10px 0 10px; - background:#fff; - box-shadow:0 1px 10px #dddddd70; - padding:8px 16px; + margin: 10px 0 10px; + background: #fff; + box-shadow: 0 1px 10px #dddddd70; + padding: 8px 16px; + margin:10px; } - -.CodeMirror{ - height:400px; +#gjs-mdl-c .header-menus button:hover{ + transform:translateY(-2px); + background:var(--theme-color); + color:#fff; } -.modelPopup input[type="text"] { - height: 20px; +label.gjs-import-file { + padding:8px 16px; + border:1px dashed #ddd; + font-size:13px; + background:#fff; } -.modelPopup { - z-index: 99999; - position: fixed; - top: -20%; - left: 50%; - margin-left: -100px; - width: 200px; - background: #fff; - padding: 20px; - height: auto; - text-align: center; - opacity: 0; - box-shadow: 0 10px 300px rgba(116, 116, 116, 0.80); - -moz-box-shadow: 0 10px 300px rgba(116, 116, 116, 0.80); - -webkit-box-shadow: 0 10px 300px rgba(116, 116, 116, 0.80); - visibility: hidden; - transition: all ease-in-out 0.4s; - -webkit-transition: all ease-in-out 0.4s; - -moz-transition: all ease-in-out 0.4s; +label.gjs-import-file:hover{ + cursor:pointer; + border-color:var(--theme-color); } -.modelPopup.showup { - top: 20% !important; - opacity: 1 !important; - visibility: visible !important; +.CodeMirror { + height: 400px; } button.exportgram { @@ -316,35 +151,41 @@ button.exportgram { border-radius: 20px; } -.html-wrapper,.css-wrapper{ - width:49%; - float:left; +.html-wrapper, +.css-wrapper { + width: 49%; + float: left; } -.html-wrapper h4,.css-wrapper h4{ - margin:4px 0 4px; + +.html-wrapper h4, +.css-wrapper h4 { + margin: 4px 0 4px; } -.gjs-mdl-dialog{ - max-width:none; + +.gjs-mdl-dialog { + max-width: none; } -.clear-fix{ - width:100%; - clear:both; + +.clear-fix { + width: 100%; + clear: both; } -.css-wrapper{ - margin-left:2%; + +.css-wrapper { + margin-left: 2%; } -.gjs-sm-sectors .gjs-radio-items .gjs-radio-item{ - background:#585858; +.gjs-sm-sectors .gjs-radio-items .gjs-radio-item { + background: #585858; } label.gjs-radio-item-label, -.gjs-sm-sectors .gjs-radio-item .fa{ - color:#fff; +.gjs-sm-sectors .gjs-radio-item .fa { + color: #fff; } -.gjs-four-color-h:hover{ - color:#41dad2; +.gjs-four-color-h:hover { + color: var(--theme-color); } \ No newline at end of file diff --git a/gramateria/develop/sass/_variables.scss b/gramateria/develop/sass/_variables.scss new file mode 100644 index 0000000..029db34 --- /dev/null +++ b/gramateria/develop/sass/_variables.scss @@ -0,0 +1,3 @@ +:root{ + --theme-color:#41dad2; +} \ No newline at end of file diff --git a/gramateria/develop/sass/gramateria.scss b/gramateria/develop/sass/gramateria.scss index c8f8793..590bfc2 100755 --- a/gramateria/develop/sass/gramateria.scss +++ b/gramateria/develop/sass/gramateria.scss @@ -1,4 +1,5 @@ @import 'flex-icons'; +@import 'variables'; @import 'global'; @import 'glyphter'; @import 'overwrite'; \ No newline at end of file diff --git a/gramateria/dist/gram.min.css b/gramateria/dist/gram.min.css index 1fac195..7647e4c 100644 --- a/gramateria/dist/gram.min.css +++ b/gramateria/dist/gram.min.css @@ -134,6 +134,10 @@ border-color: transparent; } +:root { + --theme-color:#41dad2; +} + body, html { height: 100%; @@ -209,6 +213,7 @@ html { content: "K"; } +/* Overwrite GrapeJS css */ .gjs-cm-editor#gjs-cm-css #gjs-cm-title, .gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title, .gjs-two-color, @@ -217,169 +222,6 @@ html { color: #464973; } -.gjs-block-category .gjs-blocks-c div[title=Card]:after { - background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968468/card_urqoco.jpg"); - background-size: cover; - width: 300px; - height: 231px; -} - -.gjs-block-category .gjs-blocks-c div[title=Blog]:after { - background-image: url("https://res.cloudinary.com/ronaldaug/image/upload/v1530116427/blog_qrhnhx.jpg"); - background-size: cover; - width: 400px; - height: 227px; -} - -.gjs-block-category .gjs-blocks-c div[title=Starter]:after { - background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968469/starter_shyx0y.png"); - background-size: cover; - width: 400px; - height: 196px; -} - -.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:after { - background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968466/nav_he3fot.jpg"); - background-size: cover; - width: 600px; - height: 38px; -} - -.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:after { - background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968469/nav2_iovg0o.jpg"); - background-size: cover; - width: 600px; - height: 129px; -} - -.gjs-block-category .gjs-blocks-c div[title=Footer]:after { - background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968467/footer_o8vuik.jpg"); - background-size: cover; - width: 400px; - height: 142px; -} - -.gjs-block-category .gjs-blocks-c div[title=Badges]:after { - background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968467/badges_hs1ta5.jpg"); - background-size: cover; - width: 400px; - height: 154px; -} - -.gjs-block-category .gjs-blocks-c div[title=Members]:after { - background-image: url("https://res.cloudinary.com/ronaldaug/image/upload/v1530275580/members_v2x2tl.jpg"); - background-size: cover; - width: 400px; - height: 224px; -} - -.gjs-block-category .gjs-blocks-c div[title=Slider]:after { - background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968468/slider_l07ucf.jpg"); - background-size: cover; - width: 400px; - height: 154px; -} - -.gjs-block-category .gjs-blocks-c div[title=Input]:after, -.gjs-block-category .gjs-blocks-c div[title=Textarea]:after, -.gjs-block-category .gjs-blocks-c div[title=Radio]:after, -.gjs-block-category .gjs-blocks-c div[title=Checkbox]:after, -.gjs-block-category .gjs-blocks-c div[title=Select]:after { - content: "Please insert this inside the tag."; -} - -.gjs-block-category .gjs-blocks-c div[title=Radio]:after, -.gjs-block-category .gjs-blocks-c div[title=Checkbox]:after, -.gjs-block-category .gjs-blocks-c div[title=Select]:after, -.gjs-block-category .gjs-blocks-c div[title=Input]:after, -.gjs-block-category .gjs-blocks-c div[title=Textarea]:after { - line-height: 2; - position: fixed; - top: 0; - right: 220px; - opacity: 0; - z-index: 2; - visibility: hidden; - transition: all ease-in-out 0.3s; - -webkit-transition: all ease-in-out 0.3s; - -moz-transition: all ease-in-out 0.3s; - width: 300px; - height: 44px; - font-size: 13px; - padding: 10px; - background: #ffffff; - color: #000; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - box-shadow: 1px 2px 10px rgba(116, 116, 116, 0.3); - -moz-box-shadow: 1px 2px 10px rgba(116, 116, 116, 0.3); - -webkit-box-shadow: 1px 2px 10px rgba(116, 116, 116, 0.3); -} - -.gjs-block-category .gjs-blocks-c div[title=Radio]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Checkbox]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Select]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Textarea]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Input]:hover:after { - top: 30%; - opacity: 1; - display: block; - visibility: visible; -} - -.gjs-block-category .gjs-blocks-c div[title=Parallax]:after { - background-image: url("http://res.cloudinary.com/ronaldaug/image/upload/v1518968470/parallax_hz2hot.jpg"); - background-size: cover; - width: 400px; - height: 197px; -} - -.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:after, -.gjs-block-category .gjs-blocks-c div[title=Starter]:after, -.gjs-block-category .gjs-blocks-c div[title=Badges]:after, -.gjs-block-category .gjs-blocks-c div[title=Slider]:after, -.gjs-block-category .gjs-blocks-c div[title=Footer]:after, -.gjs-block-category .gjs-blocks-c div[title=Members]:after, -.gjs-block-category .gjs-blocks-c div[title=Blog]:after, -.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:after, -.gjs-block-category .gjs-blocks-c div[title=Parallax]:after, -.gjs-block-category .gjs-blocks-c div[title=Card]:after { - content: ""; - line-height: 2; - position: fixed; - color: #fff; - top: 0; - right: 220px; - opacity: 0; - z-index: 2; - visibility: hidden; - transition: all ease-in-out 0.3s; - -webkit-transition: all ease-in-out 0.3s; - -moz-transition: all ease-in-out 0.3s; -} - -.gjs-block-category .gjs-blocks-c div[title="Navbar 2"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Starter]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Badges]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Slider]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Blog]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Footer]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Members]:hover:after, -.gjs-block-category .gjs-blocks-c div[title="Navbar 1"]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Parallax]:hover:after, -.gjs-block-category .gjs-blocks-c div[title=Card]:hover:after { - top: 10%; - opacity: 1; - display: block; - visibility: visible; -} - -.right { - float: right; -} - -/* Overwrite GrapeJS css */ .gjs-one-bg { background-color: #f6f7f9; } @@ -388,7 +230,11 @@ html { box-shadow: 0 3px 4px 0 rgba(204, 210, 251, 0.42); } -.gjs-category-title, .gjs-sm-sector .gjs-sm-title, .gjs-clm-tags .gjs-sm-title, .gjs-block-category .gjs-title, .gjs-layer-title { +.gjs-category-title, +.gjs-sm-sector .gjs-sm-title, +.gjs-clm-tags .gjs-sm-title, +.gjs-block-category .gjs-title, +.gjs-layer-title { background-color: #eee; border-bottom: 1px solid rgba(121, 121, 121, 0.25); } @@ -406,7 +252,7 @@ html { /* Chrome10-25,Safari5.1-6 */ background: linear-gradient(135deg, #2f3c54 0%, #414251 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#2f3c54", endColorstr="#414251",GradientType=1 ); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#2f3c54", endColorstr="#414251", GradientType=1); /* IE6-9 fallback on horizontal gradient */ color: #999; } @@ -467,54 +313,43 @@ html { color: #000; } -.gjs-btn-html, -.gjs-btn-css, -.gjs-btn-export { - float: right; +#gjs-mdl-c .header-menus { + justify-content: space-between; + display: flex; + align-items: center; } -.gjs-btn-import, .gjs-btn-zip, .gjs-btn-export, .gjs-btn-load, .gjs-btn-css, .gjs-btn-html { +#gjs-mdl-c .header-menus button { + transition: all ease 0.2s; color: #587899; font-size: 13px; margin: 10px 0 10px; background: #fff; box-shadow: 0 1px 10px #dddddd70; padding: 8px 16px; + margin: 10px; } -.CodeMirror { - height: 400px; +#gjs-mdl-c .header-menus button:hover { + transform: translateY(-2px); + background: var(--theme-color); + color: #fff; } -.modelPopup input[type=text] { - height: 20px; +label.gjs-import-file { + padding: 8px 16px; + border: 1px dashed #ddd; + font-size: 13px; + background: #fff; } -.modelPopup { - z-index: 99999; - position: fixed; - top: -20%; - left: 50%; - margin-left: -100px; - width: 200px; - background: #fff; - padding: 20px; - height: auto; - text-align: center; - opacity: 0; - box-shadow: 0 10px 300px rgba(116, 116, 116, 0.8); - -moz-box-shadow: 0 10px 300px rgba(116, 116, 116, 0.8); - -webkit-box-shadow: 0 10px 300px rgba(116, 116, 116, 0.8); - visibility: hidden; - transition: all ease-in-out 0.4s; - -webkit-transition: all ease-in-out 0.4s; - -moz-transition: all ease-in-out 0.4s; +label.gjs-import-file:hover { + cursor: pointer; + border-color: var(--theme-color); } -.modelPopup.showup { - top: 20% !important; - opacity: 1 !important; - visibility: visible !important; +.CodeMirror { + height: 400px; } button.exportgram { @@ -525,12 +360,14 @@ button.exportgram { border-radius: 20px; } -.html-wrapper, .css-wrapper { +.html-wrapper, +.css-wrapper { width: 49%; float: left; } -.html-wrapper h4, .css-wrapper h4 { +.html-wrapper h4, +.css-wrapper h4 { margin: 4px 0 4px; } @@ -557,5 +394,5 @@ label.gjs-radio-item-label, } .gjs-four-color-h:hover { - color: #41dad2; + color: var(--theme-color); } diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index a1de973..f5a8d02 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -1,5 +1,4 @@ /******/ (() => { // webpackBootstrap -/******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "./gramateria/develop/js/config/assetManager.js": @@ -8,6 +7,7 @@ \******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -87,6 +87,7 @@ __webpack_require__.r(__webpack_exports__); \******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -256,10 +257,13 @@ __webpack_require__.r(__webpack_exports__); \*************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../helpers */ "./gramateria/develop/js/helpers/index.js"); + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{ id: 'undo', className: 'fa fa-undo icon-undo', @@ -325,6 +329,12 @@ __webpack_require__.r(__webpack_exports__); className: 'fa fa-download', command: function command(editor, sender) { sender.set('active', 0); + var html = localStorage.getItem('gjs-html') || ''; + var css = localStorage.getItem('gjs-css') || ''; + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.exportZip)({ + html: html, + css: css + }); }, attributes: { title: 'Download as zip' @@ -339,6 +349,7 @@ __webpack_require__.r(__webpack_exports__); \**************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -370,12 +381,32 @@ __webpack_require__.r(__webpack_exports__); /***/ }), +/***/ "./gramateria/develop/js/config/exportTemplate.js": +/*!********************************************************!*\ + !*** ./gramateria/develop/js/config/exportTemplate.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "exportTemplate": () => (/* binding */ exportTemplate) +/* harmony export */ }); +var exportTemplate = function exportTemplate(data) { + var title = data.title, + html = data.html; + return "\n \n \n \n \n \n ".concat(title, "\n \n \n \n ").concat(html, "\n \n \n "); +}; + +/***/ }), + /***/ "./gramateria/develop/js/config/styleManager.js": /*!******************************************************!*\ !*** ./gramateria/develop/js/config/styleManager.js ***! \******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) @@ -766,12 +797,16 @@ __webpack_require__.r(__webpack_exports__); \*********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _config_blockManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config/blockManager */ "./gramateria/develop/js/config/blockManager.js"); /* harmony import */ var _config_styleManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./config/styleManager */ "./gramateria/develop/js/config/styleManager.js"); /* harmony import */ var _config_commands__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config/commands */ "./gramateria/develop/js/config/commands.js"); /* harmony import */ var _config_assetManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config/assetManager */ "./gramateria/develop/js/config/assetManager.js"); /* harmony import */ var _config_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config/buttons */ "./gramateria/develop/js/config/buttons.js"); +/* harmony import */ var _helpers_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers/index.js */ "./gramateria/develop/js/helpers/index.js"); +/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); +/* harmony import */ var notyf_notyf_min_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! notyf/notyf.min.css */ "./node_modules/notyf/notyf.min.css"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -786,6 +821,9 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope + + // for React, Vue and Svelte + var Gramateria = /*#__PURE__*/function () { function Gramateria() { var _this = this; @@ -810,6 +848,13 @@ var Gramateria = /*#__PURE__*/function () { return codeEditor; }); + this.msg = new notyf__WEBPACK_IMPORTED_MODULE_6__.Notyf({ + duration: 3000, + position: { + x: 'center', + y: 'top' + } + }); this.editor = grapesjs.init({ allowScripts: 1, showOffsets: 1, @@ -840,88 +885,88 @@ var Gramateria = /*#__PURE__*/function () { } }); this.editor.Panels.addButton('options', _config_buttons__WEBPACK_IMPORTED_MODULE_4__.default); + this.modal = this.editor.Modal; } _createClass(Gramateria, [{ - key: "checkExtension", - value: function checkExtension(fname) { - var ext = /^.+\.([^.]+)$/.exec(fname); - return ext == null ? "" : ext[1]; - } - }, { - key: "editModal", - value: function editModal() { + key: "codeImportModal", + value: function codeImportModal() { var _this2 = this; // --------------------- // Import/Edit // --------------------- var prefix = this.editor.getConfig().stylePrefix; - var modal = this.editor.Modal; var modal_content_wrapper = document.createElement("div"); modal_content_wrapper.id = "modal-wrapper"; var btnEdit = document.createElement("button"); var copyHtml = document.createElement("button"); var copyCss = document.createElement("button"); var exportTxt = document.createElement("button"); - var loadTxt = document.createElement("button"); - var fileLoader = document.createElement("form"); + var fileLoader = document.createElement("label"); var anchor = document.createElement("a"); + var header_menus = document.createElement("div"); + var fileLoadInput = document.createElement("input"); + fileLoadInput.style.display = 'none'; + fileLoadInput.setAttribute('type', 'file'); var htmlCodeEditor = this.buildCodeEditor('html'); var cssCodeEditor = this.buildCodeEditor('css'); - btnEdit.innerHTML = ' Apply'; + btnEdit.innerHTML = ' Apply & close'; exportTxt.innerHTML = ' Save as .gram file'; - loadTxt.innerHTML = ' Load .gram file'; copyHtml.innerHTML = ' Copy HTML'; copyCss.innerHTML = ' Copy CSS'; - fileLoader.innerHTML = ''; + fileLoader.innerHTML = ' Load .gram file'; + fileLoader.appendChild(fileLoadInput); + header_menus.className = 'header-menus'; fileLoader.className = prefix + 'import-file'; btnEdit.className = prefix + 'btn-prim ' + prefix + 'btn-import'; copyHtml.className = prefix + 'btn-prim ' + prefix + 'btn-html'; copyCss.className = prefix + 'btn-prim ' + prefix + 'btn-css'; exportTxt.className = prefix + 'btn-prim ' + prefix + 'btn-export'; - loadTxt.className = prefix + 'btn-prim ' + prefix + 'btn-load'; // import button inside import editor - btnEdit.onclick = function () { - var htmlCode = htmlCodeEditor.editor.getValue(); - var cssCode = cssCodeEditor.editor.getValue(); - - _this2.editor.DomComponents.getWrapper().set('content', ''); - - _this2.editor.setComponents(htmlCode.trim() + ''); + fileLoadInput.onchange = function (e) { + var currentFile = e.target.files[0]; + var fType = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.checkExtension)(currentFile['name']); - modal.close(); - }; // onclick load file button inside import editor + if (currentFile === undefined) { + _this2.msg.error('Please select a file'); + return; + } - loadTxt.onclick = function (e) { - e.preventDefault(); - var fileToLoad = document.getElementById("fileToLoad").files[0]; + var allowFileType = ['gram', 'txt']; - var fType = _this2.checkExtension(fileToLoad['name']); + if (!allowFileType.includes(fType)) { + _this2.msg.error('You can only import .gram or .txt extension'); - if (fileToLoad === undefined) { - alert('Please select a file'); return; } - if (fType === 'gram' || fType === 'txt') { - var reader = new FileReader(); + var reader = new FileReader(); - reader.onload = function (e) { - var fileData = e.target.result; + reader.onload = function (e) { + var fileData = e.target.result; - _this2.editor.DomComponents.getWrapper().set('content', ''); + _this2.editor.DomComponents.getWrapper().set('content', ''); - _this2.editor.setComponents(fileData); + _this2.editor.setComponents(fileData); - modal.close(); - }; + _this2.modal.close(); + }; - reader.readAsText(fileToLoad); - } else { - alert('You can only import .gram or .txt extension'); - } + reader.readAsText(currentFile); + }; // import button inside import editor + + + btnEdit.onclick = function () { + var htmlCode = htmlCodeEditor.editor.getValue(); + var cssCode = cssCodeEditor.editor.getValue(); + + _this2.editor.DomComponents.getWrapper().set('content', ''); + + _this2.editor.setComponents(htmlCode.trim() + ''); + + _this2.modal.close(); }; copyHtml.onclick = function () { @@ -933,7 +978,8 @@ var Gramateria = /*#__PURE__*/function () { document.execCommand("copy"); document.body.removeChild(dummy); document.execCommand('copy'); - alert('You have copied HTML codes!'); + + _this2.msg.success('You have copied HTML codes!'); }; copyCss.onclick = function () { @@ -945,7 +991,8 @@ var Gramateria = /*#__PURE__*/function () { document.execCommand("copy"); document.body.removeChild(dummy); document.execCommand('copy'); - alert('You have copied CSS codes!'); + + _this2.msg.success('You have copied CSS codes!'); }; // onclick save as button inside import editor @@ -966,8 +1013,13 @@ var Gramateria = /*#__PURE__*/function () { document.body.appendChild(anchor); anchor.click(); document.body.removeChild(anchor); - }; // import nav button click event + }; + header_menus.appendChild(fileLoader); + header_menus.appendChild(exportTxt); + header_menus.appendChild(copyCss); + header_menus.appendChild(copyHtml); + header_menus.appendChild(btnEdit); // import nav button click event this.editor.Commands.add('html-edit', { run: function run(editor, sender) { @@ -986,27 +1038,27 @@ var Gramateria = /*#__PURE__*/function () { headline.className = 'clear-fix'; if (!htmlCodeEditor.editor && !cssCodeEditor.editor) { - modal_content_wrapper.appendChild(fileLoader); - modal_content_wrapper.appendChild(loadTxt); - modal_content_wrapper.appendChild(exportTxt); + modal_content_wrapper.appendChild(header_menus); modal_content_wrapper.appendChild(headline); modal_content_wrapper.appendChild(htmlBox); modal_content_wrapper.appendChild(cssBox); - modal_content_wrapper.appendChild(copyCss); - modal_content_wrapper.appendChild(copyHtml); - modal_content_wrapper.appendChild(btnEdit); htmlCodeEditor.init(html_textarea_box); cssCodeEditor.init(css_textarea_box); } - modal.setTitle('Edit and Import'); - modal.setContent(''); - modal.setContent(modal_content_wrapper); + _this2.modal.setTitle('Edit and Import'); + + _this2.modal.setContent(''); + + _this2.modal.setContent(modal_content_wrapper); + htmlCodeEditor.setContent(editor.getHtml()); cssCodeEditor.setContent(editor.getCss({ avoidProtected: true })); - modal.open(); + + _this2.modal.open(); + htmlCodeEditor.editor.refresh(); cssCodeEditor.editor.refresh(); } @@ -1015,7 +1067,7 @@ var Gramateria = /*#__PURE__*/function () { }, { key: "init", value: function init() { - this.editModal(); + this.codeImportModal(); this.editor.Panels.removeButton('options', 'export-template'); this.editor.on('load', function (editor) { editor.Panels.getButton('views', 'open-blocks').set('active', true); @@ -1038,90 +1090,3138 @@ new Gramateria().init(); /***/ }), -/***/ "./gramateria/develop/sass/gramateria.scss": -/*!*************************************************!*\ - !*** ./gramateria/develop/sass/gramateria.scss ***! - \*************************************************/ +/***/ "./gramateria/develop/js/helpers/index.js": +/*!************************************************!*\ + !*** ./gramateria/develop/js/helpers/index.js ***! + \************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { +"use strict"; __webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "checkExtension": () => (/* binding */ checkExtension), +/* harmony export */ "exportZip": () => (/* binding */ exportZip) +/* harmony export */ }); +/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jszip */ "./node_modules/jszip/dist/jszip.min.js"); +/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jszip__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! file-saver */ "./node_modules/file-saver/dist/FileSaver.min.js"); +/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _config_exportTemplate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config/exportTemplate */ "./gramateria/develop/js/config/exportTemplate.js"); -/***/ }) -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = __webpack_modules__; -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/chunk loaded */ -/******/ (() => { -/******/ var deferred = []; -/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { -/******/ if(chunkIds) { -/******/ priority = priority || 0; -/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; -/******/ deferred[i] = [chunkIds, fn, priority]; -/******/ return; -/******/ } -/******/ var notFulfilled = Infinity; -/******/ for (var i = 0; i < deferred.length; i++) { -/******/ var [chunkIds, fn, priority] = deferred[i]; -/******/ var fulfilled = true; -/******/ for (var j = 0; j < chunkIds.length; j++) { -/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { -/******/ chunkIds.splice(j--, 1); -/******/ } else { -/******/ fulfilled = false; -/******/ if(priority < notFulfilled) notFulfilled = priority; -/******/ } -/******/ } -/******/ if(fulfilled) { -/******/ deferred.splice(i--, 1) -/******/ var r = fn(); -/******/ if (r !== undefined) result = r; -/******/ } -/******/ } -/******/ return result; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; +var checkExtension = function checkExtension(fname) { + var ext = /^.+\.([^.]+)$/.exec(fname); + return ext == null ? "" : ext[1]; +}; +var exportZip = function exportZip(content) { + var zip = new (jszip__WEBPACK_IMPORTED_MODULE_0___default())(); + var data = { + title: "Untitle project", + html: content.html + }; + zip.file("index.html", (0,_config_exportTemplate__WEBPACK_IMPORTED_MODULE_2__.exportTemplate)(data)); + var css = zip.folder("css"); + css.file("style.css", content.css); + zip.generateAsync({ + type: "blob" + }).then(function (content) { + var fileName = Date.now() + '-export.zip'; + (0,file_saver__WEBPACK_IMPORTED_MODULE_1__.saveAs)(content, fileName); + }); +}; + +/***/ }), + +/***/ "./node_modules/base64-js/index.js": +/*!*****************************************!*\ + !*** ./node_modules/base64-js/index.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +// Support decoding URL-safe base64 strings, as Node.js does. +// See: https://en.wikipedia.org/wiki/Base64#URL_applications +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function getLens (b64) { + var len = b64.length + + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // Trim off extra bytes after placeholder bytes are found + // See: https://github.com/beatgammit/base64-js/issues/42 + var validLen = b64.indexOf('=') + if (validLen === -1) validLen = len + + var placeHoldersLen = validLen === len + ? 0 + : 4 - (validLen % 4) + + return [validLen, placeHoldersLen] +} + +// base64 is 4/3 + up to two characters of the original data +function byteLength (b64) { + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function _byteLength (b64, validLen, placeHoldersLen) { + return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen +} + +function toByteArray (b64) { + var tmp + var lens = getLens(b64) + var validLen = lens[0] + var placeHoldersLen = lens[1] + + var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) + + var curByte = 0 + + // if there are placeholders, only get up to the last complete 4 chars + var len = placeHoldersLen > 0 + ? validLen - 4 + : validLen + + var i + for (i = 0; i < len; i += 4) { + tmp = + (revLookup[b64.charCodeAt(i)] << 18) | + (revLookup[b64.charCodeAt(i + 1)] << 12) | + (revLookup[b64.charCodeAt(i + 2)] << 6) | + revLookup[b64.charCodeAt(i + 3)] + arr[curByte++] = (tmp >> 16) & 0xFF + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 2) { + tmp = + (revLookup[b64.charCodeAt(i)] << 2) | + (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[curByte++] = tmp & 0xFF + } + + if (placeHoldersLen === 1) { + tmp = + (revLookup[b64.charCodeAt(i)] << 10) | + (revLookup[b64.charCodeAt(i + 1)] << 4) | + (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[curByte++] = (tmp >> 8) & 0xFF + arr[curByte++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + + lookup[num >> 12 & 0x3F] + + lookup[num >> 6 & 0x3F] + + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = + ((uint8[i] << 16) & 0xFF0000) + + ((uint8[i + 1] << 8) & 0xFF00) + + (uint8[i + 2] & 0xFF) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + parts.push( + lookup[tmp >> 2] + + lookup[(tmp << 4) & 0x3F] + + '==' + ) + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + uint8[len - 1] + parts.push( + lookup[tmp >> 10] + + lookup[(tmp >> 4) & 0x3F] + + lookup[(tmp << 2) & 0x3F] + + '=' + ) + } + + return parts.join('') +} + + +/***/ }), + +/***/ "./node_modules/buffer/index.js": +/*!**************************************!*\ + !*** ./node_modules/buffer/index.js ***! + \**************************************/ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + + + +var base64 = __webpack_require__(/*! base64-js */ "./node_modules/base64-js/index.js") +var ieee754 = __webpack_require__(/*! ieee754 */ "./node_modules/ieee754/index.js") +var isArray = __webpack_require__(/*! isarray */ "./node_modules/buffer/node_modules/isarray/index.js") + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = __webpack_require__.g.TYPED_ARRAY_SUPPORT !== undefined + ? __webpack_require__.g.TYPED_ARRAY_SUPPORT + : typedArraySupport() + +/* + * Export kMaxLength after typed array support is determined. + */ +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + + +/***/ }), + +/***/ "./node_modules/buffer/node_modules/isarray/index.js": +/*!***********************************************************!*\ + !*** ./node_modules/buffer/node_modules/isarray/index.js ***! + \***********************************************************/ +/***/ ((module) => { + +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/notyf/notyf.min.css": +/*!****************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/notyf/notyf.min.css ***! + \****************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__); +// Imports + +var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]}); +// Module +___CSS_LOADER_EXPORT___.push([module.id, "@-webkit-keyframes notyf-fadeinup{0%{opacity:0;transform:translateY(25%)}to{opacity:1;transform:translateY(0)}}@keyframes notyf-fadeinup{0%{opacity:0;transform:translateY(25%)}to{opacity:1;transform:translateY(0)}}@-webkit-keyframes notyf-fadeinleft{0%{opacity:0;transform:translateX(25%)}to{opacity:1;transform:translateX(0)}}@keyframes notyf-fadeinleft{0%{opacity:0;transform:translateX(25%)}to{opacity:1;transform:translateX(0)}}@-webkit-keyframes notyf-fadeoutright{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(25%)}}@keyframes notyf-fadeoutright{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(25%)}}@-webkit-keyframes notyf-fadeoutdown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(25%)}}@keyframes notyf-fadeoutdown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(25%)}}@-webkit-keyframes ripple{0%{transform:scale(0) translateY(-45%) translateX(13%)}to{transform:scale(1) translateY(-45%) translateX(13%)}}@keyframes ripple{0%{transform:scale(0) translateY(-45%) translateX(13%)}to{transform:scale(1) translateY(-45%) translateX(13%)}}.notyf{position:fixed;top:0;left:0;height:100%;width:100%;color:#fff;z-index:9999;display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-end;pointer-events:none;box-sizing:border-box;padding:20px}.notyf__icon--error,.notyf__icon--success{height:21px;width:21px;background:#fff;border-radius:50%;display:block;margin:0 auto;position:relative}.notyf__icon--error:after,.notyf__icon--error:before{content:\"\";background:currentColor;display:block;position:absolute;width:3px;border-radius:3px;left:9px;height:12px;top:5px}.notyf__icon--error:after{transform:rotate(-45deg)}.notyf__icon--error:before{transform:rotate(45deg)}.notyf__icon--success:after,.notyf__icon--success:before{content:\"\";background:currentColor;display:block;position:absolute;width:3px;border-radius:3px}.notyf__icon--success:after{height:6px;transform:rotate(-45deg);top:9px;left:6px}.notyf__icon--success:before{height:11px;transform:rotate(45deg);top:5px;left:10px}.notyf__toast{display:block;overflow:hidden;pointer-events:auto;-webkit-animation:notyf-fadeinup .3s ease-in forwards;animation:notyf-fadeinup .3s ease-in forwards;box-shadow:0 3px 7px 0 rgba(0,0,0,.25);position:relative;padding:0 15px;border-radius:2px;max-width:300px;transform:translateY(25%);box-sizing:border-box;flex-shrink:0}.notyf__toast--disappear{transform:translateY(0);-webkit-animation:notyf-fadeoutdown .3s forwards;animation:notyf-fadeoutdown .3s forwards;-webkit-animation-delay:.25s;animation-delay:.25s}.notyf__toast--disappear .notyf__icon,.notyf__toast--disappear .notyf__message{-webkit-animation:notyf-fadeoutdown .3s forwards;animation:notyf-fadeoutdown .3s forwards;opacity:1;transform:translateY(0)}.notyf__toast--disappear .notyf__dismiss{-webkit-animation:notyf-fadeoutright .3s forwards;animation:notyf-fadeoutright .3s forwards;opacity:1;transform:translateX(0)}.notyf__toast--disappear .notyf__message{-webkit-animation-delay:.05s;animation-delay:.05s}.notyf__toast--upper{margin-bottom:20px}.notyf__toast--lower{margin-top:20px}.notyf__toast--dismissible .notyf__wrapper{padding-right:30px}.notyf__ripple{height:400px;width:400px;position:absolute;transform-origin:bottom right;right:0;top:0;border-radius:50%;transform:scale(0) translateY(-51%) translateX(13%);z-index:5;-webkit-animation:ripple .4s ease-out forwards;animation:ripple .4s ease-out forwards}.notyf__wrapper{display:flex;align-items:center;padding-top:17px;padding-bottom:17px;padding-right:15px;border-radius:3px;position:relative;z-index:10}.notyf__icon{width:22px;text-align:center;font-size:1.3em;opacity:0;-webkit-animation:notyf-fadeinup .3s forwards;animation:notyf-fadeinup .3s forwards;-webkit-animation-delay:.3s;animation-delay:.3s;margin-right:13px}.notyf__dismiss{position:absolute;top:0;right:0;height:100%;width:26px;margin-right:-15px;-webkit-animation:notyf-fadeinleft .3s forwards;animation:notyf-fadeinleft .3s forwards;-webkit-animation-delay:.35s;animation-delay:.35s;opacity:0}.notyf__dismiss-btn{background-color:rgba(0,0,0,.25);border:none;cursor:pointer;transition:opacity .2s ease,background-color .2s ease;outline:none;opacity:.35;height:100%;width:100%}.notyf__dismiss-btn:after,.notyf__dismiss-btn:before{content:\"\";background:#fff;height:12px;width:2px;border-radius:3px;position:absolute;left:calc(50% - 1px);top:calc(50% - 5px)}.notyf__dismiss-btn:after{transform:rotate(-45deg)}.notyf__dismiss-btn:before{transform:rotate(45deg)}.notyf__dismiss-btn:hover{opacity:.7;background-color:rgba(0,0,0,.15)}.notyf__dismiss-btn:active{opacity:.8}.notyf__message{vertical-align:middle;position:relative;opacity:0;-webkit-animation:notyf-fadeinup .3s forwards;animation:notyf-fadeinup .3s forwards;-webkit-animation-delay:.25s;animation-delay:.25s;line-height:1.5em}@media only screen and (max-width:480px){.notyf{padding:0}.notyf__ripple{height:600px;width:600px;-webkit-animation-duration:.5s;animation-duration:.5s}.notyf__toast{max-width:none;border-radius:0;box-shadow:0 -2px 7px 0 rgba(0,0,0,.13);width:100%}.notyf__dismiss{width:56px}}", ""]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/api.js": +/*!*****************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/api.js ***! + \*****************************************************/ +/***/ ((module) => { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +// css base code, injected by the css-loader +// eslint-disable-next-line func-names +module.exports = function (cssWithMappingToString) { + var list = []; // return the list of modules as css string + + list.toString = function toString() { + return this.map(function (item) { + var content = cssWithMappingToString(item); + + if (item[2]) { + return "@media ".concat(item[2], " {").concat(content, "}"); + } + + return content; + }).join(""); + }; // import a list of modules into the list + // eslint-disable-next-line func-names + + + list.i = function (modules, mediaQuery, dedupe) { + if (typeof modules === "string") { + // eslint-disable-next-line no-param-reassign + modules = [[null, modules, ""]]; + } + + var alreadyImportedModules = {}; + + if (dedupe) { + for (var i = 0; i < this.length; i++) { + // eslint-disable-next-line prefer-destructuring + var id = this[i][0]; + + if (id != null) { + alreadyImportedModules[id] = true; + } + } + } + + for (var _i = 0; _i < modules.length; _i++) { + var item = [].concat(modules[_i]); + + if (dedupe && alreadyImportedModules[item[0]]) { + // eslint-disable-next-line no-continue + continue; + } + + if (mediaQuery) { + if (!item[2]) { + item[2] = mediaQuery; + } else { + item[2] = "".concat(mediaQuery, " and ").concat(item[2]); + } + } + + list.push(item); + } + }; + + return list; +}; + +/***/ }), + +/***/ "./node_modules/file-saver/dist/FileSaver.min.js": +/*!*******************************************************!*\ + !*** ./node_modules/file-saver/dist/FileSaver.min.js ***! + \*******************************************************/ +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function(a,b){if(true)!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (b), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Deprecated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open("GET",a),d.responseType="blob",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error("could not download file")},d.send()}function d(a){var b=new XMLHttpRequest;b.open("HEAD",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof __webpack_require__.g&&__webpack_require__.g.global===__webpack_require__.g?__webpack_require__.g:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||("object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),"string"==typeof b)return c(b,d,e);var h="application/octet-stream"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\/[\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&"undefined"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g, true&&(module.exports=g)}); + +//# sourceMappingURL=FileSaver.min.js.map + +/***/ }), + +/***/ "./node_modules/ieee754/index.js": +/*!***************************************!*\ + !*** ./node_modules/ieee754/index.js ***! + \***************************************/ +/***/ ((__unused_webpack_module, exports) => { + +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = (nBytes * 8) - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = ((value * c) - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + + +/***/ }), + +/***/ "./node_modules/jszip/dist/jszip.min.js": +/*!**********************************************!*\ + !*** ./node_modules/jszip/dist/jszip.min.js ***! + \**********************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js")["Buffer"]; +/*! + +JSZip v3.6.0 - A JavaScript class for generating and reading zip files + + +(c) 2009-2016 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/master/LICENSE +*/ + +!function(e){if(true)module.exports=e();else {}}(function(){return function s(a,o,u){function h(r,e){if(!o[r]){if(!a[r]){var t=undefined;if(!e&&t)return require(r,!0);if(f)return f(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return h(t||e)},i,i.exports,s,a,o,u)}return o[r].exports}for(var f=undefined,e=0;e>2,s=(3&t)<<4|r>>4,a=1>6:64,o=2>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),h[u++]=t,64!==s&&(h[u++]=r),64!==a&&(h[u++]=n);return h}},{"./support":30,"./utils":32}],2:[function(e,t,r){"use strict";var n=e("./external"),i=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),a=e("./stream/DataLengthProbe");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){"use strict";var n=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(e){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){"use strict";var n=e("./utils"),a=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==n.getTypeOf(e)?function(e,t,r){var n=a,i=0+r;e^=-1;for(var s=0;s>>8^n[255&(e^t[s])];return-1^e}(0|t,e,e.length):function(e,t,r){var n=a,i=0+r;e^=-1;for(var s=0;s>>8^n[255&(e^t.charCodeAt(s))];return-1^e}(0|t,e,e.length):0}},{"./utils":32}],5:[function(e,t,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){"use strict";var n;n="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako"),s=e("./utils"),a=e("./stream/GenericWorker"),o=n?"uint8array":"array";function u(e,t){a.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic="\b\0",s.inherits(u,a),u.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},u.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},u.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},u.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new u("Deflate",e)},r.uncompressWorker=function(){return new u("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){"use strict";function I(e,t){var r,n="";for(r=0;r>>=8;return n}function i(e,t,r,n,i,s){var a,o,u=e.file,h=e.compression,f=s!==B.utf8encode,l=O.transformTo("string",s(u.name)),d=O.transformTo("string",B.utf8encode(u.name)),c=u.comment,p=O.transformTo("string",s(c)),m=O.transformTo("string",B.utf8encode(c)),_=d.length!==u.name.length,g=m.length!==c.length,v="",b="",w="",y=u.dir,k=u.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),f||!_&&!g||(S|=2048);var z,E=0,C=0;y&&(E|=16),"UNIX"===i?(C=798,E|=((z=u.unixPermissions)||(z=y?16893:33204),(65535&z)<<16)):(C=20,E|=63&(u.dosPermissions||0)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v+="up"+I((b=I(1,1)+I(T(l),4)+d).length,2)+b),g&&(v+="uc"+I((w=I(1,1)+I(T(p),4)+m).length,2)+w);var A="";return A+="\n\0",A+=I(S,2),A+=h.magic,A+=I(a,2),A+=I(o,2),A+=I(x.crc32,4),A+=I(x.compressedSize,4),A+=I(x.uncompressedSize,4),A+=I(l.length,2),A+=I(v.length,2),{fileRecord:R.LOCAL_FILE_HEADER+A+l+v,dirRecord:R.CENTRAL_FILE_HEADER+I(C,2)+A+I(p.length,2)+"\0\0\0\0"+I(E,4)+I(n,4)+l+v+p}}var O=e("../utils"),s=e("../stream/GenericWorker"),B=e("../utf8"),T=e("../crc32"),R=e("../signature");function n(e,t,r,n){s.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}O.inherits(n,s),n.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,s.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},n.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=i(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},n.prototype.closedSource=function(e){this.accumulate=!1;var t,r=this.streamFiles&&!e.file.dir,n=i(e,r,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(n.dirRecord),r)this.push({data:(t=e,R.DATA_DESCRIPTOR+I(t.crc32,4)+I(t.compressedSize,4)+I(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:n.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},n.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(e){},lastIndexOfSignature:function(e){},readAndCheckSignature:function(e){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,r){"use strict";var n=e("./Uint8ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){"use strict";var n=e("./DataReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){"use strict";var n=e("./ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){"use strict";var n=e("../utils"),i=e("../support"),s=e("./ArrayReader"),a=e("./StringReader"),o=e("./NodeBufferReader"),u=e("./Uint8ArrayReader");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),"string"!==t||i.uint8array?"nodebuffer"===t?new o(e):i.uint8array?new u(n.transformTo("uint8array",e)):new s(n.transformTo("array",e)):new a(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../utils");function s(e){n.call(this,"ConvertWorker to "+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../crc32");function s(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){"use strict";function n(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r "+e:e}},t.exports=n},{}],29:[function(e,t,r){"use strict";var h=e("../utils"),i=e("./ConvertWorker"),s=e("./GenericWorker"),f=e("../base64"),n=e("../support"),a=e("../external"),o=null;if(n.nodestream)try{o=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function u(e,t,r){var n=t;switch(t){case"blob":case"arraybuffer":n="uint8array";break;case"base64":n="string"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s("error"),this._worker.error(e)}}u.prototype={accumulate:function(e){return o=this,u=e,new a.Promise(function(t,r){var n=[],i=o._internalType,s=o._outputType,a=o._mimeType;o.on("data",function(e,t){n.push(e),u&&u(t)}).on("error",function(e){n=[],r(e)}).on("end",function(){try{var e=function(e,t,r){switch(e){case"blob":return h.newBlob(h.transformTo("arraybuffer",t),r);case"base64":return f.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return u.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(u.uint8array?"uint8array":"array",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(u.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(u.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+h[e[r]]>t?r:t}(t),i=t;n!==t.length&&(u.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(f,n),f.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=f},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,o){"use strict";var u=e("./support"),h=e("./base64"),r=e("./nodejsUtils"),n=e("set-immediate-shim"),f=e("./external");function i(e){return e}function l(e,t){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(e){if(this.extraFields[1]){var t=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=t.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=t.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=t.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=t.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return f(e,e.length)},r.binstring2buf=function(e){for(var t=new u.Buf8(e.length),r=0,n=t.length;r>10&1023,o[n++]=56320|1023&i)}return f(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+h[e[r]]>t?r:t}},{"./common":41}],43:[function(e,t,r){"use strict";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){"use strict";var u,d=e("../utils/common"),h=e("./trees"),c=e("./adler32"),p=e("./crc32"),n=e("./messages"),f=0,l=0,m=-2,i=2,_=8,s=286,a=30,o=19,g=2*s+1,v=15,b=3,w=258,y=w+b+1,k=42,x=113;function S(e,t){return e.msg=n[t],t}function z(e){return(e<<1)-(4e.avail_out&&(r=e.avail_out),0!==r&&(d.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function A(e,t){h._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,C(e.strm)}function I(e,t){e.pending_buf[e.pending++]=t}function O(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function B(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-y?e.strstart-(e.w_size-y):0,h=e.window,f=e.w_mask,l=e.prev,d=e.strstart+w,c=h[s+a-1],p=h[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(h[(r=t)+a]===p&&h[r+a-1]===c&&h[r]===h[s]&&h[++r]===h[s+1]){s+=2,r++;do{}while(h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&su&&0!=--i);return a<=e.lookahead?a:e.lookahead}function T(e){var t,r,n,i,s,a,o,u,h,f,l=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=l+(l-y)){for(d.arraySet(e.window,e.window,l,l,0),e.match_start-=l,e.strstart-=l,e.block_start-=l,t=r=e.hash_size;n=e.head[--t],e.head[t]=l<=n?n-l:0,--r;);for(t=r=l;n=e.prev[--t],e.prev[t]=l<=n?n-l:0,--r;);i+=l}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,u=e.strstart+e.lookahead,f=void 0,(h=i)<(f=a.avail_in)&&(f=h),r=0===f?0:(a.avail_in-=f,d.arraySet(o,a.input,a.next_in,f,u),1===a.state.wrap?a.adler=c(a.adler,o,f,u):2===a.state.wrap&&(a.adler=p(a.adler,o,f,u)),a.next_in+=f,a.total_in+=f,f),e.lookahead+=r,e.lookahead+e.insert>=b)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<=b&&(e.ins_h=(e.ins_h<=b)if(n=h._tr_tally(e,e.strstart-e.match_start,e.match_length-b),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=b){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<=b&&(e.ins_h=(e.ins_h<=b&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-b,n=h._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-b),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(T(e),0===e.lookahead&&t===f)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,A(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-y&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(A(e,!1),e.strm.avail_out),1)}),new F(4,4,8,4,R),new F(4,5,16,8,R),new F(4,6,32,32,R),new F(4,4,16,16,D),new F(8,16,32,32,D),new F(8,16,128,128,D),new F(8,32,128,256,D),new F(32,128,258,1024,D),new F(32,258,258,4096,D)],r.deflateInit=function(e,t){return L(e,t,_,15,8,0)},r.deflateInit2=L,r.deflateReset=P,r.deflateResetKeep=U,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,l):m},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5>8&255),I(n,n.gzhead.time>>16&255),I(n,n.gzhead.time>>24&255),I(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),I(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(I(n,255&n.gzhead.extra.length),I(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(I(n,0),I(n,0),I(n,0),I(n,0),I(n,0),I(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),I(n,3),n.status=x);else{var a=_+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=x,O(n,a),0!==n.strstart&&(O(n,e.adler>>>16),O(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending!==n.pending_buf_size));)I(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindexi&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&C(e),n.pending+2<=n.pending_buf_size&&(I(n,255&e.adler),I(n,e.adler>>8&255),e.adler=0,n.status=x)):n.status=x),0!==n.pending){if(C(e),0===e.avail_out)return n.last_flush=-1,l}else if(0===e.avail_in&&z(t)<=z(r)&&4!==t)return S(e,-5);if(666===n.status&&0!==e.avail_in)return S(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==f&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(T(e),0===e.lookahead)){if(t===f)return 1;break}if(e.match_length=0,r=h._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=w){if(T(e),e.lookahead<=w&&t===f)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=b&&0e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=b?(r=h._tr_tally(e,1,e.match_length-b),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=h._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}(n,t):u[n.level].func(n,t);if(3!==o&&4!==o||(n.status=666),1===o||3===o)return 0===e.avail_out&&(n.last_flush=-1),l;if(2===o&&(1===t?h._tr_align(n):5!==t&&(h._tr_stored_block(n,0,0,!1),3===t&&(E(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),C(e),0===e.avail_out))return n.last_flush=-1,l}return 4!==t?l:n.wrap<=0?1:(2===n.wrap?(I(n,255&e.adler),I(n,e.adler>>8&255),I(n,e.adler>>16&255),I(n,e.adler>>24&255),I(n,255&e.total_in),I(n,e.total_in>>8&255),I(n,e.total_in>>16&255),I(n,e.total_in>>24&255)):(O(n,e.adler>>>16),O(n,65535&e.adler)),C(e),0=r.w_size&&(0===s&&(E(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new d.Buf8(r.w_size),d.arraySet(h,t,f-r.w_size,r.w_size,0),t=h,f=r.w_size),a=e.avail_in,o=e.next_in,u=e.input,e.avail_in=f,e.next_in=0,e.input=t,T(r);r.lookahead>=b;){for(n=r.strstart,i=r.lookahead-(b-1);r.ins_h=(r.ins_h<>>=w=b>>>24,p-=w,0==(w=b>>>16&255))E[s++]=65535&b;else{if(!(16&w)){if(0==(64&w)){b=m[(65535&b)+(c&(1<>>=w,p-=w),p<15&&(c+=z[n++]<>>=w=b>>>24,p-=w,!(16&(w=b>>>16&255))){if(0==(64&w)){b=_[(65535&b)+(c&(1<>>=w,p-=w,(w=s-a)>3,c&=(1<<(p-=y<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function u(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=B(r.check,C,2,0),f=h=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",r.mode=30;break}if(8!=(15&h)){e.msg="unknown compression method",r.mode=30;break}if(f-=4,k=8+(15&(h>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0)),f=h=0,r.mode=3;case 3:for(;f<32;){if(0===o)break e;o--,h+=n[s++]<>>8&255,C[2]=h>>>16&255,C[3]=h>>>24&255,r.check=B(r.check,C,4,0)),f=h=0,r.mode=4;case 4:for(;f<16;){if(0===o)break e;o--,h+=n[s++]<>8),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0)),f=h=0,r.mode=5;case 5:if(1024&r.flags){for(;f<16;){if(0===o)break e;o--,h+=n[s++]<>>8&255,r.check=B(r.check,C,2,0)),f=h=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(c=r.length)&&(c=o),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,c,k)),512&r.flags&&(r.check=B(r.check,n,c,s)),o-=c,s+=c,r.length-=c),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(c=0;k=n[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;f<32;){if(0===o)break e;o--,h+=n[s++]<>>=7&f,f-=7&f,r.mode=27;break}for(;f<3;){if(0===o)break e;o--,h+=n[s++]<>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;h>>>=2,f-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}h>>>=2,f-=2;break;case 14:for(h>>>=7&f,f-=7&f;f<32;){if(0===o)break e;o--,h+=n[s++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&h,f=h=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(c=r.length){if(o>>=5,f-=5,r.ndist=1+(31&h),h>>>=5,f-=5,r.ncode=4+(15&h),h>>>=4,f-=4,286>>=3,f-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=R(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<>>=_,f-=_,r.lens[r.have++]=v;else{if(16===v){for(z=_+2;f>>=_,f-=_,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&h),h>>>=2,f-=2}else if(17===v){for(z=_+3;f>>=_)),h>>>=3,f-=3}else{for(z=_+7;f>>=_)),h>>>=7,f-=7}if(r.have+c>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;c--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=R(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=R(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=u){e.next_out=a,e.avail_out=u,e.next_in=s,e.avail_in=o,r.hold=h,r.bits=f,T(e,d),a=e.next_out,i=e.output,u=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,h=r.hold,f=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(E=r.lencode[h&(1<>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<>b)])>>>16&255,v=65535&E,!(b+(_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<>>=b,f-=b,r.back+=b}if(h>>>=_,f-=_,r.back+=_,r.length=v,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;f>>=r.extra,f-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(E=r.distcode[h&(1<>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<>b)])>>>16&255,v=65535&E,!(b+(_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<>>=b,f-=b,r.back+=b}if(h>>>=_,f-=_,r.back+=_,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=v,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;f>>=r.extra,f-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===u)break e;if(c=d-u,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p=c>r.wnext?(c-=r.wnext,r.wsize-c):r.wnext-c,c>r.length&&(c=r.length),m=r.window}else m=i,p=a-r.offset,c=r.length;for(uc?(m=T[R+a[b]],A[I+a[b]]):(m=96,0),u=1<>S)+(h-=u)]=p<<24|m<<16|_|0,0!==h;);for(u=1<>=1;if(0!==u?(C&=u-1,C+=u):C=0,b++,0==--O[v]){if(v===y)break;v=t[r+a[b]]}if(k>>7)]}function x(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function S(e,t,r){e.bi_valid>i-r?(e.bi_buf|=t<>i-e.bi_valid,e.bi_valid+=r-i):(e.bi_buf|=t<>>=1,r<<=1,0<--t;);return r>>>1}function C(e,t,r){var n,i,s=new Array(_+1),a=0;for(n=1;n<=_;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=E(s[o]++,o))}}function A(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function I(e){8>1;1<=r;r--)B(e,s,r);for(i=u;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],B(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,B(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,u=t.dyn_tree,h=t.max_code,f=t.stat_desc.static_tree,l=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=_;s++)e.bl_count[s]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<573;r++)p<(s=u[2*u[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),u[2*n+1]=s,h>=7;n<30;n++)for(w[n]=i<<7,e=0;e<1<>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),R(e,e.l_desc),R(e,e.d_desc),a=function(e){var t;for(D(e,e.dyn_ltree,e.l_desc.max_code),D(e,e.dyn_dtree,e.d_desc.max_code),R(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*f[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?U(e,t,r,n):4===e.strategy||s===i?(S(e,2+(n?1:0),3),T(e,l,d)):(S(e,4+(n?1:0),3),function(e,t,r,n){var i;for(S(e,t-257,5),S(e,r-1,5),S(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(p[r]+256+1)]++,e.dyn_dtree[2*k(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){var t;S(e,2,3),z(e,256,l),16===(t=e).bi_valid?(x(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}},{"../utils/common":41}],53:[function(e,t,r){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){"use strict";t.exports="function"==typeof setImmediate?setImmediate:function(){var e=[].slice.apply(arguments);e.splice(1,0,0),setTimeout.apply(null,e)}},{}]},{},[10])(10)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,"undefined"!=typeof __webpack_require__.g?__webpack_require__.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}); + +/***/ }), + +/***/ "./gramateria/develop/sass/gramateria.scss": +/*!*************************************************!*\ + !*** ./gramateria/develop/sass/gramateria.scss ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "./node_modules/notyf/notyf.es.js": +/*!****************************************!*\ + !*** ./node_modules/notyf/notyf.es.js ***! + \****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "DEFAULT_OPTIONS": () => (/* binding */ DEFAULT_OPTIONS), +/* harmony export */ "Notyf": () => (/* binding */ Notyf), +/* harmony export */ "NotyfArray": () => (/* binding */ NotyfArray), +/* harmony export */ "NotyfArrayEvent": () => (/* binding */ NotyfArrayEvent), +/* harmony export */ "NotyfEvent": () => (/* binding */ NotyfEvent), +/* harmony export */ "NotyfNotification": () => (/* binding */ NotyfNotification), +/* harmony export */ "NotyfView": () => (/* binding */ NotyfView) +/* harmony export */ }); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +var NotyfNotification = /** @class */ (function () { + function NotyfNotification(options) { + this.options = options; + this.listeners = {}; + } + NotyfNotification.prototype.on = function (eventType, cb) { + var callbacks = this.listeners[eventType] || []; + this.listeners[eventType] = callbacks.concat([cb]); + }; + NotyfNotification.prototype.triggerEvent = function (eventType, event) { + var _this = this; + var callbacks = this.listeners[eventType] || []; + callbacks.forEach(function (cb) { return cb({ target: _this, event: event }); }); + }; + return NotyfNotification; +}()); +var NotyfArrayEvent; +(function (NotyfArrayEvent) { + NotyfArrayEvent[NotyfArrayEvent["Add"] = 0] = "Add"; + NotyfArrayEvent[NotyfArrayEvent["Remove"] = 1] = "Remove"; +})(NotyfArrayEvent || (NotyfArrayEvent = {})); +var NotyfArray = /** @class */ (function () { + function NotyfArray() { + this.notifications = []; + } + NotyfArray.prototype.push = function (elem) { + this.notifications.push(elem); + this.updateFn(elem, NotyfArrayEvent.Add, this.notifications); + }; + NotyfArray.prototype.splice = function (index, num) { + var elem = this.notifications.splice(index, num)[0]; + this.updateFn(elem, NotyfArrayEvent.Remove, this.notifications); + return elem; + }; + NotyfArray.prototype.indexOf = function (elem) { + return this.notifications.indexOf(elem); + }; + NotyfArray.prototype.onUpdate = function (fn) { + this.updateFn = fn; + }; + return NotyfArray; +}()); + +var NotyfEvent; +(function (NotyfEvent) { + NotyfEvent["Dismiss"] = "dismiss"; + NotyfEvent["Click"] = "click"; +})(NotyfEvent || (NotyfEvent = {})); +var DEFAULT_OPTIONS = { + types: [ + { + type: 'success', + className: 'notyf__toast--success', + backgroundColor: '#3dc763', + icon: { + className: 'notyf__icon--success', + tagName: 'i', + }, + }, + { + type: 'error', + className: 'notyf__toast--error', + backgroundColor: '#ed3d3d', + icon: { + className: 'notyf__icon--error', + tagName: 'i', + }, + }, + ], + duration: 2000, + ripple: true, + position: { + x: 'right', + y: 'bottom', + }, + dismissible: false, +}; + +var NotyfView = /** @class */ (function () { + function NotyfView() { + this.notifications = []; + this.events = {}; + this.X_POSITION_FLEX_MAP = { + left: 'flex-start', + center: 'center', + right: 'flex-end', + }; + this.Y_POSITION_FLEX_MAP = { + top: 'flex-start', + center: 'center', + bottom: 'flex-end', + }; + // Creates the main notifications container + var docFrag = document.createDocumentFragment(); + var notyfContainer = this._createHTMLElement({ tagName: 'div', className: 'notyf' }); + docFrag.appendChild(notyfContainer); + document.body.appendChild(docFrag); + this.container = notyfContainer; + // Identifies the main animation end event + this.animationEndEventName = this._getAnimationEndEventName(); + this._createA11yContainer(); + } + NotyfView.prototype.on = function (event, cb) { + var _a; + this.events = __assign(__assign({}, this.events), (_a = {}, _a[event] = cb, _a)); + }; + NotyfView.prototype.update = function (notification, type) { + if (type === NotyfArrayEvent.Add) { + this.addNotification(notification); + } + else if (type === NotyfArrayEvent.Remove) { + this.removeNotification(notification); + } + }; + NotyfView.prototype.removeNotification = function (notification) { + var _this = this; + var renderedNotification = this._popRenderedNotification(notification); + var node; + if (!renderedNotification) { + return; + } + node = renderedNotification.node; + node.classList.add('notyf__toast--disappear'); + var handleEvent; + node.addEventListener(this.animationEndEventName, (handleEvent = function (event) { + if (event.target === node) { + node.removeEventListener(_this.animationEndEventName, handleEvent); + _this.container.removeChild(node); + } + })); + }; + NotyfView.prototype.addNotification = function (notification) { + var node = this._renderNotification(notification); + this.notifications.push({ notification: notification, node: node }); + // For a11y purposes, we still want to announce that there's a notification in the screen + // even if it comes with no message. + this._announce(notification.options.message || 'Notification'); + }; + NotyfView.prototype._renderNotification = function (notification) { + var _a; + var card = this._buildNotificationCard(notification); + var className = notification.options.className; + if (className) { + (_a = card.classList).add.apply(_a, className.split(' ')); + } + this.container.appendChild(card); + return card; + }; + NotyfView.prototype._popRenderedNotification = function (notification) { + var idx = -1; + for (var i = 0; i < this.notifications.length && idx < 0; i++) { + if (this.notifications[i].notification === notification) { + idx = i; + } + } + if (idx !== -1) { + return this.notifications.splice(idx, 1)[0]; + } + return; + }; + NotyfView.prototype.getXPosition = function (options) { + var _a; + return ((_a = options === null || options === void 0 ? void 0 : options.position) === null || _a === void 0 ? void 0 : _a.x) || 'right'; + }; + NotyfView.prototype.getYPosition = function (options) { + var _a; + return ((_a = options === null || options === void 0 ? void 0 : options.position) === null || _a === void 0 ? void 0 : _a.y) || 'bottom'; + }; + NotyfView.prototype.adjustContainerAlignment = function (options) { + var align = this.X_POSITION_FLEX_MAP[this.getXPosition(options)]; + var justify = this.Y_POSITION_FLEX_MAP[this.getYPosition(options)]; + var style = this.container.style; + style.setProperty('justify-content', justify); + style.setProperty('align-items', align); + }; + NotyfView.prototype._buildNotificationCard = function (notification) { + var _this = this; + var options = notification.options; + var iconOpts = options.icon; + // Adjust container according to position (e.g. top-left, bottom-center, etc) + this.adjustContainerAlignment(options); + // Create elements + var notificationElem = this._createHTMLElement({ tagName: 'div', className: 'notyf__toast' }); + var ripple = this._createHTMLElement({ tagName: 'div', className: 'notyf__ripple' }); + var wrapper = this._createHTMLElement({ tagName: 'div', className: 'notyf__wrapper' }); + var message = this._createHTMLElement({ tagName: 'div', className: 'notyf__message' }); + message.innerHTML = options.message || ''; + var mainColor = options.background || options.backgroundColor; + // Build the icon and append it to the card + if (iconOpts) { + var iconContainer = this._createHTMLElement({ tagName: 'div', className: 'notyf__icon' }); + if (typeof iconOpts === 'string' || iconOpts instanceof String) + iconContainer.innerHTML = new String(iconOpts).valueOf(); + if (typeof iconOpts === 'object') { + var _a = iconOpts.tagName, tagName = _a === void 0 ? 'i' : _a, className_1 = iconOpts.className, text = iconOpts.text, _b = iconOpts.color, color = _b === void 0 ? mainColor : _b; + var iconElement = this._createHTMLElement({ tagName: tagName, className: className_1, text: text }); + if (color) + iconElement.style.color = color; + iconContainer.appendChild(iconElement); + } + wrapper.appendChild(iconContainer); + } + wrapper.appendChild(message); + notificationElem.appendChild(wrapper); + // Add ripple if applicable, else just paint the full toast + if (mainColor) { + if (options.ripple) { + ripple.style.background = mainColor; + notificationElem.appendChild(ripple); + } + else { + notificationElem.style.background = mainColor; + } + } + // Add dismiss button + if (options.dismissible) { + var dismissWrapper = this._createHTMLElement({ tagName: 'div', className: 'notyf__dismiss' }); + var dismissButton = this._createHTMLElement({ + tagName: 'button', + className: 'notyf__dismiss-btn', + }); + dismissWrapper.appendChild(dismissButton); + wrapper.appendChild(dismissWrapper); + notificationElem.classList.add("notyf__toast--dismissible"); + dismissButton.addEventListener('click', function (event) { + var _a, _b; + (_b = (_a = _this.events)[NotyfEvent.Dismiss]) === null || _b === void 0 ? void 0 : _b.call(_a, { target: notification, event: event }); + event.stopPropagation(); + }); + } + notificationElem.addEventListener('click', function (event) { var _a, _b; return (_b = (_a = _this.events)[NotyfEvent.Click]) === null || _b === void 0 ? void 0 : _b.call(_a, { target: notification, event: event }); }); + // Adjust margins depending on whether its an upper or lower notification + var className = this.getYPosition(options) === 'top' ? 'upper' : 'lower'; + notificationElem.classList.add("notyf__toast--" + className); + return notificationElem; + }; + NotyfView.prototype._createHTMLElement = function (_a) { + var tagName = _a.tagName, className = _a.className, text = _a.text; + var elem = document.createElement(tagName); + if (className) { + elem.className = className; + } + elem.textContent = text || null; + return elem; + }; + /** + * Creates an invisible container which will announce the notyfs to + * screen readers + */ + NotyfView.prototype._createA11yContainer = function () { + var a11yContainer = this._createHTMLElement({ tagName: 'div', className: 'notyf-announcer' }); + a11yContainer.setAttribute('aria-atomic', 'true'); + a11yContainer.setAttribute('aria-live', 'polite'); + // Set the a11y container to be visible hidden. Can't use display: none as + // screen readers won't read it. + a11yContainer.style.border = '0'; + a11yContainer.style.clip = 'rect(0 0 0 0)'; + a11yContainer.style.height = '1px'; + a11yContainer.style.margin = '-1px'; + a11yContainer.style.overflow = 'hidden'; + a11yContainer.style.padding = '0'; + a11yContainer.style.position = 'absolute'; + a11yContainer.style.width = '1px'; + a11yContainer.style.outline = '0'; + document.body.appendChild(a11yContainer); + this.a11yContainer = a11yContainer; + }; + /** + * Announces a message to screenreaders. + */ + NotyfView.prototype._announce = function (message) { + var _this = this; + this.a11yContainer.textContent = ''; + // This 100ms timeout is necessary for some browser + screen-reader combinations: + // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout. + // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a + // second time without clearing and then using a non-zero delay. + // (using JAWS 17 at time of this writing). + // https://github.com/angular/material2/blob/master/src/cdk/a11y/live-announcer/live-announcer.ts + setTimeout(function () { + _this.a11yContainer.textContent = message; + }, 100); + }; + /** + * Determine which animationend event is supported + */ + NotyfView.prototype._getAnimationEndEventName = function () { + var el = document.createElement('_fake'); + var transitions = { + MozTransition: 'animationend', + OTransition: 'oAnimationEnd', + WebkitTransition: 'webkitAnimationEnd', + transition: 'animationend', + }; + var t; + for (t in transitions) { + if (el.style[t] !== undefined) { + return transitions[t]; + } + } + // No supported animation end event. Using "animationend" as a fallback + return 'animationend'; + }; + return NotyfView; +}()); + +/** + * Main controller class. Defines the main Notyf API. + */ +var Notyf = /** @class */ (function () { + function Notyf(opts) { + var _this = this; + this.dismiss = this._removeNotification; + this.notifications = new NotyfArray(); + this.view = new NotyfView(); + var types = this.registerTypes(opts); + this.options = __assign(__assign({}, DEFAULT_OPTIONS), opts); + this.options.types = types; + this.notifications.onUpdate(function (elem, type) { return _this.view.update(elem, type); }); + this.view.on(NotyfEvent.Dismiss, function (_a) { + var target = _a.target, event = _a.event; + _this._removeNotification(target); + // tslint:disable-next-line: no-string-literal + target['triggerEvent'](NotyfEvent.Dismiss, event); + }); + // tslint:disable-next-line: no-string-literal + this.view.on(NotyfEvent.Click, function (_a) { + var target = _a.target, event = _a.event; + return target['triggerEvent'](NotyfEvent.Click, event); + }); + } + Notyf.prototype.error = function (payload) { + var options = this.normalizeOptions('error', payload); + return this.open(options); + }; + Notyf.prototype.success = function (payload) { + var options = this.normalizeOptions('success', payload); + return this.open(options); + }; + Notyf.prototype.open = function (options) { + var defaultOpts = this.options.types.find(function (_a) { + var type = _a.type; + return type === options.type; + }) || {}; + var config = __assign(__assign({}, defaultOpts), options); + this.assignProps(['ripple', 'position', 'dismissible'], config); + var notification = new NotyfNotification(config); + this._pushNotification(notification); + return notification; + }; + Notyf.prototype.dismissAll = function () { + while (this.notifications.splice(0, 1)) + ; + }; + /** + * Assigns properties to a config object based on two rules: + * 1. If the config object already sets that prop, leave it as so + * 2. Otherwise, use the default prop from the global options + * + * It's intended to build the final config object to open a notification. e.g. if + * 'dismissible' is not set, then use the value from the global config. + * + * @param props - properties to be assigned to the config object + * @param config - object whose properties need to be set + */ + Notyf.prototype.assignProps = function (props, config) { + var _this = this; + props.forEach(function (prop) { + // intentional double equality to check for both null and undefined + config[prop] = config[prop] == null ? _this.options[prop] : config[prop]; + }); + }; + Notyf.prototype._pushNotification = function (notification) { + var _this = this; + this.notifications.push(notification); + var duration = notification.options.duration !== undefined ? notification.options.duration : this.options.duration; + if (duration) { + setTimeout(function () { return _this._removeNotification(notification); }, duration); + } + }; + Notyf.prototype._removeNotification = function (notification) { + var index = this.notifications.indexOf(notification); + if (index !== -1) { + this.notifications.splice(index, 1); + } + }; + Notyf.prototype.normalizeOptions = function (type, payload) { + var options = { type: type }; + if (typeof payload === 'string') { + options.message = payload; + } + else if (typeof payload === 'object') { + options = __assign(__assign({}, options), payload); + } + return options; + }; + Notyf.prototype.registerTypes = function (opts) { + var incomingTypes = ((opts && opts.types) || []).slice(); + var finalDefaultTypes = DEFAULT_OPTIONS.types.map(function (defaultType) { + // find if there's a default type within the user input's types, if so, it means the user + // wants to change some of the default settings + var userTypeIdx = -1; + incomingTypes.forEach(function (t, idx) { + if (t.type === defaultType.type) + userTypeIdx = idx; + }); + var userType = userTypeIdx !== -1 ? incomingTypes.splice(userTypeIdx, 1)[0] : {}; + return __assign(__assign({}, defaultType), userType); + }); + return finalDefaultTypes.concat(incomingTypes); + }; + return Notyf; +}()); + + + + +/***/ }), + +/***/ "./node_modules/notyf/notyf.min.css": +/*!******************************************!*\ + !*** ./node_modules/notyf/notyf.min.css ***! + \******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"); +/* harmony import */ var _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _css_loader_dist_cjs_js_ruleSet_1_rules_6_oneOf_1_use_1_postcss_loader_dist_cjs_js_ruleSet_1_rules_6_oneOf_1_use_2_notyf_min_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!../postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./notyf.min.css */ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[6].oneOf[1].use[2]!./node_modules/notyf/notyf.min.css"); + + + +var options = {}; + +options.insert = "head"; +options.singleton = false; + +var update = _style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_css_loader_dist_cjs_js_ruleSet_1_rules_6_oneOf_1_use_1_postcss_loader_dist_cjs_js_ruleSet_1_rules_6_oneOf_1_use_2_notyf_min_css__WEBPACK_IMPORTED_MODULE_1__.default, options); + + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_css_loader_dist_cjs_js_ruleSet_1_rules_6_oneOf_1_use_1_postcss_loader_dist_cjs_js_ruleSet_1_rules_6_oneOf_1_use_2_notyf_min_css__WEBPACK_IMPORTED_MODULE_1__.default.locals || {}); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": +/*!****************************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! + \****************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +var isOldIE = function isOldIE() { + var memo; + return function memorize() { + if (typeof memo === 'undefined') { + // Test for IE <= 9 as proposed by Browserhacks + // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805 + // Tests for existence of standard globals is to allow style-loader + // to operate correctly into non-standard environments + // @see https://github.com/webpack-contrib/style-loader/issues/177 + memo = Boolean(window && document && document.all && !window.atob); + } + + return memo; + }; +}(); + +var getTarget = function getTarget() { + var memo = {}; + return function memorize(target) { + if (typeof memo[target] === 'undefined') { + var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself + + if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { + try { + // This will throw an exception if access to iframe is blocked + // due to cross-origin restrictions + styleTarget = styleTarget.contentDocument.head; + } catch (e) { + // istanbul ignore next + styleTarget = null; + } + } + + memo[target] = styleTarget; + } + + return memo[target]; + }; +}(); + +var stylesInDom = []; + +function getIndexByIdentifier(identifier) { + var result = -1; + + for (var i = 0; i < stylesInDom.length; i++) { + if (stylesInDom[i].identifier === identifier) { + result = i; + break; + } + } + + return result; +} + +function modulesToDom(list, options) { + var idCountMap = {}; + var identifiers = []; + + for (var i = 0; i < list.length; i++) { + var item = list[i]; + var id = options.base ? item[0] + options.base : item[0]; + var count = idCountMap[id] || 0; + var identifier = "".concat(id, " ").concat(count); + idCountMap[id] = count + 1; + var index = getIndexByIdentifier(identifier); + var obj = { + css: item[1], + media: item[2], + sourceMap: item[3] + }; + + if (index !== -1) { + stylesInDom[index].references++; + stylesInDom[index].updater(obj); + } else { + stylesInDom.push({ + identifier: identifier, + updater: addStyle(obj, options), + references: 1 + }); + } + + identifiers.push(identifier); + } + + return identifiers; +} + +function insertStyleElement(options) { + var style = document.createElement('style'); + var attributes = options.attributes || {}; + + if (typeof attributes.nonce === 'undefined') { + var nonce = true ? __webpack_require__.nc : 0; + + if (nonce) { + attributes.nonce = nonce; + } + } + + Object.keys(attributes).forEach(function (key) { + style.setAttribute(key, attributes[key]); + }); + + if (typeof options.insert === 'function') { + options.insert(style); + } else { + var target = getTarget(options.insert || 'head'); + + if (!target) { + throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid."); + } + + target.appendChild(style); + } + + return style; +} + +function removeStyleElement(style) { + // istanbul ignore if + if (style.parentNode === null) { + return false; + } + + style.parentNode.removeChild(style); +} +/* istanbul ignore next */ + + +var replaceText = function replaceText() { + var textStore = []; + return function replace(index, replacement) { + textStore[index] = replacement; + return textStore.filter(Boolean).join('\n'); + }; +}(); + +function applyToSingletonTag(style, index, remove, obj) { + var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE + + /* istanbul ignore if */ + + if (style.styleSheet) { + style.styleSheet.cssText = replaceText(index, css); + } else { + var cssNode = document.createTextNode(css); + var childNodes = style.childNodes; + + if (childNodes[index]) { + style.removeChild(childNodes[index]); + } + + if (childNodes.length) { + style.insertBefore(cssNode, childNodes[index]); + } else { + style.appendChild(cssNode); + } + } +} + +function applyToTag(style, options, obj) { + var css = obj.css; + var media = obj.media; + var sourceMap = obj.sourceMap; + + if (media) { + style.setAttribute('media', media); + } else { + style.removeAttribute('media'); + } + + if (sourceMap && typeof btoa !== 'undefined') { + css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */"); + } // For old IE + + /* istanbul ignore if */ + + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + while (style.firstChild) { + style.removeChild(style.firstChild); + } + + style.appendChild(document.createTextNode(css)); + } +} + +var singleton = null; +var singletonCounter = 0; + +function addStyle(obj, options) { + var style; + var update; + var remove; + + if (options.singleton) { + var styleIndex = singletonCounter++; + style = singleton || (singleton = insertStyleElement(options)); + update = applyToSingletonTag.bind(null, style, styleIndex, false); + remove = applyToSingletonTag.bind(null, style, styleIndex, true); + } else { + style = insertStyleElement(options); + update = applyToTag.bind(null, style, options); + + remove = function remove() { + removeStyleElement(style); + }; + } + + update(obj); + return function updateStyle(newObj) { + if (newObj) { + if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) { + return; + } + + update(obj = newObj); + } else { + remove(); + } + }; +} + +module.exports = function (list, options) { + options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of + -
        - -
        - +
        +
        loading.. +
        +
        + + + + + - + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ebbb62c..9cbface 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4417,6 +4417,11 @@ } } }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, "file-type": { "version": "12.4.2", "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", @@ -5151,6 +5156,11 @@ "loader-utils": "^1.1.0" } }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, "import-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz", @@ -5640,6 +5650,46 @@ "verror": "1.10.0" } }, + "jszip": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.6.0.tgz", + "integrity": "sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", @@ -5815,6 +5865,14 @@ "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", "dev": true }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, "lilconfig": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.3.tgz", @@ -6340,6 +6398,11 @@ "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true }, + "notyf": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/notyf/-/notyf-3.10.0.tgz", + "integrity": "sha512-Mtnp+0qiZxgrH+TzVlzhWyZceHdAZ/UWK0/ju9U0HQeDpap1mZ8cC7H5wSI5mwgni6yeAjaxsTw0sbMK+aSuHw==" + }, "npm-conf": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", @@ -7824,6 +7887,11 @@ "send": "0.17.1" } }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", diff --git a/package.json b/package.json index 5dabb81..d36714a 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "productName": "gramateria", "appId": "com.augusthost.gramateria", "directories": { - "output":"export", + "output": "export", "buildResources": "build" }, "win": { @@ -55,6 +55,9 @@ "electron-builder": "^22.10.5" }, "dependencies": { - "laravel-mix": "^6.0.25" + "file-saver": "^2.0.5", + "jszip": "^3.6.0", + "laravel-mix": "^6.0.25", + "notyf": "^3.10.0" } } diff --git a/webpack.mix.js b/webpack.mix.js index a611b10..6783c46 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -8,10 +8,10 @@ mix.disableNotifications() -const assets_data = [ - 'fonts', - 'svg' -] -for(let asset of assets_data){ - mix.copyDirectory(`gramateria/develop/${asset}`,`gramateria/dist/${asset}`) -} \ No newline at end of file +// const assets_data = [ +// 'fonts', +// 'svg' +// ] +// for(let asset of assets_data){ +// mix.copyDirectory(`gramateria/develop/${asset}`,`gramateria/dist/${asset}`) +// } \ No newline at end of file From dd7b8abdf1283ee5100b19be1d55a06fcf20f91e Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Wed, 21 Jul 2021 10:50:38 +0630 Subject: [PATCH 04/27] integrate ready-ui free version blocks --- dist/fonts/FontAwesome.otf | Bin 134808 -> 0 bytes dist/fonts/fontawesome-webfont.ttf | Bin 165548 -> 0 bytes dist/fonts/fontawesome-webfont.woff | Bin 29380 -> 0 bytes dist/fonts/fontawesome-webfont.woff2 | Bin 77160 -> 0 bytes dist/fonts/roboto/Roboto-Black.ttf | Bin 171480 -> 0 bytes dist/fonts/roboto/Roboto-Black.woff | Bin 90664 -> 0 bytes dist/fonts/roboto/Roboto-Black.woff2 | Bin 64960 -> 0 bytes dist/fonts/roboto/Roboto-BlackItalic.ttf | Bin 177552 -> 0 bytes dist/fonts/roboto/Roboto-BlackItalic.woff | Bin 98296 -> 0 bytes dist/fonts/roboto/Roboto-BlackItalic.woff2 | Bin 72088 -> 0 bytes dist/fonts/roboto/Roboto-Bold.ttf | Bin 170760 -> 0 bytes dist/fonts/roboto/Roboto-Bold.woff | Bin 90308 -> 0 bytes dist/fonts/roboto/Roboto-Bold.woff2 | Bin 64740 -> 0 bytes dist/fonts/roboto/Roboto-BoldItalic.ttf | Bin 174952 -> 0 bytes dist/fonts/roboto/Roboto-BoldItalic.woff | Bin 96244 -> 0 bytes dist/fonts/roboto/Roboto-BoldItalic.woff2 | Bin 70360 -> 0 bytes dist/fonts/roboto/Roboto-Italic.ttf | Bin 173932 -> 0 bytes dist/fonts/roboto/Roboto-Italic.woff | Bin 95740 -> 0 bytes dist/fonts/roboto/Roboto-Italic.woff2 | Bin 70280 -> 0 bytes dist/fonts/roboto/Roboto-Light.ttf | Bin 170420 -> 0 bytes dist/fonts/roboto/Roboto-Light.woff | Bin 89672 -> 0 bytes dist/fonts/roboto/Roboto-Light.woff2 | Bin 64320 -> 0 bytes dist/fonts/roboto/Roboto-LightItalic.ttf | Bin 176616 -> 0 bytes dist/fonts/roboto/Roboto-LightItalic.woff | Bin 96952 -> 0 bytes dist/fonts/roboto/Roboto-LightItalic.woff2 | Bin 70760 -> 0 bytes dist/fonts/roboto/Roboto-Medium.ttf | Bin 172064 -> 0 bytes dist/fonts/roboto/Roboto-Medium.woff | Bin 90560 -> 0 bytes dist/fonts/roboto/Roboto-Medium.woff2 | Bin 65484 -> 0 bytes dist/fonts/roboto/Roboto-MediumItalic.ttf | Bin 176864 -> 0 bytes dist/fonts/roboto/Roboto-MediumItalic.woff | Bin 97476 -> 0 bytes dist/fonts/roboto/Roboto-MediumItalic.woff2 | Bin 71284 -> 0 bytes dist/fonts/roboto/Roboto-Regular.ttf | Bin 171676 -> 0 bytes dist/fonts/roboto/Roboto-Regular.woff | Bin 89828 -> 0 bytes dist/fonts/roboto/Roboto-Regular.woff2 | Bin 64632 -> 0 bytes dist/fonts/roboto/Roboto-Thin.ttf | Bin 171904 -> 0 bytes dist/fonts/roboto/Roboto-Thin.woff | Bin 88132 -> 0 bytes dist/fonts/roboto/Roboto-Thin.woff2 | Bin 63048 -> 0 bytes dist/fonts/roboto/Roboto-ThinItalic.ttf | Bin 176300 -> 0 bytes dist/fonts/roboto/Roboto-ThinItalic.woff | Bin 94808 -> 0 bytes dist/fonts/roboto/Roboto-ThinItalic.woff2 | Bin 68328 -> 0 bytes .../develop/fonts/{ => glypher}/Glyphter.eot | Bin .../develop/fonts/{ => glypher}/Glyphter.svg | 0 .../develop/fonts/{ => glypher}/Glyphter.ttf | Bin .../develop/fonts/{ => glypher}/Glyphter.woff | Bin gramateria/develop/js/config/blockManager.js | 584 +++++----- gramateria/develop/js/config/buttons.js | 31 +- .../develop/js/config/readyui-blocks.js | 1013 +++++++++++++++++ gramateria/develop/js/gramateria.js | 13 +- gramateria/develop/sass/_global.scss | 20 + gramateria/develop/sass/_glyphter.scss | 10 +- gramateria/develop/sass/_gram.scss | 32 + gramateria/develop/sass/_overwrite.scss | 18 +- gramateria/develop/sass/gramateria.scss | 1 + .../dist/fonts/{ => glypher}/Glyphter.eot | Bin .../dist/fonts/{ => glypher}/Glyphter.svg | 0 .../dist/fonts/{ => glypher}/Glyphter.ttf | Bin .../dist/fonts/{ => glypher}/Glyphter.woff | Bin gramateria/dist/gram.min.css | 73 +- gramateria/dist/gram.min.js | 449 +++++--- 59 files changed, 1740 insertions(+), 504 deletions(-) delete mode 100755 dist/fonts/FontAwesome.otf delete mode 100755 dist/fonts/fontawesome-webfont.ttf delete mode 100644 dist/fonts/fontawesome-webfont.woff delete mode 100644 dist/fonts/fontawesome-webfont.woff2 delete mode 100755 dist/fonts/roboto/Roboto-Black.ttf delete mode 100755 dist/fonts/roboto/Roboto-Black.woff delete mode 100755 dist/fonts/roboto/Roboto-Black.woff2 delete mode 100755 dist/fonts/roboto/Roboto-BlackItalic.ttf delete mode 100755 dist/fonts/roboto/Roboto-BlackItalic.woff delete mode 100755 dist/fonts/roboto/Roboto-BlackItalic.woff2 delete mode 100755 dist/fonts/roboto/Roboto-Bold.ttf delete mode 100755 dist/fonts/roboto/Roboto-Bold.woff delete mode 100755 dist/fonts/roboto/Roboto-Bold.woff2 delete mode 100755 dist/fonts/roboto/Roboto-BoldItalic.ttf delete mode 100755 dist/fonts/roboto/Roboto-BoldItalic.woff delete mode 100755 dist/fonts/roboto/Roboto-BoldItalic.woff2 delete mode 100755 dist/fonts/roboto/Roboto-Italic.ttf delete mode 100755 dist/fonts/roboto/Roboto-Italic.woff delete mode 100755 dist/fonts/roboto/Roboto-Italic.woff2 delete mode 100755 dist/fonts/roboto/Roboto-Light.ttf delete mode 100755 dist/fonts/roboto/Roboto-Light.woff delete mode 100755 dist/fonts/roboto/Roboto-Light.woff2 delete mode 100755 dist/fonts/roboto/Roboto-LightItalic.ttf delete mode 100755 dist/fonts/roboto/Roboto-LightItalic.woff delete mode 100755 dist/fonts/roboto/Roboto-LightItalic.woff2 delete mode 100755 dist/fonts/roboto/Roboto-Medium.ttf delete mode 100755 dist/fonts/roboto/Roboto-Medium.woff delete mode 100755 dist/fonts/roboto/Roboto-Medium.woff2 delete mode 100755 dist/fonts/roboto/Roboto-MediumItalic.ttf delete mode 100755 dist/fonts/roboto/Roboto-MediumItalic.woff delete mode 100755 dist/fonts/roboto/Roboto-MediumItalic.woff2 delete mode 100755 dist/fonts/roboto/Roboto-Regular.ttf delete mode 100755 dist/fonts/roboto/Roboto-Regular.woff delete mode 100755 dist/fonts/roboto/Roboto-Regular.woff2 delete mode 100755 dist/fonts/roboto/Roboto-Thin.ttf delete mode 100755 dist/fonts/roboto/Roboto-Thin.woff delete mode 100755 dist/fonts/roboto/Roboto-Thin.woff2 delete mode 100755 dist/fonts/roboto/Roboto-ThinItalic.ttf delete mode 100755 dist/fonts/roboto/Roboto-ThinItalic.woff delete mode 100755 dist/fonts/roboto/Roboto-ThinItalic.woff2 rename gramateria/develop/fonts/{ => glypher}/Glyphter.eot (100%) rename gramateria/develop/fonts/{ => glypher}/Glyphter.svg (100%) rename gramateria/develop/fonts/{ => glypher}/Glyphter.ttf (100%) rename gramateria/develop/fonts/{ => glypher}/Glyphter.woff (100%) create mode 100644 gramateria/develop/js/config/readyui-blocks.js create mode 100644 gramateria/develop/sass/_gram.scss rename gramateria/dist/fonts/{ => glypher}/Glyphter.eot (100%) rename gramateria/dist/fonts/{ => glypher}/Glyphter.svg (100%) rename gramateria/dist/fonts/{ => glypher}/Glyphter.ttf (100%) rename gramateria/dist/fonts/{ => glypher}/Glyphter.woff (100%) diff --git a/dist/fonts/FontAwesome.otf b/dist/fonts/FontAwesome.otf deleted file mode 100755 index 401ec0f36e4f73b8efa40bd6f604fe80d286db70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134808 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 diff --git a/dist/fonts/fontawesome-webfont.ttf b/dist/fonts/fontawesome-webfont.ttf deleted file mode 100755 index 35acda2fa1196aad98c2adf4378a7611dd713aa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165548 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 z 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 d0mHlw&kWiHe0|OWPX7T?A)5^{dNilJW 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 diff --git a/dist/fonts/fontawesome-webfont.woff2 b/dist/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 4d13fc60404b91e398a37200c4a77b645cfd9586..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77160 zcmV(81_!itTT%&fM`8Do zgetlXfhX-f>pHa>CezJ5a+CKJB5E?t-D3Q@I zv;Az_{%F*wqQWVk+*x^)@=9sx>ldws&U_`?fwx|)6i0%hGq@6No|Wjj+Lhc2#LbXI zik@&>S#lthOy5xS4viawbfqcF5t#22r#4c;ULsQqOn&iMQrAORQWXh`G=YxhM*4YN zTfgWxZlU6?d>wP(yNq!jqfNVxB}>Ww7cSen4lE1$g!lMN&~*PN_7ITCO&u%|6=U~^ zD`NV@*N5j%{d4(V*d&F9*Lp4o^=-wV4E$&&XJX#);dbqZ^8pUYCyEa?qdKs=!}D|N zZKGn0G1#bWFe1l-8nC}AR*a~P9;0KUBrGsNR8Um3F%kp&^sGD!?K|!B(qItgwkPpO z4nOg8&Z#<)4^Bj%sQjrANfD$Zj098^i(7$$Vl;{o&HR7r?C&hE&b-&}y`y4mHj%mu zNlfW!ecOyC;56fuZ7e6t7R&P^z1O9)e^Pe=qGENxwk%7Q3&sYU;&zJz+X!u6Ex^F$ zTu6(Z`;JIR{;Knn>IcTcKbV%&ZSxB`P>8MADLLm#sD>oQy@;IWvGh3j=*Qa5&VIQ& z#BvplZofSw5gN50lul%1ZW|#duBPzgJG1nxIGMaB*-obI9wC1%7zRoi%C^%k;Mn?+ z?pUuq3@j1^4v?E3B49cgqW>EY2?-#3jqje^;JgycOCcwp0HG~LNR*rji6bO_n_6Fl zxt$OawF6EyR#iAg$gdotjwKXO)cf75+S~gE2n>cpa0mh<1W_5Hw7c36opP+~qRPFS z?z(HcYuX#9GugKj(K=EQB_0sAfiipahu*36k{xIzyD2!y5%vK1@c|DQ3Q0^$kT!Po zBklXM?*0ZWJJ6;!hoDZHGR|mrw+{{o{_lUy{_6}+Pm!l|BNl}Q;&@bv@2Wy(0-c_O zab6Z9oUWgiKYRW)Vv0%P;3X|rT9E6xVx&Q%6AWJDG0oX-H5vJ?>5A8;PEnm%C;H~y z%@URb{E<@x+!!CGA#@@j24G?{>Gvg*2lVeVHM;^7(Pnl#tDV)(Y|gCiIh;CbXJ$WV za+~#V|9GDufDe2U{2(L>iu$ z&FbBmZ9gV+TlVF2nNyNeYL2HloUh~eKdpS)>J9Pm#Xd(4%myqFVno%qUa9n|Ua803 z8#-)?GmgDZL7HHzH4B_FHnRat`EXP62|?edFIDRb!q%9yytA|?Ib5`-)rNGqg%GbH z-}d(Uw;KH$fouQgEh;fvK+gfZPMGsl{cktu>gD1?zL z`z7_05U{qkjReFC1qI#x+jpODe!iG=?eIufIBbyAS`i6yq~pK;J!P{R?B6jf<_85Y z$&N8sKi05v?h+0-IZ#Z-(g8koZ#f{v7%?Dp!%F^s91LTw|BvSLb7Oj@878i9HK*kSp)6{%ZXlv-PQ)RD zE`x4f_xM$H9{@mn{1`uWwLbR;xgELO9FcMuRbkvnQXmT&j}ZE~*Z9?u0F(1c4Md6G z%ZpLJy?$`%3V_^=J3F{;`T31Z7#Ad=bomK731~(`S)uLTR8OErP908ueHZaDB4D$q z{GZri&j-sW%|A#W5to*SAH-ai&E<86{%v3LDwPh%=3Mm7wrS#iOV1$&8oKgshx_jMlowl4ED4$f#L1!t6C1g9p~=ODPt z5-F*yQZ*RmNQ`~4r~k{Ouxs3@+Z>Q5N}1kIzW_;y+Y`2(U+=Sj1(9)2Vkg!}$DaT~ zSw&5w0~|KUc7%a7st`^}4doR9Pl!$j8b%9FcqlQFIssg|->XC5YmQ@}VmJj+^a&GW z;TT&?6ewkE94j()E$+}^)|h0Xjx{@?P9)U!BBDsDj}WU31 zAtcV{=d|bI-bs8=m>_-=CKKcXWW_GX0~^$^=>jcb2lM)283`*Z!V{7?x-M-}_~|s` zV|lNhxg(2J)xt(s?g(|g4crMAX)o}cuastffHd9kY=i3#SX1;l!-O06F-4v5y)!_N z{n~32h};!G7bhd5ytZSkz1eQ+sUW)X74K7DJFF%9?n#Q!!7ID?F7r$p*h2z%vFq+0 z9=`hOhOu`E+Rawmf`Ea#sNtl*!}&#cW`0Ouz3DI?ydh+i=s;0>PiQfT7Zu*A>rw!Z2oWMZdTlLANQLT4}czIhYZic*axDrD;QpTldic#?)QnYZQ#V&@GPdWKu$ce zkR96D(D?F+uOEL7E{&8{@#anN+7VOiE7M#=o-3l-Qlfm(Hnj`lCvjX<;N1eImGc}P zIfq1q23S0QB<*mCfZhipyXl3dlKdo_(zgrVEctLByL0)aRMXBH-Ttp)yZ_WqYe|tF zU*@4;)#eID=!hTcSCgMs|CA-!(RT=~eyOCyMAVSk!pq$%^Rswq@*cQ(TXI^ehX9#d zQzf)Vo7@<4U`9OSg`E*=es@n8G*SbT@I9!qVekl|qYka=BE@A6$s=C?(x-c+DlyNW} z6eaQe@Drh#XmE?Ex(!VKoZcdgD?X0w=CviN3tmmjikMECbJNHMagMY-l@hQIzV7AZ zriQRf5j1k=Eh_KlCFt5{BiAK6a8T){lxWsNJ@?M~+S(158s#PwDXC&%gvLuu_&~q; zp5%18A)_>(Gy@` zHu}fy7?5gdqUqRaZ9G+VYFVjT`f3hBTtJLx%QHo4W^k7Hn4dbj+U@EPSKG&~pSs!K zvyPmU&Tyr~vom3Dulo^!F^FVgi})a%1Gn9)rTvJRN`lw2KOkz(aW}5MO~dBSW@edL zwPwp4)N=wJup1;S7@U)OkZj2gQGo~o4#o=@iYEeNjFZoLvW2r$?(LKzQYnI52$jlzP&K3-Fs?@ z8TYz{a*Ip6o|)y)qHif|*~IjRGj3tOR55>Cr^87ZMJVZQz4x-c--DZz!bJ3J`mBFt zv$MzMB*TT@cUYc?%vG%XC_t5juJ=v#VIpp<4lLvW$%%|VH?JfU3&D=q@FkudiARUh(d2N+ zWLd~2X5t4S?fb`JHk6Khs0b;)4m))>Bf>MuG>~md#IxJ@3UBxJiBI@&t;m6*b~tLF z>Y4m_C`-#PTHIv21B#D$$;E^HZ8uiYUtFhV*G%O%3~-xR^LiE@?1e}-zAdW`mbEM> zF-u5dt!0p?EOIRw9HXESaG^}g@5b$*Gd<>1m;%N!sdSMt*}PbmYdWd4wf_iOfHlC+ za|MYGa1MylQ*%_SxCI*3>pCu7wYNkflt8fcEw)9s%#j8m5R?-^jqs5&y2-XJ@J1PZ zvCEQxGD63Ll8sRsnbjBI1u1mJ!>4@OBQ%73++6qLsDSXuV7F#t5G=NzBh&|HiRm#q z*)7%le!&>OD#^0421Im4)tJOE2i~}o^A-DsEaeX+t0KZ z{sQInfSneVRDtp{f^<>g*rTZi2sAuCI!Z9Zh$ZFSky>G5VCcOA>UPbn{DxunR4-Zq z0{Rr3Vcwm`(344N37c0jkQV&${exerkPtp8!}^!LNFtPq`QzzulIshDd^c?rMzvmA z&&_^jixC$vO7ZGm0Le*_7u+*exgqHorQCbdJY~!;JgCi-!q5HtGLD2^A9dP#_`PVfh~Qf+*{6POoKUi6l2P%*Hl&QKAyfLqkaIKd`D8JY1@={Zhq*1zZjQU5-VVG9EdQhh(N}S^W*!YLJe?QZ~`l?e_yw z5+Rt%0P61dAXbLEnF=K$2o+w?V3$raPx6eS5Bi3KtXuINb~@n7ggV*iUfP^;*T3fx zK(YWg|IErMMW^{br`nI~*hvLG+;Qa(JTE9Xz2mD|`K zWkMsBLSxbz*}wwmYD`=a5~IW|zFKINTi5zYJdLXS5AlQ;aj16QewJ%pn@7XW)l@{k zKU1m8+14)_#x2y>CEb#Vl-cMv42b@BrfGab7RyPY#BuR=W2k^v0h<(f44SbZ&kQd& z1c7+0f=Eva?9UId@{fgyyLhy>XLZ>Hs_gVQ>JLK39^$?US5+# zF8FwgP0>wLKjyriCrA1t{C?ppovgaV>1c~smv@h!4uR$(`2`$DeE7c~B> zpO)wsEU7ZQ#)-uJ6()96NKJ8Y@H7-Z0#aPGy|SvlSYbSo*fbFCmK;D$X{<=pL|?w> z37bU`XR6OqiFvV2n$yv2RQ}kYO5LsvtCo2WW6I7VnMg|XEFd+Y{o1b`B?Ku6B<2+= z&U7;n*3GsPjMqSY02HvKv_gCJS?}VwnX)lP$9Q?8>7cln_TCYaRXg*#;^hb%1uH+IT+qbi5QUIEkAPwUL- zZcK{joDF?6iF-BK80ny(qch>Bj2#sVh;E9olq4i9E2BhC2h@ZuNbOcWnAb?Aj+ol{ zPjg%dw*~)|Ezvu`S2h4n_?1nG-8izHMroCi)H}Y7r8gOC^D?nEB?8ux%nux4T`W2w zjmomxy+te?pWb^_g#G~wZee%3vH68gXQ75Jt@23+IdVE`poA6wl8hR#JV_HpwK4Eu zBw$Qpa>tT{f!Cet&Rr4Zc;X#7JyIEVCMr=i=zs(;dVe1C%lLUbh~NS0gJ4a3_SBi0 zWKV|KrDg~RR0H=-#?#LMUi65trDJ==U20Be7 z%Xwpj z8rGRuVi>6*eIn2 z4sdTqnx|BWhY_zMYaCA7zUpjza))jPvt-vupa&k7+<6n*ist$5`NN|BwO~KBX%LYryjwYCD`L@BOz&Y#&6yLk zrl09#3<5$~a4xgYhziDTTr}+GvxUZ_irgNJWb6?^#5mb!Oz(fO^4&7G%H z5^GS_GXIRAC_Q6#bn~Jjo?A1S$rmQJt!U~*P6dbvJ-70Rj*C#qoAg1nM--Cz!Y317 z=u#u7#!Wgd*X$9WGk^)j?$&fleixkNGkSM;Ai$K^JD4}R=>kur91A#{$yq51$wX5{ z_^yQCFMy;I)XX=RX%FBGjUjh=$~M62v?QPtjW|Ux>QrIgjQe~*2*&>nXZq^b5AiNL zZOI)6wC_3KIl*(?NODXbHzum22a=JFGaEv41mKQ*TW=5nCK7LT+EZuu)vXw=D|?|q zMZe$WYg*z7q#{n@ie%~;HG`r$nwUvewW8XJl|HLR?P9D;g~!gQW+^ITmZnEFJoC&$ zpqK!kl`d!W6#u8;k_s8NrGXb9K``UKExyy)qZX#Ac7FthR3Nwo1`lL3ODL!o z#aVG+vZ|XXb=~EAEWJ7~DkOX|><)vPi!TI8y2~t+U`4!!=-3qTcu*UzvmX| zU;vxoFY7w$fXLF*)+alS*@;#LhY>_6%d`y63v$W)kPx*5f^bYS(x#$=iQiEsSbWTj#TRZs?$7t8|iN~L%c(PyNt zN>cc8olk|i&vOa$9mc_tq1qTUO?Q~7+#U@N=prKaG!!!T;ppICO~e}UM7l3dA&J#? zf-}{*xAKAEE{qjsE0aKYPnTB6aq63DUe`n4s;NtDuJ@l2EaI^^NCY{ITBxi%Cb)05 zg&!!x67sqr4))=f2=^B;|&U9nAtxK%O?JrH(qLN-KLYGA2ys`5Pbca_F5=9yX0 zI@KWOZ;?E|06C&Ni~*hajz+-M`jaFaJ2KXs*J`w}5c=M_?075|63ZIOft^DH#ZttH zbQl)6uo5JL99BwZ9>Hda#W}|*0Iy-0IZ%nKCgAwd#WqiGzSaX5Y^gk*)brv38S)wL zWOF?u0W-yO7LT=1Ezn{_pw#>#jSuWwImbE(F^wt}}lf1z<$?f+@!t&&enhvFSp|oAa+s9!U zHXe30?GjS`pv=ByF^BCWSWJbRy2A=eiD6-y5fj~pEXMQfgpkY{A~P+|N8}+K%cVH8 zxAHg&eBe|%Q{GUMi~=9Hw)OFF98FTLS>9sw=B0b@E4xqqW!sxF_VU+f1*fUgb*|_4 zRz3PvJ}t!oYhpH4pAwRi(5Y}*;!VBKPpDx3vfLzB=tRMJ8;%jV@j>6aqg%i<1&#b+ zk^D-3Kdxp(KRuW4k%?rmuP94I&g0b4>O%zd6?@oyO6liO1^U`$YEO(w~dfSW-)I*JFbc95RKnhH_Ueo)^V z5O<-H?_2BbD+u?V6s?hlkNW{&D{7-4R^P`fkDgL0;{mp{b)#&5Aruay{_1@GD<`i@ zS^hSgHnz=Q2J4n}WYT?K1Ba~KTmN}=+nAMVj->#wyKf}M<5@kRd1_Le5osxl7MTWO zkkpGzVMHjsSp8MXcS#7V+PhkS79{jH0@}OoIU2e8CV!dMG+M*m)+daUL`I+W-4I(& zUB!OpWEez0R`B*0QI%Jr&CRlbeRfkm!A=eXZTHE;D+5#BaqzefNU;B5|N6>RA@|Ob zujYmt7m3)_czpI-ihZS1NN z{mBusZ?O_Oo54A_*Q29z84jB*6Wst#IvTqXn1FOd0WHRQYg4!CYPDfB?VoaEw10XJ zM*G{lAl|>>gn0kjc8K>kTL8Snq(eBCBR95iHQy_>TsDaOw3GMV`td+(amo3Y-6~SVgFExhSbYQt48O)0=vGOBz@93V1J{b z%hnjMkz5Lb^ba^Q<`P+L@G)XOzkbHOO0N0Xg0Ihy$^3ajb3G!GhUm=0X6-0?ONj*> z_f3DrB8?gdNMPm0cL=p(y+ve&>N;XLt~MwFIj|UsJns<6WB+W8-IyLPg}oO15Nn;A zXX*?`q_n+^0gs7HP%P#UtYbBYu|?p@^*>8)y$gH5q(rM|2sDE3?Nr_ z6;wk|U!eBTYxBbDj4oegyx`H4PD;~E0DDx)A+w4$lWIO__?$4^47wxdhTYj)uj=EM znyJ8s%uB-ov3ip%{vp~EGl-_rGMMKEfwnp}WIi3G1!!q)Mb=!*J@7~jy3`z6D|(ulUfoM`T~yvcgH%qlR3L>cQz}3KH_#K=7el_UiNveh$%U8? z_LGuK4xOlJQHD;H94v&y2_rh?&Qj5;yNIP~_>vbFIhO?$;xT|Nf?1iDP{&TfzW|C{ zCb@Y`IIq*W&G(5WFw0|-!FC7~@WzQ;j=+kc@=CQq%FR2Z@=-e+m0g92{YkVJKEF#;crZ%nQcFJ%ER9s%lZuHyt zzJCQXZKOUpq-8^{@!U>*5UtJX?PJ5B=GmY497K(+_9#(mFzjTf_-f`njzVGrbu~ zIo%B~2+9wdNd~?$Ckbz>{gcoZ5?p1VB{W_&eWQl99s=eyg47Eg{UFjXJqPm>4W7YD z$9-*oALJ8xuo5PzsHx8)k^U}Y)`AIEyYYQx=Stt&>pC^1 z<1Ipzi|(09mqxhhS;O1DqBDH|#e6Brh?)T?##hqzUdF1q6jPRD!uP? zbWjmu@AiW4LERk~L~lO?LlBOkXS8(lwDr(C^0>rF%Uwqug_tr@MLb@WZA&whtoIbB zE8!EYJKqhOTZ^g|%QMT``HvY}F|fSBy?KOoxP^}j7bAZUs@!njJZjWwL(^eq=6+n~ z8%LxAL!~qu?!w+=bz*cNLZC~R!u8OxQEj~wJTO)h@b)gBEo@zQDyI4YXo5}-(Ea; zYM(shM=smh)qbs|w%6;$>GU<*xxL%3UDH z0vH0D^OBr9a`sG=$rh?)7@YIo7tGXb<&x^?G`z4x$kihn?Wt54!tl=`j5ks~^J>k@Dr0)P<4=`SHK z9HqZCbCIW(RVN`J;D75Pe20ytLgS&Ts0!l`bX*&cR3jPU^U~6tO^zfhGHzeRUZ*DYv5=CgnUBb27sKfkX_*_QW8g{ZJrxy%`UQ0*MHZ%`jL5C?){`F! z&C1heYOrD0xYm%Mlg`aWz|)=J6XL61(PaYmoZu*Oee#}dZ#fyd`&CdjdPpQ^urvhm z*}68VQ1kadK;l>pC^5~>n9Trx;doyON_o9|l{4Dr69cU$EWU&B<4x-^ZkyN@g+6xh zPwMoB)w72E_{3`d-x8SCuyV~Y<7PBtbGlz8b|q|+<4fOKPHB=WR`~8S-zT@E#MIz^ z=alPCn@!+HKuGW89YXG6E7SeT?x%L$Rz`6^7@OU(bxT^EXsU2P?CnJ`_xORo0LS5ZqJMxCVbRWeo-#hK z{zFi%iIA{N#Sai5nrc7MZU}T|<(}BnT?3{T;ZumX`1pI_wN=xH1(7Hxv$bO9qbFvM z=4UX|gWc*FmBdU?L8VP}WEBU@DdV#;!@A>HA=Y*PjwWDlg|GfH5>Q(U8=Ya^l!UuA z`@jrShkPR|fU*HMN(H2f3L_iHxXfRx)nrwvq&6c~8APszz?(uMOM~~;e4-k-z`+?7 zfGGlRkkAmSbZh-=1DfW@EUpy$Y!T?8>kso)AM7dJxn-C&fjmLF2(TVpFr4e2U+g#7 z+4k*TetXy?4RKO}&ah^a69N0{Pzn%X8X;zvwD}fTRfDp#XjmKaqHNo}UcvD?D4zpu zpg)quKs{n;XPMnk&6ayDlWEX8k|(r56^l4OXTtD$NJe@v5fJxV4@4v5kU@+YF81KM zB`3Ckcdb1#4>KC1$+)+jS|{?MNO*>ms=Mx+CI?BKk~GjUN$;IXX{4>cn`P*Fl-e82 z)6I{U{cqygw40B6gQ97V*DIRULB6*KLPT`CR2Q|GilRB@t|Z3gvZLw#C-?I9 zy!hb|Fjj~seB&a|1(KNJ>wxs3916gZ*He~34@x1F)sNqi(l*9MHd0)QHWXaHyE(K7 z7cKZ-J*L4?vm!Z3S1w#G4ti~Cddo)5wN>F(8-aiB*r&s{6%BN!A zfXYqSk3jA<$0DOjjri6<$##L%7TK|6qVIW0hR0*(fg#o6fLB0H$oz`;1a}}DIS=m zbyp1H(H}*@XgRD90l;D@8c^gVE|w&ON1VYZKqwZG5%G1S)>4fd>}E_8%j0} z>CWmY4@fF`)8Fw6=$}2#(#%l{FRR_s*mX%Ry$HHIkK6B%!5A!-uyP}Uc?5jE0|so# zJYf39QTYezJ;eLe`Rl1hBpc|f(m|4R>6nc&+U%5MHUVSI^MY5$rR0aBG=BCa?{*tv z8T?`Y(3M|9)vn`N-fV}=sLpm8aiki6a}XqLIP~HXQxETrC1SUhA1v?k|2gmVR&_R2s(seFN2Y%r46JqWZi{zMzO@6d9I)pcW^+TATpWS22)!K7 z{@c%I{Tj3rhq(T^vsRbu&Ze%9K%2Jx;;cHVUtnV^eewPNOqD#*TeOfPRjbx2AAHc} zt-4#2+gs(Qnd`dLr*F8*$-Dx&zg#^>Qus?OAzM6)zDVOgj)gmgIpO%m1%Wz|)Je^w zE56KO{+Rh8zqjowkH|kGk|#&d2je}T?ZiXYJha&VyO4V8#=E9bh(Tco8rT zPe-~LXJF3m-dlc?;6F}7;88&8_{fAd=8#U#frP4_L49h#jzVGc!5lN~#ic3g6~oWV zv^sIRNviD2sp=g0o*CI#Z^KCv z#FxvQ-B_rBq7Gjt0mKsW!!`BC6$k3Nbv~=i32Sh;2_&#wx~G` z(eO_m^%*b>b$6$%N#e-yrUExgrg)Xbt1_?iT*?_%W<73Jkye1Kq|hQGIg_l`b~tzn z`?hTr4-{}gX!g?+=y~FiGlIKtQ3(zuiP@z5*mQMqJp{b_?lasFliFvhEL3A?EU$@}>?(xy?0}JwQH8W)@ zgM%@G>PXH-ueM<_`@adULW)`<8U01d5R+zQxRm%!F$xyv|chrOou44}{FQ zu6YqRf~q96u+ODLO0G^H%4Fs2B8k-be>oiK3g$C0AW6*^ms%)ZC=G0PHVrTJK#p08 zLXKYE*x7xsPgH(6W4>d;@{V2knw5LvDa+k`?zu!b?IaU>6Z`Pq6UTXDmMjv=q=0+& zbV0gTGkOq6NxG|T!|+7LG~A?B1pV4nGi0U@Nzx9T^F)#<4HAstN!zTAE&*ige(75b zE&EHBUNV4MV+@np3f(yUgLS?vS?RQ1T-jfytki+QU-&E97h_7L+8iXKTrxUZSLO`W zV$?#Q?RP!b+FLOvP6MA=R(dp(9y_!AD3@k>PN&3w;8lV1W+;Df)|ucTc-JF?m*BR~ zOsPF17R8HHWkv%j8E+8z^ns8d>p9D}&pP2~Dkoz~<@M#QkC?n$ z&e?ks$b<$?W~FX=nO!(W5x+0$ryG2dx-rUj?F|2CK-5Y)v02RT)wWJ`+B%|S>gH%j ztfKJtZwjIKzq@q2O_0W5goIMejlWX#_i4d8d`{b6P$HnB{fI(9u(`CzAZ=h_p7o2O zI!*lxi_iiR31c$L#i%^U6{h{zleCsq2#-&VQv#A)oq+%)VO&84x^U<84CMIggs<|k zy=BH+=Ey;ktf{G+F3hldr`GGNcZSEmemrDYNoc|SQck^RYZ`Xo=5O44Zl=_nqJ53m z?jA^dWvppdl~<{u*c`_{q0Ag3%_vJcw7Cau9bggfCgx23cwR=Xk^w6xrQHLW>mJ6~ zoLc6EiL#W%j~X5^KVItxMGgd}D4^Y)9{5DysmOKYi5BuUui;d}nD6_L6YasFOjC}# zHczo(ZSUG->j%o24td8i_|W>9e3D++Qxe`w@T9$cDvUBrFU6PyDH+cIXb67yo5J#3 zG40794Me%jg^c&;B&HbEF_T9x&XsSefG`7I4C>qZhx=cAaV){D41BBnVE){<2L>v7 z@O+e}#wYA`9CLORgK8)rap0>`tBHC{KGDrK|BkwuzlaI=96JbeGJ_Pwi(vS%g;$GU z{Zx5S_h+a9Wo0lHhxZH-?es7(>U}TAl)Q~QXj^ng`9!-l)?P)w#v|is_sESpWZ=t+AIf!#G5rs&Syz>JIdC**R%{28T7 z3V@q>j&C4r)}lPRp4ColvW%S&W~ir4e=5v=&{fKhhgb93U!Md&2bOjoJ19Yb8HK3L zy4q61UjHC7w>>t}Ha#-tZtH%1W3Rmx2ar!UlUNLfmEdH$tN}_H)_jlNOi-NOoqi9^ zg{k`SIGQU_MC|n7T(8vT(ya@_ty9AnT&F$vRoQmT4Nc^QnjT{!Vf(8~JI_I`92Py) zsKlD7l)2VxfdNW{PJnQm=uIU-Qee^9h&$N%C=>g=hc&|xSDL-sJ+%mnhFKt;XD#Gj z2zE4q&{%)2*@^mvO4vZ|*FE@S$1}z1{Oo{4vd%e)yV|NLF_6$95=Yw_z4vQ4lC3tBMDGfINUylPM{vLdC8$PvGww3M z#7!FCN}^#}-qt^>V~yZ$FrFzti)i5lP8Wc{b)L^3ngy~Q{tIn0A4raVvcVtQ$}w_8 z{3pGv*4Hunp5VvTf00XaophUX0ZP&+jLmekkfXZY#_;M=VNVsAyL*H&%BP~bR*Q}dWg0oT^8Hb z+8?1G&z0BSPn^-$hiXOPI+G&__cnoUIy{k1=Mc@&b;oJ3rj6kk$$N!*-WU(H*D=bT zr0V|Tqw7^x$?|Od3@g!L!cOqQSF7ZW$!NRFDNm;|d2K~(*`%*Q*3~y3q@}A_QE>1T z_6D(LLad5BIEtTzyE_8L9|e!)^p^N1XG>BwZkhJX2IjpB!BjvAu5P?4wikmTJr-d# ze~F%~qM?I`uv&gYSC`RHUPM?eSZ1ec==@HA#jy~*aWwx=5(dFZKo$AuQ_>Rp!25mj zSZFWpKHMx~mgDF1I61Y+^zJP>M|=fW1(A{|-QHr~ANxVa>i9KBlioZk*_GScI>eu& z1|bw(XKH?{PY2&7|BF?JPV1t%IM>@CuK1MYhZAS<3|$8;R~lD;C|B%GHu9HNvEw0;77(X?22w1IM z%aiOB(=+-KA2<0vs~0Nfhj)MhXFr;#l`0{U>G=9ec~qi63stjc&eM9u(Mj>TmCs)n zqy~jI(kAj;bc_&x@JKEnS@BxtC^T6o>twE#!UOw>4wdD*?dko{h9uAd6M2~^-V^XtQB8iDT>SuRV5`lF@KVqR6BpM!C7IOSK==Vpw&g(pxj3)fUkzqW=b~T@qFwtEZ zW+hV>@`(tZVIO~PD)HCr*ovK<9kXxHykgqU{en1fN;#jwg4p7qn!+cTEpyI5hH}vG z>x6~8sZ_AKr9oJMqy|Y0(OfufU3-I1W($>IBOJ=s6IioUUS_%(HTTpfCmY%9#O%-* z7Wh}nGS9alcExi=;#_~8?TAqrbG4o*nahwsLFg1}QWPF4TIl>4u;pQqh|II-98+uo z(Uzi8j9bgxoMgNzDV@owyPUubP~^g*#Jxy#7^83fyfvKkIEl$Fgu-3GXv3c-G_7y!TzN53|0z0QrgQ7caCIUODsHrJxMO^Wb*kGR?`kWpC;A=J&>1(h7!{7l6brcI(kLf%V{TT2<75-6 z8&zYT427ft`=>CKA>vVv&c z>9c-_$@t1_qhpRP6z0#+ww!e6an%ezStolEC*FwaLF8jo@%>hTO&IniscS@-4Xk^{ zrtKJ5&7a4q|Ll#BJS?d+UDhcz~oPM2|KSxUs4*+p8fP(ywu!Bkt8%c6sw78 zWyNMQf4$PiP-wJBw)J zFrI&zxy$w&L>{f?;zPdE1W50pp&X*=#w>q9Fo{|y964+OygHpN!b_)=H+o!D;6hCIj zaWcvUbE@H&Wtj%YJiK-AP$vs@i<*4hd0{uunqN#iOC>hj6>gO$NE&}#blRdD+`i|#RqLfDYEs|E;WZS(Jd4JuKXL$d|7$*@si*w5&^NgZ;jfd9P&&PAfyK0 z@-#u^rMW!<3dHgDRD+nfKzz(tB&HQ<8g4F2+(~@yQiKAa_dwrJf`{u|5QPP|UW&x-B%aYvU?T(iBW85A*9V0nld}B|2ByRyeWvN&^j9@JKZ@!Qbsb8_^ zONlcJ=M0REj)N6&mU~$eu?2^f;T}P5TkRP+t4-So4XIQpAtJu020vP`T?2z@1x3Vd zvJ1qX!amg}mWG+-dq>E0of@wos@EzJey05Ent8dE>tKl|t3mre*_a~%{M0D|w-9f} zC?w+bfEz#g9_ATATsZS!`bnjtFS^eH6s zdY{~Fa>v+oy@j+DD2O^9u(yLph#W_UVr5pQccN(|L%vTj^!N}UkkH#>=UUua>^w(f zJbJADK(RUlt4b}v)x_UlVCbm>IDnyO(zDGhZ+jkL3o0&`h0 z@{No_wWBu{*EDzEFzZK`(=~~~dX2&bK`()oMNe|h|4Dlo1x#xHR(r?t-E^1H#SqLUK8XTlHbx)yx-zJV%;W zKH0>$zqd^jvt0{Zv#3t^*dDNRu~*%VWSum|q z51|7P!|^AB8yP?XE}H1sStdAo3W_XgHx(MPwWI3&GkMs-JB@+sRef+T-$|bg0qg$@ zcvks%*4}As_(r{2#p-68|I7JkSlVNUnAGeZE@BMm>Ov~4d?vr*k9=pVw`DKNYshuG z{&rknNQbtbo??Qa3K@Uo4zmWL7IK@zzE~4tS9XEc*vZt)r;Y|JJv<;-Pq|0 z%OO{|+~4Q~2Y_nK%zLWsoY`7QB;R_zdr#gJaIYRa=XjEGnV2kj4}%4b7WKja_3cjMco6HoZV~yG2pj)qF`7L zVJc{QADVF*X?0cOT;3WMsv=DOy3n*h`BatGSlLolhrUJwXZBrl<;2|=MZwM#05d?$ zzq2)~RxsboSgg_(FUIe6>$S#fx_X73LiM~S2ib$bO1gL%8=}nT-y8|%NqY0{0f5ps z`ihbDjgrz?{)Wz#?J;z;zqWa=h_}v~Uwwh0e6)CN<68v4cmhg&di-qj$o@o|*H)MN zhH~@QV{>G4ak_TpTan|pCJ~N~V4rVQwtu+3Z0kPcpe!WQvt4J6;&li^~|lB(=48NU`r2 z$5ptqRbX95wQEDI>V|^m?Dw++2AZ+`PnhjdQ-wp7;&+p8j}{AOe&HW^M>tULnR|Ok zuD>oM_4^m!6*k2o77=|29Aq>saUVY9U>1M`Y;3hvO+r$Wxlm;ShBD?sjWJS$x#CFt zalGMd2ttrizow=n(pRG;iN|8%w`f9%viT0fnpPY@C_nri9kzc)_XwUrm{EN^M?~~8 z9KsqptPf>CkY>~*A_I*VIO4tc$c;w&m!_F!^Xs=YV7%&ksTIJ23`_L&b#~lbrq5XC zwJVsP@(gweY7>RvwgO%>J>JhSGf$I)DB$V(zS=M?Nr#PQOVRaGpb^N&Z?Kz!PpG`j zY2z{z2Er-Wh6fb0NAky>3RpbR633Wj$86{78f~M+Q_WnU=k|wC%-kU%`fqsdB*QBV z7l{ai1U_VJ?Zx0LjOU$ViklGOPDxDz7Q{@2g^ zTzoYk-lO!p*rq7Q`jeoGlGu3*@oJ@Ulo@R(vh4SO=F>b}N0A8?-ZIw*>G5P#o*45` zoR=`K^ynmrr?zg-4U}@Yt^%@cxh{CkoMm5 zoPXV&&8X3vA}~MBUNYsjSVrfKEPHdn=5k+U5I|P0`W2GF@sfF;XNZy%{u&bu&Q8i- z=V|l^j+gs)0&%@NSlY-OMMQ(3T%oOEF&Z96qmn4Lq!5jYQghe9lB!h2%iZ)m8(i9n zQU3Xn0y1<|34=SAp9^4;)!bVf2iYvJ>OpJ1qf4XeVnl2s<6=0?EM1vtT&$b1{(Ngg ziP`1QcuaAAau(eR)Xs)Je2aR_jJpp)irmA=VV~$?#P>g8-w^PChhYw9GrTaM=nm53 zC<$un+#*J`K`QNg-=oW9v|YuSD_BV8lzPB(|Jl~}3*`%1sRC2!;!GV6;0|>541kSrttz3llsEV32psoEb>y#`{&)#REmCm={YP3 zkS~Izr@rF*wXZJjgaYCHsz`u-g(1b@h09>l*8)ZPyAQk=cp3W?_!Lk1+m;~P8*K!4 z0ZFiI>Zi2PkyUz~diHB7y()Zd<(bL?Dhn<@{q^^L<@~-4$mL_}__@FWXmHolKV{8X zmtDCkNPNtjG0*go`N(BIsa87)*ry2&G7*|kQC5h&l5AHtZ5%aE5u`I4Cj;AF{i3TJ zcoP!fEU41C8?#|4RP34arDaw7u5&RktJ~QYgl2R(7ZZT|fW!VA{8YQHd(t7WicG+# z(LnD{Opce;bjQ6R$qxFtUgJz5bgkxTAoiq|Uby)>LlXGRQts9Xg1wpWOPu`;5H@|AnueaE;&Yr*p!z}53qVrc-7QXPLS&p48sckL6*~l23wsvl+#eZ@qD?{k}E!>@*~j(GCw3uZe+c6>cFUF(NmvF zC7+C~{t{)_o_?MERiAN})$tgb3cTL4+0ux5*#%N=;LyJ;H-rU?%dzP961Dfy#l=2g z7sV9@3e7L;bw(0rhldkSXDLwUl}hx5Tq#%^zXWR_Rz@Q6=mT7I_Se|Ta?%1L^4NDp zU9)or6R3XU9B02{=iu1H`}AmFc}s^F;7ukNi;7i&ih z)Bjxo@;ow7%fz+n`CL9A&@#?$i4;Th0(zq zq4@P%1npcbS*gTbO0&BD8R^ft-;ju`#KWw9ySA545D}A}9Ns}CKAj7;@tFi&)#MX0 zP?>BsaJb-4lf%)F2=;+n%78RaK%c^)5i9`50Me|Ahl4GHEE$u}8Xyn}nlhj}i8BndXM!{V9@ULn(5BO=r$<`sYbb4v3~;t~tLvr= za%ox-M$LVSxQl5z$uH~snh+g~V|q}Z#dTK2Q8`78(k3U&FYF74k#^;r@~!y%rO(}G_EA+zTka?F#8vv(l>5w`m)5p>zc?}JARmg2a;0vX@8X)$ zxrGwVeI2^a3I#e75dbX2(7D|AHX2wrq@S+utY)mi8fBX&1q}yIO&OsTGH`r?G}-iU zHU*Hj0#KEWC4DbARw|3e#iG>jy*FKP&EG4~32 zmoC^Zo2~LJm+tb7QgYY%8DF{mc~wIt63q`c`uX!V5sy>UWxeE81)SF@eNm%^c75VZ*KB>B;`2 z;ddS|3p!af%~7->3c!l$pDPw;A`&Gk9-}fE0qJzh^_pOfN2QS6w51KeW;$q2Gwc>K z#ui=$hJHLy5Ccv6zghsx1S)re`Nq%I(vb2=FrXH2AtGRbP*dgt3ry$(6*dbBHmpzF z)DwFHCb+zC5sVNNXL5^sPFcLNv>-LCj}*in zB%n`#2xa~aM{dQ&bC}^Iii}(a?`ivB<3!fj+0pGkwBNo3JMsYP=y%-A>orw^cxry` zw9KZ~+_i?Pr}WmHpFW3q)2ZL~;3*u^Zz*gl-tLh|@GTvdJNwA=0|P7Be32N^D_f*juK7AWtCz#4>hE>(_0DNNN*N>a1aA&IDhdw9bkWyB#<|~n11hB zccL`+tIBq9mMF%!i3+ z7PVFGOz=o-eeG5ewfKU|_u7UZRra6A9V$XI{cMyD z6jD%T>j}|h1Ft6zzWU8PYR1716h*Dx5hTjS2M1bZcwGy(MXMlwbkF7HBmQnTJ*tKi<85{MeCN8$Q(z-qr#~Oz!UG+tI~i0b9dl{Z0yvB||xj zSfxDrQSI$sY5BX_?~8CORUpWb6c-C0RKtn(ev$1}t}+)WCwF|-FPf`DGZX;A>ao}8 z=Sm1HyL1Zb9^CP)S7%I4B=R6z$X4V04t(CenRdWvFj$>f{tW5tn$OTY+iH$z=lPtr z8Hs8z(9U~uOipdHt>#->Odj?#Q?Vpj2!j##rSZy$6MhZfhoyg#kxQPix~=gT-67Rc zMJU*dnv;ve*-$zrf0y}tug1L7tTc1QlZk~_Ofx}@Hic3R5ovZU6*mP_5IUbsu`{i( zWd@q@?zuf)s*8!Q8KT9eG|RKUGzP*?L*MCAe%z3Zg-%N_D`O-kGnP%U{MPApJUXQ! z6v^u>OgO2=!ar*yf>Yt8mk!+9#p4YSJoDfdZ?`D-Lm?uLxs_J(rRaWjcjl(l~; zK?+iH{>VLBM7RoSIUI4S@8WhIf6qhQZf^tPol8<4GKO~FDaOszF=U)$eMFfuYdkqW zz+DbI#5nz-fBL#YQYm=$%cDC;(`mGQd(AgAp3TY^G|!J)7Q_n--a2QRRtGJ8K)4{? zp&DP;fJ#t$7p1e0`iG5`SUZ;~VMI#JKc$bHToof&lELh9>6+(v@NK@y&Hh32(2g=( zsSVvd5#}~IYKcssUrw z(x6waKfH!3`oiD<_5Zy0<6z!{&xf)jL%o2P%Lo|7Lh768S0_TN!+x`?g3bM7;bIK{ z6Vm?g+BJTCVDQyJ)=e?_>fj3~(wvuFsXmya5;| z*x|VcAa9N&-KDBKX7XU7%%a%*bg{X~pGvPJ-}~dLNFV;?TIB!)5=)iC)QW?#9M5Y5 zz$*|;0d4KA6yD$OQZgQ-<*qUGEUuZslsAo76}LL=}fX=+YRK2vu_!3iu+bq88_~6K6d23g`7+NXELRGw=j@D~xdDR;< zSpN0LOT*?Y4Kwiy?nVFt`{lej7~*hC>vfK=u+_JN3zv-9agadwoS08RcK&%sH1PV6 z%ii8DEN!`?BSa!z%+aHV0XS@=QCjt-G4=C;tI$J~uAk^!t2A#)+^CG`?VgGcm8PJD z9h3cJL^kJWTc*5x8kyHj(HvdXR``B_E{4}Sw&@Ox#uCibFnTHl7##W;6`Dv`*DQd~ zzt1>$l zy`tr!xYPUpkWSf{f5Sj7i_}-tF$F}i2YMV^5W%qGTd++fR^~PAav?M(Rhe?D4Rhk4 zHzj$00OwBGN+>_2Zdq-K9wJl|`a_LPZF2iA1n!vKw0mMxPE?E?>|H7uedv-Kc3`Tc znERrYG3s7Oo#pO}({__iZ|+swhCx#{SD8=QiDe60DB8|K5d-C-&7B^FbZ;?Y&#M($ zNP_3Qd(pu4q<+gzfPGdS%Zu5$0B^FA6+DYRBgg%sZ>sR_zEnm;BJUd|H}5m9tk*8} zC_fdxX19`qisj~A-_rG9A@!WVvHZZlyfGzJ@APp@I_R9IsL!~3k_7ueI4AQLE3Wlc zsJ2%gb=#nVoiKlk3(I{VD^xFu?on>(6QJU35bBa=XfzR!b_H+p_jZ;uafnByQ$ZFzeFCn{3?&FTXjn(nbO86K)<>eWp)YTN2fr4;#I; zuOdnA*$U}^3y!5y|wZ%gt2Spw?1r~Xs#>Bj<$lV% zOegfQxuQPduw&@N;gU{38I`@@s_{4=;TOt_ihJyWm3kCn_5?TuUw8;s;?(fd+}bD} zSR!4{l&r*?O*VJ_ETm@WXJ(YsE6toKRI1fV8&wE&J`FACU3z^38-{PADv@nR2gSA@ zmNAJ_%^i$9yRo{v+qLC~{I@2mg%vs%mzhz6dhtl@;cB|QY#OF&{<%y6?i>x+MlAdP z!SMKxVdz<^A}37CtcJ<7rLtm5aC`Q=mo}}{tLCH*Xp`pAT@$~J5N)ar{YBC}t_#wB zlImumyV?Xsb{vY|>W4+UU`1DHZWeWT;5Z>iR$1piKQ~KW_7y9eTQawn-6dbFZFl6l zbHiG->gi2dKiqcWY@V}|IitB|q=-+-49|NU`Le1kvnM&LFB^Ro01Z@q<;)xF%I7xO z-d5{+!?gc)RT8;d;?ZPO9xPvV>Q>6_qvS=+D?%1Jfq3HKVUJlZOf-#h-B8Oh@*)wf zp>D75YFjB-bJh_xG>!EE+aSp_bLCUYHr>IiqVf!TnJ5J;iECG?hY&ZGs*@ zMqi^@Gv{UkUbjpVm1gT^CmIz%)EFjBH@8MGdxDJTl@dp%im_D4Ld4O|(=V?dX1LXQ zabx&hE=(>-5wdPx9=)X5(pRBtl-4Ni5NH~T-D9L7$ejA?u6*K(CD=bDz|dU%gf`t3 zQO3ZuZYsH%Fu(%jvnLp<87GR3j?-7JXvC@GpFR5k?!}!!NfITQtWVex=oEq$Qbdv_)@$k~&IuRwktnFF{qbwn&9`6Nb>Uc41%a?M zgG${LZ>@pdbjP58^&MamShIiV3+(fVYy{dbgx)RP)TyehuE7}!6jVYZ%RegiAp?{fle zrZ~A&f3U?pW+7v@D4I(fNcW2BgHx@`=twsqOz=~`E=0rvH0O&X{@H$A%i7trVZ2A_ z0-AHLX$VU&kiqv@&@*~q_hy|-?`nyJ1?Y7xt?`{TNyhP**=B8&I%%g8dVJT|pQ!OT)J~x!odB)G@6&^!F&Xx#i;#~kuQXG?@y9`0` z8jmoU@C*%0W|Oo=J$eg_#%Ba)iUY57W}7z`OL!oVThJ2as~-$ZUM^d+rqr!I^IFjX zWBVC5Xt}pViP5L?6Ps)lU5J|-On4|x5|JRH{|v!INPmIG^6cHduk;ZDTpT-w*`2b=}lq&|5&VzP9gpLxa=Pdj-IB)8~jZ0xqAXJQ<(_Q1Ei` z&6%0u5p%gQxx6o&7S&E2IIwkfqP;HDzf-DTa)fHDUASDWrJ7-OUX|n{3@uxM!@ zW_&@H(PqGBU3px^=npz&)a3oneUBfD$JMVB=SHsCO|dRb7o{ys+C!t{MTlnUx~#vf zb?xF@Q79BkjoXBvQfjTMxl;QQ$B)tPFSYPn%>=h~4pdKK4y21jI}=0Lw_^g0MZ1>0 zMaEQ9al_sGXftG#+bw$q{AO5i7R1BwHm9v<4_%_U+g77UVKY3f)!YDfnbb-^Sf=9X zzUTJMO~iU+Qp!wX1*0>fkuR76^az-TxMX^$BA58{Kh%H&A7|P+L|>&H(ZW!uzBj$C z!e7~-%Tr?&eZCc;mcswvsPxK}{4kIt`JFHVrJ!^ByWpEmM2C~*PgS#&h!5i+1eBY&9lSe`3@5A=D2})4dQ=Lbi7ELpiQ@aGf`O>dG~-{rIee z9&s}0(W>Ca(zF2gRl|+DEbGjMZCmj6<=#PJ)7>Vh$6hE6ad&nj>*K!(9`EXsj{E;E(NN#n zqq}mP(>xZHN;%~eYdXK62QEvGuyRNb#S zGVo+VAqX@L`QWZD3X+OWkpnnSEM~p>rxKihGE`|+4RwpLb$8_IQ< zXVLJ&lFU1%8B25DCl6kvrxKufD}x$0RaH-&sQW^h_|UfME3G87B~QCKWo*@@Dv{b_ zK&puaMu`OVV>T3LX9e_4RexXEelcc*rgptnyEP4o5c4fo4V&CB9gi5nAQvfLMDcsQ z^VG9qF&i0{BT;b8BYvnDRc3XEhGa-0g&L$J zwlZr`49qW!tK8Hd13py~UzBx+xJKWsC_4{hGpMNf*5q8{KjbHZJNA z^jbTY%}}r_Ptz%g(^#edwhcZ=ca_8*&Y? zl{cCt)2II&xO<)-uML|M;dle8ZJ`~f2E8$F(2}$CX@l``6R_kU5=z#}+)tXXCsrYe znIg9musw++6$%Z}mo$XJ_)Al|E9#NL$|hRc+nIxrC#2?vrCE*+;Lu*%7Pkduz6Aoz z=6?VG_kH4)EQP{&Cn9sBZ{MzDvB&+fAEV#BeS0nl=WFQ5$W%&MJ7#9;mhXj**J`Ir zR+6|Jyh86Q(e`S^+yNbNO|Dl=uOgcpW%Vze*S5RgyIE$L{fzW@ccMx4@;YnlkxA?5 zaW003$Fc~VWK36SZSMTIvt1ql$(QxQ$NOCkX3yfdDS|@b>U(Um*1NaC9boQ^vC3-J zexu%o-s!J9#DP10tv9j7EqX!0@7UK^!6&TF4s>Fljo2K6S5MV0n9Cm|0Q3e&Q!rA= znpX9Z$)8+E81nn+%5I`6XaO5-DT|>j8V0%P3hEr&E5R&YWX(0Rh&Q}B338(XS`fzLR;O0^i zd>Hn<8c&)sFK*C4k~U4@vH;Ce=+&!2e5nwaToqMrp`;65!)&i}-NFU5JrG-atd}08 zK?AM@KeF)*dP-jqQZ@nvt^QL%gXO>D3BQc`kD#^uZ_*#iOk;S?;n2L=z$7UxKT4FBS~l*jqV5r3fL zc?yV&`?|@ewX^2-Wh-^gXstuOJjO5YEOQBWd8of5@oLxDN$2purs%J=pL_ArjuQT~ z`pGQWzw#ySrGw631ydqhJG9;XUw&X4AwKL~`rM8aD$d$;T{udabsN{W56yK?!3~Mk z4%MMZK8T74XzxsGaW`k;61Y+_7WOR4s*$=FT3yC`ppYc2Lt3S*wviCb!H35qsum>>o?g+x^38-2Cux#N_m_E3sN z0tqF7xNdRLU5MqF$v(gd`g-)XXqjy=ke8ct%L6}x@&+Ke05ej2PWVuP&-WV7*Xz-^YdpaeNVp4 zS347URKFp(y4dzcf?Euw`K@p14Q!Q&zAE|}u&1=ZO9lazgiD9wRd%-AyvB^#t4>)o zn zTIh5Ujl*cs#>u;pQp2VJM{vf&6*oV2Nj_6aiBDkj?Gq;%?$-RYrP1murR10)yKlB$jpRoq* zU7O+1_k{A7X`)3)%S6uynj4a-7SL)p zY{A_GL;yC~rxz{!hK~Zb)WIvKeOgsCpI)x#cu%$6yq%wB#r)V&9!U5b6c7uI!s=B! zB1wDqDUsYUg#?XSz_9olF7?xcD{h2wDDc&ny!|Y+GD2sBK(aaW{CO3T&3Tvuj8CNjN6N2 zc^<8pBeum+YM(Y_a(^QMr^u1Bg5DHL?aMT55*qSP76$I$#wd9XhZgTn_04@GZH^3E znglJ&eDjmkh${UN9h6h?id^^6oQ?kIhlxNE{|n1N3fR(~3Up*`2 zijvce&z>hx^xV344M)^U?$&HBi@N=CsB!yR$aWt@D4j$@85l>8CgVft*s;SQ5ux&v zuRW5-qk1%jf{J!1qa-^6yn6Hp>aAVR%!xZca8VP7<010#C z&pr(kf!0j6UhAS}@7lX}z714Y-k-Mr2U6J$%r9TLNgk@iro>GrLVqrvwAd_Anl0%1 zNXlv{{r)9TfBC(>^h9tn+sIz+UU!XPOV+D_OXveoVLr~j@2jP1&!}hW_$mEMQ~cA} zyb|tYM@Csk%p{W)s+AS^SYU_@HzktNfMc>tk=jufPq`bxkAWgW)u9_gl_#s{wq6h} z>tG`AhC9kff1(D{|A5GBWz>?bPhM<^gF2Z}8KFMxG&N-#7Wf)HTQ?+ny{83(w0{iY zX}{%0@LVcF^bQm!$DPJOmJ9`JZ{7m9kmpTCW4yrK5Wa+krveuUd*Pv0edJrHe_c_J+3K;Y0fGo2K7-^3KpC?_WFK2zB=YrOQX#|1ZRY}N$ zsjg3wbQaq1zOBrX2Esqh)oYCB=NAGx(#X}&Tlw5RR8wig^q~--1elwg97Q}g_Zmel z?@kHWkas)hZA1u-uXWbPdM8_271IRIjYHLUr-uPBp=?(Ras7yfm^#HYOSK& z`wvMb^~2LMmRw~tZiUa+5rruoQg&l_>o4?H(nG{Q-Ana{or#-gdml%+`dImrvbG{( z7p&tb<2KF1iyEl$<3+|T(cr$3H{GD2`gSx^hn7h3?N z-7f#2g>parXHTO6Xp+A#C2Zuc{Zdc36GglYx@H|9PCaBM{&in*V!%HPSi-P^+!JO5 zI@rugFRTlbeLpC5i#EQCqt8&7BKWgRe%EPME#GG`?dVxT9A|p(!G9fnHgQW#ss8N_Q1c&3xd57=V@14Ul( z;Oq|aNiyHKuw+(mm2ptbABVYXT46HV*GPgdjvGBFxMN#vS0!oI8@L~%w_{iUf@6pe z!J}wU#&NgP={AWH8DsoS@;|-{eIIF4Xopg5(CA$r`Op>xj-ym(=xp)QE=7Xv{$V{4qbf+kT65`SQT( z!ZyvE*xJEVow#eKj@8VD4<6E)84uEj`&>;30OfqZbRZDZHBUS=J|IdC=Y78387%)% z9dc1B&9C;GL0lCl^(lD;dekR|9TQ7r*scadjrLb$X}myZdUYo;Torx0UU9+a&q+K6 zK4o6kXer21DjvD?6l{8}e?ow4KMQBv`LY4j_lk?k1Ir+oK{PaH?B{SH*qzj};=~S$xWpk*YrTFKJ~fRkm`kA6J*@ z(N}Xe3Y2Hsg` zd_4%nK)XGK!B0X5uzJQ&ykzsh$u(ATY$O1^q0w5^ggB79gS0qa&ySdKa40%KHcB;6 zSuzO;!>CpsnY9ilN0f=q%y4Dq;hn8qwyJ1qlNKKx4x-X>n%%9B&MK?4XR z6VrUXNWt|*BRA29)zaX!+%fR}Xm1 zh)0bC`jGnm?+!;tk`SQRu6~VKx=N|OR5wj=Uc%_QBZ4r2r{vhfwQ+~O1RC?#%j#l_ zFq%tNZ*=in4T>4nmTeIZUgv8d7i+Y-Eo94Z+TEXj|F2#QO7z`i_A{c#-IYcf6OTsE zROZjR+n1d=Z%+j1JTn zd+6vm8?`#Qp7VM|4Fn(8W8II^OkLUcMnV0%8i zr-c?L`(fwaopm_}=js0UIS}xkC!hfcsZ1Uc`D4(y%EXaKXp!_}&7Sgy>)}~Pk7k*v z0R*+iSy#a$v~R zeX^24%(kxlnZBzNfrHfi>tqOoyp%v43|w(75S}?G)apg?N;OE`O0+b$p?Yc&Fa4;>M((f(+qN5a0fa6{?2lCvuLHUtJ~ zs?$>|(7(8KG&DIi>SSt=D-4F6OKZ8(PI2i%r5OSRluhu66AmjYKYItpG80XMn@&o9 zR`GQZ{5deuBqL;2oG;ZZDUr_&L2EFS#)4iOjE8~wMjVvio6QBl+}v)l0*m+ix|BR6 zq7j@*t-zf3jCOGVB%GV-9-qnRuVe{8>Sv@<-AIjL3V*mP=gMK7dWVl_LqBz>zeAM?E0)b*m z(-tW@b|C-yqZl(%hEkVNw2uUR%ev%$PwfoW32O$$RZzsii+!`7Q&yF){S3^1cz<&M zQOa^}ud$yq9;5$y=a4dqMi8Wo()uUXucO%AZcab&9@l#!UG*^*LMtD{)wQJ!^~{{|qje>0#VA_7t-GV0Vt=7IO_^w2S|1KGCn=&7 zIiMqlKFliD13Y7lJK7x7ntg0O;-~v1`zg0pU=VC&Sr_guH7d{#*$<^ee(Eg@iS`F% zHA>;eTJ<4O1GTx+rl($J0Z@RWFJ@}K3xQP1SdkK<1Xw00W+4cO!<}9e@|b5YYCH+E zFWSfJrGrx^O4gG#;Z|M={+0UQpTC}7#2Ib8d!Ua7GQO-kqNNQmX*UEU0pJe@7AE4U zwf@t!j*X40k61-dQ|KSSc*Zpj9>=l0*@|=`jumLC5r}r@uU|vj7K7zem7BeOK_t37 zhCmC^0leiNW{O-pQ_NwEDVnA>L($P+o!;NhiVSBkC^Ts;Yr+#e1qvfIbcC$AnegCRn?NkwemQ9q{hZ80)DRKKV55>n@+ zrF_6xec$!x3-5M?t7hpcw?AKqOMFRL_1?t$qmqSty(Mj6DiAf?M7yNXV2p=OfuA`f zBa>sjholVH6rcqddf`ip%Fh>sbg|fg9}8rHx@*{h-8b_G>|28~r~`VU8QhR8o~FUQ zVm$X6d{aD^e%QJ#Rz-f)Y+bL?@#<8df815HKiz1(<-p~CrfcD+F|np^Vcxs=+ty|2{Ww#AoH6&% zo#cyzwgikJ)APFGIg@CG*hvi-ht@)l>k0=EIZLZ=Unl@u0cII6x44LJA^Z!4lKC?+ z9iBtCzQH?K4wgx1B&ErK=cc(pgvCHGS8NR*-4R`eCMk0^@ZhL4ck!fIkTYX0{Nqgm zXA54u6v#2s$LYCGvvG4HO>^;rGg?keO=~o~A8voFukYHJ1yE)-pw)>!Y}+;oIY8agmiMNa9*?C0;5E;h zHZt=0bU-%>p5aW6&N2xd_SY96bo}-0C)BUNVo1v5@6@~jh<6gp=2vF&@wdr}H$BYT z{4PCWcnu{5WIqkMf5GmJVYAB1Ad)%YW&d!Hr;EKvkJ70OOUUK-T=0;^+mHL5gr0C3 zEfR5KgQKbmo0CAPN#e)o^I~h<*%Y~*smuj4Wl)?JMmXI8iCS${OeonAC~;6QHNP2d z87I7@!9)1R!d8j3ifO>Ls+-yplcA1kmC*3XzXVu6ap`AXI@6oLTU$`DRye7g8L|tZ zpEjfb+C53hi6{uQV+PGfmYNmYK&cfMz2Hn@A#As71>D9s->gk`+WGpOc2;8bao>Iw z+|m*+q}t6T$4O})h=stm(t^*S)}vJOojv*?LbHPePzF;5I;L%%b*y%a&;$ig1fR%r z&(EdrJEy-Frq5agd~+-oM}-f|I^f1|NcM`aXW8ji6?K547g`8XK4#|3K%L?MWfbCz zu0Te^JT~LavfwTq1(Ui=feqFWFM%nOSdLj|`ofd%rjvvjgu(Vy^JZUHZQ6_h6WNlg9F`pn0bGzs>?3HLw0ZOK&|M5DU zPKimPl{Zeo*d(cX7TUPF^a~>+90YH4G8YBWFps2b{&?jK$gEYWx3(D1 z!<21adU``7ytCf#r&HikiojIc~8C+D%CNYW3!UMh+0Xdsi zJa%p$1_QS`eLF%c*M|;d-cycTNT3ng2n@+=H5Bb2YKy3*W@TT9jMnMqPRxN}#5li# ze0*p1fWUan)K^A~Y4FG;5kt>L0VD19O>3u&F_-A{u@MHIcSe0TnJmI^0V)0=rO?PJ0vAVOUPhak5s4~M34*5kF z25O02RuL8fQ>{_BoGq=8f#?NIsMkGNodk7Ylh7DoD8 zzPfI@YFNx}*sLL!U@enFT-YvoYpfdnBm?&Bf@OHevw%+U zNRBWjHA7s0U^svMzgEe2yb+DSJl{eE#<^>v`hffK8eg-Ib!p$35ZH= z5}7G;Zk%*q^70w$Uk`XiORbbdlm;NByg~_?BxhNeLBCc$A7><$B}~vTOe5~&dmARs zotTzJbPr_fT)?GJloLIi(i>qk;>rz=9}hSpoIKo}ii>mnOkQ42-`w&=W1Po!xvcF- zEnhzAm-46a){EHM_yRk8D~DsL$RUfV1i!Yw-s%fDz8_C7(k|$ygu(YpZpJvgCa5gz z5rLK^>vQvTkX<$?3u_0KNH*~diAHfFDBFo!mU)+qkEVP3!7wP3Uf{|L*1y4G*7)n! zqpZcO4g-UdfaDhx0NmOOot^!(ktSw_&U!;}Nr}%A5Eb1#&YUEYt0*XFT+&5E=|j=< z9|0W|t=$~l^XX$>=y>)o!GlGDE;{5K{rqWO_{J-W&Yzw!e;C)M$@9{JN@+AeU~GqY z5Kiw*B<7HqHp9|Xm#W1QE}fP?(CUxm4>Si|42@W%F=%{!XE;1D$fP_A?m$ZdjhZhO z$MvEw3*)8HHSKT#$bZ+I%5UrFk#v%-aEB0KAZqEQbl_q|krJE>MX7oAwZ0-PRqgo|BCn>&`IF=Y?=7?)5<=Q#D7yDqGNhr5l|ces8J$>Q}~C`goaq;?B(t0HPdZ@otlM-AqfX#@VUglq#y zWsHU;X<;Tgvt)_3&m3ev^ZX7iX$`k*O%m?D+_2dep;STdlq9yCR!B#D=dR@7LJ z85N`5m3X>xbXYH-LD6v6GPDl}URyDKQhVzb^W8M3^|hoU-b4nq-D5+^lon2;PL zp(ocvSOQQmHb;Zou95p}Tj@NO8%~3BV^2n9QToa)l4ofo^B7W2=o7O2Zy7hzS9+Qa zUv#>;B0uVSJW_+F zhC<5xXSd1N+X}5uO%?u&Sz?xr+3NE3!%pTXIOg(K;@F{1e<)9X;eFV@x8p{La*u76dWsCAC0 z;3<~x07XE$zic`7(5?15A?1C^k-R-y@)9btnLDSgvH^s3d$6>z1M4mtq?T|Iz2YM3 zA?o4=EdIQF9Ci+?4{lBwn@bE6?KU%Y0AxOc_BM={1iR09FGv=mecTfslJU`zg93YT zOo1Jo@g$P+4GQO+;4Q?&^kJcoTaNzub94*cZc~hIGLFQb;6R~&lI|MOw~CDqzYY(N zjCe>+aKWO9$K$o$5FXMp@zCQ4CIsQ>3o`==r}2dIkaDmk(QT?&E&SMTv9|S&6XJknCMcy%W2@rdP%wEgdul!cz zeevkyGTT7sO3FwDl~dss9`+PIA%681n@s6mWE&6(nC5c8(lsyV9gs(PP7hc92rczs z1*EYX;^fJiOiBZui#@5-C{m?XGQ-G^>`gnqI*TpO>_G@HJQ>KO2~5KWF-$y0DAG#q zt@IR34uMfZFui753z0sPh|B0G^vM_P~}qobEq zrQ0l5Oo}5#*R0Y-wylJR92l8TH7-l~!I80%rumsuY;$h{jKzA1WRep%|$Mtgz z>Xr+=pZTauYs&7%qXV9JSn}5Q%GN$Inb@Zcg!Jn~;z5y>%z8 z^3vmGU7;TFwL<%I6im0bLCFC%Q-^5POQUw?oOW(4%3o!?IS^&_RtF+&ldlJfLJ~Uf zM+45QzIfJS^;%d8uD;1{8XM`_dH&`30P?~}5KCuNoE&~*P6xuc7wzHzhfi8dI^1I1 zK?i^(IYS9uox^YP70QEYqMHOIy;UmhPlW)g916w1eH_QvJjhlsxs zzRRIMb@u&1a;aLGnikCh(OuI)>sTNZU)6T+O%J?}F;*Owza|+_T<_`~#Wq-@lQQe; zoozSdrLkLV(vK&*9zm(eQ8rS$3sVd2QGM&{l&w>T>}7wI?C(l~^;=Qa)VPBkGn3IpP+HR#54sm{HY` z+mRkD9%1=qq|fB0SeqliDuv(YXIAV~ZgKgK%|}d^D44=pDbsI+P4mHNj^!aETG1E; z%18w+gU}@LiOGOh`t`J+uUxQjskjx;D#*6=jSCkq50sTIXTH*TAUTuoOfr{&8gQp5 z(IZ+dDQS+uxbwB$YU{MpYSgV6Js%ppFk+MQ@*7}oqcGrMU7Tw&lSwJMSnWmIIA)e^ zM6u4dyCpc1LsKr^Z`u`$#G4rQPG{dIe`MWotu39|N|QZdx{AG7JZ#+T$Dj;p*7UX{56pUxSdX5*+lmX{xiD172Y)8r^qOtsfs`JakDoOQx94|Zfum+8Ls zezZtV@&Kz_v2H}f%*thGFWQJGGO015Xk}l@lu>S0J&{A?_VALZ`AGj98-GQO?`Ion zey1g>LZ#y|HU7rnV|vAv3w8~GK4I%wfbk`UB}`S4+3I45lSh*7q z+hO`l8Q2kJcgc&M^(|;weL5bf!FXvPPq_skm5O+LD_)Dkv9d#P0VRZg1LnA0ds|x@ z9@udrnhD%^KuibLb#T>`9o55XyXu1r3*6Q%0o~}MTRq8ti@^1h*ru{v4Dn@&i)wLO z{w41mvtC!Fhm;x_C*nwI(|N*U>hvW_IEolaZFrT!HA2U&7A(LOnqvi2eC;=E(YKM^1`El#k zQ}QEbC`U9$-j_)}w5QbIh2(D4+Jr@t1`hn$ssHzl@?M0Sl7Qxy%a@DVJVYcuZt+M* zTgMhni6_ZJ)FzV0xF>J;a#d{z1%Moi#u59?PRq~TzJGU00Y8ZnP-B1t17 zR+L{Za&t*>4R9ORsqnewx*$Ff1j%AY>`r=>#l14Jah6z<{Y3dmuGV3S_LkZwNdFL4 zgH)oe?3}!rpC6S)$#jo=`r1deGnOa~Z%=e`N^B385_1APJ3fuNIMJ8rg!Roe5xQJDC_U?_s{tY_J-Nuwi)+f zWY`BH3AvFA+bwfZXCvY)F-@=*oP4jXFR69SX!cT+vC}QbE^8!5_)9F^g)w0jJz=Z- zj9E~}LB=d`lqDe%*8d7mP6ZWuc1||eUZutZKJf0wtU>8^+)9T=@YB7`DX_^3FP)i+ z-l}ZOlBq&7M@<==uP0j=kQyv*To%6Pj9eXS-qE8CZ7~IF59R2j!o&fVtm}T)n)zyOF+NOMiR^UwBUR5fNa=fSkCVa9152N(|@>YDi4> zO%JI&l0c6qkRajwR%$ zO>Wq5=AjE(0Ms-6Kt3n-O}y}A4gOiWEJ6fSvzK+T!b$J6YU+fqO93Djd_VvMQB)SN#!#r_D+d_kI&~iIvSZzS(4M_ivYX2bq40%5HH_M* z$^tksg4Srrsj8}+r(w65Ms@aBOk-Q2Zcf*zcyvzRM4MRH#VQd_I0ORy@W$NX!*e$t z0v3rCeE9YlhRre!e~<-Idp>cWJ{Hro9peUl!p4jv$vgDAsPKfCX;7=1yl zVD}F<8`K3jl<0sMOc_Wlt(rF{w;X`k) zw9awDr~6u`W$5Pfn!R+azh&bYS84v0w}D z2dB>*Lf_-4s)9MGaRN8iK=~Q5i-NDXC$tjK?G_&6p5gi(t6M!~9vq3pNGo2^m%7E? z>R~VSM}-qMjC$2P@HQ!V(6)!=L`dX!M$6Ch;}dq}`uZ|%M!hK|!({mL?*qB+E}bdi z2o%QKl~6Wb!?$t?jpGD+s%ZDfJc>-pKeI__E~mGcjsvS!7Y zusJ3)F4{W)=5srbLX5AK{q_nHnrrs;8QkXe^_70lKB#Ib&#-wSRLkR?ylTBoRU3f< z>157=O}yQ)t+ZSJghcUYG!J_kE8*RpAE}H2p%*%;JcBuLsRFkF{z1=w6aoc*p%r%r z2~2&v#X&v7qc#&8uiKzycKF>vbrF;+Rr+85ANEn+GiKgDpXB0|8&bDimk2NgQpNxn ze+{HkULf-<_n7Ne(RYR1SE3so6@q`V?lR(FK?xt_cBx0HJUI&wlgc!1SUaIVy9165W~)bEVdWK?t&E>anro9=REA^l2S{WD}o3I-yMc) zHONyJ~x~)-!6B6-+T3?r`y=Z8V zO!akq*TxVy`3(ue*5q20roz;H@kvO+I>w7{OMSbH3d~_IE!AtI^LSQqFvJ4Fa>~ws zOhb@g;DiViL=ZM;Cg{79Q>AfzaNnr%J(?J}els|}5TWs2c#c!wp<}+N)i_mc5wZ7W zemAhVwjT7ER#jTZI`nqNuM6Z`ZRtLRzY~Bz(+$xG;BXs#^j`+y`4DGI214ERq58vL z3MK1bq-Q<%Noag7-KE5Z^8Qv1UNPj8x-bbMdy|$ohJ$T}bI>`+59*tyv-HtI;PvcI zo|H+!6L5#jX?qG?N~|F25cWDvxT>YndE_OD#dU_~)dm2+`bXvj&Hq-`fuRDm3+B=R zYXWOLZz&qidpsRa@kdJ6rJ;C3PHHnP%c>iy@9_{QpEUqGU2?+IsT<#j` zWPWZHu#qxyaxzb1yEcMbmQ;b((h5=-535UK%USd1ii`NKG-F+nKC~31jRuTxdElq! zfocYDIvNB=U9Vcu=-9|45-b$pGVH3D>%Bu-UOz|o_*Q1(?DprNv9bjF7brsO;7Mik{3{fR zIjt7%It@V#4hzHeobL+%ymqLi)X+54QbM;#AlG{5(X)B%eE)bGzOJ0squW0&_+)V&)k&ZlVcwHls)yDF-7GhRwz{SlA71SeGBHRa#K0Baw`(tc>suBaw4;>+a^8 zyE`uH>D?LzyZSD4ir1++>Pr?$R3{gKHkcZf%5688(jxLY?;7mlzHc#ftUNg=wW9_cFMZljE zbDsz__PRp@cT8%1DH*Z(;yfsZo>_26cjDdiSBqYf{YXrVEem$b+i-;W#F0P&cizO% zpK!&@xt&$|OSqT7p*}I|w}A1)Ov}EhX5s`eaEZ{)j+Yxf)L-k2@t+|J2|508##_3& z!N#qw`E-OWV_Xf@2|(3x@m;c#;6p)5w6Ac@P+@O;9(k#3PTuN~dk;p2^C~m5M$q`n zcuap(cA~Vz<#{E6V7!wZG^fW|(pzO%7JafdOZ-X&%c+Es63hSqUL!oo zoyiE#N#9>D?yfR3EkLnsvow~=`(VoKP~trS=1V3$E-C5F)tp#%Osa^*X0dPC3!RHX zM_t~ojTX`?0`iOI*n&`bxX?+CZmCva=4&l}Q;fxA(Craq{Q}ryRkxQe+Goa>C*2@1 zPKy2YtuRm_^Z*E<&aZ-pNR{oVT}WoI5}prRv|7S=%N^py1zaw|Ad%pJy(^+zUlueI zVwk2+cCQ-$f{KzOyRP=Jh{bjxf^5tLEYx^B>>5N9cu7tIEk+Z9>}4!3iCk@h-qU2X zP+3&RXfPER%PaAAh7A(j2^#CyZFwKZ=7^+l2SZ#n&oRS1XbWI3xcA+g0SYCJwuqw z0lq`Ao}SV699L>VoU*kH+D~c2?VpULl4)!(2N*|mV?75{qY12aHJv=!gz<&?Cryez zBL$AD4emjwM2Hrm!{oMw5TYsQZG$4moADV~ArKBN>X*)(VZKrxm8ycdnP08+k$ovU z%{w*|#qZFcvM7#@Z#veL{Bc8G{rSh0?Wy~%+qLPfK|PLo`5I5}2V%+zg=B<&_{zoG z+xxbS*Y0R~mu@dgewfFq#iV*u=qyTtrb;6+#jV5h5NQkH|5|=uqI+Yzj2>NY2bN+| zI`nor>!afKKV?4&bXr~3xZl;F-)GgTO=}M778E9qdU~I6vmfOp!&O69Tv^`QyJd6r zwuU!pcB145xvW~3WbX(X6cL|PsTNk|tWnHEjvORy1jLMMz-bKKceKX81rj6k=C3;s z&G^iV$q6NS%SRurI6yTzd2uPUsH}YAjI2)G=RN(j#_Yx2Le_!BUR?gEQ~5Yu2LkK$ zs$H5td%U1>SNXN_(p!Hm?71sf4;Z9z*(qK!)%f52$1TXr8%s-|6fkEriA>VG?j}$9 zvQtpJWbNProyDFlZL$@B1;;-3xZU%Bhi>e68_H36S>?2j0Ak@B;)!{tLlRM%2%FBw z`auBC8Ivgpn2$os>qKBYV3LUJnZef>v$3-91?j*3H=fA{k-H^kBBfc07Lyf?`#!dk z+0dv*UEEZC>R@OSr8JmDa98lcwx9A-gh3Sj zPVeG{tq5mo-YMS6?BXV>ie#Ap47xQ7xHPSQA2fbzEiy~0qEPxGWkKaZ_zYE#=I?FR%$ z`X}qka2xh9=8he`O2Zg!>S6}k_RZB{TkkUOvE@H&OK|}lr?Mf8h(Ik~SvfcNDxH>Z zFz|tqX~j*_Y~(%l-@5#^wC$?DrIPl(DCsw6sl2~mtKY|&#{^g9*rTM=E-w3x3XBeL z&D$R6Yov?=pRNn;BM+?e`1rwNT?Rnl`2+5kl8tc#i*K597G11%OOC*4UDHDqD;=6k zHr5L*?Jp-&qRZ%eR;uAfBX9-Argcvy;pJx@^m>V@b@JeJlB#%ROq4E)sCM3S+)ZZh z(Vsvs(E-}a6UbJ? zi)t=*-PZ9{NTKsE!OCsNmDboQGZLu0htOgNbTfdX+Q}&4&m=}8vBXe=XnIucAv-Yc~5wEt#<(A_qRo#V9!r3PQ(T_+p zvDb$fg~Kxb)%*&vb!|;U&7}tCp>S;~S<9`fi_$p`0m5Iqo$}%pN)cPc^YgkcIkeX% z^WiLVfJnG$--9^Gg`n?Y!p+vm-x-%%zfK;QZnOS8jze;IOttTF`ARb4c4HV6{^UM* z%?bRR?$#0HN*;nEb>pN5w>oZFlNOzreHv`^dcxDLwCP@1JD#@Wv3j)Xvlr8etTDh~ zH+qA1FPfNN=bV$U$_{&w&l^1_REHp7O4+=1b4=r+>{F zJz}v137f{^?qY}leL_mwIf;h)#KP2$@ky@pJwsMfjkzVxOw~oop1wSB86Z#E4XT z@RsOP5gsq4QI%Q#rAz&e71cMl|C^R(y%bQy;I z=SraX>8v=nGuK(Qwce=wMqWCe%!=cD?vBcuIAC&p;8EwnXh!KY)$5|VY9g~bYoanc zYopFCEbk`%)_U7iNk+F+dH6k@OPRtu!fW|{B~$mW6rG`^P9mMg|(`OwEA(}UJ(8eEa{%8cMe z%`O7PK5(|??Uy0VT|B4)+wy5mxdFml#Mz~8&TD!I`8A0Vy9 z_LYqv+(tyYkaA?dME-0IVQF zq6on(SOc)SW|R7tuYcQIk^a?H%$GdpFj7aqHr3b^DfUK#a1 z1%xQI+DKBV)IxZTwM^89h-xhu@a^wm+Hf4=b(#WY-J3M zntBML_NYog>eV&+tKxaMLl*~)Q9x2sae`0zr?5OP9ponQ9Z5$f0xfVrUsEr;ZEmLZ zzu3Y9W2TT=H9Pe@c?1a<8hSkmdIs)AmE+0`hl$i@S+5i(+8GNE>~;xS&2k6 z&H+5_A3=)xrPCLtkWR;}m6~bAM3wdqP9%TAHz4izE`}h|E6c!V97&vKp~gD3BR}D| zq)>H7mlts>H9RPj8PD3TEl9gcM4ub4xZqVWCTHxs&b}jAxdIp?eZ+&1i3cr|bE6eJ zNt(*JjbP4uHo}2$*i)qYnsq_zoNa9ui${ZSJP_@f-1>9)PibQ?0?M|6b-x(+1)Y?f zW*)*dZzB(^lAMws+SM-aZ(W6Kt~@AzN$b^?E6^ZY6htkSvC|S{q45O2aUJTNyWuGr z%RE(3ad~f1UNkvN9Gem&2`a(A@g-jV=Jt;wRv&hR94als=IV3Vc`+hRq#?sJ#t86S zRV2}$%8OgA%)m{3f!~o&zJGE8J(=}OEs+NbiN829N#(8n-Yby^$|$iNS!8W!ucpP2 zh@1sXVW7MuRhd+mt_t>)L-!~K4+Os2<%%7S9VZ}2CqF1Ij&~sytX# zm#$Hiq{;({!UaqYDMn3;hhD2bhQhpsaK+vjh3_!~%tE-2YOpH34hR`f@__ApPq7XR z6fA=70*d{S?l8&Uu&>Iw0?@tlh%6j+?umfI=!E>h!V0uVbN&)Fz23yK*~(I-)#@mv zhx7G~E2PjyyG+L)KSpRHeo7bg^1U$+^^}&D0vrpJw4o4iDNiEJElS7|{c#Wtn*zy$ zH^+50mDecSgrdLqtL*>omLX6;f$9i88pDAxlnMZ(CKMSbj&n1u*@uQ$EbBR0gBN_i za~iADLC8Zzc5udg%(^8Mn6m^kxHlhvlwT@%L+j=^&k8)FB8(p!Cn86|wejcDAqU;U zqr?!T=T`OWv#H>7z$QF4L@jNekHMRviw=Qwu5_My=y5gvw<2x#jIX>(>)h;pU;HRu z4!v#dCsv@do11eI-U8dSM)y7v4}B_g)>g?C(}x2VBCw{Q%=c~lx3{eZ@BI9z)fV)r zId5^Oxu?3(`Fp{XZ>*3Z3_K2^e_eM6zd&IQ@FQW2#Ob+N*I9jO!J?GJd?V6w@6ufM z2J(rQNelv%U*DODS1a4gBJGim|J+X8o`Nu!e3$2^Ij1=2*1ZZY#d&6sq__z0ZtVVZ z%b@`1Vwk_qejRWsHAN!<@&$7W%XUuQIX=*1$>iv>QAgDw>wv?W#}9!x{`}C2k$JN= zCaTH|y)81ceo_0D%K(8}^kLz-mYD0%z9}`;ALHZM>0euyk$Uf6X&&!%s^#-yDBrCf z8c(E+J?KL(`pMv&4DAlE8BjDo3=cWxRLd*^?lAzOuhp#56oxs`%_8+?z2M1E?yRO= zQ@i!sAJm+GC?7C(H2ZVUN(XadwV7^Fw|nXA{04o^3?sonr2X>u?#Yj!@t+x(RoTJ& z6TPNhzMN7k7=bS~_a_Pxq?eExi;EG+OK7L}E$!b%_;Z0ZlUV+=-j-PWd00{RGlh;?}k=%CeTjT3gH8S}klO z-cE{TlvhYs2G32%Ul`E}R@0~Cc;<7H^_E#ihG;W_N+Zn02X1Gb;|^{|d`gISN$vPb6iA3F7=ul4nrMeB6Y z*XQm7VkWpe4VXpfU+eMFaM3VIbb24aSPZAFLbS5=tS(aa?fUf!E=9uP#EzhpbuBPY zQ$oYO7;OpS+ttUSoS^aIlk6G?U3Qcf-(;O&w|~pSomd(FQ2*eZ;`*Cg4Ht~+R_;U7 zG*1wbjFGjFzxOaEddCv@3C?)J?>!L=pYD~CkOjz=7SenIVc z)*kS@Lr_avssNX67ObD=zEWqrym-PZ&h#5;d>goL@yeXy@sc>Kw{M&maZ0mb1Dq7= z{6`er;eHH;iOH33AW#bDI1sRT4|Q>Z>!P*U!U)Xz*6@&^wfdQ-jg6m~)r>vHwx1K5 zRNTV1ZZdGK61l%&K^-sQMq3SCD{x-6wMMlUo5U!}^Zmj<$*ePHX94rG_1O*t>`^JS z0mH<^inR_zOl>sxm`6LmKR7YhThXi3RMB&PllwK#Z)ue{h&rb({Q!uxKDj+GFHFA&Z ze4l{Gq>7VX%s=>geYaciqQHSuR|i%1y&m=(u>|Z?eHwv{KTOxa_W2G~&0f2}jLm%* zObOC9Xt+4r4eny%jmM5f+OPs{yf1`J0nyn(g$@MlHp=4b`?ixdO=}c9>CAOGjc+w6 zKXIuEBgQZ>Id!8!F3N3K0v4%h$g1*YXU0)~8k4uWS8wtDXRScS>lk&cJHrXdZxaa*E0_iv+lS{OF)}dP)V5I@OJP>2nDX zo-+~l_juI0*DOc3Ae~K1WW1WNb{8dL?XhpZgMSCsd;;M7t=eohrFscoVM9kddRA<> z4j_DA^}`RQ{cYf{w?(O1QEZ&*yN*Z1H?2wk-`wgXYdgN!d(4dHe{W=Gps5=uM& zs6F0!cNRdrQoq~f{&Bh)TmuqoOE7yfbaw4920bEo4KRPiPTm)k1NFRe4X;G*ZrTQe zN?$c1TWqgUorX6^!WMtQ*YhxV8~87K$A$rMu#mwxJ~l?O zz78iaDhNkh@=@Di*Caawo@j|?6aYm+*ZilMLlU}{gtskV88Cs}0V(j0gL#x&Xv&e1 z_7lIvR_c`sNHU&qLy8%+cu}=b!lm%&IhqnaCVFS#fUS=zl`Ct>yo4vk6u-(>U!;CX z`L&M0P-kEF5JOLUV)5e6%$A9xs$tc)^R`aO$RP00^a`i@enBS=l`jHG+2!qwpKr36 z_39rYrwrQMtQsmXcLJxux%04r>yAqrqfbnDi~EUbF~ChKf6IV++?TO?nIM~O&1Fiu zAuLZP_NZDiPKs>~!Vd=GI;gac+@dN+$6(;}cwKYSwj*XlT$m930rI*Pqr^r@f}Kcr z^X**{tEvE!Nela;kw3UMBNfPkRf#U~HFq`1uFg_FH~ZEXkPoipFdUIOy)&u5ZW94; zCOIbOR&{W&9kirDMstu9n~WP(V>?NGyCGbU7_L=z!W*>ZeW-*1VuHU9nR+_S&CWS_ z9^4@yQrXnl*Ur9^?vvj9smcmYKq-kZ-jI@VOCAy`-Pzor;FIKC~AnIxkg#JEFRE_du zH#B0&q+aZPUhF6-dB+q%QNXQ_XSDMmyplN_Y;5q}yR-|V~XBWrhISFaFAU8k6$!ku*yc^EJSGK*T z=KmJrv-}|W)j{&|Q29k__J?rgrdiT*(u&d(@*R>&7U2?b7&pUyR-wDvz_&Qyw99Xw zKbNE0@4L&_{_7xztJ>$S{4*m;MhQDpY&H;4L4auz-G8eDr11qq-w*6&e^fA8@^>Br z!b$u0v@3qp9<*DRuxmmcu?6CjG|@3k`KVi=D)YuWFKW~JOaVbnFj(b%KK&4}xuml7 zF64CBx^)%E!*m~Njk3gPT8+5sHpJ|qDdP~aq;(PO9%T5M_-^B_`~<+cm8-v=e?OG8 z*~-cl?h1o^ZZvONyYo0m+b^TgXw@OB-2?`GgGoNA*A^e%{NH5$Z)T`L)kW06IxI=<98b%6lU} zd;iB+CHAF5u!l=cJK>D$!T?2$D0_BP5;hA=VVhZf#%kkFlZ?@=RQAxazhDq`AhEds zgq7{P%O6U_+S`NmGG>G^_TNOB>Eo_1pG_M4=u(X_vqNHs79c<)55!(1c}OC*V*}wO z8{dE%PE)z|3zSu&W$!s?u>Xg-9gr~?|U0uB@mjb^C5Ev3=!e?GFI*zjmb|Q4D zyu~u@3=`&LVB1jIu!OhXiT)16P)2N6vDfmM}z$}e0Zi01L{OR))P zfu4}63BO`^8d`|I>r7G-zM8sey-&v|J?^%A((R=D$5wrax+(Cr*S?+LTU!C?AKFm% zThH_E@opW=^W-w@Hdz;)ORAL#zf~Aa6PkSkl2;ipB!Ak2QaYfg45d#1{WD2wx+u<) zA5zwZN{xUE@R2E}ozxcj?YE|}u?71ENSjIfgV}DJQ@1F~XP8Usa0{iV?=qWQpO2;v zZ%*CsfgO2a=)0Qsufd);lqckn+HkfGu_YUS*8xkbMMbG+PZ-5pIx5W9xDWu(4{*Ae z;MPsxlNSsOfn>me1GePI-i?ZjASVHTm#mzJl7?24ui?0DtQoTo zs!1+h#mj{W!Mq+g-|#}8Zy>e5meHZgrj4= z8?!cubAI>-pzZ=nX>G6<7U{7Tqq%Fdj{ zJ6-jjMV`da96|v>(2xaDnTc#7lvUN*e}?e2EZ#%xDgF@TCuW;Nd)!MzhF#ilBPbjN zUh&S~9u>OfdG`);J-nG1Jyp5fYHt>9{t)nNR%I0Sb;+PHh2|qcnGMo#QJl8w2aXxPeRIhTR9(X3!3R|_iCoR%=rf{e*YNuQ9J2MWPNq6ar z4!pI1Hcme~o3T7?Cn}71MA!X4BthWHg7F$S4~b?XA~449yUJQg`8$lGAYb32RT5)I zYp5d03mRD>Vh_R)3Wq#$U)jJeROYo@y{cnAjje|rbW=m_5v zdRhre4peW9JI6TY%}C1-uZa$T%TOO)MRQaN5+_TXK*8h&?#~4G3<`vF_JKn4B}QuG zWJA+`gV)!p1{Mu(u^pqXhCoacn)1(OF^k+Q143^xvVp zbL#KqOr9Ywh(R))QuiPaAe%G_qZz4~f;t^%wO@@YTXY1Mi1bq`U5>vt73?g58&5gA zGXtii)TcZ5eX>j{;)dPC|}Y;umdv*NnW%@a{bJ%bE9HM1yc^v49`?q&f!})o1m8}dVgcOqEpVx4TXOF@ru2`4y|3%+mhgT=W*RK8 z6(O@ep%JM|2AZRqIayLNy6|@Ka`{9v@5Cqi3d8uB4@&O^R@KgztCSwA@*G zejM6|)v@YSADEAE&J1%pcDX={?om(r#j7lDc9prji1zFK94xnCq5@^uO7aSZC05 zUNoyxd;YU#6dH<5$q{+ee{cxV;hLJs1^_YMsC=+b2Myj7GTY!a-XaVP@^r~n;5w-WnAY*kzmT$khfH&2ouL;on2i6_id@}sdR_6ReKn5@%}+F;L77DhvpWU# zR~PA$Lq(#_o)&Wd<$LE~$tH=!EFUNI+jRfk>=llRTR6cNap8$|?)VBVD91|dUAvex z4XE1lnX>E3xizcj@L_rUw+d)z`dP94nYb?R{>wC-2Wlp;wi=T(-|~XCVfGxN_6vh? z%O@zB3xze{mlYEogz~r)a~g_R!$qCdnJxh~9m-+< zUmHO+y#4ztJ!HJx;|xB;xnC|B?y6|d&&cRFbVA{Cxacs%4@gSJABt?8;h}6>RY)}U zb}k9K%06AjC<<$gIWC|eRg^(GEI}<5tiQ&0=7o96u#nP;%kfs=YF1SYoL;_|fqk%i zcYjn!!PA&59|J*g$S^xB^IAkIuG}MgpS-PX%t$xj)nXn}Snn`HfyZRcbwbgi^)=FD zs6EYAuv}CSJnQ6K_r6wz`$U7Gvh4EHB^h>UCRfN0>oF8QmleUAP=ENiR0;ep?5Ol1bMx<)P ztE$4zlNy*+vINO|PA7Ftq~gOIq0xAyhbD?C3aK`Ca&m7+=AbkI7Y(t#-b~w4x4H>u zZj^{xVV|S9z?36&D-|;2K51ql2!9gKrM(;xDaXF~J}@LE+sg!Tq`(lp4;Ai?l>b_^H}p9?N?P7 zRV(TIQAf_v`BC%S#^2;KEadAi;3bMhZ=9n7j^D%HhYl3gyyy<+^p#}IH+p>p4I>>- zw{&}XL?ScctP8us^h=)3WUiI)AbUe~H~o+&(hV9zDQ<)?dmhg;tZSyNkSKf!btpCc zm31j1>wLBpRv`YAS8^1dobY9?6!C7|e{PfB>sVKWPadRukA#v!b(vRHhXx<1k}NVz zA&n@DOMSSa1CaEZr1Qc9y0`qCHF0z6pl^ZoF$ia4Lg4a`fI&`~0(aoLagn+LQRlq|N5^ zAo?@Ty_40YcT(~JErnoFdR*_*r;T>$0D)ulk34{L2mpz=&?+f^;>O=4ZRfvdPTZ#M zx~)lhvVJ4yn>s?eeeZjjL=Y<9{s&aT4?=5{ZP?qoUOTkK1S_$(jNz z*h0Td6Ql>gJg;ZuO-W6E2>{ur0Ok9R5*P^K&cZ-$X5avZT%h=U!L(!^9B-Jyhlz~s zj9V8rTdqPRthzZZx1Lg6)q<1a1_o5keeHD;K_r_i!DZ5-6g0+b0Q$R*b|>%Z>HMFT zUP}nh?9$2{7&Z-IJ2+%5cq_Hl;YtTzhIJKRG7Qe5N3Q_~%5no`Jsq7tz})-WD7O9m z1A&SYcZZZ4FE5lR#{yqqy*2uG&M%%XD>_(xw_5yI*1|4wb;yuWmVlRmS0?QP++|gB zKYxLG@PAH&(tK)a1R7t+O?NXfhvdf*9}gpO7D`)n|5rxvc=^t{UL!E`&pX(Tml8^17>keUn3>qx z_9L=9pXlpN>w0}2baie1xNG~4aEF#*Qx>e4uAb8tATslC7%o9xQ!$=jE_X*CVQ(cj zt}IhkSE-cMl?pfKZDh11MfN=`+faqx>Zx1Ou+!y=nyU5fY>MsY@k@|BGrB%#I&fMy zf7hQMyJvp?-Xrgd)H@t_M6Yz)-%q=y{(RZqbke$g)YT?gIsND76uQQ)aAI{;TV0Te z@t9P)qS(&4Bf{aTRn|ste}4HEdCt|Ps-evg+l9%YLdZI~68eRYJi;uE+=( zy^}oQq7v`}YQUPoHF>1bgKy<2UAm3$u`IoWwkzme$12f8jI200yT!cXn)Vf@plwr% z-BhJX%=S6ry14`6?As!${;kAcOG{^H#qcJ>TwY;4qze*QhNm77#{DRX9CcvsvmK>v zXHOd}i_?jQ0%(1K`;y*ys0JjN1KW}kq$CXAMaKJE)9GT8$L0*PTpikq$arjiTgC9c z0MXNIIk91iyVMQ8uU zLx2A$raTpYXSZbU+t<*ba!q?oSJJLW2WS#E{5i8%_eRN_EOSx@h0EWSdPq0Yde526 zMsj0FOZ@-%8sBdjQ?B9TMqw}+!xpW2vVoOo$3vn|?*Dyxxe6SAQ39 zr}o=50!rC%N7bOy()6@2%<7C^)zpoujsV|rSO3JAl$Z*CT{W0^43YrJ_Mn~?;Q2Aj zd3Dkz=BEy?I7rBkCljCkJEYP;yF5|ucJ(;9gp94ebyloA9_F{nrbSsP7Au+WbZ)t^ ze9qsp)l0SXl?>D$-RZT}Gb)M87O3hX+x)fy_TH-_BOCf2@VMIzlF*J$*=Zt8L!(BR zTETTx2nyZ7gQhq1?GWmDTs`;EhQ85}V+55CSXm@0=3d%KPU~pyaU2D~hiJ(>hp_C2 zqSERdTekq`t%i}cCBccsRay4VLGDNNIGk-8UXIXnAFZ-=7uLeIlanMi33PpWqwGzZGc^&=nRnea|NaiXT#nC$KguRg@; zFjIWnUqNM&XRbUl%s3GJK&>n3u{D$lGy7*ta5~oM@T^4#>P+7MLU#X4uda)UYWq6k zz3wU|dWDqT;HmmB;tp0I3qB5^%}2CY9sWZ~qv}cWPqOz#awYkt zVfMKTxtqb&36J<(y-k6*{Go|<^2nP?XLx;d4Oo1rBJAW;$YLuQ?P3oWpZMX9ftu~R*EY_5 z>qxKAn}=;AoSJlH)-f#}#G4B4{I$Hh2uEFMx!joWsF~ooB)hs%I&KH;M`>RX{u zppQp9s+yUpG8&cB;`Wa`y;aBL<&N%mu$7#ct}8v{IlaZZ5 z=Zq!ATK!0?TvF(_71yry!WnJoSz3fFUExbel3UtEw-Cd>$K)?;JKtu#>kZqP{YrS_#AOR!cJRfQ$C&JWVVDMyly zLYXAKMK@e#{8`quROGJhxW@|h21{q&-^sT-qBk4wAa}2+LTLUe`D=yE%`~!&m;dQp z^Rse1!g_VVt8}YVd}~=Kb&KS0C0xZ>O05*hZ^(wj(LXfpj?Ltv2gj zo8?Ha&UZ5`5o>v?l+mGht-Qj4$}B;K*S85};;G9chJ`QG=>2rtb9JnpBl?`eIEl08 z=F8#vJ7>(744v9t$Nn5!hks;X6vl6}u0eqaY>4|9XCt>DZ~Z{tULNz&c1aGSL$$ev z65-Dm;A_w05pn{E{A-9!a0?dI)PUjhOP!6*ZEg-q_%@``%^}1Idxd&YNmfpta)EM1 z&RUkbaOAbpSEY9-TX`D!9r>%W4Jryw`9t|r#SViZe<6Rv*rQ|A?vR9|{=&j7ajm`3 z9#wZr`#owb!W-}fozU3pz0hm`9__JPUUN*ob?Iu32|rp z;kgF3`_32QV@_zB`;`4u!hd$xDOa20WWvcA?On%R#~mt3*&W9n#uA)vzN8Pqkp@@8H+}ttZw5(A?hRnQ>%D5kf1xQip0-5#VERy0HuB#4XRgf zb-G*_%N++ublNIM#GVdz$~vmkTjRb=*K(NNEugEZdHhGvZ3=6HEjCLRzdeFE0oX)7 zxkqdEzTys>VMG}2Y&qaOYTX-Em=toaod7orjI7}FYP7j3?FLS4rMtiskCPWEIKdHW zkTR6eV&dsj%fKEjVTzk`^Y7?1WFRaVrU76Cf;a{N8y;#fUq(YJxDqy{6sL(Qzgr|< zTp)2LI~YSUY(&;c()klTBjOkFI^I@rEht}`=}2MBxg?|{J$Jt&7HtMYDna2fN{boQ zP`M?VbKqnur#jT(B?*1#y6e$2szFjX?!3eW28EfE_{ z5Z5feEJ4dm=;L*?TbY`i`5n))QA#!1CwiHc51K$u)Sb^-%!#K(M9x5?C{R{pY?G{9 zI8Ny%ES#_@NnN&NtLCIm^Zw7?Sr#}eyUL#GU%Li(pajnQ?EiJ*rHbr0*CYGnEAue| zWbHU}Hi41@^`6J98-3-YuMD5!(ezb$i}Ge;kinU_E6UXSAt{Z>rnBBLo3|CdTj#P) z>#+3d*L^d`u1QC%+jU)z+jxH7UWLk(m^2EVnVWHB>E@UNxLY1Rlq`Gft}!F=UNfri zNks3P>pkmn2PCm2@}SA3!t**oDuLcZX9^2a$-%@x43$EZhDiO6m_Xzq9#n4qn-$u3 zwrt|f%dPMg*kK41v0d)X^U18T!x8iYdNmW93$@Z1@d$f*-xkI3G13H5CV-D@o?KVa zpOpJ&g7BCCl0`|`k#s4C9-;_@IFM4PRB$Q-SxuYTi}&+2B-&RZr>_BEkOW6iu0HSQT6zh@E+HVE_|mVKdIxxk8`>1o!DGj-sSrnCDQ&I zXOi=DGG0uOBRfl;Fg`o7AH&WekdqSmQ&UOR$NU5#A+Oa3NQXY4Q`HpCe7r)w&$Y$1 z9#KxO2rMM47A#8d%Paw{pLz3Pjy^%6@B;TDR0rTw=z~q2&(;o0mcIVc?FS;mN$jhL zoGYn2JEhaS=%ril>EShyttwvSo-rYb-8%qn$t^8EcVb>;nW95!=uZ`UuXQ+NQ_LD#8ldFQlyV_ z8HXb>1RRuE-_{gBurj>nfll`}UR0XDDRo=S6+Sd5ZX@FnDtDj4vPxo}(%t{AB*>(d z)E=s3(*NbiN^unI%{*&L$8QE%m_qn0VNpTH{VTY6%{GUaZg zuKcylw5TpaOh234XZoLP(=yv!^^_y0E?1bU@>yW%9UfOlfx$jY+qzNL&<0zYOH9myL{1h`)?iN&`dd|p}^n! z7iWqFt?}fCgs5W3CA=oLvS`R4-gv;)OrWhPdkYsRW^eYJf9z13NEw#vp2vP{7nYM9 z@z^+`AT4w1v@^RXAqyE^1G zVw`VIzDvSXlD}vkciQLJQ687Z7k>%5uqox8f!!zyy=j=owihOFIgy-@n4H}nMx$i+ zNr1riQ}Ca9vDMU~rRM_Hb#a>)6=&YvwCPqv(OUE-VECHS0RM1( zorRg7`C$_of#;R$EI$ml@aH&?&=3{}=9!!PONO3bm9Moo%xB_11kiGu5mzo%(E(|W*UN~m%89UW)1r-Q6OpSdONsqpjp2Ot(n^TqzQUf6`KywCiL*z>t6&C{%i zl^o^l9z^GW2ADjOt;6+-B{T(sGCl4f9rw~S+mk;$^ z{DUY6{rJd1(1Yq-c<;e!@mgz;u;U~(pzH-z+=z%j16r!JPW}TrHQZXizX1Y6<^?BO z>fEHteIFEep{Lq@NJZn`0j*X}C-YA_sZz!L7^r+oC9Dz@*r6B#%+y0JUf{XM+K%O5 z%i3qnkSH@DwvS;Aj9W0tm<|xay8t7gsAFAfq1ziNn1Nst8}HI`b4nqlDr&X`5))(f z2xedul)Z1uE9MQZ@9iBK85=uoc&NO%c>jSQwHz`$bH)`l)%uP=gGf}ueTlDLjo?s$ z$T}5ud;K1)P$#w5?b-M*wYsf7Jq>*bN=t96o0S<2VG8A`>R3+Zx-H=ZzDv3TI}~_K zKtLVAwuzKs9gFZR1mcOv5vZ!nbzL3Lx~ZL2ELrwDN$p|S%de~@7J19UTnUIAz$3Xb zBA{fs!4ZjJMc%bOP?dhKKW@dKc3pQ`#P7^m*Q^50?~bvs@PM~rDTwCYGo3SZGSKnk z?+^E_RQ~`_rlfhpY%0L9PhA9Y0^}0ZSl-pTiU5kN?3J{ed?992iu_-l6d{b!&^W!t97dh zt7nGy_wxIp0OCNv9gF-c`XYb@lTt1dK~s=an=7sdI8z6JnXxl+3Q#O@-IZ2egk}Z0 z0NvAKnfBV9U1WS~unHP@bWsc3!=yc;6FTAu1aU(z(Z1hH`ZnY_K+X}&rnLV!+k=fM zuj4ibZPja!&x;?05_)@ycKx-r#X}Mc>+MGqt@D(qX?TwE6ZjpAfQr9ybd8y6PZFl%4DfeL*&Dg(7b!f@w@i zj2)gy4>kF`dEl4hKLCM*hk<;r)>UOKhti_VXkzQIEM2{_TZJ zSRGrEJGS)UgfvCVXd%c#L9NT*Y8S5)TFE?oI%csOp`rtcAC`KWJiqwjRGUIa5yKXTRWOv{SP zW~}#b%gqQ$4{p!(NZ1vb%^hjkaaCt$>W$?o(}$)MX&&`08eyybb!p7YG%R6zo*-_% zStPKyoB2rXYf2eo)Xqu>0XRU3bTL7ad5`M*r8uKfQO+qS=MBMea{fHE!s)9gRK)+3 zGEr4UzVlRwsD~847orT*s|ud!(keteAq12X;-#2i@|3Fuxm}VlUf-fCJ;$r{s!4na zUcM4f{b6{cyC;|9iA2y;QxZ}&f_wc(a05#XI2<80k7E^_AxkZi3@j^aVRxL^>^7Ob_S6Y5u&tBC9%x@o1b>UV_z88v6zBou;Epp^(tqoxe1)JWq zLX6^&05_3NIkO?P_-9EVGV6l`X-`5QxvUGiDtpMPA-yKLM%)l{sKHaApYP%5ZFJKr zR>ta)V`zM}lFFitCJ;qEqpd{*mMenOLQ0?}Q6evK!eo)(=gmy#4Aj$-=1%U@W5BBMycfgJo z<+z#TBC6zRsx;upeL|I~S2LO4tnTCPTW>U3X1UBFiyi*b(lapwM1ODEl)b=m!Cgax zs)TUQyg_+vu%c_pH&Y-?uFYz}stxr(**^XGbNVI!@#-+!DRmLGLAoH_IsJ$&UV9oN zc=#`&-lj}j7GUBqFRhj+iQGTJs9DV^hS-~73XFG2d*ZER&16FeF|U=j+1>c<+K}2u z@Qh@I5^9OOJeK2t@fz}^Qm^YU@G50lL$OYCNhp3UmL))Y2Dz9MFs%#?Dv?0Jg6 zV$n;z&Aa&yk);Mi$il9-nupzPd` zE|_1o6$aDR|F39^B74{v`DgM++YxH6-RBhHc@PHS!WFHDJ0Vz%JBr2|gZvgl3P`Au zDrfd`Es*{@GD$nKf$(JG`c#tFSn9+j5?tM87gVhG2bG)0no@J1-);F2$1UzJERG$^ z!aG&4y;ZW?-}$i+#C9!vg{PA}m2OW7If4M4@@s$}5mm11m5`mP?&6aY9t7@-65;LE02$&Il8gBz;kB!3emQ*ocX3=7?L3q^K^<&Wvva# zUN?1o&rq%0|9-~Q#t=VNTzFlgZ$^f1XC|I^HBYD3 zZ|f{GmD{RpOjP}!*2A^j8HP@71^HEAdZ%1e7tT#@_oYT_{jk zoYC=^^mrvQin?FQ<(`=5GG{>kMZlkz$!CV7NNT&wbm>j)`wods5$ZPfMozvB+hbn3 z$_4P*vb^oB@?(+J>#Tn*O5jA)U&jS5EAgRBQEY)vkpl?AWaR*0b(6cNAG|xM;nt>A z{bKECm@DWJeNT{G=H|2U?!oXA4%&&swIR$Ie`08u3B~;4AJYaBj>ma2FZLvTEi?nZ zt&lAOf%g)qqT3vOmf#tDkbYdp&o6E1+KA7wzyu&(gd{Qpp3RivH6z^TzQ9}$flyq6 zYgn_i4vfEaculM+#+4LLYzDw7UielyW-I#?baRbryb;>S%auyJsS~XD3||t4~R3@K@<}WEJcd zjW53+n)c0Z-w?3!@hQ;xFr@qIP$O6}Klwt(hO-f=DT_4=G?taDB ziL0FtwWGmVSeAtY#6csIUoe6elBkN7YK0{o7b8l^^Eh9nyqRV$=kLVG;VsUJUdArq z)+Y*#WOc#*?BavacnB;#a{um}vLlgYv6Hr?f$}OrTFuJcg~bzFQz~l=q4l-I?6iRN z=txez1Q%4YvL*RNorE2g7WsCJL4xMUV~SGWS(G+_;s9jp%)6^u+_C|s02>sC4g&o2 z%I|?6ij7Am2mcvk1Bg81^lzS*kS5}6^LKTOy+2GyT9mVtZk&y)O({e#^HrR2*0MXl z8}__A>JJ4CkL-_(?hL%f_GccAx3dwOxZNoM%F*4Ts-LBd|GBq$4tIQBeq`Tl1Fse) z$-Y42ook7pXevXu7dHH!|z2d*cX8Ip# z{kDk+QwQJGz|@gMRJxTHo|TnN72+7l0D(^>NgMu;YJ1l~a zd+L1`ge=mW+&!(obC2F`jEOzRx=%?v_9TC*?$U7b?ZPK%CTolz+&8Y-`n^Xk?)I?~ z=KYPj58d|7bo2leFzOp}1-0l6CmpT)Vq7_cs&apk+wKi)XKGK}+AVSn-2Rem@dINL z#q5j2H)&&SE7Ktrt3;Pw)%1zZVKF_?q&0DYi);pejt{L4Z139!)uW>&5tWg&8q$&d zYQzag_heKG!Vh)=FQfGN3H690_Uw-zsl86#zSUmA40w~A>_VB_ic2YEP&jVFGdTLc!J;94=7^~+UF+< zNCIV!sC4bz6>ob|mVG2|MHFKDu|Ju^*%g7ytnQ;hp$~Z#vu4}=nz2JK&Yzrn-PW^p zH+tlfj~$O1lh9a4wsxVi)&APsEmuCjxvgJ*nQPCZl*sXqh?JD>zp8fba>$!$f+iua zDk*`p2pw`s_3YAOK;`VJmL*L!(4BLWAx@jU>pj&oXv8I8fgM#d2C|Ni^?6o&433TD zaEK2G(`zg?uGZD9id`#v6ZZ7RMb4L8z!TJ7+0z8d)&qHN+mtRU9Z`CfO;5A))xZDg z5Jc}0?%gNsRF(fzT%s_TS5+r9`;@*qnIqw7&V@l0CCWuwx5}I~Vzttos}wd(F8f|_ z=hf}gw%S2n@nfyOw5crG$6I zp%;9$_}WhPcK~EzdnHly31gpm*wJT^{Zg}@pq#})IePD)ShWX2PM&-<`Pq@P5rmcNLB753es^X2f~1W|_^o1I&Auz<&NSHfmi1H{v*L*{8t1yQ(X;9&T25C| zsAdqu9a^S%sgey+x6K}}eIAnt%=gsI9;-#y+M;z{!1t|v+YOnluowS5*1R+1u|q-Z zY(re*qbEfU&Z#NaE{kF=E&9jzM?(Cx?wr_!^6p4Md|E|^d5p`g(|Peo=iEB~4ErRF zh7%`>ScUd>AIUQ&yLs~hR#8eXxw-$ENnYvG#oGz$Cp22`|5;lZeLnoelWrEDoY?Ec z(XHkg#iMrUtNv7PXIFaLyts14F>4KdP-E~eX8OgQ>Gl%) zOhDwfUV|;&&^PdKYJ_j8vAdjd&7|=9MB=uz3vh5tbn=1119BAlk5zrjBxh|(bdW(% zgS5kTt=-EE9B30N*|O!$n=SXX{aVm=CdFh(t7?2Sw@}6oIiU0VvEDyjU4ME7cN-Yn z?gAhY0DuS@cliIKOq<~k2bjRxdd(nuz=i1^xS-IfA=UUU1uG{kdYoc7`|b#Xrw=OM zt|W`z>W0p0&W0?4wKwWwL*|76731rYZ=NsO_g%q7tY|A9x)Qe|P)@2D$T|%l(#JfX zMB-BrUsE&?I}Xm)Oh+HAu9@BMv+P!1{UJxQsW_L2%A6&z_W~WQXK`JycUZaH!W$S8 zTzU&#h(ecFu=@;$&b!xo{p?gz`F5c6Y}3l{@X8Q{hE}*MBl?Qrp`5C-G8-wq!WLcaLM{2QQ?{dvP@$dI>&A3HC%GgKa ztTc_@6Pv%q*5q>Gt1sfz4Kot5m6GO^s4?rjQ(CK~6i zdwsMs1Mz*Gz4wgQ^`ae?U{VKF1Lt|CtO#jtqE;LlZe@7ico^8PsAKnrVR7J4wd7P6D5A~O2YX{c0+BVIFD-`b~(KTMT)m)-DY;4N7F!3bYEvH=O zw8lx8O++`GPZry{(&MdiRr(Cd6gpAbgPSotJJJa)tC;IL7~y*Bulimk@o|v6LcUr{ zicv)C=*D{m(wCNa$8TjNv?_26*A5mpe6=lfJYL;+*rU*5RQ~NMZVZ*>ea_pNZ_vui zp4TYz-2v~kvV*4t*Vd0agHj&rli=;pMSiD$>gx*yz$ZS@6+m89wm$!o-B&dWfWRd) zBUp(w^adi|w&%FD=xuj@46e86BP{5DEU`oNIO&#!omY;}Pd&uD;)WR9NcS5z>*GDn zw#CdEIxEo);gg;yPUWmT&BAUXT|3#V;Y11w3M+?AeFU{xVAkgs2kg)2)5z)!Pu0FclNz#B-?$EVx zRIcV37GXCe?rjqKeH@89VZ*=wZEG&XG}9j3=QpbHwgb3Jblr=TLi>CC5Z=!p^Pag{ zJ)@C-`z!cKp%?n5;pCV1cl7<~lW$I`F0YVM@gi%kPc>+=ycJ=&y+f5tkT4rhuZsO2 zP^%<_FS~nj%XM4964t<9X6s)fE|7QRc_i#ODI#xJh&waDG+HO*@{^)RCZ4SHZ`tfM z8=&%M$gBxl3p|iOUUic2NB0~0l+0H!Ij%(Fu`Z}fizb5rLM1#qf zAN<)s3GuptNw~=3G(7BVoI@h*V86&V=lrF?-ZvJ|iz@iPDW%5_Z0mX&NDg0$dQFsz0rFIT#po}Z_E^|Zy){2{g*c?4<954(@xJKZV&hT28|^%(^pbnZIM$^O~b&S73B9a06;F7-`6OMF4A)GeU>Yu5D5g*Vf-5?5YJ1dp zePd7h?(6*{Rv@AV`yI@sDV;hD&+cZRo~S6pz4B2W>hK^O^v8hSDyhm_!_~E)lC0r= z#4TWG_`oqKI=_g+1%}d@oEW#lZVx~$$j;q?+9y6^6DYEu@$b(*ET*ZkkyS8`E>WNE zuYc~_FN~yfRVub?qTZ2GF(xKEdz?Kyq#g-T0i_nTkYvM!QWY2_q?H||u~M%Iz@)v! z;-^MHA`*$t_7w<*Gp=CAKV9D zzVQDa3?B2({|te`TO+C0$IRgnyjljg?%FTFgb+DcO-7xl+lPA+;KAHC^8OwI$eEC_ zoZ6}6^v~iOw=0STXoj=H!~b(cW+5Rj*Tvd-#@P#d+_?16J@xKqFg%GB%&8}^@X zR`WtFMQJ$6w>hlP$ud00$Wwk!2}|3l#BkFmhr@!PhX;TvkrmdQ)^}r9M&I^hryi)D zOFzO|K}rzW#=50&H`KSh^I{;;X@~gs%S%ksU|q-SXUUFmBy1^%ar_IpqQSA!jaIQj zAErZ(Dr4_}{7bKCa(aIuku&JphqfHHvwSe)-$t{F4Pf*KTAM-ynNePz_IiCHA=Rl( zkFNM~A`8D;-WgJ|j2iEez)e5x$M6q^xF8d~A2*il3*iZeWK3inNGn*=>GxD{ox8U6 zmmfQwjNiLgwa?GnGmnOAK5F`>S6!f6_XPp^(SnyzRDSpeH#xOMojjXz1(lI$@uwi6p;$ww{h(GIasiWY zPNqh$6O~Kvd^tH$Q0JKT8e(BB{eB806#|h*7H(LOfIm86E^q;6E*~BO3n9X;L*ZtK z0EFL!S`Q@o-0y(;z84DW;nv-rT-b?fwzR8_a(2>Un=$(2z(zC+3ME1y5C|W+LJeyo zy>hZF9VDmpB<#ukT!}YJm8~`2bNBOZU&IW)(JS@!v7;4swY{exitI@gyIAUmMv+dfhbcfG*UTOs)P+I(p#t@!OC)kW`bXDpV+m32 zQe6$9zg=Zq6+<8pcMx9c%DT+}@R6RcS2o_NeM~}p`RLNInW(ciG4q{L3=Oo=aBe-4 zhYTGIVi1%aK0s>*v;G!Dwo=#E#*9J?z&vE@7DUWXOP%N5XL?HOGKFn#1;5>TO>PB6 z=Y2&>N5EH<oBbrabh`Y z3qxPPeo*Rf*7fjVt(nSzz%lTYK4RCYijmXYY1Vdz|C=^58FgO>oXI<8Y90f)FEJ;1 zuo*eGL^zva(I5q_x^62LE?U6y7-n(*xjw;K4$Q;zRFIk$&Y#Y#1od+^r|Rj;8V%R( zAMK!bqgD(btUxLF!RiQs_TYCHF{ly#yR%@@XzvLFrhHm=vXG0ahWAyo|7r8L4<2Ez ze|z{{=d%7Hs+SNo3y4_vAg@jLp+s0_Y{_c^VWW_Ex60Z2C$Kp-5+SFwF}5mTn4YdOpVi8d2WxACwK?(wTJ7cuFiuCig@(&A zgEey5VNpsJ3l760&i#KYjuu+MEUHha>Cb5GPYvig`Wn_)6$d?Fr%%7;Fo?knjuhXE z92|_iS3L4g9n3qx%6nV0z8;+X9Mfem#a_2Z=g7|8tiUaM3_89h9Nd=mR-qOdPaZvV zU54|#wa3x+G{%ohMtw0+tXBb0%6Z}wKu@K9YxnV{Tkk7@xnrLZ3`btN%croh%9}h$fRAg3r~5fEUv2F?ew`DbVpE%N4HtN`|X z@7sX+?i$ArIa94w60cVPfgw-I8luvbr0HO2z`8%1FPJ@_r1J_O@NdWYBKMgZ29G*8 zg7`r;0#-}LBc_p9t{=9DpovLw^l^_%g^umqc`VVmgF0SNL3I#*-`(pn%^z zi(q7tnQSt3*xDWcb`3V2HDc2J3z^5Qt+0Vh)Ax4k{O!>ek8cZzfQqim4V`ZjqnQdx z(U7G$5Q^v!FpB8NO^p2c?FoNVf63Sv5>6lX`~{ZOCQI)--3 zMF?UJO4^h4Fp!i>B9LI@M}JzM(bsOF*+^DaN~^NI7L!8ku06qi~X2%kd{V?eTHWTz%dFj>j}T?yx{aH-F$- z!1EKCceWN;HRa}>-su}K6gHFpzSEe^>d=ybAhaqe1GDJtfb)8{M;7W+JOM67IU?ua zLt)M#dW5c{id(*Z#ZW$)lHIgp1CiKTLjR9q%rtBs5W zfodp9m9*8I8?rixaawOBIU*p86`#rCgU{hKX~5E zfLHS{O)aaXH_{p(*qNT9?nrW0s4@z-krW+C>a^}W```%c;^ru~+~&Cz2JH`=4K;On zcWOd(h0Fit9Et`(k+84Uk8c+bhV@)!8#7tqj{3DsT<*%cYiuKP|8vmGf0Pc(ugn`1 zM-vX{V*f8|=Fr4KS}>OKauv=*xoCw%*cx#;;r>_a^PkdsvqK$>9XKFBtjQAq(?b{P z1vHU_w&I-e6^br5qrz32dtawq(GY--UwtDXe0r29F*3MMhmW1F1iG{Q~9EjEcD;1^ddH6j{7%L#klChR8DOCnXZb_w0aTTWQ>@HiwDn zXiP?u3auGPPhGwKgofVdqYaHs6`kSkBHP?m?b0!yP~g=H4_grO9=VMrfBomA;m43jr2Z+86zdY~WEfX1T?JdSS5b7@3(9@(KUv&Ewa!}^=C z@YNGDZC5VIdon8r*r%-S%XE?#V(@^K#Y&xm1eRmh3j`wSy~_nT3&qaEkycKV6N+Hs-MIds`6X-C(Is)myLbJty^QX0>P7dsg$8M5?956AuVueKNd@&q@_h!q62|?-?G{EKJ8TgR<=lmw&r=_zjry990o;ft^oeJW!XNQp~8D2yN6oL*2$1klFP$Ib8h(%=6y$c^E z9SBn+mem4qOQ6W_fJ7dc+W|!Uqze1UnhX5!>KaXmIYQROG)Lhc^JPHsW{!T|yE_A6 zez#XoYYNvxOabWejv!Qq=aqb*JC@yc=qcimvtdXUlD7<&z`5{xu03pdPWlw0Q(pS( z2H$u`hv}~{7^($k-^O?$Ww-;zxGtJGm8QVrTqp_$|0r&6L1|CjK($AN!?Ap4JMQH@8Aa9@G|DGS zJp4edx_k(Wm^5C1aS43oT;+fJhE^3H;_VxsF>s&{C0oWLQ`GO^BkV@$i~8dC&)6ff zs4b>Lq)GAG% zCM>7Si{DTetjkQUS>fL#IPk!rKK9ZN(LMOWTgTRS+&l&<2}2lu&Ljd{n5CXs$yqo5 zn^z=R;gf%{tX`0uapFcLMTOSc*Fn=1R}->PsT4QLd)4sht&fTkWD3zq%%hh)4} zR8UUkko^dEVzQ6B)SQD|9+UZIf7 zZ%2H-o#7)_Duaqe{pm=d2+@aDcwKEI@7mRmkxNQV&kr<4EvuIpZ&B+*8=b1Q+A`6{ z?Xw2DGjT72RG(eFDe)Z^JT@+BcyGTid_zHArdwk|>N2V0d_f7hdvAZxF|CzLd+`P` zK^0(6t?>*SMmW2|JEzqrAij$^5(E;)fIwnW!(Hx_qsq6@aV%EaZx^3DD)5r}_-wrq zUXg+bjRt zs}9U9vKC{UYi=(3%kOp>mLxwqi|>i1f$!Xx-^IZGV#j;m6U||I1Henb!|L9nWSK{6 zc~;i8yupR1TKTWdr8>9FCt8jbb7z|_0=ofETo*4Z-)Z|UgrzlV%04Kejtf14|32~v z%XS_L+w^xmH(Y}>z8~4(--vnf`hF?c$#EG@O928G0&}Tze)2hgJfheOYYm*>w|is( zhNj=vZ~4QXJD;`3TIh|0umt8o#8Qbgr*?9~txe5=meI2L63T#{my0IyUp}>PJYifW z5ZzK1^IvhFzs+wAKv*JBT~t-xFnPb|zIGYlcC-t3*6RJGbjn@jRn?ak?P=c&hddQS z)8g@Iu6R9TF?KgOiYR9J3hYhlYxCNKI+G{bstUVF>WU1N2KQimdCmwqMD4t$@imfe zj__3uI=VwEFFrX{$3`e4Wl5BLl}jPI+TqZWlWZ`kq%$_L*>1;7N0((PHcn*?FUyP? z?bMFf#j0v*)tcjX`n0X{W%b23a(vN(kl=)r_nW*Tlp6uNXgF)(=TFq0c zLvjk%ltSZ4o3d_nhuYSDwJpsfTH{u`f4kbqcKX&G8%(mSLIE3c`KKZ|#g{dn*uy#C z9)LJj2EOXJc&rC#>R)7D%Q};Mcx_h!D4(}}tKSX!P3n1pE2SwT5+%xlwV5Av{i=nX zf_~nwz83q3(TR&HxAdg9#Y+>Tlvs{~ukSqg&(UYA`!@i5U=V=K+SYm!u*OI*l^nFs zX=_=SJu=4@7UbdY`{iy8U;Ec}|5(5NM^{$TxsHyrfmvNIOFT;MRAg=zow&GJv+d^f zN=-IE;OBDPjhq|vPWxhNzVFjS9XPdoAkD%jgERm(*b+=Y{vkc#Nu?AQb$@#5Z4R2s zkY2spNmV+O5P<2JWdDuB-HZ}p4nJWsXaX;gu*7NZdBr=}*KP(;x{3JbZy?z3kdr8j z{(-f3BUf<-_~!{pVJD6ygusKR@**+z#_9 zUupR8uaaG&#iBsBkip|rei7U`8GFp^9aXe&t^7^>*;pOdkf8-?`ozgo>6@unIy&#s zKvoo!R@uIQMiy^b`(7xJK9Pg5Ifgw}#EUkT$JQsde_T;h7pswSZdX`o zBSt(hd087`3w@5%ml>7RcLn^BBO^zV(9mOrW?HmyHMOy3adL2Lc{&>mzfYG}-gIUR zvQ(uPmV|mCv`7+D_a;#4$`4*Z79Nbok%`0Y9Sy^dOFK>k@$5R(jS-`_ET71?$G^1j z#hG8oLeZ3y!I zIr!2KKxMG`e%y50jm)j5zrxdGk|6RbETSD?hO(x>^k(_Cb8uRYT*DnIqva{A%}LW! z%?zE2exenF<@3*R@AmFSnk+t(IaEI3HZ91nt3`wm?IQ@KIu4F2GPNIFgW1w-^5Tjr zzliSakOP*e2+4~lXJqpP?xT`+QJ^t(OKNuLq7nQ`U_{~f^uX0Vf+JtzdIy!v3*TE2yxCq+3 zmx2?LZ@vO7E!oLXgADFuhj0Py?`ao@9K$>RJRZX#?8>k$SNF?|r3xP5aU*ScE6enB zWo2B_tEVq_xcR+Q;G}N9c<1B3U&`F5BT65Q(LlpRp!gFOz}T3DZOMUSZxE8V`)k*N z1pVct^9@hQl-|Lh@LZ@r5e~>B@eQk=Zv)hL&FJlozmJ^-vaz?bkE?{3W4|B?9Wl#rhXOZA@F^c##c(~_f3A^44sA8$3F=Yvq)2`RJ&I76~~@H!P<-0mJstYKMk^W z-sKgB0TZBoVR*UQdEOeOoXp@X?j7Q1#^VJ=N6~R*JeikR;1#*8w0Kj3_tfuvYGkcg zlALYL&ie#>9tu!z{eYXNOosb&YI;j2*As}Sbr*4<{#7@5yMvCd+RmfXXPZ>?LQ~cW z43IOF(h6MlNq0h_;<>zwepxd2Xo4-M9|&lgk_ExSSZyl2d&6@uXGa3mru04xOC7_2 zeTxNLP5zdtLmE+qnSt>7%*McATI{_ggapmw$ba4 z)47KnvtHpDgRN8Gd6DmD&VU@!V-#;qkolx`T~Nfvh6ST*^iw;4i!0=K2GrR(yB425 zx1z7lCDO16g5L&2!UyWzO^JT`w>I_7nVv$&xDn16db~&w(;2%dxz5GWS!@?W+l%RL z3d>o2*5&Tx_q9OdM5w!~h?hpmOUgYmi z>Vw5{pBc#t(lo#3iIUn=PL(2~eA%106>GSzBJ4=nWSQ33(9U#p+#cGAG;K6Cc${!w zp!zL!oX6YK? zPhI&O*L7gLVKK|yzjQ0m;&LnK;Ar(MF>(?R5;318I+O4Ld6FyC$%e^z+pvXz{l~9jfQxHf$)q$Ogb2+$5*WC2&13Btc zb|lHGdOF1yW+UPX`?*(dB8OU(XM|dJ_Tb4nu{2yl-EaSin=LoZjtvhQzi(aj{?xA2 z*VWyZZK&l1(=@1>ty>FcK=r+|ygG0RWE?!6kGnY(sWxIc3{F3!r2vugB~K?sq}csb z*>s$l@E7}ykdc*@i7ikw)1dHV851~GR7?paz>g7f2uen=i2HLeyl+Me;22Ebi^j89XnvHWgModvFZwFxteCyK_{Pfc`AnRn$l{Z&4W~^yrjq~P04i4Zpid?a^vu2|4`97BKQtU=SAMAT@hYg!+U8x>1a5l(k z(q}(LUBdg{{}lW_cLmPA9Z(({PJO5ffHP+-XyQbV#q3g zT;LT1k;*N|TQC}{og&qHOz}EtP5mBAdbb~5M<8m&Gg_RNN?QpvQB7oRPq!G@8=J>B z8VMwEe~f5`3lqY{!Q7CL**EZwt*40;t%UYAGeSk~8_lQ|*+?I{(Im zM6Iwe%GQCFR)G>y@jLRz)B3 zs#dSsj8h|R7nSjZdgw`zOOz|qmmt4pks!F_i1;7XUbJ0Cz(oD zbOuVKkK|Bnk6Kha)c7r81k~>!B zER=eoTxlpY+10w!Bfp91QnDKHMfQA@lk!iHeX7{aKbI{xi%wg_XiI~7R5UWI*rr`y z^!fLsU!velyQi>BR}f)mg6~7VNUHx5Cl^>S*vrI`Z<0SPWEZ9&R|YV50^yR%glz0C zj^_?F*>#p(F`47~xliY!W(4pzl_dS-b`I^$h8ZYJC?-nae8$odxYcTT=i}WQ7mjw# zgHPv--!4z-8`0NNptNVs+m^UC1z+DSj!*7;(4E`?{$HGn|LQS+j9Ru$Q0Mt>bebJj zeHFCu_jeXCcIaMY8*LR0P}}X-l=Xj{ULfjIKh&6cNM6Gwm|=tRs{v=kVXMiX@6%dx zLr+l#>wYSMIwgGbo6<<=B7&|ga_(B{^Vooo`bkYEnk}vvDj;g377=`jAcR>i8tPZAUT~)gNk>lRbaFvK3 zWD?)4LaDVe;q?lv3x8skl7JoX=$CQQ5$dnY{d+OuLt=6)#YesFT(Z!;@3W#F*j9AdR6S@TTvC6kCu--xuKO z%(~|<I@d0!?Ze^g<`QT~8HQx3YR;=bu2MQm^$aQ*E}bi|yq7K?87K)e zIOR1`-F(r=sugj$^Ap%yeFiYZEoM{$$&hb1?k`=>>__`<5w)(jrLeMxqql7GaA1fgXZW_ zjvEU2!V#?mf)!f|A`)i0DSej9*3%r)yLVD@COY^44&(BZIhx9)@DVSl!MaX4p8KKq z`fH{%V$bXHe%>x*f>;tBe-NyB%F~m+M<(j^NpfhL1uyMtySiU9cTqyg`L1$AnkFsq z6g_0PLKn?PReWp!6$rgew@b@KNcI;?fa7)yDh+sN-vlFNb@|nwtz2Jv3>5G&e8d+0 zMCAq-v8Y+|q9y(P|LB1B`C^m}GWACf5Ja1!6V(gpsp~!%B}ww!q3$(WywZyIjim!W z92<}wiR&_v5hXwOdws{{;_Mwm=RE(ty!y3{ zO7313dtvL9vSs+|`jZOodR1h8n+I1VWOEFnPHv&PBLo z|3{e!zMSRyk!UU&*;xx-4>t=TA8X}|NUNAA>}1A@a7(gcyTggq!|Xi6)&Ako=o5S2 zUXOQo-+_dk%60*Z#ar~Lti@-T#T;J`U16m?8+_%l+iLiq_V+N3ZgWJrYDjU*$!)(2 z<)_E6eG}h?MP0}LQpqIG<`=jx|K^w2m{etqeH&7+1yp3E+52@f>Ge&c|1`!taDLo< z?Ry`q?!;wX3uJcBLmiO8CU-{@6GP)Jkq67jz-m(rI6PuXlqD)Mo#Yn{ChH^3JoTrG zN{>9^GkZ2n9r(P zVNJskC(vRmgm0vq83Mq~zJPen*TUaG+-9HenJyK%_2mtJdY=h$hfPnamJ?W$iA~csmYBI6DmDi%%vn=XSWpGJ$OI5;gcSJwdPv?1Bd?m)mrlW zJ$qNanNc{sn=d;)ub>`RBE8-p5O^f22~?p-NblrO5jkR>OJA>yzx33)aJQXOhx}y% zAT(BNCoiCnwv#i}>79@jCv4(F$c?~cRDW&gndWeF8Ks&EB9o7GLV`kfQjS*W)b-~v zA{NyEK`xZS&V+yB)1>beuI_yWiYqJKXzKy?}t9UZbjUEgSe|1tF`&$~7NYRvxz?25tbyRbAe27dHI>nK= zhFZv@J7UY@v$A8IIK8!;uFzE#&-hkIK)?Oi_omncEP)ih?^`@WT&zmKMw?T?<#o4U z0E8)}taVbxW+J)BL2Gbl_xbFzAvr)iZ3VB&Fx9X_9~Bil+GY$LJS= zu(5Qq>zQjyj)t^d=5&>>cV)U2e>0aOktkZ67U0 zzaM+qMdXXE-m{SRi^~!+B(O4a@kAOIV1Yw%G8S3NUieQ{ z@`=%UqY^ok@;kyO+gKB^0@B;C*l44)wZBY-*1Qa;46fTrGvSyB$(NFN(RSU!j=aC& zs@kBXkRq>@lPtu5@(S57qR9%?Y;QP_pGFKTOPJJ*b$G#`g0o5Lpng(K7L6wc3jJYE zWA0}1YjK`yIlTiswHaa`F{!pLv7c&OHR$c#KB35I#*r8{HOF<>-pm@HUn(9)gb)Xs z#151Dy*9Tqou2zX*1y)bliHDNv75X?7#8Q}CX<=cF^MlxPJYRL z-p&K{r<)xG@b8_zZd9^98(9sDS-EqmV61Mjgy?!Lw?{N4=>gDN{UaJDAK70tZ2{p5 zlnkJmk6~^j0Q_QM{ws;j60EQ7!~I=!pN;eDmxlL9lSupqM)~O5%<^qqBZ}TU5>iqk z^EYF-dmkjr4syM-(x8IJ>>X(~z%px4wL7VW#aO*`n;mmvcfSd%z?`X+%B-wS231>v z(KrLy%EF1C)|2f*5E z35$#~9)VjnVylbnQv7s3OXUi`B}S%VL!(I9^)G_4>bz0 z;Zt4&XL26;b3-Cs&%rH#+VWH+|IFIZt6OJVs}Xt1WQ|SF3I)v=1O12#J3fXC^gMC0 zmpv6?TBJm5Yhi(*-f+Zo2%wfnq>>3@0h^QXZa=F2ow?#!WWk+S@+?L|NjKAE8<$^| zLkfCH^7vpF7x&a36OtmKKNt5TLcQHU-^bSKx7K|$sy1u`od2T$QkJv0L!HFkrb>?h=_O48fmctYHQl!rtQL>13-$W5(BbyiJ}MoRrs*1IF91XV7YsfBa{aVl2s zx57pJzH2CNk3p4**K0Gw{VaQP^R_d?eA^{SWqYY-VH)tjNX6$lns%fag+BmciwTD; z{eVqUm4Mgr3)34~grHgkOhHM1NIlmK)DJ;NPEBY=^bL5fof%EdN2GAc*tSba|5 zd%Da_mCezJ-OR#}B5eCDOYKr|h*?#syewp!p-?V6K2h15S)NpCOho4^p0%JDK5iEh zx5E`Egfd;y$Z2-YWKQw6dL`Uh+8l`BJ0L5q7U=v+RZic}Zm1hu}UNe`mO z=LptzGSdq5EKUf?`+YG^;{mRZ>MEv&WAW2kl}mE-NCVt17>JK7Wgxm{we_u2<8t}k zhE3`2yO=e>c54;}iy6mEDa~O){1F{NO2EspIQ_)1BZPC>#dQK?im_j?!XC+>TvujUx`O zrP>n6kf(ZfC;SY5DVK1NYw{0LRH(j&?q7GP^!vy~O?pd-yJBaRdj5PM2kMk9%57Lq z8{48QQJxx3-?aAE)fi{#%_G-5f|VtP;dT|evh}ysUl}sn2)6>_4#d`5)A05UZPLX1 z02wc&ab>YE*| z00wzTjq#4xcwee33dNraE!<1rf#}rrLC>Ne*Hz+OPOl;ShcE&{W3yKE(nV^p6KB=` zRMYM@Oo1fB_Fum@?w?s^yJuO8^%W-k>^AFHd7i`>XSn}I49ca z=gHReK08-Pi5@6RFtZAuUM|6SAmr9D@_T~cKyi9ccIdqOV(_+7_q`0!Q~}bIJ)p&& zW{@X%7USX^sK)VIDH$%xZw&JAFK)XGZ*H5^hV7)=SIL`3%j>^td5j9#)xL!K>sfi& z?cYH2ZOjQlvHR&piRSs_6lh@}Fy1D3bWyLXRg>DSOkm@f2&XQ#-T~XVg*Xa+Hzzm> z(gA&X*`GJTi-N~5ukS-Mho#wx7!m1QlKQ3LjFDcuw^Q0VZ0*zsb4BrpU(-i{iRjxZ z4wO`zbg%Kr_q%?k8tX1bhjnJ%E;{f`!2~Od6BuwtlWYrt-E_9gK&;Y|FbP3`P{}?M z?*aFreO^3N5_5SLsoPEJFHiDa>%XbLV$8Z*TJ?HoymC7LVZcg7WTsE-x}QtvjkteE z)emmI$xS`a4?+LBe*!!~@gDlt&DDD1dMDe?TRB)09>_d7wn* z>B%%mKS|5ch9vpQtJwXuLJjOM2Z}vQpox06_V}qN{w1Hf;cu>$RMe=8G?PF*FVnZ< zlGv3(nC%)xH(B;wJMqlj{ebX1v|JYhFlX+7n zbOM7NWBYsG`uS@hqD#v^z^BId-Y#pPr(%W@#^g(|t?qMl-|B&F%?8!`c&j(aaz0d{ zGRmQ$2!<3KgmgVe;%z+tR>_L5{q2jsae_f=KcLhRe{PNxD2qyj1QLQAg#pu3`yOas zD@2DAgAQrzZLUC)(Avl_%KNLYno*aAk#w*|2=AMjyPsokxx--ms^V$9V1_pjI3=1Y z#8SZ|$E_JsT`3M5xPrvD%0an8oi56j=9s90h3n8&sNajoTxSRe2822S-r=;hF%2DM ze8e+Kre}(!T_RZ$(U4rL|I%ZzEV~EFNNeM@N8t6~7*%c>!R!d8lVXBl zVJWn=l4EWf;4AzSakR{LSO?S*SHc4=Xh6ACdK~c8lySDg_f`pkFa*>HU#k^?Mk*9{ za)hMXOej0CYjHfP@rr~g=bzpZWd>K)z(RWS24$;J{WoGXRRr;k!7#8hjdn`O-U8}5 zo6@7Qu$vlPAwxkd&&~X!a5-rWMK9dA?DB9=jmEx5D3{D5oiT{fXLI@`D=Ux#grhuG zD^+!nEA~NcC)v7i@}e#|#_(t9O%4YG-k=tCW>)%JiM~ScnO!i>TNad-?#I#}>v((J!f2=gHwtwVc_EHLQC){JFeq7&ps>W$Ag5{AA z5%-n%)m`Uk9s6B0JIB6kaJrH3z;!O?qLioid$n=1i4lrqDOhOBjy_{)&~}-)5yfq~ zDifYQW_zyMSN{T4L=Pc#ME$CI0va)*OlfjUkgHml<^y$ie%U+w2tv?6msX5G3P$2| z#}ZAU`GSWiS?V@OD{M@e!KF@7;%AG)l_V?oK94RRx+$P-W{4>of3`BKkt$%=Cw)rH zdIYbw;3}9c=gIK<(6$4kYGoOTejN0P^d6Erc!4g3XYGDqwO^ERSQsi+-!=}GN!)X>w*ji{P1H>wZ{UH6 zX{an&UKRFSLBQ>AVwy2F&Q`XK_T!efPgBi&dArxpzkCbg)}*sMQ3d!ynYcWix z_|npYGkjM4H_VCfl1lDfoX0C$VNvA=MKO()qiafz$U5Uzd^r!`sw6gjbZ`=$i^_!5*E*mpvGd zg5%DuZ3wIxm4a&5e0xsqmgD* zYGLt_w3+$h0%!yaVq;0um3t$XEA$yK5Pw|pv!C9zSh@wc?lNT5)5EG6KfIzyluy3k zUv3{ba}*4FG$(pmR^nCj0s#eCNQ4~D zqf!&>E;YJNTW#siz8Z?A8ZLGxgC714l~`@O#>4Wd5=#=oawdMM<77yT(2db7k@4Wp zE%_OM$dm`us47x}?QgqM7)?HZM=$E)8)}u-P|8J5me;Vs-QgJLa01hjt`-GZf4WXYs8)21~d#k7r)eGs%T zoTM@mjdY}?b}Wv#jHbE*Kz`zf{tRkAt>Qc*%XqotdNs+gjp4Eba2n*ly|eRwCt$ys zh~nX>+L&#zD&EyQzPT7a-T4FSO1;b<&IKtjfrbAlppEY|+K)W=f(08x4LSchxPcZ; z&=#FTV)*|ywEy4&Mhf@OGx`^f5+SBVpmLE zI=62U*W>|>NHHU*R5SE{tCw-<<`9FC;fkJ1!6_8;hau))x%lmF$sfp7&pD(kD96H)c$SxIVbZT_~A3 zq=}nfv}2Lwr=d1$v7i?b+##9FLkXQFg^h;+o~eoUixID_yyG_rQYZ@APz*{54#pA0 zKa>pR#RSC`{ME;>CYUt;d;KKSEM)0R4s_P8I^L$4pB(rX9NTKK(#8fN{R*CJBK6fj zg$x42U%7H@19J?CBoA$x)b)Wp621#55p_mM7E4!7(moooafA6ECF-Zt^1qol{;FtA zId&y37DAx8Lw|yrU@Kx3nm!Z4dtT`gHi}vb$}j&kSBP&eGZ2SUb=dNsnEsur&WEKT z)j_QnLZ)5KOXZBcM8xs9Gw{W^CwZ=9$>@IzmDQpcEd(2W&^0pw4EE)QCw7R^@bLL; z`;jKBD-xYQQ2yd6a!O3cQ1R6Y?8$v6opn%hlyAYLdyZByBqP$wt`$?@3G?GqjI-WI zFr(&N%W-LTiVx^1Ho9CEPW9Z5AOL?Gi|-iXg08;`9bHFOX<@)jh53F(ufGo7X8;-H z0l)YvMmC@|H(*Hq)5~Lc+wpVu7B-~+C=Jcxyn+Svys26)m~PyI-+W15v=_={`XO5l zHTRU5<6Q%(;GtU{_)M$_Z@txr^r;MoqLKj!*lxsJ-o*}P>e`FX{w*=TWA)e>mkquq zR>aObeoL>tvlW0b{B)@!*Q#MRNDVE1iwYTY0jEF7nOpwz-CzpVB)}t%DHnxnklM&j z{5nE-m_I0{MuyF@X{w^ZXId;$ZzxX3PofMm&=br2L2ZV2EG&HUL-^jmzMYczD$O`Z z?tN3awcrjqUCwXxK5<+SI?>|?PR!D$t||ghxxLKVr-Z6Dw@24}CgX^Pq}kM_7!5qg z%Z*9SS}A#;Gxrf6Yzc??{fJaAfRlxa)hoqd(HC= z7O1`LmWceuZ0Io0(jzpSr>;rS>W?x`vcp>fVVJl1r4thU;2&FV>(dCwX&XK8S-%w< z9R&H4wYnRLSj%_btvh@R$#$Oo0`rfNf}|CtyFYe$!fDRQ{TCn#B2oP}ys`rt2n8pY zPr*hy=n`c2!FY)-Q6avwsaI|ld#8}B@=2^@?xy>AgA!eO(n7ietiyp6B?7 zzEjdImQZsbH{m6+$_l~!C_p?uVA-?$aetr2!i(>2oJ8*9svS$rL?LjaYe}8@!`*TQ zq#ig1wLj@;6j;-piPNt2DLzE!!*!-C3&;{_h7O&)YC#HO4{G<&N_9zob7B%}yt1NC zn%`Mm`%Yl-g?yhDxiV;rXh^>0f5my?!*A)t)TMO`3`(N+D9}1!YxNnLK)>@{8hpI5 zD`Qq^)g>Q(N6@}yx=%cj9sNvX@vp)=nn6ncK;7JEiZgd^P2j%)6VR%zgBZHuTvAw6 z>wG|E*}P>alWtK8B}_gAdu^xWy(?U(@8_IgZ{Dg_YfH_i| zcEU*ZONGosHYDv&Sy(wA_rub(!|ZW;oHgD9RV~OgubHzEy>?~?K2bePVezxt2%>;P z-?ra7<4n?x&FYaE?cEGI)-)$tD$5+muBu}U?sPHFKe+hV5?aCTUXV`J=9AHC=o-*Q zXUuT@-0>M!)m+!o+T(oHaeB!5lJUF^EcXIqSUNsvI7$4;|X#{w!e5pUJ_ zak1J+C*mxrK*L>l)}}XDmB5!T;U_ev;jCB9B2`6t)Wa`7=7pam>YPepUHy>E1}-i| zx=cTq2|P}#Ey5pcy4D8*2oic4dykynV%zxoUkQ#ZS%}$Wd?mL`_nI;G*TmEF^KJp z_vh{DE5H7`9RZOzAku0+?DJ`Ocwh zS7jB5f%YHF1(sTSKSuTtezZh?ey859@nDV}*wx8We3^(^>c;D^k{15Qf0gLJdBw#% zK4AOfnWngIHTLC=dT)#w{3rZBSpE+*HU0+;Htp>`-fzW8*#W`aU5e&a;9&m+kS-Mo diff --git a/dist/fonts/roboto/Roboto-Black.ttf b/dist/fonts/roboto/Roboto-Black.ttf deleted file mode 100755 index 689fe5cb3c715f2944fec30e43ccb8a2b10625d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171480 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

        ~M8)?dE#I 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 Xk2aT?%S{K<(OhA!BxPw6dg^}wc$YKS diff --git a/dist/fonts/roboto/Roboto-Black.woff b/dist/fonts/roboto/Roboto-Black.woff deleted file mode 100755 index 1fe59bab318f977a05c3c03a074f1803a5a430ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90664 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�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

        eFy{%(FQC2zbDWP9UX{UYG!*wV7$?*8UyzQI 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�_SD^G{wdrrHYdIGDG`C$ZMlG79#yZF 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 diff --git a/dist/fonts/roboto/Roboto-BlackItalic.woff b/dist/fonts/roboto/Roboto-BlackItalic.woff deleted file mode 100755 index 532150fce9cef55e6973a135bb5cce0a229c338b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98296 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

        }h{9G5mW0d>jVCJ6JM5$S%y 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

          n`#BaK^{j71T+CX6*c?aJXa5>a` zJ6!5QawuNkDrvWz-b#f-*Ao0%q}tu12;)QFaCLV#&87trJE43YPmaoMSG0 zMG0$Or4p7Sg)C{qS+|$0-a6bHHLjDQ*&zTtj9~F$BgotRF`|| zYv{v_!J5o#2RvXGUoYBmhhH!L5(Kl6q0XE7&6U7EdgKQ7jVcR2OiQK|+@=hzrm!ByJpKa)XCq>7Q53vkyS$Ox&iIy2TC$|d;*^R%sl>^tbWJF= zm=k#;)1l}XB3)8bl5O|+JH+T^sqjc4%@evA>qe_?vbxDa%p(v}joJ02M`gX$w~|zE zT4U1KZsKB6<=AzE)9KhXdlOj9vwW%M_idl0dsFe))h)*CGAUfm^Cr`w8>N@VU{)!^ z_sjP>zXE=yx=eTYI|SmKU?FJy)dG){`A~>0#%QD*t8=dS*>zjFF|F4(ciWhb(t+fS zb=hk3o8+E@x9>*f^%>Z^^PIz6;lFiY^UI+5CWK*F3J|2=4(;_Ovh3Fvp#J>fxoN0< zPtel)PCs3B(ai-4)VyWui*pwe#H#l0+lgM{+JUEkO%k;ySr~T^MLK3am%&$OFZoJe zqKaW7?>R5D5R;{jU?W#^WMHFYU(VE0{CebXqrx)#3160Fp5czZM_IxOH?|;?GumRF zFiYXqN|>qO^2kS5Hrk4fsj#FuCT$)boUrF8Fb){uUozxC=VqFiS7n@t{*L|8g%ZXVQ8DdwRz^<`-^vNP`#7 zr7_{w2<#Io$sg005t=8=d}9b|a)M-5ynIvm(j5ffNb4tf!`*L_Lw1wHzP{n1+A$^C zaj8$AMNE*Ej3K#=5nBJyoDEH{g!u6WO7O-Mj}F7-{3Ln82>6pzAK`^gKm4OTC4rWX zuH;9v9(}qTUWZ<70>i#dhgNO+jhZU`MAuDTO!DKt#Ivk$+VxGOFMa+PR3`1}O|CBs zf_Wli8dal4+L((D8H0K18!6vSadlctqXGB01t0myUb`vI0l9v)&sGoUr7OrF1INKn zBEkc4zoK_aw{$9b?-8}SX?Q8|NncV|^utVao3h~YYx&4jV6SSSffn?g+-E;!Q4&D8 zXKanaOG@LSc3j=OLzz*J>Ncv|5TqCC@ewGso>|rvU4RRM@8!qD<6c5#XP?=e45yA~ zthrkl1)uV5A%@7bgcnTy99gZnKIiP>JCXi?Cn*51G_HF;rfU!BMnqJ@ut&f8=cm5@ z@{G_A+wCuHvbIdi3Rm<#Ej=#=mCNI&yGmC}Kud{Q0CD1y9MwrL0L?Gu)UvjET+VAC zfFQlxh5V%=2ehS?StFQBaOv~pnXxZY_#r|2Q)wpEJ?wSCPRbb;&p~OB$f~`?PtUXI zPaNBZU`%2!&C;tZx7vf$i~&cpbl5{>As1&_Hj;gHVWhNrzH>5?V;x(ziS{%08P9}R zldmy2ai##GUzWAtxumIE+JqV(A;-t=fyicCXWLr?+X{)Mz{ZiF$nR;&bA`THXX^5g zuM!H}wGuJ5mCi&CdfN;UM{U?LWwwCk2TC~J(~l*|TbXR@;vN!T7H10-o>%Z_7uoqq zuHV~yzo!rHN}Yi-ys@0hxxUKiwmHIxlfNFhZyK@&dryU z!g8%SHrH8icnwU26`0wZOebAJ*$C`a46SGJZ6~F1Bu|rr-?E8D`ywAM^7Ww}B?fEE z+evUQlzvsl{pnQ?v`uX2k~@^C?_?guf9x9+&P{K+&~IQ@bMf-(C2p>8EelxlN451g2@R*J6o`HpigU4Jn5J{9E@jPZ&$I~w2=?8VQF~KBA7F#|$Qpu+WtI*J*Qv$e zRHF`%F+pHCYkKasi2`eCIzxlLy-M2&uzC?}>T9A(;&|k#gV=_9>ly3aKi|@t$iMQf znd{>9*Q1lby(0R<51$@Il|ilTw4_M$vPZ7Sp6;7m0c#X zOmb-HFDKNrQSd4QEmY+N)T*d$sI9O}mKDezvSC@!b|sT~%w}JMZ25YpwRW4*lvmcB z_wD6`uB^`>wfO_Dpe#52zOsmD=CsoyricxAGd5c#J>YO~sejdHY1L;~eMDTQ?~wtR zM3}xD62J3hQ&+)cXqm9n-}4R-vG6Z-+AdzdRpngwiaStXFKNhcu>PF?J#bp@wj=xf zrEmQz2{Lbg5x>we_edt{{hnj>;^0)@wktb5;IMc@fgzG|3lpf)I!)g;-kpC2jW;d=y<5=RCgtt=m)FVw04}D8Dx7WkqZfRN($%-SqY4q z6DUp@%hyhfsxm`y9JfNJJ8>5J3jySQ0hqW0?J@ z_H5Yrv-;zn+a diff --git a/dist/fonts/roboto/Roboto-BlackItalic.woff2 b/dist/fonts/roboto/Roboto-BlackItalic.woff2 deleted file mode 100755 index df3c3f4472aee1f12d289f0a69945ec4bbb974a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72088 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 ajpj46m@Dv8cLwS%S54ry+Z-qa00007t>q{H diff --git a/dist/fonts/roboto/Roboto-Bold.ttf b/dist/fonts/roboto/Roboto-Bold.ttf deleted file mode 100755 index d3f01ad245b628f386ac95786f53167038720eb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170760 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�!3r53e9=KAt@g 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 +
        + ` + }, + { + id: 'modal', + label: 'modal', + category: 'Components', + attributes: { + class: 'gly-three-columns' + }, + content: ` + + + + `, + }, + // These are basic blocks + { + id: 'b1', + label: '1 Block', + category: 'Grid', + attributes: { + class: 'gly-one-column' + }, + content: `
        ` - }, - { - id: 'b2', - label: '2 Blocks', - category: 'Grid', - attributes: { - class: 'gly-two-columns' - }, - content: `
        + }, + { + id: 'b2', + label: '2 Blocks', + category: 'Grid', + attributes: { + class: 'gly-two-columns' + }, + content: `
        ` - }, - { - id: 'b3', - label: '3 Blocks', - category: 'Grid', - attributes: { - class: 'gly-three-columns' - }, - content: '
        ' - + '
        ' - + '
        ' - + '
        ' - + '
        ', - }, - { - id: 'b5', - label: '4/8 Block', - category: 'Grid', - attributes: { - class: 'gly-four-eight' - }, - content: '
        ' - + '
        ' - + '
        ' - + '
        ', - }, - { - id: 'b6', - label: '5/7 Block', - category: 'Grid', - attributes: { - class: 'gly-four-eight' - }, - content: '
        ' - + '
        ' - + '
        ' - + '
        ', - }, - { - id: 'b7', - label: '3/9 Block', - category: 'Grid', - attributes: { - class: 'gly-three-nine' - }, - content: '
        ' - + '
        ' - + '
        ' - + '
        ', - }, - { - id: 'text', - label: 'Text', - attributes: { - class: 'fa fa-text-width' - }, - category: 'Basic', - content: { type: "text", content: "Insert your text here", style: { padding: "10px" } } - }, { - id: 'image', - label: 'Image', - category: 'Basic', - attributes: { - class: 'fa fa-file-image-o' - }, - content: { - type: 'image', - activeOnRender: 1 - }, - }, { - id: 'list', - label: 'List', - category: 'Basic', - attributes: { - class: 'fa fa-bars' - }, - content: `
          -
        • List One
        • -
        • List Two
        • -
        • List Three
        • -
        • List Four
        • -
        `, - }, - { - id: 'list2', - label: 'List Two', - category: 'Basic', - attributes: { - class: 'fa fa-bars' - }, - content: `` - }, - { - id: 'table', - label: 'Table', - category: 'Basic', - attributes: { - class: 'fa fa-table' - }, - content: ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        #FirstLastHandle
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larrythe Bird@twitter
        ` - }, - { - id: 'res', - label: 'respon image', - category: 'Media', - content: '', - attributes: { - class: 'fa fa-image' - } - }, - { - id: 'video', - label: 'Video', - category: 'Media', - attributes: { - class: 'fa fa-youtube-play' - }, - content: { - type: 'video', - src: 'img/video2.webm', - style: { - height: '350px', - width: '615px', - } - }, - }, { - id: 'h1p', - label: 'Text section', - category: 'Typography', - content: '
        ' - + '

        Insert title here

        ' - + '

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

        ' - + '
        ', - attributes: { - class: 'fa fa-align-center' - } - }, { - id: 'quo', - label: 'Quote', - category: 'Typography', - content: '
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
        ', - attributes: { - class: 'fa fa-quote-right' - } - } - ], + }, + { + id: 'b3', + label: '3 Blocks', + category: 'Grid', + attributes: { + class: 'gly-three-columns' + }, + content: '
        ' + + '
        ' + + '
        ' + + '
        ' + + '
        ', + }, + { + id: 'b5', + label: '4/8 Block', + category: 'Grid', + attributes: { + class: 'gly-four-eight' + }, + content: '
        ' + + '
        ' + + '
        ' + + '
        ', + }, + { + id: 'b6', + label: '5/7 Block', + category: 'Grid', + attributes: { + class: 'gly-four-eight' + }, + content: '
        ' + + '
        ' + + '
        ' + + '
        ', + }, + { + id: 'b7', + label: '3/9 Block', + category: 'Grid', + attributes: { + class: 'gly-three-nine' + }, + content: '
        ' + + '
        ' + + '
        ' + + '
        ', + }, + { + id: 'text', + label: 'Text', + attributes: { + class: 'fa fa-text-width' + }, + category: 'Basic', + content: { type: "text", content: "Insert your text here", style: { padding: "10px" } } + }, { + id: 'image', + label: 'Image', + category: 'Basic', + attributes: { + class: 'fa fa-file-image-o' + }, + content: { + type: 'image', + activeOnRender: 1 + }, + }, { + id: 'list', + label: 'List', + category: 'Basic', + attributes: { + class: 'fa fa-bars' + }, + content: `
          +
        • List One
        • +
        • List Two
        • +
        • List Three
        • +
        • List Four
        • +
        `, + }, + { + id: 'list2', + label: 'List Two', + category: 'Basic', + attributes: { + class: 'fa fa-bars' + }, + content: `` + }, + { + id: 'table', + label: 'Table', + category: 'Basic', + attributes: { + class: 'fa fa-table' + }, + content: ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        #FirstLastHandle
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larrythe Bird@twitter
        ` + }, + { + id: 'res', + label: 'respon image', + category: 'Media', + content: '', + attributes: { + class: 'fa fa-image' + } + }, + { + id: 'video', + label: 'Video', + category: 'Media', + attributes: { + class: 'fa fa-youtube-play' + }, + content: { + type: 'video', + src: 'img/video2.webm', + style: { + height: '350px', + width: '615px', + } + }, + }, { + id: 'h1p', + label: 'Text section', + category: 'Typography', + content: '
        ' + + '

        Insert title here

        ' + + '

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

        ' + + '
        ', + attributes: { + class: 'fa fa-align-center' + } + }, { + id: 'quo', + label: 'Quote', + category: 'Typography', + content: '
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
        ', + attributes: { + class: 'fa fa-quote-right' + } + } +] + +const blocks = [...readyuiBlocks,...bootstrapBasicBlocks] + +const blocksObj = { + blocks } + + + +export default blocksObj; \ No newline at end of file diff --git a/gramateria/develop/js/config/buttons.js b/gramateria/develop/js/config/buttons.js index 9974fb3..b49fbed 100644 --- a/gramateria/develop/js/config/buttons.js +++ b/gramateria/develop/js/config/buttons.js @@ -68,9 +68,34 @@ export default [{ className: 'fa fa-download', command: (editor, sender) =>{ sender.set('active', 0); - let html = localStorage.getItem('gjs-html') || ''; - let css = localStorage.getItem('gjs-css') || ''; - exportZip({html,css}); + let modal = editor.Modal; + modal.setTitle('Export'); + + const form = ` + +
        + + +
        +
        + + +
        +
        + +
        + + `; + + + modal.setContent(form); + modal.open({attributes: { + class: 'form-modal', + }}); + + // let html = localStorage.getItem('gjs-html') || ''; + // let css = localStorage.getItem('gjs-css') || ''; + // exportZip({html,css}); }, attributes: { title: 'Download as zip' diff --git a/gramateria/develop/js/config/readyui-blocks.js b/gramateria/develop/js/config/readyui-blocks.js new file mode 100644 index 0000000..27c2514 --- /dev/null +++ b/gramateria/develop/js/config/readyui-blocks.js @@ -0,0 +1,1013 @@ +export default [ + { + id: 'ready-ui-header', + label: 'Header', + category: 'Sections', + attributes: { + class: 'fa fa-window-minimize' + }, + content: `
        + +
        +
        +
        +
        +

        Create beautiful website layout with blox UI kit.

        +

        Success return on investment termsheet buzz conversion value proposition strategy stealth disruptive product management business model canvas social proof

        +
        +
        + + +
        +
        +
        +
        + +
        +
        +
        ` + }, + { + id: 'ready-ui-blog', + label: 'Blog', + category: 'Sections', + attributes: { + class: 'fa fa-th-large' + }, + content: `
        +
        +

        Recent posts

        +
        +
        +
        + img +
        +

        On: 20 October 4minutes read

        + +
        +
        +
        +
        +
        + img +
        +

        On: 20 October 4 minutes read

        + +
        +
        +
        +
        +
        + img +
        +

        On: 20 October 4 minutes read

        + +
        +
        +
        +
        +
        +
        ` + }, + { + id: 'ready-ui-contact', + label: 'Contact', + category: 'Sections', + attributes: { + class: 'fa fa-envelope' + }, + content: `
        +
        +
        +
        +

        Chat with our sales team

        +

        Network effects client seed money responsive web design deployment twitter + rate traction advisor business-to-consumer founders pivot iPhone handshake.

        +
        +
        +
        +
        +
        + + +
        +
        + + +
        +
        + + +
        +
        + + +
        +
        + +
        +
        + +
        +
        +
        + + +
        +
        +
        + +
        +
        +
        +
        +
        +
        +
        ` + }, + { + id: 'ready-ui-faq', + label: 'FAQ', + category: 'Sections', + attributes: { + class: 'fa fa-question-circle-o' + }, + content: `
        +
        +
        +
        +

        FAQ’s

        +
        +
        +
        +
        + + +
        +
        +
        +
        +
        +
        +
        +
        +
        +

        + +

        +
        +
        +

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market + gen-z research & development analytics business-to-business creative business-to-consumer technology + freemium. +

        +
        +
        +
        +
        +

        + +

        +
        +
        +

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market + gen-z research & development analytics business-to-business creative business-to-consumer technology + freemium. +

        +
        +
        +
        +
        +

        + +

        +
        +
        +

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market + gen-z research & development analytics business-to-business creative business-to-consumer technology + freemium. +

        +
        +
        +
        + +
        +

        + +

        +
        +
        +

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market + gen-z research & development analytics business-to-business creative business-to-consumer technology + freemium. +

        +
        +
        +
        + +
        +

        + +

        +
        +
        + Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market + gen-z research & development analytics business-to-business creative business-to-consumer technology + freemium. +
        +
        +
        +
        +

        + +

        +
        +
        +

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market + gen-z research & development analytics business-to-business creative business-to-consumer technology + freemium. +

        +
        +
        +
        +
        +

        + +

        +
        +
        +

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market + gen-z research & development analytics business-to-business creative business-to-consumer technology + freemium. +

        +
        +
        +
        +
        +
        +
        +
        +
        ` + }, + { + id: 'ready-ui-feature', + label: 'Feature', + category: 'Sections', + attributes: { + class: 'fa fa-server' + }, + content: ` ` + }, + { + id: 'ready-ui-footer', + label: 'Footer', + category: 'Sections', + attributes: { + class: 'fa fa-desktop' + }, + content: `` + }, + { + id: 'ready-ui-portfolio', + label: 'Portfolio', + category: 'Sections', + attributes: { + class: 'fa fa-newspaper-o' + }, + content: `
        +
        +
        +
        +
        +

        Portfolio

        +

        Client sales beta crowdfunding agile development launch party angel investor venture android influencer.

        +
        +
        +
        +
        +
        + img +
        Best design system
        +

        Design system

        +
        +
        + img +
        Blox wireframe kit 1.0
        +

        Ui Kit

        +
        +
        + img +
        Blox wireframe kit 1.0
        +

        Ui Kit

        +
        +
        +
        +
        ` + }, + { + id: 'ready-ui-pricing', + label: 'Pricing', + category: 'Sections', + attributes: { + class: 'fa fa-bars' + }, + content: `
        +
        +
        +
        +
        +

        The Awesome Team

        +

        Launch party social proof leverage MVP lean startup creative equity startup direct + mailing. Niche market startup paradigm shift learning curve.

        +
        +
        +
        +
        +
        +
        + img +
        Arther Melo
        +

        Design system

        +
        +
        +
        +
        + img +
        Lisa Luiz
        +

        Ui Kit

        +
        +
        +
        +
        + img +
        Ena Williams
        +

        Ui Kit

        +
        +
        +
        +
        + img +
        Xavier Pablo
        +

        Ui Kit

        +
        +
        +
        +
        + img +
        Arther Melo
        +

        Design system

        +
        +
        +
        +
        + img +
        Lisa Luiz
        +

        Ui Kit

        +
        +
        +
        +
        + img +
        Ena Williams
        +

        Ui Kit

        +
        +
        +
        +
        + img +
        Xavier Pablo
        +

        Ui Kit

        +
        +
        +
        +
        +
        ` + }, + { + id: 'ready-ui-team', + label: 'Team', + category: 'Sections', + attributes: { + class: 'fa fa-users' + }, + content: `
        +
        +
        +
        +
        +

        The Awesome Team

        +

        Launch party social proof leverage MVP lean startup creative equity startup direct + mailing. Niche market startup paradigm shift learning curve.

        +
        +
        +
        +
        +
        +
        + img +
        Arther Melo
        +

        Design system

        +
        +
        +
        +
        + img +
        Lisa Luiz
        +

        Ui Kit

        +
        +
        +
        +
        + img +
        Ena Williams
        +

        Ui Kit

        +
        +
        +
        +
        + img +
        Xavier Pablo
        +

        Ui Kit

        +
        +
        +
        +
        + img +
        Arther Melo
        +

        Design system

        +
        +
        +
        +
        + img +
        Lisa Luiz
        +

        Ui Kit

        +
        +
        +
        +
        + img +
        Ena Williams
        +

        Ui Kit

        +
        +
        +
        +
        + img +
        Xavier Pablo
        +

        Ui Kit

        +
        +
        +
        +
        +
        ` + }, + { + id: 'ready-ui-testimonial', + label: 'Team', + category: 'Sections', + attributes: { + class: 'fa fa-th' + }, + content: `
        +
        +
        +
        +

        What clients say

        +

        Launch party social proof leverage MVP lean startup creative equity + startup direct + mailing. Niche market startup paradigm shift learning curve.

        +
        +
        +
        +
        + +
        +
        + +
        +
        + +
        +
        +
        +
        ` + } +] \ No newline at end of file diff --git a/gramateria/develop/js/gramateria.js b/gramateria/develop/js/gramateria.js index 1f3d06b..317c27b 100755 --- a/gramateria/develop/js/gramateria.js +++ b/gramateria/develop/js/gramateria.js @@ -28,7 +28,8 @@ class Gramateria { clearOnRender: 0, canvas: { styles: [ - 'https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.0.2/materia/bootstrap.min.css' + 'https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.0.2/materia/bootstrap.min.css', + 'https://cdn.statically.io/gh/gramateria/readyui-free/main/css/style.min.css' ], scripts: [ 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js' @@ -89,10 +90,10 @@ class Gramateria { header_menus.className = 'header-menus'; fileLoader.className = prefix + 'import-file'; - btnEdit.className = prefix + 'btn-prim ' + prefix + 'btn-import'; - copyHtml.className = prefix + 'btn-prim ' + prefix + 'btn-html'; - copyCss.className = prefix + 'btn-prim ' + prefix + 'btn-css'; - exportTxt.className = prefix + 'btn-prim ' + prefix + 'btn-export'; + btnEdit.className = 'btn ' + prefix + 'btn-import'; + copyHtml.className = 'btn ' + prefix + 'btn-html'; + copyCss.className = 'btn ' + prefix + 'btn-css'; + exportTxt.className = 'btn ' + prefix + 'btn-export'; fileLoadInput.onchange = (e) =>{ @@ -240,7 +241,7 @@ class Gramateria { this.editor.on('load', (editor) => { editor.Panels.getButton('views', 'open-blocks').set('active', true) editor.BlockManager.getCategories().each( (ctg) => { - if (ctg.attributes.id == 'Section') { + if (ctg.attributes.id === 'Sections') { return; } ctg.set('open', false); diff --git a/gramateria/develop/sass/_global.scss b/gramateria/develop/sass/_global.scss index 97aee4d..76db951 100644 --- a/gramateria/develop/sass/_global.scss +++ b/gramateria/develop/sass/_global.scss @@ -6,3 +6,23 @@ html { .fa::before { -webkit-text-stroke: .5px #fff } + +.form-modal .gjs-mdl-dialog{ + max-width:500px; +} + +.btn{ + transition:all ease 0.3s; + padding:10px 30px; + border:1px solid transparent; + background:#fff; + box-shadow:0 1px 10px #dddddd9c; + border-radius:4px; +} + +.btn:hover{ + cursor:pointer; + background:var(--theme-color); + color:#fff; + transform:translateY(-2px); +} \ No newline at end of file diff --git a/gramateria/develop/sass/_glyphter.scss b/gramateria/develop/sass/_glyphter.scss index ee35186..c21f931 100644 --- a/gramateria/develop/sass/_glyphter.scss +++ b/gramateria/develop/sass/_glyphter.scss @@ -1,11 +1,11 @@ /* Generated by Glyphter (http://www.glyphter.com) on Tue Mar 12 2019*/ @font-face { font-family: 'Glyphter'; - src: url('./fonts/Glyphter.eot'); - src: url('./fonts/Glyphter.eot?#iefix') format('embedded-opentype'), - url('./fonts/Glyphter.woff') format('woff'), - url('./fonts/Glyphter.ttf') format('truetype'), - url('./fonts/Glyphter.svg#Glyphter') format('svg'); + src: url('./fonts/glypher/Glyphter.eot'); + src: url('./fonts/glypher/Glyphter.eot?#iefix') format('embedded-opentype'), + url('./fonts/glypher/Glyphter.woff') format('woff'), + url('./fonts/glypher/Glyphter.ttf') format('truetype'), + url('./fonts/glypher/Glyphter.svg#Glyphter') format('svg'); font-weight: normal; font-style: normal; } diff --git a/gramateria/develop/sass/_gram.scss b/gramateria/develop/sass/_gram.scss new file mode 100644 index 0000000..8c3e647 --- /dev/null +++ b/gramateria/develop/sass/_gram.scss @@ -0,0 +1,32 @@ +.gram-form .form-group label{ + display:block; +} + +.gram-form .form-control{ + width:100%; + clear:both; + margin:10px 0 10px; +} + +.gram-form input.form-control{ + height:30px; + border:1px solid #ddd; +} + + +.gram-form textarea.form-control{ + min-height:60px; + border:1px solid #ddd; +} + + +.gram-form textarea.form-control:active, +.gram-form textarea.form-control:focus, +.gram-form input.form-control:active, +.gram-form input.form-control:focus{ + box-shadow:none; + border:none; + outline:none; + border:1px solid var(--theme-color); +} + diff --git a/gramateria/develop/sass/_overwrite.scss b/gramateria/develop/sass/_overwrite.scss index 6c032c7..b79dd39 100644 --- a/gramateria/develop/sass/_overwrite.scss +++ b/gramateria/develop/sass/_overwrite.scss @@ -111,24 +111,8 @@ align-items: center; } -#gjs-mdl-c .header-menus button{ - transition:all ease 0.2s; - color: #587899; - font-size: 13px; - margin: 10px 0 10px; - background: #fff; - box-shadow: 0 1px 10px #dddddd70; - padding: 8px 16px; - margin:10px; -} -#gjs-mdl-c .header-menus button:hover{ - transform:translateY(-2px); - background:var(--theme-color); - color:#fff; -} - label.gjs-import-file { - padding:8px 16px; + padding:10px 30px; border:1px dashed #ddd; font-size:13px; background:#fff; diff --git a/gramateria/develop/sass/gramateria.scss b/gramateria/develop/sass/gramateria.scss index 590bfc2..f0f4036 100755 --- a/gramateria/develop/sass/gramateria.scss +++ b/gramateria/develop/sass/gramateria.scss @@ -2,4 +2,5 @@ @import 'variables'; @import 'global'; @import 'glyphter'; +@import 'gram'; @import 'overwrite'; \ No newline at end of file diff --git a/gramateria/dist/fonts/Glyphter.eot b/gramateria/dist/fonts/glypher/Glyphter.eot similarity index 100% rename from gramateria/dist/fonts/Glyphter.eot rename to gramateria/dist/fonts/glypher/Glyphter.eot diff --git a/gramateria/dist/fonts/Glyphter.svg b/gramateria/dist/fonts/glypher/Glyphter.svg similarity index 100% rename from gramateria/dist/fonts/Glyphter.svg rename to gramateria/dist/fonts/glypher/Glyphter.svg diff --git a/gramateria/dist/fonts/Glyphter.ttf b/gramateria/dist/fonts/glypher/Glyphter.ttf similarity index 100% rename from gramateria/dist/fonts/Glyphter.ttf rename to gramateria/dist/fonts/glypher/Glyphter.ttf diff --git a/gramateria/dist/fonts/Glyphter.woff b/gramateria/dist/fonts/glypher/Glyphter.woff similarity index 100% rename from gramateria/dist/fonts/Glyphter.woff rename to gramateria/dist/fonts/glypher/Glyphter.woff diff --git a/gramateria/dist/gram.min.css b/gramateria/dist/gram.min.css index 7647e4c..1c98c4d 100644 --- a/gramateria/dist/gram.min.css +++ b/gramateria/dist/gram.min.css @@ -148,11 +148,31 @@ html { -webkit-text-stroke: 0.5px #fff; } +.form-modal .gjs-mdl-dialog { + max-width: 500px; +} + +.btn { + transition: all ease 0.3s; + padding: 10px 30px; + border: 1px solid transparent; + background: #fff; + box-shadow: 0 1px 10px #dddddd9c; + border-radius: 4px; +} + +.btn:hover { + cursor: pointer; + background: var(--theme-color); + color: #fff; + transform: translateY(-2px); +} + /* Generated by Glyphter (http://www.glyphter.com) on Tue Mar 12 2019*/ @font-face { font-family: "Glyphter"; - src: url("./fonts/Glyphter.eot"); - src: url("./fonts/Glyphter.eot?#iefix") format("embedded-opentype"), url("./fonts/Glyphter.woff") format("woff"), url("./fonts/Glyphter.ttf") format("truetype"), url("./fonts/Glyphter.svg#Glyphter") format("svg"); + src: url("./fonts/glypher/Glyphter.eot"); + src: url("./fonts/glypher/Glyphter.eot?#iefix") format("embedded-opentype"), url("./fonts/glypher/Glyphter.woff") format("woff"), url("./fonts/glypher/Glyphter.ttf") format("truetype"), url("./fonts/glypher/Glyphter.svg#Glyphter") format("svg"); font-weight: normal; font-style: normal; } @@ -213,6 +233,36 @@ html { content: "K"; } +.gram-form .form-group label { + display: block; +} + +.gram-form .form-control { + width: 100%; + clear: both; + margin: 10px 0 10px; +} + +.gram-form input.form-control { + height: 30px; + border: 1px solid #ddd; +} + +.gram-form textarea.form-control { + min-height: 60px; + border: 1px solid #ddd; +} + +.gram-form textarea.form-control:active, +.gram-form textarea.form-control:focus, +.gram-form input.form-control:active, +.gram-form input.form-control:focus { + box-shadow: none; + border: none; + outline: none; + border: 1px solid var(--theme-color); +} + /* Overwrite GrapeJS css */ .gjs-cm-editor#gjs-cm-css #gjs-cm-title, .gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title, @@ -319,25 +369,8 @@ html { align-items: center; } -#gjs-mdl-c .header-menus button { - transition: all ease 0.2s; - color: #587899; - font-size: 13px; - margin: 10px 0 10px; - background: #fff; - box-shadow: 0 1px 10px #dddddd70; - padding: 8px 16px; - margin: 10px; -} - -#gjs-mdl-c .header-menus button:hover { - transform: translateY(-2px); - background: var(--theme-color); - color: #fff; -} - label.gjs-import-file { - padding: 8px 16px; + padding: 10px 30px; border: 1px dashed #ddd; font-size: 13px; background: #fff; diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index f5a8d02..f8dcf6e 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -92,162 +92,179 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - blocks: [{ - id: 'nav', - label: 'nav', - category: 'Section', - attributes: { - "class": 'gly-one-column' - }, - content: "" - }, { - id: 'modal', - label: 'modal', - category: 'Section', - attributes: { - "class": 'gly-three-columns' - }, - content: "\n \n \n \n
        \n
        \n
        \n
        \n
        Modal title
        \n \n
        \n
        \n

        Modal body text goes here.

        \n
        \n
        \n \n \n
        \n
        \n
        \n
        " - }, // These are basic blocks - { - id: 'b1', - label: '1 Block', - category: 'Grid', - attributes: { - "class": 'gly-one-column' - }, - content: "
        \n
        \n
        " - }, { - id: 'b2', - label: '2 Blocks', - category: 'Grid', - attributes: { - "class": 'gly-two-columns' - }, - content: "
        \n
        \n
        \n
        " - }, { - id: 'b3', - label: '3 Blocks', - category: 'Grid', - attributes: { - "class": 'gly-three-columns' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' + '
        ' - }, { - id: 'b5', - label: '4/8 Block', - category: 'Grid', - attributes: { - "class": 'gly-four-eight' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' - }, { - id: 'b6', - label: '5/7 Block', - category: 'Grid', - attributes: { - "class": 'gly-four-eight' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' - }, { - id: 'b7', - label: '3/9 Block', - category: 'Grid', - attributes: { - "class": 'gly-three-nine' - }, - content: '
        ' + '
        ' + '
        ' + '
        ' - }, { - id: 'text', - label: 'Text', - attributes: { - "class": 'fa fa-text-width' - }, - category: 'Basic', - content: { - type: "text", - content: "Insert your text here", - style: { - padding: "10px" - } - } - }, { - id: 'image', - label: 'Image', - category: 'Basic', - attributes: { - "class": 'fa fa-file-image-o' - }, - content: { - type: 'image', - activeOnRender: 1 - } - }, { - id: 'list', - label: 'List', - category: 'Basic', - attributes: { - "class": 'fa fa-bars' - }, - content: "
          \n
        • List One
        • \n
        • List Two
        • \n
        • List Three
        • \n
        • List Four
        • \n
        " - }, { - id: 'list2', - label: 'List Two', - category: 'Basic', - attributes: { - "class": 'fa fa-bars' - }, - content: "" - }, { - id: 'table', - label: 'Table', - category: 'Basic', - attributes: { - "class": 'fa fa-table' - }, - content: "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
        #FirstLastHandle
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larrythe Bird@twitter
        " - }, { - id: 'res', - label: 'respon image', - category: 'Media', - content: '', - attributes: { - "class": 'fa fa-image' - } - }, { - id: 'video', - label: 'Video', - category: 'Media', - attributes: { - "class": 'fa fa-youtube-play' - }, - content: { - type: 'video', - src: 'img/video2.webm', - style: { - height: '350px', - width: '615px' - } - } - }, { - id: 'h1p', - label: 'Text section', - category: 'Typography', - content: '
        ' + '

        Insert title here

        ' + '

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

        ' + '
        ', - attributes: { - "class": 'fa fa-align-center' +/* harmony import */ var _readyui_blocks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./readyui-blocks */ "./gramateria/develop/js/config/readyui-blocks.js"); +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + + +var bootstrapBasicBlocks = [{ + id: 'nav', + label: 'nav', + category: 'Components', + attributes: { + "class": 'gly-one-column' + }, + content: "" +}, { + id: 'modal', + label: 'modal', + category: 'Components', + attributes: { + "class": 'gly-three-columns' + }, + content: "\n \n \n \n
        \n
        \n
        \n
        \n
        Modal title
        \n \n
        \n
        \n

        Modal body text goes here.

        \n
        \n
        \n \n \n
        \n
        \n
        \n
        " +}, // These are basic blocks +{ + id: 'b1', + label: '1 Block', + category: 'Grid', + attributes: { + "class": 'gly-one-column' + }, + content: "
        \n
        \n
        " +}, { + id: 'b2', + label: '2 Blocks', + category: 'Grid', + attributes: { + "class": 'gly-two-columns' + }, + content: "
        \n
        \n
        \n
        " +}, { + id: 'b3', + label: '3 Blocks', + category: 'Grid', + attributes: { + "class": 'gly-three-columns' + }, + content: '
        ' + '
        ' + '
        ' + '
        ' + '
        ' +}, { + id: 'b5', + label: '4/8 Block', + category: 'Grid', + attributes: { + "class": 'gly-four-eight' + }, + content: '
        ' + '
        ' + '
        ' + '
        ' +}, { + id: 'b6', + label: '5/7 Block', + category: 'Grid', + attributes: { + "class": 'gly-four-eight' + }, + content: '
        ' + '
        ' + '
        ' + '
        ' +}, { + id: 'b7', + label: '3/9 Block', + category: 'Grid', + attributes: { + "class": 'gly-three-nine' + }, + content: '
        ' + '
        ' + '
        ' + '
        ' +}, { + id: 'text', + label: 'Text', + attributes: { + "class": 'fa fa-text-width' + }, + category: 'Basic', + content: { + type: "text", + content: "Insert your text here", + style: { + padding: "10px" } - }, { - id: 'quo', - label: 'Quote', - category: 'Typography', - content: '
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
        ', - attributes: { - "class": 'fa fa-quote-right' + } +}, { + id: 'image', + label: 'Image', + category: 'Basic', + attributes: { + "class": 'fa fa-file-image-o' + }, + content: { + type: 'image', + activeOnRender: 1 + } +}, { + id: 'list', + label: 'List', + category: 'Basic', + attributes: { + "class": 'fa fa-bars' + }, + content: "
          \n
        • List One
        • \n
        • List Two
        • \n
        • List Three
        • \n
        • List Four
        • \n
        " +}, { + id: 'list2', + label: 'List Two', + category: 'Basic', + attributes: { + "class": 'fa fa-bars' + }, + content: "" +}, { + id: 'table', + label: 'Table', + category: 'Basic', + attributes: { + "class": 'fa fa-table' + }, + content: "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
        #FirstLastHandle
        1MarkOtto@mdo
        2JacobThornton@fat
        3Larrythe Bird@twitter
        " +}, { + id: 'res', + label: 'respon image', + category: 'Media', + content: '', + attributes: { + "class": 'fa fa-image' + } +}, { + id: 'video', + label: 'Video', + category: 'Media', + attributes: { + "class": 'fa fa-youtube-play' + }, + content: { + type: 'video', + src: 'img/video2.webm', + style: { + height: '350px', + width: '615px' } - }] -}); + } +}, { + id: 'h1p', + label: 'Text section', + category: 'Typography', + content: '
        ' + '

        Insert title here

        ' + '

        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua

        ' + '
        ', + attributes: { + "class": 'fa fa-align-center' + } +}, { + id: 'quo', + label: 'Quote', + category: 'Typography', + content: '
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore ipsum dolor sit
        ', + attributes: { + "class": 'fa fa-quote-right' + } +}]; +var blocks = [].concat(_toConsumableArray(_readyui_blocks__WEBPACK_IMPORTED_MODULE_0__.default), bootstrapBasicBlocks); +var blocksObj = { + blocks: blocks +}; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (blocksObj); /***/ }), @@ -329,12 +346,17 @@ __webpack_require__.r(__webpack_exports__); className: 'fa fa-download', command: function command(editor, sender) { sender.set('active', 0); - var html = localStorage.getItem('gjs-html') || ''; - var css = localStorage.getItem('gjs-css') || ''; - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.exportZip)({ - html: html, - css: css - }); + var modal = editor.Modal; + modal.setTitle('Export'); + var form = "\n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n \n
        \n
        \n "; + modal.setContent(form); + modal.open({ + attributes: { + "class": 'form-modal' + } + }); // let html = localStorage.getItem('gjs-html') || ''; + // let css = localStorage.getItem('gjs-css') || ''; + // exportZip({html,css}); }, attributes: { title: 'Download as zip' @@ -400,6 +422,101 @@ var exportTemplate = function exportTemplate(data) { /***/ }), +/***/ "./gramateria/develop/js/config/readyui-blocks.js": +/*!********************************************************!*\ + !*** ./gramateria/develop/js/config/readyui-blocks.js ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{ + id: 'ready-ui-header', + label: 'Header', + category: 'Sections', + attributes: { + "class": 'fa fa-window-minimize' + }, + content: "
        \n \n
        \n
        \n
        \n
        \n

        Create beautiful website layout with blox UI kit.

        \n

        Success return on investment termsheet buzz conversion value proposition strategy stealth disruptive product management business model canvas social proof

        \n
        \n
        \n \n \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n \"airbnb\"\n
        \n
        \n \"uber\"\n
        \n
        \n \"google\"\n
        \n
        \n \"nike\"\n
        \n
        \n \"dropbox\"\n
        \n
        \n \"stripe\"\n
        \n
        \n
        \n
        \n
        \n
        " +}, { + id: 'ready-ui-blog', + label: 'Blog', + category: 'Sections', + attributes: { + "class": 'fa fa-th-large' + }, + content: "
        \n
        \n

        Recent posts

        \n
        \n
        \n
        \n \"img\"\n
        \n

        On: 20 October 4minutes read

        \n \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        \n

        On: 20 October 4 minutes read

        \n \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        \n

        On: 20 October 4 minutes read

        \n \n
        \n
        \n
        \n
        \n
        \n
        " +}, { + id: 'ready-ui-contact', + label: 'Contact', + category: 'Sections', + attributes: { + "class": 'fa fa-envelope' + }, + content: "
        \n
        \n
        \n
        \n

        Chat with our sales team

        \n

        Network effects client seed money responsive web design deployment twitter\n rate traction advisor business-to-consumer founders pivot iPhone handshake.

        \n
        \n
        \n
        \n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n
        \n \n \n
        \n
        \n
        \n \n
        \n
        \n
        \n
        \n
        \n
        \n
        " +}, { + id: 'ready-ui-faq', + label: 'FAQ', + category: 'Sections', + attributes: { + "class": 'fa fa-question-circle-o' + }, + content: "
        \n
        \n
        \n
        \n

        FAQ\u2019s

        \n
        \n
        \n
        \n
        \n \n \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n\n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n\n
        \n

        \n \n

        \n
        \n
        \n Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n
        \n
        \n
        \n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n
        " +}, { + id: 'ready-ui-feature', + label: 'Feature', + category: 'Sections', + attributes: { + "class": 'fa fa-server' + }, + content: "
        \n
        \n
        \n
        \n

        Service for every stage of\n the real estate lifecycle

        \n
        \n
        \n
        \n
        \n
        \n
        \n \n \n \n \n \n
        Valuation Advisory
        \n

        Virality ownership mass market angel growth hacking bootstrapping. Infographic media niche market scrum project.

        \n Read more \n \n \n \n \n \n
        \n
        \n
        \n
        \n \n \n \n \n \n \n \n
        Asset Management
        \n

        Virality ownership mass market angel growth hacking bootstrapping. Infographic media niche market scrum project.

        \n Read more \n \n \n \n \n \n
        \n
        \n
        \n
        \n \n \n \n \n \n
        Cost Management
        \n

        Virality ownership mass market angel growth hacking bootstrapping. Infographic media niche market scrum project.

        \n Read more \n \n \n \n \n \n
        \n
        \n
        \n
        \n
        \n
        " +}, { + id: 'ready-ui-footer', + label: 'Footer', + category: 'Sections', + attributes: { + "class": 'fa fa-desktop' + }, + content: "
        \n
        \n
        \n
        \n \"img\"\n
        \n
        \n \n
        \n
        \n
          \n
        • \n \n \n \n \n
        • \n
        • \n \n \n \n \n \n \n
        • \n
        • \n \n \n \n \n
        • \n
        \n
        \n
        \n
        \n
        \n

        Copyright \"icon\"2020 blox. All right reserved

        \n
        \n
        \n
        " +}, { + id: 'ready-ui-portfolio', + label: 'Portfolio', + category: 'Sections', + attributes: { + "class": 'fa fa-newspaper-o' + }, + content: "
        \n
        \n
        \n
        \n
        \n

        Portfolio

        \n

        Client sales beta crowdfunding agile development launch party angel investor venture android influencer.

        \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        Best design system
        \n

        Design system

        \n
        \n
        \n \"img\"\n
        Blox wireframe kit 1.0
        \n

        Ui Kit

        \n
        \n
        \n \"img\"\n
        Blox wireframe kit 1.0
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        " +}, { + id: 'ready-ui-pricing', + label: 'Pricing', + category: 'Sections', + attributes: { + "class": 'fa fa-bars' + }, + content: "
        \n
        \n
        \n
        \n
        \n

        The Awesome Team

        \n

        Launch party social proof leverage MVP lean startup creative equity startup direct \n mailing. Niche market startup paradigm shift learning curve.

        \n
        \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        Arther Melo
        \n

        Design system

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Lisa Luiz
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Ena Williams
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Xavier Pablo
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Arther Melo
        \n

        Design system

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Lisa Luiz
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Ena Williams
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Xavier Pablo
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n
        " +}, { + id: 'ready-ui-team', + label: 'Team', + category: 'Sections', + attributes: { + "class": 'fa fa-users' + }, + content: "
        \n
        \n
        \n
        \n
        \n

        The Awesome Team

        \n

        Launch party social proof leverage MVP lean startup creative equity startup direct \n mailing. Niche market startup paradigm shift learning curve.

        \n
        \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        Arther Melo
        \n

        Design system

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Lisa Luiz
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Ena Williams
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Xavier Pablo
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Arther Melo
        \n

        Design system

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Lisa Luiz
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Ena Williams
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Xavier Pablo
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n
        " +}, { + id: 'ready-ui-testimonial', + label: 'Team', + category: 'Sections', + attributes: { + "class": 'fa fa-th' + }, + content: "
        \n
        \n
        \n
        \n

        What clients say

        \n

        Launch party social proof leverage MVP lean startup creative equity\n startup direct\n mailing. Niche market startup paradigm shift learning curve.

        \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n
        \n
        " +}]); + +/***/ }), + /***/ "./gramateria/develop/js/config/styleManager.js": /*!******************************************************!*\ !*** ./gramateria/develop/js/config/styleManager.js ***! @@ -865,7 +982,7 @@ var Gramateria = /*#__PURE__*/function () { fromElement: true, clearOnRender: 0, canvas: { - styles: ['https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.0.2/materia/bootstrap.min.css'], + styles: ['https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.0.2/materia/bootstrap.min.css', 'https://cdn.statically.io/gh/gramateria/readyui-free/main/css/style.min.css'], scripts: ['https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js'] }, commands: _config_commands__WEBPACK_IMPORTED_MODULE_2__.default, @@ -919,10 +1036,10 @@ var Gramateria = /*#__PURE__*/function () { fileLoader.appendChild(fileLoadInput); header_menus.className = 'header-menus'; fileLoader.className = prefix + 'import-file'; - btnEdit.className = prefix + 'btn-prim ' + prefix + 'btn-import'; - copyHtml.className = prefix + 'btn-prim ' + prefix + 'btn-html'; - copyCss.className = prefix + 'btn-prim ' + prefix + 'btn-css'; - exportTxt.className = prefix + 'btn-prim ' + prefix + 'btn-export'; + btnEdit.className = 'btn ' + prefix + 'btn-import'; + copyHtml.className = 'btn ' + prefix + 'btn-html'; + copyCss.className = 'btn ' + prefix + 'btn-css'; + exportTxt.className = 'btn ' + prefix + 'btn-export'; fileLoadInput.onchange = function (e) { var currentFile = e.target.files[0]; @@ -1072,7 +1189,7 @@ var Gramateria = /*#__PURE__*/function () { this.editor.on('load', function (editor) { editor.Panels.getButton('views', 'open-blocks').set('active', true); editor.BlockManager.getCategories().each(function (ctg) { - if (ctg.attributes.id == 'Section') { + if (ctg.attributes.id === 'Sections') { return; } From a47d45888e4799820a9e9132974ec8634adb77ac Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Wed, 21 Jul 2021 11:15:39 +0630 Subject: [PATCH 05/27] fix ready-ui sections images --- .../develop/js/config/readyui-blocks.js | 211 +++++++++--------- gramateria/dist/gram.min.js | 6 +- 2 files changed, 103 insertions(+), 114 deletions(-) diff --git a/gramateria/develop/js/config/readyui-blocks.js b/gramateria/develop/js/config/readyui-blocks.js index 27c2514..de8a63e 100644 --- a/gramateria/develop/js/config/readyui-blocks.js +++ b/gramateria/develop/js/config/readyui-blocks.js @@ -798,77 +798,66 @@ export default [ attributes: { class: 'fa fa-bars' }, - content: `
        -
        -
        -
        -
        -

        The Awesome Team

        -

        Launch party social proof leverage MVP lean startup creative equity startup direct - mailing. Niche market startup paradigm shift learning curve.

        -
        -
        -
        -
        -
        -
        - img -
        Arther Melo
        -

        Design system

        -
        -
        -
        -
        - img -
        Lisa Luiz
        -

        Ui Kit

        -
        -
        -
        -
        - img -
        Ena Williams
        -

        Ui Kit

        -
        -
        -
        -
        - img -
        Xavier Pablo
        -

        Ui Kit

        -
        -
        -
        -
        - img -
        Arther Melo
        -

        Design system

        -
        -
        -
        -
        - img -
        Lisa Luiz
        -

        Ui Kit

        + content: `
        +
        +
        +
        +

        Choose Your Plan

        +

        Launch party social proof leverage MVP lean startup creative equity startup direct mailing.

        +
        +
        +
        +

        $39.95

        +
        Monthly
        +
        +

        Instant Access to Entire Course

        +

        All Lessons & Classes From White to Black

        +

        Connect & Train With Students in the Course

        +

        Accredited Rank Testing & Advancement

        +

        Instructor Support, Feedback & Guidance

        +

        Fresh Training Material Added Monthly

        +

        Cancel Anytime

        + Enroll Now +

        Per month payment

        +
        -
        -
        -
        - img -
        Ena Williams
        -

        Ui Kit

        +
        +
        +

        $179

        +
        Annualy
        +
        +

        Instant Access to Entire Course

        +

        90+ Follow Along Classes

        +

        100+ Technique Lessons

        +

        Fresh Training Material Added Monthly

        +

        Accredited Rank Testing & Advancement

        +

        Instructor Support, Feedback & Guidance

        +

        Pay $179.70 Every Six Months (Save 25%)

        +

        Cancel Anytime

        + Enroll Now +

        One time yearly payment

        +
        -
        -
        -
        - img -
        Xavier Pablo
        -

        Ui Kit

        +
        +
        +

        $195.00

        +
        Life Time
        +
        +

        Instant Access to Entire Course

        +

        90+ Follow Along Classes

        +

        125+ Technique Lessons

        +

        Fresh Training Material Added Monthly

        +

        Accredited Rank Testing & Advancement

        +

        Instructor Support, Feedback & Guidance

        +

        Access For Life Pay - Upfront

        +

        Save Over $1300 on Your Journey

        + Enroll Now +

        One time payment

        +
        -
        -
        ` +
        ` }, { id: 'ready-ui-team', @@ -951,63 +940,63 @@ export default [ }, { id: 'ready-ui-testimonial', - label: 'Team', + label: 'Testimonial', category: 'Sections', attributes: { class: 'fa fa-th' }, content: `
        -
        -
        -
        -

        What clients say

        -

        Launch party social proof leverage MVP lean startup creative equity - startup direct - mailing. Niche market startup paradigm shift learning curve.

        -
        -
        -
        -
        -
        ` +
        +
        +` } ] \ No newline at end of file diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index f8dcf6e..974d632 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -496,7 +496,7 @@ __webpack_require__.r(__webpack_exports__); attributes: { "class": 'fa fa-bars' }, - content: "
        \n
        \n
        \n
        \n
        \n

        The Awesome Team

        \n

        Launch party social proof leverage MVP lean startup creative equity startup direct \n mailing. Niche market startup paradigm shift learning curve.

        \n
        \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        Arther Melo
        \n

        Design system

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Lisa Luiz
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Ena Williams
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Xavier Pablo
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Arther Melo
        \n

        Design system

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Lisa Luiz
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Ena Williams
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Xavier Pablo
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n
        " + content: "
        \n
        \n
        \n
        \n

        Choose Your Plan

        \n

        Launch party social proof leverage MVP lean startup creative equity startup direct mailing.

        \n
        \n
        \n
        \n

        $39.95

        \n
        Monthly
        \n
        \n

        Instant Access to Entire Course

        \n

        All Lessons & Classes From White to Black

        \n

        Connect & Train With Students in the Course

        \n

        Accredited Rank Testing & Advancement

        \n

        Instructor Support, Feedback & Guidance

        \n

        Fresh Training Material Added Monthly

        \n

        Cancel Anytime

        \n Enroll Now\n

        Per month payment

        \n
        \n
        \n
        \n
        \n

        $179

        \n
        Annualy
        \n
        \n

        Instant Access to Entire Course

        \n

        90+ Follow Along Classes

        \n

        100+ Technique Lessons

        \n

        Fresh Training Material Added Monthly

        \n

        Accredited Rank Testing & Advancement

        \n

        Instructor Support, Feedback & Guidance

        \n

        Pay $179.70 Every Six Months (Save 25%)

        \n

        Cancel Anytime

        \n Enroll Now\n

        One time yearly payment

        \n
        \n
        \n
        \n
        \n

        $195.00

        \n
        Life Time
        \n
        \n

        Instant Access to Entire Course

        \n

        90+ Follow Along Classes

        \n

        125+ Technique Lessons

        \n

        Fresh Training Material Added Monthly

        \n

        Accredited Rank Testing & Advancement

        \n

        Instructor Support, Feedback & Guidance

        \n

        Access For Life Pay - Upfront

        \n

        Save Over $1300 on Your Journey

        \n Enroll Now\n

        One time payment

        \n
        \n
        \n
        \n
        \n
        " }, { id: 'ready-ui-team', label: 'Team', @@ -507,12 +507,12 @@ __webpack_require__.r(__webpack_exports__); content: "
        \n
        \n
        \n
        \n
        \n

        The Awesome Team

        \n

        Launch party social proof leverage MVP lean startup creative equity startup direct \n mailing. Niche market startup paradigm shift learning curve.

        \n
        \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        Arther Melo
        \n

        Design system

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Lisa Luiz
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Ena Williams
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Xavier Pablo
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Arther Melo
        \n

        Design system

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Lisa Luiz
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Ena Williams
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Xavier Pablo
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n
        " }, { id: 'ready-ui-testimonial', - label: 'Team', + label: 'Testimonial', category: 'Sections', attributes: { "class": 'fa fa-th' }, - content: "
        \n
        \n
        \n
        \n

        What clients say

        \n

        Launch party social proof leverage MVP lean startup creative equity\n startup direct\n mailing. Niche market startup paradigm shift learning curve.

        \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n
        \n
        " + content: "
        \n
        \n
        \n
        \n

        What clients say

        \n

        Launch party social proof leverage MVP lean startup creative equity\n startup direct\n mailing. Niche market startup paradigm shift learning curve.

        \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n
        \n
        " }]); /***/ }), From eb03950c5f70e740e85f149cb38209e8710c3023 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Wed, 21 Jul 2021 16:11:10 +0630 Subject: [PATCH 06/27] add netlify deployment --- gramateria/develop/js/config/buttons.js | 148 +++++++++++--- .../develop/js/config/exportTemplate.js | 15 +- gramateria/develop/js/config/test.json | 1 + gramateria/develop/js/gramateria.js | 7 + gramateria/develop/js/helpers/index.js | 66 +++++-- gramateria/develop/sass/_global.scss | 4 + gramateria/develop/sass/_overwrite.scss | 4 + gramateria/dist/gram.min.css | 8 + gramateria/dist/gram.min.js | 180 ++++++++++++++++-- 9 files changed, 369 insertions(+), 64 deletions(-) create mode 100644 gramateria/develop/js/config/test.json diff --git a/gramateria/develop/js/config/buttons.js b/gramateria/develop/js/config/buttons.js index b49fbed..f4afb64 100644 --- a/gramateria/develop/js/config/buttons.js +++ b/gramateria/develop/js/config/buttons.js @@ -1,4 +1,10 @@ -import { exportZip } from './../helpers' +import { publishToNetlify } from './../helpers' +import { Notyf } from 'notyf'; + + +const noty = new Notyf({ + position: { y: 'top', x: 'center' } +}) export default [{ id: 'undo', @@ -32,7 +38,7 @@ export default [{ }, { id: 'clean-all', className: 'fa fa-trash icon-blank', - command: (editor, sender) =>{ + command: (editor, sender) => { if (sender) sender.set('active', false); if (confirm('Are you sure to clean the canvas?')) { editor.runCommand('core:canvas-clear'); @@ -42,6 +48,7 @@ export default [{ localStorage.setItem('gjs-html', ''); localStorage.setItem('gjs-css', ''); localStorage.setItem('gjs-styles', ''); + localStorage.setItem('gram-seo', ''); }, 0); } }, @@ -54,48 +61,129 @@ export default [{ className: 'fa fa-globe', command: (editor, sender) => { sender.set('active', 0); + let modal = editor.Modal; - modal.setTitle('Publish'); - modal.setContent('To be continue'); - modal.open(); + modal.setTitle('Deploy'); + + const getSEO = localStorage.getItem('gram-seo'); + const { title, description, token } = getSEO ? JSON.parse(getSEO) : { title: '', description: '' }; + + const form = ` +
        +
        + + +
        +
        + + +
        +
        +

        Netlify

        +
        + + +
        +
        + +
        +
        + `; + + modal.setContent(form); + modal.open({ + attributes: { + class: 'form-modal', + } + }); + + const deployForm = document.querySelector('#deploy-form'); + deployForm.addEventListener('submit', (e) => { + e.preventDefault(); + const formData = new FormData(document.querySelector('#deploy-form')); + const SEO = Object.fromEntries(formData); + const { title, description, token } = SEO; + if (!title) { + noty.error('Title is required'); + return; + } + if (!description) { + noty.error('Description is required'); + return; + } + if (!token) { + noty.error('Netlify token is required'); + return; + } + localStorage.setItem('gram-seo', JSON.stringify(SEO)); + + let html = localStorage.getItem('gjs-html') || ''; + let css = localStorage.getItem('gjs-css') || ''; + const data = { token, title, description, html, css }; + publishToNetlify(data); + }) + }, attributes: { - title: 'Publish web' + title: 'Deploy' } }, { id: 'download', className: 'fa fa-download', - command: (editor, sender) =>{ + command: (editor, sender) => { sender.set('active', 0); let modal = editor.Modal; modal.setTitle('Export'); - + + const getSEO = localStorage.getItem('gram-seo'); + const { title, description } = getSEO ? JSON.parse(getSEO) : { title: '', description: '' }; + const form = ` -
        -
        - - -
        -
        - - -
        -
        - -
        -
        - `; - - +
        +
        + + +
        +
        + + +
        +
        + +
        +
        + `; + modal.setContent(form); - modal.open({attributes: { - class: 'form-modal', - }}); + modal.open({ + attributes: { + class: 'form-modal', + } + }); + + const exportForm = document.querySelector('#export-form'); + exportForm.addEventListener('submit', (e) => { + e.preventDefault(); + const formData = new FormData(document.querySelector('#export-form')); + const SEO = Object.fromEntries(formData); + const { title, description } = SEO; + if (!title) { + noty.error('Title is required'); + return; + } + if (!description) { + noty.error('Description is required'); + return; + } + localStorage.setItem('gram-seo', JSON.stringify(SEO)); + + let html = localStorage.getItem('gjs-html') || ''; + let css = localStorage.getItem('gjs-css') || ''; + const data = { title, description, html, css }; + exportZip(data); + }) - // let html = localStorage.getItem('gjs-html') || ''; - // let css = localStorage.getItem('gjs-css') || ''; - // exportZip({html,css}); }, attributes: { title: 'Download as zip' diff --git a/gramateria/develop/js/config/exportTemplate.js b/gramateria/develop/js/config/exportTemplate.js index 920b143..2aae798 100644 --- a/gramateria/develop/js/config/exportTemplate.js +++ b/gramateria/develop/js/config/exportTemplate.js @@ -1,18 +1,23 @@ export const exportTemplate = (data)=>{ - const {title,html} = data; + const {title,description,html} = data; return ` - ${title} + ${title || ''} + + + - + - ${html} + ${html || ''} - + + + ` } diff --git a/gramateria/develop/js/config/test.json b/gramateria/develop/js/config/test.json new file mode 100644 index 0000000..15746cb --- /dev/null +++ b/gramateria/develop/js/config/test.json @@ -0,0 +1 @@ +{"files"=>{"/index.html"=>"a7a12da81336a3b36e58c720dd3c2c69ae5029da", "/home-ae89e0e2-8356-4f62-a171-163475c29300.html"=>"a7a12da81336a3b36e58c720dd3c2c69ae5029da", "/assets/application.css"=>"efba3e5593fa6314922a1de5d81348cdf1bf6a17", "/assets/apps.css"=>"dedb59b0be1857fbdc789394cd44ade71b8b7011", "/assets/websites.css"=>"3c8c0b46f9619c23aba78d27490f5f042a2d81e2", "/assets/pattern.css"=>"ea8d77b0ffc7fdc095e3dba87782d63e6331331c"}, "draft"=>false} \ No newline at end of file diff --git a/gramateria/develop/js/gramateria.js b/gramateria/develop/js/gramateria.js index 317c27b..f79ab37 100755 --- a/gramateria/develop/js/gramateria.js +++ b/gramateria/develop/js/gramateria.js @@ -247,7 +247,14 @@ class Gramateria { ctg.set('open', false); }); }); + this.editor.getWrapper().addClass('iframe-wrapper'); this.editor.render(); + setTimeout(()=>{ + const iframe = this.editor.Canvas.getFrameEl(); + const iframeStyle = document.createElement('style'); + iframeStyle.innerHTML = '.iframe-wrapper{padding-bottom:40px;}' + iframe.contentDocument.head.appendChild(iframeStyle); + },500) } } diff --git a/gramateria/develop/js/helpers/index.js b/gramateria/develop/js/helpers/index.js index 2c253e8..e9f9ffa 100644 --- a/gramateria/develop/js/helpers/index.js +++ b/gramateria/develop/js/helpers/index.js @@ -1,27 +1,67 @@ import JSZip from 'jszip'; import { saveAs } from 'file-saver'; -import {exportTemplate} from '../config/exportTemplate'; +import { exportTemplate } from '../config/exportTemplate'; +import { Notyf } from 'notyf'; + +const msg = new Notyf({ + position:{ + x:'center', + y:'top' + } +}); export const checkExtension = (fname) => { let ext = /^.+\.([^.]+)$/.exec(fname); return ext == null ? "" : ext[1]; } -export const exportZip = (content) => { +export const exportZip = (data) => { let zip = new JSZip(); - const data = { - title:"Untitle project", - html:content.html - } - zip.file("index.html", exportTemplate(data)); + zip.file("index.html", exportTemplate(data)); let css = zip.folder("css"); - css.file("style.css", content.css); + css.file("style.css", data.css); - zip.generateAsync({type:"blob"}) - .then(function(content) { - let fileName = Date.now()+'-export.zip'; - saveAs(content, fileName); - }); + zip.generateAsync({ type: "blob" }) + .then(function (content) { + let fileName = Date.now() + '-export.zip'; + saveAs(content, fileName); + }); +} + +export const publishToNetlify = (data) => { + let zip = new JSZip(); + zip.file("index.html", exportTemplate(data)); + + let css = zip.folder("css"); + css.file("style.css", data.css); + + zip.generateAsync({ type: "blob" }) + .then(function (content) { + fetch('https://api.netlify.com/api/v1/sites', { + method: 'POST', + headers: { + 'Content-Type': 'application/zip', + 'Authorization': 'Bearer '+data.token + }, + body: content + }).then(e => e.json()) + .then(res => { + if(res){ + msg.success({ + duration:200000, + message: 'URL - https://'+ res.subdomain+'.netlify.app', + dismissible: true + }) + msg.success({ + message: 'Successfully deployed' + }) + } + }).catch(err=>{ + msg.error({ + message: String(err) + }) + }) + }) } \ No newline at end of file diff --git a/gramateria/develop/sass/_global.scss b/gramateria/develop/sass/_global.scss index 76db951..db0b0e6 100644 --- a/gramateria/develop/sass/_global.scss +++ b/gramateria/develop/sass/_global.scss @@ -25,4 +25,8 @@ html { background:var(--theme-color); color:#fff; transform:translateY(-2px); +} + +.required{ + color:red; } \ No newline at end of file diff --git a/gramateria/develop/sass/_overwrite.scss b/gramateria/develop/sass/_overwrite.scss index b79dd39..2bcc29f 100644 --- a/gramateria/develop/sass/_overwrite.scss +++ b/gramateria/develop/sass/_overwrite.scss @@ -172,4 +172,8 @@ label.gjs-radio-item-label, .gjs-four-color-h:hover { color: var(--theme-color); +} + +.iframe-wrapper{ + padding-bottom:30px; } \ No newline at end of file diff --git a/gramateria/dist/gram.min.css b/gramateria/dist/gram.min.css index 1c98c4d..449ed2c 100644 --- a/gramateria/dist/gram.min.css +++ b/gramateria/dist/gram.min.css @@ -168,6 +168,10 @@ html { transform: translateY(-2px); } +.required { + color: red; +} + /* Generated by Glyphter (http://www.glyphter.com) on Tue Mar 12 2019*/ @font-face { font-family: "Glyphter"; @@ -429,3 +433,7 @@ label.gjs-radio-item-label, .gjs-four-color-h:hover { color: var(--theme-color); } + +.iframe-wrapper { + padding-bottom: 30px; +} diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index 974d632..b676678 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -280,7 +280,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../helpers */ "./gramateria/develop/js/helpers/index.js"); +/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); + +var noty = new notyf__WEBPACK_IMPORTED_MODULE_1__.Notyf({ + position: { + y: 'top', + x: 'center' + } +}); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{ id: 'undo', className: 'fa fa-undo icon-undo', @@ -322,6 +330,7 @@ __webpack_require__.r(__webpack_exports__); localStorage.setItem('gjs-html', ''); localStorage.setItem('gjs-css', ''); localStorage.setItem('gjs-styles', ''); + localStorage.setItem('gram-seo', ''); }, 0); } }, @@ -334,12 +343,63 @@ __webpack_require__.r(__webpack_exports__); command: function command(editor, sender) { sender.set('active', 0); var modal = editor.Modal; - modal.setTitle('Publish'); - modal.setContent('To be continue'); - modal.open(); + modal.setTitle('Deploy'); + var getSEO = localStorage.getItem('gram-seo'); + + var _ref = getSEO ? JSON.parse(getSEO) : { + title: '', + description: '' + }, + title = _ref.title, + description = _ref.description, + token = _ref.token; + + var form = "\n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n

        Netlify

        \n
        \n \n \n
        \n
        \n \n
        \n
        \n "); + modal.setContent(form); + modal.open({ + attributes: { + "class": 'form-modal' + } + }); + var deployForm = document.querySelector('#deploy-form'); + deployForm.addEventListener('submit', function (e) { + e.preventDefault(); + var formData = new FormData(document.querySelector('#deploy-form')); + var SEO = Object.fromEntries(formData); + var title = SEO.title, + description = SEO.description, + token = SEO.token; + + if (!title) { + noty.error('Title is required'); + return; + } + + if (!description) { + noty.error('Description is required'); + return; + } + + if (!token) { + noty.error('Netlify token is required'); + return; + } + + localStorage.setItem('gram-seo', JSON.stringify(SEO)); + var html = localStorage.getItem('gjs-html') || ''; + var css = localStorage.getItem('gjs-css') || ''; + var data = { + token: token, + title: title, + description: description, + html: html, + css: css + }; + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.publishToNetlify)(data); + }); }, attributes: { - title: 'Publish web' + title: 'Deploy' } }, { id: 'download', @@ -348,15 +408,51 @@ __webpack_require__.r(__webpack_exports__); sender.set('active', 0); var modal = editor.Modal; modal.setTitle('Export'); - var form = "\n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n \n
        \n
        \n "; + var getSEO = localStorage.getItem('gram-seo'); + + var _ref2 = getSEO ? JSON.parse(getSEO) : { + title: '', + description: '' + }, + title = _ref2.title, + description = _ref2.description; + + var form = "\n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n \n
        \n
        \n "); modal.setContent(form); modal.open({ attributes: { "class": 'form-modal' } - }); // let html = localStorage.getItem('gjs-html') || ''; - // let css = localStorage.getItem('gjs-css') || ''; - // exportZip({html,css}); + }); + var exportForm = document.querySelector('#export-form'); + exportForm.addEventListener('submit', function (e) { + e.preventDefault(); + var formData = new FormData(document.querySelector('#export-form')); + var SEO = Object.fromEntries(formData); + var title = SEO.title, + description = SEO.description; + + if (!title) { + noty.error('Title is required'); + return; + } + + if (!description) { + noty.error('Description is required'); + return; + } + + localStorage.setItem('gram-seo', JSON.stringify(SEO)); + var html = localStorage.getItem('gjs-html') || ''; + var css = localStorage.getItem('gjs-css') || ''; + var data = { + title: title, + description: description, + html: html, + css: css + }; + exportZip(data); + }); }, attributes: { title: 'Download as zip' @@ -416,8 +512,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); var exportTemplate = function exportTemplate(data) { var title = data.title, + description = data.description, html = data.html; - return "\n \n \n \n \n \n ".concat(title, "\n \n \n \n ").concat(html, "\n \n \n "); + return "\n \n \n \n \n \n ".concat(title || '', "\n \n \n\n \n \n \n ").concat(html || '', "\n \n \n \n \n "); }; /***/ }), @@ -1184,6 +1281,8 @@ var Gramateria = /*#__PURE__*/function () { }, { key: "init", value: function init() { + var _this3 = this; + this.codeImportModal(); this.editor.Panels.removeButton('options', 'export-template'); this.editor.on('load', function (editor) { @@ -1196,7 +1295,15 @@ var Gramateria = /*#__PURE__*/function () { ctg.set('open', false); }); }); + this.editor.getWrapper().addClass('iframe-wrapper'); this.editor.render(); + setTimeout(function () { + var iframe = _this3.editor.Canvas.getFrameEl(); + + var iframeStyle = document.createElement('style'); + iframeStyle.innerHTML = '.iframe-wrapper{padding-bottom:40px;}'; + iframe.contentDocument.head.appendChild(iframeStyle); + }, 500); } }]); @@ -1217,29 +1324,34 @@ new Gramateria().init(); __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "checkExtension": () => (/* binding */ checkExtension), -/* harmony export */ "exportZip": () => (/* binding */ exportZip) +/* harmony export */ "exportZip": () => (/* binding */ exportZip), +/* harmony export */ "publishToNetlify": () => (/* binding */ publishToNetlify) /* harmony export */ }); /* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jszip */ "./node_modules/jszip/dist/jszip.min.js"); /* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jszip__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! file-saver */ "./node_modules/file-saver/dist/FileSaver.min.js"); /* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _config_exportTemplate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config/exportTemplate */ "./gramateria/develop/js/config/exportTemplate.js"); +/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); + +var msg = new notyf__WEBPACK_IMPORTED_MODULE_3__.Notyf({ + position: { + x: 'center', + y: 'top' + } +}); var checkExtension = function checkExtension(fname) { var ext = /^.+\.([^.]+)$/.exec(fname); return ext == null ? "" : ext[1]; }; -var exportZip = function exportZip(content) { +var exportZip = function exportZip(data) { var zip = new (jszip__WEBPACK_IMPORTED_MODULE_0___default())(); - var data = { - title: "Untitle project", - html: content.html - }; zip.file("index.html", (0,_config_exportTemplate__WEBPACK_IMPORTED_MODULE_2__.exportTemplate)(data)); var css = zip.folder("css"); - css.file("style.css", content.css); + css.file("style.css", data.css); zip.generateAsync({ type: "blob" }).then(function (content) { @@ -1247,6 +1359,42 @@ var exportZip = function exportZip(content) { (0,file_saver__WEBPACK_IMPORTED_MODULE_1__.saveAs)(content, fileName); }); }; +var publishToNetlify = function publishToNetlify(data) { + var zip = new (jszip__WEBPACK_IMPORTED_MODULE_0___default())(); + zip.file("index.html", (0,_config_exportTemplate__WEBPACK_IMPORTED_MODULE_2__.exportTemplate)(data)); + var css = zip.folder("css"); + css.file("style.css", data.css); + zip.generateAsync({ + type: "blob" + }).then(function (content) { + fetch('https://api.netlify.com/api/v1/sites', { + method: 'POST', + headers: { + 'Content-Type': 'application/zip', + 'Authorization': 'Bearer ' + data.token // oxMMhNCDDYM3eDis7KpLk1BaN9L0rkvNHetjdgw7vRE + + }, + body: content + }).then(function (e) { + return e.json(); + }).then(function (res) { + if (res) { + msg.success({ + duration: 200000, + message: 'URL - https://' + res.subdomain + '.netlify.app', + dismissible: true + }); + msg.success({ + message: 'Successfully deployed' + }); + } + })["catch"](function (err) { + msg.error({ + message: String(err) + }); + }); + }); +}; /***/ }), From 594cffed0277ea0585f02fdc3eafe9c4f056e1c5 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Wed, 21 Jul 2021 16:22:04 +0630 Subject: [PATCH 07/27] fix export error, add css/style.css link in export html --- gramateria/develop/js/config/buttons.js | 2 +- gramateria/develop/js/config/exportTemplate.js | 1 + gramateria/develop/js/config/readyui-blocks.js | 3 ++- gramateria/dist/gram.min.js | 9 ++++----- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/gramateria/develop/js/config/buttons.js b/gramateria/develop/js/config/buttons.js index f4afb64..442947f 100644 --- a/gramateria/develop/js/config/buttons.js +++ b/gramateria/develop/js/config/buttons.js @@ -1,4 +1,4 @@ -import { publishToNetlify } from './../helpers' +import { publishToNetlify,exportZip } from './../helpers' import { Notyf } from 'notyf'; diff --git a/gramateria/develop/js/config/exportTemplate.js b/gramateria/develop/js/config/exportTemplate.js index 2aae798..2d51de9 100644 --- a/gramateria/develop/js/config/exportTemplate.js +++ b/gramateria/develop/js/config/exportTemplate.js @@ -12,6 +12,7 @@ export const exportTemplate = (data)=>{ + ${html || ''} diff --git a/gramateria/develop/js/config/readyui-blocks.js b/gramateria/develop/js/config/readyui-blocks.js index de8a63e..ee00a31 100644 --- a/gramateria/develop/js/config/readyui-blocks.js +++ b/gramateria/develop/js/config/readyui-blocks.js @@ -73,7 +73,8 @@ export default [ - ` + + ` }, { id: 'ready-ui-blog', diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index b676678..b07ff3e 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -451,7 +451,7 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_1__.Notyf({ html: html, css: css }; - exportZip(data); + (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.exportZip)(data); }); }, attributes: { @@ -514,7 +514,7 @@ var exportTemplate = function exportTemplate(data) { var title = data.title, description = data.description, html = data.html; - return "\n \n \n \n \n \n ".concat(title || '', "\n \n \n\n \n \n \n ").concat(html || '', "\n \n \n \n \n "); + return "\n \n \n \n \n \n ".concat(title || '', "\n \n \n\n \n \n \n \n ").concat(html || '', "\n \n \n \n \n "); }; /***/ }), @@ -537,7 +537,7 @@ __webpack_require__.r(__webpack_exports__); attributes: { "class": 'fa fa-window-minimize' }, - content: "
        \n \n
        \n
        \n
        \n
        \n

        Create beautiful website layout with blox UI kit.

        \n

        Success return on investment termsheet buzz conversion value proposition strategy stealth disruptive product management business model canvas social proof

        \n
        \n
        \n \n \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n \"airbnb\"\n
        \n
        \n \"uber\"\n
        \n
        \n \"google\"\n
        \n
        \n \"nike\"\n
        \n
        \n \"dropbox\"\n
        \n
        \n \"stripe\"\n
        \n
        \n
        \n
        \n
        \n
        " + content: "
        \n \n
        \n
        \n
        \n
        \n

        Create beautiful website layout with blox UI kit.

        \n

        Success return on investment termsheet buzz conversion value proposition strategy stealth disruptive product management business model canvas social proof

        \n
        \n
        \n \n \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n \"airbnb\"\n
        \n
        \n \"uber\"\n
        \n
        \n \"google\"\n
        \n
        \n \"nike\"\n
        \n
        \n \"dropbox\"\n
        \n
        \n \"stripe\"\n
        \n
        \n
        \n
        \n
        \n
        \n " }, { id: 'ready-ui-blog', label: 'Blog', @@ -1371,8 +1371,7 @@ var publishToNetlify = function publishToNetlify(data) { method: 'POST', headers: { 'Content-Type': 'application/zip', - 'Authorization': 'Bearer ' + data.token // oxMMhNCDDYM3eDis7KpLk1BaN9L0rkvNHetjdgw7vRE - + 'Authorization': 'Bearer ' + data.token }, body: content }).then(function (e) { From abf8400cc5d2408087e902790efb47bc0c4b879e Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Wed, 21 Jul 2021 16:27:49 +0630 Subject: [PATCH 08/27] exclude seo data in clear canvas --- gramateria/develop/js/config/buttons.js | 1 - gramateria/dist/gram.min.js | 1 - 2 files changed, 2 deletions(-) diff --git a/gramateria/develop/js/config/buttons.js b/gramateria/develop/js/config/buttons.js index 442947f..036ec24 100644 --- a/gramateria/develop/js/config/buttons.js +++ b/gramateria/develop/js/config/buttons.js @@ -48,7 +48,6 @@ export default [{ localStorage.setItem('gjs-html', ''); localStorage.setItem('gjs-css', ''); localStorage.setItem('gjs-styles', ''); - localStorage.setItem('gram-seo', ''); }, 0); } }, diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index b07ff3e..9dd1c1f 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -330,7 +330,6 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_1__.Notyf({ localStorage.setItem('gjs-html', ''); localStorage.setItem('gjs-css', ''); localStorage.setItem('gjs-styles', ''); - localStorage.setItem('gram-seo', ''); }, 0); } }, From d205f086780dbb6367717468d85a44d268a73a86 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Wed, 21 Jul 2021 17:26:03 +0630 Subject: [PATCH 09/27] update readme for v1.0.4 --- README.md | 41 +++++++++++-------- .../develop/js/config/exportTemplate.js | 2 +- gramateria/dist/gram.min.js | 2 +- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 24d5d9d..389f8c0 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,38 @@ -# gramateria -A drag and drop web builder with materialize design. +# Gramateria - v1.0.4 -Grapesjs + Materialize = 🔥 +Gramateria v1.0.4 is a re-rewritten version that changed many features and code. -### Building a desktop app. +### v1.0.4 Change logs -`Note: You can use Gramateria by opening index.html file with Chrome browser and it works exactly the same as Desktop app.` +- Change electron-packager to electron-builder +- Change Materialize CSS to Bootstrap 5 +- Upgrade Grapesjs to v0.17.19 (latest version) +- Added Nelify deployment +- Messy codes to modular code +- Added laravel mix for script comipling +- Added readyui.co blocks +- Add Notyf for toast messages +- Remove Gapesjs export plugin ----- + +A drag and drop web builder + +### Building a desktop app. ```npm install``` ```npm start``` ##### Mac -```npm run build:mac``` - -##### Linux -```npm run build:lin``` - - -### Tutorials -[Watch tutorials](https://www.youtube.com/watch?v=KNUIprEQm8M&index=2&list=PLuK4uSiMBzdleiFDbc5HtLgYNTGxxH7IZ) +```npm run pack``` +---- -### Credit goes to -- Grapesjs [Grapes JS](http://www.grapesjs.com/ "Grapes Js") -- Materialize [Materialize](http://www.materializecss.com/ "Materialize") -- Electron [Electron JS](http://www.electronjs.org/ "Electron Js") +### Credits +- Grapesjs [Grapes JS](https://www.grapesjs.com/ "Grapes Js") +- Bootstrap 5 [Bootstrap 5](https://www.getbootstrap.com/ "Bootstrap 5") +- Electron JS [Electron JS](https//www.electronjs.org/ "Electron Js") +- Readyui [Readyui](https://readyui.co/ "Readyui") Show your support by 🌟 the project, thanks. diff --git a/gramateria/develop/js/config/exportTemplate.js b/gramateria/develop/js/config/exportTemplate.js index 2d51de9..a025c78 100644 --- a/gramateria/develop/js/config/exportTemplate.js +++ b/gramateria/develop/js/config/exportTemplate.js @@ -16,7 +16,7 @@ export const exportTemplate = (data)=>{ ${html || ''} - + ` diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index 9dd1c1f..c6c80bc 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -513,7 +513,7 @@ var exportTemplate = function exportTemplate(data) { var title = data.title, description = data.description, html = data.html; - return "\n \n \n \n \n \n ".concat(title || '', "\n \n \n\n \n \n \n \n ").concat(html || '', "\n \n \n \n \n "); + return "\n \n \n \n \n \n ".concat(title || '', "\n \n \n\n \n \n \n \n ").concat(html || '', "\n \n \n \n \n "); }; /***/ }), From 4c8afa03db68c054cb5c4daf4fa7b1cd62fe36f8 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Wed, 21 Jul 2021 17:42:37 +0630 Subject: [PATCH 10/27] =?UTF-8?q?update=20readme=20=F0=9F=94=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 37 +++++++++++++++++++++++-------------- package.json | 1 + 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 389f8c0..a43dd55 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,29 @@ -# Gramateria - v1.0.4 +# Gramateria - v1.0.4 +A drag and drop web builder + Gramateria v1.0.4 is a re-rewritten version that changed many features and code. +> Although I have stopped developing this app for a while, there are still many users and I feel a little bad because of my old/dirty codes. So I decided to refactor the codes and add some features to be more useful for developers and non-developers. + + +## Installation + +```npm install``` + +```npm start``` + +#### Generate sources +```npm run gen``` + +#### Watch sources +```npm run watch``` + + +##### Build desktop app +```npm run pack``` +---- + ### v1.0.4 Change logs - Change electron-packager to electron-builder @@ -15,19 +37,6 @@ Gramateria v1.0.4 is a re-rewritten version that changed many features and code. - Remove Gapesjs export plugin -A drag and drop web builder - -### Building a desktop app. - -```npm install``` - -```npm start``` - -##### Mac -```npm run pack``` - ----- - ### Credits - Grapesjs [Grapes JS](https://www.grapesjs.com/ "Grapes Js") - Bootstrap 5 [Bootstrap 5](https://www.getbootstrap.com/ "Bootstrap 5") diff --git a/package.json b/package.json index d36714a..f56930b 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "main": "index.js", "scripts": { "gen": "mix", + "watch": "mix watch", "start": "electron index.js", "pack": "electron-builder --dir", "dist": "electron-builder" From 6638ed241a8fa671aa32490555698398ac7ab776 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Wed, 21 Jul 2021 19:55:03 +0630 Subject: [PATCH 11/27] change version --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a43dd55..806a54b 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Gramateria - v1.0.4 +# Gramateria - v1.0.6 A drag and drop web builder -Gramateria v1.0.4 is a re-rewritten version that changed many features and code. +Gramateria v1.0.6 is a re-rewritten version that changed many features and code. > Although I have stopped developing this app for a while, there are still many users and I feel a little bad because of my old/dirty codes. So I decided to refactor the codes and add some features to be more useful for developers and non-developers. @@ -24,7 +24,7 @@ Gramateria v1.0.4 is a re-rewritten version that changed many features and code. ```npm run pack``` ---- -### v1.0.4 Change logs +### v1.0.6 Change logs - Change electron-packager to electron-builder - Change Materialize CSS to Bootstrap 5 From 05511a1410029390bc81d495a68304c2df5473a4 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Wed, 21 Jul 2021 21:05:02 +0630 Subject: [PATCH 12/27] add settings for link --- gramateria/develop/js/gramateria.js | 52 +++++++++++++----- gramateria/dist/gram.min.js | 84 ++++++++++++----------------- 2 files changed, 74 insertions(+), 62 deletions(-) diff --git a/gramateria/develop/js/gramateria.js b/gramateria/develop/js/gramateria.js index f79ab37..dfe0b56 100755 --- a/gramateria/develop/js/gramateria.js +++ b/gramateria/develop/js/gramateria.js @@ -1,6 +1,6 @@ import blockManager from './config/blockManager' import styleManager from './config/styleManager' -import commands from './config/commands' +// import commands from './config/commands' import assetManager from './config/assetManager' import buttons from './config/buttons' import { checkExtension } from './helpers/index.js' @@ -13,8 +13,8 @@ class Gramateria { this.msg = new Notyf({ duration: 3000, position: { - x: 'center', - y: 'top' + x: 'center', + y: 'top' } }); this.editor = grapesjs.init({ @@ -35,7 +35,7 @@ class Gramateria { 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js' ], }, - commands, + // commands, assetManager, blockManager, styleManager, @@ -76,7 +76,7 @@ class Gramateria { let header_menus = document.createElement("div"); let fileLoadInput = document.createElement("input"); fileLoadInput.style.display = 'none'; - fileLoadInput.setAttribute('type','file'); + fileLoadInput.setAttribute('type', 'file'); let htmlCodeEditor = this.buildCodeEditor('html'); let cssCodeEditor = this.buildCodeEditor('css'); @@ -96,14 +96,14 @@ class Gramateria { exportTxt.className = 'btn ' + prefix + 'btn-export'; - fileLoadInput.onchange = (e) =>{ + fileLoadInput.onchange = (e) => { let currentFile = e.target.files[0]; let fType = checkExtension(currentFile['name']); if (currentFile === undefined) { this.msg.error('Please select a file'); return; } - const allowFileType = ['gram','txt']; + const allowFileType = ['gram', 'txt']; if (!allowFileType.includes(fType)) { this.msg.error('You can only import .gram or .txt extension'); return; @@ -139,7 +139,7 @@ class Gramateria { this.msg.success('You have copied HTML codes!'); }; - copyCss.onclick = () => { + copyCss.onclick = () => { let cssCodes = cssCodeEditor.editor.getValue(); let dummy = document.createElement("input"); document.body.appendChild(dummy); @@ -234,27 +234,55 @@ class Gramateria { }); return codeEditor; } - + init() { this.codeImportModal(); this.editor.Panels.removeButton('options', 'export-template'); this.editor.on('load', (editor) => { editor.Panels.getButton('views', 'open-blocks').set('active', true) - editor.BlockManager.getCategories().each( (ctg) => { + editor.BlockManager.getCategories().each((ctg) => { if (ctg.attributes.id === 'Sections') { return; } ctg.set('open', false); }); + + + // ---------------------------------------- + // Load and show settings and style manager + // ---------------------------------------- + let openTmBtn = editor.Panels.getButton('views', 'open-tm'); + openTmBtn && openTmBtn.set('active', 1); + let openSm = editor.Panels.getButton('views', 'open-sm'); + openSm && openSm.set('active', 1); + + // Add Settings Sector + let traitsSector = document.createElement('div'); + traitsSector.innerHTML = '
        ' + + '
        Settings
        ' + + '
        '; + let traitsProps = traitsSector.querySelector('.gjs-sm-properties'); + traitsProps.append(document.querySelector('.gjs-trt-traits')); + document.querySelector('.gjs-sm-sectors').insertAdjacentElement('beforebegin',traitsSector); + traitsSector.querySelector('.gjs-sm-title').addEventListener('click', () => { + let traitStyle = window.getComputedStyle(traitsProps); + let hidden = traitStyle.display == 'none'; + if (hidden) { + traitsProps.style.display = 'block'; + } else { + traitsProps.style.display = 'none'; + } + }); }); + this.editor.getWrapper().addClass('iframe-wrapper'); this.editor.render(); - setTimeout(()=>{ + setTimeout(() => { const iframe = this.editor.Canvas.getFrameEl(); const iframeStyle = document.createElement('style'); iframeStyle.innerHTML = '.iframe-wrapper{padding-bottom:40px;}' iframe.contentDocument.head.appendChild(iframeStyle); - },500) + }, 500) } } diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index c6c80bc..bbc1c0e 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -460,44 +460,6 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_1__.Notyf({ /***/ }), -/***/ "./gramateria/develop/js/config/commands.js": -/*!**************************************************!*\ - !*** ./gramateria/develop/js/config/commands.js ***! - \**************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - defaults: [{ - id: 'undo', - run: function run(editor, sender) { - sender.set('active', false); - editor.UndoManager.undo(true); - } - }, { - id: 'redo', - run: function run(editor, sender) { - sender.set('active', false); - editor.UndoManager.redo(true); - } - }, { - id: 'clean-all', - run: function run(editor, sender) { - sender.set('active', false); - - if (confirm('Are you sure to clean the canvas?')) { - editor.runCommand('core:canvas-clear'); - } - } - }] -}); - -/***/ }), - /***/ "./gramateria/develop/js/config/exportTemplate.js": /*!********************************************************!*\ !*** ./gramateria/develop/js/config/exportTemplate.js ***! @@ -1014,12 +976,11 @@ __webpack_require__.r(__webpack_exports__); __webpack_require__.r(__webpack_exports__); /* harmony import */ var _config_blockManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config/blockManager */ "./gramateria/develop/js/config/blockManager.js"); /* harmony import */ var _config_styleManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./config/styleManager */ "./gramateria/develop/js/config/styleManager.js"); -/* harmony import */ var _config_commands__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config/commands */ "./gramateria/develop/js/config/commands.js"); -/* harmony import */ var _config_assetManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config/assetManager */ "./gramateria/develop/js/config/assetManager.js"); -/* harmony import */ var _config_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config/buttons */ "./gramateria/develop/js/config/buttons.js"); -/* harmony import */ var _helpers_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers/index.js */ "./gramateria/develop/js/helpers/index.js"); -/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); -/* harmony import */ var notyf_notyf_min_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! notyf/notyf.min.css */ "./node_modules/notyf/notyf.min.css"); +/* harmony import */ var _config_assetManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config/assetManager */ "./gramateria/develop/js/config/assetManager.js"); +/* harmony import */ var _config_buttons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config/buttons */ "./gramateria/develop/js/config/buttons.js"); +/* harmony import */ var _helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./helpers/index.js */ "./gramateria/develop/js/helpers/index.js"); +/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); +/* harmony import */ var notyf_notyf_min_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! notyf/notyf.min.css */ "./node_modules/notyf/notyf.min.css"); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -1029,7 +990,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - + // import commands from './config/commands' @@ -1061,7 +1022,7 @@ var Gramateria = /*#__PURE__*/function () { return codeEditor; }); - this.msg = new notyf__WEBPACK_IMPORTED_MODULE_6__.Notyf({ + this.msg = new notyf__WEBPACK_IMPORTED_MODULE_5__.Notyf({ duration: 3000, position: { x: 'center', @@ -1081,8 +1042,8 @@ var Gramateria = /*#__PURE__*/function () { styles: ['https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.0.2/materia/bootstrap.min.css', 'https://cdn.statically.io/gh/gramateria/readyui-free/main/css/style.min.css'], scripts: ['https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js'] }, - commands: _config_commands__WEBPACK_IMPORTED_MODULE_2__.default, - assetManager: _config_assetManager__WEBPACK_IMPORTED_MODULE_3__.default, + // commands, + assetManager: _config_assetManager__WEBPACK_IMPORTED_MODULE_2__.default, blockManager: _config_blockManager__WEBPACK_IMPORTED_MODULE_0__.default, styleManager: _config_styleManager__WEBPACK_IMPORTED_MODULE_1__.default, storageManager: { @@ -1097,7 +1058,7 @@ var Gramateria = /*#__PURE__*/function () { storeCss: 1 } }); - this.editor.Panels.addButton('options', _config_buttons__WEBPACK_IMPORTED_MODULE_4__.default); + this.editor.Panels.addButton('options', _config_buttons__WEBPACK_IMPORTED_MODULE_3__.default); this.modal = this.editor.Modal; } @@ -1139,7 +1100,7 @@ var Gramateria = /*#__PURE__*/function () { fileLoadInput.onchange = function (e) { var currentFile = e.target.files[0]; - var fType = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.checkExtension)(currentFile['name']); + var fType = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.checkExtension)(currentFile['name']); if (currentFile === undefined) { _this2.msg.error('Please select a file'); @@ -1292,6 +1253,29 @@ var Gramateria = /*#__PURE__*/function () { } ctg.set('open', false); + }); // ---------------------------------------- + // Load and show settings and style manager + // ---------------------------------------- + + var openTmBtn = editor.Panels.getButton('views', 'open-tm'); + openTmBtn && openTmBtn.set('active', 1); + var openSm = editor.Panels.getButton('views', 'open-sm'); + openSm && openSm.set('active', 1); // Add Settings Sector + + var traitsSector = document.createElement('div'); + traitsSector.innerHTML = '
        ' + '
        Settings
        ' + '
        '; + var traitsProps = traitsSector.querySelector('.gjs-sm-properties'); + traitsProps.append(document.querySelector('.gjs-trt-traits')); + document.querySelector('.gjs-sm-sectors').insertAdjacentElement('beforebegin', traitsSector); + traitsSector.querySelector('.gjs-sm-title').addEventListener('click', function () { + var traitStyle = window.getComputedStyle(traitsProps); + var hidden = traitStyle.display == 'none'; + + if (hidden) { + traitsProps.style.display = 'block'; + } else { + traitsProps.style.display = 'none'; + } }); }); this.editor.getWrapper().addClass('iframe-wrapper'); From 7b8ecbbed661dbec34c4395d0411597183f538e2 Mon Sep 17 00:00:00 2001 From: ronaldaug <33022876+ronaldaug@users.noreply.github.com> Date: Thu, 22 Jul 2021 23:07:35 +0630 Subject: [PATCH 13/27] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 806a54b..9d94fda 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A drag and drop web builder Gramateria v1.0.6 is a re-rewritten version that changed many features and code. -> Although I have stopped developing this app for a while, there are still many users and I feel a little bad because of my old/dirty codes. So I decided to refactor the codes and add some features to be more useful for developers and non-developers. +> Although I have stopped developing this app for a while, there are still many users and I feel a little bad because of my old/dirty codes. So I decided to refactor the codes and add some features to be more useful for developers and non-developers in this v1.0.6. ## Installation From 8c1b840a61d336d2c04aea49cd16e5a7605fed83 Mon Sep 17 00:00:00 2001 From: ronaldaug <33022876+ronaldaug@users.noreply.github.com> Date: Thu, 22 Jul 2021 23:08:11 +0630 Subject: [PATCH 14/27] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9d94fda..242394f 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Gramateria v1.0.6 is a re-rewritten version that changed many features and code. - Upgrade Grapesjs to v0.17.19 (latest version) - Added Nelify deployment - Messy codes to modular code -- Added laravel mix for script comipling +- Added laravel mix for script compling - Added readyui.co blocks - Add Notyf for toast messages - Remove Gapesjs export plugin From d49eafb60241a25f4e249578ca104e6a5d5a7579 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Sat, 24 Jul 2021 21:47:23 +0630 Subject: [PATCH 15/27] add global js, remove ready-ui --- README.md | 3 +- gramateria/develop/css/global.css | 15 + gramateria/develop/js/config/blockManager.js | 4 +- gramateria/develop/js/config/buttons.js | 20 +- .../develop/js/config/exportTemplate.js | 11 +- .../develop/js/config/readyui-blocks.js | 1003 -------------- gramateria/develop/js/config/sectionBlocks.js | 147 ++ gramateria/develop/js/global.js | 26 + gramateria/develop/js/gramateria.js | 26 +- gramateria/develop/js/helpers/index.js | 43 +- gramateria/develop/sass/gramateria.scss | 13 +- .../sass/{ => partials}/_flex-icons.scss | 0 .../develop/sass/{ => partials}/_global.scss | 0 .../sass/{ => partials}/_glyphter.scss | 0 .../develop/sass/{ => partials}/_gram.scss | 0 .../sass/{ => partials}/_overwrite.scss | 0 .../develop/sass/partials/_spinner.scss | 38 + .../sass/{ => partials}/_variables.scss | 0 gramateria/dist/global.css | 15 + gramateria/dist/global.js | 26 + gramateria/dist/gram.min.css | 41 + gramateria/dist/gram.min.js | 1187 ++++++++++++++--- index.html | 49 - webpack.mix.js | 10 + 24 files changed, 1413 insertions(+), 1264 deletions(-) create mode 100644 gramateria/develop/css/global.css delete mode 100644 gramateria/develop/js/config/readyui-blocks.js create mode 100644 gramateria/develop/js/config/sectionBlocks.js create mode 100644 gramateria/develop/js/global.js rename gramateria/develop/sass/{ => partials}/_flex-icons.scss (100%) rename gramateria/develop/sass/{ => partials}/_global.scss (100%) rename gramateria/develop/sass/{ => partials}/_glyphter.scss (100%) rename gramateria/develop/sass/{ => partials}/_gram.scss (100%) rename gramateria/develop/sass/{ => partials}/_overwrite.scss (100%) create mode 100644 gramateria/develop/sass/partials/_spinner.scss rename gramateria/develop/sass/{ => partials}/_variables.scss (100%) create mode 100644 gramateria/dist/global.css create mode 100644 gramateria/dist/global.js diff --git a/README.md b/README.md index 242394f..2fc1357 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Gramateria v1.0.6 is a re-rewritten version that changed many features and code. - Added Nelify deployment - Messy codes to modular code - Added laravel mix for script compling -- Added readyui.co blocks +- Added new blocks - Add Notyf for toast messages - Remove Gapesjs export plugin @@ -41,7 +41,6 @@ Gramateria v1.0.6 is a re-rewritten version that changed many features and code. - Grapesjs [Grapes JS](https://www.grapesjs.com/ "Grapes Js") - Bootstrap 5 [Bootstrap 5](https://www.getbootstrap.com/ "Bootstrap 5") - Electron JS [Electron JS](https//www.electronjs.org/ "Electron Js") -- Readyui [Readyui](https://readyui.co/ "Readyui") Show your support by 🌟 the project, thanks. diff --git a/gramateria/develop/css/global.css b/gramateria/develop/css/global.css new file mode 100644 index 0000000..529c6fb --- /dev/null +++ b/gramateria/develop/css/global.css @@ -0,0 +1,15 @@ +body{ + background:#f6f9f7 !important; + font-family: 'Roboto', sans-serif; + font-size:1.1rem; +} + +section{ + padding:100px 0 100px; +} + +@media(max-width:768px){ + section{ + padding:50px 0 50px; + } +} \ No newline at end of file diff --git a/gramateria/develop/js/config/blockManager.js b/gramateria/develop/js/config/blockManager.js index 0cde6ba..7b1c228 100644 --- a/gramateria/develop/js/config/blockManager.js +++ b/gramateria/develop/js/config/blockManager.js @@ -1,4 +1,4 @@ -import readyuiBlocks from './readyui-blocks'; +import sectionBlocks from './sectionBlocks'; const bootstrapBasicBlocks = [ { @@ -293,7 +293,7 @@ const bootstrapBasicBlocks = [ } ] -const blocks = [...readyuiBlocks,...bootstrapBasicBlocks] +const blocks = [...sectionBlocks,...bootstrapBasicBlocks] const blocksObj = { blocks diff --git a/gramateria/develop/js/config/buttons.js b/gramateria/develop/js/config/buttons.js index 036ec24..1f5158d 100644 --- a/gramateria/develop/js/config/buttons.js +++ b/gramateria/develop/js/config/buttons.js @@ -1,4 +1,4 @@ -import { publishToNetlify,exportZip } from './../helpers' +import { publishToNetlify,exportZip,getGlobalJsCss } from './../helpers' import { Notyf } from 'notyf'; @@ -97,7 +97,7 @@ export default [{ }); const deployForm = document.querySelector('#deploy-form'); - deployForm.addEventListener('submit', (e) => { + deployForm.addEventListener('submit', async (e) => { e.preventDefault(); const formData = new FormData(document.querySelector('#deploy-form')); const SEO = Object.fromEntries(formData); @@ -116,9 +116,10 @@ export default [{ } localStorage.setItem('gram-seo', JSON.stringify(SEO)); - let html = localStorage.getItem('gjs-html') || ''; - let css = localStorage.getItem('gjs-css') || ''; - const data = { token, title, description, html, css }; + let html = editor.getHtml() || ''; + let css = editor.getCss({ avoidProtected:true }) || ''; + let global = await getGlobalJsCss(); + const data = { token, title, description, html, css, global }; publishToNetlify(data); }) @@ -162,7 +163,7 @@ export default [{ }); const exportForm = document.querySelector('#export-form'); - exportForm.addEventListener('submit', (e) => { + exportForm.addEventListener('submit', async (e) => { e.preventDefault(); const formData = new FormData(document.querySelector('#export-form')); const SEO = Object.fromEntries(formData); @@ -177,9 +178,10 @@ export default [{ } localStorage.setItem('gram-seo', JSON.stringify(SEO)); - let html = localStorage.getItem('gjs-html') || ''; - let css = localStorage.getItem('gjs-css') || ''; - const data = { title, description, html, css }; + let html = editor.getHtml() || ''; + let css = editor.getCss({ avoidProtected:true }) || ''; + let global = await getGlobalJsCss(); + const data = { title, description, html, css, global }; exportZip(data); }) diff --git a/gramateria/develop/js/config/exportTemplate.js b/gramateria/develop/js/config/exportTemplate.js index a025c78..d8e63a8 100644 --- a/gramateria/develop/js/config/exportTemplate.js +++ b/gramateria/develop/js/config/exportTemplate.js @@ -9,14 +9,17 @@ export const exportTemplate = (data)=>{ ${title || ''} - - - + + + + + + ${html || ''} - + ` diff --git a/gramateria/develop/js/config/readyui-blocks.js b/gramateria/develop/js/config/readyui-blocks.js deleted file mode 100644 index ee00a31..0000000 --- a/gramateria/develop/js/config/readyui-blocks.js +++ /dev/null @@ -1,1003 +0,0 @@ -export default [ - { - id: 'ready-ui-header', - label: 'Header', - category: 'Sections', - attributes: { - class: 'fa fa-window-minimize' - }, - content: `
        - -
        -
        -
        -
        -

        Create beautiful website layout with blox UI kit.

        -

        Success return on investment termsheet buzz conversion value proposition strategy stealth disruptive product management business model canvas social proof

        -
        -
        - - -
        -
        -
        -
        - -
        -
        -
        - ` - }, - { - id: 'ready-ui-blog', - label: 'Blog', - category: 'Sections', - attributes: { - class: 'fa fa-th-large' - }, - content: `
        -
        -

        Recent posts

        -
        -
        -
        - img -
        -

        On: 20 October 4minutes read

        - -
        -
        -
        -
        -
        - img -
        -

        On: 20 October 4 minutes read

        - -
        -
        -
        -
        -
        - img -
        -

        On: 20 October 4 minutes read

        - -
        -
        -
        -
        -
        -
        ` - }, - { - id: 'ready-ui-contact', - label: 'Contact', - category: 'Sections', - attributes: { - class: 'fa fa-envelope' - }, - content: `
        -
        -
        -
        -

        Chat with our sales team

        -

        Network effects client seed money responsive web design deployment twitter - rate traction advisor business-to-consumer founders pivot iPhone handshake.

        -
        -
        -
        -
        -
        - - -
        -
        - - -
        -
        - - -
        -
        - - -
        -
        - -
        -
        - -
        -
        -
        - - -
        -
        -
        - -
        -
        -
        -
        -
        -
        -
        ` - }, - { - id: 'ready-ui-faq', - label: 'FAQ', - category: 'Sections', - attributes: { - class: 'fa fa-question-circle-o' - }, - content: `
        -
        -
        -
        -

        FAQ’s

        -
        -
        -
        -
        - - -
        -
        -
        -
        -
        -
        -
        -
        -
        -

        - -

        -
        -
        -

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market - gen-z research & development analytics business-to-business creative business-to-consumer technology - freemium. -

        -
        -
        -
        -
        -

        - -

        -
        -
        -

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market - gen-z research & development analytics business-to-business creative business-to-consumer technology - freemium. -

        -
        -
        -
        -
        -

        - -

        -
        -
        -

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market - gen-z research & development analytics business-to-business creative business-to-consumer technology - freemium. -

        -
        -
        -
        - -
        -

        - -

        -
        -
        -

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market - gen-z research & development analytics business-to-business creative business-to-consumer technology - freemium. -

        -
        -
        -
        - -
        -

        - -

        -
        -
        - Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market - gen-z research & development analytics business-to-business creative business-to-consumer technology - freemium. -
        -
        -
        -
        -

        - -

        -
        -
        -

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market - gen-z research & development analytics business-to-business creative business-to-consumer technology - freemium. -

        -
        -
        -
        -
        -

        - -

        -
        -
        -

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market - gen-z research & development analytics business-to-business creative business-to-consumer technology - freemium. -

        -
        -
        -
        -
        -
        -
        -
        -
        ` - }, - { - id: 'ready-ui-feature', - label: 'Feature', - category: 'Sections', - attributes: { - class: 'fa fa-server' - }, - content: ` ` - }, - { - id: 'ready-ui-footer', - label: 'Footer', - category: 'Sections', - attributes: { - class: 'fa fa-desktop' - }, - content: `` - }, - { - id: 'ready-ui-portfolio', - label: 'Portfolio', - category: 'Sections', - attributes: { - class: 'fa fa-newspaper-o' - }, - content: `
        -
        -
        -
        -
        -

        Portfolio

        -

        Client sales beta crowdfunding agile development launch party angel investor venture android influencer.

        -
        -
        -
        -
        -
        - img -
        Best design system
        -

        Design system

        -
        -
        - img -
        Blox wireframe kit 1.0
        -

        Ui Kit

        -
        -
        - img -
        Blox wireframe kit 1.0
        -

        Ui Kit

        -
        -
        -
        -
        ` - }, - { - id: 'ready-ui-pricing', - label: 'Pricing', - category: 'Sections', - attributes: { - class: 'fa fa-bars' - }, - content: `
        -
        -
        -
        -

        Choose Your Plan

        -

        Launch party social proof leverage MVP lean startup creative equity startup direct mailing.

        -
        -
        -
        -

        $39.95

        -
        Monthly
        -
        -

        Instant Access to Entire Course

        -

        All Lessons & Classes From White to Black

        -

        Connect & Train With Students in the Course

        -

        Accredited Rank Testing & Advancement

        -

        Instructor Support, Feedback & Guidance

        -

        Fresh Training Material Added Monthly

        -

        Cancel Anytime

        - Enroll Now -

        Per month payment

        -
        -
        -
        -
        -

        $179

        -
        Annualy
        -
        -

        Instant Access to Entire Course

        -

        90+ Follow Along Classes

        -

        100+ Technique Lessons

        -

        Fresh Training Material Added Monthly

        -

        Accredited Rank Testing & Advancement

        -

        Instructor Support, Feedback & Guidance

        -

        Pay $179.70 Every Six Months (Save 25%)

        -

        Cancel Anytime

        - Enroll Now -

        One time yearly payment

        -
        -
        -
        -
        -

        $195.00

        -
        Life Time
        -
        -

        Instant Access to Entire Course

        -

        90+ Follow Along Classes

        -

        125+ Technique Lessons

        -

        Fresh Training Material Added Monthly

        -

        Accredited Rank Testing & Advancement

        -

        Instructor Support, Feedback & Guidance

        -

        Access For Life Pay - Upfront

        -

        Save Over $1300 on Your Journey

        - Enroll Now -

        One time payment

        -
        -
        -
        -
        -
        ` - }, - { - id: 'ready-ui-team', - label: 'Team', - category: 'Sections', - attributes: { - class: 'fa fa-users' - }, - content: `
        -
        -
        -
        -
        -

        The Awesome Team

        -

        Launch party social proof leverage MVP lean startup creative equity startup direct - mailing. Niche market startup paradigm shift learning curve.

        -
        -
        -
        -
        -
        -
        - img -
        Arther Melo
        -

        Design system

        -
        -
        -
        -
        - img -
        Lisa Luiz
        -

        Ui Kit

        -
        -
        -
        -
        - img -
        Ena Williams
        -

        Ui Kit

        -
        -
        -
        -
        - img -
        Xavier Pablo
        -

        Ui Kit

        -
        -
        -
        -
        - img -
        Arther Melo
        -

        Design system

        -
        -
        -
        -
        - img -
        Lisa Luiz
        -

        Ui Kit

        -
        -
        -
        -
        - img -
        Ena Williams
        -

        Ui Kit

        -
        -
        -
        -
        - img -
        Xavier Pablo
        -

        Ui Kit

        -
        -
        -
        -
        -
        ` - }, - { - id: 'ready-ui-testimonial', - label: 'Testimonial', - category: 'Sections', - attributes: { - class: 'fa fa-th' - }, - content: `
        -
        -
        -
        -

        What clients say

        -

        Launch party social proof leverage MVP lean startup creative equity - startup direct - mailing. Niche market startup paradigm shift learning curve.

        -
        -
        -
        -
        - -
        -
        - -
        -
        - -
        -
        -
        -
        ` - } -] \ No newline at end of file diff --git a/gramateria/develop/js/config/sectionBlocks.js b/gramateria/develop/js/config/sectionBlocks.js new file mode 100644 index 0000000..286eb61 --- /dev/null +++ b/gramateria/develop/js/config/sectionBlocks.js @@ -0,0 +1,147 @@ +export default [ + { + id: 'section-header', + label: 'Header', + category: 'Sections', + attributes: { + class: 'fa fa-window-minimize' + }, + content: ` +
        +

        Gramateria

        +

        Fastest way to build single HTML pages

        +
        + + +
        +
        + Gramateria +
        + +
        + ` + }, + { + id: 'section-blog', + label: 'Blog', + category: 'Sections', + attributes: { + class: 'fa fa-th-large' + }, + content: `
        +
        +

        Recent Posts

        +
        +
        +
        +
        +
        +
        + +
        +
        + +

        Post Title

        +
        +
        +
        John Doe
        +
        + 4 min read +
        +
        +

        + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio delectus assumenda, voluptatibus rem labore nesciunt magnam ab provident odio ipsam! + +

        + +
        +
        +
        +
        +
        +
        + +
        +
        + +

        Post Title

        +
        +
        +
        John Doe
        +
        + 4 min read +
        +
        +

        + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio delectus assumenda, voluptatibus rem labore nesciunt magnam ab provident odio ipsam! + +

        + +
        +
        +
        +
        +
        +
        + +
        +
        + +

        Post Title

        +
        +
        +
        John Doe
        +
        + 4 min read +
        +
        +

        + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio delectus assumenda, voluptatibus rem labore nesciunt magnam ab provident odio ipsam! + +

        + +
        +
        +
        +
        +
        +
        ` + } +] \ No newline at end of file diff --git a/gramateria/develop/js/global.js b/gramateria/develop/js/global.js new file mode 100644 index 0000000..7519db2 --- /dev/null +++ b/gramateria/develop/js/global.js @@ -0,0 +1,26 @@ +/*---------------------------------- +Smooth scroll to sections +------------------------------------*/ +let allAnchors = document.querySelectorAll('a[href^="#"]'); +const listenAllA = (alllinks) => { + if (!alllinks) return; + alllinks.forEach(link => { + link.addEventListener('click', (e) => { + if(!link.href.includes('#')){ + if(link.target){ + window.open(link.href,'_blank'); + return; + } + window.location.href = link.href; + return; + } + e.preventDefault(); + if (!link.hash.substring(1)) return; + const targetSection = document.querySelector('section#' + link.hash.substring(1)); + let goTo = targetSection.offsetTop; + window.scrollTo({ top: goTo - 100, behavior: 'smooth' }); + }); + }) +} + +listenAllA(allAnchors); \ No newline at end of file diff --git a/gramateria/develop/js/gramateria.js b/gramateria/develop/js/gramateria.js index dfe0b56..da1a6c7 100755 --- a/gramateria/develop/js/gramateria.js +++ b/gramateria/develop/js/gramateria.js @@ -3,7 +3,7 @@ import styleManager from './config/styleManager' // import commands from './config/commands' import assetManager from './config/assetManager' import buttons from './config/buttons' -import { checkExtension } from './helpers/index.js' +import { checkExtension, loadingSpinner } from './helpers/index.js' import { Notyf } from 'notyf'; import 'notyf/notyf.min.css'; // for React, Vue and Svelte @@ -26,13 +26,17 @@ class Gramateria { height: '100%', fromElement: true, clearOnRender: 0, + protectedCss:'.iframe-wrapper{padding-bottom:30px;}section:last-child{margin-bottom:30px}', canvas: { styles: [ - 'https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.0.2/materia/bootstrap.min.css', - 'https://cdn.statically.io/gh/gramateria/readyui-free/main/css/style.min.css' + 'https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap', + 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/css/bootstrap.min.css', + 'https://cdnjs.cloudflare.com/ajax/libs/line-awesome/1.3.0/font-awesome-line-awesome/css/all.min.css', + 'gramateria/dist/global.css' ], scripts: [ - 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js' + 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js', + 'gramateria/dist/global.js' ], }, // commands, @@ -154,7 +158,7 @@ class Gramateria { // onclick save as button inside import editor exportTxt.onclick = () => { let InnerHtml = this.editor.getHtml(); - let Css = this.editor.getCss(); + let Css = this.editor.getCss({ avoidProtected:true }); let text = InnerHtml + "'; let blob = new Blob([text], { type: "text/plain" @@ -263,7 +267,7 @@ class Gramateria { ''; let traitsProps = traitsSector.querySelector('.gjs-sm-properties'); traitsProps.append(document.querySelector('.gjs-trt-traits')); - document.querySelector('.gjs-sm-sectors').insertAdjacentElement('beforebegin',traitsSector); + document.querySelector('.gjs-sm-sectors').insertAdjacentElement('beforebegin', traitsSector); traitsSector.querySelector('.gjs-sm-title').addEventListener('click', () => { let traitStyle = window.getComputedStyle(traitsProps); let hidden = traitStyle.display == 'none'; @@ -277,13 +281,9 @@ class Gramateria { this.editor.getWrapper().addClass('iframe-wrapper'); this.editor.render(); - setTimeout(() => { - const iframe = this.editor.Canvas.getFrameEl(); - const iframeStyle = document.createElement('style'); - iframeStyle.innerHTML = '.iframe-wrapper{padding-bottom:40px;}' - iframe.contentDocument.head.appendChild(iframeStyle); - }, 500) } } -(new Gramateria()).init(); \ No newline at end of file +(new Gramateria()).init(); + +loadingSpinner(); \ No newline at end of file diff --git a/gramateria/develop/js/helpers/index.js b/gramateria/develop/js/helpers/index.js index e9f9ffa..79efeae 100644 --- a/gramateria/develop/js/helpers/index.js +++ b/gramateria/develop/js/helpers/index.js @@ -15,27 +15,31 @@ export const checkExtension = (fname) => { return ext == null ? "" : ext[1]; } -export const exportZip = (data) => { +const buildZipFolder = (data) => { let zip = new JSZip(); zip.file("index.html", exportTemplate(data)); let css = zip.folder("css"); css.file("style.css", data.css); + css.file("global.css", data.global.css); + let js = zip.folder("js"); + js.file("script.js", `// all your script goes here `); + js.file("global.js", data.global.js); + return zip; +} +export const exportZip = (data) => { + let zip = buildZipFolder(data) zip.generateAsync({ type: "blob" }) .then(function (content) { - let fileName = Date.now() + '-export.zip'; + let fileName = 'gram-'+Date.now() + '-export.zip'; saveAs(content, fileName); }); } export const publishToNetlify = (data) => { - let zip = new JSZip(); - zip.file("index.html", exportTemplate(data)); - - let css = zip.folder("css"); - css.file("style.css", data.css); + let zip = buildZipFolder(data) zip.generateAsync({ type: "blob" }) .then(function (content) { @@ -64,4 +68,29 @@ export const publishToNetlify = (data) => { }) }) }) +} + + +export const loadingSpinner = () => { + + let spinner_wrapper = document.querySelector(".spinner-wrapper") + spinner_wrapper.classList.remove('hide'); + window.addEventListener('load', () => { + setTimeout(()=>{ + spinner_wrapper.classList.add('hide'); + },700) + }) + +} + +export const getGlobalJsCss = async () =>{ + const global_css_url = 'gramateria/dist/global.css'; + const global_js_url = 'gramateria/dist/global.js'; + + const cssRes = await fetch(global_css_url); + const css = await cssRes.text(); + + const jsRes = await fetch(global_js_url); + const js = await jsRes.text(); + return {css,js}; } \ No newline at end of file diff --git a/gramateria/develop/sass/gramateria.scss b/gramateria/develop/sass/gramateria.scss index f0f4036..5e68a5d 100755 --- a/gramateria/develop/sass/gramateria.scss +++ b/gramateria/develop/sass/gramateria.scss @@ -1,6 +1,7 @@ -@import 'flex-icons'; -@import 'variables'; -@import 'global'; -@import 'glyphter'; -@import 'gram'; -@import 'overwrite'; \ No newline at end of file +@import 'partials/flex-icons'; +@import 'partials/variables'; +@import 'partials/spinner'; +@import 'partials/global'; +@import 'partials/glyphter'; +@import 'partials/gram'; +@import 'partials/overwrite'; \ No newline at end of file diff --git a/gramateria/develop/sass/_flex-icons.scss b/gramateria/develop/sass/partials/_flex-icons.scss similarity index 100% rename from gramateria/develop/sass/_flex-icons.scss rename to gramateria/develop/sass/partials/_flex-icons.scss diff --git a/gramateria/develop/sass/_global.scss b/gramateria/develop/sass/partials/_global.scss similarity index 100% rename from gramateria/develop/sass/_global.scss rename to gramateria/develop/sass/partials/_global.scss diff --git a/gramateria/develop/sass/_glyphter.scss b/gramateria/develop/sass/partials/_glyphter.scss similarity index 100% rename from gramateria/develop/sass/_glyphter.scss rename to gramateria/develop/sass/partials/_glyphter.scss diff --git a/gramateria/develop/sass/_gram.scss b/gramateria/develop/sass/partials/_gram.scss similarity index 100% rename from gramateria/develop/sass/_gram.scss rename to gramateria/develop/sass/partials/_gram.scss diff --git a/gramateria/develop/sass/_overwrite.scss b/gramateria/develop/sass/partials/_overwrite.scss similarity index 100% rename from gramateria/develop/sass/_overwrite.scss rename to gramateria/develop/sass/partials/_overwrite.scss diff --git a/gramateria/develop/sass/partials/_spinner.scss b/gramateria/develop/sass/partials/_spinner.scss new file mode 100644 index 0000000..cc4f5fc --- /dev/null +++ b/gramateria/develop/sass/partials/_spinner.scss @@ -0,0 +1,38 @@ +.spinner-wrapper{ + transition:all ease 0.4s; + position:fixed; + top:0; + left:0; + z-index:999; + width:100%; + height:100%; + display:flex; + justify-content: center; + align-items: center; + background:#ffffffd0; + .spinner { + margin-right:10px; + display: inline-block; + width: 30px; + height: 30px; + border: 3px solid var(--theme-color); + border-radius: 50%; + border-top-color: transparent; + animation: spin 1s linear infinite; + -webkit-animation: spin 1s linear infinite; + } +} +.spinner-wrapper.hide{ + opacity:0; + visibility: hidden; + transform: translateY(-2000px); +} + +@keyframes spin { +to { + -webkit-transform: rotate(360deg); } +} +@-webkit-keyframes spin { +to { + -webkit-transform: rotate(360deg); } +} \ No newline at end of file diff --git a/gramateria/develop/sass/_variables.scss b/gramateria/develop/sass/partials/_variables.scss similarity index 100% rename from gramateria/develop/sass/_variables.scss rename to gramateria/develop/sass/partials/_variables.scss diff --git a/gramateria/dist/global.css b/gramateria/dist/global.css new file mode 100644 index 0000000..529c6fb --- /dev/null +++ b/gramateria/dist/global.css @@ -0,0 +1,15 @@ +body{ + background:#f6f9f7 !important; + font-family: 'Roboto', sans-serif; + font-size:1.1rem; +} + +section{ + padding:100px 0 100px; +} + +@media(max-width:768px){ + section{ + padding:50px 0 50px; + } +} \ No newline at end of file diff --git a/gramateria/dist/global.js b/gramateria/dist/global.js new file mode 100644 index 0000000..7519db2 --- /dev/null +++ b/gramateria/dist/global.js @@ -0,0 +1,26 @@ +/*---------------------------------- +Smooth scroll to sections +------------------------------------*/ +let allAnchors = document.querySelectorAll('a[href^="#"]'); +const listenAllA = (alllinks) => { + if (!alllinks) return; + alllinks.forEach(link => { + link.addEventListener('click', (e) => { + if(!link.href.includes('#')){ + if(link.target){ + window.open(link.href,'_blank'); + return; + } + window.location.href = link.href; + return; + } + e.preventDefault(); + if (!link.hash.substring(1)) return; + const targetSection = document.querySelector('section#' + link.hash.substring(1)); + let goTo = targetSection.offsetTop; + window.scrollTo({ top: goTo - 100, behavior: 'smooth' }); + }); + }) +} + +listenAllA(allAnchors); \ No newline at end of file diff --git a/gramateria/dist/gram.min.css b/gramateria/dist/gram.min.css index 449ed2c..8772a42 100644 --- a/gramateria/dist/gram.min.css +++ b/gramateria/dist/gram.min.css @@ -138,6 +138,47 @@ --theme-color:#41dad2; } +.spinner-wrapper { + transition: all ease 0.4s; + position: fixed; + top: 0; + left: 0; + z-index: 999; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + background: #ffffffd0; +} +.spinner-wrapper .spinner { + margin-right: 10px; + display: inline-block; + width: 30px; + height: 30px; + border: 3px solid var(--theme-color); + border-radius: 50%; + border-top-color: transparent; + animation: spin 1s linear infinite; + -webkit-animation: spin 1s linear infinite; +} + +.spinner-wrapper.hide { + opacity: 0; + visibility: hidden; + transform: translateY(-2000px); +} + +@keyframes spin { + to { + -webkit-transform: rotate(360deg); + } +} +@-webkit-keyframes spin { + to { + -webkit-transform: rotate(360deg); + } +} body, html { height: 100%; diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index bbc1c0e..437aeca 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -1,6 +1,17 @@ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ +/***/ "./node_modules/@babel/runtime/regenerator/index.js": +/*!**********************************************************!*\ + !*** ./node_modules/@babel/runtime/regenerator/index.js ***! + \**********************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = __webpack_require__(/*! regenerator-runtime */ "./node_modules/regenerator-runtime/runtime.js"); + + +/***/ }), + /***/ "./gramateria/develop/js/config/assetManager.js": /*!******************************************************!*\ !*** ./gramateria/develop/js/config/assetManager.js ***! @@ -92,7 +103,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); -/* harmony import */ var _readyui_blocks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./readyui-blocks */ "./gramateria/develop/js/config/readyui-blocks.js"); +/* harmony import */ var _sectionBlocks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sectionBlocks */ "./gramateria/develop/js/config/sectionBlocks.js"); function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } @@ -260,7 +271,7 @@ var bootstrapBasicBlocks = [{ "class": 'fa fa-quote-right' } }]; -var blocks = [].concat(_toConsumableArray(_readyui_blocks__WEBPACK_IMPORTED_MODULE_0__.default), bootstrapBasicBlocks); +var blocks = [].concat(_toConsumableArray(_sectionBlocks__WEBPACK_IMPORTED_MODULE_0__.default), bootstrapBasicBlocks); var blocksObj = { blocks: blocks }; @@ -279,11 +290,19 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); -/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../helpers */ "./gramateria/develop/js/helpers/index.js"); -/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); +/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); +/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../helpers */ "./gramateria/develop/js/helpers/index.js"); +/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); + + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + -var noty = new notyf__WEBPACK_IMPORTED_MODULE_1__.Notyf({ +var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ position: { y: 'top', x: 'center' @@ -361,41 +380,77 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_1__.Notyf({ } }); var deployForm = document.querySelector('#deploy-form'); - deployForm.addEventListener('submit', function (e) { - e.preventDefault(); - var formData = new FormData(document.querySelector('#deploy-form')); - var SEO = Object.fromEntries(formData); - var title = SEO.title, - description = SEO.description, - token = SEO.token; - - if (!title) { - noty.error('Title is required'); - return; - } - - if (!description) { - noty.error('Description is required'); - return; - } - - if (!token) { - noty.error('Netlify token is required'); - return; - } + deployForm.addEventListener('submit', /*#__PURE__*/function () { + var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee(e) { + var formData, SEO, title, description, token, html, css, global, data; + return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + e.preventDefault(); + formData = new FormData(document.querySelector('#deploy-form')); + SEO = Object.fromEntries(formData); + title = SEO.title, description = SEO.description, token = SEO.token; + + if (title) { + _context.next = 7; + break; + } + + noty.error('Title is required'); + return _context.abrupt("return"); + + case 7: + if (description) { + _context.next = 10; + break; + } + + noty.error('Description is required'); + return _context.abrupt("return"); + + case 10: + if (token) { + _context.next = 13; + break; + } + + noty.error('Netlify token is required'); + return _context.abrupt("return"); + + case 13: + localStorage.setItem('gram-seo', JSON.stringify(SEO)); + html = editor.getHtml() || ''; + css = editor.getCss({ + avoidProtected: true + }) || ''; + _context.next = 18; + return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.getGlobalJsCss)(); + + case 18: + global = _context.sent; + data = { + token: token, + title: title, + description: description, + html: html, + css: css, + global: global + }; + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.publishToNetlify)(data); + + case 21: + case "end": + return _context.stop(); + } + } + }, _callee); + })); - localStorage.setItem('gram-seo', JSON.stringify(SEO)); - var html = localStorage.getItem('gjs-html') || ''; - var css = localStorage.getItem('gjs-css') || ''; - var data = { - token: token, - title: title, - description: description, - html: html, - css: css + return function (_x) { + return _ref2.apply(this, arguments); }; - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.publishToNetlify)(data); - }); + }()); }, attributes: { title: 'Deploy' @@ -409,12 +464,12 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_1__.Notyf({ modal.setTitle('Export'); var getSEO = localStorage.getItem('gram-seo'); - var _ref2 = getSEO ? JSON.parse(getSEO) : { + var _ref3 = getSEO ? JSON.parse(getSEO) : { title: '', description: '' }, - title = _ref2.title, - description = _ref2.description; + title = _ref3.title, + description = _ref3.description; var form = "\n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n \n
        \n
        \n "); modal.setContent(form); @@ -424,34 +479,67 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_1__.Notyf({ } }); var exportForm = document.querySelector('#export-form'); - exportForm.addEventListener('submit', function (e) { - e.preventDefault(); - var formData = new FormData(document.querySelector('#export-form')); - var SEO = Object.fromEntries(formData); - var title = SEO.title, - description = SEO.description; - - if (!title) { - noty.error('Title is required'); - return; - } - - if (!description) { - noty.error('Description is required'); - return; - } + exportForm.addEventListener('submit', /*#__PURE__*/function () { + var _ref4 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee2(e) { + var formData, SEO, title, description, html, css, global, data; + return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + e.preventDefault(); + formData = new FormData(document.querySelector('#export-form')); + SEO = Object.fromEntries(formData); + title = SEO.title, description = SEO.description; + + if (title) { + _context2.next = 7; + break; + } + + noty.error('Title is required'); + return _context2.abrupt("return"); + + case 7: + if (description) { + _context2.next = 10; + break; + } + + noty.error('Description is required'); + return _context2.abrupt("return"); + + case 10: + localStorage.setItem('gram-seo', JSON.stringify(SEO)); + html = editor.getHtml() || ''; + css = editor.getCss({ + avoidProtected: true + }) || ''; + _context2.next = 15; + return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.getGlobalJsCss)(); + + case 15: + global = _context2.sent; + data = { + title: title, + description: description, + html: html, + css: css, + global: global + }; + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.exportZip)(data); + + case 18: + case "end": + return _context2.stop(); + } + } + }, _callee2); + })); - localStorage.setItem('gram-seo', JSON.stringify(SEO)); - var html = localStorage.getItem('gjs-html') || ''; - var css = localStorage.getItem('gjs-css') || ''; - var data = { - title: title, - description: description, - html: html, - css: css + return function (_x2) { + return _ref4.apply(this, arguments); }; - (0,_helpers__WEBPACK_IMPORTED_MODULE_0__.exportZip)(data); - }); + }()); }, attributes: { title: 'Download as zip' @@ -475,15 +563,15 @@ var exportTemplate = function exportTemplate(data) { var title = data.title, description = data.description, html = data.html; - return "\n \n \n \n \n \n ".concat(title || '', "\n \n \n\n \n \n \n \n ").concat(html || '', "\n \n \n \n \n "); + return "\n \n \n \n \n \n ".concat(title || '', "\n \n \n \n \n \n \n \n \n \n \n ").concat(html || '', "\n \n \n \n \n "); }; /***/ }), -/***/ "./gramateria/develop/js/config/readyui-blocks.js": -/*!********************************************************!*\ - !*** ./gramateria/develop/js/config/readyui-blocks.js ***! - \********************************************************/ +/***/ "./gramateria/develop/js/config/sectionBlocks.js": +/*!*******************************************************!*\ + !*** ./gramateria/develop/js/config/sectionBlocks.js ***! + \*******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; @@ -492,85 +580,21 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([{ - id: 'ready-ui-header', + id: 'section-header', label: 'Header', category: 'Sections', attributes: { "class": 'fa fa-window-minimize' }, - content: "
        \n \n
        \n
        \n
        \n
        \n

        Create beautiful website layout with blox UI kit.

        \n

        Success return on investment termsheet buzz conversion value proposition strategy stealth disruptive product management business model canvas social proof

        \n
        \n
        \n \n \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n \"airbnb\"\n
        \n
        \n \"uber\"\n
        \n
        \n \"google\"\n
        \n
        \n \"nike\"\n
        \n
        \n \"dropbox\"\n
        \n
        \n \"stripe\"\n
        \n
        \n
        \n
        \n
        \n
        \n " + content: "\n
        \n

        Gramateria

        \n

        Fastest way to build single HTML pages

        \n
        \n \n \n
        \n
        \n \"Gramateria\"\n
        \n \n
        \n " }, { - id: 'ready-ui-blog', + id: 'section-blog', label: 'Blog', category: 'Sections', attributes: { "class": 'fa fa-th-large' }, - content: "
        \n
        \n

        Recent posts

        \n
        \n
        \n
        \n \"img\"\n
        \n

        On: 20 October 4minutes read

        \n \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        \n

        On: 20 October 4 minutes read

        \n \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        \n

        On: 20 October 4 minutes read

        \n \n
        \n
        \n
        \n
        \n
        \n
        " -}, { - id: 'ready-ui-contact', - label: 'Contact', - category: 'Sections', - attributes: { - "class": 'fa fa-envelope' - }, - content: "
        \n
        \n
        \n
        \n

        Chat with our sales team

        \n

        Network effects client seed money responsive web design deployment twitter\n rate traction advisor business-to-consumer founders pivot iPhone handshake.

        \n
        \n
        \n
        \n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n
        \n \n \n
        \n
        \n
        \n \n
        \n
        \n
        \n
        \n
        \n
        \n
        " -}, { - id: 'ready-ui-faq', - label: 'FAQ', - category: 'Sections', - attributes: { - "class": 'fa fa-question-circle-o' - }, - content: "
        \n
        \n
        \n
        \n

        FAQ\u2019s

        \n
        \n
        \n
        \n
        \n \n \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n\n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n\n
        \n

        \n \n

        \n
        \n
        \n Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n
        \n
        \n
        \n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n
        \n

        \n \n

        \n
        \n
        \n

        Channels hackathon ecosystem paradigm shift infographic holy grail. Return on investment mass market\n gen-z research & development analytics business-to-business creative business-to-consumer technology\n freemium.\n

        \n
        \n
        \n
        \n
        \n
        \n
        \n
        \n
        " -}, { - id: 'ready-ui-feature', - label: 'Feature', - category: 'Sections', - attributes: { - "class": 'fa fa-server' - }, - content: "
        \n
        \n
        \n
        \n

        Service for every stage of\n the real estate lifecycle

        \n
        \n
        \n
        \n
        \n
        \n
        \n \n \n \n \n \n
        Valuation Advisory
        \n

        Virality ownership mass market angel growth hacking bootstrapping. Infographic media niche market scrum project.

        \n Read more \n \n \n \n \n \n
        \n
        \n
        \n
        \n \n \n \n \n \n \n \n
        Asset Management
        \n

        Virality ownership mass market angel growth hacking bootstrapping. Infographic media niche market scrum project.

        \n Read more \n \n \n \n \n \n
        \n
        \n
        \n
        \n \n \n \n \n \n
        Cost Management
        \n

        Virality ownership mass market angel growth hacking bootstrapping. Infographic media niche market scrum project.

        \n Read more \n \n \n \n \n \n
        \n
        \n
        \n
        \n
        \n
        " -}, { - id: 'ready-ui-footer', - label: 'Footer', - category: 'Sections', - attributes: { - "class": 'fa fa-desktop' - }, - content: "
        \n
        \n
        \n
        \n \"img\"\n
        \n
        \n \n
        \n
        \n
          \n
        • \n \n \n \n \n
        • \n
        • \n \n \n \n \n \n \n
        • \n
        • \n \n \n \n \n
        • \n
        \n
        \n
        \n
        \n
        \n

        Copyright \"icon\"2020 blox. All right reserved

        \n
        \n
        \n
        " -}, { - id: 'ready-ui-portfolio', - label: 'Portfolio', - category: 'Sections', - attributes: { - "class": 'fa fa-newspaper-o' - }, - content: "
        \n
        \n
        \n
        \n
        \n

        Portfolio

        \n

        Client sales beta crowdfunding agile development launch party angel investor venture android influencer.

        \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        Best design system
        \n

        Design system

        \n
        \n
        \n \"img\"\n
        Blox wireframe kit 1.0
        \n

        Ui Kit

        \n
        \n
        \n \"img\"\n
        Blox wireframe kit 1.0
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        " -}, { - id: 'ready-ui-pricing', - label: 'Pricing', - category: 'Sections', - attributes: { - "class": 'fa fa-bars' - }, - content: "
        \n
        \n
        \n
        \n

        Choose Your Plan

        \n

        Launch party social proof leverage MVP lean startup creative equity startup direct mailing.

        \n
        \n
        \n
        \n

        $39.95

        \n
        Monthly
        \n
        \n

        Instant Access to Entire Course

        \n

        All Lessons & Classes From White to Black

        \n

        Connect & Train With Students in the Course

        \n

        Accredited Rank Testing & Advancement

        \n

        Instructor Support, Feedback & Guidance

        \n

        Fresh Training Material Added Monthly

        \n

        Cancel Anytime

        \n Enroll Now\n

        Per month payment

        \n
        \n
        \n
        \n
        \n

        $179

        \n
        Annualy
        \n
        \n

        Instant Access to Entire Course

        \n

        90+ Follow Along Classes

        \n

        100+ Technique Lessons

        \n

        Fresh Training Material Added Monthly

        \n

        Accredited Rank Testing & Advancement

        \n

        Instructor Support, Feedback & Guidance

        \n

        Pay $179.70 Every Six Months (Save 25%)

        \n

        Cancel Anytime

        \n Enroll Now\n

        One time yearly payment

        \n
        \n
        \n
        \n
        \n

        $195.00

        \n
        Life Time
        \n
        \n

        Instant Access to Entire Course

        \n

        90+ Follow Along Classes

        \n

        125+ Technique Lessons

        \n

        Fresh Training Material Added Monthly

        \n

        Accredited Rank Testing & Advancement

        \n

        Instructor Support, Feedback & Guidance

        \n

        Access For Life Pay - Upfront

        \n

        Save Over $1300 on Your Journey

        \n Enroll Now\n

        One time payment

        \n
        \n
        \n
        \n
        \n
        " -}, { - id: 'ready-ui-team', - label: 'Team', - category: 'Sections', - attributes: { - "class": 'fa fa-users' - }, - content: "
        \n
        \n
        \n
        \n
        \n

        The Awesome Team

        \n

        Launch party social proof leverage MVP lean startup creative equity startup direct \n mailing. Niche market startup paradigm shift learning curve.

        \n
        \n
        \n
        \n
        \n
        \n
        \n \"img\"\n
        Arther Melo
        \n

        Design system

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Lisa Luiz
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Ena Williams
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Xavier Pablo
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Arther Melo
        \n

        Design system

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Lisa Luiz
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Ena Williams
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n \"img\"\n
        Xavier Pablo
        \n

        Ui Kit

        \n
        \n
        \n
        \n
        \n
        " -}, { - id: 'ready-ui-testimonial', - label: 'Testimonial', - category: 'Sections', - attributes: { - "class": 'fa fa-th' - }, - content: "
        \n
        \n
        \n
        \n

        What clients say

        \n

        Launch party social proof leverage MVP lean startup creative equity\n startup direct\n mailing. Niche market startup paradigm shift learning curve.

        \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n \n
        \n
        \n
        \n
        " + content: "
        \n
        \n

        Recent Posts

        \n
        \n
        \n
        \n
        \n
        \n
        \n \"\"\n
        \n
        \n \n

        Post Title

        \n
        \n
        \n
        John Doe
        \n
        \n 4 min read\n
        \n
        \n

        \n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio delectus assumenda, voluptatibus rem labore nesciunt magnam ab provident odio ipsam!\n \n

        \n \n
        \n
        \n
        \n
        \n
        \n
        \n \"\"\n
        \n
        \n \n

        Post Title

        \n
        \n
        \n
        John Doe
        \n
        \n 4 min read\n
        \n
        \n

        \n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio delectus assumenda, voluptatibus rem labore nesciunt magnam ab provident odio ipsam!\n \n

        \n \n
        \n
        \n
        \n
        \n
        \n
        \n \"\"\n
        \n
        \n \n

        Post Title

        \n
        \n
        \n
        John Doe
        \n
        \n 4 min read\n
        \n
        \n

        \n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio delectus assumenda, voluptatibus rem labore nesciunt magnam ab provident odio ipsam!\n \n

        \n \n
        \n
        \n
        \n
        \n
        \n
        " }]); /***/ }), @@ -1038,9 +1062,10 @@ var Gramateria = /*#__PURE__*/function () { height: '100%', fromElement: true, clearOnRender: 0, + protectedCss: '.iframe-wrapper{padding-bottom:30px;}section:last-child{margin-bottom:30px}', canvas: { - styles: ['https://cdnjs.cloudflare.com/ajax/libs/bootswatch/5.0.2/materia/bootstrap.min.css', 'https://cdn.statically.io/gh/gramateria/readyui-free/main/css/style.min.css'], - scripts: ['https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js'] + styles: ['https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap', 'https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/css/bootstrap.min.css', 'https://cdnjs.cloudflare.com/ajax/libs/line-awesome/1.3.0/font-awesome-line-awesome/css/all.min.css', 'gramateria/dist/global.css'], + scripts: ['https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js', 'gramateria/dist/global.js'] }, // commands, assetManager: _config_assetManager__WEBPACK_IMPORTED_MODULE_2__.default, @@ -1173,7 +1198,9 @@ var Gramateria = /*#__PURE__*/function () { exportTxt.onclick = function () { var InnerHtml = _this2.editor.getHtml(); - var Css = _this2.editor.getCss(); + var Css = _this2.editor.getCss({ + avoidProtected: true + }); var text = InnerHtml + "'; var blob = new Blob([text], { @@ -1241,8 +1268,6 @@ var Gramateria = /*#__PURE__*/function () { }, { key: "init", value: function init() { - var _this3 = this; - this.codeImportModal(); this.editor.Panels.removeButton('options', 'export-template'); this.editor.on('load', function (editor) { @@ -1280,13 +1305,6 @@ var Gramateria = /*#__PURE__*/function () { }); this.editor.getWrapper().addClass('iframe-wrapper'); this.editor.render(); - setTimeout(function () { - var iframe = _this3.editor.Canvas.getFrameEl(); - - var iframeStyle = document.createElement('style'); - iframeStyle.innerHTML = '.iframe-wrapper{padding-bottom:40px;}'; - iframe.contentDocument.head.appendChild(iframeStyle); - }, 500); } }]); @@ -1294,6 +1312,7 @@ var Gramateria = /*#__PURE__*/function () { }(); new Gramateria().init(); +(0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.loadingSpinner)(); /***/ }), @@ -1308,19 +1327,29 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "checkExtension": () => (/* binding */ checkExtension), /* harmony export */ "exportZip": () => (/* binding */ exportZip), -/* harmony export */ "publishToNetlify": () => (/* binding */ publishToNetlify) +/* harmony export */ "publishToNetlify": () => (/* binding */ publishToNetlify), +/* harmony export */ "loadingSpinner": () => (/* binding */ loadingSpinner), +/* harmony export */ "getGlobalJsCss": () => (/* binding */ getGlobalJsCss) /* harmony export */ }); -/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jszip */ "./node_modules/jszip/dist/jszip.min.js"); -/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jszip__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! file-saver */ "./node_modules/file-saver/dist/FileSaver.min.js"); -/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _config_exportTemplate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config/exportTemplate */ "./gramateria/develop/js/config/exportTemplate.js"); -/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); +/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); +/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jszip */ "./node_modules/jszip/dist/jszip.min.js"); +/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jszip__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! file-saver */ "./node_modules/file-saver/dist/FileSaver.min.js"); +/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _config_exportTemplate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config/exportTemplate */ "./gramateria/develop/js/config/exportTemplate.js"); +/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } +function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } -var msg = new notyf__WEBPACK_IMPORTED_MODULE_3__.Notyf({ + + + +var msg = new notyf__WEBPACK_IMPORTED_MODULE_4__.Notyf({ position: { x: 'center', y: 'top' @@ -1330,23 +1359,30 @@ var checkExtension = function checkExtension(fname) { var ext = /^.+\.([^.]+)$/.exec(fname); return ext == null ? "" : ext[1]; }; -var exportZip = function exportZip(data) { - var zip = new (jszip__WEBPACK_IMPORTED_MODULE_0___default())(); - zip.file("index.html", (0,_config_exportTemplate__WEBPACK_IMPORTED_MODULE_2__.exportTemplate)(data)); + +var buildZipFolder = function buildZipFolder(data) { + var zip = new (jszip__WEBPACK_IMPORTED_MODULE_1___default())(); + zip.file("index.html", (0,_config_exportTemplate__WEBPACK_IMPORTED_MODULE_3__.exportTemplate)(data)); var css = zip.folder("css"); css.file("style.css", data.css); + css.file("global.css", data.global.css); + var js = zip.folder("js"); + js.file("script.js", "// all your script goes here "); + js.file("global.js", data.global.js); + return zip; +}; + +var exportZip = function exportZip(data) { + var zip = buildZipFolder(data); zip.generateAsync({ type: "blob" }).then(function (content) { - var fileName = Date.now() + '-export.zip'; - (0,file_saver__WEBPACK_IMPORTED_MODULE_1__.saveAs)(content, fileName); + var fileName = 'gram-' + Date.now() + '-export.zip'; + (0,file_saver__WEBPACK_IMPORTED_MODULE_2__.saveAs)(content, fileName); }); }; var publishToNetlify = function publishToNetlify(data) { - var zip = new (jszip__WEBPACK_IMPORTED_MODULE_0___default())(); - zip.file("index.html", (0,_config_exportTemplate__WEBPACK_IMPORTED_MODULE_2__.exportTemplate)(data)); - var css = zip.folder("css"); - css.file("style.css", data.css); + var zip = buildZipFolder(data); zip.generateAsync({ type: "blob" }).then(function (content) { @@ -1377,6 +1413,61 @@ var publishToNetlify = function publishToNetlify(data) { }); }); }; +var loadingSpinner = function loadingSpinner() { + var spinner_wrapper = document.querySelector(".spinner-wrapper"); + spinner_wrapper.classList.remove('hide'); + window.addEventListener('load', function () { + setTimeout(function () { + spinner_wrapper.classList.add('hide'); + }, 700); + }); +}; +var getGlobalJsCss = /*#__PURE__*/function () { + var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee() { + var global_css_url, global_js_url, cssRes, css, jsRes, js; + return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + global_css_url = 'gramateria/dist/global.css'; + global_js_url = 'gramateria/dist/global.js'; + _context.next = 4; + return fetch(global_css_url); + + case 4: + cssRes = _context.sent; + _context.next = 7; + return cssRes.text(); + + case 7: + css = _context.sent; + _context.next = 10; + return fetch(global_js_url); + + case 10: + jsRes = _context.sent; + _context.next = 13; + return jsRes.text(); + + case 13: + js = _context.sent; + return _context.abrupt("return", { + css: css, + js: js + }); + + case 15: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + + return function getGlobalJsCss() { + return _ref.apply(this, arguments); + }; +}(); /***/ }), @@ -4062,6 +4153,764 @@ var Notyf = /** @class */ (function () { +/***/ }), + +/***/ "./node_modules/regenerator-runtime/runtime.js": +/*!*****************************************************!*\ + !*** ./node_modules/regenerator-runtime/runtime.js ***! + \*****************************************************/ +/***/ ((module) => { + +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var runtime = (function (exports) { + "use strict"; + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + function define(obj, key, value) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + return obj[key]; + } + try { + // IE 8 has a broken Object.defineProperty that only works on DOM objects. + define({}, ""); + } catch (err) { + define = function(obj, key, value) { + return obj[key] = value; + }; + } + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + exports.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunction.displayName = define( + GeneratorFunctionPrototype, + toStringTagSymbol, + "GeneratorFunction" + ); + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + define(prototype, method, function(arg) { + return this._invoke(method, arg); + }); + }); + } + + exports.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + exports.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + define(genFun, toStringTagSymbol, "GeneratorFunction"); + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + exports.awrap = function(arg) { + return { __await: arg }; + }; + + function AsyncIterator(generator, PromiseImpl) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return PromiseImpl.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return PromiseImpl.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. + result.value = unwrapped; + resolve(result); + }, function(error) { + // If a rejected Promise was yielded, throw the rejection back + // into the async generator function so it can be handled there. + return invoke("throw", error, resolve, reject); + }); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new PromiseImpl(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + AsyncIterator.prototype[asyncIteratorSymbol] = function () { + return this; + }; + exports.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) { + if (PromiseImpl === void 0) PromiseImpl = Promise; + + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList), + PromiseImpl + ); + + return exports.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + // Note: ["return"] must be used for ES3 parsing compatibility. + if (delegate.iterator["return"]) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } + + } else { + // Re-yield the result returned by the delegate method. + return info; + } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + define(Gp, toStringTagSymbol, "Generator"); + + // A Generator should always return itself as the iterator object when the + // @@iterator function is called on it. Some browsers' implementations of the + // iterator prototype chain incorrectly implement this, causing the Generator + // object to not be returned from this call. This ensures that doesn't happen. + // See https://github.com/facebook/regenerator/issues/274 for more details. + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + exports.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + exports.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined; + } + + return ContinueSentinel; + } + }; + + // Regardless of whether this script is executing as a CommonJS module + // or not, return the runtime object so that we can declare the variable + // regeneratorRuntime in the outer scope, which allows this module to be + // injected easily by `bin/regenerator --include-runtime script.js`. + return exports; + +}( + // If this script is executing as a CommonJS module, use module.exports + // as the regeneratorRuntime namespace. Otherwise create a new empty + // object. Either way, the resulting object will be used to initialize + // the regeneratorRuntime variable at the top of this file. + true ? module.exports : 0 +)); + +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + // This module should not be running in strict mode, so the above + // assignment should always work unless something is misconfigured. Just + // in case runtime.js accidentally runs in strict mode, we can escape + // strict mode using a global Function call. This could conceivably fail + // if a Content Security Policy forbids using Function, but in that case + // the proper solution is to fix the accidental strict mode problem. If + // you've misconfigured your bundler to force strict mode and applied a + // CSP to forbid Function, and you're not willing to fix either of those + // problems, please detail your unique predicament in a GitHub issue. + Function("r", "regeneratorRuntime = r")(runtime); +} + + /***/ }), /***/ "./node_modules/notyf/notyf.min.css": diff --git a/index.html b/index.html index 0a9f2e1..020641f 100755 --- a/index.html +++ b/index.html @@ -9,46 +9,6 @@ - @@ -60,15 +20,6 @@ - diff --git a/webpack.mix.js b/webpack.mix.js index 6783c46..4a20200 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -3,7 +3,17 @@ const mix = require('laravel-mix'); mix.disableNotifications() .options({processCssUrls: false}) + +// Template related global css +.copy('gramateria/develop/css/global.css','gramateria/dist/global.css') + +// Gramateria builder css .sass('gramateria/develop/sass/gramateria.scss','gramateria/dist/gram.min.css') + +// Template related global js +.copy('gramateria/develop/js/global.js','gramateria/dist/global.js') + +// Gramateria builder js .js('gramateria/develop/js/gramateria.js','gramateria/dist/gram.min.js') From 1858acaf43387263b4a65e9f3b10e52e50160f22 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Sun, 25 Jul 2021 15:48:08 +0630 Subject: [PATCH 16/27] backup --- gramateria/develop/js/config/buttons.js | 85 ++++++-- gramateria/develop/js/helpers/index.js | 124 ++++++++--- gramateria/develop/sass/partials/_gram.scss | 69 ++++++ gramateria/dist/gram.min.css | 70 ++++++ gramateria/dist/gram.min.js | 226 +++++++++++++++----- 5 files changed, 479 insertions(+), 95 deletions(-) diff --git a/gramateria/develop/js/config/buttons.js b/gramateria/develop/js/config/buttons.js index 1f5158d..a71592a 100644 --- a/gramateria/develop/js/config/buttons.js +++ b/gramateria/develop/js/config/buttons.js @@ -1,4 +1,10 @@ -import { publishToNetlify,exportZip,getGlobalJsCss } from './../helpers' +import { + prepareDeployContent, + exportZip, + getGlobalJsCss, + listOfSites, + toggleActiveOfDomainList +} from './../helpers' import { Notyf } from 'notyf'; @@ -63,11 +69,12 @@ export default [{ let modal = editor.Modal; modal.setTitle('Deploy'); - + const getSEO = localStorage.getItem('gram-seo'); const { title, description, token } = getSEO ? JSON.parse(getSEO) : { title: '', description: '' }; - + const form = ` +
        @@ -83,19 +90,51 @@ export default [{
        +
        +

        Deploy to

        +
        + New site Existing site +
        +
        + Existing sites + ${listOfSites()} +
        +
        - +
        `; - + modal.setContent(form); modal.open({ attributes: { class: 'form-modal', } }); - + + const listenDeployCheck = () => { + const radios = document.querySelectorAll(".deploy-type-radios input[type='radio']"); + radios.forEach(radio=>{ + radio.addEventListener('change', (e)=>{ + + if(!e.target.checked){ + return; + } + + const existingSiteDiv = document.querySelector(".existing-sites"); + if(e.target.value === 'existing'){ + existingSiteDiv.classList.remove("hide"); + }else{ + existingSiteDiv.classList.add("hide"); + } + }) + }) + } + listenDeployCheck(); + + toggleActiveOfDomainList(); + const deployForm = document.querySelector('#deploy-form'); deployForm.addEventListener('submit', async (e) => { e.preventDefault(); @@ -115,12 +154,22 @@ export default [{ return; } localStorage.setItem('gram-seo', JSON.stringify(SEO)); - - let html = editor.getHtml() || ''; - let css = editor.getCss({ avoidProtected:true }) || ''; + + const existingSiteDiv = document.querySelector(".existing-sites"); + let type = existingSiteDiv.classList.contains('hide')?'POST':'PUT'; + let html = editor.getHtml() || ''; + let css = editor.getCss({ avoidProtected: true }) || ''; let global = await getGlobalJsCss(); - const data = { token, title, description, html, css, global }; - publishToNetlify(data); + const data = { token, title, description, html, css, global, type}; + if(type === 'PUT'){ + let site_id = localStorage.getItem('gram-deploying-site'); + if(!site_id){ + noty.error('You must check a site in existing sites.'); + return; + } + data.site_id = site_id; + } + prepareDeployContent(data); }) }, @@ -135,10 +184,10 @@ export default [{ sender.set('active', 0); let modal = editor.Modal; modal.setTitle('Export'); - + const getSEO = localStorage.getItem('gram-seo'); const { title, description } = getSEO ? JSON.parse(getSEO) : { title: '', description: '' }; - + const form = `
        @@ -154,14 +203,14 @@ export default [{
        `; - + modal.setContent(form); modal.open({ attributes: { class: 'form-modal', } }); - + const exportForm = document.querySelector('#export-form'); exportForm.addEventListener('submit', async (e) => { e.preventDefault(); @@ -177,9 +226,9 @@ export default [{ return; } localStorage.setItem('gram-seo', JSON.stringify(SEO)); - - let html = editor.getHtml() || ''; - let css = editor.getCss({ avoidProtected:true }) || ''; + + let html = editor.getHtml() || ''; + let css = editor.getCss({ avoidProtected: true }) || ''; let global = await getGlobalJsCss(); const data = { title, description, html, css, global }; exportZip(data); diff --git a/gramateria/develop/js/helpers/index.js b/gramateria/develop/js/helpers/index.js index 79efeae..1d567c8 100644 --- a/gramateria/develop/js/helpers/index.js +++ b/gramateria/develop/js/helpers/index.js @@ -38,38 +38,106 @@ export const exportZip = (data) => { }); } -export const publishToNetlify = (data) => { - let zip = buildZipFolder(data) +export const existingSites = () =>{ + let sites = localStorage.getItem("gram-sites"); + sites = sites?JSON.parse(sites):[]; + return sites; +} - zip.generateAsync({ type: "blob" }) - .then(function (content) { - fetch('https://api.netlify.com/api/v1/sites', { - method: 'POST', - headers: { - 'Content-Type': 'application/zip', - 'Authorization': 'Bearer '+data.token - }, - body: content - }).then(e => e.json()) - .then(res => { - if(res){ - msg.success({ - duration:200000, - message: 'URL - https://'+ res.subdomain+'.netlify.app', - dismissible: true - }) - msg.success({ - message: 'Successfully deployed' - }) - } - }).catch(err=>{ - msg.error({ - message: String(err) - }) - }) +export const toggleActiveOfDomainList = () =>{ + const removeActiveClass = () => { + const radios = document.querySelectorAll(".existing-sites input[name='deploy-domain']"); + radios.forEach(e=>{ + e.parentNode.classList.remove("active"); + }) + } + + const allRadios = document.querySelectorAll(".existing-sites input[name='deploy-domain']"); + allRadios.forEach(radio=>{ + radio.addEventListener("change",e=>{ + removeActiveClass(); + if(e.target.checked){ + localStorage.setItem('gram-deploying-site',e.target.parentNode.id); + e.target.parentNode.classList.add("active"); + } }) + }) } +export const listOfSites = () =>{ + let sites = existingSites(); + if(sites.length == 0) return ''; + let siteList = '
          '; + siteList += sites.map(site=>{ + return `
        • ${site.domain}
        • `; + }).join(""); + siteList += '
        '; + return siteList; +} + +export const saveSites = (res) =>{ + const domain = 'https://'+ res.subdomain+'.netlify.app'; + const id = res.id; + const sites = existingSites(); + sites.push({domain,id}); + localStorage.setItem('gram-sites', JSON.stringify(sites)) +} + +export const deployToNetlify = (type,url,content) =>{ + console.log(type,url,content);return; + fetch(url, { + method: type, + headers: { + 'Content-Type': 'application/zip', + 'Authorization': 'Bearer '+content.token + }, + body: content + }).then(e => e.json()) + .then(async (res) => { + + saveSites(res); + + const status = type === 'POST'?'Deployed':'Updated'; + + modalMessage({ + message:`${status} domain - https://${res.subdomain}.netlify.app`, + type:'success' + }) + + + msg.success({ + message: 'Successfully '+status + }) + + }).catch(err=>{ + msg.error({ + message: String(err) + }) + }) +} + +export const modalMessage = (obj) =>{ + const modalMessage = document.querySelector(".modal-message"); + modalMessage.innerHTML = `

        ${obj.message}

        +

        Please close and re-open this modal.

        `; + const gramForm = document.querySelector(".gram-form"); + gramForm.classList.add("hide"); + +} + +export const prepareDeployContent = (data) => { + let zip = buildZipFolder(data); + zip.generateAsync({ type: "blob" }) + .then(function (content) { + + if(data.type === 'POST'){ + deployToNetlify(data.type,'https://api.netlify.com/api/v1/sites',content); + }else{ + deployToNetlify(data.type,'https://api.netlify.com/api/v1/sites/'+data.site_id,content); + } + + }) +} export const loadingSpinner = () => { diff --git a/gramateria/develop/sass/partials/_gram.scss b/gramateria/develop/sass/partials/_gram.scss index 8c3e647..b093526 100644 --- a/gramateria/develop/sass/partials/_gram.scss +++ b/gramateria/develop/sass/partials/_gram.scss @@ -19,6 +19,18 @@ border:1px solid #ddd; } +.gram-form h4{ + margin:10px 0; +} + +.hide{ + display:none; +} + +.gram-form .existing-sites, +.gram-form .deploy-btn{ + margin-top:20px; +} .gram-form textarea.form-control:active, .gram-form textarea.form-control:focus, @@ -30,3 +42,60 @@ border:1px solid var(--theme-color); } + +/** Modal Message **/ +.modal-message p.msg-success { + font-size:.85rem; + padding:10px; + background:var(--theme-color); + color:#fff; +} + +.modal-message p.msg-error { + padding:10px; + background:#ffa5a5; + color:#fff; +} + +.modal-message p.msg-success span.fa{ + background:#fff; + padding:2px; + float:right; + color:#444; +} + +.modal-message p.msg-success span.fa:hover{ + cursor:pointer; +} + +.existing-sites ul{ + padding:0; + list-style:none; +} + +.existing-sites ul li{ + background:#fff; + padding:4px; + margin:4px 0 4px; + transition:all ease 0.4s; + border:2px solid transparent; +} + +.existing-sites ul li.active{ + border:2px solid var(--theme-color); +} + +.existing-sites ul li input{ + margin-right:10px; +} + +.existing-sites ul li span.fa-trash{ + float:right; + padding:2px; + color:var(--theme-color); + border:1px solid var(--theme-color); +} + +.existing-sites ul li span.fa-trash:hover{ + cursor:pointer; +} \ No newline at end of file diff --git a/gramateria/dist/gram.min.css b/gramateria/dist/gram.min.css index 8772a42..7031449 100644 --- a/gramateria/dist/gram.min.css +++ b/gramateria/dist/gram.min.css @@ -298,6 +298,19 @@ html { border: 1px solid #ddd; } +.gram-form h4 { + margin: 10px 0; +} + +.hide { + display: none; +} + +.gram-form .existing-sites, +.gram-form .deploy-btn { + margin-top: 20px; +} + .gram-form textarea.form-control:active, .gram-form textarea.form-control:focus, .gram-form input.form-control:active, @@ -308,6 +321,63 @@ html { border: 1px solid var(--theme-color); } +/** Modal Message **/ +.modal-message p.msg-success { + font-size: 0.85rem; + padding: 10px; + background: var(--theme-color); + color: #fff; +} + +.modal-message p.msg-error { + padding: 10px; + background: #ffa5a5; + color: #fff; +} + +.modal-message p.msg-success span.fa { + background: #fff; + padding: 2px; + float: right; + color: #444; +} + +.modal-message p.msg-success span.fa:hover { + cursor: pointer; +} + +.existing-sites ul { + padding: 0; + list-style: none; +} + +.existing-sites ul li { + background: #fff; + padding: 4px; + margin: 4px 0 4px; + transition: all ease 0.4s; + border: 2px solid transparent; +} + +.existing-sites ul li.active { + border: 2px solid var(--theme-color); +} + +.existing-sites ul li input { + margin-right: 10px; +} + +.existing-sites ul li span.fa-trash { + float: right; + padding: 2px; + color: var(--theme-color); + border: 1px solid var(--theme-color); +} + +.existing-sites ul li span.fa-trash:hover { + cursor: pointer; +} + /* Overwrite GrapeJS css */ .gjs-cm-editor#gjs-cm-css #gjs-cm-title, .gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title, diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index 437aeca..d654e39 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -372,17 +372,39 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ description = _ref.description, token = _ref.token; - var form = "\n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n

        Netlify

        \n
        \n \n \n
        \n
        \n \n
        \n
        \n "); + var form = "\n
        \n
        \n
        \n \n \n
        \n
        \n \n \n
        \n
        \n

        Netlify

        \n
        \n \n \n
        \n
        \n

        Deploy to

        \n
        \n New site Existing site\n
        \n
        \n Existing sites\n ").concat((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.listOfSites)(), "\n
        \n
        \n
        \n \n
        \n
        \n "); modal.setContent(form); modal.open({ attributes: { "class": 'form-modal' } }); + + var listenDeployCheck = function listenDeployCheck() { + var radios = document.querySelectorAll(".deploy-type-radios input[type='radio']"); + radios.forEach(function (radio) { + radio.addEventListener('change', function (e) { + if (!e.target.checked) { + return; + } + + var existingSiteDiv = document.querySelector(".existing-sites"); + + if (e.target.value === 'existing') { + existingSiteDiv.classList.remove("hide"); + } else { + existingSiteDiv.classList.add("hide"); + } + }); + }); + }; + + listenDeployCheck(); + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.toggleActiveOfDomainList)(); var deployForm = document.querySelector('#deploy-form'); deployForm.addEventListener('submit', /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee(e) { - var formData, SEO, title, description, token, html, css, global, data; + var formData, SEO, title, description, token, existingSiteDiv, type, html, css, global, data, site_id; return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { @@ -420,14 +442,16 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ case 13: localStorage.setItem('gram-seo', JSON.stringify(SEO)); + existingSiteDiv = document.querySelector(".existing-sites"); + type = existingSiteDiv.classList.contains('hide') ? 'POST' : 'PUT'; html = editor.getHtml() || ''; css = editor.getCss({ avoidProtected: true }) || ''; - _context.next = 18; + _context.next = 20; return (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.getGlobalJsCss)(); - case 18: + case 20: global = _context.sent; data = { token: token, @@ -435,11 +459,32 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ description: description, html: html, css: css, - global: global + global: global, + type: type }; - (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.publishToNetlify)(data); - case 21: + if (!(type === 'PUT')) { + _context.next = 28; + break; + } + + site_id = localStorage.getItem('gram-deploying-site'); + + if (site_id) { + _context.next = 27; + break; + } + + noty.error('You must check a site in existing sites.'); + return _context.abrupt("return"); + + case 27: + data.site_id = site_id; + + case 28: + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.prepareDeployContent)(data); + + case 29: case "end": return _context.stop(); } @@ -1327,7 +1372,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "checkExtension": () => (/* binding */ checkExtension), /* harmony export */ "exportZip": () => (/* binding */ exportZip), -/* harmony export */ "publishToNetlify": () => (/* binding */ publishToNetlify), +/* harmony export */ "existingSites": () => (/* binding */ existingSites), +/* harmony export */ "toggleActiveOfDomainList": () => (/* binding */ toggleActiveOfDomainList), +/* harmony export */ "listOfSites": () => (/* binding */ listOfSites), +/* harmony export */ "saveSites": () => (/* binding */ saveSites), +/* harmony export */ "deployToNetlify": () => (/* binding */ deployToNetlify), +/* harmony export */ "modalMessage": () => (/* binding */ modalMessage), +/* harmony export */ "prepareDeployContent": () => (/* binding */ prepareDeployContent), /* harmony export */ "loadingSpinner": () => (/* binding */ loadingSpinner), /* harmony export */ "getGlobalJsCss": () => (/* binding */ getGlobalJsCss) /* harmony export */ }); @@ -1381,36 +1432,113 @@ var exportZip = function exportZip(data) { (0,file_saver__WEBPACK_IMPORTED_MODULE_2__.saveAs)(content, fileName); }); }; -var publishToNetlify = function publishToNetlify(data) { +var existingSites = function existingSites() { + var sites = localStorage.getItem("gram-sites"); + sites = sites ? JSON.parse(sites) : []; + return sites; +}; +var toggleActiveOfDomainList = function toggleActiveOfDomainList() { + var removeActiveClass = function removeActiveClass() { + var radios = document.querySelectorAll(".existing-sites input[name='deploy-domain']"); + radios.forEach(function (e) { + e.parentNode.classList.remove("active"); + }); + }; + + var allRadios = document.querySelectorAll(".existing-sites input[name='deploy-domain']"); + allRadios.forEach(function (radio) { + radio.addEventListener("change", function (e) { + removeActiveClass(); + + if (e.target.checked) { + localStorage.setItem('gram-deploying-site', e.target.parentNode.id); + e.target.parentNode.classList.add("active"); + } + }); + }); +}; +var listOfSites = function listOfSites() { + var sites = existingSites(); + if (sites.length == 0) return ''; + var siteList = ''; + return siteList; +}; +var saveSites = function saveSites(res) { + var domain = 'https://' + res.subdomain + '.netlify.app'; + var id = res.id; + var sites = existingSites(); + sites.push({ + domain: domain, + id: id + }); + localStorage.setItem('gram-sites', JSON.stringify(sites)); +}; +var deployToNetlify = function deployToNetlify(type, url, content) { + console.log(type, url, content); + return; + fetch(url, { + method: type, + headers: { + 'Content-Type': 'application/zip', + 'Authorization': 'Bearer ' + content.token + }, + body: content + }).then(function (e) { + return e.json(); + }).then( /*#__PURE__*/function () { + var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee(res) { + var status; + return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + saveSites(res); + status = type === 'POST' ? 'Deployed' : 'Updated'; + modalMessage({ + message: "".concat(status, " domain - https://").concat(res.subdomain, ".netlify.app"), + type: 'success' + }); + msg.success({ + message: 'Successfully ' + status + }); + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + + return function (_x) { + return _ref.apply(this, arguments); + }; + }())["catch"](function (err) { + msg.error({ + message: String(err) + }); + }); +}; +var modalMessage = function modalMessage(obj) { + var modalMessage = document.querySelector(".modal-message"); + modalMessage.innerHTML = "

        ").concat(obj.message, "

        \n

        Please close and re-open this modal.

        "); + var gramForm = document.querySelector(".gram-form"); + gramForm.classList.add("hide"); +}; +var prepareDeployContent = function prepareDeployContent(data) { var zip = buildZipFolder(data); zip.generateAsync({ type: "blob" }).then(function (content) { - fetch('https://api.netlify.com/api/v1/sites', { - method: 'POST', - headers: { - 'Content-Type': 'application/zip', - 'Authorization': 'Bearer ' + data.token - }, - body: content - }).then(function (e) { - return e.json(); - }).then(function (res) { - if (res) { - msg.success({ - duration: 200000, - message: 'URL - https://' + res.subdomain + '.netlify.app', - dismissible: true - }); - msg.success({ - message: 'Successfully deployed' - }); - } - })["catch"](function (err) { - msg.error({ - message: String(err) - }); - }); + if (data.type === 'POST') { + deployToNetlify(data.type, 'https://api.netlify.com/api/v1/sites', content); + } else { + deployToNetlify(data.type, 'https://api.netlify.com/api/v1/sites/' + data.site_id, content); + } }); }; var loadingSpinner = function loadingSpinner() { @@ -1423,49 +1551,49 @@ var loadingSpinner = function loadingSpinner() { }); }; var getGlobalJsCss = /*#__PURE__*/function () { - var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee() { + var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee2() { var global_css_url, global_js_url, cssRes, css, jsRes, js; - return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee$(_context) { + return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee2$(_context2) { while (1) { - switch (_context.prev = _context.next) { + switch (_context2.prev = _context2.next) { case 0: global_css_url = 'gramateria/dist/global.css'; global_js_url = 'gramateria/dist/global.js'; - _context.next = 4; + _context2.next = 4; return fetch(global_css_url); case 4: - cssRes = _context.sent; - _context.next = 7; + cssRes = _context2.sent; + _context2.next = 7; return cssRes.text(); case 7: - css = _context.sent; - _context.next = 10; + css = _context2.sent; + _context2.next = 10; return fetch(global_js_url); case 10: - jsRes = _context.sent; - _context.next = 13; + jsRes = _context2.sent; + _context2.next = 13; return jsRes.text(); case 13: - js = _context.sent; - return _context.abrupt("return", { + js = _context2.sent; + return _context2.abrupt("return", { css: css, js: js }); case 15: case "end": - return _context.stop(); + return _context2.stop(); } } - }, _callee); + }, _callee2); })); return function getGlobalJsCss() { - return _ref.apply(this, arguments); + return _ref2.apply(this, arguments); }; }(); From 5184915ef0aa88a64cbd2024d6b0bd68f339bcee Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Sun, 25 Jul 2021 21:25:11 +0630 Subject: [PATCH 17/27] add site list, update, delete of netlify domains --- gramateria/develop/js/config/buttons.js | 54 ++++++- gramateria/develop/js/helpers/index.js | 85 +++++++++-- gramateria/develop/sass/partials/_gram.scss | 5 + gramateria/dist/gram.min.css | 5 + gramateria/dist/gram.min.js | 159 ++++++++++++++++---- 5 files changed, 263 insertions(+), 45 deletions(-) diff --git a/gramateria/develop/js/config/buttons.js b/gramateria/develop/js/config/buttons.js index a71592a..d6689d6 100644 --- a/gramateria/develop/js/config/buttons.js +++ b/gramateria/develop/js/config/buttons.js @@ -3,7 +3,10 @@ import { exportZip, getGlobalJsCss, listOfSites, - toggleActiveOfDomainList + toggleActiveOfDomainList, + removeSite, + removeSiteFromNetlify, + getUrl } from './../helpers' import { Notyf } from 'notyf'; @@ -72,6 +75,9 @@ export default [{ const getSEO = localStorage.getItem('gram-seo'); const { title, description, token } = getSEO ? JSON.parse(getSEO) : { title: '', description: '' }; + + // clear + localStorage.setItem('gram-deploying-site',''); const form = ` @@ -91,9 +97,8 @@ export default [{
        -

        Deploy to

        - New site Existing site + Create a new site
        Update an existing site
        Existing sites @@ -131,8 +136,47 @@ export default [{ }) }) } - listenDeployCheck(); + const listenExistingSiteDelete = () =>{ + const trashIcons = document.querySelectorAll(".existing-sites li span.remove-domain"); + trashIcons.forEach(trash=>{ + trash.addEventListener('click', (e)=>{ + + if (!confirm('Are you sure to delete this site?')) { + noty.success('Cancel delete'); + return; + } + + + let site_id = e.target.parentNode.id; + let domain = e.target.parentNode.querySelector("a").href; + const getSEO = localStorage.getItem('gram-seo'); + const { token } = getSEO ? JSON.parse(getSEO) : {}; + + const data = { + site_id, + type:'DELETE' + } + + let delete_data = { + type:'DELETE', + url:getUrl(data), + token, + domain + } + + removeSiteFromNetlify(delete_data).then(()=>{ + removeSite(site_id); + e.target.parentNode.remove(); + }) + + + }) + }) + } + + listenDeployCheck(); + listenExistingSiteDelete(); toggleActiveOfDomainList(); const deployForm = document.querySelector('#deploy-form'); @@ -199,7 +243,7 @@ export default [{
        - +
        `; diff --git a/gramateria/develop/js/helpers/index.js b/gramateria/develop/js/helpers/index.js index 1d567c8..8a0d551 100644 --- a/gramateria/develop/js/helpers/index.js +++ b/gramateria/develop/js/helpers/index.js @@ -44,6 +44,12 @@ export const existingSites = () =>{ return sites; } +export const removeSite = (id) =>{ + let sites = existingSites(); + sites = sites.filter(e=>e.id !== id); + localStorage.setItem("gram-sites",JSON.stringify(sites)); +} + export const toggleActiveOfDomainList = () =>{ const removeActiveClass = () => { const radios = document.querySelectorAll(".existing-sites input[name='deploy-domain']"); @@ -66,7 +72,7 @@ export const toggleActiveOfDomainList = () =>{ export const listOfSites = () =>{ let sites = existingSites(); - if(sites.length == 0) return ''; + if(sites.length == 0) return '
        No existing site yet.'; let siteList = '
          '; siteList += sites.map(site=>{ return `
        • ${site.domain}
        • `; @@ -83,28 +89,67 @@ export const saveSites = (res) =>{ localStorage.setItem('gram-sites', JSON.stringify(sites)) } -export const deployToNetlify = (type,url,content) =>{ - console.log(type,url,content);return; - fetch(url, { +export const removeSiteFromNetlify = ({type,url,token,domain}) => { + return new Promise((resolve,reject)=>{ + const options = { + method:type, + headers:{ + "Authorization":"Bearer "+token + } + } + fetch(url, options) + .then((res) => { + if(!res.ok) { + msg.error({ + message: 'Something went wrong in deleting domain!' + }) + return; + }; + + modalMessage({ + message:`Deleted - ${domain}`, + type:'success' + }) + + resolve('deleted'); + msg.success({ + message: 'Successfully deleted!' + }) + + }).catch(err=>{ + reject(String(err)) + msg.error({ + message: String(err) + }) + }) + }) +} + +export const deployToNetlify = ({type,url,content,token}) =>{ + + let options = { method: type, headers: { 'Content-Type': 'application/zip', - 'Authorization': 'Bearer '+content.token + 'Authorization': 'Bearer '+token }, body: content - }).then(e => e.json()) + }; + + fetch(url, options).then(e => e.json()) .then(async (res) => { - saveSites(res); + if(type == 'POST'){ + saveSites(res); + } - const status = type === 'POST'?'Deployed':'Updated'; + let status = type === 'POST'?'Deployed':'Updated'; modalMessage({ message:`${status} domain - https://${res.subdomain}.netlify.app`, type:'success' }) - msg.success({ message: 'Successfully '+status }) @@ -125,17 +170,31 @@ export const modalMessage = (obj) =>{ } +export const getUrl = ({type,site_id}) =>{ + if(type == 'POST'){ + return 'https://api.netlify.com/api/v1/sites'; + }else{ + return 'https://api.netlify.com/api/v1/sites/'+site_id; + } +} + export const prepareDeployContent = (data) => { + + const {type,token} = data; let zip = buildZipFolder(data); zip.generateAsync({ type: "blob" }) .then(function (content) { - if(data.type === 'POST'){ - deployToNetlify(data.type,'https://api.netlify.com/api/v1/sites',content); - }else{ - deployToNetlify(data.type,'https://api.netlify.com/api/v1/sites/'+data.site_id,content); + let url = getUrl(data); + const deploy = { + type, + url, + content, + token } + deployToNetlify(deploy); + }) } diff --git a/gramateria/develop/sass/partials/_gram.scss b/gramateria/develop/sass/partials/_gram.scss index b093526..3bb24aa 100644 --- a/gramateria/develop/sass/partials/_gram.scss +++ b/gramateria/develop/sass/partials/_gram.scss @@ -98,4 +98,9 @@ .existing-sites ul li span.fa-trash:hover{ cursor:pointer; +} + +.gram-form .export-btn, +.gram-form .deploy-btn{ + margin-bottom:20px; } \ No newline at end of file diff --git a/gramateria/dist/gram.min.css b/gramateria/dist/gram.min.css index 7031449..4adea0c 100644 --- a/gramateria/dist/gram.min.css +++ b/gramateria/dist/gram.min.css @@ -378,6 +378,11 @@ html { cursor: pointer; } +.gram-form .export-btn, +.gram-form .deploy-btn { + margin-bottom: 20px; +} + /* Overwrite GrapeJS css */ .gjs-cm-editor#gjs-cm-css #gjs-cm-title, .gjs-cm-editor#gjs-cm-htmlmixed #gjs-cm-title, diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index d654e39..15ef600 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -370,9 +370,11 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ }, title = _ref.title, description = _ref.description, - token = _ref.token; + token = _ref.token; // clear - var form = "\n
          \n
          \n
          \n \n \n
          \n
          \n \n \n
          \n
          \n

          Netlify

          \n
          \n \n \n
          \n
          \n

          Deploy to

          \n
          \n New site Existing site\n
          \n
          \n Existing sites\n ").concat((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.listOfSites)(), "\n
          \n
          \n
          \n \n
          \n
          \n "); + + localStorage.setItem('gram-deploying-site', ''); + var form = "\n
          \n
          \n
          \n \n \n
          \n
          \n \n \n
          \n
          \n

          Netlify

          \n
          \n \n \n
          \n
          \n
          \n Create a new site
          Update an existing site\n
          \n
          \n Existing sites\n ").concat((0,_helpers__WEBPACK_IMPORTED_MODULE_1__.listOfSites)(), "\n
          \n
          \n
          \n \n
          \n
          \n "); modal.setContent(form); modal.open({ attributes: { @@ -399,11 +401,46 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ }); }; + var listenExistingSiteDelete = function listenExistingSiteDelete() { + var trashIcons = document.querySelectorAll(".existing-sites li span.remove-domain"); + trashIcons.forEach(function (trash) { + trash.addEventListener('click', function (e) { + if (!confirm('Are you sure to delete this site?')) { + noty.success('Cancel delete'); + return; + } + + var site_id = e.target.parentNode.id; + var domain = e.target.parentNode.querySelector("a").href; + var getSEO = localStorage.getItem('gram-seo'); + + var _ref2 = getSEO ? JSON.parse(getSEO) : {}, + token = _ref2.token; + + var data = { + site_id: site_id, + type: 'DELETE' + }; + var delete_data = { + type: 'DELETE', + url: (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.getUrl)(data), + token: token, + domain: domain + }; + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.removeSiteFromNetlify)(delete_data).then(function () { + (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.removeSite)(site_id); + e.target.parentNode.remove(); + }); + }); + }); + }; + listenDeployCheck(); + listenExistingSiteDelete(); (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.toggleActiveOfDomainList)(); var deployForm = document.querySelector('#deploy-form'); deployForm.addEventListener('submit', /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee(e) { + var _ref3 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee(e) { var formData, SEO, title, description, token, existingSiteDiv, type, html, css, global, data, site_id; return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee$(_context) { while (1) { @@ -493,7 +530,7 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ })); return function (_x) { - return _ref2.apply(this, arguments); + return _ref3.apply(this, arguments); }; }()); }, @@ -509,14 +546,14 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ modal.setTitle('Export'); var getSEO = localStorage.getItem('gram-seo'); - var _ref3 = getSEO ? JSON.parse(getSEO) : { + var _ref4 = getSEO ? JSON.parse(getSEO) : { title: '', description: '' }, - title = _ref3.title, - description = _ref3.description; + title = _ref4.title, + description = _ref4.description; - var form = "\n
          \n
          \n \n \n
          \n
          \n \n \n
          \n
          \n \n
          \n
          \n "); + var form = "\n
          \n
          \n \n \n
          \n
          \n \n \n
          \n
          \n \n
          \n
          \n "); modal.setContent(form); modal.open({ attributes: { @@ -525,7 +562,7 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ }); var exportForm = document.querySelector('#export-form'); exportForm.addEventListener('submit', /*#__PURE__*/function () { - var _ref4 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee2(e) { + var _ref5 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee2(e) { var formData, SEO, title, description, html, css, global, data; return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee2$(_context2) { while (1) { @@ -582,7 +619,7 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ })); return function (_x2) { - return _ref4.apply(this, arguments); + return _ref5.apply(this, arguments); }; }()); }, @@ -1373,11 +1410,14 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ "checkExtension": () => (/* binding */ checkExtension), /* harmony export */ "exportZip": () => (/* binding */ exportZip), /* harmony export */ "existingSites": () => (/* binding */ existingSites), +/* harmony export */ "removeSite": () => (/* binding */ removeSite), /* harmony export */ "toggleActiveOfDomainList": () => (/* binding */ toggleActiveOfDomainList), /* harmony export */ "listOfSites": () => (/* binding */ listOfSites), /* harmony export */ "saveSites": () => (/* binding */ saveSites), +/* harmony export */ "removeSiteFromNetlify": () => (/* binding */ removeSiteFromNetlify), /* harmony export */ "deployToNetlify": () => (/* binding */ deployToNetlify), /* harmony export */ "modalMessage": () => (/* binding */ modalMessage), +/* harmony export */ "getUrl": () => (/* binding */ getUrl), /* harmony export */ "prepareDeployContent": () => (/* binding */ prepareDeployContent), /* harmony export */ "loadingSpinner": () => (/* binding */ loadingSpinner), /* harmony export */ "getGlobalJsCss": () => (/* binding */ getGlobalJsCss) @@ -1437,6 +1477,13 @@ var existingSites = function existingSites() { sites = sites ? JSON.parse(sites) : []; return sites; }; +var removeSite = function removeSite(id) { + var sites = existingSites(); + sites = sites.filter(function (e) { + return e.id !== id; + }); + localStorage.setItem("gram-sites", JSON.stringify(sites)); +}; var toggleActiveOfDomainList = function toggleActiveOfDomainList() { var removeActiveClass = function removeActiveClass() { var radios = document.querySelectorAll(".existing-sites input[name='deploy-domain']"); @@ -1459,7 +1506,7 @@ var toggleActiveOfDomainList = function toggleActiveOfDomainList() { }; var listOfSites = function listOfSites() { var sites = existingSites(); - if (sites.length == 0) return ''; + if (sites.length == 0) return '
          No existing site yet.'; var siteList = '
            '; siteList += sites.map(function (site) { return "
          • ").concat(site.domain, "
          • "); @@ -1477,26 +1524,69 @@ var saveSites = function saveSites(res) { }); localStorage.setItem('gram-sites', JSON.stringify(sites)); }; -var deployToNetlify = function deployToNetlify(type, url, content) { - console.log(type, url, content); - return; - fetch(url, { +var removeSiteFromNetlify = function removeSiteFromNetlify(_ref) { + var type = _ref.type, + url = _ref.url, + token = _ref.token, + domain = _ref.domain; + return new Promise(function (resolve, reject) { + var options = { + method: type, + headers: { + "Authorization": "Bearer " + token + } + }; + fetch(url, options).then(function (res) { + if (!res.ok) { + msg.error({ + message: 'Something went wrong in deleting domain!' + }); + return; + } + + ; + modalMessage({ + message: "Deleted - ".concat(domain), + type: 'success' + }); + resolve('deleted'); + msg.success({ + message: 'Successfully deleted!' + }); + })["catch"](function (err) { + reject(String(err)); + msg.error({ + message: String(err) + }); + }); + }); +}; +var deployToNetlify = function deployToNetlify(_ref2) { + var type = _ref2.type, + url = _ref2.url, + content = _ref2.content, + token = _ref2.token; + var options = { method: type, headers: { 'Content-Type': 'application/zip', - 'Authorization': 'Bearer ' + content.token + 'Authorization': 'Bearer ' + token }, body: content - }).then(function (e) { + }; + fetch(url, options).then(function (e) { return e.json(); }).then( /*#__PURE__*/function () { - var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee(res) { + var _ref3 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee(res) { var status; return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: - saveSites(res); + if (type == 'POST') { + saveSites(res); + } + status = type === 'POST' ? 'Deployed' : 'Updated'; modalMessage({ message: "".concat(status, " domain - https://").concat(res.subdomain, ".netlify.app"), @@ -1515,7 +1605,7 @@ var deployToNetlify = function deployToNetlify(type, url, content) { })); return function (_x) { - return _ref.apply(this, arguments); + return _ref3.apply(this, arguments); }; }())["catch"](function (err) { msg.error({ @@ -1529,16 +1619,31 @@ var modalMessage = function modalMessage(obj) { var gramForm = document.querySelector(".gram-form"); gramForm.classList.add("hide"); }; +var getUrl = function getUrl(_ref4) { + var type = _ref4.type, + site_id = _ref4.site_id; + + if (type == 'POST') { + return 'https://api.netlify.com/api/v1/sites'; + } else { + return 'https://api.netlify.com/api/v1/sites/' + site_id; + } +}; var prepareDeployContent = function prepareDeployContent(data) { + var type = data.type, + token = data.token; var zip = buildZipFolder(data); zip.generateAsync({ type: "blob" }).then(function (content) { - if (data.type === 'POST') { - deployToNetlify(data.type, 'https://api.netlify.com/api/v1/sites', content); - } else { - deployToNetlify(data.type, 'https://api.netlify.com/api/v1/sites/' + data.site_id, content); - } + var url = getUrl(data); + var deploy = { + type: type, + url: url, + content: content, + token: token + }; + deployToNetlify(deploy); }); }; var loadingSpinner = function loadingSpinner() { @@ -1551,7 +1656,7 @@ var loadingSpinner = function loadingSpinner() { }); }; var getGlobalJsCss = /*#__PURE__*/function () { - var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee2() { + var _ref5 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee2() { var global_css_url, global_js_url, cssRes, css, jsRes, js; return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap(function _callee2$(_context2) { while (1) { @@ -1593,7 +1698,7 @@ var getGlobalJsCss = /*#__PURE__*/function () { })); return function getGlobalJsCss() { - return _ref2.apply(this, arguments); + return _ref5.apply(this, arguments); }; }(); From 113257d6099a963e4f2966eb19a15e7ba19a47a8 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Sun, 25 Jul 2021 21:42:05 +0630 Subject: [PATCH 18/27] change version --- package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index f56930b..e248312 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "gramateria", - "version": "1.0.4", + "version": "1.0.6", "private": true, - "description": "Open source drag and drop website builder", + "description": "Open source drag and drop website builder with bootstrap 5", "main": "index.js", "scripts": { "gen": "mix", @@ -16,7 +16,6 @@ "gramateria", "webite", "grapejs", - "materialize", "builder", "drag and drop" ], From af6a120b15524fd4dd6b2464c6b9fcc158a929c1 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Mon, 26 Jul 2021 17:19:17 +0630 Subject: [PATCH 19/27] add dependencies scripts, testimonial section --- .gitignore | 3 +- gramateria/develop/css/global.css | 2 +- gramateria/develop/js/config/buttons.js | 2 + .../develop/js/config/exportTemplate.js | 16 ++ gramateria/develop/js/config/sectionBlocks.js | 81 ++++++ gramateria/develop/js/global.js | 6 +- gramateria/develop/js/gramateria.js | 163 ++++++++++- gramateria/develop/js/helpers/index.js | 30 +- gramateria/dist/global.css | 2 +- gramateria/dist/global.js | 6 +- gramateria/dist/gram.min.js | 257 ++++++++++++++++-- 11 files changed, 533 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index b512c09..9c69a15 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -node_modules \ No newline at end of file +node_modules +export \ No newline at end of file diff --git a/gramateria/develop/css/global.css b/gramateria/develop/css/global.css index 529c6fb..00e783e 100644 --- a/gramateria/develop/css/global.css +++ b/gramateria/develop/css/global.css @@ -1,5 +1,5 @@ body{ - background:#f6f9f7 !important; + background:#eaf3fe !important; font-family: 'Roboto', sans-serif; font-size:1.1rem; } diff --git a/gramateria/develop/js/config/buttons.js b/gramateria/develop/js/config/buttons.js index d6689d6..fd1f533 100644 --- a/gramateria/develop/js/config/buttons.js +++ b/gramateria/develop/js/config/buttons.js @@ -57,6 +57,8 @@ export default [{ localStorage.setItem('gjs-html', ''); localStorage.setItem('gjs-css', ''); localStorage.setItem('gjs-styles', ''); + localStorage.removeItem('gjs-scripts',''); + localStorage.removeItem('gram-dependencies',''); }, 0); } }, diff --git a/gramateria/develop/js/config/exportTemplate.js b/gramateria/develop/js/config/exportTemplate.js index d8e63a8..1adf45f 100644 --- a/gramateria/develop/js/config/exportTemplate.js +++ b/gramateria/develop/js/config/exportTemplate.js @@ -1,5 +1,18 @@ +import { getLocal } from './../helpers/index'; + export const exportTemplate = (data)=>{ const {title,description,html} = data; + let dependencies = getLocal('gram-dependencies'); + + let dependencyLinks = dependencies.length > 0 ? dependencies.map(d=>{ + return ``; + }).join("\n") : ''; + + + let dependencyScripts = dependencies.length > 0 ? dependencies.map(d=>{ + return ``; + }).join("\n") : ''; + return ` @@ -14,11 +27,14 @@ export const exportTemplate = (data)=>{ + ${dependencyLinks} ${html || ''} + + ${dependencyScripts} diff --git a/gramateria/develop/js/config/sectionBlocks.js b/gramateria/develop/js/config/sectionBlocks.js index 286eb61..243a2db 100644 --- a/gramateria/develop/js/config/sectionBlocks.js +++ b/gramateria/develop/js/config/sectionBlocks.js @@ -143,5 +143,86 @@ export default [
        ` + }, + { + id:'section-testimonial', + label:'Testimonial', + name:'section-testimonial', + category:'Sections', + attributes:{ + class:'fa fa-th' + }, + content:`
        +
        +

        Testimonials

        +
        +
        + +
        +
        +
          +
        • +
          + +

          John Doe
          Backend developer

          +
          +

          Lorem ipsum dolor sit amet consectetur, adipisicing elit. Accusantium voluptates ut ad laudantium.

          +
          + +
        • +
        • +
          + +

          Steve
          Co-founder of company

          +
          +

          Lorem ipsum dolor sit amet consectetur, adipisicing elit. Accusantium voluptates ut ad laudantium.

          +
          + +
        • +
        • +
          + +

          Jessica
          Product Manager

          +
          +

          Lorem ipsum dolor sit amet consectetur, adipisicing elit. Accusantium voluptates ut ad laudantium.

          +
          + +
        • +
        +
        +
        + +
        +
        + ` } ] \ No newline at end of file diff --git a/gramateria/develop/js/global.js b/gramateria/develop/js/global.js index 7519db2..db01ac2 100644 --- a/gramateria/develop/js/global.js +++ b/gramateria/develop/js/global.js @@ -1,3 +1,5 @@ +window.addEventListener('DOMContentLoaded', () => { + /*---------------------------------- Smooth scroll to sections ------------------------------------*/ @@ -23,4 +25,6 @@ const listenAllA = (alllinks) => { }) } -listenAllA(allAnchors); \ No newline at end of file +listenAllA(allAnchors); + +}) \ No newline at end of file diff --git a/gramateria/develop/js/gramateria.js b/gramateria/develop/js/gramateria.js index da1a6c7..c167921 100755 --- a/gramateria/develop/js/gramateria.js +++ b/gramateria/develop/js/gramateria.js @@ -1,6 +1,6 @@ import blockManager from './config/blockManager' import styleManager from './config/styleManager' -// import commands from './config/commands' +import {addLocal, getLocal} from './helpers/index' import assetManager from './config/assetManager' import buttons from './config/buttons' import { checkExtension, loadingSpinner } from './helpers/index.js' @@ -17,7 +17,7 @@ class Gramateria { y: 'top' } }); - this.editor = grapesjs.init({ + this.config = { allowScripts: 1, showOffsets: 1, autorender: 0, @@ -54,10 +54,9 @@ class Gramateria { storeHtml: 1, storeCss: 1, } - }); + } - this.editor.Panels.addButton('options', buttons); - this.modal = this.editor.Modal; + this.appendDependencies(); } @@ -239,10 +238,159 @@ class Gramateria { return codeEditor; } + appendDependencies (){ + + let dependencies = getLocal("gram-dependencies"); + + let links = dependencies.map(d=>d.css); + let scripts = dependencies.map(d=>d.js); + + // Append dependencies + + for(let l of links){ + this.config.canvas.styles.push(l); + } + + for(let s of scripts){ + this.config.canvas.scripts.push(s); + } + + } + + + runCustomScript = () =>{ + // Append Custom Script + let doc = this.editor.Canvas.getDocument(); + let gjsScripts = getLocal("gjs-scripts"); + for(let s of gjsScripts){ + const scriptEl = document.createElement('script'); + scriptEl.className = `${s.name}-script`; + scriptEl.innerHTML = s.script; + doc.body.appendChild(scriptEl); + } + + } + + addDependencies = (dependency) =>{ + + // Toto - must add specific dependency only + if(dependency === 'testimonial'){ + let doc = this.editor.Canvas.getDocument(); + const appendDependency = () => { + return new Promise((resolve,reject)=>{ + + let dependencies = getLocal('gram-dependencies'); + let isExit = dependencies.filter(d=>d.name === 'splidejs'); + + if(isExit.length !== 0){ + resolve('grapesjs_exit'); + return; + } + + const link = document.createElement("link"); + link.rel = 'stylesheet'; + link.className = 'splidejs-script'; + link.href = 'https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/css/splide.min.css'; + doc.head.appendChild(link) + + const script = document.createElement("script"); + script.src = 'https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/js/splide.min.js'; + script.className = 'splidejs-script'; + doc.body.appendChild(script); + + dependencies.push({ + name:'splidejs', + js:script.src, + css:link.href + }) + + addLocal('gram-dependencies',dependencies) + + resolve('done'); + + }) + } + + appendDependency().then((msg)=>{ + if(msg === 'grapesjs_exit') return; + setTimeout(()=>{ + const customScript = document.createElement("script"); + customScript.innerHTML = `new Splide('#splide', { + type : 'loop', + perPage: 3, + focus : 'center', + pagination: false + }).mount();`; + customScript.className = 'splidejs-script'; + doc.body.appendChild(customScript); + let custom = customScript.innerHTML; + + const storeCustomScripts = (name,script) =>{ + + let customScriptArr = getLocal('gjs-scripts'); + customScriptArr.push({ + name, + script + }) + + addLocal('gjs-scripts',customScriptArr); + } + + storeCustomScripts('splidejs',custom); + + },2000) + }) + } + + } + + removeDependencies (dependency){ + + // Delete testimonial + if(dependency == 'testimonial'){ + + // Toto - must delete specific dependency only + let doc = this.editor.Canvas.getDocument(); + let dependencies = getLocal('gram-dependencies'); + if(dependencies.length > 0){ + for(let dp of dependencies){ + let allScripts = doc.querySelectorAll(`.${dp.name}-script`); + allScripts.forEach(e=>e.outerHTML = '') + } + + dependencies = dependencies.filter(d=>d.name !== 'splidejs'); + addLocal('gram-dependencies',dependencies); + + let customScript = getLocal('gjs-scripts'); + customScript = customScript.filter(c=>c.name !== 'splidejs'); + addLocal('gjs-scripts',customScript); + } + } + } + + listenAddDependencies = () =>{ + + this.editor.on('component:add', component => { + this.addDependencies(component.attributes.attributes.id); + }); + + + } + + listenRemoveDependencies = () =>{ + this.editor.on('component:remove', component => { + this.removeDependencies(component.attributes.attributes.id); + }); + } + init() { + this.editor = grapesjs.init(this.config); + this.editor.Panels.addButton('options', buttons); + this.modal = this.editor.Modal; this.codeImportModal(); this.editor.Panels.removeButton('options', 'export-template'); this.editor.on('load', (editor) => { + editor.Panels.getButton('views', 'open-blocks').set('active', true) editor.BlockManager.getCategories().each((ctg) => { if (ctg.attributes.id === 'Sections') { @@ -276,11 +424,16 @@ class Gramateria { } else { traitsProps.style.display = 'none'; } + }); + + this.runCustomScript(); }); this.editor.getWrapper().addClass('iframe-wrapper'); this.editor.render(); + this.listenAddDependencies(); + this.listenRemoveDependencies(); } } diff --git a/gramateria/develop/js/helpers/index.js b/gramateria/develop/js/helpers/index.js index 8a0d551..438e72c 100644 --- a/gramateria/develop/js/helpers/index.js +++ b/gramateria/develop/js/helpers/index.js @@ -10,6 +10,17 @@ const msg = new Notyf({ } }); + +export const getLocal = (key) =>{ + let localData = localStorage.getItem(key); + localData = localData ? JSON.parse(localData) : []; + return localData; +} + +export const addLocal = (key,content) =>{ + localStorage.setItem(key, JSON.stringify(content || []) ); +} + export const checkExtension = (fname) => { let ext = /^.+\.([^.]+)$/.exec(fname); return ext == null ? "" : ext[1]; @@ -23,8 +34,15 @@ const buildZipFolder = (data) => { css.file("style.css", data.css); css.file("global.css", data.global.css); + let customScripts = getLocal('gjs-scripts'); + customScripts = customScripts.length > 0 ? customScripts.map(c=>c.script+'\n').join('\n') : ''; + + customScripts = `window.addEventListener('DOMContentLoaded', () => { + ${customScripts} + })`; + let js = zip.folder("js"); - js.file("script.js", `// all your script goes here `); + js.file("script.js", customScripts); js.file("global.js", data.global.js); return zip; } @@ -39,15 +57,13 @@ export const exportZip = (data) => { } export const existingSites = () =>{ - let sites = localStorage.getItem("gram-sites"); - sites = sites?JSON.parse(sites):[]; - return sites; + return getLocal("gram-sites"); } export const removeSite = (id) =>{ let sites = existingSites(); sites = sites.filter(e=>e.id !== id); - localStorage.setItem("gram-sites",JSON.stringify(sites)); + addLocal("gram-sites",sites); } export const toggleActiveOfDomainList = () =>{ @@ -86,7 +102,7 @@ export const saveSites = (res) =>{ const id = res.id; const sites = existingSites(); sites.push({domain,id}); - localStorage.setItem('gram-sites', JSON.stringify(sites)) + addLocal('gram-sites',sites) } export const removeSiteFromNetlify = ({type,url,token,domain}) => { @@ -220,4 +236,4 @@ export const getGlobalJsCss = async () =>{ const jsRes = await fetch(global_js_url); const js = await jsRes.text(); return {css,js}; -} \ No newline at end of file +} diff --git a/gramateria/dist/global.css b/gramateria/dist/global.css index 529c6fb..00e783e 100644 --- a/gramateria/dist/global.css +++ b/gramateria/dist/global.css @@ -1,5 +1,5 @@ body{ - background:#f6f9f7 !important; + background:#eaf3fe !important; font-family: 'Roboto', sans-serif; font-size:1.1rem; } diff --git a/gramateria/dist/global.js b/gramateria/dist/global.js index 7519db2..db01ac2 100644 --- a/gramateria/dist/global.js +++ b/gramateria/dist/global.js @@ -1,3 +1,5 @@ +window.addEventListener('DOMContentLoaded', () => { + /*---------------------------------- Smooth scroll to sections ------------------------------------*/ @@ -23,4 +25,6 @@ const listenAllA = (alllinks) => { }) } -listenAllA(allAnchors); \ No newline at end of file +listenAllA(allAnchors); + +}) \ No newline at end of file diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index 15ef600..e33ae15 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -349,6 +349,8 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ localStorage.setItem('gjs-html', ''); localStorage.setItem('gjs-css', ''); localStorage.setItem('gjs-styles', ''); + localStorage.removeItem('gjs-scripts', ''); + localStorage.removeItem('gram-dependencies', ''); }, 0); } }, @@ -641,11 +643,20 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "exportTemplate": () => (/* binding */ exportTemplate) /* harmony export */ }); +/* harmony import */ var _helpers_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../helpers/index */ "./gramateria/develop/js/helpers/index.js"); + var exportTemplate = function exportTemplate(data) { var title = data.title, description = data.description, html = data.html; - return "\n \n \n \n \n \n ".concat(title || '', "\n \n \n \n \n \n \n \n \n \n \n ").concat(html || '', "\n \n \n \n \n "); + var dependencies = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_0__.getLocal)('gram-dependencies'); + var dependencyLinks = dependencies.length > 0 ? dependencies.map(function (d) { + return ""); + }).join("\n") : ''; + var dependencyScripts = dependencies.length > 0 ? dependencies.map(function (d) { + return ""); + }).join("\n") : ''; + return "\n \n \n \n \n \n ".concat(title || '', "\n \n \n \n \n \n \n \n ").concat(dependencyLinks, "\n \n \n \n ").concat(html || '', "\n \n \n ").concat(dependencyScripts, "\n \n \n \n "); }; /***/ }), @@ -677,6 +688,15 @@ __webpack_require__.r(__webpack_exports__); "class": 'fa fa-th-large' }, content: "
        \n
        \n

        Recent Posts

        \n
        \n
        \n
        \n
        \n
        \n
        \n \"\"\n
        \n
        \n \n

        Post Title

        \n
        \n
        \n
        John Doe
        \n
        \n 4 min read\n
        \n
        \n

        \n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio delectus assumenda, voluptatibus rem labore nesciunt magnam ab provident odio ipsam!\n \n

        \n \n
        \n
        \n
        \n
        \n
        \n
        \n \"\"\n
        \n
        \n \n

        Post Title

        \n
        \n
        \n
        John Doe
        \n
        \n 4 min read\n
        \n
        \n

        \n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio delectus assumenda, voluptatibus rem labore nesciunt magnam ab provident odio ipsam!\n \n

        \n \n
        \n
        \n
        \n
        \n
        \n
        \n \"\"\n
        \n
        \n \n

        Post Title

        \n
        \n
        \n
        John Doe
        \n
        \n 4 min read\n
        \n
        \n

        \n Lorem ipsum dolor sit amet, consectetur adipisicing elit. Distinctio delectus assumenda, voluptatibus rem labore nesciunt magnam ab provident odio ipsam!\n \n

        \n \n
        \n
        \n
        \n
        \n
        \n
        " +}, { + id: 'section-testimonial', + label: 'Testimonial', + name: 'section-testimonial', + category: 'Sections', + attributes: { + "class": 'fa fa-th' + }, + content: "
        \n
        \n

        Testimonials

        \n
        \n
        \n \n
        \n
        \n
          \n
        • \n
          \n \"\"\n

          John Doe
          Backend developer

          \n
          \n

          Lorem ipsum dolor sit amet consectetur, adipisicing elit. Accusantium voluptates ut ad laudantium.

          \n
          \n \n
        • \n
        • \n
          \n \"\"\n

          Steve
          Co-founder of company

          \n
          \n

          Lorem ipsum dolor sit amet consectetur, adipisicing elit. Accusantium voluptates ut ad laudantium.

          \n
          \n \n
        • \n
        • \n
          \n \"\"\n

          Jessica
          Product Manager

          \n
          \n

          Lorem ipsum dolor sit amet consectetur, adipisicing elit. Accusantium voluptates ut ad laudantium.

          \n
          \n \n
        • \n
        \n
        \n
        \n \n
        \n
        \n " }]); /***/ }), @@ -1082,11 +1102,17 @@ __webpack_require__.r(__webpack_exports__); __webpack_require__.r(__webpack_exports__); /* harmony import */ var _config_blockManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config/blockManager */ "./gramateria/develop/js/config/blockManager.js"); /* harmony import */ var _config_styleManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./config/styleManager */ "./gramateria/develop/js/config/styleManager.js"); -/* harmony import */ var _config_assetManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config/assetManager */ "./gramateria/develop/js/config/assetManager.js"); -/* harmony import */ var _config_buttons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config/buttons */ "./gramateria/develop/js/config/buttons.js"); -/* harmony import */ var _helpers_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./helpers/index.js */ "./gramateria/develop/js/helpers/index.js"); +/* harmony import */ var _helpers_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers/index.js */ "./gramateria/develop/js/helpers/index.js"); +/* harmony import */ var _config_assetManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config/assetManager */ "./gramateria/develop/js/config/assetManager.js"); +/* harmony import */ var _config_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config/buttons */ "./gramateria/develop/js/config/buttons.js"); /* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); /* harmony import */ var notyf_notyf_min_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! notyf/notyf.min.css */ "./node_modules/notyf/notyf.min.css"); +function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -1096,7 +1122,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - // import commands from './config/commands' + @@ -1128,6 +1154,102 @@ var Gramateria = /*#__PURE__*/function () { return codeEditor; }); + _defineProperty(this, "runCustomScript", function () { + // Append Custom Script + var doc = _this.editor.Canvas.getDocument(); + + var gjsScripts = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)("gjs-scripts"); + + var _iterator = _createForOfIteratorHelper(gjsScripts), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + var s = _step.value; + var scriptEl = document.createElement('script'); + scriptEl.className = "".concat(s.name, "-script"); + scriptEl.innerHTML = s.script; + doc.body.appendChild(scriptEl); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + }); + + _defineProperty(this, "addDependencies", function (dependency) { + // Toto - must add specific dependency only + if (dependency === 'testimonial') { + var doc = _this.editor.Canvas.getDocument(); + + var appendDependency = function appendDependency() { + return new Promise(function (resolve, reject) { + var dependencies = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)('gram-dependencies'); + var isExit = dependencies.filter(function (d) { + return d.name === 'splidejs'; + }); + + if (isExit.length !== 0) { + resolve('grapesjs_exit'); + return; + } + + var link = document.createElement("link"); + link.rel = 'stylesheet'; + link.className = 'splidejs-script'; + link.href = 'https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/css/splide.min.css'; + doc.head.appendChild(link); + var script = document.createElement("script"); + script.src = 'https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/js/splide.min.js'; + script.className = 'splidejs-script'; + doc.body.appendChild(script); + dependencies.push({ + name: 'splidejs', + js: script.src, + css: link.href + }); + (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.addLocal)('gram-dependencies', dependencies); + resolve('done'); + }); + }; + + appendDependency().then(function (msg) { + if (msg === 'grapesjs_exit') return; + setTimeout(function () { + var customScript = document.createElement("script"); + customScript.innerHTML = "new Splide('#splide', {\n type : 'loop',\n perPage: 3,\n focus : 'center',\n pagination: false\n }).mount();"; + customScript.className = 'splidejs-script'; + doc.body.appendChild(customScript); + var custom = customScript.innerHTML; + + var storeCustomScripts = function storeCustomScripts(name, script) { + var customScriptArr = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)('gjs-scripts'); + customScriptArr.push({ + name: name, + script: script + }); + (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.addLocal)('gjs-scripts', customScriptArr); + }; + + storeCustomScripts('splidejs', custom); + }, 2000); + }); + } + }); + + _defineProperty(this, "listenAddDependencies", function () { + _this.editor.on('component:add', function (component) { + _this.addDependencies(component.attributes.attributes.id); + }); + }); + + _defineProperty(this, "listenRemoveDependencies", function () { + _this.editor.on('component:remove', function (component) { + _this.removeDependencies(component.attributes.attributes.id); + }); + }); + this.msg = new notyf__WEBPACK_IMPORTED_MODULE_5__.Notyf({ duration: 3000, position: { @@ -1135,7 +1257,7 @@ var Gramateria = /*#__PURE__*/function () { y: 'top' } }); - this.editor = grapesjs.init({ + this.config = { allowScripts: 1, showOffsets: 1, autorender: 0, @@ -1150,7 +1272,7 @@ var Gramateria = /*#__PURE__*/function () { scripts: ['https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js', 'gramateria/dist/global.js'] }, // commands, - assetManager: _config_assetManager__WEBPACK_IMPORTED_MODULE_2__.default, + assetManager: _config_assetManager__WEBPACK_IMPORTED_MODULE_3__.default, blockManager: _config_blockManager__WEBPACK_IMPORTED_MODULE_0__.default, styleManager: _config_styleManager__WEBPACK_IMPORTED_MODULE_1__.default, storageManager: { @@ -1164,9 +1286,8 @@ var Gramateria = /*#__PURE__*/function () { storeHtml: 1, storeCss: 1 } - }); - this.editor.Panels.addButton('options', _config_buttons__WEBPACK_IMPORTED_MODULE_3__.default); - this.modal = this.editor.Modal; + }; + this.appendDependencies(); } _createClass(Gramateria, [{ @@ -1207,7 +1328,7 @@ var Gramateria = /*#__PURE__*/function () { fileLoadInput.onchange = function (e) { var currentFile = e.target.files[0]; - var fType = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.checkExtension)(currentFile['name']); + var fType = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.checkExtension)(currentFile['name']); if (currentFile === undefined) { _this2.msg.error('Please select a file'); @@ -1347,9 +1468,92 @@ var Gramateria = /*#__PURE__*/function () { } }); } + }, { + key: "appendDependencies", + value: function appendDependencies() { + var dependencies = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)("gram-dependencies"); + var links = dependencies.map(function (d) { + return d.css; + }); + var scripts = dependencies.map(function (d) { + return d.js; + }); // Append dependencies + + var _iterator2 = _createForOfIteratorHelper(links), + _step2; + + try { + for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { + var l = _step2.value; + this.config.canvas.styles.push(l); + } + } catch (err) { + _iterator2.e(err); + } finally { + _iterator2.f(); + } + + var _iterator3 = _createForOfIteratorHelper(scripts), + _step3; + + try { + for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { + var s = _step3.value; + this.config.canvas.scripts.push(s); + } + } catch (err) { + _iterator3.e(err); + } finally { + _iterator3.f(); + } + } + }, { + key: "removeDependencies", + value: function removeDependencies(dependency) { + // Delete testimonial + if (dependency == 'testimonial') { + // Toto - must delete specific dependency only + var doc = this.editor.Canvas.getDocument(); + var dependencies = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)('gram-dependencies'); + + if (dependencies.length > 0) { + var _iterator4 = _createForOfIteratorHelper(dependencies), + _step4; + + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var dp = _step4.value; + var allScripts = doc.querySelectorAll(".".concat(dp.name, "-script")); + allScripts.forEach(function (e) { + return e.outerHTML = ''; + }); + } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); + } + + dependencies = dependencies.filter(function (d) { + return d.name !== 'splidejs'; + }); + (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.addLocal)('gram-dependencies', dependencies); + var customScript = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)('gjs-scripts'); + customScript = customScript.filter(function (c) { + return c.name !== 'splidejs'; + }); + (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.addLocal)('gjs-scripts', customScript); + } + } + } }, { key: "init", value: function init() { + var _this3 = this; + + this.editor = grapesjs.init(this.config); + this.editor.Panels.addButton('options', _config_buttons__WEBPACK_IMPORTED_MODULE_4__.default); + this.modal = this.editor.Modal; this.codeImportModal(); this.editor.Panels.removeButton('options', 'export-template'); this.editor.on('load', function (editor) { @@ -1384,9 +1588,13 @@ var Gramateria = /*#__PURE__*/function () { traitsProps.style.display = 'none'; } }); + + _this3.runCustomScript(); }); this.editor.getWrapper().addClass('iframe-wrapper'); this.editor.render(); + this.listenAddDependencies(); + this.listenRemoveDependencies(); } }]); @@ -1394,7 +1602,7 @@ var Gramateria = /*#__PURE__*/function () { }(); new Gramateria().init(); -(0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.loadingSpinner)(); +(0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.loadingSpinner)(); /***/ }), @@ -1407,6 +1615,8 @@ new Gramateria().init(); "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "getLocal": () => (/* binding */ getLocal), +/* harmony export */ "addLocal": () => (/* binding */ addLocal), /* harmony export */ "checkExtension": () => (/* binding */ checkExtension), /* harmony export */ "exportZip": () => (/* binding */ exportZip), /* harmony export */ "existingSites": () => (/* binding */ existingSites), @@ -1446,6 +1656,14 @@ var msg = new notyf__WEBPACK_IMPORTED_MODULE_4__.Notyf({ y: 'top' } }); +var getLocal = function getLocal(key) { + var localData = localStorage.getItem(key); + localData = localData ? JSON.parse(localData) : []; + return localData; +}; +var addLocal = function addLocal(key, content) { + localStorage.setItem(key, JSON.stringify(content || [])); +}; var checkExtension = function checkExtension(fname) { var ext = /^.+\.([^.]+)$/.exec(fname); return ext == null ? "" : ext[1]; @@ -1457,8 +1675,13 @@ var buildZipFolder = function buildZipFolder(data) { var css = zip.folder("css"); css.file("style.css", data.css); css.file("global.css", data.global.css); + var customScripts = getLocal('gjs-scripts'); + customScripts = customScripts.length > 0 ? customScripts.map(function (c) { + return c.script + '\n'; + }).join('\n') : ''; + customScripts = "window.addEventListener('DOMContentLoaded', () => {\n ".concat(customScripts, "\n })"); var js = zip.folder("js"); - js.file("script.js", "// all your script goes here "); + js.file("script.js", customScripts); js.file("global.js", data.global.js); return zip; }; @@ -1473,16 +1696,14 @@ var exportZip = function exportZip(data) { }); }; var existingSites = function existingSites() { - var sites = localStorage.getItem("gram-sites"); - sites = sites ? JSON.parse(sites) : []; - return sites; + return getLocal("gram-sites"); }; var removeSite = function removeSite(id) { var sites = existingSites(); sites = sites.filter(function (e) { return e.id !== id; }); - localStorage.setItem("gram-sites", JSON.stringify(sites)); + addLocal("gram-sites", sites); }; var toggleActiveOfDomainList = function toggleActiveOfDomainList() { var removeActiveClass = function removeActiveClass() { @@ -1522,7 +1743,7 @@ var saveSites = function saveSites(res) { domain: domain, id: id }); - localStorage.setItem('gram-sites', JSON.stringify(sites)); + addLocal('gram-sites', sites); }; var removeSiteFromNetlify = function removeSiteFromNetlify(_ref) { var type = _ref.type, From a3cdf16f9df634a0af9c61dfa36b3f062aaf7d10 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Mon, 26 Jul 2021 17:51:53 +0630 Subject: [PATCH 20/27] prepare for many dependencies --- gramateria/develop/js/config/customScripts.js | 18 ++ gramateria/develop/js/gramateria.js | 84 +++--- gramateria/dist/gram.min.js | 240 ++++++++++-------- 3 files changed, 204 insertions(+), 138 deletions(-) create mode 100644 gramateria/develop/js/config/customScripts.js diff --git a/gramateria/develop/js/config/customScripts.js b/gramateria/develop/js/config/customScripts.js new file mode 100644 index 0000000..098a9ab --- /dev/null +++ b/gramateria/develop/js/config/customScripts.js @@ -0,0 +1,18 @@ +export default (dependency) => { + + let scriptArr = [ + { + name: 'splidejs', + script: `new Splide('#splide', { + type : 'loop', + perPage: 3, + focus : 'center', + pagination: false + }).mount();` + } + ] + + const dep = scriptArr.filter(e=>e.name === dependency); + return dep?dep[0].script:''; + +} \ No newline at end of file diff --git a/gramateria/develop/js/gramateria.js b/gramateria/develop/js/gramateria.js index c167921..51d54b5 100755 --- a/gramateria/develop/js/gramateria.js +++ b/gramateria/develop/js/gramateria.js @@ -1,5 +1,6 @@ import blockManager from './config/blockManager' import styleManager from './config/styleManager' +import customScripts from './config/customScripts' import {addLocal, getLocal} from './helpers/index' import assetManager from './config/assetManager' import buttons from './config/buttons' @@ -7,6 +8,14 @@ import { checkExtension, loadingSpinner } from './helpers/index.js' import { Notyf } from 'notyf'; import 'notyf/notyf.min.css'; // for React, Vue and Svelte +// Section that has dependency +let sectionDependencies = [ + { + name:'testimonial', + dependencies:['splidejs'] + } +] + class Gramateria { constructor() { @@ -271,19 +280,17 @@ class Gramateria { } - addDependencies = (dependency) =>{ + addDependency = (dependency) =>{ - // Toto - must add specific dependency only - if(dependency === 'testimonial'){ let doc = this.editor.Canvas.getDocument(); const appendDependency = () => { return new Promise((resolve,reject)=>{ let dependencies = getLocal('gram-dependencies'); - let isExit = dependencies.filter(d=>d.name === 'splidejs'); + let isExit = dependencies.filter(d=>d.name === dependency); if(isExit.length !== 0){ - resolve('grapesjs_exit'); + resolve(dependency); return; } @@ -311,17 +318,12 @@ class Gramateria { }) } - appendDependency().then((msg)=>{ - if(msg === 'grapesjs_exit') return; + appendDependency().then((dep)=>{ + if(dep === dependency) return; setTimeout(()=>{ const customScript = document.createElement("script"); - customScript.innerHTML = `new Splide('#splide', { - type : 'loop', - perPage: 3, - focus : 'center', - pagination: false - }).mount();`; - customScript.className = 'splidejs-script'; + customScript.innerHTML = customScripts(dependency); + customScript.className = `${dependency}-script`; doc.body.appendChild(customScript); let custom = customScript.innerHTML; @@ -336,42 +338,41 @@ class Gramateria { addLocal('gjs-scripts',customScriptArr); } - storeCustomScripts('splidejs',custom); + storeCustomScripts(dependency,custom); },2000) - }) - } - + }) } - removeDependencies (dependency){ + removeDependency (dependency){ - // Delete testimonial - if(dependency == 'testimonial'){ + let doc = this.editor.Canvas.getDocument(); + let dependencies = getLocal('gram-dependencies'); + if(dependencies.length == 0) return; - // Toto - must delete specific dependency only - let doc = this.editor.Canvas.getDocument(); - let dependencies = getLocal('gram-dependencies'); - if(dependencies.length > 0){ - for(let dp of dependencies){ - let allScripts = doc.querySelectorAll(`.${dp.name}-script`); - allScripts.forEach(e=>e.outerHTML = '') - } - - dependencies = dependencies.filter(d=>d.name !== 'splidejs'); - addLocal('gram-dependencies',dependencies); - - let customScript = getLocal('gjs-scripts'); - customScript = customScript.filter(c=>c.name !== 'splidejs'); - addLocal('gjs-scripts',customScript); - } + for(let dp of dependencies){ + let allScripts = doc.querySelectorAll(`.${dp.name}-script`); + allScripts.forEach(e=>e.outerHTML = '') } + + dependencies = dependencies.filter(d=>d.name !== dependency); + addLocal('gram-dependencies',dependencies); + + let customScript = getLocal('gjs-scripts'); + customScript = customScript.filter(c=>c.name !== dependency); + addLocal('gjs-scripts',customScript); } listenAddDependencies = () =>{ this.editor.on('component:add', component => { - this.addDependencies(component.attributes.attributes.id); + let section = component.attributes.attributes.id; + + let hasDependency = sectionDependencies.filter(e=>e.name === section); + if(hasDependency.length !== 0){ + let dependency = hasDependency[0].dependencies[0]; + this.addDependency(dependency); + } }); @@ -379,7 +380,12 @@ class Gramateria { listenRemoveDependencies = () =>{ this.editor.on('component:remove', component => { - this.removeDependencies(component.attributes.attributes.id); + let section = component.attributes.attributes.id; + let hasDependency = sectionDependencies.filter(e=>e.name === section); + if(hasDependency.length !== 0){ + let dependency = hasDependency[0].dependencies[0]; + this.removeDependency(dependency); + } }); } diff --git a/gramateria/dist/gram.min.js b/gramateria/dist/gram.min.js index e33ae15..71db167 100644 --- a/gramateria/dist/gram.min.js +++ b/gramateria/dist/gram.min.js @@ -632,6 +632,30 @@ var noty = new notyf__WEBPACK_IMPORTED_MODULE_2__.Notyf({ /***/ }), +/***/ "./gramateria/develop/js/config/customScripts.js": +/*!*******************************************************!*\ + !*** ./gramateria/develop/js/config/customScripts.js ***! + \*******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (function (dependency) { + var scriptArr = [{ + name: 'splidejs', + script: "new Splide('#splide', {\n type : 'loop',\n perPage: 3,\n focus : 'center',\n pagination: false\n }).mount();" + }]; + var dep = scriptArr.filter(function (e) { + return e.name === dependency; + }); + return dep ? dep[0].script : ''; +}); + +/***/ }), + /***/ "./gramateria/develop/js/config/exportTemplate.js": /*!********************************************************!*\ !*** ./gramateria/develop/js/config/exportTemplate.js ***! @@ -1102,11 +1126,12 @@ __webpack_require__.r(__webpack_exports__); __webpack_require__.r(__webpack_exports__); /* harmony import */ var _config_blockManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config/blockManager */ "./gramateria/develop/js/config/blockManager.js"); /* harmony import */ var _config_styleManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./config/styleManager */ "./gramateria/develop/js/config/styleManager.js"); -/* harmony import */ var _helpers_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers/index.js */ "./gramateria/develop/js/helpers/index.js"); -/* harmony import */ var _config_assetManager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config/assetManager */ "./gramateria/develop/js/config/assetManager.js"); -/* harmony import */ var _config_buttons__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config/buttons */ "./gramateria/develop/js/config/buttons.js"); -/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); -/* harmony import */ var notyf_notyf_min_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! notyf/notyf.min.css */ "./node_modules/notyf/notyf.min.css"); +/* harmony import */ var _config_customScripts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./config/customScripts */ "./gramateria/develop/js/config/customScripts.js"); +/* harmony import */ var _helpers_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers/index.js */ "./gramateria/develop/js/helpers/index.js"); +/* harmony import */ var _config_assetManager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config/assetManager */ "./gramateria/develop/js/config/assetManager.js"); +/* harmony import */ var _config_buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config/buttons */ "./gramateria/develop/js/config/buttons.js"); +/* harmony import */ var notyf__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! notyf */ "./node_modules/notyf/notyf.es.js"); +/* harmony import */ var notyf_notyf_min_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! notyf/notyf.min.css */ "./node_modules/notyf/notyf.min.css"); function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } @@ -1128,7 +1153,14 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope + // for React, Vue and Svelte +// Section that has dependency + +var sectionDependencies = [{ + name: 'testimonial', + dependencies: ['splidejs'] +}]; var Gramateria = /*#__PURE__*/function () { function Gramateria() { @@ -1158,7 +1190,7 @@ var Gramateria = /*#__PURE__*/function () { // Append Custom Script var doc = _this.editor.Canvas.getDocument(); - var gjsScripts = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)("gjs-scripts"); + var gjsScripts = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.getLocal)("gjs-scripts"); var _iterator = _createForOfIteratorHelper(gjsScripts), _step; @@ -1178,79 +1210,94 @@ var Gramateria = /*#__PURE__*/function () { } }); - _defineProperty(this, "addDependencies", function (dependency) { - // Toto - must add specific dependency only - if (dependency === 'testimonial') { - var doc = _this.editor.Canvas.getDocument(); + _defineProperty(this, "addDependency", function (dependency) { + var doc = _this.editor.Canvas.getDocument(); - var appendDependency = function appendDependency() { - return new Promise(function (resolve, reject) { - var dependencies = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)('gram-dependencies'); - var isExit = dependencies.filter(function (d) { - return d.name === 'splidejs'; - }); + var appendDependency = function appendDependency() { + return new Promise(function (resolve, reject) { + var dependencies = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.getLocal)('gram-dependencies'); + var isExit = dependencies.filter(function (d) { + return d.name === dependency; + }); - if (isExit.length !== 0) { - resolve('grapesjs_exit'); - return; - } + if (isExit.length !== 0) { + resolve(dependency); + return; + } - var link = document.createElement("link"); - link.rel = 'stylesheet'; - link.className = 'splidejs-script'; - link.href = 'https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/css/splide.min.css'; - doc.head.appendChild(link); - var script = document.createElement("script"); - script.src = 'https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/js/splide.min.js'; - script.className = 'splidejs-script'; - doc.body.appendChild(script); - dependencies.push({ - name: 'splidejs', - js: script.src, - css: link.href - }); - (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.addLocal)('gram-dependencies', dependencies); - resolve('done'); + var link = document.createElement("link"); + link.rel = 'stylesheet'; + link.className = 'splidejs-script'; + link.href = 'https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/css/splide.min.css'; + doc.head.appendChild(link); + var script = document.createElement("script"); + script.src = 'https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/js/splide.min.js'; + script.className = 'splidejs-script'; + doc.body.appendChild(script); + dependencies.push({ + name: 'splidejs', + js: script.src, + css: link.href }); - }; + (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.addLocal)('gram-dependencies', dependencies); + resolve('done'); + }); + }; - appendDependency().then(function (msg) { - if (msg === 'grapesjs_exit') return; - setTimeout(function () { - var customScript = document.createElement("script"); - customScript.innerHTML = "new Splide('#splide', {\n type : 'loop',\n perPage: 3,\n focus : 'center',\n pagination: false\n }).mount();"; - customScript.className = 'splidejs-script'; - doc.body.appendChild(customScript); - var custom = customScript.innerHTML; - - var storeCustomScripts = function storeCustomScripts(name, script) { - var customScriptArr = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)('gjs-scripts'); - customScriptArr.push({ - name: name, - script: script - }); - (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.addLocal)('gjs-scripts', customScriptArr); - }; + appendDependency().then(function (dep) { + if (dep === dependency) return; + setTimeout(function () { + var customScript = document.createElement("script"); + customScript.innerHTML = (0,_config_customScripts__WEBPACK_IMPORTED_MODULE_2__.default)(dependency); + customScript.className = "".concat(dependency, "-script"); + doc.body.appendChild(customScript); + var custom = customScript.innerHTML; + + var storeCustomScripts = function storeCustomScripts(name, script) { + var customScriptArr = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.getLocal)('gjs-scripts'); + customScriptArr.push({ + name: name, + script: script + }); + (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.addLocal)('gjs-scripts', customScriptArr); + }; - storeCustomScripts('splidejs', custom); - }, 2000); - }); - } + storeCustomScripts(dependency, custom); + }, 2000); + }); }); _defineProperty(this, "listenAddDependencies", function () { _this.editor.on('component:add', function (component) { - _this.addDependencies(component.attributes.attributes.id); + var section = component.attributes.attributes.id; + var hasDependency = sectionDependencies.filter(function (e) { + return e.name === section; + }); + + if (hasDependency.length !== 0) { + var dependency = hasDependency[0].dependencies[0]; + + _this.addDependency(dependency); + } }); }); _defineProperty(this, "listenRemoveDependencies", function () { _this.editor.on('component:remove', function (component) { - _this.removeDependencies(component.attributes.attributes.id); + var section = component.attributes.attributes.id; + var hasDependency = sectionDependencies.filter(function (e) { + return e.name === section; + }); + + if (hasDependency.length !== 0) { + var dependency = hasDependency[0].dependencies[0]; + + _this.removeDependency(dependency); + } }); }); - this.msg = new notyf__WEBPACK_IMPORTED_MODULE_5__.Notyf({ + this.msg = new notyf__WEBPACK_IMPORTED_MODULE_6__.Notyf({ duration: 3000, position: { x: 'center', @@ -1272,7 +1319,7 @@ var Gramateria = /*#__PURE__*/function () { scripts: ['https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js', 'gramateria/dist/global.js'] }, // commands, - assetManager: _config_assetManager__WEBPACK_IMPORTED_MODULE_3__.default, + assetManager: _config_assetManager__WEBPACK_IMPORTED_MODULE_4__.default, blockManager: _config_blockManager__WEBPACK_IMPORTED_MODULE_0__.default, styleManager: _config_styleManager__WEBPACK_IMPORTED_MODULE_1__.default, storageManager: { @@ -1328,7 +1375,7 @@ var Gramateria = /*#__PURE__*/function () { fileLoadInput.onchange = function (e) { var currentFile = e.target.files[0]; - var fType = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.checkExtension)(currentFile['name']); + var fType = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.checkExtension)(currentFile['name']); if (currentFile === undefined) { _this2.msg.error('Please select a file'); @@ -1471,7 +1518,7 @@ var Gramateria = /*#__PURE__*/function () { }, { key: "appendDependencies", value: function appendDependencies() { - var dependencies = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)("gram-dependencies"); + var dependencies = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.getLocal)("gram-dependencies"); var links = dependencies.map(function (d) { return d.css; }); @@ -1508,43 +1555,38 @@ var Gramateria = /*#__PURE__*/function () { } } }, { - key: "removeDependencies", - value: function removeDependencies(dependency) { - // Delete testimonial - if (dependency == 'testimonial') { - // Toto - must delete specific dependency only - var doc = this.editor.Canvas.getDocument(); - var dependencies = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)('gram-dependencies'); - - if (dependencies.length > 0) { - var _iterator4 = _createForOfIteratorHelper(dependencies), - _step4; - - try { - for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { - var dp = _step4.value; - var allScripts = doc.querySelectorAll(".".concat(dp.name, "-script")); - allScripts.forEach(function (e) { - return e.outerHTML = ''; - }); - } - } catch (err) { - _iterator4.e(err); - } finally { - _iterator4.f(); - } + key: "removeDependency", + value: function removeDependency(dependency) { + var doc = this.editor.Canvas.getDocument(); + var dependencies = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.getLocal)('gram-dependencies'); + if (dependencies.length == 0) return; - dependencies = dependencies.filter(function (d) { - return d.name !== 'splidejs'; - }); - (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.addLocal)('gram-dependencies', dependencies); - var customScript = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.getLocal)('gjs-scripts'); - customScript = customScript.filter(function (c) { - return c.name !== 'splidejs'; + var _iterator4 = _createForOfIteratorHelper(dependencies), + _step4; + + try { + for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { + var dp = _step4.value; + var allScripts = doc.querySelectorAll(".".concat(dp.name, "-script")); + allScripts.forEach(function (e) { + return e.outerHTML = ''; }); - (0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.addLocal)('gjs-scripts', customScript); } + } catch (err) { + _iterator4.e(err); + } finally { + _iterator4.f(); } + + dependencies = dependencies.filter(function (d) { + return d.name !== dependency; + }); + (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.addLocal)('gram-dependencies', dependencies); + var customScript = (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.getLocal)('gjs-scripts'); + customScript = customScript.filter(function (c) { + return c.name !== dependency; + }); + (0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.addLocal)('gjs-scripts', customScript); } }, { key: "init", @@ -1552,7 +1594,7 @@ var Gramateria = /*#__PURE__*/function () { var _this3 = this; this.editor = grapesjs.init(this.config); - this.editor.Panels.addButton('options', _config_buttons__WEBPACK_IMPORTED_MODULE_4__.default); + this.editor.Panels.addButton('options', _config_buttons__WEBPACK_IMPORTED_MODULE_5__.default); this.modal = this.editor.Modal; this.codeImportModal(); this.editor.Panels.removeButton('options', 'export-template'); @@ -1602,7 +1644,7 @@ var Gramateria = /*#__PURE__*/function () { }(); new Gramateria().init(); -(0,_helpers_index__WEBPACK_IMPORTED_MODULE_2__.loadingSpinner)(); +(0,_helpers_index__WEBPACK_IMPORTED_MODULE_3__.loadingSpinner)(); /***/ }), From dd6568ef2560b6761f2db444b7b12044c59da143 Mon Sep 17 00:00:00 2001 From: ronaldaug Date: Mon, 26 Jul 2021 23:00:09 +0630 Subject: [PATCH 21/27] add footer, fix responsive --- gramateria/develop/css/global.css | 3 + gramateria/develop/js/config/blockManager.js | 59 ++-- gramateria/develop/js/config/customScripts.js | 10 +- gramateria/develop/js/config/sectionBlocks.js | 275 ++++++++++++++++-- gramateria/dist/global.css | 3 + gramateria/dist/gram.min.js | 33 ++- 6 files changed, 320 insertions(+), 63 deletions(-) diff --git a/gramateria/develop/css/global.css b/gramateria/develop/css/global.css index 00e783e..dd326c0 100644 --- a/gramateria/develop/css/global.css +++ b/gramateria/develop/css/global.css @@ -9,6 +9,9 @@ section{ } @media(max-width:768px){ + body{ + margin:10px; + } section{ padding:50px 0 50px; } diff --git a/gramateria/develop/js/config/blockManager.js b/gramateria/develop/js/config/blockManager.js index 7b1c228..32454ce 100644 --- a/gramateria/develop/js/config/blockManager.js +++ b/gramateria/develop/js/config/blockManager.js @@ -9,32 +9,39 @@ const bootstrapBasicBlocks = [ class: 'gly-one-column' }, content: `` }, diff --git a/gramateria/develop/js/config/customScripts.js b/gramateria/develop/js/config/customScripts.js index 098a9ab..35d3299 100644 --- a/gramateria/develop/js/config/customScripts.js +++ b/gramateria/develop/js/config/customScripts.js @@ -7,7 +7,15 @@ export default (dependency) => { type : 'loop', perPage: 3, focus : 'center', - pagination: false + pagination: false, + breakpoints: { + 768: { + perPage: 2, + }, + 576:{ + perPage:1 + } + } }).mount();` } ] diff --git a/gramateria/develop/js/config/sectionBlocks.js b/gramateria/develop/js/config/sectionBlocks.js index 243a2db..93eaaef 100644 --- a/gramateria/develop/js/config/sectionBlocks.js +++ b/gramateria/develop/js/config/sectionBlocks.js @@ -1,12 +1,12 @@ export default [ - { - id: 'section-header', - label: 'Header', - category: 'Sections', - attributes: { - class: 'fa fa-window-minimize' - }, - content: `