diff --git a/.gitignore b/.gitignore
index c2c1f4b8..9caa0760 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,5 @@
*.bak
*.log
/tmp
-/node_modules
\ No newline at end of file
+/node_modules
+/dist
\ No newline at end of file
diff --git a/.npmignore b/.npmignore
new file mode 100644
index 00000000..65c3174b
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,10 @@
+*~
+~*
+*.tmp
+*.orig
+*.bak
+*.log
+/tmp
+/node_modules
+/src
+/test
\ No newline at end of file
diff --git a/dist/quill.bubble.css b/dist/quill.bubble.css
deleted file mode 100644
index e965fdbd..00000000
--- a/dist/quill.bubble.css
+++ /dev/null
@@ -1,872 +0,0 @@
-/*!
- * Quill Editor v1.2.0
- * https://quilljs.com/
- * Copyright (c) 2014, Jason Chen
- * Copyright (c) 2013, salesforce.com
- */
-.ql-container {
- box-sizing: border-box;
- font-family: Helvetica, Arial, sans-serif;
- font-size: 13px;
- height: 100%;
- margin: 0px;
- position: relative;
-}
-.ql-container.ql-disabled .ql-tooltip {
- visibility: hidden;
-}
-.ql-clipboard {
- left: -100000px;
- height: 1px;
- overflow-y: hidden;
- position: absolute;
- top: 50%;
-}
-.ql-clipboard p {
- margin: 0;
- padding: 0;
-}
-.ql-editor {
- box-sizing: border-box;
- cursor: text;
- line-height: 1.42;
- height: 100%;
- outline: none;
- overflow-y: auto;
- padding: 12px 15px;
- tab-size: 4;
- -moz-tab-size: 4;
- text-align: left;
- white-space: pre-wrap;
- word-wrap: break-word;
-}
-.ql-editor p,
-.ql-editor ol,
-.ql-editor ul,
-.ql-editor pre,
-.ql-editor blockquote,
-.ql-editor h1,
-.ql-editor h2,
-.ql-editor h3,
-.ql-editor h4,
-.ql-editor h5,
-.ql-editor h6 {
- margin: 0;
- padding: 0;
- counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol,
-.ql-editor ul {
- padding-left: 1.5em;
-}
-.ql-editor ol > li,
-.ql-editor ul > li {
- list-style-type: none;
-}
-.ql-editor ul > li::before {
- content: '\25CF';
-}
-.ql-editor ul[data-checked=true],
-.ql-editor ul[data-checked=false] {
- pointer-events: none;
-}
-.ql-editor ul[data-checked=true] > li::before,
-.ql-editor ul[data-checked=false] > li::before {
- color: #777;
- cursor: pointer;
- pointer-events: all;
-}
-.ql-editor ul[data-checked=true] > li::before {
- content: '\2611';
-}
-.ql-editor ul[data-checked=false] > li::before {
- content: '\2610';
-}
-.ql-editor li::before {
- display: inline-block;
- margin-right: 0.3em;
- text-align: right;
- white-space: nowrap;
- width: 1.2em;
-}
-.ql-editor li:not(.ql-direction-rtl)::before {
- margin-left: -1.5em;
-}
-.ql-editor ol li,
-.ql-editor ul li {
- padding-left: 1.5em;
-}
-.ql-editor ol li {
- counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
- counter-increment: list-num;
-}
-.ql-editor ol li:before {
- content: counter(list-num, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-1 {
- counter-increment: list-1;
-}
-.ql-editor ol li.ql-indent-1:before {
- content: counter(list-1, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-1 {
- counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-2 {
- counter-increment: list-2;
-}
-.ql-editor ol li.ql-indent-2:before {
- content: counter(list-2, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-2 {
- counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-3 {
- counter-increment: list-3;
-}
-.ql-editor ol li.ql-indent-3:before {
- content: counter(list-3, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-3 {
- counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-4 {
- counter-increment: list-4;
-}
-.ql-editor ol li.ql-indent-4:before {
- content: counter(list-4, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-4 {
- counter-reset: list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-5 {
- counter-increment: list-5;
-}
-.ql-editor ol li.ql-indent-5:before {
- content: counter(list-5, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-5 {
- counter-reset: list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-6 {
- counter-increment: list-6;
-}
-.ql-editor ol li.ql-indent-6:before {
- content: counter(list-6, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-6 {
- counter-reset: list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-7 {
- counter-increment: list-7;
-}
-.ql-editor ol li.ql-indent-7:before {
- content: counter(list-7, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-7 {
- counter-reset: list-8 list-9;
-}
-.ql-editor ol li.ql-indent-8 {
- counter-increment: list-8;
-}
-.ql-editor ol li.ql-indent-8:before {
- content: counter(list-8, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-8 {
- counter-reset: list-9;
-}
-.ql-editor ol li.ql-indent-9 {
- counter-increment: list-9;
-}
-.ql-editor ol li.ql-indent-9:before {
- content: counter(list-9, decimal) '. ';
-}
-.ql-editor .ql-indent-1:not(.ql-direction-rtl) {
- padding-left: 3em;
-}
-.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
- padding-left: 4.5em;
-}
-.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
- padding-right: 3em;
-}
-.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
- padding-right: 4.5em;
-}
-.ql-editor .ql-indent-2:not(.ql-direction-rtl) {
- padding-left: 6em;
-}
-.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
- padding-left: 7.5em;
-}
-.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
- padding-right: 6em;
-}
-.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
- padding-right: 7.5em;
-}
-.ql-editor .ql-indent-3:not(.ql-direction-rtl) {
- padding-left: 9em;
-}
-.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
- padding-left: 10.5em;
-}
-.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
- padding-right: 9em;
-}
-.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
- padding-right: 10.5em;
-}
-.ql-editor .ql-indent-4:not(.ql-direction-rtl) {
- padding-left: 12em;
-}
-.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
- padding-left: 13.5em;
-}
-.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
- padding-right: 12em;
-}
-.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
- padding-right: 13.5em;
-}
-.ql-editor .ql-indent-5:not(.ql-direction-rtl) {
- padding-left: 15em;
-}
-.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
- padding-left: 16.5em;
-}
-.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
- padding-right: 15em;
-}
-.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
- padding-right: 16.5em;
-}
-.ql-editor .ql-indent-6:not(.ql-direction-rtl) {
- padding-left: 18em;
-}
-.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
- padding-left: 19.5em;
-}
-.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
- padding-right: 18em;
-}
-.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
- padding-right: 19.5em;
-}
-.ql-editor .ql-indent-7:not(.ql-direction-rtl) {
- padding-left: 21em;
-}
-.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
- padding-left: 22.5em;
-}
-.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
- padding-right: 21em;
-}
-.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
- padding-right: 22.5em;
-}
-.ql-editor .ql-indent-8:not(.ql-direction-rtl) {
- padding-left: 24em;
-}
-.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
- padding-left: 25.5em;
-}
-.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
- padding-right: 24em;
-}
-.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
- padding-right: 25.5em;
-}
-.ql-editor .ql-indent-9:not(.ql-direction-rtl) {
- padding-left: 27em;
-}
-.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
- padding-left: 28.5em;
-}
-.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
- padding-right: 27em;
-}
-.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
- padding-right: 28.5em;
-}
-.ql-editor .ql-video {
- display: block;
- max-width: 100%;
-}
-.ql-editor .ql-video.ql-align-center {
- margin: 0 auto;
-}
-.ql-editor .ql-video.ql-align-right {
- margin: 0 0 0 auto;
-}
-.ql-editor .ql-bg-black {
- background-color: #000;
-}
-.ql-editor .ql-bg-red {
- background-color: #e60000;
-}
-.ql-editor .ql-bg-orange {
- background-color: #f90;
-}
-.ql-editor .ql-bg-yellow {
- background-color: #ff0;
-}
-.ql-editor .ql-bg-green {
- background-color: #008a00;
-}
-.ql-editor .ql-bg-blue {
- background-color: #06c;
-}
-.ql-editor .ql-bg-purple {
- background-color: #93f;
-}
-.ql-editor .ql-color-white {
- color: #fff;
-}
-.ql-editor .ql-color-red {
- color: #e60000;
-}
-.ql-editor .ql-color-orange {
- color: #f90;
-}
-.ql-editor .ql-color-yellow {
- color: #ff0;
-}
-.ql-editor .ql-color-green {
- color: #008a00;
-}
-.ql-editor .ql-color-blue {
- color: #06c;
-}
-.ql-editor .ql-color-purple {
- color: #93f;
-}
-.ql-editor .ql-font-serif {
- font-family: Georgia, Times New Roman, serif;
-}
-.ql-editor .ql-font-monospace {
- font-family: Monaco, Courier New, monospace;
-}
-.ql-editor .ql-size-small {
- font-size: 0.75em;
-}
-.ql-editor .ql-size-large {
- font-size: 1.5em;
-}
-.ql-editor .ql-size-huge {
- font-size: 2.5em;
-}
-.ql-editor .ql-direction-rtl {
- direction: rtl;
- text-align: inherit;
-}
-.ql-editor .ql-align-center {
- text-align: center;
-}
-.ql-editor .ql-align-justify {
- text-align: justify;
-}
-.ql-editor .ql-align-right {
- text-align: right;
-}
-.ql-editor.ql-blank::before {
- color: rgba(0,0,0,0.6);
- content: attr(data-placeholder);
- font-style: italic;
- pointer-events: none;
- position: absolute;
-}
-.ql-bubble.ql-toolbar:after,
-.ql-bubble .ql-toolbar:after {
- clear: both;
- content: '';
- display: table;
-}
-.ql-bubble.ql-toolbar button,
-.ql-bubble .ql-toolbar button {
- background: none;
- border: none;
- cursor: pointer;
- display: inline-block;
- float: left;
- height: 24px;
- padding: 3px 5px;
- width: 28px;
-}
-.ql-bubble.ql-toolbar button svg,
-.ql-bubble .ql-toolbar button svg {
- float: left;
- height: 100%;
-}
-.ql-bubble.ql-toolbar button:active:hover,
-.ql-bubble .ql-toolbar button:active:hover {
- outline: none;
-}
-.ql-bubble.ql-toolbar input.ql-image[type=file],
-.ql-bubble .ql-toolbar input.ql-image[type=file] {
- display: none;
-}
-.ql-bubble.ql-toolbar button:hover,
-.ql-bubble .ql-toolbar button:hover,
-.ql-bubble.ql-toolbar button.ql-active,
-.ql-bubble .ql-toolbar button.ql-active,
-.ql-bubble.ql-toolbar .ql-picker-label:hover,
-.ql-bubble .ql-toolbar .ql-picker-label:hover,
-.ql-bubble.ql-toolbar .ql-picker-label.ql-active,
-.ql-bubble .ql-toolbar .ql-picker-label.ql-active,
-.ql-bubble.ql-toolbar .ql-picker-item:hover,
-.ql-bubble .ql-toolbar .ql-picker-item:hover,
-.ql-bubble.ql-toolbar .ql-picker-item.ql-selected,
-.ql-bubble .ql-toolbar .ql-picker-item.ql-selected {
- color: #fff;
-}
-.ql-bubble.ql-toolbar button:hover .ql-fill,
-.ql-bubble .ql-toolbar button:hover .ql-fill,
-.ql-bubble.ql-toolbar button.ql-active .ql-fill,
-.ql-bubble .ql-toolbar button.ql-active .ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-fill,
-.ql-bubble.ql-toolbar button:hover .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar button:hover .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar button.ql-active .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar button.ql-active .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
-.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,
-.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {
- fill: #fff;
-}
-.ql-bubble.ql-toolbar button:hover .ql-stroke,
-.ql-bubble .ql-toolbar button:hover .ql-stroke,
-.ql-bubble.ql-toolbar button.ql-active .ql-stroke,
-.ql-bubble .ql-toolbar button.ql-active .ql-stroke,
-.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke,
-.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke,
-.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
-.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke,
-.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke,
-.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke,
-.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
-.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
-.ql-bubble.ql-toolbar button:hover .ql-stroke-miter,
-.ql-bubble .ql-toolbar button:hover .ql-stroke-miter,
-.ql-bubble.ql-toolbar button.ql-active .ql-stroke-miter,
-.ql-bubble .ql-toolbar button.ql-active .ql-stroke-miter,
-.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
-.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
-.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
-.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
-.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
-.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
-.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,
-.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {
- stroke: #fff;
-}
-.ql-bubble {
- box-sizing: border-box;
-}
-.ql-bubble * {
- box-sizing: border-box;
-}
-.ql-bubble .ql-hidden {
- display: none;
-}
-.ql-bubble .ql-out-bottom,
-.ql-bubble .ql-out-top {
- visibility: hidden;
-}
-.ql-bubble .ql-tooltip {
- position: absolute;
- transform: translateY(10px);
-}
-.ql-bubble .ql-tooltip a {
- cursor: pointer;
- text-decoration: none;
-}
-.ql-bubble .ql-tooltip.ql-flip {
- transform: translateY(-10px);
-}
-.ql-bubble .ql-formats {
- display: inline-block;
- vertical-align: middle;
-}
-.ql-bubble .ql-formats:after {
- clear: both;
- content: '';
- display: table;
-}
-.ql-bubble .ql-stroke {
- fill: none;
- stroke: #ccc;
- stroke-linecap: round;
- stroke-linejoin: round;
- stroke-width: 2;
-}
-.ql-bubble .ql-stroke-miter {
- fill: none;
- stroke: #ccc;
- stroke-miterlimit: 10;
- stroke-width: 2;
-}
-.ql-bubble .ql-fill,
-.ql-bubble .ql-stroke.ql-fill {
- fill: #ccc;
-}
-.ql-bubble .ql-empty {
- fill: none;
-}
-.ql-bubble .ql-even {
- fill-rule: evenodd;
-}
-.ql-bubble .ql-thin,
-.ql-bubble .ql-stroke.ql-thin {
- stroke-width: 1;
-}
-.ql-bubble .ql-transparent {
- opacity: 0.4;
-}
-.ql-bubble .ql-direction svg:last-child {
- display: none;
-}
-.ql-bubble .ql-direction.ql-active svg:last-child {
- display: inline;
-}
-.ql-bubble .ql-direction.ql-active svg:first-child {
- display: none;
-}
-.ql-bubble .ql-editor h1 {
- font-size: 2em;
-}
-.ql-bubble .ql-editor h2 {
- font-size: 1.5em;
-}
-.ql-bubble .ql-editor h3 {
- font-size: 1.17em;
-}
-.ql-bubble .ql-editor h4 {
- font-size: 1em;
-}
-.ql-bubble .ql-editor h5 {
- font-size: 0.83em;
-}
-.ql-bubble .ql-editor h6 {
- font-size: 0.67em;
-}
-.ql-bubble .ql-editor a {
- text-decoration: underline;
-}
-.ql-bubble .ql-editor blockquote {
- border-left: 4px solid #ccc;
- margin-bottom: 5px;
- margin-top: 5px;
- padding-left: 16px;
-}
-.ql-bubble .ql-editor code,
-.ql-bubble .ql-editor pre {
- background-color: #f0f0f0;
- border-radius: 3px;
-}
-.ql-bubble .ql-editor pre {
- white-space: pre-wrap;
- margin-bottom: 5px;
- margin-top: 5px;
- padding: 5px 10px;
-}
-.ql-bubble .ql-editor code {
- font-size: 85%;
- padding-bottom: 2px;
- padding-top: 2px;
-}
-.ql-bubble .ql-editor code:before,
-.ql-bubble .ql-editor code:after {
- content: "\A0";
- letter-spacing: -2px;
-}
-.ql-bubble .ql-editor pre.ql-syntax {
- background-color: #23241f;
- color: #f8f8f2;
- overflow: visible;
-}
-.ql-bubble .ql-editor img {
- max-width: 100%;
-}
-.ql-bubble .ql-picker {
- color: #ccc;
- display: inline-block;
- float: left;
- font-size: 14px;
- font-weight: 500;
- height: 24px;
- position: relative;
- vertical-align: middle;
-}
-.ql-bubble .ql-picker-label {
- cursor: pointer;
- display: inline-block;
- height: 100%;
- padding-left: 8px;
- padding-right: 2px;
- position: relative;
- width: 100%;
-}
-.ql-bubble .ql-picker-label::before {
- display: inline-block;
- line-height: 22px;
-}
-.ql-bubble .ql-picker-options {
- background-color: #444;
- display: none;
- min-width: 100%;
- padding: 4px 8px;
- position: absolute;
- white-space: nowrap;
-}
-.ql-bubble .ql-picker-options .ql-picker-item {
- cursor: pointer;
- display: block;
- padding-bottom: 5px;
- padding-top: 5px;
-}
-.ql-bubble .ql-picker.ql-expanded .ql-picker-label {
- color: #777;
- z-index: 2;
-}
-.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-fill {
- fill: #777;
-}
-.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
- stroke: #777;
-}
-.ql-bubble .ql-picker.ql-expanded .ql-picker-options {
- display: block;
- margin-top: -1px;
- top: 100%;
- z-index: 1;
-}
-.ql-bubble .ql-color-picker,
-.ql-bubble .ql-icon-picker {
- width: 28px;
-}
-.ql-bubble .ql-color-picker .ql-picker-label,
-.ql-bubble .ql-icon-picker .ql-picker-label {
- padding: 2px 4px;
-}
-.ql-bubble .ql-color-picker .ql-picker-label svg,
-.ql-bubble .ql-icon-picker .ql-picker-label svg {
- right: 4px;
-}
-.ql-bubble .ql-icon-picker .ql-picker-options {
- padding: 4px 0px;
-}
-.ql-bubble .ql-icon-picker .ql-picker-item {
- height: 24px;
- width: 24px;
- padding: 2px 4px;
-}
-.ql-bubble .ql-color-picker .ql-picker-options {
- padding: 3px 5px;
- width: 152px;
-}
-.ql-bubble .ql-color-picker .ql-picker-item {
- border: 1px solid transparent;
- float: left;
- height: 16px;
- margin: 2px;
- padding: 0px;
- width: 16px;
-}
-.ql-bubble .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
- position: absolute;
- margin-top: -9px;
- right: 0;
- top: 50%;
- width: 18px;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,
-.ql-bubble .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,
-.ql-bubble .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {
- content: attr(data-label);
-}
-.ql-bubble .ql-picker.ql-header {
- width: 98px;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item::before {
- content: 'Normal';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
- content: 'Heading 1';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
- content: 'Heading 2';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
- content: 'Heading 3';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
- content: 'Heading 4';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
- content: 'Heading 5';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
- content: 'Heading 6';
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
- font-size: 2em;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
- font-size: 1.5em;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
- font-size: 1.17em;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
- font-size: 1em;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
- font-size: 0.83em;
-}
-.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
- font-size: 0.67em;
-}
-.ql-bubble .ql-picker.ql-font {
- width: 108px;
-}
-.ql-bubble .ql-picker.ql-font .ql-picker-label::before,
-.ql-bubble .ql-picker.ql-font .ql-picker-item::before {
- content: 'Sans Serif';
-}
-.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,
-.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
- content: 'Serif';
-}
-.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,
-.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
- content: 'Monospace';
-}
-.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
- font-family: Georgia, Times New Roman, serif;
-}
-.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
- font-family: Monaco, Courier New, monospace;
-}
-.ql-bubble .ql-picker.ql-size {
- width: 98px;
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-label::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-item::before {
- content: 'Normal';
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=small]::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
- content: 'Small';
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=large]::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
- content: 'Large';
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
- content: 'Huge';
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
- font-size: 10px;
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
- font-size: 18px;
-}
-.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
- font-size: 32px;
-}
-.ql-bubble .ql-color-picker.ql-background .ql-picker-item {
- background-color: #fff;
-}
-.ql-bubble .ql-color-picker.ql-color .ql-picker-item {
- background-color: #000;
-}
-.ql-bubble .ql-toolbar .ql-formats {
- margin: 8px 12px 8px 0px;
-}
-.ql-bubble .ql-toolbar .ql-formats:first-child {
- margin-left: 12px;
-}
-.ql-bubble .ql-color-picker svg {
- margin: 1px;
-}
-.ql-bubble .ql-color-picker .ql-picker-item.ql-selected,
-.ql-bubble .ql-color-picker .ql-picker-item:hover {
- border-color: #fff;
-}
-.ql-bubble .ql-tooltip {
- background-color: #444;
- border-radius: 25px;
- color: #fff;
-}
-.ql-bubble .ql-tooltip-arrow {
- border-left: 6px solid transparent;
- border-right: 6px solid transparent;
- content: " ";
- display: block;
- left: 50%;
- margin-left: -6px;
- position: absolute;
-}
-.ql-bubble .ql-tooltip:not(.ql-flip) .ql-tooltip-arrow {
- border-bottom: 6px solid #444;
- top: -6px;
-}
-.ql-bubble .ql-tooltip.ql-flip .ql-tooltip-arrow {
- border-top: 6px solid #444;
- bottom: -6px;
-}
-.ql-bubble .ql-tooltip.ql-editing .ql-tooltip-editor {
- display: block;
-}
-.ql-bubble .ql-tooltip.ql-editing .ql-formats {
- visibility: hidden;
-}
-.ql-bubble .ql-tooltip-editor {
- display: none;
-}
-.ql-bubble .ql-tooltip-editor input[type=text] {
- background: transparent;
- border: none;
- color: #fff;
- font-size: 13px;
- height: 100%;
- outline: none;
- padding: 10px 20px;
- position: absolute;
- width: 100%;
-}
-.ql-bubble .ql-tooltip-editor a {
- top: 10px;
- position: absolute;
- right: 20px;
-}
-.ql-bubble .ql-tooltip-editor a:before {
- color: #ccc;
- content: "\D7";
- font-size: 16px;
- font-weight: bold;
-}
diff --git a/dist/quill.core.css b/dist/quill.core.css
deleted file mode 100644
index 51532207..00000000
--- a/dist/quill.core.css
+++ /dev/null
@@ -1,378 +0,0 @@
-/*!
- * Quill Editor v1.2.0
- * https://quilljs.com/
- * Copyright (c) 2014, Jason Chen
- * Copyright (c) 2013, salesforce.com
- */
-.ql-container {
- box-sizing: border-box;
- font-family: Helvetica, Arial, sans-serif;
- font-size: 13px;
- height: 100%;
- margin: 0px;
- position: relative;
-}
-.ql-container.ql-disabled .ql-tooltip {
- visibility: hidden;
-}
-.ql-clipboard {
- left: -100000px;
- height: 1px;
- overflow-y: hidden;
- position: absolute;
- top: 50%;
-}
-.ql-clipboard p {
- margin: 0;
- padding: 0;
-}
-.ql-editor {
- box-sizing: border-box;
- cursor: text;
- line-height: 1.42;
- height: 100%;
- outline: none;
- overflow-y: auto;
- padding: 12px 15px;
- tab-size: 4;
- -moz-tab-size: 4;
- text-align: left;
- white-space: pre-wrap;
- word-wrap: break-word;
-}
-.ql-editor p,
-.ql-editor ol,
-.ql-editor ul,
-.ql-editor pre,
-.ql-editor blockquote,
-.ql-editor h1,
-.ql-editor h2,
-.ql-editor h3,
-.ql-editor h4,
-.ql-editor h5,
-.ql-editor h6 {
- margin: 0;
- padding: 0;
- counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol,
-.ql-editor ul {
- padding-left: 1.5em;
-}
-.ql-editor ol > li,
-.ql-editor ul > li {
- list-style-type: none;
-}
-.ql-editor ul > li::before {
- content: '\25CF';
-}
-.ql-editor ul[data-checked=true],
-.ql-editor ul[data-checked=false] {
- pointer-events: none;
-}
-.ql-editor ul[data-checked=true] > li::before,
-.ql-editor ul[data-checked=false] > li::before {
- color: #777;
- cursor: pointer;
- pointer-events: all;
-}
-.ql-editor ul[data-checked=true] > li::before {
- content: '\2611';
-}
-.ql-editor ul[data-checked=false] > li::before {
- content: '\2610';
-}
-.ql-editor li::before {
- display: inline-block;
- margin-right: 0.3em;
- text-align: right;
- white-space: nowrap;
- width: 1.2em;
-}
-.ql-editor li:not(.ql-direction-rtl)::before {
- margin-left: -1.5em;
-}
-.ql-editor ol li,
-.ql-editor ul li {
- padding-left: 1.5em;
-}
-.ql-editor ol li {
- counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
- counter-increment: list-num;
-}
-.ql-editor ol li:before {
- content: counter(list-num, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-1 {
- counter-increment: list-1;
-}
-.ql-editor ol li.ql-indent-1:before {
- content: counter(list-1, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-1 {
- counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-2 {
- counter-increment: list-2;
-}
-.ql-editor ol li.ql-indent-2:before {
- content: counter(list-2, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-2 {
- counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-3 {
- counter-increment: list-3;
-}
-.ql-editor ol li.ql-indent-3:before {
- content: counter(list-3, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-3 {
- counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-4 {
- counter-increment: list-4;
-}
-.ql-editor ol li.ql-indent-4:before {
- content: counter(list-4, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-4 {
- counter-reset: list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-5 {
- counter-increment: list-5;
-}
-.ql-editor ol li.ql-indent-5:before {
- content: counter(list-5, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-5 {
- counter-reset: list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-6 {
- counter-increment: list-6;
-}
-.ql-editor ol li.ql-indent-6:before {
- content: counter(list-6, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-6 {
- counter-reset: list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-7 {
- counter-increment: list-7;
-}
-.ql-editor ol li.ql-indent-7:before {
- content: counter(list-7, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-7 {
- counter-reset: list-8 list-9;
-}
-.ql-editor ol li.ql-indent-8 {
- counter-increment: list-8;
-}
-.ql-editor ol li.ql-indent-8:before {
- content: counter(list-8, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-8 {
- counter-reset: list-9;
-}
-.ql-editor ol li.ql-indent-9 {
- counter-increment: list-9;
-}
-.ql-editor ol li.ql-indent-9:before {
- content: counter(list-9, decimal) '. ';
-}
-.ql-editor .ql-indent-1:not(.ql-direction-rtl) {
- padding-left: 3em;
-}
-.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
- padding-left: 4.5em;
-}
-.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
- padding-right: 3em;
-}
-.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
- padding-right: 4.5em;
-}
-.ql-editor .ql-indent-2:not(.ql-direction-rtl) {
- padding-left: 6em;
-}
-.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
- padding-left: 7.5em;
-}
-.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
- padding-right: 6em;
-}
-.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
- padding-right: 7.5em;
-}
-.ql-editor .ql-indent-3:not(.ql-direction-rtl) {
- padding-left: 9em;
-}
-.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
- padding-left: 10.5em;
-}
-.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
- padding-right: 9em;
-}
-.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
- padding-right: 10.5em;
-}
-.ql-editor .ql-indent-4:not(.ql-direction-rtl) {
- padding-left: 12em;
-}
-.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
- padding-left: 13.5em;
-}
-.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
- padding-right: 12em;
-}
-.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
- padding-right: 13.5em;
-}
-.ql-editor .ql-indent-5:not(.ql-direction-rtl) {
- padding-left: 15em;
-}
-.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
- padding-left: 16.5em;
-}
-.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
- padding-right: 15em;
-}
-.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
- padding-right: 16.5em;
-}
-.ql-editor .ql-indent-6:not(.ql-direction-rtl) {
- padding-left: 18em;
-}
-.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
- padding-left: 19.5em;
-}
-.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
- padding-right: 18em;
-}
-.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
- padding-right: 19.5em;
-}
-.ql-editor .ql-indent-7:not(.ql-direction-rtl) {
- padding-left: 21em;
-}
-.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
- padding-left: 22.5em;
-}
-.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
- padding-right: 21em;
-}
-.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
- padding-right: 22.5em;
-}
-.ql-editor .ql-indent-8:not(.ql-direction-rtl) {
- padding-left: 24em;
-}
-.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
- padding-left: 25.5em;
-}
-.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
- padding-right: 24em;
-}
-.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
- padding-right: 25.5em;
-}
-.ql-editor .ql-indent-9:not(.ql-direction-rtl) {
- padding-left: 27em;
-}
-.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
- padding-left: 28.5em;
-}
-.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
- padding-right: 27em;
-}
-.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
- padding-right: 28.5em;
-}
-.ql-editor .ql-video {
- display: block;
- max-width: 100%;
-}
-.ql-editor .ql-video.ql-align-center {
- margin: 0 auto;
-}
-.ql-editor .ql-video.ql-align-right {
- margin: 0 0 0 auto;
-}
-.ql-editor .ql-bg-black {
- background-color: #000;
-}
-.ql-editor .ql-bg-red {
- background-color: #e60000;
-}
-.ql-editor .ql-bg-orange {
- background-color: #f90;
-}
-.ql-editor .ql-bg-yellow {
- background-color: #ff0;
-}
-.ql-editor .ql-bg-green {
- background-color: #008a00;
-}
-.ql-editor .ql-bg-blue {
- background-color: #06c;
-}
-.ql-editor .ql-bg-purple {
- background-color: #93f;
-}
-.ql-editor .ql-color-white {
- color: #fff;
-}
-.ql-editor .ql-color-red {
- color: #e60000;
-}
-.ql-editor .ql-color-orange {
- color: #f90;
-}
-.ql-editor .ql-color-yellow {
- color: #ff0;
-}
-.ql-editor .ql-color-green {
- color: #008a00;
-}
-.ql-editor .ql-color-blue {
- color: #06c;
-}
-.ql-editor .ql-color-purple {
- color: #93f;
-}
-.ql-editor .ql-font-serif {
- font-family: Georgia, Times New Roman, serif;
-}
-.ql-editor .ql-font-monospace {
- font-family: Monaco, Courier New, monospace;
-}
-.ql-editor .ql-size-small {
- font-size: 0.75em;
-}
-.ql-editor .ql-size-large {
- font-size: 1.5em;
-}
-.ql-editor .ql-size-huge {
- font-size: 2.5em;
-}
-.ql-editor .ql-direction-rtl {
- direction: rtl;
- text-align: inherit;
-}
-.ql-editor .ql-align-center {
- text-align: center;
-}
-.ql-editor .ql-align-justify {
- text-align: justify;
-}
-.ql-editor .ql-align-right {
- text-align: right;
-}
-.ql-editor.ql-blank::before {
- color: rgba(0,0,0,0.6);
- content: attr(data-placeholder);
- font-style: italic;
- pointer-events: none;
- position: absolute;
-}
diff --git a/dist/quill.snow.css b/dist/quill.snow.css
deleted file mode 100644
index 493638ea..00000000
--- a/dist/quill.snow.css
+++ /dev/null
@@ -1,904 +0,0 @@
-/*!
- * Quill Editor v1.2.0
- * https://quilljs.com/
- * Copyright (c) 2014, Jason Chen
- * Copyright (c) 2013, salesforce.com
- */
-.ql-container {
- box-sizing: border-box;
- font-family: Helvetica, Arial, sans-serif;
- font-size: 13px;
- height: 100%;
- margin: 0px;
- position: relative;
-}
-.ql-container.ql-disabled .ql-tooltip {
- visibility: hidden;
-}
-.ql-clipboard {
- left: -100000px;
- height: 1px;
- overflow-y: hidden;
- position: absolute;
- top: 50%;
-}
-.ql-clipboard p {
- margin: 0;
- padding: 0;
-}
-.ql-editor {
- box-sizing: border-box;
- cursor: text;
- line-height: 1.42;
- height: 100%;
- outline: none;
- overflow-y: auto;
- padding: 12px 15px;
- tab-size: 4;
- -moz-tab-size: 4;
- text-align: left;
- white-space: pre-wrap;
- word-wrap: break-word;
-}
-.ql-editor p,
-.ql-editor ol,
-.ql-editor ul,
-.ql-editor pre,
-.ql-editor blockquote,
-.ql-editor h1,
-.ql-editor h2,
-.ql-editor h3,
-.ql-editor h4,
-.ql-editor h5,
-.ql-editor h6 {
- margin: 0;
- padding: 0;
- counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol,
-.ql-editor ul {
- padding-left: 1.5em;
-}
-.ql-editor ol > li,
-.ql-editor ul > li {
- list-style-type: none;
-}
-.ql-editor ul > li::before {
- content: '\25CF';
-}
-.ql-editor ul[data-checked=true],
-.ql-editor ul[data-checked=false] {
- pointer-events: none;
-}
-.ql-editor ul[data-checked=true] > li::before,
-.ql-editor ul[data-checked=false] > li::before {
- color: #777;
- cursor: pointer;
- pointer-events: all;
-}
-.ql-editor ul[data-checked=true] > li::before {
- content: '\2611';
-}
-.ql-editor ul[data-checked=false] > li::before {
- content: '\2610';
-}
-.ql-editor li::before {
- display: inline-block;
- margin-right: 0.3em;
- text-align: right;
- white-space: nowrap;
- width: 1.2em;
-}
-.ql-editor li:not(.ql-direction-rtl)::before {
- margin-left: -1.5em;
-}
-.ql-editor ol li,
-.ql-editor ul li {
- padding-left: 1.5em;
-}
-.ql-editor ol li {
- counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
- counter-increment: list-num;
-}
-.ql-editor ol li:before {
- content: counter(list-num, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-1 {
- counter-increment: list-1;
-}
-.ql-editor ol li.ql-indent-1:before {
- content: counter(list-1, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-1 {
- counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-2 {
- counter-increment: list-2;
-}
-.ql-editor ol li.ql-indent-2:before {
- content: counter(list-2, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-2 {
- counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-3 {
- counter-increment: list-3;
-}
-.ql-editor ol li.ql-indent-3:before {
- content: counter(list-3, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-3 {
- counter-reset: list-4 list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-4 {
- counter-increment: list-4;
-}
-.ql-editor ol li.ql-indent-4:before {
- content: counter(list-4, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-4 {
- counter-reset: list-5 list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-5 {
- counter-increment: list-5;
-}
-.ql-editor ol li.ql-indent-5:before {
- content: counter(list-5, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-5 {
- counter-reset: list-6 list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-6 {
- counter-increment: list-6;
-}
-.ql-editor ol li.ql-indent-6:before {
- content: counter(list-6, decimal) '. ';
-}
-.ql-editor ol li.ql-indent-6 {
- counter-reset: list-7 list-8 list-9;
-}
-.ql-editor ol li.ql-indent-7 {
- counter-increment: list-7;
-}
-.ql-editor ol li.ql-indent-7:before {
- content: counter(list-7, lower-alpha) '. ';
-}
-.ql-editor ol li.ql-indent-7 {
- counter-reset: list-8 list-9;
-}
-.ql-editor ol li.ql-indent-8 {
- counter-increment: list-8;
-}
-.ql-editor ol li.ql-indent-8:before {
- content: counter(list-8, lower-roman) '. ';
-}
-.ql-editor ol li.ql-indent-8 {
- counter-reset: list-9;
-}
-.ql-editor ol li.ql-indent-9 {
- counter-increment: list-9;
-}
-.ql-editor ol li.ql-indent-9:before {
- content: counter(list-9, decimal) '. ';
-}
-.ql-editor .ql-indent-1:not(.ql-direction-rtl) {
- padding-left: 3em;
-}
-.ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
- padding-left: 4.5em;
-}
-.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
- padding-right: 3em;
-}
-.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
- padding-right: 4.5em;
-}
-.ql-editor .ql-indent-2:not(.ql-direction-rtl) {
- padding-left: 6em;
-}
-.ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
- padding-left: 7.5em;
-}
-.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
- padding-right: 6em;
-}
-.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
- padding-right: 7.5em;
-}
-.ql-editor .ql-indent-3:not(.ql-direction-rtl) {
- padding-left: 9em;
-}
-.ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
- padding-left: 10.5em;
-}
-.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
- padding-right: 9em;
-}
-.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
- padding-right: 10.5em;
-}
-.ql-editor .ql-indent-4:not(.ql-direction-rtl) {
- padding-left: 12em;
-}
-.ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
- padding-left: 13.5em;
-}
-.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
- padding-right: 12em;
-}
-.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
- padding-right: 13.5em;
-}
-.ql-editor .ql-indent-5:not(.ql-direction-rtl) {
- padding-left: 15em;
-}
-.ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
- padding-left: 16.5em;
-}
-.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
- padding-right: 15em;
-}
-.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
- padding-right: 16.5em;
-}
-.ql-editor .ql-indent-6:not(.ql-direction-rtl) {
- padding-left: 18em;
-}
-.ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
- padding-left: 19.5em;
-}
-.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
- padding-right: 18em;
-}
-.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
- padding-right: 19.5em;
-}
-.ql-editor .ql-indent-7:not(.ql-direction-rtl) {
- padding-left: 21em;
-}
-.ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
- padding-left: 22.5em;
-}
-.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
- padding-right: 21em;
-}
-.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
- padding-right: 22.5em;
-}
-.ql-editor .ql-indent-8:not(.ql-direction-rtl) {
- padding-left: 24em;
-}
-.ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
- padding-left: 25.5em;
-}
-.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
- padding-right: 24em;
-}
-.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
- padding-right: 25.5em;
-}
-.ql-editor .ql-indent-9:not(.ql-direction-rtl) {
- padding-left: 27em;
-}
-.ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
- padding-left: 28.5em;
-}
-.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
- padding-right: 27em;
-}
-.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
- padding-right: 28.5em;
-}
-.ql-editor .ql-video {
- display: block;
- max-width: 100%;
-}
-.ql-editor .ql-video.ql-align-center {
- margin: 0 auto;
-}
-.ql-editor .ql-video.ql-align-right {
- margin: 0 0 0 auto;
-}
-.ql-editor .ql-bg-black {
- background-color: #000;
-}
-.ql-editor .ql-bg-red {
- background-color: #e60000;
-}
-.ql-editor .ql-bg-orange {
- background-color: #f90;
-}
-.ql-editor .ql-bg-yellow {
- background-color: #ff0;
-}
-.ql-editor .ql-bg-green {
- background-color: #008a00;
-}
-.ql-editor .ql-bg-blue {
- background-color: #06c;
-}
-.ql-editor .ql-bg-purple {
- background-color: #93f;
-}
-.ql-editor .ql-color-white {
- color: #fff;
-}
-.ql-editor .ql-color-red {
- color: #e60000;
-}
-.ql-editor .ql-color-orange {
- color: #f90;
-}
-.ql-editor .ql-color-yellow {
- color: #ff0;
-}
-.ql-editor .ql-color-green {
- color: #008a00;
-}
-.ql-editor .ql-color-blue {
- color: #06c;
-}
-.ql-editor .ql-color-purple {
- color: #93f;
-}
-.ql-editor .ql-font-serif {
- font-family: Georgia, Times New Roman, serif;
-}
-.ql-editor .ql-font-monospace {
- font-family: Monaco, Courier New, monospace;
-}
-.ql-editor .ql-size-small {
- font-size: 0.75em;
-}
-.ql-editor .ql-size-large {
- font-size: 1.5em;
-}
-.ql-editor .ql-size-huge {
- font-size: 2.5em;
-}
-.ql-editor .ql-direction-rtl {
- direction: rtl;
- text-align: inherit;
-}
-.ql-editor .ql-align-center {
- text-align: center;
-}
-.ql-editor .ql-align-justify {
- text-align: justify;
-}
-.ql-editor .ql-align-right {
- text-align: right;
-}
-.ql-editor.ql-blank::before {
- color: rgba(0,0,0,0.6);
- content: attr(data-placeholder);
- font-style: italic;
- pointer-events: none;
- position: absolute;
-}
-.ql-snow.ql-toolbar:after,
-.ql-snow .ql-toolbar:after {
- clear: both;
- content: '';
- display: table;
-}
-.ql-snow.ql-toolbar button,
-.ql-snow .ql-toolbar button {
- background: none;
- border: none;
- cursor: pointer;
- display: inline-block;
- float: left;
- height: 24px;
- padding: 3px 5px;
- width: 28px;
-}
-.ql-snow.ql-toolbar button svg,
-.ql-snow .ql-toolbar button svg {
- float: left;
- height: 100%;
-}
-.ql-snow.ql-toolbar button:active:hover,
-.ql-snow .ql-toolbar button:active:hover {
- outline: none;
-}
-.ql-snow.ql-toolbar input.ql-image[type=file],
-.ql-snow .ql-toolbar input.ql-image[type=file] {
- display: none;
-}
-.ql-snow.ql-toolbar button:hover,
-.ql-snow .ql-toolbar button:hover,
-.ql-snow.ql-toolbar button.ql-active,
-.ql-snow .ql-toolbar button.ql-active,
-.ql-snow.ql-toolbar .ql-picker-label:hover,
-.ql-snow .ql-toolbar .ql-picker-label:hover,
-.ql-snow.ql-toolbar .ql-picker-label.ql-active,
-.ql-snow .ql-toolbar .ql-picker-label.ql-active,
-.ql-snow.ql-toolbar .ql-picker-item:hover,
-.ql-snow .ql-toolbar .ql-picker-item:hover,
-.ql-snow.ql-toolbar .ql-picker-item.ql-selected,
-.ql-snow .ql-toolbar .ql-picker-item.ql-selected {
- color: #06c;
-}
-.ql-snow.ql-toolbar button:hover .ql-fill,
-.ql-snow .ql-toolbar button:hover .ql-fill,
-.ql-snow.ql-toolbar button.ql-active .ql-fill,
-.ql-snow .ql-toolbar button.ql-active .ql-fill,
-.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,
-.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,
-.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
-.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,
-.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,
-.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,
-.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,
-.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,
-.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,
-.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,
-.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,
-.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,
-.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
-.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
-.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
-.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
-.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
-.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
-.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,
-.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {
- fill: #06c;
-}
-.ql-snow.ql-toolbar button:hover .ql-stroke,
-.ql-snow .ql-toolbar button:hover .ql-stroke,
-.ql-snow.ql-toolbar button.ql-active .ql-stroke,
-.ql-snow .ql-toolbar button.ql-active .ql-stroke,
-.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,
-.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,
-.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
-.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,
-.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,
-.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,
-.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
-.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
-.ql-snow.ql-toolbar button:hover .ql-stroke-miter,
-.ql-snow .ql-toolbar button:hover .ql-stroke-miter,
-.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,
-.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,
-.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
-.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
-.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
-.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
-.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
-.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
-.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,
-.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {
- stroke: #06c;
-}
-.ql-snow {
- box-sizing: border-box;
-}
-.ql-snow * {
- box-sizing: border-box;
-}
-.ql-snow .ql-hidden {
- display: none;
-}
-.ql-snow .ql-out-bottom,
-.ql-snow .ql-out-top {
- visibility: hidden;
-}
-.ql-snow .ql-tooltip {
- position: absolute;
- transform: translateY(10px);
-}
-.ql-snow .ql-tooltip a {
- cursor: pointer;
- text-decoration: none;
-}
-.ql-snow .ql-tooltip.ql-flip {
- transform: translateY(-10px);
-}
-.ql-snow .ql-formats {
- display: inline-block;
- vertical-align: middle;
-}
-.ql-snow .ql-formats:after {
- clear: both;
- content: '';
- display: table;
-}
-.ql-snow .ql-stroke {
- fill: none;
- stroke: #444;
- stroke-linecap: round;
- stroke-linejoin: round;
- stroke-width: 2;
-}
-.ql-snow .ql-stroke-miter {
- fill: none;
- stroke: #444;
- stroke-miterlimit: 10;
- stroke-width: 2;
-}
-.ql-snow .ql-fill,
-.ql-snow .ql-stroke.ql-fill {
- fill: #444;
-}
-.ql-snow .ql-empty {
- fill: none;
-}
-.ql-snow .ql-even {
- fill-rule: evenodd;
-}
-.ql-snow .ql-thin,
-.ql-snow .ql-stroke.ql-thin {
- stroke-width: 1;
-}
-.ql-snow .ql-transparent {
- opacity: 0.4;
-}
-.ql-snow .ql-direction svg:last-child {
- display: none;
-}
-.ql-snow .ql-direction.ql-active svg:last-child {
- display: inline;
-}
-.ql-snow .ql-direction.ql-active svg:first-child {
- display: none;
-}
-.ql-snow .ql-editor h1 {
- font-size: 2em;
-}
-.ql-snow .ql-editor h2 {
- font-size: 1.5em;
-}
-.ql-snow .ql-editor h3 {
- font-size: 1.17em;
-}
-.ql-snow .ql-editor h4 {
- font-size: 1em;
-}
-.ql-snow .ql-editor h5 {
- font-size: 0.83em;
-}
-.ql-snow .ql-editor h6 {
- font-size: 0.67em;
-}
-.ql-snow .ql-editor a {
- text-decoration: underline;
-}
-.ql-snow .ql-editor blockquote {
- border-left: 4px solid #ccc;
- margin-bottom: 5px;
- margin-top: 5px;
- padding-left: 16px;
-}
-.ql-snow .ql-editor code,
-.ql-snow .ql-editor pre {
- background-color: #f0f0f0;
- border-radius: 3px;
-}
-.ql-snow .ql-editor pre {
- white-space: pre-wrap;
- margin-bottom: 5px;
- margin-top: 5px;
- padding: 5px 10px;
-}
-.ql-snow .ql-editor code {
- font-size: 85%;
- padding-bottom: 2px;
- padding-top: 2px;
-}
-.ql-snow .ql-editor code:before,
-.ql-snow .ql-editor code:after {
- content: "\A0";
- letter-spacing: -2px;
-}
-.ql-snow .ql-editor pre.ql-syntax {
- background-color: #23241f;
- color: #f8f8f2;
- overflow: visible;
-}
-.ql-snow .ql-editor img {
- max-width: 100%;
-}
-.ql-snow .ql-picker {
- color: #444;
- display: inline-block;
- float: left;
- font-size: 14px;
- font-weight: 500;
- height: 24px;
- position: relative;
- vertical-align: middle;
-}
-.ql-snow .ql-picker-label {
- cursor: pointer;
- display: inline-block;
- height: 100%;
- padding-left: 8px;
- padding-right: 2px;
- position: relative;
- width: 100%;
-}
-.ql-snow .ql-picker-label::before {
- display: inline-block;
- line-height: 22px;
-}
-.ql-snow .ql-picker-options {
- background-color: #fff;
- display: none;
- min-width: 100%;
- padding: 4px 8px;
- position: absolute;
- white-space: nowrap;
-}
-.ql-snow .ql-picker-options .ql-picker-item {
- cursor: pointer;
- display: block;
- padding-bottom: 5px;
- padding-top: 5px;
-}
-.ql-snow .ql-picker.ql-expanded .ql-picker-label {
- color: #ccc;
- z-index: 2;
-}
-.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
- fill: #ccc;
-}
-.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
- stroke: #ccc;
-}
-.ql-snow .ql-picker.ql-expanded .ql-picker-options {
- display: block;
- margin-top: -1px;
- top: 100%;
- z-index: 1;
-}
-.ql-snow .ql-color-picker,
-.ql-snow .ql-icon-picker {
- width: 28px;
-}
-.ql-snow .ql-color-picker .ql-picker-label,
-.ql-snow .ql-icon-picker .ql-picker-label {
- padding: 2px 4px;
-}
-.ql-snow .ql-color-picker .ql-picker-label svg,
-.ql-snow .ql-icon-picker .ql-picker-label svg {
- right: 4px;
-}
-.ql-snow .ql-icon-picker .ql-picker-options {
- padding: 4px 0px;
-}
-.ql-snow .ql-icon-picker .ql-picker-item {
- height: 24px;
- width: 24px;
- padding: 2px 4px;
-}
-.ql-snow .ql-color-picker .ql-picker-options {
- padding: 3px 5px;
- width: 152px;
-}
-.ql-snow .ql-color-picker .ql-picker-item {
- border: 1px solid transparent;
- float: left;
- height: 16px;
- margin: 2px;
- padding: 0px;
- width: 16px;
-}
-.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
- position: absolute;
- margin-top: -9px;
- right: 0;
- top: 50%;
- width: 18px;
-}
-.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,
-.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,
-.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,
-.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,
-.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before {
- content: attr(data-label);
-}
-.ql-snow .ql-picker.ql-header {
- width: 98px;
-}
-.ql-snow .ql-picker.ql-header .ql-picker-label::before,
-.ql-snow .ql-picker.ql-header .ql-picker-item::before {
- content: 'Normal';
-}
-.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
- content: 'Heading 1';
-}
-.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
- content: 'Heading 2';
-}
-.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
- content: 'Heading 3';
-}
-.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
- content: 'Heading 4';
-}
-.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
- content: 'Heading 5';
-}
-.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
- content: 'Heading 6';
-}
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before {
- font-size: 2em;
-}
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before {
- font-size: 1.5em;
-}
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before {
- font-size: 1.17em;
-}
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before {
- font-size: 1em;
-}
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before {
- font-size: 0.83em;
-}
-.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before {
- font-size: 0.67em;
-}
-.ql-snow .ql-picker.ql-font {
- width: 108px;
-}
-.ql-snow .ql-picker.ql-font .ql-picker-label::before,
-.ql-snow .ql-picker.ql-font .ql-picker-item::before {
- content: 'Sans Serif';
-}
-.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,
-.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
- content: 'Serif';
-}
-.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,
-.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
- content: 'Monospace';
-}
-.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before {
- font-family: Georgia, Times New Roman, serif;
-}
-.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before {
- font-family: Monaco, Courier New, monospace;
-}
-.ql-snow .ql-picker.ql-size {
- width: 98px;
-}
-.ql-snow .ql-picker.ql-size .ql-picker-label::before,
-.ql-snow .ql-picker.ql-size .ql-picker-item::before {
- content: 'Normal';
-}
-.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,
-.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
- content: 'Small';
-}
-.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,
-.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
- content: 'Large';
-}
-.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,
-.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
- content: 'Huge';
-}
-.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before {
- font-size: 10px;
-}
-.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before {
- font-size: 18px;
-}
-.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before {
- font-size: 32px;
-}
-.ql-snow .ql-color-picker.ql-background .ql-picker-item {
- background-color: #fff;
-}
-.ql-snow .ql-color-picker.ql-color .ql-picker-item {
- background-color: #000;
-}
-.ql-toolbar.ql-snow {
- border: 1px solid #ccc;
- box-sizing: border-box;
- font-family: 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
- padding: 8px;
-}
-.ql-toolbar.ql-snow .ql-formats {
- margin-right: 15px;
-}
-.ql-toolbar.ql-snow .ql-picker-label {
- border: 1px solid transparent;
-}
-.ql-toolbar.ql-snow .ql-picker-options {
- border: 1px solid transparent;
- box-shadow: rgba(0,0,0,0.2) 0 2px 8px;
-}
-.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label {
- border-color: #ccc;
-}
-.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
- border-color: #ccc;
-}
-.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,
-.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {
- border-color: #000;
-}
-.ql-toolbar.ql-snow + .ql-container.ql-snow {
- border-top: 0px;
-}
-.ql-snow .ql-tooltip {
- background-color: #fff;
- border: 1px solid #ccc;
- box-shadow: 0px 0px 5px #ddd;
- color: #444;
- padding: 5px 12px;
- white-space: nowrap;
-}
-.ql-snow .ql-tooltip::before {
- content: "Visit URL:";
- line-height: 26px;
- margin-right: 8px;
-}
-.ql-snow .ql-tooltip input[type=text] {
- display: none;
- border: 1px solid #ccc;
- font-size: 13px;
- height: 26px;
- margin: 0px;
- padding: 3px 5px;
- width: 170px;
-}
-.ql-snow .ql-tooltip a.ql-preview {
- display: inline-block;
- max-width: 200px;
- overflow-x: hidden;
- text-overflow: ellipsis;
- vertical-align: top;
-}
-.ql-snow .ql-tooltip a.ql-action::after {
- border-right: 1px solid #ccc;
- content: 'Edit';
- margin-left: 16px;
- padding-right: 8px;
-}
-.ql-snow .ql-tooltip a.ql-remove::before {
- content: 'Remove';
- margin-left: 8px;
-}
-.ql-snow .ql-tooltip a {
- line-height: 26px;
-}
-.ql-snow .ql-tooltip.ql-editing a.ql-preview,
-.ql-snow .ql-tooltip.ql-editing a.ql-remove {
- display: none;
-}
-.ql-snow .ql-tooltip.ql-editing input[type=text] {
- display: inline-block;
-}
-.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
- border-right: 0px;
- content: 'Save';
- padding-right: 0px;
-}
-.ql-snow .ql-tooltip[data-mode=link]::before {
- content: "Enter link:";
-}
-.ql-snow .ql-tooltip[data-mode=formula]::before {
- content: "Enter formula:";
-}
-.ql-snow .ql-tooltip[data-mode=video]::before {
- content: "Enter video:";
-}
-.ql-snow a {
- color: #06c;
-}
-.ql-container.ql-snow {
- border: 1px solid #ccc;
-}
diff --git a/dist/react-quill.js b/dist/react-quill.js
deleted file mode 100644
index c3de47e3..00000000
--- a/dist/react-quill.js
+++ /dev/null
@@ -1,16097 +0,0 @@
-(function webpackUniversalModuleDefinition(root, factory) {
- if(typeof exports === 'object' && typeof module === 'object')
- module.exports = factory(require("react"), require("react-dom"), require("react-dom/server"));
- else if(typeof define === 'function' && define.amd)
- define(["react", "react-dom", "react-dom/server"], factory);
- else if(typeof exports === 'object')
- exports["ReactQuill"] = factory(require("react"), require("react-dom"), require("react-dom/server"));
- else
- root["ReactQuill"] = factory(root["React"], root["ReactDOM"], root["ReactDOMServer"]);
-})(this, function(__WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_138__) {
-return /******/ (function(modules) { // webpackBootstrap
-/******/ // The module cache
-/******/ var installedModules = {};
-/******/
-/******/ // The require function
-/******/ function __webpack_require__(moduleId) {
-/******/
-/******/ // Check if module is in cache
-/******/ if(installedModules[moduleId])
-/******/ return installedModules[moduleId].exports;
-/******/
-/******/ // Create a new module (and put it into the cache)
-/******/ var module = installedModules[moduleId] = {
-/******/ exports: {},
-/******/ id: moduleId,
-/******/ loaded: false
-/******/ };
-/******/
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/ // Flag the module as loaded
-/******/ module.loaded = true;
-/******/
-/******/ // Return the exports of the module
-/******/ return module.exports;
-/******/ }
-/******/
-/******/
-/******/ // expose the modules object (__webpack_modules__)
-/******/ __webpack_require__.m = modules;
-/******/
-/******/ // expose the module cache
-/******/ __webpack_require__.c = installedModules;
-/******/
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
-/******/
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/*!**********************!*\
- !*** ./src/index.js ***!
- \**********************/
-/***/ function(module, exports, __webpack_require__) {
-
- /*
- React-Quill v1.0.0
- https://github.com/zenoamaro/react-quill
- */
- var Quill = __webpack_require__(/*! quill */ 1);
- var Parchment = Quill.import('parchment');
- var QuillStyle = Parchment.Attributor.Style;
- var styleOptions = { scope: Parchment.Scope.INLINE };
- Quill.register(new QuillStyle('size', 'font-size', styleOptions), true);
- Quill.register(new QuillStyle('font', 'font-family', styleOptions), true);
-
- module.exports = __webpack_require__(/*! ./component */ 2);
- module.exports.Quill = Quill;
- module.exports.Mixin = __webpack_require__(/*! ./mixin */ 5);
- module.exports.Toolbar = __webpack_require__(/*! ./toolbar */ 137);
-
-
-/***/ },
-/* 1 */
-/*!*******************************!*\
- !*** ./~/quill/dist/quill.js ***!
- \*******************************/
-/***/ function(module, exports) {
-
- /*!
- * Quill Editor v1.2.0
- * https://quilljs.com/
- * Copyright (c) 2014, Jason Chen
- * Copyright (c) 2013, salesforce.com
- */
- (function webpackUniversalModuleDefinition(root, factory) {
- if(typeof exports === 'object' && typeof module === 'object')
- module.exports = factory();
- else if(typeof define === 'function' && define.amd)
- define([], factory);
- else if(typeof exports === 'object')
- exports["Quill"] = factory();
- else
- root["Quill"] = factory();
- })(this, function() {
- return /******/ (function(modules) { // webpackBootstrap
- /******/ // The module cache
- /******/ var installedModules = {};
-
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
-
- /******/ // Check if module is in cache
- /******/ if(installedModules[moduleId])
- /******/ return installedModules[moduleId].exports;
-
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = installedModules[moduleId] = {
- /******/ exports: {},
- /******/ id: moduleId,
- /******/ loaded: false
- /******/ };
-
- /******/ // Execute the module function
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
- /******/ // Flag the module as loaded
- /******/ module.loaded = true;
-
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
-
-
- /******/ // expose the modules object (__webpack_modules__)
- /******/ __webpack_require__.m = modules;
-
- /******/ // expose the module cache
- /******/ __webpack_require__.c = installedModules;
-
- /******/ // __webpack_public_path__
- /******/ __webpack_require__.p = "";
-
- /******/ // Load entry module and return exports
- /******/ return __webpack_require__(0);
- /******/ })
- /************************************************************************/
- /******/ ([
- /* 0 */
- /***/ function(module, exports, __webpack_require__) {
-
- module.exports = __webpack_require__(53);
-
-
- /***/ },
- /* 1 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _quill = __webpack_require__(18);
-
- var _quill2 = _interopRequireDefault(_quill);
-
- var _block = __webpack_require__(29);
-
- var _block2 = _interopRequireDefault(_block);
-
- var _break = __webpack_require__(30);
-
- var _break2 = _interopRequireDefault(_break);
-
- var _container = __webpack_require__(42);
-
- var _container2 = _interopRequireDefault(_container);
-
- var _cursor = __webpack_require__(34);
-
- var _cursor2 = _interopRequireDefault(_cursor);
-
- var _embed = __webpack_require__(31);
-
- var _embed2 = _interopRequireDefault(_embed);
-
- var _inline = __webpack_require__(32);
-
- var _inline2 = _interopRequireDefault(_inline);
-
- var _scroll = __webpack_require__(43);
-
- var _scroll2 = _interopRequireDefault(_scroll);
-
- var _text = __webpack_require__(33);
-
- var _text2 = _interopRequireDefault(_text);
-
- var _clipboard = __webpack_require__(44);
-
- var _clipboard2 = _interopRequireDefault(_clipboard);
-
- var _history = __webpack_require__(51);
-
- var _history2 = _interopRequireDefault(_history);
-
- var _keyboard = __webpack_require__(52);
-
- var _keyboard2 = _interopRequireDefault(_keyboard);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- _quill2.default.register({
- 'blots/block': _block2.default,
- 'blots/block/embed': _block.BlockEmbed,
- 'blots/break': _break2.default,
- 'blots/container': _container2.default,
- 'blots/cursor': _cursor2.default,
- 'blots/embed': _embed2.default,
- 'blots/inline': _inline2.default,
- 'blots/scroll': _scroll2.default,
- 'blots/text': _text2.default,
-
- 'modules/clipboard': _clipboard2.default,
- 'modules/history': _history2.default,
- 'modules/keyboard': _keyboard2.default
- });
-
- _parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);
-
- module.exports = _quill2.default;
-
- /***/ },
- /* 2 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var container_1 = __webpack_require__(3);
- var format_1 = __webpack_require__(7);
- var leaf_1 = __webpack_require__(12);
- var scroll_1 = __webpack_require__(13);
- var inline_1 = __webpack_require__(14);
- var block_1 = __webpack_require__(15);
- var embed_1 = __webpack_require__(16);
- var text_1 = __webpack_require__(17);
- var attributor_1 = __webpack_require__(8);
- var class_1 = __webpack_require__(10);
- var style_1 = __webpack_require__(11);
- var store_1 = __webpack_require__(9);
- var Registry = __webpack_require__(6);
- var Parchment = {
- Scope: Registry.Scope,
- create: Registry.create,
- find: Registry.find,
- query: Registry.query,
- register: Registry.register,
- Container: container_1.default,
- Format: format_1.default,
- Leaf: leaf_1.default,
- Embed: embed_1.default,
- Scroll: scroll_1.default,
- Block: block_1.default,
- Inline: inline_1.default,
- Text: text_1.default,
- Attributor: {
- Attribute: attributor_1.default,
- Class: class_1.default,
- Style: style_1.default,
- Store: store_1.default
- }
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = Parchment;
-
-
- /***/ },
- /* 3 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var linked_list_1 = __webpack_require__(4);
- var shadow_1 = __webpack_require__(5);
- var Registry = __webpack_require__(6);
- var ContainerBlot = (function (_super) {
- __extends(ContainerBlot, _super);
- function ContainerBlot() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- ContainerBlot.prototype.appendChild = function (other) {
- this.insertBefore(other);
- };
- ContainerBlot.prototype.attach = function () {
- var _this = this;
- _super.prototype.attach.call(this);
- this.children = new linked_list_1.default();
- // Need to be reversed for if DOM nodes already in order
- [].slice.call(this.domNode.childNodes).reverse().forEach(function (node) {
- try {
- var child = makeBlot(node);
- _this.insertBefore(child, _this.children.head);
- }
- catch (err) {
- if (err instanceof Registry.ParchmentError)
- return;
- else
- throw err;
- }
- });
- };
- ContainerBlot.prototype.deleteAt = function (index, length) {
- if (index === 0 && length === this.length()) {
- return this.remove();
- }
- this.children.forEachAt(index, length, function (child, offset, length) {
- child.deleteAt(offset, length);
- });
- };
- ContainerBlot.prototype.descendant = function (criteria, index) {
- var _a = this.children.find(index), child = _a[0], offset = _a[1];
- if ((criteria.blotName == null && criteria(child)) ||
- (criteria.blotName != null && child instanceof criteria)) {
- return [child, offset];
- }
- else if (child instanceof ContainerBlot) {
- return child.descendant(criteria, offset);
- }
- else {
- return [null, -1];
- }
- };
- ContainerBlot.prototype.descendants = function (criteria, index, length) {
- if (index === void 0) { index = 0; }
- if (length === void 0) { length = Number.MAX_VALUE; }
- var descendants = [], lengthLeft = length;
- this.children.forEachAt(index, length, function (child, index, length) {
- if ((criteria.blotName == null && criteria(child)) ||
- (criteria.blotName != null && child instanceof criteria)) {
- descendants.push(child);
- }
- if (child instanceof ContainerBlot) {
- descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));
- }
- lengthLeft -= length;
- });
- return descendants;
- };
- ContainerBlot.prototype.detach = function () {
- this.children.forEach(function (child) {
- child.detach();
- });
- _super.prototype.detach.call(this);
- };
- ContainerBlot.prototype.formatAt = function (index, length, name, value) {
- this.children.forEachAt(index, length, function (child, offset, length) {
- child.formatAt(offset, length, name, value);
- });
- };
- ContainerBlot.prototype.insertAt = function (index, value, def) {
- var _a = this.children.find(index), child = _a[0], offset = _a[1];
- if (child) {
- child.insertAt(offset, value, def);
- }
- else {
- var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);
- this.appendChild(blot);
- }
- };
- ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {
- if (this.statics.allowedChildren != null && !this.statics.allowedChildren.some(function (child) {
- return childBlot instanceof child;
- })) {
- throw new Registry.ParchmentError("Cannot insert " + childBlot.statics.blotName + " into " + this.statics.blotName);
- }
- childBlot.insertInto(this, refBlot);
- };
- ContainerBlot.prototype.length = function () {
- return this.children.reduce(function (memo, child) {
- return memo + child.length();
- }, 0);
- };
- ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {
- this.children.forEach(function (child) {
- targetParent.insertBefore(child, refNode);
- });
- };
- ContainerBlot.prototype.optimize = function () {
- _super.prototype.optimize.call(this);
- if (this.children.length === 0) {
- if (this.statics.defaultChild != null) {
- var child = Registry.create(this.statics.defaultChild);
- this.appendChild(child);
- child.optimize();
- }
- else {
- this.remove();
- }
- }
- };
- ContainerBlot.prototype.path = function (index, inclusive) {
- if (inclusive === void 0) { inclusive = false; }
- var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];
- var position = [[this, index]];
- if (child instanceof ContainerBlot) {
- return position.concat(child.path(offset, inclusive));
- }
- else if (child != null) {
- position.push([child, offset]);
- }
- return position;
- };
- ContainerBlot.prototype.removeChild = function (child) {
- this.children.remove(child);
- };
- ContainerBlot.prototype.replace = function (target) {
- if (target instanceof ContainerBlot) {
- target.moveChildren(this);
- }
- _super.prototype.replace.call(this, target);
- };
- ContainerBlot.prototype.split = function (index, force) {
- if (force === void 0) { force = false; }
- if (!force) {
- if (index === 0)
- return this;
- if (index === this.length())
- return this.next;
- }
- var after = this.clone();
- this.parent.insertBefore(after, this.next);
- this.children.forEachAt(index, this.length(), function (child, offset, length) {
- child = child.split(offset, force);
- after.appendChild(child);
- });
- return after;
- };
- ContainerBlot.prototype.unwrap = function () {
- this.moveChildren(this.parent, this.next);
- this.remove();
- };
- ContainerBlot.prototype.update = function (mutations) {
- var _this = this;
- var addedNodes = [], removedNodes = [];
- mutations.forEach(function (mutation) {
- if (mutation.target === _this.domNode && mutation.type === 'childList') {
- addedNodes.push.apply(addedNodes, mutation.addedNodes);
- removedNodes.push.apply(removedNodes, mutation.removedNodes);
- }
- });
- removedNodes.forEach(function (node) {
- // Check node has actually been removed
- // One exception is Chrome does not immediately remove IFRAMEs
- // from DOM but MutationRecord is correct in its reported removal
- if (node.parentNode != null && node.tagName !== 'IFRAME' &&
- (document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)) {
- return;
- }
- var blot = Registry.find(node);
- if (blot == null)
- return;
- if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {
- blot.detach();
- }
- });
- addedNodes.filter(function (node) {
- return node.parentNode == _this.domNode;
- }).sort(function (a, b) {
- if (a === b)
- return 0;
- if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {
- return 1;
- }
- return -1;
- }).forEach(function (node) {
- var refBlot = null;
- if (node.nextSibling != null) {
- refBlot = Registry.find(node.nextSibling);
- }
- var blot = makeBlot(node);
- if (blot.next != refBlot || blot.next == null) {
- if (blot.parent != null) {
- blot.parent.removeChild(_this);
- }
- _this.insertBefore(blot, refBlot);
- }
- });
- };
- return ContainerBlot;
- }(shadow_1.default));
- function makeBlot(node) {
- var blot = Registry.find(node);
- if (blot == null) {
- try {
- blot = Registry.create(node);
- }
- catch (e) {
- blot = Registry.create(Registry.Scope.INLINE);
- [].slice.call(node.childNodes).forEach(function (child) {
- blot.domNode.appendChild(child);
- });
- node.parentNode.replaceChild(blot.domNode, node);
- blot.attach();
- }
- }
- return blot;
- }
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = ContainerBlot;
-
-
- /***/ },
- /* 4 */
- /***/ function(module, exports) {
-
- "use strict";
- var LinkedList = (function () {
- function LinkedList() {
- this.head = this.tail = undefined;
- this.length = 0;
- }
- LinkedList.prototype.append = function () {
- var nodes = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- nodes[_i] = arguments[_i];
- }
- this.insertBefore(nodes[0], undefined);
- if (nodes.length > 1) {
- this.append.apply(this, nodes.slice(1));
- }
- };
- LinkedList.prototype.contains = function (node) {
- var cur, next = this.iterator();
- while (cur = next()) {
- if (cur === node)
- return true;
- }
- return false;
- };
- LinkedList.prototype.insertBefore = function (node, refNode) {
- node.next = refNode;
- if (refNode != null) {
- node.prev = refNode.prev;
- if (refNode.prev != null) {
- refNode.prev.next = node;
- }
- refNode.prev = node;
- if (refNode === this.head) {
- this.head = node;
- }
- }
- else if (this.tail != null) {
- this.tail.next = node;
- node.prev = this.tail;
- this.tail = node;
- }
- else {
- node.prev = undefined;
- this.head = this.tail = node;
- }
- this.length += 1;
- };
- LinkedList.prototype.offset = function (target) {
- var index = 0, cur = this.head;
- while (cur != null) {
- if (cur === target)
- return index;
- index += cur.length();
- cur = cur.next;
- }
- return -1;
- };
- LinkedList.prototype.remove = function (node) {
- if (!this.contains(node))
- return;
- if (node.prev != null)
- node.prev.next = node.next;
- if (node.next != null)
- node.next.prev = node.prev;
- if (node === this.head)
- this.head = node.next;
- if (node === this.tail)
- this.tail = node.prev;
- this.length -= 1;
- };
- LinkedList.prototype.iterator = function (curNode) {
- if (curNode === void 0) { curNode = this.head; }
- // TODO use yield when we can
- return function () {
- var ret = curNode;
- if (curNode != null)
- curNode = curNode.next;
- return ret;
- };
- };
- LinkedList.prototype.find = function (index, inclusive) {
- if (inclusive === void 0) { inclusive = false; }
- var cur, next = this.iterator();
- while (cur = next()) {
- var length_1 = cur.length();
- if (index < length_1 || (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {
- return [cur, index];
- }
- index -= length_1;
- }
- return [null, 0];
- };
- LinkedList.prototype.forEach = function (callback) {
- var cur, next = this.iterator();
- while (cur = next()) {
- callback(cur);
- }
- };
- LinkedList.prototype.forEachAt = function (index, length, callback) {
- if (length <= 0)
- return;
- var _a = this.find(index), startNode = _a[0], offset = _a[1];
- var cur, curIndex = index - offset, next = this.iterator(startNode);
- while ((cur = next()) && curIndex < index + length) {
- var curLength = cur.length();
- if (index > curIndex) {
- callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));
- }
- else {
- callback(cur, 0, Math.min(curLength, index + length - curIndex));
- }
- curIndex += curLength;
- }
- };
- LinkedList.prototype.map = function (callback) {
- return this.reduce(function (memo, cur) {
- memo.push(callback(cur));
- return memo;
- }, []);
- };
- LinkedList.prototype.reduce = function (callback, memo) {
- var cur, next = this.iterator();
- while (cur = next()) {
- memo = callback(memo, cur);
- }
- return memo;
- };
- return LinkedList;
- }());
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = LinkedList;
-
-
- /***/ },
- /* 5 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var Registry = __webpack_require__(6);
- var ShadowBlot = (function () {
- function ShadowBlot(domNode) {
- this.domNode = domNode;
- this.attach();
- }
- Object.defineProperty(ShadowBlot.prototype, "statics", {
- // Hack for accessing inherited static methods
- get: function () {
- return this.constructor;
- },
- enumerable: true,
- configurable: true
- });
- ShadowBlot.create = function (value) {
- if (this.tagName == null) {
- throw new Registry.ParchmentError('Blot definition missing tagName');
- }
- var node;
- if (Array.isArray(this.tagName)) {
- if (typeof value === 'string') {
- value = value.toUpperCase();
- if (parseInt(value).toString() === value) {
- value = parseInt(value);
- }
- }
- if (typeof value === 'number') {
- node = document.createElement(this.tagName[value - 1]);
- }
- else if (this.tagName.indexOf(value) > -1) {
- node = document.createElement(value);
- }
- else {
- node = document.createElement(this.tagName[0]);
- }
- }
- else {
- node = document.createElement(this.tagName);
- }
- if (this.className) {
- node.classList.add(this.className);
- }
- return node;
- };
- ShadowBlot.prototype.attach = function () {
- this.domNode[Registry.DATA_KEY] = { blot: this };
- };
- ShadowBlot.prototype.clone = function () {
- var domNode = this.domNode.cloneNode();
- return Registry.create(domNode);
- };
- ShadowBlot.prototype.detach = function () {
- if (this.parent != null)
- this.parent.removeChild(this);
- delete this.domNode[Registry.DATA_KEY];
- };
- ShadowBlot.prototype.deleteAt = function (index, length) {
- var blot = this.isolate(index, length);
- blot.remove();
- };
- ShadowBlot.prototype.formatAt = function (index, length, name, value) {
- var blot = this.isolate(index, length);
- if (Registry.query(name, Registry.Scope.BLOT) != null && value) {
- blot.wrap(name, value);
- }
- else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {
- var parent_1 = Registry.create(this.statics.scope);
- blot.wrap(parent_1);
- parent_1.format(name, value);
- }
- };
- ShadowBlot.prototype.insertAt = function (index, value, def) {
- var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);
- var ref = this.split(index);
- this.parent.insertBefore(blot, ref);
- };
- ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {
- if (this.parent != null) {
- this.parent.children.remove(this);
- }
- parentBlot.children.insertBefore(this, refBlot);
- if (refBlot != null) {
- var refDomNode = refBlot.domNode;
- }
- if (this.next == null || this.domNode.nextSibling != refDomNode) {
- parentBlot.domNode.insertBefore(this.domNode, (typeof refDomNode !== 'undefined') ? refDomNode : null);
- }
- this.parent = parentBlot;
- };
- ShadowBlot.prototype.isolate = function (index, length) {
- var target = this.split(index);
- target.split(length);
- return target;
- };
- ShadowBlot.prototype.length = function () {
- return 1;
- };
- ;
- ShadowBlot.prototype.offset = function (root) {
- if (root === void 0) { root = this.parent; }
- if (this.parent == null || this == root)
- return 0;
- return this.parent.children.offset(this) + this.parent.offset(root);
- };
- ShadowBlot.prototype.optimize = function () {
- // TODO clean up once we use WeakMap
- if (this.domNode[Registry.DATA_KEY] != null) {
- delete this.domNode[Registry.DATA_KEY].mutations;
- }
- };
- ShadowBlot.prototype.remove = function () {
- if (this.domNode.parentNode != null) {
- this.domNode.parentNode.removeChild(this.domNode);
- }
- this.detach();
- };
- ShadowBlot.prototype.replace = function (target) {
- if (target.parent == null)
- return;
- target.parent.insertBefore(this, target.next);
- target.remove();
- };
- ShadowBlot.prototype.replaceWith = function (name, value) {
- var replacement = typeof name === 'string' ? Registry.create(name, value) : name;
- replacement.replace(this);
- return replacement;
- };
- ShadowBlot.prototype.split = function (index, force) {
- return index === 0 ? this : this.next;
- };
- ShadowBlot.prototype.update = function (mutations) {
- if (mutations === void 0) { mutations = []; }
- // Nothing to do by default
- };
- ShadowBlot.prototype.wrap = function (name, value) {
- var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;
- if (this.parent != null) {
- this.parent.insertBefore(wrapper, this.next);
- }
- wrapper.appendChild(this);
- return wrapper;
- };
- return ShadowBlot;
- }());
- ShadowBlot.blotName = 'abstract';
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = ShadowBlot;
-
-
- /***/ },
- /* 6 */
- /***/ function(module, exports) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var ParchmentError = (function (_super) {
- __extends(ParchmentError, _super);
- function ParchmentError(message) {
- var _this = this;
- message = '[Parchment] ' + message;
- _this = _super.call(this, message) || this;
- _this.message = message;
- _this.name = _this.constructor.name;
- return _this;
- }
- return ParchmentError;
- }(Error));
- exports.ParchmentError = ParchmentError;
- var attributes = {};
- var classes = {};
- var tags = {};
- var types = {};
- exports.DATA_KEY = '__blot';
- var Scope;
- (function (Scope) {
- Scope[Scope["TYPE"] = 3] = "TYPE";
- Scope[Scope["LEVEL"] = 12] = "LEVEL";
- Scope[Scope["ATTRIBUTE"] = 13] = "ATTRIBUTE";
- Scope[Scope["BLOT"] = 14] = "BLOT";
- Scope[Scope["INLINE"] = 7] = "INLINE";
- Scope[Scope["BLOCK"] = 11] = "BLOCK";
- Scope[Scope["BLOCK_BLOT"] = 10] = "BLOCK_BLOT";
- Scope[Scope["INLINE_BLOT"] = 6] = "INLINE_BLOT";
- Scope[Scope["BLOCK_ATTRIBUTE"] = 9] = "BLOCK_ATTRIBUTE";
- Scope[Scope["INLINE_ATTRIBUTE"] = 5] = "INLINE_ATTRIBUTE";
- Scope[Scope["ANY"] = 15] = "ANY";
- })(Scope = exports.Scope || (exports.Scope = {}));
- ;
- function create(input, value) {
- var match = query(input);
- if (match == null) {
- throw new ParchmentError("Unable to create " + input + " blot");
- }
- var BlotClass = match;
- var node = input instanceof Node ? input : BlotClass.create(value);
- return new BlotClass(node, value);
- }
- exports.create = create;
- function find(node, bubble) {
- if (bubble === void 0) { bubble = false; }
- if (node == null)
- return null;
- if (node[exports.DATA_KEY] != null)
- return node[exports.DATA_KEY].blot;
- if (bubble)
- return find(node.parentNode, bubble);
- return null;
- }
- exports.find = find;
- function query(query, scope) {
- if (scope === void 0) { scope = Scope.ANY; }
- var match;
- if (typeof query === 'string') {
- match = types[query] || attributes[query];
- }
- else if (query instanceof Text) {
- match = types['text'];
- }
- else if (typeof query === 'number') {
- if (query & Scope.LEVEL & Scope.BLOCK) {
- match = types['block'];
- }
- else if (query & Scope.LEVEL & Scope.INLINE) {
- match = types['inline'];
- }
- }
- else if (query instanceof HTMLElement) {
- var names = (query.getAttribute('class') || '').split(/\s+/);
- for (var i in names) {
- match = classes[names[i]];
- if (match)
- break;
- }
- match = match || tags[query.tagName];
- }
- if (match == null)
- return null;
- if ((scope & Scope.LEVEL & match.scope) && (scope & Scope.TYPE & match.scope))
- return match;
- return null;
- }
- exports.query = query;
- function register() {
- var Definitions = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- Definitions[_i] = arguments[_i];
- }
- if (Definitions.length > 1) {
- return Definitions.map(function (d) {
- return register(d);
- });
- }
- var Definition = Definitions[0];
- if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {
- throw new ParchmentError('Invalid definition');
- }
- else if (Definition.blotName === 'abstract') {
- throw new ParchmentError('Cannot register abstract class');
- }
- types[Definition.blotName || Definition.attrName] = Definition;
- if (typeof Definition.keyName === 'string') {
- attributes[Definition.keyName] = Definition;
- }
- else {
- if (Definition.className != null) {
- classes[Definition.className] = Definition;
- }
- if (Definition.tagName != null) {
- if (Array.isArray(Definition.tagName)) {
- Definition.tagName = Definition.tagName.map(function (tagName) {
- return tagName.toUpperCase();
- });
- }
- else {
- Definition.tagName = Definition.tagName.toUpperCase();
- }
- var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];
- tagNames.forEach(function (tag) {
- if (tags[tag] == null || Definition.className == null) {
- tags[tag] = Definition;
- }
- });
- }
- }
- return Definition;
- }
- exports.register = register;
-
-
- /***/ },
- /* 7 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var attributor_1 = __webpack_require__(8);
- var store_1 = __webpack_require__(9);
- var container_1 = __webpack_require__(3);
- var Registry = __webpack_require__(6);
- var FormatBlot = (function (_super) {
- __extends(FormatBlot, _super);
- function FormatBlot() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- FormatBlot.formats = function (domNode) {
- if (typeof this.tagName === 'string') {
- return true;
- }
- else if (Array.isArray(this.tagName)) {
- return domNode.tagName.toLowerCase();
- }
- return undefined;
- };
- FormatBlot.prototype.attach = function () {
- _super.prototype.attach.call(this);
- this.attributes = new store_1.default(this.domNode);
- };
- FormatBlot.prototype.format = function (name, value) {
- var format = Registry.query(name);
- if (format instanceof attributor_1.default) {
- this.attributes.attribute(format, value);
- }
- else if (value) {
- if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {
- this.replaceWith(name, value);
- }
- }
- };
- FormatBlot.prototype.formats = function () {
- var formats = this.attributes.values();
- var format = this.statics.formats(this.domNode);
- if (format != null) {
- formats[this.statics.blotName] = format;
- }
- return formats;
- };
- FormatBlot.prototype.replaceWith = function (name, value) {
- var replacement = _super.prototype.replaceWith.call(this, name, value);
- this.attributes.copy(replacement);
- return replacement;
- };
- FormatBlot.prototype.update = function (mutations) {
- var _this = this;
- _super.prototype.update.call(this, mutations);
- if (mutations.some(function (mutation) {
- return mutation.target === _this.domNode && mutation.type === 'attributes';
- })) {
- this.attributes.build();
- }
- };
- FormatBlot.prototype.wrap = function (name, value) {
- var wrapper = _super.prototype.wrap.call(this, name, value);
- if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {
- this.attributes.move(wrapper);
- }
- return wrapper;
- };
- return FormatBlot;
- }(container_1.default));
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = FormatBlot;
-
-
- /***/ },
- /* 8 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var Registry = __webpack_require__(6);
- var Attributor = (function () {
- function Attributor(attrName, keyName, options) {
- if (options === void 0) { options = {}; }
- this.attrName = attrName;
- this.keyName = keyName;
- var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;
- if (options.scope != null) {
- // Ignore type bits, force attribute bit
- this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;
- }
- else {
- this.scope = Registry.Scope.ATTRIBUTE;
- }
- if (options.whitelist != null)
- this.whitelist = options.whitelist;
- }
- Attributor.keys = function (node) {
- return [].map.call(node.attributes, function (item) {
- return item.name;
- });
- };
- Attributor.prototype.add = function (node, value) {
- if (!this.canAdd(node, value))
- return false;
- node.setAttribute(this.keyName, value);
- return true;
- };
- Attributor.prototype.canAdd = function (node, value) {
- var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));
- if (match != null && (this.whitelist == null || this.whitelist.indexOf(value) > -1)) {
- return true;
- }
- return false;
- };
- Attributor.prototype.remove = function (node) {
- node.removeAttribute(this.keyName);
- };
- Attributor.prototype.value = function (node) {
- var value = node.getAttribute(this.keyName);
- return this.canAdd(node, value) ? value : '';
- };
- return Attributor;
- }());
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = Attributor;
-
-
- /***/ },
- /* 9 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var attributor_1 = __webpack_require__(8);
- var class_1 = __webpack_require__(10);
- var style_1 = __webpack_require__(11);
- var Registry = __webpack_require__(6);
- var AttributorStore = (function () {
- function AttributorStore(domNode) {
- this.attributes = {};
- this.domNode = domNode;
- this.build();
- }
- AttributorStore.prototype.attribute = function (attribute, value) {
- if (value) {
- if (attribute.add(this.domNode, value)) {
- if (attribute.value(this.domNode) != null) {
- this.attributes[attribute.attrName] = attribute;
- }
- else {
- delete this.attributes[attribute.attrName];
- }
- }
- }
- else {
- attribute.remove(this.domNode);
- delete this.attributes[attribute.attrName];
- }
- };
- AttributorStore.prototype.build = function () {
- var _this = this;
- this.attributes = {};
- var attributes = attributor_1.default.keys(this.domNode);
- var classes = class_1.default.keys(this.domNode);
- var styles = style_1.default.keys(this.domNode);
- attributes.concat(classes).concat(styles).forEach(function (name) {
- var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);
- if (attr instanceof attributor_1.default) {
- _this.attributes[attr.attrName] = attr;
- }
- });
- };
- AttributorStore.prototype.copy = function (target) {
- var _this = this;
- Object.keys(this.attributes).forEach(function (key) {
- var value = _this.attributes[key].value(_this.domNode);
- target.format(key, value);
- });
- };
- AttributorStore.prototype.move = function (target) {
- var _this = this;
- this.copy(target);
- Object.keys(this.attributes).forEach(function (key) {
- _this.attributes[key].remove(_this.domNode);
- });
- this.attributes = {};
- };
- AttributorStore.prototype.values = function () {
- var _this = this;
- return Object.keys(this.attributes).reduce(function (attributes, name) {
- attributes[name] = _this.attributes[name].value(_this.domNode);
- return attributes;
- }, {});
- };
- return AttributorStore;
- }());
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = AttributorStore;
-
-
- /***/ },
- /* 10 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var attributor_1 = __webpack_require__(8);
- function match(node, prefix) {
- var className = node.getAttribute('class') || '';
- return className.split(/\s+/).filter(function (name) {
- return name.indexOf(prefix + "-") === 0;
- });
- }
- var ClassAttributor = (function (_super) {
- __extends(ClassAttributor, _super);
- function ClassAttributor() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- ClassAttributor.keys = function (node) {
- return (node.getAttribute('class') || '').split(/\s+/).map(function (name) {
- return name.split('-').slice(0, -1).join('-');
- });
- };
- ClassAttributor.prototype.add = function (node, value) {
- if (!this.canAdd(node, value))
- return false;
- this.remove(node);
- node.classList.add(this.keyName + "-" + value);
- return true;
- };
- ClassAttributor.prototype.remove = function (node) {
- var matches = match(node, this.keyName);
- matches.forEach(function (name) {
- node.classList.remove(name);
- });
- if (node.classList.length === 0) {
- node.removeAttribute('class');
- }
- };
- ClassAttributor.prototype.value = function (node) {
- var result = match(node, this.keyName)[0] || '';
- var value = result.slice(this.keyName.length + 1); // +1 for hyphen
- return this.canAdd(node, value) ? value : '';
- };
- return ClassAttributor;
- }(attributor_1.default));
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = ClassAttributor;
-
-
- /***/ },
- /* 11 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var attributor_1 = __webpack_require__(8);
- function camelize(name) {
- var parts = name.split('-');
- var rest = parts.slice(1).map(function (part) {
- return part[0].toUpperCase() + part.slice(1);
- }).join('');
- return parts[0] + rest;
- }
- var StyleAttributor = (function (_super) {
- __extends(StyleAttributor, _super);
- function StyleAttributor() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- StyleAttributor.keys = function (node) {
- return (node.getAttribute('style') || '').split(';').map(function (value) {
- var arr = value.split(':');
- return arr[0].trim();
- });
- };
- StyleAttributor.prototype.add = function (node, value) {
- if (!this.canAdd(node, value))
- return false;
- node.style[camelize(this.keyName)] = value;
- return true;
- };
- StyleAttributor.prototype.remove = function (node) {
- node.style[camelize(this.keyName)] = '';
- if (!node.getAttribute('style')) {
- node.removeAttribute('style');
- }
- };
- StyleAttributor.prototype.value = function (node) {
- var value = node.style[camelize(this.keyName)];
- return this.canAdd(node, value) ? value : '';
- };
- return StyleAttributor;
- }(attributor_1.default));
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = StyleAttributor;
-
-
- /***/ },
- /* 12 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var shadow_1 = __webpack_require__(5);
- var Registry = __webpack_require__(6);
- var LeafBlot = (function (_super) {
- __extends(LeafBlot, _super);
- function LeafBlot() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- LeafBlot.value = function (domNode) {
- return true;
- };
- LeafBlot.prototype.index = function (node, offset) {
- if (node !== this.domNode)
- return -1;
- return Math.min(offset, 1);
- };
- LeafBlot.prototype.position = function (index, inclusive) {
- var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);
- if (index > 0)
- offset += 1;
- return [this.parent.domNode, offset];
- };
- LeafBlot.prototype.value = function () {
- return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;
- var _a;
- };
- return LeafBlot;
- }(shadow_1.default));
- LeafBlot.scope = Registry.Scope.INLINE_BLOT;
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = LeafBlot;
-
-
- /***/ },
- /* 13 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var container_1 = __webpack_require__(3);
- var Registry = __webpack_require__(6);
- var OBSERVER_CONFIG = {
- attributes: true,
- characterData: true,
- characterDataOldValue: true,
- childList: true,
- subtree: true
- };
- var MAX_OPTIMIZE_ITERATIONS = 100;
- var ScrollBlot = (function (_super) {
- __extends(ScrollBlot, _super);
- function ScrollBlot(node) {
- var _this = _super.call(this, node) || this;
- _this.parent = null;
- _this.observer = new MutationObserver(function (mutations) {
- _this.update(mutations);
- });
- _this.observer.observe(_this.domNode, OBSERVER_CONFIG);
- return _this;
- }
- ScrollBlot.prototype.detach = function () {
- _super.prototype.detach.call(this);
- this.observer.disconnect();
- };
- ScrollBlot.prototype.deleteAt = function (index, length) {
- this.update();
- if (index === 0 && length === this.length()) {
- this.children.forEach(function (child) {
- child.remove();
- });
- }
- else {
- _super.prototype.deleteAt.call(this, index, length);
- }
- };
- ScrollBlot.prototype.formatAt = function (index, length, name, value) {
- this.update();
- _super.prototype.formatAt.call(this, index, length, name, value);
- };
- ScrollBlot.prototype.insertAt = function (index, value, def) {
- this.update();
- _super.prototype.insertAt.call(this, index, value, def);
- };
- ScrollBlot.prototype.optimize = function (mutations) {
- var _this = this;
- if (mutations === void 0) { mutations = []; }
- _super.prototype.optimize.call(this);
- // We must modify mutations directly, cannot make copy and then modify
- var records = [].slice.call(this.observer.takeRecords());
- // Array.push currently seems to be implemented by a non-tail recursive function
- // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());
- while (records.length > 0)
- mutations.push(records.pop());
- // TODO use WeakMap
- var mark = function (blot, markParent) {
- if (markParent === void 0) { markParent = true; }
- if (blot == null || blot === _this)
- return;
- if (blot.domNode.parentNode == null)
- return;
- if (blot.domNode[Registry.DATA_KEY].mutations == null) {
- blot.domNode[Registry.DATA_KEY].mutations = [];
- }
- if (markParent)
- mark(blot.parent);
- };
- var optimize = function (blot) {
- if (blot.domNode[Registry.DATA_KEY] == null || blot.domNode[Registry.DATA_KEY].mutations == null) {
- return;
- }
- if (blot instanceof container_1.default) {
- blot.children.forEach(optimize);
- }
- blot.optimize();
- };
- var remaining = mutations;
- for (var i = 0; remaining.length > 0; i += 1) {
- if (i >= MAX_OPTIMIZE_ITERATIONS) {
- throw new Error('[Parchment] Maximum optimize iterations reached');
- }
- remaining.forEach(function (mutation) {
- var blot = Registry.find(mutation.target, true);
- if (blot == null)
- return;
- if (blot.domNode === mutation.target) {
- if (mutation.type === 'childList') {
- mark(Registry.find(mutation.previousSibling, false));
- [].forEach.call(mutation.addedNodes, function (node) {
- var child = Registry.find(node, false);
- mark(child, false);
- if (child instanceof container_1.default) {
- child.children.forEach(function (grandChild) {
- mark(grandChild, false);
- });
- }
- });
- }
- else if (mutation.type === 'attributes') {
- mark(blot.prev);
- }
- }
- mark(blot);
- });
- this.children.forEach(optimize);
- remaining = [].slice.call(this.observer.takeRecords());
- records = remaining.slice();
- while (records.length > 0)
- mutations.push(records.pop());
- }
- };
- ScrollBlot.prototype.update = function (mutations) {
- var _this = this;
- mutations = mutations || this.observer.takeRecords();
- // TODO use WeakMap
- mutations.map(function (mutation) {
- var blot = Registry.find(mutation.target, true);
- if (blot == null)
- return;
- if (blot.domNode[Registry.DATA_KEY].mutations == null) {
- blot.domNode[Registry.DATA_KEY].mutations = [mutation];
- return blot;
- }
- else {
- blot.domNode[Registry.DATA_KEY].mutations.push(mutation);
- return null;
- }
- }).forEach(function (blot) {
- if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null)
- return;
- blot.update(blot.domNode[Registry.DATA_KEY].mutations || []);
- });
- if (this.domNode[Registry.DATA_KEY].mutations != null) {
- _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations);
- }
- this.optimize(mutations);
- };
- return ScrollBlot;
- }(container_1.default));
- ScrollBlot.blotName = 'scroll';
- ScrollBlot.defaultChild = 'block';
- ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;
- ScrollBlot.tagName = 'DIV';
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = ScrollBlot;
-
-
- /***/ },
- /* 14 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var format_1 = __webpack_require__(7);
- var Registry = __webpack_require__(6);
- // Shallow object comparison
- function isEqual(obj1, obj2) {
- if (Object.keys(obj1).length !== Object.keys(obj2).length)
- return false;
- for (var prop in obj1) {
- if (obj1[prop] !== obj2[prop])
- return false;
- }
- return true;
- }
- var InlineBlot = (function (_super) {
- __extends(InlineBlot, _super);
- function InlineBlot() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- InlineBlot.formats = function (domNode) {
- if (domNode.tagName === InlineBlot.tagName)
- return undefined;
- return _super.formats.call(this, domNode);
- };
- InlineBlot.prototype.format = function (name, value) {
- var _this = this;
- if (name === this.statics.blotName && !value) {
- this.children.forEach(function (child) {
- if (!(child instanceof format_1.default)) {
- child = child.wrap(InlineBlot.blotName, true);
- }
- _this.attributes.copy(child);
- });
- this.unwrap();
- }
- else {
- _super.prototype.format.call(this, name, value);
- }
- };
- InlineBlot.prototype.formatAt = function (index, length, name, value) {
- if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {
- var blot = this.isolate(index, length);
- blot.format(name, value);
- }
- else {
- _super.prototype.formatAt.call(this, index, length, name, value);
- }
- };
- InlineBlot.prototype.optimize = function () {
- _super.prototype.optimize.call(this);
- var formats = this.formats();
- if (Object.keys(formats).length === 0) {
- return this.unwrap(); // unformatted span
- }
- var next = this.next;
- if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {
- next.moveChildren(this);
- next.remove();
- }
- };
- return InlineBlot;
- }(format_1.default));
- InlineBlot.blotName = 'inline';
- InlineBlot.scope = Registry.Scope.INLINE_BLOT;
- InlineBlot.tagName = 'SPAN';
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = InlineBlot;
-
-
- /***/ },
- /* 15 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var format_1 = __webpack_require__(7);
- var Registry = __webpack_require__(6);
- var BlockBlot = (function (_super) {
- __extends(BlockBlot, _super);
- function BlockBlot() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- BlockBlot.formats = function (domNode) {
- var tagName = Registry.query(BlockBlot.blotName).tagName;
- if (domNode.tagName === tagName)
- return undefined;
- return _super.formats.call(this, domNode);
- };
- BlockBlot.prototype.format = function (name, value) {
- if (Registry.query(name, Registry.Scope.BLOCK) == null) {
- return;
- }
- else if (name === this.statics.blotName && !value) {
- this.replaceWith(BlockBlot.blotName);
- }
- else {
- _super.prototype.format.call(this, name, value);
- }
- };
- BlockBlot.prototype.formatAt = function (index, length, name, value) {
- if (Registry.query(name, Registry.Scope.BLOCK) != null) {
- this.format(name, value);
- }
- else {
- _super.prototype.formatAt.call(this, index, length, name, value);
- }
- };
- BlockBlot.prototype.insertAt = function (index, value, def) {
- if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {
- // Insert text or inline
- _super.prototype.insertAt.call(this, index, value, def);
- }
- else {
- var after = this.split(index);
- var blot = Registry.create(value, def);
- after.parent.insertBefore(blot, after);
- }
- };
- BlockBlot.prototype.update = function (mutations) {
- if (navigator.userAgent.match(/Trident/)) {
- this.attach();
- }
- else {
- _super.prototype.update.call(this, mutations);
- }
- };
- return BlockBlot;
- }(format_1.default));
- BlockBlot.blotName = 'block';
- BlockBlot.scope = Registry.Scope.BLOCK_BLOT;
- BlockBlot.tagName = 'P';
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = BlockBlot;
-
-
- /***/ },
- /* 16 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var leaf_1 = __webpack_require__(12);
- var EmbedBlot = (function (_super) {
- __extends(EmbedBlot, _super);
- function EmbedBlot() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- EmbedBlot.formats = function (domNode) {
- return undefined;
- };
- EmbedBlot.prototype.format = function (name, value) {
- // super.formatAt wraps, which is what we want in general,
- // but this allows subclasses to overwrite for formats
- // that just apply to particular embeds
- _super.prototype.formatAt.call(this, 0, this.length(), name, value);
- };
- EmbedBlot.prototype.formatAt = function (index, length, name, value) {
- if (index === 0 && length === this.length()) {
- this.format(name, value);
- }
- else {
- _super.prototype.formatAt.call(this, index, length, name, value);
- }
- };
- EmbedBlot.prototype.formats = function () {
- return this.statics.formats(this.domNode);
- };
- return EmbedBlot;
- }(leaf_1.default));
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = EmbedBlot;
-
-
- /***/ },
- /* 17 */
- /***/ function(module, exports, __webpack_require__) {
-
- "use strict";
- var __extends = (this && this.__extends) || function (d, b) {
- for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- var leaf_1 = __webpack_require__(12);
- var Registry = __webpack_require__(6);
- var TextBlot = (function (_super) {
- __extends(TextBlot, _super);
- function TextBlot(node) {
- var _this = _super.call(this, node) || this;
- _this.text = _this.statics.value(_this.domNode);
- return _this;
- }
- TextBlot.create = function (value) {
- return document.createTextNode(value);
- };
- TextBlot.value = function (domNode) {
- return domNode.data;
- };
- TextBlot.prototype.deleteAt = function (index, length) {
- this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);
- };
- TextBlot.prototype.index = function (node, offset) {
- if (this.domNode === node) {
- return offset;
- }
- return -1;
- };
- TextBlot.prototype.insertAt = function (index, value, def) {
- if (def == null) {
- this.text = this.text.slice(0, index) + value + this.text.slice(index);
- this.domNode.data = this.text;
- }
- else {
- _super.prototype.insertAt.call(this, index, value, def);
- }
- };
- TextBlot.prototype.length = function () {
- return this.text.length;
- };
- TextBlot.prototype.optimize = function () {
- _super.prototype.optimize.call(this);
- this.text = this.statics.value(this.domNode);
- if (this.text.length === 0) {
- this.remove();
- }
- else if (this.next instanceof TextBlot && this.next.prev === this) {
- this.insertAt(this.length(), this.next.value());
- this.next.remove();
- }
- };
- TextBlot.prototype.position = function (index, inclusive) {
- if (inclusive === void 0) { inclusive = false; }
- return [this.domNode, index];
- };
- TextBlot.prototype.split = function (index, force) {
- if (force === void 0) { force = false; }
- if (!force) {
- if (index === 0)
- return this;
- if (index === this.length())
- return this.next;
- }
- var after = Registry.create(this.domNode.splitText(index));
- this.parent.insertBefore(after, this.next);
- this.text = this.statics.value(this.domNode);
- return after;
- };
- TextBlot.prototype.update = function (mutations) {
- var _this = this;
- if (mutations.some(function (mutation) {
- return mutation.type === 'characterData' && mutation.target === _this.domNode;
- })) {
- this.text = this.statics.value(this.domNode);
- }
- };
- TextBlot.prototype.value = function () {
- return this.text;
- };
- return TextBlot;
- }(leaf_1.default));
- TextBlot.blotName = 'text';
- TextBlot.scope = Registry.Scope.INLINE_BLOT;
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.default = TextBlot;
-
-
- /***/ },
- /* 18 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.overload = exports.expandConfig = undefined;
-
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- __webpack_require__(19);
-
- var _quillDelta = __webpack_require__(20);
-
- var _quillDelta2 = _interopRequireDefault(_quillDelta);
-
- var _editor = __webpack_require__(27);
-
- var _editor2 = _interopRequireDefault(_editor);
-
- var _emitter3 = __webpack_require__(35);
-
- var _emitter4 = _interopRequireDefault(_emitter3);
-
- var _module = __webpack_require__(39);
-
- var _module2 = _interopRequireDefault(_module);
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _selection = __webpack_require__(40);
-
- var _selection2 = _interopRequireDefault(_selection);
-
- var _extend = __webpack_require__(25);
-
- var _extend2 = _interopRequireDefault(_extend);
-
- var _logger = __webpack_require__(37);
-
- var _logger2 = _interopRequireDefault(_logger);
-
- var _theme = __webpack_require__(41);
-
- var _theme2 = _interopRequireDefault(_theme);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- 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; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var debug = (0, _logger2.default)('quill');
-
- var Quill = function () {
- _createClass(Quill, null, [{
- key: 'debug',
- value: function debug(limit) {
- if (limit === true) {
- limit = 'log';
- }
- _logger2.default.level(limit);
- }
- }, {
- key: 'find',
- value: function find(node) {
- return node.__quill || _parchment2.default.find(node);
- }
- }, {
- key: 'import',
- value: function _import(name) {
- if (this.imports[name] == null) {
- debug.error('Cannot import ' + name + '. Are you sure it was registered?');
- }
- return this.imports[name];
- }
- }, {
- key: 'register',
- value: function register(path, target) {
- var _this = this;
-
- var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
-
- if (typeof path !== 'string') {
- var name = path.attrName || path.blotName;
- if (typeof name === 'string') {
- // register(Blot | Attributor, overwrite)
- this.register('formats/' + name, path, target);
- } else {
- Object.keys(path).forEach(function (key) {
- _this.register(key, path[key], target);
- });
- }
- } else {
- if (this.imports[path] != null && !overwrite) {
- debug.warn('Overwriting ' + path + ' with', target);
- }
- this.imports[path] = target;
- if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {
- _parchment2.default.register(target);
- }
- }
- }
- }]);
-
- function Quill(container) {
- var _this2 = this;
-
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- _classCallCheck(this, Quill);
-
- this.options = expandConfig(container, options);
- this.container = this.options.container;
- this.scrollingContainer = this.options.scrollingContainer || document.body;
- if (this.container == null) {
- return debug.error('Invalid Quill container', container);
- }
- if (this.options.debug) {
- Quill.debug(this.options.debug);
- }
- var html = this.container.innerHTML.trim();
- this.container.classList.add('ql-container');
- this.container.innerHTML = '';
- this.container.__quill = this;
- this.root = this.addContainer('ql-editor');
- this.root.classList.add('ql-blank');
- this.emitter = new _emitter4.default();
- this.scroll = _parchment2.default.create(this.root, {
- emitter: this.emitter,
- whitelist: this.options.formats
- });
- this.editor = new _editor2.default(this.scroll);
- this.selection = new _selection2.default(this.scroll, this.emitter);
- this.theme = new this.options.theme(this, this.options);
- this.keyboard = this.theme.addModule('keyboard');
- this.clipboard = this.theme.addModule('clipboard');
- this.history = this.theme.addModule('history');
- this.theme.init();
- this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {
- if (type === _emitter4.default.events.TEXT_CHANGE) {
- _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());
- }
- });
- this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {
- var range = _this2.selection.lastRange;
- var index = range && range.length === 0 ? range.index : undefined;
- modify.call(_this2, function () {
- return _this2.editor.update(null, mutations, index);
- }, source);
- });
- var contents = this.clipboard.convert('
');
- this.setContents(contents);
- this.history.clear();
- if (this.options.placeholder) {
- this.root.setAttribute('data-placeholder', this.options.placeholder);
- }
- if (this.options.readOnly) {
- this.disable();
- }
- }
-
- _createClass(Quill, [{
- key: 'addContainer',
- value: function addContainer(container) {
- var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
-
- if (typeof container === 'string') {
- var className = container;
- container = document.createElement('div');
- container.classList.add(className);
- }
- this.container.insertBefore(container, refNode);
- return container;
- }
- }, {
- key: 'blur',
- value: function blur() {
- this.selection.setRange(null);
- }
- }, {
- key: 'deleteText',
- value: function deleteText(index, length, source) {
- var _this3 = this;
-
- var _overload = overload(index, length, source);
-
- var _overload2 = _slicedToArray(_overload, 4);
-
- index = _overload2[0];
- length = _overload2[1];
- source = _overload2[3];
-
- return modify.call(this, function () {
- return _this3.editor.deleteText(index, length);
- }, source, index, -1 * length);
- }
- }, {
- key: 'disable',
- value: function disable() {
- this.enable(false);
- }
- }, {
- key: 'enable',
- value: function enable() {
- var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
-
- this.scroll.enable(enabled);
- this.container.classList.toggle('ql-disabled', !enabled);
- if (!enabled) {
- this.blur();
- }
- }
- }, {
- key: 'focus',
- value: function focus() {
- var scrollTop = this.scrollingContainer.scrollTop;
- this.selection.focus();
- this.scrollingContainer.scrollTop = scrollTop;
- this.selection.scrollIntoView();
- }
- }, {
- key: 'format',
- value: function format(name, value) {
- var _this4 = this;
-
- var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;
-
- return modify.call(this, function () {
- var range = _this4.getSelection(true);
- var change = new _quillDelta2.default();
- if (range == null) {
- return change;
- } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {
- change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));
- } else if (range.length === 0) {
- _this4.selection.format(name, value);
- return change;
- } else {
- change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));
- }
- _this4.setSelection(range, _emitter4.default.sources.SILENT);
- return change;
- }, source);
- }
- }, {
- key: 'formatLine',
- value: function formatLine(index, length, name, value, source) {
- var _this5 = this;
-
- var formats = void 0;
-
- var _overload3 = overload(index, length, name, value, source);
-
- var _overload4 = _slicedToArray(_overload3, 4);
-
- index = _overload4[0];
- length = _overload4[1];
- formats = _overload4[2];
- source = _overload4[3];
-
- return modify.call(this, function () {
- return _this5.editor.formatLine(index, length, formats);
- }, source, index, 0);
- }
- }, {
- key: 'formatText',
- value: function formatText(index, length, name, value, source) {
- var _this6 = this;
-
- var formats = void 0;
-
- var _overload5 = overload(index, length, name, value, source);
-
- var _overload6 = _slicedToArray(_overload5, 4);
-
- index = _overload6[0];
- length = _overload6[1];
- formats = _overload6[2];
- source = _overload6[3];
-
- return modify.call(this, function () {
- return _this6.editor.formatText(index, length, formats);
- }, source, index, 0);
- }
- }, {
- key: 'getBounds',
- value: function getBounds(index) {
- var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
- if (typeof index === 'number') {
- return this.selection.getBounds(index, length);
- } else {
- return this.selection.getBounds(index.index, index.length);
- }
- }
- }, {
- key: 'getContents',
- value: function getContents() {
- var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
- var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;
-
- var _overload7 = overload(index, length);
-
- var _overload8 = _slicedToArray(_overload7, 2);
-
- index = _overload8[0];
- length = _overload8[1];
-
- return this.editor.getContents(index, length);
- }
- }, {
- key: 'getFormat',
- value: function getFormat() {
- var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection();
- var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
- if (typeof index === 'number') {
- return this.editor.getFormat(index, length);
- } else {
- return this.editor.getFormat(index.index, index.length);
- }
- }
- }, {
- key: 'getIndex',
- value: function getIndex(blot) {
- return blot.offset(this.scroll);
- }
- }, {
- key: 'getLength',
- value: function getLength() {
- return this.scroll.length();
- }
- }, {
- key: 'getLeaf',
- value: function getLeaf(index) {
- return this.scroll.leaf(index);
- }
- }, {
- key: 'getLine',
- value: function getLine(index) {
- return this.scroll.line(index);
- }
- }, {
- key: 'getLines',
- value: function getLines() {
- var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
- var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;
-
- if (typeof index !== 'number') {
- return this.scroll.lines(index.index, index.length);
- } else {
- return this.scroll.lines(index, length);
- }
- }
- }, {
- key: 'getModule',
- value: function getModule(name) {
- return this.theme.modules[name];
- }
- }, {
- key: 'getSelection',
- value: function getSelection() {
- var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
-
- if (focus) this.focus();
- this.update(); // Make sure we access getRange with editor in consistent state
- return this.selection.getRange()[0];
- }
- }, {
- key: 'getText',
- value: function getText() {
- var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
- var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;
-
- var _overload9 = overload(index, length);
-
- var _overload10 = _slicedToArray(_overload9, 2);
-
- index = _overload10[0];
- length = _overload10[1];
-
- return this.editor.getText(index, length);
- }
- }, {
- key: 'hasFocus',
- value: function hasFocus() {
- return this.selection.hasFocus();
- }
- }, {
- key: 'insertEmbed',
- value: function insertEmbed(index, embed, value) {
- var _this7 = this;
-
- var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;
-
- return modify.call(this, function () {
- return _this7.editor.insertEmbed(index, embed, value);
- }, source, index);
- }
- }, {
- key: 'insertText',
- value: function insertText(index, text, name, value, source) {
- var _this8 = this;
-
- var formats = void 0;
-
- var _overload11 = overload(index, 0, name, value, source);
-
- var _overload12 = _slicedToArray(_overload11, 4);
-
- index = _overload12[0];
- formats = _overload12[2];
- source = _overload12[3];
-
- return modify.call(this, function () {
- return _this8.editor.insertText(index, text, formats);
- }, source, index, text.length);
- }
- }, {
- key: 'isEnabled',
- value: function isEnabled() {
- return !this.container.classList.contains('ql-disabled');
- }
- }, {
- key: 'off',
- value: function off() {
- return this.emitter.off.apply(this.emitter, arguments);
- }
- }, {
- key: 'on',
- value: function on() {
- return this.emitter.on.apply(this.emitter, arguments);
- }
- }, {
- key: 'once',
- value: function once() {
- return this.emitter.once.apply(this.emitter, arguments);
- }
- }, {
- key: 'pasteHTML',
- value: function pasteHTML(index, html, source) {
- this.clipboard.dangerouslyPasteHTML(index, html, source);
- }
- }, {
- key: 'removeFormat',
- value: function removeFormat(index, length, source) {
- var _this9 = this;
-
- var _overload13 = overload(index, length, source);
-
- var _overload14 = _slicedToArray(_overload13, 4);
-
- index = _overload14[0];
- length = _overload14[1];
- source = _overload14[3];
-
- return modify.call(this, function () {
- return _this9.editor.removeFormat(index, length);
- }, source, index);
- }
- }, {
- key: 'setContents',
- value: function setContents(delta) {
- var _this10 = this;
-
- var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;
-
- return modify.call(this, function () {
- delta = new _quillDelta2.default(delta);
- var length = _this10.getLength();
- var deleted = _this10.editor.deleteText(0, length);
- var applied = _this10.editor.applyDelta(delta);
- var lastOp = applied.ops[applied.ops.length - 1];
- if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\n') {
- _this10.editor.deleteText(_this10.getLength() - 1, 1);
- applied.delete(1);
- }
- var ret = deleted.compose(applied);
- return ret;
- }, source);
- }
- }, {
- key: 'setSelection',
- value: function setSelection(index, length, source) {
- if (index == null) {
- this.selection.setRange(null, length || Quill.sources.API);
- } else {
- var _overload15 = overload(index, length, source);
-
- var _overload16 = _slicedToArray(_overload15, 4);
-
- index = _overload16[0];
- length = _overload16[1];
- source = _overload16[3];
-
- this.selection.setRange(new _selection.Range(index, length), source);
- }
- if (source !== _emitter4.default.sources.SILENT) {
- this.selection.scrollIntoView();
- }
- }
- }, {
- key: 'setText',
- value: function setText(text) {
- var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;
-
- var delta = new _quillDelta2.default().insert(text);
- return this.setContents(delta, source);
- }
- }, {
- key: 'update',
- value: function update() {
- var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;
-
- var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes
- this.selection.update(source);
- return change;
- }
- }, {
- key: 'updateContents',
- value: function updateContents(delta) {
- var _this11 = this;
-
- var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;
-
- return modify.call(this, function () {
- delta = new _quillDelta2.default(delta);
- return _this11.editor.applyDelta(delta, source);
- }, source, true);
- }
- }]);
-
- return Quill;
- }();
-
- Quill.DEFAULTS = {
- bounds: null,
- formats: null,
- modules: {},
- placeholder: '',
- readOnly: false,
- scrollingContainer: null,
- strict: true,
- theme: 'default'
- };
- Quill.events = _emitter4.default.events;
- Quill.sources = _emitter4.default.sources;
- // eslint-disable-next-line no-undef
- Quill.version = false ? 'dev' : ("1.2.0");
-
- Quill.imports = {
- 'delta': _quillDelta2.default,
- 'parchment': _parchment2.default,
- 'core/module': _module2.default,
- 'core/theme': _theme2.default
- };
-
- function expandConfig(container, userConfig) {
- userConfig = (0, _extend2.default)(true, {
- container: container,
- modules: {
- clipboard: true,
- keyboard: true,
- history: true
- }
- }, userConfig);
- if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {
- userConfig.theme = _theme2.default;
- } else {
- userConfig.theme = Quill.import('themes/' + userConfig.theme);
- if (userConfig.theme == null) {
- throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');
- }
- }
- var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);
- [themeConfig, userConfig].forEach(function (config) {
- config.modules = config.modules || {};
- Object.keys(config.modules).forEach(function (module) {
- if (config.modules[module] === true) {
- config.modules[module] = {};
- }
- });
- });
- var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));
- var moduleConfig = moduleNames.reduce(function (config, name) {
- var moduleClass = Quill.import('modules/' + name);
- if (moduleClass == null) {
- debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');
- } else {
- config[name] = moduleClass.DEFAULTS || {};
- }
- return config;
- }, {});
- // Special case toolbar shorthand
- if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {
- userConfig.modules.toolbar = {
- container: userConfig.modules.toolbar
- };
- }
- userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);
- ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {
- if (typeof userConfig[key] === 'string') {
- userConfig[key] = document.querySelector(userConfig[key]);
- }
- });
- userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {
- if (userConfig.modules[name]) {
- config[name] = userConfig.modules[name];
- }
- return config;
- }, {});
- return userConfig;
- }
-
- // Handle selection preservation and TEXT_CHANGE emission
- // common to modification APIs
- function modify(modifier, source, index, shift) {
- if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {
- return new _quillDelta2.default();
- }
- var range = index == null ? null : this.getSelection();
- var oldDelta = this.editor.delta;
- var change = modifier();
- if (range != null) {
- if (index === true) index = range.index;
- if (shift == null) {
- range = shiftRange(range, change, source);
- } else if (shift !== 0) {
- range = shiftRange(range, index, shift, source);
- }
- this.setSelection(range, _emitter4.default.sources.SILENT);
- }
- if (change.length() > 0) {
- var _emitter;
-
- var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];
- (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));
- if (source !== _emitter4.default.sources.SILENT) {
- var _emitter2;
-
- (_emitter2 = this.emitter).emit.apply(_emitter2, args);
- }
- }
- return change;
- }
-
- function overload(index, length, name, value, source) {
- var formats = {};
- if (typeof index.index === 'number' && typeof index.length === 'number') {
- // Allow for throwaway end (used by insertText/insertEmbed)
- if (typeof length !== 'number') {
- source = value, value = name, name = length, length = index.length, index = index.index;
- } else {
- length = index.length, index = index.index;
- }
- } else if (typeof length !== 'number') {
- source = value, value = name, name = length, length = 0;
- }
- // Handle format being object, two format name/value strings or excluded
- if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {
- formats = name;
- source = value;
- } else if (typeof name === 'string') {
- if (value != null) {
- formats[name] = value;
- } else {
- source = name;
- }
- }
- // Handle optional source
- source = source || _emitter4.default.sources.API;
- return [index, length, formats, source];
- }
-
- function shiftRange(range, index, length, source) {
- if (range == null) return null;
- var start = void 0,
- end = void 0;
- if (index instanceof _quillDelta2.default) {
- var _map = [range.index, range.index + range.length].map(function (pos) {
- return index.transformPosition(pos, source === _emitter4.default.sources.USER);
- });
-
- var _map2 = _slicedToArray(_map, 2);
-
- start = _map2[0];
- end = _map2[1];
- } else {
- var _map3 = [range.index, range.index + range.length].map(function (pos) {
- if (pos < index || pos === index && source !== _emitter4.default.sources.USER) return pos;
- if (length >= 0) {
- return pos + length;
- } else {
- return Math.max(index, pos + length);
- }
- });
-
- var _map4 = _slicedToArray(_map3, 2);
-
- start = _map4[0];
- end = _map4[1];
- }
- return new _selection.Range(start, end - start);
- }
-
- exports.expandConfig = expandConfig;
- exports.overload = overload;
- exports.default = Quill;
-
- /***/ },
- /* 19 */
- /***/ function(module, exports) {
-
- 'use strict';
-
- var elem = document.createElement('div');
- elem.classList.toggle('test-class', false);
- if (elem.classList.contains('test-class')) {
- (function () {
- var _toggle = DOMTokenList.prototype.toggle;
- DOMTokenList.prototype.toggle = function (token, force) {
- if (arguments.length > 1 && !this.contains(token) === !force) {
- return force;
- } else {
- return _toggle.call(this, token);
- }
- };
- })();
- }
-
- if (!String.prototype.startsWith) {
- String.prototype.startsWith = function (searchString, position) {
- position = position || 0;
- return this.substr(position, searchString.length) === searchString;
- };
- }
-
- if (!String.prototype.endsWith) {
- String.prototype.endsWith = function (searchString, position) {
- var subjectString = this.toString();
- if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {
- position = subjectString.length;
- }
- position -= searchString.length;
- var lastIndex = subjectString.indexOf(searchString, position);
- return lastIndex !== -1 && lastIndex === position;
- };
- }
-
- if (!Array.prototype.find) {
- Object.defineProperty(Array.prototype, "find", {
- value: function value(predicate) {
- if (this === null) {
- throw new TypeError('Array.prototype.find called on null or undefined');
- }
- if (typeof predicate !== 'function') {
- throw new TypeError('predicate must be a function');
- }
- var list = Object(this);
- var length = list.length >>> 0;
- var thisArg = arguments[1];
- var value;
-
- for (var i = 0; i < length; i++) {
- value = list[i];
- if (predicate.call(thisArg, value, i, list)) {
- return value;
- }
- }
- return undefined;
- }
- });
- }
-
- // Disable resizing in Firefox
- document.addEventListener("DOMContentLoaded", function () {
- document.execCommand("enableObjectResizing", false, false);
- });
-
- /***/ },
- /* 20 */
- /***/ function(module, exports, __webpack_require__) {
-
- var diff = __webpack_require__(21);
- var equal = __webpack_require__(22);
- var extend = __webpack_require__(25);
- var op = __webpack_require__(26);
-
-
- var NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()
-
-
- var Delta = function (ops) {
- // Assume we are given a well formed ops
- if (Array.isArray(ops)) {
- this.ops = ops;
- } else if (ops != null && Array.isArray(ops.ops)) {
- this.ops = ops.ops;
- } else {
- this.ops = [];
- }
- };
-
-
- Delta.prototype.insert = function (text, attributes) {
- var newOp = {};
- if (text.length === 0) return this;
- newOp.insert = text;
- if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {
- newOp.attributes = attributes;
- }
- return this.push(newOp);
- };
-
- Delta.prototype['delete'] = function (length) {
- if (length <= 0) return this;
- return this.push({ 'delete': length });
- };
-
- Delta.prototype.retain = function (length, attributes) {
- if (length <= 0) return this;
- var newOp = { retain: length };
- if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {
- newOp.attributes = attributes;
- }
- return this.push(newOp);
- };
-
- Delta.prototype.push = function (newOp) {
- var index = this.ops.length;
- var lastOp = this.ops[index - 1];
- newOp = extend(true, {}, newOp);
- if (typeof lastOp === 'object') {
- if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {
- this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };
- return this;
- }
- // Since it does not matter if we insert before or after deleting at the same index,
- // always prefer to insert first
- if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {
- index -= 1;
- lastOp = this.ops[index - 1];
- if (typeof lastOp !== 'object') {
- this.ops.unshift(newOp);
- return this;
- }
- }
- if (equal(newOp.attributes, lastOp.attributes)) {
- if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {
- this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };
- if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes
- return this;
- } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {
- this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };
- if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes
- return this;
- }
- }
- }
- if (index === this.ops.length) {
- this.ops.push(newOp);
- } else {
- this.ops.splice(index, 0, newOp);
- }
- return this;
- };
-
- Delta.prototype.filter = function (predicate) {
- return this.ops.filter(predicate);
- };
-
- Delta.prototype.forEach = function (predicate) {
- this.ops.forEach(predicate);
- };
-
- Delta.prototype.map = function (predicate) {
- return this.ops.map(predicate);
- };
-
- Delta.prototype.partition = function (predicate) {
- var passed = [], failed = [];
- this.forEach(function(op) {
- var target = predicate(op) ? passed : failed;
- target.push(op);
- });
- return [passed, failed];
- };
-
- Delta.prototype.reduce = function (predicate, initial) {
- return this.ops.reduce(predicate, initial);
- };
-
- Delta.prototype.chop = function () {
- var lastOp = this.ops[this.ops.length - 1];
- if (lastOp && lastOp.retain && !lastOp.attributes) {
- this.ops.pop();
- }
- return this;
- };
-
- Delta.prototype.length = function () {
- return this.reduce(function (length, elem) {
- return length + op.length(elem);
- }, 0);
- };
-
- Delta.prototype.slice = function (start, end) {
- start = start || 0;
- if (typeof end !== 'number') end = Infinity;
- var ops = [];
- var iter = op.iterator(this.ops);
- var index = 0;
- while (index < end && iter.hasNext()) {
- var nextOp;
- if (index < start) {
- nextOp = iter.next(start - index);
- } else {
- nextOp = iter.next(end - index);
- ops.push(nextOp);
- }
- index += op.length(nextOp);
- }
- return new Delta(ops);
- };
-
-
- Delta.prototype.compose = function (other) {
- var thisIter = op.iterator(this.ops);
- var otherIter = op.iterator(other.ops);
- var delta = new Delta();
- while (thisIter.hasNext() || otherIter.hasNext()) {
- if (otherIter.peekType() === 'insert') {
- delta.push(otherIter.next());
- } else if (thisIter.peekType() === 'delete') {
- delta.push(thisIter.next());
- } else {
- var length = Math.min(thisIter.peekLength(), otherIter.peekLength());
- var thisOp = thisIter.next(length);
- var otherOp = otherIter.next(length);
- if (typeof otherOp.retain === 'number') {
- var newOp = {};
- if (typeof thisOp.retain === 'number') {
- newOp.retain = length;
- } else {
- newOp.insert = thisOp.insert;
- }
- // Preserve null when composing with a retain, otherwise remove it for inserts
- var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');
- if (attributes) newOp.attributes = attributes;
- delta.push(newOp);
- // Other op should be delete, we could be an insert or retain
- // Insert + delete cancels out
- } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {
- delta.push(otherOp);
- }
- }
- }
- return delta.chop();
- };
-
- Delta.prototype.concat = function (other) {
- var delta = new Delta(this.ops.slice());
- if (other.ops.length > 0) {
- delta.push(other.ops[0]);
- delta.ops = delta.ops.concat(other.ops.slice(1));
- }
- return delta;
- };
-
- Delta.prototype.diff = function (other, index) {
- if (this.ops === other.ops) {
- return new Delta();
- }
- var strings = [this, other].map(function (delta) {
- return delta.map(function (op) {
- if (op.insert != null) {
- return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;
- }
- var prep = (ops === other.ops) ? 'on' : 'with';
- throw new Error('diff() called ' + prep + ' non-document');
- }).join('');
- });
- var delta = new Delta();
- var diffResult = diff(strings[0], strings[1], index);
- var thisIter = op.iterator(this.ops);
- var otherIter = op.iterator(other.ops);
- diffResult.forEach(function (component) {
- var length = component[1].length;
- while (length > 0) {
- var opLength = 0;
- switch (component[0]) {
- case diff.INSERT:
- opLength = Math.min(otherIter.peekLength(), length);
- delta.push(otherIter.next(opLength));
- break;
- case diff.DELETE:
- opLength = Math.min(length, thisIter.peekLength());
- thisIter.next(opLength);
- delta['delete'](opLength);
- break;
- case diff.EQUAL:
- opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);
- var thisOp = thisIter.next(opLength);
- var otherOp = otherIter.next(opLength);
- if (equal(thisOp.insert, otherOp.insert)) {
- delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));
- } else {
- delta.push(otherOp)['delete'](opLength);
- }
- break;
- }
- length -= opLength;
- }
- });
- return delta.chop();
- };
-
- Delta.prototype.eachLine = function (predicate, newline) {
- newline = newline || '\n';
- var iter = op.iterator(this.ops);
- var line = new Delta();
- while (iter.hasNext()) {
- if (iter.peekType() !== 'insert') return;
- var thisOp = iter.peek();
- var start = op.length(thisOp) - iter.peekLength();
- var index = typeof thisOp.insert === 'string' ?
- thisOp.insert.indexOf(newline, start) - start : -1;
- if (index < 0) {
- line.push(iter.next());
- } else if (index > 0) {
- line.push(iter.next(index));
- } else {
- predicate(line, iter.next(1).attributes || {});
- line = new Delta();
- }
- }
- if (line.length() > 0) {
- predicate(line, {});
- }
- };
-
- Delta.prototype.transform = function (other, priority) {
- priority = !!priority;
- if (typeof other === 'number') {
- return this.transformPosition(other, priority);
- }
- var thisIter = op.iterator(this.ops);
- var otherIter = op.iterator(other.ops);
- var delta = new Delta();
- while (thisIter.hasNext() || otherIter.hasNext()) {
- if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {
- delta.retain(op.length(thisIter.next()));
- } else if (otherIter.peekType() === 'insert') {
- delta.push(otherIter.next());
- } else {
- var length = Math.min(thisIter.peekLength(), otherIter.peekLength());
- var thisOp = thisIter.next(length);
- var otherOp = otherIter.next(length);
- if (thisOp['delete']) {
- // Our delete either makes their delete redundant or removes their retain
- continue;
- } else if (otherOp['delete']) {
- delta.push(otherOp);
- } else {
- // We retain either their retain or insert
- delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));
- }
- }
- }
- return delta.chop();
- };
-
- Delta.prototype.transformPosition = function (index, priority) {
- priority = !!priority;
- var thisIter = op.iterator(this.ops);
- var offset = 0;
- while (thisIter.hasNext() && offset <= index) {
- var length = thisIter.peekLength();
- var nextType = thisIter.peekType();
- thisIter.next();
- if (nextType === 'delete') {
- index -= Math.min(length, index - offset);
- continue;
- } else if (nextType === 'insert' && (offset < index || !priority)) {
- index += length;
- }
- offset += length;
- }
- return index;
- };
-
-
- module.exports = Delta;
-
-
- /***/ },
- /* 21 */
- /***/ function(module, exports) {
-
- /**
- * This library modifies the diff-patch-match library by Neil Fraser
- * by removing the patch and match functionality and certain advanced
- * options in the diff function. The original license is as follows:
- *
- * ===
- *
- * Diff Match and Patch
- *
- * Copyright 2006 Google Inc.
- * http://code.google.com/p/google-diff-match-patch/
- *
- * 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.
- */
-
-
- /**
- * The data structure representing a diff is an array of tuples:
- * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]
- * which means: delete 'Hello', add 'Goodbye' and keep ' world.'
- */
- var DIFF_DELETE = -1;
- var DIFF_INSERT = 1;
- var DIFF_EQUAL = 0;
-
-
- /**
- * Find the differences between two texts. Simplifies the problem by stripping
- * any common prefix or suffix off the texts before diffing.
- * @param {string} text1 Old string to be diffed.
- * @param {string} text2 New string to be diffed.
- * @param {Int} cursor_pos Expected edit position in text1 (optional)
- * @return {Array} Array of diff tuples.
- */
- function diff_main(text1, text2, cursor_pos) {
- // Check for equality (speedup).
- if (text1 == text2) {
- if (text1) {
- return [[DIFF_EQUAL, text1]];
- }
- return [];
- }
-
- // Check cursor_pos within bounds
- if (cursor_pos < 0 || text1.length < cursor_pos) {
- cursor_pos = null;
- }
-
- // Trim off common prefix (speedup).
- var commonlength = diff_commonPrefix(text1, text2);
- var commonprefix = text1.substring(0, commonlength);
- text1 = text1.substring(commonlength);
- text2 = text2.substring(commonlength);
-
- // Trim off common suffix (speedup).
- commonlength = diff_commonSuffix(text1, text2);
- var commonsuffix = text1.substring(text1.length - commonlength);
- text1 = text1.substring(0, text1.length - commonlength);
- text2 = text2.substring(0, text2.length - commonlength);
-
- // Compute the diff on the middle block.
- var diffs = diff_compute_(text1, text2);
-
- // Restore the prefix and suffix.
- if (commonprefix) {
- diffs.unshift([DIFF_EQUAL, commonprefix]);
- }
- if (commonsuffix) {
- diffs.push([DIFF_EQUAL, commonsuffix]);
- }
- diff_cleanupMerge(diffs);
- if (cursor_pos != null) {
- diffs = fix_cursor(diffs, cursor_pos);
- }
- return diffs;
- };
-
-
- /**
- * Find the differences between two texts. Assumes that the texts do not
- * have any common prefix or suffix.
- * @param {string} text1 Old string to be diffed.
- * @param {string} text2 New string to be diffed.
- * @return {Array} Array of diff tuples.
- */
- function diff_compute_(text1, text2) {
- var diffs;
-
- if (!text1) {
- // Just add some text (speedup).
- return [[DIFF_INSERT, text2]];
- }
-
- if (!text2) {
- // Just delete some text (speedup).
- return [[DIFF_DELETE, text1]];
- }
-
- var longtext = text1.length > text2.length ? text1 : text2;
- var shorttext = text1.length > text2.length ? text2 : text1;
- var i = longtext.indexOf(shorttext);
- if (i != -1) {
- // Shorter text is inside the longer text (speedup).
- diffs = [[DIFF_INSERT, longtext.substring(0, i)],
- [DIFF_EQUAL, shorttext],
- [DIFF_INSERT, longtext.substring(i + shorttext.length)]];
- // Swap insertions for deletions if diff is reversed.
- if (text1.length > text2.length) {
- diffs[0][0] = diffs[2][0] = DIFF_DELETE;
- }
- return diffs;
- }
-
- if (shorttext.length == 1) {
- // Single character string.
- // After the previous speedup, the character can't be an equality.
- return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];
- }
-
- // Check to see if the problem can be split in two.
- var hm = diff_halfMatch_(text1, text2);
- if (hm) {
- // A half-match was found, sort out the return data.
- var text1_a = hm[0];
- var text1_b = hm[1];
- var text2_a = hm[2];
- var text2_b = hm[3];
- var mid_common = hm[4];
- // Send both pairs off for separate processing.
- var diffs_a = diff_main(text1_a, text2_a);
- var diffs_b = diff_main(text1_b, text2_b);
- // Merge the results.
- return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);
- }
-
- return diff_bisect_(text1, text2);
- };
-
-
- /**
- * Find the 'middle snake' of a diff, split the problem in two
- * and return the recursively constructed diff.
- * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
- * @param {string} text1 Old string to be diffed.
- * @param {string} text2 New string to be diffed.
- * @return {Array} Array of diff tuples.
- * @private
- */
- function diff_bisect_(text1, text2) {
- // Cache the text lengths to prevent multiple calls.
- var text1_length = text1.length;
- var text2_length = text2.length;
- var max_d = Math.ceil((text1_length + text2_length) / 2);
- var v_offset = max_d;
- var v_length = 2 * max_d;
- var v1 = new Array(v_length);
- var v2 = new Array(v_length);
- // Setting all elements to -1 is faster in Chrome & Firefox than mixing
- // integers and undefined.
- for (var x = 0; x < v_length; x++) {
- v1[x] = -1;
- v2[x] = -1;
- }
- v1[v_offset + 1] = 0;
- v2[v_offset + 1] = 0;
- var delta = text1_length - text2_length;
- // If the total number of characters is odd, then the front path will collide
- // with the reverse path.
- var front = (delta % 2 != 0);
- // Offsets for start and end of k loop.
- // Prevents mapping of space beyond the grid.
- var k1start = 0;
- var k1end = 0;
- var k2start = 0;
- var k2end = 0;
- for (var d = 0; d < max_d; d++) {
- // Walk the front path one step.
- for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {
- var k1_offset = v_offset + k1;
- var x1;
- if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {
- x1 = v1[k1_offset + 1];
- } else {
- x1 = v1[k1_offset - 1] + 1;
- }
- var y1 = x1 - k1;
- while (x1 < text1_length && y1 < text2_length &&
- text1.charAt(x1) == text2.charAt(y1)) {
- x1++;
- y1++;
- }
- v1[k1_offset] = x1;
- if (x1 > text1_length) {
- // Ran off the right of the graph.
- k1end += 2;
- } else if (y1 > text2_length) {
- // Ran off the bottom of the graph.
- k1start += 2;
- } else if (front) {
- var k2_offset = v_offset + delta - k1;
- if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {
- // Mirror x2 onto top-left coordinate system.
- var x2 = text1_length - v2[k2_offset];
- if (x1 >= x2) {
- // Overlap detected.
- return diff_bisectSplit_(text1, text2, x1, y1);
- }
- }
- }
- }
-
- // Walk the reverse path one step.
- for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {
- var k2_offset = v_offset + k2;
- var x2;
- if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {
- x2 = v2[k2_offset + 1];
- } else {
- x2 = v2[k2_offset - 1] + 1;
- }
- var y2 = x2 - k2;
- while (x2 < text1_length && y2 < text2_length &&
- text1.charAt(text1_length - x2 - 1) ==
- text2.charAt(text2_length - y2 - 1)) {
- x2++;
- y2++;
- }
- v2[k2_offset] = x2;
- if (x2 > text1_length) {
- // Ran off the left of the graph.
- k2end += 2;
- } else if (y2 > text2_length) {
- // Ran off the top of the graph.
- k2start += 2;
- } else if (!front) {
- var k1_offset = v_offset + delta - k2;
- if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {
- var x1 = v1[k1_offset];
- var y1 = v_offset + x1 - k1_offset;
- // Mirror x2 onto top-left coordinate system.
- x2 = text1_length - x2;
- if (x1 >= x2) {
- // Overlap detected.
- return diff_bisectSplit_(text1, text2, x1, y1);
- }
- }
- }
- }
- }
- // Diff took too long and hit the deadline or
- // number of diffs equals number of characters, no commonality at all.
- return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];
- };
-
-
- /**
- * Given the location of the 'middle snake', split the diff in two parts
- * and recurse.
- * @param {string} text1 Old string to be diffed.
- * @param {string} text2 New string to be diffed.
- * @param {number} x Index of split point in text1.
- * @param {number} y Index of split point in text2.
- * @return {Array} Array of diff tuples.
- */
- function diff_bisectSplit_(text1, text2, x, y) {
- var text1a = text1.substring(0, x);
- var text2a = text2.substring(0, y);
- var text1b = text1.substring(x);
- var text2b = text2.substring(y);
-
- // Compute both diffs serially.
- var diffs = diff_main(text1a, text2a);
- var diffsb = diff_main(text1b, text2b);
-
- return diffs.concat(diffsb);
- };
-
-
- /**
- * Determine the common prefix of two strings.
- * @param {string} text1 First string.
- * @param {string} text2 Second string.
- * @return {number} The number of characters common to the start of each
- * string.
- */
- function diff_commonPrefix(text1, text2) {
- // Quick check for common null cases.
- if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {
- return 0;
- }
- // Binary search.
- // Performance analysis: http://neil.fraser.name/news/2007/10/09/
- var pointermin = 0;
- var pointermax = Math.min(text1.length, text2.length);
- var pointermid = pointermax;
- var pointerstart = 0;
- while (pointermin < pointermid) {
- if (text1.substring(pointerstart, pointermid) ==
- text2.substring(pointerstart, pointermid)) {
- pointermin = pointermid;
- pointerstart = pointermin;
- } else {
- pointermax = pointermid;
- }
- pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
- }
- return pointermid;
- };
-
-
- /**
- * Determine the common suffix of two strings.
- * @param {string} text1 First string.
- * @param {string} text2 Second string.
- * @return {number} The number of characters common to the end of each string.
- */
- function diff_commonSuffix(text1, text2) {
- // Quick check for common null cases.
- if (!text1 || !text2 ||
- text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {
- return 0;
- }
- // Binary search.
- // Performance analysis: http://neil.fraser.name/news/2007/10/09/
- var pointermin = 0;
- var pointermax = Math.min(text1.length, text2.length);
- var pointermid = pointermax;
- var pointerend = 0;
- while (pointermin < pointermid) {
- if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==
- text2.substring(text2.length - pointermid, text2.length - pointerend)) {
- pointermin = pointermid;
- pointerend = pointermin;
- } else {
- pointermax = pointermid;
- }
- pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);
- }
- return pointermid;
- };
-
-
- /**
- * Do the two texts share a substring which is at least half the length of the
- * longer text?
- * This speedup can produce non-minimal diffs.
- * @param {string} text1 First string.
- * @param {string} text2 Second string.
- * @return {Array.} Five element Array, containing the prefix of
- * text1, the suffix of text1, the prefix of text2, the suffix of
- * text2 and the common middle. Or null if there was no match.
- */
- function diff_halfMatch_(text1, text2) {
- var longtext = text1.length > text2.length ? text1 : text2;
- var shorttext = text1.length > text2.length ? text2 : text1;
- if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {
- return null; // Pointless.
- }
-
- /**
- * Does a substring of shorttext exist within longtext such that the substring
- * is at least half the length of longtext?
- * Closure, but does not reference any external variables.
- * @param {string} longtext Longer string.
- * @param {string} shorttext Shorter string.
- * @param {number} i Start index of quarter length substring within longtext.
- * @return {Array.} Five element Array, containing the prefix of
- * longtext, the suffix of longtext, the prefix of shorttext, the suffix
- * of shorttext and the common middle. Or null if there was no match.
- * @private
- */
- function diff_halfMatchI_(longtext, shorttext, i) {
- // Start with a 1/4 length substring at position i as a seed.
- var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));
- var j = -1;
- var best_common = '';
- var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;
- while ((j = shorttext.indexOf(seed, j + 1)) != -1) {
- var prefixLength = diff_commonPrefix(longtext.substring(i),
- shorttext.substring(j));
- var suffixLength = diff_commonSuffix(longtext.substring(0, i),
- shorttext.substring(0, j));
- if (best_common.length < suffixLength + prefixLength) {
- best_common = shorttext.substring(j - suffixLength, j) +
- shorttext.substring(j, j + prefixLength);
- best_longtext_a = longtext.substring(0, i - suffixLength);
- best_longtext_b = longtext.substring(i + prefixLength);
- best_shorttext_a = shorttext.substring(0, j - suffixLength);
- best_shorttext_b = shorttext.substring(j + prefixLength);
- }
- }
- if (best_common.length * 2 >= longtext.length) {
- return [best_longtext_a, best_longtext_b,
- best_shorttext_a, best_shorttext_b, best_common];
- } else {
- return null;
- }
- }
-
- // First check if the second quarter is the seed for a half-match.
- var hm1 = diff_halfMatchI_(longtext, shorttext,
- Math.ceil(longtext.length / 4));
- // Check again based on the third quarter.
- var hm2 = diff_halfMatchI_(longtext, shorttext,
- Math.ceil(longtext.length / 2));
- var hm;
- if (!hm1 && !hm2) {
- return null;
- } else if (!hm2) {
- hm = hm1;
- } else if (!hm1) {
- hm = hm2;
- } else {
- // Both matched. Select the longest.
- hm = hm1[4].length > hm2[4].length ? hm1 : hm2;
- }
-
- // A half-match was found, sort out the return data.
- var text1_a, text1_b, text2_a, text2_b;
- if (text1.length > text2.length) {
- text1_a = hm[0];
- text1_b = hm[1];
- text2_a = hm[2];
- text2_b = hm[3];
- } else {
- text2_a = hm[0];
- text2_b = hm[1];
- text1_a = hm[2];
- text1_b = hm[3];
- }
- var mid_common = hm[4];
- return [text1_a, text1_b, text2_a, text2_b, mid_common];
- };
-
-
- /**
- * Reorder and merge like edit sections. Merge equalities.
- * Any edit section can move as long as it doesn't cross an equality.
- * @param {Array} diffs Array of diff tuples.
- */
- function diff_cleanupMerge(diffs) {
- diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.
- var pointer = 0;
- var count_delete = 0;
- var count_insert = 0;
- var text_delete = '';
- var text_insert = '';
- var commonlength;
- while (pointer < diffs.length) {
- switch (diffs[pointer][0]) {
- case DIFF_INSERT:
- count_insert++;
- text_insert += diffs[pointer][1];
- pointer++;
- break;
- case DIFF_DELETE:
- count_delete++;
- text_delete += diffs[pointer][1];
- pointer++;
- break;
- case DIFF_EQUAL:
- // Upon reaching an equality, check for prior redundancies.
- if (count_delete + count_insert > 1) {
- if (count_delete !== 0 && count_insert !== 0) {
- // Factor out any common prefixies.
- commonlength = diff_commonPrefix(text_insert, text_delete);
- if (commonlength !== 0) {
- if ((pointer - count_delete - count_insert) > 0 &&
- diffs[pointer - count_delete - count_insert - 1][0] ==
- DIFF_EQUAL) {
- diffs[pointer - count_delete - count_insert - 1][1] +=
- text_insert.substring(0, commonlength);
- } else {
- diffs.splice(0, 0, [DIFF_EQUAL,
- text_insert.substring(0, commonlength)]);
- pointer++;
- }
- text_insert = text_insert.substring(commonlength);
- text_delete = text_delete.substring(commonlength);
- }
- // Factor out any common suffixies.
- commonlength = diff_commonSuffix(text_insert, text_delete);
- if (commonlength !== 0) {
- diffs[pointer][1] = text_insert.substring(text_insert.length -
- commonlength) + diffs[pointer][1];
- text_insert = text_insert.substring(0, text_insert.length -
- commonlength);
- text_delete = text_delete.substring(0, text_delete.length -
- commonlength);
- }
- }
- // Delete the offending records and add the merged ones.
- if (count_delete === 0) {
- diffs.splice(pointer - count_insert,
- count_delete + count_insert, [DIFF_INSERT, text_insert]);
- } else if (count_insert === 0) {
- diffs.splice(pointer - count_delete,
- count_delete + count_insert, [DIFF_DELETE, text_delete]);
- } else {
- diffs.splice(pointer - count_delete - count_insert,
- count_delete + count_insert, [DIFF_DELETE, text_delete],
- [DIFF_INSERT, text_insert]);
- }
- pointer = pointer - count_delete - count_insert +
- (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;
- } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {
- // Merge this equality with the previous one.
- diffs[pointer - 1][1] += diffs[pointer][1];
- diffs.splice(pointer, 1);
- } else {
- pointer++;
- }
- count_insert = 0;
- count_delete = 0;
- text_delete = '';
- text_insert = '';
- break;
- }
- }
- if (diffs[diffs.length - 1][1] === '') {
- diffs.pop(); // Remove the dummy entry at the end.
- }
-
- // Second pass: look for single edits surrounded on both sides by equalities
- // which can be shifted sideways to eliminate an equality.
- // e.g: ABAC -> ABAC
- var changes = false;
- pointer = 1;
- // Intentionally ignore the first and last element (don't need checking).
- while (pointer < diffs.length - 1) {
- if (diffs[pointer - 1][0] == DIFF_EQUAL &&
- diffs[pointer + 1][0] == DIFF_EQUAL) {
- // This is a single edit surrounded by equalities.
- if (diffs[pointer][1].substring(diffs[pointer][1].length -
- diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {
- // Shift the edit over the previous equality.
- diffs[pointer][1] = diffs[pointer - 1][1] +
- diffs[pointer][1].substring(0, diffs[pointer][1].length -
- diffs[pointer - 1][1].length);
- diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];
- diffs.splice(pointer - 1, 1);
- changes = true;
- } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==
- diffs[pointer + 1][1]) {
- // Shift the edit over the next equality.
- diffs[pointer - 1][1] += diffs[pointer + 1][1];
- diffs[pointer][1] =
- diffs[pointer][1].substring(diffs[pointer + 1][1].length) +
- diffs[pointer + 1][1];
- diffs.splice(pointer + 1, 1);
- changes = true;
- }
- }
- pointer++;
- }
- // If shifts were made, the diff needs reordering and another shift sweep.
- if (changes) {
- diff_cleanupMerge(diffs);
- }
- };
-
-
- var diff = diff_main;
- diff.INSERT = DIFF_INSERT;
- diff.DELETE = DIFF_DELETE;
- diff.EQUAL = DIFF_EQUAL;
-
- module.exports = diff;
-
- /*
- * Modify a diff such that the cursor position points to the start of a change:
- * E.g.
- * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)
- * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]
- * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)
- * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]
- *
- * @param {Array} diffs Array of diff tuples
- * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!
- * @return {Array} A tuple [cursor location in the modified diff, modified diff]
- */
- function cursor_normalize_diff (diffs, cursor_pos) {
- if (cursor_pos === 0) {
- return [DIFF_EQUAL, diffs];
- }
- for (var current_pos = 0, i = 0; i < diffs.length; i++) {
- var d = diffs[i];
- if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {
- var next_pos = current_pos + d[1].length;
- if (cursor_pos === next_pos) {
- return [i + 1, diffs];
- } else if (cursor_pos < next_pos) {
- // copy to prevent side effects
- diffs = diffs.slice();
- // split d into two diff changes
- var split_pos = cursor_pos - current_pos;
- var d_left = [d[0], d[1].slice(0, split_pos)];
- var d_right = [d[0], d[1].slice(split_pos)];
- diffs.splice(i, 1, d_left, d_right);
- return [i + 1, diffs];
- } else {
- current_pos = next_pos;
- }
- }
- }
- throw new Error('cursor_pos is out of bounds!')
- }
-
- /*
- * Modify a diff such that the edit position is "shifted" to the proposed edit location (cursor_position).
- *
- * Case 1)
- * Check if a naive shift is possible:
- * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)
- * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result
- * Case 2)
- * Check if the following shifts are possible:
- * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']
- * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']
- * ^ ^
- * d d_next
- *
- * @param {Array} diffs Array of diff tuples
- * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!
- * @return {Array} Array of diff tuples
- */
- function fix_cursor (diffs, cursor_pos) {
- var norm = cursor_normalize_diff(diffs, cursor_pos);
- var ndiffs = norm[1];
- var cursor_pointer = norm[0];
- var d = ndiffs[cursor_pointer];
- var d_next = ndiffs[cursor_pointer + 1];
-
- if (d == null) {
- // Text was deleted from end of original string,
- // cursor is now out of bounds in new string
- return diffs;
- } else if (d[0] !== DIFF_EQUAL) {
- // A modification happened at the cursor location.
- // This is the expected outcome, so we can return the original diff.
- return diffs;
- } else {
- if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {
- // Case 1)
- // It is possible to perform a naive shift
- ndiffs.splice(cursor_pointer, 2, d_next, d)
- return merge_tuples(ndiffs, cursor_pointer, 2)
- } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {
- // Case 2)
- // d[1] is a prefix of d_next[1]
- // We can assume that d_next[0] !== 0, since d[0] === 0
- // Shift edit locations..
- ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);
- var suffix = d_next[1].slice(d[1].length);
- if (suffix.length > 0) {
- ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);
- }
- return merge_tuples(ndiffs, cursor_pointer, 3)
- } else {
- // Not possible to perform any modification
- return diffs;
- }
- }
-
- }
-
- /*
- * Try to merge tuples with their neigbors in a given range.
- * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']
- *
- * @param {Array} diffs Array of diff tuples.
- * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).
- * @param {Int} length Number of consecutive elements to check.
- * @return {Array} Array of merged diff tuples.
- */
- function merge_tuples (diffs, start, length) {
- // Check from (start-1) to (start+length).
- for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {
- if (i + 1 < diffs.length) {
- var left_d = diffs[i];
- var right_d = diffs[i+1];
- if (left_d[0] === right_d[1]) {
- diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);
- }
- }
- }
- return diffs;
- }
-
-
- /***/ },
- /* 22 */
- /***/ function(module, exports, __webpack_require__) {
-
- var pSlice = Array.prototype.slice;
- var objectKeys = __webpack_require__(23);
- var isArguments = __webpack_require__(24);
-
- var deepEqual = module.exports = function (actual, expected, opts) {
- if (!opts) opts = {};
- // 7.1. All identical values are equivalent, as determined by ===.
- if (actual === expected) {
- return true;
-
- } else if (actual instanceof Date && expected instanceof Date) {
- return actual.getTime() === expected.getTime();
-
- // 7.3. Other pairs that do not both pass typeof value == 'object',
- // equivalence is determined by ==.
- } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {
- return opts.strict ? actual === expected : actual == expected;
-
- // 7.4. For all other Object pairs, including Array objects, equivalence is
- // determined by having the same number of owned properties (as verified
- // with Object.prototype.hasOwnProperty.call), the same set of keys
- // (although not necessarily the same order), equivalent values for every
- // corresponding key, and an identical 'prototype' property. Note: this
- // accounts for both named and indexed properties on Arrays.
- } else {
- return objEquiv(actual, expected, opts);
- }
- }
-
- function isUndefinedOrNull(value) {
- return value === null || value === undefined;
- }
-
- function isBuffer (x) {
- if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;
- if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {
- return false;
- }
- if (x.length > 0 && typeof x[0] !== 'number') return false;
- return true;
- }
-
- function objEquiv(a, b, opts) {
- var i, key;
- if (isUndefinedOrNull(a) || isUndefinedOrNull(b))
- return false;
- // an identical 'prototype' property.
- if (a.prototype !== b.prototype) return false;
- //~~~I've managed to break Object.keys through screwy arguments passing.
- // Converting to array solves the problem.
- if (isArguments(a)) {
- if (!isArguments(b)) {
- return false;
- }
- a = pSlice.call(a);
- b = pSlice.call(b);
- return deepEqual(a, b, opts);
- }
- if (isBuffer(a)) {
- if (!isBuffer(b)) {
- return false;
- }
- if (a.length !== b.length) return false;
- for (i = 0; i < a.length; i++) {
- if (a[i] !== b[i]) return false;
- }
- return true;
- }
- try {
- var ka = objectKeys(a),
- kb = objectKeys(b);
- } catch (e) {//happens when one is a string literal and the other isn't
- return false;
- }
- // having the same number of owned properties (keys incorporates
- // hasOwnProperty)
- if (ka.length != kb.length)
- return false;
- //the same set of keys (although not necessarily the same order),
- ka.sort();
- kb.sort();
- //~~~cheap key test
- for (i = ka.length - 1; i >= 0; i--) {
- if (ka[i] != kb[i])
- return false;
- }
- //equivalent values for every corresponding key, and
- //~~~possibly expensive deep test
- for (i = ka.length - 1; i >= 0; i--) {
- key = ka[i];
- if (!deepEqual(a[key], b[key], opts)) return false;
- }
- return typeof a === typeof b;
- }
-
-
- /***/ },
- /* 23 */
- /***/ function(module, exports) {
-
- exports = module.exports = typeof Object.keys === 'function'
- ? Object.keys : shim;
-
- exports.shim = shim;
- function shim (obj) {
- var keys = [];
- for (var key in obj) keys.push(key);
- return keys;
- }
-
-
- /***/ },
- /* 24 */
- /***/ function(module, exports) {
-
- var supportsArgumentsClass = (function(){
- return Object.prototype.toString.call(arguments)
- })() == '[object Arguments]';
-
- exports = module.exports = supportsArgumentsClass ? supported : unsupported;
-
- exports.supported = supported;
- function supported(object) {
- return Object.prototype.toString.call(object) == '[object Arguments]';
- };
-
- exports.unsupported = unsupported;
- function unsupported(object){
- return object &&
- typeof object == 'object' &&
- typeof object.length == 'number' &&
- Object.prototype.hasOwnProperty.call(object, 'callee') &&
- !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||
- false;
- };
-
-
- /***/ },
- /* 25 */
- /***/ function(module, exports) {
-
- 'use strict';
-
- var hasOwn = Object.prototype.hasOwnProperty;
- var toStr = Object.prototype.toString;
-
- var isArray = function isArray(arr) {
- if (typeof Array.isArray === 'function') {
- return Array.isArray(arr);
- }
-
- return toStr.call(arr) === '[object Array]';
- };
-
- var isPlainObject = function isPlainObject(obj) {
- if (!obj || toStr.call(obj) !== '[object Object]') {
- return false;
- }
-
- var hasOwnConstructor = hasOwn.call(obj, 'constructor');
- var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');
- // Not own constructor property must be Object
- if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
- var key;
- for (key in obj) {/**/}
-
- return typeof key === 'undefined' || hasOwn.call(obj, key);
- };
-
- module.exports = function extend() {
- var options, name, src, copy, copyIsArray, clone,
- target = arguments[0],
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if (typeof target === 'boolean') {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- } else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {
- target = {};
- }
-
- for (; i < length; ++i) {
- options = arguments[i];
- // Only deal with non-null/undefined values
- if (options != null) {
- // Extend the base object
- for (name in options) {
- src = target[name];
- copy = options[name];
-
- // Prevent never-ending loop
- if (target !== copy) {
- // Recurse if we're merging plain objects or arrays
- if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {
- if (copyIsArray) {
- copyIsArray = false;
- clone = src && isArray(src) ? src : [];
- } else {
- clone = src && isPlainObject(src) ? src : {};
- }
-
- // Never move original objects, clone them
- target[name] = extend(deep, clone, copy);
-
- // Don't bring in undefined values
- } else if (typeof copy !== 'undefined') {
- target[name] = copy;
- }
- }
- }
- }
- }
-
- // Return the modified object
- return target;
- };
-
-
-
- /***/ },
- /* 26 */
- /***/ function(module, exports, __webpack_require__) {
-
- var equal = __webpack_require__(22);
- var extend = __webpack_require__(25);
-
-
- var lib = {
- attributes: {
- compose: function (a, b, keepNull) {
- if (typeof a !== 'object') a = {};
- if (typeof b !== 'object') b = {};
- var attributes = extend(true, {}, b);
- if (!keepNull) {
- attributes = Object.keys(attributes).reduce(function (copy, key) {
- if (attributes[key] != null) {
- copy[key] = attributes[key];
- }
- return copy;
- }, {});
- }
- for (var key in a) {
- if (a[key] !== undefined && b[key] === undefined) {
- attributes[key] = a[key];
- }
- }
- return Object.keys(attributes).length > 0 ? attributes : undefined;
- },
-
- diff: function(a, b) {
- if (typeof a !== 'object') a = {};
- if (typeof b !== 'object') b = {};
- var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {
- if (!equal(a[key], b[key])) {
- attributes[key] = b[key] === undefined ? null : b[key];
- }
- return attributes;
- }, {});
- return Object.keys(attributes).length > 0 ? attributes : undefined;
- },
-
- transform: function (a, b, priority) {
- if (typeof a !== 'object') return b;
- if (typeof b !== 'object') return undefined;
- if (!priority) return b; // b simply overwrites us without priority
- var attributes = Object.keys(b).reduce(function (attributes, key) {
- if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value
- return attributes;
- }, {});
- return Object.keys(attributes).length > 0 ? attributes : undefined;
- }
- },
-
- iterator: function (ops) {
- return new Iterator(ops);
- },
-
- length: function (op) {
- if (typeof op['delete'] === 'number') {
- return op['delete'];
- } else if (typeof op.retain === 'number') {
- return op.retain;
- } else {
- return typeof op.insert === 'string' ? op.insert.length : 1;
- }
- }
- };
-
-
- function Iterator(ops) {
- this.ops = ops;
- this.index = 0;
- this.offset = 0;
- };
-
- Iterator.prototype.hasNext = function () {
- return this.peekLength() < Infinity;
- };
-
- Iterator.prototype.next = function (length) {
- if (!length) length = Infinity;
- var nextOp = this.ops[this.index];
- if (nextOp) {
- var offset = this.offset;
- var opLength = lib.length(nextOp)
- if (length >= opLength - offset) {
- length = opLength - offset;
- this.index += 1;
- this.offset = 0;
- } else {
- this.offset += length;
- }
- if (typeof nextOp['delete'] === 'number') {
- return { 'delete': length };
- } else {
- var retOp = {};
- if (nextOp.attributes) {
- retOp.attributes = nextOp.attributes;
- }
- if (typeof nextOp.retain === 'number') {
- retOp.retain = length;
- } else if (typeof nextOp.insert === 'string') {
- retOp.insert = nextOp.insert.substr(offset, length);
- } else {
- // offset should === 0, length should === 1
- retOp.insert = nextOp.insert;
- }
- return retOp;
- }
- } else {
- return { retain: Infinity };
- }
- };
-
- Iterator.prototype.peek = function () {
- return this.ops[this.index];
- };
-
- Iterator.prototype.peekLength = function () {
- if (this.ops[this.index]) {
- // Should never return 0 if our index is being managed correctly
- return lib.length(this.ops[this.index]) - this.offset;
- } else {
- return Infinity;
- }
- };
-
- Iterator.prototype.peekType = function () {
- if (this.ops[this.index]) {
- if (typeof this.ops[this.index]['delete'] === 'number') {
- return 'delete';
- } else if (typeof this.ops[this.index].retain === 'number') {
- return 'retain';
- } else {
- return 'insert';
- }
- }
- return 'retain';
- };
-
-
- module.exports = lib;
-
-
- /***/ },
- /* 27 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _quillDelta = __webpack_require__(20);
-
- var _quillDelta2 = _interopRequireDefault(_quillDelta);
-
- var _op = __webpack_require__(26);
-
- var _op2 = _interopRequireDefault(_op);
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _code = __webpack_require__(28);
-
- var _code2 = _interopRequireDefault(_code);
-
- var _cursor = __webpack_require__(34);
-
- var _cursor2 = _interopRequireDefault(_cursor);
-
- var _block = __webpack_require__(29);
-
- var _block2 = _interopRequireDefault(_block);
-
- var _clone = __webpack_require__(38);
-
- var _clone2 = _interopRequireDefault(_clone);
-
- var _deepEqual = __webpack_require__(22);
-
- var _deepEqual2 = _interopRequireDefault(_deepEqual);
-
- var _extend = __webpack_require__(25);
-
- var _extend2 = _interopRequireDefault(_extend);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- 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; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var Editor = function () {
- function Editor(scroll) {
- _classCallCheck(this, Editor);
-
- this.scroll = scroll;
- this.delta = this.getDelta();
- }
-
- _createClass(Editor, [{
- key: 'applyDelta',
- value: function applyDelta(delta) {
- var _this = this;
-
- var consumeNextNewline = false;
- this.scroll.update();
- var scrollLength = this.scroll.length();
- this.scroll.batch = true;
- delta = normalizeDelta(delta);
- delta.reduce(function (index, op) {
- var length = op.retain || op.delete || op.insert.length || 1;
- var attributes = op.attributes || {};
- if (op.insert != null) {
- if (typeof op.insert === 'string') {
- var text = op.insert;
- if (text.endsWith('\n') && consumeNextNewline) {
- consumeNextNewline = false;
- text = text.slice(0, -1);
- }
- if (index >= scrollLength && !text.endsWith('\n')) {
- consumeNextNewline = true;
- }
- _this.scroll.insertAt(index, text);
-
- var _scroll$line = _this.scroll.line(index),
- _scroll$line2 = _slicedToArray(_scroll$line, 2),
- line = _scroll$line2[0],
- offset = _scroll$line2[1];
-
- var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));
- if (line instanceof _block2.default) {
- var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),
- _line$descendant2 = _slicedToArray(_line$descendant, 1),
- leaf = _line$descendant2[0];
-
- formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));
- }
- attributes = _op2.default.attributes.diff(formats, attributes) || {};
- } else if (_typeof(op.insert) === 'object') {
- var key = Object.keys(op.insert)[0]; // There should only be one key
- if (key == null) return index;
- _this.scroll.insertAt(index, key, op.insert[key]);
- }
- scrollLength += length;
- }
- Object.keys(attributes).forEach(function (name) {
- _this.scroll.formatAt(index, length, name, attributes[name]);
- });
- return index + length;
- }, 0);
- delta.reduce(function (index, op) {
- if (typeof op.delete === 'number') {
- _this.scroll.deleteAt(index, op.delete);
- return index;
- }
- return index + (op.retain || op.insert.length || 1);
- }, 0);
- this.scroll.batch = false;
- this.scroll.optimize();
- return this.update(delta);
- }
- }, {
- key: 'deleteText',
- value: function deleteText(index, length) {
- this.scroll.deleteAt(index, length);
- return this.update(new _quillDelta2.default().retain(index).delete(length));
- }
- }, {
- key: 'formatLine',
- value: function formatLine(index, length) {
- var _this2 = this;
-
- var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-
- this.scroll.update();
- Object.keys(formats).forEach(function (format) {
- if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;
- var lines = _this2.scroll.lines(index, Math.max(length, 1));
- var lengthRemaining = length;
- lines.forEach(function (line) {
- var lineLength = line.length();
- if (!(line instanceof _code2.default)) {
- line.format(format, formats[format]);
- } else {
- var codeIndex = index - line.offset(_this2.scroll);
- var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;
- line.formatAt(codeIndex, codeLength, format, formats[format]);
- }
- lengthRemaining -= lineLength;
- });
- });
- this.scroll.optimize();
- return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));
- }
- }, {
- key: 'formatText',
- value: function formatText(index, length) {
- var _this3 = this;
-
- var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-
- Object.keys(formats).forEach(function (format) {
- _this3.scroll.formatAt(index, length, format, formats[format]);
- });
- return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));
- }
- }, {
- key: 'getContents',
- value: function getContents(index, length) {
- return this.delta.slice(index, index + length);
- }
- }, {
- key: 'getDelta',
- value: function getDelta() {
- return this.scroll.lines().reduce(function (delta, line) {
- return delta.concat(line.delta());
- }, new _quillDelta2.default());
- }
- }, {
- key: 'getFormat',
- value: function getFormat(index) {
- var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
- var lines = [],
- leaves = [];
- if (length === 0) {
- this.scroll.path(index).forEach(function (path) {
- var _path = _slicedToArray(path, 1),
- blot = _path[0];
-
- if (blot instanceof _block2.default) {
- lines.push(blot);
- } else if (blot instanceof _parchment2.default.Leaf) {
- leaves.push(blot);
- }
- });
- } else {
- lines = this.scroll.lines(index, length);
- leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);
- }
- var formatsArr = [lines, leaves].map(function (blots) {
- if (blots.length === 0) return {};
- var formats = (0, _block.bubbleFormats)(blots.shift());
- while (Object.keys(formats).length > 0) {
- var blot = blots.shift();
- if (blot == null) return formats;
- formats = combineFormats((0, _block.bubbleFormats)(blot), formats);
- }
- return formats;
- });
- return _extend2.default.apply(_extend2.default, formatsArr);
- }
- }, {
- key: 'getText',
- value: function getText(index, length) {
- return this.getContents(index, length).filter(function (op) {
- return typeof op.insert === 'string';
- }).map(function (op) {
- return op.insert;
- }).join('');
- }
- }, {
- key: 'insertEmbed',
- value: function insertEmbed(index, embed, value) {
- this.scroll.insertAt(index, embed, value);
- return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));
- }
- }, {
- key: 'insertText',
- value: function insertText(index, text) {
- var _this4 = this;
-
- var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-
- text = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
- this.scroll.insertAt(index, text);
- Object.keys(formats).forEach(function (format) {
- _this4.scroll.formatAt(index, text.length, format, formats[format]);
- });
- return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));
- }
- }, {
- key: 'isBlank',
- value: function isBlank() {
- if (this.scroll.children.length == 0) return true;
- if (this.scroll.children.length > 1) return false;
- var child = this.scroll.children.head;
- return child.length() <= 1 && Object.keys(child.formats()).length == 0;
- }
- }, {
- key: 'removeFormat',
- value: function removeFormat(index, length) {
- var text = this.getText(index, length);
-
- var _scroll$line3 = this.scroll.line(index + length),
- _scroll$line4 = _slicedToArray(_scroll$line3, 2),
- line = _scroll$line4[0],
- offset = _scroll$line4[1];
-
- var suffixLength = 0,
- suffix = new _quillDelta2.default();
- if (line != null) {
- if (!(line instanceof _code2.default)) {
- suffixLength = line.length() - offset;
- } else {
- suffixLength = line.newlineIndex(offset) - offset + 1;
- }
- suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\n');
- }
- var contents = this.getContents(index, length + suffixLength);
- var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));
- var delta = new _quillDelta2.default().retain(index).concat(diff);
- return this.applyDelta(delta);
- }
- }, {
- key: 'update',
- value: function update(change) {
- var _this5 = this;
-
- var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
- var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
-
- var oldDelta = this.delta;
- if (mutations.length === 1 && mutations[0].type === 'characterData' && _parchment2.default.find(mutations[0].target)) {
- (function () {
- // Optimization for character changes
- var textBlot = _parchment2.default.find(mutations[0].target);
- var formats = (0, _block.bubbleFormats)(textBlot);
- var index = textBlot.offset(_this5.scroll);
- var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');
- var oldText = new _quillDelta2.default().insert(oldValue);
- var newText = new _quillDelta2.default().insert(textBlot.value());
- var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));
- change = diffDelta.reduce(function (delta, op) {
- if (op.insert) {
- return delta.insert(op.insert, formats);
- } else {
- return delta.push(op);
- }
- }, new _quillDelta2.default());
- _this5.delta = oldDelta.compose(change);
- })();
- } else {
- this.delta = this.getDelta();
- if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {
- change = oldDelta.diff(this.delta, cursorIndex);
- }
- }
- return change;
- }
- }]);
-
- return Editor;
- }();
-
- function combineFormats(formats, combined) {
- return Object.keys(combined).reduce(function (merged, name) {
- if (formats[name] == null) return merged;
- if (combined[name] === formats[name]) {
- merged[name] = combined[name];
- } else if (Array.isArray(combined[name])) {
- if (combined[name].indexOf(formats[name]) < 0) {
- merged[name] = combined[name].concat([formats[name]]);
- }
- } else {
- merged[name] = [combined[name], formats[name]];
- }
- return merged;
- }, {});
- }
-
- function normalizeDelta(delta) {
- return delta.reduce(function (delta, op) {
- if (op.insert === 1) {
- var attributes = (0, _clone2.default)(op.attributes);
- delete attributes['image'];
- return delta.insert({ image: op.attributes.image }, attributes);
- }
- if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {
- op = (0, _clone2.default)(op);
- if (op.attributes.list) {
- op.attributes.list = 'ordered';
- } else {
- op.attributes.list = 'bullet';
- delete op.attributes.bullet;
- }
- }
- if (typeof op.insert === 'string') {
- var text = op.insert.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
- return delta.insert(text, op.attributes);
- }
- return delta.push(op);
- }, new _quillDelta2.default());
- }
-
- exports.default = Editor;
-
- /***/ },
- /* 28 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.Code = undefined;
-
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _quillDelta = __webpack_require__(20);
-
- var _quillDelta2 = _interopRequireDefault(_quillDelta);
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _block = __webpack_require__(29);
-
- var _block2 = _interopRequireDefault(_block);
-
- var _inline = __webpack_require__(32);
-
- var _inline2 = _interopRequireDefault(_inline);
-
- var _text = __webpack_require__(33);
-
- var _text2 = _interopRequireDefault(_text);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Code = function (_Inline) {
- _inherits(Code, _Inline);
-
- function Code() {
- _classCallCheck(this, Code);
-
- return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));
- }
-
- return Code;
- }(_inline2.default);
-
- Code.blotName = 'code';
- Code.tagName = 'CODE';
-
- var CodeBlock = function (_Block) {
- _inherits(CodeBlock, _Block);
-
- function CodeBlock() {
- _classCallCheck(this, CodeBlock);
-
- return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));
- }
-
- _createClass(CodeBlock, [{
- key: 'delta',
- value: function delta() {
- var _this3 = this;
-
- var text = this.domNode.textContent;
- if (text.endsWith('\n')) {
- // Should always be true
- text = text.slice(0, -1);
- }
- return text.split('\n').reduce(function (delta, frag) {
- return delta.insert(frag).insert('\n', _this3.formats());
- }, new _quillDelta2.default());
- }
- }, {
- key: 'format',
- value: function format(name, value) {
- if (name === this.statics.blotName && value) return;
-
- var _descendant = this.descendant(_text2.default, this.length() - 1),
- _descendant2 = _slicedToArray(_descendant, 1),
- text = _descendant2[0];
-
- if (text != null) {
- text.deleteAt(text.length() - 1, 1);
- }
- _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);
- }
- }, {
- key: 'formatAt',
- value: function formatAt(index, length, name, value) {
- if (length === 0) return;
- if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {
- return;
- }
- var nextNewline = this.newlineIndex(index);
- if (nextNewline < 0 || nextNewline >= index + length) return;
- var prevNewline = this.newlineIndex(index, true) + 1;
- var isolateLength = nextNewline - prevNewline + 1;
- var blot = this.isolate(prevNewline, isolateLength);
- var next = blot.next;
- blot.format(name, value);
- if (next instanceof CodeBlock) {
- next.formatAt(0, index - prevNewline + length - isolateLength, name, value);
- }
- }
- }, {
- key: 'insertAt',
- value: function insertAt(index, value, def) {
- if (def != null) return;
-
- var _descendant3 = this.descendant(_text2.default, index),
- _descendant4 = _slicedToArray(_descendant3, 2),
- text = _descendant4[0],
- offset = _descendant4[1];
-
- text.insertAt(offset, value);
- }
- }, {
- key: 'length',
- value: function length() {
- var length = this.domNode.textContent.length;
- if (!this.domNode.textContent.endsWith('\n')) {
- return length + 1;
- }
- return length;
- }
- }, {
- key: 'newlineIndex',
- value: function newlineIndex(searchIndex) {
- var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
-
- if (!reverse) {
- var offset = this.domNode.textContent.slice(searchIndex).indexOf('\n');
- return offset > -1 ? searchIndex + offset : -1;
- } else {
- return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\n');
- }
- }
- }, {
- key: 'optimize',
- value: function optimize() {
- if (!this.domNode.textContent.endsWith('\n')) {
- this.appendChild(_parchment2.default.create('text', '\n'));
- }
- _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this);
- var next = this.next;
- if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {
- next.optimize();
- next.moveChildren(this);
- next.remove();
- }
- }
- }, {
- key: 'replace',
- value: function replace(target) {
- _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);
- [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {
- var blot = _parchment2.default.find(node);
- if (blot == null) {
- node.parentNode.removeChild(node);
- } else if (blot instanceof _parchment2.default.Embed) {
- blot.remove();
- } else {
- blot.unwrap();
- }
- });
- }
- }], [{
- key: 'create',
- value: function create(value) {
- var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);
- domNode.setAttribute('spellcheck', false);
- return domNode;
- }
- }, {
- key: 'formats',
- value: function formats() {
- return true;
- }
- }]);
-
- return CodeBlock;
- }(_block2.default);
-
- CodeBlock.blotName = 'code-block';
- CodeBlock.tagName = 'PRE';
- CodeBlock.TAB = ' ';
-
- exports.Code = Code;
- exports.default = CodeBlock;
-
- /***/ },
- /* 29 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _extend = __webpack_require__(25);
-
- var _extend2 = _interopRequireDefault(_extend);
-
- var _quillDelta = __webpack_require__(20);
-
- var _quillDelta2 = _interopRequireDefault(_quillDelta);
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _break = __webpack_require__(30);
-
- var _break2 = _interopRequireDefault(_break);
-
- var _embed = __webpack_require__(31);
-
- var _embed2 = _interopRequireDefault(_embed);
-
- var _inline = __webpack_require__(32);
-
- var _inline2 = _interopRequireDefault(_inline);
-
- var _text = __webpack_require__(33);
-
- var _text2 = _interopRequireDefault(_text);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var NEWLINE_LENGTH = 1;
-
- var BlockEmbed = function (_Embed) {
- _inherits(BlockEmbed, _Embed);
-
- function BlockEmbed() {
- _classCallCheck(this, BlockEmbed);
-
- return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));
- }
-
- _createClass(BlockEmbed, [{
- key: 'attach',
- value: function attach() {
- _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);
- this.attributes = new _parchment2.default.Attributor.Store(this.domNode);
- }
- }, {
- key: 'delta',
- value: function delta() {
- return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));
- }
- }, {
- key: 'format',
- value: function format(name, value) {
- var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);
- if (attribute != null) {
- this.attributes.attribute(attribute, value);
- }
- }
- }, {
- key: 'formatAt',
- value: function formatAt(index, length, name, value) {
- this.format(name, value);
- }
- }, {
- key: 'insertAt',
- value: function insertAt(index, value, def) {
- if (typeof value === 'string' && value.endsWith('\n')) {
- var block = _parchment2.default.create(Block.blotName);
- this.parent.insertBefore(block, index === 0 ? this : this.next);
- block.insertAt(0, value.slice(0, -1));
- } else {
- _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);
- }
- }
- }]);
-
- return BlockEmbed;
- }(_embed2.default);
-
- BlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;
- // It is important for cursor behavior BlockEmbeds use tags that are block level elements
-
-
- var Block = function (_Parchment$Block) {
- _inherits(Block, _Parchment$Block);
-
- function Block(domNode) {
- _classCallCheck(this, Block);
-
- var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));
-
- _this2.cache = {};
- return _this2;
- }
-
- _createClass(Block, [{
- key: 'delta',
- value: function delta() {
- if (this.cache.delta == null) {
- this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {
- if (leaf.length() === 0) {
- return delta;
- } else {
- return delta.insert(leaf.value(), bubbleFormats(leaf));
- }
- }, new _quillDelta2.default()).insert('\n', bubbleFormats(this));
- }
- return this.cache.delta;
- }
- }, {
- key: 'deleteAt',
- value: function deleteAt(index, length) {
- _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);
- this.cache = {};
- }
- }, {
- key: 'formatAt',
- value: function formatAt(index, length, name, value) {
- if (length <= 0) return;
- if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {
- if (index + length === this.length()) {
- this.format(name, value);
- }
- } else {
- _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);
- }
- this.cache = {};
- }
- }, {
- key: 'insertAt',
- value: function insertAt(index, value, def) {
- if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);
- if (value.length === 0) return;
- var lines = value.split('\n');
- var text = lines.shift();
- if (text.length > 0) {
- if (index < this.length() - 1 || this.children.tail == null) {
- _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);
- } else {
- this.children.tail.insertAt(this.children.tail.length(), text);
- }
- this.cache = {};
- }
- var block = this;
- lines.reduce(function (index, line) {
- block = block.split(index, true);
- block.insertAt(0, line);
- return line.length;
- }, index + text.length);
- }
- }, {
- key: 'insertBefore',
- value: function insertBefore(blot, ref) {
- var head = this.children.head;
- _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);
- if (head instanceof _break2.default) {
- head.remove();
- }
- this.cache = {};
- }
- }, {
- key: 'length',
- value: function length() {
- if (this.cache.length == null) {
- this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;
- }
- return this.cache.length;
- }
- }, {
- key: 'moveChildren',
- value: function moveChildren(target, ref) {
- _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);
- this.cache = {};
- }
- }, {
- key: 'optimize',
- value: function optimize() {
- _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this);
- this.cache = {};
- }
- }, {
- key: 'path',
- value: function path(index) {
- return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);
- }
- }, {
- key: 'removeChild',
- value: function removeChild(child) {
- _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);
- this.cache = {};
- }
- }, {
- key: 'split',
- value: function split(index) {
- var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
-
- if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {
- var clone = this.clone();
- if (index === 0) {
- this.parent.insertBefore(clone, this);
- return this;
- } else {
- this.parent.insertBefore(clone, this.next);
- return clone;
- }
- } else {
- var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);
- this.cache = {};
- return next;
- }
- }
- }]);
-
- return Block;
- }(_parchment2.default.Block);
-
- Block.blotName = 'block';
- Block.tagName = 'P';
- Block.defaultChild = 'break';
- Block.allowedChildren = [_inline2.default, _embed2.default, _text2.default];
-
- function bubbleFormats(blot) {
- var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- if (blot == null) return formats;
- if (typeof blot.formats === 'function') {
- formats = (0, _extend2.default)(formats, blot.formats());
- }
- if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {
- return formats;
- }
- return bubbleFormats(blot.parent, formats);
- }
-
- exports.bubbleFormats = bubbleFormats;
- exports.BlockEmbed = BlockEmbed;
- exports.default = Block;
-
- /***/ },
- /* 30 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _embed = __webpack_require__(31);
-
- var _embed2 = _interopRequireDefault(_embed);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Break = function (_Embed) {
- _inherits(Break, _Embed);
-
- function Break() {
- _classCallCheck(this, Break);
-
- return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));
- }
-
- _createClass(Break, [{
- key: 'insertInto',
- value: function insertInto(parent, ref) {
- if (parent.children.length === 0) {
- _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);
- } else {
- this.remove();
- }
- }
- }, {
- key: 'length',
- value: function length() {
- return 0;
- }
- }, {
- key: 'value',
- value: function value() {
- return '';
- }
- }], [{
- key: 'value',
- value: function value() {
- return undefined;
- }
- }]);
-
- return Break;
- }(_embed2.default);
-
- Break.blotName = 'break';
- Break.tagName = 'BR';
-
- exports.default = Break;
-
- /***/ },
- /* 31 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Embed = function (_Parchment$Embed) {
- _inherits(Embed, _Parchment$Embed);
-
- function Embed() {
- _classCallCheck(this, Embed);
-
- return _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).apply(this, arguments));
- }
-
- return Embed;
- }(_parchment2.default.Embed);
-
- exports.default = Embed;
-
- /***/ },
- /* 32 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _embed = __webpack_require__(31);
-
- var _embed2 = _interopRequireDefault(_embed);
-
- var _text = __webpack_require__(33);
-
- var _text2 = _interopRequireDefault(_text);
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Inline = function (_Parchment$Inline) {
- _inherits(Inline, _Parchment$Inline);
-
- function Inline() {
- _classCallCheck(this, Inline);
-
- return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));
- }
-
- _createClass(Inline, [{
- key: 'formatAt',
- value: function formatAt(index, length, name, value) {
- if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {
- var blot = this.isolate(index, length);
- if (value) {
- blot.wrap(name, value);
- }
- } else {
- _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);
- }
- }
- }, {
- key: 'optimize',
- value: function optimize() {
- _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this);
- if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {
- var parent = this.parent.isolate(this.offset(), this.length());
- this.moveChildren(parent);
- parent.wrap(this);
- }
- }
- }], [{
- key: 'compare',
- value: function compare(self, other) {
- var selfIndex = Inline.order.indexOf(self);
- var otherIndex = Inline.order.indexOf(other);
- if (selfIndex >= 0 || otherIndex >= 0) {
- return selfIndex - otherIndex;
- } else if (self === other) {
- return 0;
- } else if (self < other) {
- return -1;
- } else {
- return 1;
- }
- }
- }]);
-
- return Inline;
- }(_parchment2.default.Inline);
-
- Inline.allowedChildren = [Inline, _embed2.default, _text2.default];
- // Lower index means deeper in the DOM tree, since not found (-1) is for embeds
- Inline.order = ['cursor', 'inline', // Must be lower
- 'code', 'underline', 'strike', 'italic', 'bold', 'script', 'link' // Must be higher
- ];
-
- exports.default = Inline;
-
- /***/ },
- /* 33 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var TextBlot = function (_Parchment$Text) {
- _inherits(TextBlot, _Parchment$Text);
-
- function TextBlot() {
- _classCallCheck(this, TextBlot);
-
- return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));
- }
-
- return TextBlot;
- }(_parchment2.default.Text);
-
- exports.default = TextBlot;
-
- /***/ },
- /* 34 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _embed = __webpack_require__(31);
-
- var _embed2 = _interopRequireDefault(_embed);
-
- var _text = __webpack_require__(33);
-
- var _text2 = _interopRequireDefault(_text);
-
- var _emitter = __webpack_require__(35);
-
- var _emitter2 = _interopRequireDefault(_emitter);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Cursor = function (_Embed) {
- _inherits(Cursor, _Embed);
-
- _createClass(Cursor, null, [{
- key: 'value',
- value: function value() {
- return undefined;
- }
- }]);
-
- function Cursor(domNode, selection) {
- _classCallCheck(this, Cursor);
-
- var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));
-
- _this.selection = selection;
- _this.textNode = document.createTextNode(Cursor.CONTENTS);
- _this.domNode.appendChild(_this.textNode);
- _this._length = 0;
- return _this;
- }
-
- _createClass(Cursor, [{
- key: 'detach',
- value: function detach() {
- // super.detach() will also clear domNode.__blot
- if (this.parent != null) this.parent.removeChild(this);
- }
- }, {
- key: 'format',
- value: function format(name, value) {
- if (this._length !== 0) {
- return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);
- }
- var target = this,
- index = 0;
- while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {
- index += target.offset(target.parent);
- target = target.parent;
- }
- if (target != null) {
- this._length = Cursor.CONTENTS.length;
- target.optimize();
- target.formatAt(index, Cursor.CONTENTS.length, name, value);
- this._length = 0;
- }
- }
- }, {
- key: 'index',
- value: function index(node, offset) {
- if (node === this.textNode) return 0;
- return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);
- }
- }, {
- key: 'length',
- value: function length() {
- return this._length;
- }
- }, {
- key: 'position',
- value: function position() {
- return [this.textNode, this.textNode.data.length];
- }
- }, {
- key: 'remove',
- value: function remove() {
- _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);
- this.parent = null;
- }
- }, {
- key: 'restore',
- value: function restore() {
- var _this2 = this;
-
- if (this.selection.composing) return;
- if (this.parent == null) return;
- var textNode = this.textNode;
- var range = this.selection.getNativeRange();
- var restoreText = void 0,
- start = void 0,
- end = void 0;
- if (range != null && range.start.node === textNode && range.end.node === textNode) {
- var _ref = [textNode, range.start.offset, range.end.offset];
- restoreText = _ref[0];
- start = _ref[1];
- end = _ref[2];
- }
- // Link format will insert text outside of anchor tag
- while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {
- this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);
- }
- if (this.textNode.data !== Cursor.CONTENTS) {
- var text = this.textNode.data.split(Cursor.CONTENTS).join('');
- if (this.next instanceof _text2.default) {
- restoreText = this.next.domNode;
- this.next.insertAt(0, text);
- this.textNode.data = Cursor.CONTENTS;
- } else {
- this.textNode.data = text;
- this.parent.insertBefore(_parchment2.default.create(this.textNode), this);
- this.textNode = document.createTextNode(Cursor.CONTENTS);
- this.domNode.appendChild(this.textNode);
- }
- }
- this.remove();
- if (start == null) return;
- this.selection.emitter.once(_emitter2.default.events.SCROLL_OPTIMIZE, function () {
- var _map = [start, end].map(function (offset) {
- return Math.max(0, Math.min(restoreText.data.length, offset - 1));
- });
-
- var _map2 = _slicedToArray(_map, 2);
-
- start = _map2[0];
- end = _map2[1];
-
- _this2.selection.setNativeRange(restoreText, start, restoreText, end);
- });
- }
- }, {
- key: 'update',
- value: function update(mutations) {
- var _this3 = this;
-
- mutations.forEach(function (mutation) {
- if (mutation.type === 'characterData' && mutation.target === _this3.textNode) {
- _this3.restore();
- }
- });
- }
- }, {
- key: 'value',
- value: function value() {
- return '';
- }
- }]);
-
- return Cursor;
- }(_embed2.default);
-
- Cursor.blotName = 'cursor';
- Cursor.className = 'ql-cursor';
- Cursor.tagName = 'span';
- Cursor.CONTENTS = '\uFEFF'; // Zero width no break space
-
-
- exports.default = Cursor;
-
- /***/ },
- /* 35 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _eventemitter = __webpack_require__(36);
-
- var _eventemitter2 = _interopRequireDefault(_eventemitter);
-
- var _logger = __webpack_require__(37);
-
- var _logger2 = _interopRequireDefault(_logger);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var debug = (0, _logger2.default)('quill:events');
-
- var Emitter = function (_EventEmitter) {
- _inherits(Emitter, _EventEmitter);
-
- function Emitter() {
- _classCallCheck(this, Emitter);
-
- var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));
-
- _this.on('error', debug.error);
- return _this;
- }
-
- _createClass(Emitter, [{
- key: 'emit',
- value: function emit() {
- debug.log.apply(debug, arguments);
- _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);
- }
- }]);
-
- return Emitter;
- }(_eventemitter2.default);
-
- Emitter.events = {
- EDITOR_CHANGE: 'editor-change',
- SCROLL_BEFORE_UPDATE: 'scroll-before-update',
- SCROLL_OPTIMIZE: 'scroll-optimize',
- SCROLL_UPDATE: 'scroll-update',
- SELECTION_CHANGE: 'selection-change',
- TEXT_CHANGE: 'text-change'
- };
- Emitter.sources = {
- API: 'api',
- SILENT: 'silent',
- USER: 'user'
- };
-
- exports.default = Emitter;
-
- /***/ },
- /* 36 */
- /***/ function(module, exports) {
-
- 'use strict';
-
- var has = Object.prototype.hasOwnProperty
- , prefix = '~';
-
- /**
- * Constructor to create a storage for our `EE` objects.
- * An `Events` instance is a plain object whose properties are event names.
- *
- * @constructor
- * @api private
- */
- function Events() {}
-
- //
- // We try to not inherit from `Object.prototype`. In some engines creating an
- // instance in this way is faster than calling `Object.create(null)` directly.
- // If `Object.create(null)` is not supported we prefix the event names with a
- // character to make sure that the built-in object properties are not
- // overridden or used as an attack vector.
- //
- if (Object.create) {
- Events.prototype = Object.create(null);
-
- //
- // This hack is needed because the `__proto__` property is still inherited in
- // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.
- //
- if (!new Events().__proto__) prefix = false;
- }
-
- /**
- * Representation of a single event listener.
- *
- * @param {Function} fn The listener function.
- * @param {Mixed} context The context to invoke the listener with.
- * @param {Boolean} [once=false] Specify if the listener is a one-time listener.
- * @constructor
- * @api private
- */
- function EE(fn, context, once) {
- this.fn = fn;
- this.context = context;
- this.once = once || false;
- }
-
- /**
- * Minimal `EventEmitter` interface that is molded against the Node.js
- * `EventEmitter` interface.
- *
- * @constructor
- * @api public
- */
- function EventEmitter() {
- this._events = new Events();
- this._eventsCount = 0;
- }
-
- /**
- * Return an array listing the events for which the emitter has registered
- * listeners.
- *
- * @returns {Array}
- * @api public
- */
- EventEmitter.prototype.eventNames = function eventNames() {
- var names = []
- , events
- , name;
-
- if (this._eventsCount === 0) return names;
-
- for (name in (events = this._events)) {
- if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
- }
-
- if (Object.getOwnPropertySymbols) {
- return names.concat(Object.getOwnPropertySymbols(events));
- }
-
- return names;
- };
-
- /**
- * Return the listeners registered for a given event.
- *
- * @param {String|Symbol} event The event name.
- * @param {Boolean} exists Only check if there are listeners.
- * @returns {Array|Boolean}
- * @api public
- */
- EventEmitter.prototype.listeners = function listeners(event, exists) {
- var evt = prefix ? prefix + event : event
- , available = this._events[evt];
-
- if (exists) return !!available;
- if (!available) return [];
- if (available.fn) return [available.fn];
-
- for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {
- ee[i] = available[i].fn;
- }
-
- return ee;
- };
-
- /**
- * Calls each of the listeners registered for a given event.
- *
- * @param {String|Symbol} event The event name.
- * @returns {Boolean} `true` if the event had listeners, else `false`.
- * @api public
- */
- EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
- var evt = prefix ? prefix + event : event;
-
- if (!this._events[evt]) return false;
-
- var listeners = this._events[evt]
- , len = arguments.length
- , args
- , i;
-
- if (listeners.fn) {
- if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
-
- switch (len) {
- case 1: return listeners.fn.call(listeners.context), true;
- case 2: return listeners.fn.call(listeners.context, a1), true;
- case 3: return listeners.fn.call(listeners.context, a1, a2), true;
- case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
- case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
- case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
- }
-
- for (i = 1, args = new Array(len -1); i < len; i++) {
- args[i - 1] = arguments[i];
- }
-
- listeners.fn.apply(listeners.context, args);
- } else {
- var length = listeners.length
- , j;
-
- for (i = 0; i < length; i++) {
- if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
-
- switch (len) {
- case 1: listeners[i].fn.call(listeners[i].context); break;
- case 2: listeners[i].fn.call(listeners[i].context, a1); break;
- case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
- case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;
- default:
- if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
- args[j - 1] = arguments[j];
- }
-
- listeners[i].fn.apply(listeners[i].context, args);
- }
- }
- }
-
- return true;
- };
-
- /**
- * Add a listener for a given event.
- *
- * @param {String|Symbol} event The event name.
- * @param {Function} fn The listener function.
- * @param {Mixed} [context=this] The context to invoke the listener with.
- * @returns {EventEmitter} `this`.
- * @api public
- */
- EventEmitter.prototype.on = function on(event, fn, context) {
- var listener = new EE(fn, context || this)
- , evt = prefix ? prefix + event : event;
-
- if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;
- else if (!this._events[evt].fn) this._events[evt].push(listener);
- else this._events[evt] = [this._events[evt], listener];
-
- return this;
- };
-
- /**
- * Add a one-time listener for a given event.
- *
- * @param {String|Symbol} event The event name.
- * @param {Function} fn The listener function.
- * @param {Mixed} [context=this] The context to invoke the listener with.
- * @returns {EventEmitter} `this`.
- * @api public
- */
- EventEmitter.prototype.once = function once(event, fn, context) {
- var listener = new EE(fn, context || this, true)
- , evt = prefix ? prefix + event : event;
-
- if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;
- else if (!this._events[evt].fn) this._events[evt].push(listener);
- else this._events[evt] = [this._events[evt], listener];
-
- return this;
- };
-
- /**
- * Remove the listeners of a given event.
- *
- * @param {String|Symbol} event The event name.
- * @param {Function} fn Only remove the listeners that match this function.
- * @param {Mixed} context Only remove the listeners that have this context.
- * @param {Boolean} once Only remove one-time listeners.
- * @returns {EventEmitter} `this`.
- * @api public
- */
- EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
- var evt = prefix ? prefix + event : event;
-
- if (!this._events[evt]) return this;
- if (!fn) {
- if (--this._eventsCount === 0) this._events = new Events();
- else delete this._events[evt];
- return this;
- }
-
- var listeners = this._events[evt];
-
- if (listeners.fn) {
- if (
- listeners.fn === fn
- && (!once || listeners.once)
- && (!context || listeners.context === context)
- ) {
- if (--this._eventsCount === 0) this._events = new Events();
- else delete this._events[evt];
- }
- } else {
- for (var i = 0, events = [], length = listeners.length; i < length; i++) {
- if (
- listeners[i].fn !== fn
- || (once && !listeners[i].once)
- || (context && listeners[i].context !== context)
- ) {
- events.push(listeners[i]);
- }
- }
-
- //
- // Reset the array, or remove it completely if we have no more listeners.
- //
- if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
- else if (--this._eventsCount === 0) this._events = new Events();
- else delete this._events[evt];
- }
-
- return this;
- };
-
- /**
- * Remove all listeners, or those of the specified event.
- *
- * @param {String|Symbol} [event] The event name.
- * @returns {EventEmitter} `this`.
- * @api public
- */
- EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
- var evt;
-
- if (event) {
- evt = prefix ? prefix + event : event;
- if (this._events[evt]) {
- if (--this._eventsCount === 0) this._events = new Events();
- else delete this._events[evt];
- }
- } else {
- this._events = new Events();
- this._eventsCount = 0;
- }
-
- return this;
- };
-
- //
- // Alias methods names because people roll like that.
- //
- EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
- EventEmitter.prototype.addListener = EventEmitter.prototype.on;
-
- //
- // This function doesn't apply anymore.
- //
- EventEmitter.prototype.setMaxListeners = function setMaxListeners() {
- return this;
- };
-
- //
- // Expose the prefix.
- //
- EventEmitter.prefixed = prefix;
-
- //
- // Allow `EventEmitter` to be imported as module namespace.
- //
- EventEmitter.EventEmitter = EventEmitter;
-
- //
- // Expose the module.
- //
- if ('undefined' !== typeof module) {
- module.exports = EventEmitter;
- }
-
-
- /***/ },
- /* 37 */
- /***/ function(module, exports) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- var levels = ['error', 'warn', 'log', 'info'];
- var level = 'warn';
-
- function debug(method) {
- if (levels.indexOf(method) <= levels.indexOf(level)) {
- for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key];
- }
-
- console[method].apply(console, args); // eslint-disable-line no-console
- }
- }
-
- function namespace(ns) {
- return levels.reduce(function (logger, method) {
- logger[method] = debug.bind(console, method, ns);
- return logger;
- }, {});
- }
-
- debug.level = namespace.level = function (newLevel) {
- level = newLevel;
- };
-
- exports.default = namespace;
-
- /***/ },
- /* 38 */
- /***/ function(module, exports) {
-
- var clone = (function() {
- 'use strict';
-
- var nativeMap;
- try {
- nativeMap = Map;
- } catch(_) {
- // maybe a reference error because no `Map`. Give it a dummy value that no
- // value will ever be an instanceof.
- nativeMap = function() {};
- }
-
- var nativeSet;
- try {
- nativeSet = Set;
- } catch(_) {
- nativeSet = function() {};
- }
-
- var nativePromise;
- try {
- nativePromise = Promise;
- } catch(_) {
- nativePromise = function() {};
- }
-
- /**
- * Clones (copies) an Object using deep copying.
- *
- * This function supports circular references by default, but if you are certain
- * there are no circular references in your object, you can save some CPU time
- * by calling clone(obj, false).
- *
- * Caution: if `circular` is false and `parent` contains circular references,
- * your program may enter an infinite loop and crash.
- *
- * @param `parent` - the object to be cloned
- * @param `circular` - set to true if the object to be cloned may contain
- * circular references. (optional - true by default)
- * @param `depth` - set to a number if the object is only to be cloned to
- * a particular depth. (optional - defaults to Infinity)
- * @param `prototype` - sets the prototype to be used when cloning an object.
- * (optional - defaults to parent prototype).
- * @param `includeNonEnumerable` - set to true if the non-enumerable properties
- * should be cloned as well. Non-enumerable properties on the prototype
- * chain will be ignored. (optional - false by default)
- */
- function clone(parent, circular, depth, prototype, includeNonEnumerable) {
- if (typeof circular === 'object') {
- depth = circular.depth;
- prototype = circular.prototype;
- includeNonEnumerable = circular.includeNonEnumerable;
- circular = circular.circular;
- }
- // maintain two arrays for circular references, where corresponding parents
- // and children have the same index
- var allParents = [];
- var allChildren = [];
-
- var useBuffer = typeof Buffer != 'undefined';
-
- if (typeof circular == 'undefined')
- circular = true;
-
- if (typeof depth == 'undefined')
- depth = Infinity;
-
- // recurse this function so we don't reset allParents and allChildren
- function _clone(parent, depth) {
- // cloning null always returns null
- if (parent === null)
- return null;
-
- if (depth === 0)
- return parent;
-
- var child;
- var proto;
- if (typeof parent != 'object') {
- return parent;
- }
-
- if (parent instanceof nativeMap) {
- child = new nativeMap();
- } else if (parent instanceof nativeSet) {
- child = new nativeSet();
- } else if (parent instanceof nativePromise) {
- child = new nativePromise(function (resolve, reject) {
- parent.then(function(value) {
- resolve(_clone(value, depth - 1));
- }, function(err) {
- reject(_clone(err, depth - 1));
- });
- });
- } else if (clone.__isArray(parent)) {
- child = [];
- } else if (clone.__isRegExp(parent)) {
- child = new RegExp(parent.source, __getRegExpFlags(parent));
- if (parent.lastIndex) child.lastIndex = parent.lastIndex;
- } else if (clone.__isDate(parent)) {
- child = new Date(parent.getTime());
- } else if (useBuffer && Buffer.isBuffer(parent)) {
- child = new Buffer(parent.length);
- parent.copy(child);
- return child;
- } else if (parent instanceof Error) {
- child = Object.create(parent);
- } else {
- if (typeof prototype == 'undefined') {
- proto = Object.getPrototypeOf(parent);
- child = Object.create(proto);
- }
- else {
- child = Object.create(prototype);
- proto = prototype;
- }
- }
-
- if (circular) {
- var index = allParents.indexOf(parent);
-
- if (index != -1) {
- return allChildren[index];
- }
- allParents.push(parent);
- allChildren.push(child);
- }
-
- if (parent instanceof nativeMap) {
- var keyIterator = parent.keys();
- while(true) {
- var next = keyIterator.next();
- if (next.done) {
- break;
- }
- var keyChild = _clone(next.value, depth - 1);
- var valueChild = _clone(parent.get(next.value), depth - 1);
- child.set(keyChild, valueChild);
- }
- }
- if (parent instanceof nativeSet) {
- var iterator = parent.keys();
- while(true) {
- var next = iterator.next();
- if (next.done) {
- break;
- }
- var entryChild = _clone(next.value, depth - 1);
- child.add(entryChild);
- }
- }
-
- for (var i in parent) {
- var attrs;
- if (proto) {
- attrs = Object.getOwnPropertyDescriptor(proto, i);
- }
-
- if (attrs && attrs.set == null) {
- continue;
- }
- child[i] = _clone(parent[i], depth - 1);
- }
-
- if (Object.getOwnPropertySymbols) {
- var symbols = Object.getOwnPropertySymbols(parent);
- for (var i = 0; i < symbols.length; i++) {
- // Don't need to worry about cloning a symbol because it is a primitive,
- // like a number or string.
- var symbol = symbols[i];
- var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);
- if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {
- continue;
- }
- child[symbol] = _clone(parent[symbol], depth - 1);
- if (!descriptor.enumerable) {
- Object.defineProperty(child, symbol, {
- enumerable: false
- });
- }
- }
- }
-
- if (includeNonEnumerable) {
- var allPropertyNames = Object.getOwnPropertyNames(parent);
- for (var i = 0; i < allPropertyNames.length; i++) {
- var propertyName = allPropertyNames[i];
- var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);
- if (descriptor && descriptor.enumerable) {
- continue;
- }
- child[propertyName] = _clone(parent[propertyName], depth - 1);
- Object.defineProperty(child, propertyName, {
- enumerable: false
- });
- }
- }
-
- return child;
- }
-
- return _clone(parent, depth);
- }
-
- /**
- * Simple flat clone using prototype, accepts only objects, usefull for property
- * override on FLAT configuration object (no nested props).
- *
- * USE WITH CAUTION! This may not behave as you wish if you do not know how this
- * works.
- */
- clone.clonePrototype = function clonePrototype(parent) {
- if (parent === null)
- return null;
-
- var c = function () {};
- c.prototype = parent;
- return new c();
- };
-
- // private utility functions
-
- function __objToStr(o) {
- return Object.prototype.toString.call(o);
- }
- clone.__objToStr = __objToStr;
-
- function __isDate(o) {
- return typeof o === 'object' && __objToStr(o) === '[object Date]';
- }
- clone.__isDate = __isDate;
-
- function __isArray(o) {
- return typeof o === 'object' && __objToStr(o) === '[object Array]';
- }
- clone.__isArray = __isArray;
-
- function __isRegExp(o) {
- return typeof o === 'object' && __objToStr(o) === '[object RegExp]';
- }
- clone.__isRegExp = __isRegExp;
-
- function __getRegExpFlags(re) {
- var flags = '';
- if (re.global) flags += 'g';
- if (re.ignoreCase) flags += 'i';
- if (re.multiline) flags += 'm';
- return flags;
- }
- clone.__getRegExpFlags = __getRegExpFlags;
-
- return clone;
- })();
-
- if (typeof module === 'object' && module.exports) {
- module.exports = clone;
- }
-
-
- /***/ },
- /* 39 */
- /***/ function(module, exports) {
-
- "use strict";
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var Module = function Module(quill) {
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- _classCallCheck(this, Module);
-
- this.quill = quill;
- this.options = options;
- };
-
- Module.DEFAULTS = {};
-
- exports.default = Module;
-
- /***/ },
- /* 40 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.Range = undefined;
-
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _clone = __webpack_require__(38);
-
- var _clone2 = _interopRequireDefault(_clone);
-
- var _deepEqual = __webpack_require__(22);
-
- var _deepEqual2 = _interopRequireDefault(_deepEqual);
-
- var _emitter3 = __webpack_require__(35);
-
- var _emitter4 = _interopRequireDefault(_emitter3);
-
- var _logger = __webpack_require__(37);
-
- var _logger2 = _interopRequireDefault(_logger);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var debug = (0, _logger2.default)('quill:selection');
-
- var Range = function Range(index) {
- var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
- _classCallCheck(this, Range);
-
- this.index = index;
- this.length = length;
- };
-
- var Selection = function () {
- function Selection(scroll, emitter) {
- var _this = this;
-
- _classCallCheck(this, Selection);
-
- this.emitter = emitter;
- this.scroll = scroll;
- this.composing = false;
- this.root = this.scroll.domNode;
- this.root.addEventListener('compositionstart', function () {
- _this.composing = true;
- });
- this.root.addEventListener('compositionend', function () {
- _this.composing = false;
- });
- this.cursor = _parchment2.default.create('cursor', this);
- // savedRange is last non-null range
- this.lastRange = this.savedRange = new Range(0, 0);
- ['keyup', 'mouseup', 'mouseleave', 'touchend', 'touchleave', 'focus', 'blur'].forEach(function (eventName) {
- _this.root.addEventListener(eventName, function () {
- // When range used to be a selection and user click within the selection,
- // the range now being a cursor has not updated yet without setTimeout
- setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 100);
- });
- });
- this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {
- if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {
- _this.update(_emitter4.default.sources.SILENT);
- }
- });
- this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {
- var native = _this.getNativeRange();
- if (native == null) return;
- if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle
- // TODO unclear if this has negative side effects
- _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {
- try {
- _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);
- } catch (ignored) {}
- });
- });
- this.update(_emitter4.default.sources.SILENT);
- }
-
- _createClass(Selection, [{
- key: 'focus',
- value: function focus() {
- if (this.hasFocus()) return;
- this.root.focus();
- this.setRange(this.savedRange);
- }
- }, {
- key: 'format',
- value: function format(_format, value) {
- if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;
- this.scroll.update();
- var nativeRange = this.getNativeRange();
- if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;
- if (nativeRange.start.node !== this.cursor.textNode) {
- var blot = _parchment2.default.find(nativeRange.start.node, false);
- if (blot == null) return;
- // TODO Give blot ability to not split
- if (blot instanceof _parchment2.default.Leaf) {
- var after = blot.split(nativeRange.start.offset);
- blot.parent.insertBefore(this.cursor, after);
- } else {
- blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen
- }
- this.cursor.attach();
- }
- this.cursor.format(_format, value);
- this.scroll.optimize();
- this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);
- this.update();
- }
- }, {
- key: 'getBounds',
- value: function getBounds(index) {
- var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
- var scrollLength = this.scroll.length();
- index = Math.min(index, scrollLength - 1);
- length = Math.min(index + length, scrollLength - 1) - index;
- var bounds = void 0,
- node = void 0,
- _scroll$leaf = this.scroll.leaf(index),
- _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),
- leaf = _scroll$leaf2[0],
- offset = _scroll$leaf2[1];
- if (leaf == null) return null;
-
- var _leaf$position = leaf.position(offset, true);
-
- var _leaf$position2 = _slicedToArray(_leaf$position, 2);
-
- node = _leaf$position2[0];
- offset = _leaf$position2[1];
-
- var range = document.createRange();
- if (length > 0) {
- range.setStart(node, offset);
-
- var _scroll$leaf3 = this.scroll.leaf(index + length);
-
- var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);
-
- leaf = _scroll$leaf4[0];
- offset = _scroll$leaf4[1];
-
- if (leaf == null) return null;
-
- var _leaf$position3 = leaf.position(offset, true);
-
- var _leaf$position4 = _slicedToArray(_leaf$position3, 2);
-
- node = _leaf$position4[0];
- offset = _leaf$position4[1];
-
- range.setEnd(node, offset);
- bounds = range.getBoundingClientRect();
- } else {
- var side = 'left';
- var rect = void 0;
- if (node instanceof Text) {
- if (offset < node.data.length) {
- range.setStart(node, offset);
- range.setEnd(node, offset + 1);
- } else {
- range.setStart(node, offset - 1);
- range.setEnd(node, offset);
- side = 'right';
- }
- rect = range.getBoundingClientRect();
- } else {
- rect = leaf.domNode.getBoundingClientRect();
- if (offset > 0) side = 'right';
- }
- bounds = {
- height: rect.height,
- left: rect[side],
- width: 0,
- top: rect.top
- };
- }
- var containerBounds = this.root.parentNode.getBoundingClientRect();
- return {
- left: bounds.left - containerBounds.left,
- right: bounds.left + bounds.width - containerBounds.left,
- top: bounds.top - containerBounds.top,
- bottom: bounds.top + bounds.height - containerBounds.top,
- height: bounds.height,
- width: bounds.width
- };
- }
- }, {
- key: 'getNativeRange',
- value: function getNativeRange() {
- var selection = document.getSelection();
- if (selection == null || selection.rangeCount <= 0) return null;
- var nativeRange = selection.getRangeAt(0);
- if (nativeRange == null) return null;
- if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {
- return null;
- }
- var range = {
- start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },
- end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },
- native: nativeRange
- };
- [range.start, range.end].forEach(function (position) {
- var node = position.node,
- offset = position.offset;
- while (!(node instanceof Text) && node.childNodes.length > 0) {
- if (node.childNodes.length > offset) {
- node = node.childNodes[offset];
- offset = 0;
- } else if (node.childNodes.length === offset) {
- node = node.lastChild;
- offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;
- } else {
- break;
- }
- }
- position.node = node, position.offset = offset;
- });
- debug.info('getNativeRange', range);
- return range;
- }
- }, {
- key: 'getRange',
- value: function getRange() {
- var _this2 = this;
-
- var range = this.getNativeRange();
- if (range == null) return [null, null];
- var positions = [[range.start.node, range.start.offset]];
- if (!range.native.collapsed) {
- positions.push([range.end.node, range.end.offset]);
- }
- var indexes = positions.map(function (position) {
- var _position = _slicedToArray(position, 2),
- node = _position[0],
- offset = _position[1];
-
- var blot = _parchment2.default.find(node, true);
- var index = blot.offset(_this2.scroll);
- if (offset === 0) {
- return index;
- } else if (blot instanceof _parchment2.default.Container) {
- return index + blot.length();
- } else {
- return index + blot.index(node, offset);
- }
- });
- var start = Math.min.apply(Math, _toConsumableArray(indexes)),
- end = Math.max.apply(Math, _toConsumableArray(indexes));
- end = Math.min(end, this.scroll.length() - 1);
- return [new Range(start, end - start), range];
- }
- }, {
- key: 'hasFocus',
- value: function hasFocus() {
- return document.activeElement === this.root;
- }
- }, {
- key: 'scrollIntoView',
- value: function scrollIntoView() {
- var range = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastRange;
-
- if (range == null) return;
- var bounds = this.getBounds(range.index, range.length);
- if (bounds == null) return;
- if (this.root.offsetHeight < bounds.bottom) {
- var _scroll$line = this.scroll.line(Math.min(range.index + range.length, this.scroll.length() - 1)),
- _scroll$line2 = _slicedToArray(_scroll$line, 1),
- line = _scroll$line2[0];
-
- this.root.scrollTop = line.domNode.offsetTop + line.domNode.offsetHeight - this.root.offsetHeight;
- } else if (bounds.top < 0) {
- var _scroll$line3 = this.scroll.line(Math.min(range.index, this.scroll.length() - 1)),
- _scroll$line4 = _slicedToArray(_scroll$line3, 1),
- _line = _scroll$line4[0];
-
- this.root.scrollTop = _line.domNode.offsetTop;
- }
- }
- }, {
- key: 'setNativeRange',
- value: function setNativeRange(startNode, startOffset) {
- var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;
- var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;
- var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
-
- debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);
- if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {
- return;
- }
- var selection = document.getSelection();
- if (selection == null) return;
- if (startNode != null) {
- if (!this.hasFocus()) this.root.focus();
- var native = (this.getNativeRange() || {}).native;
- if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {
-
- if (startNode.tagName == "BR") {
- startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);
- startNode = startNode.parentNode;
- }
- if (endNode.tagName == "BR") {
- endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);
- endNode = endNode.parentNode;
- }
- var range = document.createRange();
- range.setStart(startNode, startOffset);
- range.setEnd(endNode, endOffset);
- selection.removeAllRanges();
- selection.addRange(range);
- }
- } else {
- selection.removeAllRanges();
- this.root.blur();
- document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)
- }
- }
- }, {
- key: 'setRange',
- value: function setRange(range) {
- var _this3 = this;
-
- var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
- var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;
-
- if (typeof force === 'string') {
- source = force;
- force = false;
- }
- debug.info('setRange', range);
- if (range != null) {
- (function () {
- var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];
- var args = [];
- var scrollLength = _this3.scroll.length();
- indexes.forEach(function (index, i) {
- index = Math.min(scrollLength - 1, index);
- var node = void 0,
- _scroll$leaf5 = _this3.scroll.leaf(index),
- _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),
- leaf = _scroll$leaf6[0],
- offset = _scroll$leaf6[1];
- var _leaf$position5 = leaf.position(offset, i !== 0);
-
- var _leaf$position6 = _slicedToArray(_leaf$position5, 2);
-
- node = _leaf$position6[0];
- offset = _leaf$position6[1];
-
- args.push(node, offset);
- });
- if (args.length < 2) {
- args = args.concat(args);
- }
- _this3.setNativeRange.apply(_this3, _toConsumableArray(args).concat([force]));
- })();
- } else {
- this.setNativeRange(null);
- }
- this.update(source);
- }
- }, {
- key: 'update',
- value: function update() {
- var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;
-
- var oldRange = this.lastRange;
-
- var _getRange = this.getRange(),
- _getRange2 = _slicedToArray(_getRange, 2),
- lastRange = _getRange2[0],
- nativeRange = _getRange2[1];
-
- this.lastRange = lastRange;
- if (this.lastRange != null) {
- this.savedRange = this.lastRange;
- }
- if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {
- var _emitter;
-
- if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {
- this.cursor.restore();
- }
- var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];
- (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));
- if (source !== _emitter4.default.sources.SILENT) {
- var _emitter2;
-
- (_emitter2 = this.emitter).emit.apply(_emitter2, args);
- }
- }
- }
- }]);
-
- return Selection;
- }();
-
- function contains(parent, descendant) {
- try {
- // Firefox inserts inaccessible nodes around video elements
- descendant.parentNode;
- } catch (e) {
- return false;
- }
- // IE11 has bug with Text nodes
- // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect
- if (descendant instanceof Text) {
- descendant = descendant.parentNode;
- }
- return parent.contains(descendant);
- }
-
- exports.Range = Range;
- exports.default = Selection;
-
- /***/ },
- /* 41 */
- /***/ function(module, exports) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var Theme = function () {
- function Theme(quill, options) {
- _classCallCheck(this, Theme);
-
- this.quill = quill;
- this.options = options;
- this.modules = {};
- }
-
- _createClass(Theme, [{
- key: 'init',
- value: function init() {
- var _this = this;
-
- Object.keys(this.options.modules).forEach(function (name) {
- if (_this.modules[name] == null) {
- _this.addModule(name);
- }
- });
- }
- }, {
- key: 'addModule',
- value: function addModule(name) {
- var moduleClass = this.quill.constructor.import('modules/' + name);
- this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});
- return this.modules[name];
- }
- }]);
-
- return Theme;
- }();
-
- Theme.DEFAULTS = {
- modules: {}
- };
- Theme.themes = {
- 'default': Theme
- };
-
- exports.default = Theme;
-
- /***/ },
- /* 42 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _block = __webpack_require__(29);
-
- var _block2 = _interopRequireDefault(_block);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Container = function (_Parchment$Container) {
- _inherits(Container, _Parchment$Container);
-
- function Container() {
- _classCallCheck(this, Container);
-
- return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));
- }
-
- return Container;
- }(_parchment2.default.Container);
-
- Container.allowedChildren = [_block2.default, _block.BlockEmbed, Container];
-
- exports.default = Container;
-
- /***/ },
- /* 43 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _emitter = __webpack_require__(35);
-
- var _emitter2 = _interopRequireDefault(_emitter);
-
- var _block = __webpack_require__(29);
-
- var _block2 = _interopRequireDefault(_block);
-
- var _break = __webpack_require__(30);
-
- var _break2 = _interopRequireDefault(_break);
-
- var _container = __webpack_require__(42);
-
- var _container2 = _interopRequireDefault(_container);
-
- var _code = __webpack_require__(28);
-
- var _code2 = _interopRequireDefault(_code);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- function isLine(blot) {
- return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;
- }
-
- var Scroll = function (_Parchment$Scroll) {
- _inherits(Scroll, _Parchment$Scroll);
-
- function Scroll(domNode, config) {
- _classCallCheck(this, Scroll);
-
- var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));
-
- _this.emitter = config.emitter;
- if (Array.isArray(config.whitelist)) {
- _this.whitelist = config.whitelist.reduce(function (whitelist, format) {
- whitelist[format] = true;
- return whitelist;
- }, {});
- }
- _this.optimize();
- _this.enable();
- return _this;
- }
-
- _createClass(Scroll, [{
- key: 'deleteAt',
- value: function deleteAt(index, length) {
- var _line = this.line(index),
- _line2 = _slicedToArray(_line, 2),
- first = _line2[0],
- offset = _line2[1];
-
- var _line3 = this.line(index + length),
- _line4 = _slicedToArray(_line3, 1),
- last = _line4[0];
-
- _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);
- if (last != null && first !== last && offset > 0 && !(first instanceof _block.BlockEmbed) && !(last instanceof _block.BlockEmbed)) {
- if (last instanceof _code2.default) {
- last.deleteAt(last.length() - 1, 1);
- }
- var ref = last.children.head instanceof _break2.default ? null : last.children.head;
- first.moveChildren(last, ref);
- first.remove();
- }
- this.optimize();
- }
- }, {
- key: 'enable',
- value: function enable() {
- var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
-
- this.domNode.setAttribute('contenteditable', enabled);
- }
- }, {
- key: 'formatAt',
- value: function formatAt(index, length, format, value) {
- if (this.whitelist != null && !this.whitelist[format]) return;
- _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);
- this.optimize();
- }
- }, {
- key: 'insertAt',
- value: function insertAt(index, value, def) {
- if (def != null && this.whitelist != null && !this.whitelist[value]) return;
- if (index >= this.length()) {
- if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {
- var blot = _parchment2.default.create(this.statics.defaultChild);
- this.appendChild(blot);
- if (def == null && value.endsWith('\n')) {
- value = value.slice(0, -1);
- }
- blot.insertAt(0, value, def);
- } else {
- var embed = _parchment2.default.create(value, def);
- this.appendChild(embed);
- }
- } else {
- _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);
- }
- this.optimize();
- }
- }, {
- key: 'insertBefore',
- value: function insertBefore(blot, ref) {
- if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {
- var wrapper = _parchment2.default.create(this.statics.defaultChild);
- wrapper.appendChild(blot);
- blot = wrapper;
- }
- _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);
- }
- }, {
- key: 'leaf',
- value: function leaf(index) {
- return this.path(index).pop() || [null, -1];
- }
- }, {
- key: 'line',
- value: function line(index) {
- if (index === this.length()) {
- return this.line(index - 1);
- }
- return this.descendant(isLine, index);
- }
- }, {
- key: 'lines',
- value: function lines() {
- var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
- var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;
-
- var getLines = function getLines(blot, index, length) {
- var lines = [],
- lengthLeft = length;
- blot.children.forEachAt(index, length, function (child, index, length) {
- if (isLine(child)) {
- lines.push(child);
- } else if (child instanceof _parchment2.default.Container) {
- lines = lines.concat(getLines(child, index, lengthLeft));
- }
- lengthLeft -= length;
- });
- return lines;
- };
- return getLines(this, index, length);
- }
- }, {
- key: 'optimize',
- value: function optimize() {
- var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
-
- if (this.batch === true) return;
- _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations);
- if (mutations.length > 0) {
- this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations);
- }
- }
- }, {
- key: 'path',
- value: function path(index) {
- return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self
- }
- }, {
- key: 'update',
- value: function update(mutations) {
- if (this.batch === true) return;
- var source = _emitter2.default.sources.USER;
- if (typeof mutations === 'string') {
- source = mutations;
- }
- if (!Array.isArray(mutations)) {
- mutations = this.observer.takeRecords();
- }
- if (mutations.length > 0) {
- this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);
- }
- _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy
- if (mutations.length > 0) {
- this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);
- }
- }
- }]);
-
- return Scroll;
- }(_parchment2.default.Scroll);
-
- Scroll.blotName = 'scroll';
- Scroll.className = 'ql-editor';
- Scroll.tagName = 'DIV';
- Scroll.defaultChild = 'block';
- Scroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];
-
- exports.default = Scroll;
-
- /***/ },
- /* 44 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;
-
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _quillDelta = __webpack_require__(20);
-
- var _quillDelta2 = _interopRequireDefault(_quillDelta);
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _quill = __webpack_require__(18);
-
- var _quill2 = _interopRequireDefault(_quill);
-
- var _logger = __webpack_require__(37);
-
- var _logger2 = _interopRequireDefault(_logger);
-
- var _module = __webpack_require__(39);
-
- var _module2 = _interopRequireDefault(_module);
-
- var _align = __webpack_require__(45);
-
- var _background = __webpack_require__(46);
-
- var _color = __webpack_require__(47);
-
- var _direction = __webpack_require__(48);
-
- var _font = __webpack_require__(49);
-
- var _size = __webpack_require__(50);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- 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; }
-
- function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var debug = (0, _logger2.default)('quill:clipboard');
-
- var DOM_KEY = '__ql-matcher';
-
- var CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];
-
- var ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {
- memo[attr.keyName] = attr;
- return memo;
- }, {});
-
- var STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {
- memo[attr.keyName] = attr;
- return memo;
- }, {});
-
- var Clipboard = function (_Module) {
- _inherits(Clipboard, _Module);
-
- function Clipboard(quill, options) {
- _classCallCheck(this, Clipboard);
-
- var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));
-
- _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));
- _this.container = _this.quill.addContainer('ql-clipboard');
- _this.container.setAttribute('contenteditable', true);
- _this.container.setAttribute('tabindex', -1);
- _this.matchers = [];
- CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (pair) {
- _this.addMatcher.apply(_this, _toConsumableArray(pair));
- });
- return _this;
- }
-
- _createClass(Clipboard, [{
- key: 'addMatcher',
- value: function addMatcher(selector, matcher) {
- this.matchers.push([selector, matcher]);
- }
- }, {
- key: 'convert',
- value: function convert(html) {
- if (typeof html === 'string') {
- this.container.innerHTML = html;
- }
-
- var _prepareMatching = this.prepareMatching(),
- _prepareMatching2 = _slicedToArray(_prepareMatching, 2),
- elementMatchers = _prepareMatching2[0],
- textMatchers = _prepareMatching2[1];
-
- var delta = traverse(this.container, elementMatchers, textMatchers);
- // Remove trailing newline
- if (deltaEndsWith(delta, '\n') && delta.ops[delta.ops.length - 1].attributes == null) {
- delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));
- }
- debug.log('convert', this.container.innerHTML, delta);
- this.container.innerHTML = '';
- return delta;
- }
- }, {
- key: 'dangerouslyPasteHTML',
- value: function dangerouslyPasteHTML(index, html) {
- var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;
-
- if (typeof index === 'string') {
- return this.quill.setContents(this.convert(index), html);
- } else {
- var paste = this.convert(html);
- return this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);
- }
- }
- }, {
- key: 'onPaste',
- value: function onPaste(e) {
- var _this2 = this;
-
- if (e.defaultPrevented || !this.quill.isEnabled()) return;
- var range = this.quill.getSelection();
- var delta = new _quillDelta2.default().retain(range.index);
- var scrollTop = this.quill.scrollingContainer.scrollTop;
- this.container.focus();
- setTimeout(function () {
- _this2.quill.selection.update(_quill2.default.sources.SILENT);
- delta = delta.concat(_this2.convert()).delete(range.length);
- _this2.quill.updateContents(delta, _quill2.default.sources.USER);
- // range.length contributes to delta.length()
- _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);
- _this2.quill.scrollingContainer.scrollTop = scrollTop;
- _this2.quill.selection.scrollIntoView();
- }, 1);
- }
- }, {
- key: 'prepareMatching',
- value: function prepareMatching() {
- var _this3 = this;
-
- var elementMatchers = [],
- textMatchers = [];
- this.matchers.forEach(function (pair) {
- var _pair = _slicedToArray(pair, 2),
- selector = _pair[0],
- matcher = _pair[1];
-
- switch (selector) {
- case Node.TEXT_NODE:
- textMatchers.push(matcher);
- break;
- case Node.ELEMENT_NODE:
- elementMatchers.push(matcher);
- break;
- default:
- [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {
- // TODO use weakmap
- node[DOM_KEY] = node[DOM_KEY] || [];
- node[DOM_KEY].push(matcher);
- });
- break;
- }
- });
- return [elementMatchers, textMatchers];
- }
- }]);
-
- return Clipboard;
- }(_module2.default);
-
- Clipboard.DEFAULTS = {
- matchers: []
- };
-
- function computeStyle(node) {
- if (node.nodeType !== Node.ELEMENT_NODE) return {};
- var DOM_KEY = '__ql-computed-style';
- return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));
- }
-
- function deltaEndsWith(delta, text) {
- var endText = "";
- for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {
- var op = delta.ops[i];
- if (typeof op.insert !== 'string') break;
- endText = op.insert + endText;
- }
- return endText.slice(-1 * text.length) === text;
- }
-
- function isLine(node) {
- if (node.childNodes.length === 0) return false; // Exclude embed blocks
- var style = computeStyle(node);
- return ['block', 'list-item'].indexOf(style.display) > -1;
- }
-
- function traverse(node, elementMatchers, textMatchers) {
- // Post-order
- if (node.nodeType === node.TEXT_NODE) {
- return textMatchers.reduce(function (delta, matcher) {
- return matcher(node, delta);
- }, new _quillDelta2.default());
- } else if (node.nodeType === node.ELEMENT_NODE) {
- return [].reduce.call(node.childNodes || [], function (delta, childNode) {
- var childrenDelta = traverse(childNode, elementMatchers, textMatchers);
- if (childNode.nodeType === node.ELEMENT_NODE) {
- childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {
- return matcher(childNode, childrenDelta);
- }, childrenDelta);
- childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {
- return matcher(childNode, childrenDelta);
- }, childrenDelta);
- }
- return delta.concat(childrenDelta);
- }, new _quillDelta2.default());
- } else {
- return new _quillDelta2.default();
- }
- }
-
- function matchAlias(format, node, delta) {
- return delta.compose(new _quillDelta2.default().retain(delta.length(), _defineProperty({}, format, true)));
- }
-
- function matchAttributor(node, delta) {
- var attributes = _parchment2.default.Attributor.Attribute.keys(node);
- var classes = _parchment2.default.Attributor.Class.keys(node);
- var styles = _parchment2.default.Attributor.Style.keys(node);
- var formats = {};
- attributes.concat(classes).concat(styles).forEach(function (name) {
- var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);
- if (attr != null) {
- formats[attr.attrName] = attr.value(node);
- if (formats[attr.attrName]) return;
- }
- if (ATTRIBUTE_ATTRIBUTORS[name] != null) {
- attr = ATTRIBUTE_ATTRIBUTORS[name];
- formats[attr.attrName] = attr.value(node) || undefined;
- }
- if (STYLE_ATTRIBUTORS[name] != null) {
- attr = STYLE_ATTRIBUTORS[name];
- formats[attr.attrName] = attr.value(node) || undefined;
- }
- });
- if (Object.keys(formats).length > 0) {
- delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));
- }
- return delta;
- }
-
- function matchBlot(node, delta) {
- var match = _parchment2.default.query(node);
- if (match == null) return delta;
- if (match.prototype instanceof _parchment2.default.Embed) {
- var embed = {};
- var value = match.value(node);
- if (value != null) {
- embed[match.blotName] = value;
- delta = new _quillDelta2.default().insert(embed, match.formats(node));
- }
- } else if (typeof match.formats === 'function') {
- var formats = _defineProperty({}, match.blotName, match.formats(node));
- delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));
- }
- return delta;
- }
-
- function matchBreak(node, delta) {
- if (!deltaEndsWith(delta, '\n')) {
- delta.insert('\n');
- }
- return delta;
- }
-
- function matchIgnore() {
- return new _quillDelta2.default();
- }
-
- function matchNewline(node, delta) {
- if (isLine(node) && !deltaEndsWith(delta, '\n')) {
- delta.insert('\n');
- }
- return delta;
- }
-
- function matchSpacing(node, delta) {
- if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\n\n')) {
- var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);
- if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {
- delta.insert('\n');
- }
- }
- return delta;
- }
-
- function matchStyles(node, delta) {
- var formats = {};
- var style = node.style || {};
- if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {
- formats.italic = true;
- }
- if (style.fontWeight && computeStyle(node).fontWeight === 'bold') {
- formats.bold = true;
- }
- if (Object.keys(formats).length > 0) {
- delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));
- }
- if (parseFloat(style.textIndent || 0) > 0) {
- // Could be 0.5in
- delta = new _quillDelta2.default().insert('\t').concat(delta);
- }
- return delta;
- }
-
- function matchText(node, delta) {
- var text = node.data;
- // Word represents empty line with
- if (node.parentNode.tagName === 'O:P') {
- return delta.insert(text.trim());
- }
- if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {
- // eslint-disable-next-line func-style
- var replacer = function replacer(collapse, match) {
- match = match.replace(/[^\u00a0]/g, ''); // \u00a0 is nbsp;
- return match.length < 1 && collapse ? ' ' : match;
- };
- text = text.replace(/\r\n/g, ' ').replace(/\n/g, ' ');
- text = text.replace(/\s\s+/g, replacer.bind(replacer, true)); // collapse whitespace
- if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {
- text = text.replace(/^\s+/, replacer.bind(replacer, false));
- }
- if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {
- text = text.replace(/\s+$/, replacer.bind(replacer, false));
- }
- }
- return delta.insert(text);
- }
-
- exports.default = Clipboard;
- exports.matchAttributor = matchAttributor;
- exports.matchBlot = matchBlot;
- exports.matchNewline = matchNewline;
- exports.matchSpacing = matchSpacing;
- exports.matchText = matchText;
-
- /***/ },
- /* 45 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var config = {
- scope: _parchment2.default.Scope.BLOCK,
- whitelist: ['right', 'center', 'justify']
- };
-
- var AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);
- var AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);
- var AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);
-
- exports.AlignAttribute = AlignAttribute;
- exports.AlignClass = AlignClass;
- exports.AlignStyle = AlignStyle;
-
- /***/ },
- /* 46 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.BackgroundStyle = exports.BackgroundClass = undefined;
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _color = __webpack_require__(47);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {
- scope: _parchment2.default.Scope.INLINE
- });
- var BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {
- scope: _parchment2.default.Scope.INLINE
- });
-
- exports.BackgroundClass = BackgroundClass;
- exports.BackgroundStyle = BackgroundStyle;
-
- /***/ },
- /* 47 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var ColorAttributor = function (_Parchment$Attributor) {
- _inherits(ColorAttributor, _Parchment$Attributor);
-
- function ColorAttributor() {
- _classCallCheck(this, ColorAttributor);
-
- return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));
- }
-
- _createClass(ColorAttributor, [{
- key: 'value',
- value: function value(domNode) {
- var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);
- if (!value.startsWith('rgb(')) return value;
- value = value.replace(/^[^\d]+/, '').replace(/[^\d]+$/, '');
- return '#' + value.split(',').map(function (component) {
- return ('00' + parseInt(component).toString(16)).slice(-2);
- }).join('');
- }
- }]);
-
- return ColorAttributor;
- }(_parchment2.default.Attributor.Style);
-
- var ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {
- scope: _parchment2.default.Scope.INLINE
- });
- var ColorStyle = new ColorAttributor('color', 'color', {
- scope: _parchment2.default.Scope.INLINE
- });
-
- exports.ColorAttributor = ColorAttributor;
- exports.ColorClass = ColorClass;
- exports.ColorStyle = ColorStyle;
-
- /***/ },
- /* 48 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var config = {
- scope: _parchment2.default.Scope.BLOCK,
- whitelist: ['rtl']
- };
-
- var DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);
- var DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);
- var DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);
-
- exports.DirectionAttribute = DirectionAttribute;
- exports.DirectionClass = DirectionClass;
- exports.DirectionStyle = DirectionStyle;
-
- /***/ },
- /* 49 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.FontClass = exports.FontStyle = undefined;
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var config = {
- scope: _parchment2.default.Scope.INLINE,
- whitelist: ['serif', 'monospace']
- };
-
- var FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);
-
- var FontStyleAttributor = function (_Parchment$Attributor) {
- _inherits(FontStyleAttributor, _Parchment$Attributor);
-
- function FontStyleAttributor() {
- _classCallCheck(this, FontStyleAttributor);
-
- return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));
- }
-
- _createClass(FontStyleAttributor, [{
- key: 'value',
- value: function value(node) {
- return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/["']/g, '');
- }
- }]);
-
- return FontStyleAttributor;
- }(_parchment2.default.Attributor.Style);
-
- var FontStyle = new FontStyleAttributor('font', 'font-family', config);
-
- exports.FontStyle = FontStyle;
- exports.FontClass = FontClass;
-
- /***/ },
- /* 50 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.SizeStyle = exports.SizeClass = undefined;
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- var SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {
- scope: _parchment2.default.Scope.INLINE,
- whitelist: ['small', 'large', 'huge']
- });
- var SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {
- scope: _parchment2.default.Scope.INLINE,
- whitelist: ['10px', '18px', '32px']
- });
-
- exports.SizeClass = SizeClass;
- exports.SizeStyle = SizeStyle;
-
- /***/ },
- /* 51 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.getLastChangeIndex = exports.default = undefined;
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _quill = __webpack_require__(18);
-
- var _quill2 = _interopRequireDefault(_quill);
-
- var _module = __webpack_require__(39);
-
- var _module2 = _interopRequireDefault(_module);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var History = function (_Module) {
- _inherits(History, _Module);
-
- function History(quill, options) {
- _classCallCheck(this, History);
-
- var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));
-
- _this.lastRecorded = 0;
- _this.ignoreChange = false;
- _this.clear();
- _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {
- if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;
- if (!_this.options.userOnly || source === _quill2.default.sources.USER) {
- _this.record(delta, oldDelta);
- } else {
- _this.transform(delta);
- }
- });
- _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));
- _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));
- if (/Win/i.test(navigator.platform)) {
- _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));
- }
- return _this;
- }
-
- _createClass(History, [{
- key: 'change',
- value: function change(source, dest) {
- if (this.stack[source].length === 0) return;
- var delta = this.stack[source].pop();
- this.lastRecorded = 0;
- this.ignoreChange = true;
- this.quill.updateContents(delta[source], _quill2.default.sources.USER);
- this.ignoreChange = false;
- var index = getLastChangeIndex(delta[source]);
- this.quill.setSelection(index);
- this.quill.selection.scrollIntoView();
- this.stack[dest].push(delta);
- }
- }, {
- key: 'clear',
- value: function clear() {
- this.stack = { undo: [], redo: [] };
- }
- }, {
- key: 'record',
- value: function record(changeDelta, oldDelta) {
- if (changeDelta.ops.length === 0) return;
- this.stack.redo = [];
- var undoDelta = this.quill.getContents().diff(oldDelta);
- var timestamp = Date.now();
- if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {
- var delta = this.stack.undo.pop();
- undoDelta = undoDelta.compose(delta.undo);
- changeDelta = delta.redo.compose(changeDelta);
- } else {
- this.lastRecorded = timestamp;
- }
- this.stack.undo.push({
- redo: changeDelta,
- undo: undoDelta
- });
- if (this.stack.undo.length > this.options.maxStack) {
- this.stack.undo.shift();
- }
- }
- }, {
- key: 'redo',
- value: function redo() {
- this.change('redo', 'undo');
- }
- }, {
- key: 'transform',
- value: function transform(delta) {
- this.stack.undo.forEach(function (change) {
- change.undo = delta.transform(change.undo, true);
- change.redo = delta.transform(change.redo, true);
- });
- this.stack.redo.forEach(function (change) {
- change.undo = delta.transform(change.undo, true);
- change.redo = delta.transform(change.redo, true);
- });
- }
- }, {
- key: 'undo',
- value: function undo() {
- this.change('undo', 'redo');
- }
- }]);
-
- return History;
- }(_module2.default);
-
- History.DEFAULTS = {
- delay: 1000,
- maxStack: 100,
- userOnly: false
- };
-
- function endsWithNewlineChange(delta) {
- var lastOp = delta.ops[delta.ops.length - 1];
- if (lastOp == null) return false;
- if (lastOp.insert != null) {
- return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\n');
- }
- if (lastOp.attributes != null) {
- return Object.keys(lastOp.attributes).some(function (attr) {
- return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;
- });
- }
- return false;
- }
-
- function getLastChangeIndex(delta) {
- var deleteLength = delta.reduce(function (length, op) {
- length += op.delete || 0;
- return length;
- }, 0);
- var changeIndex = delta.length() - deleteLength;
- if (endsWithNewlineChange(delta)) {
- changeIndex -= 1;
- }
- return changeIndex;
- }
-
- exports.default = History;
- exports.getLastChangeIndex = getLastChangeIndex;
-
- /***/ },
- /* 52 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _clone = __webpack_require__(38);
-
- var _clone2 = _interopRequireDefault(_clone);
-
- var _deepEqual = __webpack_require__(22);
-
- var _deepEqual2 = _interopRequireDefault(_deepEqual);
-
- var _extend = __webpack_require__(25);
-
- var _extend2 = _interopRequireDefault(_extend);
-
- var _op = __webpack_require__(26);
-
- var _op2 = _interopRequireDefault(_op);
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _quill = __webpack_require__(18);
-
- var _quill2 = _interopRequireDefault(_quill);
-
- var _logger = __webpack_require__(37);
-
- var _logger2 = _interopRequireDefault(_logger);
-
- var _module = __webpack_require__(39);
-
- var _module2 = _interopRequireDefault(_module);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var debug = (0, _logger2.default)('quill:keyboard');
-
- var SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';
-
- var Keyboard = function (_Module) {
- _inherits(Keyboard, _Module);
-
- _createClass(Keyboard, null, [{
- key: 'match',
- value: function match(evt, binding) {
- binding = normalize(binding);
- if (!!binding.shortKey !== evt[SHORTKEY] && binding.shortKey !== null) return false;
- if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {
- return key != SHORTKEY && !!binding[key] !== evt[key] && binding[key] !== null;
- })) {
- return false;
- }
- return binding.key === (evt.which || evt.keyCode);
- }
- }]);
-
- function Keyboard(quill, options) {
- _classCallCheck(this, Keyboard);
-
- var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));
-
- _this.bindings = {};
- Object.keys(_this.options.bindings).forEach(function (name) {
- if (_this.options.bindings[name]) {
- _this.addBinding(_this.options.bindings[name]);
- }
- });
- _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);
- _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});
- if (/Firefox/i.test(navigator.userAgent)) {
- // Need to handle delete and backspace for Firefox in the general case #1171
- _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);
- _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);
- } else {
- _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);
- _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);
- }
- _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);
- _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);
- _this.listen();
- return _this;
- }
-
- _createClass(Keyboard, [{
- key: 'addBinding',
- value: function addBinding(key) {
- var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-
- var binding = normalize(key);
- if (binding == null || binding.key == null) {
- return debug.warn('Attempted to add invalid keyboard binding', binding);
- }
- if (typeof context === 'function') {
- context = { handler: context };
- }
- if (typeof handler === 'function') {
- handler = { handler: handler };
- }
- binding = (0, _extend2.default)(binding, context, handler);
- this.bindings[binding.key] = this.bindings[binding.key] || [];
- this.bindings[binding.key].push(binding);
- }
- }, {
- key: 'listen',
- value: function listen() {
- var _this2 = this;
-
- this.quill.root.addEventListener('keydown', function (evt) {
- if (evt.defaultPrevented) return;
- var which = evt.which || evt.keyCode;
- var bindings = (_this2.bindings[which] || []).filter(function (binding) {
- return Keyboard.match(evt, binding);
- });
- if (bindings.length === 0) return;
- var range = _this2.quill.getSelection();
- if (range == null || !_this2.quill.hasFocus()) return;
-
- var _quill$getLine = _this2.quill.getLine(range.index),
- _quill$getLine2 = _slicedToArray(_quill$getLine, 2),
- line = _quill$getLine2[0],
- offset = _quill$getLine2[1];
-
- var _quill$getLeaf = _this2.quill.getLeaf(range.index),
- _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),
- leafStart = _quill$getLeaf2[0],
- offsetStart = _quill$getLeaf2[1];
-
- var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),
- _ref2 = _slicedToArray(_ref, 2),
- leafEnd = _ref2[0],
- offsetEnd = _ref2[1];
-
- var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';
- var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';
- var curContext = {
- collapsed: range.length === 0,
- empty: range.length === 0 && line.length() <= 1,
- format: _this2.quill.getFormat(range),
- offset: offset,
- prefix: prefixText,
- suffix: suffixText
- };
- var prevented = bindings.some(function (binding) {
- if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;
- if (binding.empty != null && binding.empty !== curContext.empty) return false;
- if (binding.offset != null && binding.offset !== curContext.offset) return false;
- if (Array.isArray(binding.format)) {
- // any format is present
- if (binding.format.every(function (name) {
- return curContext.format[name] == null;
- })) {
- return false;
- }
- } else if (_typeof(binding.format) === 'object') {
- // all formats must match
- if (!Object.keys(binding.format).every(function (name) {
- if (binding.format[name] === true) return curContext.format[name] != null;
- if (binding.format[name] === false) return curContext.format[name] == null;
- return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);
- })) {
- return false;
- }
- }
- if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;
- if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;
- return binding.handler.call(_this2, range, curContext) !== true;
- });
- if (prevented) {
- evt.preventDefault();
- }
- });
- }
- }]);
-
- return Keyboard;
- }(_module2.default);
-
- Keyboard.keys = {
- BACKSPACE: 8,
- TAB: 9,
- ENTER: 13,
- ESCAPE: 27,
- LEFT: 37,
- UP: 38,
- RIGHT: 39,
- DOWN: 40,
- DELETE: 46
- };
-
- Keyboard.DEFAULTS = {
- bindings: {
- 'bold': makeFormatHandler('bold'),
- 'italic': makeFormatHandler('italic'),
- 'underline': makeFormatHandler('underline'),
- 'indent': {
- // highlight tab or tab at beginning of list, indent or blockquote
- key: Keyboard.keys.TAB,
- format: ['blockquote', 'indent', 'list'],
- handler: function handler(range, context) {
- if (context.collapsed && context.offset !== 0) return true;
- this.quill.format('indent', '+1', _quill2.default.sources.USER);
- }
- },
- 'outdent': {
- key: Keyboard.keys.TAB,
- shiftKey: true,
- format: ['blockquote', 'indent', 'list'],
- // highlight tab or tab at beginning of list, indent or blockquote
- handler: function handler(range, context) {
- if (context.collapsed && context.offset !== 0) return true;
- this.quill.format('indent', '-1', _quill2.default.sources.USER);
- }
- },
- 'outdent backspace': {
- key: Keyboard.keys.BACKSPACE,
- collapsed: true,
- format: ['blockquote', 'indent', 'list'],
- offset: 0,
- handler: function handler(range, context) {
- if (context.format.indent != null) {
- this.quill.format('indent', '-1', _quill2.default.sources.USER);
- } else if (context.format.blockquote != null) {
- this.quill.format('blockquote', false, _quill2.default.sources.USER);
- } else if (context.format.list != null) {
- this.quill.format('list', false, _quill2.default.sources.USER);
- }
- }
- },
- 'indent code-block': makeCodeBlockHandler(true),
- 'outdent code-block': makeCodeBlockHandler(false),
- 'remove tab': {
- key: Keyboard.keys.TAB,
- shiftKey: true,
- collapsed: true,
- prefix: /\t$/,
- handler: function handler(range) {
- this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);
- }
- },
- 'tab': {
- key: Keyboard.keys.TAB,
- handler: function handler(range, context) {
- if (!context.collapsed) {
- this.quill.scroll.deleteAt(range.index, range.length);
- }
- this.quill.insertText(range.index, '\t', _quill2.default.sources.USER);
- this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);
- }
- },
- 'list empty enter': {
- key: Keyboard.keys.ENTER,
- collapsed: true,
- format: ['list'],
- empty: true,
- handler: function handler(range, context) {
- this.quill.format('list', false, _quill2.default.sources.USER);
- if (context.format.indent) {
- this.quill.format('indent', false, _quill2.default.sources.USER);
- }
- }
- },
- 'checklist enter': {
- key: Keyboard.keys.ENTER,
- collapsed: true,
- format: { list: 'checked' },
- handler: function handler(range) {
- this.quill.scroll.insertAt(range.index, '\n');
-
- var _quill$getLine3 = this.quill.getLine(range.index + 1),
- _quill$getLine4 = _slicedToArray(_quill$getLine3, 1),
- line = _quill$getLine4[0];
-
- line.format('list', 'unchecked');
- this.quill.update(_quill2.default.sources.USER);
- this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);
- this.quill.selection.scrollIntoView();
- }
- },
- 'header enter': {
- key: Keyboard.keys.ENTER,
- collapsed: true,
- format: ['header'],
- suffix: /^$/,
- handler: function handler(range) {
- this.quill.scroll.insertAt(range.index, '\n');
- this.quill.formatText(range.index + 1, 1, 'header', false, _quill2.default.sources.USER);
- this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);
- this.quill.selection.scrollIntoView();
- }
- },
- 'list autofill': {
- key: ' ',
- collapsed: true,
- format: { list: false },
- prefix: /^(1\.|-)$/,
- handler: function handler(range, context) {
- if (this.quill.scroll.whitelist != null && !this.quill.scroll.whitelist['list']) return true;
- var length = context.prefix.length;
- this.quill.scroll.deleteAt(range.index - length, length);
- this.quill.formatLine(range.index - length, 1, 'list', length === 1 ? 'bullet' : 'ordered', _quill2.default.sources.USER);
- this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);
- }
- },
- 'code exit': {
- key: Keyboard.keys.ENTER,
- collapsed: true,
- format: ['code-block'],
- prefix: /\n\n$/,
- suffix: /^\s+$/,
- handler: function handler(range) {
- this.quill.format('code-block', false, _quill2.default.sources.USER);
- this.quill.deleteText(range.index - 2, 1, _quill2.default.sources.USER);
- }
- }
- }
- };
-
- function handleBackspace(range, context) {
- if (range.index === 0) return;
-
- var _quill$getLine5 = this.quill.getLine(range.index),
- _quill$getLine6 = _slicedToArray(_quill$getLine5, 1),
- line = _quill$getLine6[0];
-
- var formats = {};
- if (context.offset === 0) {
- var curFormats = line.formats();
- var prevFormats = this.quill.getFormat(range.index - 1, 1);
- formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};
- }
- // Check for astral symbols
- var length = /[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(context.prefix) ? 2 : 1;
- this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);
- if (Object.keys(formats).length > 0) {
- this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);
- }
- this.quill.selection.scrollIntoView();
- }
-
- function handleDelete(range, context) {
- // Check for astral symbols
- var length = /^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(context.suffix) ? 2 : 1;
- if (range.index >= this.quill.getLength() - length) return;
- this.quill.deleteText(range.index, length, _quill2.default.sources.USER);
- }
-
- function handleDeleteRange(range) {
- this.quill.deleteText(range, _quill2.default.sources.USER);
- this.quill.setSelection(range.index, _quill2.default.sources.SILENT);
- this.quill.selection.scrollIntoView();
- }
-
- function handleEnter(range, context) {
- var _this3 = this;
-
- if (range.length > 0) {
- this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change
- }
- var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {
- if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {
- lineFormats[format] = context.format[format];
- }
- return lineFormats;
- }, {});
- this.quill.insertText(range.index, '\n', lineFormats, _quill2.default.sources.USER);
- // Earlier scroll.deleteAt might have messed up our selection,
- // so insertText's built in selection preservation is not reliable
- this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);
- this.quill.selection.scrollIntoView();
- Object.keys(context.format).forEach(function (name) {
- if (lineFormats[name] != null) return;
- if (Array.isArray(context.format[name])) return;
- if (name === 'link') return;
- _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);
- });
- }
-
- function makeCodeBlockHandler(indent) {
- return {
- key: Keyboard.keys.TAB,
- shiftKey: !indent,
- format: { 'code-block': true },
- handler: function handler(range) {
- var CodeBlock = _parchment2.default.query('code-block');
- var index = range.index,
- length = range.length;
-
- var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),
- _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),
- block = _quill$scroll$descend2[0],
- offset = _quill$scroll$descend2[1];
-
- if (block == null) return;
- var scrollIndex = this.quill.getIndex(block);
- var start = block.newlineIndex(offset, true) + 1;
- var end = block.newlineIndex(scrollIndex + offset + length);
- var lines = block.domNode.textContent.slice(start, end).split('\n');
- offset = 0;
- lines.forEach(function (line, i) {
- if (indent) {
- block.insertAt(start + offset, CodeBlock.TAB);
- offset += CodeBlock.TAB.length;
- if (i === 0) {
- index += CodeBlock.TAB.length;
- } else {
- length += CodeBlock.TAB.length;
- }
- } else if (line.startsWith(CodeBlock.TAB)) {
- block.deleteAt(start + offset, CodeBlock.TAB.length);
- offset -= CodeBlock.TAB.length;
- if (i === 0) {
- index -= CodeBlock.TAB.length;
- } else {
- length -= CodeBlock.TAB.length;
- }
- }
- offset += line.length + 1;
- });
- this.quill.update(_quill2.default.sources.USER);
- this.quill.setSelection(index, length, _quill2.default.sources.SILENT);
- }
- };
- }
-
- function makeFormatHandler(format) {
- return {
- key: format[0].toUpperCase(),
- shortKey: true,
- handler: function handler(range, context) {
- this.quill.format(format, !context.format[format], _quill2.default.sources.USER);
- }
- };
- }
-
- function normalize(binding) {
- if (typeof binding === 'string' || typeof binding === 'number') {
- return normalize({ key: binding });
- }
- if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {
- binding = (0, _clone2.default)(binding, false);
- }
- if (typeof binding.key === 'string') {
- if (Keyboard.keys[binding.key.toUpperCase()] != null) {
- binding.key = Keyboard.keys[binding.key.toUpperCase()];
- } else if (binding.key.length === 1) {
- binding.key = binding.key.toUpperCase().charCodeAt(0);
- } else {
- return null;
- }
- }
- return binding;
- }
-
- exports.default = Keyboard;
-
- /***/ },
- /* 53 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var _core = __webpack_require__(1);
-
- var _core2 = _interopRequireDefault(_core);
-
- var _align = __webpack_require__(45);
-
- var _direction = __webpack_require__(48);
-
- var _indent = __webpack_require__(54);
-
- var _blockquote = __webpack_require__(55);
-
- var _blockquote2 = _interopRequireDefault(_blockquote);
-
- var _header = __webpack_require__(56);
-
- var _header2 = _interopRequireDefault(_header);
-
- var _list = __webpack_require__(57);
-
- var _list2 = _interopRequireDefault(_list);
-
- var _background = __webpack_require__(46);
-
- var _color = __webpack_require__(47);
-
- var _font = __webpack_require__(49);
-
- var _size = __webpack_require__(50);
-
- var _bold = __webpack_require__(58);
-
- var _bold2 = _interopRequireDefault(_bold);
-
- var _italic = __webpack_require__(59);
-
- var _italic2 = _interopRequireDefault(_italic);
-
- var _link = __webpack_require__(60);
-
- var _link2 = _interopRequireDefault(_link);
-
- var _script = __webpack_require__(61);
-
- var _script2 = _interopRequireDefault(_script);
-
- var _strike = __webpack_require__(62);
-
- var _strike2 = _interopRequireDefault(_strike);
-
- var _underline = __webpack_require__(63);
-
- var _underline2 = _interopRequireDefault(_underline);
-
- var _image = __webpack_require__(64);
-
- var _image2 = _interopRequireDefault(_image);
-
- var _video = __webpack_require__(65);
-
- var _video2 = _interopRequireDefault(_video);
-
- var _code = __webpack_require__(28);
-
- var _code2 = _interopRequireDefault(_code);
-
- var _formula = __webpack_require__(66);
-
- var _formula2 = _interopRequireDefault(_formula);
-
- var _syntax = __webpack_require__(67);
-
- var _syntax2 = _interopRequireDefault(_syntax);
-
- var _toolbar = __webpack_require__(68);
-
- var _toolbar2 = _interopRequireDefault(_toolbar);
-
- var _icons = __webpack_require__(69);
-
- var _icons2 = _interopRequireDefault(_icons);
-
- var _picker = __webpack_require__(102);
-
- var _picker2 = _interopRequireDefault(_picker);
-
- var _colorPicker = __webpack_require__(104);
-
- var _colorPicker2 = _interopRequireDefault(_colorPicker);
-
- var _iconPicker = __webpack_require__(105);
-
- var _iconPicker2 = _interopRequireDefault(_iconPicker);
-
- var _tooltip = __webpack_require__(106);
-
- var _tooltip2 = _interopRequireDefault(_tooltip);
-
- var _bubble = __webpack_require__(107);
-
- var _bubble2 = _interopRequireDefault(_bubble);
-
- var _snow = __webpack_require__(109);
-
- var _snow2 = _interopRequireDefault(_snow);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- _core2.default.register({
- 'attributors/attribute/direction': _direction.DirectionAttribute,
-
- 'attributors/class/align': _align.AlignClass,
- 'attributors/class/background': _background.BackgroundClass,
- 'attributors/class/color': _color.ColorClass,
- 'attributors/class/direction': _direction.DirectionClass,
- 'attributors/class/font': _font.FontClass,
- 'attributors/class/size': _size.SizeClass,
-
- 'attributors/style/align': _align.AlignStyle,
- 'attributors/style/background': _background.BackgroundStyle,
- 'attributors/style/color': _color.ColorStyle,
- 'attributors/style/direction': _direction.DirectionStyle,
- 'attributors/style/font': _font.FontStyle,
- 'attributors/style/size': _size.SizeStyle
- }, true);
-
- _core2.default.register({
- 'formats/align': _align.AlignClass,
- 'formats/direction': _direction.DirectionClass,
- 'formats/indent': _indent.IndentClass,
-
- 'formats/background': _background.BackgroundStyle,
- 'formats/color': _color.ColorStyle,
- 'formats/font': _font.FontClass,
- 'formats/size': _size.SizeClass,
-
- 'formats/blockquote': _blockquote2.default,
- 'formats/code-block': _code2.default,
- 'formats/header': _header2.default,
- 'formats/list': _list2.default,
-
- 'formats/bold': _bold2.default,
- 'formats/code': _code.Code,
- 'formats/italic': _italic2.default,
- 'formats/link': _link2.default,
- 'formats/script': _script2.default,
- 'formats/strike': _strike2.default,
- 'formats/underline': _underline2.default,
-
- 'formats/image': _image2.default,
- 'formats/video': _video2.default,
-
- 'formats/list/item': _list.ListItem,
-
- 'modules/formula': _formula2.default,
- 'modules/syntax': _syntax2.default,
- 'modules/toolbar': _toolbar2.default,
-
- 'themes/bubble': _bubble2.default,
- 'themes/snow': _snow2.default,
-
- 'ui/icons': _icons2.default,
- 'ui/picker': _picker2.default,
- 'ui/icon-picker': _iconPicker2.default,
- 'ui/color-picker': _colorPicker2.default,
- 'ui/tooltip': _tooltip2.default
- }, true);
-
- module.exports = _core2.default;
-
- /***/ },
- /* 54 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.IndentClass = undefined;
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var IdentAttributor = function (_Parchment$Attributor) {
- _inherits(IdentAttributor, _Parchment$Attributor);
-
- function IdentAttributor() {
- _classCallCheck(this, IdentAttributor);
-
- return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));
- }
-
- _createClass(IdentAttributor, [{
- key: 'add',
- value: function add(node, value) {
- if (value === '+1' || value === '-1') {
- var indent = this.value(node) || 0;
- value = value === '+1' ? indent + 1 : indent - 1;
- }
- if (value === 0) {
- this.remove(node);
- return true;
- } else {
- return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);
- }
- }
- }, {
- key: 'canAdd',
- value: function canAdd(node, value) {
- return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));
- }
- }, {
- key: 'value',
- value: function value(node) {
- return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN
- }
- }]);
-
- return IdentAttributor;
- }(_parchment2.default.Attributor.Class);
-
- var IndentClass = new IdentAttributor('indent', 'ql-indent', {
- scope: _parchment2.default.Scope.BLOCK,
- whitelist: [1, 2, 3, 4, 5, 6, 7, 8]
- });
-
- exports.IndentClass = IndentClass;
-
- /***/ },
- /* 55 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _block = __webpack_require__(29);
-
- var _block2 = _interopRequireDefault(_block);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Blockquote = function (_Block) {
- _inherits(Blockquote, _Block);
-
- function Blockquote() {
- _classCallCheck(this, Blockquote);
-
- return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));
- }
-
- return Blockquote;
- }(_block2.default);
-
- Blockquote.blotName = 'blockquote';
- Blockquote.tagName = 'blockquote';
-
- exports.default = Blockquote;
-
- /***/ },
- /* 56 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _block = __webpack_require__(29);
-
- var _block2 = _interopRequireDefault(_block);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Header = function (_Block) {
- _inherits(Header, _Block);
-
- function Header() {
- _classCallCheck(this, Header);
-
- return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));
- }
-
- _createClass(Header, null, [{
- key: 'formats',
- value: function formats(domNode) {
- return this.tagName.indexOf(domNode.tagName) + 1;
- }
- }]);
-
- return Header;
- }(_block2.default);
-
- Header.blotName = 'header';
- Header.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];
-
- exports.default = Header;
-
- /***/ },
- /* 57 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.ListItem = undefined;
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _block = __webpack_require__(29);
-
- var _block2 = _interopRequireDefault(_block);
-
- var _container = __webpack_require__(42);
-
- var _container2 = _interopRequireDefault(_container);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- 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; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var ListItem = function (_Block) {
- _inherits(ListItem, _Block);
-
- function ListItem() {
- _classCallCheck(this, ListItem);
-
- return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));
- }
-
- _createClass(ListItem, [{
- key: 'format',
- value: function format(name, value) {
- if (name === List.blotName && !value) {
- this.replaceWith(_parchment2.default.create(this.statics.scope));
- } else {
- _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);
- }
- }
- }, {
- key: 'remove',
- value: function remove() {
- if (this.prev == null && this.next == null) {
- this.parent.remove();
- } else {
- _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);
- }
- }
- }, {
- key: 'replaceWith',
- value: function replaceWith(name, value) {
- this.parent.isolate(this.offset(this.parent), this.length());
- if (name === this.parent.statics.blotName) {
- this.parent.replaceWith(name, value);
- return this;
- } else {
- this.parent.unwrap();
- return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);
- }
- }
- }], [{
- key: 'formats',
- value: function formats(domNode) {
- return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);
- }
- }]);
-
- return ListItem;
- }(_block2.default);
-
- ListItem.blotName = 'list-item';
- ListItem.tagName = 'LI';
-
- var List = function (_Container) {
- _inherits(List, _Container);
-
- _createClass(List, null, [{
- key: 'create',
- value: function create(value) {
- var tagName = value === 'ordered' ? 'OL' : 'UL';
- var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);
- if (value === 'checked' || value === 'unchecked') {
- node.setAttribute('data-checked', value === 'checked');
- }
- return node;
- }
- }, {
- key: 'formats',
- value: function formats(domNode) {
- if (domNode.tagName === 'OL') return 'ordered';
- if (domNode.tagName === 'UL') {
- if (domNode.hasAttribute('data-checked')) {
- return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';
- } else {
- return 'bullet';
- }
- }
- return undefined;
- }
- }]);
-
- function List(domNode) {
- _classCallCheck(this, List);
-
- var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));
-
- domNode.addEventListener('click', function (e) {
- if (e.target.parentNode !== domNode) return;
- var format = _this2.statics.formats(domNode);
- var blot = _parchment2.default.find(e.target);
- if (format === 'checked') {
- blot.format('list', 'unchecked');
- } else if (format === 'unchecked') {
- blot.format('list', 'checked');
- }
- });
- return _this2;
- }
-
- _createClass(List, [{
- key: 'format',
- value: function format(name, value) {
- if (this.children.length > 0) {
- this.children.tail.format(name, value);
- }
- }
- }, {
- key: 'formats',
- value: function formats() {
- // We don't inherit from FormatBlot
- return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));
- }
- }, {
- key: 'insertBefore',
- value: function insertBefore(blot, ref) {
- if (blot instanceof ListItem) {
- _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);
- } else {
- var index = ref == null ? this.length() : ref.offset(this);
- var after = this.split(index);
- after.parent.insertBefore(blot, after);
- }
- }
- }, {
- key: 'optimize',
- value: function optimize() {
- _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this);
- var next = this.next;
- if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {
- next.moveChildren(this);
- next.remove();
- }
- }
- }, {
- key: 'replace',
- value: function replace(target) {
- if (target.statics.blotName !== this.statics.blotName) {
- var item = _parchment2.default.create(this.statics.defaultChild);
- target.moveChildren(item);
- this.appendChild(item);
- }
- _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);
- }
- }]);
-
- return List;
- }(_container2.default);
-
- List.blotName = 'list';
- List.scope = _parchment2.default.Scope.BLOCK_BLOT;
- List.tagName = ['OL', 'UL'];
- List.defaultChild = 'list-item';
- List.allowedChildren = [ListItem];
-
- exports.ListItem = ListItem;
- exports.default = List;
-
- /***/ },
- /* 58 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _inline = __webpack_require__(32);
-
- var _inline2 = _interopRequireDefault(_inline);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Bold = function (_Inline) {
- _inherits(Bold, _Inline);
-
- function Bold() {
- _classCallCheck(this, Bold);
-
- return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));
- }
-
- _createClass(Bold, [{
- key: 'optimize',
- value: function optimize() {
- _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this);
- if (this.domNode.tagName !== this.statics.tagName[0]) {
- this.replaceWith(this.statics.blotName);
- }
- }
- }], [{
- key: 'create',
- value: function create() {
- return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);
- }
- }, {
- key: 'formats',
- value: function formats() {
- return true;
- }
- }]);
-
- return Bold;
- }(_inline2.default);
-
- Bold.blotName = 'bold';
- Bold.tagName = ['STRONG', 'B'];
-
- exports.default = Bold;
-
- /***/ },
- /* 59 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _bold = __webpack_require__(58);
-
- var _bold2 = _interopRequireDefault(_bold);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Italic = function (_Bold) {
- _inherits(Italic, _Bold);
-
- function Italic() {
- _classCallCheck(this, Italic);
-
- return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));
- }
-
- return Italic;
- }(_bold2.default);
-
- Italic.blotName = 'italic';
- Italic.tagName = ['EM', 'I'];
-
- exports.default = Italic;
-
- /***/ },
- /* 60 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.sanitize = exports.default = undefined;
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _inline = __webpack_require__(32);
-
- var _inline2 = _interopRequireDefault(_inline);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Link = function (_Inline) {
- _inherits(Link, _Inline);
-
- function Link() {
- _classCallCheck(this, Link);
-
- return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));
- }
-
- _createClass(Link, [{
- key: 'format',
- value: function format(name, value) {
- if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);
- value = this.constructor.sanitize(value);
- this.domNode.setAttribute('href', value);
- }
- }], [{
- key: 'create',
- value: function create(value) {
- var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);
- value = this.sanitize(value);
- node.setAttribute('href', value);
- node.setAttribute('target', '_blank');
- return node;
- }
- }, {
- key: 'formats',
- value: function formats(domNode) {
- return domNode.getAttribute('href');
- }
- }, {
- key: 'sanitize',
- value: function sanitize(url) {
- return _sanitize(url, ['http', 'https', 'mailto']) ? url : this.SANITIZED_URL;
- }
- }]);
-
- return Link;
- }(_inline2.default);
-
- Link.blotName = 'link';
- Link.tagName = 'A';
- Link.SANITIZED_URL = 'about:blank';
-
- function _sanitize(url, protocols) {
- var anchor = document.createElement('a');
- anchor.href = url;
- var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));
- return protocols.indexOf(protocol) > -1;
- }
-
- exports.default = Link;
- exports.sanitize = _sanitize;
-
- /***/ },
- /* 61 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _inline = __webpack_require__(32);
-
- var _inline2 = _interopRequireDefault(_inline);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Script = function (_Inline) {
- _inherits(Script, _Inline);
-
- function Script() {
- _classCallCheck(this, Script);
-
- return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));
- }
-
- _createClass(Script, null, [{
- key: 'create',
- value: function create(value) {
- if (value === 'super') {
- return document.createElement('sup');
- } else if (value === 'sub') {
- return document.createElement('sub');
- } else {
- return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);
- }
- }
- }, {
- key: 'formats',
- value: function formats(domNode) {
- if (domNode.tagName === 'SUB') return 'sub';
- if (domNode.tagName === 'SUP') return 'super';
- return undefined;
- }
- }]);
-
- return Script;
- }(_inline2.default);
-
- Script.blotName = 'script';
- Script.tagName = ['SUB', 'SUP'];
-
- exports.default = Script;
-
- /***/ },
- /* 62 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _inline = __webpack_require__(32);
-
- var _inline2 = _interopRequireDefault(_inline);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Strike = function (_Inline) {
- _inherits(Strike, _Inline);
-
- function Strike() {
- _classCallCheck(this, Strike);
-
- return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));
- }
-
- return Strike;
- }(_inline2.default);
-
- Strike.blotName = 'strike';
- Strike.tagName = 'S';
-
- exports.default = Strike;
-
- /***/ },
- /* 63 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _inline = __webpack_require__(32);
-
- var _inline2 = _interopRequireDefault(_inline);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var Underline = function (_Inline) {
- _inherits(Underline, _Inline);
-
- function Underline() {
- _classCallCheck(this, Underline);
-
- return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));
- }
-
- return Underline;
- }(_inline2.default);
-
- Underline.blotName = 'underline';
- Underline.tagName = 'U';
-
- exports.default = Underline;
-
- /***/ },
- /* 64 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _embed = __webpack_require__(31);
-
- var _embed2 = _interopRequireDefault(_embed);
-
- var _link = __webpack_require__(60);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var ATTRIBUTES = ['alt', 'height', 'width'];
-
- var Image = function (_Embed) {
- _inherits(Image, _Embed);
-
- function Image() {
- _classCallCheck(this, Image);
-
- return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));
- }
-
- _createClass(Image, [{
- key: 'format',
- value: function format(name, value) {
- if (ATTRIBUTES.indexOf(name) > -1) {
- if (value) {
- this.domNode.setAttribute(name, value);
- } else {
- this.domNode.removeAttribute(name);
- }
- } else {
- _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);
- }
- }
- }], [{
- key: 'create',
- value: function create(value) {
- var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);
- if (typeof value === 'string') {
- node.setAttribute('src', this.sanitize(value));
- }
- return node;
- }
- }, {
- key: 'formats',
- value: function formats(domNode) {
- return ATTRIBUTES.reduce(function (formats, attribute) {
- if (domNode.hasAttribute(attribute)) {
- formats[attribute] = domNode.getAttribute(attribute);
- }
- return formats;
- }, {});
- }
- }, {
- key: 'match',
- value: function match(url) {
- return (/\.(jpe?g|gif|png)$/.test(url) || /^data:image\/.+;base64/.test(url)
- );
- }
- }, {
- key: 'sanitize',
- value: function sanitize(url) {
- return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';
- }
- }, {
- key: 'value',
- value: function value(domNode) {
- return domNode.getAttribute('src');
- }
- }]);
-
- return Image;
- }(_embed2.default);
-
- Image.blotName = 'image';
- Image.tagName = 'IMG';
-
- exports.default = Image;
-
- /***/ },
- /* 65 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _block = __webpack_require__(29);
-
- var _link = __webpack_require__(60);
-
- var _link2 = _interopRequireDefault(_link);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var ATTRIBUTES = ['height', 'width'];
-
- var Video = function (_BlockEmbed) {
- _inherits(Video, _BlockEmbed);
-
- function Video() {
- _classCallCheck(this, Video);
-
- return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));
- }
-
- _createClass(Video, [{
- key: 'format',
- value: function format(name, value) {
- if (ATTRIBUTES.indexOf(name) > -1) {
- if (value) {
- this.domNode.setAttribute(name, value);
- } else {
- this.domNode.removeAttribute(name);
- }
- } else {
- _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);
- }
- }
- }], [{
- key: 'create',
- value: function create(value) {
- var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);
- node.setAttribute('frameborder', '0');
- node.setAttribute('allowfullscreen', true);
- node.setAttribute('src', this.sanitize(value));
- return node;
- }
- }, {
- key: 'formats',
- value: function formats(domNode) {
- return ATTRIBUTES.reduce(function (formats, attribute) {
- if (domNode.hasAttribute(attribute)) {
- formats[attribute] = domNode.getAttribute(attribute);
- }
- return formats;
- }, {});
- }
- }, {
- key: 'sanitize',
- value: function sanitize(url) {
- return _link2.default.sanitize(url);
- }
- }, {
- key: 'value',
- value: function value(domNode) {
- return domNode.getAttribute('src');
- }
- }]);
-
- return Video;
- }(_block.BlockEmbed);
-
- Video.blotName = 'video';
- Video.className = 'ql-video';
- Video.tagName = 'IFRAME';
-
- exports.default = Video;
-
- /***/ },
- /* 66 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.FormulaBlot = undefined;
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _embed = __webpack_require__(31);
-
- var _embed2 = _interopRequireDefault(_embed);
-
- var _quill = __webpack_require__(18);
-
- var _quill2 = _interopRequireDefault(_quill);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var FormulaBlot = function (_Embed) {
- _inherits(FormulaBlot, _Embed);
-
- function FormulaBlot() {
- _classCallCheck(this, FormulaBlot);
-
- return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));
- }
-
- _createClass(FormulaBlot, [{
- key: 'index',
- value: function index() {
- return 1;
- }
- }], [{
- key: 'create',
- value: function create(value) {
- var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);
- if (typeof value === 'string') {
- window.katex.render(value, node);
- node.setAttribute('data-value', value);
- }
- node.setAttribute('contenteditable', false);
- return node;
- }
- }, {
- key: 'value',
- value: function value(domNode) {
- return domNode.getAttribute('data-value');
- }
- }]);
-
- return FormulaBlot;
- }(_embed2.default);
-
- FormulaBlot.blotName = 'formula';
- FormulaBlot.className = 'ql-formula';
- FormulaBlot.tagName = 'SPAN';
-
- function Formula() {
- if (window.katex == null) {
- throw new Error('Formula module requires KaTeX.');
- }
- _quill2.default.register(FormulaBlot, true);
- }
-
- exports.FormulaBlot = FormulaBlot;
- exports.default = Formula;
-
- /***/ },
- /* 67 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.CodeToken = exports.CodeBlock = undefined;
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _quill = __webpack_require__(18);
-
- var _quill2 = _interopRequireDefault(_quill);
-
- var _module = __webpack_require__(39);
-
- var _module2 = _interopRequireDefault(_module);
-
- var _code = __webpack_require__(28);
-
- var _code2 = _interopRequireDefault(_code);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var SyntaxCodeBlock = function (_CodeBlock) {
- _inherits(SyntaxCodeBlock, _CodeBlock);
-
- function SyntaxCodeBlock() {
- _classCallCheck(this, SyntaxCodeBlock);
-
- return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));
- }
-
- _createClass(SyntaxCodeBlock, [{
- key: 'replaceWith',
- value: function replaceWith(block) {
- this.domNode.textContent = this.domNode.textContent;
- this.attach();
- _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);
- }
- }, {
- key: 'highlight',
- value: function highlight(_highlight) {
- if (this.cachedHTML !== this.domNode.innerHTML) {
- var text = this.domNode.textContent;
- if (text.trim().length > 0 || this.cachedHTML == null) {
- this.domNode.innerHTML = _highlight(text);
- this.attach();
- }
- this.cachedHTML = this.domNode.innerHTML;
- }
- }
- }]);
-
- return SyntaxCodeBlock;
- }(_code2.default);
-
- SyntaxCodeBlock.className = 'ql-syntax';
-
- var CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {
- scope: _parchment2.default.Scope.INLINE
- });
-
- var Syntax = function (_Module) {
- _inherits(Syntax, _Module);
-
- function Syntax(quill, options) {
- _classCallCheck(this, Syntax);
-
- var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));
-
- if (typeof _this2.options.highlight !== 'function') {
- throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');
- }
- _quill2.default.register(CodeToken, true);
- _quill2.default.register(SyntaxCodeBlock, true);
- var timer = null;
- _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {
- if (timer != null) return;
- timer = setTimeout(function () {
- _this2.highlight();
- timer = null;
- }, 100);
- });
- _this2.highlight();
- return _this2;
- }
-
- _createClass(Syntax, [{
- key: 'highlight',
- value: function highlight() {
- var _this3 = this;
-
- if (this.quill.selection.composing) return;
- var range = this.quill.getSelection();
- this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {
- code.highlight(_this3.options.highlight);
- });
- this.quill.update(_quill2.default.sources.SILENT);
- if (range != null) {
- this.quill.setSelection(range, _quill2.default.sources.SILENT);
- }
- }
- }]);
-
- return Syntax;
- }(_module2.default);
-
- Syntax.DEFAULTS = {
- highlight: function () {
- if (window.hljs == null) return null;
- return function (text) {
- var result = window.hljs.highlightAuto(text);
- return result.value;
- };
- }()
- };
-
- exports.CodeBlock = SyntaxCodeBlock;
- exports.CodeToken = CodeToken;
- exports.default = Syntax;
-
- /***/ },
- /* 68 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.addControls = exports.default = undefined;
-
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _quillDelta = __webpack_require__(20);
-
- var _quillDelta2 = _interopRequireDefault(_quillDelta);
-
- var _parchment = __webpack_require__(2);
-
- var _parchment2 = _interopRequireDefault(_parchment);
-
- var _quill = __webpack_require__(18);
-
- var _quill2 = _interopRequireDefault(_quill);
-
- var _logger = __webpack_require__(37);
-
- var _logger2 = _interopRequireDefault(_logger);
-
- var _module = __webpack_require__(39);
-
- var _module2 = _interopRequireDefault(_module);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- 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; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var debug = (0, _logger2.default)('quill:toolbar');
-
- var Toolbar = function (_Module) {
- _inherits(Toolbar, _Module);
-
- function Toolbar(quill, options) {
- _classCallCheck(this, Toolbar);
-
- var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));
-
- if (Array.isArray(_this.options.container)) {
- var container = document.createElement('div');
- addControls(container, _this.options.container);
- quill.container.parentNode.insertBefore(container, quill.container);
- _this.container = container;
- } else if (typeof _this.options.container === 'string') {
- _this.container = document.querySelector(_this.options.container);
- } else {
- _this.container = _this.options.container;
- }
- if (!(_this.container instanceof HTMLElement)) {
- var _ret;
-
- return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);
- }
- _this.container.classList.add('ql-toolbar');
- _this.controls = [];
- _this.handlers = {};
- Object.keys(_this.options.handlers).forEach(function (format) {
- _this.addHandler(format, _this.options.handlers[format]);
- });
- [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {
- _this.attach(input);
- });
- _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {
- if (type === _quill2.default.events.SELECTION_CHANGE) {
- _this.update(range);
- }
- });
- _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {
- var _this$quill$selection = _this.quill.selection.getRange(),
- _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),
- range = _this$quill$selection2[0]; // quill.getSelection triggers update
-
-
- _this.update(range);
- });
- return _this;
- }
-
- _createClass(Toolbar, [{
- key: 'addHandler',
- value: function addHandler(format, handler) {
- this.handlers[format] = handler;
- }
- }, {
- key: 'attach',
- value: function attach(input) {
- var _this2 = this;
-
- var format = [].find.call(input.classList, function (className) {
- return className.indexOf('ql-') === 0;
- });
- if (!format) return;
- format = format.slice('ql-'.length);
- if (input.tagName === 'BUTTON') {
- input.setAttribute('type', 'button');
- }
- if (this.handlers[format] == null) {
- if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {
- debug.warn('ignoring attaching to disabled format', format, input);
- return;
- }
- if (_parchment2.default.query(format) == null) {
- debug.warn('ignoring attaching to nonexistent format', format, input);
- return;
- }
- }
- var eventName = input.tagName === 'SELECT' ? 'change' : 'click';
- input.addEventListener(eventName, function (e) {
- var value = void 0;
- if (input.tagName === 'SELECT') {
- if (input.selectedIndex < 0) return;
- var selected = input.options[input.selectedIndex];
- if (selected.hasAttribute('selected')) {
- value = false;
- } else {
- value = selected.value || false;
- }
- } else {
- if (input.classList.contains('ql-active')) {
- value = false;
- } else {
- value = input.value || !input.hasAttribute('value');
- }
- e.preventDefault();
- }
- _this2.quill.focus();
-
- var _quill$selection$getR = _this2.quill.selection.getRange(),
- _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),
- range = _quill$selection$getR2[0];
-
- if (_this2.handlers[format] != null) {
- _this2.handlers[format].call(_this2, value);
- } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {
- value = prompt('Enter ' + format);
- if (!value) return;
- _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);
- } else {
- _this2.quill.format(format, value, _quill2.default.sources.USER);
- }
- _this2.update(range);
- });
- // TODO use weakmap
- this.controls.push([format, input]);
- }
- }, {
- key: 'update',
- value: function update(range) {
- var formats = range == null ? {} : this.quill.getFormat(range);
- this.controls.forEach(function (pair) {
- var _pair = _slicedToArray(pair, 2),
- format = _pair[0],
- input = _pair[1];
-
- if (input.tagName === 'SELECT') {
- var option = void 0;
- if (range == null) {
- option = null;
- } else if (formats[format] == null) {
- option = input.querySelector('option[selected]');
- } else if (!Array.isArray(formats[format])) {
- var value = formats[format];
- if (typeof value === 'string') {
- value = value.replace(/\"/g, '\\"');
- }
- option = input.querySelector('option[value="' + value + '"]');
- }
- if (option == null) {
- input.value = ''; // TODO make configurable?
- input.selectedIndex = -1;
- } else {
- option.selected = true;
- }
- } else {
- if (range == null) {
- input.classList.remove('ql-active');
- } else if (input.hasAttribute('value')) {
- // both being null should match (default values)
- // '1' should match with 1 (headers)
- var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');
- input.classList.toggle('ql-active', isActive);
- } else {
- input.classList.toggle('ql-active', formats[format] != null);
- }
- }
- });
- }
- }]);
-
- return Toolbar;
- }(_module2.default);
-
- Toolbar.DEFAULTS = {};
-
- function addButton(container, format, value) {
- var input = document.createElement('button');
- input.setAttribute('type', 'button');
- input.classList.add('ql-' + format);
- if (value != null) {
- input.value = value;
- }
- container.appendChild(input);
- }
-
- function addControls(container, groups) {
- if (!Array.isArray(groups[0])) {
- groups = [groups];
- }
- groups.forEach(function (controls) {
- var group = document.createElement('span');
- group.classList.add('ql-formats');
- controls.forEach(function (control) {
- if (typeof control === 'string') {
- addButton(group, control);
- } else {
- var format = Object.keys(control)[0];
- var value = control[format];
- if (Array.isArray(value)) {
- addSelect(group, format, value);
- } else {
- addButton(group, format, value);
- }
- }
- });
- container.appendChild(group);
- });
- }
-
- function addSelect(container, format, values) {
- var input = document.createElement('select');
- input.classList.add('ql-' + format);
- values.forEach(function (value) {
- var option = document.createElement('option');
- if (value !== false) {
- option.setAttribute('value', value);
- } else {
- option.setAttribute('selected', 'selected');
- }
- input.appendChild(option);
- });
- container.appendChild(input);
- }
-
- Toolbar.DEFAULTS = {
- container: null,
- handlers: {
- clean: function clean() {
- var _this3 = this;
-
- var range = this.quill.getSelection();
- if (range == null) return;
- if (range.length == 0) {
- var formats = this.quill.getFormat();
- Object.keys(formats).forEach(function (name) {
- // Clean functionality in existing apps only clean inline formats
- if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {
- _this3.quill.format(name, false);
- }
- });
- } else {
- this.quill.removeFormat(range, _quill2.default.sources.USER);
- }
- },
- direction: function direction(value) {
- var align = this.quill.getFormat()['align'];
- if (value === 'rtl' && align == null) {
- this.quill.format('align', 'right', _quill2.default.sources.USER);
- } else if (!value && align === 'right') {
- this.quill.format('align', false, _quill2.default.sources.USER);
- }
- this.quill.format('direction', value, _quill2.default.sources.USER);
- },
- indent: function indent(value) {
- var range = this.quill.getSelection();
- var formats = this.quill.getFormat(range);
- var indent = parseInt(formats.indent || 0);
- if (value === '+1' || value === '-1') {
- var modifier = value === '+1' ? 1 : -1;
- if (formats.direction === 'rtl') modifier *= -1;
- this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);
- }
- },
- link: function link(value) {
- if (value === true) {
- value = prompt('Enter link URL:');
- }
- this.quill.format('link', value, _quill2.default.sources.USER);
- },
- list: function list(value) {
- var range = this.quill.getSelection();
- var formats = this.quill.getFormat(range);
- if (value === 'check') {
- if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {
- this.quill.format('list', false, _quill2.default.sources.USER);
- } else {
- this.quill.format('list', 'unchecked', _quill2.default.sources.USER);
- }
- } else {
- this.quill.format('list', value, _quill2.default.sources.USER);
- }
- }
- }
- };
-
- exports.default = Toolbar;
- exports.addControls = addControls;
-
- /***/ },
- /* 69 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- module.exports = {
- 'align': {
- '': __webpack_require__(70),
- 'center': __webpack_require__(71),
- 'right': __webpack_require__(72),
- 'justify': __webpack_require__(73)
- },
- 'background': __webpack_require__(74),
- 'blockquote': __webpack_require__(75),
- 'bold': __webpack_require__(76),
- 'clean': __webpack_require__(77),
- 'code': __webpack_require__(78),
- 'code-block': __webpack_require__(78),
- 'color': __webpack_require__(79),
- 'direction': {
- '': __webpack_require__(80),
- 'rtl': __webpack_require__(81)
- },
- 'float': {
- 'center': __webpack_require__(82),
- 'full': __webpack_require__(83),
- 'left': __webpack_require__(84),
- 'right': __webpack_require__(85)
- },
- 'formula': __webpack_require__(86),
- 'header': {
- '1': __webpack_require__(87),
- '2': __webpack_require__(88)
- },
- 'italic': __webpack_require__(89),
- 'image': __webpack_require__(90),
- 'indent': {
- '+1': __webpack_require__(91),
- '-1': __webpack_require__(92)
- },
- 'link': __webpack_require__(93),
- 'list': {
- 'ordered': __webpack_require__(94),
- 'bullet': __webpack_require__(95),
- 'check': __webpack_require__(96)
- },
- 'script': {
- 'sub': __webpack_require__(97),
- 'super': __webpack_require__(98)
- },
- 'strike': __webpack_require__(99),
- 'underline': __webpack_require__(100),
- 'video': __webpack_require__(101)
- };
-
- /***/ },
- /* 70 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 71 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 72 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 73 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 74 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 75 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 76 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 77 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 78 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 79 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 80 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 81 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 82 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 83 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 84 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 85 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 86 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 87 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 88 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 89 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 90 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 91 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 92 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 93 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 94 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 95 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 96 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 97 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 98 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 99 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 100 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 101 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 102 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _dropdown = __webpack_require__(103);
-
- var _dropdown2 = _interopRequireDefault(_dropdown);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var Picker = function () {
- function Picker(select) {
- var _this = this;
-
- _classCallCheck(this, Picker);
-
- this.select = select;
- this.container = document.createElement('span');
- this.buildPicker();
- this.select.style.display = 'none';
- this.select.parentNode.insertBefore(this.container, this.select);
- this.label.addEventListener('mousedown', function () {
- _this.container.classList.toggle('ql-expanded');
- });
- this.select.addEventListener('change', this.update.bind(this));
- }
-
- _createClass(Picker, [{
- key: 'buildItem',
- value: function buildItem(option) {
- var _this2 = this;
-
- var item = document.createElement('span');
- item.classList.add('ql-picker-item');
- if (option.hasAttribute('value')) {
- item.setAttribute('data-value', option.getAttribute('value'));
- }
- if (option.textContent) {
- item.setAttribute('data-label', option.textContent);
- }
- item.addEventListener('click', function () {
- _this2.selectItem(item, true);
- });
- return item;
- }
- }, {
- key: 'buildLabel',
- value: function buildLabel() {
- var label = document.createElement('span');
- label.classList.add('ql-picker-label');
- label.innerHTML = _dropdown2.default;
- this.container.appendChild(label);
- return label;
- }
- }, {
- key: 'buildOptions',
- value: function buildOptions() {
- var _this3 = this;
-
- var options = document.createElement('span');
- options.classList.add('ql-picker-options');
- [].slice.call(this.select.options).forEach(function (option) {
- var item = _this3.buildItem(option);
- options.appendChild(item);
- if (option.hasAttribute('selected')) {
- _this3.selectItem(item);
- }
- });
- this.container.appendChild(options);
- }
- }, {
- key: 'buildPicker',
- value: function buildPicker() {
- var _this4 = this;
-
- [].slice.call(this.select.attributes).forEach(function (item) {
- _this4.container.setAttribute(item.name, item.value);
- });
- this.container.classList.add('ql-picker');
- this.label = this.buildLabel();
- this.buildOptions();
- }
- }, {
- key: 'close',
- value: function close() {
- this.container.classList.remove('ql-expanded');
- }
- }, {
- key: 'selectItem',
- value: function selectItem(item) {
- var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
-
- var selected = this.container.querySelector('.ql-selected');
- if (item === selected) return;
- if (selected != null) {
- selected.classList.remove('ql-selected');
- }
- if (item == null) return;
- item.classList.add('ql-selected');
- this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);
- if (item.hasAttribute('data-value')) {
- this.label.setAttribute('data-value', item.getAttribute('data-value'));
- } else {
- this.label.removeAttribute('data-value');
- }
- if (item.hasAttribute('data-label')) {
- this.label.setAttribute('data-label', item.getAttribute('data-label'));
- } else {
- this.label.removeAttribute('data-label');
- }
- if (trigger) {
- if (typeof Event === 'function') {
- this.select.dispatchEvent(new Event('change'));
- } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {
- // IE11
- var event = document.createEvent('Event');
- event.initEvent('change', true, true);
- this.select.dispatchEvent(event);
- }
- this.close();
- }
- }
- }, {
- key: 'update',
- value: function update() {
- var option = void 0;
- if (this.select.selectedIndex > -1) {
- var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];
- option = this.select.options[this.select.selectedIndex];
- this.selectItem(item);
- } else {
- this.selectItem(null);
- }
- var isActive = option != null && option !== this.select.querySelector('option[selected]');
- this.label.classList.toggle('ql-active', isActive);
- }
- }]);
-
- return Picker;
- }();
-
- exports.default = Picker;
-
- /***/ },
- /* 103 */
- /***/ function(module, exports) {
-
- module.exports = "";
-
- /***/ },
- /* 104 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _picker = __webpack_require__(102);
-
- var _picker2 = _interopRequireDefault(_picker);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var ColorPicker = function (_Picker) {
- _inherits(ColorPicker, _Picker);
-
- function ColorPicker(select, label) {
- _classCallCheck(this, ColorPicker);
-
- var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));
-
- _this.label.innerHTML = label;
- _this.container.classList.add('ql-color-picker');
- [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {
- item.classList.add('ql-primary');
- });
- return _this;
- }
-
- _createClass(ColorPicker, [{
- key: 'buildItem',
- value: function buildItem(option) {
- var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);
- item.style.backgroundColor = option.getAttribute('value') || '';
- return item;
- }
- }, {
- key: 'selectItem',
- value: function selectItem(item, trigger) {
- _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);
- var colorLabel = this.label.querySelector('.ql-color-label');
- var value = item ? item.getAttribute('data-value') || '' : '';
- if (colorLabel) {
- if (colorLabel.tagName === 'line') {
- colorLabel.style.stroke = value;
- } else {
- colorLabel.style.fill = value;
- }
- }
- }
- }]);
-
- return ColorPicker;
- }(_picker2.default);
-
- exports.default = ColorPicker;
-
- /***/ },
- /* 105 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _picker = __webpack_require__(102);
-
- var _picker2 = _interopRequireDefault(_picker);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var IconPicker = function (_Picker) {
- _inherits(IconPicker, _Picker);
-
- function IconPicker(select, icons) {
- _classCallCheck(this, IconPicker);
-
- var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));
-
- _this.container.classList.add('ql-icon-picker');
- [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {
- item.innerHTML = icons[item.getAttribute('data-value') || ''];
- });
- _this.defaultItem = _this.container.querySelector('.ql-selected');
- _this.selectItem(_this.defaultItem);
- return _this;
- }
-
- _createClass(IconPicker, [{
- key: 'selectItem',
- value: function selectItem(item, trigger) {
- _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);
- item = item || this.defaultItem;
- this.label.innerHTML = item.innerHTML;
- }
- }]);
-
- return IconPicker;
- }(_picker2.default);
-
- exports.default = IconPicker;
-
- /***/ },
- /* 106 */
- /***/ function(module, exports) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- var Tooltip = function () {
- function Tooltip(quill, boundsContainer) {
- var _this = this;
-
- _classCallCheck(this, Tooltip);
-
- this.quill = quill;
- this.boundsContainer = boundsContainer || document.body;
- this.root = quill.addContainer('ql-tooltip');
- this.root.innerHTML = this.constructor.TEMPLATE;
- this.quill.root.addEventListener('scroll', function () {
- _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';
- });
- this.hide();
- }
-
- _createClass(Tooltip, [{
- key: 'hide',
- value: function hide() {
- this.root.classList.add('ql-hidden');
- }
- }, {
- key: 'position',
- value: function position(reference) {
- var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;
- var top = reference.bottom + this.quill.root.scrollTop;
- this.root.style.left = left + 'px';
- this.root.style.top = top + 'px';
- this.root.classList.remove('ql-flip');
- var containerBounds = this.boundsContainer.getBoundingClientRect();
- var rootBounds = this.root.getBoundingClientRect();
- var shift = 0;
- if (rootBounds.right > containerBounds.right) {
- shift = containerBounds.right - rootBounds.right;
- this.root.style.left = left + shift + 'px';
- }
- if (rootBounds.left < containerBounds.left) {
- shift = containerBounds.left - rootBounds.left;
- this.root.style.left = left + shift + 'px';
- }
- if (rootBounds.bottom > containerBounds.bottom) {
- var height = rootBounds.bottom - rootBounds.top;
- var verticalShift = containerBounds.bottom - rootBounds.bottom - height;
- this.root.style.top = top + verticalShift + 'px';
- this.root.classList.add('ql-flip');
- }
- return shift;
- }
- }, {
- key: 'show',
- value: function show() {
- this.root.classList.remove('ql-editing');
- this.root.classList.remove('ql-hidden');
- }
- }]);
-
- return Tooltip;
- }();
-
- exports.default = Tooltip;
-
- /***/ },
- /* 107 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.BubbleTooltip = undefined;
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _extend = __webpack_require__(25);
-
- var _extend2 = _interopRequireDefault(_extend);
-
- var _emitter = __webpack_require__(35);
-
- var _emitter2 = _interopRequireDefault(_emitter);
-
- var _base = __webpack_require__(108);
-
- var _base2 = _interopRequireDefault(_base);
-
- var _selection = __webpack_require__(40);
-
- var _icons = __webpack_require__(69);
-
- var _icons2 = _interopRequireDefault(_icons);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];
-
- var BubbleTheme = function (_BaseTheme) {
- _inherits(BubbleTheme, _BaseTheme);
-
- function BubbleTheme(quill, options) {
- _classCallCheck(this, BubbleTheme);
-
- if (options.modules.toolbar != null && options.modules.toolbar.container == null) {
- options.modules.toolbar.container = TOOLBAR_CONFIG;
- }
-
- var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));
-
- _this.quill.container.classList.add('ql-bubble');
- return _this;
- }
-
- _createClass(BubbleTheme, [{
- key: 'extendToolbar',
- value: function extendToolbar(toolbar) {
- this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);
- this.tooltip.root.appendChild(toolbar.container);
- this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);
- this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);
- }
- }]);
-
- return BubbleTheme;
- }(_base2.default);
-
- BubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {
- modules: {
- toolbar: {
- handlers: {
- link: function link(value) {
- if (!value) {
- this.quill.format('link', false);
- } else {
- this.quill.theme.tooltip.edit();
- }
- }
- }
- }
- }
- });
-
- var BubbleTooltip = function (_BaseTooltip) {
- _inherits(BubbleTooltip, _BaseTooltip);
-
- function BubbleTooltip(quill, bounds) {
- _classCallCheck(this, BubbleTooltip);
-
- var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));
-
- _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {
- if (type !== _emitter2.default.events.SELECTION_CHANGE) return;
- if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {
- _this2.show();
- // Lock our width so we will expand beyond our offsetParent boundaries
- _this2.root.style.left = '0px';
- _this2.root.style.width = '';
- _this2.root.style.width = _this2.root.offsetWidth + 'px';
- var lines = _this2.quill.getLines(range.index, range.length);
- if (lines.length === 1) {
- _this2.position(_this2.quill.getBounds(range));
- } else {
- var lastLine = lines[lines.length - 1];
- var index = _this2.quill.getIndex(lastLine);
- var length = Math.min(lastLine.length() - 1, range.index + range.length - index);
- var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));
- _this2.position(_bounds);
- }
- } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {
- _this2.hide();
- }
- });
- return _this2;
- }
-
- _createClass(BubbleTooltip, [{
- key: 'listen',
- value: function listen() {
- var _this3 = this;
-
- _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);
- this.root.querySelector('.ql-close').addEventListener('click', function () {
- _this3.root.classList.remove('ql-editing');
- });
- this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {
- // Let selection be restored by toolbar handlers before repositioning
- setTimeout(function () {
- if (_this3.root.classList.contains('ql-hidden')) return;
- var range = _this3.quill.getSelection();
- if (range != null) {
- _this3.position(_this3.quill.getBounds(range));
- }
- }, 1);
- });
- }
- }, {
- key: 'cancel',
- value: function cancel() {
- this.show();
- }
- }, {
- key: 'position',
- value: function position(reference) {
- var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);
- var arrow = this.root.querySelector('.ql-tooltip-arrow');
- arrow.style.marginLeft = '';
- if (shift === 0) return shift;
- arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';
- }
- }]);
-
- return BubbleTooltip;
- }(_base.BaseTooltip);
-
- BubbleTooltip.TEMPLATE = ['', ''].join('');
-
- exports.BubbleTooltip = BubbleTooltip;
- exports.default = BubbleTheme;
-
- /***/ },
- /* 108 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = exports.BaseTooltip = undefined;
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _extend = __webpack_require__(25);
-
- var _extend2 = _interopRequireDefault(_extend);
-
- var _quillDelta = __webpack_require__(20);
-
- var _quillDelta2 = _interopRequireDefault(_quillDelta);
-
- var _emitter = __webpack_require__(35);
-
- var _emitter2 = _interopRequireDefault(_emitter);
-
- var _keyboard = __webpack_require__(52);
-
- var _keyboard2 = _interopRequireDefault(_keyboard);
-
- var _theme = __webpack_require__(41);
-
- var _theme2 = _interopRequireDefault(_theme);
-
- var _colorPicker = __webpack_require__(104);
-
- var _colorPicker2 = _interopRequireDefault(_colorPicker);
-
- var _iconPicker = __webpack_require__(105);
-
- var _iconPicker2 = _interopRequireDefault(_iconPicker);
-
- var _picker = __webpack_require__(102);
-
- var _picker2 = _interopRequireDefault(_picker);
-
- var _tooltip = __webpack_require__(106);
-
- var _tooltip2 = _interopRequireDefault(_tooltip);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var ALIGNS = [false, 'center', 'right', 'justify'];
-
- var COLORS = ["#000000", "#e60000", "#ff9900", "#ffff00", "#008a00", "#0066cc", "#9933ff", "#ffffff", "#facccc", "#ffebcc", "#ffffcc", "#cce8cc", "#cce0f5", "#ebd6ff", "#bbbbbb", "#f06666", "#ffc266", "#ffff66", "#66b966", "#66a3e0", "#c285ff", "#888888", "#a10000", "#b26b00", "#b2b200", "#006100", "#0047b2", "#6b24b2", "#444444", "#5c0000", "#663d00", "#666600", "#003700", "#002966", "#3d1466"];
-
- var FONTS = [false, 'serif', 'monospace'];
-
- var HEADERS = ['1', '2', '3', false];
-
- var SIZES = ['small', false, 'large', 'huge'];
-
- var BaseTheme = function (_Theme) {
- _inherits(BaseTheme, _Theme);
-
- function BaseTheme(quill, options) {
- _classCallCheck(this, BaseTheme);
-
- var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));
-
- var listener = function listener(e) {
- if (!document.body.contains(quill.root)) {
- return document.body.removeEventListener('click', listener);
- }
- if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {
- _this.tooltip.hide();
- }
- if (_this.pickers != null) {
- _this.pickers.forEach(function (picker) {
- if (!picker.container.contains(e.target)) {
- picker.close();
- }
- });
- }
- };
- document.body.addEventListener('click', listener);
- return _this;
- }
-
- _createClass(BaseTheme, [{
- key: 'addModule',
- value: function addModule(name) {
- var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);
- if (name === 'toolbar') {
- this.extendToolbar(module);
- }
- return module;
- }
- }, {
- key: 'buildButtons',
- value: function buildButtons(buttons, icons) {
- buttons.forEach(function (button) {
- var className = button.getAttribute('class') || '';
- className.split(/\s+/).forEach(function (name) {
- if (!name.startsWith('ql-')) return;
- name = name.slice('ql-'.length);
- if (icons[name] == null) return;
- if (name === 'direction') {
- button.innerHTML = icons[name][''] + icons[name]['rtl'];
- } else if (typeof icons[name] === 'string') {
- button.innerHTML = icons[name];
- } else {
- var value = button.value || '';
- if (value != null && icons[name][value]) {
- button.innerHTML = icons[name][value];
- }
- }
- });
- });
- }
- }, {
- key: 'buildPickers',
- value: function buildPickers(selects, icons) {
- var _this2 = this;
-
- this.pickers = selects.map(function (select) {
- if (select.classList.contains('ql-align')) {
- if (select.querySelector('option') == null) {
- fillSelect(select, ALIGNS);
- }
- return new _iconPicker2.default(select, icons.align);
- } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {
- var format = select.classList.contains('ql-background') ? 'background' : 'color';
- if (select.querySelector('option') == null) {
- fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');
- }
- return new _colorPicker2.default(select, icons[format]);
- } else {
- if (select.querySelector('option') == null) {
- if (select.classList.contains('ql-font')) {
- fillSelect(select, FONTS);
- } else if (select.classList.contains('ql-header')) {
- fillSelect(select, HEADERS);
- } else if (select.classList.contains('ql-size')) {
- fillSelect(select, SIZES);
- }
- }
- return new _picker2.default(select);
- }
- });
- var update = function update() {
- _this2.pickers.forEach(function (picker) {
- picker.update();
- });
- };
- this.quill.on(_emitter2.default.events.SELECTION_CHANGE, update).on(_emitter2.default.events.SCROLL_OPTIMIZE, update);
- }
- }]);
-
- return BaseTheme;
- }(_theme2.default);
-
- BaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {
- modules: {
- toolbar: {
- handlers: {
- formula: function formula() {
- this.quill.theme.tooltip.edit('formula');
- },
- image: function image() {
- var _this3 = this;
-
- var fileInput = this.container.querySelector('input.ql-image[type=file]');
- if (fileInput == null) {
- fileInput = document.createElement('input');
- fileInput.setAttribute('type', 'file');
- fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon, image/svg+xml');
- fileInput.classList.add('ql-image');
- fileInput.addEventListener('change', function () {
- if (fileInput.files != null && fileInput.files[0] != null) {
- var reader = new FileReader();
- reader.onload = function (e) {
- var range = _this3.quill.getSelection(true);
- _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);
- fileInput.value = "";
- };
- reader.readAsDataURL(fileInput.files[0]);
- }
- });
- this.container.appendChild(fileInput);
- }
- fileInput.click();
- },
- video: function video() {
- this.quill.theme.tooltip.edit('video');
- }
- }
- }
- }
- });
-
- var BaseTooltip = function (_Tooltip) {
- _inherits(BaseTooltip, _Tooltip);
-
- function BaseTooltip(quill, boundsContainer) {
- _classCallCheck(this, BaseTooltip);
-
- var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));
-
- _this4.textbox = _this4.root.querySelector('input[type="text"]');
- _this4.listen();
- return _this4;
- }
-
- _createClass(BaseTooltip, [{
- key: 'listen',
- value: function listen() {
- var _this5 = this;
-
- this.textbox.addEventListener('keydown', function (event) {
- if (_keyboard2.default.match(event, 'enter')) {
- _this5.save();
- event.preventDefault();
- } else if (_keyboard2.default.match(event, 'escape')) {
- _this5.cancel();
- event.preventDefault();
- }
- });
- }
- }, {
- key: 'cancel',
- value: function cancel() {
- this.hide();
- }
- }, {
- key: 'edit',
- value: function edit() {
- var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';
- var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
-
- this.root.classList.remove('ql-hidden');
- this.root.classList.add('ql-editing');
- if (preview != null) {
- this.textbox.value = preview;
- } else if (mode !== this.root.getAttribute('data-mode')) {
- this.textbox.value = '';
- }
- this.position(this.quill.getBounds(this.quill.selection.savedRange));
- this.textbox.select();
- this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');
- this.root.setAttribute('data-mode', mode);
- }
- }, {
- key: 'restoreFocus',
- value: function restoreFocus() {
- var scrollTop = this.quill.root.scrollTop;
- this.quill.focus();
- this.quill.root.scrollTop = scrollTop;
- }
- }, {
- key: 'save',
- value: function save() {
- var value = this.textbox.value;
- switch (this.root.getAttribute('data-mode')) {
- case 'link':
- {
- var scrollTop = this.quill.root.scrollTop;
- if (this.linkRange) {
- this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);
- delete this.linkRange;
- } else {
- this.restoreFocus();
- this.quill.format('link', value, _emitter2.default.sources.USER);
- }
- this.quill.root.scrollTop = scrollTop;
- break;
- }
- case 'video':
- {
- var match = value.match(/^(https?):\/\/(www\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/) || value.match(/^(https?):\/\/(www\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);
- if (match) {
- value = match[1] + '://www.youtube.com/embed/' + match[3] + '?showinfo=0';
- } else if (match = value.match(/^(https?):\/\/(www\.)?vimeo\.com\/(\d+)/)) {
- // eslint-disable-line no-cond-assign
- value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';
- }
- } // eslint-disable-next-line no-fallthrough
- case 'formula':
- {
- var range = this.quill.getSelection(true);
- var index = range.index + range.length;
- if (range != null) {
- this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);
- if (this.root.getAttribute('data-mode') === 'formula') {
- this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);
- }
- this.quill.setSelection(index + 2, _emitter2.default.sources.USER);
- }
- break;
- }
- default:
- }
- this.textbox.value = '';
- this.hide();
- }
- }]);
-
- return BaseTooltip;
- }(_tooltip2.default);
-
- function fillSelect(select, values) {
- var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
-
- values.forEach(function (value) {
- var option = document.createElement('option');
- if (value === defaultValue) {
- option.setAttribute('selected', 'selected');
- } else {
- option.setAttribute('value', value);
- }
- select.appendChild(option);
- });
- }
-
- exports.BaseTooltip = BaseTooltip;
- exports.default = BaseTheme;
-
- /***/ },
- /* 109 */
- /***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
-
- var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
-
- var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
- var _extend = __webpack_require__(25);
-
- var _extend2 = _interopRequireDefault(_extend);
-
- var _emitter = __webpack_require__(35);
-
- var _emitter2 = _interopRequireDefault(_emitter);
-
- var _base = __webpack_require__(108);
-
- var _base2 = _interopRequireDefault(_base);
-
- var _link = __webpack_require__(60);
-
- var _link2 = _interopRequireDefault(_link);
-
- var _selection = __webpack_require__(40);
-
- var _icons = __webpack_require__(69);
-
- var _icons2 = _interopRequireDefault(_icons);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
-
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
-
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
-
- var TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];
-
- var SnowTheme = function (_BaseTheme) {
- _inherits(SnowTheme, _BaseTheme);
-
- function SnowTheme(quill, options) {
- _classCallCheck(this, SnowTheme);
-
- if (options.modules.toolbar != null && options.modules.toolbar.container == null) {
- options.modules.toolbar.container = TOOLBAR_CONFIG;
- }
-
- var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));
-
- _this.quill.container.classList.add('ql-snow');
- return _this;
- }
-
- _createClass(SnowTheme, [{
- key: 'extendToolbar',
- value: function extendToolbar(toolbar) {
- toolbar.container.classList.add('ql-snow');
- this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);
- this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);
- this.tooltip = new SnowTooltip(this.quill, this.options.bounds);
- if (toolbar.container.querySelector('.ql-link')) {
- this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {
- toolbar.handlers['link'].call(toolbar, !context.format.link);
- });
- }
- }
- }]);
-
- return SnowTheme;
- }(_base2.default);
-
- SnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {
- modules: {
- toolbar: {
- handlers: {
- link: function link(value) {
- if (value) {
- var range = this.quill.getSelection();
- if (range == null || range.length == 0) return;
- var preview = this.quill.getText(range);
- if (/^\S+@\S+\.\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {
- preview = 'mailto:' + preview;
- }
- var tooltip = this.quill.theme.tooltip;
- tooltip.edit('link', preview);
- } else {
- this.quill.format('link', false);
- }
- }
- }
- }
- }
- });
-
- var SnowTooltip = function (_BaseTooltip) {
- _inherits(SnowTooltip, _BaseTooltip);
-
- function SnowTooltip(quill, bounds) {
- _classCallCheck(this, SnowTooltip);
-
- var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));
-
- _this2.preview = _this2.root.querySelector('a.ql-preview');
- return _this2;
- }
-
- _createClass(SnowTooltip, [{
- key: 'listen',
- value: function listen() {
- var _this3 = this;
-
- _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);
- this.root.querySelector('a.ql-action').addEventListener('click', function (event) {
- if (_this3.root.classList.contains('ql-editing')) {
- _this3.save();
- } else {
- _this3.edit('link', _this3.preview.textContent);
- }
- event.preventDefault();
- });
- this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {
- if (_this3.linkRange != null) {
- _this3.restoreFocus();
- _this3.quill.formatText(_this3.linkRange, 'link', false, _emitter2.default.sources.USER);
- delete _this3.linkRange;
- }
- event.preventDefault();
- _this3.hide();
- });
- this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {
- if (range == null) return;
- if (range.length === 0 && source === _emitter2.default.sources.USER) {
- var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),
- _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),
- link = _quill$scroll$descend2[0],
- offset = _quill$scroll$descend2[1];
-
- if (link != null) {
- _this3.linkRange = new _selection.Range(range.index - offset, link.length());
- var preview = _link2.default.formats(link.domNode);
- _this3.preview.textContent = preview;
- _this3.preview.setAttribute('href', preview);
- _this3.show();
- _this3.position(_this3.quill.getBounds(_this3.linkRange));
- return;
- }
- } else {
- delete _this3.linkRange;
- }
- _this3.hide();
- });
- }
- }, {
- key: 'show',
- value: function show() {
- _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);
- this.root.removeAttribute('data-mode');
- }
- }]);
-
- return SnowTooltip;
- }(_base.BaseTooltip);
-
- SnowTooltip.TEMPLATE = ['', '', '', ''].join('');
-
- exports.default = SnowTheme;
-
- /***/ }
- /******/ ])
- });
- ;
-
-/***/ },
-/* 2 */
-/*!**************************!*\
- !*** ./src/component.js ***!
- \**************************/
-/***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var React = __webpack_require__(/*! react */ 3);
- var ReactDOM = __webpack_require__(/*! react-dom */ 4);
- var QuillMixin = __webpack_require__(/*! ./mixin */ 5);
- var find = __webpack_require__(/*! lodash/find */ 6);
- var some = __webpack_require__(/*! lodash/some */ 128);
- var isEqual = __webpack_require__(/*! lodash/isEqual */ 136);
- var T = React.PropTypes;
-
- var QuillComponent = React.createClass({
-
- displayName: 'Quill',
-
- mixins: [ QuillMixin ],
-
- propTypes: {
- id: T.string,
- className: T.string,
- theme: T.string,
- style: T.object,
- readOnly: T.bool,
- value: T.string,
- defaultValue: T.string,
- placeholder: T.string,
- bounds: T.oneOfType([T.string, T.element]),
- onKeyPress: T.func,
- onKeyDown: T.func,
- onKeyUp: T.func,
- onChange: T.func,
- onChangeSelection: T.func,
-
- modules: function(props) {
- var isNotObject = T.object.apply(this, arguments);
- if (isNotObject) return isNotObject;
-
- if (
- props.modules &&
- props.modules.toolbar &&
- props.modules.toolbar[0] &&
- props.modules.toolbar[0].type
- ) return new Error(
- 'Since v1.0.0, React Quill will not create a custom toolbar for you ' +
- 'anymore. Create a toolbar explictly, or let Quill create one. ' +
- 'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'
- );
- },
-
- toolbar: function(props) {
- if ('toolbar' in props) return new Error(
- 'The `toolbar` prop has been deprecated. Use `modules.toolbar` instead. ' +
- 'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'
- );
- },
-
- formats: function(props) {
- var isNotArrayOfString = T.arrayOf(T.string).apply(this, arguments);
-
- if (isNotArrayOfString) return new Error(
- 'You cannot specify custom `formats` anymore. Use Parchment instead. ' +
- 'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'
- );
- },
-
- styles: function(props) {
- if ('styles' in props) return new Error(
- 'The `styles` prop has been deprecated. Use custom stylesheets instead. ' +
- 'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'
- );
- },
-
- pollInterval: function(props) {
- if ('pollInterval' in props) return new Error(
- 'The `pollInterval` property does not have any effect anymore. ' +
- 'You can safely remove it from your props.' +
- 'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'
- );
- }
- },
-
- /*
- Changing one of these props should cause a re-render.
- */
- dirtyProps: [
- 'id',
- 'className',
- 'style',
- 'modules',
- 'formats',
- 'bounds',
- 'theme',
- ],
-
- getDefaultProps: function() {
- return {
- className: '',
- theme: 'snow',
- modules: {},
- };
- },
-
- /*
- We consider the component to be controlled if
- whenever `value` is being sent in props.
- */
- isControlled: function() {
- return 'value' in this.props;
- },
-
- getInitialState: function() {
- return {
- value: this.isControlled()
- ? this.props.value
- : this.props.defaultValue
- };
- },
-
- componentWillReceiveProps: function(nextProps) {
- var editor = this.state.editor;
- // If the component is unmounted and mounted too quickly
- // an error is thrown in setEditorContents since editor is
- // still undefined. Must check if editor is undefined
- // before performing this call.
- if (editor) {
- // Update only if we've been passed a new `value`.
- // This leaves components using `defaultValue` alone.
- if ('value' in nextProps) {
- // NOTE: Seeing that Quill is missing a way to prevent
- // edits, we have to settle for a hybrid between
- // controlled and uncontrolled mode. We can't prevent
- // the change, but we'll still override content
- // whenever `value` differs from current state.
- if (nextProps.value !== this.getEditorContents()) {
- this.setEditorContents(editor, nextProps.value);
- }
- }
- // We can update readOnly state in-place.
- if ('readOnly' in nextProps) {
- if (nextProps.readOnly !== this.props.readOnly) {
- this.setEditorReadOnly(editor, nextProps.readOnly);
- }
- }
- }
- },
-
- componentDidMount: function() {
- var editor = this.createEditor(
- this.getEditorElement(),
- this.getEditorConfig()
- );
- this.setState({ editor:editor });
- },
-
- componentWillUnmount: function() {
- // NOTE: Don't set the state to null here
- // as it would generate a loop.
- var e = this.getEditor();
- if (e) this.unhookEditor(e);
- },
-
- shouldComponentUpdate: function(nextProps, nextState) {
- // Rerender whenever a "dirtyProp" changes
- var props = this.props;
- return some(this.dirtyProps, function(prop) {
- return !isEqual(nextProps[prop], props[prop]);
- });
- },
-
- /*
- If for whatever reason we are rendering again,
- we should tear down the editor and bring it up
- again.
- */
- componentWillUpdate: function() {
- this.componentWillUnmount();
- },
-
- componentDidUpdate: function() {
- this.componentDidMount();
- },
-
- getEditorConfig: function() {
- return {
- bounds: this.props.bounds,
- formats: this.props.formats,
- modules: this.props.modules,
- placeholder: this.props.placeholder,
- readOnly: this.props.readOnly,
- theme: this.props.theme,
- };
- },
-
- getEditor: function() {
- return this.state.editor;
- },
-
- getEditorElement: function() {
- return ReactDOM.findDOMNode(this.refs.editor);
- },
-
- getEditorContents: function() {
- return this.state.value;
- },
-
- getEditorSelection: function() {
- return this.state.selection;
- },
-
- /*
- Renders an editor element, unless it has been provided one to clone.
- */
- renderContents: function() {
- var contents = [];
- var children = React.Children.map(
- this.props.children,
- function(c) { return React.cloneElement(c, {ref: c.ref}); }
- );
-
- var editor = find(children, function(child) {
- return child.ref === 'editor';
- });
- contents.push(editor || React.DOM.div({
- key: 'editor-' + Math.random(),
- ref: 'editor',
- className: 'quill-contents',
- dangerouslySetInnerHTML: { __html:this.getEditorContents() }
- }));
-
- return contents;
- },
-
- render: function() {
- return React.DOM.div({
- id: this.props.id,
- style: this.props.style,
- className: ['quill'].concat(this.props.className).join(' '),
- onKeyPress: this.props.onKeyPress,
- onKeyDown: this.props.onKeyDown,
- onKeyUp: this.props.onKeyUp },
- this.renderContents()
- );
- },
-
- onEditorChange: function(value, delta, source, editor) {
- if (value !== this.getEditorContents()) {
- this.setState({ value: value });
- if (this.props.onChange) {
- this.props.onChange(value, delta, source, editor);
- }
- }
- },
-
- onEditorChangeSelection: function(range, source, editor) {
- var s = this.getEditorSelection() || {};
- var r = range || {};
- if (r.length !== s.length || r.index !== s.index) {
- this.setState({ selection: range });
- if (this.props.onChangeSelection) {
- this.props.onChangeSelection(range, source, editor);
- }
- }
- },
-
- focus: function() {
- this.state.editor.focus();
- },
-
- blur: function() {
- this.setEditorSelection(this.state.editor, null);
- }
-
- });
-
- module.exports = QuillComponent;
-
-
-/***/ },
-/* 3 */
-/*!**************************************************************************************!*\
- !*** external {"commonjs":"react","commonjs2":"react","amd":"react","root":"React"} ***!
- \**************************************************************************************/
-/***/ function(module, exports) {
-
- module.exports = __WEBPACK_EXTERNAL_MODULE_3__;
-
-/***/ },
-/* 4 */
-/*!*****************************************************************************************************!*\
- !*** external {"commonjs":"react-dom","commonjs2":"react-dom","amd":"react-dom","root":"ReactDOM"} ***!
- \*****************************************************************************************************/
-/***/ function(module, exports) {
-
- module.exports = __WEBPACK_EXTERNAL_MODULE_4__;
-
-/***/ },
-/* 5 */
-/*!**********************!*\
- !*** ./src/mixin.js ***!
- \**********************/
-/***/ function(module, exports, __webpack_require__) {
-
- 'use strict';
-
- var Quill = __webpack_require__(/*! quill */ 1);
-
- var QuillMixin = {
-
- /**
- Creates an editor on the given element. The editor will
- be passed the configuration, have its events bound,
- */
- createEditor: function($el, config) {
- var editor = new Quill($el, config);
- this.hookEditor(editor);
- return editor;
- },
-
- hookEditor: function(editor) {
- // Expose the editor on change events via a weaker,
- // unprivileged proxy object that does not allow
- // accidentally modifying editor state.
- var unprivilegedEditor = this.makeUnprivilegedEditor(editor);
-
- this.handleEditorChange = function(delta, oldDelta, source) {
- if (this.onEditorChange) {
- this.onEditorChange(
- editor.root.innerHTML, delta, source,
- unprivilegedEditor
- );
- this.onEditorChangeSelection(
- editor.getSelection(), source,
- unprivilegedEditor
- );
- }
- }.bind(this);
-
- this.handleSelectionChange = function(range, oldRange, source) {
- if (this.onEditorChangeSelection) {
- this.onEditorChangeSelection(
- range, source,
- unprivilegedEditor
- );
- }
- }.bind(this);
-
- editor.on('editor-change', this.handleEditorChange);
- editor.on('selection-change', this.handleSelectionChange);
- },
-
- unhookEditor: function(editor) {
- editor.off('selection-change');
- editor.off('editor-change');
- },
-
- setEditorReadOnly: function(editor, value) {
- value? editor.disable()
- : editor.enable();
- },
-
- /*
- Replace the contents of the editor, but keep
- the previous selection hanging around so that
- the cursor won't move.
- */
- setEditorContents: function(editor, value) {
- var sel = editor.getSelection();
- editor.pasteHTML(value || '');
- if (sel) this.setEditorSelection(editor, sel);
- },
-
- setEditorSelection: function(editor, range) {
- if (range) {
- // Validate bounds before applying.
- var length = editor.getLength();
- range.index = Math.max(0, Math.min(range.index, length-1));
- range.length = Math.max(0, Math.min(range.length, (length-1) - range.index));
- }
- editor.setSelection(range);
- },
-
- /*
- Returns an weaker, unprivileged proxy object that only
- exposes read-only accessors found on the editor instance,
- without any state-modificating methods.
- */
- makeUnprivilegedEditor: function(editor) {
- var e = editor;
- return {
- getLength: function(){ return e.getLength.apply(e, arguments); },
- getText: function(){ return e.getText.apply(e, arguments); },
- getContents: function(){ return e.getContents.apply(e, arguments); },
- getSelection: function(){ return e.getSelection.apply(e, arguments); },
- getBounds: function(){ return e.getBounds.apply(e, arguments); },
- };
- }
-
- };
-
- module.exports = QuillMixin;
-
-
-/***/ },
-/* 6 */
-/*!**************************!*\
- !*** ./~/lodash/find.js ***!
- \**************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var createFind = __webpack_require__(/*! ./_createFind */ 7),
- findIndex = __webpack_require__(/*! ./findIndex */ 123);
-
- /**
- * Iterates over elements of `collection`, returning the first element
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'age': 36, 'active': true },
- * { 'user': 'fred', 'age': 40, 'active': false },
- * { 'user': 'pebbles', 'age': 1, 'active': true }
- * ];
- *
- * _.find(users, function(o) { return o.age < 40; });
- * // => object for 'barney'
- *
- * // The `_.matches` iteratee shorthand.
- * _.find(users, { 'age': 1, 'active': true });
- * // => object for 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.find(users, ['active', false]);
- * // => object for 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.find(users, 'active');
- * // => object for 'barney'
- */
- var find = createFind(findIndex);
-
- module.exports = find;
-
-
-/***/ },
-/* 7 */
-/*!*********************************!*\
- !*** ./~/lodash/_createFind.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ 8),
- isArrayLike = __webpack_require__(/*! ./isArrayLike */ 94),
- keys = __webpack_require__(/*! ./keys */ 75);
-
- /**
- * Creates a `_.find` or `_.findLast` function.
- *
- * @private
- * @param {Function} findIndexFunc The function to find the collection index.
- * @returns {Function} Returns the new find function.
- */
- function createFind(findIndexFunc) {
- return function(collection, predicate, fromIndex) {
- var iterable = Object(collection);
- if (!isArrayLike(collection)) {
- var iteratee = baseIteratee(predicate, 3);
- collection = keys(collection);
- predicate = function(key) { return iteratee(iterable[key], key, iterable); };
- }
- var index = findIndexFunc(collection, predicate, fromIndex);
- return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
- };
- }
-
- module.exports = createFind;
-
-
-/***/ },
-/* 8 */
-/*!***********************************!*\
- !*** ./~/lodash/_baseIteratee.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseMatches = __webpack_require__(/*! ./_baseMatches */ 9),
- baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ 103),
- identity = __webpack_require__(/*! ./identity */ 119),
- isArray = __webpack_require__(/*! ./isArray */ 71),
- property = __webpack_require__(/*! ./property */ 120);
-
- /**
- * The base implementation of `_.iteratee`.
- *
- * @private
- * @param {*} [value=_.identity] The value to convert to an iteratee.
- * @returns {Function} Returns the iteratee.
- */
- function baseIteratee(value) {
- // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
- // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
- if (typeof value == 'function') {
- return value;
- }
- if (value == null) {
- return identity;
- }
- if (typeof value == 'object') {
- return isArray(value)
- ? baseMatchesProperty(value[0], value[1])
- : baseMatches(value);
- }
- return property(value);
- }
-
- module.exports = baseIteratee;
-
-
-/***/ },
-/* 9 */
-/*!**********************************!*\
- !*** ./~/lodash/_baseMatches.js ***!
- \**********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ 10),
- getMatchData = __webpack_require__(/*! ./_getMatchData */ 100),
- matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ 102);
-
- /**
- * The base implementation of `_.matches` which doesn't clone `source`.
- *
- * @private
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
- */
- function baseMatches(source) {
- var matchData = getMatchData(source);
- if (matchData.length == 1 && matchData[0][2]) {
- return matchesStrictComparable(matchData[0][0], matchData[0][1]);
- }
- return function(object) {
- return object === source || baseIsMatch(object, source, matchData);
- };
- }
-
- module.exports = baseMatches;
-
-
-/***/ },
-/* 10 */
-/*!**********************************!*\
- !*** ./~/lodash/_baseIsMatch.js ***!
- \**********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var Stack = __webpack_require__(/*! ./_Stack */ 11),
- baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ 55);
-
- /** Used to compose bitmasks for value comparisons. */
- var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
- /**
- * The base implementation of `_.isMatch` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @param {Array} matchData The property names, values, and compare flags to match.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- */
- function baseIsMatch(object, source, matchData, customizer) {
- var index = matchData.length,
- length = index,
- noCustomizer = !customizer;
-
- if (object == null) {
- return !length;
- }
- object = Object(object);
- while (index--) {
- var data = matchData[index];
- if ((noCustomizer && data[2])
- ? data[1] !== object[data[0]]
- : !(data[0] in object)
- ) {
- return false;
- }
- }
- while (++index < length) {
- data = matchData[index];
- var key = data[0],
- objValue = object[key],
- srcValue = data[1];
-
- if (noCustomizer && data[2]) {
- if (objValue === undefined && !(key in object)) {
- return false;
- }
- } else {
- var stack = new Stack;
- if (customizer) {
- var result = customizer(objValue, srcValue, key, object, source, stack);
- }
- if (!(result === undefined
- ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
- : result
- )) {
- return false;
- }
- }
- }
- return true;
- }
-
- module.exports = baseIsMatch;
-
-
-/***/ },
-/* 11 */
-/*!****************************!*\
- !*** ./~/lodash/_Stack.js ***!
- \****************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var ListCache = __webpack_require__(/*! ./_ListCache */ 12),
- stackClear = __webpack_require__(/*! ./_stackClear */ 20),
- stackDelete = __webpack_require__(/*! ./_stackDelete */ 21),
- stackGet = __webpack_require__(/*! ./_stackGet */ 22),
- stackHas = __webpack_require__(/*! ./_stackHas */ 23),
- stackSet = __webpack_require__(/*! ./_stackSet */ 24);
-
- /**
- * Creates a stack cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Stack(entries) {
- var data = this.__data__ = new ListCache(entries);
- this.size = data.size;
- }
-
- // Add methods to `Stack`.
- Stack.prototype.clear = stackClear;
- Stack.prototype['delete'] = stackDelete;
- Stack.prototype.get = stackGet;
- Stack.prototype.has = stackHas;
- Stack.prototype.set = stackSet;
-
- module.exports = Stack;
-
-
-/***/ },
-/* 12 */
-/*!********************************!*\
- !*** ./~/lodash/_ListCache.js ***!
- \********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ 13),
- listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ 14),
- listCacheGet = __webpack_require__(/*! ./_listCacheGet */ 17),
- listCacheHas = __webpack_require__(/*! ./_listCacheHas */ 18),
- listCacheSet = __webpack_require__(/*! ./_listCacheSet */ 19);
-
- /**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function ListCache(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
- }
-
- // Add methods to `ListCache`.
- ListCache.prototype.clear = listCacheClear;
- ListCache.prototype['delete'] = listCacheDelete;
- ListCache.prototype.get = listCacheGet;
- ListCache.prototype.has = listCacheHas;
- ListCache.prototype.set = listCacheSet;
-
- module.exports = ListCache;
-
-
-/***/ },
-/* 13 */
-/*!*************************************!*\
- !*** ./~/lodash/_listCacheClear.js ***!
- \*************************************/
-/***/ function(module, exports) {
-
- /**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
- function listCacheClear() {
- this.__data__ = [];
- this.size = 0;
- }
-
- module.exports = listCacheClear;
-
-
-/***/ },
-/* 14 */
-/*!**************************************!*\
- !*** ./~/lodash/_listCacheDelete.js ***!
- \**************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ 15);
-
- /** Used for built-in method references. */
- var arrayProto = Array.prototype;
-
- /** Built-in value references. */
- var splice = arrayProto.splice;
-
- /**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function listCacheDelete(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- return false;
- }
- var lastIndex = data.length - 1;
- if (index == lastIndex) {
- data.pop();
- } else {
- splice.call(data, index, 1);
- }
- --this.size;
- return true;
- }
-
- module.exports = listCacheDelete;
-
-
-/***/ },
-/* 15 */
-/*!***********************************!*\
- !*** ./~/lodash/_assocIndexOf.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var eq = __webpack_require__(/*! ./eq */ 16);
-
- /**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function assocIndexOf(array, key) {
- var length = array.length;
- while (length--) {
- if (eq(array[length][0], key)) {
- return length;
- }
- }
- return -1;
- }
-
- module.exports = assocIndexOf;
-
-
-/***/ },
-/* 16 */
-/*!************************!*\
- !*** ./~/lodash/eq.js ***!
- \************************/
-/***/ function(module, exports) {
-
- /**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
- function eq(value, other) {
- return value === other || (value !== value && other !== other);
- }
-
- module.exports = eq;
-
-
-/***/ },
-/* 17 */
-/*!***********************************!*\
- !*** ./~/lodash/_listCacheGet.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ 15);
-
- /**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function listCacheGet(key) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- return index < 0 ? undefined : data[index][1];
- }
-
- module.exports = listCacheGet;
-
-
-/***/ },
-/* 18 */
-/*!***********************************!*\
- !*** ./~/lodash/_listCacheHas.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ 15);
-
- /**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function listCacheHas(key) {
- return assocIndexOf(this.__data__, key) > -1;
- }
-
- module.exports = listCacheHas;
-
-
-/***/ },
-/* 19 */
-/*!***********************************!*\
- !*** ./~/lodash/_listCacheSet.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ 15);
-
- /**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
- function listCacheSet(key, value) {
- var data = this.__data__,
- index = assocIndexOf(data, key);
-
- if (index < 0) {
- ++this.size;
- data.push([key, value]);
- } else {
- data[index][1] = value;
- }
- return this;
- }
-
- module.exports = listCacheSet;
-
-
-/***/ },
-/* 20 */
-/*!*********************************!*\
- !*** ./~/lodash/_stackClear.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var ListCache = __webpack_require__(/*! ./_ListCache */ 12);
-
- /**
- * Removes all key-value entries from the stack.
- *
- * @private
- * @name clear
- * @memberOf Stack
- */
- function stackClear() {
- this.__data__ = new ListCache;
- this.size = 0;
- }
-
- module.exports = stackClear;
-
-
-/***/ },
-/* 21 */
-/*!**********************************!*\
- !*** ./~/lodash/_stackDelete.js ***!
- \**********************************/
-/***/ function(module, exports) {
-
- /**
- * Removes `key` and its value from the stack.
- *
- * @private
- * @name delete
- * @memberOf Stack
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function stackDelete(key) {
- var data = this.__data__,
- result = data['delete'](key);
-
- this.size = data.size;
- return result;
- }
-
- module.exports = stackDelete;
-
-
-/***/ },
-/* 22 */
-/*!*******************************!*\
- !*** ./~/lodash/_stackGet.js ***!
- \*******************************/
-/***/ function(module, exports) {
-
- /**
- * Gets the stack value for `key`.
- *
- * @private
- * @name get
- * @memberOf Stack
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function stackGet(key) {
- return this.__data__.get(key);
- }
-
- module.exports = stackGet;
-
-
-/***/ },
-/* 23 */
-/*!*******************************!*\
- !*** ./~/lodash/_stackHas.js ***!
- \*******************************/
-/***/ function(module, exports) {
-
- /**
- * Checks if a stack value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Stack
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function stackHas(key) {
- return this.__data__.has(key);
- }
-
- module.exports = stackHas;
-
-
-/***/ },
-/* 24 */
-/*!*******************************!*\
- !*** ./~/lodash/_stackSet.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var ListCache = __webpack_require__(/*! ./_ListCache */ 12),
- Map = __webpack_require__(/*! ./_Map */ 25),
- MapCache = __webpack_require__(/*! ./_MapCache */ 40);
-
- /** Used as the size to enable large array optimizations. */
- var LARGE_ARRAY_SIZE = 200;
-
- /**
- * Sets the stack `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Stack
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the stack cache instance.
- */
- function stackSet(key, value) {
- var data = this.__data__;
- if (data instanceof ListCache) {
- var pairs = data.__data__;
- if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
- pairs.push([key, value]);
- this.size = ++data.size;
- return this;
- }
- data = this.__data__ = new MapCache(pairs);
- }
- data.set(key, value);
- this.size = data.size;
- return this;
- }
-
- module.exports = stackSet;
-
-
-/***/ },
-/* 25 */
-/*!**************************!*\
- !*** ./~/lodash/_Map.js ***!
- \**************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getNative = __webpack_require__(/*! ./_getNative */ 26),
- root = __webpack_require__(/*! ./_root */ 31);
-
- /* Built-in method references that are verified to be native. */
- var Map = getNative(root, 'Map');
-
- module.exports = Map;
-
-
-/***/ },
-/* 26 */
-/*!********************************!*\
- !*** ./~/lodash/_getNative.js ***!
- \********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ 27),
- getValue = __webpack_require__(/*! ./_getValue */ 39);
-
- /**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
- function getNative(object, key) {
- var value = getValue(object, key);
- return baseIsNative(value) ? value : undefined;
- }
-
- module.exports = getNative;
-
-
-/***/ },
-/* 27 */
-/*!***********************************!*\
- !*** ./~/lodash/_baseIsNative.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isFunction = __webpack_require__(/*! ./isFunction */ 28),
- isMasked = __webpack_require__(/*! ./_isMasked */ 36),
- isObject = __webpack_require__(/*! ./isObject */ 35),
- toSource = __webpack_require__(/*! ./_toSource */ 38);
-
- /**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
- var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
- /** Used to detect host constructors (Safari). */
- var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
- /** Used for built-in method references. */
- var funcProto = Function.prototype,
- objectProto = Object.prototype;
-
- /** Used to resolve the decompiled source of functions. */
- var funcToString = funcProto.toString;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /** Used to detect if a method is native. */
- var reIsNative = RegExp('^' +
- funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
- .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
- );
-
- /**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- * else `false`.
- */
- function baseIsNative(value) {
- if (!isObject(value) || isMasked(value)) {
- return false;
- }
- var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
- return pattern.test(toSource(value));
- }
-
- module.exports = baseIsNative;
-
-
-/***/ },
-/* 28 */
-/*!********************************!*\
- !*** ./~/lodash/isFunction.js ***!
- \********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ 29),
- isObject = __webpack_require__(/*! ./isObject */ 35);
-
- /** `Object#toString` result references. */
- var asyncTag = '[object AsyncFunction]',
- funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]',
- proxyTag = '[object Proxy]';
-
- /**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
- function isFunction(value) {
- if (!isObject(value)) {
- return false;
- }
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 9 which returns 'object' for typed arrays and other constructors.
- var tag = baseGetTag(value);
- return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
- }
-
- module.exports = isFunction;
-
-
-/***/ },
-/* 29 */
-/*!*********************************!*\
- !*** ./~/lodash/_baseGetTag.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var Symbol = __webpack_require__(/*! ./_Symbol */ 30),
- getRawTag = __webpack_require__(/*! ./_getRawTag */ 33),
- objectToString = __webpack_require__(/*! ./_objectToString */ 34);
-
- /** `Object#toString` result references. */
- var nullTag = '[object Null]',
- undefinedTag = '[object Undefined]';
-
- /** Built-in value references. */
- var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
-
- /**
- * The base implementation of `getTag` without fallbacks for buggy environments.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
- function baseGetTag(value) {
- if (value == null) {
- return value === undefined ? undefinedTag : nullTag;
- }
- return (symToStringTag && symToStringTag in Object(value))
- ? getRawTag(value)
- : objectToString(value);
- }
-
- module.exports = baseGetTag;
-
-
-/***/ },
-/* 30 */
-/*!*****************************!*\
- !*** ./~/lodash/_Symbol.js ***!
- \*****************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var root = __webpack_require__(/*! ./_root */ 31);
-
- /** Built-in value references. */
- var Symbol = root.Symbol;
-
- module.exports = Symbol;
-
-
-/***/ },
-/* 31 */
-/*!***************************!*\
- !*** ./~/lodash/_root.js ***!
- \***************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ 32);
-
- /** Detect free variable `self`. */
- var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
- /** Used as a reference to the global object. */
- var root = freeGlobal || freeSelf || Function('return this')();
-
- module.exports = root;
-
-
-/***/ },
-/* 32 */
-/*!*********************************!*\
- !*** ./~/lodash/_freeGlobal.js ***!
- \*********************************/
-/***/ function(module, exports) {
-
- /* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
- var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
- module.exports = freeGlobal;
-
- /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
-
-/***/ },
-/* 33 */
-/*!********************************!*\
- !*** ./~/lodash/_getRawTag.js ***!
- \********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var Symbol = __webpack_require__(/*! ./_Symbol */ 30);
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
- var nativeObjectToString = objectProto.toString;
-
- /** Built-in value references. */
- var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
-
- /**
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the raw `toStringTag`.
- */
- function getRawTag(value) {
- var isOwn = hasOwnProperty.call(value, symToStringTag),
- tag = value[symToStringTag];
-
- try {
- value[symToStringTag] = undefined;
- var unmasked = true;
- } catch (e) {}
-
- var result = nativeObjectToString.call(value);
- if (unmasked) {
- if (isOwn) {
- value[symToStringTag] = tag;
- } else {
- delete value[symToStringTag];
- }
- }
- return result;
- }
-
- module.exports = getRawTag;
-
-
-/***/ },
-/* 34 */
-/*!*************************************!*\
- !*** ./~/lodash/_objectToString.js ***!
- \*************************************/
-/***/ function(module, exports) {
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
- var nativeObjectToString = objectProto.toString;
-
- /**
- * Converts `value` to a string using `Object.prototype.toString`.
- *
- * @private
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- */
- function objectToString(value) {
- return nativeObjectToString.call(value);
- }
-
- module.exports = objectToString;
-
-
-/***/ },
-/* 35 */
-/*!******************************!*\
- !*** ./~/lodash/isObject.js ***!
- \******************************/
-/***/ function(module, exports) {
-
- /**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
- function isObject(value) {
- var type = typeof value;
- return value != null && (type == 'object' || type == 'function');
- }
-
- module.exports = isObject;
-
-
-/***/ },
-/* 36 */
-/*!*******************************!*\
- !*** ./~/lodash/_isMasked.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var coreJsData = __webpack_require__(/*! ./_coreJsData */ 37);
-
- /** Used to detect methods masquerading as native. */
- var maskSrcKey = (function() {
- var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
- return uid ? ('Symbol(src)_1.' + uid) : '';
- }());
-
- /**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
- function isMasked(func) {
- return !!maskSrcKey && (maskSrcKey in func);
- }
-
- module.exports = isMasked;
-
-
-/***/ },
-/* 37 */
-/*!*********************************!*\
- !*** ./~/lodash/_coreJsData.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var root = __webpack_require__(/*! ./_root */ 31);
-
- /** Used to detect overreaching core-js shims. */
- var coreJsData = root['__core-js_shared__'];
-
- module.exports = coreJsData;
-
-
-/***/ },
-/* 38 */
-/*!*******************************!*\
- !*** ./~/lodash/_toSource.js ***!
- \*******************************/
-/***/ function(module, exports) {
-
- /** Used for built-in method references. */
- var funcProto = Function.prototype;
-
- /** Used to resolve the decompiled source of functions. */
- var funcToString = funcProto.toString;
-
- /**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to convert.
- * @returns {string} Returns the source code.
- */
- function toSource(func) {
- if (func != null) {
- try {
- return funcToString.call(func);
- } catch (e) {}
- try {
- return (func + '');
- } catch (e) {}
- }
- return '';
- }
-
- module.exports = toSource;
-
-
-/***/ },
-/* 39 */
-/*!*******************************!*\
- !*** ./~/lodash/_getValue.js ***!
- \*******************************/
-/***/ function(module, exports) {
-
- /**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
- function getValue(object, key) {
- return object == null ? undefined : object[key];
- }
-
- module.exports = getValue;
-
-
-/***/ },
-/* 40 */
-/*!*******************************!*\
- !*** ./~/lodash/_MapCache.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ 41),
- mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ 49),
- mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ 52),
- mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ 53),
- mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ 54);
-
- /**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function MapCache(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
- }
-
- // Add methods to `MapCache`.
- MapCache.prototype.clear = mapCacheClear;
- MapCache.prototype['delete'] = mapCacheDelete;
- MapCache.prototype.get = mapCacheGet;
- MapCache.prototype.has = mapCacheHas;
- MapCache.prototype.set = mapCacheSet;
-
- module.exports = MapCache;
-
-
-/***/ },
-/* 41 */
-/*!************************************!*\
- !*** ./~/lodash/_mapCacheClear.js ***!
- \************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var Hash = __webpack_require__(/*! ./_Hash */ 42),
- ListCache = __webpack_require__(/*! ./_ListCache */ 12),
- Map = __webpack_require__(/*! ./_Map */ 25);
-
- /**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
- function mapCacheClear() {
- this.size = 0;
- this.__data__ = {
- 'hash': new Hash,
- 'map': new (Map || ListCache),
- 'string': new Hash
- };
- }
-
- module.exports = mapCacheClear;
-
-
-/***/ },
-/* 42 */
-/*!***************************!*\
- !*** ./~/lodash/_Hash.js ***!
- \***************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var hashClear = __webpack_require__(/*! ./_hashClear */ 43),
- hashDelete = __webpack_require__(/*! ./_hashDelete */ 45),
- hashGet = __webpack_require__(/*! ./_hashGet */ 46),
- hashHas = __webpack_require__(/*! ./_hashHas */ 47),
- hashSet = __webpack_require__(/*! ./_hashSet */ 48);
-
- /**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
- function Hash(entries) {
- var index = -1,
- length = entries == null ? 0 : entries.length;
-
- this.clear();
- while (++index < length) {
- var entry = entries[index];
- this.set(entry[0], entry[1]);
- }
- }
-
- // Add methods to `Hash`.
- Hash.prototype.clear = hashClear;
- Hash.prototype['delete'] = hashDelete;
- Hash.prototype.get = hashGet;
- Hash.prototype.has = hashHas;
- Hash.prototype.set = hashSet;
-
- module.exports = Hash;
-
-
-/***/ },
-/* 43 */
-/*!********************************!*\
- !*** ./~/lodash/_hashClear.js ***!
- \********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ 44);
-
- /**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
- function hashClear() {
- this.__data__ = nativeCreate ? nativeCreate(null) : {};
- this.size = 0;
- }
-
- module.exports = hashClear;
-
-
-/***/ },
-/* 44 */
-/*!***********************************!*\
- !*** ./~/lodash/_nativeCreate.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getNative = __webpack_require__(/*! ./_getNative */ 26);
-
- /* Built-in method references that are verified to be native. */
- var nativeCreate = getNative(Object, 'create');
-
- module.exports = nativeCreate;
-
-
-/***/ },
-/* 45 */
-/*!*********************************!*\
- !*** ./~/lodash/_hashDelete.js ***!
- \*********************************/
-/***/ function(module, exports) {
-
- /**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function hashDelete(key) {
- var result = this.has(key) && delete this.__data__[key];
- this.size -= result ? 1 : 0;
- return result;
- }
-
- module.exports = hashDelete;
-
-
-/***/ },
-/* 46 */
-/*!******************************!*\
- !*** ./~/lodash/_hashGet.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ 44);
-
- /** Used to stand-in for `undefined` hash values. */
- var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function hashGet(key) {
- var data = this.__data__;
- if (nativeCreate) {
- var result = data[key];
- return result === HASH_UNDEFINED ? undefined : result;
- }
- return hasOwnProperty.call(data, key) ? data[key] : undefined;
- }
-
- module.exports = hashGet;
-
-
-/***/ },
-/* 47 */
-/*!******************************!*\
- !*** ./~/lodash/_hashHas.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ 44);
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function hashHas(key) {
- var data = this.__data__;
- return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
- }
-
- module.exports = hashHas;
-
-
-/***/ },
-/* 48 */
-/*!******************************!*\
- !*** ./~/lodash/_hashSet.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ 44);
-
- /** Used to stand-in for `undefined` hash values. */
- var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
- /**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
- function hashSet(key, value) {
- var data = this.__data__;
- this.size += this.has(key) ? 0 : 1;
- data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
- return this;
- }
-
- module.exports = hashSet;
-
-
-/***/ },
-/* 49 */
-/*!*************************************!*\
- !*** ./~/lodash/_mapCacheDelete.js ***!
- \*************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getMapData = __webpack_require__(/*! ./_getMapData */ 50);
-
- /**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
- function mapCacheDelete(key) {
- var result = getMapData(this, key)['delete'](key);
- this.size -= result ? 1 : 0;
- return result;
- }
-
- module.exports = mapCacheDelete;
-
-
-/***/ },
-/* 50 */
-/*!*********************************!*\
- !*** ./~/lodash/_getMapData.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isKeyable = __webpack_require__(/*! ./_isKeyable */ 51);
-
- /**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
- function getMapData(map, key) {
- var data = map.__data__;
- return isKeyable(key)
- ? data[typeof key == 'string' ? 'string' : 'hash']
- : data.map;
- }
-
- module.exports = getMapData;
-
-
-/***/ },
-/* 51 */
-/*!********************************!*\
- !*** ./~/lodash/_isKeyable.js ***!
- \********************************/
-/***/ function(module, exports) {
-
- /**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
- function isKeyable(value) {
- var type = typeof value;
- return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
- ? (value !== '__proto__')
- : (value === null);
- }
-
- module.exports = isKeyable;
-
-
-/***/ },
-/* 52 */
-/*!**********************************!*\
- !*** ./~/lodash/_mapCacheGet.js ***!
- \**********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getMapData = __webpack_require__(/*! ./_getMapData */ 50);
-
- /**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
- function mapCacheGet(key) {
- return getMapData(this, key).get(key);
- }
-
- module.exports = mapCacheGet;
-
-
-/***/ },
-/* 53 */
-/*!**********************************!*\
- !*** ./~/lodash/_mapCacheHas.js ***!
- \**********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getMapData = __webpack_require__(/*! ./_getMapData */ 50);
-
- /**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function mapCacheHas(key) {
- return getMapData(this, key).has(key);
- }
-
- module.exports = mapCacheHas;
-
-
-/***/ },
-/* 54 */
-/*!**********************************!*\
- !*** ./~/lodash/_mapCacheSet.js ***!
- \**********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getMapData = __webpack_require__(/*! ./_getMapData */ 50);
-
- /**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
- function mapCacheSet(key, value) {
- var data = getMapData(this, key),
- size = data.size;
-
- data.set(key, value);
- this.size += data.size == size ? 0 : 1;
- return this;
- }
-
- module.exports = mapCacheSet;
-
-
-/***/ },
-/* 55 */
-/*!**********************************!*\
- !*** ./~/lodash/_baseIsEqual.js ***!
- \**********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ 56),
- isObjectLike = __webpack_require__(/*! ./isObjectLike */ 80);
-
- /**
- * The base implementation of `_.isEqual` which supports partial comparisons
- * and tracks traversed objects.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {boolean} bitmask The bitmask flags.
- * 1 - Unordered comparison
- * 2 - Partial comparison
- * @param {Function} [customizer] The function to customize comparisons.
- * @param {Object} [stack] Tracks traversed `value` and `other` objects.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- */
- function baseIsEqual(value, other, bitmask, customizer, stack) {
- if (value === other) {
- return true;
- }
- if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
- return value !== value && other !== other;
- }
- return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
- }
-
- module.exports = baseIsEqual;
-
-
-/***/ },
-/* 56 */
-/*!**************************************!*\
- !*** ./~/lodash/_baseIsEqualDeep.js ***!
- \**************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var Stack = __webpack_require__(/*! ./_Stack */ 11),
- equalArrays = __webpack_require__(/*! ./_equalArrays */ 57),
- equalByTag = __webpack_require__(/*! ./_equalByTag */ 63),
- equalObjects = __webpack_require__(/*! ./_equalObjects */ 67),
- getTag = __webpack_require__(/*! ./_getTag */ 95),
- isArray = __webpack_require__(/*! ./isArray */ 71),
- isBuffer = __webpack_require__(/*! ./isBuffer */ 81),
- isTypedArray = __webpack_require__(/*! ./isTypedArray */ 85);
-
- /** Used to compose bitmasks for value comparisons. */
- var COMPARE_PARTIAL_FLAG = 1;
-
- /** `Object#toString` result references. */
- var argsTag = '[object Arguments]',
- arrayTag = '[object Array]',
- objectTag = '[object Object]';
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /**
- * A specialized version of `baseIsEqual` for arrays and objects which performs
- * deep comparisons and tracks traversed objects enabling objects with circular
- * references to be compared.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} [stack] Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
- var objIsArr = isArray(object),
- othIsArr = isArray(other),
- objTag = objIsArr ? arrayTag : getTag(object),
- othTag = othIsArr ? arrayTag : getTag(other);
-
- objTag = objTag == argsTag ? objectTag : objTag;
- othTag = othTag == argsTag ? objectTag : othTag;
-
- var objIsObj = objTag == objectTag,
- othIsObj = othTag == objectTag,
- isSameTag = objTag == othTag;
-
- if (isSameTag && isBuffer(object)) {
- if (!isBuffer(other)) {
- return false;
- }
- objIsArr = true;
- objIsObj = false;
- }
- if (isSameTag && !objIsObj) {
- stack || (stack = new Stack);
- return (objIsArr || isTypedArray(object))
- ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
- : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
- }
- if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
- var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
- othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
-
- if (objIsWrapped || othIsWrapped) {
- var objUnwrapped = objIsWrapped ? object.value() : object,
- othUnwrapped = othIsWrapped ? other.value() : other;
-
- stack || (stack = new Stack);
- return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
- }
- }
- if (!isSameTag) {
- return false;
- }
- stack || (stack = new Stack);
- return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
- }
-
- module.exports = baseIsEqualDeep;
-
-
-/***/ },
-/* 57 */
-/*!**********************************!*\
- !*** ./~/lodash/_equalArrays.js ***!
- \**********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var SetCache = __webpack_require__(/*! ./_SetCache */ 58),
- arraySome = __webpack_require__(/*! ./_arraySome */ 61),
- cacheHas = __webpack_require__(/*! ./_cacheHas */ 62);
-
- /** Used to compose bitmasks for value comparisons. */
- var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
- /**
- * A specialized version of `baseIsEqualDeep` for arrays with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Array} array The array to compare.
- * @param {Array} other The other array to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `array` and `other` objects.
- * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
- */
- function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
- arrLength = array.length,
- othLength = other.length;
-
- if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
- return false;
- }
- // Assume cyclic values are equal.
- var stacked = stack.get(array);
- if (stacked && stack.get(other)) {
- return stacked == other;
- }
- var index = -1,
- result = true,
- seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
-
- stack.set(array, other);
- stack.set(other, array);
-
- // Ignore non-index properties.
- while (++index < arrLength) {
- var arrValue = array[index],
- othValue = other[index];
-
- if (customizer) {
- var compared = isPartial
- ? customizer(othValue, arrValue, index, other, array, stack)
- : customizer(arrValue, othValue, index, array, other, stack);
- }
- if (compared !== undefined) {
- if (compared) {
- continue;
- }
- result = false;
- break;
- }
- // Recursively compare arrays (susceptible to call stack limits).
- if (seen) {
- if (!arraySome(other, function(othValue, othIndex) {
- if (!cacheHas(seen, othIndex) &&
- (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
- return seen.push(othIndex);
- }
- })) {
- result = false;
- break;
- }
- } else if (!(
- arrValue === othValue ||
- equalFunc(arrValue, othValue, bitmask, customizer, stack)
- )) {
- result = false;
- break;
- }
- }
- stack['delete'](array);
- stack['delete'](other);
- return result;
- }
-
- module.exports = equalArrays;
-
-
-/***/ },
-/* 58 */
-/*!*******************************!*\
- !*** ./~/lodash/_SetCache.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var MapCache = __webpack_require__(/*! ./_MapCache */ 40),
- setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ 59),
- setCacheHas = __webpack_require__(/*! ./_setCacheHas */ 60);
-
- /**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
- function SetCache(values) {
- var index = -1,
- length = values == null ? 0 : values.length;
-
- this.__data__ = new MapCache;
- while (++index < length) {
- this.add(values[index]);
- }
- }
-
- // Add methods to `SetCache`.
- SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
- SetCache.prototype.has = setCacheHas;
-
- module.exports = SetCache;
-
-
-/***/ },
-/* 59 */
-/*!**********************************!*\
- !*** ./~/lodash/_setCacheAdd.js ***!
- \**********************************/
-/***/ function(module, exports) {
-
- /** Used to stand-in for `undefined` hash values. */
- var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
- /**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
- function setCacheAdd(value) {
- this.__data__.set(value, HASH_UNDEFINED);
- return this;
- }
-
- module.exports = setCacheAdd;
-
-
-/***/ },
-/* 60 */
-/*!**********************************!*\
- !*** ./~/lodash/_setCacheHas.js ***!
- \**********************************/
-/***/ function(module, exports) {
-
- /**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
- function setCacheHas(value) {
- return this.__data__.has(value);
- }
-
- module.exports = setCacheHas;
-
-
-/***/ },
-/* 61 */
-/*!********************************!*\
- !*** ./~/lodash/_arraySome.js ***!
- \********************************/
-/***/ function(module, exports) {
-
- /**
- * A specialized version of `_.some` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- */
- function arraySome(array, predicate) {
- var index = -1,
- length = array == null ? 0 : array.length;
-
- while (++index < length) {
- if (predicate(array[index], index, array)) {
- return true;
- }
- }
- return false;
- }
-
- module.exports = arraySome;
-
-
-/***/ },
-/* 62 */
-/*!*******************************!*\
- !*** ./~/lodash/_cacheHas.js ***!
- \*******************************/
-/***/ function(module, exports) {
-
- /**
- * Checks if a `cache` value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
- function cacheHas(cache, key) {
- return cache.has(key);
- }
-
- module.exports = cacheHas;
-
-
-/***/ },
-/* 63 */
-/*!*********************************!*\
- !*** ./~/lodash/_equalByTag.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var Symbol = __webpack_require__(/*! ./_Symbol */ 30),
- Uint8Array = __webpack_require__(/*! ./_Uint8Array */ 64),
- eq = __webpack_require__(/*! ./eq */ 16),
- equalArrays = __webpack_require__(/*! ./_equalArrays */ 57),
- mapToArray = __webpack_require__(/*! ./_mapToArray */ 65),
- setToArray = __webpack_require__(/*! ./_setToArray */ 66);
-
- /** Used to compose bitmasks for value comparisons. */
- var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
- /** `Object#toString` result references. */
- var boolTag = '[object Boolean]',
- dateTag = '[object Date]',
- errorTag = '[object Error]',
- mapTag = '[object Map]',
- numberTag = '[object Number]',
- regexpTag = '[object RegExp]',
- setTag = '[object Set]',
- stringTag = '[object String]',
- symbolTag = '[object Symbol]';
-
- var arrayBufferTag = '[object ArrayBuffer]',
- dataViewTag = '[object DataView]';
-
- /** Used to convert symbols to primitives and strings. */
- var symbolProto = Symbol ? Symbol.prototype : undefined,
- symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
-
- /**
- * A specialized version of `baseIsEqualDeep` for comparing objects of
- * the same `toStringTag`.
- *
- * **Note:** This function only supports comparing values with tags of
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {string} tag The `toStringTag` of the objects to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
- switch (tag) {
- case dataViewTag:
- if ((object.byteLength != other.byteLength) ||
- (object.byteOffset != other.byteOffset)) {
- return false;
- }
- object = object.buffer;
- other = other.buffer;
-
- case arrayBufferTag:
- if ((object.byteLength != other.byteLength) ||
- !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
- return false;
- }
- return true;
-
- case boolTag:
- case dateTag:
- case numberTag:
- // Coerce booleans to `1` or `0` and dates to milliseconds.
- // Invalid dates are coerced to `NaN`.
- return eq(+object, +other);
-
- case errorTag:
- return object.name == other.name && object.message == other.message;
-
- case regexpTag:
- case stringTag:
- // Coerce regexes to strings and treat strings, primitives and objects,
- // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
- // for more details.
- return object == (other + '');
-
- case mapTag:
- var convert = mapToArray;
-
- case setTag:
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
- convert || (convert = setToArray);
-
- if (object.size != other.size && !isPartial) {
- return false;
- }
- // Assume cyclic values are equal.
- var stacked = stack.get(object);
- if (stacked) {
- return stacked == other;
- }
- bitmask |= COMPARE_UNORDERED_FLAG;
-
- // Recursively compare objects (susceptible to call stack limits).
- stack.set(object, other);
- var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
- stack['delete'](object);
- return result;
-
- case symbolTag:
- if (symbolValueOf) {
- return symbolValueOf.call(object) == symbolValueOf.call(other);
- }
- }
- return false;
- }
-
- module.exports = equalByTag;
-
-
-/***/ },
-/* 64 */
-/*!*********************************!*\
- !*** ./~/lodash/_Uint8Array.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var root = __webpack_require__(/*! ./_root */ 31);
-
- /** Built-in value references. */
- var Uint8Array = root.Uint8Array;
-
- module.exports = Uint8Array;
-
-
-/***/ },
-/* 65 */
-/*!*********************************!*\
- !*** ./~/lodash/_mapToArray.js ***!
- \*********************************/
-/***/ function(module, exports) {
-
- /**
- * Converts `map` to its key-value pairs.
- *
- * @private
- * @param {Object} map The map to convert.
- * @returns {Array} Returns the key-value pairs.
- */
- function mapToArray(map) {
- var index = -1,
- result = Array(map.size);
-
- map.forEach(function(value, key) {
- result[++index] = [key, value];
- });
- return result;
- }
-
- module.exports = mapToArray;
-
-
-/***/ },
-/* 66 */
-/*!*********************************!*\
- !*** ./~/lodash/_setToArray.js ***!
- \*********************************/
-/***/ function(module, exports) {
-
- /**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
- function setToArray(set) {
- var index = -1,
- result = Array(set.size);
-
- set.forEach(function(value) {
- result[++index] = value;
- });
- return result;
- }
-
- module.exports = setToArray;
-
-
-/***/ },
-/* 67 */
-/*!***********************************!*\
- !*** ./~/lodash/_equalObjects.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ 68);
-
- /** Used to compose bitmasks for value comparisons. */
- var COMPARE_PARTIAL_FLAG = 1;
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /**
- * A specialized version of `baseIsEqualDeep` for objects with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
- function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
- var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
- objProps = getAllKeys(object),
- objLength = objProps.length,
- othProps = getAllKeys(other),
- othLength = othProps.length;
-
- if (objLength != othLength && !isPartial) {
- return false;
- }
- var index = objLength;
- while (index--) {
- var key = objProps[index];
- if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
- return false;
- }
- }
- // Assume cyclic values are equal.
- var stacked = stack.get(object);
- if (stacked && stack.get(other)) {
- return stacked == other;
- }
- var result = true;
- stack.set(object, other);
- stack.set(other, object);
-
- var skipCtor = isPartial;
- while (++index < objLength) {
- key = objProps[index];
- var objValue = object[key],
- othValue = other[key];
-
- if (customizer) {
- var compared = isPartial
- ? customizer(othValue, objValue, key, other, object, stack)
- : customizer(objValue, othValue, key, object, other, stack);
- }
- // Recursively compare objects (susceptible to call stack limits).
- if (!(compared === undefined
- ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
- : compared
- )) {
- result = false;
- break;
- }
- skipCtor || (skipCtor = key == 'constructor');
- }
- if (result && !skipCtor) {
- var objCtor = object.constructor,
- othCtor = other.constructor;
-
- // Non `Object` object instances with different constructors are not equal.
- if (objCtor != othCtor &&
- ('constructor' in object && 'constructor' in other) &&
- !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
- typeof othCtor == 'function' && othCtor instanceof othCtor)) {
- result = false;
- }
- }
- stack['delete'](object);
- stack['delete'](other);
- return result;
- }
-
- module.exports = equalObjects;
-
-
-/***/ },
-/* 68 */
-/*!*********************************!*\
- !*** ./~/lodash/_getAllKeys.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ 69),
- getSymbols = __webpack_require__(/*! ./_getSymbols */ 72),
- keys = __webpack_require__(/*! ./keys */ 75);
-
- /**
- * Creates an array of own enumerable property names and symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */
- function getAllKeys(object) {
- return baseGetAllKeys(object, keys, getSymbols);
- }
-
- module.exports = getAllKeys;
-
-
-/***/ },
-/* 69 */
-/*!*************************************!*\
- !*** ./~/lodash/_baseGetAllKeys.js ***!
- \*************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var arrayPush = __webpack_require__(/*! ./_arrayPush */ 70),
- isArray = __webpack_require__(/*! ./isArray */ 71);
-
- /**
- * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
- * `keysFunc` and `symbolsFunc` to get the enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @param {Function} symbolsFunc The function to get the symbols of `object`.
- * @returns {Array} Returns the array of property names and symbols.
- */
- function baseGetAllKeys(object, keysFunc, symbolsFunc) {
- var result = keysFunc(object);
- return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
- }
-
- module.exports = baseGetAllKeys;
-
-
-/***/ },
-/* 70 */
-/*!********************************!*\
- !*** ./~/lodash/_arrayPush.js ***!
- \********************************/
-/***/ function(module, exports) {
-
- /**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
- function arrayPush(array, values) {
- var index = -1,
- length = values.length,
- offset = array.length;
-
- while (++index < length) {
- array[offset + index] = values[index];
- }
- return array;
- }
-
- module.exports = arrayPush;
-
-
-/***/ },
-/* 71 */
-/*!*****************************!*\
- !*** ./~/lodash/isArray.js ***!
- \*****************************/
-/***/ function(module, exports) {
-
- /**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
- var isArray = Array.isArray;
-
- module.exports = isArray;
-
-
-/***/ },
-/* 72 */
-/*!*********************************!*\
- !*** ./~/lodash/_getSymbols.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ 73),
- stubArray = __webpack_require__(/*! ./stubArray */ 74);
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /** Built-in value references. */
- var propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeGetSymbols = Object.getOwnPropertySymbols;
-
- /**
- * Creates an array of the own enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
- var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
- if (object == null) {
- return [];
- }
- object = Object(object);
- return arrayFilter(nativeGetSymbols(object), function(symbol) {
- return propertyIsEnumerable.call(object, symbol);
- });
- };
-
- module.exports = getSymbols;
-
-
-/***/ },
-/* 73 */
-/*!**********************************!*\
- !*** ./~/lodash/_arrayFilter.js ***!
- \**********************************/
-/***/ function(module, exports) {
-
- /**
- * A specialized version of `_.filter` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
- function arrayFilter(array, predicate) {
- var index = -1,
- length = array == null ? 0 : array.length,
- resIndex = 0,
- result = [];
-
- while (++index < length) {
- var value = array[index];
- if (predicate(value, index, array)) {
- result[resIndex++] = value;
- }
- }
- return result;
- }
-
- module.exports = arrayFilter;
-
-
-/***/ },
-/* 74 */
-/*!*******************************!*\
- !*** ./~/lodash/stubArray.js ***!
- \*******************************/
-/***/ function(module, exports) {
-
- /**
- * This method returns a new empty array.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Array} Returns the new empty array.
- * @example
- *
- * var arrays = _.times(2, _.stubArray);
- *
- * console.log(arrays);
- * // => [[], []]
- *
- * console.log(arrays[0] === arrays[1]);
- * // => false
- */
- function stubArray() {
- return [];
- }
-
- module.exports = stubArray;
-
-
-/***/ },
-/* 75 */
-/*!**************************!*\
- !*** ./~/lodash/keys.js ***!
- \**************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ 76),
- baseKeys = __webpack_require__(/*! ./_baseKeys */ 90),
- isArrayLike = __webpack_require__(/*! ./isArrayLike */ 94);
-
- /**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- * this.a = 1;
- * this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */
- function keys(object) {
- return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
- }
-
- module.exports = keys;
-
-
-/***/ },
-/* 76 */
-/*!************************************!*\
- !*** ./~/lodash/_arrayLikeKeys.js ***!
- \************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseTimes = __webpack_require__(/*! ./_baseTimes */ 77),
- isArguments = __webpack_require__(/*! ./isArguments */ 78),
- isArray = __webpack_require__(/*! ./isArray */ 71),
- isBuffer = __webpack_require__(/*! ./isBuffer */ 81),
- isIndex = __webpack_require__(/*! ./_isIndex */ 84),
- isTypedArray = __webpack_require__(/*! ./isTypedArray */ 85);
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /**
- * Creates an array of the enumerable property names of the array-like `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @param {boolean} inherited Specify returning inherited property names.
- * @returns {Array} Returns the array of property names.
- */
- function arrayLikeKeys(value, inherited) {
- var isArr = isArray(value),
- isArg = !isArr && isArguments(value),
- isBuff = !isArr && !isArg && isBuffer(value),
- isType = !isArr && !isArg && !isBuff && isTypedArray(value),
- skipIndexes = isArr || isArg || isBuff || isType,
- result = skipIndexes ? baseTimes(value.length, String) : [],
- length = result.length;
-
- for (var key in value) {
- if ((inherited || hasOwnProperty.call(value, key)) &&
- !(skipIndexes && (
- // Safari 9 has enumerable `arguments.length` in strict mode.
- key == 'length' ||
- // Node.js 0.10 has enumerable non-index properties on buffers.
- (isBuff && (key == 'offset' || key == 'parent')) ||
- // PhantomJS 2 has enumerable non-index properties on typed arrays.
- (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
- // Skip index properties.
- isIndex(key, length)
- ))) {
- result.push(key);
- }
- }
- return result;
- }
-
- module.exports = arrayLikeKeys;
-
-
-/***/ },
-/* 77 */
-/*!********************************!*\
- !*** ./~/lodash/_baseTimes.js ***!
- \********************************/
-/***/ function(module, exports) {
-
- /**
- * The base implementation of `_.times` without support for iteratee shorthands
- * or max array length checks.
- *
- * @private
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- */
- function baseTimes(n, iteratee) {
- var index = -1,
- result = Array(n);
-
- while (++index < n) {
- result[index] = iteratee(index);
- }
- return result;
- }
-
- module.exports = baseTimes;
-
-
-/***/ },
-/* 78 */
-/*!*********************************!*\
- !*** ./~/lodash/isArguments.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ 79),
- isObjectLike = __webpack_require__(/*! ./isObjectLike */ 80);
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /** Built-in value references. */
- var propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
- /**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- * else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
- var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
- return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
- !propertyIsEnumerable.call(value, 'callee');
- };
-
- module.exports = isArguments;
-
-
-/***/ },
-/* 79 */
-/*!**************************************!*\
- !*** ./~/lodash/_baseIsArguments.js ***!
- \**************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ 29),
- isObjectLike = __webpack_require__(/*! ./isObjectLike */ 80);
-
- /** `Object#toString` result references. */
- var argsTag = '[object Arguments]';
-
- /**
- * The base implementation of `_.isArguments`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- */
- function baseIsArguments(value) {
- return isObjectLike(value) && baseGetTag(value) == argsTag;
- }
-
- module.exports = baseIsArguments;
-
-
-/***/ },
-/* 80 */
-/*!**********************************!*\
- !*** ./~/lodash/isObjectLike.js ***!
- \**********************************/
-/***/ function(module, exports) {
-
- /**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
- function isObjectLike(value) {
- return value != null && typeof value == 'object';
- }
-
- module.exports = isObjectLike;
-
-
-/***/ },
-/* 81 */
-/*!******************************!*\
- !*** ./~/lodash/isBuffer.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ 31),
- stubFalse = __webpack_require__(/*! ./stubFalse */ 83);
-
- /** Detect free variable `exports`. */
- var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
- /** Detect free variable `module`. */
- var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
- /** Detect the popular CommonJS extension `module.exports`. */
- var moduleExports = freeModule && freeModule.exports === freeExports;
-
- /** Built-in value references. */
- var Buffer = moduleExports ? root.Buffer : undefined;
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
-
- /**
- * Checks if `value` is a buffer.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
- * @example
- *
- * _.isBuffer(new Buffer(2));
- * // => true
- *
- * _.isBuffer(new Uint8Array(2));
- * // => false
- */
- var isBuffer = nativeIsBuffer || stubFalse;
-
- module.exports = isBuffer;
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../webpack/buildin/module.js */ 82)(module)))
-
-/***/ },
-/* 82 */
-/*!***********************************!*\
- !*** (webpack)/buildin/module.js ***!
- \***********************************/
-/***/ function(module, exports) {
-
- module.exports = function(module) {
- if(!module.webpackPolyfill) {
- module.deprecate = function() {};
- module.paths = [];
- // module.parent = undefined by default
- module.children = [];
- module.webpackPolyfill = 1;
- }
- return module;
- }
-
-
-/***/ },
-/* 83 */
-/*!*******************************!*\
- !*** ./~/lodash/stubFalse.js ***!
- \*******************************/
-/***/ function(module, exports) {
-
- /**
- * This method returns `false`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `false`.
- * @example
- *
- * _.times(2, _.stubFalse);
- * // => [false, false]
- */
- function stubFalse() {
- return false;
- }
-
- module.exports = stubFalse;
-
-
-/***/ },
-/* 84 */
-/*!******************************!*\
- !*** ./~/lodash/_isIndex.js ***!
- \******************************/
-/***/ function(module, exports) {
-
- /** Used as references for various `Number` constants. */
- var MAX_SAFE_INTEGER = 9007199254740991;
-
- /** Used to detect unsigned integer values. */
- var reIsUint = /^(?:0|[1-9]\d*)$/;
-
- /**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
- function isIndex(value, length) {
- length = length == null ? MAX_SAFE_INTEGER : length;
- return !!length &&
- (typeof value == 'number' || reIsUint.test(value)) &&
- (value > -1 && value % 1 == 0 && value < length);
- }
-
- module.exports = isIndex;
-
-
-/***/ },
-/* 85 */
-/*!**********************************!*\
- !*** ./~/lodash/isTypedArray.js ***!
- \**********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ 86),
- baseUnary = __webpack_require__(/*! ./_baseUnary */ 88),
- nodeUtil = __webpack_require__(/*! ./_nodeUtil */ 89);
-
- /* Node.js helper references. */
- var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
-
- /**
- * Checks if `value` is classified as a typed array.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- * @example
- *
- * _.isTypedArray(new Uint8Array);
- * // => true
- *
- * _.isTypedArray([]);
- * // => false
- */
- var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
-
- module.exports = isTypedArray;
-
-
-/***/ },
-/* 86 */
-/*!***************************************!*\
- !*** ./~/lodash/_baseIsTypedArray.js ***!
- \***************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ 29),
- isLength = __webpack_require__(/*! ./isLength */ 87),
- isObjectLike = __webpack_require__(/*! ./isObjectLike */ 80);
-
- /** `Object#toString` result references. */
- var argsTag = '[object Arguments]',
- arrayTag = '[object Array]',
- boolTag = '[object Boolean]',
- dateTag = '[object Date]',
- errorTag = '[object Error]',
- funcTag = '[object Function]',
- mapTag = '[object Map]',
- numberTag = '[object Number]',
- objectTag = '[object Object]',
- regexpTag = '[object RegExp]',
- setTag = '[object Set]',
- stringTag = '[object String]',
- weakMapTag = '[object WeakMap]';
-
- var arrayBufferTag = '[object ArrayBuffer]',
- dataViewTag = '[object DataView]',
- float32Tag = '[object Float32Array]',
- float64Tag = '[object Float64Array]',
- int8Tag = '[object Int8Array]',
- int16Tag = '[object Int16Array]',
- int32Tag = '[object Int32Array]',
- uint8Tag = '[object Uint8Array]',
- uint8ClampedTag = '[object Uint8ClampedArray]',
- uint16Tag = '[object Uint16Array]',
- uint32Tag = '[object Uint32Array]';
-
- /** Used to identify `toStringTag` values of typed arrays. */
- var typedArrayTags = {};
- typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
- typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
- typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
- typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
- typedArrayTags[uint32Tag] = true;
- typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
- typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
- typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
- typedArrayTags[errorTag] = typedArrayTags[funcTag] =
- typedArrayTags[mapTag] = typedArrayTags[numberTag] =
- typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
- typedArrayTags[setTag] = typedArrayTags[stringTag] =
- typedArrayTags[weakMapTag] = false;
-
- /**
- * The base implementation of `_.isTypedArray` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- */
- function baseIsTypedArray(value) {
- return isObjectLike(value) &&
- isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
- }
-
- module.exports = baseIsTypedArray;
-
-
-/***/ },
-/* 87 */
-/*!******************************!*\
- !*** ./~/lodash/isLength.js ***!
- \******************************/
-/***/ function(module, exports) {
-
- /** Used as references for various `Number` constants. */
- var MAX_SAFE_INTEGER = 9007199254740991;
-
- /**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
- function isLength(value) {
- return typeof value == 'number' &&
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
- }
-
- module.exports = isLength;
-
-
-/***/ },
-/* 88 */
-/*!********************************!*\
- !*** ./~/lodash/_baseUnary.js ***!
- \********************************/
-/***/ function(module, exports) {
-
- /**
- * The base implementation of `_.unary` without support for storing metadata.
- *
- * @private
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
- */
- function baseUnary(func) {
- return function(value) {
- return func(value);
- };
- }
-
- module.exports = baseUnary;
-
-
-/***/ },
-/* 89 */
-/*!*******************************!*\
- !*** ./~/lodash/_nodeUtil.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- /* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ 32);
-
- /** Detect free variable `exports`. */
- var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
- /** Detect free variable `module`. */
- var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
- /** Detect the popular CommonJS extension `module.exports`. */
- var moduleExports = freeModule && freeModule.exports === freeExports;
-
- /** Detect free variable `process` from Node.js. */
- var freeProcess = moduleExports && freeGlobal.process;
-
- /** Used to access faster Node.js helpers. */
- var nodeUtil = (function() {
- try {
- return freeProcess && freeProcess.binding && freeProcess.binding('util');
- } catch (e) {}
- }());
-
- module.exports = nodeUtil;
-
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(/*! ./../webpack/buildin/module.js */ 82)(module)))
-
-/***/ },
-/* 90 */
-/*!*******************************!*\
- !*** ./~/lodash/_baseKeys.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isPrototype = __webpack_require__(/*! ./_isPrototype */ 91),
- nativeKeys = __webpack_require__(/*! ./_nativeKeys */ 92);
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /** Used to check objects for own properties. */
- var hasOwnProperty = objectProto.hasOwnProperty;
-
- /**
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
- function baseKeys(object) {
- if (!isPrototype(object)) {
- return nativeKeys(object);
- }
- var result = [];
- for (var key in Object(object)) {
- if (hasOwnProperty.call(object, key) && key != 'constructor') {
- result.push(key);
- }
- }
- return result;
- }
-
- module.exports = baseKeys;
-
-
-/***/ },
-/* 91 */
-/*!**********************************!*\
- !*** ./~/lodash/_isPrototype.js ***!
- \**********************************/
-/***/ function(module, exports) {
-
- /** Used for built-in method references. */
- var objectProto = Object.prototype;
-
- /**
- * Checks if `value` is likely a prototype object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
- */
- function isPrototype(value) {
- var Ctor = value && value.constructor,
- proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
-
- return value === proto;
- }
-
- module.exports = isPrototype;
-
-
-/***/ },
-/* 92 */
-/*!*********************************!*\
- !*** ./~/lodash/_nativeKeys.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var overArg = __webpack_require__(/*! ./_overArg */ 93);
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeKeys = overArg(Object.keys, Object);
-
- module.exports = nativeKeys;
-
-
-/***/ },
-/* 93 */
-/*!******************************!*\
- !*** ./~/lodash/_overArg.js ***!
- \******************************/
-/***/ function(module, exports) {
-
- /**
- * Creates a unary function that invokes `func` with its argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */
- function overArg(func, transform) {
- return function(arg) {
- return func(transform(arg));
- };
- }
-
- module.exports = overArg;
-
-
-/***/ },
-/* 94 */
-/*!*********************************!*\
- !*** ./~/lodash/isArrayLike.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isFunction = __webpack_require__(/*! ./isFunction */ 28),
- isLength = __webpack_require__(/*! ./isLength */ 87);
-
- /**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
- function isArrayLike(value) {
- return value != null && isLength(value.length) && !isFunction(value);
- }
-
- module.exports = isArrayLike;
-
-
-/***/ },
-/* 95 */
-/*!*****************************!*\
- !*** ./~/lodash/_getTag.js ***!
- \*****************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var DataView = __webpack_require__(/*! ./_DataView */ 96),
- Map = __webpack_require__(/*! ./_Map */ 25),
- Promise = __webpack_require__(/*! ./_Promise */ 97),
- Set = __webpack_require__(/*! ./_Set */ 98),
- WeakMap = __webpack_require__(/*! ./_WeakMap */ 99),
- baseGetTag = __webpack_require__(/*! ./_baseGetTag */ 29),
- toSource = __webpack_require__(/*! ./_toSource */ 38);
-
- /** `Object#toString` result references. */
- var mapTag = '[object Map]',
- objectTag = '[object Object]',
- promiseTag = '[object Promise]',
- setTag = '[object Set]',
- weakMapTag = '[object WeakMap]';
-
- var dataViewTag = '[object DataView]';
-
- /** Used to detect maps, sets, and weakmaps. */
- var dataViewCtorString = toSource(DataView),
- mapCtorString = toSource(Map),
- promiseCtorString = toSource(Promise),
- setCtorString = toSource(Set),
- weakMapCtorString = toSource(WeakMap);
-
- /**
- * Gets the `toStringTag` of `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
- var getTag = baseGetTag;
-
- // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
- if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
- (Map && getTag(new Map) != mapTag) ||
- (Promise && getTag(Promise.resolve()) != promiseTag) ||
- (Set && getTag(new Set) != setTag) ||
- (WeakMap && getTag(new WeakMap) != weakMapTag)) {
- getTag = function(value) {
- var result = baseGetTag(value),
- Ctor = result == objectTag ? value.constructor : undefined,
- ctorString = Ctor ? toSource(Ctor) : '';
-
- if (ctorString) {
- switch (ctorString) {
- case dataViewCtorString: return dataViewTag;
- case mapCtorString: return mapTag;
- case promiseCtorString: return promiseTag;
- case setCtorString: return setTag;
- case weakMapCtorString: return weakMapTag;
- }
- }
- return result;
- };
- }
-
- module.exports = getTag;
-
-
-/***/ },
-/* 96 */
-/*!*******************************!*\
- !*** ./~/lodash/_DataView.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getNative = __webpack_require__(/*! ./_getNative */ 26),
- root = __webpack_require__(/*! ./_root */ 31);
-
- /* Built-in method references that are verified to be native. */
- var DataView = getNative(root, 'DataView');
-
- module.exports = DataView;
-
-
-/***/ },
-/* 97 */
-/*!******************************!*\
- !*** ./~/lodash/_Promise.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getNative = __webpack_require__(/*! ./_getNative */ 26),
- root = __webpack_require__(/*! ./_root */ 31);
-
- /* Built-in method references that are verified to be native. */
- var Promise = getNative(root, 'Promise');
-
- module.exports = Promise;
-
-
-/***/ },
-/* 98 */
-/*!**************************!*\
- !*** ./~/lodash/_Set.js ***!
- \**************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getNative = __webpack_require__(/*! ./_getNative */ 26),
- root = __webpack_require__(/*! ./_root */ 31);
-
- /* Built-in method references that are verified to be native. */
- var Set = getNative(root, 'Set');
-
- module.exports = Set;
-
-
-/***/ },
-/* 99 */
-/*!******************************!*\
- !*** ./~/lodash/_WeakMap.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var getNative = __webpack_require__(/*! ./_getNative */ 26),
- root = __webpack_require__(/*! ./_root */ 31);
-
- /* Built-in method references that are verified to be native. */
- var WeakMap = getNative(root, 'WeakMap');
-
- module.exports = WeakMap;
-
-
-/***/ },
-/* 100 */
-/*!***********************************!*\
- !*** ./~/lodash/_getMatchData.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ 101),
- keys = __webpack_require__(/*! ./keys */ 75);
-
- /**
- * Gets the property names, values, and compare flags of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the match data of `object`.
- */
- function getMatchData(object) {
- var result = keys(object),
- length = result.length;
-
- while (length--) {
- var key = result[length],
- value = object[key];
-
- result[length] = [key, value, isStrictComparable(value)];
- }
- return result;
- }
-
- module.exports = getMatchData;
-
-
-/***/ },
-/* 101 */
-/*!*****************************************!*\
- !*** ./~/lodash/_isStrictComparable.js ***!
- \*****************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isObject = __webpack_require__(/*! ./isObject */ 35);
-
- /**
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` if suitable for strict
- * equality comparisons, else `false`.
- */
- function isStrictComparable(value) {
- return value === value && !isObject(value);
- }
-
- module.exports = isStrictComparable;
-
-
-/***/ },
-/* 102 */
-/*!**********************************************!*\
- !*** ./~/lodash/_matchesStrictComparable.js ***!
- \**********************************************/
-/***/ function(module, exports) {
-
- /**
- * A specialized version of `matchesProperty` for source values suitable
- * for strict equality comparisons, i.e. `===`.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- */
- function matchesStrictComparable(key, srcValue) {
- return function(object) {
- if (object == null) {
- return false;
- }
- return object[key] === srcValue &&
- (srcValue !== undefined || (key in Object(object)));
- };
- }
-
- module.exports = matchesStrictComparable;
-
-
-/***/ },
-/* 103 */
-/*!******************************************!*\
- !*** ./~/lodash/_baseMatchesProperty.js ***!
- \******************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ 55),
- get = __webpack_require__(/*! ./get */ 104),
- hasIn = __webpack_require__(/*! ./hasIn */ 116),
- isKey = __webpack_require__(/*! ./_isKey */ 107),
- isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ 101),
- matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ 102),
- toKey = __webpack_require__(/*! ./_toKey */ 115);
-
- /** Used to compose bitmasks for value comparisons. */
- var COMPARE_PARTIAL_FLAG = 1,
- COMPARE_UNORDERED_FLAG = 2;
-
- /**
- * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
- *
- * @private
- * @param {string} path The path of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- */
- function baseMatchesProperty(path, srcValue) {
- if (isKey(path) && isStrictComparable(srcValue)) {
- return matchesStrictComparable(toKey(path), srcValue);
- }
- return function(object) {
- var objValue = get(object, path);
- return (objValue === undefined && objValue === srcValue)
- ? hasIn(object, path)
- : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
- };
- }
-
- module.exports = baseMatchesProperty;
-
-
-/***/ },
-/* 104 */
-/*!*************************!*\
- !*** ./~/lodash/get.js ***!
- \*************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseGet = __webpack_require__(/*! ./_baseGet */ 105);
-
- /**
- * Gets the value at `path` of `object`. If the resolved value is
- * `undefined`, the `defaultValue` is returned in its place.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.get(object, 'a[0].b.c');
- * // => 3
- *
- * _.get(object, ['a', '0', 'b', 'c']);
- * // => 3
- *
- * _.get(object, 'a.b.c', 'default');
- * // => 'default'
- */
- function get(object, path, defaultValue) {
- var result = object == null ? undefined : baseGet(object, path);
- return result === undefined ? defaultValue : result;
- }
-
- module.exports = get;
-
-
-/***/ },
-/* 105 */
-/*!******************************!*\
- !*** ./~/lodash/_baseGet.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var castPath = __webpack_require__(/*! ./_castPath */ 106),
- toKey = __webpack_require__(/*! ./_toKey */ 115);
-
- /**
- * The base implementation of `_.get` without support for default values.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @returns {*} Returns the resolved value.
- */
- function baseGet(object, path) {
- path = castPath(path, object);
-
- var index = 0,
- length = path.length;
-
- while (object != null && index < length) {
- object = object[toKey(path[index++])];
- }
- return (index && index == length) ? object : undefined;
- }
-
- module.exports = baseGet;
-
-
-/***/ },
-/* 106 */
-/*!*******************************!*\
- !*** ./~/lodash/_castPath.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isArray = __webpack_require__(/*! ./isArray */ 71),
- isKey = __webpack_require__(/*! ./_isKey */ 107),
- stringToPath = __webpack_require__(/*! ./_stringToPath */ 109),
- toString = __webpack_require__(/*! ./toString */ 112);
-
- /**
- * Casts `value` to a path array if it's not one.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {Object} [object] The object to query keys on.
- * @returns {Array} Returns the cast property path array.
- */
- function castPath(value, object) {
- if (isArray(value)) {
- return value;
- }
- return isKey(value, object) ? [value] : stringToPath(toString(value));
- }
-
- module.exports = castPath;
-
-
-/***/ },
-/* 107 */
-/*!****************************!*\
- !*** ./~/lodash/_isKey.js ***!
- \****************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isArray = __webpack_require__(/*! ./isArray */ 71),
- isSymbol = __webpack_require__(/*! ./isSymbol */ 108);
-
- /** Used to match property names within property paths. */
- var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
- reIsPlainProp = /^\w*$/;
-
- /**
- * Checks if `value` is a property name and not a property path.
- *
- * @private
- * @param {*} value The value to check.
- * @param {Object} [object] The object to query keys on.
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
- */
- function isKey(value, object) {
- if (isArray(value)) {
- return false;
- }
- var type = typeof value;
- if (type == 'number' || type == 'symbol' || type == 'boolean' ||
- value == null || isSymbol(value)) {
- return true;
- }
- return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
- (object != null && value in Object(object));
- }
-
- module.exports = isKey;
-
-
-/***/ },
-/* 108 */
-/*!******************************!*\
- !*** ./~/lodash/isSymbol.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ 29),
- isObjectLike = __webpack_require__(/*! ./isObjectLike */ 80);
-
- /** `Object#toString` result references. */
- var symbolTag = '[object Symbol]';
-
- /**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
- function isSymbol(value) {
- return typeof value == 'symbol' ||
- (isObjectLike(value) && baseGetTag(value) == symbolTag);
- }
-
- module.exports = isSymbol;
-
-
-/***/ },
-/* 109 */
-/*!***********************************!*\
- !*** ./~/lodash/_stringToPath.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ 110);
-
- /** Used to match property names within property paths. */
- var reLeadingDot = /^\./,
- rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
-
- /** Used to match backslashes in property paths. */
- var reEscapeChar = /\\(\\)?/g;
-
- /**
- * Converts `string` to a property path array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the property path array.
- */
- var stringToPath = memoizeCapped(function(string) {
- var result = [];
- if (reLeadingDot.test(string)) {
- result.push('');
- }
- string.replace(rePropName, function(match, number, quote, string) {
- result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
- });
- return result;
- });
-
- module.exports = stringToPath;
-
-
-/***/ },
-/* 110 */
-/*!************************************!*\
- !*** ./~/lodash/_memoizeCapped.js ***!
- \************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var memoize = __webpack_require__(/*! ./memoize */ 111);
-
- /** Used as the maximum memoize cache size. */
- var MAX_MEMOIZE_SIZE = 500;
-
- /**
- * A specialized version of `_.memoize` which clears the memoized function's
- * cache when it exceeds `MAX_MEMOIZE_SIZE`.
- *
- * @private
- * @param {Function} func The function to have its output memoized.
- * @returns {Function} Returns the new memoized function.
- */
- function memoizeCapped(func) {
- var result = memoize(func, function(key) {
- if (cache.size === MAX_MEMOIZE_SIZE) {
- cache.clear();
- }
- return key;
- });
-
- var cache = result.cache;
- return result;
- }
-
- module.exports = memoizeCapped;
-
-
-/***/ },
-/* 111 */
-/*!*****************************!*\
- !*** ./~/lodash/memoize.js ***!
- \*****************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var MapCache = __webpack_require__(/*! ./_MapCache */ 40);
-
- /** Error message constants. */
- var FUNC_ERROR_TEXT = 'Expected a function';
-
- /**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided, it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is used as the map cache key. The `func`
- * is invoked with the `this` binding of the memoized function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `clear`, `delete`, `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoized function.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- * var other = { 'c': 3, 'd': 4 };
- *
- * var values = _.memoize(_.values);
- * values(object);
- * // => [1, 2]
- *
- * values(other);
- * // => [3, 4]
- *
- * object.a = 2;
- * values(object);
- * // => [1, 2]
- *
- * // Modify the result cache.
- * values.cache.set(object, ['a', 'b']);
- * values(object);
- * // => ['a', 'b']
- *
- * // Replace `_.memoize.Cache`.
- * _.memoize.Cache = WeakMap;
- */
- function memoize(func, resolver) {
- if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
- throw new TypeError(FUNC_ERROR_TEXT);
- }
- var memoized = function() {
- var args = arguments,
- key = resolver ? resolver.apply(this, args) : args[0],
- cache = memoized.cache;
-
- if (cache.has(key)) {
- return cache.get(key);
- }
- var result = func.apply(this, args);
- memoized.cache = cache.set(key, result) || cache;
- return result;
- };
- memoized.cache = new (memoize.Cache || MapCache);
- return memoized;
- }
-
- // Expose `MapCache`.
- memoize.Cache = MapCache;
-
- module.exports = memoize;
-
-
-/***/ },
-/* 112 */
-/*!******************************!*\
- !*** ./~/lodash/toString.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseToString = __webpack_require__(/*! ./_baseToString */ 113);
-
- /**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
- function toString(value) {
- return value == null ? '' : baseToString(value);
- }
-
- module.exports = toString;
-
-
-/***/ },
-/* 113 */
-/*!***********************************!*\
- !*** ./~/lodash/_baseToString.js ***!
- \***********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var Symbol = __webpack_require__(/*! ./_Symbol */ 30),
- arrayMap = __webpack_require__(/*! ./_arrayMap */ 114),
- isArray = __webpack_require__(/*! ./isArray */ 71),
- isSymbol = __webpack_require__(/*! ./isSymbol */ 108);
-
- /** Used as references for various `Number` constants. */
- var INFINITY = 1 / 0;
-
- /** Used to convert symbols to primitives and strings. */
- var symbolProto = Symbol ? Symbol.prototype : undefined,
- symbolToString = symbolProto ? symbolProto.toString : undefined;
-
- /**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
- function baseToString(value) {
- // Exit early for strings to avoid a performance hit in some environments.
- if (typeof value == 'string') {
- return value;
- }
- if (isArray(value)) {
- // Recursively convert values (susceptible to call stack limits).
- return arrayMap(value, baseToString) + '';
- }
- if (isSymbol(value)) {
- return symbolToString ? symbolToString.call(value) : '';
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
- }
-
- module.exports = baseToString;
-
-
-/***/ },
-/* 114 */
-/*!*******************************!*\
- !*** ./~/lodash/_arrayMap.js ***!
- \*******************************/
-/***/ function(module, exports) {
-
- /**
- * A specialized version of `_.map` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
- function arrayMap(array, iteratee) {
- var index = -1,
- length = array == null ? 0 : array.length,
- result = Array(length);
-
- while (++index < length) {
- result[index] = iteratee(array[index], index, array);
- }
- return result;
- }
-
- module.exports = arrayMap;
-
-
-/***/ },
-/* 115 */
-/*!****************************!*\
- !*** ./~/lodash/_toKey.js ***!
- \****************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isSymbol = __webpack_require__(/*! ./isSymbol */ 108);
-
- /** Used as references for various `Number` constants. */
- var INFINITY = 1 / 0;
-
- /**
- * Converts `value` to a string key if it's not a string or symbol.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {string|symbol} Returns the key.
- */
- function toKey(value) {
- if (typeof value == 'string' || isSymbol(value)) {
- return value;
- }
- var result = (value + '');
- return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
- }
-
- module.exports = toKey;
-
-
-/***/ },
-/* 116 */
-/*!***************************!*\
- !*** ./~/lodash/hasIn.js ***!
- \***************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ 117),
- hasPath = __webpack_require__(/*! ./_hasPath */ 118);
-
- /**
- * Checks if `path` is a direct or inherited property of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.hasIn(object, 'a');
- * // => true
- *
- * _.hasIn(object, 'a.b');
- * // => true
- *
- * _.hasIn(object, ['a', 'b']);
- * // => true
- *
- * _.hasIn(object, 'b');
- * // => false
- */
- function hasIn(object, path) {
- return object != null && hasPath(object, path, baseHasIn);
- }
-
- module.exports = hasIn;
-
-
-/***/ },
-/* 117 */
-/*!********************************!*\
- !*** ./~/lodash/_baseHasIn.js ***!
- \********************************/
-/***/ function(module, exports) {
-
- /**
- * The base implementation of `_.hasIn` without support for deep paths.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {Array|string} key The key to check.
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
- */
- function baseHasIn(object, key) {
- return object != null && key in Object(object);
- }
-
- module.exports = baseHasIn;
-
-
-/***/ },
-/* 118 */
-/*!******************************!*\
- !*** ./~/lodash/_hasPath.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var castPath = __webpack_require__(/*! ./_castPath */ 106),
- isArguments = __webpack_require__(/*! ./isArguments */ 78),
- isArray = __webpack_require__(/*! ./isArray */ 71),
- isIndex = __webpack_require__(/*! ./_isIndex */ 84),
- isLength = __webpack_require__(/*! ./isLength */ 87),
- toKey = __webpack_require__(/*! ./_toKey */ 115);
-
- /**
- * Checks if `path` exists on `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @param {Function} hasFunc The function to check properties.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- */
- function hasPath(object, path, hasFunc) {
- path = castPath(path, object);
-
- var index = -1,
- length = path.length,
- result = false;
-
- while (++index < length) {
- var key = toKey(path[index]);
- if (!(result = object != null && hasFunc(object, key))) {
- break;
- }
- object = object[key];
- }
- if (result || ++index != length) {
- return result;
- }
- length = object == null ? 0 : object.length;
- return !!length && isLength(length) && isIndex(key, length) &&
- (isArray(object) || isArguments(object));
- }
-
- module.exports = hasPath;
-
-
-/***/ },
-/* 119 */
-/*!******************************!*\
- !*** ./~/lodash/identity.js ***!
- \******************************/
-/***/ function(module, exports) {
-
- /**
- * This method returns the first argument it receives.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {*} value Any value.
- * @returns {*} Returns `value`.
- * @example
- *
- * var object = { 'a': 1 };
- *
- * console.log(_.identity(object) === object);
- * // => true
- */
- function identity(value) {
- return value;
- }
-
- module.exports = identity;
-
-
-/***/ },
-/* 120 */
-/*!******************************!*\
- !*** ./~/lodash/property.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseProperty = __webpack_require__(/*! ./_baseProperty */ 121),
- basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ 122),
- isKey = __webpack_require__(/*! ./_isKey */ 107),
- toKey = __webpack_require__(/*! ./_toKey */ 115);
-
- /**
- * Creates a function that returns the value at `path` of a given object.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Util
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- * @example
- *
- * var objects = [
- * { 'a': { 'b': 2 } },
- * { 'a': { 'b': 1 } }
- * ];
- *
- * _.map(objects, _.property('a.b'));
- * // => [2, 1]
- *
- * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
- * // => [1, 2]
- */
- function property(path) {
- return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
- }
-
- module.exports = property;
-
-
-/***/ },
-/* 121 */
-/*!***********************************!*\
- !*** ./~/lodash/_baseProperty.js ***!
- \***********************************/
-/***/ function(module, exports) {
-
- /**
- * The base implementation of `_.property` without support for deep paths.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
- function baseProperty(key) {
- return function(object) {
- return object == null ? undefined : object[key];
- };
- }
-
- module.exports = baseProperty;
-
-
-/***/ },
-/* 122 */
-/*!***************************************!*\
- !*** ./~/lodash/_basePropertyDeep.js ***!
- \***************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseGet = __webpack_require__(/*! ./_baseGet */ 105);
-
- /**
- * A specialized version of `baseProperty` which supports deep paths.
- *
- * @private
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
- function basePropertyDeep(path) {
- return function(object) {
- return baseGet(object, path);
- };
- }
-
- module.exports = basePropertyDeep;
-
-
-/***/ },
-/* 123 */
-/*!*******************************!*\
- !*** ./~/lodash/findIndex.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ 124),
- baseIteratee = __webpack_require__(/*! ./_baseIteratee */ 8),
- toInteger = __webpack_require__(/*! ./toInteger */ 125);
-
- /* Built-in method references for those with the same name as other `lodash` methods. */
- var nativeMax = Math.max;
-
- /**
- * This method is like `_.find` except that it returns the index of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- * { 'user': 'barney', 'active': false },
- * { 'user': 'fred', 'active': false },
- * { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.findIndex(users, function(o) { return o.user == 'barney'; });
- * // => 0
- *
- * // The `_.matches` iteratee shorthand.
- * _.findIndex(users, { 'user': 'fred', 'active': false });
- * // => 1
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findIndex(users, ['active', false]);
- * // => 0
- *
- * // The `_.property` iteratee shorthand.
- * _.findIndex(users, 'active');
- * // => 2
- */
- function findIndex(array, predicate, fromIndex) {
- var length = array == null ? 0 : array.length;
- if (!length) {
- return -1;
- }
- var index = fromIndex == null ? 0 : toInteger(fromIndex);
- if (index < 0) {
- index = nativeMax(length + index, 0);
- }
- return baseFindIndex(array, baseIteratee(predicate, 3), index);
- }
-
- module.exports = findIndex;
-
-
-/***/ },
-/* 124 */
-/*!************************************!*\
- !*** ./~/lodash/_baseFindIndex.js ***!
- \************************************/
-/***/ function(module, exports) {
-
- /**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
- function baseFindIndex(array, predicate, fromIndex, fromRight) {
- var length = array.length,
- index = fromIndex + (fromRight ? 1 : -1);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (predicate(array[index], index, array)) {
- return index;
- }
- }
- return -1;
- }
-
- module.exports = baseFindIndex;
-
-
-/***/ },
-/* 125 */
-/*!*******************************!*\
- !*** ./~/lodash/toInteger.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var toFinite = __webpack_require__(/*! ./toFinite */ 126);
-
- /**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
- function toInteger(value) {
- var result = toFinite(value),
- remainder = result % 1;
-
- return result === result ? (remainder ? result - remainder : result) : 0;
- }
-
- module.exports = toInteger;
-
-
-/***/ },
-/* 126 */
-/*!******************************!*\
- !*** ./~/lodash/toFinite.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var toNumber = __webpack_require__(/*! ./toNumber */ 127);
-
- /** Used as references for various `Number` constants. */
- var INFINITY = 1 / 0,
- MAX_INTEGER = 1.7976931348623157e+308;
-
- /**
- * Converts `value` to a finite number.
- *
- * @static
- * @memberOf _
- * @since 4.12.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted number.
- * @example
- *
- * _.toFinite(3.2);
- * // => 3.2
- *
- * _.toFinite(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toFinite(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toFinite('3.2');
- * // => 3.2
- */
- function toFinite(value) {
- if (!value) {
- return value === 0 ? value : 0;
- }
- value = toNumber(value);
- if (value === INFINITY || value === -INFINITY) {
- var sign = (value < 0 ? -1 : 1);
- return sign * MAX_INTEGER;
- }
- return value === value ? value : 0;
- }
-
- module.exports = toFinite;
-
-
-/***/ },
-/* 127 */
-/*!******************************!*\
- !*** ./~/lodash/toNumber.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isObject = __webpack_require__(/*! ./isObject */ 35),
- isSymbol = __webpack_require__(/*! ./isSymbol */ 108);
-
- /** Used as references for various `Number` constants. */
- var NAN = 0 / 0;
-
- /** Used to match leading and trailing whitespace. */
- var reTrim = /^\s+|\s+$/g;
-
- /** Used to detect bad signed hexadecimal string values. */
- var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
-
- /** Used to detect binary string values. */
- var reIsBinary = /^0b[01]+$/i;
-
- /** Used to detect octal string values. */
- var reIsOctal = /^0o[0-7]+$/i;
-
- /** Built-in method references without a dependency on `root`. */
- var freeParseInt = parseInt;
-
- /**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
- function toNumber(value) {
- if (typeof value == 'number') {
- return value;
- }
- if (isSymbol(value)) {
- return NAN;
- }
- if (isObject(value)) {
- var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
- value = isObject(other) ? (other + '') : other;
- }
- if (typeof value != 'string') {
- return value === 0 ? value : +value;
- }
- value = value.replace(reTrim, '');
- var isBinary = reIsBinary.test(value);
- return (isBinary || reIsOctal.test(value))
- ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
- : (reIsBadHex.test(value) ? NAN : +value);
- }
-
- module.exports = toNumber;
-
-
-/***/ },
-/* 128 */
-/*!**************************!*\
- !*** ./~/lodash/some.js ***!
- \**************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var arraySome = __webpack_require__(/*! ./_arraySome */ 61),
- baseIteratee = __webpack_require__(/*! ./_baseIteratee */ 8),
- baseSome = __webpack_require__(/*! ./_baseSome */ 129),
- isArray = __webpack_require__(/*! ./isArray */ 71),
- isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ 135);
-
- /**
- * Checks if `predicate` returns truthy for **any** element of `collection`.
- * Iteration is stopped once `predicate` returns truthy. The predicate is
- * invoked with three arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- * @example
- *
- * _.some([null, 0, 'yes', false], Boolean);
- * // => true
- *
- * var users = [
- * { 'user': 'barney', 'active': true },
- * { 'user': 'fred', 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.some(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.some(users, ['active', false]);
- * // => true
- *
- * // The `_.property` iteratee shorthand.
- * _.some(users, 'active');
- * // => true
- */
- function some(collection, predicate, guard) {
- var func = isArray(collection) ? arraySome : baseSome;
- if (guard && isIterateeCall(collection, predicate, guard)) {
- predicate = undefined;
- }
- return func(collection, baseIteratee(predicate, 3));
- }
-
- module.exports = some;
-
-
-/***/ },
-/* 129 */
-/*!*******************************!*\
- !*** ./~/lodash/_baseSome.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseEach = __webpack_require__(/*! ./_baseEach */ 130);
-
- /**
- * The base implementation of `_.some` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- * else `false`.
- */
- function baseSome(collection, predicate) {
- var result;
-
- baseEach(collection, function(value, index, collection) {
- result = predicate(value, index, collection);
- return !result;
- });
- return !!result;
- }
-
- module.exports = baseSome;
-
-
-/***/ },
-/* 130 */
-/*!*******************************!*\
- !*** ./~/lodash/_baseEach.js ***!
- \*******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseForOwn = __webpack_require__(/*! ./_baseForOwn */ 131),
- createBaseEach = __webpack_require__(/*! ./_createBaseEach */ 134);
-
- /**
- * The base implementation of `_.forEach` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- */
- var baseEach = createBaseEach(baseForOwn);
-
- module.exports = baseEach;
-
-
-/***/ },
-/* 131 */
-/*!*********************************!*\
- !*** ./~/lodash/_baseForOwn.js ***!
- \*********************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseFor = __webpack_require__(/*! ./_baseFor */ 132),
- keys = __webpack_require__(/*! ./keys */ 75);
-
- /**
- * The base implementation of `_.forOwn` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Object} Returns `object`.
- */
- function baseForOwn(object, iteratee) {
- return object && baseFor(object, iteratee, keys);
- }
-
- module.exports = baseForOwn;
-
-
-/***/ },
-/* 132 */
-/*!******************************!*\
- !*** ./~/lodash/_baseFor.js ***!
- \******************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var createBaseFor = __webpack_require__(/*! ./_createBaseFor */ 133);
-
- /**
- * The base implementation of `baseForOwn` which iterates over `object`
- * properties returned by `keysFunc` and invokes `iteratee` for each property.
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @returns {Object} Returns `object`.
- */
- var baseFor = createBaseFor();
-
- module.exports = baseFor;
-
-
-/***/ },
-/* 133 */
-/*!************************************!*\
- !*** ./~/lodash/_createBaseFor.js ***!
- \************************************/
-/***/ function(module, exports) {
-
- /**
- * Creates a base function for methods like `_.forIn` and `_.forOwn`.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
- function createBaseFor(fromRight) {
- return function(object, iteratee, keysFunc) {
- var index = -1,
- iterable = Object(object),
- props = keysFunc(object),
- length = props.length;
-
- while (length--) {
- var key = props[fromRight ? length : ++index];
- if (iteratee(iterable[key], key, iterable) === false) {
- break;
- }
- }
- return object;
- };
- }
-
- module.exports = createBaseFor;
-
-
-/***/ },
-/* 134 */
-/*!*************************************!*\
- !*** ./~/lodash/_createBaseEach.js ***!
- \*************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var isArrayLike = __webpack_require__(/*! ./isArrayLike */ 94);
-
- /**
- * Creates a `baseEach` or `baseEachRight` function.
- *
- * @private
- * @param {Function} eachFunc The function to iterate over a collection.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
- function createBaseEach(eachFunc, fromRight) {
- return function(collection, iteratee) {
- if (collection == null) {
- return collection;
- }
- if (!isArrayLike(collection)) {
- return eachFunc(collection, iteratee);
- }
- var length = collection.length,
- index = fromRight ? length : -1,
- iterable = Object(collection);
-
- while ((fromRight ? index-- : ++index < length)) {
- if (iteratee(iterable[index], index, iterable) === false) {
- break;
- }
- }
- return collection;
- };
- }
-
- module.exports = createBaseEach;
-
-
-/***/ },
-/* 135 */
-/*!*************************************!*\
- !*** ./~/lodash/_isIterateeCall.js ***!
- \*************************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var eq = __webpack_require__(/*! ./eq */ 16),
- isArrayLike = __webpack_require__(/*! ./isArrayLike */ 94),
- isIndex = __webpack_require__(/*! ./_isIndex */ 84),
- isObject = __webpack_require__(/*! ./isObject */ 35);
-
- /**
- * Checks if the given arguments are from an iteratee call.
- *
- * @private
- * @param {*} value The potential iteratee value argument.
- * @param {*} index The potential iteratee index or key argument.
- * @param {*} object The potential iteratee object argument.
- * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
- * else `false`.
- */
- function isIterateeCall(value, index, object) {
- if (!isObject(object)) {
- return false;
- }
- var type = typeof index;
- if (type == 'number'
- ? (isArrayLike(object) && isIndex(index, object.length))
- : (type == 'string' && index in object)
- ) {
- return eq(object[index], value);
- }
- return false;
- }
-
- module.exports = isIterateeCall;
-
-
-/***/ },
-/* 136 */
-/*!*****************************!*\
- !*** ./~/lodash/isEqual.js ***!
- \*****************************/
-/***/ function(module, exports, __webpack_require__) {
-
- var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ 55);
-
- /**
- * Performs a deep comparison between two values to determine if they are
- * equivalent.
- *
- * **Note:** This method supports comparing arrays, array buffers, booleans,
- * date objects, error objects, maps, numbers, `Object` objects, regexes,
- * sets, strings, symbols, and typed arrays. `Object` objects are compared
- * by their own, not inherited, enumerable properties. Functions and DOM
- * nodes are compared by strict equality, i.e. `===`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.isEqual(object, other);
- * // => true
- *
- * object === other;
- * // => false
- */
- function isEqual(value, other) {
- return baseIsEqual(value, other);
- }
-
- module.exports = isEqual;
-
-
-/***/ },
-/* 137 */
-/*!************************!*\
- !*** ./src/toolbar.js ***!
- \************************/
-/***/ function(module, exports, __webpack_require__) {
-
- /*
- QuillToolbar is deprecated. Consider switching to the official Quill
- toolbar format, or providing your own toolbar instead.
- See https://quilljs.com/docs/modules/toolbar
- */
-
- 'use strict';
-
- var React = __webpack_require__(/*! react */ 3);
- var ReactDOMServer = __webpack_require__(/*! react-dom/server */ 138);
- var find = __webpack_require__(/*! lodash/find */ 6);
- var isEqual = __webpack_require__(/*! lodash/isEqual */ 136);
- var T = React.PropTypes;
-
- var defaultColors = [
- 'rgb( 0, 0, 0)', 'rgb(230, 0, 0)', 'rgb(255, 153, 0)',
- 'rgb(255, 255, 0)', 'rgb( 0, 138, 0)', 'rgb( 0, 102, 204)',
- 'rgb(153, 51, 255)', 'rgb(255, 255, 255)', 'rgb(250, 204, 204)',
- 'rgb(255, 235, 204)', 'rgb(255, 255, 204)', 'rgb(204, 232, 204)',
- 'rgb(204, 224, 245)', 'rgb(235, 214, 255)', 'rgb(187, 187, 187)',
- 'rgb(240, 102, 102)', 'rgb(255, 194, 102)', 'rgb(255, 255, 102)',
- 'rgb(102, 185, 102)', 'rgb(102, 163, 224)', 'rgb(194, 133, 255)',
- 'rgb(136, 136, 136)', 'rgb(161, 0, 0)', 'rgb(178, 107, 0)',
- 'rgb(178, 178, 0)', 'rgb( 0, 97, 0)', 'rgb( 0, 71, 178)',
- 'rgb(107, 36, 178)', 'rgb( 68, 68, 68)', 'rgb( 92, 0, 0)',
- 'rgb(102, 61, 0)', 'rgb(102, 102, 0)', 'rgb( 0, 55, 0)',
- 'rgb( 0, 41, 102)', 'rgb( 61, 20, 10)',
- ].map(function(color){ return { value: color } });
-
- var defaultItems = [
-
- { label:'Formats', type:'group', items: [
- { label:'Font', type:'font', items: [
- { label:'Sans Serif', value:'sans-serif', selected:true },
- { label:'Serif', value:'serif' },
- { label:'Monospace', value:'monospace' }
- ]},
- { label:'Size', type:'size', items: [
- { label:'Small', value:'10px' },
- { label:'Normal', value:'13px', selected:true },
- { label:'Large', value:'18px' },
- { label:'Huge', value:'32px' }
- ]},
- { label:'Alignment', type:'align', items: [
- { label:'', value:'', selected:true },
- { label:'', value:'center' },
- { label:'', value:'right' },
- { label:'', value:'justify' }
- ]}
- ]},
-
- { label:'Text', type:'group', items: [
- { type:'bold', label:'Bold' },
- { type:'italic', label:'Italic' },
- { type:'strike', label:'Strike' },
- { type:'underline', label:'Underline' },
- { type:'color', label:'Color', items:defaultColors },
- { type:'background', label:'Background color', items:defaultColors },
- { type:'link', label:'Link' }
- ]},
-
- { label:'Blocks', type:'group', items: [
- { type:'list', value:'bullet' },
- { type:'list', value:'ordered' }
- ]},
-
- { label:'Blocks', type:'group', items: [
- { type:'image', label:'Image' }
- ]}
-
- ];
-
- var QuillToolbar = React.createClass({
-
- displayName: 'Quill Toolbar',
-
- propTypes: {
- id: T.string,
- className: T.string,
- style: T.object,
- items: T.array
- },
-
- getDefaultProps: function() {
- return {
- items: defaultItems
- };
- },
-
- componentDidMount: function() {
- console.warn(
- 'QuillToolbar is deprecated. Consider switching to the official Quill ' +
- 'toolbar format, or providing your own toolbar instead. ' +
- 'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'
- );
- },
-
- shouldComponentUpdate: function(nextProps, nextState) {
- return !isEqual(nextProps, this.props);
- },
-
- renderGroup: function(item, key) {
- return React.DOM.span({
- key: item.label || key,
- className:'ql-formats' },
- item.items.map(this.renderItem)
- );
- },
-
- renderChoiceItem: function(item, key) {
- return React.DOM.option({
- key: item.label || item.value || key,
- value: item.value },
- item.label
- );
- },
-
- renderChoices: function(item, key) {
- var choiceItems = item.items.map(this.renderChoiceItem);
- var selectedItem = find(item.items, function(item){ return item.selected });
- var attrs = {
- key: item.label || key,
- title: item.label,
- className: 'ql-'+item.type,
- value: selectedItem.value,
- };
- return React.DOM.select(attrs, choiceItems);
- },
-
- renderButton: function(item, key) {
- return React.DOM.button({
- type: 'button',
- key: item.label || item.value || key,
- value: item.value,
- className: 'ql-'+item.type,
- title: item.label },
- item.children
- );
- },
-
- renderAction: function(item, key) {
- return React.DOM.button({
- key: item.label || item.value || key,
- className: 'ql-'+item.type,
- title: item.label },
- item.children
- );
- },
-
- /* jshint maxcomplexity: false */
- renderItem: function(item, key) {
- switch (item.type) {
- case 'group':
- return this.renderGroup(item, key);
- case 'font':
- case 'header':
- case 'align':
- case 'size':
- case 'color':
- case 'background':
- return this.renderChoices(item, key);
- case 'bold':
- case 'italic':
- case 'underline':
- case 'strike':
- case 'link':
- case 'list':
- case 'bullet':
- case 'ordered':
- case 'indent':
- case 'image':
- case 'video':
- return this.renderButton(item, key);
- default:
- return this.renderAction(item, key);
- }
- },
-
- getClassName: function() {
- return 'quill-toolbar ' + (this.props.className||'');
- },
-
- render: function() {
- var children = this.props.items.map(this.renderItem);
- var html = children.map(ReactDOMServer.renderToStaticMarkup).join('');
- return React.DOM.div({
- id: this.props.id,
- className: this.getClassName(),
- style: this.props.style,
- dangerouslySetInnerHTML: { __html:html }
- });
- },
-
- });
-
- module.exports = QuillToolbar;
- QuillToolbar.defaultItems = defaultItems;
- QuillToolbar.defaultColors = defaultColors;
-
-
-/***/ },
-/* 138 */
-/*!********************************************************************************************************************************!*\
- !*** external {"commonjs":"react-dom/server","commonjs2":"react-dom/server","amd":"react-dom/server","root":"ReactDOMServer"} ***!
- \********************************************************************************************************************************/
-/***/ function(module, exports) {
-
- module.exports = __WEBPACK_EXTERNAL_MODULE_138__;
-
-/***/ }
-/******/ ])
-});
-;
-//# sourceMappingURL=react-quill.js.map
\ No newline at end of file
diff --git a/dist/react-quill.js.map b/dist/react-quill.js.map
deleted file mode 100644
index 5cc07043..00000000
--- a/dist/react-quill.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 527ad100f96c675c1ce2","webpack:///./src/index.js","webpack:///./~/quill/dist/quill.js","webpack:///./src/component.js","webpack:///external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}","webpack:///external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}","webpack:///./src/mixin.js","webpack:///./~/lodash/find.js","webpack:///./~/lodash/_createFind.js","webpack:///./~/lodash/_baseIteratee.js","webpack:///./~/lodash/_baseMatches.js","webpack:///./~/lodash/_baseIsMatch.js","webpack:///./~/lodash/_Stack.js","webpack:///./~/lodash/_ListCache.js","webpack:///./~/lodash/_listCacheClear.js","webpack:///./~/lodash/_listCacheDelete.js","webpack:///./~/lodash/_assocIndexOf.js","webpack:///./~/lodash/eq.js","webpack:///./~/lodash/_listCacheGet.js","webpack:///./~/lodash/_listCacheHas.js","webpack:///./~/lodash/_listCacheSet.js","webpack:///./~/lodash/_stackClear.js","webpack:///./~/lodash/_stackDelete.js","webpack:///./~/lodash/_stackGet.js","webpack:///./~/lodash/_stackHas.js","webpack:///./~/lodash/_stackSet.js","webpack:///./~/lodash/_Map.js","webpack:///./~/lodash/_getNative.js","webpack:///./~/lodash/_baseIsNative.js","webpack:///./~/lodash/isFunction.js","webpack:///./~/lodash/_baseGetTag.js","webpack:///./~/lodash/_Symbol.js","webpack:///./~/lodash/_root.js","webpack:///./~/lodash/_freeGlobal.js","webpack:///./~/lodash/_getRawTag.js","webpack:///./~/lodash/_objectToString.js","webpack:///./~/lodash/isObject.js","webpack:///./~/lodash/_isMasked.js","webpack:///./~/lodash/_coreJsData.js","webpack:///./~/lodash/_toSource.js","webpack:///./~/lodash/_getValue.js","webpack:///./~/lodash/_MapCache.js","webpack:///./~/lodash/_mapCacheClear.js","webpack:///./~/lodash/_Hash.js","webpack:///./~/lodash/_hashClear.js","webpack:///./~/lodash/_nativeCreate.js","webpack:///./~/lodash/_hashDelete.js","webpack:///./~/lodash/_hashGet.js","webpack:///./~/lodash/_hashHas.js","webpack:///./~/lodash/_hashSet.js","webpack:///./~/lodash/_mapCacheDelete.js","webpack:///./~/lodash/_getMapData.js","webpack:///./~/lodash/_isKeyable.js","webpack:///./~/lodash/_mapCacheGet.js","webpack:///./~/lodash/_mapCacheHas.js","webpack:///./~/lodash/_mapCacheSet.js","webpack:///./~/lodash/_baseIsEqual.js","webpack:///./~/lodash/_baseIsEqualDeep.js","webpack:///./~/lodash/_equalArrays.js","webpack:///./~/lodash/_SetCache.js","webpack:///./~/lodash/_setCacheAdd.js","webpack:///./~/lodash/_setCacheHas.js","webpack:///./~/lodash/_arraySome.js","webpack:///./~/lodash/_cacheHas.js","webpack:///./~/lodash/_equalByTag.js","webpack:///./~/lodash/_Uint8Array.js","webpack:///./~/lodash/_mapToArray.js","webpack:///./~/lodash/_setToArray.js","webpack:///./~/lodash/_equalObjects.js","webpack:///./~/lodash/_getAllKeys.js","webpack:///./~/lodash/_baseGetAllKeys.js","webpack:///./~/lodash/_arrayPush.js","webpack:///./~/lodash/isArray.js","webpack:///./~/lodash/_getSymbols.js","webpack:///./~/lodash/_arrayFilter.js","webpack:///./~/lodash/stubArray.js","webpack:///./~/lodash/keys.js","webpack:///./~/lodash/_arrayLikeKeys.js","webpack:///./~/lodash/_baseTimes.js","webpack:///./~/lodash/isArguments.js","webpack:///./~/lodash/_baseIsArguments.js","webpack:///./~/lodash/isObjectLike.js","webpack:///./~/lodash/isBuffer.js","webpack:///(webpack)/buildin/module.js","webpack:///./~/lodash/stubFalse.js","webpack:///./~/lodash/_isIndex.js","webpack:///./~/lodash/isTypedArray.js","webpack:///./~/lodash/_baseIsTypedArray.js","webpack:///./~/lodash/isLength.js","webpack:///./~/lodash/_baseUnary.js","webpack:///./~/lodash/_nodeUtil.js","webpack:///./~/lodash/_baseKeys.js","webpack:///./~/lodash/_isPrototype.js","webpack:///./~/lodash/_nativeKeys.js","webpack:///./~/lodash/_overArg.js","webpack:///./~/lodash/isArrayLike.js","webpack:///./~/lodash/_getTag.js","webpack:///./~/lodash/_DataView.js","webpack:///./~/lodash/_Promise.js","webpack:///./~/lodash/_Set.js","webpack:///./~/lodash/_WeakMap.js","webpack:///./~/lodash/_getMatchData.js","webpack:///./~/lodash/_isStrictComparable.js","webpack:///./~/lodash/_matchesStrictComparable.js","webpack:///./~/lodash/_baseMatchesProperty.js","webpack:///./~/lodash/get.js","webpack:///./~/lodash/_baseGet.js","webpack:///./~/lodash/_castPath.js","webpack:///./~/lodash/_isKey.js","webpack:///./~/lodash/isSymbol.js","webpack:///./~/lodash/_stringToPath.js","webpack:///./~/lodash/_memoizeCapped.js","webpack:///./~/lodash/memoize.js","webpack:///./~/lodash/toString.js","webpack:///./~/lodash/_baseToString.js","webpack:///./~/lodash/_arrayMap.js","webpack:///./~/lodash/_toKey.js","webpack:///./~/lodash/hasIn.js","webpack:///./~/lodash/_baseHasIn.js","webpack:///./~/lodash/_hasPath.js","webpack:///./~/lodash/identity.js","webpack:///./~/lodash/property.js","webpack:///./~/lodash/_baseProperty.js","webpack:///./~/lodash/_basePropertyDeep.js","webpack:///./~/lodash/findIndex.js","webpack:///./~/lodash/_baseFindIndex.js","webpack:///./~/lodash/toInteger.js","webpack:///./~/lodash/toFinite.js","webpack:///./~/lodash/toNumber.js","webpack:///./~/lodash/some.js","webpack:///./~/lodash/_baseSome.js","webpack:///./~/lodash/_baseEach.js","webpack:///./~/lodash/_baseForOwn.js","webpack:///./~/lodash/_baseFor.js","webpack:///./~/lodash/_createBaseFor.js","webpack:///./~/lodash/_createBaseEach.js","webpack:///./~/lodash/_isIterateeCall.js","webpack:///./~/lodash/isEqual.js","webpack:///./src/toolbar.js","webpack:///external {\"commonjs\":\"react-dom/server\",\"commonjs2\":\"react-dom/server\",\"amd\":\"react-dom/server\",\"root\":\"ReactDOMServer\"}"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD,qCAAoC;AACpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;;AAEA;;;AAGA,QAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,WAAW;AAC3C,kCAAiC,2BAA2B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC,eAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAAyB,uBAAuB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,qBAAqB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,mBAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B,oBAAoB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,gBAAgB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,8CAA8C;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,IAAI;AACd;AACA;AACA,GAAE;AACF,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D;AACA;AACA;AACA,GAAE;AACF,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;AACA;AACA,GAAE;AACF;AACA,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,gBAAgB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,mBAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA,2BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,qBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,mBAAmB;AACvD;AACA;AACA;AACA,iCAAgC,eAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA,gDAA+C,cAAc;AAC7D;;;AAGA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,sGAAqG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE3Q,oCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,6CAA4C,kBAAkB,kCAAkC,qEAAqE,EAAE,EAAE,OAAO,kBAAkB,EAAE,YAAY;;AAEhN,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,aAAY;AACZ;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR,OAAM;AACN,iGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,2FAA0F;AAC1F,WAAU;AACV;AACA;AACA,WAAU;AACV,2FAA0F;AAC1F;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA,sBAAqB;AACrB;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,SAAQ;AACR;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA,gDAA+C;AAC/C;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,oDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,KAAI,IAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA,+CAA8C,mBAAmB,wBAAwB;AACzF;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI,IAAI;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,OAAM;;AAEN;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAsB,YAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA,GAAE;;AAEF,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;;AAGA,8CAA6C;;;AAG7C;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,KAAI;AACJ;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAqB,mBAAmB;AACxC;;AAEA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA0B;AAC1B;AACA;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,SAAQ;AACR,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN,qDAAoD;AACpD;AACA;AACA;AACA;AACA,wBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,aAAY,IAAI;AAChB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,cAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAkB,WAAW;AAC7B;AACA,iCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,aAAY,OAAO;AACnB,aAAY,OAAO;AACnB,cAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,eAAc,OAAO;AACrB,gBAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA,KAAI;AACJ;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,aAAY,MAAM;AAClB;AACA;AACA,iCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,MAAM;AAClB,aAAY,IAAI;AAChB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA,oCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY,MAAM;AAClB,aAAY,IAAI;AAChB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAY,MAAM;AAClB,aAAY,IAAI;AAChB,aAAY,IAAI;AAChB,cAAa,MAAM;AACnB;AACA;AACA;AACA,oCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAI;AACJ;;AAEA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,YAAY;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA,2BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,QAAO;AACP;AACA;;AAEA;AACA;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA,SAAQ,YAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;AAIA,QAAO;AACP;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,WAAU,IAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,IAAI;AACZ;AACA,OAAM;;AAEN;AACA;AACA;AACA,gCAA+B;AAC/B;AACA,6DAA4D;AAC5D;AACA,SAAQ,IAAI;AACZ;AACA;AACA,KAAI;;AAEJ;AACA;AACA,KAAI;;AAEJ;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,gBAAe;AACf,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,cAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,sGAAqG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE3Q,oCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,6CAA4C,kBAAkB,kCAAkC,qEAAqE,EAAE,EAAE,OAAO,kBAAkB,EAAE,YAAY;;AAEhN,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oDAAmD;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY;AACZ,kDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAY;AACZ;AACA;AACA,WAAU;AACV,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA,6FAA4F;AAC5F;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,aAAY;AACZ;AACA,WAAU;AACV,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,KAAI,IAAI;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,oCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,WAAU;AACV;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,SAAQ;AACR;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,oCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;;AAEV;;AAEA;AACA;;AAEA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA,6BAA4B;;;AAG5B;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAY,SAAS;AACrB,aAAY,MAAM;AAClB,aAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAY,cAAc;AAC1B,aAAY,QAAQ;AACpB,eAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4DAA2D,OAAO;AAClE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAY,cAAc;AAC1B,eAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA0C,SAAS;AACnD;AACA;;AAEA;AACA,KAAI;AACJ;AACA;;AAEA,iBAAgB,YAAY;AAC5B;;AAEA;AACA,6DAA4D;AAC5D,iEAAgE;AAChE,qEAAoE;AACpE,yEAAwE;AACxE;AACA,4DAA2D,SAAS;AACpE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAY,cAAc;AAC1B,aAAY,SAAS;AACrB,aAAY,MAAM;AAClB,eAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAY,cAAc;AAC1B,aAAY,SAAS;AACrB,aAAY,MAAM;AAClB,eAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAY,cAAc;AAC1B,aAAY,SAAS;AACrB,aAAY,MAAM;AAClB,aAAY,QAAQ;AACpB,eAAc,aAAa;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,6DAA4D,YAAY;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAY,cAAc;AAC1B,eAAc,aAAa;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA,wFAAuF,aAAa;AACpG;AACA;;AAEA,2CAA0C;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI,IAAI;AACR;;AAEA;AACA;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,GAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA,WAAU;AACV;AACA,WAAU;AACV,SAAQ;AACR,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA,uBAAsB,6BAA6B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;AACA;;;AAGA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,oCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,oCAAmC,0BAA0B,0CAA0C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAElM,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR,OAAM;AACN;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,gEAA+D;AAC/D;AACA;AACA;AACA;AACA,WAAU;AACV,SAAQ;AACR,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,mEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,oEAAoE;AACrF,gBAAe,gEAAgE;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,WAAU;AACV;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,gCAA+B;AAC/B;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA,WAAU;AACV,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA,yFAAwF;AACxF;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,oCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ,IAAI;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,oIAAmI;AACnI;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qIAAoI;AACpI;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,oCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,6CAA4C,kBAAkB,kCAAkC,qEAAqE,EAAE,EAAE,OAAO,kBAAkB,EAAE,YAAY;;AAEhN,oCAAmC,0BAA0B,0CAA0C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE,OAAO,wBAAwB,EAAE;;AAElM,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,GAAE,IAAI;;AAEN;AACA;AACA;AACA,GAAE,IAAI;;AAEN;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,SAAQ;AACR;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAqC,wCAAwC;AAC7E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAkD;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,WAAU;AACV;AACA;AACA,OAAM;AACN,KAAI;AACJ;AACA;AACA;;AAEA;AACA,6FAA4F;AAC5F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ,sCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,gDAA+C;AAC/C;AACA;AACA;AACA,mEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;;AAEF;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA,GAAE;AACF;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,OAAM;AACN,uCAAsC,2BAA2B;AACjE,uCAAsC,2CAA2C;AACjF;AACA,yCAAwC,2BAA2B;AACnE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,sBAAqB;AACrB;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,sGAAqG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE3Q,oCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN,wBAAuB,2CAA2C;AAClE,wBAAuB,uEAAuE,gBAAgB;AAC9G;AACA;AACA,0BAAyB,+BAA+B,GAAG,kBAAkB;AAC7E,0BAAyB,4BAA4B,GAAG,kBAAkB;AAC1E,OAAM;AACN,0BAAyB,+BAA+B,GAAG,kCAAkC;AAC7F,0BAAyB,4BAA4B,GAAG,kCAAkC;AAC1F;AACA,wBAAuB,+BAA+B,GAAG,mBAAmB;AAC5E,wBAAuB,4BAA4B,GAAG,mBAAmB;AACzE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAoB;AACpB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA,WAAU;AACV;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,iBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,iBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,IAAI;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA,eAAc,qBAAqB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,oKAAmK;AACnK;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,6CAA4C,kBAAkB,kCAAkC,qEAAqE,EAAE,EAAE,OAAO,kBAAkB,EAAE,YAAY;;AAEhN,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,iCAAgC;AAChC;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAE;;AAEF;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,IAAI;AACZ;AACA,KAAI;AACJ;AACA;AACA,mEAAkE;AAClE;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ,IAAI;AACZ;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR,OAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,oCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,6CAA4C,kBAAkB,kCAAkC,qEAAqE,EAAE,EAAE,OAAO,kBAAkB,EAAE,YAAY;;AAEhN,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA,OAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,8CAA6C;;;AAG7C;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA,WAAU;AACV;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAU;AACV;AACA;AACA,qIAAoI;AACpI,WAAU;AACV;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,wCAAuC;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA8B;AAC9B;AACA,aAAY;AACZ;AACA;AACA,WAAU;AACV;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,OAAM;AACN;AACA,KAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,KAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,SAAQ;AACR;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,sGAAqG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE3Q,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e,sDAAqD,YAAY,GAAG,YAAY;;AAEhF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF,uDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,OAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;AACF;;AAEA,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAU;AACV,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,eAAc;AACd;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF,qDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4HAA2H,yBAAyB;AACpJ;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA,KAAI;AACJ;;AAEA;AACA;;AAEA,QAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,GAAE;;AAEF,oCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,yCAAyC,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa,EAAE,2BAA2B,0BAA0B,YAAY,EAAE,2CAA2C,8BAA8B,EAAE,OAAO,6EAA6E,EAAE,GAAG,EAAE;;AAEtpB,uDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,kBAAkB,EAAE,OAAO,wCAAwC,EAAE,EAAE,4BAA4B,mBAAmB,EAAE,OAAO,uBAAuB,4BAA4B,kBAAkB,EAAE,8BAA8B,EAAE;;AAEze,kCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEljB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,wCAAuC,uCAAuC,gBAAgB;;AAE9F,mDAAkD,0CAA0C,0DAA0D,EAAE;;AAExJ,mDAAkD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE/O,4CAA2C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE7e,0BAAyB,iCAAiC,8CAA8C,kBAAkB,GAAG,iBAAiB;;AAE9I;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAyC,2BAA2B;AACpE;AACA,WAAU;AACV;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF,qDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAU;AACV;AACA;AACA;AACA,SAAQ;AACR;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,KAAI;;AAEJ;AACA,GAAE;;AAEF;;AAEA;;AAEA;AACA;AACA,EAAC;AACD,E;;;;;;;;;ACx6UA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAc;AACd;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,kBAAiB,gBAAgB;AACjC,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAgB,+BAA+B,WAAW,EAAE;AAC5D;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,8BAA6B;AAC7B,IAAG;;AAEH;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAgC;AAChC;AACA;AACA,GAAE;;AAEF;AACA;AACA,mBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,mBAAkB,mBAAmB;AACrC;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;;AAEA,EAAC;;AAED;;;;;;;;;;ACjRA,gD;;;;;;;;;ACAA,gD;;;;;;;;;ACAA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA4B,wCAAwC,EAAE;AACtE,6BAA4B,sCAAsC,EAAE;AACpE,6BAA4B,0CAA0C,EAAE;AACxE,6BAA4B,2CAA2C,EAAE;AACzE,6BAA4B,wCAAwC,EAAE;AACtE;AACA;;AAEA;;AAEA;;;;;;;;;;ACjGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA,OAAM,+CAA+C;AACrD,OAAM,gDAAgD;AACtD,OAAM;AACN;AACA;AACA,+BAA8B,mBAAmB,EAAE;AACnD;AACA;AACA;AACA,mBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACzCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAiC,+CAA+C;AAChF;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC9BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACrBA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACZA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AClCA;;AAEA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACpCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;AClBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACzBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACbA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACjCA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;ACNA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AChBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC9CA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACpCA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC3BA;;AAEA;AACA;;AAEA;;;;;;;;;;ACLA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;ACRA;AACA;;AAEA;;;;;;;;;;;ACHA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC7CA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC9BA;;AAEA;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACnBA;;AAEA;AACA;;AAEA;;;;;;;;;;ACLA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC/BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC/BA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACdA;;AAEA;AACA;;AAEA;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AChBA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC7BA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACtBA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACtBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACjBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACdA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACrBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,QAAQ;AACnB;AACA;AACA,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AClFA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AClFA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;AC1BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC/GA;;AAEA;AACA;;AAEA;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;;;;ACjBA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACxFA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,MAAM;AACjB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACzBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACtBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,QAAQ;AACnB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA,8BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,+CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;ACnCA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,qBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC5BA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACjBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACrBA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC1BA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC3DA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACbA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH,EAAC;;AAED;;;;;;;;;;;ACrBA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;ACjBA;;AAEA;AACA;;AAEA;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACdA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACzDA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;ACNA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;ACNA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;ACNA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;ACNA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACvBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,EAAE;AACb,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AChCA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AChCA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACvBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,OAAO;AAClB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC5BA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC5BA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA,EAAC;;AAED;;;;;;;;;;AC3BA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;ACzBA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,cAAa,SAAS;AACtB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;ACxEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC3BA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACpBA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA,2BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACpBA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA,OAAM,OAAO,SAAS,EAAE;AACxB,OAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACbA;;AAEA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACfA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,OAAO;AACpB;AACA;AACA;AACA,OAAM,qCAAqC;AAC3C,OAAM,qCAAqC;AAC3C,OAAM;AACN;AACA;AACA,oCAAmC,2BAA2B,EAAE;AAChE;AACA;AACA;AACA,wBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA,YAAW,MAAM;AACjB,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,YAAW,QAAQ;AACnB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACvBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;ACnCA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACzCA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,aAAY,OAAO;AACnB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM,mCAAmC;AACzC,OAAM;AACN;AACA;AACA;AACA,mBAAkB,oCAAoC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AClDA;;AAEA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;;;;ACrBA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,aAAa;AACxB,YAAW,SAAS;AACpB,cAAa,aAAa;AAC1B;AACA;;AAEA;;;;;;;;;;ACbA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACfA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,SAAS;AACpB,YAAW,SAAS;AACpB,cAAa,OAAO;AACpB;AACA;;AAEA;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA,YAAW,QAAQ;AACnB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;ACxBA;;AAEA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,QAAQ;AACnB,cAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC/BA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AC7BA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,kBAAiB;AACjB,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB,SAAS,eAAe,EAAE;;AAEhD;;AAEA,GAAE;AACF,IAAG;AACH,KAAI,yDAAyD;AAC7D,KAAI,qCAAqC;AACzC,KAAI;AACJ,KAAI;AACJ,IAAG;AACH,KAAI,+BAA+B;AACnC,KAAI,8CAA8C;AAClD,KAAI,+BAA+B;AACnC,KAAI;AACJ,KAAI;AACJ,IAAG;AACH,KAAI,oCAAoC;AACxC,KAAI,2BAA2B;AAC/B,KAAI,0BAA0B;AAC9B,KAAI;AACJ;AACA,IAAG;;AAEH,GAAE;AACF,IAAG,4BAA4B;AAC/B,IAAG,gCAAgC;AACnC,IAAG,gCAAgC;AACnC,IAAG,sCAAsC;AACzC,IAAG,mDAAmD;AACtD,IAAG,mEAAmE;AACtE,IAAG;AACH,IAAG;;AAEH,GAAE;AACF,IAAG,8BAA8B;AACjC,IAAG;AACH,IAAG;;AAEH,GAAE;AACF,IAAG;AACH;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,4BAA2B;AAC3B;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA,GAAE;;AAEF;AACA;AACA,sDAAqD,uBAAuB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA,uBAAsB;AACtB;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;;AAEF;AACA;AACA,GAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B;AAC7B,IAAG;AACH,GAAE;;AAEF,EAAC;;AAED;AACA;AACA;;;;;;;;;;ACrMA,kD","file":"./dist/react-quill.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"), require(\"react-dom/server\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\", \"react-dom/server\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactQuill\"] = factory(require(\"react\"), require(\"react-dom\"), require(\"react-dom/server\"));\n\telse\n\t\troot[\"ReactQuill\"] = factory(root[\"React\"], root[\"ReactDOM\"], root[\"ReactDOMServer\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_3__, __WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_138__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 527ad100f96c675c1ce2","/*\nReact-Quill v1.0.0\nhttps://github.com/zenoamaro/react-quill\n*/\nvar Quill = require('quill');\nvar Parchment = Quill.import('parchment');\nvar QuillStyle = Parchment.Attributor.Style;\nvar styleOptions = { scope: Parchment.Scope.INLINE };\nQuill.register(new QuillStyle('size', 'font-size', styleOptions), true);\nQuill.register(new QuillStyle('font', 'font-family', styleOptions), true);\n\nmodule.exports = require('./component');\nmodule.exports.Quill = Quill;\nmodule.exports.Mixin = require('./mixin');\nmodule.exports.Toolbar = require('./toolbar');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.js\n// module id = 0\n// module chunks = 0","/*!\n * Quill Editor v1.2.0\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(53);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tvar _break = __webpack_require__(30);\n\n\tvar _break2 = _interopRequireDefault(_break);\n\n\tvar _container = __webpack_require__(42);\n\n\tvar _container2 = _interopRequireDefault(_container);\n\n\tvar _cursor = __webpack_require__(34);\n\n\tvar _cursor2 = _interopRequireDefault(_cursor);\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tvar _scroll = __webpack_require__(43);\n\n\tvar _scroll2 = _interopRequireDefault(_scroll);\n\n\tvar _text = __webpack_require__(33);\n\n\tvar _text2 = _interopRequireDefault(_text);\n\n\tvar _clipboard = __webpack_require__(44);\n\n\tvar _clipboard2 = _interopRequireDefault(_clipboard);\n\n\tvar _history = __webpack_require__(51);\n\n\tvar _history2 = _interopRequireDefault(_history);\n\n\tvar _keyboard = __webpack_require__(52);\n\n\tvar _keyboard2 = _interopRequireDefault(_keyboard);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\t_quill2.default.register({\n\t 'blots/block': _block2.default,\n\t 'blots/block/embed': _block.BlockEmbed,\n\t 'blots/break': _break2.default,\n\t 'blots/container': _container2.default,\n\t 'blots/cursor': _cursor2.default,\n\t 'blots/embed': _embed2.default,\n\t 'blots/inline': _inline2.default,\n\t 'blots/scroll': _scroll2.default,\n\t 'blots/text': _text2.default,\n\n\t 'modules/clipboard': _clipboard2.default,\n\t 'modules/history': _history2.default,\n\t 'modules/keyboard': _keyboard2.default\n\t});\n\n\t_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\n\tmodule.exports = _quill2.default;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar container_1 = __webpack_require__(3);\n\tvar format_1 = __webpack_require__(7);\n\tvar leaf_1 = __webpack_require__(12);\n\tvar scroll_1 = __webpack_require__(13);\n\tvar inline_1 = __webpack_require__(14);\n\tvar block_1 = __webpack_require__(15);\n\tvar embed_1 = __webpack_require__(16);\n\tvar text_1 = __webpack_require__(17);\n\tvar attributor_1 = __webpack_require__(8);\n\tvar class_1 = __webpack_require__(10);\n\tvar style_1 = __webpack_require__(11);\n\tvar store_1 = __webpack_require__(9);\n\tvar Registry = __webpack_require__(6);\n\tvar Parchment = {\n\t Scope: Registry.Scope,\n\t create: Registry.create,\n\t find: Registry.find,\n\t query: Registry.query,\n\t register: Registry.register,\n\t Container: container_1.default,\n\t Format: format_1.default,\n\t Leaf: leaf_1.default,\n\t Embed: embed_1.default,\n\t Scroll: scroll_1.default,\n\t Block: block_1.default,\n\t Inline: inline_1.default,\n\t Text: text_1.default,\n\t Attributor: {\n\t Attribute: attributor_1.default,\n\t Class: class_1.default,\n\t Style: style_1.default,\n\t Store: store_1.default\n\t }\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = Parchment;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar linked_list_1 = __webpack_require__(4);\n\tvar shadow_1 = __webpack_require__(5);\n\tvar Registry = __webpack_require__(6);\n\tvar ContainerBlot = (function (_super) {\n\t __extends(ContainerBlot, _super);\n\t function ContainerBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t ContainerBlot.prototype.appendChild = function (other) {\n\t this.insertBefore(other);\n\t };\n\t ContainerBlot.prototype.attach = function () {\n\t var _this = this;\n\t _super.prototype.attach.call(this);\n\t this.children = new linked_list_1.default();\n\t // Need to be reversed for if DOM nodes already in order\n\t [].slice.call(this.domNode.childNodes).reverse().forEach(function (node) {\n\t try {\n\t var child = makeBlot(node);\n\t _this.insertBefore(child, _this.children.head);\n\t }\n\t catch (err) {\n\t if (err instanceof Registry.ParchmentError)\n\t return;\n\t else\n\t throw err;\n\t }\n\t });\n\t };\n\t ContainerBlot.prototype.deleteAt = function (index, length) {\n\t if (index === 0 && length === this.length()) {\n\t return this.remove();\n\t }\n\t this.children.forEachAt(index, length, function (child, offset, length) {\n\t child.deleteAt(offset, length);\n\t });\n\t };\n\t ContainerBlot.prototype.descendant = function (criteria, index) {\n\t var _a = this.children.find(index), child = _a[0], offset = _a[1];\n\t if ((criteria.blotName == null && criteria(child)) ||\n\t (criteria.blotName != null && child instanceof criteria)) {\n\t return [child, offset];\n\t }\n\t else if (child instanceof ContainerBlot) {\n\t return child.descendant(criteria, offset);\n\t }\n\t else {\n\t return [null, -1];\n\t }\n\t };\n\t ContainerBlot.prototype.descendants = function (criteria, index, length) {\n\t if (index === void 0) { index = 0; }\n\t if (length === void 0) { length = Number.MAX_VALUE; }\n\t var descendants = [], lengthLeft = length;\n\t this.children.forEachAt(index, length, function (child, index, length) {\n\t if ((criteria.blotName == null && criteria(child)) ||\n\t (criteria.blotName != null && child instanceof criteria)) {\n\t descendants.push(child);\n\t }\n\t if (child instanceof ContainerBlot) {\n\t descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n\t }\n\t lengthLeft -= length;\n\t });\n\t return descendants;\n\t };\n\t ContainerBlot.prototype.detach = function () {\n\t this.children.forEach(function (child) {\n\t child.detach();\n\t });\n\t _super.prototype.detach.call(this);\n\t };\n\t ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n\t this.children.forEachAt(index, length, function (child, offset, length) {\n\t child.formatAt(offset, length, name, value);\n\t });\n\t };\n\t ContainerBlot.prototype.insertAt = function (index, value, def) {\n\t var _a = this.children.find(index), child = _a[0], offset = _a[1];\n\t if (child) {\n\t child.insertAt(offset, value, def);\n\t }\n\t else {\n\t var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n\t this.appendChild(blot);\n\t }\n\t };\n\t ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n\t if (this.statics.allowedChildren != null && !this.statics.allowedChildren.some(function (child) {\n\t return childBlot instanceof child;\n\t })) {\n\t throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n\t }\n\t childBlot.insertInto(this, refBlot);\n\t };\n\t ContainerBlot.prototype.length = function () {\n\t return this.children.reduce(function (memo, child) {\n\t return memo + child.length();\n\t }, 0);\n\t };\n\t ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n\t this.children.forEach(function (child) {\n\t targetParent.insertBefore(child, refNode);\n\t });\n\t };\n\t ContainerBlot.prototype.optimize = function () {\n\t _super.prototype.optimize.call(this);\n\t if (this.children.length === 0) {\n\t if (this.statics.defaultChild != null) {\n\t var child = Registry.create(this.statics.defaultChild);\n\t this.appendChild(child);\n\t child.optimize();\n\t }\n\t else {\n\t this.remove();\n\t }\n\t }\n\t };\n\t ContainerBlot.prototype.path = function (index, inclusive) {\n\t if (inclusive === void 0) { inclusive = false; }\n\t var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n\t var position = [[this, index]];\n\t if (child instanceof ContainerBlot) {\n\t return position.concat(child.path(offset, inclusive));\n\t }\n\t else if (child != null) {\n\t position.push([child, offset]);\n\t }\n\t return position;\n\t };\n\t ContainerBlot.prototype.removeChild = function (child) {\n\t this.children.remove(child);\n\t };\n\t ContainerBlot.prototype.replace = function (target) {\n\t if (target instanceof ContainerBlot) {\n\t target.moveChildren(this);\n\t }\n\t _super.prototype.replace.call(this, target);\n\t };\n\t ContainerBlot.prototype.split = function (index, force) {\n\t if (force === void 0) { force = false; }\n\t if (!force) {\n\t if (index === 0)\n\t return this;\n\t if (index === this.length())\n\t return this.next;\n\t }\n\t var after = this.clone();\n\t this.parent.insertBefore(after, this.next);\n\t this.children.forEachAt(index, this.length(), function (child, offset, length) {\n\t child = child.split(offset, force);\n\t after.appendChild(child);\n\t });\n\t return after;\n\t };\n\t ContainerBlot.prototype.unwrap = function () {\n\t this.moveChildren(this.parent, this.next);\n\t this.remove();\n\t };\n\t ContainerBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t var addedNodes = [], removedNodes = [];\n\t mutations.forEach(function (mutation) {\n\t if (mutation.target === _this.domNode && mutation.type === 'childList') {\n\t addedNodes.push.apply(addedNodes, mutation.addedNodes);\n\t removedNodes.push.apply(removedNodes, mutation.removedNodes);\n\t }\n\t });\n\t removedNodes.forEach(function (node) {\n\t // Check node has actually been removed\n\t // One exception is Chrome does not immediately remove IFRAMEs\n\t // from DOM but MutationRecord is correct in its reported removal\n\t if (node.parentNode != null && node.tagName !== 'IFRAME' &&\n\t (document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)) {\n\t return;\n\t }\n\t var blot = Registry.find(node);\n\t if (blot == null)\n\t return;\n\t if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n\t blot.detach();\n\t }\n\t });\n\t addedNodes.filter(function (node) {\n\t return node.parentNode == _this.domNode;\n\t }).sort(function (a, b) {\n\t if (a === b)\n\t return 0;\n\t if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n\t return 1;\n\t }\n\t return -1;\n\t }).forEach(function (node) {\n\t var refBlot = null;\n\t if (node.nextSibling != null) {\n\t refBlot = Registry.find(node.nextSibling);\n\t }\n\t var blot = makeBlot(node);\n\t if (blot.next != refBlot || blot.next == null) {\n\t if (blot.parent != null) {\n\t blot.parent.removeChild(_this);\n\t }\n\t _this.insertBefore(blot, refBlot);\n\t }\n\t });\n\t };\n\t return ContainerBlot;\n\t}(shadow_1.default));\n\tfunction makeBlot(node) {\n\t var blot = Registry.find(node);\n\t if (blot == null) {\n\t try {\n\t blot = Registry.create(node);\n\t }\n\t catch (e) {\n\t blot = Registry.create(Registry.Scope.INLINE);\n\t [].slice.call(node.childNodes).forEach(function (child) {\n\t blot.domNode.appendChild(child);\n\t });\n\t node.parentNode.replaceChild(blot.domNode, node);\n\t blot.attach();\n\t }\n\t }\n\t return blot;\n\t}\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ContainerBlot;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar LinkedList = (function () {\n\t function LinkedList() {\n\t this.head = this.tail = undefined;\n\t this.length = 0;\n\t }\n\t LinkedList.prototype.append = function () {\n\t var nodes = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t nodes[_i] = arguments[_i];\n\t }\n\t this.insertBefore(nodes[0], undefined);\n\t if (nodes.length > 1) {\n\t this.append.apply(this, nodes.slice(1));\n\t }\n\t };\n\t LinkedList.prototype.contains = function (node) {\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t if (cur === node)\n\t return true;\n\t }\n\t return false;\n\t };\n\t LinkedList.prototype.insertBefore = function (node, refNode) {\n\t node.next = refNode;\n\t if (refNode != null) {\n\t node.prev = refNode.prev;\n\t if (refNode.prev != null) {\n\t refNode.prev.next = node;\n\t }\n\t refNode.prev = node;\n\t if (refNode === this.head) {\n\t this.head = node;\n\t }\n\t }\n\t else if (this.tail != null) {\n\t this.tail.next = node;\n\t node.prev = this.tail;\n\t this.tail = node;\n\t }\n\t else {\n\t node.prev = undefined;\n\t this.head = this.tail = node;\n\t }\n\t this.length += 1;\n\t };\n\t LinkedList.prototype.offset = function (target) {\n\t var index = 0, cur = this.head;\n\t while (cur != null) {\n\t if (cur === target)\n\t return index;\n\t index += cur.length();\n\t cur = cur.next;\n\t }\n\t return -1;\n\t };\n\t LinkedList.prototype.remove = function (node) {\n\t if (!this.contains(node))\n\t return;\n\t if (node.prev != null)\n\t node.prev.next = node.next;\n\t if (node.next != null)\n\t node.next.prev = node.prev;\n\t if (node === this.head)\n\t this.head = node.next;\n\t if (node === this.tail)\n\t this.tail = node.prev;\n\t this.length -= 1;\n\t };\n\t LinkedList.prototype.iterator = function (curNode) {\n\t if (curNode === void 0) { curNode = this.head; }\n\t // TODO use yield when we can\n\t return function () {\n\t var ret = curNode;\n\t if (curNode != null)\n\t curNode = curNode.next;\n\t return ret;\n\t };\n\t };\n\t LinkedList.prototype.find = function (index, inclusive) {\n\t if (inclusive === void 0) { inclusive = false; }\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t var length_1 = cur.length();\n\t if (index < length_1 || (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {\n\t return [cur, index];\n\t }\n\t index -= length_1;\n\t }\n\t return [null, 0];\n\t };\n\t LinkedList.prototype.forEach = function (callback) {\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t callback(cur);\n\t }\n\t };\n\t LinkedList.prototype.forEachAt = function (index, length, callback) {\n\t if (length <= 0)\n\t return;\n\t var _a = this.find(index), startNode = _a[0], offset = _a[1];\n\t var cur, curIndex = index - offset, next = this.iterator(startNode);\n\t while ((cur = next()) && curIndex < index + length) {\n\t var curLength = cur.length();\n\t if (index > curIndex) {\n\t callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n\t }\n\t else {\n\t callback(cur, 0, Math.min(curLength, index + length - curIndex));\n\t }\n\t curIndex += curLength;\n\t }\n\t };\n\t LinkedList.prototype.map = function (callback) {\n\t return this.reduce(function (memo, cur) {\n\t memo.push(callback(cur));\n\t return memo;\n\t }, []);\n\t };\n\t LinkedList.prototype.reduce = function (callback, memo) {\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t memo = callback(memo, cur);\n\t }\n\t return memo;\n\t };\n\t return LinkedList;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = LinkedList;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Registry = __webpack_require__(6);\n\tvar ShadowBlot = (function () {\n\t function ShadowBlot(domNode) {\n\t this.domNode = domNode;\n\t this.attach();\n\t }\n\t Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n\t // Hack for accessing inherited static methods\n\t get: function () {\n\t return this.constructor;\n\t },\n\t enumerable: true,\n\t configurable: true\n\t });\n\t ShadowBlot.create = function (value) {\n\t if (this.tagName == null) {\n\t throw new Registry.ParchmentError('Blot definition missing tagName');\n\t }\n\t var node;\n\t if (Array.isArray(this.tagName)) {\n\t if (typeof value === 'string') {\n\t value = value.toUpperCase();\n\t if (parseInt(value).toString() === value) {\n\t value = parseInt(value);\n\t }\n\t }\n\t if (typeof value === 'number') {\n\t node = document.createElement(this.tagName[value - 1]);\n\t }\n\t else if (this.tagName.indexOf(value) > -1) {\n\t node = document.createElement(value);\n\t }\n\t else {\n\t node = document.createElement(this.tagName[0]);\n\t }\n\t }\n\t else {\n\t node = document.createElement(this.tagName);\n\t }\n\t if (this.className) {\n\t node.classList.add(this.className);\n\t }\n\t return node;\n\t };\n\t ShadowBlot.prototype.attach = function () {\n\t this.domNode[Registry.DATA_KEY] = { blot: this };\n\t };\n\t ShadowBlot.prototype.clone = function () {\n\t var domNode = this.domNode.cloneNode();\n\t return Registry.create(domNode);\n\t };\n\t ShadowBlot.prototype.detach = function () {\n\t if (this.parent != null)\n\t this.parent.removeChild(this);\n\t delete this.domNode[Registry.DATA_KEY];\n\t };\n\t ShadowBlot.prototype.deleteAt = function (index, length) {\n\t var blot = this.isolate(index, length);\n\t blot.remove();\n\t };\n\t ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n\t var blot = this.isolate(index, length);\n\t if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n\t blot.wrap(name, value);\n\t }\n\t else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n\t var parent_1 = Registry.create(this.statics.scope);\n\t blot.wrap(parent_1);\n\t parent_1.format(name, value);\n\t }\n\t };\n\t ShadowBlot.prototype.insertAt = function (index, value, def) {\n\t var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n\t var ref = this.split(index);\n\t this.parent.insertBefore(blot, ref);\n\t };\n\t ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n\t if (this.parent != null) {\n\t this.parent.children.remove(this);\n\t }\n\t parentBlot.children.insertBefore(this, refBlot);\n\t if (refBlot != null) {\n\t var refDomNode = refBlot.domNode;\n\t }\n\t if (this.next == null || this.domNode.nextSibling != refDomNode) {\n\t parentBlot.domNode.insertBefore(this.domNode, (typeof refDomNode !== 'undefined') ? refDomNode : null);\n\t }\n\t this.parent = parentBlot;\n\t };\n\t ShadowBlot.prototype.isolate = function (index, length) {\n\t var target = this.split(index);\n\t target.split(length);\n\t return target;\n\t };\n\t ShadowBlot.prototype.length = function () {\n\t return 1;\n\t };\n\t ;\n\t ShadowBlot.prototype.offset = function (root) {\n\t if (root === void 0) { root = this.parent; }\n\t if (this.parent == null || this == root)\n\t return 0;\n\t return this.parent.children.offset(this) + this.parent.offset(root);\n\t };\n\t ShadowBlot.prototype.optimize = function () {\n\t // TODO clean up once we use WeakMap\n\t if (this.domNode[Registry.DATA_KEY] != null) {\n\t delete this.domNode[Registry.DATA_KEY].mutations;\n\t }\n\t };\n\t ShadowBlot.prototype.remove = function () {\n\t if (this.domNode.parentNode != null) {\n\t this.domNode.parentNode.removeChild(this.domNode);\n\t }\n\t this.detach();\n\t };\n\t ShadowBlot.prototype.replace = function (target) {\n\t if (target.parent == null)\n\t return;\n\t target.parent.insertBefore(this, target.next);\n\t target.remove();\n\t };\n\t ShadowBlot.prototype.replaceWith = function (name, value) {\n\t var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n\t replacement.replace(this);\n\t return replacement;\n\t };\n\t ShadowBlot.prototype.split = function (index, force) {\n\t return index === 0 ? this : this.next;\n\t };\n\t ShadowBlot.prototype.update = function (mutations) {\n\t if (mutations === void 0) { mutations = []; }\n\t // Nothing to do by default\n\t };\n\t ShadowBlot.prototype.wrap = function (name, value) {\n\t var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n\t if (this.parent != null) {\n\t this.parent.insertBefore(wrapper, this.next);\n\t }\n\t wrapper.appendChild(this);\n\t return wrapper;\n\t };\n\t return ShadowBlot;\n\t}());\n\tShadowBlot.blotName = 'abstract';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ShadowBlot;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar ParchmentError = (function (_super) {\n\t __extends(ParchmentError, _super);\n\t function ParchmentError(message) {\n\t var _this = this;\n\t message = '[Parchment] ' + message;\n\t _this = _super.call(this, message) || this;\n\t _this.message = message;\n\t _this.name = _this.constructor.name;\n\t return _this;\n\t }\n\t return ParchmentError;\n\t}(Error));\n\texports.ParchmentError = ParchmentError;\n\tvar attributes = {};\n\tvar classes = {};\n\tvar tags = {};\n\tvar types = {};\n\texports.DATA_KEY = '__blot';\n\tvar Scope;\n\t(function (Scope) {\n\t Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n\t Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n\t Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n\t Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n\t Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n\t Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n\t Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n\t Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n\t Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n\t Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n\t Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n\t})(Scope = exports.Scope || (exports.Scope = {}));\n\t;\n\tfunction create(input, value) {\n\t var match = query(input);\n\t if (match == null) {\n\t throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n\t }\n\t var BlotClass = match;\n\t var node = input instanceof Node ? input : BlotClass.create(value);\n\t return new BlotClass(node, value);\n\t}\n\texports.create = create;\n\tfunction find(node, bubble) {\n\t if (bubble === void 0) { bubble = false; }\n\t if (node == null)\n\t return null;\n\t if (node[exports.DATA_KEY] != null)\n\t return node[exports.DATA_KEY].blot;\n\t if (bubble)\n\t return find(node.parentNode, bubble);\n\t return null;\n\t}\n\texports.find = find;\n\tfunction query(query, scope) {\n\t if (scope === void 0) { scope = Scope.ANY; }\n\t var match;\n\t if (typeof query === 'string') {\n\t match = types[query] || attributes[query];\n\t }\n\t else if (query instanceof Text) {\n\t match = types['text'];\n\t }\n\t else if (typeof query === 'number') {\n\t if (query & Scope.LEVEL & Scope.BLOCK) {\n\t match = types['block'];\n\t }\n\t else if (query & Scope.LEVEL & Scope.INLINE) {\n\t match = types['inline'];\n\t }\n\t }\n\t else if (query instanceof HTMLElement) {\n\t var names = (query.getAttribute('class') || '').split(/\\s+/);\n\t for (var i in names) {\n\t match = classes[names[i]];\n\t if (match)\n\t break;\n\t }\n\t match = match || tags[query.tagName];\n\t }\n\t if (match == null)\n\t return null;\n\t if ((scope & Scope.LEVEL & match.scope) && (scope & Scope.TYPE & match.scope))\n\t return match;\n\t return null;\n\t}\n\texports.query = query;\n\tfunction register() {\n\t var Definitions = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t Definitions[_i] = arguments[_i];\n\t }\n\t if (Definitions.length > 1) {\n\t return Definitions.map(function (d) {\n\t return register(d);\n\t });\n\t }\n\t var Definition = Definitions[0];\n\t if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n\t throw new ParchmentError('Invalid definition');\n\t }\n\t else if (Definition.blotName === 'abstract') {\n\t throw new ParchmentError('Cannot register abstract class');\n\t }\n\t types[Definition.blotName || Definition.attrName] = Definition;\n\t if (typeof Definition.keyName === 'string') {\n\t attributes[Definition.keyName] = Definition;\n\t }\n\t else {\n\t if (Definition.className != null) {\n\t classes[Definition.className] = Definition;\n\t }\n\t if (Definition.tagName != null) {\n\t if (Array.isArray(Definition.tagName)) {\n\t Definition.tagName = Definition.tagName.map(function (tagName) {\n\t return tagName.toUpperCase();\n\t });\n\t }\n\t else {\n\t Definition.tagName = Definition.tagName.toUpperCase();\n\t }\n\t var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n\t tagNames.forEach(function (tag) {\n\t if (tags[tag] == null || Definition.className == null) {\n\t tags[tag] = Definition;\n\t }\n\t });\n\t }\n\t }\n\t return Definition;\n\t}\n\texports.register = register;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tvar store_1 = __webpack_require__(9);\n\tvar container_1 = __webpack_require__(3);\n\tvar Registry = __webpack_require__(6);\n\tvar FormatBlot = (function (_super) {\n\t __extends(FormatBlot, _super);\n\t function FormatBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t FormatBlot.formats = function (domNode) {\n\t if (typeof this.tagName === 'string') {\n\t return true;\n\t }\n\t else if (Array.isArray(this.tagName)) {\n\t return domNode.tagName.toLowerCase();\n\t }\n\t return undefined;\n\t };\n\t FormatBlot.prototype.attach = function () {\n\t _super.prototype.attach.call(this);\n\t this.attributes = new store_1.default(this.domNode);\n\t };\n\t FormatBlot.prototype.format = function (name, value) {\n\t var format = Registry.query(name);\n\t if (format instanceof attributor_1.default) {\n\t this.attributes.attribute(format, value);\n\t }\n\t else if (value) {\n\t if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n\t this.replaceWith(name, value);\n\t }\n\t }\n\t };\n\t FormatBlot.prototype.formats = function () {\n\t var formats = this.attributes.values();\n\t var format = this.statics.formats(this.domNode);\n\t if (format != null) {\n\t formats[this.statics.blotName] = format;\n\t }\n\t return formats;\n\t };\n\t FormatBlot.prototype.replaceWith = function (name, value) {\n\t var replacement = _super.prototype.replaceWith.call(this, name, value);\n\t this.attributes.copy(replacement);\n\t return replacement;\n\t };\n\t FormatBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t _super.prototype.update.call(this, mutations);\n\t if (mutations.some(function (mutation) {\n\t return mutation.target === _this.domNode && mutation.type === 'attributes';\n\t })) {\n\t this.attributes.build();\n\t }\n\t };\n\t FormatBlot.prototype.wrap = function (name, value) {\n\t var wrapper = _super.prototype.wrap.call(this, name, value);\n\t if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n\t this.attributes.move(wrapper);\n\t }\n\t return wrapper;\n\t };\n\t return FormatBlot;\n\t}(container_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = FormatBlot;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Registry = __webpack_require__(6);\n\tvar Attributor = (function () {\n\t function Attributor(attrName, keyName, options) {\n\t if (options === void 0) { options = {}; }\n\t this.attrName = attrName;\n\t this.keyName = keyName;\n\t var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n\t if (options.scope != null) {\n\t // Ignore type bits, force attribute bit\n\t this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n\t }\n\t else {\n\t this.scope = Registry.Scope.ATTRIBUTE;\n\t }\n\t if (options.whitelist != null)\n\t this.whitelist = options.whitelist;\n\t }\n\t Attributor.keys = function (node) {\n\t return [].map.call(node.attributes, function (item) {\n\t return item.name;\n\t });\n\t };\n\t Attributor.prototype.add = function (node, value) {\n\t if (!this.canAdd(node, value))\n\t return false;\n\t node.setAttribute(this.keyName, value);\n\t return true;\n\t };\n\t Attributor.prototype.canAdd = function (node, value) {\n\t var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n\t if (match != null && (this.whitelist == null || this.whitelist.indexOf(value) > -1)) {\n\t return true;\n\t }\n\t return false;\n\t };\n\t Attributor.prototype.remove = function (node) {\n\t node.removeAttribute(this.keyName);\n\t };\n\t Attributor.prototype.value = function (node) {\n\t var value = node.getAttribute(this.keyName);\n\t return this.canAdd(node, value) ? value : '';\n\t };\n\t return Attributor;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = Attributor;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar attributor_1 = __webpack_require__(8);\n\tvar class_1 = __webpack_require__(10);\n\tvar style_1 = __webpack_require__(11);\n\tvar Registry = __webpack_require__(6);\n\tvar AttributorStore = (function () {\n\t function AttributorStore(domNode) {\n\t this.attributes = {};\n\t this.domNode = domNode;\n\t this.build();\n\t }\n\t AttributorStore.prototype.attribute = function (attribute, value) {\n\t if (value) {\n\t if (attribute.add(this.domNode, value)) {\n\t if (attribute.value(this.domNode) != null) {\n\t this.attributes[attribute.attrName] = attribute;\n\t }\n\t else {\n\t delete this.attributes[attribute.attrName];\n\t }\n\t }\n\t }\n\t else {\n\t attribute.remove(this.domNode);\n\t delete this.attributes[attribute.attrName];\n\t }\n\t };\n\t AttributorStore.prototype.build = function () {\n\t var _this = this;\n\t this.attributes = {};\n\t var attributes = attributor_1.default.keys(this.domNode);\n\t var classes = class_1.default.keys(this.domNode);\n\t var styles = style_1.default.keys(this.domNode);\n\t attributes.concat(classes).concat(styles).forEach(function (name) {\n\t var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n\t if (attr instanceof attributor_1.default) {\n\t _this.attributes[attr.attrName] = attr;\n\t }\n\t });\n\t };\n\t AttributorStore.prototype.copy = function (target) {\n\t var _this = this;\n\t Object.keys(this.attributes).forEach(function (key) {\n\t var value = _this.attributes[key].value(_this.domNode);\n\t target.format(key, value);\n\t });\n\t };\n\t AttributorStore.prototype.move = function (target) {\n\t var _this = this;\n\t this.copy(target);\n\t Object.keys(this.attributes).forEach(function (key) {\n\t _this.attributes[key].remove(_this.domNode);\n\t });\n\t this.attributes = {};\n\t };\n\t AttributorStore.prototype.values = function () {\n\t var _this = this;\n\t return Object.keys(this.attributes).reduce(function (attributes, name) {\n\t attributes[name] = _this.attributes[name].value(_this.domNode);\n\t return attributes;\n\t }, {});\n\t };\n\t return AttributorStore;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = AttributorStore;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tfunction match(node, prefix) {\n\t var className = node.getAttribute('class') || '';\n\t return className.split(/\\s+/).filter(function (name) {\n\t return name.indexOf(prefix + \"-\") === 0;\n\t });\n\t}\n\tvar ClassAttributor = (function (_super) {\n\t __extends(ClassAttributor, _super);\n\t function ClassAttributor() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t ClassAttributor.keys = function (node) {\n\t return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n\t return name.split('-').slice(0, -1).join('-');\n\t });\n\t };\n\t ClassAttributor.prototype.add = function (node, value) {\n\t if (!this.canAdd(node, value))\n\t return false;\n\t this.remove(node);\n\t node.classList.add(this.keyName + \"-\" + value);\n\t return true;\n\t };\n\t ClassAttributor.prototype.remove = function (node) {\n\t var matches = match(node, this.keyName);\n\t matches.forEach(function (name) {\n\t node.classList.remove(name);\n\t });\n\t if (node.classList.length === 0) {\n\t node.removeAttribute('class');\n\t }\n\t };\n\t ClassAttributor.prototype.value = function (node) {\n\t var result = match(node, this.keyName)[0] || '';\n\t var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n\t return this.canAdd(node, value) ? value : '';\n\t };\n\t return ClassAttributor;\n\t}(attributor_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ClassAttributor;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tfunction camelize(name) {\n\t var parts = name.split('-');\n\t var rest = parts.slice(1).map(function (part) {\n\t return part[0].toUpperCase() + part.slice(1);\n\t }).join('');\n\t return parts[0] + rest;\n\t}\n\tvar StyleAttributor = (function (_super) {\n\t __extends(StyleAttributor, _super);\n\t function StyleAttributor() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t StyleAttributor.keys = function (node) {\n\t return (node.getAttribute('style') || '').split(';').map(function (value) {\n\t var arr = value.split(':');\n\t return arr[0].trim();\n\t });\n\t };\n\t StyleAttributor.prototype.add = function (node, value) {\n\t if (!this.canAdd(node, value))\n\t return false;\n\t node.style[camelize(this.keyName)] = value;\n\t return true;\n\t };\n\t StyleAttributor.prototype.remove = function (node) {\n\t node.style[camelize(this.keyName)] = '';\n\t if (!node.getAttribute('style')) {\n\t node.removeAttribute('style');\n\t }\n\t };\n\t StyleAttributor.prototype.value = function (node) {\n\t var value = node.style[camelize(this.keyName)];\n\t return this.canAdd(node, value) ? value : '';\n\t };\n\t return StyleAttributor;\n\t}(attributor_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = StyleAttributor;\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar shadow_1 = __webpack_require__(5);\n\tvar Registry = __webpack_require__(6);\n\tvar LeafBlot = (function (_super) {\n\t __extends(LeafBlot, _super);\n\t function LeafBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t LeafBlot.value = function (domNode) {\n\t return true;\n\t };\n\t LeafBlot.prototype.index = function (node, offset) {\n\t if (node !== this.domNode)\n\t return -1;\n\t return Math.min(offset, 1);\n\t };\n\t LeafBlot.prototype.position = function (index, inclusive) {\n\t var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n\t if (index > 0)\n\t offset += 1;\n\t return [this.parent.domNode, offset];\n\t };\n\t LeafBlot.prototype.value = function () {\n\t return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n\t var _a;\n\t };\n\t return LeafBlot;\n\t}(shadow_1.default));\n\tLeafBlot.scope = Registry.Scope.INLINE_BLOT;\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = LeafBlot;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar container_1 = __webpack_require__(3);\n\tvar Registry = __webpack_require__(6);\n\tvar OBSERVER_CONFIG = {\n\t attributes: true,\n\t characterData: true,\n\t characterDataOldValue: true,\n\t childList: true,\n\t subtree: true\n\t};\n\tvar MAX_OPTIMIZE_ITERATIONS = 100;\n\tvar ScrollBlot = (function (_super) {\n\t __extends(ScrollBlot, _super);\n\t function ScrollBlot(node) {\n\t var _this = _super.call(this, node) || this;\n\t _this.parent = null;\n\t _this.observer = new MutationObserver(function (mutations) {\n\t _this.update(mutations);\n\t });\n\t _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n\t return _this;\n\t }\n\t ScrollBlot.prototype.detach = function () {\n\t _super.prototype.detach.call(this);\n\t this.observer.disconnect();\n\t };\n\t ScrollBlot.prototype.deleteAt = function (index, length) {\n\t this.update();\n\t if (index === 0 && length === this.length()) {\n\t this.children.forEach(function (child) {\n\t child.remove();\n\t });\n\t }\n\t else {\n\t _super.prototype.deleteAt.call(this, index, length);\n\t }\n\t };\n\t ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n\t this.update();\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t };\n\t ScrollBlot.prototype.insertAt = function (index, value, def) {\n\t this.update();\n\t _super.prototype.insertAt.call(this, index, value, def);\n\t };\n\t ScrollBlot.prototype.optimize = function (mutations) {\n\t var _this = this;\n\t if (mutations === void 0) { mutations = []; }\n\t _super.prototype.optimize.call(this);\n\t // We must modify mutations directly, cannot make copy and then modify\n\t var records = [].slice.call(this.observer.takeRecords());\n\t // Array.push currently seems to be implemented by a non-tail recursive function\n\t // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n\t while (records.length > 0)\n\t mutations.push(records.pop());\n\t // TODO use WeakMap\n\t var mark = function (blot, markParent) {\n\t if (markParent === void 0) { markParent = true; }\n\t if (blot == null || blot === _this)\n\t return;\n\t if (blot.domNode.parentNode == null)\n\t return;\n\t if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t blot.domNode[Registry.DATA_KEY].mutations = [];\n\t }\n\t if (markParent)\n\t mark(blot.parent);\n\t };\n\t var optimize = function (blot) {\n\t if (blot.domNode[Registry.DATA_KEY] == null || blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t return;\n\t }\n\t if (blot instanceof container_1.default) {\n\t blot.children.forEach(optimize);\n\t }\n\t blot.optimize();\n\t };\n\t var remaining = mutations;\n\t for (var i = 0; remaining.length > 0; i += 1) {\n\t if (i >= MAX_OPTIMIZE_ITERATIONS) {\n\t throw new Error('[Parchment] Maximum optimize iterations reached');\n\t }\n\t remaining.forEach(function (mutation) {\n\t var blot = Registry.find(mutation.target, true);\n\t if (blot == null)\n\t return;\n\t if (blot.domNode === mutation.target) {\n\t if (mutation.type === 'childList') {\n\t mark(Registry.find(mutation.previousSibling, false));\n\t [].forEach.call(mutation.addedNodes, function (node) {\n\t var child = Registry.find(node, false);\n\t mark(child, false);\n\t if (child instanceof container_1.default) {\n\t child.children.forEach(function (grandChild) {\n\t mark(grandChild, false);\n\t });\n\t }\n\t });\n\t }\n\t else if (mutation.type === 'attributes') {\n\t mark(blot.prev);\n\t }\n\t }\n\t mark(blot);\n\t });\n\t this.children.forEach(optimize);\n\t remaining = [].slice.call(this.observer.takeRecords());\n\t records = remaining.slice();\n\t while (records.length > 0)\n\t mutations.push(records.pop());\n\t }\n\t };\n\t ScrollBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t mutations = mutations || this.observer.takeRecords();\n\t // TODO use WeakMap\n\t mutations.map(function (mutation) {\n\t var blot = Registry.find(mutation.target, true);\n\t if (blot == null)\n\t return;\n\t if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n\t return blot;\n\t }\n\t else {\n\t blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n\t return null;\n\t }\n\t }).forEach(function (blot) {\n\t if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null)\n\t return;\n\t blot.update(blot.domNode[Registry.DATA_KEY].mutations || []);\n\t });\n\t if (this.domNode[Registry.DATA_KEY].mutations != null) {\n\t _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations);\n\t }\n\t this.optimize(mutations);\n\t };\n\t return ScrollBlot;\n\t}(container_1.default));\n\tScrollBlot.blotName = 'scroll';\n\tScrollBlot.defaultChild = 'block';\n\tScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n\tScrollBlot.tagName = 'DIV';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ScrollBlot;\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar format_1 = __webpack_require__(7);\n\tvar Registry = __webpack_require__(6);\n\t// Shallow object comparison\n\tfunction isEqual(obj1, obj2) {\n\t if (Object.keys(obj1).length !== Object.keys(obj2).length)\n\t return false;\n\t for (var prop in obj1) {\n\t if (obj1[prop] !== obj2[prop])\n\t return false;\n\t }\n\t return true;\n\t}\n\tvar InlineBlot = (function (_super) {\n\t __extends(InlineBlot, _super);\n\t function InlineBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t InlineBlot.formats = function (domNode) {\n\t if (domNode.tagName === InlineBlot.tagName)\n\t return undefined;\n\t return _super.formats.call(this, domNode);\n\t };\n\t InlineBlot.prototype.format = function (name, value) {\n\t var _this = this;\n\t if (name === this.statics.blotName && !value) {\n\t this.children.forEach(function (child) {\n\t if (!(child instanceof format_1.default)) {\n\t child = child.wrap(InlineBlot.blotName, true);\n\t }\n\t _this.attributes.copy(child);\n\t });\n\t this.unwrap();\n\t }\n\t else {\n\t _super.prototype.format.call(this, name, value);\n\t }\n\t };\n\t InlineBlot.prototype.formatAt = function (index, length, name, value) {\n\t if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n\t var blot = this.isolate(index, length);\n\t blot.format(name, value);\n\t }\n\t else {\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t }\n\t };\n\t InlineBlot.prototype.optimize = function () {\n\t _super.prototype.optimize.call(this);\n\t var formats = this.formats();\n\t if (Object.keys(formats).length === 0) {\n\t return this.unwrap(); // unformatted span\n\t }\n\t var next = this.next;\n\t if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n\t next.moveChildren(this);\n\t next.remove();\n\t }\n\t };\n\t return InlineBlot;\n\t}(format_1.default));\n\tInlineBlot.blotName = 'inline';\n\tInlineBlot.scope = Registry.Scope.INLINE_BLOT;\n\tInlineBlot.tagName = 'SPAN';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = InlineBlot;\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar format_1 = __webpack_require__(7);\n\tvar Registry = __webpack_require__(6);\n\tvar BlockBlot = (function (_super) {\n\t __extends(BlockBlot, _super);\n\t function BlockBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t BlockBlot.formats = function (domNode) {\n\t var tagName = Registry.query(BlockBlot.blotName).tagName;\n\t if (domNode.tagName === tagName)\n\t return undefined;\n\t return _super.formats.call(this, domNode);\n\t };\n\t BlockBlot.prototype.format = function (name, value) {\n\t if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n\t return;\n\t }\n\t else if (name === this.statics.blotName && !value) {\n\t this.replaceWith(BlockBlot.blotName);\n\t }\n\t else {\n\t _super.prototype.format.call(this, name, value);\n\t }\n\t };\n\t BlockBlot.prototype.formatAt = function (index, length, name, value) {\n\t if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n\t this.format(name, value);\n\t }\n\t else {\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t }\n\t };\n\t BlockBlot.prototype.insertAt = function (index, value, def) {\n\t if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n\t // Insert text or inline\n\t _super.prototype.insertAt.call(this, index, value, def);\n\t }\n\t else {\n\t var after = this.split(index);\n\t var blot = Registry.create(value, def);\n\t after.parent.insertBefore(blot, after);\n\t }\n\t };\n\t BlockBlot.prototype.update = function (mutations) {\n\t if (navigator.userAgent.match(/Trident/)) {\n\t this.attach();\n\t }\n\t else {\n\t _super.prototype.update.call(this, mutations);\n\t }\n\t };\n\t return BlockBlot;\n\t}(format_1.default));\n\tBlockBlot.blotName = 'block';\n\tBlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n\tBlockBlot.tagName = 'P';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = BlockBlot;\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar leaf_1 = __webpack_require__(12);\n\tvar EmbedBlot = (function (_super) {\n\t __extends(EmbedBlot, _super);\n\t function EmbedBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t EmbedBlot.formats = function (domNode) {\n\t return undefined;\n\t };\n\t EmbedBlot.prototype.format = function (name, value) {\n\t // super.formatAt wraps, which is what we want in general,\n\t // but this allows subclasses to overwrite for formats\n\t // that just apply to particular embeds\n\t _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n\t };\n\t EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n\t if (index === 0 && length === this.length()) {\n\t this.format(name, value);\n\t }\n\t else {\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t }\n\t };\n\t EmbedBlot.prototype.formats = function () {\n\t return this.statics.formats(this.domNode);\n\t };\n\t return EmbedBlot;\n\t}(leaf_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = EmbedBlot;\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar leaf_1 = __webpack_require__(12);\n\tvar Registry = __webpack_require__(6);\n\tvar TextBlot = (function (_super) {\n\t __extends(TextBlot, _super);\n\t function TextBlot(node) {\n\t var _this = _super.call(this, node) || this;\n\t _this.text = _this.statics.value(_this.domNode);\n\t return _this;\n\t }\n\t TextBlot.create = function (value) {\n\t return document.createTextNode(value);\n\t };\n\t TextBlot.value = function (domNode) {\n\t return domNode.data;\n\t };\n\t TextBlot.prototype.deleteAt = function (index, length) {\n\t this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n\t };\n\t TextBlot.prototype.index = function (node, offset) {\n\t if (this.domNode === node) {\n\t return offset;\n\t }\n\t return -1;\n\t };\n\t TextBlot.prototype.insertAt = function (index, value, def) {\n\t if (def == null) {\n\t this.text = this.text.slice(0, index) + value + this.text.slice(index);\n\t this.domNode.data = this.text;\n\t }\n\t else {\n\t _super.prototype.insertAt.call(this, index, value, def);\n\t }\n\t };\n\t TextBlot.prototype.length = function () {\n\t return this.text.length;\n\t };\n\t TextBlot.prototype.optimize = function () {\n\t _super.prototype.optimize.call(this);\n\t this.text = this.statics.value(this.domNode);\n\t if (this.text.length === 0) {\n\t this.remove();\n\t }\n\t else if (this.next instanceof TextBlot && this.next.prev === this) {\n\t this.insertAt(this.length(), this.next.value());\n\t this.next.remove();\n\t }\n\t };\n\t TextBlot.prototype.position = function (index, inclusive) {\n\t if (inclusive === void 0) { inclusive = false; }\n\t return [this.domNode, index];\n\t };\n\t TextBlot.prototype.split = function (index, force) {\n\t if (force === void 0) { force = false; }\n\t if (!force) {\n\t if (index === 0)\n\t return this;\n\t if (index === this.length())\n\t return this.next;\n\t }\n\t var after = Registry.create(this.domNode.splitText(index));\n\t this.parent.insertBefore(after, this.next);\n\t this.text = this.statics.value(this.domNode);\n\t return after;\n\t };\n\t TextBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t if (mutations.some(function (mutation) {\n\t return mutation.type === 'characterData' && mutation.target === _this.domNode;\n\t })) {\n\t this.text = this.statics.value(this.domNode);\n\t }\n\t };\n\t TextBlot.prototype.value = function () {\n\t return this.text;\n\t };\n\t return TextBlot;\n\t}(leaf_1.default));\n\tTextBlot.blotName = 'text';\n\tTextBlot.scope = Registry.Scope.INLINE_BLOT;\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = TextBlot;\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.overload = exports.expandConfig = undefined;\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\t__webpack_require__(19);\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _editor = __webpack_require__(27);\n\n\tvar _editor2 = _interopRequireDefault(_editor);\n\n\tvar _emitter3 = __webpack_require__(35);\n\n\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _selection = __webpack_require__(40);\n\n\tvar _selection2 = _interopRequireDefault(_selection);\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tvar _theme = __webpack_require__(41);\n\n\tvar _theme2 = _interopRequireDefault(_theme);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _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; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar debug = (0, _logger2.default)('quill');\n\n\tvar Quill = function () {\n\t _createClass(Quill, null, [{\n\t key: 'debug',\n\t value: function debug(limit) {\n\t if (limit === true) {\n\t limit = 'log';\n\t }\n\t _logger2.default.level(limit);\n\t }\n\t }, {\n\t key: 'find',\n\t value: function find(node) {\n\t return node.__quill || _parchment2.default.find(node);\n\t }\n\t }, {\n\t key: 'import',\n\t value: function _import(name) {\n\t if (this.imports[name] == null) {\n\t debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n\t }\n\t return this.imports[name];\n\t }\n\t }, {\n\t key: 'register',\n\t value: function register(path, target) {\n\t var _this = this;\n\n\t var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t if (typeof path !== 'string') {\n\t var name = path.attrName || path.blotName;\n\t if (typeof name === 'string') {\n\t // register(Blot | Attributor, overwrite)\n\t this.register('formats/' + name, path, target);\n\t } else {\n\t Object.keys(path).forEach(function (key) {\n\t _this.register(key, path[key], target);\n\t });\n\t }\n\t } else {\n\t if (this.imports[path] != null && !overwrite) {\n\t debug.warn('Overwriting ' + path + ' with', target);\n\t }\n\t this.imports[path] = target;\n\t if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n\t _parchment2.default.register(target);\n\t }\n\t }\n\t }\n\t }]);\n\n\t function Quill(container) {\n\t var _this2 = this;\n\n\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t _classCallCheck(this, Quill);\n\n\t this.options = expandConfig(container, options);\n\t this.container = this.options.container;\n\t this.scrollingContainer = this.options.scrollingContainer || document.body;\n\t if (this.container == null) {\n\t return debug.error('Invalid Quill container', container);\n\t }\n\t if (this.options.debug) {\n\t Quill.debug(this.options.debug);\n\t }\n\t var html = this.container.innerHTML.trim();\n\t this.container.classList.add('ql-container');\n\t this.container.innerHTML = '';\n\t this.container.__quill = this;\n\t this.root = this.addContainer('ql-editor');\n\t this.root.classList.add('ql-blank');\n\t this.emitter = new _emitter4.default();\n\t this.scroll = _parchment2.default.create(this.root, {\n\t emitter: this.emitter,\n\t whitelist: this.options.formats\n\t });\n\t this.editor = new _editor2.default(this.scroll);\n\t this.selection = new _selection2.default(this.scroll, this.emitter);\n\t this.theme = new this.options.theme(this, this.options);\n\t this.keyboard = this.theme.addModule('keyboard');\n\t this.clipboard = this.theme.addModule('clipboard');\n\t this.history = this.theme.addModule('history');\n\t this.theme.init();\n\t this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n\t if (type === _emitter4.default.events.TEXT_CHANGE) {\n\t _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n\t }\n\t });\n\t this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n\t var range = _this2.selection.lastRange;\n\t var index = range && range.length === 0 ? range.index : undefined;\n\t modify.call(_this2, function () {\n\t return _this2.editor.update(null, mutations, index);\n\t }, source);\n\t });\n\t var contents = this.clipboard.convert('');\n\t this.setContents(contents);\n\t this.history.clear();\n\t if (this.options.placeholder) {\n\t this.root.setAttribute('data-placeholder', this.options.placeholder);\n\t }\n\t if (this.options.readOnly) {\n\t this.disable();\n\t }\n\t }\n\n\t _createClass(Quill, [{\n\t key: 'addContainer',\n\t value: function addContainer(container) {\n\t var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t if (typeof container === 'string') {\n\t var className = container;\n\t container = document.createElement('div');\n\t container.classList.add(className);\n\t }\n\t this.container.insertBefore(container, refNode);\n\t return container;\n\t }\n\t }, {\n\t key: 'blur',\n\t value: function blur() {\n\t this.selection.setRange(null);\n\t }\n\t }, {\n\t key: 'deleteText',\n\t value: function deleteText(index, length, source) {\n\t var _this3 = this;\n\n\t var _overload = overload(index, length, source);\n\n\t var _overload2 = _slicedToArray(_overload, 4);\n\n\t index = _overload2[0];\n\t length = _overload2[1];\n\t source = _overload2[3];\n\n\t return modify.call(this, function () {\n\t return _this3.editor.deleteText(index, length);\n\t }, source, index, -1 * length);\n\t }\n\t }, {\n\t key: 'disable',\n\t value: function disable() {\n\t this.enable(false);\n\t }\n\t }, {\n\t key: 'enable',\n\t value: function enable() {\n\t var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n\t this.scroll.enable(enabled);\n\t this.container.classList.toggle('ql-disabled', !enabled);\n\t if (!enabled) {\n\t this.blur();\n\t }\n\t }\n\t }, {\n\t key: 'focus',\n\t value: function focus() {\n\t var scrollTop = this.scrollingContainer.scrollTop;\n\t this.selection.focus();\n\t this.scrollingContainer.scrollTop = scrollTop;\n\t this.selection.scrollIntoView();\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t var _this4 = this;\n\n\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n\t return modify.call(this, function () {\n\t var range = _this4.getSelection(true);\n\t var change = new _quillDelta2.default();\n\t if (range == null) {\n\t return change;\n\t } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n\t } else if (range.length === 0) {\n\t _this4.selection.format(name, value);\n\t return change;\n\t } else {\n\t change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n\t }\n\t _this4.setSelection(range, _emitter4.default.sources.SILENT);\n\t return change;\n\t }, source);\n\t }\n\t }, {\n\t key: 'formatLine',\n\t value: function formatLine(index, length, name, value, source) {\n\t var _this5 = this;\n\n\t var formats = void 0;\n\n\t var _overload3 = overload(index, length, name, value, source);\n\n\t var _overload4 = _slicedToArray(_overload3, 4);\n\n\t index = _overload4[0];\n\t length = _overload4[1];\n\t formats = _overload4[2];\n\t source = _overload4[3];\n\n\t return modify.call(this, function () {\n\t return _this5.editor.formatLine(index, length, formats);\n\t }, source, index, 0);\n\t }\n\t }, {\n\t key: 'formatText',\n\t value: function formatText(index, length, name, value, source) {\n\t var _this6 = this;\n\n\t var formats = void 0;\n\n\t var _overload5 = overload(index, length, name, value, source);\n\n\t var _overload6 = _slicedToArray(_overload5, 4);\n\n\t index = _overload6[0];\n\t length = _overload6[1];\n\t formats = _overload6[2];\n\t source = _overload6[3];\n\n\t return modify.call(this, function () {\n\t return _this6.editor.formatText(index, length, formats);\n\t }, source, index, 0);\n\t }\n\t }, {\n\t key: 'getBounds',\n\t value: function getBounds(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t if (typeof index === 'number') {\n\t return this.selection.getBounds(index, length);\n\t } else {\n\t return this.selection.getBounds(index.index, index.length);\n\t }\n\t }\n\t }, {\n\t key: 'getContents',\n\t value: function getContents() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n\t var _overload7 = overload(index, length);\n\n\t var _overload8 = _slicedToArray(_overload7, 2);\n\n\t index = _overload8[0];\n\t length = _overload8[1];\n\n\t return this.editor.getContents(index, length);\n\t }\n\t }, {\n\t key: 'getFormat',\n\t value: function getFormat() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection();\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t if (typeof index === 'number') {\n\t return this.editor.getFormat(index, length);\n\t } else {\n\t return this.editor.getFormat(index.index, index.length);\n\t }\n\t }\n\t }, {\n\t key: 'getIndex',\n\t value: function getIndex(blot) {\n\t return blot.offset(this.scroll);\n\t }\n\t }, {\n\t key: 'getLength',\n\t value: function getLength() {\n\t return this.scroll.length();\n\t }\n\t }, {\n\t key: 'getLeaf',\n\t value: function getLeaf(index) {\n\t return this.scroll.leaf(index);\n\t }\n\t }, {\n\t key: 'getLine',\n\t value: function getLine(index) {\n\t return this.scroll.line(index);\n\t }\n\t }, {\n\t key: 'getLines',\n\t value: function getLines() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n\t if (typeof index !== 'number') {\n\t return this.scroll.lines(index.index, index.length);\n\t } else {\n\t return this.scroll.lines(index, length);\n\t }\n\t }\n\t }, {\n\t key: 'getModule',\n\t value: function getModule(name) {\n\t return this.theme.modules[name];\n\t }\n\t }, {\n\t key: 'getSelection',\n\t value: function getSelection() {\n\t var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t if (focus) this.focus();\n\t this.update(); // Make sure we access getRange with editor in consistent state\n\t return this.selection.getRange()[0];\n\t }\n\t }, {\n\t key: 'getText',\n\t value: function getText() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n\t var _overload9 = overload(index, length);\n\n\t var _overload10 = _slicedToArray(_overload9, 2);\n\n\t index = _overload10[0];\n\t length = _overload10[1];\n\n\t return this.editor.getText(index, length);\n\t }\n\t }, {\n\t key: 'hasFocus',\n\t value: function hasFocus() {\n\t return this.selection.hasFocus();\n\t }\n\t }, {\n\t key: 'insertEmbed',\n\t value: function insertEmbed(index, embed, value) {\n\t var _this7 = this;\n\n\t var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n\t return modify.call(this, function () {\n\t return _this7.editor.insertEmbed(index, embed, value);\n\t }, source, index);\n\t }\n\t }, {\n\t key: 'insertText',\n\t value: function insertText(index, text, name, value, source) {\n\t var _this8 = this;\n\n\t var formats = void 0;\n\n\t var _overload11 = overload(index, 0, name, value, source);\n\n\t var _overload12 = _slicedToArray(_overload11, 4);\n\n\t index = _overload12[0];\n\t formats = _overload12[2];\n\t source = _overload12[3];\n\n\t return modify.call(this, function () {\n\t return _this8.editor.insertText(index, text, formats);\n\t }, source, index, text.length);\n\t }\n\t }, {\n\t key: 'isEnabled',\n\t value: function isEnabled() {\n\t return !this.container.classList.contains('ql-disabled');\n\t }\n\t }, {\n\t key: 'off',\n\t value: function off() {\n\t return this.emitter.off.apply(this.emitter, arguments);\n\t }\n\t }, {\n\t key: 'on',\n\t value: function on() {\n\t return this.emitter.on.apply(this.emitter, arguments);\n\t }\n\t }, {\n\t key: 'once',\n\t value: function once() {\n\t return this.emitter.once.apply(this.emitter, arguments);\n\t }\n\t }, {\n\t key: 'pasteHTML',\n\t value: function pasteHTML(index, html, source) {\n\t this.clipboard.dangerouslyPasteHTML(index, html, source);\n\t }\n\t }, {\n\t key: 'removeFormat',\n\t value: function removeFormat(index, length, source) {\n\t var _this9 = this;\n\n\t var _overload13 = overload(index, length, source);\n\n\t var _overload14 = _slicedToArray(_overload13, 4);\n\n\t index = _overload14[0];\n\t length = _overload14[1];\n\t source = _overload14[3];\n\n\t return modify.call(this, function () {\n\t return _this9.editor.removeFormat(index, length);\n\t }, source, index);\n\t }\n\t }, {\n\t key: 'setContents',\n\t value: function setContents(delta) {\n\t var _this10 = this;\n\n\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n\t return modify.call(this, function () {\n\t delta = new _quillDelta2.default(delta);\n\t var length = _this10.getLength();\n\t var deleted = _this10.editor.deleteText(0, length);\n\t var applied = _this10.editor.applyDelta(delta);\n\t var lastOp = applied.ops[applied.ops.length - 1];\n\t if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n\t _this10.editor.deleteText(_this10.getLength() - 1, 1);\n\t applied.delete(1);\n\t }\n\t var ret = deleted.compose(applied);\n\t return ret;\n\t }, source);\n\t }\n\t }, {\n\t key: 'setSelection',\n\t value: function setSelection(index, length, source) {\n\t if (index == null) {\n\t this.selection.setRange(null, length || Quill.sources.API);\n\t } else {\n\t var _overload15 = overload(index, length, source);\n\n\t var _overload16 = _slicedToArray(_overload15, 4);\n\n\t index = _overload16[0];\n\t length = _overload16[1];\n\t source = _overload16[3];\n\n\t this.selection.setRange(new _selection.Range(index, length), source);\n\t }\n\t if (source !== _emitter4.default.sources.SILENT) {\n\t this.selection.scrollIntoView();\n\t }\n\t }\n\t }, {\n\t key: 'setText',\n\t value: function setText(text) {\n\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n\t var delta = new _quillDelta2.default().insert(text);\n\t return this.setContents(delta, source);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n\t var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n\t this.selection.update(source);\n\t return change;\n\t }\n\t }, {\n\t key: 'updateContents',\n\t value: function updateContents(delta) {\n\t var _this11 = this;\n\n\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n\t return modify.call(this, function () {\n\t delta = new _quillDelta2.default(delta);\n\t return _this11.editor.applyDelta(delta, source);\n\t }, source, true);\n\t }\n\t }]);\n\n\t return Quill;\n\t}();\n\n\tQuill.DEFAULTS = {\n\t bounds: null,\n\t formats: null,\n\t modules: {},\n\t placeholder: '',\n\t readOnly: false,\n\t scrollingContainer: null,\n\t strict: true,\n\t theme: 'default'\n\t};\n\tQuill.events = _emitter4.default.events;\n\tQuill.sources = _emitter4.default.sources;\n\t// eslint-disable-next-line no-undef\n\tQuill.version = false ? 'dev' : (\"1.2.0\");\n\n\tQuill.imports = {\n\t 'delta': _quillDelta2.default,\n\t 'parchment': _parchment2.default,\n\t 'core/module': _module2.default,\n\t 'core/theme': _theme2.default\n\t};\n\n\tfunction expandConfig(container, userConfig) {\n\t userConfig = (0, _extend2.default)(true, {\n\t container: container,\n\t modules: {\n\t clipboard: true,\n\t keyboard: true,\n\t history: true\n\t }\n\t }, userConfig);\n\t if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n\t userConfig.theme = _theme2.default;\n\t } else {\n\t userConfig.theme = Quill.import('themes/' + userConfig.theme);\n\t if (userConfig.theme == null) {\n\t throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n\t }\n\t }\n\t var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n\t [themeConfig, userConfig].forEach(function (config) {\n\t config.modules = config.modules || {};\n\t Object.keys(config.modules).forEach(function (module) {\n\t if (config.modules[module] === true) {\n\t config.modules[module] = {};\n\t }\n\t });\n\t });\n\t var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n\t var moduleConfig = moduleNames.reduce(function (config, name) {\n\t var moduleClass = Quill.import('modules/' + name);\n\t if (moduleClass == null) {\n\t debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n\t } else {\n\t config[name] = moduleClass.DEFAULTS || {};\n\t }\n\t return config;\n\t }, {});\n\t // Special case toolbar shorthand\n\t if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n\t userConfig.modules.toolbar = {\n\t container: userConfig.modules.toolbar\n\t };\n\t }\n\t userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n\t ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n\t if (typeof userConfig[key] === 'string') {\n\t userConfig[key] = document.querySelector(userConfig[key]);\n\t }\n\t });\n\t userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n\t if (userConfig.modules[name]) {\n\t config[name] = userConfig.modules[name];\n\t }\n\t return config;\n\t }, {});\n\t return userConfig;\n\t}\n\n\t// Handle selection preservation and TEXT_CHANGE emission\n\t// common to modification APIs\n\tfunction modify(modifier, source, index, shift) {\n\t if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n\t return new _quillDelta2.default();\n\t }\n\t var range = index == null ? null : this.getSelection();\n\t var oldDelta = this.editor.delta;\n\t var change = modifier();\n\t if (range != null) {\n\t if (index === true) index = range.index;\n\t if (shift == null) {\n\t range = shiftRange(range, change, source);\n\t } else if (shift !== 0) {\n\t range = shiftRange(range, index, shift, source);\n\t }\n\t this.setSelection(range, _emitter4.default.sources.SILENT);\n\t }\n\t if (change.length() > 0) {\n\t var _emitter;\n\n\t var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n\t (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\t if (source !== _emitter4.default.sources.SILENT) {\n\t var _emitter2;\n\n\t (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n\t }\n\t }\n\t return change;\n\t}\n\n\tfunction overload(index, length, name, value, source) {\n\t var formats = {};\n\t if (typeof index.index === 'number' && typeof index.length === 'number') {\n\t // Allow for throwaway end (used by insertText/insertEmbed)\n\t if (typeof length !== 'number') {\n\t source = value, value = name, name = length, length = index.length, index = index.index;\n\t } else {\n\t length = index.length, index = index.index;\n\t }\n\t } else if (typeof length !== 'number') {\n\t source = value, value = name, name = length, length = 0;\n\t }\n\t // Handle format being object, two format name/value strings or excluded\n\t if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n\t formats = name;\n\t source = value;\n\t } else if (typeof name === 'string') {\n\t if (value != null) {\n\t formats[name] = value;\n\t } else {\n\t source = name;\n\t }\n\t }\n\t // Handle optional source\n\t source = source || _emitter4.default.sources.API;\n\t return [index, length, formats, source];\n\t}\n\n\tfunction shiftRange(range, index, length, source) {\n\t if (range == null) return null;\n\t var start = void 0,\n\t end = void 0;\n\t if (index instanceof _quillDelta2.default) {\n\t var _map = [range.index, range.index + range.length].map(function (pos) {\n\t return index.transformPosition(pos, source === _emitter4.default.sources.USER);\n\t });\n\n\t var _map2 = _slicedToArray(_map, 2);\n\n\t start = _map2[0];\n\t end = _map2[1];\n\t } else {\n\t var _map3 = [range.index, range.index + range.length].map(function (pos) {\n\t if (pos < index || pos === index && source !== _emitter4.default.sources.USER) return pos;\n\t if (length >= 0) {\n\t return pos + length;\n\t } else {\n\t return Math.max(index, pos + length);\n\t }\n\t });\n\n\t var _map4 = _slicedToArray(_map3, 2);\n\n\t start = _map4[0];\n\t end = _map4[1];\n\t }\n\t return new _selection.Range(start, end - start);\n\t}\n\n\texports.expandConfig = expandConfig;\n\texports.overload = overload;\n\texports.default = Quill;\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tvar elem = document.createElement('div');\n\telem.classList.toggle('test-class', false);\n\tif (elem.classList.contains('test-class')) {\n\t (function () {\n\t var _toggle = DOMTokenList.prototype.toggle;\n\t DOMTokenList.prototype.toggle = function (token, force) {\n\t if (arguments.length > 1 && !this.contains(token) === !force) {\n\t return force;\n\t } else {\n\t return _toggle.call(this, token);\n\t }\n\t };\n\t })();\n\t}\n\n\tif (!String.prototype.startsWith) {\n\t String.prototype.startsWith = function (searchString, position) {\n\t position = position || 0;\n\t return this.substr(position, searchString.length) === searchString;\n\t };\n\t}\n\n\tif (!String.prototype.endsWith) {\n\t String.prototype.endsWith = function (searchString, position) {\n\t var subjectString = this.toString();\n\t if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n\t position = subjectString.length;\n\t }\n\t position -= searchString.length;\n\t var lastIndex = subjectString.indexOf(searchString, position);\n\t return lastIndex !== -1 && lastIndex === position;\n\t };\n\t}\n\n\tif (!Array.prototype.find) {\n\t Object.defineProperty(Array.prototype, \"find\", {\n\t value: function value(predicate) {\n\t if (this === null) {\n\t throw new TypeError('Array.prototype.find called on null or undefined');\n\t }\n\t if (typeof predicate !== 'function') {\n\t throw new TypeError('predicate must be a function');\n\t }\n\t var list = Object(this);\n\t var length = list.length >>> 0;\n\t var thisArg = arguments[1];\n\t var value;\n\n\t for (var i = 0; i < length; i++) {\n\t value = list[i];\n\t if (predicate.call(thisArg, value, i, list)) {\n\t return value;\n\t }\n\t }\n\t return undefined;\n\t }\n\t });\n\t}\n\n\t// Disable resizing in Firefox\n\tdocument.addEventListener(\"DOMContentLoaded\", function () {\n\t document.execCommand(\"enableObjectResizing\", false, false);\n\t});\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar diff = __webpack_require__(21);\n\tvar equal = __webpack_require__(22);\n\tvar extend = __webpack_require__(25);\n\tvar op = __webpack_require__(26);\n\n\n\tvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\n\tvar Delta = function (ops) {\n\t // Assume we are given a well formed ops\n\t if (Array.isArray(ops)) {\n\t this.ops = ops;\n\t } else if (ops != null && Array.isArray(ops.ops)) {\n\t this.ops = ops.ops;\n\t } else {\n\t this.ops = [];\n\t }\n\t};\n\n\n\tDelta.prototype.insert = function (text, attributes) {\n\t var newOp = {};\n\t if (text.length === 0) return this;\n\t newOp.insert = text;\n\t if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n\t newOp.attributes = attributes;\n\t }\n\t return this.push(newOp);\n\t};\n\n\tDelta.prototype['delete'] = function (length) {\n\t if (length <= 0) return this;\n\t return this.push({ 'delete': length });\n\t};\n\n\tDelta.prototype.retain = function (length, attributes) {\n\t if (length <= 0) return this;\n\t var newOp = { retain: length };\n\t if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n\t newOp.attributes = attributes;\n\t }\n\t return this.push(newOp);\n\t};\n\n\tDelta.prototype.push = function (newOp) {\n\t var index = this.ops.length;\n\t var lastOp = this.ops[index - 1];\n\t newOp = extend(true, {}, newOp);\n\t if (typeof lastOp === 'object') {\n\t if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n\t this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n\t return this;\n\t }\n\t // Since it does not matter if we insert before or after deleting at the same index,\n\t // always prefer to insert first\n\t if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n\t index -= 1;\n\t lastOp = this.ops[index - 1];\n\t if (typeof lastOp !== 'object') {\n\t this.ops.unshift(newOp);\n\t return this;\n\t }\n\t }\n\t if (equal(newOp.attributes, lastOp.attributes)) {\n\t if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n\t this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n\t if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n\t return this;\n\t } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n\t this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n\t if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n\t return this;\n\t }\n\t }\n\t }\n\t if (index === this.ops.length) {\n\t this.ops.push(newOp);\n\t } else {\n\t this.ops.splice(index, 0, newOp);\n\t }\n\t return this;\n\t};\n\n\tDelta.prototype.filter = function (predicate) {\n\t return this.ops.filter(predicate);\n\t};\n\n\tDelta.prototype.forEach = function (predicate) {\n\t this.ops.forEach(predicate);\n\t};\n\n\tDelta.prototype.map = function (predicate) {\n\t return this.ops.map(predicate);\n\t};\n\n\tDelta.prototype.partition = function (predicate) {\n\t var passed = [], failed = [];\n\t this.forEach(function(op) {\n\t var target = predicate(op) ? passed : failed;\n\t target.push(op);\n\t });\n\t return [passed, failed];\n\t};\n\n\tDelta.prototype.reduce = function (predicate, initial) {\n\t return this.ops.reduce(predicate, initial);\n\t};\n\n\tDelta.prototype.chop = function () {\n\t var lastOp = this.ops[this.ops.length - 1];\n\t if (lastOp && lastOp.retain && !lastOp.attributes) {\n\t this.ops.pop();\n\t }\n\t return this;\n\t};\n\n\tDelta.prototype.length = function () {\n\t return this.reduce(function (length, elem) {\n\t return length + op.length(elem);\n\t }, 0);\n\t};\n\n\tDelta.prototype.slice = function (start, end) {\n\t start = start || 0;\n\t if (typeof end !== 'number') end = Infinity;\n\t var ops = [];\n\t var iter = op.iterator(this.ops);\n\t var index = 0;\n\t while (index < end && iter.hasNext()) {\n\t var nextOp;\n\t if (index < start) {\n\t nextOp = iter.next(start - index);\n\t } else {\n\t nextOp = iter.next(end - index);\n\t ops.push(nextOp);\n\t }\n\t index += op.length(nextOp);\n\t }\n\t return new Delta(ops);\n\t};\n\n\n\tDelta.prototype.compose = function (other) {\n\t var thisIter = op.iterator(this.ops);\n\t var otherIter = op.iterator(other.ops);\n\t var delta = new Delta();\n\t while (thisIter.hasNext() || otherIter.hasNext()) {\n\t if (otherIter.peekType() === 'insert') {\n\t delta.push(otherIter.next());\n\t } else if (thisIter.peekType() === 'delete') {\n\t delta.push(thisIter.next());\n\t } else {\n\t var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n\t var thisOp = thisIter.next(length);\n\t var otherOp = otherIter.next(length);\n\t if (typeof otherOp.retain === 'number') {\n\t var newOp = {};\n\t if (typeof thisOp.retain === 'number') {\n\t newOp.retain = length;\n\t } else {\n\t newOp.insert = thisOp.insert;\n\t }\n\t // Preserve null when composing with a retain, otherwise remove it for inserts\n\t var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n\t if (attributes) newOp.attributes = attributes;\n\t delta.push(newOp);\n\t // Other op should be delete, we could be an insert or retain\n\t // Insert + delete cancels out\n\t } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n\t delta.push(otherOp);\n\t }\n\t }\n\t }\n\t return delta.chop();\n\t};\n\n\tDelta.prototype.concat = function (other) {\n\t var delta = new Delta(this.ops.slice());\n\t if (other.ops.length > 0) {\n\t delta.push(other.ops[0]);\n\t delta.ops = delta.ops.concat(other.ops.slice(1));\n\t }\n\t return delta;\n\t};\n\n\tDelta.prototype.diff = function (other, index) {\n\t if (this.ops === other.ops) {\n\t return new Delta();\n\t }\n\t var strings = [this, other].map(function (delta) {\n\t return delta.map(function (op) {\n\t if (op.insert != null) {\n\t return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n\t }\n\t var prep = (ops === other.ops) ? 'on' : 'with';\n\t throw new Error('diff() called ' + prep + ' non-document');\n\t }).join('');\n\t });\n\t var delta = new Delta();\n\t var diffResult = diff(strings[0], strings[1], index);\n\t var thisIter = op.iterator(this.ops);\n\t var otherIter = op.iterator(other.ops);\n\t diffResult.forEach(function (component) {\n\t var length = component[1].length;\n\t while (length > 0) {\n\t var opLength = 0;\n\t switch (component[0]) {\n\t case diff.INSERT:\n\t opLength = Math.min(otherIter.peekLength(), length);\n\t delta.push(otherIter.next(opLength));\n\t break;\n\t case diff.DELETE:\n\t opLength = Math.min(length, thisIter.peekLength());\n\t thisIter.next(opLength);\n\t delta['delete'](opLength);\n\t break;\n\t case diff.EQUAL:\n\t opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n\t var thisOp = thisIter.next(opLength);\n\t var otherOp = otherIter.next(opLength);\n\t if (equal(thisOp.insert, otherOp.insert)) {\n\t delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n\t } else {\n\t delta.push(otherOp)['delete'](opLength);\n\t }\n\t break;\n\t }\n\t length -= opLength;\n\t }\n\t });\n\t return delta.chop();\n\t};\n\n\tDelta.prototype.eachLine = function (predicate, newline) {\n\t newline = newline || '\\n';\n\t var iter = op.iterator(this.ops);\n\t var line = new Delta();\n\t while (iter.hasNext()) {\n\t if (iter.peekType() !== 'insert') return;\n\t var thisOp = iter.peek();\n\t var start = op.length(thisOp) - iter.peekLength();\n\t var index = typeof thisOp.insert === 'string' ?\n\t thisOp.insert.indexOf(newline, start) - start : -1;\n\t if (index < 0) {\n\t line.push(iter.next());\n\t } else if (index > 0) {\n\t line.push(iter.next(index));\n\t } else {\n\t predicate(line, iter.next(1).attributes || {});\n\t line = new Delta();\n\t }\n\t }\n\t if (line.length() > 0) {\n\t predicate(line, {});\n\t }\n\t};\n\n\tDelta.prototype.transform = function (other, priority) {\n\t priority = !!priority;\n\t if (typeof other === 'number') {\n\t return this.transformPosition(other, priority);\n\t }\n\t var thisIter = op.iterator(this.ops);\n\t var otherIter = op.iterator(other.ops);\n\t var delta = new Delta();\n\t while (thisIter.hasNext() || otherIter.hasNext()) {\n\t if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n\t delta.retain(op.length(thisIter.next()));\n\t } else if (otherIter.peekType() === 'insert') {\n\t delta.push(otherIter.next());\n\t } else {\n\t var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n\t var thisOp = thisIter.next(length);\n\t var otherOp = otherIter.next(length);\n\t if (thisOp['delete']) {\n\t // Our delete either makes their delete redundant or removes their retain\n\t continue;\n\t } else if (otherOp['delete']) {\n\t delta.push(otherOp);\n\t } else {\n\t // We retain either their retain or insert\n\t delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n\t }\n\t }\n\t }\n\t return delta.chop();\n\t};\n\n\tDelta.prototype.transformPosition = function (index, priority) {\n\t priority = !!priority;\n\t var thisIter = op.iterator(this.ops);\n\t var offset = 0;\n\t while (thisIter.hasNext() && offset <= index) {\n\t var length = thisIter.peekLength();\n\t var nextType = thisIter.peekType();\n\t thisIter.next();\n\t if (nextType === 'delete') {\n\t index -= Math.min(length, index - offset);\n\t continue;\n\t } else if (nextType === 'insert' && (offset < index || !priority)) {\n\t index += length;\n\t }\n\t offset += length;\n\t }\n\t return index;\n\t};\n\n\n\tmodule.exports = Delta;\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t/**\n\t * This library modifies the diff-patch-match library by Neil Fraser\n\t * by removing the patch and match functionality and certain advanced\n\t * options in the diff function. The original license is as follows:\n\t *\n\t * ===\n\t *\n\t * Diff Match and Patch\n\t *\n\t * Copyright 2006 Google Inc.\n\t * http://code.google.com/p/google-diff-match-patch/\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\n\n\t/**\n\t * The data structure representing a diff is an array of tuples:\n\t * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n\t * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n\t */\n\tvar DIFF_DELETE = -1;\n\tvar DIFF_INSERT = 1;\n\tvar DIFF_EQUAL = 0;\n\n\n\t/**\n\t * Find the differences between two texts. Simplifies the problem by stripping\n\t * any common prefix or suffix off the texts before diffing.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @param {Int} cursor_pos Expected edit position in text1 (optional)\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_main(text1, text2, cursor_pos) {\n\t // Check for equality (speedup).\n\t if (text1 == text2) {\n\t if (text1) {\n\t return [[DIFF_EQUAL, text1]];\n\t }\n\t return [];\n\t }\n\n\t // Check cursor_pos within bounds\n\t if (cursor_pos < 0 || text1.length < cursor_pos) {\n\t cursor_pos = null;\n\t }\n\n\t // Trim off common prefix (speedup).\n\t var commonlength = diff_commonPrefix(text1, text2);\n\t var commonprefix = text1.substring(0, commonlength);\n\t text1 = text1.substring(commonlength);\n\t text2 = text2.substring(commonlength);\n\n\t // Trim off common suffix (speedup).\n\t commonlength = diff_commonSuffix(text1, text2);\n\t var commonsuffix = text1.substring(text1.length - commonlength);\n\t text1 = text1.substring(0, text1.length - commonlength);\n\t text2 = text2.substring(0, text2.length - commonlength);\n\n\t // Compute the diff on the middle block.\n\t var diffs = diff_compute_(text1, text2);\n\n\t // Restore the prefix and suffix.\n\t if (commonprefix) {\n\t diffs.unshift([DIFF_EQUAL, commonprefix]);\n\t }\n\t if (commonsuffix) {\n\t diffs.push([DIFF_EQUAL, commonsuffix]);\n\t }\n\t diff_cleanupMerge(diffs);\n\t if (cursor_pos != null) {\n\t diffs = fix_cursor(diffs, cursor_pos);\n\t }\n\t return diffs;\n\t};\n\n\n\t/**\n\t * Find the differences between two texts. Assumes that the texts do not\n\t * have any common prefix or suffix.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_compute_(text1, text2) {\n\t var diffs;\n\n\t if (!text1) {\n\t // Just add some text (speedup).\n\t return [[DIFF_INSERT, text2]];\n\t }\n\n\t if (!text2) {\n\t // Just delete some text (speedup).\n\t return [[DIFF_DELETE, text1]];\n\t }\n\n\t var longtext = text1.length > text2.length ? text1 : text2;\n\t var shorttext = text1.length > text2.length ? text2 : text1;\n\t var i = longtext.indexOf(shorttext);\n\t if (i != -1) {\n\t // Shorter text is inside the longer text (speedup).\n\t diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n\t [DIFF_EQUAL, shorttext],\n\t [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n\t // Swap insertions for deletions if diff is reversed.\n\t if (text1.length > text2.length) {\n\t diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n\t }\n\t return diffs;\n\t }\n\n\t if (shorttext.length == 1) {\n\t // Single character string.\n\t // After the previous speedup, the character can't be an equality.\n\t return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n\t }\n\n\t // Check to see if the problem can be split in two.\n\t var hm = diff_halfMatch_(text1, text2);\n\t if (hm) {\n\t // A half-match was found, sort out the return data.\n\t var text1_a = hm[0];\n\t var text1_b = hm[1];\n\t var text2_a = hm[2];\n\t var text2_b = hm[3];\n\t var mid_common = hm[4];\n\t // Send both pairs off for separate processing.\n\t var diffs_a = diff_main(text1_a, text2_a);\n\t var diffs_b = diff_main(text1_b, text2_b);\n\t // Merge the results.\n\t return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n\t }\n\n\t return diff_bisect_(text1, text2);\n\t};\n\n\n\t/**\n\t * Find the 'middle snake' of a diff, split the problem in two\n\t * and return the recursively constructed diff.\n\t * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @return {Array} Array of diff tuples.\n\t * @private\n\t */\n\tfunction diff_bisect_(text1, text2) {\n\t // Cache the text lengths to prevent multiple calls.\n\t var text1_length = text1.length;\n\t var text2_length = text2.length;\n\t var max_d = Math.ceil((text1_length + text2_length) / 2);\n\t var v_offset = max_d;\n\t var v_length = 2 * max_d;\n\t var v1 = new Array(v_length);\n\t var v2 = new Array(v_length);\n\t // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n\t // integers and undefined.\n\t for (var x = 0; x < v_length; x++) {\n\t v1[x] = -1;\n\t v2[x] = -1;\n\t }\n\t v1[v_offset + 1] = 0;\n\t v2[v_offset + 1] = 0;\n\t var delta = text1_length - text2_length;\n\t // If the total number of characters is odd, then the front path will collide\n\t // with the reverse path.\n\t var front = (delta % 2 != 0);\n\t // Offsets for start and end of k loop.\n\t // Prevents mapping of space beyond the grid.\n\t var k1start = 0;\n\t var k1end = 0;\n\t var k2start = 0;\n\t var k2end = 0;\n\t for (var d = 0; d < max_d; d++) {\n\t // Walk the front path one step.\n\t for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n\t var k1_offset = v_offset + k1;\n\t var x1;\n\t if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n\t x1 = v1[k1_offset + 1];\n\t } else {\n\t x1 = v1[k1_offset - 1] + 1;\n\t }\n\t var y1 = x1 - k1;\n\t while (x1 < text1_length && y1 < text2_length &&\n\t text1.charAt(x1) == text2.charAt(y1)) {\n\t x1++;\n\t y1++;\n\t }\n\t v1[k1_offset] = x1;\n\t if (x1 > text1_length) {\n\t // Ran off the right of the graph.\n\t k1end += 2;\n\t } else if (y1 > text2_length) {\n\t // Ran off the bottom of the graph.\n\t k1start += 2;\n\t } else if (front) {\n\t var k2_offset = v_offset + delta - k1;\n\t if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n\t // Mirror x2 onto top-left coordinate system.\n\t var x2 = text1_length - v2[k2_offset];\n\t if (x1 >= x2) {\n\t // Overlap detected.\n\t return diff_bisectSplit_(text1, text2, x1, y1);\n\t }\n\t }\n\t }\n\t }\n\n\t // Walk the reverse path one step.\n\t for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n\t var k2_offset = v_offset + k2;\n\t var x2;\n\t if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n\t x2 = v2[k2_offset + 1];\n\t } else {\n\t x2 = v2[k2_offset - 1] + 1;\n\t }\n\t var y2 = x2 - k2;\n\t while (x2 < text1_length && y2 < text2_length &&\n\t text1.charAt(text1_length - x2 - 1) ==\n\t text2.charAt(text2_length - y2 - 1)) {\n\t x2++;\n\t y2++;\n\t }\n\t v2[k2_offset] = x2;\n\t if (x2 > text1_length) {\n\t // Ran off the left of the graph.\n\t k2end += 2;\n\t } else if (y2 > text2_length) {\n\t // Ran off the top of the graph.\n\t k2start += 2;\n\t } else if (!front) {\n\t var k1_offset = v_offset + delta - k2;\n\t if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n\t var x1 = v1[k1_offset];\n\t var y1 = v_offset + x1 - k1_offset;\n\t // Mirror x2 onto top-left coordinate system.\n\t x2 = text1_length - x2;\n\t if (x1 >= x2) {\n\t // Overlap detected.\n\t return diff_bisectSplit_(text1, text2, x1, y1);\n\t }\n\t }\n\t }\n\t }\n\t }\n\t // Diff took too long and hit the deadline or\n\t // number of diffs equals number of characters, no commonality at all.\n\t return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n\t};\n\n\n\t/**\n\t * Given the location of the 'middle snake', split the diff in two parts\n\t * and recurse.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @param {number} x Index of split point in text1.\n\t * @param {number} y Index of split point in text2.\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_bisectSplit_(text1, text2, x, y) {\n\t var text1a = text1.substring(0, x);\n\t var text2a = text2.substring(0, y);\n\t var text1b = text1.substring(x);\n\t var text2b = text2.substring(y);\n\n\t // Compute both diffs serially.\n\t var diffs = diff_main(text1a, text2a);\n\t var diffsb = diff_main(text1b, text2b);\n\n\t return diffs.concat(diffsb);\n\t};\n\n\n\t/**\n\t * Determine the common prefix of two strings.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {number} The number of characters common to the start of each\n\t * string.\n\t */\n\tfunction diff_commonPrefix(text1, text2) {\n\t // Quick check for common null cases.\n\t if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n\t return 0;\n\t }\n\t // Binary search.\n\t // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\t var pointermin = 0;\n\t var pointermax = Math.min(text1.length, text2.length);\n\t var pointermid = pointermax;\n\t var pointerstart = 0;\n\t while (pointermin < pointermid) {\n\t if (text1.substring(pointerstart, pointermid) ==\n\t text2.substring(pointerstart, pointermid)) {\n\t pointermin = pointermid;\n\t pointerstart = pointermin;\n\t } else {\n\t pointermax = pointermid;\n\t }\n\t pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n\t }\n\t return pointermid;\n\t};\n\n\n\t/**\n\t * Determine the common suffix of two strings.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {number} The number of characters common to the end of each string.\n\t */\n\tfunction diff_commonSuffix(text1, text2) {\n\t // Quick check for common null cases.\n\t if (!text1 || !text2 ||\n\t text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n\t return 0;\n\t }\n\t // Binary search.\n\t // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\t var pointermin = 0;\n\t var pointermax = Math.min(text1.length, text2.length);\n\t var pointermid = pointermax;\n\t var pointerend = 0;\n\t while (pointermin < pointermid) {\n\t if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n\t text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n\t pointermin = pointermid;\n\t pointerend = pointermin;\n\t } else {\n\t pointermax = pointermid;\n\t }\n\t pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n\t }\n\t return pointermid;\n\t};\n\n\n\t/**\n\t * Do the two texts share a substring which is at least half the length of the\n\t * longer text?\n\t * This speedup can produce non-minimal diffs.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {Array.} Five element Array, containing the prefix of\n\t * text1, the suffix of text1, the prefix of text2, the suffix of\n\t * text2 and the common middle. Or null if there was no match.\n\t */\n\tfunction diff_halfMatch_(text1, text2) {\n\t var longtext = text1.length > text2.length ? text1 : text2;\n\t var shorttext = text1.length > text2.length ? text2 : text1;\n\t if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n\t return null; // Pointless.\n\t }\n\n\t /**\n\t * Does a substring of shorttext exist within longtext such that the substring\n\t * is at least half the length of longtext?\n\t * Closure, but does not reference any external variables.\n\t * @param {string} longtext Longer string.\n\t * @param {string} shorttext Shorter string.\n\t * @param {number} i Start index of quarter length substring within longtext.\n\t * @return {Array.} Five element Array, containing the prefix of\n\t * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n\t * of shorttext and the common middle. Or null if there was no match.\n\t * @private\n\t */\n\t function diff_halfMatchI_(longtext, shorttext, i) {\n\t // Start with a 1/4 length substring at position i as a seed.\n\t var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n\t var j = -1;\n\t var best_common = '';\n\t var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n\t while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n\t var prefixLength = diff_commonPrefix(longtext.substring(i),\n\t shorttext.substring(j));\n\t var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n\t shorttext.substring(0, j));\n\t if (best_common.length < suffixLength + prefixLength) {\n\t best_common = shorttext.substring(j - suffixLength, j) +\n\t shorttext.substring(j, j + prefixLength);\n\t best_longtext_a = longtext.substring(0, i - suffixLength);\n\t best_longtext_b = longtext.substring(i + prefixLength);\n\t best_shorttext_a = shorttext.substring(0, j - suffixLength);\n\t best_shorttext_b = shorttext.substring(j + prefixLength);\n\t }\n\t }\n\t if (best_common.length * 2 >= longtext.length) {\n\t return [best_longtext_a, best_longtext_b,\n\t best_shorttext_a, best_shorttext_b, best_common];\n\t } else {\n\t return null;\n\t }\n\t }\n\n\t // First check if the second quarter is the seed for a half-match.\n\t var hm1 = diff_halfMatchI_(longtext, shorttext,\n\t Math.ceil(longtext.length / 4));\n\t // Check again based on the third quarter.\n\t var hm2 = diff_halfMatchI_(longtext, shorttext,\n\t Math.ceil(longtext.length / 2));\n\t var hm;\n\t if (!hm1 && !hm2) {\n\t return null;\n\t } else if (!hm2) {\n\t hm = hm1;\n\t } else if (!hm1) {\n\t hm = hm2;\n\t } else {\n\t // Both matched. Select the longest.\n\t hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n\t }\n\n\t // A half-match was found, sort out the return data.\n\t var text1_a, text1_b, text2_a, text2_b;\n\t if (text1.length > text2.length) {\n\t text1_a = hm[0];\n\t text1_b = hm[1];\n\t text2_a = hm[2];\n\t text2_b = hm[3];\n\t } else {\n\t text2_a = hm[0];\n\t text2_b = hm[1];\n\t text1_a = hm[2];\n\t text1_b = hm[3];\n\t }\n\t var mid_common = hm[4];\n\t return [text1_a, text1_b, text2_a, text2_b, mid_common];\n\t};\n\n\n\t/**\n\t * Reorder and merge like edit sections. Merge equalities.\n\t * Any edit section can move as long as it doesn't cross an equality.\n\t * @param {Array} diffs Array of diff tuples.\n\t */\n\tfunction diff_cleanupMerge(diffs) {\n\t diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n\t var pointer = 0;\n\t var count_delete = 0;\n\t var count_insert = 0;\n\t var text_delete = '';\n\t var text_insert = '';\n\t var commonlength;\n\t while (pointer < diffs.length) {\n\t switch (diffs[pointer][0]) {\n\t case DIFF_INSERT:\n\t count_insert++;\n\t text_insert += diffs[pointer][1];\n\t pointer++;\n\t break;\n\t case DIFF_DELETE:\n\t count_delete++;\n\t text_delete += diffs[pointer][1];\n\t pointer++;\n\t break;\n\t case DIFF_EQUAL:\n\t // Upon reaching an equality, check for prior redundancies.\n\t if (count_delete + count_insert > 1) {\n\t if (count_delete !== 0 && count_insert !== 0) {\n\t // Factor out any common prefixies.\n\t commonlength = diff_commonPrefix(text_insert, text_delete);\n\t if (commonlength !== 0) {\n\t if ((pointer - count_delete - count_insert) > 0 &&\n\t diffs[pointer - count_delete - count_insert - 1][0] ==\n\t DIFF_EQUAL) {\n\t diffs[pointer - count_delete - count_insert - 1][1] +=\n\t text_insert.substring(0, commonlength);\n\t } else {\n\t diffs.splice(0, 0, [DIFF_EQUAL,\n\t text_insert.substring(0, commonlength)]);\n\t pointer++;\n\t }\n\t text_insert = text_insert.substring(commonlength);\n\t text_delete = text_delete.substring(commonlength);\n\t }\n\t // Factor out any common suffixies.\n\t commonlength = diff_commonSuffix(text_insert, text_delete);\n\t if (commonlength !== 0) {\n\t diffs[pointer][1] = text_insert.substring(text_insert.length -\n\t commonlength) + diffs[pointer][1];\n\t text_insert = text_insert.substring(0, text_insert.length -\n\t commonlength);\n\t text_delete = text_delete.substring(0, text_delete.length -\n\t commonlength);\n\t }\n\t }\n\t // Delete the offending records and add the merged ones.\n\t if (count_delete === 0) {\n\t diffs.splice(pointer - count_insert,\n\t count_delete + count_insert, [DIFF_INSERT, text_insert]);\n\t } else if (count_insert === 0) {\n\t diffs.splice(pointer - count_delete,\n\t count_delete + count_insert, [DIFF_DELETE, text_delete]);\n\t } else {\n\t diffs.splice(pointer - count_delete - count_insert,\n\t count_delete + count_insert, [DIFF_DELETE, text_delete],\n\t [DIFF_INSERT, text_insert]);\n\t }\n\t pointer = pointer - count_delete - count_insert +\n\t (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n\t } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n\t // Merge this equality with the previous one.\n\t diffs[pointer - 1][1] += diffs[pointer][1];\n\t diffs.splice(pointer, 1);\n\t } else {\n\t pointer++;\n\t }\n\t count_insert = 0;\n\t count_delete = 0;\n\t text_delete = '';\n\t text_insert = '';\n\t break;\n\t }\n\t }\n\t if (diffs[diffs.length - 1][1] === '') {\n\t diffs.pop(); // Remove the dummy entry at the end.\n\t }\n\n\t // Second pass: look for single edits surrounded on both sides by equalities\n\t // which can be shifted sideways to eliminate an equality.\n\t // e.g: ABAC -> ABAC\n\t var changes = false;\n\t pointer = 1;\n\t // Intentionally ignore the first and last element (don't need checking).\n\t while (pointer < diffs.length - 1) {\n\t if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n\t diffs[pointer + 1][0] == DIFF_EQUAL) {\n\t // This is a single edit surrounded by equalities.\n\t if (diffs[pointer][1].substring(diffs[pointer][1].length -\n\t diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n\t // Shift the edit over the previous equality.\n\t diffs[pointer][1] = diffs[pointer - 1][1] +\n\t diffs[pointer][1].substring(0, diffs[pointer][1].length -\n\t diffs[pointer - 1][1].length);\n\t diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n\t diffs.splice(pointer - 1, 1);\n\t changes = true;\n\t } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n\t diffs[pointer + 1][1]) {\n\t // Shift the edit over the next equality.\n\t diffs[pointer - 1][1] += diffs[pointer + 1][1];\n\t diffs[pointer][1] =\n\t diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n\t diffs[pointer + 1][1];\n\t diffs.splice(pointer + 1, 1);\n\t changes = true;\n\t }\n\t }\n\t pointer++;\n\t }\n\t // If shifts were made, the diff needs reordering and another shift sweep.\n\t if (changes) {\n\t diff_cleanupMerge(diffs);\n\t }\n\t};\n\n\n\tvar diff = diff_main;\n\tdiff.INSERT = DIFF_INSERT;\n\tdiff.DELETE = DIFF_DELETE;\n\tdiff.EQUAL = DIFF_EQUAL;\n\n\tmodule.exports = diff;\n\n\t/*\n\t * Modify a diff such that the cursor position points to the start of a change:\n\t * E.g.\n\t * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n\t * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n\t * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n\t * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n\t *\n\t * @param {Array} diffs Array of diff tuples\n\t * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n\t * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n\t */\n\tfunction cursor_normalize_diff (diffs, cursor_pos) {\n\t if (cursor_pos === 0) {\n\t return [DIFF_EQUAL, diffs];\n\t }\n\t for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n\t var d = diffs[i];\n\t if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n\t var next_pos = current_pos + d[1].length;\n\t if (cursor_pos === next_pos) {\n\t return [i + 1, diffs];\n\t } else if (cursor_pos < next_pos) {\n\t // copy to prevent side effects\n\t diffs = diffs.slice();\n\t // split d into two diff changes\n\t var split_pos = cursor_pos - current_pos;\n\t var d_left = [d[0], d[1].slice(0, split_pos)];\n\t var d_right = [d[0], d[1].slice(split_pos)];\n\t diffs.splice(i, 1, d_left, d_right);\n\t return [i + 1, diffs];\n\t } else {\n\t current_pos = next_pos;\n\t }\n\t }\n\t }\n\t throw new Error('cursor_pos is out of bounds!')\n\t}\n\n\t/*\n\t * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n\t *\n\t * Case 1)\n\t * Check if a naive shift is possible:\n\t * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n\t * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n\t * Case 2)\n\t * Check if the following shifts are possible:\n\t * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n\t * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n\t * ^ ^\n\t * d d_next\n\t *\n\t * @param {Array} diffs Array of diff tuples\n\t * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n\t * @return {Array} Array of diff tuples\n\t */\n\tfunction fix_cursor (diffs, cursor_pos) {\n\t var norm = cursor_normalize_diff(diffs, cursor_pos);\n\t var ndiffs = norm[1];\n\t var cursor_pointer = norm[0];\n\t var d = ndiffs[cursor_pointer];\n\t var d_next = ndiffs[cursor_pointer + 1];\n\n\t if (d == null) {\n\t // Text was deleted from end of original string,\n\t // cursor is now out of bounds in new string\n\t return diffs;\n\t } else if (d[0] !== DIFF_EQUAL) {\n\t // A modification happened at the cursor location.\n\t // This is the expected outcome, so we can return the original diff.\n\t return diffs;\n\t } else {\n\t if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n\t // Case 1)\n\t // It is possible to perform a naive shift\n\t ndiffs.splice(cursor_pointer, 2, d_next, d)\n\t return merge_tuples(ndiffs, cursor_pointer, 2)\n\t } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n\t // Case 2)\n\t // d[1] is a prefix of d_next[1]\n\t // We can assume that d_next[0] !== 0, since d[0] === 0\n\t // Shift edit locations..\n\t ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n\t var suffix = d_next[1].slice(d[1].length);\n\t if (suffix.length > 0) {\n\t ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n\t }\n\t return merge_tuples(ndiffs, cursor_pointer, 3)\n\t } else {\n\t // Not possible to perform any modification\n\t return diffs;\n\t }\n\t }\n\n\t}\n\n\t/*\n\t * Try to merge tuples with their neigbors in a given range.\n\t * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n\t *\n\t * @param {Array} diffs Array of diff tuples.\n\t * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n\t * @param {Int} length Number of consecutive elements to check.\n\t * @return {Array} Array of merged diff tuples.\n\t */\n\tfunction merge_tuples (diffs, start, length) {\n\t // Check from (start-1) to (start+length).\n\t for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n\t if (i + 1 < diffs.length) {\n\t var left_d = diffs[i];\n\t var right_d = diffs[i+1];\n\t if (left_d[0] === right_d[1]) {\n\t diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n\t }\n\t }\n\t }\n\t return diffs;\n\t}\n\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar pSlice = Array.prototype.slice;\n\tvar objectKeys = __webpack_require__(23);\n\tvar isArguments = __webpack_require__(24);\n\n\tvar deepEqual = module.exports = function (actual, expected, opts) {\n\t if (!opts) opts = {};\n\t // 7.1. All identical values are equivalent, as determined by ===.\n\t if (actual === expected) {\n\t return true;\n\n\t } else if (actual instanceof Date && expected instanceof Date) {\n\t return actual.getTime() === expected.getTime();\n\n\t // 7.3. Other pairs that do not both pass typeof value == 'object',\n\t // equivalence is determined by ==.\n\t } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n\t return opts.strict ? actual === expected : actual == expected;\n\n\t // 7.4. For all other Object pairs, including Array objects, equivalence is\n\t // determined by having the same number of owned properties (as verified\n\t // with Object.prototype.hasOwnProperty.call), the same set of keys\n\t // (although not necessarily the same order), equivalent values for every\n\t // corresponding key, and an identical 'prototype' property. Note: this\n\t // accounts for both named and indexed properties on Arrays.\n\t } else {\n\t return objEquiv(actual, expected, opts);\n\t }\n\t}\n\n\tfunction isUndefinedOrNull(value) {\n\t return value === null || value === undefined;\n\t}\n\n\tfunction isBuffer (x) {\n\t if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n\t if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n\t return false;\n\t }\n\t if (x.length > 0 && typeof x[0] !== 'number') return false;\n\t return true;\n\t}\n\n\tfunction objEquiv(a, b, opts) {\n\t var i, key;\n\t if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n\t return false;\n\t // an identical 'prototype' property.\n\t if (a.prototype !== b.prototype) return false;\n\t //~~~I've managed to break Object.keys through screwy arguments passing.\n\t // Converting to array solves the problem.\n\t if (isArguments(a)) {\n\t if (!isArguments(b)) {\n\t return false;\n\t }\n\t a = pSlice.call(a);\n\t b = pSlice.call(b);\n\t return deepEqual(a, b, opts);\n\t }\n\t if (isBuffer(a)) {\n\t if (!isBuffer(b)) {\n\t return false;\n\t }\n\t if (a.length !== b.length) return false;\n\t for (i = 0; i < a.length; i++) {\n\t if (a[i] !== b[i]) return false;\n\t }\n\t return true;\n\t }\n\t try {\n\t var ka = objectKeys(a),\n\t kb = objectKeys(b);\n\t } catch (e) {//happens when one is a string literal and the other isn't\n\t return false;\n\t }\n\t // having the same number of owned properties (keys incorporates\n\t // hasOwnProperty)\n\t if (ka.length != kb.length)\n\t return false;\n\t //the same set of keys (although not necessarily the same order),\n\t ka.sort();\n\t kb.sort();\n\t //~~~cheap key test\n\t for (i = ka.length - 1; i >= 0; i--) {\n\t if (ka[i] != kb[i])\n\t return false;\n\t }\n\t //equivalent values for every corresponding key, and\n\t //~~~possibly expensive deep test\n\t for (i = ka.length - 1; i >= 0; i--) {\n\t key = ka[i];\n\t if (!deepEqual(a[key], b[key], opts)) return false;\n\t }\n\t return typeof a === typeof b;\n\t}\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\texports = module.exports = typeof Object.keys === 'function'\n\t ? Object.keys : shim;\n\n\texports.shim = shim;\n\tfunction shim (obj) {\n\t var keys = [];\n\t for (var key in obj) keys.push(key);\n\t return keys;\n\t}\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports) {\n\n\tvar supportsArgumentsClass = (function(){\n\t return Object.prototype.toString.call(arguments)\n\t})() == '[object Arguments]';\n\n\texports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\n\texports.supported = supported;\n\tfunction supported(object) {\n\t return Object.prototype.toString.call(object) == '[object Arguments]';\n\t};\n\n\texports.unsupported = unsupported;\n\tfunction unsupported(object){\n\t return object &&\n\t typeof object == 'object' &&\n\t typeof object.length == 'number' &&\n\t Object.prototype.hasOwnProperty.call(object, 'callee') &&\n\t !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n\t false;\n\t};\n\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tvar hasOwn = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\n\tvar isArray = function isArray(arr) {\n\t\tif (typeof Array.isArray === 'function') {\n\t\t\treturn Array.isArray(arr);\n\t\t}\n\n\t\treturn toStr.call(arr) === '[object Array]';\n\t};\n\n\tvar isPlainObject = function isPlainObject(obj) {\n\t\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\t\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t\t// Not own constructor property must be Object\n\t\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tvar key;\n\t\tfor (key in obj) {/**/}\n\n\t\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n\t};\n\n\tmodule.exports = function extend() {\n\t\tvar options, name, src, copy, copyIsArray, clone,\n\t\t\ttarget = arguments[0],\n\t\t\ti = 1,\n\t\t\tlength = arguments.length,\n\t\t\tdeep = false;\n\n\t\t// Handle a deep copy situation\n\t\tif (typeof target === 'boolean') {\n\t\t\tdeep = target;\n\t\t\ttarget = arguments[1] || {};\n\t\t\t// skip the boolean and the target\n\t\t\ti = 2;\n\t\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\t\ttarget = {};\n\t\t}\n\n\t\tfor (; i < length; ++i) {\n\t\t\toptions = arguments[i];\n\t\t\t// Only deal with non-null/undefined values\n\t\t\tif (options != null) {\n\t\t\t\t// Extend the base object\n\t\t\t\tfor (name in options) {\n\t\t\t\t\tsrc = target[name];\n\t\t\t\t\tcopy = options[name];\n\n\t\t\t\t\t// Prevent never-ending loop\n\t\t\t\t\tif (target !== copy) {\n\t\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the modified object\n\t\treturn target;\n\t};\n\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar equal = __webpack_require__(22);\n\tvar extend = __webpack_require__(25);\n\n\n\tvar lib = {\n\t attributes: {\n\t compose: function (a, b, keepNull) {\n\t if (typeof a !== 'object') a = {};\n\t if (typeof b !== 'object') b = {};\n\t var attributes = extend(true, {}, b);\n\t if (!keepNull) {\n\t attributes = Object.keys(attributes).reduce(function (copy, key) {\n\t if (attributes[key] != null) {\n\t copy[key] = attributes[key];\n\t }\n\t return copy;\n\t }, {});\n\t }\n\t for (var key in a) {\n\t if (a[key] !== undefined && b[key] === undefined) {\n\t attributes[key] = a[key];\n\t }\n\t }\n\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t },\n\n\t diff: function(a, b) {\n\t if (typeof a !== 'object') a = {};\n\t if (typeof b !== 'object') b = {};\n\t var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n\t if (!equal(a[key], b[key])) {\n\t attributes[key] = b[key] === undefined ? null : b[key];\n\t }\n\t return attributes;\n\t }, {});\n\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t },\n\n\t transform: function (a, b, priority) {\n\t if (typeof a !== 'object') return b;\n\t if (typeof b !== 'object') return undefined;\n\t if (!priority) return b; // b simply overwrites us without priority\n\t var attributes = Object.keys(b).reduce(function (attributes, key) {\n\t if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n\t return attributes;\n\t }, {});\n\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t }\n\t },\n\n\t iterator: function (ops) {\n\t return new Iterator(ops);\n\t },\n\n\t length: function (op) {\n\t if (typeof op['delete'] === 'number') {\n\t return op['delete'];\n\t } else if (typeof op.retain === 'number') {\n\t return op.retain;\n\t } else {\n\t return typeof op.insert === 'string' ? op.insert.length : 1;\n\t }\n\t }\n\t};\n\n\n\tfunction Iterator(ops) {\n\t this.ops = ops;\n\t this.index = 0;\n\t this.offset = 0;\n\t};\n\n\tIterator.prototype.hasNext = function () {\n\t return this.peekLength() < Infinity;\n\t};\n\n\tIterator.prototype.next = function (length) {\n\t if (!length) length = Infinity;\n\t var nextOp = this.ops[this.index];\n\t if (nextOp) {\n\t var offset = this.offset;\n\t var opLength = lib.length(nextOp)\n\t if (length >= opLength - offset) {\n\t length = opLength - offset;\n\t this.index += 1;\n\t this.offset = 0;\n\t } else {\n\t this.offset += length;\n\t }\n\t if (typeof nextOp['delete'] === 'number') {\n\t return { 'delete': length };\n\t } else {\n\t var retOp = {};\n\t if (nextOp.attributes) {\n\t retOp.attributes = nextOp.attributes;\n\t }\n\t if (typeof nextOp.retain === 'number') {\n\t retOp.retain = length;\n\t } else if (typeof nextOp.insert === 'string') {\n\t retOp.insert = nextOp.insert.substr(offset, length);\n\t } else {\n\t // offset should === 0, length should === 1\n\t retOp.insert = nextOp.insert;\n\t }\n\t return retOp;\n\t }\n\t } else {\n\t return { retain: Infinity };\n\t }\n\t};\n\n\tIterator.prototype.peek = function () {\n\t return this.ops[this.index];\n\t};\n\n\tIterator.prototype.peekLength = function () {\n\t if (this.ops[this.index]) {\n\t // Should never return 0 if our index is being managed correctly\n\t return lib.length(this.ops[this.index]) - this.offset;\n\t } else {\n\t return Infinity;\n\t }\n\t};\n\n\tIterator.prototype.peekType = function () {\n\t if (this.ops[this.index]) {\n\t if (typeof this.ops[this.index]['delete'] === 'number') {\n\t return 'delete';\n\t } else if (typeof this.ops[this.index].retain === 'number') {\n\t return 'retain';\n\t } else {\n\t return 'insert';\n\t }\n\t }\n\t return 'retain';\n\t};\n\n\n\tmodule.exports = lib;\n\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _op = __webpack_require__(26);\n\n\tvar _op2 = _interopRequireDefault(_op);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _code = __webpack_require__(28);\n\n\tvar _code2 = _interopRequireDefault(_code);\n\n\tvar _cursor = __webpack_require__(34);\n\n\tvar _cursor2 = _interopRequireDefault(_cursor);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tvar _clone = __webpack_require__(38);\n\n\tvar _clone2 = _interopRequireDefault(_clone);\n\n\tvar _deepEqual = __webpack_require__(22);\n\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _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; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Editor = function () {\n\t function Editor(scroll) {\n\t _classCallCheck(this, Editor);\n\n\t this.scroll = scroll;\n\t this.delta = this.getDelta();\n\t }\n\n\t _createClass(Editor, [{\n\t key: 'applyDelta',\n\t value: function applyDelta(delta) {\n\t var _this = this;\n\n\t var consumeNextNewline = false;\n\t this.scroll.update();\n\t var scrollLength = this.scroll.length();\n\t this.scroll.batch = true;\n\t delta = normalizeDelta(delta);\n\t delta.reduce(function (index, op) {\n\t var length = op.retain || op.delete || op.insert.length || 1;\n\t var attributes = op.attributes || {};\n\t if (op.insert != null) {\n\t if (typeof op.insert === 'string') {\n\t var text = op.insert;\n\t if (text.endsWith('\\n') && consumeNextNewline) {\n\t consumeNextNewline = false;\n\t text = text.slice(0, -1);\n\t }\n\t if (index >= scrollLength && !text.endsWith('\\n')) {\n\t consumeNextNewline = true;\n\t }\n\t _this.scroll.insertAt(index, text);\n\n\t var _scroll$line = _this.scroll.line(index),\n\t _scroll$line2 = _slicedToArray(_scroll$line, 2),\n\t line = _scroll$line2[0],\n\t offset = _scroll$line2[1];\n\n\t var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n\t if (line instanceof _block2.default) {\n\t var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n\t _line$descendant2 = _slicedToArray(_line$descendant, 1),\n\t leaf = _line$descendant2[0];\n\n\t formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n\t }\n\t attributes = _op2.default.attributes.diff(formats, attributes) || {};\n\t } else if (_typeof(op.insert) === 'object') {\n\t var key = Object.keys(op.insert)[0]; // There should only be one key\n\t if (key == null) return index;\n\t _this.scroll.insertAt(index, key, op.insert[key]);\n\t }\n\t scrollLength += length;\n\t }\n\t Object.keys(attributes).forEach(function (name) {\n\t _this.scroll.formatAt(index, length, name, attributes[name]);\n\t });\n\t return index + length;\n\t }, 0);\n\t delta.reduce(function (index, op) {\n\t if (typeof op.delete === 'number') {\n\t _this.scroll.deleteAt(index, op.delete);\n\t return index;\n\t }\n\t return index + (op.retain || op.insert.length || 1);\n\t }, 0);\n\t this.scroll.batch = false;\n\t this.scroll.optimize();\n\t return this.update(delta);\n\t }\n\t }, {\n\t key: 'deleteText',\n\t value: function deleteText(index, length) {\n\t this.scroll.deleteAt(index, length);\n\t return this.update(new _quillDelta2.default().retain(index).delete(length));\n\t }\n\t }, {\n\t key: 'formatLine',\n\t value: function formatLine(index, length) {\n\t var _this2 = this;\n\n\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\t this.scroll.update();\n\t Object.keys(formats).forEach(function (format) {\n\t if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n\t var lines = _this2.scroll.lines(index, Math.max(length, 1));\n\t var lengthRemaining = length;\n\t lines.forEach(function (line) {\n\t var lineLength = line.length();\n\t if (!(line instanceof _code2.default)) {\n\t line.format(format, formats[format]);\n\t } else {\n\t var codeIndex = index - line.offset(_this2.scroll);\n\t var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n\t line.formatAt(codeIndex, codeLength, format, formats[format]);\n\t }\n\t lengthRemaining -= lineLength;\n\t });\n\t });\n\t this.scroll.optimize();\n\t return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n\t }\n\t }, {\n\t key: 'formatText',\n\t value: function formatText(index, length) {\n\t var _this3 = this;\n\n\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\t Object.keys(formats).forEach(function (format) {\n\t _this3.scroll.formatAt(index, length, format, formats[format]);\n\t });\n\t return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n\t }\n\t }, {\n\t key: 'getContents',\n\t value: function getContents(index, length) {\n\t return this.delta.slice(index, index + length);\n\t }\n\t }, {\n\t key: 'getDelta',\n\t value: function getDelta() {\n\t return this.scroll.lines().reduce(function (delta, line) {\n\t return delta.concat(line.delta());\n\t }, new _quillDelta2.default());\n\t }\n\t }, {\n\t key: 'getFormat',\n\t value: function getFormat(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t var lines = [],\n\t leaves = [];\n\t if (length === 0) {\n\t this.scroll.path(index).forEach(function (path) {\n\t var _path = _slicedToArray(path, 1),\n\t blot = _path[0];\n\n\t if (blot instanceof _block2.default) {\n\t lines.push(blot);\n\t } else if (blot instanceof _parchment2.default.Leaf) {\n\t leaves.push(blot);\n\t }\n\t });\n\t } else {\n\t lines = this.scroll.lines(index, length);\n\t leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n\t }\n\t var formatsArr = [lines, leaves].map(function (blots) {\n\t if (blots.length === 0) return {};\n\t var formats = (0, _block.bubbleFormats)(blots.shift());\n\t while (Object.keys(formats).length > 0) {\n\t var blot = blots.shift();\n\t if (blot == null) return formats;\n\t formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n\t }\n\t return formats;\n\t });\n\t return _extend2.default.apply(_extend2.default, formatsArr);\n\t }\n\t }, {\n\t key: 'getText',\n\t value: function getText(index, length) {\n\t return this.getContents(index, length).filter(function (op) {\n\t return typeof op.insert === 'string';\n\t }).map(function (op) {\n\t return op.insert;\n\t }).join('');\n\t }\n\t }, {\n\t key: 'insertEmbed',\n\t value: function insertEmbed(index, embed, value) {\n\t this.scroll.insertAt(index, embed, value);\n\t return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n\t }\n\t }, {\n\t key: 'insertText',\n\t value: function insertText(index, text) {\n\t var _this4 = this;\n\n\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\t text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\t this.scroll.insertAt(index, text);\n\t Object.keys(formats).forEach(function (format) {\n\t _this4.scroll.formatAt(index, text.length, format, formats[format]);\n\t });\n\t return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n\t }\n\t }, {\n\t key: 'isBlank',\n\t value: function isBlank() {\n\t if (this.scroll.children.length == 0) return true;\n\t if (this.scroll.children.length > 1) return false;\n\t var child = this.scroll.children.head;\n\t return child.length() <= 1 && Object.keys(child.formats()).length == 0;\n\t }\n\t }, {\n\t key: 'removeFormat',\n\t value: function removeFormat(index, length) {\n\t var text = this.getText(index, length);\n\n\t var _scroll$line3 = this.scroll.line(index + length),\n\t _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n\t line = _scroll$line4[0],\n\t offset = _scroll$line4[1];\n\n\t var suffixLength = 0,\n\t suffix = new _quillDelta2.default();\n\t if (line != null) {\n\t if (!(line instanceof _code2.default)) {\n\t suffixLength = line.length() - offset;\n\t } else {\n\t suffixLength = line.newlineIndex(offset) - offset + 1;\n\t }\n\t suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n\t }\n\t var contents = this.getContents(index, length + suffixLength);\n\t var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n\t var delta = new _quillDelta2.default().retain(index).concat(diff);\n\t return this.applyDelta(delta);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(change) {\n\t var _this5 = this;\n\n\t var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\t var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n\t var oldDelta = this.delta;\n\t if (mutations.length === 1 && mutations[0].type === 'characterData' && _parchment2.default.find(mutations[0].target)) {\n\t (function () {\n\t // Optimization for character changes\n\t var textBlot = _parchment2.default.find(mutations[0].target);\n\t var formats = (0, _block.bubbleFormats)(textBlot);\n\t var index = textBlot.offset(_this5.scroll);\n\t var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n\t var oldText = new _quillDelta2.default().insert(oldValue);\n\t var newText = new _quillDelta2.default().insert(textBlot.value());\n\t var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n\t change = diffDelta.reduce(function (delta, op) {\n\t if (op.insert) {\n\t return delta.insert(op.insert, formats);\n\t } else {\n\t return delta.push(op);\n\t }\n\t }, new _quillDelta2.default());\n\t _this5.delta = oldDelta.compose(change);\n\t })();\n\t } else {\n\t this.delta = this.getDelta();\n\t if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n\t change = oldDelta.diff(this.delta, cursorIndex);\n\t }\n\t }\n\t return change;\n\t }\n\t }]);\n\n\t return Editor;\n\t}();\n\n\tfunction combineFormats(formats, combined) {\n\t return Object.keys(combined).reduce(function (merged, name) {\n\t if (formats[name] == null) return merged;\n\t if (combined[name] === formats[name]) {\n\t merged[name] = combined[name];\n\t } else if (Array.isArray(combined[name])) {\n\t if (combined[name].indexOf(formats[name]) < 0) {\n\t merged[name] = combined[name].concat([formats[name]]);\n\t }\n\t } else {\n\t merged[name] = [combined[name], formats[name]];\n\t }\n\t return merged;\n\t }, {});\n\t}\n\n\tfunction normalizeDelta(delta) {\n\t return delta.reduce(function (delta, op) {\n\t if (op.insert === 1) {\n\t var attributes = (0, _clone2.default)(op.attributes);\n\t delete attributes['image'];\n\t return delta.insert({ image: op.attributes.image }, attributes);\n\t }\n\t if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n\t op = (0, _clone2.default)(op);\n\t if (op.attributes.list) {\n\t op.attributes.list = 'ordered';\n\t } else {\n\t op.attributes.list = 'bullet';\n\t delete op.attributes.bullet;\n\t }\n\t }\n\t if (typeof op.insert === 'string') {\n\t var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\t return delta.insert(text, op.attributes);\n\t }\n\t return delta.push(op);\n\t }, new _quillDelta2.default());\n\t}\n\n\texports.default = Editor;\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.Code = undefined;\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tvar _text = __webpack_require__(33);\n\n\tvar _text2 = _interopRequireDefault(_text);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Code = function (_Inline) {\n\t _inherits(Code, _Inline);\n\n\t function Code() {\n\t _classCallCheck(this, Code);\n\n\t return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n\t }\n\n\t return Code;\n\t}(_inline2.default);\n\n\tCode.blotName = 'code';\n\tCode.tagName = 'CODE';\n\n\tvar CodeBlock = function (_Block) {\n\t _inherits(CodeBlock, _Block);\n\n\t function CodeBlock() {\n\t _classCallCheck(this, CodeBlock);\n\n\t return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n\t }\n\n\t _createClass(CodeBlock, [{\n\t key: 'delta',\n\t value: function delta() {\n\t var _this3 = this;\n\n\t var text = this.domNode.textContent;\n\t if (text.endsWith('\\n')) {\n\t // Should always be true\n\t text = text.slice(0, -1);\n\t }\n\t return text.split('\\n').reduce(function (delta, frag) {\n\t return delta.insert(frag).insert('\\n', _this3.formats());\n\t }, new _quillDelta2.default());\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (name === this.statics.blotName && value) return;\n\n\t var _descendant = this.descendant(_text2.default, this.length() - 1),\n\t _descendant2 = _slicedToArray(_descendant, 1),\n\t text = _descendant2[0];\n\n\t if (text != null) {\n\t text.deleteAt(text.length() - 1, 1);\n\t }\n\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t if (length === 0) return;\n\t if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n\t return;\n\t }\n\t var nextNewline = this.newlineIndex(index);\n\t if (nextNewline < 0 || nextNewline >= index + length) return;\n\t var prevNewline = this.newlineIndex(index, true) + 1;\n\t var isolateLength = nextNewline - prevNewline + 1;\n\t var blot = this.isolate(prevNewline, isolateLength);\n\t var next = blot.next;\n\t blot.format(name, value);\n\t if (next instanceof CodeBlock) {\n\t next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n\t }\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (def != null) return;\n\n\t var _descendant3 = this.descendant(_text2.default, index),\n\t _descendant4 = _slicedToArray(_descendant3, 2),\n\t text = _descendant4[0],\n\t offset = _descendant4[1];\n\n\t text.insertAt(offset, value);\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t var length = this.domNode.textContent.length;\n\t if (!this.domNode.textContent.endsWith('\\n')) {\n\t return length + 1;\n\t }\n\t return length;\n\t }\n\t }, {\n\t key: 'newlineIndex',\n\t value: function newlineIndex(searchIndex) {\n\t var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (!reverse) {\n\t var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n\t return offset > -1 ? searchIndex + offset : -1;\n\t } else {\n\t return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n\t }\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t if (!this.domNode.textContent.endsWith('\\n')) {\n\t this.appendChild(_parchment2.default.create('text', '\\n'));\n\t }\n\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this);\n\t var next = this.next;\n\t if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n\t next.optimize();\n\t next.moveChildren(this);\n\t next.remove();\n\t }\n\t }\n\t }, {\n\t key: 'replace',\n\t value: function replace(target) {\n\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n\t [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n\t var blot = _parchment2.default.find(node);\n\t if (blot == null) {\n\t node.parentNode.removeChild(node);\n\t } else if (blot instanceof _parchment2.default.Embed) {\n\t blot.remove();\n\t } else {\n\t blot.unwrap();\n\t }\n\t });\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n\t domNode.setAttribute('spellcheck', false);\n\t return domNode;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats() {\n\t return true;\n\t }\n\t }]);\n\n\t return CodeBlock;\n\t}(_block2.default);\n\n\tCodeBlock.blotName = 'code-block';\n\tCodeBlock.tagName = 'PRE';\n\tCodeBlock.TAB = ' ';\n\n\texports.Code = Code;\n\texports.default = CodeBlock;\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _break = __webpack_require__(30);\n\n\tvar _break2 = _interopRequireDefault(_break);\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tvar _text = __webpack_require__(33);\n\n\tvar _text2 = _interopRequireDefault(_text);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar NEWLINE_LENGTH = 1;\n\n\tvar BlockEmbed = function (_Embed) {\n\t _inherits(BlockEmbed, _Embed);\n\n\t function BlockEmbed() {\n\t _classCallCheck(this, BlockEmbed);\n\n\t return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n\t }\n\n\t _createClass(BlockEmbed, [{\n\t key: 'attach',\n\t value: function attach() {\n\t _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n\t this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n\t }\n\t }, {\n\t key: 'delta',\n\t value: function delta() {\n\t return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n\t if (attribute != null) {\n\t this.attributes.attribute(attribute, value);\n\t }\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t this.format(name, value);\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (typeof value === 'string' && value.endsWith('\\n')) {\n\t var block = _parchment2.default.create(Block.blotName);\n\t this.parent.insertBefore(block, index === 0 ? this : this.next);\n\t block.insertAt(0, value.slice(0, -1));\n\t } else {\n\t _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n\t }\n\t }\n\t }]);\n\n\t return BlockEmbed;\n\t}(_embed2.default);\n\n\tBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n\t// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\n\tvar Block = function (_Parchment$Block) {\n\t _inherits(Block, _Parchment$Block);\n\n\t function Block(domNode) {\n\t _classCallCheck(this, Block);\n\n\t var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n\t _this2.cache = {};\n\t return _this2;\n\t }\n\n\t _createClass(Block, [{\n\t key: 'delta',\n\t value: function delta() {\n\t if (this.cache.delta == null) {\n\t this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n\t if (leaf.length() === 0) {\n\t return delta;\n\t } else {\n\t return delta.insert(leaf.value(), bubbleFormats(leaf));\n\t }\n\t }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n\t }\n\t return this.cache.delta;\n\t }\n\t }, {\n\t key: 'deleteAt',\n\t value: function deleteAt(index, length) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t if (length <= 0) return;\n\t if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t if (index + length === this.length()) {\n\t this.format(name, value);\n\t }\n\t } else {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n\t }\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n\t if (value.length === 0) return;\n\t var lines = value.split('\\n');\n\t var text = lines.shift();\n\t if (text.length > 0) {\n\t if (index < this.length() - 1 || this.children.tail == null) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n\t } else {\n\t this.children.tail.insertAt(this.children.tail.length(), text);\n\t }\n\t this.cache = {};\n\t }\n\t var block = this;\n\t lines.reduce(function (index, line) {\n\t block = block.split(index, true);\n\t block.insertAt(0, line);\n\t return line.length;\n\t }, index + text.length);\n\t }\n\t }, {\n\t key: 'insertBefore',\n\t value: function insertBefore(blot, ref) {\n\t var head = this.children.head;\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n\t if (head instanceof _break2.default) {\n\t head.remove();\n\t }\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t if (this.cache.length == null) {\n\t this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n\t }\n\t return this.cache.length;\n\t }\n\t }, {\n\t key: 'moveChildren',\n\t value: function moveChildren(target, ref) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'path',\n\t value: function path(index) {\n\t return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n\t }\n\t }, {\n\t key: 'removeChild',\n\t value: function removeChild(child) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'split',\n\t value: function split(index) {\n\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n\t var clone = this.clone();\n\t if (index === 0) {\n\t this.parent.insertBefore(clone, this);\n\t return this;\n\t } else {\n\t this.parent.insertBefore(clone, this.next);\n\t return clone;\n\t }\n\t } else {\n\t var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n\t this.cache = {};\n\t return next;\n\t }\n\t }\n\t }]);\n\n\t return Block;\n\t}(_parchment2.default.Block);\n\n\tBlock.blotName = 'block';\n\tBlock.tagName = 'P';\n\tBlock.defaultChild = 'break';\n\tBlock.allowedChildren = [_inline2.default, _embed2.default, _text2.default];\n\n\tfunction bubbleFormats(blot) {\n\t var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t if (blot == null) return formats;\n\t if (typeof blot.formats === 'function') {\n\t formats = (0, _extend2.default)(formats, blot.formats());\n\t }\n\t if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n\t return formats;\n\t }\n\t return bubbleFormats(blot.parent, formats);\n\t}\n\n\texports.bubbleFormats = bubbleFormats;\n\texports.BlockEmbed = BlockEmbed;\n\texports.default = Block;\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Break = function (_Embed) {\n\t _inherits(Break, _Embed);\n\n\t function Break() {\n\t _classCallCheck(this, Break);\n\n\t return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n\t }\n\n\t _createClass(Break, [{\n\t key: 'insertInto',\n\t value: function insertInto(parent, ref) {\n\t if (parent.children.length === 0) {\n\t _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n\t } else {\n\t this.remove();\n\t }\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t return 0;\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value() {\n\t return '';\n\t }\n\t }], [{\n\t key: 'value',\n\t value: function value() {\n\t return undefined;\n\t }\n\t }]);\n\n\t return Break;\n\t}(_embed2.default);\n\n\tBreak.blotName = 'break';\n\tBreak.tagName = 'BR';\n\n\texports.default = Break;\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Embed = function (_Parchment$Embed) {\n\t _inherits(Embed, _Parchment$Embed);\n\n\t function Embed() {\n\t _classCallCheck(this, Embed);\n\n\t return _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).apply(this, arguments));\n\t }\n\n\t return Embed;\n\t}(_parchment2.default.Embed);\n\n\texports.default = Embed;\n\n/***/ },\n/* 32 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _text = __webpack_require__(33);\n\n\tvar _text2 = _interopRequireDefault(_text);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Inline = function (_Parchment$Inline) {\n\t _inherits(Inline, _Parchment$Inline);\n\n\t function Inline() {\n\t _classCallCheck(this, Inline);\n\n\t return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n\t }\n\n\t _createClass(Inline, [{\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n\t var blot = this.isolate(index, length);\n\t if (value) {\n\t blot.wrap(name, value);\n\t }\n\t } else {\n\t _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n\t }\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this);\n\t if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n\t var parent = this.parent.isolate(this.offset(), this.length());\n\t this.moveChildren(parent);\n\t parent.wrap(this);\n\t }\n\t }\n\t }], [{\n\t key: 'compare',\n\t value: function compare(self, other) {\n\t var selfIndex = Inline.order.indexOf(self);\n\t var otherIndex = Inline.order.indexOf(other);\n\t if (selfIndex >= 0 || otherIndex >= 0) {\n\t return selfIndex - otherIndex;\n\t } else if (self === other) {\n\t return 0;\n\t } else if (self < other) {\n\t return -1;\n\t } else {\n\t return 1;\n\t }\n\t }\n\t }]);\n\n\t return Inline;\n\t}(_parchment2.default.Inline);\n\n\tInline.allowedChildren = [Inline, _embed2.default, _text2.default];\n\t// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n\tInline.order = ['cursor', 'inline', // Must be lower\n\t'code', 'underline', 'strike', 'italic', 'bold', 'script', 'link' // Must be higher\n\t];\n\n\texports.default = Inline;\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar TextBlot = function (_Parchment$Text) {\n\t _inherits(TextBlot, _Parchment$Text);\n\n\t function TextBlot() {\n\t _classCallCheck(this, TextBlot);\n\n\t return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n\t }\n\n\t return TextBlot;\n\t}(_parchment2.default.Text);\n\n\texports.default = TextBlot;\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _text = __webpack_require__(33);\n\n\tvar _text2 = _interopRequireDefault(_text);\n\n\tvar _emitter = __webpack_require__(35);\n\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Cursor = function (_Embed) {\n\t _inherits(Cursor, _Embed);\n\n\t _createClass(Cursor, null, [{\n\t key: 'value',\n\t value: function value() {\n\t return undefined;\n\t }\n\t }]);\n\n\t function Cursor(domNode, selection) {\n\t _classCallCheck(this, Cursor);\n\n\t var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n\t _this.selection = selection;\n\t _this.textNode = document.createTextNode(Cursor.CONTENTS);\n\t _this.domNode.appendChild(_this.textNode);\n\t _this._length = 0;\n\t return _this;\n\t }\n\n\t _createClass(Cursor, [{\n\t key: 'detach',\n\t value: function detach() {\n\t // super.detach() will also clear domNode.__blot\n\t if (this.parent != null) this.parent.removeChild(this);\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (this._length !== 0) {\n\t return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n\t }\n\t var target = this,\n\t index = 0;\n\t while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n\t index += target.offset(target.parent);\n\t target = target.parent;\n\t }\n\t if (target != null) {\n\t this._length = Cursor.CONTENTS.length;\n\t target.optimize();\n\t target.formatAt(index, Cursor.CONTENTS.length, name, value);\n\t this._length = 0;\n\t }\n\t }\n\t }, {\n\t key: 'index',\n\t value: function index(node, offset) {\n\t if (node === this.textNode) return 0;\n\t return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t return this._length;\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position() {\n\t return [this.textNode, this.textNode.data.length];\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove() {\n\t _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n\t this.parent = null;\n\t }\n\t }, {\n\t key: 'restore',\n\t value: function restore() {\n\t var _this2 = this;\n\n\t if (this.selection.composing) return;\n\t if (this.parent == null) return;\n\t var textNode = this.textNode;\n\t var range = this.selection.getNativeRange();\n\t var restoreText = void 0,\n\t start = void 0,\n\t end = void 0;\n\t if (range != null && range.start.node === textNode && range.end.node === textNode) {\n\t var _ref = [textNode, range.start.offset, range.end.offset];\n\t restoreText = _ref[0];\n\t start = _ref[1];\n\t end = _ref[2];\n\t }\n\t // Link format will insert text outside of anchor tag\n\t while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n\t this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n\t }\n\t if (this.textNode.data !== Cursor.CONTENTS) {\n\t var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n\t if (this.next instanceof _text2.default) {\n\t restoreText = this.next.domNode;\n\t this.next.insertAt(0, text);\n\t this.textNode.data = Cursor.CONTENTS;\n\t } else {\n\t this.textNode.data = text;\n\t this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n\t this.textNode = document.createTextNode(Cursor.CONTENTS);\n\t this.domNode.appendChild(this.textNode);\n\t }\n\t }\n\t this.remove();\n\t if (start == null) return;\n\t this.selection.emitter.once(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t var _map = [start, end].map(function (offset) {\n\t return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n\t });\n\n\t var _map2 = _slicedToArray(_map, 2);\n\n\t start = _map2[0];\n\t end = _map2[1];\n\n\t _this2.selection.setNativeRange(restoreText, start, restoreText, end);\n\t });\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(mutations) {\n\t var _this3 = this;\n\n\t mutations.forEach(function (mutation) {\n\t if (mutation.type === 'characterData' && mutation.target === _this3.textNode) {\n\t _this3.restore();\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value() {\n\t return '';\n\t }\n\t }]);\n\n\t return Cursor;\n\t}(_embed2.default);\n\n\tCursor.blotName = 'cursor';\n\tCursor.className = 'ql-cursor';\n\tCursor.tagName = 'span';\n\tCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\n\texports.default = Cursor;\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _eventemitter = __webpack_require__(36);\n\n\tvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar debug = (0, _logger2.default)('quill:events');\n\n\tvar Emitter = function (_EventEmitter) {\n\t _inherits(Emitter, _EventEmitter);\n\n\t function Emitter() {\n\t _classCallCheck(this, Emitter);\n\n\t var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n\t _this.on('error', debug.error);\n\t return _this;\n\t }\n\n\t _createClass(Emitter, [{\n\t key: 'emit',\n\t value: function emit() {\n\t debug.log.apply(debug, arguments);\n\t _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n\t }\n\t }]);\n\n\t return Emitter;\n\t}(_eventemitter2.default);\n\n\tEmitter.events = {\n\t EDITOR_CHANGE: 'editor-change',\n\t SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n\t SCROLL_OPTIMIZE: 'scroll-optimize',\n\t SCROLL_UPDATE: 'scroll-update',\n\t SELECTION_CHANGE: 'selection-change',\n\t TEXT_CHANGE: 'text-change'\n\t};\n\tEmitter.sources = {\n\t API: 'api',\n\t SILENT: 'silent',\n\t USER: 'user'\n\t};\n\n\texports.default = Emitter;\n\n/***/ },\n/* 36 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tvar has = Object.prototype.hasOwnProperty\n\t , prefix = '~';\n\n\t/**\n\t * Constructor to create a storage for our `EE` objects.\n\t * An `Events` instance is a plain object whose properties are event names.\n\t *\n\t * @constructor\n\t * @api private\n\t */\n\tfunction Events() {}\n\n\t//\n\t// We try to not inherit from `Object.prototype`. In some engines creating an\n\t// instance in this way is faster than calling `Object.create(null)` directly.\n\t// If `Object.create(null)` is not supported we prefix the event names with a\n\t// character to make sure that the built-in object properties are not\n\t// overridden or used as an attack vector.\n\t//\n\tif (Object.create) {\n\t Events.prototype = Object.create(null);\n\n\t //\n\t // This hack is needed because the `__proto__` property is still inherited in\n\t // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n\t //\n\t if (!new Events().__proto__) prefix = false;\n\t}\n\n\t/**\n\t * Representation of a single event listener.\n\t *\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} context The context to invoke the listener with.\n\t * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n\t * @constructor\n\t * @api private\n\t */\n\tfunction EE(fn, context, once) {\n\t this.fn = fn;\n\t this.context = context;\n\t this.once = once || false;\n\t}\n\n\t/**\n\t * Minimal `EventEmitter` interface that is molded against the Node.js\n\t * `EventEmitter` interface.\n\t *\n\t * @constructor\n\t * @api public\n\t */\n\tfunction EventEmitter() {\n\t this._events = new Events();\n\t this._eventsCount = 0;\n\t}\n\n\t/**\n\t * Return an array listing the events for which the emitter has registered\n\t * listeners.\n\t *\n\t * @returns {Array}\n\t * @api public\n\t */\n\tEventEmitter.prototype.eventNames = function eventNames() {\n\t var names = []\n\t , events\n\t , name;\n\n\t if (this._eventsCount === 0) return names;\n\n\t for (name in (events = this._events)) {\n\t if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n\t }\n\n\t if (Object.getOwnPropertySymbols) {\n\t return names.concat(Object.getOwnPropertySymbols(events));\n\t }\n\n\t return names;\n\t};\n\n\t/**\n\t * Return the listeners registered for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Boolean} exists Only check if there are listeners.\n\t * @returns {Array|Boolean}\n\t * @api public\n\t */\n\tEventEmitter.prototype.listeners = function listeners(event, exists) {\n\t var evt = prefix ? prefix + event : event\n\t , available = this._events[evt];\n\n\t if (exists) return !!available;\n\t if (!available) return [];\n\t if (available.fn) return [available.fn];\n\n\t for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n\t ee[i] = available[i].fn;\n\t }\n\n\t return ee;\n\t};\n\n\t/**\n\t * Calls each of the listeners registered for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @returns {Boolean} `true` if the event had listeners, else `false`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n\t var evt = prefix ? prefix + event : event;\n\n\t if (!this._events[evt]) return false;\n\n\t var listeners = this._events[evt]\n\t , len = arguments.length\n\t , args\n\t , i;\n\n\t if (listeners.fn) {\n\t if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n\t switch (len) {\n\t case 1: return listeners.fn.call(listeners.context), true;\n\t case 2: return listeners.fn.call(listeners.context, a1), true;\n\t case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n\t case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n\t case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n\t case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n\t }\n\n\t for (i = 1, args = new Array(len -1); i < len; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\n\t listeners.fn.apply(listeners.context, args);\n\t } else {\n\t var length = listeners.length\n\t , j;\n\n\t for (i = 0; i < length; i++) {\n\t if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n\t switch (len) {\n\t case 1: listeners[i].fn.call(listeners[i].context); break;\n\t case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n\t case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n\t case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n\t default:\n\t if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n\t args[j - 1] = arguments[j];\n\t }\n\n\t listeners[i].fn.apply(listeners[i].context, args);\n\t }\n\t }\n\t }\n\n\t return true;\n\t};\n\n\t/**\n\t * Add a listener for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} [context=this] The context to invoke the listener with.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.on = function on(event, fn, context) {\n\t var listener = new EE(fn, context || this)\n\t , evt = prefix ? prefix + event : event;\n\n\t if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n\t else if (!this._events[evt].fn) this._events[evt].push(listener);\n\t else this._events[evt] = [this._events[evt], listener];\n\n\t return this;\n\t};\n\n\t/**\n\t * Add a one-time listener for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} [context=this] The context to invoke the listener with.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.once = function once(event, fn, context) {\n\t var listener = new EE(fn, context || this, true)\n\t , evt = prefix ? prefix + event : event;\n\n\t if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n\t else if (!this._events[evt].fn) this._events[evt].push(listener);\n\t else this._events[evt] = [this._events[evt], listener];\n\n\t return this;\n\t};\n\n\t/**\n\t * Remove the listeners of a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn Only remove the listeners that match this function.\n\t * @param {Mixed} context Only remove the listeners that have this context.\n\t * @param {Boolean} once Only remove one-time listeners.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n\t var evt = prefix ? prefix + event : event;\n\n\t if (!this._events[evt]) return this;\n\t if (!fn) {\n\t if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t return this;\n\t }\n\n\t var listeners = this._events[evt];\n\n\t if (listeners.fn) {\n\t if (\n\t listeners.fn === fn\n\t && (!once || listeners.once)\n\t && (!context || listeners.context === context)\n\t ) {\n\t if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t }\n\t } else {\n\t for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n\t if (\n\t listeners[i].fn !== fn\n\t || (once && !listeners[i].once)\n\t || (context && listeners[i].context !== context)\n\t ) {\n\t events.push(listeners[i]);\n\t }\n\t }\n\n\t //\n\t // Reset the array, or remove it completely if we have no more listeners.\n\t //\n\t if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n\t else if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t }\n\n\t return this;\n\t};\n\n\t/**\n\t * Remove all listeners, or those of the specified event.\n\t *\n\t * @param {String|Symbol} [event] The event name.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n\t var evt;\n\n\t if (event) {\n\t evt = prefix ? prefix + event : event;\n\t if (this._events[evt]) {\n\t if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t }\n\t } else {\n\t this._events = new Events();\n\t this._eventsCount = 0;\n\t }\n\n\t return this;\n\t};\n\n\t//\n\t// Alias methods names because people roll like that.\n\t//\n\tEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\tEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n\t//\n\t// This function doesn't apply anymore.\n\t//\n\tEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n\t return this;\n\t};\n\n\t//\n\t// Expose the prefix.\n\t//\n\tEventEmitter.prefixed = prefix;\n\n\t//\n\t// Allow `EventEmitter` to be imported as module namespace.\n\t//\n\tEventEmitter.EventEmitter = EventEmitter;\n\n\t//\n\t// Expose the module.\n\t//\n\tif ('undefined' !== typeof module) {\n\t module.exports = EventEmitter;\n\t}\n\n\n/***/ },\n/* 37 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar levels = ['error', 'warn', 'log', 'info'];\n\tvar level = 'warn';\n\n\tfunction debug(method) {\n\t if (levels.indexOf(method) <= levels.indexOf(level)) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t console[method].apply(console, args); // eslint-disable-line no-console\n\t }\n\t}\n\n\tfunction namespace(ns) {\n\t return levels.reduce(function (logger, method) {\n\t logger[method] = debug.bind(console, method, ns);\n\t return logger;\n\t }, {});\n\t}\n\n\tdebug.level = namespace.level = function (newLevel) {\n\t level = newLevel;\n\t};\n\n\texports.default = namespace;\n\n/***/ },\n/* 38 */\n/***/ function(module, exports) {\n\n\tvar clone = (function() {\n\t'use strict';\n\n\tvar nativeMap;\n\ttry {\n\t nativeMap = Map;\n\t} catch(_) {\n\t // maybe a reference error because no `Map`. Give it a dummy value that no\n\t // value will ever be an instanceof.\n\t nativeMap = function() {};\n\t}\n\n\tvar nativeSet;\n\ttry {\n\t nativeSet = Set;\n\t} catch(_) {\n\t nativeSet = function() {};\n\t}\n\n\tvar nativePromise;\n\ttry {\n\t nativePromise = Promise;\n\t} catch(_) {\n\t nativePromise = function() {};\n\t}\n\n\t/**\n\t * Clones (copies) an Object using deep copying.\n\t *\n\t * This function supports circular references by default, but if you are certain\n\t * there are no circular references in your object, you can save some CPU time\n\t * by calling clone(obj, false).\n\t *\n\t * Caution: if `circular` is false and `parent` contains circular references,\n\t * your program may enter an infinite loop and crash.\n\t *\n\t * @param `parent` - the object to be cloned\n\t * @param `circular` - set to true if the object to be cloned may contain\n\t * circular references. (optional - true by default)\n\t * @param `depth` - set to a number if the object is only to be cloned to\n\t * a particular depth. (optional - defaults to Infinity)\n\t * @param `prototype` - sets the prototype to be used when cloning an object.\n\t * (optional - defaults to parent prototype).\n\t * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n\t * should be cloned as well. Non-enumerable properties on the prototype\n\t * chain will be ignored. (optional - false by default)\n\t*/\n\tfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n\t if (typeof circular === 'object') {\n\t depth = circular.depth;\n\t prototype = circular.prototype;\n\t includeNonEnumerable = circular.includeNonEnumerable;\n\t circular = circular.circular;\n\t }\n\t // maintain two arrays for circular references, where corresponding parents\n\t // and children have the same index\n\t var allParents = [];\n\t var allChildren = [];\n\n\t var useBuffer = typeof Buffer != 'undefined';\n\n\t if (typeof circular == 'undefined')\n\t circular = true;\n\n\t if (typeof depth == 'undefined')\n\t depth = Infinity;\n\n\t // recurse this function so we don't reset allParents and allChildren\n\t function _clone(parent, depth) {\n\t // cloning null always returns null\n\t if (parent === null)\n\t return null;\n\n\t if (depth === 0)\n\t return parent;\n\n\t var child;\n\t var proto;\n\t if (typeof parent != 'object') {\n\t return parent;\n\t }\n\n\t if (parent instanceof nativeMap) {\n\t child = new nativeMap();\n\t } else if (parent instanceof nativeSet) {\n\t child = new nativeSet();\n\t } else if (parent instanceof nativePromise) {\n\t child = new nativePromise(function (resolve, reject) {\n\t parent.then(function(value) {\n\t resolve(_clone(value, depth - 1));\n\t }, function(err) {\n\t reject(_clone(err, depth - 1));\n\t });\n\t });\n\t } else if (clone.__isArray(parent)) {\n\t child = [];\n\t } else if (clone.__isRegExp(parent)) {\n\t child = new RegExp(parent.source, __getRegExpFlags(parent));\n\t if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n\t } else if (clone.__isDate(parent)) {\n\t child = new Date(parent.getTime());\n\t } else if (useBuffer && Buffer.isBuffer(parent)) {\n\t child = new Buffer(parent.length);\n\t parent.copy(child);\n\t return child;\n\t } else if (parent instanceof Error) {\n\t child = Object.create(parent);\n\t } else {\n\t if (typeof prototype == 'undefined') {\n\t proto = Object.getPrototypeOf(parent);\n\t child = Object.create(proto);\n\t }\n\t else {\n\t child = Object.create(prototype);\n\t proto = prototype;\n\t }\n\t }\n\n\t if (circular) {\n\t var index = allParents.indexOf(parent);\n\n\t if (index != -1) {\n\t return allChildren[index];\n\t }\n\t allParents.push(parent);\n\t allChildren.push(child);\n\t }\n\n\t if (parent instanceof nativeMap) {\n\t var keyIterator = parent.keys();\n\t while(true) {\n\t var next = keyIterator.next();\n\t if (next.done) {\n\t break;\n\t }\n\t var keyChild = _clone(next.value, depth - 1);\n\t var valueChild = _clone(parent.get(next.value), depth - 1);\n\t child.set(keyChild, valueChild);\n\t }\n\t }\n\t if (parent instanceof nativeSet) {\n\t var iterator = parent.keys();\n\t while(true) {\n\t var next = iterator.next();\n\t if (next.done) {\n\t break;\n\t }\n\t var entryChild = _clone(next.value, depth - 1);\n\t child.add(entryChild);\n\t }\n\t }\n\n\t for (var i in parent) {\n\t var attrs;\n\t if (proto) {\n\t attrs = Object.getOwnPropertyDescriptor(proto, i);\n\t }\n\n\t if (attrs && attrs.set == null) {\n\t continue;\n\t }\n\t child[i] = _clone(parent[i], depth - 1);\n\t }\n\n\t if (Object.getOwnPropertySymbols) {\n\t var symbols = Object.getOwnPropertySymbols(parent);\n\t for (var i = 0; i < symbols.length; i++) {\n\t // Don't need to worry about cloning a symbol because it is a primitive,\n\t // like a number or string.\n\t var symbol = symbols[i];\n\t var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n\t if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n\t continue;\n\t }\n\t child[symbol] = _clone(parent[symbol], depth - 1);\n\t if (!descriptor.enumerable) {\n\t Object.defineProperty(child, symbol, {\n\t enumerable: false\n\t });\n\t }\n\t }\n\t }\n\n\t if (includeNonEnumerable) {\n\t var allPropertyNames = Object.getOwnPropertyNames(parent);\n\t for (var i = 0; i < allPropertyNames.length; i++) {\n\t var propertyName = allPropertyNames[i];\n\t var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n\t if (descriptor && descriptor.enumerable) {\n\t continue;\n\t }\n\t child[propertyName] = _clone(parent[propertyName], depth - 1);\n\t Object.defineProperty(child, propertyName, {\n\t enumerable: false\n\t });\n\t }\n\t }\n\n\t return child;\n\t }\n\n\t return _clone(parent, depth);\n\t}\n\n\t/**\n\t * Simple flat clone using prototype, accepts only objects, usefull for property\n\t * override on FLAT configuration object (no nested props).\n\t *\n\t * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n\t * works.\n\t */\n\tclone.clonePrototype = function clonePrototype(parent) {\n\t if (parent === null)\n\t return null;\n\n\t var c = function () {};\n\t c.prototype = parent;\n\t return new c();\n\t};\n\n\t// private utility functions\n\n\tfunction __objToStr(o) {\n\t return Object.prototype.toString.call(o);\n\t}\n\tclone.__objToStr = __objToStr;\n\n\tfunction __isDate(o) {\n\t return typeof o === 'object' && __objToStr(o) === '[object Date]';\n\t}\n\tclone.__isDate = __isDate;\n\n\tfunction __isArray(o) {\n\t return typeof o === 'object' && __objToStr(o) === '[object Array]';\n\t}\n\tclone.__isArray = __isArray;\n\n\tfunction __isRegExp(o) {\n\t return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n\t}\n\tclone.__isRegExp = __isRegExp;\n\n\tfunction __getRegExpFlags(re) {\n\t var flags = '';\n\t if (re.global) flags += 'g';\n\t if (re.ignoreCase) flags += 'i';\n\t if (re.multiline) flags += 'm';\n\t return flags;\n\t}\n\tclone.__getRegExpFlags = __getRegExpFlags;\n\n\treturn clone;\n\t})();\n\n\tif (typeof module === 'object' && module.exports) {\n\t module.exports = clone;\n\t}\n\n\n/***/ },\n/* 39 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Module = function Module(quill) {\n\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t _classCallCheck(this, Module);\n\n\t this.quill = quill;\n\t this.options = options;\n\t};\n\n\tModule.DEFAULTS = {};\n\n\texports.default = Module;\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.Range = undefined;\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _clone = __webpack_require__(38);\n\n\tvar _clone2 = _interopRequireDefault(_clone);\n\n\tvar _deepEqual = __webpack_require__(22);\n\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n\tvar _emitter3 = __webpack_require__(35);\n\n\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar debug = (0, _logger2.default)('quill:selection');\n\n\tvar Range = function Range(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t _classCallCheck(this, Range);\n\n\t this.index = index;\n\t this.length = length;\n\t};\n\n\tvar Selection = function () {\n\t function Selection(scroll, emitter) {\n\t var _this = this;\n\n\t _classCallCheck(this, Selection);\n\n\t this.emitter = emitter;\n\t this.scroll = scroll;\n\t this.composing = false;\n\t this.root = this.scroll.domNode;\n\t this.root.addEventListener('compositionstart', function () {\n\t _this.composing = true;\n\t });\n\t this.root.addEventListener('compositionend', function () {\n\t _this.composing = false;\n\t });\n\t this.cursor = _parchment2.default.create('cursor', this);\n\t // savedRange is last non-null range\n\t this.lastRange = this.savedRange = new Range(0, 0);\n\t ['keyup', 'mouseup', 'mouseleave', 'touchend', 'touchleave', 'focus', 'blur'].forEach(function (eventName) {\n\t _this.root.addEventListener(eventName, function () {\n\t // When range used to be a selection and user click within the selection,\n\t // the range now being a cursor has not updated yet without setTimeout\n\t setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 100);\n\t });\n\t });\n\t this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n\t if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n\t _this.update(_emitter4.default.sources.SILENT);\n\t }\n\t });\n\t this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n\t var native = _this.getNativeRange();\n\t if (native == null) return;\n\t if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n\t // TODO unclear if this has negative side effects\n\t _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n\t try {\n\t _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n\t } catch (ignored) {}\n\t });\n\t });\n\t this.update(_emitter4.default.sources.SILENT);\n\t }\n\n\t _createClass(Selection, [{\n\t key: 'focus',\n\t value: function focus() {\n\t if (this.hasFocus()) return;\n\t this.root.focus();\n\t this.setRange(this.savedRange);\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(_format, value) {\n\t if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n\t this.scroll.update();\n\t var nativeRange = this.getNativeRange();\n\t if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n\t if (nativeRange.start.node !== this.cursor.textNode) {\n\t var blot = _parchment2.default.find(nativeRange.start.node, false);\n\t if (blot == null) return;\n\t // TODO Give blot ability to not split\n\t if (blot instanceof _parchment2.default.Leaf) {\n\t var after = blot.split(nativeRange.start.offset);\n\t blot.parent.insertBefore(this.cursor, after);\n\t } else {\n\t blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n\t }\n\t this.cursor.attach();\n\t }\n\t this.cursor.format(_format, value);\n\t this.scroll.optimize();\n\t this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n\t this.update();\n\t }\n\t }, {\n\t key: 'getBounds',\n\t value: function getBounds(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t var scrollLength = this.scroll.length();\n\t index = Math.min(index, scrollLength - 1);\n\t length = Math.min(index + length, scrollLength - 1) - index;\n\t var bounds = void 0,\n\t node = void 0,\n\t _scroll$leaf = this.scroll.leaf(index),\n\t _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n\t leaf = _scroll$leaf2[0],\n\t offset = _scroll$leaf2[1];\n\t if (leaf == null) return null;\n\n\t var _leaf$position = leaf.position(offset, true);\n\n\t var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n\t node = _leaf$position2[0];\n\t offset = _leaf$position2[1];\n\n\t var range = document.createRange();\n\t if (length > 0) {\n\t range.setStart(node, offset);\n\n\t var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n\t var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n\t leaf = _scroll$leaf4[0];\n\t offset = _scroll$leaf4[1];\n\n\t if (leaf == null) return null;\n\n\t var _leaf$position3 = leaf.position(offset, true);\n\n\t var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n\t node = _leaf$position4[0];\n\t offset = _leaf$position4[1];\n\n\t range.setEnd(node, offset);\n\t bounds = range.getBoundingClientRect();\n\t } else {\n\t var side = 'left';\n\t var rect = void 0;\n\t if (node instanceof Text) {\n\t if (offset < node.data.length) {\n\t range.setStart(node, offset);\n\t range.setEnd(node, offset + 1);\n\t } else {\n\t range.setStart(node, offset - 1);\n\t range.setEnd(node, offset);\n\t side = 'right';\n\t }\n\t rect = range.getBoundingClientRect();\n\t } else {\n\t rect = leaf.domNode.getBoundingClientRect();\n\t if (offset > 0) side = 'right';\n\t }\n\t bounds = {\n\t height: rect.height,\n\t left: rect[side],\n\t width: 0,\n\t top: rect.top\n\t };\n\t }\n\t var containerBounds = this.root.parentNode.getBoundingClientRect();\n\t return {\n\t left: bounds.left - containerBounds.left,\n\t right: bounds.left + bounds.width - containerBounds.left,\n\t top: bounds.top - containerBounds.top,\n\t bottom: bounds.top + bounds.height - containerBounds.top,\n\t height: bounds.height,\n\t width: bounds.width\n\t };\n\t }\n\t }, {\n\t key: 'getNativeRange',\n\t value: function getNativeRange() {\n\t var selection = document.getSelection();\n\t if (selection == null || selection.rangeCount <= 0) return null;\n\t var nativeRange = selection.getRangeAt(0);\n\t if (nativeRange == null) return null;\n\t if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n\t return null;\n\t }\n\t var range = {\n\t start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n\t end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n\t native: nativeRange\n\t };\n\t [range.start, range.end].forEach(function (position) {\n\t var node = position.node,\n\t offset = position.offset;\n\t while (!(node instanceof Text) && node.childNodes.length > 0) {\n\t if (node.childNodes.length > offset) {\n\t node = node.childNodes[offset];\n\t offset = 0;\n\t } else if (node.childNodes.length === offset) {\n\t node = node.lastChild;\n\t offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n\t } else {\n\t break;\n\t }\n\t }\n\t position.node = node, position.offset = offset;\n\t });\n\t debug.info('getNativeRange', range);\n\t return range;\n\t }\n\t }, {\n\t key: 'getRange',\n\t value: function getRange() {\n\t var _this2 = this;\n\n\t var range = this.getNativeRange();\n\t if (range == null) return [null, null];\n\t var positions = [[range.start.node, range.start.offset]];\n\t if (!range.native.collapsed) {\n\t positions.push([range.end.node, range.end.offset]);\n\t }\n\t var indexes = positions.map(function (position) {\n\t var _position = _slicedToArray(position, 2),\n\t node = _position[0],\n\t offset = _position[1];\n\n\t var blot = _parchment2.default.find(node, true);\n\t var index = blot.offset(_this2.scroll);\n\t if (offset === 0) {\n\t return index;\n\t } else if (blot instanceof _parchment2.default.Container) {\n\t return index + blot.length();\n\t } else {\n\t return index + blot.index(node, offset);\n\t }\n\t });\n\t var start = Math.min.apply(Math, _toConsumableArray(indexes)),\n\t end = Math.max.apply(Math, _toConsumableArray(indexes));\n\t end = Math.min(end, this.scroll.length() - 1);\n\t return [new Range(start, end - start), range];\n\t }\n\t }, {\n\t key: 'hasFocus',\n\t value: function hasFocus() {\n\t return document.activeElement === this.root;\n\t }\n\t }, {\n\t key: 'scrollIntoView',\n\t value: function scrollIntoView() {\n\t var range = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastRange;\n\n\t if (range == null) return;\n\t var bounds = this.getBounds(range.index, range.length);\n\t if (bounds == null) return;\n\t if (this.root.offsetHeight < bounds.bottom) {\n\t var _scroll$line = this.scroll.line(Math.min(range.index + range.length, this.scroll.length() - 1)),\n\t _scroll$line2 = _slicedToArray(_scroll$line, 1),\n\t line = _scroll$line2[0];\n\n\t this.root.scrollTop = line.domNode.offsetTop + line.domNode.offsetHeight - this.root.offsetHeight;\n\t } else if (bounds.top < 0) {\n\t var _scroll$line3 = this.scroll.line(Math.min(range.index, this.scroll.length() - 1)),\n\t _scroll$line4 = _slicedToArray(_scroll$line3, 1),\n\t _line = _scroll$line4[0];\n\n\t this.root.scrollTop = _line.domNode.offsetTop;\n\t }\n\t }\n\t }, {\n\t key: 'setNativeRange',\n\t value: function setNativeRange(startNode, startOffset) {\n\t var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n\t var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n\t var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n\t debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n\t if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n\t return;\n\t }\n\t var selection = document.getSelection();\n\t if (selection == null) return;\n\t if (startNode != null) {\n\t if (!this.hasFocus()) this.root.focus();\n\t var native = (this.getNativeRange() || {}).native;\n\t if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n\t if (startNode.tagName == \"BR\") {\n\t startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n\t startNode = startNode.parentNode;\n\t }\n\t if (endNode.tagName == \"BR\") {\n\t endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n\t endNode = endNode.parentNode;\n\t }\n\t var range = document.createRange();\n\t range.setStart(startNode, startOffset);\n\t range.setEnd(endNode, endOffset);\n\t selection.removeAllRanges();\n\t selection.addRange(range);\n\t }\n\t } else {\n\t selection.removeAllRanges();\n\t this.root.blur();\n\t document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n\t }\n\t }\n\t }, {\n\t key: 'setRange',\n\t value: function setRange(range) {\n\t var _this3 = this;\n\n\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n\t if (typeof force === 'string') {\n\t source = force;\n\t force = false;\n\t }\n\t debug.info('setRange', range);\n\t if (range != null) {\n\t (function () {\n\t var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n\t var args = [];\n\t var scrollLength = _this3.scroll.length();\n\t indexes.forEach(function (index, i) {\n\t index = Math.min(scrollLength - 1, index);\n\t var node = void 0,\n\t _scroll$leaf5 = _this3.scroll.leaf(index),\n\t _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n\t leaf = _scroll$leaf6[0],\n\t offset = _scroll$leaf6[1];\n\t var _leaf$position5 = leaf.position(offset, i !== 0);\n\n\t var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n\t node = _leaf$position6[0];\n\t offset = _leaf$position6[1];\n\n\t args.push(node, offset);\n\t });\n\t if (args.length < 2) {\n\t args = args.concat(args);\n\t }\n\t _this3.setNativeRange.apply(_this3, _toConsumableArray(args).concat([force]));\n\t })();\n\t } else {\n\t this.setNativeRange(null);\n\t }\n\t this.update(source);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n\t var oldRange = this.lastRange;\n\n\t var _getRange = this.getRange(),\n\t _getRange2 = _slicedToArray(_getRange, 2),\n\t lastRange = _getRange2[0],\n\t nativeRange = _getRange2[1];\n\n\t this.lastRange = lastRange;\n\t if (this.lastRange != null) {\n\t this.savedRange = this.lastRange;\n\t }\n\t if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n\t var _emitter;\n\n\t if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n\t this.cursor.restore();\n\t }\n\t var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n\t (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\t if (source !== _emitter4.default.sources.SILENT) {\n\t var _emitter2;\n\n\t (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n\t }\n\t }\n\t }\n\t }]);\n\n\t return Selection;\n\t}();\n\n\tfunction contains(parent, descendant) {\n\t try {\n\t // Firefox inserts inaccessible nodes around video elements\n\t descendant.parentNode;\n\t } catch (e) {\n\t return false;\n\t }\n\t // IE11 has bug with Text nodes\n\t // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n\t if (descendant instanceof Text) {\n\t descendant = descendant.parentNode;\n\t }\n\t return parent.contains(descendant);\n\t}\n\n\texports.Range = Range;\n\texports.default = Selection;\n\n/***/ },\n/* 41 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Theme = function () {\n\t function Theme(quill, options) {\n\t _classCallCheck(this, Theme);\n\n\t this.quill = quill;\n\t this.options = options;\n\t this.modules = {};\n\t }\n\n\t _createClass(Theme, [{\n\t key: 'init',\n\t value: function init() {\n\t var _this = this;\n\n\t Object.keys(this.options.modules).forEach(function (name) {\n\t if (_this.modules[name] == null) {\n\t _this.addModule(name);\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'addModule',\n\t value: function addModule(name) {\n\t var moduleClass = this.quill.constructor.import('modules/' + name);\n\t this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n\t return this.modules[name];\n\t }\n\t }]);\n\n\t return Theme;\n\t}();\n\n\tTheme.DEFAULTS = {\n\t modules: {}\n\t};\n\tTheme.themes = {\n\t 'default': Theme\n\t};\n\n\texports.default = Theme;\n\n/***/ },\n/* 42 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Container = function (_Parchment$Container) {\n\t _inherits(Container, _Parchment$Container);\n\n\t function Container() {\n\t _classCallCheck(this, Container);\n\n\t return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n\t }\n\n\t return Container;\n\t}(_parchment2.default.Container);\n\n\tContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\n\texports.default = Container;\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _emitter = __webpack_require__(35);\n\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tvar _break = __webpack_require__(30);\n\n\tvar _break2 = _interopRequireDefault(_break);\n\n\tvar _container = __webpack_require__(42);\n\n\tvar _container2 = _interopRequireDefault(_container);\n\n\tvar _code = __webpack_require__(28);\n\n\tvar _code2 = _interopRequireDefault(_code);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tfunction isLine(blot) {\n\t return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n\t}\n\n\tvar Scroll = function (_Parchment$Scroll) {\n\t _inherits(Scroll, _Parchment$Scroll);\n\n\t function Scroll(domNode, config) {\n\t _classCallCheck(this, Scroll);\n\n\t var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n\t _this.emitter = config.emitter;\n\t if (Array.isArray(config.whitelist)) {\n\t _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n\t whitelist[format] = true;\n\t return whitelist;\n\t }, {});\n\t }\n\t _this.optimize();\n\t _this.enable();\n\t return _this;\n\t }\n\n\t _createClass(Scroll, [{\n\t key: 'deleteAt',\n\t value: function deleteAt(index, length) {\n\t var _line = this.line(index),\n\t _line2 = _slicedToArray(_line, 2),\n\t first = _line2[0],\n\t offset = _line2[1];\n\n\t var _line3 = this.line(index + length),\n\t _line4 = _slicedToArray(_line3, 1),\n\t last = _line4[0];\n\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n\t if (last != null && first !== last && offset > 0 && !(first instanceof _block.BlockEmbed) && !(last instanceof _block.BlockEmbed)) {\n\t if (last instanceof _code2.default) {\n\t last.deleteAt(last.length() - 1, 1);\n\t }\n\t var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n\t first.moveChildren(last, ref);\n\t first.remove();\n\t }\n\t this.optimize();\n\t }\n\t }, {\n\t key: 'enable',\n\t value: function enable() {\n\t var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n\t this.domNode.setAttribute('contenteditable', enabled);\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, format, value) {\n\t if (this.whitelist != null && !this.whitelist[format]) return;\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n\t this.optimize();\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n\t if (index >= this.length()) {\n\t if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n\t var blot = _parchment2.default.create(this.statics.defaultChild);\n\t this.appendChild(blot);\n\t if (def == null && value.endsWith('\\n')) {\n\t value = value.slice(0, -1);\n\t }\n\t blot.insertAt(0, value, def);\n\t } else {\n\t var embed = _parchment2.default.create(value, def);\n\t this.appendChild(embed);\n\t }\n\t } else {\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n\t }\n\t this.optimize();\n\t }\n\t }, {\n\t key: 'insertBefore',\n\t value: function insertBefore(blot, ref) {\n\t if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n\t var wrapper = _parchment2.default.create(this.statics.defaultChild);\n\t wrapper.appendChild(blot);\n\t blot = wrapper;\n\t }\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n\t }\n\t }, {\n\t key: 'leaf',\n\t value: function leaf(index) {\n\t return this.path(index).pop() || [null, -1];\n\t }\n\t }, {\n\t key: 'line',\n\t value: function line(index) {\n\t if (index === this.length()) {\n\t return this.line(index - 1);\n\t }\n\t return this.descendant(isLine, index);\n\t }\n\t }, {\n\t key: 'lines',\n\t value: function lines() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n\t var getLines = function getLines(blot, index, length) {\n\t var lines = [],\n\t lengthLeft = length;\n\t blot.children.forEachAt(index, length, function (child, index, length) {\n\t if (isLine(child)) {\n\t lines.push(child);\n\t } else if (child instanceof _parchment2.default.Container) {\n\t lines = lines.concat(getLines(child, index, lengthLeft));\n\t }\n\t lengthLeft -= length;\n\t });\n\t return lines;\n\t };\n\t return getLines(this, index, length);\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n\t if (this.batch === true) return;\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations);\n\t if (mutations.length > 0) {\n\t this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations);\n\t }\n\t }\n\t }, {\n\t key: 'path',\n\t value: function path(index) {\n\t return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(mutations) {\n\t if (this.batch === true) return;\n\t var source = _emitter2.default.sources.USER;\n\t if (typeof mutations === 'string') {\n\t source = mutations;\n\t }\n\t if (!Array.isArray(mutations)) {\n\t mutations = this.observer.takeRecords();\n\t }\n\t if (mutations.length > 0) {\n\t this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n\t }\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n\t if (mutations.length > 0) {\n\t this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n\t }\n\t }\n\t }]);\n\n\t return Scroll;\n\t}(_parchment2.default.Scroll);\n\n\tScroll.blotName = 'scroll';\n\tScroll.className = 'ql-editor';\n\tScroll.tagName = 'DIV';\n\tScroll.defaultChild = 'block';\n\tScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\n\texports.default = Scroll;\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tvar _align = __webpack_require__(45);\n\n\tvar _background = __webpack_require__(46);\n\n\tvar _color = __webpack_require__(47);\n\n\tvar _direction = __webpack_require__(48);\n\n\tvar _font = __webpack_require__(49);\n\n\tvar _size = __webpack_require__(50);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _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; }\n\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar debug = (0, _logger2.default)('quill:clipboard');\n\n\tvar DOM_KEY = '__ql-matcher';\n\n\tvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\n\tvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n\t memo[attr.keyName] = attr;\n\t return memo;\n\t}, {});\n\n\tvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n\t memo[attr.keyName] = attr;\n\t return memo;\n\t}, {});\n\n\tvar Clipboard = function (_Module) {\n\t _inherits(Clipboard, _Module);\n\n\t function Clipboard(quill, options) {\n\t _classCallCheck(this, Clipboard);\n\n\t var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n\t _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n\t _this.container = _this.quill.addContainer('ql-clipboard');\n\t _this.container.setAttribute('contenteditable', true);\n\t _this.container.setAttribute('tabindex', -1);\n\t _this.matchers = [];\n\t CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (pair) {\n\t _this.addMatcher.apply(_this, _toConsumableArray(pair));\n\t });\n\t return _this;\n\t }\n\n\t _createClass(Clipboard, [{\n\t key: 'addMatcher',\n\t value: function addMatcher(selector, matcher) {\n\t this.matchers.push([selector, matcher]);\n\t }\n\t }, {\n\t key: 'convert',\n\t value: function convert(html) {\n\t if (typeof html === 'string') {\n\t this.container.innerHTML = html;\n\t }\n\n\t var _prepareMatching = this.prepareMatching(),\n\t _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n\t elementMatchers = _prepareMatching2[0],\n\t textMatchers = _prepareMatching2[1];\n\n\t var delta = traverse(this.container, elementMatchers, textMatchers);\n\t // Remove trailing newline\n\t if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n\t }\n\t debug.log('convert', this.container.innerHTML, delta);\n\t this.container.innerHTML = '';\n\t return delta;\n\t }\n\t }, {\n\t key: 'dangerouslyPasteHTML',\n\t value: function dangerouslyPasteHTML(index, html) {\n\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n\t if (typeof index === 'string') {\n\t return this.quill.setContents(this.convert(index), html);\n\t } else {\n\t var paste = this.convert(html);\n\t return this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n\t }\n\t }\n\t }, {\n\t key: 'onPaste',\n\t value: function onPaste(e) {\n\t var _this2 = this;\n\n\t if (e.defaultPrevented || !this.quill.isEnabled()) return;\n\t var range = this.quill.getSelection();\n\t var delta = new _quillDelta2.default().retain(range.index);\n\t var scrollTop = this.quill.scrollingContainer.scrollTop;\n\t this.container.focus();\n\t setTimeout(function () {\n\t _this2.quill.selection.update(_quill2.default.sources.SILENT);\n\t delta = delta.concat(_this2.convert()).delete(range.length);\n\t _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n\t // range.length contributes to delta.length()\n\t _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n\t _this2.quill.scrollingContainer.scrollTop = scrollTop;\n\t _this2.quill.selection.scrollIntoView();\n\t }, 1);\n\t }\n\t }, {\n\t key: 'prepareMatching',\n\t value: function prepareMatching() {\n\t var _this3 = this;\n\n\t var elementMatchers = [],\n\t textMatchers = [];\n\t this.matchers.forEach(function (pair) {\n\t var _pair = _slicedToArray(pair, 2),\n\t selector = _pair[0],\n\t matcher = _pair[1];\n\n\t switch (selector) {\n\t case Node.TEXT_NODE:\n\t textMatchers.push(matcher);\n\t break;\n\t case Node.ELEMENT_NODE:\n\t elementMatchers.push(matcher);\n\t break;\n\t default:\n\t [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n\t // TODO use weakmap\n\t node[DOM_KEY] = node[DOM_KEY] || [];\n\t node[DOM_KEY].push(matcher);\n\t });\n\t break;\n\t }\n\t });\n\t return [elementMatchers, textMatchers];\n\t }\n\t }]);\n\n\t return Clipboard;\n\t}(_module2.default);\n\n\tClipboard.DEFAULTS = {\n\t matchers: []\n\t};\n\n\tfunction computeStyle(node) {\n\t if (node.nodeType !== Node.ELEMENT_NODE) return {};\n\t var DOM_KEY = '__ql-computed-style';\n\t return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n\t}\n\n\tfunction deltaEndsWith(delta, text) {\n\t var endText = \"\";\n\t for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n\t var op = delta.ops[i];\n\t if (typeof op.insert !== 'string') break;\n\t endText = op.insert + endText;\n\t }\n\t return endText.slice(-1 * text.length) === text;\n\t}\n\n\tfunction isLine(node) {\n\t if (node.childNodes.length === 0) return false; // Exclude embed blocks\n\t var style = computeStyle(node);\n\t return ['block', 'list-item'].indexOf(style.display) > -1;\n\t}\n\n\tfunction traverse(node, elementMatchers, textMatchers) {\n\t // Post-order\n\t if (node.nodeType === node.TEXT_NODE) {\n\t return textMatchers.reduce(function (delta, matcher) {\n\t return matcher(node, delta);\n\t }, new _quillDelta2.default());\n\t } else if (node.nodeType === node.ELEMENT_NODE) {\n\t return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n\t var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n\t if (childNode.nodeType === node.ELEMENT_NODE) {\n\t childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n\t return matcher(childNode, childrenDelta);\n\t }, childrenDelta);\n\t childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n\t return matcher(childNode, childrenDelta);\n\t }, childrenDelta);\n\t }\n\t return delta.concat(childrenDelta);\n\t }, new _quillDelta2.default());\n\t } else {\n\t return new _quillDelta2.default();\n\t }\n\t}\n\n\tfunction matchAlias(format, node, delta) {\n\t return delta.compose(new _quillDelta2.default().retain(delta.length(), _defineProperty({}, format, true)));\n\t}\n\n\tfunction matchAttributor(node, delta) {\n\t var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n\t var classes = _parchment2.default.Attributor.Class.keys(node);\n\t var styles = _parchment2.default.Attributor.Style.keys(node);\n\t var formats = {};\n\t attributes.concat(classes).concat(styles).forEach(function (name) {\n\t var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n\t if (attr != null) {\n\t formats[attr.attrName] = attr.value(node);\n\t if (formats[attr.attrName]) return;\n\t }\n\t if (ATTRIBUTE_ATTRIBUTORS[name] != null) {\n\t attr = ATTRIBUTE_ATTRIBUTORS[name];\n\t formats[attr.attrName] = attr.value(node) || undefined;\n\t }\n\t if (STYLE_ATTRIBUTORS[name] != null) {\n\t attr = STYLE_ATTRIBUTORS[name];\n\t formats[attr.attrName] = attr.value(node) || undefined;\n\t }\n\t });\n\t if (Object.keys(formats).length > 0) {\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t }\n\t return delta;\n\t}\n\n\tfunction matchBlot(node, delta) {\n\t var match = _parchment2.default.query(node);\n\t if (match == null) return delta;\n\t if (match.prototype instanceof _parchment2.default.Embed) {\n\t var embed = {};\n\t var value = match.value(node);\n\t if (value != null) {\n\t embed[match.blotName] = value;\n\t delta = new _quillDelta2.default().insert(embed, match.formats(node));\n\t }\n\t } else if (typeof match.formats === 'function') {\n\t var formats = _defineProperty({}, match.blotName, match.formats(node));\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t }\n\t return delta;\n\t}\n\n\tfunction matchBreak(node, delta) {\n\t if (!deltaEndsWith(delta, '\\n')) {\n\t delta.insert('\\n');\n\t }\n\t return delta;\n\t}\n\n\tfunction matchIgnore() {\n\t return new _quillDelta2.default();\n\t}\n\n\tfunction matchNewline(node, delta) {\n\t if (isLine(node) && !deltaEndsWith(delta, '\\n')) {\n\t delta.insert('\\n');\n\t }\n\t return delta;\n\t}\n\n\tfunction matchSpacing(node, delta) {\n\t if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n\t var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n\t if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n\t delta.insert('\\n');\n\t }\n\t }\n\t return delta;\n\t}\n\n\tfunction matchStyles(node, delta) {\n\t var formats = {};\n\t var style = node.style || {};\n\t if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n\t formats.italic = true;\n\t }\n\t if (style.fontWeight && computeStyle(node).fontWeight === 'bold') {\n\t formats.bold = true;\n\t }\n\t if (Object.keys(formats).length > 0) {\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t }\n\t if (parseFloat(style.textIndent || 0) > 0) {\n\t // Could be 0.5in\n\t delta = new _quillDelta2.default().insert('\\t').concat(delta);\n\t }\n\t return delta;\n\t}\n\n\tfunction matchText(node, delta) {\n\t var text = node.data;\n\t // Word represents empty line with \n\t if (node.parentNode.tagName === 'O:P') {\n\t return delta.insert(text.trim());\n\t }\n\t if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n\t // eslint-disable-next-line func-style\n\t var replacer = function replacer(collapse, match) {\n\t match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n\t return match.length < 1 && collapse ? ' ' : match;\n\t };\n\t text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n\t text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n\t if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n\t text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n\t }\n\t if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n\t text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n\t }\n\t }\n\t return delta.insert(text);\n\t}\n\n\texports.default = Clipboard;\n\texports.matchAttributor = matchAttributor;\n\texports.matchBlot = matchBlot;\n\texports.matchNewline = matchNewline;\n\texports.matchSpacing = matchSpacing;\n\texports.matchText = matchText;\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar config = {\n\t scope: _parchment2.default.Scope.BLOCK,\n\t whitelist: ['right', 'center', 'justify']\n\t};\n\n\tvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\n\tvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\n\tvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\n\texports.AlignAttribute = AlignAttribute;\n\texports.AlignClass = AlignClass;\n\texports.AlignStyle = AlignStyle;\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.BackgroundStyle = exports.BackgroundClass = undefined;\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _color = __webpack_require__(47);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\tvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\n\texports.BackgroundClass = BackgroundClass;\n\texports.BackgroundStyle = BackgroundStyle;\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ColorAttributor = function (_Parchment$Attributor) {\n\t _inherits(ColorAttributor, _Parchment$Attributor);\n\n\t function ColorAttributor() {\n\t _classCallCheck(this, ColorAttributor);\n\n\t return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n\t }\n\n\t _createClass(ColorAttributor, [{\n\t key: 'value',\n\t value: function value(domNode) {\n\t var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n\t if (!value.startsWith('rgb(')) return value;\n\t value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n\t return '#' + value.split(',').map(function (component) {\n\t return ('00' + parseInt(component).toString(16)).slice(-2);\n\t }).join('');\n\t }\n\t }]);\n\n\t return ColorAttributor;\n\t}(_parchment2.default.Attributor.Style);\n\n\tvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\tvar ColorStyle = new ColorAttributor('color', 'color', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\n\texports.ColorAttributor = ColorAttributor;\n\texports.ColorClass = ColorClass;\n\texports.ColorStyle = ColorStyle;\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar config = {\n\t scope: _parchment2.default.Scope.BLOCK,\n\t whitelist: ['rtl']\n\t};\n\n\tvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\n\tvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\n\tvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\n\texports.DirectionAttribute = DirectionAttribute;\n\texports.DirectionClass = DirectionClass;\n\texports.DirectionStyle = DirectionStyle;\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.FontClass = exports.FontStyle = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar config = {\n\t scope: _parchment2.default.Scope.INLINE,\n\t whitelist: ['serif', 'monospace']\n\t};\n\n\tvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\n\tvar FontStyleAttributor = function (_Parchment$Attributor) {\n\t _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n\t function FontStyleAttributor() {\n\t _classCallCheck(this, FontStyleAttributor);\n\n\t return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n\t }\n\n\t _createClass(FontStyleAttributor, [{\n\t key: 'value',\n\t value: function value(node) {\n\t return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n\t }\n\t }]);\n\n\t return FontStyleAttributor;\n\t}(_parchment2.default.Attributor.Style);\n\n\tvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\n\texports.FontStyle = FontStyle;\n\texports.FontClass = FontClass;\n\n/***/ },\n/* 50 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.SizeStyle = exports.SizeClass = undefined;\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n\t scope: _parchment2.default.Scope.INLINE,\n\t whitelist: ['small', 'large', 'huge']\n\t});\n\tvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n\t scope: _parchment2.default.Scope.INLINE,\n\t whitelist: ['10px', '18px', '32px']\n\t});\n\n\texports.SizeClass = SizeClass;\n\texports.SizeStyle = SizeStyle;\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.getLastChangeIndex = exports.default = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar History = function (_Module) {\n\t _inherits(History, _Module);\n\n\t function History(quill, options) {\n\t _classCallCheck(this, History);\n\n\t var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n\t _this.lastRecorded = 0;\n\t _this.ignoreChange = false;\n\t _this.clear();\n\t _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n\t if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n\t if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n\t _this.record(delta, oldDelta);\n\t } else {\n\t _this.transform(delta);\n\t }\n\t });\n\t _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n\t _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n\t if (/Win/i.test(navigator.platform)) {\n\t _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n\t }\n\t return _this;\n\t }\n\n\t _createClass(History, [{\n\t key: 'change',\n\t value: function change(source, dest) {\n\t if (this.stack[source].length === 0) return;\n\t var delta = this.stack[source].pop();\n\t this.lastRecorded = 0;\n\t this.ignoreChange = true;\n\t this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n\t this.ignoreChange = false;\n\t var index = getLastChangeIndex(delta[source]);\n\t this.quill.setSelection(index);\n\t this.quill.selection.scrollIntoView();\n\t this.stack[dest].push(delta);\n\t }\n\t }, {\n\t key: 'clear',\n\t value: function clear() {\n\t this.stack = { undo: [], redo: [] };\n\t }\n\t }, {\n\t key: 'record',\n\t value: function record(changeDelta, oldDelta) {\n\t if (changeDelta.ops.length === 0) return;\n\t this.stack.redo = [];\n\t var undoDelta = this.quill.getContents().diff(oldDelta);\n\t var timestamp = Date.now();\n\t if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n\t var delta = this.stack.undo.pop();\n\t undoDelta = undoDelta.compose(delta.undo);\n\t changeDelta = delta.redo.compose(changeDelta);\n\t } else {\n\t this.lastRecorded = timestamp;\n\t }\n\t this.stack.undo.push({\n\t redo: changeDelta,\n\t undo: undoDelta\n\t });\n\t if (this.stack.undo.length > this.options.maxStack) {\n\t this.stack.undo.shift();\n\t }\n\t }\n\t }, {\n\t key: 'redo',\n\t value: function redo() {\n\t this.change('redo', 'undo');\n\t }\n\t }, {\n\t key: 'transform',\n\t value: function transform(delta) {\n\t this.stack.undo.forEach(function (change) {\n\t change.undo = delta.transform(change.undo, true);\n\t change.redo = delta.transform(change.redo, true);\n\t });\n\t this.stack.redo.forEach(function (change) {\n\t change.undo = delta.transform(change.undo, true);\n\t change.redo = delta.transform(change.redo, true);\n\t });\n\t }\n\t }, {\n\t key: 'undo',\n\t value: function undo() {\n\t this.change('undo', 'redo');\n\t }\n\t }]);\n\n\t return History;\n\t}(_module2.default);\n\n\tHistory.DEFAULTS = {\n\t delay: 1000,\n\t maxStack: 100,\n\t userOnly: false\n\t};\n\n\tfunction endsWithNewlineChange(delta) {\n\t var lastOp = delta.ops[delta.ops.length - 1];\n\t if (lastOp == null) return false;\n\t if (lastOp.insert != null) {\n\t return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n\t }\n\t if (lastOp.attributes != null) {\n\t return Object.keys(lastOp.attributes).some(function (attr) {\n\t return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n\t });\n\t }\n\t return false;\n\t}\n\n\tfunction getLastChangeIndex(delta) {\n\t var deleteLength = delta.reduce(function (length, op) {\n\t length += op.delete || 0;\n\t return length;\n\t }, 0);\n\t var changeIndex = delta.length() - deleteLength;\n\t if (endsWithNewlineChange(delta)) {\n\t changeIndex -= 1;\n\t }\n\t return changeIndex;\n\t}\n\n\texports.default = History;\n\texports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _clone = __webpack_require__(38);\n\n\tvar _clone2 = _interopRequireDefault(_clone);\n\n\tvar _deepEqual = __webpack_require__(22);\n\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _op = __webpack_require__(26);\n\n\tvar _op2 = _interopRequireDefault(_op);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar debug = (0, _logger2.default)('quill:keyboard');\n\n\tvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n\tvar Keyboard = function (_Module) {\n\t _inherits(Keyboard, _Module);\n\n\t _createClass(Keyboard, null, [{\n\t key: 'match',\n\t value: function match(evt, binding) {\n\t binding = normalize(binding);\n\t if (!!binding.shortKey !== evt[SHORTKEY] && binding.shortKey !== null) return false;\n\t if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n\t return key != SHORTKEY && !!binding[key] !== evt[key] && binding[key] !== null;\n\t })) {\n\t return false;\n\t }\n\t return binding.key === (evt.which || evt.keyCode);\n\t }\n\t }]);\n\n\t function Keyboard(quill, options) {\n\t _classCallCheck(this, Keyboard);\n\n\t var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n\t _this.bindings = {};\n\t Object.keys(_this.options.bindings).forEach(function (name) {\n\t if (_this.options.bindings[name]) {\n\t _this.addBinding(_this.options.bindings[name]);\n\t }\n\t });\n\t _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n\t _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n\t if (/Firefox/i.test(navigator.userAgent)) {\n\t // Need to handle delete and backspace for Firefox in the general case #1171\n\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n\t } else {\n\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n\t }\n\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n\t _this.listen();\n\t return _this;\n\t }\n\n\t _createClass(Keyboard, [{\n\t key: 'addBinding',\n\t value: function addBinding(key) {\n\t var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\t var binding = normalize(key);\n\t if (binding == null || binding.key == null) {\n\t return debug.warn('Attempted to add invalid keyboard binding', binding);\n\t }\n\t if (typeof context === 'function') {\n\t context = { handler: context };\n\t }\n\t if (typeof handler === 'function') {\n\t handler = { handler: handler };\n\t }\n\t binding = (0, _extend2.default)(binding, context, handler);\n\t this.bindings[binding.key] = this.bindings[binding.key] || [];\n\t this.bindings[binding.key].push(binding);\n\t }\n\t }, {\n\t key: 'listen',\n\t value: function listen() {\n\t var _this2 = this;\n\n\t this.quill.root.addEventListener('keydown', function (evt) {\n\t if (evt.defaultPrevented) return;\n\t var which = evt.which || evt.keyCode;\n\t var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n\t return Keyboard.match(evt, binding);\n\t });\n\t if (bindings.length === 0) return;\n\t var range = _this2.quill.getSelection();\n\t if (range == null || !_this2.quill.hasFocus()) return;\n\n\t var _quill$getLine = _this2.quill.getLine(range.index),\n\t _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n\t line = _quill$getLine2[0],\n\t offset = _quill$getLine2[1];\n\n\t var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n\t _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n\t leafStart = _quill$getLeaf2[0],\n\t offsetStart = _quill$getLeaf2[1];\n\n\t var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n\t _ref2 = _slicedToArray(_ref, 2),\n\t leafEnd = _ref2[0],\n\t offsetEnd = _ref2[1];\n\n\t var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n\t var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n\t var curContext = {\n\t collapsed: range.length === 0,\n\t empty: range.length === 0 && line.length() <= 1,\n\t format: _this2.quill.getFormat(range),\n\t offset: offset,\n\t prefix: prefixText,\n\t suffix: suffixText\n\t };\n\t var prevented = bindings.some(function (binding) {\n\t if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n\t if (binding.empty != null && binding.empty !== curContext.empty) return false;\n\t if (binding.offset != null && binding.offset !== curContext.offset) return false;\n\t if (Array.isArray(binding.format)) {\n\t // any format is present\n\t if (binding.format.every(function (name) {\n\t return curContext.format[name] == null;\n\t })) {\n\t return false;\n\t }\n\t } else if (_typeof(binding.format) === 'object') {\n\t // all formats must match\n\t if (!Object.keys(binding.format).every(function (name) {\n\t if (binding.format[name] === true) return curContext.format[name] != null;\n\t if (binding.format[name] === false) return curContext.format[name] == null;\n\t return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n\t })) {\n\t return false;\n\t }\n\t }\n\t if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n\t if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n\t return binding.handler.call(_this2, range, curContext) !== true;\n\t });\n\t if (prevented) {\n\t evt.preventDefault();\n\t }\n\t });\n\t }\n\t }]);\n\n\t return Keyboard;\n\t}(_module2.default);\n\n\tKeyboard.keys = {\n\t BACKSPACE: 8,\n\t TAB: 9,\n\t ENTER: 13,\n\t ESCAPE: 27,\n\t LEFT: 37,\n\t UP: 38,\n\t RIGHT: 39,\n\t DOWN: 40,\n\t DELETE: 46\n\t};\n\n\tKeyboard.DEFAULTS = {\n\t bindings: {\n\t 'bold': makeFormatHandler('bold'),\n\t 'italic': makeFormatHandler('italic'),\n\t 'underline': makeFormatHandler('underline'),\n\t 'indent': {\n\t // highlight tab or tab at beginning of list, indent or blockquote\n\t key: Keyboard.keys.TAB,\n\t format: ['blockquote', 'indent', 'list'],\n\t handler: function handler(range, context) {\n\t if (context.collapsed && context.offset !== 0) return true;\n\t this.quill.format('indent', '+1', _quill2.default.sources.USER);\n\t }\n\t },\n\t 'outdent': {\n\t key: Keyboard.keys.TAB,\n\t shiftKey: true,\n\t format: ['blockquote', 'indent', 'list'],\n\t // highlight tab or tab at beginning of list, indent or blockquote\n\t handler: function handler(range, context) {\n\t if (context.collapsed && context.offset !== 0) return true;\n\t this.quill.format('indent', '-1', _quill2.default.sources.USER);\n\t }\n\t },\n\t 'outdent backspace': {\n\t key: Keyboard.keys.BACKSPACE,\n\t collapsed: true,\n\t format: ['blockquote', 'indent', 'list'],\n\t offset: 0,\n\t handler: function handler(range, context) {\n\t if (context.format.indent != null) {\n\t this.quill.format('indent', '-1', _quill2.default.sources.USER);\n\t } else if (context.format.blockquote != null) {\n\t this.quill.format('blockquote', false, _quill2.default.sources.USER);\n\t } else if (context.format.list != null) {\n\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t }\n\t }\n\t },\n\t 'indent code-block': makeCodeBlockHandler(true),\n\t 'outdent code-block': makeCodeBlockHandler(false),\n\t 'remove tab': {\n\t key: Keyboard.keys.TAB,\n\t shiftKey: true,\n\t collapsed: true,\n\t prefix: /\\t$/,\n\t handler: function handler(range) {\n\t this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n\t }\n\t },\n\t 'tab': {\n\t key: Keyboard.keys.TAB,\n\t handler: function handler(range, context) {\n\t if (!context.collapsed) {\n\t this.quill.scroll.deleteAt(range.index, range.length);\n\t }\n\t this.quill.insertText(range.index, '\\t', _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t }\n\t },\n\t 'list empty enter': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: ['list'],\n\t empty: true,\n\t handler: function handler(range, context) {\n\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t if (context.format.indent) {\n\t this.quill.format('indent', false, _quill2.default.sources.USER);\n\t }\n\t }\n\t },\n\t 'checklist enter': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: { list: 'checked' },\n\t handler: function handler(range) {\n\t this.quill.scroll.insertAt(range.index, '\\n');\n\n\t var _quill$getLine3 = this.quill.getLine(range.index + 1),\n\t _quill$getLine4 = _slicedToArray(_quill$getLine3, 1),\n\t line = _quill$getLine4[0];\n\n\t line.format('list', 'unchecked');\n\t this.quill.update(_quill2.default.sources.USER);\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t }\n\t },\n\t 'header enter': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: ['header'],\n\t suffix: /^$/,\n\t handler: function handler(range) {\n\t this.quill.scroll.insertAt(range.index, '\\n');\n\t this.quill.formatText(range.index + 1, 1, 'header', false, _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t }\n\t },\n\t 'list autofill': {\n\t key: ' ',\n\t collapsed: true,\n\t format: { list: false },\n\t prefix: /^(1\\.|-)$/,\n\t handler: function handler(range, context) {\n\t if (this.quill.scroll.whitelist != null && !this.quill.scroll.whitelist['list']) return true;\n\t var length = context.prefix.length;\n\t this.quill.scroll.deleteAt(range.index - length, length);\n\t this.quill.formatLine(range.index - length, 1, 'list', length === 1 ? 'bullet' : 'ordered', _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n\t }\n\t },\n\t 'code exit': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: ['code-block'],\n\t prefix: /\\n\\n$/,\n\t suffix: /^\\s+$/,\n\t handler: function handler(range) {\n\t this.quill.format('code-block', false, _quill2.default.sources.USER);\n\t this.quill.deleteText(range.index - 2, 1, _quill2.default.sources.USER);\n\t }\n\t }\n\t }\n\t};\n\n\tfunction handleBackspace(range, context) {\n\t if (range.index === 0) return;\n\n\t var _quill$getLine5 = this.quill.getLine(range.index),\n\t _quill$getLine6 = _slicedToArray(_quill$getLine5, 1),\n\t line = _quill$getLine6[0];\n\n\t var formats = {};\n\t if (context.offset === 0) {\n\t var curFormats = line.formats();\n\t var prevFormats = this.quill.getFormat(range.index - 1, 1);\n\t formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n\t }\n\t // Check for astral symbols\n\t var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n\t this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n\t if (Object.keys(formats).length > 0) {\n\t this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n\t }\n\t this.quill.selection.scrollIntoView();\n\t}\n\n\tfunction handleDelete(range, context) {\n\t // Check for astral symbols\n\t var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n\t if (range.index >= this.quill.getLength() - length) return;\n\t this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n\t}\n\n\tfunction handleDeleteRange(range) {\n\t this.quill.deleteText(range, _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t}\n\n\tfunction handleEnter(range, context) {\n\t var _this3 = this;\n\n\t if (range.length > 0) {\n\t this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n\t }\n\t var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n\t if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n\t lineFormats[format] = context.format[format];\n\t }\n\t return lineFormats;\n\t }, {});\n\t this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n\t // Earlier scroll.deleteAt might have messed up our selection,\n\t // so insertText's built in selection preservation is not reliable\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t Object.keys(context.format).forEach(function (name) {\n\t if (lineFormats[name] != null) return;\n\t if (Array.isArray(context.format[name])) return;\n\t if (name === 'link') return;\n\t _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n\t });\n\t}\n\n\tfunction makeCodeBlockHandler(indent) {\n\t return {\n\t key: Keyboard.keys.TAB,\n\t shiftKey: !indent,\n\t format: { 'code-block': true },\n\t handler: function handler(range) {\n\t var CodeBlock = _parchment2.default.query('code-block');\n\t var index = range.index,\n\t length = range.length;\n\n\t var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n\t _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n\t block = _quill$scroll$descend2[0],\n\t offset = _quill$scroll$descend2[1];\n\n\t if (block == null) return;\n\t var scrollIndex = this.quill.getIndex(block);\n\t var start = block.newlineIndex(offset, true) + 1;\n\t var end = block.newlineIndex(scrollIndex + offset + length);\n\t var lines = block.domNode.textContent.slice(start, end).split('\\n');\n\t offset = 0;\n\t lines.forEach(function (line, i) {\n\t if (indent) {\n\t block.insertAt(start + offset, CodeBlock.TAB);\n\t offset += CodeBlock.TAB.length;\n\t if (i === 0) {\n\t index += CodeBlock.TAB.length;\n\t } else {\n\t length += CodeBlock.TAB.length;\n\t }\n\t } else if (line.startsWith(CodeBlock.TAB)) {\n\t block.deleteAt(start + offset, CodeBlock.TAB.length);\n\t offset -= CodeBlock.TAB.length;\n\t if (i === 0) {\n\t index -= CodeBlock.TAB.length;\n\t } else {\n\t length -= CodeBlock.TAB.length;\n\t }\n\t }\n\t offset += line.length + 1;\n\t });\n\t this.quill.update(_quill2.default.sources.USER);\n\t this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n\t }\n\t };\n\t}\n\n\tfunction makeFormatHandler(format) {\n\t return {\n\t key: format[0].toUpperCase(),\n\t shortKey: true,\n\t handler: function handler(range, context) {\n\t this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n\t }\n\t };\n\t}\n\n\tfunction normalize(binding) {\n\t if (typeof binding === 'string' || typeof binding === 'number') {\n\t return normalize({ key: binding });\n\t }\n\t if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n\t binding = (0, _clone2.default)(binding, false);\n\t }\n\t if (typeof binding.key === 'string') {\n\t if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n\t binding.key = Keyboard.keys[binding.key.toUpperCase()];\n\t } else if (binding.key.length === 1) {\n\t binding.key = binding.key.toUpperCase().charCodeAt(0);\n\t } else {\n\t return null;\n\t }\n\t }\n\t return binding;\n\t}\n\n\texports.default = Keyboard;\n\n/***/ },\n/* 53 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _core = __webpack_require__(1);\n\n\tvar _core2 = _interopRequireDefault(_core);\n\n\tvar _align = __webpack_require__(45);\n\n\tvar _direction = __webpack_require__(48);\n\n\tvar _indent = __webpack_require__(54);\n\n\tvar _blockquote = __webpack_require__(55);\n\n\tvar _blockquote2 = _interopRequireDefault(_blockquote);\n\n\tvar _header = __webpack_require__(56);\n\n\tvar _header2 = _interopRequireDefault(_header);\n\n\tvar _list = __webpack_require__(57);\n\n\tvar _list2 = _interopRequireDefault(_list);\n\n\tvar _background = __webpack_require__(46);\n\n\tvar _color = __webpack_require__(47);\n\n\tvar _font = __webpack_require__(49);\n\n\tvar _size = __webpack_require__(50);\n\n\tvar _bold = __webpack_require__(58);\n\n\tvar _bold2 = _interopRequireDefault(_bold);\n\n\tvar _italic = __webpack_require__(59);\n\n\tvar _italic2 = _interopRequireDefault(_italic);\n\n\tvar _link = __webpack_require__(60);\n\n\tvar _link2 = _interopRequireDefault(_link);\n\n\tvar _script = __webpack_require__(61);\n\n\tvar _script2 = _interopRequireDefault(_script);\n\n\tvar _strike = __webpack_require__(62);\n\n\tvar _strike2 = _interopRequireDefault(_strike);\n\n\tvar _underline = __webpack_require__(63);\n\n\tvar _underline2 = _interopRequireDefault(_underline);\n\n\tvar _image = __webpack_require__(64);\n\n\tvar _image2 = _interopRequireDefault(_image);\n\n\tvar _video = __webpack_require__(65);\n\n\tvar _video2 = _interopRequireDefault(_video);\n\n\tvar _code = __webpack_require__(28);\n\n\tvar _code2 = _interopRequireDefault(_code);\n\n\tvar _formula = __webpack_require__(66);\n\n\tvar _formula2 = _interopRequireDefault(_formula);\n\n\tvar _syntax = __webpack_require__(67);\n\n\tvar _syntax2 = _interopRequireDefault(_syntax);\n\n\tvar _toolbar = __webpack_require__(68);\n\n\tvar _toolbar2 = _interopRequireDefault(_toolbar);\n\n\tvar _icons = __webpack_require__(69);\n\n\tvar _icons2 = _interopRequireDefault(_icons);\n\n\tvar _picker = __webpack_require__(102);\n\n\tvar _picker2 = _interopRequireDefault(_picker);\n\n\tvar _colorPicker = __webpack_require__(104);\n\n\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\n\tvar _iconPicker = __webpack_require__(105);\n\n\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\n\tvar _tooltip = __webpack_require__(106);\n\n\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\n\tvar _bubble = __webpack_require__(107);\n\n\tvar _bubble2 = _interopRequireDefault(_bubble);\n\n\tvar _snow = __webpack_require__(109);\n\n\tvar _snow2 = _interopRequireDefault(_snow);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\t_core2.default.register({\n\t 'attributors/attribute/direction': _direction.DirectionAttribute,\n\n\t 'attributors/class/align': _align.AlignClass,\n\t 'attributors/class/background': _background.BackgroundClass,\n\t 'attributors/class/color': _color.ColorClass,\n\t 'attributors/class/direction': _direction.DirectionClass,\n\t 'attributors/class/font': _font.FontClass,\n\t 'attributors/class/size': _size.SizeClass,\n\n\t 'attributors/style/align': _align.AlignStyle,\n\t 'attributors/style/background': _background.BackgroundStyle,\n\t 'attributors/style/color': _color.ColorStyle,\n\t 'attributors/style/direction': _direction.DirectionStyle,\n\t 'attributors/style/font': _font.FontStyle,\n\t 'attributors/style/size': _size.SizeStyle\n\t}, true);\n\n\t_core2.default.register({\n\t 'formats/align': _align.AlignClass,\n\t 'formats/direction': _direction.DirectionClass,\n\t 'formats/indent': _indent.IndentClass,\n\n\t 'formats/background': _background.BackgroundStyle,\n\t 'formats/color': _color.ColorStyle,\n\t 'formats/font': _font.FontClass,\n\t 'formats/size': _size.SizeClass,\n\n\t 'formats/blockquote': _blockquote2.default,\n\t 'formats/code-block': _code2.default,\n\t 'formats/header': _header2.default,\n\t 'formats/list': _list2.default,\n\n\t 'formats/bold': _bold2.default,\n\t 'formats/code': _code.Code,\n\t 'formats/italic': _italic2.default,\n\t 'formats/link': _link2.default,\n\t 'formats/script': _script2.default,\n\t 'formats/strike': _strike2.default,\n\t 'formats/underline': _underline2.default,\n\n\t 'formats/image': _image2.default,\n\t 'formats/video': _video2.default,\n\n\t 'formats/list/item': _list.ListItem,\n\n\t 'modules/formula': _formula2.default,\n\t 'modules/syntax': _syntax2.default,\n\t 'modules/toolbar': _toolbar2.default,\n\n\t 'themes/bubble': _bubble2.default,\n\t 'themes/snow': _snow2.default,\n\n\t 'ui/icons': _icons2.default,\n\t 'ui/picker': _picker2.default,\n\t 'ui/icon-picker': _iconPicker2.default,\n\t 'ui/color-picker': _colorPicker2.default,\n\t 'ui/tooltip': _tooltip2.default\n\t}, true);\n\n\tmodule.exports = _core2.default;\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.IndentClass = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar IdentAttributor = function (_Parchment$Attributor) {\n\t _inherits(IdentAttributor, _Parchment$Attributor);\n\n\t function IdentAttributor() {\n\t _classCallCheck(this, IdentAttributor);\n\n\t return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n\t }\n\n\t _createClass(IdentAttributor, [{\n\t key: 'add',\n\t value: function add(node, value) {\n\t if (value === '+1' || value === '-1') {\n\t var indent = this.value(node) || 0;\n\t value = value === '+1' ? indent + 1 : indent - 1;\n\t }\n\t if (value === 0) {\n\t this.remove(node);\n\t return true;\n\t } else {\n\t return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n\t }\n\t }\n\t }, {\n\t key: 'canAdd',\n\t value: function canAdd(node, value) {\n\t return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(node) {\n\t return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n\t }\n\t }]);\n\n\t return IdentAttributor;\n\t}(_parchment2.default.Attributor.Class);\n\n\tvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n\t scope: _parchment2.default.Scope.BLOCK,\n\t whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n\t});\n\n\texports.IndentClass = IndentClass;\n\n/***/ },\n/* 55 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Blockquote = function (_Block) {\n\t _inherits(Blockquote, _Block);\n\n\t function Blockquote() {\n\t _classCallCheck(this, Blockquote);\n\n\t return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n\t }\n\n\t return Blockquote;\n\t}(_block2.default);\n\n\tBlockquote.blotName = 'blockquote';\n\tBlockquote.tagName = 'blockquote';\n\n\texports.default = Blockquote;\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Header = function (_Block) {\n\t _inherits(Header, _Block);\n\n\t function Header() {\n\t _classCallCheck(this, Header);\n\n\t return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n\t }\n\n\t _createClass(Header, null, [{\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return this.tagName.indexOf(domNode.tagName) + 1;\n\t }\n\t }]);\n\n\t return Header;\n\t}(_block2.default);\n\n\tHeader.blotName = 'header';\n\tHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\n\texports.default = Header;\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.ListItem = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tvar _container = __webpack_require__(42);\n\n\tvar _container2 = _interopRequireDefault(_container);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _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; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ListItem = function (_Block) {\n\t _inherits(ListItem, _Block);\n\n\t function ListItem() {\n\t _classCallCheck(this, ListItem);\n\n\t return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n\t }\n\n\t _createClass(ListItem, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (name === List.blotName && !value) {\n\t this.replaceWith(_parchment2.default.create(this.statics.scope));\n\t } else {\n\t _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n\t }\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove() {\n\t if (this.prev == null && this.next == null) {\n\t this.parent.remove();\n\t } else {\n\t _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n\t }\n\t }\n\t }, {\n\t key: 'replaceWith',\n\t value: function replaceWith(name, value) {\n\t this.parent.isolate(this.offset(this.parent), this.length());\n\t if (name === this.parent.statics.blotName) {\n\t this.parent.replaceWith(name, value);\n\t return this;\n\t } else {\n\t this.parent.unwrap();\n\t return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n\t }\n\t }\n\t }], [{\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n\t }\n\t }]);\n\n\t return ListItem;\n\t}(_block2.default);\n\n\tListItem.blotName = 'list-item';\n\tListItem.tagName = 'LI';\n\n\tvar List = function (_Container) {\n\t _inherits(List, _Container);\n\n\t _createClass(List, null, [{\n\t key: 'create',\n\t value: function create(value) {\n\t var tagName = value === 'ordered' ? 'OL' : 'UL';\n\t var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n\t if (value === 'checked' || value === 'unchecked') {\n\t node.setAttribute('data-checked', value === 'checked');\n\t }\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t if (domNode.tagName === 'OL') return 'ordered';\n\t if (domNode.tagName === 'UL') {\n\t if (domNode.hasAttribute('data-checked')) {\n\t return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n\t } else {\n\t return 'bullet';\n\t }\n\t }\n\t return undefined;\n\t }\n\t }]);\n\n\t function List(domNode) {\n\t _classCallCheck(this, List);\n\n\t var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n\t domNode.addEventListener('click', function (e) {\n\t if (e.target.parentNode !== domNode) return;\n\t var format = _this2.statics.formats(domNode);\n\t var blot = _parchment2.default.find(e.target);\n\t if (format === 'checked') {\n\t blot.format('list', 'unchecked');\n\t } else if (format === 'unchecked') {\n\t blot.format('list', 'checked');\n\t }\n\t });\n\t return _this2;\n\t }\n\n\t _createClass(List, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (this.children.length > 0) {\n\t this.children.tail.format(name, value);\n\t }\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats() {\n\t // We don't inherit from FormatBlot\n\t return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n\t }\n\t }, {\n\t key: 'insertBefore',\n\t value: function insertBefore(blot, ref) {\n\t if (blot instanceof ListItem) {\n\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n\t } else {\n\t var index = ref == null ? this.length() : ref.offset(this);\n\t var after = this.split(index);\n\t after.parent.insertBefore(blot, after);\n\t }\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this);\n\t var next = this.next;\n\t if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n\t next.moveChildren(this);\n\t next.remove();\n\t }\n\t }\n\t }, {\n\t key: 'replace',\n\t value: function replace(target) {\n\t if (target.statics.blotName !== this.statics.blotName) {\n\t var item = _parchment2.default.create(this.statics.defaultChild);\n\t target.moveChildren(item);\n\t this.appendChild(item);\n\t }\n\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n\t }\n\t }]);\n\n\t return List;\n\t}(_container2.default);\n\n\tList.blotName = 'list';\n\tList.scope = _parchment2.default.Scope.BLOCK_BLOT;\n\tList.tagName = ['OL', 'UL'];\n\tList.defaultChild = 'list-item';\n\tList.allowedChildren = [ListItem];\n\n\texports.ListItem = ListItem;\n\texports.default = List;\n\n/***/ },\n/* 58 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Bold = function (_Inline) {\n\t _inherits(Bold, _Inline);\n\n\t function Bold() {\n\t _classCallCheck(this, Bold);\n\n\t return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n\t }\n\n\t _createClass(Bold, [{\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this);\n\t if (this.domNode.tagName !== this.statics.tagName[0]) {\n\t this.replaceWith(this.statics.blotName);\n\t }\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create() {\n\t return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats() {\n\t return true;\n\t }\n\t }]);\n\n\t return Bold;\n\t}(_inline2.default);\n\n\tBold.blotName = 'bold';\n\tBold.tagName = ['STRONG', 'B'];\n\n\texports.default = Bold;\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _bold = __webpack_require__(58);\n\n\tvar _bold2 = _interopRequireDefault(_bold);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Italic = function (_Bold) {\n\t _inherits(Italic, _Bold);\n\n\t function Italic() {\n\t _classCallCheck(this, Italic);\n\n\t return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n\t }\n\n\t return Italic;\n\t}(_bold2.default);\n\n\tItalic.blotName = 'italic';\n\tItalic.tagName = ['EM', 'I'];\n\n\texports.default = Italic;\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.sanitize = exports.default = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Link = function (_Inline) {\n\t _inherits(Link, _Inline);\n\n\t function Link() {\n\t _classCallCheck(this, Link);\n\n\t return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n\t }\n\n\t _createClass(Link, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n\t value = this.constructor.sanitize(value);\n\t this.domNode.setAttribute('href', value);\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n\t value = this.sanitize(value);\n\t node.setAttribute('href', value);\n\t node.setAttribute('target', '_blank');\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return domNode.getAttribute('href');\n\t }\n\t }, {\n\t key: 'sanitize',\n\t value: function sanitize(url) {\n\t return _sanitize(url, ['http', 'https', 'mailto']) ? url : this.SANITIZED_URL;\n\t }\n\t }]);\n\n\t return Link;\n\t}(_inline2.default);\n\n\tLink.blotName = 'link';\n\tLink.tagName = 'A';\n\tLink.SANITIZED_URL = 'about:blank';\n\n\tfunction _sanitize(url, protocols) {\n\t var anchor = document.createElement('a');\n\t anchor.href = url;\n\t var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n\t return protocols.indexOf(protocol) > -1;\n\t}\n\n\texports.default = Link;\n\texports.sanitize = _sanitize;\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Script = function (_Inline) {\n\t _inherits(Script, _Inline);\n\n\t function Script() {\n\t _classCallCheck(this, Script);\n\n\t return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n\t }\n\n\t _createClass(Script, null, [{\n\t key: 'create',\n\t value: function create(value) {\n\t if (value === 'super') {\n\t return document.createElement('sup');\n\t } else if (value === 'sub') {\n\t return document.createElement('sub');\n\t } else {\n\t return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n\t }\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t if (domNode.tagName === 'SUB') return 'sub';\n\t if (domNode.tagName === 'SUP') return 'super';\n\t return undefined;\n\t }\n\t }]);\n\n\t return Script;\n\t}(_inline2.default);\n\n\tScript.blotName = 'script';\n\tScript.tagName = ['SUB', 'SUP'];\n\n\texports.default = Script;\n\n/***/ },\n/* 62 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Strike = function (_Inline) {\n\t _inherits(Strike, _Inline);\n\n\t function Strike() {\n\t _classCallCheck(this, Strike);\n\n\t return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n\t }\n\n\t return Strike;\n\t}(_inline2.default);\n\n\tStrike.blotName = 'strike';\n\tStrike.tagName = 'S';\n\n\texports.default = Strike;\n\n/***/ },\n/* 63 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Underline = function (_Inline) {\n\t _inherits(Underline, _Inline);\n\n\t function Underline() {\n\t _classCallCheck(this, Underline);\n\n\t return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n\t }\n\n\t return Underline;\n\t}(_inline2.default);\n\n\tUnderline.blotName = 'underline';\n\tUnderline.tagName = 'U';\n\n\texports.default = Underline;\n\n/***/ },\n/* 64 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _link = __webpack_require__(60);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ATTRIBUTES = ['alt', 'height', 'width'];\n\n\tvar Image = function (_Embed) {\n\t _inherits(Image, _Embed);\n\n\t function Image() {\n\t _classCallCheck(this, Image);\n\n\t return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n\t }\n\n\t _createClass(Image, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (ATTRIBUTES.indexOf(name) > -1) {\n\t if (value) {\n\t this.domNode.setAttribute(name, value);\n\t } else {\n\t this.domNode.removeAttribute(name);\n\t }\n\t } else {\n\t _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n\t }\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n\t if (typeof value === 'string') {\n\t node.setAttribute('src', this.sanitize(value));\n\t }\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return ATTRIBUTES.reduce(function (formats, attribute) {\n\t if (domNode.hasAttribute(attribute)) {\n\t formats[attribute] = domNode.getAttribute(attribute);\n\t }\n\t return formats;\n\t }, {});\n\t }\n\t }, {\n\t key: 'match',\n\t value: function match(url) {\n\t return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n\t );\n\t }\n\t }, {\n\t key: 'sanitize',\n\t value: function sanitize(url) {\n\t return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(domNode) {\n\t return domNode.getAttribute('src');\n\t }\n\t }]);\n\n\t return Image;\n\t}(_embed2.default);\n\n\tImage.blotName = 'image';\n\tImage.tagName = 'IMG';\n\n\texports.default = Image;\n\n/***/ },\n/* 65 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _link = __webpack_require__(60);\n\n\tvar _link2 = _interopRequireDefault(_link);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ATTRIBUTES = ['height', 'width'];\n\n\tvar Video = function (_BlockEmbed) {\n\t _inherits(Video, _BlockEmbed);\n\n\t function Video() {\n\t _classCallCheck(this, Video);\n\n\t return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n\t }\n\n\t _createClass(Video, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (ATTRIBUTES.indexOf(name) > -1) {\n\t if (value) {\n\t this.domNode.setAttribute(name, value);\n\t } else {\n\t this.domNode.removeAttribute(name);\n\t }\n\t } else {\n\t _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n\t }\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n\t node.setAttribute('frameborder', '0');\n\t node.setAttribute('allowfullscreen', true);\n\t node.setAttribute('src', this.sanitize(value));\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return ATTRIBUTES.reduce(function (formats, attribute) {\n\t if (domNode.hasAttribute(attribute)) {\n\t formats[attribute] = domNode.getAttribute(attribute);\n\t }\n\t return formats;\n\t }, {});\n\t }\n\t }, {\n\t key: 'sanitize',\n\t value: function sanitize(url) {\n\t return _link2.default.sanitize(url);\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(domNode) {\n\t return domNode.getAttribute('src');\n\t }\n\t }]);\n\n\t return Video;\n\t}(_block.BlockEmbed);\n\n\tVideo.blotName = 'video';\n\tVideo.className = 'ql-video';\n\tVideo.tagName = 'IFRAME';\n\n\texports.default = Video;\n\n/***/ },\n/* 66 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.FormulaBlot = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar FormulaBlot = function (_Embed) {\n\t _inherits(FormulaBlot, _Embed);\n\n\t function FormulaBlot() {\n\t _classCallCheck(this, FormulaBlot);\n\n\t return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n\t }\n\n\t _createClass(FormulaBlot, [{\n\t key: 'index',\n\t value: function index() {\n\t return 1;\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n\t if (typeof value === 'string') {\n\t window.katex.render(value, node);\n\t node.setAttribute('data-value', value);\n\t }\n\t node.setAttribute('contenteditable', false);\n\t return node;\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(domNode) {\n\t return domNode.getAttribute('data-value');\n\t }\n\t }]);\n\n\t return FormulaBlot;\n\t}(_embed2.default);\n\n\tFormulaBlot.blotName = 'formula';\n\tFormulaBlot.className = 'ql-formula';\n\tFormulaBlot.tagName = 'SPAN';\n\n\tfunction Formula() {\n\t if (window.katex == null) {\n\t throw new Error('Formula module requires KaTeX.');\n\t }\n\t _quill2.default.register(FormulaBlot, true);\n\t}\n\n\texports.FormulaBlot = FormulaBlot;\n\texports.default = Formula;\n\n/***/ },\n/* 67 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tvar _code = __webpack_require__(28);\n\n\tvar _code2 = _interopRequireDefault(_code);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar SyntaxCodeBlock = function (_CodeBlock) {\n\t _inherits(SyntaxCodeBlock, _CodeBlock);\n\n\t function SyntaxCodeBlock() {\n\t _classCallCheck(this, SyntaxCodeBlock);\n\n\t return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n\t }\n\n\t _createClass(SyntaxCodeBlock, [{\n\t key: 'replaceWith',\n\t value: function replaceWith(block) {\n\t this.domNode.textContent = this.domNode.textContent;\n\t this.attach();\n\t _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n\t }\n\t }, {\n\t key: 'highlight',\n\t value: function highlight(_highlight) {\n\t if (this.cachedHTML !== this.domNode.innerHTML) {\n\t var text = this.domNode.textContent;\n\t if (text.trim().length > 0 || this.cachedHTML == null) {\n\t this.domNode.innerHTML = _highlight(text);\n\t this.attach();\n\t }\n\t this.cachedHTML = this.domNode.innerHTML;\n\t }\n\t }\n\t }]);\n\n\t return SyntaxCodeBlock;\n\t}(_code2.default);\n\n\tSyntaxCodeBlock.className = 'ql-syntax';\n\n\tvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\n\tvar Syntax = function (_Module) {\n\t _inherits(Syntax, _Module);\n\n\t function Syntax(quill, options) {\n\t _classCallCheck(this, Syntax);\n\n\t var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n\t if (typeof _this2.options.highlight !== 'function') {\n\t throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n\t }\n\t _quill2.default.register(CodeToken, true);\n\t _quill2.default.register(SyntaxCodeBlock, true);\n\t var timer = null;\n\t _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n\t if (timer != null) return;\n\t timer = setTimeout(function () {\n\t _this2.highlight();\n\t timer = null;\n\t }, 100);\n\t });\n\t _this2.highlight();\n\t return _this2;\n\t }\n\n\t _createClass(Syntax, [{\n\t key: 'highlight',\n\t value: function highlight() {\n\t var _this3 = this;\n\n\t if (this.quill.selection.composing) return;\n\t var range = this.quill.getSelection();\n\t this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n\t code.highlight(_this3.options.highlight);\n\t });\n\t this.quill.update(_quill2.default.sources.SILENT);\n\t if (range != null) {\n\t this.quill.setSelection(range, _quill2.default.sources.SILENT);\n\t }\n\t }\n\t }]);\n\n\t return Syntax;\n\t}(_module2.default);\n\n\tSyntax.DEFAULTS = {\n\t highlight: function () {\n\t if (window.hljs == null) return null;\n\t return function (text) {\n\t var result = window.hljs.highlightAuto(text);\n\t return result.value;\n\t };\n\t }()\n\t};\n\n\texports.CodeBlock = SyntaxCodeBlock;\n\texports.CodeToken = CodeToken;\n\texports.default = Syntax;\n\n/***/ },\n/* 68 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.addControls = exports.default = undefined;\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _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; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar debug = (0, _logger2.default)('quill:toolbar');\n\n\tvar Toolbar = function (_Module) {\n\t _inherits(Toolbar, _Module);\n\n\t function Toolbar(quill, options) {\n\t _classCallCheck(this, Toolbar);\n\n\t var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n\t if (Array.isArray(_this.options.container)) {\n\t var container = document.createElement('div');\n\t addControls(container, _this.options.container);\n\t quill.container.parentNode.insertBefore(container, quill.container);\n\t _this.container = container;\n\t } else if (typeof _this.options.container === 'string') {\n\t _this.container = document.querySelector(_this.options.container);\n\t } else {\n\t _this.container = _this.options.container;\n\t }\n\t if (!(_this.container instanceof HTMLElement)) {\n\t var _ret;\n\n\t return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n\t }\n\t _this.container.classList.add('ql-toolbar');\n\t _this.controls = [];\n\t _this.handlers = {};\n\t Object.keys(_this.options.handlers).forEach(function (format) {\n\t _this.addHandler(format, _this.options.handlers[format]);\n\t });\n\t [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n\t _this.attach(input);\n\t });\n\t _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n\t if (type === _quill2.default.events.SELECTION_CHANGE) {\n\t _this.update(range);\n\t }\n\t });\n\t _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n\t var _this$quill$selection = _this.quill.selection.getRange(),\n\t _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n\t range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n\t _this.update(range);\n\t });\n\t return _this;\n\t }\n\n\t _createClass(Toolbar, [{\n\t key: 'addHandler',\n\t value: function addHandler(format, handler) {\n\t this.handlers[format] = handler;\n\t }\n\t }, {\n\t key: 'attach',\n\t value: function attach(input) {\n\t var _this2 = this;\n\n\t var format = [].find.call(input.classList, function (className) {\n\t return className.indexOf('ql-') === 0;\n\t });\n\t if (!format) return;\n\t format = format.slice('ql-'.length);\n\t if (input.tagName === 'BUTTON') {\n\t input.setAttribute('type', 'button');\n\t }\n\t if (this.handlers[format] == null) {\n\t if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n\t debug.warn('ignoring attaching to disabled format', format, input);\n\t return;\n\t }\n\t if (_parchment2.default.query(format) == null) {\n\t debug.warn('ignoring attaching to nonexistent format', format, input);\n\t return;\n\t }\n\t }\n\t var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n\t input.addEventListener(eventName, function (e) {\n\t var value = void 0;\n\t if (input.tagName === 'SELECT') {\n\t if (input.selectedIndex < 0) return;\n\t var selected = input.options[input.selectedIndex];\n\t if (selected.hasAttribute('selected')) {\n\t value = false;\n\t } else {\n\t value = selected.value || false;\n\t }\n\t } else {\n\t if (input.classList.contains('ql-active')) {\n\t value = false;\n\t } else {\n\t value = input.value || !input.hasAttribute('value');\n\t }\n\t e.preventDefault();\n\t }\n\t _this2.quill.focus();\n\n\t var _quill$selection$getR = _this2.quill.selection.getRange(),\n\t _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n\t range = _quill$selection$getR2[0];\n\n\t if (_this2.handlers[format] != null) {\n\t _this2.handlers[format].call(_this2, value);\n\t } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n\t value = prompt('Enter ' + format);\n\t if (!value) return;\n\t _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n\t } else {\n\t _this2.quill.format(format, value, _quill2.default.sources.USER);\n\t }\n\t _this2.update(range);\n\t });\n\t // TODO use weakmap\n\t this.controls.push([format, input]);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(range) {\n\t var formats = range == null ? {} : this.quill.getFormat(range);\n\t this.controls.forEach(function (pair) {\n\t var _pair = _slicedToArray(pair, 2),\n\t format = _pair[0],\n\t input = _pair[1];\n\n\t if (input.tagName === 'SELECT') {\n\t var option = void 0;\n\t if (range == null) {\n\t option = null;\n\t } else if (formats[format] == null) {\n\t option = input.querySelector('option[selected]');\n\t } else if (!Array.isArray(formats[format])) {\n\t var value = formats[format];\n\t if (typeof value === 'string') {\n\t value = value.replace(/\\\"/g, '\\\\\"');\n\t }\n\t option = input.querySelector('option[value=\"' + value + '\"]');\n\t }\n\t if (option == null) {\n\t input.value = ''; // TODO make configurable?\n\t input.selectedIndex = -1;\n\t } else {\n\t option.selected = true;\n\t }\n\t } else {\n\t if (range == null) {\n\t input.classList.remove('ql-active');\n\t } else if (input.hasAttribute('value')) {\n\t // both being null should match (default values)\n\t // '1' should match with 1 (headers)\n\t var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n\t input.classList.toggle('ql-active', isActive);\n\t } else {\n\t input.classList.toggle('ql-active', formats[format] != null);\n\t }\n\t }\n\t });\n\t }\n\t }]);\n\n\t return Toolbar;\n\t}(_module2.default);\n\n\tToolbar.DEFAULTS = {};\n\n\tfunction addButton(container, format, value) {\n\t var input = document.createElement('button');\n\t input.setAttribute('type', 'button');\n\t input.classList.add('ql-' + format);\n\t if (value != null) {\n\t input.value = value;\n\t }\n\t container.appendChild(input);\n\t}\n\n\tfunction addControls(container, groups) {\n\t if (!Array.isArray(groups[0])) {\n\t groups = [groups];\n\t }\n\t groups.forEach(function (controls) {\n\t var group = document.createElement('span');\n\t group.classList.add('ql-formats');\n\t controls.forEach(function (control) {\n\t if (typeof control === 'string') {\n\t addButton(group, control);\n\t } else {\n\t var format = Object.keys(control)[0];\n\t var value = control[format];\n\t if (Array.isArray(value)) {\n\t addSelect(group, format, value);\n\t } else {\n\t addButton(group, format, value);\n\t }\n\t }\n\t });\n\t container.appendChild(group);\n\t });\n\t}\n\n\tfunction addSelect(container, format, values) {\n\t var input = document.createElement('select');\n\t input.classList.add('ql-' + format);\n\t values.forEach(function (value) {\n\t var option = document.createElement('option');\n\t if (value !== false) {\n\t option.setAttribute('value', value);\n\t } else {\n\t option.setAttribute('selected', 'selected');\n\t }\n\t input.appendChild(option);\n\t });\n\t container.appendChild(input);\n\t}\n\n\tToolbar.DEFAULTS = {\n\t container: null,\n\t handlers: {\n\t clean: function clean() {\n\t var _this3 = this;\n\n\t var range = this.quill.getSelection();\n\t if (range == null) return;\n\t if (range.length == 0) {\n\t var formats = this.quill.getFormat();\n\t Object.keys(formats).forEach(function (name) {\n\t // Clean functionality in existing apps only clean inline formats\n\t if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n\t _this3.quill.format(name, false);\n\t }\n\t });\n\t } else {\n\t this.quill.removeFormat(range, _quill2.default.sources.USER);\n\t }\n\t },\n\t direction: function direction(value) {\n\t var align = this.quill.getFormat()['align'];\n\t if (value === 'rtl' && align == null) {\n\t this.quill.format('align', 'right', _quill2.default.sources.USER);\n\t } else if (!value && align === 'right') {\n\t this.quill.format('align', false, _quill2.default.sources.USER);\n\t }\n\t this.quill.format('direction', value, _quill2.default.sources.USER);\n\t },\n\t indent: function indent(value) {\n\t var range = this.quill.getSelection();\n\t var formats = this.quill.getFormat(range);\n\t var indent = parseInt(formats.indent || 0);\n\t if (value === '+1' || value === '-1') {\n\t var modifier = value === '+1' ? 1 : -1;\n\t if (formats.direction === 'rtl') modifier *= -1;\n\t this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n\t }\n\t },\n\t link: function link(value) {\n\t if (value === true) {\n\t value = prompt('Enter link URL:');\n\t }\n\t this.quill.format('link', value, _quill2.default.sources.USER);\n\t },\n\t list: function list(value) {\n\t var range = this.quill.getSelection();\n\t var formats = this.quill.getFormat(range);\n\t if (value === 'check') {\n\t if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t } else {\n\t this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n\t }\n\t } else {\n\t this.quill.format('list', value, _quill2.default.sources.USER);\n\t }\n\t }\n\t }\n\t};\n\n\texports.default = Toolbar;\n\texports.addControls = addControls;\n\n/***/ },\n/* 69 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tmodule.exports = {\n\t 'align': {\n\t '': __webpack_require__(70),\n\t 'center': __webpack_require__(71),\n\t 'right': __webpack_require__(72),\n\t 'justify': __webpack_require__(73)\n\t },\n\t 'background': __webpack_require__(74),\n\t 'blockquote': __webpack_require__(75),\n\t 'bold': __webpack_require__(76),\n\t 'clean': __webpack_require__(77),\n\t 'code': __webpack_require__(78),\n\t 'code-block': __webpack_require__(78),\n\t 'color': __webpack_require__(79),\n\t 'direction': {\n\t '': __webpack_require__(80),\n\t 'rtl': __webpack_require__(81)\n\t },\n\t 'float': {\n\t 'center': __webpack_require__(82),\n\t 'full': __webpack_require__(83),\n\t 'left': __webpack_require__(84),\n\t 'right': __webpack_require__(85)\n\t },\n\t 'formula': __webpack_require__(86),\n\t 'header': {\n\t '1': __webpack_require__(87),\n\t '2': __webpack_require__(88)\n\t },\n\t 'italic': __webpack_require__(89),\n\t 'image': __webpack_require__(90),\n\t 'indent': {\n\t '+1': __webpack_require__(91),\n\t '-1': __webpack_require__(92)\n\t },\n\t 'link': __webpack_require__(93),\n\t 'list': {\n\t 'ordered': __webpack_require__(94),\n\t 'bullet': __webpack_require__(95),\n\t 'check': __webpack_require__(96)\n\t },\n\t 'script': {\n\t 'sub': __webpack_require__(97),\n\t 'super': __webpack_require__(98)\n\t },\n\t 'strike': __webpack_require__(99),\n\t 'underline': __webpack_require__(100),\n\t 'video': __webpack_require__(101)\n\t};\n\n/***/ },\n/* 70 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 71 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 72 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 73 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 74 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 75 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 76 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 77 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 78 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 79 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 80 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 81 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 82 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 83 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 84 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 85 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 86 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 87 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 88 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 89 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 90 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 91 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 92 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 93 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 94 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 95 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 96 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 97 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 98 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 99 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 100 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 101 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 102 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _dropdown = __webpack_require__(103);\n\n\tvar _dropdown2 = _interopRequireDefault(_dropdown);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Picker = function () {\n\t function Picker(select) {\n\t var _this = this;\n\n\t _classCallCheck(this, Picker);\n\n\t this.select = select;\n\t this.container = document.createElement('span');\n\t this.buildPicker();\n\t this.select.style.display = 'none';\n\t this.select.parentNode.insertBefore(this.container, this.select);\n\t this.label.addEventListener('mousedown', function () {\n\t _this.container.classList.toggle('ql-expanded');\n\t });\n\t this.select.addEventListener('change', this.update.bind(this));\n\t }\n\n\t _createClass(Picker, [{\n\t key: 'buildItem',\n\t value: function buildItem(option) {\n\t var _this2 = this;\n\n\t var item = document.createElement('span');\n\t item.classList.add('ql-picker-item');\n\t if (option.hasAttribute('value')) {\n\t item.setAttribute('data-value', option.getAttribute('value'));\n\t }\n\t if (option.textContent) {\n\t item.setAttribute('data-label', option.textContent);\n\t }\n\t item.addEventListener('click', function () {\n\t _this2.selectItem(item, true);\n\t });\n\t return item;\n\t }\n\t }, {\n\t key: 'buildLabel',\n\t value: function buildLabel() {\n\t var label = document.createElement('span');\n\t label.classList.add('ql-picker-label');\n\t label.innerHTML = _dropdown2.default;\n\t this.container.appendChild(label);\n\t return label;\n\t }\n\t }, {\n\t key: 'buildOptions',\n\t value: function buildOptions() {\n\t var _this3 = this;\n\n\t var options = document.createElement('span');\n\t options.classList.add('ql-picker-options');\n\t [].slice.call(this.select.options).forEach(function (option) {\n\t var item = _this3.buildItem(option);\n\t options.appendChild(item);\n\t if (option.hasAttribute('selected')) {\n\t _this3.selectItem(item);\n\t }\n\t });\n\t this.container.appendChild(options);\n\t }\n\t }, {\n\t key: 'buildPicker',\n\t value: function buildPicker() {\n\t var _this4 = this;\n\n\t [].slice.call(this.select.attributes).forEach(function (item) {\n\t _this4.container.setAttribute(item.name, item.value);\n\t });\n\t this.container.classList.add('ql-picker');\n\t this.label = this.buildLabel();\n\t this.buildOptions();\n\t }\n\t }, {\n\t key: 'close',\n\t value: function close() {\n\t this.container.classList.remove('ql-expanded');\n\t }\n\t }, {\n\t key: 'selectItem',\n\t value: function selectItem(item) {\n\t var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t var selected = this.container.querySelector('.ql-selected');\n\t if (item === selected) return;\n\t if (selected != null) {\n\t selected.classList.remove('ql-selected');\n\t }\n\t if (item == null) return;\n\t item.classList.add('ql-selected');\n\t this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n\t if (item.hasAttribute('data-value')) {\n\t this.label.setAttribute('data-value', item.getAttribute('data-value'));\n\t } else {\n\t this.label.removeAttribute('data-value');\n\t }\n\t if (item.hasAttribute('data-label')) {\n\t this.label.setAttribute('data-label', item.getAttribute('data-label'));\n\t } else {\n\t this.label.removeAttribute('data-label');\n\t }\n\t if (trigger) {\n\t if (typeof Event === 'function') {\n\t this.select.dispatchEvent(new Event('change'));\n\t } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n\t // IE11\n\t var event = document.createEvent('Event');\n\t event.initEvent('change', true, true);\n\t this.select.dispatchEvent(event);\n\t }\n\t this.close();\n\t }\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t var option = void 0;\n\t if (this.select.selectedIndex > -1) {\n\t var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n\t option = this.select.options[this.select.selectedIndex];\n\t this.selectItem(item);\n\t } else {\n\t this.selectItem(null);\n\t }\n\t var isActive = option != null && option !== this.select.querySelector('option[selected]');\n\t this.label.classList.toggle('ql-active', isActive);\n\t }\n\t }]);\n\n\t return Picker;\n\t}();\n\n\texports.default = Picker;\n\n/***/ },\n/* 103 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _picker = __webpack_require__(102);\n\n\tvar _picker2 = _interopRequireDefault(_picker);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ColorPicker = function (_Picker) {\n\t _inherits(ColorPicker, _Picker);\n\n\t function ColorPicker(select, label) {\n\t _classCallCheck(this, ColorPicker);\n\n\t var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n\t _this.label.innerHTML = label;\n\t _this.container.classList.add('ql-color-picker');\n\t [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n\t item.classList.add('ql-primary');\n\t });\n\t return _this;\n\t }\n\n\t _createClass(ColorPicker, [{\n\t key: 'buildItem',\n\t value: function buildItem(option) {\n\t var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n\t item.style.backgroundColor = option.getAttribute('value') || '';\n\t return item;\n\t }\n\t }, {\n\t key: 'selectItem',\n\t value: function selectItem(item, trigger) {\n\t _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\t var colorLabel = this.label.querySelector('.ql-color-label');\n\t var value = item ? item.getAttribute('data-value') || '' : '';\n\t if (colorLabel) {\n\t if (colorLabel.tagName === 'line') {\n\t colorLabel.style.stroke = value;\n\t } else {\n\t colorLabel.style.fill = value;\n\t }\n\t }\n\t }\n\t }]);\n\n\t return ColorPicker;\n\t}(_picker2.default);\n\n\texports.default = ColorPicker;\n\n/***/ },\n/* 105 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _picker = __webpack_require__(102);\n\n\tvar _picker2 = _interopRequireDefault(_picker);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar IconPicker = function (_Picker) {\n\t _inherits(IconPicker, _Picker);\n\n\t function IconPicker(select, icons) {\n\t _classCallCheck(this, IconPicker);\n\n\t var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n\t _this.container.classList.add('ql-icon-picker');\n\t [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n\t item.innerHTML = icons[item.getAttribute('data-value') || ''];\n\t });\n\t _this.defaultItem = _this.container.querySelector('.ql-selected');\n\t _this.selectItem(_this.defaultItem);\n\t return _this;\n\t }\n\n\t _createClass(IconPicker, [{\n\t key: 'selectItem',\n\t value: function selectItem(item, trigger) {\n\t _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\t item = item || this.defaultItem;\n\t this.label.innerHTML = item.innerHTML;\n\t }\n\t }]);\n\n\t return IconPicker;\n\t}(_picker2.default);\n\n\texports.default = IconPicker;\n\n/***/ },\n/* 106 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Tooltip = function () {\n\t function Tooltip(quill, boundsContainer) {\n\t var _this = this;\n\n\t _classCallCheck(this, Tooltip);\n\n\t this.quill = quill;\n\t this.boundsContainer = boundsContainer || document.body;\n\t this.root = quill.addContainer('ql-tooltip');\n\t this.root.innerHTML = this.constructor.TEMPLATE;\n\t this.quill.root.addEventListener('scroll', function () {\n\t _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n\t });\n\t this.hide();\n\t }\n\n\t _createClass(Tooltip, [{\n\t key: 'hide',\n\t value: function hide() {\n\t this.root.classList.add('ql-hidden');\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position(reference) {\n\t var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n\t var top = reference.bottom + this.quill.root.scrollTop;\n\t this.root.style.left = left + 'px';\n\t this.root.style.top = top + 'px';\n\t this.root.classList.remove('ql-flip');\n\t var containerBounds = this.boundsContainer.getBoundingClientRect();\n\t var rootBounds = this.root.getBoundingClientRect();\n\t var shift = 0;\n\t if (rootBounds.right > containerBounds.right) {\n\t shift = containerBounds.right - rootBounds.right;\n\t this.root.style.left = left + shift + 'px';\n\t }\n\t if (rootBounds.left < containerBounds.left) {\n\t shift = containerBounds.left - rootBounds.left;\n\t this.root.style.left = left + shift + 'px';\n\t }\n\t if (rootBounds.bottom > containerBounds.bottom) {\n\t var height = rootBounds.bottom - rootBounds.top;\n\t var verticalShift = containerBounds.bottom - rootBounds.bottom - height;\n\t this.root.style.top = top + verticalShift + 'px';\n\t this.root.classList.add('ql-flip');\n\t }\n\t return shift;\n\t }\n\t }, {\n\t key: 'show',\n\t value: function show() {\n\t this.root.classList.remove('ql-editing');\n\t this.root.classList.remove('ql-hidden');\n\t }\n\t }]);\n\n\t return Tooltip;\n\t}();\n\n\texports.default = Tooltip;\n\n/***/ },\n/* 107 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.BubbleTooltip = undefined;\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _emitter = __webpack_require__(35);\n\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\n\tvar _base = __webpack_require__(108);\n\n\tvar _base2 = _interopRequireDefault(_base);\n\n\tvar _selection = __webpack_require__(40);\n\n\tvar _icons = __webpack_require__(69);\n\n\tvar _icons2 = _interopRequireDefault(_icons);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\n\tvar BubbleTheme = function (_BaseTheme) {\n\t _inherits(BubbleTheme, _BaseTheme);\n\n\t function BubbleTheme(quill, options) {\n\t _classCallCheck(this, BubbleTheme);\n\n\t if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n\t options.modules.toolbar.container = TOOLBAR_CONFIG;\n\t }\n\n\t var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n\t _this.quill.container.classList.add('ql-bubble');\n\t return _this;\n\t }\n\n\t _createClass(BubbleTheme, [{\n\t key: 'extendToolbar',\n\t value: function extendToolbar(toolbar) {\n\t this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n\t this.tooltip.root.appendChild(toolbar.container);\n\t this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n\t this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n\t }\n\t }]);\n\n\t return BubbleTheme;\n\t}(_base2.default);\n\n\tBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n\t modules: {\n\t toolbar: {\n\t handlers: {\n\t link: function link(value) {\n\t if (!value) {\n\t this.quill.format('link', false);\n\t } else {\n\t this.quill.theme.tooltip.edit();\n\t }\n\t }\n\t }\n\t }\n\t }\n\t});\n\n\tvar BubbleTooltip = function (_BaseTooltip) {\n\t _inherits(BubbleTooltip, _BaseTooltip);\n\n\t function BubbleTooltip(quill, bounds) {\n\t _classCallCheck(this, BubbleTooltip);\n\n\t var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n\t _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n\t if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n\t if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n\t _this2.show();\n\t // Lock our width so we will expand beyond our offsetParent boundaries\n\t _this2.root.style.left = '0px';\n\t _this2.root.style.width = '';\n\t _this2.root.style.width = _this2.root.offsetWidth + 'px';\n\t var lines = _this2.quill.getLines(range.index, range.length);\n\t if (lines.length === 1) {\n\t _this2.position(_this2.quill.getBounds(range));\n\t } else {\n\t var lastLine = lines[lines.length - 1];\n\t var index = _this2.quill.getIndex(lastLine);\n\t var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n\t var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n\t _this2.position(_bounds);\n\t }\n\t } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n\t _this2.hide();\n\t }\n\t });\n\t return _this2;\n\t }\n\n\t _createClass(BubbleTooltip, [{\n\t key: 'listen',\n\t value: function listen() {\n\t var _this3 = this;\n\n\t _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n\t this.root.querySelector('.ql-close').addEventListener('click', function () {\n\t _this3.root.classList.remove('ql-editing');\n\t });\n\t this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t // Let selection be restored by toolbar handlers before repositioning\n\t setTimeout(function () {\n\t if (_this3.root.classList.contains('ql-hidden')) return;\n\t var range = _this3.quill.getSelection();\n\t if (range != null) {\n\t _this3.position(_this3.quill.getBounds(range));\n\t }\n\t }, 1);\n\t });\n\t }\n\t }, {\n\t key: 'cancel',\n\t value: function cancel() {\n\t this.show();\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position(reference) {\n\t var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n\t var arrow = this.root.querySelector('.ql-tooltip-arrow');\n\t arrow.style.marginLeft = '';\n\t if (shift === 0) return shift;\n\t arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n\t }\n\t }]);\n\n\t return BubbleTooltip;\n\t}(_base.BaseTooltip);\n\n\tBubbleTooltip.TEMPLATE = ['', ''].join('');\n\n\texports.BubbleTooltip = BubbleTooltip;\n\texports.default = BubbleTheme;\n\n/***/ },\n/* 108 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.BaseTooltip = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _emitter = __webpack_require__(35);\n\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\n\tvar _keyboard = __webpack_require__(52);\n\n\tvar _keyboard2 = _interopRequireDefault(_keyboard);\n\n\tvar _theme = __webpack_require__(41);\n\n\tvar _theme2 = _interopRequireDefault(_theme);\n\n\tvar _colorPicker = __webpack_require__(104);\n\n\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\n\tvar _iconPicker = __webpack_require__(105);\n\n\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\n\tvar _picker = __webpack_require__(102);\n\n\tvar _picker2 = _interopRequireDefault(_picker);\n\n\tvar _tooltip = __webpack_require__(106);\n\n\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ALIGNS = [false, 'center', 'right', 'justify'];\n\n\tvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\n\tvar FONTS = [false, 'serif', 'monospace'];\n\n\tvar HEADERS = ['1', '2', '3', false];\n\n\tvar SIZES = ['small', false, 'large', 'huge'];\n\n\tvar BaseTheme = function (_Theme) {\n\t _inherits(BaseTheme, _Theme);\n\n\t function BaseTheme(quill, options) {\n\t _classCallCheck(this, BaseTheme);\n\n\t var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n\t var listener = function listener(e) {\n\t if (!document.body.contains(quill.root)) {\n\t return document.body.removeEventListener('click', listener);\n\t }\n\t if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n\t _this.tooltip.hide();\n\t }\n\t if (_this.pickers != null) {\n\t _this.pickers.forEach(function (picker) {\n\t if (!picker.container.contains(e.target)) {\n\t picker.close();\n\t }\n\t });\n\t }\n\t };\n\t document.body.addEventListener('click', listener);\n\t return _this;\n\t }\n\n\t _createClass(BaseTheme, [{\n\t key: 'addModule',\n\t value: function addModule(name) {\n\t var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n\t if (name === 'toolbar') {\n\t this.extendToolbar(module);\n\t }\n\t return module;\n\t }\n\t }, {\n\t key: 'buildButtons',\n\t value: function buildButtons(buttons, icons) {\n\t buttons.forEach(function (button) {\n\t var className = button.getAttribute('class') || '';\n\t className.split(/\\s+/).forEach(function (name) {\n\t if (!name.startsWith('ql-')) return;\n\t name = name.slice('ql-'.length);\n\t if (icons[name] == null) return;\n\t if (name === 'direction') {\n\t button.innerHTML = icons[name][''] + icons[name]['rtl'];\n\t } else if (typeof icons[name] === 'string') {\n\t button.innerHTML = icons[name];\n\t } else {\n\t var value = button.value || '';\n\t if (value != null && icons[name][value]) {\n\t button.innerHTML = icons[name][value];\n\t }\n\t }\n\t });\n\t });\n\t }\n\t }, {\n\t key: 'buildPickers',\n\t value: function buildPickers(selects, icons) {\n\t var _this2 = this;\n\n\t this.pickers = selects.map(function (select) {\n\t if (select.classList.contains('ql-align')) {\n\t if (select.querySelector('option') == null) {\n\t fillSelect(select, ALIGNS);\n\t }\n\t return new _iconPicker2.default(select, icons.align);\n\t } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n\t var format = select.classList.contains('ql-background') ? 'background' : 'color';\n\t if (select.querySelector('option') == null) {\n\t fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n\t }\n\t return new _colorPicker2.default(select, icons[format]);\n\t } else {\n\t if (select.querySelector('option') == null) {\n\t if (select.classList.contains('ql-font')) {\n\t fillSelect(select, FONTS);\n\t } else if (select.classList.contains('ql-header')) {\n\t fillSelect(select, HEADERS);\n\t } else if (select.classList.contains('ql-size')) {\n\t fillSelect(select, SIZES);\n\t }\n\t }\n\t return new _picker2.default(select);\n\t }\n\t });\n\t var update = function update() {\n\t _this2.pickers.forEach(function (picker) {\n\t picker.update();\n\t });\n\t };\n\t this.quill.on(_emitter2.default.events.SELECTION_CHANGE, update).on(_emitter2.default.events.SCROLL_OPTIMIZE, update);\n\t }\n\t }]);\n\n\t return BaseTheme;\n\t}(_theme2.default);\n\n\tBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n\t modules: {\n\t toolbar: {\n\t handlers: {\n\t formula: function formula() {\n\t this.quill.theme.tooltip.edit('formula');\n\t },\n\t image: function image() {\n\t var _this3 = this;\n\n\t var fileInput = this.container.querySelector('input.ql-image[type=file]');\n\t if (fileInput == null) {\n\t fileInput = document.createElement('input');\n\t fileInput.setAttribute('type', 'file');\n\t fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon, image/svg+xml');\n\t fileInput.classList.add('ql-image');\n\t fileInput.addEventListener('change', function () {\n\t if (fileInput.files != null && fileInput.files[0] != null) {\n\t var reader = new FileReader();\n\t reader.onload = function (e) {\n\t var range = _this3.quill.getSelection(true);\n\t _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n\t fileInput.value = \"\";\n\t };\n\t reader.readAsDataURL(fileInput.files[0]);\n\t }\n\t });\n\t this.container.appendChild(fileInput);\n\t }\n\t fileInput.click();\n\t },\n\t video: function video() {\n\t this.quill.theme.tooltip.edit('video');\n\t }\n\t }\n\t }\n\t }\n\t});\n\n\tvar BaseTooltip = function (_Tooltip) {\n\t _inherits(BaseTooltip, _Tooltip);\n\n\t function BaseTooltip(quill, boundsContainer) {\n\t _classCallCheck(this, BaseTooltip);\n\n\t var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n\t _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n\t _this4.listen();\n\t return _this4;\n\t }\n\n\t _createClass(BaseTooltip, [{\n\t key: 'listen',\n\t value: function listen() {\n\t var _this5 = this;\n\n\t this.textbox.addEventListener('keydown', function (event) {\n\t if (_keyboard2.default.match(event, 'enter')) {\n\t _this5.save();\n\t event.preventDefault();\n\t } else if (_keyboard2.default.match(event, 'escape')) {\n\t _this5.cancel();\n\t event.preventDefault();\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'cancel',\n\t value: function cancel() {\n\t this.hide();\n\t }\n\t }, {\n\t key: 'edit',\n\t value: function edit() {\n\t var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n\t var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t this.root.classList.remove('ql-hidden');\n\t this.root.classList.add('ql-editing');\n\t if (preview != null) {\n\t this.textbox.value = preview;\n\t } else if (mode !== this.root.getAttribute('data-mode')) {\n\t this.textbox.value = '';\n\t }\n\t this.position(this.quill.getBounds(this.quill.selection.savedRange));\n\t this.textbox.select();\n\t this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n\t this.root.setAttribute('data-mode', mode);\n\t }\n\t }, {\n\t key: 'restoreFocus',\n\t value: function restoreFocus() {\n\t var scrollTop = this.quill.root.scrollTop;\n\t this.quill.focus();\n\t this.quill.root.scrollTop = scrollTop;\n\t }\n\t }, {\n\t key: 'save',\n\t value: function save() {\n\t var value = this.textbox.value;\n\t switch (this.root.getAttribute('data-mode')) {\n\t case 'link':\n\t {\n\t var scrollTop = this.quill.root.scrollTop;\n\t if (this.linkRange) {\n\t this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n\t delete this.linkRange;\n\t } else {\n\t this.restoreFocus();\n\t this.quill.format('link', value, _emitter2.default.sources.USER);\n\t }\n\t this.quill.root.scrollTop = scrollTop;\n\t break;\n\t }\n\t case 'video':\n\t {\n\t var match = value.match(/^(https?):\\/\\/(www\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || value.match(/^(https?):\\/\\/(www\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n\t if (match) {\n\t value = match[1] + '://www.youtube.com/embed/' + match[3] + '?showinfo=0';\n\t } else if (match = value.match(/^(https?):\\/\\/(www\\.)?vimeo\\.com\\/(\\d+)/)) {\n\t // eslint-disable-line no-cond-assign\n\t value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';\n\t }\n\t } // eslint-disable-next-line no-fallthrough\n\t case 'formula':\n\t {\n\t var range = this.quill.getSelection(true);\n\t var index = range.index + range.length;\n\t if (range != null) {\n\t this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n\t if (this.root.getAttribute('data-mode') === 'formula') {\n\t this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n\t }\n\t this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n\t }\n\t break;\n\t }\n\t default:\n\t }\n\t this.textbox.value = '';\n\t this.hide();\n\t }\n\t }]);\n\n\t return BaseTooltip;\n\t}(_tooltip2.default);\n\n\tfunction fillSelect(select, values) {\n\t var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t values.forEach(function (value) {\n\t var option = document.createElement('option');\n\t if (value === defaultValue) {\n\t option.setAttribute('selected', 'selected');\n\t } else {\n\t option.setAttribute('value', value);\n\t }\n\t select.appendChild(option);\n\t });\n\t}\n\n\texports.BaseTooltip = BaseTooltip;\n\texports.default = BaseTheme;\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _emitter = __webpack_require__(35);\n\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\n\tvar _base = __webpack_require__(108);\n\n\tvar _base2 = _interopRequireDefault(_base);\n\n\tvar _link = __webpack_require__(60);\n\n\tvar _link2 = _interopRequireDefault(_link);\n\n\tvar _selection = __webpack_require__(40);\n\n\tvar _icons = __webpack_require__(69);\n\n\tvar _icons2 = _interopRequireDefault(_icons);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\n\tvar SnowTheme = function (_BaseTheme) {\n\t _inherits(SnowTheme, _BaseTheme);\n\n\t function SnowTheme(quill, options) {\n\t _classCallCheck(this, SnowTheme);\n\n\t if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n\t options.modules.toolbar.container = TOOLBAR_CONFIG;\n\t }\n\n\t var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n\t _this.quill.container.classList.add('ql-snow');\n\t return _this;\n\t }\n\n\t _createClass(SnowTheme, [{\n\t key: 'extendToolbar',\n\t value: function extendToolbar(toolbar) {\n\t toolbar.container.classList.add('ql-snow');\n\t this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n\t this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n\t this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n\t if (toolbar.container.querySelector('.ql-link')) {\n\t this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n\t toolbar.handlers['link'].call(toolbar, !context.format.link);\n\t });\n\t }\n\t }\n\t }]);\n\n\t return SnowTheme;\n\t}(_base2.default);\n\n\tSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n\t modules: {\n\t toolbar: {\n\t handlers: {\n\t link: function link(value) {\n\t if (value) {\n\t var range = this.quill.getSelection();\n\t if (range == null || range.length == 0) return;\n\t var preview = this.quill.getText(range);\n\t if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n\t preview = 'mailto:' + preview;\n\t }\n\t var tooltip = this.quill.theme.tooltip;\n\t tooltip.edit('link', preview);\n\t } else {\n\t this.quill.format('link', false);\n\t }\n\t }\n\t }\n\t }\n\t }\n\t});\n\n\tvar SnowTooltip = function (_BaseTooltip) {\n\t _inherits(SnowTooltip, _BaseTooltip);\n\n\t function SnowTooltip(quill, bounds) {\n\t _classCallCheck(this, SnowTooltip);\n\n\t var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n\t _this2.preview = _this2.root.querySelector('a.ql-preview');\n\t return _this2;\n\t }\n\n\t _createClass(SnowTooltip, [{\n\t key: 'listen',\n\t value: function listen() {\n\t var _this3 = this;\n\n\t _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n\t this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n\t if (_this3.root.classList.contains('ql-editing')) {\n\t _this3.save();\n\t } else {\n\t _this3.edit('link', _this3.preview.textContent);\n\t }\n\t event.preventDefault();\n\t });\n\t this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n\t if (_this3.linkRange != null) {\n\t _this3.restoreFocus();\n\t _this3.quill.formatText(_this3.linkRange, 'link', false, _emitter2.default.sources.USER);\n\t delete _this3.linkRange;\n\t }\n\t event.preventDefault();\n\t _this3.hide();\n\t });\n\t this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n\t if (range == null) return;\n\t if (range.length === 0 && source === _emitter2.default.sources.USER) {\n\t var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n\t _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n\t link = _quill$scroll$descend2[0],\n\t offset = _quill$scroll$descend2[1];\n\n\t if (link != null) {\n\t _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n\t var preview = _link2.default.formats(link.domNode);\n\t _this3.preview.textContent = preview;\n\t _this3.preview.setAttribute('href', preview);\n\t _this3.show();\n\t _this3.position(_this3.quill.getBounds(_this3.linkRange));\n\t return;\n\t }\n\t } else {\n\t delete _this3.linkRange;\n\t }\n\t _this3.hide();\n\t });\n\t }\n\t }, {\n\t key: 'show',\n\t value: function show() {\n\t _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n\t this.root.removeAttribute('data-mode');\n\t }\n\t }]);\n\n\t return SnowTooltip;\n\t}(_base.BaseTooltip);\n\n\tSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\n\texports.default = SnowTheme;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/quill/dist/quill.js\n// module id = 1\n// module chunks = 0","'use strict';\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar QuillMixin = require('./mixin');\nvar find = require('lodash/find');\nvar some = require('lodash/some');\nvar isEqual = require('lodash/isEqual');\nvar T = React.PropTypes;\n\nvar QuillComponent = React.createClass({\n\n\tdisplayName: 'Quill',\n\n\tmixins: [ QuillMixin ],\n\n\tpropTypes: {\n\t\tid: T.string,\n\t\tclassName: T.string,\n\t\ttheme: T.string,\n\t\tstyle: T.object,\n\t\treadOnly: T.bool,\n\t\tvalue: T.string,\n\t\tdefaultValue: T.string,\n\t\tplaceholder: T.string,\n\t\tbounds: T.oneOfType([T.string, T.element]),\n\t\tonKeyPress: T.func,\n\t\tonKeyDown: T.func,\n\t\tonKeyUp: T.func,\n\t\tonChange: T.func,\n\t\tonChangeSelection: T.func,\n\n\t\tmodules: function(props) {\n\t\t\tvar isNotObject = T.object.apply(this, arguments);\n\t\t\tif (isNotObject) return isNotObject;\n\n\t\t\tif (\n\t\t\t\tprops.modules && \n\t\t\t\tprops.modules.toolbar &&\n\t\t\t\tprops.modules.toolbar[0] &&\n\t\t\t\tprops.modules.toolbar[0].type\n\t\t\t) return new Error(\n\t\t\t\t'Since v1.0.0, React Quill will not create a custom toolbar for you ' +\n\t\t\t\t'anymore. Create a toolbar explictly, or let Quill create one. ' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t},\n\n\t\ttoolbar: function(props) {\n\t\t\tif ('toolbar' in props) return new Error(\n\t\t\t\t'The `toolbar` prop has been deprecated. Use `modules.toolbar` instead. ' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t},\n\n\t\tformats: function(props) {\n\t\t\tvar isNotArrayOfString = T.arrayOf(T.string).apply(this, arguments);\n\n\t\t\tif (isNotArrayOfString) return new Error(\n\t\t\t\t'You cannot specify custom `formats` anymore. Use Parchment instead. ' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t},\n\n\t\tstyles: function(props) {\n\t\t\tif ('styles' in props) return new Error(\n\t\t\t\t'The `styles` prop has been deprecated. Use custom stylesheets instead. ' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t},\n\n\t\tpollInterval: function(props) {\n\t\t\tif ('pollInterval' in props) return new Error(\n\t\t\t\t'The `pollInterval` property does not have any effect anymore. ' +\n\t\t\t\t'You can safely remove it from your props.' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t}\n\t},\n\t\t\n\t/*\n\tChanging one of these props should cause a re-render.\n\t*/\n\tdirtyProps: [\n\t\t'id',\n\t\t'className',\n\t\t'style',\n\t\t'modules',\n\t\t'formats',\n\t\t'bounds',\n\t\t'theme',\n\t],\n\n\tgetDefaultProps: function() {\n\t\treturn {\n\t\t\tclassName: '',\n\t\t\ttheme: 'snow',\n\t\t\tmodules: {},\n\t\t};\n\t},\n\n\t/*\n\tWe consider the component to be controlled if\n\twhenever `value` is being sent in props.\n\t*/\n\tisControlled: function() {\n\t\treturn 'value' in this.props;\n\t},\n\n\tgetInitialState: function() {\n\t\treturn {\n\t\t\tvalue: this.isControlled()\n\t\t\t\t? this.props.value\n\t\t\t\t: this.props.defaultValue\n\t\t};\n\t},\n\n\tcomponentWillReceiveProps: function(nextProps) {\n\t\tvar editor = this.state.editor;\n\t\t// If the component is unmounted and mounted too quickly\n\t\t// an error is thrown in setEditorContents since editor is\n\t\t// still undefined. Must check if editor is undefined\n\t\t// before performing this call.\n\t\tif (editor) {\n\t\t\t// Update only if we've been passed a new `value`.\n\t\t\t// This leaves components using `defaultValue` alone.\n\t\t\tif ('value' in nextProps) {\n\t\t\t\t// NOTE: Seeing that Quill is missing a way to prevent\n\t\t\t\t// edits, we have to settle for a hybrid between\n\t\t\t\t// controlled and uncontrolled mode. We can't prevent\n\t\t\t\t// the change, but we'll still override content\n\t\t\t\t// whenever `value` differs from current state.\n\t\t\t\tif (nextProps.value !== this.getEditorContents()) {\n\t\t\t\t\tthis.setEditorContents(editor, nextProps.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// We can update readOnly state in-place.\n\t\t\tif ('readOnly' in nextProps) {\n\t\t\t\tif (nextProps.readOnly !== this.props.readOnly) {\n\t\t\t\t\tthis.setEditorReadOnly(editor, nextProps.readOnly);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tcomponentDidMount: function() {\n\t\tvar editor = this.createEditor(\n\t\t\tthis.getEditorElement(),\n\t\t\tthis.getEditorConfig()\n\t\t);\n\t\tthis.setState({ editor:editor });\n\t},\n\n\tcomponentWillUnmount: function() {\n\t\t// NOTE: Don't set the state to null here\n\t\t// as it would generate a loop.\n\t\tvar e = this.getEditor();\n\t\tif (e) this.unhookEditor(e);\n\t},\n\n\tshouldComponentUpdate: function(nextProps, nextState) {\n\t\t// Rerender whenever a \"dirtyProp\" changes\n\t\tvar props = this.props;\n\t\treturn some(this.dirtyProps, function(prop) {\n\t\t\treturn !isEqual(nextProps[prop], props[prop]);\n\t\t});\n\t},\n\n\t/*\n\tIf for whatever reason we are rendering again,\n\twe should tear down the editor and bring it up\n\tagain.\n\t*/\n\tcomponentWillUpdate: function() {\n\t\tthis.componentWillUnmount();\n\t},\n\n\tcomponentDidUpdate: function() {\n\t\tthis.componentDidMount();\n\t},\n\n\tgetEditorConfig: function() {\n\t\treturn {\n\t\t\tbounds: this.props.bounds,\n\t\t\tformats: this.props.formats,\n\t\t\tmodules: this.props.modules,\n\t\t\tplaceholder: this.props.placeholder,\n\t\t\treadOnly: this.props.readOnly,\n\t\t\ttheme: this.props.theme,\n\t\t};\n\t},\n\n\tgetEditor: function() {\n\t\treturn this.state.editor;\n\t},\n\n\tgetEditorElement: function() {\n\t\treturn ReactDOM.findDOMNode(this.refs.editor);\n\t},\n\n\tgetEditorContents: function() {\n\t\treturn this.state.value;\n\t},\n\n\tgetEditorSelection: function() {\n\t\treturn this.state.selection;\n\t},\n\n\t/*\n\tRenders an editor element, unless it has been provided one to clone.\n\t*/\n\trenderContents: function() {\n\t\tvar contents = [];\n\t\tvar children = React.Children.map(\n\t\t\tthis.props.children,\n\t\t\tfunction(c) { return React.cloneElement(c, {ref: c.ref}); }\n\t\t);\n\n\t\tvar editor = find(children, function(child) {\n\t\t\treturn child.ref === 'editor';\n\t\t});\n\t\tcontents.push(editor || React.DOM.div({\n\t\t\tkey: 'editor-' + Math.random(),\n\t\t\tref: 'editor',\n\t\t\tclassName: 'quill-contents',\n\t\t\tdangerouslySetInnerHTML: { __html:this.getEditorContents() }\n\t\t}));\n\n\t\treturn contents;\n\t},\n\n\trender: function() {\n\t\treturn React.DOM.div({\n\t\t\tid: this.props.id,\n\t\t\tstyle: this.props.style,\n\t\t\tclassName: ['quill'].concat(this.props.className).join(' '),\n\t\t\tonKeyPress: this.props.onKeyPress,\n\t\t\tonKeyDown: this.props.onKeyDown,\n\t\t\tonKeyUp: this.props.onKeyUp },\n\t\t\tthis.renderContents()\n\t\t);\n\t},\n\n\tonEditorChange: function(value, delta, source, editor) {\n\t\tif (value !== this.getEditorContents()) {\n\t\t\tthis.setState({ value: value });\n\t\t\tif (this.props.onChange) {\n\t\t\t\tthis.props.onChange(value, delta, source, editor);\n\t\t\t}\n\t\t}\n\t},\n\n\tonEditorChangeSelection: function(range, source, editor) {\n\t\tvar s = this.getEditorSelection() || {};\n\t\tvar r = range || {};\n\t\tif (r.length !== s.length || r.index !== s.index) {\n\t\t\tthis.setState({ selection: range });\n\t\t\tif (this.props.onChangeSelection) {\n\t\t\t\tthis.props.onChangeSelection(range, source, editor);\n\t\t\t}\n\t\t}\n\t},\n\n\tfocus: function() {\n\t\tthis.state.editor.focus();\n\t},\n\n\tblur: function() {\n\t\tthis.setEditorSelection(this.state.editor, null);\n\t}\n\n});\n\nmodule.exports = QuillComponent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component.js\n// module id = 2\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_3__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 3\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}\n// module id = 4\n// module chunks = 0","'use strict';\n\nvar Quill = require('quill');\n\nvar QuillMixin = {\n\n\t/**\n\tCreates an editor on the given element. The editor will\n\tbe passed the configuration, have its events bound,\n\t*/\n\tcreateEditor: function($el, config) {\n\t\tvar editor = new Quill($el, config);\n\t\tthis.hookEditor(editor);\n\t\treturn editor;\n\t},\n\n\thookEditor: function(editor) {\n\t\t// Expose the editor on change events via a weaker,\n\t\t// unprivileged proxy object that does not allow\n\t\t// accidentally modifying editor state.\n\t\tvar unprivilegedEditor = this.makeUnprivilegedEditor(editor);\n\n\t\tthis.handleEditorChange = function(delta, oldDelta, source) {\n\t\t\tif (this.onEditorChange) {\n\t\t\t\tthis.onEditorChange(\n\t\t\t\t\teditor.root.innerHTML, delta, source,\n\t\t\t\t\tunprivilegedEditor\n\t\t\t\t);\n\t\t\t\tthis.onEditorChangeSelection(\n\t\t\t\t\teditor.getSelection(), source,\n\t\t\t\t\tunprivilegedEditor\n\t\t\t\t);\n\t\t\t}\n\t\t}.bind(this);\n\n\t\tthis.handleSelectionChange = function(range, oldRange, source) {\n\t\t\tif (this.onEditorChangeSelection) {\n\t\t\t\tthis.onEditorChangeSelection(\n\t\t\t\t\trange, source,\n\t\t\t\t\tunprivilegedEditor\n\t\t\t\t);\n\t\t\t}\n\t\t}.bind(this);\n\n\t\teditor.on('editor-change', this.handleEditorChange);\n\t\teditor.on('selection-change', this.handleSelectionChange);\n\t},\n\n\tunhookEditor: function(editor) {\n\t\teditor.off('selection-change');\n\t\teditor.off('editor-change');\n\t},\n\n\tsetEditorReadOnly: function(editor, value) {\n\t\tvalue? editor.disable()\n\t\t : editor.enable();\n\t},\n\n\t/*\n\tReplace the contents of the editor, but keep\n\tthe previous selection hanging around so that\n\tthe cursor won't move.\n\t*/\n\tsetEditorContents: function(editor, value) {\n\t\tvar sel = editor.getSelection();\n\t\teditor.pasteHTML(value || '');\n\t\tif (sel) this.setEditorSelection(editor, sel);\n\t},\n\n\tsetEditorSelection: function(editor, range) {\n\t\tif (range) {\n\t\t\t// Validate bounds before applying.\n\t\t\tvar length = editor.getLength();\n\t\t\trange.index = Math.max(0, Math.min(range.index, length-1));\n\t\t\trange.length = Math.max(0, Math.min(range.length, (length-1) - range.index));\n\t\t}\n\t\teditor.setSelection(range);\n\t},\n\n\t/*\n\tReturns an weaker, unprivileged proxy object that only\n\texposes read-only accessors found on the editor instance,\n\twithout any state-modificating methods.\n\t*/\n\tmakeUnprivilegedEditor: function(editor) {\n\t\tvar e = editor;\n\t\treturn {\n\t\t\tgetLength: function(){ return e.getLength.apply(e, arguments); },\n\t\t\tgetText: function(){ return e.getText.apply(e, arguments); },\n\t\t\tgetContents: function(){ return e.getContents.apply(e, arguments); },\n\t\t\tgetSelection: function(){ return e.getSelection.apply(e, arguments); },\n\t\t\tgetBounds: function(){ return e.getBounds.apply(e, arguments); },\n\t\t};\n\t}\n\n};\n\nmodule.exports = QuillMixin;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/mixin.js\n// module id = 5\n// module chunks = 0","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/find.js\n// module id = 6\n// module chunks = 0","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_createFind.js\n// module id = 7\n// module chunks = 0","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIteratee.js\n// module id = 8\n// module chunks = 0","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseMatches.js\n// module id = 9\n// module chunks = 0","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsMatch.js\n// module id = 10\n// module chunks = 0","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Stack.js\n// module id = 11\n// module chunks = 0","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_ListCache.js\n// module id = 12\n// module chunks = 0","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_listCacheClear.js\n// module id = 13\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_listCacheDelete.js\n// module id = 14\n// module chunks = 0","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_assocIndexOf.js\n// module id = 15\n// module chunks = 0","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/eq.js\n// module id = 16\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_listCacheGet.js\n// module id = 17\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_listCacheHas.js\n// module id = 18\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_listCacheSet.js\n// module id = 19\n// module chunks = 0","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stackClear.js\n// module id = 20\n// module chunks = 0","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stackDelete.js\n// module id = 21\n// module chunks = 0","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stackGet.js\n// module id = 22\n// module chunks = 0","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stackHas.js\n// module id = 23\n// module chunks = 0","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stackSet.js\n// module id = 24\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Map.js\n// module id = 25\n// module chunks = 0","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getNative.js\n// module id = 26\n// module chunks = 0","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsNative.js\n// module id = 27\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isFunction.js\n// module id = 28\n// module chunks = 0","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseGetTag.js\n// module id = 29\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Symbol.js\n// module id = 30\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_root.js\n// module id = 31\n// module chunks = 0","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_freeGlobal.js\n// module id = 32\n// module chunks = 0","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getRawTag.js\n// module id = 33\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_objectToString.js\n// module id = 34\n// module chunks = 0","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isObject.js\n// module id = 35\n// module chunks = 0","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isMasked.js\n// module id = 36\n// module chunks = 0","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_coreJsData.js\n// module id = 37\n// module chunks = 0","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_toSource.js\n// module id = 38\n// module chunks = 0","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getValue.js\n// module id = 39\n// module chunks = 0","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_MapCache.js\n// module id = 40\n// module chunks = 0","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapCacheClear.js\n// module id = 41\n// module chunks = 0","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Hash.js\n// module id = 42\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hashClear.js\n// module id = 43\n// module chunks = 0","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_nativeCreate.js\n// module id = 44\n// module chunks = 0","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hashDelete.js\n// module id = 45\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hashGet.js\n// module id = 46\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hashHas.js\n// module id = 47\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hashSet.js\n// module id = 48\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapCacheDelete.js\n// module id = 49\n// module chunks = 0","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getMapData.js\n// module id = 50\n// module chunks = 0","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isKeyable.js\n// module id = 51\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapCacheGet.js\n// module id = 52\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapCacheHas.js\n// module id = 53\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapCacheSet.js\n// module id = 54\n// module chunks = 0","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsEqual.js\n// module id = 55\n// module chunks = 0","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsEqualDeep.js\n// module id = 56\n// module chunks = 0","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_equalArrays.js\n// module id = 57\n// module chunks = 0","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_SetCache.js\n// module id = 58\n// module chunks = 0","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_setCacheAdd.js\n// module id = 59\n// module chunks = 0","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_setCacheHas.js\n// module id = 60\n// module chunks = 0","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arraySome.js\n// module id = 61\n// module chunks = 0","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_cacheHas.js\n// module id = 62\n// module chunks = 0","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_equalByTag.js\n// module id = 63\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Uint8Array.js\n// module id = 64\n// module chunks = 0","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapToArray.js\n// module id = 65\n// module chunks = 0","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_setToArray.js\n// module id = 66\n// module chunks = 0","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_equalObjects.js\n// module id = 67\n// module chunks = 0","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getAllKeys.js\n// module id = 68\n// module chunks = 0","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseGetAllKeys.js\n// module id = 69\n// module chunks = 0","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayPush.js\n// module id = 70\n// module chunks = 0","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArray.js\n// module id = 71\n// module chunks = 0","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getSymbols.js\n// module id = 72\n// module chunks = 0","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayFilter.js\n// module id = 73\n// module chunks = 0","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/stubArray.js\n// module id = 74\n// module chunks = 0","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/keys.js\n// module id = 75\n// module chunks = 0","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayLikeKeys.js\n// module id = 76\n// module chunks = 0","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseTimes.js\n// module id = 77\n// module chunks = 0","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArguments.js\n// module id = 78\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsArguments.js\n// module id = 79\n// module chunks = 0","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isObjectLike.js\n// module id = 80\n// module chunks = 0","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isBuffer.js\n// module id = 81\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 82\n// module chunks = 0","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/stubFalse.js\n// module id = 83\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isIndex.js\n// module id = 84\n// module chunks = 0","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isTypedArray.js\n// module id = 85\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsTypedArray.js\n// module id = 86\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isLength.js\n// module id = 87\n// module chunks = 0","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseUnary.js\n// module id = 88\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_nodeUtil.js\n// module id = 89\n// module chunks = 0","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseKeys.js\n// module id = 90\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isPrototype.js\n// module id = 91\n// module chunks = 0","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_nativeKeys.js\n// module id = 92\n// module chunks = 0","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_overArg.js\n// module id = 93\n// module chunks = 0","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArrayLike.js\n// module id = 94\n// module chunks = 0","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getTag.js\n// module id = 95\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_DataView.js\n// module id = 96\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Promise.js\n// module id = 97\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Set.js\n// module id = 98\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_WeakMap.js\n// module id = 99\n// module chunks = 0","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getMatchData.js\n// module id = 100\n// module chunks = 0","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isStrictComparable.js\n// module id = 101\n// module chunks = 0","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_matchesStrictComparable.js\n// module id = 102\n// module chunks = 0","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseMatchesProperty.js\n// module id = 103\n// module chunks = 0","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/get.js\n// module id = 104\n// module chunks = 0","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseGet.js\n// module id = 105\n// module chunks = 0","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_castPath.js\n// module id = 106\n// module chunks = 0","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isKey.js\n// module id = 107\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isSymbol.js\n// module id = 108\n// module chunks = 0","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stringToPath.js\n// module id = 109\n// module chunks = 0","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_memoizeCapped.js\n// module id = 110\n// module chunks = 0","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/memoize.js\n// module id = 111\n// module chunks = 0","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/toString.js\n// module id = 112\n// module chunks = 0","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseToString.js\n// module id = 113\n// module chunks = 0","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayMap.js\n// module id = 114\n// module chunks = 0","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_toKey.js\n// module id = 115\n// module chunks = 0","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/hasIn.js\n// module id = 116\n// module chunks = 0","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseHasIn.js\n// module id = 117\n// module chunks = 0","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hasPath.js\n// module id = 118\n// module chunks = 0","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/identity.js\n// module id = 119\n// module chunks = 0","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/property.js\n// module id = 120\n// module chunks = 0","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseProperty.js\n// module id = 121\n// module chunks = 0","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_basePropertyDeep.js\n// module id = 122\n// module chunks = 0","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/findIndex.js\n// module id = 123\n// module chunks = 0","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseFindIndex.js\n// module id = 124\n// module chunks = 0","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/toInteger.js\n// module id = 125\n// module chunks = 0","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/toFinite.js\n// module id = 126\n// module chunks = 0","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/toNumber.js\n// module id = 127\n// module chunks = 0","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/some.js\n// module id = 128\n// module chunks = 0","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseSome.js\n// module id = 129\n// module chunks = 0","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseEach.js\n// module id = 130\n// module chunks = 0","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseForOwn.js\n// module id = 131\n// module chunks = 0","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseFor.js\n// module id = 132\n// module chunks = 0","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_createBaseFor.js\n// module id = 133\n// module chunks = 0","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_createBaseEach.js\n// module id = 134\n// module chunks = 0","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isIterateeCall.js\n// module id = 135\n// module chunks = 0","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isEqual.js\n// module id = 136\n// module chunks = 0","/*\nQuillToolbar is deprecated. Consider switching to the official Quill\ntoolbar format, or providing your own toolbar instead. \nSee https://quilljs.com/docs/modules/toolbar\n*/\n\n'use strict';\n\nvar React = require('react');\nvar ReactDOMServer = require('react-dom/server');\nvar find = require('lodash/find');\nvar isEqual = require('lodash/isEqual');\nvar T = React.PropTypes;\n\nvar defaultColors = [\n\t'rgb( 0, 0, 0)', 'rgb(230, 0, 0)', 'rgb(255, 153, 0)',\n\t'rgb(255, 255, 0)', 'rgb( 0, 138, 0)', 'rgb( 0, 102, 204)',\n\t'rgb(153, 51, 255)', 'rgb(255, 255, 255)', 'rgb(250, 204, 204)',\n\t'rgb(255, 235, 204)', 'rgb(255, 255, 204)', 'rgb(204, 232, 204)',\n\t'rgb(204, 224, 245)', 'rgb(235, 214, 255)', 'rgb(187, 187, 187)',\n\t'rgb(240, 102, 102)', 'rgb(255, 194, 102)', 'rgb(255, 255, 102)',\n\t'rgb(102, 185, 102)', 'rgb(102, 163, 224)', 'rgb(194, 133, 255)',\n\t'rgb(136, 136, 136)', 'rgb(161, 0, 0)', 'rgb(178, 107, 0)',\n\t'rgb(178, 178, 0)', 'rgb( 0, 97, 0)', 'rgb( 0, 71, 178)',\n\t'rgb(107, 36, 178)', 'rgb( 68, 68, 68)', 'rgb( 92, 0, 0)',\n\t'rgb(102, 61, 0)', 'rgb(102, 102, 0)', 'rgb( 0, 55, 0)',\n\t'rgb( 0, 41, 102)', 'rgb( 61, 20, 10)',\n].map(function(color){ return { value: color } });\n\nvar defaultItems = [\n\n\t{ label:'Formats', type:'group', items: [\n\t\t{ label:'Font', type:'font', items: [\n\t\t\t{ label:'Sans Serif', value:'sans-serif', selected:true },\n\t\t\t{ label:'Serif', value:'serif' },\n\t\t\t{ label:'Monospace', value:'monospace' }\n\t\t]},\n\t\t{ label:'Size', type:'size', items: [\n\t\t\t{ label:'Small', value:'10px' },\n\t\t\t{ label:'Normal', value:'13px', selected:true },\n\t\t\t{ label:'Large', value:'18px' },\n\t\t\t{ label:'Huge', value:'32px' }\n\t\t]},\n\t\t{ label:'Alignment', type:'align', items: [\n\t\t\t{ label:'', value:'', selected:true },\n\t\t\t{ label:'', value:'center' },\n\t\t\t{ label:'', value:'right' },\n\t\t\t{ label:'', value:'justify' }\n\t\t]}\n\t]},\n\n\t{ label:'Text', type:'group', items: [\n\t\t{ type:'bold', label:'Bold' },\n\t\t{ type:'italic', label:'Italic' },\n\t\t{ type:'strike', label:'Strike' },\n\t\t{ type:'underline', label:'Underline' },\n\t\t{ type:'color', label:'Color', items:defaultColors },\n\t\t{ type:'background', label:'Background color', items:defaultColors },\n\t\t{ type:'link', label:'Link' }\n\t]},\n\n\t{ label:'Blocks', type:'group', items: [\n\t\t{ type:'list', value:'bullet' },\n\t\t{ type:'list', value:'ordered' }\n\t]},\n\n\t{ label:'Blocks', type:'group', items: [\n\t\t{ type:'image', label:'Image' }\n\t]}\n\n];\n\nvar QuillToolbar = React.createClass({\n\n\tdisplayName: 'Quill Toolbar',\n\n\tpropTypes: {\n\t\tid: T.string,\n\t\tclassName: T.string,\n\t\tstyle: T.object,\n\t\titems: T.array\n\t},\n\n\tgetDefaultProps: function() {\n\t\treturn {\n\t\t\titems: defaultItems\n\t\t};\n\t},\n\n\tcomponentDidMount: function() {\n\t\tconsole.warn(\n\t\t\t'QuillToolbar is deprecated. Consider switching to the official Quill ' +\n\t\t\t'toolbar format, or providing your own toolbar instead. ' +\n\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t);\n\t},\n\n\tshouldComponentUpdate: function(nextProps, nextState) {\n\t\treturn !isEqual(nextProps, this.props);\n\t},\n\n\trenderGroup: function(item, key) {\n\t\treturn React.DOM.span({\n\t\t\tkey: item.label || key,\n\t\t\tclassName:'ql-formats' },\n\t\t\titem.items.map(this.renderItem)\n\t\t);\n\t},\n\n\trenderChoiceItem: function(item, key) {\n\t\treturn React.DOM.option({\n\t\t\tkey: item.label || item.value || key,\n\t\t\tvalue: item.value },\n\t\t\titem.label\n\t\t);\n\t},\n\n\trenderChoices: function(item, key) {\n\t\tvar choiceItems = item.items.map(this.renderChoiceItem);\n\t\tvar selectedItem = find(item.items, function(item){ return item.selected });\n\t\tvar attrs = {\n\t\t\tkey: item.label || key,\n\t\t\ttitle: item.label,\n\t\t\tclassName: 'ql-'+item.type,\n\t\t\tvalue: selectedItem.value,\n\t\t};\n\t\treturn React.DOM.select(attrs, choiceItems);\n\t},\n\n\trenderButton: function(item, key) {\n\t\treturn React.DOM.button({\n\t\t\ttype: 'button',\n\t\t\tkey: item.label || item.value || key,\n\t\t\tvalue: item.value,\n\t\t\tclassName: 'ql-'+item.type,\n\t\t\ttitle: item.label },\n\t\t\titem.children\n\t\t);\n\t},\n\n\trenderAction: function(item, key) {\n\t\treturn React.DOM.button({\n\t\t\tkey: item.label || item.value || key,\n\t\t\tclassName: 'ql-'+item.type,\n\t\t\ttitle: item.label },\n\t\t\titem.children\n\t\t);\n\t},\n\n\t/* jshint maxcomplexity: false */\n\trenderItem: function(item, key) {\n\t\tswitch (item.type) {\n\t\t\tcase 'group':\n\t\t\t\treturn this.renderGroup(item, key);\n\t\t\tcase 'font':\n\t\t\tcase 'header':\n\t\t\tcase 'align':\n\t\t\tcase 'size':\n\t\t\tcase 'color':\n\t\t\tcase 'background':\n\t\t\t\treturn this.renderChoices(item, key);\n\t\t\tcase 'bold':\n\t\t\tcase 'italic':\n\t\t\tcase 'underline':\n\t\t\tcase 'strike':\n\t\t\tcase 'link':\n\t\t\tcase 'list':\n\t\t\tcase 'bullet':\n\t\t\tcase 'ordered':\n\t\t\tcase 'indent':\n\t\t\tcase 'image':\n\t\t\tcase 'video':\n\t\t\t\treturn this.renderButton(item, key);\n\t\t\tdefault:\n\t\t\t\treturn this.renderAction(item, key);\n\t\t}\n\t},\n\n\tgetClassName: function() {\n\t\treturn 'quill-toolbar ' + (this.props.className||'');\n\t},\n\n\trender: function() {\n\t\tvar children = this.props.items.map(this.renderItem);\n\t\tvar html = children.map(ReactDOMServer.renderToStaticMarkup).join('');\n\t\treturn React.DOM.div({\n\t\t\tid: this.props.id,\n\t\t\tclassName: this.getClassName(),\n\t\t\tstyle: this.props.style,\n\t\t\tdangerouslySetInnerHTML: { __html:html }\n\t\t});\n\t},\n\n});\n\nmodule.exports = QuillToolbar;\nQuillToolbar.defaultItems = defaultItems;\nQuillToolbar.defaultColors = defaultColors;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/toolbar.js\n// module id = 137\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_138__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom/server\",\"commonjs2\":\"react-dom/server\",\"amd\":\"react-dom/server\",\"root\":\"ReactDOMServer\"}\n// module id = 138\n// module chunks = 0"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/react-quill.min.js b/dist/react-quill.min.js
deleted file mode 100644
index 6ee55803..00000000
--- a/dist/react-quill.min.js
+++ /dev/null
@@ -1,15 +0,0 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("react"),require("react-dom"),require("react-dom/server")):"function"==typeof define&&define.amd?define(["react","react-dom","react-dom/server"],e):"object"==typeof exports?exports.ReactQuill=e(require("react"),require("react-dom"),require("react-dom/server")):t.ReactQuill=e(t.React,t.ReactDOM,t.ReactDOMServer)}(this,function(t,e,n){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){var r=n(39),o=r.import("parchment"),i=o.Attributor.Style,l={scope:o.Scope.INLINE};r.register(new i("size","font-size",l),!0),r.register(new i("font","font-family",l),!0),t.exports=n(135),t.exports.Quill=r,t.exports.Mixin=n(41),t.exports.Toolbar=n(136)},function(t,e,n){var r=n(29),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){function r(t,e){var n=i(t,e);return o(n)?n:void 0}var o=n(63),i=n(86);t.exports=r},function(t,e,n){function r(t){return null==t?void 0===t?s:a:u&&u in Object(t)?i(t):l(t)}var o=n(8),i=n(83),l=n(111),a="[object Null]",s="[object Undefined]",u=o?o.toStringTag:void 0;t.exports=r},function(t,e){function n(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}t.exports=n},function(t,e){function n(t){return null!=t&&"object"==typeof t}t.exports=n},function(t,e,n){function r(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1&&t%1==0&&t-1&&t%1==0&&t<=r}var r=9007199254740991;t.exports=n},function(t,e,n){function r(t){var e=this.__data__=new o(t);this.size=e.size}var o=n(7),i=n(116),l=n(117),a=n(118),s=n(119),u=n(120);r.prototype.clear=i,r.prototype.delete=l,r.prototype.get=a,r.prototype.has=s,r.prototype.set=u,t.exports=r},function(t,e){function n(t,e){for(var n=-1,r=null==t?0:t.length;++np))return!1;var d=c.get(t);if(d&&c.get(e))return d==e;var y=-1,v=!0,b=n&s?new o:void 0;for(c.set(t,e),c.set(e,t);++y1&&this.append.apply(this,t.slice(1))},t.prototype.contains=function(t){for(var e,n=this.iterator();e=n();)if(e===t)return!0;return!1},t.prototype.insertBefore=function(t,e){t.next=e,null!=e?(t.prev=e.prev,null!=e.prev&&(e.prev.next=t),e.prev=t,e===this.head&&(this.head=t)):null!=this.tail?(this.tail.next=t,t.prev=this.tail,this.tail=t):(t.prev=void 0,this.head=this.tail=t),this.length+=1},t.prototype.offset=function(t){for(var e=0,n=this.head;null!=n;){if(n===t)return e;e+=n.length(),n=n.next}return-1},t.prototype.remove=function(t){this.contains(t)&&(null!=t.prev&&(t.prev.next=t.next),null!=t.next&&(t.next.prev=t.prev),t===this.head&&(this.head=t.next),t===this.tail&&(this.tail=t.prev),this.length-=1)},t.prototype.iterator=function(t){return void 0===t&&(t=this.head),function(){var e=t;return null!=t&&(t=t.next),e}},t.prototype.find=function(t,e){void 0===e&&(e=!1);for(var n,r=this.iterator();n=r();){var o=n.length();if(ta?n(r,t-a,Math.min(e,a+u-t)):n(r,0,Math.min(u,t+e-a)),a+=u}},t.prototype.map=function(t){return this.reduce(function(e,n){return e.push(t(n)),e},[])},t.prototype.reduce=function(t,e){for(var n,r=this.iterator();n=r();)e=t(e,n);return e},t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=n},function(t,e,n){"use strict";var r=n(6),o=function(){function t(t){this.domNode=t,this.attach()}return Object.defineProperty(t.prototype,"statics",{get:function(){return this.constructor},enumerable:!0,configurable:!0}),t.create=function(t){if(null==this.tagName)throw new r.ParchmentError("Blot definition missing tagName");var e;return Array.isArray(this.tagName)?("string"==typeof t&&(t=t.toUpperCase(),parseInt(t).toString()===t&&(t=parseInt(t))),e="number"==typeof t?document.createElement(this.tagName[t-1]):this.tagName.indexOf(t)>-1?document.createElement(t):document.createElement(this.tagName[0])):e=document.createElement(this.tagName),this.className&&e.classList.add(this.className),e},t.prototype.attach=function(){this.domNode[r.DATA_KEY]={blot:this}},t.prototype.clone=function(){var t=this.domNode.cloneNode();return r.create(t)},t.prototype.detach=function(){null!=this.parent&&this.parent.removeChild(this),delete this.domNode[r.DATA_KEY]},t.prototype.deleteAt=function(t,e){var n=this.isolate(t,e);n.remove()},t.prototype.formatAt=function(t,e,n,o){var i=this.isolate(t,e);if(null!=r.query(n,r.Scope.BLOT)&&o)i.wrap(n,o);else if(null!=r.query(n,r.Scope.ATTRIBUTE)){var l=r.create(this.statics.scope);i.wrap(l),l.format(n,o)}},t.prototype.insertAt=function(t,e,n){var o=null==n?r.create("text",e):r.create(e,n),i=this.split(t);this.parent.insertBefore(o,i)},t.prototype.insertInto=function(t,e){if(null!=this.parent&&this.parent.children.remove(this),t.children.insertBefore(this,e),null!=e)var n=e.domNode;null!=this.next&&this.domNode.nextSibling==n||t.domNode.insertBefore(this.domNode,"undefined"!=typeof n?n:null),this.parent=t},t.prototype.isolate=function(t,e){var n=this.split(t);return n.split(e),n},t.prototype.length=function(){return 1},t.prototype.offset=function(t){return void 0===t&&(t=this.parent),null==this.parent||this==t?0:this.parent.children.offset(this)+this.parent.offset(t)},t.prototype.optimize=function(){null!=this.domNode[r.DATA_KEY]&&delete this.domNode[r.DATA_KEY].mutations},t.prototype.remove=function(){null!=this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),this.detach()},t.prototype.replace=function(t){null!=t.parent&&(t.parent.insertBefore(this,t.next),t.remove())},t.prototype.replaceWith=function(t,e){var n="string"==typeof t?r.create(t,e):t;return n.replace(this),n},t.prototype.split=function(t,e){return 0===t?this:this.next},t.prototype.update=function(t){void 0===t&&(t=[])},t.prototype.wrap=function(t,e){var n="string"==typeof t?r.create(t,e):t;return null!=this.parent&&this.parent.insertBefore(n,this.next),n.appendChild(this),n},t}();o.blotName="abstract",Object.defineProperty(e,"__esModule",{value:!0}),e.default=o},function(t,e){"use strict";function n(t,e){var n=o(t);if(null==n)throw new a("Unable to create "+t+" blot");var r=n,i=t instanceof Node?t:r.create(e);return new r(i,e)}function r(t,n){return void 0===n&&(n=!1),null==t?null:null!=t[e.DATA_KEY]?t[e.DATA_KEY].blot:n?r(t.parentNode,n):null}function o(t,e){void 0===e&&(e=p.ANY);var n;if("string"==typeof t)n=f[t]||s[t];else if(t instanceof Text)n=f.text;else if("number"==typeof t)t&p.LEVEL&p.BLOCK?n=f.block:t&p.LEVEL&p.INLINE&&(n=f.inline);else if(t instanceof HTMLElement){var r=(t.getAttribute("class")||"").split(/\s+/);for(var o in r)if(n=u[r[o]])break;n=n||c[t.tagName]}return null==n?null:e&p.LEVEL&n.scope&&e&p.TYPE&n.scope?n:null}function i(){for(var t=[],e=0;e1)return t.map(function(t){return i(t)});var n=t[0];if("string"!=typeof n.blotName&&"string"!=typeof n.attrName)throw new a("Invalid definition");if("abstract"===n.blotName)throw new a("Cannot register abstract class");if(f[n.blotName||n.attrName]=n,"string"==typeof n.keyName)s[n.keyName]=n;else if(null!=n.className&&(u[n.className]=n),null!=n.tagName){Array.isArray(n.tagName)?n.tagName=n.tagName.map(function(t){return t.toUpperCase()}):n.tagName=n.tagName.toUpperCase();var r=Array.isArray(n.tagName)?n.tagName:[n.tagName];r.forEach(function(t){null!=c[t]&&null!=n.className||(c[t]=n)})}return n}var l=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},a=function(t){function e(e){var n=this;return e="[Parchment] "+e,n=t.call(this,e)||this,n.message=e,n.name=n.constructor.name,n}return l(e,t),e}(Error);e.ParchmentError=a;var s={},u={},c={},f={};e.DATA_KEY="__blot";var p;!function(t){t[t.TYPE=3]="TYPE",t[t.LEVEL=12]="LEVEL",t[t.ATTRIBUTE=13]="ATTRIBUTE",t[t.BLOT=14]="BLOT",t[t.INLINE=7]="INLINE",t[t.BLOCK=11]="BLOCK",t[t.BLOCK_BLOT=10]="BLOCK_BLOT",t[t.INLINE_BLOT=6]="INLINE_BLOT",t[t.BLOCK_ATTRIBUTE=9]="BLOCK_ATTRIBUTE",t[t.INLINE_ATTRIBUTE=5]="INLINE_ATTRIBUTE",t[t.ANY=15]="ANY"}(p=e.Scope||(e.Scope={})),e.create=n,e.find=r,e.query=o,e.register=i},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(8),i=n(9),l=n(3),a=n(6),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.formats=function(t){return"string"==typeof this.tagName||(Array.isArray(this.tagName)?t.tagName.toLowerCase():void 0)},e.prototype.attach=function(){t.prototype.attach.call(this),this.attributes=new i.default(this.domNode)},e.prototype.format=function(t,e){var n=a.query(t);n instanceof o.default?this.attributes.attribute(n,e):e&&(null==n||t===this.statics.blotName&&this.formats()[t]===e||this.replaceWith(t,e))},e.prototype.formats=function(){var t=this.attributes.values(),e=this.statics.formats(this.domNode);return null!=e&&(t[this.statics.blotName]=e),t},e.prototype.replaceWith=function(e,n){var r=t.prototype.replaceWith.call(this,e,n);return this.attributes.copy(r),r},e.prototype.update=function(e){var n=this;t.prototype.update.call(this,e),e.some(function(t){return t.target===n.domNode&&"attributes"===t.type})&&this.attributes.build()},e.prototype.wrap=function(n,r){var o=t.prototype.wrap.call(this,n,r);return o instanceof e&&o.statics.scope===this.statics.scope&&this.attributes.move(o),o},e}(l.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=s},function(t,e,n){"use strict";var r=n(6),o=function(){function t(t,e,n){void 0===n&&(n={}),this.attrName=t,this.keyName=e;var o=r.Scope.TYPE&r.Scope.ATTRIBUTE;null!=n.scope?this.scope=n.scope&r.Scope.LEVEL|o:this.scope=r.Scope.ATTRIBUTE,null!=n.whitelist&&(this.whitelist=n.whitelist)}return t.keys=function(t){return[].map.call(t.attributes,function(t){return t.name})},t.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(t.setAttribute(this.keyName,e),!0)},t.prototype.canAdd=function(t,e){var n=r.query(t,r.Scope.BLOT&(this.scope|r.Scope.TYPE));return null!=n&&(null==this.whitelist||this.whitelist.indexOf(e)>-1)},t.prototype.remove=function(t){t.removeAttribute(this.keyName)},t.prototype.value=function(t){var e=t.getAttribute(this.keyName);return this.canAdd(t,e)?e:""},t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=o},function(t,e,n){"use strict";var r=n(8),o=n(10),i=n(11),l=n(6),a=function(){function t(t){this.attributes={},this.domNode=t,this.build()}return t.prototype.attribute=function(t,e){e?t.add(this.domNode,e)&&(null!=t.value(this.domNode)?this.attributes[t.attrName]=t:delete this.attributes[t.attrName]):(t.remove(this.domNode),delete this.attributes[t.attrName])},t.prototype.build=function(){var t=this;this.attributes={};var e=r.default.keys(this.domNode),n=o.default.keys(this.domNode),a=i.default.keys(this.domNode);e.concat(n).concat(a).forEach(function(e){var n=l.query(e,l.Scope.ATTRIBUTE);n instanceof r.default&&(t.attributes[n.attrName]=n)})},t.prototype.copy=function(t){var e=this;Object.keys(this.attributes).forEach(function(n){var r=e.attributes[n].value(e.domNode);t.format(n,r)})},t.prototype.move=function(t){var e=this;this.copy(t),Object.keys(this.attributes).forEach(function(t){e.attributes[t].remove(e.domNode)}),this.attributes={}},t.prototype.values=function(){var t=this;return Object.keys(this.attributes).reduce(function(e,n){return e[n]=t.attributes[n].value(t.domNode),e},{})},t}();Object.defineProperty(e,"__esModule",{value:!0}),e.default=a},function(t,e,n){"use strict";function r(t,e){var n=t.getAttribute("class")||"";return n.split(/\s+/).filter(function(t){return 0===t.indexOf(e+"-")})}var o=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},i=n(8),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.keys=function(t){return(t.getAttribute("class")||"").split(/\s+/).map(function(t){return t.split("-").slice(0,-1).join("-")})},e.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(this.remove(t),t.classList.add(this.keyName+"-"+e),!0)},e.prototype.remove=function(t){var e=r(t,this.keyName);e.forEach(function(e){t.classList.remove(e)}),0===t.classList.length&&t.removeAttribute("class")},e.prototype.value=function(t){var e=r(t,this.keyName)[0]||"",n=e.slice(this.keyName.length+1);return this.canAdd(t,n)?n:""},e}(i.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";function r(t){var e=t.split("-"),n=e.slice(1).map(function(t){return t[0].toUpperCase()+t.slice(1)}).join("");return e[0]+n}var o=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},i=n(8),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.keys=function(t){return(t.getAttribute("style")||"").split(";").map(function(t){var e=t.split(":");return e[0].trim()})},e.prototype.add=function(t,e){return!!this.canAdd(t,e)&&(t.style[r(this.keyName)]=e,!0)},e.prototype.remove=function(t){t.style[r(this.keyName)]="",t.getAttribute("style")||t.removeAttribute("style")},e.prototype.value=function(t){var e=t.style[r(this.keyName)];return this.canAdd(t,e)?e:""},e}(i.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(5),i=n(6),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.value=function(t){return!0},e.prototype.index=function(t,e){return t!==this.domNode?-1:Math.min(e,1)},e.prototype.position=function(t,e){var n=[].indexOf.call(this.parent.domNode.childNodes,this.domNode);return t>0&&(n+=1),[this.parent.domNode,n]},e.prototype.value=function(){return t={},t[this.statics.blotName]=this.statics.value(this.domNode)||!0,t;var t},e}(o.default);l.scope=i.Scope.INLINE_BLOT,Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(3),i=n(6),l={attributes:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0},a=100,s=function(t){function e(e){var n=t.call(this,e)||this;return n.parent=null,n.observer=new MutationObserver(function(t){n.update(t)}),n.observer.observe(n.domNode,l),n}return r(e,t),e.prototype.detach=function(){t.prototype.detach.call(this),this.observer.disconnect()},e.prototype.deleteAt=function(e,n){this.update(),0===e&&n===this.length()?this.children.forEach(function(t){t.remove()}):t.prototype.deleteAt.call(this,e,n)},e.prototype.formatAt=function(e,n,r,o){this.update(),t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.insertAt=function(e,n,r){this.update(),t.prototype.insertAt.call(this,e,n,r)},e.prototype.optimize=function(e){var n=this;void 0===e&&(e=[]),t.prototype.optimize.call(this);for(var r=[].slice.call(this.observer.takeRecords());r.length>0;)e.push(r.pop());for(var l=function(t,e){void 0===e&&(e=!0),null!=t&&t!==n&&null!=t.domNode.parentNode&&(null==t.domNode[i.DATA_KEY].mutations&&(t.domNode[i.DATA_KEY].mutations=[]),e&&l(t.parent))},s=function(t){null!=t.domNode[i.DATA_KEY]&&null!=t.domNode[i.DATA_KEY].mutations&&(t instanceof o.default&&t.children.forEach(s),t.optimize())},u=e,c=0;u.length>0;c+=1){if(c>=a)throw new Error("[Parchment] Maximum optimize iterations reached");for(u.forEach(function(t){var e=i.find(t.target,!0);null!=e&&(e.domNode===t.target&&("childList"===t.type?(l(i.find(t.previousSibling,!1)),[].forEach.call(t.addedNodes,function(t){var e=i.find(t,!1);l(e,!1),e instanceof o.default&&e.children.forEach(function(t){l(t,!1)})})):"attributes"===t.type&&l(e.prev)),l(e))}),this.children.forEach(s),u=[].slice.call(this.observer.takeRecords()),r=u.slice();r.length>0;)e.push(r.pop())}},e.prototype.update=function(e){var n=this;e=e||this.observer.takeRecords(),e.map(function(t){var e=i.find(t.target,!0);if(null!=e)return null==e.domNode[i.DATA_KEY].mutations?(e.domNode[i.DATA_KEY].mutations=[t],e):(e.domNode[i.DATA_KEY].mutations.push(t),null)}).forEach(function(t){null!=t&&t!==n&&null!=t.domNode[i.DATA_KEY]&&t.update(t.domNode[i.DATA_KEY].mutations||[])}),null!=this.domNode[i.DATA_KEY].mutations&&t.prototype.update.call(this,this.domNode[i.DATA_KEY].mutations),this.optimize(e)},e}(o.default);s.blotName="scroll",s.defaultChild="block",s.scope=i.Scope.BLOCK_BLOT,s.tagName="DIV",Object.defineProperty(e,"__esModule",{value:!0}),e.default=s},function(t,e,n){"use strict";function r(t,e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(var n in t)if(t[n]!==e[n])return!1;return!0}var o=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},i=n(7),l=n(6),a=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.formats=function(n){if(n.tagName!==e.tagName)return t.formats.call(this,n)},e.prototype.format=function(n,r){var o=this;n!==this.statics.blotName||r?t.prototype.format.call(this,n,r):(this.children.forEach(function(t){t instanceof i.default||(t=t.wrap(e.blotName,!0)),o.attributes.copy(t)}),this.unwrap())},e.prototype.formatAt=function(e,n,r,o){if(null!=this.formats()[r]||l.query(r,l.Scope.ATTRIBUTE)){var i=this.isolate(e,n);i.format(r,o)}else t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.optimize=function(){t.prototype.optimize.call(this);var n=this.formats();if(0===Object.keys(n).length)return this.unwrap();var o=this.next;o instanceof e&&o.prev===this&&r(n,o.formats())&&(o.moveChildren(this),o.remove())},e}(i.default);a.blotName="inline",a.scope=l.Scope.INLINE_BLOT,a.tagName="SPAN",Object.defineProperty(e,"__esModule",{value:!0}),e.default=a},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(7),i=n(6),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.formats=function(n){var r=i.query(e.blotName).tagName;if(n.tagName!==r)return t.formats.call(this,n)},e.prototype.format=function(n,r){null!=i.query(n,i.Scope.BLOCK)&&(n!==this.statics.blotName||r?t.prototype.format.call(this,n,r):this.replaceWith(e.blotName))},e.prototype.formatAt=function(e,n,r,o){null!=i.query(r,i.Scope.BLOCK)?this.format(r,o):t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.insertAt=function(e,n,r){if(null==r||null!=i.query(n,i.Scope.INLINE))t.prototype.insertAt.call(this,e,n,r);else{var o=this.split(e),l=i.create(n,r);o.parent.insertBefore(l,o)}},e.prototype.update=function(e){navigator.userAgent.match(/Trident/)?this.attach():t.prototype.update.call(this,e)},e}(o.default);l.blotName="block",l.scope=i.Scope.BLOCK_BLOT,l.tagName="P",Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(12),i=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return r(e,t),e.formats=function(t){},e.prototype.format=function(e,n){t.prototype.formatAt.call(this,0,this.length(),e,n)},e.prototype.formatAt=function(e,n,r,o){0===e&&n===this.length()?this.format(r,o):t.prototype.formatAt.call(this,e,n,r,o)},e.prototype.formats=function(){return this.statics.formats(this.domNode)},e}(o.default);Object.defineProperty(e,"__esModule",{value:!0}),e.default=i},function(t,e,n){"use strict";var r=this&&this.__extends||function(t,e){function n(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)},o=n(12),i=n(6),l=function(t){function e(e){var n=t.call(this,e)||this;return n.text=n.statics.value(n.domNode),n}return r(e,t),e.create=function(t){return document.createTextNode(t)},e.value=function(t){return t.data},e.prototype.deleteAt=function(t,e){this.domNode.data=this.text=this.text.slice(0,t)+this.text.slice(t+e)},e.prototype.index=function(t,e){return this.domNode===t?e:-1},e.prototype.insertAt=function(e,n,r){null==r?(this.text=this.text.slice(0,e)+n+this.text.slice(e),this.domNode.data=this.text):t.prototype.insertAt.call(this,e,n,r)},e.prototype.length=function(){return this.text.length},e.prototype.optimize=function(){t.prototype.optimize.call(this),this.text=this.statics.value(this.domNode),0===this.text.length?this.remove():this.next instanceof e&&this.next.prev===this&&(this.insertAt(this.length(),this.next.value()),this.next.remove())},e.prototype.position=function(t,e){return void 0===e&&(e=!1),[this.domNode,t]},e.prototype.split=function(t,e){if(void 0===e&&(e=!1),!e){if(0===t)return this;if(t===this.length())return this.next}var n=i.create(this.domNode.splitText(t));return this.parent.insertBefore(n,this.next),this.text=this.statics.value(this.domNode),n},e.prototype.update=function(t){var e=this;t.some(function(t){return"characterData"===t.type&&t.target===e.domNode})&&(this.text=this.statics.value(this.domNode))},e.prototype.value=function(){return this.text},e}(o.default);l.blotName="text",l.scope=i.Scope.INLINE_BLOT,Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(e=(0,j.default)(!0,{container:t,modules:{clipboard:!0,keyboard:!0,history:!0}},e),e.theme&&e.theme!==P.DEFAULTS.theme){if(e.theme=P.import("themes/"+e.theme),null==e.theme)throw new Error("Invalid theme "+e.theme+". Did you register it?")}else e.theme=S.default;var n=(0,j.default)(!0,{},e.theme.DEFAULTS);[n,e].forEach(function(t){t.modules=t.modules||{},Object.keys(t.modules).forEach(function(e){t.modules[e]===!0&&(t.modules[e]={})})});var r=Object.keys(n.modules).concat(Object.keys(e.modules)),o=r.reduce(function(t,e){var n=P.import("modules/"+e);return null==n?T.error("Cannot load "+e+" module. Are you sure you registered it?"):t[e]=n.DEFAULTS||{},t},{});return null!=e.modules&&e.modules.toolbar&&e.modules.toolbar.constructor!==Object&&(e.modules.toolbar={container:e.modules.toolbar}),e=(0,j.default)(!0,{},P.DEFAULTS,{modules:o},n,e),["bounds","container","scrollingContainer"].forEach(function(t){"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),e.modules=Object.keys(e.modules).reduce(function(t,n){return e.modules[n]&&(t[n]=e.modules[n]),t},{}),e}function a(t,e,n,r){if(this.options.strict&&!this.isEnabled()&&e===g.default.sources.USER)return new d.default;var o=null==n?null:this.getSelection(),i=this.editor.delta,l=t();if(null!=o&&(n===!0&&(n=o.index),null==r?o=u(o,l,e):0!==r&&(o=u(o,n,r,e)),this.setSelection(o,g.default.sources.SILENT)),l.length()>0){var a,s=[g.default.events.TEXT_CHANGE,l,i,e];if((a=this.emitter).emit.apply(a,[g.default.events.EDITOR_CHANGE].concat(s)),e!==g.default.sources.SILENT){var c;(c=this.emitter).emit.apply(c,s)}}return l}function s(t,e,n,r,o){var i={};return"number"==typeof t.index&&"number"==typeof t.length?"number"!=typeof e?(o=r,r=n,n=e,e=t.length,t=t.index):(e=t.length,t=t.index):"number"!=typeof e&&(o=r,r=n,n=e,e=0),"object"===("undefined"==typeof n?"undefined":c(n))?(i=n,o=r):"string"==typeof n&&(null!=r?i[n]=r:o=n),o=o||g.default.sources.API,[t,e,i,o]}function u(t,e,n,r){if(null==t)return null;var o=void 0,i=void 0;if(e instanceof d.default){var l=[t.index,t.index+t.length].map(function(t){return e.transformPosition(t,r===g.default.sources.USER)}),a=f(l,2);o=a[0],i=a[1]}else{var s=[t.index,t.index+t.length].map(function(t){return t=0?t+n:Math.max(e,t+n)}),u=f(s,2);o=u[0],i=u[1]}return new w.Range(o,i-o)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.overload=e.expandConfig=void 0;var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),p=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};if(i(this,t),this.options=l(e,r),this.container=this.options.container,this.scrollingContainer=this.options.scrollingContainer||document.body,null==this.container)return T.error("Invalid Quill container",e);this.options.debug&&t.debug(this.options.debug);var o=this.container.innerHTML.trim();this.container.classList.add("ql-container"),this.container.innerHTML="",this.container.__quill=this,this.root=this.addContainer("ql-editor"),this.root.classList.add("ql-blank"),this.emitter=new g.default,this.scroll=x.default.create(this.root,{emitter:this.emitter,whitelist:this.options.formats}),this.editor=new v.default(this.scroll),this.selection=new k.default(this.scroll,this.emitter),this.theme=new this.options.theme(this,this.options),this.keyboard=this.theme.addModule("keyboard"),this.clipboard=this.theme.addModule("clipboard"),this.history=this.theme.addModule("history"),this.theme.init(),this.emitter.on(g.default.events.EDITOR_CHANGE,function(t){t===g.default.events.TEXT_CHANGE&&n.root.classList.toggle("ql-blank",n.editor.isBlank())}),this.emitter.on(g.default.events.SCROLL_UPDATE,function(t,e){var r=n.selection.lastRange,o=r&&0===r.length?r.index:void 0;a.call(n,function(){return n.editor.update(null,e,o)},t)});var s=this.clipboard.convert("");this.setContents(s),this.history.clear(),this.options.placeholder&&this.root.setAttribute("data-placeholder",this.options.placeholder),this.options.readOnly&&this.disable()}return p(t,null,[{key:"debug",value:function(t){t===!0&&(t="log"),N.default.level(t)}},{key:"find",value:function(t){return t.__quill||x.default.find(t)}},{key:"import",value:function(t){return null==this.imports[t]&&T.error("Cannot import "+t+". Are you sure it was registered?"),this.imports[t]}},{key:"register",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("string"!=typeof t){var o=t.attrName||t.blotName;
-"string"==typeof o?this.register("formats/"+o,t,e):Object.keys(t).forEach(function(r){n.register(r,t[r],e)})}else null==this.imports[t]||r||T.warn("Overwriting "+t+" with",e),this.imports[t]=e,(t.startsWith("blots/")||t.startsWith("formats/"))&&"abstract"!==e.blotName&&x.default.register(e)}}]),p(t,[{key:"addContainer",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof t){var n=t;t=document.createElement("div"),t.classList.add(n)}return this.container.insertBefore(t,e),t}},{key:"blur",value:function(){this.selection.setRange(null)}},{key:"deleteText",value:function(t,e,n){var r=this,o=s(t,e,n),i=f(o,4);return t=i[0],e=i[1],n=i[3],a.call(this,function(){return r.editor.deleteText(t,e)},n,t,-1*e)}},{key:"disable",value:function(){this.enable(!1)}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.scroll.enable(t),this.container.classList.toggle("ql-disabled",!t),t||this.blur()}},{key:"focus",value:function(){var t=this.scrollingContainer.scrollTop;this.selection.focus(),this.scrollingContainer.scrollTop=t,this.selection.scrollIntoView()}},{key:"format",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:g.default.sources.API;return a.call(this,function(){var r=n.getSelection(!0),i=new d.default;if(null==r)return i;if(x.default.query(t,x.default.Scope.BLOCK))i=n.editor.formatLine(r.index,r.length,o({},t,e));else{if(0===r.length)return n.selection.format(t,e),i;i=n.editor.formatText(r.index,r.length,o({},t,e))}return n.setSelection(r,g.default.sources.SILENT),i},r)}},{key:"formatLine",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,e,n,r,o),c=f(u,4);return t=c[0],e=c[1],l=c[2],o=c[3],a.call(this,function(){return i.editor.formatLine(t,e,l)},o,t,0)}},{key:"formatText",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,e,n,r,o),c=f(u,4);return t=c[0],e=c[1],l=c[2],o=c[3],a.call(this,function(){return i.editor.formatText(t,e,l)},o,t,0)}},{key:"getBounds",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"number"==typeof t?this.selection.getBounds(t,e):this.selection.getBounds(t.index,t.length)}},{key:"getContents",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-t,n=s(t,e),r=f(n,2);return t=r[0],e=r[1],this.editor.getContents(t,e)}},{key:"getFormat",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.getSelection(),e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return"number"==typeof t?this.editor.getFormat(t,e):this.editor.getFormat(t.index,t.length)}},{key:"getIndex",value:function(t){return t.offset(this.scroll)}},{key:"getLength",value:function(){return this.scroll.length()}},{key:"getLeaf",value:function(t){return this.scroll.leaf(t)}},{key:"getLine",value:function(t){return this.scroll.line(t)}},{key:"getLines",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE;return"number"!=typeof t?this.scroll.lines(t.index,t.length):this.scroll.lines(t,e)}},{key:"getModule",value:function(t){return this.theme.modules[t]}},{key:"getSelection",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return t&&this.focus(),this.update(),this.selection.getRange()[0]}},{key:"getText",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getLength()-t,n=s(t,e),r=f(n,2);return t=r[0],e=r[1],this.editor.getText(t,e)}},{key:"hasFocus",value:function(){return this.selection.hasFocus()}},{key:"insertEmbed",value:function(e,n,r){var o=this,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.sources.API;return a.call(this,function(){return o.editor.insertEmbed(e,n,r)},i,e)}},{key:"insertText",value:function(t,e,n,r,o){var i=this,l=void 0,u=s(t,0,n,r,o),c=f(u,4);return t=c[0],l=c[2],o=c[3],a.call(this,function(){return i.editor.insertText(t,e,l)},o,t,e.length)}},{key:"isEnabled",value:function(){return!this.container.classList.contains("ql-disabled")}},{key:"off",value:function(){return this.emitter.off.apply(this.emitter,arguments)}},{key:"on",value:function(){return this.emitter.on.apply(this.emitter,arguments)}},{key:"once",value:function(){return this.emitter.once.apply(this.emitter,arguments)}},{key:"pasteHTML",value:function(t,e,n){this.clipboard.dangerouslyPasteHTML(t,e,n)}},{key:"removeFormat",value:function(t,e,n){var r=this,o=s(t,e,n),i=f(o,4);return t=i[0],e=i[1],n=i[3],a.call(this,function(){return r.editor.removeFormat(t,e)},n,t)}},{key:"setContents",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API;return a.call(this,function(){t=new d.default(t);var n=e.getLength(),r=e.editor.deleteText(0,n),o=e.editor.applyDelta(t),i=o.ops[o.ops.length-1];null!=i&&"string"==typeof i.insert&&"\n"===i.insert[i.insert.length-1]&&(e.editor.deleteText(e.getLength()-1,1),o.delete(1));var l=r.compose(o);return l},n)}},{key:"setSelection",value:function(e,n,r){if(null==e)this.selection.setRange(null,n||t.sources.API);else{var o=s(e,n,r),i=f(o,4);e=i[0],n=i[1],r=i[3],this.selection.setRange(new w.Range(e,n),r)}r!==g.default.sources.SILENT&&this.selection.scrollIntoView()}},{key:"setText",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API,n=(new d.default).insert(t);return this.setContents(n,e)}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g.default.sources.USER,e=this.scroll.update(t);return this.selection.update(t),e}},{key:"updateContents",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g.default.sources.API;return a.call(this,function(){return t=new d.default(t),e.editor.applyDelta(t,n)},n,!0)}}]),t}();P.DEFAULTS={bounds:null,formats:null,modules:{},placeholder:"",readOnly:!1,scrollingContainer:null,strict:!0,theme:"default"},P.events=g.default.events,P.sources=g.default.sources,P.version="1.2.0",P.imports={delta:d.default,parchment:x.default,"core/module":_.default,"core/theme":S.default},e.expandConfig=l,e.overload=s,e.default=P},function(t,e){"use strict";var n=document.createElement("div");n.classList.toggle("test-class",!1),n.classList.contains("test-class")&&!function(){var t=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(e,n){return arguments.length>1&&!this.contains(e)==!n?n:t.call(this,e)}}(),String.prototype.startsWith||(String.prototype.startsWith=function(t,e){return e=e||0,this.substr(e,t.length)===t}),String.prototype.endsWith||(String.prototype.endsWith=function(t,e){var n=this.toString();("number"!=typeof e||!isFinite(e)||Math.floor(e)!==e||e>n.length)&&(e=n.length),e-=t.length;var r=n.indexOf(t,e);return r!==-1&&r===e}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function t(e){if(null===this)throw new TypeError("Array.prototype.find called on null or undefined");if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var t,n=Object(this),r=n.length>>>0,o=arguments[1],i=0;i0&&(n.attributes=e),this.push(n))},s.prototype.delete=function(t){return t<=0?this:this.push({delete:t})},s.prototype.retain=function(t,e){if(t<=0)return this;var n={retain:t};return null!=e&&"object"==typeof e&&Object.keys(e).length>0&&(n.attributes=e),this.push(n)},s.prototype.push=function(t){var e=this.ops.length,n=this.ops[e-1];if(t=i(!0,{},t),"object"==typeof n){if("number"==typeof t.delete&&"number"==typeof n.delete)return this.ops[e-1]={delete:n.delete+t.delete},this;if("number"==typeof n.delete&&null!=t.insert&&(e-=1,n=this.ops[e-1],"object"!=typeof n))return this.ops.unshift(t),this;if(o(t.attributes,n.attributes)){if("string"==typeof t.insert&&"string"==typeof n.insert)return this.ops[e-1]={insert:n.insert+t.insert},"object"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this;if("number"==typeof t.retain&&"number"==typeof n.retain)return this.ops[e-1]={retain:n.retain+t.retain},"object"==typeof t.attributes&&(this.ops[e-1].attributes=t.attributes),this}}return e===this.ops.length?this.ops.push(t):this.ops.splice(e,0,t),this},s.prototype.filter=function(t){return this.ops.filter(t)},s.prototype.forEach=function(t){this.ops.forEach(t)},s.prototype.map=function(t){return this.ops.map(t)},s.prototype.partition=function(t){var e=[],n=[];return this.forEach(function(r){var o=t(r)?e:n;o.push(r)}),[e,n]},s.prototype.reduce=function(t,e){return this.ops.reduce(t,e)},s.prototype.chop=function(){var t=this.ops[this.ops.length-1];return t&&t.retain&&!t.attributes&&this.ops.pop(),this},s.prototype.length=function(){return this.reduce(function(t,e){return t+l.length(e)},0)},s.prototype.slice=function(t,e){t=t||0,"number"!=typeof e&&(e=1/0);for(var n=[],r=l.iterator(this.ops),o=0;o0&&(e.push(t.ops[0]),e.ops=e.ops.concat(t.ops.slice(1))),e},s.prototype.diff=function(t,e){if(this.ops===t.ops)return new s;var n=[this,t].map(function(e){return e.map(function(e){if(null!=e.insert)return"string"==typeof e.insert?e.insert:a;var n=ops===t.ops?"on":"with";throw new Error("diff() called "+n+" non-document")}).join("")}),i=new s,u=r(n[0],n[1],e),c=l.iterator(this.ops),f=l.iterator(t.ops);return u.forEach(function(t){for(var e=t[1].length;e>0;){var n=0;switch(t[0]){case r.INSERT:n=Math.min(f.peekLength(),e),i.push(f.next(n));break;case r.DELETE:n=Math.min(e,c.peekLength()),c.next(n),i.delete(n);break;case r.EQUAL:n=Math.min(c.peekLength(),f.peekLength(),e);var a=c.next(n),s=f.next(n);o(a.insert,s.insert)?i.retain(n,l.attributes.diff(a.attributes,s.attributes)):i.push(s).delete(n)}e-=n}}),i.chop()},s.prototype.eachLine=function(t,e){e=e||"\n";for(var n=l.iterator(this.ops),r=new s;n.hasNext();){if("insert"!==n.peekType())return;var o=n.peek(),i=l.length(o)-n.peekLength(),a="string"==typeof o.insert?o.insert.indexOf(e,i)-i:-1;a<0?r.push(n.next()):a>0?r.push(n.next(a)):(t(r,n.next(1).attributes||{}),r=new s)}r.length()>0&&t(r,{})},s.prototype.transform=function(t,e){if(e=!!e,"number"==typeof t)return this.transformPosition(t,e);for(var n=l.iterator(this.ops),r=l.iterator(t.ops),o=new s;n.hasNext()||r.hasNext();)if("insert"!==n.peekType()||!e&&"insert"===r.peekType())if("insert"===r.peekType())o.push(r.next());else{var i=Math.min(n.peekLength(),r.peekLength()),a=n.next(i),u=r.next(i);if(a.delete)continue;u.delete?o.push(u):o.retain(i,l.attributes.transform(a.attributes,u.attributes,e))}else o.retain(l.length(n.next()));return o.chop()},s.prototype.transformPosition=function(t,e){e=!!e;for(var n=l.iterator(this.ops),r=0;n.hasNext()&&r<=t;){var o=n.peekLength(),i=n.peekType();n.next(),"delete"!==i?("insert"===i&&(re.length?t:e,l=t.length>e.length?e:t,a=i.indexOf(l);if(a!=-1)return r=[[d,i.substring(0,a)],[y,l],[d,i.substring(a+l.length)]],t.length>e.length&&(r[0][0]=r[2][0]=h),r;if(1==l.length)return[[h,t],[d,e]];var u=s(t,e);if(u){var c=u[0],f=u[1],p=u[2],v=u[3],b=u[4],g=n(c,p),m=n(f,v);return g.concat([[y,b]],m)}return o(t,e)}function o(t,e){for(var n=t.length,r=e.length,o=Math.ceil((n+r)/2),l=o,a=2*o,s=new Array(a),u=new Array(a),c=0;cn)v+=2;else if(w>r)y+=2;else if(p){var k=l+f-_;if(k>=0&&k=E)return i(t,e,O,w)}}}for(var j=-m+b;j<=m-g;j+=2){var E,k=l+j;E=j==-m||j!=m&&u[k-1]n)g+=2;else if(A>r)b+=2;else if(!p){var x=l+f-j;if(x>=0&&x=E)return i(t,e,O,w)}}}}return[[h,t],[d,e]]}function i(t,e,r,o){var i=t.substring(0,r),l=e.substring(0,o),a=t.substring(r),s=e.substring(o),u=n(i,l),c=n(a,s);return u.concat(c)}function l(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var n=0,r=Math.min(t.length,e.length),o=r,i=0;n=t.length?[r,o,i,s,f]:null}var r=t.length>e.length?t:e,o=t.length>e.length?e:t;if(r.length<4||2*o.lengthu[4].length?s:u:s;var c,f,p,h;t.length>e.length?(c=i[0],f=i[1],p=i[2],h=i[3]):(p=i[0],h=i[1],c=i[2],f=i[3]);var d=i[4];return[c,f,p,h,d]}function u(t){t.push([y,""]);for(var e,n=0,r=0,o=0,i="",s="";n1?(0!==r&&0!==o&&(e=l(s,i),0!==e&&(n-r-o>0&&t[n-r-o-1][0]==y?t[n-r-o-1][1]+=s.substring(0,e):(t.splice(0,0,[y,s.substring(0,e)]),n++),s=s.substring(e),i=i.substring(e)),e=a(s,i),0!==e&&(t[n][1]=s.substring(s.length-e)+t[n][1],s=s.substring(0,s.length-e),i=i.substring(0,i.length-e))),0===r?t.splice(n-o,r+o,[d,s]):0===o?t.splice(n-r,r+o,[h,i]):t.splice(n-r-o,r+o,[h,i],[d,s]),n=n-r-o+(r?1:0)+(o?1:0)+1):0!==n&&t[n-1][0]==y?(t[n-1][1]+=t[n][1],t.splice(n,1)):n++,o=0,r=0,i="",s=""}""===t[t.length-1][1]&&t.pop();var c=!1;for(n=1;n0&&r.splice(o+2,0,[l[0],a]),p(r,o,3)}return t}function p(t,e,n){for(var r=e+n-1;r>=0&&r>=e-1;r--)if(r+10&&"number"!=typeof t[0]))}function i(t,e,n){var i,c;if(r(t)||r(e))return!1;if(t.prototype!==e.prototype)return!1;if(s(t))return!!s(e)&&(t=l.call(t),e=l.call(e),u(t,e,n));if(o(t)){if(!o(e))return!1;if(t.length!==e.length)return!1;for(i=0;i=0;i--)if(f[i]!=p[i])return!1;for(i=f.length-1;i>=0;i--)if(c=f[i],!u(t[c],e[c],n))return!1;return typeof t==typeof e}var l=Array.prototype.slice,a=n(23),s=n(24),u=t.exports=function(t,e,n){return n||(n={}),t===e||(t instanceof Date&&e instanceof Date?t.getTime()===e.getTime():!t||!e||"object"!=typeof t&&"object"!=typeof e?n.strict?t===e:t==e:i(t,e,n))}},function(t,e){function n(t){var e=[];for(var n in t)e.push(n);return e}e=t.exports="function"==typeof Object.keys?Object.keys:n,e.shim=n},function(t,e){function n(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function r(t){return t&&"object"==typeof t&&"number"==typeof t.length&&Object.prototype.hasOwnProperty.call(t,"callee")&&!Object.prototype.propertyIsEnumerable.call(t,"callee")||!1}var o="[object Arguments]"==function(){return Object.prototype.toString.call(arguments)}();e=t.exports=o?n:r,e.supported=n,e.unsupported=r},function(t,e){"use strict";var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString,o=function(t){return"function"==typeof Array.isArray?Array.isArray(t):"[object Array]"===r.call(t)},i=function(t){if(!t||"[object Object]"!==r.call(t))return!1;var e=n.call(t,"constructor"),o=t.constructor&&t.constructor.prototype&&n.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!e&&!o)return!1;var i;for(i in t);return"undefined"==typeof i||n.call(t,i)};t.exports=function t(){var e,n,r,l,a,s,u=arguments[0],c=1,f=arguments.length,p=!1;for("boolean"==typeof u?(p=u,u=arguments[1]||{},c=2):("object"!=typeof u&&"function"!=typeof u||null==u)&&(u={});c0?r:void 0},diff:function(t,e){"object"!=typeof t&&(t={}),"object"!=typeof e&&(e={});var n=Object.keys(t).concat(Object.keys(e)).reduce(function(n,r){return o(t[r],e[r])||(n[r]=void 0===e[r]?null:e[r]),n},{});return Object.keys(n).length>0?n:void 0},transform:function(t,e,n){if("object"!=typeof t)return e;if("object"==typeof e){if(!n)return e;var r=Object.keys(e).reduce(function(n,r){return void 0===t[r]&&(n[r]=e[r]),n},{});return Object.keys(r).length>0?r:void 0}}},iterator:function(t){return new r(t)},length:function(t){return"number"==typeof t.delete?t.delete:"number"==typeof t.retain?t.retain:"string"==typeof t.insert?t.insert.length:1}};r.prototype.hasNext=function(){return this.peekLength()<1/0},r.prototype.next=function(t){t||(t=1/0);var e=this.ops[this.index];if(e){var n=this.offset,r=l.length(e);if(t>=r-n?(t=r-n,this.index+=1,this.offset=0):this.offset+=t,"number"==typeof e.delete)return{delete:t};var o={};return e.attributes&&(o.attributes=e.attributes),"number"==typeof e.retain?o.retain=t:"string"==typeof e.insert?o.insert=e.insert.substr(n,t):o.insert=e.insert,o}return{retain:1/0}},r.prototype.peek=function(){return this.ops[this.index]},r.prototype.peekLength=function(){return this.ops[this.index]?l.length(this.ops[this.index])-this.offset:1/0},r.prototype.peekType=function(){return this.ops[this.index]?"number"==typeof this.ops[this.index].delete?"delete":"number"==typeof this.ops[this.index].retain?"retain":"insert":"retain"},t.exports=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){return Object.keys(e).reduce(function(n,r){return null==t[r]?n:(e[r]===t[r]?n[r]=e[r]:Array.isArray(e[r])?e[r].indexOf(t[r])<0&&(n[r]=e[r].concat([t[r]])):n[r]=[e[r],t[r]],n)},{})}function a(t){return t.reduce(function(t,e){if(1===e.insert){var n=(0,k.default)(e.attributes);return delete n.image,t.insert({image:e.attributes.image},n)}if(null==e.attributes||e.attributes.list!==!0&&e.attributes.bullet!==!0||(e=(0,k.default)(e),e.attributes.list?e.attributes.list="ordered":(e.attributes.list="bullet",delete e.attributes.bullet)),"string"==typeof e.insert){var r=e.insert.replace(/\r\n/g,"\n").replace(/\r/g,"\n");return t.insert(r,e.attributes)}return t.push(e)},new p.default)}Object.defineProperty(e,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},u=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function t(t,e){for(var n=0;n=r&&!a.endsWith("\n")&&(n=!0),e.scroll.insertAt(t,a);var c=e.scroll.line(t),f=u(c,2),p=f[0],h=f[1],y=(0,N.default)({},(0,O.bubbleFormats)(p));if(p instanceof x.default){var b=p.descendant(v.default.Leaf,h),g=u(b,1),m=g[0];y=(0,N.default)(y,(0,O.bubbleFormats)(m))}l=d.default.attributes.diff(y,l)||{}}else if("object"===s(o.insert)){var _=Object.keys(o.insert)[0];if(null==_)return t;e.scroll.insertAt(t,_,o.insert[_])}r+=i}return Object.keys(l).forEach(function(n){e.scroll.formatAt(t,i,n,l[n])}),t+i},0),t.reduce(function(t,n){return"number"==typeof n.delete?(e.scroll.deleteAt(t,n.delete),t):t+(n.retain||n.insert.length||1)},0),this.scroll.batch=!1,this.scroll.optimize(),this.update(t)}},{key:"deleteText",value:function(t,e){return this.scroll.deleteAt(t,e),this.update((new p.default).retain(t).delete(e))}},{key:"formatLine",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.scroll.update(),Object.keys(r).forEach(function(o){if(null==n.scroll.whitelist||n.scroll.whitelist[o]){var i=n.scroll.lines(t,Math.max(e,1)),l=e;i.forEach(function(e){var i=e.length();if(e instanceof g.default){var a=t-e.offset(n.scroll),s=e.newlineIndex(a+l)-a+1;e.formatAt(a,s,o,r[o])}else e.format(o,r[o]);l-=i})}}),this.scroll.optimize(),this.update((new p.default).retain(t).retain(e,(0,k.default)(r)))}},{key:"formatText",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return Object.keys(r).forEach(function(o){n.scroll.formatAt(t,e,o,r[o])}),this.update((new p.default).retain(t).retain(e,(0,k.default)(r)))}},{key:"getContents",value:function(t,e){return this.delta.slice(t,t+e)}},{key:"getDelta",value:function(){return this.scroll.lines().reduce(function(t,e){return t.concat(e.delta())},new p.default)}},{key:"getFormat",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=[],r=[];0===e?this.scroll.path(t).forEach(function(t){var e=u(t,1),o=e[0];o instanceof x.default?n.push(o):o instanceof v.default.Leaf&&r.push(o)}):(n=this.scroll.lines(t,e),r=this.scroll.descendants(v.default.Leaf,t,e));var o=[n,r].map(function(t){if(0===t.length)return{};for(var e=(0,O.bubbleFormats)(t.shift());Object.keys(e).length>0;){var n=t.shift();if(null==n)return e;e=l((0,O.bubbleFormats)(n),e)}return e});return N.default.apply(N.default,o)}},{key:"getText",value:function(t,e){return this.getContents(t,e).filter(function(t){return"string"==typeof t.insert}).map(function(t){return t.insert}).join("")}},{key:"insertEmbed",value:function(t,e,n){return this.scroll.insertAt(t,e,n),this.update((new p.default).retain(t).insert(o({},e,n)))}},{key:"insertText",value:function(t,e){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n"),this.scroll.insertAt(t,e),Object.keys(r).forEach(function(o){n.scroll.formatAt(t,e.length,o,r[o])}),this.update((new p.default).retain(t).insert(e,(0,k.default)(r)))}},{key:"isBlank",value:function(){if(0==this.scroll.children.length)return!0;if(this.scroll.children.length>1)return!1;var t=this.scroll.children.head;return t.length()<=1&&0==Object.keys(t.formats()).length}},{key:"removeFormat",value:function(t,e){var n=this.getText(t,e),r=this.scroll.line(t+e),o=u(r,2),i=o[0],l=o[1],a=0,s=new p.default;null!=i&&(a=i instanceof g.default?i.newlineIndex(l)-l+1:i.length()-l,s=i.delta().slice(l,l+a-1).insert("\n"));var c=this.getContents(t,e+a),f=c.diff((new p.default).insert(n).concat(s)),h=(new p.default).retain(t).concat(f);return this.applyDelta(h)}},{key:"update",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,o=this.delta;return 1===n.length&&"characterData"===n[0].type&&v.default.find(n[0].target)?!function(){var i=v.default.find(n[0].target),l=(0,O.bubbleFormats)(i),a=i.offset(e.scroll),s=n[0].oldValue.replace(_.default.CONTENTS,""),u=(new p.default).insert(s),c=(new p.default).insert(i.value()),f=(new p.default).retain(a).concat(u.diff(c,r));t=f.reduce(function(t,e){return e.insert?t.insert(e.insert,l):t.push(e)},new p.default),e.delta=o.compose(t)}():(this.delta=this.getDelta(),t&&(0,j.default)(o.compose(t),this.delta)||(t=o.diff(this.delta,r))),t}}]),t}();e.default=q},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.Code=void 0;var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function t(t,e){for(var n=0;n=t+n)){var l=this.newlineIndex(t,!0)+1,a=i-l+1,s=this.isolate(l,a),u=s.next;s.format(r,o),u instanceof e&&u.formatAt(0,t-l+n-a,r,o)}}}},{key:"insertAt",value:function(t,e,n){if(null==n){var r=this.descendant(m.default,t),o=a(r,2),i=o[0],l=o[1];i.insertAt(l,e)}}},{key:"length",value:function t(){var t=this.domNode.textContent.length;return this.domNode.textContent.endsWith("\n")?t:t+1}},{key:"newlineIndex",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e)return this.domNode.textContent.slice(0,t).lastIndexOf("\n");var n=this.domNode.textContent.slice(t).indexOf("\n");return n>-1?t+n:-1}},{key:"optimize",value:function(){this.domNode.textContent.endsWith("\n")||this.appendChild(h.default.create("text","\n")),u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this);var t=this.next;null!=t&&t.prev===this&&t.statics.blotName===this.statics.blotName&&this.statics.formats(this.domNode)===t.statics.formats(t.domNode)&&(t.optimize(),t.moveChildren(this),t.remove())}},{key:"replace",value:function(t){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replace",this).call(this,t),[].slice.call(this.domNode.querySelectorAll("*")).forEach(function(t){var e=h.default.find(t);null==e?t.parentNode.removeChild(t):e instanceof h.default.Embed?e.remove():e.unwrap()})}}],[{key:"create",value:function(t){var n=u(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);
-return n.setAttribute("spellcheck",!1),n}},{key:"formats",value:function(){return!0}}]),e}(y.default);O.blotName="code-block",O.tagName="PRE",O.TAB=" ",e.Code=_,e.default=O},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return null==t?e:("function"==typeof t.formats&&(e=(0,f.default)(e,t.formats())),null==t.parent||"scroll"==t.parent.blotName||t.parent.statics.scope!==t.statics.scope?e:a(t.parent,e))}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BlockEmbed=e.bubbleFormats=void 0;var s=function(){function t(t,e){for(var n=0;n0&&(t1&&void 0!==arguments[1]&&arguments[1];if(n&&(0===t||t>=this.length()-k)){var r=this.clone();return 0===t?(this.parent.insertBefore(r,this),this):(this.parent.insertBefore(r,this.next),r)}var o=u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"split",this).call(this,t,n);return this.cache={},o}}]),e}(y.default.Block);j.blotName="block",j.tagName="P",j.defaultChild="break",j.allowedChildren=[O.default,m.default,w.default],e.bubbleFormats=a,e.BlockEmbed=E,e.default=j},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n0){var t=this.parent.isolate(this.offset(),this.length());this.moveChildren(t),t.wrap(this)}}}],[{key:"compare",value:function(t,n){var r=e.order.indexOf(t),o=e.order.indexOf(n);return r>=0||o>=0?r-o:t===n?0:t1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};n(this,t),this.quill=e,this.options=r};r.DEFAULTS={},e.default=r},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e1&&void 0!==arguments[1]?arguments[1]:0;i(this,t),this.index=e,this.length=n},O=function(){function t(e,n){var r=this;i(this,t),this.emitter=n,this.scroll=e,this.composing=!1,this.root=this.scroll.domNode,this.root.addEventListener("compositionstart",function(){r.composing=!0}),this.root.addEventListener("compositionend",function(){r.composing=!1}),this.cursor=c.default.create("cursor",this),this.lastRange=this.savedRange=new _(0,0),["keyup","mouseup","mouseleave","touchend","touchleave","focus","blur"].forEach(function(t){r.root.addEventListener(t,function(){setTimeout(r.update.bind(r,v.default.sources.USER),100)})}),this.emitter.on(v.default.events.EDITOR_CHANGE,function(t,e){t===v.default.events.TEXT_CHANGE&&e.length()>0&&r.update(v.default.sources.SILENT)}),this.emitter.on(v.default.events.SCROLL_BEFORE_UPDATE,function(){var t=r.getNativeRange();null!=t&&t.start.node!==r.cursor.textNode&&r.emitter.once(v.default.events.SCROLL_UPDATE,function(){try{r.setNativeRange(t.start.node,t.start.offset,t.end.node,t.end.offset)}catch(t){}})}),this.update(v.default.sources.SILENT)}return s(t,[{key:"focus",value:function(){this.hasFocus()||(this.root.focus(),this.setRange(this.savedRange))}},{key:"format",value:function(t,e){if(null==this.scroll.whitelist||this.scroll.whitelist[t]){this.scroll.update();var n=this.getNativeRange();if(null!=n&&n.native.collapsed&&!c.default.query(t,c.default.Scope.BLOCK)){if(n.start.node!==this.cursor.textNode){var r=c.default.find(n.start.node,!1);if(null==r)return;if(r instanceof c.default.Leaf){var o=r.split(n.start.offset);r.parent.insertBefore(this.cursor,o)}else r.insertBefore(this.cursor,n.start.node);this.cursor.attach()}this.cursor.format(t,e),this.scroll.optimize(),this.setNativeRange(this.cursor.textNode,this.cursor.textNode.data.length),this.update()}}}},{key:"getBounds",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.scroll.length();t=Math.min(t,n-1),e=Math.min(t+e,n-1)-t;var r=void 0,o=void 0,i=this.scroll.leaf(t),l=a(i,2),s=l[0],u=l[1];if(null==s)return null;var c=s.position(u,!0),f=a(c,2);o=f[0],u=f[1];var p=document.createRange();if(e>0){p.setStart(o,u);var h=this.scroll.leaf(t+e),d=a(h,2);if(s=d[0],u=d[1],null==s)return null;var y=s.position(u,!0),v=a(y,2);o=v[0],u=v[1],p.setEnd(o,u),r=p.getBoundingClientRect()}else{var b="left",g=void 0;o instanceof Text?(u0&&(b="right")),r={height:g.height,left:g[b],width:0,top:g.top}}var m=this.root.parentNode.getBoundingClientRect();return{left:r.left-m.left,right:r.left+r.width-m.left,top:r.top-m.top,bottom:r.top+r.height-m.top,height:r.height,width:r.width}}},{key:"getNativeRange",value:function(){var t=document.getSelection();if(null==t||t.rangeCount<=0)return null;var e=t.getRangeAt(0);if(null==e)return null;if(!l(this.root,e.startContainer)||!e.collapsed&&!l(this.root,e.endContainer))return null;var n={start:{node:e.startContainer,offset:e.startOffset},end:{node:e.endContainer,offset:e.endOffset},native:e};return[n.start,n.end].forEach(function(t){for(var e=t.node,n=t.offset;!(e instanceof Text)&&e.childNodes.length>0;)if(e.childNodes.length>n)e=e.childNodes[n],n=0;else{if(e.childNodes.length!==n)break;e=e.lastChild,n=e instanceof Text?e.data.length:e.childNodes.length+1}t.node=e,t.offset=n}),m.info("getNativeRange",n),n}},{key:"getRange",value:function(){var t=this,e=this.getNativeRange();if(null==e)return[null,null];var n=[[e.start.node,e.start.offset]];e.native.collapsed||n.push([e.end.node,e.end.offset]);var r=n.map(function(e){var n=a(e,2),r=n[0],o=n[1],i=c.default.find(r,!0),l=i.offset(t.scroll);return 0===o?l:i instanceof c.default.Container?l+i.length():l+i.index(r,o)}),i=Math.min.apply(Math,o(r)),l=Math.max.apply(Math,o(r));return l=Math.min(l,this.scroll.length()-1),[new _(i,l-i),e]}},{key:"hasFocus",value:function(){return document.activeElement===this.root}},{key:"scrollIntoView",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.lastRange;if(null!=t){var e=this.getBounds(t.index,t.length);if(null!=e)if(this.root.offsetHeight2&&void 0!==arguments[2]?arguments[2]:t,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(m.info("setNativeRange",t,e,n,r),null==t||null!=this.root.parentNode&&null!=t.parentNode&&null!=n.parentNode){var i=document.getSelection();if(null!=i)if(null!=t){this.hasFocus()||this.root.focus();var l=(this.getNativeRange()||{}).native;if(null==l||o||t!==l.startContainer||e!==l.startOffset||n!==l.endContainer||r!==l.endOffset){"BR"==t.tagName&&(e=[].indexOf.call(t.parentNode.childNodes,t),t=t.parentNode),"BR"==n.tagName&&(r=[].indexOf.call(n.parentNode.childNodes,n),n=n.parentNode);var a=document.createRange();a.setStart(t,e),a.setEnd(n,r),i.removeAllRanges(),i.addRange(a)}}else i.removeAllRanges(),this.root.blur(),document.body.focus()}}},{key:"setRange",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:v.default.sources.API;"string"==typeof n&&(r=n,n=!1),m.info("setRange",t),null!=t?!function(){var r=t.collapsed?[t.index]:[t.index,t.index+t.length],i=[],l=e.scroll.length();r.forEach(function(t,n){t=Math.min(l-1,t);var r=void 0,o=e.scroll.leaf(t),s=a(o,2),u=s[0],c=s[1],f=u.position(c,0!==n),p=a(f,2);r=p[0],c=p[1],i.push(r,c)}),i.length<2&&(i=i.concat(i)),e.setNativeRange.apply(e,o(i).concat([n]))}():this.setNativeRange(null),this.update(r)}},{key:"update",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:v.default.sources.USER,e=this.lastRange,n=this.getRange(),r=a(n,2),o=r[0],i=r[1];if(this.lastRange=o,null!=this.lastRange&&(this.savedRange=this.lastRange),!(0,d.default)(e,this.lastRange)){var l;!this.composing&&null!=i&&i.native.collapsed&&i.start.node!==this.cursor.textNode&&this.cursor.restore();var s=[v.default.events.SELECTION_CHANGE,(0,p.default)(this.lastRange),(0,p.default)(e),t];if((l=this.emitter).emit.apply(l,[v.default.events.EDITOR_CHANGE].concat(s)),t!==v.default.sources.SILENT){var u;(u=this.emitter).emit.apply(u,s)}}}}]),t}();e.Range=_,e.default=O},function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n0&&!(i instanceof y.BlockEmbed)&&!(f instanceof y.BlockEmbed)){f instanceof x.default&&f.deleteAt(f.length()-1,1);var p=f.children.head instanceof g.default?null:f.children.head;i.moveChildren(f,p),i.remove()}this.optimize()}},{key:"enable",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.domNode.setAttribute("contenteditable",t)}},{key:"formatAt",value:function(t,n,r,o){(null==this.whitelist||this.whitelist[r])&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"formatAt",this).call(this,t,n,r,o),this.optimize())}},{key:"insertAt",value:function(t,n,r){if(null==r||null==this.whitelist||this.whitelist[n]){if(t>=this.length())if(null==r||null==p.default.query(n,p.default.Scope.BLOCK)){var o=p.default.create(this.statics.defaultChild);this.appendChild(o),null==r&&n.endsWith("\n")&&(n=n.slice(0,-1)),o.insertAt(0,n,r)}else{var i=p.default.create(n,r);this.appendChild(i)}else c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertAt",this).call(this,t,n,r);this.optimize()}}},{key:"insertBefore",value:function(t,n){if(t.statics.scope===p.default.Scope.INLINE_BLOT){var r=p.default.create(this.statics.defaultChild);r.appendChild(t),t=r}c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n)}},{key:"leaf",value:function(t){return this.path(t).pop()||[null,-1]}},{key:"line",value:function(t){return t===this.length()?this.line(t-1):this.descendant(a,t)}},{key:"lines",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,n=function t(e,n,r){var o=[],i=r;return e.children.forEachAt(n,r,function(e,n,r){a(e)?o.push(e):e instanceof p.default.Container&&(o=o.concat(t(e,n,i))),i-=r}),o};return n(this,t,e)}},{key:"optimize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.batch!==!0&&(c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this,t),t.length>0&&this.emitter.emit(d.default.events.SCROLL_OPTIMIZE,t))}},{key:"path",value:function(t){return c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"path",this).call(this,t).slice(1)}},{key:"update",value:function(t){if(this.batch!==!0){var n=d.default.sources.USER;"string"==typeof t&&(n=t),Array.isArray(t)||(t=this.observer.takeRecords()),t.length>0&&this.emitter.emit(d.default.events.SCROLL_BEFORE_UPDATE,n,t),c(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"update",this).call(this,t.concat([])),t.length>0&&this.emitter.emit(d.default.events.SCROLL_UPDATE,n,t)}}}]),e}(p.default.Scroll);w.blotName="scroll",w.className="ql-editor",w.tagName="DIV",w.defaultChild="block",w.allowedChildren=[v.default,y.BlockEmbed,_.default],e.default=w},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e=0&&n.length-1}function p(t,e,n){return t.nodeType===t.TEXT_NODE?n.reduce(function(e,n){return n(t,e)},new E.default):t.nodeType===t.ELEMENT_NODE?[].reduce.call(t.childNodes||[],function(r,o){var i=p(o,e,n);return o.nodeType===t.ELEMENT_NODE&&(i=e.reduce(function(t,e){return e(o,t)},i),i=(o[F]||[]).reduce(function(t,e){return e(o,t)},i)),r.concat(i)},new E.default):new E.default}function h(t,e,n){return n.compose((new E.default).retain(n.length(),o({},t,!0)))}function d(t,e){var n=A.default.Attributor.Attribute.keys(t),r=A.default.Attributor.Class.keys(t),o=A.default.Attributor.Style.keys(t),i={};return n.concat(r).concat(o).forEach(function(e){var n=A.default.query(e,A.default.Scope.ATTRIBUTE);null!=n&&(i[n.attrName]=n.value(t),i[n.attrName])||(null!=z[e]&&(n=z[e],i[n.attrName]=n.value(t)||void 0),null!=K[e]&&(n=K[e],i[n.attrName]=n.value(t)||void 0))}),Object.keys(i).length>0&&(e=e.compose((new E.default).retain(e.length(),i))),e}function y(t,e){var n=A.default.query(t);if(null==n)return e;if(n.prototype instanceof A.default.Embed){var r={},i=n.value(t);null!=i&&(r[n.blotName]=i,e=(new E.default).insert(r,n.formats(t)))}else if("function"==typeof n.formats){var l=o({},n.blotName,n.formats(t));e=e.compose((new E.default).retain(e.length(),l))}return e}function v(t,e){return c(e,"\n")||e.insert("\n"),e}function b(){return new E.default}function g(t,e){return f(t)&&!c(e,"\n")&&e.insert("\n"),e}function m(t,e){if(f(t)&&null!=t.nextElementSibling&&!c(e,"\n\n")){var n=t.offsetHeight+parseFloat(u(t).marginTop)+parseFloat(u(t).marginBottom);t.nextElementSibling.offsetTop>t.offsetTop+1.5*n&&e.insert("\n")}return e}function _(t,e){var n={},r=t.style||{};return r.fontStyle&&"italic"===u(t).fontStyle&&(n.italic=!0),r.fontWeight&&"bold"===u(t).fontWeight&&(n.bold=!0),Object.keys(n).length>0&&(e=e.compose((new E.default).retain(e.length(),n))),parseFloat(r.textIndent||0)>0&&(e=(new E.default).insert("\t").concat(e)),e}function O(t,e){var n=t.data;if("O:P"===t.parentNode.tagName)return e.insert(n.trim());if(!u(t.parentNode).whiteSpace.startsWith("pre")){var r=function(t,e){return e=e.replace(/[^\u00a0]/g,""),e.length<1&&t?" ":e};n=n.replace(/\r\n/g," ").replace(/\n/g," "),n=n.replace(/\s\s+/g,r.bind(r,!0)),(null==t.previousSibling&&f(t.parentNode)||null!=t.previousSibling&&f(t.previousSibling))&&(n=n.replace(/^\s+/,r.bind(r,!1))),(null==t.nextSibling&&f(t.parentNode)||null!=t.nextSibling&&f(t.nextSibling))&&(n=n.replace(/\s+$/,r.bind(r,!1)))}return e.insert(n)}Object.defineProperty(e,"__esModule",{value:!0}),e.matchText=e.matchSpacing=e.matchNewline=e.matchBlot=e.matchAttributor=e.default=void 0;var x=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),w=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:q.default.sources.API;if("string"==typeof t)return this.quill.setContents(this.convert(t),e);var r=this.convert(e);return this.quill.updateContents((new E.default).retain(t).concat(r),n)}},{key:"onPaste",value:function(t){var e=this;if(!t.defaultPrevented&&this.quill.isEnabled()){var n=this.quill.getSelection(),r=(new E.default).retain(n.index),o=this.quill.scrollingContainer.scrollTop;this.container.focus(),setTimeout(function(){e.quill.selection.update(q.default.sources.SILENT),r=r.concat(e.convert()).delete(n.length),e.quill.updateContents(r,q.default.sources.USER),e.quill.setSelection(r.length()-n.length,q.default.sources.SILENT),e.quill.scrollingContainer.scrollTop=o,e.quill.selection.scrollIntoView()},1)}}},{key:"prepareMatching",value:function(){var t=this,e=[],n=[];return this.matchers.forEach(function(r){var o=x(r,2),i=o[0],l=o[1];switch(i){case Node.TEXT_NODE:n.push(l);break;case Node.ELEMENT_NODE:e.push(l);break;default:[].forEach.call(t.container.querySelectorAll(i),function(t){t[F]=t[F]||[],t[F].push(l)})}}),[e,n]}}]),e}(C.default);Z.DEFAULTS={matchers:[]},e.default=Z,e.matchAttributor=d,e.matchBlot=y,e.matchNewline=g,e.matchSpacing=m,e.matchText=O},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.AlignStyle=e.AlignClass=e.AlignAttribute=void 0;var o=n(2),i=r(o),l={scope:i.default.Scope.BLOCK,whitelist:["right","center","justify"]},a=new i.default.Attributor.Attribute("align","align",l),s=new i.default.Attributor.Class("align","ql-align",l),u=new i.default.Attributor.Style("align","text-align",l);e.AlignAttribute=a,e.AlignClass=s,e.AlignStyle=u},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}Object.defineProperty(e,"__esModule",{value:!0}),e.BackgroundStyle=e.BackgroundClass=void 0;var o=n(2),i=r(o),l=n(47),a=new i.default.Attributor.Class("background","ql-bg",{scope:i.default.Scope.INLINE}),s=new l.ColorAttributor("background","background-color",{scope:i.default.Scope.INLINE});e.BackgroundClass=a,e.BackgroundStyle=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.ColorStyle=e.ColorClass=e.ColorAttributor=void 0;var a=function(){function t(t,e){for(var n=0;nr&&this.stack.undo.length>0){var o=this.stack.undo.pop();n=n.compose(o.undo),t=o.redo.compose(t)}else this.lastRecorded=r;this.stack.undo.push({redo:t,undo:n}),this.stack.undo.length>this.options.maxStack&&this.stack.undo.shift()}}},{key:"redo",value:function(){this.change("redo","undo")}},{key:"transform",value:function(t){this.stack.undo.forEach(function(e){e.undo=t.transform(e.undo,!0),e.redo=t.transform(e.redo,!0)}),this.stack.redo.forEach(function(e){e.undo=t.transform(e.undo,!0),e.redo=t.transform(e.redo,!0)})}},{key:"undo",value:function(){this.change("undo","redo")}}]),e}(y.default);v.DEFAULTS={delay:1e3,maxStack:100,userOnly:!1},e.default=v,e.getLastChangeIndex=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t,e){if(0!==t.index){var n=this.quill.getLine(t.index),r=y(n,1),o=r[0],i={};if(0===e.offset){var l=o.formats(),a=this.quill.getFormat(t.index-1,1);i=k.default.attributes.diff(l,a)||{}}var s=/[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(e.prefix)?2:1;this.quill.deleteText(t.index-s,s,N.default.sources.USER),Object.keys(i).length>0&&this.quill.formatLine(t.index-s,s,i,N.default.sources.USER),this.quill.selection.scrollIntoView()}}function s(t,e){var n=/^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(e.suffix)?2:1;t.index>=this.quill.getLength()-n||this.quill.deleteText(t.index,n,N.default.sources.USER)}function u(t){this.quill.deleteText(t,N.default.sources.USER),this.quill.setSelection(t.index,N.default.sources.SILENT),this.quill.selection.scrollIntoView()}function c(t,e){var n=this;t.length>0&&this.quill.scroll.deleteAt(t.index,t.length);var r=Object.keys(e.format).reduce(function(t,n){return j.default.query(n,j.default.Scope.BLOCK)&&!Array.isArray(e.format[n])&&(t[n]=e.format[n]),t},{});this.quill.insertText(t.index,"\n",r,N.default.sources.USER),this.quill.setSelection(t.index+1,N.default.sources.SILENT),this.quill.selection.scrollIntoView(),Object.keys(e.format).forEach(function(t){null==r[t]&&(Array.isArray(e.format[t])||"link"!==t&&n.quill.format(t,e.format[t],N.default.sources.USER))})}function f(t){return{key:M.keys.TAB,shiftKey:!t,format:{"code-block":!0},handler:function(e){var n=j.default.query("code-block"),r=e.index,o=e.length,i=this.quill.scroll.descendant(n,r),l=y(i,2),a=l[0],s=l[1];if(null!=a){var u=this.quill.getIndex(a),c=a.newlineIndex(s,!0)+1,f=a.newlineIndex(u+s+o),p=a.domNode.textContent.slice(c,f).split("\n");s=0,p.forEach(function(e,i){t?(a.insertAt(c+s,n.TAB),s+=n.TAB.length,0===i?r+=n.TAB.length:o+=n.TAB.length):e.startsWith(n.TAB)&&(a.deleteAt(c+s,n.TAB.length),s-=n.TAB.length,0===i?r-=n.TAB.length:o-=n.TAB.length),s+=e.length+1}),this.quill.update(N.default.sources.USER),this.quill.setSelection(r,o,N.default.sources.SILENT)}}}}function p(t){return{key:t[0].toUpperCase(),shortKey:!0,handler:function(e,n){this.quill.format(t,!n.format[t],N.default.sources.USER)}}}function h(t){if("string"==typeof t||"number"==typeof t)return h({key:t});if("object"===("undefined"==typeof t?"undefined":d(t))&&(t=(0,g.default)(t,!1)),"string"==typeof t.key)if(null!=M.keys[t.key.toUpperCase()])t.key=M.keys[t.key.toUpperCase()];else{if(1!==t.key.length)return null;t.key=t.key.toUpperCase().charCodeAt(0)}return t}Object.defineProperty(e,"__esModule",{value:!0});var d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},y=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),v=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=h(t);return null==r||null==r.key?C.warn("Attempted to add invalid keyboard binding",r):("function"==typeof e&&(e={handler:e}),"function"==typeof n&&(n={handler:n}),r=(0,x.default)(r,e,n),this.bindings[r.key]=this.bindings[r.key]||[],void this.bindings[r.key].push(r))}},{key:"listen",value:function(){var t=this;this.quill.root.addEventListener("keydown",function(n){if(!n.defaultPrevented){var r=n.which||n.keyCode,o=(t.bindings[r]||[]).filter(function(t){return e.match(n,t)});if(0!==o.length){var i=t.quill.getSelection();if(null!=i&&t.quill.hasFocus()){var l=t.quill.getLine(i.index),a=y(l,2),s=a[0],u=a[1],c=t.quill.getLeaf(i.index),f=y(c,2),p=f[0],h=f[1],v=0===i.length?[p,h]:t.quill.getLeaf(i.index+i.length),b=y(v,2),g=b[0],m=b[1],O=p instanceof j.default.Text?p.value().slice(0,h):"",x=g instanceof j.default.Text?g.value().slice(m):"",w={collapsed:0===i.length,empty:0===i.length&&s.length()<=1,format:t.quill.getFormat(i),offset:u,prefix:O,suffix:x},k=o.some(function(e){if(null!=e.collapsed&&e.collapsed!==w.collapsed)return!1;if(null!=e.empty&&e.empty!==w.empty)return!1;if(null!=e.offset&&e.offset!==w.offset)return!1;if(Array.isArray(e.format)){if(e.format.every(function(t){return null==w.format[t]}))return!1}else if("object"===d(e.format)&&!Object.keys(e.format).every(function(t){return e.format[t]===!0?null!=w.format[t]:e.format[t]===!1?null==w.format[t]:(0,_.default)(e.format[t],w.format[t])}))return!1;return!(null!=e.prefix&&!e.prefix.test(w.prefix))&&(!(null!=e.suffix&&!e.suffix.test(w.suffix))&&e.handler.call(t,i,w)!==!0)});k&&n.preventDefault()}}}})}}]),e}(P.default);M.keys={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46},M.DEFAULTS={bindings:{bold:p("bold"),italic:p("italic"),underline:p("underline"),indent:{key:M.keys.TAB,format:["blockquote","indent","list"],handler:function(t,e){return!(!e.collapsed||0===e.offset)||void this.quill.format("indent","+1",N.default.sources.USER)}},outdent:{key:M.keys.TAB,shiftKey:!0,format:["blockquote","indent","list"],handler:function(t,e){return!(!e.collapsed||0===e.offset)||void this.quill.format("indent","-1",N.default.sources.USER)}},"outdent backspace":{key:M.keys.BACKSPACE,collapsed:!0,format:["blockquote","indent","list"],offset:0,handler:function(t,e){null!=e.format.indent?this.quill.format("indent","-1",N.default.sources.USER):null!=e.format.blockquote?this.quill.format("blockquote",!1,N.default.sources.USER):null!=e.format.list&&this.quill.format("list",!1,N.default.sources.USER)}},"indent code-block":f(!0),"outdent code-block":f(!1),"remove tab":{key:M.keys.TAB,shiftKey:!0,collapsed:!0,prefix:/\t$/,handler:function(t){this.quill.deleteText(t.index-1,1,N.default.sources.USER)}},tab:{key:M.keys.TAB,handler:function(t,e){e.collapsed||this.quill.scroll.deleteAt(t.index,t.length),this.quill.insertText(t.index,"\t",N.default.sources.USER),this.quill.setSelection(t.index+1,N.default.sources.SILENT)}},"list empty enter":{key:M.keys.ENTER,collapsed:!0,format:["list"],empty:!0,handler:function(t,e){this.quill.format("list",!1,N.default.sources.USER),e.format.indent&&this.quill.format("indent",!1,N.default.sources.USER)}},"checklist enter":{key:M.keys.ENTER,collapsed:!0,format:{list:"checked"},handler:function(t){this.quill.scroll.insertAt(t.index,"\n");var e=this.quill.getLine(t.index+1),n=y(e,1),r=n[0];r.format("list","unchecked"),this.quill.update(N.default.sources.USER),this.quill.setSelection(t.index+1,N.default.sources.SILENT),this.quill.selection.scrollIntoView()}},"header enter":{key:M.keys.ENTER,collapsed:!0,format:["header"],suffix:/^$/,handler:function(t){this.quill.scroll.insertAt(t.index,"\n"),this.quill.formatText(t.index+1,1,"header",!1,N.default.sources.USER),this.quill.setSelection(t.index+1,N.default.sources.SILENT),this.quill.selection.scrollIntoView()}},"list autofill":{key:" ",collapsed:!0,format:{list:!1},prefix:/^(1\.|-)$/,handler:function(t,e){if(null!=this.quill.scroll.whitelist&&!this.quill.scroll.whitelist.list)return!0;var n=e.prefix.length;this.quill.scroll.deleteAt(t.index-n,n),this.quill.formatLine(t.index-n,1,"list",1===n?"bullet":"ordered",N.default.sources.USER),this.quill.setSelection(t.index-n,N.default.sources.SILENT)}},"code exit":{key:M.keys.ENTER,
-collapsed:!0,format:["code-block"],prefix:/\n\n$/,suffix:/^\s+$/,handler:function(t){this.quill.format("code-block",!1,N.default.sources.USER),this.quill.deleteText(t.index-2,1,N.default.sources.USER)}}}},e.default=M},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var o=n(1),i=r(o),l=n(45),a=n(48),s=n(54),u=n(55),c=r(u),f=n(56),p=r(f),h=n(57),d=r(h),y=n(46),v=n(47),b=n(49),g=n(50),m=n(58),_=r(m),O=n(59),x=r(O),w=n(60),k=r(w),E=n(61),j=r(E),A=n(62),N=r(A),q=n(63),S=r(q),T=n(64),P=r(T),C=n(65),L=r(C),M=n(28),R=r(M),I=n(66),B=r(I),D=n(67),U=r(D),F=n(68),H=r(F),z=n(69),K=r(z),Z=n(102),V=r(Z),W=n(104),Y=r(W),G=n(105),$=r(G),Q=n(106),X=r(Q),J=n(107),tt=r(J),et=n(109),nt=r(et);i.default.register({"attributors/attribute/direction":a.DirectionAttribute,"attributors/class/align":l.AlignClass,"attributors/class/background":y.BackgroundClass,"attributors/class/color":v.ColorClass,"attributors/class/direction":a.DirectionClass,"attributors/class/font":b.FontClass,"attributors/class/size":g.SizeClass,"attributors/style/align":l.AlignStyle,"attributors/style/background":y.BackgroundStyle,"attributors/style/color":v.ColorStyle,"attributors/style/direction":a.DirectionStyle,"attributors/style/font":b.FontStyle,"attributors/style/size":g.SizeStyle},!0),i.default.register({"formats/align":l.AlignClass,"formats/direction":a.DirectionClass,"formats/indent":s.IndentClass,"formats/background":y.BackgroundStyle,"formats/color":v.ColorStyle,"formats/font":b.FontClass,"formats/size":g.SizeClass,"formats/blockquote":c.default,"formats/code-block":R.default,"formats/header":p.default,"formats/list":d.default,"formats/bold":_.default,"formats/code":M.Code,"formats/italic":x.default,"formats/link":k.default,"formats/script":j.default,"formats/strike":N.default,"formats/underline":S.default,"formats/image":P.default,"formats/video":L.default,"formats/list/item":h.ListItem,"modules/formula":B.default,"modules/syntax":U.default,"modules/toolbar":H.default,"themes/bubble":tt.default,"themes/snow":nt.default,"ui/icons":K.default,"ui/picker":V.default,"ui/icon-picker":$.default,"ui/color-picker":Y.default,"ui/tooltip":X.default},!0),t.exports=i.default},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.IndentClass=void 0;var a=function(){function t(t,e){for(var n=0;n0&&this.children.tail.format(t,e)}},{key:"formats",value:function(){return o({},this.statics.blotName,this.statics.formats(this.domNode))}},{key:"insertBefore",value:function(t,n){if(t instanceof v)u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"insertBefore",this).call(this,t,n);else{var r=null==n?this.length():n.offset(this),o=this.split(r);o.parent.insertBefore(t,o)}}},{key:"optimize",value:function(){u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"optimize",this).call(this);var t=this.next;null!=t&&t.prev===this&&t.statics.blotName===this.statics.blotName&&t.domNode.tagName===this.domNode.tagName&&t.domNode.getAttribute("data-checked")===this.domNode.getAttribute("data-checked")&&(t.moveChildren(this),t.remove())}},{key:"replace",value:function(t){if(t.statics.blotName!==this.statics.blotName){var n=f.default.create(this.statics.defaultChild);t.moveChildren(n),this.appendChild(n)}u(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"replace",this).call(this,t)}}]),e}(y.default);b.blotName="list",b.scope=f.default.Scope.BLOCK_BLOT,b.tagName=["OL","UL"],b.defaultChild="list-item",b.allowedChildren=[v],e.ListItem=v,e.default=b},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n-1}Object.defineProperty(e,"__esModule",{value:!0}),e.sanitize=e.default=void 0;var s=function(){function t(t,e){for(var n=0;n-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=s(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return"string"==typeof t&&n.setAttribute("src",this.sanitize(t)),n}},{key:"formats",value:function(t){return p.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"match",value:function(t){return/\.(jpe?g|gif|png)$/.test(t)||/^data:image\/.+;base64/.test(t)}},{key:"sanitize",value:function(t){return(0,f.sanitize)(t,["http","https","data"])?t:"//:0"}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(c.default);h.blotName="image",h.tagName="IMG",e.default=h},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;n-1?n?this.domNode.setAttribute(t,n):this.domNode.removeAttribute(t):s(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"format",this).call(this,t,n)}}],[{key:"create",value:function(t){var n=s(e.__proto__||Object.getPrototypeOf(e),"create",this).call(this,t);return n.setAttribute("frameborder","0"),n.setAttribute("allowfullscreen",!0),n.setAttribute("src",this.sanitize(t)),n}},{key:"formats",value:function(t){return p.reduce(function(e,n){return t.hasAttribute(n)&&(e[n]=t.getAttribute(n)),e},{})}},{key:"sanitize",value:function(t){return f.default.sanitize(t)}},{key:"value",value:function(t){return t.getAttribute("src")}}]),e}(u.BlockEmbed);h.blotName="video",h.className="ql-video",h.tagName="IFRAME",e.default=h},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(){if(null==window.katex)throw new Error("Formula module requires KaTeX.");h.default.register(d,!0)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.FormulaBlot=void 0;var s=function(){function t(t,e){for(var n=0;n0||null==this.cachedHTML)&&(this.domNode.innerHTML=t(e),this.attach()),this.cachedHTML=this.domNode.innerHTML}}}]),e}(v.default);b.className="ql-syntax";var g=new c.default.Attributor.Class("token","hljs",{scope:c.default.Scope.INLINE}),m=function(t){function e(t,n){o(this,e);var r=i(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t,n));if("function"!=typeof r.options.highlight)throw new Error("Syntax module requires highlight.js. Please include the library on the page before Quill.");p.default.register(g,!0),p.default.register(b,!0);var l=null;return r.quill.on(p.default.events.SCROLL_OPTIMIZE,function(){null==l&&(l=setTimeout(function(){r.highlight(),l=null},100))}),r.highlight(),r}return l(e,t),a(e,[{key:"highlight",value:function(){var t=this;if(!this.quill.selection.composing){var e=this.quill.getSelection();this.quill.scroll.descendants(b).forEach(function(e){e.highlight(t.options.highlight)}),this.quill.update(p.default.sources.SILENT),null!=e&&this.quill.setSelection(e,p.default.sources.SILENT)}}}]),e}(d.default);m.DEFAULTS={highlight:function(){return null==window.hljs?null:function(t){var e=window.hljs.highlightAuto(t);return e.value}}()},e.CodeBlock=b,e.CodeToken=g,e.default=m},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function s(t,e,n){var r=document.createElement("button");r.setAttribute("type","button"),r.classList.add("ql-"+e),null!=n&&(r.value=n),t.appendChild(r)}function u(t,e){Array.isArray(e[0])||(e=[e]),e.forEach(function(e){var n=document.createElement("span");n.classList.add("ql-formats"),e.forEach(function(t){if("string"==typeof t)s(n,t);else{var e=Object.keys(t)[0],r=t[e];Array.isArray(r)?c(n,e,r):s(n,e,r)}}),t.appendChild(n)})}function c(t,e,n){var r=document.createElement("select");r.classList.add("ql-"+e),n.forEach(function(t){var e=document.createElement("option");t!==!1?e.setAttribute("value",t):e.setAttribute("selected","selected"),r.appendChild(e)}),t.appendChild(r)}Object.defineProperty(e,"__esModule",{value:!0}),e.addControls=e.default=void 0;var f=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),p=function(){function t(t,e){for(var n=0;n '},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e){t.exports=''},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l=function(){function t(t,e){for(var n=0;n1&&void 0!==arguments[1]&&arguments[1],n=this.container.querySelector(".ql-selected");if(t!==n&&(null!=n&&n.classList.remove("ql-selected"),null!=t&&(t.classList.add("ql-selected"),this.select.selectedIndex=[].indexOf.call(t.parentNode.children,t),t.hasAttribute("data-value")?this.label.setAttribute("data-value",t.getAttribute("data-value")):this.label.removeAttribute("data-value"),t.hasAttribute("data-label")?this.label.setAttribute("data-label",t.getAttribute("data-label")):this.label.removeAttribute("data-label"),e))){if("function"==typeof Event)this.select.dispatchEvent(new Event("change"));else if("object"===("undefined"==typeof Event?"undefined":i(Event))){var r=document.createEvent("Event");r.initEvent("change",!0,!0),this.select.dispatchEvent(r)}this.close()}}},{key:"update",value:function(){var t=void 0;if(this.select.selectedIndex>-1){var e=this.container.querySelector(".ql-picker-options").children[this.select.selectedIndex];t=this.select.options[this.select.selectedIndex],this.selectItem(e)}else this.selectItem(null);var n=null!=t&&t!==this.select.querySelector("option[selected]");this.label.classList.toggle("ql-active",n)}}]),t}();e.default=u},function(t,e){t.exports=''},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){for(var n=0;nr.right&&(i=r.right-o.right,this.root.style.left=e+i+"px"),o.leftr.bottom){var l=o.bottom-o.top,a=r.bottom-o.bottom-l;this.root.style.top=n+a+"px",this.root.classList.add("ql-flip")}return i}},{key:"show",value:function(){this.root.classList.remove("ql-editing"),this.root.classList.remove("ql-hidden")}}]),t}();e.default=o},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BubbleTooltip=void 0;var a=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},s=function(){function t(t,e){for(var n=0;n0&&o===p.default.sources.USER){r.show(),r.root.style.left="0px",r.root.style.width="",r.root.style.width=r.root.offsetWidth+"px";var i=r.quill.getLines(e.index,e.length);if(1===i.length)r.position(r.quill.getBounds(e));else{var l=i[i.length-1],a=r.quill.getIndex(l),s=Math.min(l.length()-1,e.index+e.length-a),u=r.quill.getBounds(new y.Range(a,s));r.position(u)}}else document.activeElement!==r.textbox&&r.quill.hasFocus()&&r.hide()}),r}return l(e,t),s(e,[{key:"listen",value:function(){var t=this;a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"listen",this).call(this),this.root.querySelector(".ql-close").addEventListener("click",function(){t.root.classList.remove("ql-editing")}),this.quill.on(p.default.events.SCROLL_OPTIMIZE,function(){setTimeout(function(){if(!t.root.classList.contains("ql-hidden")){var e=t.quill.getSelection();null!=e&&t.position(t.quill.getBounds(e))}},1)})}},{key:"cancel",value:function(){this.show()}},{key:"position",value:function(t){var n=a(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"position",this).call(this,t),r=this.root.querySelector(".ql-tooltip-arrow");return r.style.marginLeft="",0===n?n:void(r.style.marginLeft=-1*n-r.offsetWidth/2+"px")}}]),e}(h.BaseTooltip);_.TEMPLATE=['','"].join(""),e.BubbleTooltip=_,e.default=m},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e);
-}function a(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e.forEach(function(e){var r=document.createElement("option");e===n?r.setAttribute("selected","selected"):r.setAttribute("value",e),t.appendChild(r)})}Object.defineProperty(e,"__esModule",{value:!0}),e.default=e.BaseTooltip=void 0;var s=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:"link",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.root.classList.remove("ql-hidden"),this.root.classList.add("ql-editing"),null!=e?this.textbox.value=e:t!==this.root.getAttribute("data-mode")&&(this.textbox.value=""),this.position(this.quill.getBounds(this.quill.selection.savedRange)),this.textbox.select(),this.textbox.setAttribute("placeholder",this.textbox.getAttribute("data-"+t)||""),this.root.setAttribute("data-mode",t)}},{key:"restoreFocus",value:function(){var t=this.quill.root.scrollTop;this.quill.focus(),this.quill.root.scrollTop=t}},{key:"save",value:function(){var t=this.textbox.value;switch(this.root.getAttribute("data-mode")){case"link":var e=this.quill.root.scrollTop;this.linkRange?(this.quill.formatText(this.linkRange,"link",t,y.default.sources.USER),delete this.linkRange):(this.restoreFocus(),this.quill.format("link",t,y.default.sources.USER)),this.quill.root.scrollTop=e;break;case"video":var n=t.match(/^(https?):\/\/(www\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/)||t.match(/^(https?):\/\/(www\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);n?t=n[1]+"://www.youtube.com/embed/"+n[3]+"?showinfo=0":(n=t.match(/^(https?):\/\/(www\.)?vimeo\.com\/(\d+)/))&&(t=n[1]+"://player.vimeo.com/video/"+n[3]+"/");case"formula":var r=this.quill.getSelection(!0),o=r.index+r.length;null!=r&&(this.quill.insertEmbed(o,this.root.getAttribute("data-mode"),t,y.default.sources.USER),"formula"===this.root.getAttribute("data-mode")&&this.quill.insertText(o+1," ",y.default.sources.USER),this.quill.setSelection(o+2,y.default.sources.USER))}this.textbox.value="",this.hide()}}]),e}(A.default);e.BaseTooltip=L,e.default=C},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function l(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function t(t,e){var n=[],r=!0,o=!1,i=void 0;try{for(var l,a=t[Symbol.iterator]();!(r=(l=a.next()).done)&&(n.push(l.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{!r&&a.return&&a.return()}finally{if(o)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function t(e,n,r){null===e&&(e=Function.prototype);var o=Object.getOwnPropertyDescriptor(e,n);if(void 0===o){var i=Object.getPrototypeOf(e);return null===i?void 0:t(i,n,r)}if("value"in o)return o.value;var l=o.get;if(void 0!==l)return l.call(r)},u=function(){function t(t,e){for(var n=0;n','','',''].join(""),e.default=x}])})},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e,n){"use strict";var r=n(39),o={createEditor:function(t,e){var n=new r(t,e);return this.hookEditor(n),n},hookEditor:function(t){var e=this.makeUnprivilegedEditor(t);this.handleEditorChange=function(n,r,o){this.onEditorChange&&(this.onEditorChange(t.root.innerHTML,n,o,e),this.onEditorChangeSelection(t.getSelection(),o,e))}.bind(this),this.handleSelectionChange=function(t,n,r){this.onEditorChangeSelection&&this.onEditorChangeSelection(t,r,e)}.bind(this),t.on("editor-change",this.handleEditorChange),t.on("selection-change",this.handleSelectionChange)},unhookEditor:function(t){t.off("selection-change"),t.off("editor-change")},setEditorReadOnly:function(t,e){e?t.disable():t.enable()},setEditorContents:function(t,e){var n=t.getSelection();t.pasteHTML(e||""),n&&this.setEditorSelection(t,n)},setEditorSelection:function(t,e){if(e){var n=t.getLength();e.index=Math.max(0,Math.min(e.index,n-1)),e.length=Math.max(0,Math.min(e.length,n-1-e.index))}t.setSelection(e)},makeUnprivilegedEditor:function(t){var e=t;return{getLength:function(){return e.getLength.apply(e,arguments)},getText:function(){return e.getText.apply(e,arguments)},getContents:function(){return e.getContents.apply(e,arguments)},getSelection:function(){return e.getSelection.apply(e,arguments)},getBounds:function(){return e.getBounds.apply(e,arguments)}}}};t.exports=o},function(e,n){e.exports=t},function(t,e,n){var r=n(3),o=n(1),i=r(o,"DataView");t.exports=i},function(t,e,n){function r(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e-1?a[s?e[u]:u]:void 0}}var o=n(19),i=n(13),l=n(15);t.exports=r},function(t,e,n){function r(t,e,n,r,o,w,E){switch(n){case x:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case O:return!(t.byteLength!=e.byteLength||!w(new i(t),new i(e)));case p:case h:case v:return l(+t,+e);case d:return t.name==e.name&&t.message==e.message;case b:case m:return t==e+"";case y:var j=s;case g:var A=r&c;if(j||(j=u),t.size!=e.size&&!A)return!1;var N=E.get(t);if(N)return N==e;r|=f,E.set(t,e);var q=a(j(t),j(e),r,o,w,E);return E.delete(t),q;case _:if(k)return k.call(t)==k.call(e)}return!1}var o=n(8),i=n(48),l=n(22),a=n(28),s=n(107),u=n(115),c=1,f=2,p="[object Boolean]",h="[object Date]",d="[object Error]",y="[object Map]",v="[object Number]",b="[object RegExp]",g="[object Set]",m="[object String]",_="[object Symbol]",O="[object ArrayBuffer]",x="[object DataView]",w=o?o.prototype:void 0,k=w?w.valueOf:void 0;t.exports=r},function(t,e,n){function r(t,e,n,r,l,s){var u=n&i,c=o(t),f=c.length,p=o(e),h=p.length;if(f!=h&&!u)return!1;for(var d=f;d--;){var y=c[d];if(!(u?y in e:a.call(e,y)))return!1}var v=s.get(t);if(v&&s.get(e))return v==e;var b=!0;s.set(t,e),s.set(e,t);for(var g=u;++d-1}var o=n(9);t.exports=r},function(t,e,n){function r(t,e){var n=this.__data__,r=o(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}var o=n(9);t.exports=r},function(t,e,n){function r(){this.size=0,this.__data__={hash:new o,map:new(l||i),string:new o}}var o=n(44),i=n(7),l=n(16);t.exports=r},function(t,e,n){function r(t){var e=o(this,t).delete(t);return this.size-=e?1:0,e}var o=n(10);t.exports=r},function(t,e,n){function r(t){return o(this,t).get(t)}var o=n(10);t.exports=r},function(t,e,n){function r(t){return o(this,t).has(t)}var o=n(10);t.exports=r},function(t,e,n){function r(t,e){var n=o(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this}var o=n(10);t.exports=r},function(t,e){function n(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}t.exports=n},function(t,e,n){function r(t){var e=o(t,function(t){return n.size===i&&n.clear(),t}),n=e.cache;return e}var o=n(126),i=500;t.exports=r},function(t,e,n){var r=n(112),o=r(Object.keys,Object);t.exports=o},function(t,e,n){(function(t){var r=n(29),o="object"==typeof e&&e&&!e.nodeType&&e,i=o&&"object"==typeof t&&t&&!t.nodeType&&t,l=i&&i.exports===o,a=l&&r.process,s=function(){try{return a&&a.binding&&a.binding("util")}catch(t){}}();t.exports=s}).call(e,n(40)(t))},function(t,e){function n(t){return o.call(t)}var r=Object.prototype,o=r.toString;t.exports=n},function(t,e){function n(t,e){return function(n){return t(e(n))}}t.exports=n},function(t,e){function n(t){return this.__data__.set(t,r),this}var r="__lodash_hash_undefined__";t.exports=n},function(t,e){function n(t){return this.__data__.has(t)}t.exports=n},function(t,e){function n(t){var e=-1,n=Array(t.size);return t.forEach(function(t){n[++e]=t}),n}t.exports=n},function(t,e,n){function r(){this.__data__=new o,this.size=0}var o=n(7);t.exports=r},function(t,e){function n(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n}t.exports=n},function(t,e){function n(t){return this.__data__.get(t)}t.exports=n},function(t,e){function n(t){return this.__data__.has(t)}t.exports=n},function(t,e,n){function r(t,e){var n=this.__data__;if(n instanceof o){var r=n.__data__;if(!i||r.length true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\t\n\tmodule.exports = isArray;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseIsNative = __webpack_require__(63),\n\t getValue = __webpack_require__(86);\n\t\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\t\n\tmodule.exports = getNative;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(8),\n\t getRawTag = __webpack_require__(83),\n\t objectToString = __webpack_require__(111);\n\t\n\t/** `Object#toString` result references. */\n\tvar nullTag = '[object Null]',\n\t undefinedTag = '[object Undefined]';\n\t\n\t/** Built-in value references. */\n\tvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\t\n\t/**\n\t * The base implementation of `getTag` without fallbacks for buggy environments.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t if (value == null) {\n\t return value === undefined ? undefinedTag : nullTag;\n\t }\n\t return (symToStringTag && symToStringTag in Object(value))\n\t ? getRawTag(value)\n\t : objectToString(value);\n\t}\n\t\n\tmodule.exports = baseGetTag;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return value != null && (type == 'object' || type == 'function');\n\t}\n\t\n\tmodule.exports = isObject;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return value != null && typeof value == 'object';\n\t}\n\t\n\tmodule.exports = isObjectLike;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar listCacheClear = __webpack_require__(97),\n\t listCacheDelete = __webpack_require__(98),\n\t listCacheGet = __webpack_require__(99),\n\t listCacheHas = __webpack_require__(100),\n\t listCacheSet = __webpack_require__(101);\n\t\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries == null ? 0 : entries.length;\n\t\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\t\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\t\n\tmodule.exports = ListCache;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar root = __webpack_require__(1);\n\t\n\t/** Built-in value references. */\n\tvar Symbol = root.Symbol;\n\t\n\tmodule.exports = Symbol;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar eq = __webpack_require__(22);\n\t\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\t\n\tmodule.exports = assocIndexOf;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isKeyable = __webpack_require__(94);\n\t\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\t\n\tmodule.exports = getMapData;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getNative = __webpack_require__(3);\n\t\n\t/* Built-in method references that are verified to be native. */\n\tvar nativeCreate = getNative(Object, 'create');\n\t\n\tmodule.exports = nativeCreate;\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isSymbol = __webpack_require__(14);\n\t\n\t/** Used as references for various `Number` constants. */\n\tvar INFINITY = 1 / 0;\n\t\n\t/**\n\t * Converts `value` to a string key if it's not a string or symbol.\n\t *\n\t * @private\n\t * @param {*} value The value to inspect.\n\t * @returns {string|symbol} Returns the key.\n\t */\n\tfunction toKey(value) {\n\t if (typeof value == 'string' || isSymbol(value)) {\n\t return value;\n\t }\n\t var result = (value + '');\n\t return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n\t}\n\t\n\tmodule.exports = toKey;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isFunction = __webpack_require__(37),\n\t isLength = __webpack_require__(23);\n\t\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\t\n\tmodule.exports = isArrayLike;\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseGetTag = __webpack_require__(4),\n\t isObjectLike = __webpack_require__(6);\n\t\n\t/** `Object#toString` result references. */\n\tvar symbolTag = '[object Symbol]';\n\t\n\t/**\n\t * Checks if `value` is classified as a `Symbol` primitive or object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n\t * @example\n\t *\n\t * _.isSymbol(Symbol.iterator);\n\t * // => true\n\t *\n\t * _.isSymbol('abc');\n\t * // => false\n\t */\n\tfunction isSymbol(value) {\n\t return typeof value == 'symbol' ||\n\t (isObjectLike(value) && baseGetTag(value) == symbolTag);\n\t}\n\t\n\tmodule.exports = isSymbol;\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar arrayLikeKeys = __webpack_require__(51),\n\t baseKeys = __webpack_require__(65),\n\t isArrayLike = __webpack_require__(13);\n\t\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\t\n\tmodule.exports = keys;\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getNative = __webpack_require__(3),\n\t root = __webpack_require__(1);\n\t\n\t/* Built-in method references that are verified to be native. */\n\tvar Map = getNative(root, 'Map');\n\t\n\tmodule.exports = Map;\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar mapCacheClear = __webpack_require__(102),\n\t mapCacheDelete = __webpack_require__(103),\n\t mapCacheGet = __webpack_require__(104),\n\t mapCacheHas = __webpack_require__(105),\n\t mapCacheSet = __webpack_require__(106);\n\t\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries == null ? 0 : entries.length;\n\t\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\t\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\t\n\tmodule.exports = MapCache;\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseIsEqualDeep = __webpack_require__(61),\n\t isObjectLike = __webpack_require__(6);\n\t\n\t/**\n\t * The base implementation of `_.isEqual` which supports partial comparisons\n\t * and tracks traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @param {boolean} bitmask The bitmask flags.\n\t * 1 - Unordered comparison\n\t * 2 - Partial comparison\n\t * @param {Function} [customizer] The function to customize comparisons.\n\t * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t */\n\tfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n\t if (value === other) {\n\t return true;\n\t }\n\t if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n\t return value !== value && other !== other;\n\t }\n\t return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n\t}\n\t\n\tmodule.exports = baseIsEqual;\n\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseMatches = __webpack_require__(66),\n\t baseMatchesProperty = __webpack_require__(67),\n\t identity = __webpack_require__(125),\n\t isArray = __webpack_require__(2),\n\t property = __webpack_require__(127);\n\t\n\t/**\n\t * The base implementation of `_.iteratee`.\n\t *\n\t * @private\n\t * @param {*} [value=_.identity] The value to convert to an iteratee.\n\t * @returns {Function} Returns the iteratee.\n\t */\n\tfunction baseIteratee(value) {\n\t // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n\t // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n\t if (typeof value == 'function') {\n\t return value;\n\t }\n\t if (value == null) {\n\t return identity;\n\t }\n\t if (typeof value == 'object') {\n\t return isArray(value)\n\t ? baseMatchesProperty(value[0], value[1])\n\t : baseMatches(value);\n\t }\n\t return property(value);\n\t}\n\t\n\tmodule.exports = baseIteratee;\n\n\n/***/ },\n/* 20 */\n/***/ function(module, exports) {\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\t\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\t\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\t\n\tmodule.exports = isIndex;\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isArray = __webpack_require__(2),\n\t isSymbol = __webpack_require__(14);\n\t\n\t/** Used to match property names within property paths. */\n\tvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n\t reIsPlainProp = /^\\w*$/;\n\t\n\t/**\n\t * Checks if `value` is a property name and not a property path.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {Object} [object] The object to query keys on.\n\t * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n\t */\n\tfunction isKey(value, object) {\n\t if (isArray(value)) {\n\t return false;\n\t }\n\t var type = typeof value;\n\t if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n\t value == null || isSymbol(value)) {\n\t return true;\n\t }\n\t return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n\t (object != null && value in Object(object));\n\t}\n\t\n\tmodule.exports = isKey;\n\n\n/***/ },\n/* 22 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\t\n\tmodule.exports = eq;\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\t\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\t\n\tmodule.exports = isLength;\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ListCache = __webpack_require__(7),\n\t stackClear = __webpack_require__(116),\n\t stackDelete = __webpack_require__(117),\n\t stackGet = __webpack_require__(118),\n\t stackHas = __webpack_require__(119),\n\t stackSet = __webpack_require__(120);\n\t\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t var data = this.__data__ = new ListCache(entries);\n\t this.size = data.size;\n\t}\n\t\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\t\n\tmodule.exports = Stack;\n\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\t/**\n\t * A specialized version of `_.some` for arrays without support for iteratee\n\t * shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t */\n\tfunction arraySome(array, predicate) {\n\t var index = -1,\n\t length = array == null ? 0 : array.length;\n\t\n\t while (++index < length) {\n\t if (predicate(array[index], index, array)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t}\n\t\n\tmodule.exports = arraySome;\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar castPath = __webpack_require__(27),\n\t toKey = __webpack_require__(12);\n\t\n\t/**\n\t * The base implementation of `_.get` without support for default values.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path of the property to get.\n\t * @returns {*} Returns the resolved value.\n\t */\n\tfunction baseGet(object, path) {\n\t path = castPath(path, object);\n\t\n\t var index = 0,\n\t length = path.length;\n\t\n\t while (object != null && index < length) {\n\t object = object[toKey(path[index++])];\n\t }\n\t return (index && index == length) ? object : undefined;\n\t}\n\t\n\tmodule.exports = baseGet;\n\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isArray = __webpack_require__(2),\n\t isKey = __webpack_require__(21),\n\t stringToPath = __webpack_require__(121),\n\t toString = __webpack_require__(134);\n\t\n\t/**\n\t * Casts `value` to a path array if it's not one.\n\t *\n\t * @private\n\t * @param {*} value The value to inspect.\n\t * @param {Object} [object] The object to query keys on.\n\t * @returns {Array} Returns the cast property path array.\n\t */\n\tfunction castPath(value, object) {\n\t if (isArray(value)) {\n\t return value;\n\t }\n\t return isKey(value, object) ? [value] : stringToPath(toString(value));\n\t}\n\t\n\tmodule.exports = castPath;\n\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar SetCache = __webpack_require__(47),\n\t arraySome = __webpack_require__(25),\n\t cacheHas = __webpack_require__(74);\n\t\n\t/** Used to compose bitmasks for value comparisons. */\n\tvar COMPARE_PARTIAL_FLAG = 1,\n\t COMPARE_UNORDERED_FLAG = 2;\n\t\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for arrays with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Array} array The array to compare.\n\t * @param {Array} other The other array to compare.\n\t * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Object} stack Tracks traversed `array` and `other` objects.\n\t * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n\t */\n\tfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n\t var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n\t arrLength = array.length,\n\t othLength = other.length;\n\t\n\t if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n\t return false;\n\t }\n\t // Assume cyclic values are equal.\n\t var stacked = stack.get(array);\n\t if (stacked && stack.get(other)) {\n\t return stacked == other;\n\t }\n\t var index = -1,\n\t result = true,\n\t seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\t\n\t stack.set(array, other);\n\t stack.set(other, array);\n\t\n\t // Ignore non-index properties.\n\t while (++index < arrLength) {\n\t var arrValue = array[index],\n\t othValue = other[index];\n\t\n\t if (customizer) {\n\t var compared = isPartial\n\t ? customizer(othValue, arrValue, index, other, array, stack)\n\t : customizer(arrValue, othValue, index, array, other, stack);\n\t }\n\t if (compared !== undefined) {\n\t if (compared) {\n\t continue;\n\t }\n\t result = false;\n\t break;\n\t }\n\t // Recursively compare arrays (susceptible to call stack limits).\n\t if (seen) {\n\t if (!arraySome(other, function(othValue, othIndex) {\n\t if (!cacheHas(seen, othIndex) &&\n\t (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n\t return seen.push(othIndex);\n\t }\n\t })) {\n\t result = false;\n\t break;\n\t }\n\t } else if (!(\n\t arrValue === othValue ||\n\t equalFunc(arrValue, othValue, bitmask, customizer, stack)\n\t )) {\n\t result = false;\n\t break;\n\t }\n\t }\n\t stack['delete'](array);\n\t stack['delete'](other);\n\t return result;\n\t}\n\t\n\tmodule.exports = equalArrays;\n\n\n/***/ },\n/* 29 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\t\n\tmodule.exports = freeGlobal;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(5);\n\t\n\t/**\n\t * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` if suitable for strict\n\t * equality comparisons, else `false`.\n\t */\n\tfunction isStrictComparable(value) {\n\t return value === value && !isObject(value);\n\t}\n\t\n\tmodule.exports = isStrictComparable;\n\n\n/***/ },\n/* 31 */\n/***/ function(module, exports) {\n\n\t/**\n\t * A specialized version of `matchesProperty` for source values suitable\n\t * for strict equality comparisons, i.e. `===`.\n\t *\n\t * @private\n\t * @param {string} key The key of the property to get.\n\t * @param {*} srcValue The value to match.\n\t * @returns {Function} Returns the new spec function.\n\t */\n\tfunction matchesStrictComparable(key, srcValue) {\n\t return function(object) {\n\t if (object == null) {\n\t return false;\n\t }\n\t return object[key] === srcValue &&\n\t (srcValue !== undefined || (key in Object(object)));\n\t };\n\t}\n\t\n\tmodule.exports = matchesStrictComparable;\n\n\n/***/ },\n/* 32 */\n/***/ function(module, exports) {\n\n\t/** Used for built-in method references. */\n\tvar funcProto = Function.prototype;\n\t\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\t\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to convert.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\t\n\tmodule.exports = toSource;\n\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar createFind = __webpack_require__(78),\n\t findIndex = __webpack_require__(122);\n\t\n\t/**\n\t * Iterates over elements of `collection`, returning the first element\n\t * `predicate` returns truthy for. The predicate is invoked with three\n\t * arguments: (value, index|key, collection).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Collection\n\t * @param {Array|Object} collection The collection to inspect.\n\t * @param {Function} [predicate=_.identity] The function invoked per iteration.\n\t * @param {number} [fromIndex=0] The index to search from.\n\t * @returns {*} Returns the matched element, else `undefined`.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'age': 36, 'active': true },\n\t * { 'user': 'fred', 'age': 40, 'active': false },\n\t * { 'user': 'pebbles', 'age': 1, 'active': true }\n\t * ];\n\t *\n\t * _.find(users, function(o) { return o.age < 40; });\n\t * // => object for 'barney'\n\t *\n\t * // The `_.matches` iteratee shorthand.\n\t * _.find(users, { 'age': 1, 'active': true });\n\t * // => object for 'pebbles'\n\t *\n\t * // The `_.matchesProperty` iteratee shorthand.\n\t * _.find(users, ['active', false]);\n\t * // => object for 'fred'\n\t *\n\t * // The `_.property` iteratee shorthand.\n\t * _.find(users, 'active');\n\t * // => object for 'barney'\n\t */\n\tvar find = createFind(findIndex);\n\t\n\tmodule.exports = find;\n\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseIsArguments = __webpack_require__(60),\n\t isObjectLike = __webpack_require__(6);\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/** Built-in value references. */\n\tvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\t\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n\t return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n\t !propertyIsEnumerable.call(value, 'callee');\n\t};\n\t\n\tmodule.exports = isArguments;\n\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(1),\n\t stubFalse = __webpack_require__(130);\n\t\n\t/** Detect free variable `exports`. */\n\tvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\t\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\t\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\t\n\t/** Built-in value references. */\n\tvar Buffer = moduleExports ? root.Buffer : undefined;\n\t\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\t\n\t/**\n\t * Checks if `value` is a buffer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.3.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n\t * @example\n\t *\n\t * _.isBuffer(new Buffer(2));\n\t * // => true\n\t *\n\t * _.isBuffer(new Uint8Array(2));\n\t * // => false\n\t */\n\tvar isBuffer = nativeIsBuffer || stubFalse;\n\t\n\tmodule.exports = isBuffer;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(40)(module)))\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseIsEqual = __webpack_require__(18);\n\t\n\t/**\n\t * Performs a deep comparison between two values to determine if they are\n\t * equivalent.\n\t *\n\t * **Note:** This method supports comparing arrays, array buffers, booleans,\n\t * date objects, error objects, maps, numbers, `Object` objects, regexes,\n\t * sets, strings, symbols, and typed arrays. `Object` objects are compared\n\t * by their own, not inherited, enumerable properties. Functions and DOM\n\t * nodes are compared by strict equality, i.e. `===`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.isEqual(object, other);\n\t * // => true\n\t *\n\t * object === other;\n\t * // => false\n\t */\n\tfunction isEqual(value, other) {\n\t return baseIsEqual(value, other);\n\t}\n\t\n\tmodule.exports = isEqual;\n\n\n/***/ },\n/* 37 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseGetTag = __webpack_require__(4),\n\t isObject = __webpack_require__(5);\n\t\n\t/** `Object#toString` result references. */\n\tvar asyncTag = '[object AsyncFunction]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t proxyTag = '[object Proxy]';\n\t\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t if (!isObject(value)) {\n\t return false;\n\t }\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\t var tag = baseGetTag(value);\n\t return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n\t}\n\t\n\tmodule.exports = isFunction;\n\n\n/***/ },\n/* 38 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseIsTypedArray = __webpack_require__(64),\n\t baseUnary = __webpack_require__(73),\n\t nodeUtil = __webpack_require__(110);\n\t\n\t/* Node.js helper references. */\n\tvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\t\n\t/**\n\t * Checks if `value` is classified as a typed array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n\t * @example\n\t *\n\t * _.isTypedArray(new Uint8Array);\n\t * // => true\n\t *\n\t * _.isTypedArray([]);\n\t * // => false\n\t */\n\tvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\t\n\tmodule.exports = isTypedArray;\n\n\n/***/ },\n/* 39 */\n/***/ function(module, exports) {\n\n\t/*!\n\t * Quill Editor v1.2.0\n\t * https://quilljs.com/\n\t * Copyright (c) 2014, Jason Chen\n\t * Copyright (c) 2013, salesforce.com\n\t */\n\t(function webpackUniversalModuleDefinition(root, factory) {\n\t\tif(typeof exports === 'object' && typeof module === 'object')\n\t\t\tmodule.exports = factory();\n\t\telse if(typeof define === 'function' && define.amd)\n\t\t\tdefine([], factory);\n\t\telse if(typeof exports === 'object')\n\t\t\texports[\"Quill\"] = factory();\n\t\telse\n\t\t\troot[\"Quill\"] = factory();\n\t})(this, function() {\n\treturn /******/ (function(modules) { // webpackBootstrap\n\t/******/ \t// The module cache\n\t/******/ \tvar installedModules = {};\n\t\n\t/******/ \t// The require function\n\t/******/ \tfunction __webpack_require__(moduleId) {\n\t\n\t/******/ \t\t// Check if module is in cache\n\t/******/ \t\tif(installedModules[moduleId])\n\t/******/ \t\t\treturn installedModules[moduleId].exports;\n\t\n\t/******/ \t\t// Create a new module (and put it into the cache)\n\t/******/ \t\tvar module = installedModules[moduleId] = {\n\t/******/ \t\t\texports: {},\n\t/******/ \t\t\tid: moduleId,\n\t/******/ \t\t\tloaded: false\n\t/******/ \t\t};\n\t\n\t/******/ \t\t// Execute the module function\n\t/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\n\t/******/ \t\t// Flag the module as loaded\n\t/******/ \t\tmodule.loaded = true;\n\t\n\t/******/ \t\t// Return the exports of the module\n\t/******/ \t\treturn module.exports;\n\t/******/ \t}\n\t\n\t\n\t/******/ \t// expose the modules object (__webpack_modules__)\n\t/******/ \t__webpack_require__.m = modules;\n\t\n\t/******/ \t// expose the module cache\n\t/******/ \t__webpack_require__.c = installedModules;\n\t\n\t/******/ \t// __webpack_public_path__\n\t/******/ \t__webpack_require__.p = \"\";\n\t\n\t/******/ \t// Load entry module and return exports\n\t/******/ \treturn __webpack_require__(0);\n\t/******/ })\n\t/************************************************************************/\n\t/******/ ([\n\t/* 0 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tmodule.exports = __webpack_require__(53);\n\t\n\t\n\t/***/ },\n\t/* 1 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _quill = __webpack_require__(18);\n\t\n\t\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\t\tvar _block = __webpack_require__(29);\n\t\n\t\tvar _block2 = _interopRequireDefault(_block);\n\t\n\t\tvar _break = __webpack_require__(30);\n\t\n\t\tvar _break2 = _interopRequireDefault(_break);\n\t\n\t\tvar _container = __webpack_require__(42);\n\t\n\t\tvar _container2 = _interopRequireDefault(_container);\n\t\n\t\tvar _cursor = __webpack_require__(34);\n\t\n\t\tvar _cursor2 = _interopRequireDefault(_cursor);\n\t\n\t\tvar _embed = __webpack_require__(31);\n\t\n\t\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\t\tvar _inline = __webpack_require__(32);\n\t\n\t\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\t\tvar _scroll = __webpack_require__(43);\n\t\n\t\tvar _scroll2 = _interopRequireDefault(_scroll);\n\t\n\t\tvar _text = __webpack_require__(33);\n\t\n\t\tvar _text2 = _interopRequireDefault(_text);\n\t\n\t\tvar _clipboard = __webpack_require__(44);\n\t\n\t\tvar _clipboard2 = _interopRequireDefault(_clipboard);\n\t\n\t\tvar _history = __webpack_require__(51);\n\t\n\t\tvar _history2 = _interopRequireDefault(_history);\n\t\n\t\tvar _keyboard = __webpack_require__(52);\n\t\n\t\tvar _keyboard2 = _interopRequireDefault(_keyboard);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\t_quill2.default.register({\n\t\t 'blots/block': _block2.default,\n\t\t 'blots/block/embed': _block.BlockEmbed,\n\t\t 'blots/break': _break2.default,\n\t\t 'blots/container': _container2.default,\n\t\t 'blots/cursor': _cursor2.default,\n\t\t 'blots/embed': _embed2.default,\n\t\t 'blots/inline': _inline2.default,\n\t\t 'blots/scroll': _scroll2.default,\n\t\t 'blots/text': _text2.default,\n\t\n\t\t 'modules/clipboard': _clipboard2.default,\n\t\t 'modules/history': _history2.default,\n\t\t 'modules/keyboard': _keyboard2.default\n\t\t});\n\t\n\t\t_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\t\n\t\tmodule.exports = _quill2.default;\n\t\n\t/***/ },\n\t/* 2 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar container_1 = __webpack_require__(3);\n\t\tvar format_1 = __webpack_require__(7);\n\t\tvar leaf_1 = __webpack_require__(12);\n\t\tvar scroll_1 = __webpack_require__(13);\n\t\tvar inline_1 = __webpack_require__(14);\n\t\tvar block_1 = __webpack_require__(15);\n\t\tvar embed_1 = __webpack_require__(16);\n\t\tvar text_1 = __webpack_require__(17);\n\t\tvar attributor_1 = __webpack_require__(8);\n\t\tvar class_1 = __webpack_require__(10);\n\t\tvar style_1 = __webpack_require__(11);\n\t\tvar store_1 = __webpack_require__(9);\n\t\tvar Registry = __webpack_require__(6);\n\t\tvar Parchment = {\n\t\t Scope: Registry.Scope,\n\t\t create: Registry.create,\n\t\t find: Registry.find,\n\t\t query: Registry.query,\n\t\t register: Registry.register,\n\t\t Container: container_1.default,\n\t\t Format: format_1.default,\n\t\t Leaf: leaf_1.default,\n\t\t Embed: embed_1.default,\n\t\t Scroll: scroll_1.default,\n\t\t Block: block_1.default,\n\t\t Inline: inline_1.default,\n\t\t Text: text_1.default,\n\t\t Attributor: {\n\t\t Attribute: attributor_1.default,\n\t\t Class: class_1.default,\n\t\t Style: style_1.default,\n\t\t Store: store_1.default\n\t\t }\n\t\t};\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = Parchment;\n\t\n\t\n\t/***/ },\n\t/* 3 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar linked_list_1 = __webpack_require__(4);\n\t\tvar shadow_1 = __webpack_require__(5);\n\t\tvar Registry = __webpack_require__(6);\n\t\tvar ContainerBlot = (function (_super) {\n\t\t __extends(ContainerBlot, _super);\n\t\t function ContainerBlot() {\n\t\t return _super !== null && _super.apply(this, arguments) || this;\n\t\t }\n\t\t ContainerBlot.prototype.appendChild = function (other) {\n\t\t this.insertBefore(other);\n\t\t };\n\t\t ContainerBlot.prototype.attach = function () {\n\t\t var _this = this;\n\t\t _super.prototype.attach.call(this);\n\t\t this.children = new linked_list_1.default();\n\t\t // Need to be reversed for if DOM nodes already in order\n\t\t [].slice.call(this.domNode.childNodes).reverse().forEach(function (node) {\n\t\t try {\n\t\t var child = makeBlot(node);\n\t\t _this.insertBefore(child, _this.children.head);\n\t\t }\n\t\t catch (err) {\n\t\t if (err instanceof Registry.ParchmentError)\n\t\t return;\n\t\t else\n\t\t throw err;\n\t\t }\n\t\t });\n\t\t };\n\t\t ContainerBlot.prototype.deleteAt = function (index, length) {\n\t\t if (index === 0 && length === this.length()) {\n\t\t return this.remove();\n\t\t }\n\t\t this.children.forEachAt(index, length, function (child, offset, length) {\n\t\t child.deleteAt(offset, length);\n\t\t });\n\t\t };\n\t\t ContainerBlot.prototype.descendant = function (criteria, index) {\n\t\t var _a = this.children.find(index), child = _a[0], offset = _a[1];\n\t\t if ((criteria.blotName == null && criteria(child)) ||\n\t\t (criteria.blotName != null && child instanceof criteria)) {\n\t\t return [child, offset];\n\t\t }\n\t\t else if (child instanceof ContainerBlot) {\n\t\t return child.descendant(criteria, offset);\n\t\t }\n\t\t else {\n\t\t return [null, -1];\n\t\t }\n\t\t };\n\t\t ContainerBlot.prototype.descendants = function (criteria, index, length) {\n\t\t if (index === void 0) { index = 0; }\n\t\t if (length === void 0) { length = Number.MAX_VALUE; }\n\t\t var descendants = [], lengthLeft = length;\n\t\t this.children.forEachAt(index, length, function (child, index, length) {\n\t\t if ((criteria.blotName == null && criteria(child)) ||\n\t\t (criteria.blotName != null && child instanceof criteria)) {\n\t\t descendants.push(child);\n\t\t }\n\t\t if (child instanceof ContainerBlot) {\n\t\t descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n\t\t }\n\t\t lengthLeft -= length;\n\t\t });\n\t\t return descendants;\n\t\t };\n\t\t ContainerBlot.prototype.detach = function () {\n\t\t this.children.forEach(function (child) {\n\t\t child.detach();\n\t\t });\n\t\t _super.prototype.detach.call(this);\n\t\t };\n\t\t ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n\t\t this.children.forEachAt(index, length, function (child, offset, length) {\n\t\t child.formatAt(offset, length, name, value);\n\t\t });\n\t\t };\n\t\t ContainerBlot.prototype.insertAt = function (index, value, def) {\n\t\t var _a = this.children.find(index), child = _a[0], offset = _a[1];\n\t\t if (child) {\n\t\t child.insertAt(offset, value, def);\n\t\t }\n\t\t else {\n\t\t var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n\t\t this.appendChild(blot);\n\t\t }\n\t\t };\n\t\t ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n\t\t if (this.statics.allowedChildren != null && !this.statics.allowedChildren.some(function (child) {\n\t\t return childBlot instanceof child;\n\t\t })) {\n\t\t throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n\t\t }\n\t\t childBlot.insertInto(this, refBlot);\n\t\t };\n\t\t ContainerBlot.prototype.length = function () {\n\t\t return this.children.reduce(function (memo, child) {\n\t\t return memo + child.length();\n\t\t }, 0);\n\t\t };\n\t\t ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n\t\t this.children.forEach(function (child) {\n\t\t targetParent.insertBefore(child, refNode);\n\t\t });\n\t\t };\n\t\t ContainerBlot.prototype.optimize = function () {\n\t\t _super.prototype.optimize.call(this);\n\t\t if (this.children.length === 0) {\n\t\t if (this.statics.defaultChild != null) {\n\t\t var child = Registry.create(this.statics.defaultChild);\n\t\t this.appendChild(child);\n\t\t child.optimize();\n\t\t }\n\t\t else {\n\t\t this.remove();\n\t\t }\n\t\t }\n\t\t };\n\t\t ContainerBlot.prototype.path = function (index, inclusive) {\n\t\t if (inclusive === void 0) { inclusive = false; }\n\t\t var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n\t\t var position = [[this, index]];\n\t\t if (child instanceof ContainerBlot) {\n\t\t return position.concat(child.path(offset, inclusive));\n\t\t }\n\t\t else if (child != null) {\n\t\t position.push([child, offset]);\n\t\t }\n\t\t return position;\n\t\t };\n\t\t ContainerBlot.prototype.removeChild = function (child) {\n\t\t this.children.remove(child);\n\t\t };\n\t\t ContainerBlot.prototype.replace = function (target) {\n\t\t if (target instanceof ContainerBlot) {\n\t\t target.moveChildren(this);\n\t\t }\n\t\t _super.prototype.replace.call(this, target);\n\t\t };\n\t\t ContainerBlot.prototype.split = function (index, force) {\n\t\t if (force === void 0) { force = false; }\n\t\t if (!force) {\n\t\t if (index === 0)\n\t\t return this;\n\t\t if (index === this.length())\n\t\t return this.next;\n\t\t }\n\t\t var after = this.clone();\n\t\t this.parent.insertBefore(after, this.next);\n\t\t this.children.forEachAt(index, this.length(), function (child, offset, length) {\n\t\t child = child.split(offset, force);\n\t\t after.appendChild(child);\n\t\t });\n\t\t return after;\n\t\t };\n\t\t ContainerBlot.prototype.unwrap = function () {\n\t\t this.moveChildren(this.parent, this.next);\n\t\t this.remove();\n\t\t };\n\t\t ContainerBlot.prototype.update = function (mutations) {\n\t\t var _this = this;\n\t\t var addedNodes = [], removedNodes = [];\n\t\t mutations.forEach(function (mutation) {\n\t\t if (mutation.target === _this.domNode && mutation.type === 'childList') {\n\t\t addedNodes.push.apply(addedNodes, mutation.addedNodes);\n\t\t removedNodes.push.apply(removedNodes, mutation.removedNodes);\n\t\t }\n\t\t });\n\t\t removedNodes.forEach(function (node) {\n\t\t // Check node has actually been removed\n\t\t // One exception is Chrome does not immediately remove IFRAMEs\n\t\t // from DOM but MutationRecord is correct in its reported removal\n\t\t if (node.parentNode != null && node.tagName !== 'IFRAME' &&\n\t\t (document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)) {\n\t\t return;\n\t\t }\n\t\t var blot = Registry.find(node);\n\t\t if (blot == null)\n\t\t return;\n\t\t if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n\t\t blot.detach();\n\t\t }\n\t\t });\n\t\t addedNodes.filter(function (node) {\n\t\t return node.parentNode == _this.domNode;\n\t\t }).sort(function (a, b) {\n\t\t if (a === b)\n\t\t return 0;\n\t\t if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n\t\t return 1;\n\t\t }\n\t\t return -1;\n\t\t }).forEach(function (node) {\n\t\t var refBlot = null;\n\t\t if (node.nextSibling != null) {\n\t\t refBlot = Registry.find(node.nextSibling);\n\t\t }\n\t\t var blot = makeBlot(node);\n\t\t if (blot.next != refBlot || blot.next == null) {\n\t\t if (blot.parent != null) {\n\t\t blot.parent.removeChild(_this);\n\t\t }\n\t\t _this.insertBefore(blot, refBlot);\n\t\t }\n\t\t });\n\t\t };\n\t\t return ContainerBlot;\n\t\t}(shadow_1.default));\n\t\tfunction makeBlot(node) {\n\t\t var blot = Registry.find(node);\n\t\t if (blot == null) {\n\t\t try {\n\t\t blot = Registry.create(node);\n\t\t }\n\t\t catch (e) {\n\t\t blot = Registry.create(Registry.Scope.INLINE);\n\t\t [].slice.call(node.childNodes).forEach(function (child) {\n\t\t blot.domNode.appendChild(child);\n\t\t });\n\t\t node.parentNode.replaceChild(blot.domNode, node);\n\t\t blot.attach();\n\t\t }\n\t\t }\n\t\t return blot;\n\t\t}\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = ContainerBlot;\n\t\n\t\n\t/***/ },\n\t/* 4 */\n\t/***/ function(module, exports) {\n\t\n\t\t\"use strict\";\n\t\tvar LinkedList = (function () {\n\t\t function LinkedList() {\n\t\t this.head = this.tail = undefined;\n\t\t this.length = 0;\n\t\t }\n\t\t LinkedList.prototype.append = function () {\n\t\t var nodes = [];\n\t\t for (var _i = 0; _i < arguments.length; _i++) {\n\t\t nodes[_i] = arguments[_i];\n\t\t }\n\t\t this.insertBefore(nodes[0], undefined);\n\t\t if (nodes.length > 1) {\n\t\t this.append.apply(this, nodes.slice(1));\n\t\t }\n\t\t };\n\t\t LinkedList.prototype.contains = function (node) {\n\t\t var cur, next = this.iterator();\n\t\t while (cur = next()) {\n\t\t if (cur === node)\n\t\t return true;\n\t\t }\n\t\t return false;\n\t\t };\n\t\t LinkedList.prototype.insertBefore = function (node, refNode) {\n\t\t node.next = refNode;\n\t\t if (refNode != null) {\n\t\t node.prev = refNode.prev;\n\t\t if (refNode.prev != null) {\n\t\t refNode.prev.next = node;\n\t\t }\n\t\t refNode.prev = node;\n\t\t if (refNode === this.head) {\n\t\t this.head = node;\n\t\t }\n\t\t }\n\t\t else if (this.tail != null) {\n\t\t this.tail.next = node;\n\t\t node.prev = this.tail;\n\t\t this.tail = node;\n\t\t }\n\t\t else {\n\t\t node.prev = undefined;\n\t\t this.head = this.tail = node;\n\t\t }\n\t\t this.length += 1;\n\t\t };\n\t\t LinkedList.prototype.offset = function (target) {\n\t\t var index = 0, cur = this.head;\n\t\t while (cur != null) {\n\t\t if (cur === target)\n\t\t return index;\n\t\t index += cur.length();\n\t\t cur = cur.next;\n\t\t }\n\t\t return -1;\n\t\t };\n\t\t LinkedList.prototype.remove = function (node) {\n\t\t if (!this.contains(node))\n\t\t return;\n\t\t if (node.prev != null)\n\t\t node.prev.next = node.next;\n\t\t if (node.next != null)\n\t\t node.next.prev = node.prev;\n\t\t if (node === this.head)\n\t\t this.head = node.next;\n\t\t if (node === this.tail)\n\t\t this.tail = node.prev;\n\t\t this.length -= 1;\n\t\t };\n\t\t LinkedList.prototype.iterator = function (curNode) {\n\t\t if (curNode === void 0) { curNode = this.head; }\n\t\t // TODO use yield when we can\n\t\t return function () {\n\t\t var ret = curNode;\n\t\t if (curNode != null)\n\t\t curNode = curNode.next;\n\t\t return ret;\n\t\t };\n\t\t };\n\t\t LinkedList.prototype.find = function (index, inclusive) {\n\t\t if (inclusive === void 0) { inclusive = false; }\n\t\t var cur, next = this.iterator();\n\t\t while (cur = next()) {\n\t\t var length_1 = cur.length();\n\t\t if (index < length_1 || (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {\n\t\t return [cur, index];\n\t\t }\n\t\t index -= length_1;\n\t\t }\n\t\t return [null, 0];\n\t\t };\n\t\t LinkedList.prototype.forEach = function (callback) {\n\t\t var cur, next = this.iterator();\n\t\t while (cur = next()) {\n\t\t callback(cur);\n\t\t }\n\t\t };\n\t\t LinkedList.prototype.forEachAt = function (index, length, callback) {\n\t\t if (length <= 0)\n\t\t return;\n\t\t var _a = this.find(index), startNode = _a[0], offset = _a[1];\n\t\t var cur, curIndex = index - offset, next = this.iterator(startNode);\n\t\t while ((cur = next()) && curIndex < index + length) {\n\t\t var curLength = cur.length();\n\t\t if (index > curIndex) {\n\t\t callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n\t\t }\n\t\t else {\n\t\t callback(cur, 0, Math.min(curLength, index + length - curIndex));\n\t\t }\n\t\t curIndex += curLength;\n\t\t }\n\t\t };\n\t\t LinkedList.prototype.map = function (callback) {\n\t\t return this.reduce(function (memo, cur) {\n\t\t memo.push(callback(cur));\n\t\t return memo;\n\t\t }, []);\n\t\t };\n\t\t LinkedList.prototype.reduce = function (callback, memo) {\n\t\t var cur, next = this.iterator();\n\t\t while (cur = next()) {\n\t\t memo = callback(memo, cur);\n\t\t }\n\t\t return memo;\n\t\t };\n\t\t return LinkedList;\n\t\t}());\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = LinkedList;\n\t\n\t\n\t/***/ },\n\t/* 5 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar Registry = __webpack_require__(6);\n\t\tvar ShadowBlot = (function () {\n\t\t function ShadowBlot(domNode) {\n\t\t this.domNode = domNode;\n\t\t this.attach();\n\t\t }\n\t\t Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n\t\t // Hack for accessing inherited static methods\n\t\t get: function () {\n\t\t return this.constructor;\n\t\t },\n\t\t enumerable: true,\n\t\t configurable: true\n\t\t });\n\t\t ShadowBlot.create = function (value) {\n\t\t if (this.tagName == null) {\n\t\t throw new Registry.ParchmentError('Blot definition missing tagName');\n\t\t }\n\t\t var node;\n\t\t if (Array.isArray(this.tagName)) {\n\t\t if (typeof value === 'string') {\n\t\t value = value.toUpperCase();\n\t\t if (parseInt(value).toString() === value) {\n\t\t value = parseInt(value);\n\t\t }\n\t\t }\n\t\t if (typeof value === 'number') {\n\t\t node = document.createElement(this.tagName[value - 1]);\n\t\t }\n\t\t else if (this.tagName.indexOf(value) > -1) {\n\t\t node = document.createElement(value);\n\t\t }\n\t\t else {\n\t\t node = document.createElement(this.tagName[0]);\n\t\t }\n\t\t }\n\t\t else {\n\t\t node = document.createElement(this.tagName);\n\t\t }\n\t\t if (this.className) {\n\t\t node.classList.add(this.className);\n\t\t }\n\t\t return node;\n\t\t };\n\t\t ShadowBlot.prototype.attach = function () {\n\t\t this.domNode[Registry.DATA_KEY] = { blot: this };\n\t\t };\n\t\t ShadowBlot.prototype.clone = function () {\n\t\t var domNode = this.domNode.cloneNode();\n\t\t return Registry.create(domNode);\n\t\t };\n\t\t ShadowBlot.prototype.detach = function () {\n\t\t if (this.parent != null)\n\t\t this.parent.removeChild(this);\n\t\t delete this.domNode[Registry.DATA_KEY];\n\t\t };\n\t\t ShadowBlot.prototype.deleteAt = function (index, length) {\n\t\t var blot = this.isolate(index, length);\n\t\t blot.remove();\n\t\t };\n\t\t ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n\t\t var blot = this.isolate(index, length);\n\t\t if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n\t\t blot.wrap(name, value);\n\t\t }\n\t\t else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n\t\t var parent_1 = Registry.create(this.statics.scope);\n\t\t blot.wrap(parent_1);\n\t\t parent_1.format(name, value);\n\t\t }\n\t\t };\n\t\t ShadowBlot.prototype.insertAt = function (index, value, def) {\n\t\t var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n\t\t var ref = this.split(index);\n\t\t this.parent.insertBefore(blot, ref);\n\t\t };\n\t\t ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n\t\t if (this.parent != null) {\n\t\t this.parent.children.remove(this);\n\t\t }\n\t\t parentBlot.children.insertBefore(this, refBlot);\n\t\t if (refBlot != null) {\n\t\t var refDomNode = refBlot.domNode;\n\t\t }\n\t\t if (this.next == null || this.domNode.nextSibling != refDomNode) {\n\t\t parentBlot.domNode.insertBefore(this.domNode, (typeof refDomNode !== 'undefined') ? refDomNode : null);\n\t\t }\n\t\t this.parent = parentBlot;\n\t\t };\n\t\t ShadowBlot.prototype.isolate = function (index, length) {\n\t\t var target = this.split(index);\n\t\t target.split(length);\n\t\t return target;\n\t\t };\n\t\t ShadowBlot.prototype.length = function () {\n\t\t return 1;\n\t\t };\n\t\t ;\n\t\t ShadowBlot.prototype.offset = function (root) {\n\t\t if (root === void 0) { root = this.parent; }\n\t\t if (this.parent == null || this == root)\n\t\t return 0;\n\t\t return this.parent.children.offset(this) + this.parent.offset(root);\n\t\t };\n\t\t ShadowBlot.prototype.optimize = function () {\n\t\t // TODO clean up once we use WeakMap\n\t\t if (this.domNode[Registry.DATA_KEY] != null) {\n\t\t delete this.domNode[Registry.DATA_KEY].mutations;\n\t\t }\n\t\t };\n\t\t ShadowBlot.prototype.remove = function () {\n\t\t if (this.domNode.parentNode != null) {\n\t\t this.domNode.parentNode.removeChild(this.domNode);\n\t\t }\n\t\t this.detach();\n\t\t };\n\t\t ShadowBlot.prototype.replace = function (target) {\n\t\t if (target.parent == null)\n\t\t return;\n\t\t target.parent.insertBefore(this, target.next);\n\t\t target.remove();\n\t\t };\n\t\t ShadowBlot.prototype.replaceWith = function (name, value) {\n\t\t var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n\t\t replacement.replace(this);\n\t\t return replacement;\n\t\t };\n\t\t ShadowBlot.prototype.split = function (index, force) {\n\t\t return index === 0 ? this : this.next;\n\t\t };\n\t\t ShadowBlot.prototype.update = function (mutations) {\n\t\t if (mutations === void 0) { mutations = []; }\n\t\t // Nothing to do by default\n\t\t };\n\t\t ShadowBlot.prototype.wrap = function (name, value) {\n\t\t var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n\t\t if (this.parent != null) {\n\t\t this.parent.insertBefore(wrapper, this.next);\n\t\t }\n\t\t wrapper.appendChild(this);\n\t\t return wrapper;\n\t\t };\n\t\t return ShadowBlot;\n\t\t}());\n\t\tShadowBlot.blotName = 'abstract';\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = ShadowBlot;\n\t\n\t\n\t/***/ },\n\t/* 6 */\n\t/***/ function(module, exports) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar ParchmentError = (function (_super) {\n\t\t __extends(ParchmentError, _super);\n\t\t function ParchmentError(message) {\n\t\t var _this = this;\n\t\t message = '[Parchment] ' + message;\n\t\t _this = _super.call(this, message) || this;\n\t\t _this.message = message;\n\t\t _this.name = _this.constructor.name;\n\t\t return _this;\n\t\t }\n\t\t return ParchmentError;\n\t\t}(Error));\n\t\texports.ParchmentError = ParchmentError;\n\t\tvar attributes = {};\n\t\tvar classes = {};\n\t\tvar tags = {};\n\t\tvar types = {};\n\t\texports.DATA_KEY = '__blot';\n\t\tvar Scope;\n\t\t(function (Scope) {\n\t\t Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n\t\t Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n\t\t Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n\t\t Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n\t\t Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n\t\t Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n\t\t Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n\t\t Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n\t\t Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n\t\t Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n\t\t Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n\t\t})(Scope = exports.Scope || (exports.Scope = {}));\n\t\t;\n\t\tfunction create(input, value) {\n\t\t var match = query(input);\n\t\t if (match == null) {\n\t\t throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n\t\t }\n\t\t var BlotClass = match;\n\t\t var node = input instanceof Node ? input : BlotClass.create(value);\n\t\t return new BlotClass(node, value);\n\t\t}\n\t\texports.create = create;\n\t\tfunction find(node, bubble) {\n\t\t if (bubble === void 0) { bubble = false; }\n\t\t if (node == null)\n\t\t return null;\n\t\t if (node[exports.DATA_KEY] != null)\n\t\t return node[exports.DATA_KEY].blot;\n\t\t if (bubble)\n\t\t return find(node.parentNode, bubble);\n\t\t return null;\n\t\t}\n\t\texports.find = find;\n\t\tfunction query(query, scope) {\n\t\t if (scope === void 0) { scope = Scope.ANY; }\n\t\t var match;\n\t\t if (typeof query === 'string') {\n\t\t match = types[query] || attributes[query];\n\t\t }\n\t\t else if (query instanceof Text) {\n\t\t match = types['text'];\n\t\t }\n\t\t else if (typeof query === 'number') {\n\t\t if (query & Scope.LEVEL & Scope.BLOCK) {\n\t\t match = types['block'];\n\t\t }\n\t\t else if (query & Scope.LEVEL & Scope.INLINE) {\n\t\t match = types['inline'];\n\t\t }\n\t\t }\n\t\t else if (query instanceof HTMLElement) {\n\t\t var names = (query.getAttribute('class') || '').split(/\\s+/);\n\t\t for (var i in names) {\n\t\t match = classes[names[i]];\n\t\t if (match)\n\t\t break;\n\t\t }\n\t\t match = match || tags[query.tagName];\n\t\t }\n\t\t if (match == null)\n\t\t return null;\n\t\t if ((scope & Scope.LEVEL & match.scope) && (scope & Scope.TYPE & match.scope))\n\t\t return match;\n\t\t return null;\n\t\t}\n\t\texports.query = query;\n\t\tfunction register() {\n\t\t var Definitions = [];\n\t\t for (var _i = 0; _i < arguments.length; _i++) {\n\t\t Definitions[_i] = arguments[_i];\n\t\t }\n\t\t if (Definitions.length > 1) {\n\t\t return Definitions.map(function (d) {\n\t\t return register(d);\n\t\t });\n\t\t }\n\t\t var Definition = Definitions[0];\n\t\t if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n\t\t throw new ParchmentError('Invalid definition');\n\t\t }\n\t\t else if (Definition.blotName === 'abstract') {\n\t\t throw new ParchmentError('Cannot register abstract class');\n\t\t }\n\t\t types[Definition.blotName || Definition.attrName] = Definition;\n\t\t if (typeof Definition.keyName === 'string') {\n\t\t attributes[Definition.keyName] = Definition;\n\t\t }\n\t\t else {\n\t\t if (Definition.className != null) {\n\t\t classes[Definition.className] = Definition;\n\t\t }\n\t\t if (Definition.tagName != null) {\n\t\t if (Array.isArray(Definition.tagName)) {\n\t\t Definition.tagName = Definition.tagName.map(function (tagName) {\n\t\t return tagName.toUpperCase();\n\t\t });\n\t\t }\n\t\t else {\n\t\t Definition.tagName = Definition.tagName.toUpperCase();\n\t\t }\n\t\t var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n\t\t tagNames.forEach(function (tag) {\n\t\t if (tags[tag] == null || Definition.className == null) {\n\t\t tags[tag] = Definition;\n\t\t }\n\t\t });\n\t\t }\n\t\t }\n\t\t return Definition;\n\t\t}\n\t\texports.register = register;\n\t\n\t\n\t/***/ },\n\t/* 7 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar attributor_1 = __webpack_require__(8);\n\t\tvar store_1 = __webpack_require__(9);\n\t\tvar container_1 = __webpack_require__(3);\n\t\tvar Registry = __webpack_require__(6);\n\t\tvar FormatBlot = (function (_super) {\n\t\t __extends(FormatBlot, _super);\n\t\t function FormatBlot() {\n\t\t return _super !== null && _super.apply(this, arguments) || this;\n\t\t }\n\t\t FormatBlot.formats = function (domNode) {\n\t\t if (typeof this.tagName === 'string') {\n\t\t return true;\n\t\t }\n\t\t else if (Array.isArray(this.tagName)) {\n\t\t return domNode.tagName.toLowerCase();\n\t\t }\n\t\t return undefined;\n\t\t };\n\t\t FormatBlot.prototype.attach = function () {\n\t\t _super.prototype.attach.call(this);\n\t\t this.attributes = new store_1.default(this.domNode);\n\t\t };\n\t\t FormatBlot.prototype.format = function (name, value) {\n\t\t var format = Registry.query(name);\n\t\t if (format instanceof attributor_1.default) {\n\t\t this.attributes.attribute(format, value);\n\t\t }\n\t\t else if (value) {\n\t\t if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n\t\t this.replaceWith(name, value);\n\t\t }\n\t\t }\n\t\t };\n\t\t FormatBlot.prototype.formats = function () {\n\t\t var formats = this.attributes.values();\n\t\t var format = this.statics.formats(this.domNode);\n\t\t if (format != null) {\n\t\t formats[this.statics.blotName] = format;\n\t\t }\n\t\t return formats;\n\t\t };\n\t\t FormatBlot.prototype.replaceWith = function (name, value) {\n\t\t var replacement = _super.prototype.replaceWith.call(this, name, value);\n\t\t this.attributes.copy(replacement);\n\t\t return replacement;\n\t\t };\n\t\t FormatBlot.prototype.update = function (mutations) {\n\t\t var _this = this;\n\t\t _super.prototype.update.call(this, mutations);\n\t\t if (mutations.some(function (mutation) {\n\t\t return mutation.target === _this.domNode && mutation.type === 'attributes';\n\t\t })) {\n\t\t this.attributes.build();\n\t\t }\n\t\t };\n\t\t FormatBlot.prototype.wrap = function (name, value) {\n\t\t var wrapper = _super.prototype.wrap.call(this, name, value);\n\t\t if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n\t\t this.attributes.move(wrapper);\n\t\t }\n\t\t return wrapper;\n\t\t };\n\t\t return FormatBlot;\n\t\t}(container_1.default));\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = FormatBlot;\n\t\n\t\n\t/***/ },\n\t/* 8 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar Registry = __webpack_require__(6);\n\t\tvar Attributor = (function () {\n\t\t function Attributor(attrName, keyName, options) {\n\t\t if (options === void 0) { options = {}; }\n\t\t this.attrName = attrName;\n\t\t this.keyName = keyName;\n\t\t var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n\t\t if (options.scope != null) {\n\t\t // Ignore type bits, force attribute bit\n\t\t this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n\t\t }\n\t\t else {\n\t\t this.scope = Registry.Scope.ATTRIBUTE;\n\t\t }\n\t\t if (options.whitelist != null)\n\t\t this.whitelist = options.whitelist;\n\t\t }\n\t\t Attributor.keys = function (node) {\n\t\t return [].map.call(node.attributes, function (item) {\n\t\t return item.name;\n\t\t });\n\t\t };\n\t\t Attributor.prototype.add = function (node, value) {\n\t\t if (!this.canAdd(node, value))\n\t\t return false;\n\t\t node.setAttribute(this.keyName, value);\n\t\t return true;\n\t\t };\n\t\t Attributor.prototype.canAdd = function (node, value) {\n\t\t var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n\t\t if (match != null && (this.whitelist == null || this.whitelist.indexOf(value) > -1)) {\n\t\t return true;\n\t\t }\n\t\t return false;\n\t\t };\n\t\t Attributor.prototype.remove = function (node) {\n\t\t node.removeAttribute(this.keyName);\n\t\t };\n\t\t Attributor.prototype.value = function (node) {\n\t\t var value = node.getAttribute(this.keyName);\n\t\t return this.canAdd(node, value) ? value : '';\n\t\t };\n\t\t return Attributor;\n\t\t}());\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = Attributor;\n\t\n\t\n\t/***/ },\n\t/* 9 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar attributor_1 = __webpack_require__(8);\n\t\tvar class_1 = __webpack_require__(10);\n\t\tvar style_1 = __webpack_require__(11);\n\t\tvar Registry = __webpack_require__(6);\n\t\tvar AttributorStore = (function () {\n\t\t function AttributorStore(domNode) {\n\t\t this.attributes = {};\n\t\t this.domNode = domNode;\n\t\t this.build();\n\t\t }\n\t\t AttributorStore.prototype.attribute = function (attribute, value) {\n\t\t if (value) {\n\t\t if (attribute.add(this.domNode, value)) {\n\t\t if (attribute.value(this.domNode) != null) {\n\t\t this.attributes[attribute.attrName] = attribute;\n\t\t }\n\t\t else {\n\t\t delete this.attributes[attribute.attrName];\n\t\t }\n\t\t }\n\t\t }\n\t\t else {\n\t\t attribute.remove(this.domNode);\n\t\t delete this.attributes[attribute.attrName];\n\t\t }\n\t\t };\n\t\t AttributorStore.prototype.build = function () {\n\t\t var _this = this;\n\t\t this.attributes = {};\n\t\t var attributes = attributor_1.default.keys(this.domNode);\n\t\t var classes = class_1.default.keys(this.domNode);\n\t\t var styles = style_1.default.keys(this.domNode);\n\t\t attributes.concat(classes).concat(styles).forEach(function (name) {\n\t\t var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n\t\t if (attr instanceof attributor_1.default) {\n\t\t _this.attributes[attr.attrName] = attr;\n\t\t }\n\t\t });\n\t\t };\n\t\t AttributorStore.prototype.copy = function (target) {\n\t\t var _this = this;\n\t\t Object.keys(this.attributes).forEach(function (key) {\n\t\t var value = _this.attributes[key].value(_this.domNode);\n\t\t target.format(key, value);\n\t\t });\n\t\t };\n\t\t AttributorStore.prototype.move = function (target) {\n\t\t var _this = this;\n\t\t this.copy(target);\n\t\t Object.keys(this.attributes).forEach(function (key) {\n\t\t _this.attributes[key].remove(_this.domNode);\n\t\t });\n\t\t this.attributes = {};\n\t\t };\n\t\t AttributorStore.prototype.values = function () {\n\t\t var _this = this;\n\t\t return Object.keys(this.attributes).reduce(function (attributes, name) {\n\t\t attributes[name] = _this.attributes[name].value(_this.domNode);\n\t\t return attributes;\n\t\t }, {});\n\t\t };\n\t\t return AttributorStore;\n\t\t}());\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = AttributorStore;\n\t\n\t\n\t/***/ },\n\t/* 10 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar attributor_1 = __webpack_require__(8);\n\t\tfunction match(node, prefix) {\n\t\t var className = node.getAttribute('class') || '';\n\t\t return className.split(/\\s+/).filter(function (name) {\n\t\t return name.indexOf(prefix + \"-\") === 0;\n\t\t });\n\t\t}\n\t\tvar ClassAttributor = (function (_super) {\n\t\t __extends(ClassAttributor, _super);\n\t\t function ClassAttributor() {\n\t\t return _super !== null && _super.apply(this, arguments) || this;\n\t\t }\n\t\t ClassAttributor.keys = function (node) {\n\t\t return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n\t\t return name.split('-').slice(0, -1).join('-');\n\t\t });\n\t\t };\n\t\t ClassAttributor.prototype.add = function (node, value) {\n\t\t if (!this.canAdd(node, value))\n\t\t return false;\n\t\t this.remove(node);\n\t\t node.classList.add(this.keyName + \"-\" + value);\n\t\t return true;\n\t\t };\n\t\t ClassAttributor.prototype.remove = function (node) {\n\t\t var matches = match(node, this.keyName);\n\t\t matches.forEach(function (name) {\n\t\t node.classList.remove(name);\n\t\t });\n\t\t if (node.classList.length === 0) {\n\t\t node.removeAttribute('class');\n\t\t }\n\t\t };\n\t\t ClassAttributor.prototype.value = function (node) {\n\t\t var result = match(node, this.keyName)[0] || '';\n\t\t var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n\t\t return this.canAdd(node, value) ? value : '';\n\t\t };\n\t\t return ClassAttributor;\n\t\t}(attributor_1.default));\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = ClassAttributor;\n\t\n\t\n\t/***/ },\n\t/* 11 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar attributor_1 = __webpack_require__(8);\n\t\tfunction camelize(name) {\n\t\t var parts = name.split('-');\n\t\t var rest = parts.slice(1).map(function (part) {\n\t\t return part[0].toUpperCase() + part.slice(1);\n\t\t }).join('');\n\t\t return parts[0] + rest;\n\t\t}\n\t\tvar StyleAttributor = (function (_super) {\n\t\t __extends(StyleAttributor, _super);\n\t\t function StyleAttributor() {\n\t\t return _super !== null && _super.apply(this, arguments) || this;\n\t\t }\n\t\t StyleAttributor.keys = function (node) {\n\t\t return (node.getAttribute('style') || '').split(';').map(function (value) {\n\t\t var arr = value.split(':');\n\t\t return arr[0].trim();\n\t\t });\n\t\t };\n\t\t StyleAttributor.prototype.add = function (node, value) {\n\t\t if (!this.canAdd(node, value))\n\t\t return false;\n\t\t node.style[camelize(this.keyName)] = value;\n\t\t return true;\n\t\t };\n\t\t StyleAttributor.prototype.remove = function (node) {\n\t\t node.style[camelize(this.keyName)] = '';\n\t\t if (!node.getAttribute('style')) {\n\t\t node.removeAttribute('style');\n\t\t }\n\t\t };\n\t\t StyleAttributor.prototype.value = function (node) {\n\t\t var value = node.style[camelize(this.keyName)];\n\t\t return this.canAdd(node, value) ? value : '';\n\t\t };\n\t\t return StyleAttributor;\n\t\t}(attributor_1.default));\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = StyleAttributor;\n\t\n\t\n\t/***/ },\n\t/* 12 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar shadow_1 = __webpack_require__(5);\n\t\tvar Registry = __webpack_require__(6);\n\t\tvar LeafBlot = (function (_super) {\n\t\t __extends(LeafBlot, _super);\n\t\t function LeafBlot() {\n\t\t return _super !== null && _super.apply(this, arguments) || this;\n\t\t }\n\t\t LeafBlot.value = function (domNode) {\n\t\t return true;\n\t\t };\n\t\t LeafBlot.prototype.index = function (node, offset) {\n\t\t if (node !== this.domNode)\n\t\t return -1;\n\t\t return Math.min(offset, 1);\n\t\t };\n\t\t LeafBlot.prototype.position = function (index, inclusive) {\n\t\t var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n\t\t if (index > 0)\n\t\t offset += 1;\n\t\t return [this.parent.domNode, offset];\n\t\t };\n\t\t LeafBlot.prototype.value = function () {\n\t\t return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n\t\t var _a;\n\t\t };\n\t\t return LeafBlot;\n\t\t}(shadow_1.default));\n\t\tLeafBlot.scope = Registry.Scope.INLINE_BLOT;\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = LeafBlot;\n\t\n\t\n\t/***/ },\n\t/* 13 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar container_1 = __webpack_require__(3);\n\t\tvar Registry = __webpack_require__(6);\n\t\tvar OBSERVER_CONFIG = {\n\t\t attributes: true,\n\t\t characterData: true,\n\t\t characterDataOldValue: true,\n\t\t childList: true,\n\t\t subtree: true\n\t\t};\n\t\tvar MAX_OPTIMIZE_ITERATIONS = 100;\n\t\tvar ScrollBlot = (function (_super) {\n\t\t __extends(ScrollBlot, _super);\n\t\t function ScrollBlot(node) {\n\t\t var _this = _super.call(this, node) || this;\n\t\t _this.parent = null;\n\t\t _this.observer = new MutationObserver(function (mutations) {\n\t\t _this.update(mutations);\n\t\t });\n\t\t _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n\t\t return _this;\n\t\t }\n\t\t ScrollBlot.prototype.detach = function () {\n\t\t _super.prototype.detach.call(this);\n\t\t this.observer.disconnect();\n\t\t };\n\t\t ScrollBlot.prototype.deleteAt = function (index, length) {\n\t\t this.update();\n\t\t if (index === 0 && length === this.length()) {\n\t\t this.children.forEach(function (child) {\n\t\t child.remove();\n\t\t });\n\t\t }\n\t\t else {\n\t\t _super.prototype.deleteAt.call(this, index, length);\n\t\t }\n\t\t };\n\t\t ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n\t\t this.update();\n\t\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t\t };\n\t\t ScrollBlot.prototype.insertAt = function (index, value, def) {\n\t\t this.update();\n\t\t _super.prototype.insertAt.call(this, index, value, def);\n\t\t };\n\t\t ScrollBlot.prototype.optimize = function (mutations) {\n\t\t var _this = this;\n\t\t if (mutations === void 0) { mutations = []; }\n\t\t _super.prototype.optimize.call(this);\n\t\t // We must modify mutations directly, cannot make copy and then modify\n\t\t var records = [].slice.call(this.observer.takeRecords());\n\t\t // Array.push currently seems to be implemented by a non-tail recursive function\n\t\t // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n\t\t while (records.length > 0)\n\t\t mutations.push(records.pop());\n\t\t // TODO use WeakMap\n\t\t var mark = function (blot, markParent) {\n\t\t if (markParent === void 0) { markParent = true; }\n\t\t if (blot == null || blot === _this)\n\t\t return;\n\t\t if (blot.domNode.parentNode == null)\n\t\t return;\n\t\t if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t\t blot.domNode[Registry.DATA_KEY].mutations = [];\n\t\t }\n\t\t if (markParent)\n\t\t mark(blot.parent);\n\t\t };\n\t\t var optimize = function (blot) {\n\t\t if (blot.domNode[Registry.DATA_KEY] == null || blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t\t return;\n\t\t }\n\t\t if (blot instanceof container_1.default) {\n\t\t blot.children.forEach(optimize);\n\t\t }\n\t\t blot.optimize();\n\t\t };\n\t\t var remaining = mutations;\n\t\t for (var i = 0; remaining.length > 0; i += 1) {\n\t\t if (i >= MAX_OPTIMIZE_ITERATIONS) {\n\t\t throw new Error('[Parchment] Maximum optimize iterations reached');\n\t\t }\n\t\t remaining.forEach(function (mutation) {\n\t\t var blot = Registry.find(mutation.target, true);\n\t\t if (blot == null)\n\t\t return;\n\t\t if (blot.domNode === mutation.target) {\n\t\t if (mutation.type === 'childList') {\n\t\t mark(Registry.find(mutation.previousSibling, false));\n\t\t [].forEach.call(mutation.addedNodes, function (node) {\n\t\t var child = Registry.find(node, false);\n\t\t mark(child, false);\n\t\t if (child instanceof container_1.default) {\n\t\t child.children.forEach(function (grandChild) {\n\t\t mark(grandChild, false);\n\t\t });\n\t\t }\n\t\t });\n\t\t }\n\t\t else if (mutation.type === 'attributes') {\n\t\t mark(blot.prev);\n\t\t }\n\t\t }\n\t\t mark(blot);\n\t\t });\n\t\t this.children.forEach(optimize);\n\t\t remaining = [].slice.call(this.observer.takeRecords());\n\t\t records = remaining.slice();\n\t\t while (records.length > 0)\n\t\t mutations.push(records.pop());\n\t\t }\n\t\t };\n\t\t ScrollBlot.prototype.update = function (mutations) {\n\t\t var _this = this;\n\t\t mutations = mutations || this.observer.takeRecords();\n\t\t // TODO use WeakMap\n\t\t mutations.map(function (mutation) {\n\t\t var blot = Registry.find(mutation.target, true);\n\t\t if (blot == null)\n\t\t return;\n\t\t if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t\t blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n\t\t return blot;\n\t\t }\n\t\t else {\n\t\t blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n\t\t return null;\n\t\t }\n\t\t }).forEach(function (blot) {\n\t\t if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null)\n\t\t return;\n\t\t blot.update(blot.domNode[Registry.DATA_KEY].mutations || []);\n\t\t });\n\t\t if (this.domNode[Registry.DATA_KEY].mutations != null) {\n\t\t _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations);\n\t\t }\n\t\t this.optimize(mutations);\n\t\t };\n\t\t return ScrollBlot;\n\t\t}(container_1.default));\n\t\tScrollBlot.blotName = 'scroll';\n\t\tScrollBlot.defaultChild = 'block';\n\t\tScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n\t\tScrollBlot.tagName = 'DIV';\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = ScrollBlot;\n\t\n\t\n\t/***/ },\n\t/* 14 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar format_1 = __webpack_require__(7);\n\t\tvar Registry = __webpack_require__(6);\n\t\t// Shallow object comparison\n\t\tfunction isEqual(obj1, obj2) {\n\t\t if (Object.keys(obj1).length !== Object.keys(obj2).length)\n\t\t return false;\n\t\t for (var prop in obj1) {\n\t\t if (obj1[prop] !== obj2[prop])\n\t\t return false;\n\t\t }\n\t\t return true;\n\t\t}\n\t\tvar InlineBlot = (function (_super) {\n\t\t __extends(InlineBlot, _super);\n\t\t function InlineBlot() {\n\t\t return _super !== null && _super.apply(this, arguments) || this;\n\t\t }\n\t\t InlineBlot.formats = function (domNode) {\n\t\t if (domNode.tagName === InlineBlot.tagName)\n\t\t return undefined;\n\t\t return _super.formats.call(this, domNode);\n\t\t };\n\t\t InlineBlot.prototype.format = function (name, value) {\n\t\t var _this = this;\n\t\t if (name === this.statics.blotName && !value) {\n\t\t this.children.forEach(function (child) {\n\t\t if (!(child instanceof format_1.default)) {\n\t\t child = child.wrap(InlineBlot.blotName, true);\n\t\t }\n\t\t _this.attributes.copy(child);\n\t\t });\n\t\t this.unwrap();\n\t\t }\n\t\t else {\n\t\t _super.prototype.format.call(this, name, value);\n\t\t }\n\t\t };\n\t\t InlineBlot.prototype.formatAt = function (index, length, name, value) {\n\t\t if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n\t\t var blot = this.isolate(index, length);\n\t\t blot.format(name, value);\n\t\t }\n\t\t else {\n\t\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t\t }\n\t\t };\n\t\t InlineBlot.prototype.optimize = function () {\n\t\t _super.prototype.optimize.call(this);\n\t\t var formats = this.formats();\n\t\t if (Object.keys(formats).length === 0) {\n\t\t return this.unwrap(); // unformatted span\n\t\t }\n\t\t var next = this.next;\n\t\t if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n\t\t next.moveChildren(this);\n\t\t next.remove();\n\t\t }\n\t\t };\n\t\t return InlineBlot;\n\t\t}(format_1.default));\n\t\tInlineBlot.blotName = 'inline';\n\t\tInlineBlot.scope = Registry.Scope.INLINE_BLOT;\n\t\tInlineBlot.tagName = 'SPAN';\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = InlineBlot;\n\t\n\t\n\t/***/ },\n\t/* 15 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar format_1 = __webpack_require__(7);\n\t\tvar Registry = __webpack_require__(6);\n\t\tvar BlockBlot = (function (_super) {\n\t\t __extends(BlockBlot, _super);\n\t\t function BlockBlot() {\n\t\t return _super !== null && _super.apply(this, arguments) || this;\n\t\t }\n\t\t BlockBlot.formats = function (domNode) {\n\t\t var tagName = Registry.query(BlockBlot.blotName).tagName;\n\t\t if (domNode.tagName === tagName)\n\t\t return undefined;\n\t\t return _super.formats.call(this, domNode);\n\t\t };\n\t\t BlockBlot.prototype.format = function (name, value) {\n\t\t if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n\t\t return;\n\t\t }\n\t\t else if (name === this.statics.blotName && !value) {\n\t\t this.replaceWith(BlockBlot.blotName);\n\t\t }\n\t\t else {\n\t\t _super.prototype.format.call(this, name, value);\n\t\t }\n\t\t };\n\t\t BlockBlot.prototype.formatAt = function (index, length, name, value) {\n\t\t if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n\t\t this.format(name, value);\n\t\t }\n\t\t else {\n\t\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t\t }\n\t\t };\n\t\t BlockBlot.prototype.insertAt = function (index, value, def) {\n\t\t if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n\t\t // Insert text or inline\n\t\t _super.prototype.insertAt.call(this, index, value, def);\n\t\t }\n\t\t else {\n\t\t var after = this.split(index);\n\t\t var blot = Registry.create(value, def);\n\t\t after.parent.insertBefore(blot, after);\n\t\t }\n\t\t };\n\t\t BlockBlot.prototype.update = function (mutations) {\n\t\t if (navigator.userAgent.match(/Trident/)) {\n\t\t this.attach();\n\t\t }\n\t\t else {\n\t\t _super.prototype.update.call(this, mutations);\n\t\t }\n\t\t };\n\t\t return BlockBlot;\n\t\t}(format_1.default));\n\t\tBlockBlot.blotName = 'block';\n\t\tBlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n\t\tBlockBlot.tagName = 'P';\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = BlockBlot;\n\t\n\t\n\t/***/ },\n\t/* 16 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar leaf_1 = __webpack_require__(12);\n\t\tvar EmbedBlot = (function (_super) {\n\t\t __extends(EmbedBlot, _super);\n\t\t function EmbedBlot() {\n\t\t return _super !== null && _super.apply(this, arguments) || this;\n\t\t }\n\t\t EmbedBlot.formats = function (domNode) {\n\t\t return undefined;\n\t\t };\n\t\t EmbedBlot.prototype.format = function (name, value) {\n\t\t // super.formatAt wraps, which is what we want in general,\n\t\t // but this allows subclasses to overwrite for formats\n\t\t // that just apply to particular embeds\n\t\t _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n\t\t };\n\t\t EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n\t\t if (index === 0 && length === this.length()) {\n\t\t this.format(name, value);\n\t\t }\n\t\t else {\n\t\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t\t }\n\t\t };\n\t\t EmbedBlot.prototype.formats = function () {\n\t\t return this.statics.formats(this.domNode);\n\t\t };\n\t\t return EmbedBlot;\n\t\t}(leaf_1.default));\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = EmbedBlot;\n\t\n\t\n\t/***/ },\n\t/* 17 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t\"use strict\";\n\t\tvar __extends = (this && this.__extends) || function (d, b) {\n\t\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t};\n\t\tvar leaf_1 = __webpack_require__(12);\n\t\tvar Registry = __webpack_require__(6);\n\t\tvar TextBlot = (function (_super) {\n\t\t __extends(TextBlot, _super);\n\t\t function TextBlot(node) {\n\t\t var _this = _super.call(this, node) || this;\n\t\t _this.text = _this.statics.value(_this.domNode);\n\t\t return _this;\n\t\t }\n\t\t TextBlot.create = function (value) {\n\t\t return document.createTextNode(value);\n\t\t };\n\t\t TextBlot.value = function (domNode) {\n\t\t return domNode.data;\n\t\t };\n\t\t TextBlot.prototype.deleteAt = function (index, length) {\n\t\t this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n\t\t };\n\t\t TextBlot.prototype.index = function (node, offset) {\n\t\t if (this.domNode === node) {\n\t\t return offset;\n\t\t }\n\t\t return -1;\n\t\t };\n\t\t TextBlot.prototype.insertAt = function (index, value, def) {\n\t\t if (def == null) {\n\t\t this.text = this.text.slice(0, index) + value + this.text.slice(index);\n\t\t this.domNode.data = this.text;\n\t\t }\n\t\t else {\n\t\t _super.prototype.insertAt.call(this, index, value, def);\n\t\t }\n\t\t };\n\t\t TextBlot.prototype.length = function () {\n\t\t return this.text.length;\n\t\t };\n\t\t TextBlot.prototype.optimize = function () {\n\t\t _super.prototype.optimize.call(this);\n\t\t this.text = this.statics.value(this.domNode);\n\t\t if (this.text.length === 0) {\n\t\t this.remove();\n\t\t }\n\t\t else if (this.next instanceof TextBlot && this.next.prev === this) {\n\t\t this.insertAt(this.length(), this.next.value());\n\t\t this.next.remove();\n\t\t }\n\t\t };\n\t\t TextBlot.prototype.position = function (index, inclusive) {\n\t\t if (inclusive === void 0) { inclusive = false; }\n\t\t return [this.domNode, index];\n\t\t };\n\t\t TextBlot.prototype.split = function (index, force) {\n\t\t if (force === void 0) { force = false; }\n\t\t if (!force) {\n\t\t if (index === 0)\n\t\t return this;\n\t\t if (index === this.length())\n\t\t return this.next;\n\t\t }\n\t\t var after = Registry.create(this.domNode.splitText(index));\n\t\t this.parent.insertBefore(after, this.next);\n\t\t this.text = this.statics.value(this.domNode);\n\t\t return after;\n\t\t };\n\t\t TextBlot.prototype.update = function (mutations) {\n\t\t var _this = this;\n\t\t if (mutations.some(function (mutation) {\n\t\t return mutation.type === 'characterData' && mutation.target === _this.domNode;\n\t\t })) {\n\t\t this.text = this.statics.value(this.domNode);\n\t\t }\n\t\t };\n\t\t TextBlot.prototype.value = function () {\n\t\t return this.text;\n\t\t };\n\t\t return TextBlot;\n\t\t}(leaf_1.default));\n\t\tTextBlot.blotName = 'text';\n\t\tTextBlot.scope = Registry.Scope.INLINE_BLOT;\n\t\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t\texports.default = TextBlot;\n\t\n\t\n\t/***/ },\n\t/* 18 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.default = exports.overload = exports.expandConfig = undefined;\n\t\n\t\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\t__webpack_require__(19);\n\t\n\t\tvar _quillDelta = __webpack_require__(20);\n\t\n\t\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\t\tvar _editor = __webpack_require__(27);\n\t\n\t\tvar _editor2 = _interopRequireDefault(_editor);\n\t\n\t\tvar _emitter3 = __webpack_require__(35);\n\t\n\t\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\t\n\t\tvar _module = __webpack_require__(39);\n\t\n\t\tvar _module2 = _interopRequireDefault(_module);\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _selection = __webpack_require__(40);\n\t\n\t\tvar _selection2 = _interopRequireDefault(_selection);\n\t\n\t\tvar _extend = __webpack_require__(25);\n\t\n\t\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\t\tvar _logger = __webpack_require__(37);\n\t\n\t\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\t\tvar _theme = __webpack_require__(41);\n\t\n\t\tvar _theme2 = _interopRequireDefault(_theme);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _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; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tvar debug = (0, _logger2.default)('quill');\n\t\n\t\tvar Quill = function () {\n\t\t _createClass(Quill, null, [{\n\t\t key: 'debug',\n\t\t value: function debug(limit) {\n\t\t if (limit === true) {\n\t\t limit = 'log';\n\t\t }\n\t\t _logger2.default.level(limit);\n\t\t }\n\t\t }, {\n\t\t key: 'find',\n\t\t value: function find(node) {\n\t\t return node.__quill || _parchment2.default.find(node);\n\t\t }\n\t\t }, {\n\t\t key: 'import',\n\t\t value: function _import(name) {\n\t\t if (this.imports[name] == null) {\n\t\t debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n\t\t }\n\t\t return this.imports[name];\n\t\t }\n\t\t }, {\n\t\t key: 'register',\n\t\t value: function register(path, target) {\n\t\t var _this = this;\n\t\n\t\t var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t\n\t\t if (typeof path !== 'string') {\n\t\t var name = path.attrName || path.blotName;\n\t\t if (typeof name === 'string') {\n\t\t // register(Blot | Attributor, overwrite)\n\t\t this.register('formats/' + name, path, target);\n\t\t } else {\n\t\t Object.keys(path).forEach(function (key) {\n\t\t _this.register(key, path[key], target);\n\t\t });\n\t\t }\n\t\t } else {\n\t\t if (this.imports[path] != null && !overwrite) {\n\t\t debug.warn('Overwriting ' + path + ' with', target);\n\t\t }\n\t\t this.imports[path] = target;\n\t\t if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n\t\t _parchment2.default.register(target);\n\t\t }\n\t\t }\n\t\t }\n\t\t }]);\n\t\n\t\t function Quill(container) {\n\t\t var _this2 = this;\n\t\n\t\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t\t _classCallCheck(this, Quill);\n\t\n\t\t this.options = expandConfig(container, options);\n\t\t this.container = this.options.container;\n\t\t this.scrollingContainer = this.options.scrollingContainer || document.body;\n\t\t if (this.container == null) {\n\t\t return debug.error('Invalid Quill container', container);\n\t\t }\n\t\t if (this.options.debug) {\n\t\t Quill.debug(this.options.debug);\n\t\t }\n\t\t var html = this.container.innerHTML.trim();\n\t\t this.container.classList.add('ql-container');\n\t\t this.container.innerHTML = '';\n\t\t this.container.__quill = this;\n\t\t this.root = this.addContainer('ql-editor');\n\t\t this.root.classList.add('ql-blank');\n\t\t this.emitter = new _emitter4.default();\n\t\t this.scroll = _parchment2.default.create(this.root, {\n\t\t emitter: this.emitter,\n\t\t whitelist: this.options.formats\n\t\t });\n\t\t this.editor = new _editor2.default(this.scroll);\n\t\t this.selection = new _selection2.default(this.scroll, this.emitter);\n\t\t this.theme = new this.options.theme(this, this.options);\n\t\t this.keyboard = this.theme.addModule('keyboard');\n\t\t this.clipboard = this.theme.addModule('clipboard');\n\t\t this.history = this.theme.addModule('history');\n\t\t this.theme.init();\n\t\t this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n\t\t if (type === _emitter4.default.events.TEXT_CHANGE) {\n\t\t _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n\t\t }\n\t\t });\n\t\t this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n\t\t var range = _this2.selection.lastRange;\n\t\t var index = range && range.length === 0 ? range.index : undefined;\n\t\t modify.call(_this2, function () {\n\t\t return _this2.editor.update(null, mutations, index);\n\t\t }, source);\n\t\t });\n\t\t var contents = this.clipboard.convert('');\n\t\t this.setContents(contents);\n\t\t this.history.clear();\n\t\t if (this.options.placeholder) {\n\t\t this.root.setAttribute('data-placeholder', this.options.placeholder);\n\t\t }\n\t\t if (this.options.readOnly) {\n\t\t this.disable();\n\t\t }\n\t\t }\n\t\n\t\t _createClass(Quill, [{\n\t\t key: 'addContainer',\n\t\t value: function addContainer(container) {\n\t\t var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t\n\t\t if (typeof container === 'string') {\n\t\t var className = container;\n\t\t container = document.createElement('div');\n\t\t container.classList.add(className);\n\t\t }\n\t\t this.container.insertBefore(container, refNode);\n\t\t return container;\n\t\t }\n\t\t }, {\n\t\t key: 'blur',\n\t\t value: function blur() {\n\t\t this.selection.setRange(null);\n\t\t }\n\t\t }, {\n\t\t key: 'deleteText',\n\t\t value: function deleteText(index, length, source) {\n\t\t var _this3 = this;\n\t\n\t\t var _overload = overload(index, length, source);\n\t\n\t\t var _overload2 = _slicedToArray(_overload, 4);\n\t\n\t\t index = _overload2[0];\n\t\t length = _overload2[1];\n\t\t source = _overload2[3];\n\t\n\t\t return modify.call(this, function () {\n\t\t return _this3.editor.deleteText(index, length);\n\t\t }, source, index, -1 * length);\n\t\t }\n\t\t }, {\n\t\t key: 'disable',\n\t\t value: function disable() {\n\t\t this.enable(false);\n\t\t }\n\t\t }, {\n\t\t key: 'enable',\n\t\t value: function enable() {\n\t\t var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t\n\t\t this.scroll.enable(enabled);\n\t\t this.container.classList.toggle('ql-disabled', !enabled);\n\t\t if (!enabled) {\n\t\t this.blur();\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'focus',\n\t\t value: function focus() {\n\t\t var scrollTop = this.scrollingContainer.scrollTop;\n\t\t this.selection.focus();\n\t\t this.scrollingContainer.scrollTop = scrollTop;\n\t\t this.selection.scrollIntoView();\n\t\t }\n\t\t }, {\n\t\t key: 'format',\n\t\t value: function format(name, value) {\n\t\t var _this4 = this;\n\t\n\t\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\t\n\t\t return modify.call(this, function () {\n\t\t var range = _this4.getSelection(true);\n\t\t var change = new _quillDelta2.default();\n\t\t if (range == null) {\n\t\t return change;\n\t\t } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t\t change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n\t\t } else if (range.length === 0) {\n\t\t _this4.selection.format(name, value);\n\t\t return change;\n\t\t } else {\n\t\t change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n\t\t }\n\t\t _this4.setSelection(range, _emitter4.default.sources.SILENT);\n\t\t return change;\n\t\t }, source);\n\t\t }\n\t\t }, {\n\t\t key: 'formatLine',\n\t\t value: function formatLine(index, length, name, value, source) {\n\t\t var _this5 = this;\n\t\n\t\t var formats = void 0;\n\t\n\t\t var _overload3 = overload(index, length, name, value, source);\n\t\n\t\t var _overload4 = _slicedToArray(_overload3, 4);\n\t\n\t\t index = _overload4[0];\n\t\t length = _overload4[1];\n\t\t formats = _overload4[2];\n\t\t source = _overload4[3];\n\t\n\t\t return modify.call(this, function () {\n\t\t return _this5.editor.formatLine(index, length, formats);\n\t\t }, source, index, 0);\n\t\t }\n\t\t }, {\n\t\t key: 'formatText',\n\t\t value: function formatText(index, length, name, value, source) {\n\t\t var _this6 = this;\n\t\n\t\t var formats = void 0;\n\t\n\t\t var _overload5 = overload(index, length, name, value, source);\n\t\n\t\t var _overload6 = _slicedToArray(_overload5, 4);\n\t\n\t\t index = _overload6[0];\n\t\t length = _overload6[1];\n\t\t formats = _overload6[2];\n\t\t source = _overload6[3];\n\t\n\t\t return modify.call(this, function () {\n\t\t return _this6.editor.formatText(index, length, formats);\n\t\t }, source, index, 0);\n\t\t }\n\t\t }, {\n\t\t key: 'getBounds',\n\t\t value: function getBounds(index) {\n\t\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t\t if (typeof index === 'number') {\n\t\t return this.selection.getBounds(index, length);\n\t\t } else {\n\t\t return this.selection.getBounds(index.index, index.length);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'getContents',\n\t\t value: function getContents() {\n\t\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\t\n\t\t var _overload7 = overload(index, length);\n\t\n\t\t var _overload8 = _slicedToArray(_overload7, 2);\n\t\n\t\t index = _overload8[0];\n\t\t length = _overload8[1];\n\t\n\t\t return this.editor.getContents(index, length);\n\t\t }\n\t\t }, {\n\t\t key: 'getFormat',\n\t\t value: function getFormat() {\n\t\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection();\n\t\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t\t if (typeof index === 'number') {\n\t\t return this.editor.getFormat(index, length);\n\t\t } else {\n\t\t return this.editor.getFormat(index.index, index.length);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'getIndex',\n\t\t value: function getIndex(blot) {\n\t\t return blot.offset(this.scroll);\n\t\t }\n\t\t }, {\n\t\t key: 'getLength',\n\t\t value: function getLength() {\n\t\t return this.scroll.length();\n\t\t }\n\t\t }, {\n\t\t key: 'getLeaf',\n\t\t value: function getLeaf(index) {\n\t\t return this.scroll.leaf(index);\n\t\t }\n\t\t }, {\n\t\t key: 'getLine',\n\t\t value: function getLine(index) {\n\t\t return this.scroll.line(index);\n\t\t }\n\t\t }, {\n\t\t key: 'getLines',\n\t\t value: function getLines() {\n\t\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\t\n\t\t if (typeof index !== 'number') {\n\t\t return this.scroll.lines(index.index, index.length);\n\t\t } else {\n\t\t return this.scroll.lines(index, length);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'getModule',\n\t\t value: function getModule(name) {\n\t\t return this.theme.modules[name];\n\t\t }\n\t\t }, {\n\t\t key: 'getSelection',\n\t\t value: function getSelection() {\n\t\t var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t\n\t\t if (focus) this.focus();\n\t\t this.update(); // Make sure we access getRange with editor in consistent state\n\t\t return this.selection.getRange()[0];\n\t\t }\n\t\t }, {\n\t\t key: 'getText',\n\t\t value: function getText() {\n\t\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\t\n\t\t var _overload9 = overload(index, length);\n\t\n\t\t var _overload10 = _slicedToArray(_overload9, 2);\n\t\n\t\t index = _overload10[0];\n\t\t length = _overload10[1];\n\t\n\t\t return this.editor.getText(index, length);\n\t\t }\n\t\t }, {\n\t\t key: 'hasFocus',\n\t\t value: function hasFocus() {\n\t\t return this.selection.hasFocus();\n\t\t }\n\t\t }, {\n\t\t key: 'insertEmbed',\n\t\t value: function insertEmbed(index, embed, value) {\n\t\t var _this7 = this;\n\t\n\t\t var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\t\n\t\t return modify.call(this, function () {\n\t\t return _this7.editor.insertEmbed(index, embed, value);\n\t\t }, source, index);\n\t\t }\n\t\t }, {\n\t\t key: 'insertText',\n\t\t value: function insertText(index, text, name, value, source) {\n\t\t var _this8 = this;\n\t\n\t\t var formats = void 0;\n\t\n\t\t var _overload11 = overload(index, 0, name, value, source);\n\t\n\t\t var _overload12 = _slicedToArray(_overload11, 4);\n\t\n\t\t index = _overload12[0];\n\t\t formats = _overload12[2];\n\t\t source = _overload12[3];\n\t\n\t\t return modify.call(this, function () {\n\t\t return _this8.editor.insertText(index, text, formats);\n\t\t }, source, index, text.length);\n\t\t }\n\t\t }, {\n\t\t key: 'isEnabled',\n\t\t value: function isEnabled() {\n\t\t return !this.container.classList.contains('ql-disabled');\n\t\t }\n\t\t }, {\n\t\t key: 'off',\n\t\t value: function off() {\n\t\t return this.emitter.off.apply(this.emitter, arguments);\n\t\t }\n\t\t }, {\n\t\t key: 'on',\n\t\t value: function on() {\n\t\t return this.emitter.on.apply(this.emitter, arguments);\n\t\t }\n\t\t }, {\n\t\t key: 'once',\n\t\t value: function once() {\n\t\t return this.emitter.once.apply(this.emitter, arguments);\n\t\t }\n\t\t }, {\n\t\t key: 'pasteHTML',\n\t\t value: function pasteHTML(index, html, source) {\n\t\t this.clipboard.dangerouslyPasteHTML(index, html, source);\n\t\t }\n\t\t }, {\n\t\t key: 'removeFormat',\n\t\t value: function removeFormat(index, length, source) {\n\t\t var _this9 = this;\n\t\n\t\t var _overload13 = overload(index, length, source);\n\t\n\t\t var _overload14 = _slicedToArray(_overload13, 4);\n\t\n\t\t index = _overload14[0];\n\t\t length = _overload14[1];\n\t\t source = _overload14[3];\n\t\n\t\t return modify.call(this, function () {\n\t\t return _this9.editor.removeFormat(index, length);\n\t\t }, source, index);\n\t\t }\n\t\t }, {\n\t\t key: 'setContents',\n\t\t value: function setContents(delta) {\n\t\t var _this10 = this;\n\t\n\t\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\t\n\t\t return modify.call(this, function () {\n\t\t delta = new _quillDelta2.default(delta);\n\t\t var length = _this10.getLength();\n\t\t var deleted = _this10.editor.deleteText(0, length);\n\t\t var applied = _this10.editor.applyDelta(delta);\n\t\t var lastOp = applied.ops[applied.ops.length - 1];\n\t\t if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n\t\t _this10.editor.deleteText(_this10.getLength() - 1, 1);\n\t\t applied.delete(1);\n\t\t }\n\t\t var ret = deleted.compose(applied);\n\t\t return ret;\n\t\t }, source);\n\t\t }\n\t\t }, {\n\t\t key: 'setSelection',\n\t\t value: function setSelection(index, length, source) {\n\t\t if (index == null) {\n\t\t this.selection.setRange(null, length || Quill.sources.API);\n\t\t } else {\n\t\t var _overload15 = overload(index, length, source);\n\t\n\t\t var _overload16 = _slicedToArray(_overload15, 4);\n\t\n\t\t index = _overload16[0];\n\t\t length = _overload16[1];\n\t\t source = _overload16[3];\n\t\n\t\t this.selection.setRange(new _selection.Range(index, length), source);\n\t\t }\n\t\t if (source !== _emitter4.default.sources.SILENT) {\n\t\t this.selection.scrollIntoView();\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'setText',\n\t\t value: function setText(text) {\n\t\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\t\n\t\t var delta = new _quillDelta2.default().insert(text);\n\t\t return this.setContents(delta, source);\n\t\t }\n\t\t }, {\n\t\t key: 'update',\n\t\t value: function update() {\n\t\t var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\t\n\t\t var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n\t\t this.selection.update(source);\n\t\t return change;\n\t\t }\n\t\t }, {\n\t\t key: 'updateContents',\n\t\t value: function updateContents(delta) {\n\t\t var _this11 = this;\n\t\n\t\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\t\n\t\t return modify.call(this, function () {\n\t\t delta = new _quillDelta2.default(delta);\n\t\t return _this11.editor.applyDelta(delta, source);\n\t\t }, source, true);\n\t\t }\n\t\t }]);\n\t\n\t\t return Quill;\n\t\t}();\n\t\n\t\tQuill.DEFAULTS = {\n\t\t bounds: null,\n\t\t formats: null,\n\t\t modules: {},\n\t\t placeholder: '',\n\t\t readOnly: false,\n\t\t scrollingContainer: null,\n\t\t strict: true,\n\t\t theme: 'default'\n\t\t};\n\t\tQuill.events = _emitter4.default.events;\n\t\tQuill.sources = _emitter4.default.sources;\n\t\t// eslint-disable-next-line no-undef\n\t\tQuill.version = false ? 'dev' : (\"1.2.0\");\n\t\n\t\tQuill.imports = {\n\t\t 'delta': _quillDelta2.default,\n\t\t 'parchment': _parchment2.default,\n\t\t 'core/module': _module2.default,\n\t\t 'core/theme': _theme2.default\n\t\t};\n\t\n\t\tfunction expandConfig(container, userConfig) {\n\t\t userConfig = (0, _extend2.default)(true, {\n\t\t container: container,\n\t\t modules: {\n\t\t clipboard: true,\n\t\t keyboard: true,\n\t\t history: true\n\t\t }\n\t\t }, userConfig);\n\t\t if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n\t\t userConfig.theme = _theme2.default;\n\t\t } else {\n\t\t userConfig.theme = Quill.import('themes/' + userConfig.theme);\n\t\t if (userConfig.theme == null) {\n\t\t throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n\t\t }\n\t\t }\n\t\t var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n\t\t [themeConfig, userConfig].forEach(function (config) {\n\t\t config.modules = config.modules || {};\n\t\t Object.keys(config.modules).forEach(function (module) {\n\t\t if (config.modules[module] === true) {\n\t\t config.modules[module] = {};\n\t\t }\n\t\t });\n\t\t });\n\t\t var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n\t\t var moduleConfig = moduleNames.reduce(function (config, name) {\n\t\t var moduleClass = Quill.import('modules/' + name);\n\t\t if (moduleClass == null) {\n\t\t debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n\t\t } else {\n\t\t config[name] = moduleClass.DEFAULTS || {};\n\t\t }\n\t\t return config;\n\t\t }, {});\n\t\t // Special case toolbar shorthand\n\t\t if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n\t\t userConfig.modules.toolbar = {\n\t\t container: userConfig.modules.toolbar\n\t\t };\n\t\t }\n\t\t userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n\t\t ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n\t\t if (typeof userConfig[key] === 'string') {\n\t\t userConfig[key] = document.querySelector(userConfig[key]);\n\t\t }\n\t\t });\n\t\t userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n\t\t if (userConfig.modules[name]) {\n\t\t config[name] = userConfig.modules[name];\n\t\t }\n\t\t return config;\n\t\t }, {});\n\t\t return userConfig;\n\t\t}\n\t\n\t\t// Handle selection preservation and TEXT_CHANGE emission\n\t\t// common to modification APIs\n\t\tfunction modify(modifier, source, index, shift) {\n\t\t if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n\t\t return new _quillDelta2.default();\n\t\t }\n\t\t var range = index == null ? null : this.getSelection();\n\t\t var oldDelta = this.editor.delta;\n\t\t var change = modifier();\n\t\t if (range != null) {\n\t\t if (index === true) index = range.index;\n\t\t if (shift == null) {\n\t\t range = shiftRange(range, change, source);\n\t\t } else if (shift !== 0) {\n\t\t range = shiftRange(range, index, shift, source);\n\t\t }\n\t\t this.setSelection(range, _emitter4.default.sources.SILENT);\n\t\t }\n\t\t if (change.length() > 0) {\n\t\t var _emitter;\n\t\n\t\t var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n\t\t (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\t\t if (source !== _emitter4.default.sources.SILENT) {\n\t\t var _emitter2;\n\t\n\t\t (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n\t\t }\n\t\t }\n\t\t return change;\n\t\t}\n\t\n\t\tfunction overload(index, length, name, value, source) {\n\t\t var formats = {};\n\t\t if (typeof index.index === 'number' && typeof index.length === 'number') {\n\t\t // Allow for throwaway end (used by insertText/insertEmbed)\n\t\t if (typeof length !== 'number') {\n\t\t source = value, value = name, name = length, length = index.length, index = index.index;\n\t\t } else {\n\t\t length = index.length, index = index.index;\n\t\t }\n\t\t } else if (typeof length !== 'number') {\n\t\t source = value, value = name, name = length, length = 0;\n\t\t }\n\t\t // Handle format being object, two format name/value strings or excluded\n\t\t if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n\t\t formats = name;\n\t\t source = value;\n\t\t } else if (typeof name === 'string') {\n\t\t if (value != null) {\n\t\t formats[name] = value;\n\t\t } else {\n\t\t source = name;\n\t\t }\n\t\t }\n\t\t // Handle optional source\n\t\t source = source || _emitter4.default.sources.API;\n\t\t return [index, length, formats, source];\n\t\t}\n\t\n\t\tfunction shiftRange(range, index, length, source) {\n\t\t if (range == null) return null;\n\t\t var start = void 0,\n\t\t end = void 0;\n\t\t if (index instanceof _quillDelta2.default) {\n\t\t var _map = [range.index, range.index + range.length].map(function (pos) {\n\t\t return index.transformPosition(pos, source === _emitter4.default.sources.USER);\n\t\t });\n\t\n\t\t var _map2 = _slicedToArray(_map, 2);\n\t\n\t\t start = _map2[0];\n\t\t end = _map2[1];\n\t\t } else {\n\t\t var _map3 = [range.index, range.index + range.length].map(function (pos) {\n\t\t if (pos < index || pos === index && source !== _emitter4.default.sources.USER) return pos;\n\t\t if (length >= 0) {\n\t\t return pos + length;\n\t\t } else {\n\t\t return Math.max(index, pos + length);\n\t\t }\n\t\t });\n\t\n\t\t var _map4 = _slicedToArray(_map3, 2);\n\t\n\t\t start = _map4[0];\n\t\t end = _map4[1];\n\t\t }\n\t\t return new _selection.Range(start, end - start);\n\t\t}\n\t\n\t\texports.expandConfig = expandConfig;\n\t\texports.overload = overload;\n\t\texports.default = Quill;\n\t\n\t/***/ },\n\t/* 19 */\n\t/***/ function(module, exports) {\n\t\n\t\t'use strict';\n\t\n\t\tvar elem = document.createElement('div');\n\t\telem.classList.toggle('test-class', false);\n\t\tif (elem.classList.contains('test-class')) {\n\t\t (function () {\n\t\t var _toggle = DOMTokenList.prototype.toggle;\n\t\t DOMTokenList.prototype.toggle = function (token, force) {\n\t\t if (arguments.length > 1 && !this.contains(token) === !force) {\n\t\t return force;\n\t\t } else {\n\t\t return _toggle.call(this, token);\n\t\t }\n\t\t };\n\t\t })();\n\t\t}\n\t\n\t\tif (!String.prototype.startsWith) {\n\t\t String.prototype.startsWith = function (searchString, position) {\n\t\t position = position || 0;\n\t\t return this.substr(position, searchString.length) === searchString;\n\t\t };\n\t\t}\n\t\n\t\tif (!String.prototype.endsWith) {\n\t\t String.prototype.endsWith = function (searchString, position) {\n\t\t var subjectString = this.toString();\n\t\t if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n\t\t position = subjectString.length;\n\t\t }\n\t\t position -= searchString.length;\n\t\t var lastIndex = subjectString.indexOf(searchString, position);\n\t\t return lastIndex !== -1 && lastIndex === position;\n\t\t };\n\t\t}\n\t\n\t\tif (!Array.prototype.find) {\n\t\t Object.defineProperty(Array.prototype, \"find\", {\n\t\t value: function value(predicate) {\n\t\t if (this === null) {\n\t\t throw new TypeError('Array.prototype.find called on null or undefined');\n\t\t }\n\t\t if (typeof predicate !== 'function') {\n\t\t throw new TypeError('predicate must be a function');\n\t\t }\n\t\t var list = Object(this);\n\t\t var length = list.length >>> 0;\n\t\t var thisArg = arguments[1];\n\t\t var value;\n\t\n\t\t for (var i = 0; i < length; i++) {\n\t\t value = list[i];\n\t\t if (predicate.call(thisArg, value, i, list)) {\n\t\t return value;\n\t\t }\n\t\t }\n\t\t return undefined;\n\t\t }\n\t\t });\n\t\t}\n\t\n\t\t// Disable resizing in Firefox\n\t\tdocument.addEventListener(\"DOMContentLoaded\", function () {\n\t\t document.execCommand(\"enableObjectResizing\", false, false);\n\t\t});\n\t\n\t/***/ },\n\t/* 20 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tvar diff = __webpack_require__(21);\n\t\tvar equal = __webpack_require__(22);\n\t\tvar extend = __webpack_require__(25);\n\t\tvar op = __webpack_require__(26);\n\t\n\t\n\t\tvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\t\n\t\n\t\tvar Delta = function (ops) {\n\t\t // Assume we are given a well formed ops\n\t\t if (Array.isArray(ops)) {\n\t\t this.ops = ops;\n\t\t } else if (ops != null && Array.isArray(ops.ops)) {\n\t\t this.ops = ops.ops;\n\t\t } else {\n\t\t this.ops = [];\n\t\t }\n\t\t};\n\t\n\t\n\t\tDelta.prototype.insert = function (text, attributes) {\n\t\t var newOp = {};\n\t\t if (text.length === 0) return this;\n\t\t newOp.insert = text;\n\t\t if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n\t\t newOp.attributes = attributes;\n\t\t }\n\t\t return this.push(newOp);\n\t\t};\n\t\n\t\tDelta.prototype['delete'] = function (length) {\n\t\t if (length <= 0) return this;\n\t\t return this.push({ 'delete': length });\n\t\t};\n\t\n\t\tDelta.prototype.retain = function (length, attributes) {\n\t\t if (length <= 0) return this;\n\t\t var newOp = { retain: length };\n\t\t if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n\t\t newOp.attributes = attributes;\n\t\t }\n\t\t return this.push(newOp);\n\t\t};\n\t\n\t\tDelta.prototype.push = function (newOp) {\n\t\t var index = this.ops.length;\n\t\t var lastOp = this.ops[index - 1];\n\t\t newOp = extend(true, {}, newOp);\n\t\t if (typeof lastOp === 'object') {\n\t\t if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n\t\t this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n\t\t return this;\n\t\t }\n\t\t // Since it does not matter if we insert before or after deleting at the same index,\n\t\t // always prefer to insert first\n\t\t if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n\t\t index -= 1;\n\t\t lastOp = this.ops[index - 1];\n\t\t if (typeof lastOp !== 'object') {\n\t\t this.ops.unshift(newOp);\n\t\t return this;\n\t\t }\n\t\t }\n\t\t if (equal(newOp.attributes, lastOp.attributes)) {\n\t\t if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n\t\t this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n\t\t if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n\t\t return this;\n\t\t } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n\t\t this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n\t\t if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n\t\t return this;\n\t\t }\n\t\t }\n\t\t }\n\t\t if (index === this.ops.length) {\n\t\t this.ops.push(newOp);\n\t\t } else {\n\t\t this.ops.splice(index, 0, newOp);\n\t\t }\n\t\t return this;\n\t\t};\n\t\n\t\tDelta.prototype.filter = function (predicate) {\n\t\t return this.ops.filter(predicate);\n\t\t};\n\t\n\t\tDelta.prototype.forEach = function (predicate) {\n\t\t this.ops.forEach(predicate);\n\t\t};\n\t\n\t\tDelta.prototype.map = function (predicate) {\n\t\t return this.ops.map(predicate);\n\t\t};\n\t\n\t\tDelta.prototype.partition = function (predicate) {\n\t\t var passed = [], failed = [];\n\t\t this.forEach(function(op) {\n\t\t var target = predicate(op) ? passed : failed;\n\t\t target.push(op);\n\t\t });\n\t\t return [passed, failed];\n\t\t};\n\t\n\t\tDelta.prototype.reduce = function (predicate, initial) {\n\t\t return this.ops.reduce(predicate, initial);\n\t\t};\n\t\n\t\tDelta.prototype.chop = function () {\n\t\t var lastOp = this.ops[this.ops.length - 1];\n\t\t if (lastOp && lastOp.retain && !lastOp.attributes) {\n\t\t this.ops.pop();\n\t\t }\n\t\t return this;\n\t\t};\n\t\n\t\tDelta.prototype.length = function () {\n\t\t return this.reduce(function (length, elem) {\n\t\t return length + op.length(elem);\n\t\t }, 0);\n\t\t};\n\t\n\t\tDelta.prototype.slice = function (start, end) {\n\t\t start = start || 0;\n\t\t if (typeof end !== 'number') end = Infinity;\n\t\t var ops = [];\n\t\t var iter = op.iterator(this.ops);\n\t\t var index = 0;\n\t\t while (index < end && iter.hasNext()) {\n\t\t var nextOp;\n\t\t if (index < start) {\n\t\t nextOp = iter.next(start - index);\n\t\t } else {\n\t\t nextOp = iter.next(end - index);\n\t\t ops.push(nextOp);\n\t\t }\n\t\t index += op.length(nextOp);\n\t\t }\n\t\t return new Delta(ops);\n\t\t};\n\t\n\t\n\t\tDelta.prototype.compose = function (other) {\n\t\t var thisIter = op.iterator(this.ops);\n\t\t var otherIter = op.iterator(other.ops);\n\t\t var delta = new Delta();\n\t\t while (thisIter.hasNext() || otherIter.hasNext()) {\n\t\t if (otherIter.peekType() === 'insert') {\n\t\t delta.push(otherIter.next());\n\t\t } else if (thisIter.peekType() === 'delete') {\n\t\t delta.push(thisIter.next());\n\t\t } else {\n\t\t var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n\t\t var thisOp = thisIter.next(length);\n\t\t var otherOp = otherIter.next(length);\n\t\t if (typeof otherOp.retain === 'number') {\n\t\t var newOp = {};\n\t\t if (typeof thisOp.retain === 'number') {\n\t\t newOp.retain = length;\n\t\t } else {\n\t\t newOp.insert = thisOp.insert;\n\t\t }\n\t\t // Preserve null when composing with a retain, otherwise remove it for inserts\n\t\t var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n\t\t if (attributes) newOp.attributes = attributes;\n\t\t delta.push(newOp);\n\t\t // Other op should be delete, we could be an insert or retain\n\t\t // Insert + delete cancels out\n\t\t } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n\t\t delta.push(otherOp);\n\t\t }\n\t\t }\n\t\t }\n\t\t return delta.chop();\n\t\t};\n\t\n\t\tDelta.prototype.concat = function (other) {\n\t\t var delta = new Delta(this.ops.slice());\n\t\t if (other.ops.length > 0) {\n\t\t delta.push(other.ops[0]);\n\t\t delta.ops = delta.ops.concat(other.ops.slice(1));\n\t\t }\n\t\t return delta;\n\t\t};\n\t\n\t\tDelta.prototype.diff = function (other, index) {\n\t\t if (this.ops === other.ops) {\n\t\t return new Delta();\n\t\t }\n\t\t var strings = [this, other].map(function (delta) {\n\t\t return delta.map(function (op) {\n\t\t if (op.insert != null) {\n\t\t return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n\t\t }\n\t\t var prep = (ops === other.ops) ? 'on' : 'with';\n\t\t throw new Error('diff() called ' + prep + ' non-document');\n\t\t }).join('');\n\t\t });\n\t\t var delta = new Delta();\n\t\t var diffResult = diff(strings[0], strings[1], index);\n\t\t var thisIter = op.iterator(this.ops);\n\t\t var otherIter = op.iterator(other.ops);\n\t\t diffResult.forEach(function (component) {\n\t\t var length = component[1].length;\n\t\t while (length > 0) {\n\t\t var opLength = 0;\n\t\t switch (component[0]) {\n\t\t case diff.INSERT:\n\t\t opLength = Math.min(otherIter.peekLength(), length);\n\t\t delta.push(otherIter.next(opLength));\n\t\t break;\n\t\t case diff.DELETE:\n\t\t opLength = Math.min(length, thisIter.peekLength());\n\t\t thisIter.next(opLength);\n\t\t delta['delete'](opLength);\n\t\t break;\n\t\t case diff.EQUAL:\n\t\t opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n\t\t var thisOp = thisIter.next(opLength);\n\t\t var otherOp = otherIter.next(opLength);\n\t\t if (equal(thisOp.insert, otherOp.insert)) {\n\t\t delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n\t\t } else {\n\t\t delta.push(otherOp)['delete'](opLength);\n\t\t }\n\t\t break;\n\t\t }\n\t\t length -= opLength;\n\t\t }\n\t\t });\n\t\t return delta.chop();\n\t\t};\n\t\n\t\tDelta.prototype.eachLine = function (predicate, newline) {\n\t\t newline = newline || '\\n';\n\t\t var iter = op.iterator(this.ops);\n\t\t var line = new Delta();\n\t\t while (iter.hasNext()) {\n\t\t if (iter.peekType() !== 'insert') return;\n\t\t var thisOp = iter.peek();\n\t\t var start = op.length(thisOp) - iter.peekLength();\n\t\t var index = typeof thisOp.insert === 'string' ?\n\t\t thisOp.insert.indexOf(newline, start) - start : -1;\n\t\t if (index < 0) {\n\t\t line.push(iter.next());\n\t\t } else if (index > 0) {\n\t\t line.push(iter.next(index));\n\t\t } else {\n\t\t predicate(line, iter.next(1).attributes || {});\n\t\t line = new Delta();\n\t\t }\n\t\t }\n\t\t if (line.length() > 0) {\n\t\t predicate(line, {});\n\t\t }\n\t\t};\n\t\n\t\tDelta.prototype.transform = function (other, priority) {\n\t\t priority = !!priority;\n\t\t if (typeof other === 'number') {\n\t\t return this.transformPosition(other, priority);\n\t\t }\n\t\t var thisIter = op.iterator(this.ops);\n\t\t var otherIter = op.iterator(other.ops);\n\t\t var delta = new Delta();\n\t\t while (thisIter.hasNext() || otherIter.hasNext()) {\n\t\t if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n\t\t delta.retain(op.length(thisIter.next()));\n\t\t } else if (otherIter.peekType() === 'insert') {\n\t\t delta.push(otherIter.next());\n\t\t } else {\n\t\t var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n\t\t var thisOp = thisIter.next(length);\n\t\t var otherOp = otherIter.next(length);\n\t\t if (thisOp['delete']) {\n\t\t // Our delete either makes their delete redundant or removes their retain\n\t\t continue;\n\t\t } else if (otherOp['delete']) {\n\t\t delta.push(otherOp);\n\t\t } else {\n\t\t // We retain either their retain or insert\n\t\t delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n\t\t }\n\t\t }\n\t\t }\n\t\t return delta.chop();\n\t\t};\n\t\n\t\tDelta.prototype.transformPosition = function (index, priority) {\n\t\t priority = !!priority;\n\t\t var thisIter = op.iterator(this.ops);\n\t\t var offset = 0;\n\t\t while (thisIter.hasNext() && offset <= index) {\n\t\t var length = thisIter.peekLength();\n\t\t var nextType = thisIter.peekType();\n\t\t thisIter.next();\n\t\t if (nextType === 'delete') {\n\t\t index -= Math.min(length, index - offset);\n\t\t continue;\n\t\t } else if (nextType === 'insert' && (offset < index || !priority)) {\n\t\t index += length;\n\t\t }\n\t\t offset += length;\n\t\t }\n\t\t return index;\n\t\t};\n\t\n\t\n\t\tmodule.exports = Delta;\n\t\n\t\n\t/***/ },\n\t/* 21 */\n\t/***/ function(module, exports) {\n\t\n\t\t/**\n\t\t * This library modifies the diff-patch-match library by Neil Fraser\n\t\t * by removing the patch and match functionality and certain advanced\n\t\t * options in the diff function. The original license is as follows:\n\t\t *\n\t\t * ===\n\t\t *\n\t\t * Diff Match and Patch\n\t\t *\n\t\t * Copyright 2006 Google Inc.\n\t\t * http://code.google.com/p/google-diff-match-patch/\n\t\t *\n\t\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t\t * you may not use this file except in compliance with the License.\n\t\t * You may obtain a copy of the License at\n\t\t *\n\t\t * http://www.apache.org/licenses/LICENSE-2.0\n\t\t *\n\t\t * Unless required by applicable law or agreed to in writing, software\n\t\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t\t * See the License for the specific language governing permissions and\n\t\t * limitations under the License.\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * The data structure representing a diff is an array of tuples:\n\t\t * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n\t\t * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n\t\t */\n\t\tvar DIFF_DELETE = -1;\n\t\tvar DIFF_INSERT = 1;\n\t\tvar DIFF_EQUAL = 0;\n\t\n\t\n\t\t/**\n\t\t * Find the differences between two texts. Simplifies the problem by stripping\n\t\t * any common prefix or suffix off the texts before diffing.\n\t\t * @param {string} text1 Old string to be diffed.\n\t\t * @param {string} text2 New string to be diffed.\n\t\t * @param {Int} cursor_pos Expected edit position in text1 (optional)\n\t\t * @return {Array} Array of diff tuples.\n\t\t */\n\t\tfunction diff_main(text1, text2, cursor_pos) {\n\t\t // Check for equality (speedup).\n\t\t if (text1 == text2) {\n\t\t if (text1) {\n\t\t return [[DIFF_EQUAL, text1]];\n\t\t }\n\t\t return [];\n\t\t }\n\t\n\t\t // Check cursor_pos within bounds\n\t\t if (cursor_pos < 0 || text1.length < cursor_pos) {\n\t\t cursor_pos = null;\n\t\t }\n\t\n\t\t // Trim off common prefix (speedup).\n\t\t var commonlength = diff_commonPrefix(text1, text2);\n\t\t var commonprefix = text1.substring(0, commonlength);\n\t\t text1 = text1.substring(commonlength);\n\t\t text2 = text2.substring(commonlength);\n\t\n\t\t // Trim off common suffix (speedup).\n\t\t commonlength = diff_commonSuffix(text1, text2);\n\t\t var commonsuffix = text1.substring(text1.length - commonlength);\n\t\t text1 = text1.substring(0, text1.length - commonlength);\n\t\t text2 = text2.substring(0, text2.length - commonlength);\n\t\n\t\t // Compute the diff on the middle block.\n\t\t var diffs = diff_compute_(text1, text2);\n\t\n\t\t // Restore the prefix and suffix.\n\t\t if (commonprefix) {\n\t\t diffs.unshift([DIFF_EQUAL, commonprefix]);\n\t\t }\n\t\t if (commonsuffix) {\n\t\t diffs.push([DIFF_EQUAL, commonsuffix]);\n\t\t }\n\t\t diff_cleanupMerge(diffs);\n\t\t if (cursor_pos != null) {\n\t\t diffs = fix_cursor(diffs, cursor_pos);\n\t\t }\n\t\t return diffs;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Find the differences between two texts. Assumes that the texts do not\n\t\t * have any common prefix or suffix.\n\t\t * @param {string} text1 Old string to be diffed.\n\t\t * @param {string} text2 New string to be diffed.\n\t\t * @return {Array} Array of diff tuples.\n\t\t */\n\t\tfunction diff_compute_(text1, text2) {\n\t\t var diffs;\n\t\n\t\t if (!text1) {\n\t\t // Just add some text (speedup).\n\t\t return [[DIFF_INSERT, text2]];\n\t\t }\n\t\n\t\t if (!text2) {\n\t\t // Just delete some text (speedup).\n\t\t return [[DIFF_DELETE, text1]];\n\t\t }\n\t\n\t\t var longtext = text1.length > text2.length ? text1 : text2;\n\t\t var shorttext = text1.length > text2.length ? text2 : text1;\n\t\t var i = longtext.indexOf(shorttext);\n\t\t if (i != -1) {\n\t\t // Shorter text is inside the longer text (speedup).\n\t\t diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n\t\t [DIFF_EQUAL, shorttext],\n\t\t [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n\t\t // Swap insertions for deletions if diff is reversed.\n\t\t if (text1.length > text2.length) {\n\t\t diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n\t\t }\n\t\t return diffs;\n\t\t }\n\t\n\t\t if (shorttext.length == 1) {\n\t\t // Single character string.\n\t\t // After the previous speedup, the character can't be an equality.\n\t\t return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n\t\t }\n\t\n\t\t // Check to see if the problem can be split in two.\n\t\t var hm = diff_halfMatch_(text1, text2);\n\t\t if (hm) {\n\t\t // A half-match was found, sort out the return data.\n\t\t var text1_a = hm[0];\n\t\t var text1_b = hm[1];\n\t\t var text2_a = hm[2];\n\t\t var text2_b = hm[3];\n\t\t var mid_common = hm[4];\n\t\t // Send both pairs off for separate processing.\n\t\t var diffs_a = diff_main(text1_a, text2_a);\n\t\t var diffs_b = diff_main(text1_b, text2_b);\n\t\t // Merge the results.\n\t\t return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n\t\t }\n\t\n\t\t return diff_bisect_(text1, text2);\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Find the 'middle snake' of a diff, split the problem in two\n\t\t * and return the recursively constructed diff.\n\t\t * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n\t\t * @param {string} text1 Old string to be diffed.\n\t\t * @param {string} text2 New string to be diffed.\n\t\t * @return {Array} Array of diff tuples.\n\t\t * @private\n\t\t */\n\t\tfunction diff_bisect_(text1, text2) {\n\t\t // Cache the text lengths to prevent multiple calls.\n\t\t var text1_length = text1.length;\n\t\t var text2_length = text2.length;\n\t\t var max_d = Math.ceil((text1_length + text2_length) / 2);\n\t\t var v_offset = max_d;\n\t\t var v_length = 2 * max_d;\n\t\t var v1 = new Array(v_length);\n\t\t var v2 = new Array(v_length);\n\t\t // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n\t\t // integers and undefined.\n\t\t for (var x = 0; x < v_length; x++) {\n\t\t v1[x] = -1;\n\t\t v2[x] = -1;\n\t\t }\n\t\t v1[v_offset + 1] = 0;\n\t\t v2[v_offset + 1] = 0;\n\t\t var delta = text1_length - text2_length;\n\t\t // If the total number of characters is odd, then the front path will collide\n\t\t // with the reverse path.\n\t\t var front = (delta % 2 != 0);\n\t\t // Offsets for start and end of k loop.\n\t\t // Prevents mapping of space beyond the grid.\n\t\t var k1start = 0;\n\t\t var k1end = 0;\n\t\t var k2start = 0;\n\t\t var k2end = 0;\n\t\t for (var d = 0; d < max_d; d++) {\n\t\t // Walk the front path one step.\n\t\t for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n\t\t var k1_offset = v_offset + k1;\n\t\t var x1;\n\t\t if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n\t\t x1 = v1[k1_offset + 1];\n\t\t } else {\n\t\t x1 = v1[k1_offset - 1] + 1;\n\t\t }\n\t\t var y1 = x1 - k1;\n\t\t while (x1 < text1_length && y1 < text2_length &&\n\t\t text1.charAt(x1) == text2.charAt(y1)) {\n\t\t x1++;\n\t\t y1++;\n\t\t }\n\t\t v1[k1_offset] = x1;\n\t\t if (x1 > text1_length) {\n\t\t // Ran off the right of the graph.\n\t\t k1end += 2;\n\t\t } else if (y1 > text2_length) {\n\t\t // Ran off the bottom of the graph.\n\t\t k1start += 2;\n\t\t } else if (front) {\n\t\t var k2_offset = v_offset + delta - k1;\n\t\t if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n\t\t // Mirror x2 onto top-left coordinate system.\n\t\t var x2 = text1_length - v2[k2_offset];\n\t\t if (x1 >= x2) {\n\t\t // Overlap detected.\n\t\t return diff_bisectSplit_(text1, text2, x1, y1);\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t // Walk the reverse path one step.\n\t\t for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n\t\t var k2_offset = v_offset + k2;\n\t\t var x2;\n\t\t if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n\t\t x2 = v2[k2_offset + 1];\n\t\t } else {\n\t\t x2 = v2[k2_offset - 1] + 1;\n\t\t }\n\t\t var y2 = x2 - k2;\n\t\t while (x2 < text1_length && y2 < text2_length &&\n\t\t text1.charAt(text1_length - x2 - 1) ==\n\t\t text2.charAt(text2_length - y2 - 1)) {\n\t\t x2++;\n\t\t y2++;\n\t\t }\n\t\t v2[k2_offset] = x2;\n\t\t if (x2 > text1_length) {\n\t\t // Ran off the left of the graph.\n\t\t k2end += 2;\n\t\t } else if (y2 > text2_length) {\n\t\t // Ran off the top of the graph.\n\t\t k2start += 2;\n\t\t } else if (!front) {\n\t\t var k1_offset = v_offset + delta - k2;\n\t\t if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n\t\t var x1 = v1[k1_offset];\n\t\t var y1 = v_offset + x1 - k1_offset;\n\t\t // Mirror x2 onto top-left coordinate system.\n\t\t x2 = text1_length - x2;\n\t\t if (x1 >= x2) {\n\t\t // Overlap detected.\n\t\t return diff_bisectSplit_(text1, text2, x1, y1);\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t // Diff took too long and hit the deadline or\n\t\t // number of diffs equals number of characters, no commonality at all.\n\t\t return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Given the location of the 'middle snake', split the diff in two parts\n\t\t * and recurse.\n\t\t * @param {string} text1 Old string to be diffed.\n\t\t * @param {string} text2 New string to be diffed.\n\t\t * @param {number} x Index of split point in text1.\n\t\t * @param {number} y Index of split point in text2.\n\t\t * @return {Array} Array of diff tuples.\n\t\t */\n\t\tfunction diff_bisectSplit_(text1, text2, x, y) {\n\t\t var text1a = text1.substring(0, x);\n\t\t var text2a = text2.substring(0, y);\n\t\t var text1b = text1.substring(x);\n\t\t var text2b = text2.substring(y);\n\t\n\t\t // Compute both diffs serially.\n\t\t var diffs = diff_main(text1a, text2a);\n\t\t var diffsb = diff_main(text1b, text2b);\n\t\n\t\t return diffs.concat(diffsb);\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Determine the common prefix of two strings.\n\t\t * @param {string} text1 First string.\n\t\t * @param {string} text2 Second string.\n\t\t * @return {number} The number of characters common to the start of each\n\t\t * string.\n\t\t */\n\t\tfunction diff_commonPrefix(text1, text2) {\n\t\t // Quick check for common null cases.\n\t\t if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n\t\t return 0;\n\t\t }\n\t\t // Binary search.\n\t\t // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\t\t var pointermin = 0;\n\t\t var pointermax = Math.min(text1.length, text2.length);\n\t\t var pointermid = pointermax;\n\t\t var pointerstart = 0;\n\t\t while (pointermin < pointermid) {\n\t\t if (text1.substring(pointerstart, pointermid) ==\n\t\t text2.substring(pointerstart, pointermid)) {\n\t\t pointermin = pointermid;\n\t\t pointerstart = pointermin;\n\t\t } else {\n\t\t pointermax = pointermid;\n\t\t }\n\t\t pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n\t\t }\n\t\t return pointermid;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Determine the common suffix of two strings.\n\t\t * @param {string} text1 First string.\n\t\t * @param {string} text2 Second string.\n\t\t * @return {number} The number of characters common to the end of each string.\n\t\t */\n\t\tfunction diff_commonSuffix(text1, text2) {\n\t\t // Quick check for common null cases.\n\t\t if (!text1 || !text2 ||\n\t\t text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n\t\t return 0;\n\t\t }\n\t\t // Binary search.\n\t\t // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\t\t var pointermin = 0;\n\t\t var pointermax = Math.min(text1.length, text2.length);\n\t\t var pointermid = pointermax;\n\t\t var pointerend = 0;\n\t\t while (pointermin < pointermid) {\n\t\t if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n\t\t text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n\t\t pointermin = pointermid;\n\t\t pointerend = pointermin;\n\t\t } else {\n\t\t pointermax = pointermid;\n\t\t }\n\t\t pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n\t\t }\n\t\t return pointermid;\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Do the two texts share a substring which is at least half the length of the\n\t\t * longer text?\n\t\t * This speedup can produce non-minimal diffs.\n\t\t * @param {string} text1 First string.\n\t\t * @param {string} text2 Second string.\n\t\t * @return {Array.} Five element Array, containing the prefix of\n\t\t * text1, the suffix of text1, the prefix of text2, the suffix of\n\t\t * text2 and the common middle. Or null if there was no match.\n\t\t */\n\t\tfunction diff_halfMatch_(text1, text2) {\n\t\t var longtext = text1.length > text2.length ? text1 : text2;\n\t\t var shorttext = text1.length > text2.length ? text2 : text1;\n\t\t if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n\t\t return null; // Pointless.\n\t\t }\n\t\n\t\t /**\n\t\t * Does a substring of shorttext exist within longtext such that the substring\n\t\t * is at least half the length of longtext?\n\t\t * Closure, but does not reference any external variables.\n\t\t * @param {string} longtext Longer string.\n\t\t * @param {string} shorttext Shorter string.\n\t\t * @param {number} i Start index of quarter length substring within longtext.\n\t\t * @return {Array.} Five element Array, containing the prefix of\n\t\t * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n\t\t * of shorttext and the common middle. Or null if there was no match.\n\t\t * @private\n\t\t */\n\t\t function diff_halfMatchI_(longtext, shorttext, i) {\n\t\t // Start with a 1/4 length substring at position i as a seed.\n\t\t var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n\t\t var j = -1;\n\t\t var best_common = '';\n\t\t var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n\t\t while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n\t\t var prefixLength = diff_commonPrefix(longtext.substring(i),\n\t\t shorttext.substring(j));\n\t\t var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n\t\t shorttext.substring(0, j));\n\t\t if (best_common.length < suffixLength + prefixLength) {\n\t\t best_common = shorttext.substring(j - suffixLength, j) +\n\t\t shorttext.substring(j, j + prefixLength);\n\t\t best_longtext_a = longtext.substring(0, i - suffixLength);\n\t\t best_longtext_b = longtext.substring(i + prefixLength);\n\t\t best_shorttext_a = shorttext.substring(0, j - suffixLength);\n\t\t best_shorttext_b = shorttext.substring(j + prefixLength);\n\t\t }\n\t\t }\n\t\t if (best_common.length * 2 >= longtext.length) {\n\t\t return [best_longtext_a, best_longtext_b,\n\t\t best_shorttext_a, best_shorttext_b, best_common];\n\t\t } else {\n\t\t return null;\n\t\t }\n\t\t }\n\t\n\t\t // First check if the second quarter is the seed for a half-match.\n\t\t var hm1 = diff_halfMatchI_(longtext, shorttext,\n\t\t Math.ceil(longtext.length / 4));\n\t\t // Check again based on the third quarter.\n\t\t var hm2 = diff_halfMatchI_(longtext, shorttext,\n\t\t Math.ceil(longtext.length / 2));\n\t\t var hm;\n\t\t if (!hm1 && !hm2) {\n\t\t return null;\n\t\t } else if (!hm2) {\n\t\t hm = hm1;\n\t\t } else if (!hm1) {\n\t\t hm = hm2;\n\t\t } else {\n\t\t // Both matched. Select the longest.\n\t\t hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n\t\t }\n\t\n\t\t // A half-match was found, sort out the return data.\n\t\t var text1_a, text1_b, text2_a, text2_b;\n\t\t if (text1.length > text2.length) {\n\t\t text1_a = hm[0];\n\t\t text1_b = hm[1];\n\t\t text2_a = hm[2];\n\t\t text2_b = hm[3];\n\t\t } else {\n\t\t text2_a = hm[0];\n\t\t text2_b = hm[1];\n\t\t text1_a = hm[2];\n\t\t text1_b = hm[3];\n\t\t }\n\t\t var mid_common = hm[4];\n\t\t return [text1_a, text1_b, text2_a, text2_b, mid_common];\n\t\t};\n\t\n\t\n\t\t/**\n\t\t * Reorder and merge like edit sections. Merge equalities.\n\t\t * Any edit section can move as long as it doesn't cross an equality.\n\t\t * @param {Array} diffs Array of diff tuples.\n\t\t */\n\t\tfunction diff_cleanupMerge(diffs) {\n\t\t diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n\t\t var pointer = 0;\n\t\t var count_delete = 0;\n\t\t var count_insert = 0;\n\t\t var text_delete = '';\n\t\t var text_insert = '';\n\t\t var commonlength;\n\t\t while (pointer < diffs.length) {\n\t\t switch (diffs[pointer][0]) {\n\t\t case DIFF_INSERT:\n\t\t count_insert++;\n\t\t text_insert += diffs[pointer][1];\n\t\t pointer++;\n\t\t break;\n\t\t case DIFF_DELETE:\n\t\t count_delete++;\n\t\t text_delete += diffs[pointer][1];\n\t\t pointer++;\n\t\t break;\n\t\t case DIFF_EQUAL:\n\t\t // Upon reaching an equality, check for prior redundancies.\n\t\t if (count_delete + count_insert > 1) {\n\t\t if (count_delete !== 0 && count_insert !== 0) {\n\t\t // Factor out any common prefixies.\n\t\t commonlength = diff_commonPrefix(text_insert, text_delete);\n\t\t if (commonlength !== 0) {\n\t\t if ((pointer - count_delete - count_insert) > 0 &&\n\t\t diffs[pointer - count_delete - count_insert - 1][0] ==\n\t\t DIFF_EQUAL) {\n\t\t diffs[pointer - count_delete - count_insert - 1][1] +=\n\t\t text_insert.substring(0, commonlength);\n\t\t } else {\n\t\t diffs.splice(0, 0, [DIFF_EQUAL,\n\t\t text_insert.substring(0, commonlength)]);\n\t\t pointer++;\n\t\t }\n\t\t text_insert = text_insert.substring(commonlength);\n\t\t text_delete = text_delete.substring(commonlength);\n\t\t }\n\t\t // Factor out any common suffixies.\n\t\t commonlength = diff_commonSuffix(text_insert, text_delete);\n\t\t if (commonlength !== 0) {\n\t\t diffs[pointer][1] = text_insert.substring(text_insert.length -\n\t\t commonlength) + diffs[pointer][1];\n\t\t text_insert = text_insert.substring(0, text_insert.length -\n\t\t commonlength);\n\t\t text_delete = text_delete.substring(0, text_delete.length -\n\t\t commonlength);\n\t\t }\n\t\t }\n\t\t // Delete the offending records and add the merged ones.\n\t\t if (count_delete === 0) {\n\t\t diffs.splice(pointer - count_insert,\n\t\t count_delete + count_insert, [DIFF_INSERT, text_insert]);\n\t\t } else if (count_insert === 0) {\n\t\t diffs.splice(pointer - count_delete,\n\t\t count_delete + count_insert, [DIFF_DELETE, text_delete]);\n\t\t } else {\n\t\t diffs.splice(pointer - count_delete - count_insert,\n\t\t count_delete + count_insert, [DIFF_DELETE, text_delete],\n\t\t [DIFF_INSERT, text_insert]);\n\t\t }\n\t\t pointer = pointer - count_delete - count_insert +\n\t\t (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n\t\t } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n\t\t // Merge this equality with the previous one.\n\t\t diffs[pointer - 1][1] += diffs[pointer][1];\n\t\t diffs.splice(pointer, 1);\n\t\t } else {\n\t\t pointer++;\n\t\t }\n\t\t count_insert = 0;\n\t\t count_delete = 0;\n\t\t text_delete = '';\n\t\t text_insert = '';\n\t\t break;\n\t\t }\n\t\t }\n\t\t if (diffs[diffs.length - 1][1] === '') {\n\t\t diffs.pop(); // Remove the dummy entry at the end.\n\t\t }\n\t\n\t\t // Second pass: look for single edits surrounded on both sides by equalities\n\t\t // which can be shifted sideways to eliminate an equality.\n\t\t // e.g: ABAC -> ABAC\n\t\t var changes = false;\n\t\t pointer = 1;\n\t\t // Intentionally ignore the first and last element (don't need checking).\n\t\t while (pointer < diffs.length - 1) {\n\t\t if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n\t\t diffs[pointer + 1][0] == DIFF_EQUAL) {\n\t\t // This is a single edit surrounded by equalities.\n\t\t if (diffs[pointer][1].substring(diffs[pointer][1].length -\n\t\t diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n\t\t // Shift the edit over the previous equality.\n\t\t diffs[pointer][1] = diffs[pointer - 1][1] +\n\t\t diffs[pointer][1].substring(0, diffs[pointer][1].length -\n\t\t diffs[pointer - 1][1].length);\n\t\t diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n\t\t diffs.splice(pointer - 1, 1);\n\t\t changes = true;\n\t\t } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n\t\t diffs[pointer + 1][1]) {\n\t\t // Shift the edit over the next equality.\n\t\t diffs[pointer - 1][1] += diffs[pointer + 1][1];\n\t\t diffs[pointer][1] =\n\t\t diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n\t\t diffs[pointer + 1][1];\n\t\t diffs.splice(pointer + 1, 1);\n\t\t changes = true;\n\t\t }\n\t\t }\n\t\t pointer++;\n\t\t }\n\t\t // If shifts were made, the diff needs reordering and another shift sweep.\n\t\t if (changes) {\n\t\t diff_cleanupMerge(diffs);\n\t\t }\n\t\t};\n\t\n\t\n\t\tvar diff = diff_main;\n\t\tdiff.INSERT = DIFF_INSERT;\n\t\tdiff.DELETE = DIFF_DELETE;\n\t\tdiff.EQUAL = DIFF_EQUAL;\n\t\n\t\tmodule.exports = diff;\n\t\n\t\t/*\n\t\t * Modify a diff such that the cursor position points to the start of a change:\n\t\t * E.g.\n\t\t * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n\t\t * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n\t\t * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n\t\t * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n\t\t *\n\t\t * @param {Array} diffs Array of diff tuples\n\t\t * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n\t\t * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n\t\t */\n\t\tfunction cursor_normalize_diff (diffs, cursor_pos) {\n\t\t if (cursor_pos === 0) {\n\t\t return [DIFF_EQUAL, diffs];\n\t\t }\n\t\t for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n\t\t var d = diffs[i];\n\t\t if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n\t\t var next_pos = current_pos + d[1].length;\n\t\t if (cursor_pos === next_pos) {\n\t\t return [i + 1, diffs];\n\t\t } else if (cursor_pos < next_pos) {\n\t\t // copy to prevent side effects\n\t\t diffs = diffs.slice();\n\t\t // split d into two diff changes\n\t\t var split_pos = cursor_pos - current_pos;\n\t\t var d_left = [d[0], d[1].slice(0, split_pos)];\n\t\t var d_right = [d[0], d[1].slice(split_pos)];\n\t\t diffs.splice(i, 1, d_left, d_right);\n\t\t return [i + 1, diffs];\n\t\t } else {\n\t\t current_pos = next_pos;\n\t\t }\n\t\t }\n\t\t }\n\t\t throw new Error('cursor_pos is out of bounds!')\n\t\t}\n\t\n\t\t/*\n\t\t * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n\t\t *\n\t\t * Case 1)\n\t\t * Check if a naive shift is possible:\n\t\t * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n\t\t * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n\t\t * Case 2)\n\t\t * Check if the following shifts are possible:\n\t\t * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n\t\t * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n\t\t * ^ ^\n\t\t * d d_next\n\t\t *\n\t\t * @param {Array} diffs Array of diff tuples\n\t\t * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n\t\t * @return {Array} Array of diff tuples\n\t\t */\n\t\tfunction fix_cursor (diffs, cursor_pos) {\n\t\t var norm = cursor_normalize_diff(diffs, cursor_pos);\n\t\t var ndiffs = norm[1];\n\t\t var cursor_pointer = norm[0];\n\t\t var d = ndiffs[cursor_pointer];\n\t\t var d_next = ndiffs[cursor_pointer + 1];\n\t\n\t\t if (d == null) {\n\t\t // Text was deleted from end of original string,\n\t\t // cursor is now out of bounds in new string\n\t\t return diffs;\n\t\t } else if (d[0] !== DIFF_EQUAL) {\n\t\t // A modification happened at the cursor location.\n\t\t // This is the expected outcome, so we can return the original diff.\n\t\t return diffs;\n\t\t } else {\n\t\t if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n\t\t // Case 1)\n\t\t // It is possible to perform a naive shift\n\t\t ndiffs.splice(cursor_pointer, 2, d_next, d)\n\t\t return merge_tuples(ndiffs, cursor_pointer, 2)\n\t\t } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n\t\t // Case 2)\n\t\t // d[1] is a prefix of d_next[1]\n\t\t // We can assume that d_next[0] !== 0, since d[0] === 0\n\t\t // Shift edit locations..\n\t\t ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n\t\t var suffix = d_next[1].slice(d[1].length);\n\t\t if (suffix.length > 0) {\n\t\t ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n\t\t }\n\t\t return merge_tuples(ndiffs, cursor_pointer, 3)\n\t\t } else {\n\t\t // Not possible to perform any modification\n\t\t return diffs;\n\t\t }\n\t\t }\n\t\n\t\t}\n\t\n\t\t/*\n\t\t * Try to merge tuples with their neigbors in a given range.\n\t\t * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n\t\t *\n\t\t * @param {Array} diffs Array of diff tuples.\n\t\t * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n\t\t * @param {Int} length Number of consecutive elements to check.\n\t\t * @return {Array} Array of merged diff tuples.\n\t\t */\n\t\tfunction merge_tuples (diffs, start, length) {\n\t\t // Check from (start-1) to (start+length).\n\t\t for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n\t\t if (i + 1 < diffs.length) {\n\t\t var left_d = diffs[i];\n\t\t var right_d = diffs[i+1];\n\t\t if (left_d[0] === right_d[1]) {\n\t\t diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n\t\t }\n\t\t }\n\t\t }\n\t\t return diffs;\n\t\t}\n\t\n\t\n\t/***/ },\n\t/* 22 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tvar pSlice = Array.prototype.slice;\n\t\tvar objectKeys = __webpack_require__(23);\n\t\tvar isArguments = __webpack_require__(24);\n\t\n\t\tvar deepEqual = module.exports = function (actual, expected, opts) {\n\t\t if (!opts) opts = {};\n\t\t // 7.1. All identical values are equivalent, as determined by ===.\n\t\t if (actual === expected) {\n\t\t return true;\n\t\n\t\t } else if (actual instanceof Date && expected instanceof Date) {\n\t\t return actual.getTime() === expected.getTime();\n\t\n\t\t // 7.3. Other pairs that do not both pass typeof value == 'object',\n\t\t // equivalence is determined by ==.\n\t\t } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n\t\t return opts.strict ? actual === expected : actual == expected;\n\t\n\t\t // 7.4. For all other Object pairs, including Array objects, equivalence is\n\t\t // determined by having the same number of owned properties (as verified\n\t\t // with Object.prototype.hasOwnProperty.call), the same set of keys\n\t\t // (although not necessarily the same order), equivalent values for every\n\t\t // corresponding key, and an identical 'prototype' property. Note: this\n\t\t // accounts for both named and indexed properties on Arrays.\n\t\t } else {\n\t\t return objEquiv(actual, expected, opts);\n\t\t }\n\t\t}\n\t\n\t\tfunction isUndefinedOrNull(value) {\n\t\t return value === null || value === undefined;\n\t\t}\n\t\n\t\tfunction isBuffer (x) {\n\t\t if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n\t\t if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n\t\t return false;\n\t\t }\n\t\t if (x.length > 0 && typeof x[0] !== 'number') return false;\n\t\t return true;\n\t\t}\n\t\n\t\tfunction objEquiv(a, b, opts) {\n\t\t var i, key;\n\t\t if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n\t\t return false;\n\t\t // an identical 'prototype' property.\n\t\t if (a.prototype !== b.prototype) return false;\n\t\t //~~~I've managed to break Object.keys through screwy arguments passing.\n\t\t // Converting to array solves the problem.\n\t\t if (isArguments(a)) {\n\t\t if (!isArguments(b)) {\n\t\t return false;\n\t\t }\n\t\t a = pSlice.call(a);\n\t\t b = pSlice.call(b);\n\t\t return deepEqual(a, b, opts);\n\t\t }\n\t\t if (isBuffer(a)) {\n\t\t if (!isBuffer(b)) {\n\t\t return false;\n\t\t }\n\t\t if (a.length !== b.length) return false;\n\t\t for (i = 0; i < a.length; i++) {\n\t\t if (a[i] !== b[i]) return false;\n\t\t }\n\t\t return true;\n\t\t }\n\t\t try {\n\t\t var ka = objectKeys(a),\n\t\t kb = objectKeys(b);\n\t\t } catch (e) {//happens when one is a string literal and the other isn't\n\t\t return false;\n\t\t }\n\t\t // having the same number of owned properties (keys incorporates\n\t\t // hasOwnProperty)\n\t\t if (ka.length != kb.length)\n\t\t return false;\n\t\t //the same set of keys (although not necessarily the same order),\n\t\t ka.sort();\n\t\t kb.sort();\n\t\t //~~~cheap key test\n\t\t for (i = ka.length - 1; i >= 0; i--) {\n\t\t if (ka[i] != kb[i])\n\t\t return false;\n\t\t }\n\t\t //equivalent values for every corresponding key, and\n\t\t //~~~possibly expensive deep test\n\t\t for (i = ka.length - 1; i >= 0; i--) {\n\t\t key = ka[i];\n\t\t if (!deepEqual(a[key], b[key], opts)) return false;\n\t\t }\n\t\t return typeof a === typeof b;\n\t\t}\n\t\n\t\n\t/***/ },\n\t/* 23 */\n\t/***/ function(module, exports) {\n\t\n\t\texports = module.exports = typeof Object.keys === 'function'\n\t\t ? Object.keys : shim;\n\t\n\t\texports.shim = shim;\n\t\tfunction shim (obj) {\n\t\t var keys = [];\n\t\t for (var key in obj) keys.push(key);\n\t\t return keys;\n\t\t}\n\t\n\t\n\t/***/ },\n\t/* 24 */\n\t/***/ function(module, exports) {\n\t\n\t\tvar supportsArgumentsClass = (function(){\n\t\t return Object.prototype.toString.call(arguments)\n\t\t})() == '[object Arguments]';\n\t\n\t\texports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\t\n\t\texports.supported = supported;\n\t\tfunction supported(object) {\n\t\t return Object.prototype.toString.call(object) == '[object Arguments]';\n\t\t};\n\t\n\t\texports.unsupported = unsupported;\n\t\tfunction unsupported(object){\n\t\t return object &&\n\t\t typeof object == 'object' &&\n\t\t typeof object.length == 'number' &&\n\t\t Object.prototype.hasOwnProperty.call(object, 'callee') &&\n\t\t !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n\t\t false;\n\t\t};\n\t\n\t\n\t/***/ },\n\t/* 25 */\n\t/***/ function(module, exports) {\n\t\n\t\t'use strict';\n\t\n\t\tvar hasOwn = Object.prototype.hasOwnProperty;\n\t\tvar toStr = Object.prototype.toString;\n\t\n\t\tvar isArray = function isArray(arr) {\n\t\t\tif (typeof Array.isArray === 'function') {\n\t\t\t\treturn Array.isArray(arr);\n\t\t\t}\n\t\n\t\t\treturn toStr.call(arr) === '[object Array]';\n\t\t};\n\t\n\t\tvar isPlainObject = function isPlainObject(obj) {\n\t\t\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\t\t\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t\t\t// Not own constructor property must be Object\n\t\t\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t\t// if last one is own, then all properties are own.\n\t\t\tvar key;\n\t\t\tfor (key in obj) {/**/}\n\t\n\t\t\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n\t\t};\n\t\n\t\tmodule.exports = function extend() {\n\t\t\tvar options, name, src, copy, copyIsArray, clone,\n\t\t\t\ttarget = arguments[0],\n\t\t\t\ti = 1,\n\t\t\t\tlength = arguments.length,\n\t\t\t\tdeep = false;\n\t\n\t\t\t// Handle a deep copy situation\n\t\t\tif (typeof target === 'boolean') {\n\t\t\t\tdeep = target;\n\t\t\t\ttarget = arguments[1] || {};\n\t\t\t\t// skip the boolean and the target\n\t\t\t\ti = 2;\n\t\t\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\t\t\ttarget = {};\n\t\t\t}\n\t\n\t\t\tfor (; i < length; ++i) {\n\t\t\t\toptions = arguments[i];\n\t\t\t\t// Only deal with non-null/undefined values\n\t\t\t\tif (options != null) {\n\t\t\t\t\t// Extend the base object\n\t\t\t\t\tfor (name in options) {\n\t\t\t\t\t\tsrc = target[name];\n\t\t\t\t\t\tcopy = options[name];\n\t\n\t\t\t\t\t\t// Prevent never-ending loop\n\t\t\t\t\t\tif (target !== copy) {\n\t\t\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\t\n\t\t\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Return the modified object\n\t\t\treturn target;\n\t\t};\n\t\n\t\n\t\n\t/***/ },\n\t/* 26 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\tvar equal = __webpack_require__(22);\n\t\tvar extend = __webpack_require__(25);\n\t\n\t\n\t\tvar lib = {\n\t\t attributes: {\n\t\t compose: function (a, b, keepNull) {\n\t\t if (typeof a !== 'object') a = {};\n\t\t if (typeof b !== 'object') b = {};\n\t\t var attributes = extend(true, {}, b);\n\t\t if (!keepNull) {\n\t\t attributes = Object.keys(attributes).reduce(function (copy, key) {\n\t\t if (attributes[key] != null) {\n\t\t copy[key] = attributes[key];\n\t\t }\n\t\t return copy;\n\t\t }, {});\n\t\t }\n\t\t for (var key in a) {\n\t\t if (a[key] !== undefined && b[key] === undefined) {\n\t\t attributes[key] = a[key];\n\t\t }\n\t\t }\n\t\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t\t },\n\t\n\t\t diff: function(a, b) {\n\t\t if (typeof a !== 'object') a = {};\n\t\t if (typeof b !== 'object') b = {};\n\t\t var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n\t\t if (!equal(a[key], b[key])) {\n\t\t attributes[key] = b[key] === undefined ? null : b[key];\n\t\t }\n\t\t return attributes;\n\t\t }, {});\n\t\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t\t },\n\t\n\t\t transform: function (a, b, priority) {\n\t\t if (typeof a !== 'object') return b;\n\t\t if (typeof b !== 'object') return undefined;\n\t\t if (!priority) return b; // b simply overwrites us without priority\n\t\t var attributes = Object.keys(b).reduce(function (attributes, key) {\n\t\t if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n\t\t return attributes;\n\t\t }, {});\n\t\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t\t }\n\t\t },\n\t\n\t\t iterator: function (ops) {\n\t\t return new Iterator(ops);\n\t\t },\n\t\n\t\t length: function (op) {\n\t\t if (typeof op['delete'] === 'number') {\n\t\t return op['delete'];\n\t\t } else if (typeof op.retain === 'number') {\n\t\t return op.retain;\n\t\t } else {\n\t\t return typeof op.insert === 'string' ? op.insert.length : 1;\n\t\t }\n\t\t }\n\t\t};\n\t\n\t\n\t\tfunction Iterator(ops) {\n\t\t this.ops = ops;\n\t\t this.index = 0;\n\t\t this.offset = 0;\n\t\t};\n\t\n\t\tIterator.prototype.hasNext = function () {\n\t\t return this.peekLength() < Infinity;\n\t\t};\n\t\n\t\tIterator.prototype.next = function (length) {\n\t\t if (!length) length = Infinity;\n\t\t var nextOp = this.ops[this.index];\n\t\t if (nextOp) {\n\t\t var offset = this.offset;\n\t\t var opLength = lib.length(nextOp)\n\t\t if (length >= opLength - offset) {\n\t\t length = opLength - offset;\n\t\t this.index += 1;\n\t\t this.offset = 0;\n\t\t } else {\n\t\t this.offset += length;\n\t\t }\n\t\t if (typeof nextOp['delete'] === 'number') {\n\t\t return { 'delete': length };\n\t\t } else {\n\t\t var retOp = {};\n\t\t if (nextOp.attributes) {\n\t\t retOp.attributes = nextOp.attributes;\n\t\t }\n\t\t if (typeof nextOp.retain === 'number') {\n\t\t retOp.retain = length;\n\t\t } else if (typeof nextOp.insert === 'string') {\n\t\t retOp.insert = nextOp.insert.substr(offset, length);\n\t\t } else {\n\t\t // offset should === 0, length should === 1\n\t\t retOp.insert = nextOp.insert;\n\t\t }\n\t\t return retOp;\n\t\t }\n\t\t } else {\n\t\t return { retain: Infinity };\n\t\t }\n\t\t};\n\t\n\t\tIterator.prototype.peek = function () {\n\t\t return this.ops[this.index];\n\t\t};\n\t\n\t\tIterator.prototype.peekLength = function () {\n\t\t if (this.ops[this.index]) {\n\t\t // Should never return 0 if our index is being managed correctly\n\t\t return lib.length(this.ops[this.index]) - this.offset;\n\t\t } else {\n\t\t return Infinity;\n\t\t }\n\t\t};\n\t\n\t\tIterator.prototype.peekType = function () {\n\t\t if (this.ops[this.index]) {\n\t\t if (typeof this.ops[this.index]['delete'] === 'number') {\n\t\t return 'delete';\n\t\t } else if (typeof this.ops[this.index].retain === 'number') {\n\t\t return 'retain';\n\t\t } else {\n\t\t return 'insert';\n\t\t }\n\t\t }\n\t\t return 'retain';\n\t\t};\n\t\n\t\n\t\tmodule.exports = lib;\n\t\n\t\n\t/***/ },\n\t/* 27 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _quillDelta = __webpack_require__(20);\n\t\n\t\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\t\tvar _op = __webpack_require__(26);\n\t\n\t\tvar _op2 = _interopRequireDefault(_op);\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _code = __webpack_require__(28);\n\t\n\t\tvar _code2 = _interopRequireDefault(_code);\n\t\n\t\tvar _cursor = __webpack_require__(34);\n\t\n\t\tvar _cursor2 = _interopRequireDefault(_cursor);\n\t\n\t\tvar _block = __webpack_require__(29);\n\t\n\t\tvar _block2 = _interopRequireDefault(_block);\n\t\n\t\tvar _clone = __webpack_require__(38);\n\t\n\t\tvar _clone2 = _interopRequireDefault(_clone);\n\t\n\t\tvar _deepEqual = __webpack_require__(22);\n\t\n\t\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\t\n\t\tvar _extend = __webpack_require__(25);\n\t\n\t\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _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; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tvar Editor = function () {\n\t\t function Editor(scroll) {\n\t\t _classCallCheck(this, Editor);\n\t\n\t\t this.scroll = scroll;\n\t\t this.delta = this.getDelta();\n\t\t }\n\t\n\t\t _createClass(Editor, [{\n\t\t key: 'applyDelta',\n\t\t value: function applyDelta(delta) {\n\t\t var _this = this;\n\t\n\t\t var consumeNextNewline = false;\n\t\t this.scroll.update();\n\t\t var scrollLength = this.scroll.length();\n\t\t this.scroll.batch = true;\n\t\t delta = normalizeDelta(delta);\n\t\t delta.reduce(function (index, op) {\n\t\t var length = op.retain || op.delete || op.insert.length || 1;\n\t\t var attributes = op.attributes || {};\n\t\t if (op.insert != null) {\n\t\t if (typeof op.insert === 'string') {\n\t\t var text = op.insert;\n\t\t if (text.endsWith('\\n') && consumeNextNewline) {\n\t\t consumeNextNewline = false;\n\t\t text = text.slice(0, -1);\n\t\t }\n\t\t if (index >= scrollLength && !text.endsWith('\\n')) {\n\t\t consumeNextNewline = true;\n\t\t }\n\t\t _this.scroll.insertAt(index, text);\n\t\n\t\t var _scroll$line = _this.scroll.line(index),\n\t\t _scroll$line2 = _slicedToArray(_scroll$line, 2),\n\t\t line = _scroll$line2[0],\n\t\t offset = _scroll$line2[1];\n\t\n\t\t var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n\t\t if (line instanceof _block2.default) {\n\t\t var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n\t\t _line$descendant2 = _slicedToArray(_line$descendant, 1),\n\t\t leaf = _line$descendant2[0];\n\t\n\t\t formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n\t\t }\n\t\t attributes = _op2.default.attributes.diff(formats, attributes) || {};\n\t\t } else if (_typeof(op.insert) === 'object') {\n\t\t var key = Object.keys(op.insert)[0]; // There should only be one key\n\t\t if (key == null) return index;\n\t\t _this.scroll.insertAt(index, key, op.insert[key]);\n\t\t }\n\t\t scrollLength += length;\n\t\t }\n\t\t Object.keys(attributes).forEach(function (name) {\n\t\t _this.scroll.formatAt(index, length, name, attributes[name]);\n\t\t });\n\t\t return index + length;\n\t\t }, 0);\n\t\t delta.reduce(function (index, op) {\n\t\t if (typeof op.delete === 'number') {\n\t\t _this.scroll.deleteAt(index, op.delete);\n\t\t return index;\n\t\t }\n\t\t return index + (op.retain || op.insert.length || 1);\n\t\t }, 0);\n\t\t this.scroll.batch = false;\n\t\t this.scroll.optimize();\n\t\t return this.update(delta);\n\t\t }\n\t\t }, {\n\t\t key: 'deleteText',\n\t\t value: function deleteText(index, length) {\n\t\t this.scroll.deleteAt(index, length);\n\t\t return this.update(new _quillDelta2.default().retain(index).delete(length));\n\t\t }\n\t\t }, {\n\t\t key: 'formatLine',\n\t\t value: function formatLine(index, length) {\n\t\t var _this2 = this;\n\t\n\t\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t\t this.scroll.update();\n\t\t Object.keys(formats).forEach(function (format) {\n\t\t if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n\t\t var lines = _this2.scroll.lines(index, Math.max(length, 1));\n\t\t var lengthRemaining = length;\n\t\t lines.forEach(function (line) {\n\t\t var lineLength = line.length();\n\t\t if (!(line instanceof _code2.default)) {\n\t\t line.format(format, formats[format]);\n\t\t } else {\n\t\t var codeIndex = index - line.offset(_this2.scroll);\n\t\t var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n\t\t line.formatAt(codeIndex, codeLength, format, formats[format]);\n\t\t }\n\t\t lengthRemaining -= lineLength;\n\t\t });\n\t\t });\n\t\t this.scroll.optimize();\n\t\t return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n\t\t }\n\t\t }, {\n\t\t key: 'formatText',\n\t\t value: function formatText(index, length) {\n\t\t var _this3 = this;\n\t\n\t\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t\t Object.keys(formats).forEach(function (format) {\n\t\t _this3.scroll.formatAt(index, length, format, formats[format]);\n\t\t });\n\t\t return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n\t\t }\n\t\t }, {\n\t\t key: 'getContents',\n\t\t value: function getContents(index, length) {\n\t\t return this.delta.slice(index, index + length);\n\t\t }\n\t\t }, {\n\t\t key: 'getDelta',\n\t\t value: function getDelta() {\n\t\t return this.scroll.lines().reduce(function (delta, line) {\n\t\t return delta.concat(line.delta());\n\t\t }, new _quillDelta2.default());\n\t\t }\n\t\t }, {\n\t\t key: 'getFormat',\n\t\t value: function getFormat(index) {\n\t\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t\t var lines = [],\n\t\t leaves = [];\n\t\t if (length === 0) {\n\t\t this.scroll.path(index).forEach(function (path) {\n\t\t var _path = _slicedToArray(path, 1),\n\t\t blot = _path[0];\n\t\n\t\t if (blot instanceof _block2.default) {\n\t\t lines.push(blot);\n\t\t } else if (blot instanceof _parchment2.default.Leaf) {\n\t\t leaves.push(blot);\n\t\t }\n\t\t });\n\t\t } else {\n\t\t lines = this.scroll.lines(index, length);\n\t\t leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n\t\t }\n\t\t var formatsArr = [lines, leaves].map(function (blots) {\n\t\t if (blots.length === 0) return {};\n\t\t var formats = (0, _block.bubbleFormats)(blots.shift());\n\t\t while (Object.keys(formats).length > 0) {\n\t\t var blot = blots.shift();\n\t\t if (blot == null) return formats;\n\t\t formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n\t\t }\n\t\t return formats;\n\t\t });\n\t\t return _extend2.default.apply(_extend2.default, formatsArr);\n\t\t }\n\t\t }, {\n\t\t key: 'getText',\n\t\t value: function getText(index, length) {\n\t\t return this.getContents(index, length).filter(function (op) {\n\t\t return typeof op.insert === 'string';\n\t\t }).map(function (op) {\n\t\t return op.insert;\n\t\t }).join('');\n\t\t }\n\t\t }, {\n\t\t key: 'insertEmbed',\n\t\t value: function insertEmbed(index, embed, value) {\n\t\t this.scroll.insertAt(index, embed, value);\n\t\t return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n\t\t }\n\t\t }, {\n\t\t key: 'insertText',\n\t\t value: function insertText(index, text) {\n\t\t var _this4 = this;\n\t\n\t\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t\t text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\t\t this.scroll.insertAt(index, text);\n\t\t Object.keys(formats).forEach(function (format) {\n\t\t _this4.scroll.formatAt(index, text.length, format, formats[format]);\n\t\t });\n\t\t return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n\t\t }\n\t\t }, {\n\t\t key: 'isBlank',\n\t\t value: function isBlank() {\n\t\t if (this.scroll.children.length == 0) return true;\n\t\t if (this.scroll.children.length > 1) return false;\n\t\t var child = this.scroll.children.head;\n\t\t return child.length() <= 1 && Object.keys(child.formats()).length == 0;\n\t\t }\n\t\t }, {\n\t\t key: 'removeFormat',\n\t\t value: function removeFormat(index, length) {\n\t\t var text = this.getText(index, length);\n\t\n\t\t var _scroll$line3 = this.scroll.line(index + length),\n\t\t _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n\t\t line = _scroll$line4[0],\n\t\t offset = _scroll$line4[1];\n\t\n\t\t var suffixLength = 0,\n\t\t suffix = new _quillDelta2.default();\n\t\t if (line != null) {\n\t\t if (!(line instanceof _code2.default)) {\n\t\t suffixLength = line.length() - offset;\n\t\t } else {\n\t\t suffixLength = line.newlineIndex(offset) - offset + 1;\n\t\t }\n\t\t suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n\t\t }\n\t\t var contents = this.getContents(index, length + suffixLength);\n\t\t var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n\t\t var delta = new _quillDelta2.default().retain(index).concat(diff);\n\t\t return this.applyDelta(delta);\n\t\t }\n\t\t }, {\n\t\t key: 'update',\n\t\t value: function update(change) {\n\t\t var _this5 = this;\n\t\n\t\t var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\t\t var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\t\n\t\t var oldDelta = this.delta;\n\t\t if (mutations.length === 1 && mutations[0].type === 'characterData' && _parchment2.default.find(mutations[0].target)) {\n\t\t (function () {\n\t\t // Optimization for character changes\n\t\t var textBlot = _parchment2.default.find(mutations[0].target);\n\t\t var formats = (0, _block.bubbleFormats)(textBlot);\n\t\t var index = textBlot.offset(_this5.scroll);\n\t\t var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n\t\t var oldText = new _quillDelta2.default().insert(oldValue);\n\t\t var newText = new _quillDelta2.default().insert(textBlot.value());\n\t\t var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n\t\t change = diffDelta.reduce(function (delta, op) {\n\t\t if (op.insert) {\n\t\t return delta.insert(op.insert, formats);\n\t\t } else {\n\t\t return delta.push(op);\n\t\t }\n\t\t }, new _quillDelta2.default());\n\t\t _this5.delta = oldDelta.compose(change);\n\t\t })();\n\t\t } else {\n\t\t this.delta = this.getDelta();\n\t\t if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n\t\t change = oldDelta.diff(this.delta, cursorIndex);\n\t\t }\n\t\t }\n\t\t return change;\n\t\t }\n\t\t }]);\n\t\n\t\t return Editor;\n\t\t}();\n\t\n\t\tfunction combineFormats(formats, combined) {\n\t\t return Object.keys(combined).reduce(function (merged, name) {\n\t\t if (formats[name] == null) return merged;\n\t\t if (combined[name] === formats[name]) {\n\t\t merged[name] = combined[name];\n\t\t } else if (Array.isArray(combined[name])) {\n\t\t if (combined[name].indexOf(formats[name]) < 0) {\n\t\t merged[name] = combined[name].concat([formats[name]]);\n\t\t }\n\t\t } else {\n\t\t merged[name] = [combined[name], formats[name]];\n\t\t }\n\t\t return merged;\n\t\t }, {});\n\t\t}\n\t\n\t\tfunction normalizeDelta(delta) {\n\t\t return delta.reduce(function (delta, op) {\n\t\t if (op.insert === 1) {\n\t\t var attributes = (0, _clone2.default)(op.attributes);\n\t\t delete attributes['image'];\n\t\t return delta.insert({ image: op.attributes.image }, attributes);\n\t\t }\n\t\t if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n\t\t op = (0, _clone2.default)(op);\n\t\t if (op.attributes.list) {\n\t\t op.attributes.list = 'ordered';\n\t\t } else {\n\t\t op.attributes.list = 'bullet';\n\t\t delete op.attributes.bullet;\n\t\t }\n\t\t }\n\t\t if (typeof op.insert === 'string') {\n\t\t var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\t\t return delta.insert(text, op.attributes);\n\t\t }\n\t\t return delta.push(op);\n\t\t }, new _quillDelta2.default());\n\t\t}\n\t\n\t\texports.default = Editor;\n\t\n\t/***/ },\n\t/* 28 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.default = exports.Code = undefined;\n\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _quillDelta = __webpack_require__(20);\n\t\n\t\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _block = __webpack_require__(29);\n\t\n\t\tvar _block2 = _interopRequireDefault(_block);\n\t\n\t\tvar _inline = __webpack_require__(32);\n\t\n\t\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\t\tvar _text = __webpack_require__(33);\n\t\n\t\tvar _text2 = _interopRequireDefault(_text);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Code = function (_Inline) {\n\t\t _inherits(Code, _Inline);\n\t\n\t\t function Code() {\n\t\t _classCallCheck(this, Code);\n\t\n\t\t return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n\t\t }\n\t\n\t\t return Code;\n\t\t}(_inline2.default);\n\t\n\t\tCode.blotName = 'code';\n\t\tCode.tagName = 'CODE';\n\t\n\t\tvar CodeBlock = function (_Block) {\n\t\t _inherits(CodeBlock, _Block);\n\t\n\t\t function CodeBlock() {\n\t\t _classCallCheck(this, CodeBlock);\n\t\n\t\t return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(CodeBlock, [{\n\t\t key: 'delta',\n\t\t value: function delta() {\n\t\t var _this3 = this;\n\t\n\t\t var text = this.domNode.textContent;\n\t\t if (text.endsWith('\\n')) {\n\t\t // Should always be true\n\t\t text = text.slice(0, -1);\n\t\t }\n\t\t return text.split('\\n').reduce(function (delta, frag) {\n\t\t return delta.insert(frag).insert('\\n', _this3.formats());\n\t\t }, new _quillDelta2.default());\n\t\t }\n\t\t }, {\n\t\t key: 'format',\n\t\t value: function format(name, value) {\n\t\t if (name === this.statics.blotName && value) return;\n\t\n\t\t var _descendant = this.descendant(_text2.default, this.length() - 1),\n\t\t _descendant2 = _slicedToArray(_descendant, 1),\n\t\t text = _descendant2[0];\n\t\n\t\t if (text != null) {\n\t\t text.deleteAt(text.length() - 1, 1);\n\t\t }\n\t\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n\t\t }\n\t\t }, {\n\t\t key: 'formatAt',\n\t\t value: function formatAt(index, length, name, value) {\n\t\t if (length === 0) return;\n\t\t if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n\t\t return;\n\t\t }\n\t\t var nextNewline = this.newlineIndex(index);\n\t\t if (nextNewline < 0 || nextNewline >= index + length) return;\n\t\t var prevNewline = this.newlineIndex(index, true) + 1;\n\t\t var isolateLength = nextNewline - prevNewline + 1;\n\t\t var blot = this.isolate(prevNewline, isolateLength);\n\t\t var next = blot.next;\n\t\t blot.format(name, value);\n\t\t if (next instanceof CodeBlock) {\n\t\t next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'insertAt',\n\t\t value: function insertAt(index, value, def) {\n\t\t if (def != null) return;\n\t\n\t\t var _descendant3 = this.descendant(_text2.default, index),\n\t\t _descendant4 = _slicedToArray(_descendant3, 2),\n\t\t text = _descendant4[0],\n\t\t offset = _descendant4[1];\n\t\n\t\t text.insertAt(offset, value);\n\t\t }\n\t\t }, {\n\t\t key: 'length',\n\t\t value: function length() {\n\t\t var length = this.domNode.textContent.length;\n\t\t if (!this.domNode.textContent.endsWith('\\n')) {\n\t\t return length + 1;\n\t\t }\n\t\t return length;\n\t\t }\n\t\t }, {\n\t\t key: 'newlineIndex',\n\t\t value: function newlineIndex(searchIndex) {\n\t\t var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t\t if (!reverse) {\n\t\t var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n\t\t return offset > -1 ? searchIndex + offset : -1;\n\t\t } else {\n\t\t return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'optimize',\n\t\t value: function optimize() {\n\t\t if (!this.domNode.textContent.endsWith('\\n')) {\n\t\t this.appendChild(_parchment2.default.create('text', '\\n'));\n\t\t }\n\t\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this);\n\t\t var next = this.next;\n\t\t if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n\t\t next.optimize();\n\t\t next.moveChildren(this);\n\t\t next.remove();\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'replace',\n\t\t value: function replace(target) {\n\t\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n\t\t [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n\t\t var blot = _parchment2.default.find(node);\n\t\t if (blot == null) {\n\t\t node.parentNode.removeChild(node);\n\t\t } else if (blot instanceof _parchment2.default.Embed) {\n\t\t blot.remove();\n\t\t } else {\n\t\t blot.unwrap();\n\t\t }\n\t\t });\n\t\t }\n\t\t }], [{\n\t\t key: 'create',\n\t\t value: function create(value) {\n\t\t var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n\t\t domNode.setAttribute('spellcheck', false);\n\t\t return domNode;\n\t\t }\n\t\t }, {\n\t\t key: 'formats',\n\t\t value: function formats() {\n\t\t return true;\n\t\t }\n\t\t }]);\n\t\n\t\t return CodeBlock;\n\t\t}(_block2.default);\n\t\n\t\tCodeBlock.blotName = 'code-block';\n\t\tCodeBlock.tagName = 'PRE';\n\t\tCodeBlock.TAB = ' ';\n\t\n\t\texports.Code = Code;\n\t\texports.default = CodeBlock;\n\t\n\t/***/ },\n\t/* 29 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _extend = __webpack_require__(25);\n\t\n\t\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\t\tvar _quillDelta = __webpack_require__(20);\n\t\n\t\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _break = __webpack_require__(30);\n\t\n\t\tvar _break2 = _interopRequireDefault(_break);\n\t\n\t\tvar _embed = __webpack_require__(31);\n\t\n\t\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\t\tvar _inline = __webpack_require__(32);\n\t\n\t\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\t\tvar _text = __webpack_require__(33);\n\t\n\t\tvar _text2 = _interopRequireDefault(_text);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar NEWLINE_LENGTH = 1;\n\t\n\t\tvar BlockEmbed = function (_Embed) {\n\t\t _inherits(BlockEmbed, _Embed);\n\t\n\t\t function BlockEmbed() {\n\t\t _classCallCheck(this, BlockEmbed);\n\t\n\t\t return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(BlockEmbed, [{\n\t\t key: 'attach',\n\t\t value: function attach() {\n\t\t _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n\t\t this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n\t\t }\n\t\t }, {\n\t\t key: 'delta',\n\t\t value: function delta() {\n\t\t return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n\t\t }\n\t\t }, {\n\t\t key: 'format',\n\t\t value: function format(name, value) {\n\t\t var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n\t\t if (attribute != null) {\n\t\t this.attributes.attribute(attribute, value);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'formatAt',\n\t\t value: function formatAt(index, length, name, value) {\n\t\t this.format(name, value);\n\t\t }\n\t\t }, {\n\t\t key: 'insertAt',\n\t\t value: function insertAt(index, value, def) {\n\t\t if (typeof value === 'string' && value.endsWith('\\n')) {\n\t\t var block = _parchment2.default.create(Block.blotName);\n\t\t this.parent.insertBefore(block, index === 0 ? this : this.next);\n\t\t block.insertAt(0, value.slice(0, -1));\n\t\t } else {\n\t\t _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n\t\t }\n\t\t }\n\t\t }]);\n\t\n\t\t return BlockEmbed;\n\t\t}(_embed2.default);\n\t\n\t\tBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n\t\t// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\t\n\t\n\t\tvar Block = function (_Parchment$Block) {\n\t\t _inherits(Block, _Parchment$Block);\n\t\n\t\t function Block(domNode) {\n\t\t _classCallCheck(this, Block);\n\t\n\t\t var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\t\n\t\t _this2.cache = {};\n\t\t return _this2;\n\t\t }\n\t\n\t\t _createClass(Block, [{\n\t\t key: 'delta',\n\t\t value: function delta() {\n\t\t if (this.cache.delta == null) {\n\t\t this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n\t\t if (leaf.length() === 0) {\n\t\t return delta;\n\t\t } else {\n\t\t return delta.insert(leaf.value(), bubbleFormats(leaf));\n\t\t }\n\t\t }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n\t\t }\n\t\t return this.cache.delta;\n\t\t }\n\t\t }, {\n\t\t key: 'deleteAt',\n\t\t value: function deleteAt(index, length) {\n\t\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n\t\t this.cache = {};\n\t\t }\n\t\t }, {\n\t\t key: 'formatAt',\n\t\t value: function formatAt(index, length, name, value) {\n\t\t if (length <= 0) return;\n\t\t if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t\t if (index + length === this.length()) {\n\t\t this.format(name, value);\n\t\t }\n\t\t } else {\n\t\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n\t\t }\n\t\t this.cache = {};\n\t\t }\n\t\t }, {\n\t\t key: 'insertAt',\n\t\t value: function insertAt(index, value, def) {\n\t\t if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n\t\t if (value.length === 0) return;\n\t\t var lines = value.split('\\n');\n\t\t var text = lines.shift();\n\t\t if (text.length > 0) {\n\t\t if (index < this.length() - 1 || this.children.tail == null) {\n\t\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n\t\t } else {\n\t\t this.children.tail.insertAt(this.children.tail.length(), text);\n\t\t }\n\t\t this.cache = {};\n\t\t }\n\t\t var block = this;\n\t\t lines.reduce(function (index, line) {\n\t\t block = block.split(index, true);\n\t\t block.insertAt(0, line);\n\t\t return line.length;\n\t\t }, index + text.length);\n\t\t }\n\t\t }, {\n\t\t key: 'insertBefore',\n\t\t value: function insertBefore(blot, ref) {\n\t\t var head = this.children.head;\n\t\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n\t\t if (head instanceof _break2.default) {\n\t\t head.remove();\n\t\t }\n\t\t this.cache = {};\n\t\t }\n\t\t }, {\n\t\t key: 'length',\n\t\t value: function length() {\n\t\t if (this.cache.length == null) {\n\t\t this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n\t\t }\n\t\t return this.cache.length;\n\t\t }\n\t\t }, {\n\t\t key: 'moveChildren',\n\t\t value: function moveChildren(target, ref) {\n\t\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n\t\t this.cache = {};\n\t\t }\n\t\t }, {\n\t\t key: 'optimize',\n\t\t value: function optimize() {\n\t\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this);\n\t\t this.cache = {};\n\t\t }\n\t\t }, {\n\t\t key: 'path',\n\t\t value: function path(index) {\n\t\t return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n\t\t }\n\t\t }, {\n\t\t key: 'removeChild',\n\t\t value: function removeChild(child) {\n\t\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n\t\t this.cache = {};\n\t\t }\n\t\t }, {\n\t\t key: 'split',\n\t\t value: function split(index) {\n\t\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t\t if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n\t\t var clone = this.clone();\n\t\t if (index === 0) {\n\t\t this.parent.insertBefore(clone, this);\n\t\t return this;\n\t\t } else {\n\t\t this.parent.insertBefore(clone, this.next);\n\t\t return clone;\n\t\t }\n\t\t } else {\n\t\t var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n\t\t this.cache = {};\n\t\t return next;\n\t\t }\n\t\t }\n\t\t }]);\n\t\n\t\t return Block;\n\t\t}(_parchment2.default.Block);\n\t\n\t\tBlock.blotName = 'block';\n\t\tBlock.tagName = 'P';\n\t\tBlock.defaultChild = 'break';\n\t\tBlock.allowedChildren = [_inline2.default, _embed2.default, _text2.default];\n\t\n\t\tfunction bubbleFormats(blot) {\n\t\t var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t\t if (blot == null) return formats;\n\t\t if (typeof blot.formats === 'function') {\n\t\t formats = (0, _extend2.default)(formats, blot.formats());\n\t\t }\n\t\t if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n\t\t return formats;\n\t\t }\n\t\t return bubbleFormats(blot.parent, formats);\n\t\t}\n\t\n\t\texports.bubbleFormats = bubbleFormats;\n\t\texports.BlockEmbed = BlockEmbed;\n\t\texports.default = Block;\n\t\n\t/***/ },\n\t/* 30 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _embed = __webpack_require__(31);\n\t\n\t\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Break = function (_Embed) {\n\t\t _inherits(Break, _Embed);\n\t\n\t\t function Break() {\n\t\t _classCallCheck(this, Break);\n\t\n\t\t return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(Break, [{\n\t\t key: 'insertInto',\n\t\t value: function insertInto(parent, ref) {\n\t\t if (parent.children.length === 0) {\n\t\t _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n\t\t } else {\n\t\t this.remove();\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'length',\n\t\t value: function length() {\n\t\t return 0;\n\t\t }\n\t\t }, {\n\t\t key: 'value',\n\t\t value: function value() {\n\t\t return '';\n\t\t }\n\t\t }], [{\n\t\t key: 'value',\n\t\t value: function value() {\n\t\t return undefined;\n\t\t }\n\t\t }]);\n\t\n\t\t return Break;\n\t\t}(_embed2.default);\n\t\n\t\tBreak.blotName = 'break';\n\t\tBreak.tagName = 'BR';\n\t\n\t\texports.default = Break;\n\t\n\t/***/ },\n\t/* 31 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Embed = function (_Parchment$Embed) {\n\t\t _inherits(Embed, _Parchment$Embed);\n\t\n\t\t function Embed() {\n\t\t _classCallCheck(this, Embed);\n\t\n\t\t return _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).apply(this, arguments));\n\t\t }\n\t\n\t\t return Embed;\n\t\t}(_parchment2.default.Embed);\n\t\n\t\texports.default = Embed;\n\t\n\t/***/ },\n\t/* 32 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _embed = __webpack_require__(31);\n\t\n\t\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\t\tvar _text = __webpack_require__(33);\n\t\n\t\tvar _text2 = _interopRequireDefault(_text);\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Inline = function (_Parchment$Inline) {\n\t\t _inherits(Inline, _Parchment$Inline);\n\t\n\t\t function Inline() {\n\t\t _classCallCheck(this, Inline);\n\t\n\t\t return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(Inline, [{\n\t\t key: 'formatAt',\n\t\t value: function formatAt(index, length, name, value) {\n\t\t if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n\t\t var blot = this.isolate(index, length);\n\t\t if (value) {\n\t\t blot.wrap(name, value);\n\t\t }\n\t\t } else {\n\t\t _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'optimize',\n\t\t value: function optimize() {\n\t\t _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this);\n\t\t if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n\t\t var parent = this.parent.isolate(this.offset(), this.length());\n\t\t this.moveChildren(parent);\n\t\t parent.wrap(this);\n\t\t }\n\t\t }\n\t\t }], [{\n\t\t key: 'compare',\n\t\t value: function compare(self, other) {\n\t\t var selfIndex = Inline.order.indexOf(self);\n\t\t var otherIndex = Inline.order.indexOf(other);\n\t\t if (selfIndex >= 0 || otherIndex >= 0) {\n\t\t return selfIndex - otherIndex;\n\t\t } else if (self === other) {\n\t\t return 0;\n\t\t } else if (self < other) {\n\t\t return -1;\n\t\t } else {\n\t\t return 1;\n\t\t }\n\t\t }\n\t\t }]);\n\t\n\t\t return Inline;\n\t\t}(_parchment2.default.Inline);\n\t\n\t\tInline.allowedChildren = [Inline, _embed2.default, _text2.default];\n\t\t// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n\t\tInline.order = ['cursor', 'inline', // Must be lower\n\t\t'code', 'underline', 'strike', 'italic', 'bold', 'script', 'link' // Must be higher\n\t\t];\n\t\n\t\texports.default = Inline;\n\t\n\t/***/ },\n\t/* 33 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar TextBlot = function (_Parchment$Text) {\n\t\t _inherits(TextBlot, _Parchment$Text);\n\t\n\t\t function TextBlot() {\n\t\t _classCallCheck(this, TextBlot);\n\t\n\t\t return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n\t\t }\n\t\n\t\t return TextBlot;\n\t\t}(_parchment2.default.Text);\n\t\n\t\texports.default = TextBlot;\n\t\n\t/***/ },\n\t/* 34 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _embed = __webpack_require__(31);\n\t\n\t\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\t\tvar _text = __webpack_require__(33);\n\t\n\t\tvar _text2 = _interopRequireDefault(_text);\n\t\n\t\tvar _emitter = __webpack_require__(35);\n\t\n\t\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Cursor = function (_Embed) {\n\t\t _inherits(Cursor, _Embed);\n\t\n\t\t _createClass(Cursor, null, [{\n\t\t key: 'value',\n\t\t value: function value() {\n\t\t return undefined;\n\t\t }\n\t\t }]);\n\t\n\t\t function Cursor(domNode, selection) {\n\t\t _classCallCheck(this, Cursor);\n\t\n\t\t var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\t\n\t\t _this.selection = selection;\n\t\t _this.textNode = document.createTextNode(Cursor.CONTENTS);\n\t\t _this.domNode.appendChild(_this.textNode);\n\t\t _this._length = 0;\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(Cursor, [{\n\t\t key: 'detach',\n\t\t value: function detach() {\n\t\t // super.detach() will also clear domNode.__blot\n\t\t if (this.parent != null) this.parent.removeChild(this);\n\t\t }\n\t\t }, {\n\t\t key: 'format',\n\t\t value: function format(name, value) {\n\t\t if (this._length !== 0) {\n\t\t return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n\t\t }\n\t\t var target = this,\n\t\t index = 0;\n\t\t while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n\t\t index += target.offset(target.parent);\n\t\t target = target.parent;\n\t\t }\n\t\t if (target != null) {\n\t\t this._length = Cursor.CONTENTS.length;\n\t\t target.optimize();\n\t\t target.formatAt(index, Cursor.CONTENTS.length, name, value);\n\t\t this._length = 0;\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'index',\n\t\t value: function index(node, offset) {\n\t\t if (node === this.textNode) return 0;\n\t\t return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n\t\t }\n\t\t }, {\n\t\t key: 'length',\n\t\t value: function length() {\n\t\t return this._length;\n\t\t }\n\t\t }, {\n\t\t key: 'position',\n\t\t value: function position() {\n\t\t return [this.textNode, this.textNode.data.length];\n\t\t }\n\t\t }, {\n\t\t key: 'remove',\n\t\t value: function remove() {\n\t\t _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n\t\t this.parent = null;\n\t\t }\n\t\t }, {\n\t\t key: 'restore',\n\t\t value: function restore() {\n\t\t var _this2 = this;\n\t\n\t\t if (this.selection.composing) return;\n\t\t if (this.parent == null) return;\n\t\t var textNode = this.textNode;\n\t\t var range = this.selection.getNativeRange();\n\t\t var restoreText = void 0,\n\t\t start = void 0,\n\t\t end = void 0;\n\t\t if (range != null && range.start.node === textNode && range.end.node === textNode) {\n\t\t var _ref = [textNode, range.start.offset, range.end.offset];\n\t\t restoreText = _ref[0];\n\t\t start = _ref[1];\n\t\t end = _ref[2];\n\t\t }\n\t\t // Link format will insert text outside of anchor tag\n\t\t while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n\t\t this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n\t\t }\n\t\t if (this.textNode.data !== Cursor.CONTENTS) {\n\t\t var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n\t\t if (this.next instanceof _text2.default) {\n\t\t restoreText = this.next.domNode;\n\t\t this.next.insertAt(0, text);\n\t\t this.textNode.data = Cursor.CONTENTS;\n\t\t } else {\n\t\t this.textNode.data = text;\n\t\t this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n\t\t this.textNode = document.createTextNode(Cursor.CONTENTS);\n\t\t this.domNode.appendChild(this.textNode);\n\t\t }\n\t\t }\n\t\t this.remove();\n\t\t if (start == null) return;\n\t\t this.selection.emitter.once(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t\t var _map = [start, end].map(function (offset) {\n\t\t return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n\t\t });\n\t\n\t\t var _map2 = _slicedToArray(_map, 2);\n\t\n\t\t start = _map2[0];\n\t\t end = _map2[1];\n\t\n\t\t _this2.selection.setNativeRange(restoreText, start, restoreText, end);\n\t\t });\n\t\t }\n\t\t }, {\n\t\t key: 'update',\n\t\t value: function update(mutations) {\n\t\t var _this3 = this;\n\t\n\t\t mutations.forEach(function (mutation) {\n\t\t if (mutation.type === 'characterData' && mutation.target === _this3.textNode) {\n\t\t _this3.restore();\n\t\t }\n\t\t });\n\t\t }\n\t\t }, {\n\t\t key: 'value',\n\t\t value: function value() {\n\t\t return '';\n\t\t }\n\t\t }]);\n\t\n\t\t return Cursor;\n\t\t}(_embed2.default);\n\t\n\t\tCursor.blotName = 'cursor';\n\t\tCursor.className = 'ql-cursor';\n\t\tCursor.tagName = 'span';\n\t\tCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\t\n\t\n\t\texports.default = Cursor;\n\t\n\t/***/ },\n\t/* 35 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _eventemitter = __webpack_require__(36);\n\t\n\t\tvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\t\n\t\tvar _logger = __webpack_require__(37);\n\t\n\t\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar debug = (0, _logger2.default)('quill:events');\n\t\n\t\tvar Emitter = function (_EventEmitter) {\n\t\t _inherits(Emitter, _EventEmitter);\n\t\n\t\t function Emitter() {\n\t\t _classCallCheck(this, Emitter);\n\t\n\t\t var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\t\n\t\t _this.on('error', debug.error);\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(Emitter, [{\n\t\t key: 'emit',\n\t\t value: function emit() {\n\t\t debug.log.apply(debug, arguments);\n\t\t _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n\t\t }\n\t\t }]);\n\t\n\t\t return Emitter;\n\t\t}(_eventemitter2.default);\n\t\n\t\tEmitter.events = {\n\t\t EDITOR_CHANGE: 'editor-change',\n\t\t SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n\t\t SCROLL_OPTIMIZE: 'scroll-optimize',\n\t\t SCROLL_UPDATE: 'scroll-update',\n\t\t SELECTION_CHANGE: 'selection-change',\n\t\t TEXT_CHANGE: 'text-change'\n\t\t};\n\t\tEmitter.sources = {\n\t\t API: 'api',\n\t\t SILENT: 'silent',\n\t\t USER: 'user'\n\t\t};\n\t\n\t\texports.default = Emitter;\n\t\n\t/***/ },\n\t/* 36 */\n\t/***/ function(module, exports) {\n\t\n\t\t'use strict';\n\t\n\t\tvar has = Object.prototype.hasOwnProperty\n\t\t , prefix = '~';\n\t\n\t\t/**\n\t\t * Constructor to create a storage for our `EE` objects.\n\t\t * An `Events` instance is a plain object whose properties are event names.\n\t\t *\n\t\t * @constructor\n\t\t * @api private\n\t\t */\n\t\tfunction Events() {}\n\t\n\t\t//\n\t\t// We try to not inherit from `Object.prototype`. In some engines creating an\n\t\t// instance in this way is faster than calling `Object.create(null)` directly.\n\t\t// If `Object.create(null)` is not supported we prefix the event names with a\n\t\t// character to make sure that the built-in object properties are not\n\t\t// overridden or used as an attack vector.\n\t\t//\n\t\tif (Object.create) {\n\t\t Events.prototype = Object.create(null);\n\t\n\t\t //\n\t\t // This hack is needed because the `__proto__` property is still inherited in\n\t\t // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n\t\t //\n\t\t if (!new Events().__proto__) prefix = false;\n\t\t}\n\t\n\t\t/**\n\t\t * Representation of a single event listener.\n\t\t *\n\t\t * @param {Function} fn The listener function.\n\t\t * @param {Mixed} context The context to invoke the listener with.\n\t\t * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n\t\t * @constructor\n\t\t * @api private\n\t\t */\n\t\tfunction EE(fn, context, once) {\n\t\t this.fn = fn;\n\t\t this.context = context;\n\t\t this.once = once || false;\n\t\t}\n\t\n\t\t/**\n\t\t * Minimal `EventEmitter` interface that is molded against the Node.js\n\t\t * `EventEmitter` interface.\n\t\t *\n\t\t * @constructor\n\t\t * @api public\n\t\t */\n\t\tfunction EventEmitter() {\n\t\t this._events = new Events();\n\t\t this._eventsCount = 0;\n\t\t}\n\t\n\t\t/**\n\t\t * Return an array listing the events for which the emitter has registered\n\t\t * listeners.\n\t\t *\n\t\t * @returns {Array}\n\t\t * @api public\n\t\t */\n\t\tEventEmitter.prototype.eventNames = function eventNames() {\n\t\t var names = []\n\t\t , events\n\t\t , name;\n\t\n\t\t if (this._eventsCount === 0) return names;\n\t\n\t\t for (name in (events = this._events)) {\n\t\t if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n\t\t }\n\t\n\t\t if (Object.getOwnPropertySymbols) {\n\t\t return names.concat(Object.getOwnPropertySymbols(events));\n\t\t }\n\t\n\t\t return names;\n\t\t};\n\t\n\t\t/**\n\t\t * Return the listeners registered for a given event.\n\t\t *\n\t\t * @param {String|Symbol} event The event name.\n\t\t * @param {Boolean} exists Only check if there are listeners.\n\t\t * @returns {Array|Boolean}\n\t\t * @api public\n\t\t */\n\t\tEventEmitter.prototype.listeners = function listeners(event, exists) {\n\t\t var evt = prefix ? prefix + event : event\n\t\t , available = this._events[evt];\n\t\n\t\t if (exists) return !!available;\n\t\t if (!available) return [];\n\t\t if (available.fn) return [available.fn];\n\t\n\t\t for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n\t\t ee[i] = available[i].fn;\n\t\t }\n\t\n\t\t return ee;\n\t\t};\n\t\n\t\t/**\n\t\t * Calls each of the listeners registered for a given event.\n\t\t *\n\t\t * @param {String|Symbol} event The event name.\n\t\t * @returns {Boolean} `true` if the event had listeners, else `false`.\n\t\t * @api public\n\t\t */\n\t\tEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n\t\t var evt = prefix ? prefix + event : event;\n\t\n\t\t if (!this._events[evt]) return false;\n\t\n\t\t var listeners = this._events[evt]\n\t\t , len = arguments.length\n\t\t , args\n\t\t , i;\n\t\n\t\t if (listeners.fn) {\n\t\t if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\t\n\t\t switch (len) {\n\t\t case 1: return listeners.fn.call(listeners.context), true;\n\t\t case 2: return listeners.fn.call(listeners.context, a1), true;\n\t\t case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n\t\t case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n\t\t case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n\t\t case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n\t\t }\n\t\n\t\t for (i = 1, args = new Array(len -1); i < len; i++) {\n\t\t args[i - 1] = arguments[i];\n\t\t }\n\t\n\t\t listeners.fn.apply(listeners.context, args);\n\t\t } else {\n\t\t var length = listeners.length\n\t\t , j;\n\t\n\t\t for (i = 0; i < length; i++) {\n\t\t if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\t\n\t\t switch (len) {\n\t\t case 1: listeners[i].fn.call(listeners[i].context); break;\n\t\t case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n\t\t case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n\t\t case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n\t\t default:\n\t\t if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n\t\t args[j - 1] = arguments[j];\n\t\t }\n\t\n\t\t listeners[i].fn.apply(listeners[i].context, args);\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t return true;\n\t\t};\n\t\n\t\t/**\n\t\t * Add a listener for a given event.\n\t\t *\n\t\t * @param {String|Symbol} event The event name.\n\t\t * @param {Function} fn The listener function.\n\t\t * @param {Mixed} [context=this] The context to invoke the listener with.\n\t\t * @returns {EventEmitter} `this`.\n\t\t * @api public\n\t\t */\n\t\tEventEmitter.prototype.on = function on(event, fn, context) {\n\t\t var listener = new EE(fn, context || this)\n\t\t , evt = prefix ? prefix + event : event;\n\t\n\t\t if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n\t\t else if (!this._events[evt].fn) this._events[evt].push(listener);\n\t\t else this._events[evt] = [this._events[evt], listener];\n\t\n\t\t return this;\n\t\t};\n\t\n\t\t/**\n\t\t * Add a one-time listener for a given event.\n\t\t *\n\t\t * @param {String|Symbol} event The event name.\n\t\t * @param {Function} fn The listener function.\n\t\t * @param {Mixed} [context=this] The context to invoke the listener with.\n\t\t * @returns {EventEmitter} `this`.\n\t\t * @api public\n\t\t */\n\t\tEventEmitter.prototype.once = function once(event, fn, context) {\n\t\t var listener = new EE(fn, context || this, true)\n\t\t , evt = prefix ? prefix + event : event;\n\t\n\t\t if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n\t\t else if (!this._events[evt].fn) this._events[evt].push(listener);\n\t\t else this._events[evt] = [this._events[evt], listener];\n\t\n\t\t return this;\n\t\t};\n\t\n\t\t/**\n\t\t * Remove the listeners of a given event.\n\t\t *\n\t\t * @param {String|Symbol} event The event name.\n\t\t * @param {Function} fn Only remove the listeners that match this function.\n\t\t * @param {Mixed} context Only remove the listeners that have this context.\n\t\t * @param {Boolean} once Only remove one-time listeners.\n\t\t * @returns {EventEmitter} `this`.\n\t\t * @api public\n\t\t */\n\t\tEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n\t\t var evt = prefix ? prefix + event : event;\n\t\n\t\t if (!this._events[evt]) return this;\n\t\t if (!fn) {\n\t\t if (--this._eventsCount === 0) this._events = new Events();\n\t\t else delete this._events[evt];\n\t\t return this;\n\t\t }\n\t\n\t\t var listeners = this._events[evt];\n\t\n\t\t if (listeners.fn) {\n\t\t if (\n\t\t listeners.fn === fn\n\t\t && (!once || listeners.once)\n\t\t && (!context || listeners.context === context)\n\t\t ) {\n\t\t if (--this._eventsCount === 0) this._events = new Events();\n\t\t else delete this._events[evt];\n\t\t }\n\t\t } else {\n\t\t for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n\t\t if (\n\t\t listeners[i].fn !== fn\n\t\t || (once && !listeners[i].once)\n\t\t || (context && listeners[i].context !== context)\n\t\t ) {\n\t\t events.push(listeners[i]);\n\t\t }\n\t\t }\n\t\n\t\t //\n\t\t // Reset the array, or remove it completely if we have no more listeners.\n\t\t //\n\t\t if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n\t\t else if (--this._eventsCount === 0) this._events = new Events();\n\t\t else delete this._events[evt];\n\t\t }\n\t\n\t\t return this;\n\t\t};\n\t\n\t\t/**\n\t\t * Remove all listeners, or those of the specified event.\n\t\t *\n\t\t * @param {String|Symbol} [event] The event name.\n\t\t * @returns {EventEmitter} `this`.\n\t\t * @api public\n\t\t */\n\t\tEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n\t\t var evt;\n\t\n\t\t if (event) {\n\t\t evt = prefix ? prefix + event : event;\n\t\t if (this._events[evt]) {\n\t\t if (--this._eventsCount === 0) this._events = new Events();\n\t\t else delete this._events[evt];\n\t\t }\n\t\t } else {\n\t\t this._events = new Events();\n\t\t this._eventsCount = 0;\n\t\t }\n\t\n\t\t return this;\n\t\t};\n\t\n\t\t//\n\t\t// Alias methods names because people roll like that.\n\t\t//\n\t\tEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\t\tEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\t\n\t\t//\n\t\t// This function doesn't apply anymore.\n\t\t//\n\t\tEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n\t\t return this;\n\t\t};\n\t\n\t\t//\n\t\t// Expose the prefix.\n\t\t//\n\t\tEventEmitter.prefixed = prefix;\n\t\n\t\t//\n\t\t// Allow `EventEmitter` to be imported as module namespace.\n\t\t//\n\t\tEventEmitter.EventEmitter = EventEmitter;\n\t\n\t\t//\n\t\t// Expose the module.\n\t\t//\n\t\tif ('undefined' !== typeof module) {\n\t\t module.exports = EventEmitter;\n\t\t}\n\t\n\t\n\t/***/ },\n\t/* 37 */\n\t/***/ function(module, exports) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\tvar levels = ['error', 'warn', 'log', 'info'];\n\t\tvar level = 'warn';\n\t\n\t\tfunction debug(method) {\n\t\t if (levels.indexOf(method) <= levels.indexOf(level)) {\n\t\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t\t args[_key - 1] = arguments[_key];\n\t\t }\n\t\n\t\t console[method].apply(console, args); // eslint-disable-line no-console\n\t\t }\n\t\t}\n\t\n\t\tfunction namespace(ns) {\n\t\t return levels.reduce(function (logger, method) {\n\t\t logger[method] = debug.bind(console, method, ns);\n\t\t return logger;\n\t\t }, {});\n\t\t}\n\t\n\t\tdebug.level = namespace.level = function (newLevel) {\n\t\t level = newLevel;\n\t\t};\n\t\n\t\texports.default = namespace;\n\t\n\t/***/ },\n\t/* 38 */\n\t/***/ function(module, exports) {\n\t\n\t\tvar clone = (function() {\n\t\t'use strict';\n\t\n\t\tvar nativeMap;\n\t\ttry {\n\t\t nativeMap = Map;\n\t\t} catch(_) {\n\t\t // maybe a reference error because no `Map`. Give it a dummy value that no\n\t\t // value will ever be an instanceof.\n\t\t nativeMap = function() {};\n\t\t}\n\t\n\t\tvar nativeSet;\n\t\ttry {\n\t\t nativeSet = Set;\n\t\t} catch(_) {\n\t\t nativeSet = function() {};\n\t\t}\n\t\n\t\tvar nativePromise;\n\t\ttry {\n\t\t nativePromise = Promise;\n\t\t} catch(_) {\n\t\t nativePromise = function() {};\n\t\t}\n\t\n\t\t/**\n\t\t * Clones (copies) an Object using deep copying.\n\t\t *\n\t\t * This function supports circular references by default, but if you are certain\n\t\t * there are no circular references in your object, you can save some CPU time\n\t\t * by calling clone(obj, false).\n\t\t *\n\t\t * Caution: if `circular` is false and `parent` contains circular references,\n\t\t * your program may enter an infinite loop and crash.\n\t\t *\n\t\t * @param `parent` - the object to be cloned\n\t\t * @param `circular` - set to true if the object to be cloned may contain\n\t\t * circular references. (optional - true by default)\n\t\t * @param `depth` - set to a number if the object is only to be cloned to\n\t\t * a particular depth. (optional - defaults to Infinity)\n\t\t * @param `prototype` - sets the prototype to be used when cloning an object.\n\t\t * (optional - defaults to parent prototype).\n\t\t * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n\t\t * should be cloned as well. Non-enumerable properties on the prototype\n\t\t * chain will be ignored. (optional - false by default)\n\t\t*/\n\t\tfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n\t\t if (typeof circular === 'object') {\n\t\t depth = circular.depth;\n\t\t prototype = circular.prototype;\n\t\t includeNonEnumerable = circular.includeNonEnumerable;\n\t\t circular = circular.circular;\n\t\t }\n\t\t // maintain two arrays for circular references, where corresponding parents\n\t\t // and children have the same index\n\t\t var allParents = [];\n\t\t var allChildren = [];\n\t\n\t\t var useBuffer = typeof Buffer != 'undefined';\n\t\n\t\t if (typeof circular == 'undefined')\n\t\t circular = true;\n\t\n\t\t if (typeof depth == 'undefined')\n\t\t depth = Infinity;\n\t\n\t\t // recurse this function so we don't reset allParents and allChildren\n\t\t function _clone(parent, depth) {\n\t\t // cloning null always returns null\n\t\t if (parent === null)\n\t\t return null;\n\t\n\t\t if (depth === 0)\n\t\t return parent;\n\t\n\t\t var child;\n\t\t var proto;\n\t\t if (typeof parent != 'object') {\n\t\t return parent;\n\t\t }\n\t\n\t\t if (parent instanceof nativeMap) {\n\t\t child = new nativeMap();\n\t\t } else if (parent instanceof nativeSet) {\n\t\t child = new nativeSet();\n\t\t } else if (parent instanceof nativePromise) {\n\t\t child = new nativePromise(function (resolve, reject) {\n\t\t parent.then(function(value) {\n\t\t resolve(_clone(value, depth - 1));\n\t\t }, function(err) {\n\t\t reject(_clone(err, depth - 1));\n\t\t });\n\t\t });\n\t\t } else if (clone.__isArray(parent)) {\n\t\t child = [];\n\t\t } else if (clone.__isRegExp(parent)) {\n\t\t child = new RegExp(parent.source, __getRegExpFlags(parent));\n\t\t if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n\t\t } else if (clone.__isDate(parent)) {\n\t\t child = new Date(parent.getTime());\n\t\t } else if (useBuffer && Buffer.isBuffer(parent)) {\n\t\t child = new Buffer(parent.length);\n\t\t parent.copy(child);\n\t\t return child;\n\t\t } else if (parent instanceof Error) {\n\t\t child = Object.create(parent);\n\t\t } else {\n\t\t if (typeof prototype == 'undefined') {\n\t\t proto = Object.getPrototypeOf(parent);\n\t\t child = Object.create(proto);\n\t\t }\n\t\t else {\n\t\t child = Object.create(prototype);\n\t\t proto = prototype;\n\t\t }\n\t\t }\n\t\n\t\t if (circular) {\n\t\t var index = allParents.indexOf(parent);\n\t\n\t\t if (index != -1) {\n\t\t return allChildren[index];\n\t\t }\n\t\t allParents.push(parent);\n\t\t allChildren.push(child);\n\t\t }\n\t\n\t\t if (parent instanceof nativeMap) {\n\t\t var keyIterator = parent.keys();\n\t\t while(true) {\n\t\t var next = keyIterator.next();\n\t\t if (next.done) {\n\t\t break;\n\t\t }\n\t\t var keyChild = _clone(next.value, depth - 1);\n\t\t var valueChild = _clone(parent.get(next.value), depth - 1);\n\t\t child.set(keyChild, valueChild);\n\t\t }\n\t\t }\n\t\t if (parent instanceof nativeSet) {\n\t\t var iterator = parent.keys();\n\t\t while(true) {\n\t\t var next = iterator.next();\n\t\t if (next.done) {\n\t\t break;\n\t\t }\n\t\t var entryChild = _clone(next.value, depth - 1);\n\t\t child.add(entryChild);\n\t\t }\n\t\t }\n\t\n\t\t for (var i in parent) {\n\t\t var attrs;\n\t\t if (proto) {\n\t\t attrs = Object.getOwnPropertyDescriptor(proto, i);\n\t\t }\n\t\n\t\t if (attrs && attrs.set == null) {\n\t\t continue;\n\t\t }\n\t\t child[i] = _clone(parent[i], depth - 1);\n\t\t }\n\t\n\t\t if (Object.getOwnPropertySymbols) {\n\t\t var symbols = Object.getOwnPropertySymbols(parent);\n\t\t for (var i = 0; i < symbols.length; i++) {\n\t\t // Don't need to worry about cloning a symbol because it is a primitive,\n\t\t // like a number or string.\n\t\t var symbol = symbols[i];\n\t\t var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n\t\t if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n\t\t continue;\n\t\t }\n\t\t child[symbol] = _clone(parent[symbol], depth - 1);\n\t\t if (!descriptor.enumerable) {\n\t\t Object.defineProperty(child, symbol, {\n\t\t enumerable: false\n\t\t });\n\t\t }\n\t\t }\n\t\t }\n\t\n\t\t if (includeNonEnumerable) {\n\t\t var allPropertyNames = Object.getOwnPropertyNames(parent);\n\t\t for (var i = 0; i < allPropertyNames.length; i++) {\n\t\t var propertyName = allPropertyNames[i];\n\t\t var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n\t\t if (descriptor && descriptor.enumerable) {\n\t\t continue;\n\t\t }\n\t\t child[propertyName] = _clone(parent[propertyName], depth - 1);\n\t\t Object.defineProperty(child, propertyName, {\n\t\t enumerable: false\n\t\t });\n\t\t }\n\t\t }\n\t\n\t\t return child;\n\t\t }\n\t\n\t\t return _clone(parent, depth);\n\t\t}\n\t\n\t\t/**\n\t\t * Simple flat clone using prototype, accepts only objects, usefull for property\n\t\t * override on FLAT configuration object (no nested props).\n\t\t *\n\t\t * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n\t\t * works.\n\t\t */\n\t\tclone.clonePrototype = function clonePrototype(parent) {\n\t\t if (parent === null)\n\t\t return null;\n\t\n\t\t var c = function () {};\n\t\t c.prototype = parent;\n\t\t return new c();\n\t\t};\n\t\n\t\t// private utility functions\n\t\n\t\tfunction __objToStr(o) {\n\t\t return Object.prototype.toString.call(o);\n\t\t}\n\t\tclone.__objToStr = __objToStr;\n\t\n\t\tfunction __isDate(o) {\n\t\t return typeof o === 'object' && __objToStr(o) === '[object Date]';\n\t\t}\n\t\tclone.__isDate = __isDate;\n\t\n\t\tfunction __isArray(o) {\n\t\t return typeof o === 'object' && __objToStr(o) === '[object Array]';\n\t\t}\n\t\tclone.__isArray = __isArray;\n\t\n\t\tfunction __isRegExp(o) {\n\t\t return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n\t\t}\n\t\tclone.__isRegExp = __isRegExp;\n\t\n\t\tfunction __getRegExpFlags(re) {\n\t\t var flags = '';\n\t\t if (re.global) flags += 'g';\n\t\t if (re.ignoreCase) flags += 'i';\n\t\t if (re.multiline) flags += 'm';\n\t\t return flags;\n\t\t}\n\t\tclone.__getRegExpFlags = __getRegExpFlags;\n\t\n\t\treturn clone;\n\t\t})();\n\t\n\t\tif (typeof module === 'object' && module.exports) {\n\t\t module.exports = clone;\n\t\t}\n\t\n\t\n\t/***/ },\n\t/* 39 */\n\t/***/ function(module, exports) {\n\t\n\t\t\"use strict\";\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tvar Module = function Module(quill) {\n\t\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t\t _classCallCheck(this, Module);\n\t\n\t\t this.quill = quill;\n\t\t this.options = options;\n\t\t};\n\t\n\t\tModule.DEFAULTS = {};\n\t\n\t\texports.default = Module;\n\t\n\t/***/ },\n\t/* 40 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.default = exports.Range = undefined;\n\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _clone = __webpack_require__(38);\n\t\n\t\tvar _clone2 = _interopRequireDefault(_clone);\n\t\n\t\tvar _deepEqual = __webpack_require__(22);\n\t\n\t\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\t\n\t\tvar _emitter3 = __webpack_require__(35);\n\t\n\t\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\t\n\t\tvar _logger = __webpack_require__(37);\n\t\n\t\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tvar debug = (0, _logger2.default)('quill:selection');\n\t\n\t\tvar Range = function Range(index) {\n\t\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t\t _classCallCheck(this, Range);\n\t\n\t\t this.index = index;\n\t\t this.length = length;\n\t\t};\n\t\n\t\tvar Selection = function () {\n\t\t function Selection(scroll, emitter) {\n\t\t var _this = this;\n\t\n\t\t _classCallCheck(this, Selection);\n\t\n\t\t this.emitter = emitter;\n\t\t this.scroll = scroll;\n\t\t this.composing = false;\n\t\t this.root = this.scroll.domNode;\n\t\t this.root.addEventListener('compositionstart', function () {\n\t\t _this.composing = true;\n\t\t });\n\t\t this.root.addEventListener('compositionend', function () {\n\t\t _this.composing = false;\n\t\t });\n\t\t this.cursor = _parchment2.default.create('cursor', this);\n\t\t // savedRange is last non-null range\n\t\t this.lastRange = this.savedRange = new Range(0, 0);\n\t\t ['keyup', 'mouseup', 'mouseleave', 'touchend', 'touchleave', 'focus', 'blur'].forEach(function (eventName) {\n\t\t _this.root.addEventListener(eventName, function () {\n\t\t // When range used to be a selection and user click within the selection,\n\t\t // the range now being a cursor has not updated yet without setTimeout\n\t\t setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 100);\n\t\t });\n\t\t });\n\t\t this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n\t\t if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n\t\t _this.update(_emitter4.default.sources.SILENT);\n\t\t }\n\t\t });\n\t\t this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n\t\t var native = _this.getNativeRange();\n\t\t if (native == null) return;\n\t\t if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n\t\t // TODO unclear if this has negative side effects\n\t\t _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n\t\t try {\n\t\t _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n\t\t } catch (ignored) {}\n\t\t });\n\t\t });\n\t\t this.update(_emitter4.default.sources.SILENT);\n\t\t }\n\t\n\t\t _createClass(Selection, [{\n\t\t key: 'focus',\n\t\t value: function focus() {\n\t\t if (this.hasFocus()) return;\n\t\t this.root.focus();\n\t\t this.setRange(this.savedRange);\n\t\t }\n\t\t }, {\n\t\t key: 'format',\n\t\t value: function format(_format, value) {\n\t\t if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n\t\t this.scroll.update();\n\t\t var nativeRange = this.getNativeRange();\n\t\t if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n\t\t if (nativeRange.start.node !== this.cursor.textNode) {\n\t\t var blot = _parchment2.default.find(nativeRange.start.node, false);\n\t\t if (blot == null) return;\n\t\t // TODO Give blot ability to not split\n\t\t if (blot instanceof _parchment2.default.Leaf) {\n\t\t var after = blot.split(nativeRange.start.offset);\n\t\t blot.parent.insertBefore(this.cursor, after);\n\t\t } else {\n\t\t blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n\t\t }\n\t\t this.cursor.attach();\n\t\t }\n\t\t this.cursor.format(_format, value);\n\t\t this.scroll.optimize();\n\t\t this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n\t\t this.update();\n\t\t }\n\t\t }, {\n\t\t key: 'getBounds',\n\t\t value: function getBounds(index) {\n\t\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t\t var scrollLength = this.scroll.length();\n\t\t index = Math.min(index, scrollLength - 1);\n\t\t length = Math.min(index + length, scrollLength - 1) - index;\n\t\t var bounds = void 0,\n\t\t node = void 0,\n\t\t _scroll$leaf = this.scroll.leaf(index),\n\t\t _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n\t\t leaf = _scroll$leaf2[0],\n\t\t offset = _scroll$leaf2[1];\n\t\t if (leaf == null) return null;\n\t\n\t\t var _leaf$position = leaf.position(offset, true);\n\t\n\t\t var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\t\n\t\t node = _leaf$position2[0];\n\t\t offset = _leaf$position2[1];\n\t\n\t\t var range = document.createRange();\n\t\t if (length > 0) {\n\t\t range.setStart(node, offset);\n\t\n\t\t var _scroll$leaf3 = this.scroll.leaf(index + length);\n\t\n\t\t var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\t\n\t\t leaf = _scroll$leaf4[0];\n\t\t offset = _scroll$leaf4[1];\n\t\n\t\t if (leaf == null) return null;\n\t\n\t\t var _leaf$position3 = leaf.position(offset, true);\n\t\n\t\t var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\t\n\t\t node = _leaf$position4[0];\n\t\t offset = _leaf$position4[1];\n\t\n\t\t range.setEnd(node, offset);\n\t\t bounds = range.getBoundingClientRect();\n\t\t } else {\n\t\t var side = 'left';\n\t\t var rect = void 0;\n\t\t if (node instanceof Text) {\n\t\t if (offset < node.data.length) {\n\t\t range.setStart(node, offset);\n\t\t range.setEnd(node, offset + 1);\n\t\t } else {\n\t\t range.setStart(node, offset - 1);\n\t\t range.setEnd(node, offset);\n\t\t side = 'right';\n\t\t }\n\t\t rect = range.getBoundingClientRect();\n\t\t } else {\n\t\t rect = leaf.domNode.getBoundingClientRect();\n\t\t if (offset > 0) side = 'right';\n\t\t }\n\t\t bounds = {\n\t\t height: rect.height,\n\t\t left: rect[side],\n\t\t width: 0,\n\t\t top: rect.top\n\t\t };\n\t\t }\n\t\t var containerBounds = this.root.parentNode.getBoundingClientRect();\n\t\t return {\n\t\t left: bounds.left - containerBounds.left,\n\t\t right: bounds.left + bounds.width - containerBounds.left,\n\t\t top: bounds.top - containerBounds.top,\n\t\t bottom: bounds.top + bounds.height - containerBounds.top,\n\t\t height: bounds.height,\n\t\t width: bounds.width\n\t\t };\n\t\t }\n\t\t }, {\n\t\t key: 'getNativeRange',\n\t\t value: function getNativeRange() {\n\t\t var selection = document.getSelection();\n\t\t if (selection == null || selection.rangeCount <= 0) return null;\n\t\t var nativeRange = selection.getRangeAt(0);\n\t\t if (nativeRange == null) return null;\n\t\t if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n\t\t return null;\n\t\t }\n\t\t var range = {\n\t\t start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n\t\t end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n\t\t native: nativeRange\n\t\t };\n\t\t [range.start, range.end].forEach(function (position) {\n\t\t var node = position.node,\n\t\t offset = position.offset;\n\t\t while (!(node instanceof Text) && node.childNodes.length > 0) {\n\t\t if (node.childNodes.length > offset) {\n\t\t node = node.childNodes[offset];\n\t\t offset = 0;\n\t\t } else if (node.childNodes.length === offset) {\n\t\t node = node.lastChild;\n\t\t offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n\t\t } else {\n\t\t break;\n\t\t }\n\t\t }\n\t\t position.node = node, position.offset = offset;\n\t\t });\n\t\t debug.info('getNativeRange', range);\n\t\t return range;\n\t\t }\n\t\t }, {\n\t\t key: 'getRange',\n\t\t value: function getRange() {\n\t\t var _this2 = this;\n\t\n\t\t var range = this.getNativeRange();\n\t\t if (range == null) return [null, null];\n\t\t var positions = [[range.start.node, range.start.offset]];\n\t\t if (!range.native.collapsed) {\n\t\t positions.push([range.end.node, range.end.offset]);\n\t\t }\n\t\t var indexes = positions.map(function (position) {\n\t\t var _position = _slicedToArray(position, 2),\n\t\t node = _position[0],\n\t\t offset = _position[1];\n\t\n\t\t var blot = _parchment2.default.find(node, true);\n\t\t var index = blot.offset(_this2.scroll);\n\t\t if (offset === 0) {\n\t\t return index;\n\t\t } else if (blot instanceof _parchment2.default.Container) {\n\t\t return index + blot.length();\n\t\t } else {\n\t\t return index + blot.index(node, offset);\n\t\t }\n\t\t });\n\t\t var start = Math.min.apply(Math, _toConsumableArray(indexes)),\n\t\t end = Math.max.apply(Math, _toConsumableArray(indexes));\n\t\t end = Math.min(end, this.scroll.length() - 1);\n\t\t return [new Range(start, end - start), range];\n\t\t }\n\t\t }, {\n\t\t key: 'hasFocus',\n\t\t value: function hasFocus() {\n\t\t return document.activeElement === this.root;\n\t\t }\n\t\t }, {\n\t\t key: 'scrollIntoView',\n\t\t value: function scrollIntoView() {\n\t\t var range = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastRange;\n\t\n\t\t if (range == null) return;\n\t\t var bounds = this.getBounds(range.index, range.length);\n\t\t if (bounds == null) return;\n\t\t if (this.root.offsetHeight < bounds.bottom) {\n\t\t var _scroll$line = this.scroll.line(Math.min(range.index + range.length, this.scroll.length() - 1)),\n\t\t _scroll$line2 = _slicedToArray(_scroll$line, 1),\n\t\t line = _scroll$line2[0];\n\t\n\t\t this.root.scrollTop = line.domNode.offsetTop + line.domNode.offsetHeight - this.root.offsetHeight;\n\t\t } else if (bounds.top < 0) {\n\t\t var _scroll$line3 = this.scroll.line(Math.min(range.index, this.scroll.length() - 1)),\n\t\t _scroll$line4 = _slicedToArray(_scroll$line3, 1),\n\t\t _line = _scroll$line4[0];\n\t\n\t\t this.root.scrollTop = _line.domNode.offsetTop;\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'setNativeRange',\n\t\t value: function setNativeRange(startNode, startOffset) {\n\t\t var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n\t\t var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n\t\t var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t\n\t\t debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n\t\t if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n\t\t return;\n\t\t }\n\t\t var selection = document.getSelection();\n\t\t if (selection == null) return;\n\t\t if (startNode != null) {\n\t\t if (!this.hasFocus()) this.root.focus();\n\t\t var native = (this.getNativeRange() || {}).native;\n\t\t if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\t\n\t\t if (startNode.tagName == \"BR\") {\n\t\t startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n\t\t startNode = startNode.parentNode;\n\t\t }\n\t\t if (endNode.tagName == \"BR\") {\n\t\t endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n\t\t endNode = endNode.parentNode;\n\t\t }\n\t\t var range = document.createRange();\n\t\t range.setStart(startNode, startOffset);\n\t\t range.setEnd(endNode, endOffset);\n\t\t selection.removeAllRanges();\n\t\t selection.addRange(range);\n\t\t }\n\t\t } else {\n\t\t selection.removeAllRanges();\n\t\t this.root.blur();\n\t\t document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'setRange',\n\t\t value: function setRange(range) {\n\t\t var _this3 = this;\n\t\n\t\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\t\n\t\t if (typeof force === 'string') {\n\t\t source = force;\n\t\t force = false;\n\t\t }\n\t\t debug.info('setRange', range);\n\t\t if (range != null) {\n\t\t (function () {\n\t\t var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n\t\t var args = [];\n\t\t var scrollLength = _this3.scroll.length();\n\t\t indexes.forEach(function (index, i) {\n\t\t index = Math.min(scrollLength - 1, index);\n\t\t var node = void 0,\n\t\t _scroll$leaf5 = _this3.scroll.leaf(index),\n\t\t _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n\t\t leaf = _scroll$leaf6[0],\n\t\t offset = _scroll$leaf6[1];\n\t\t var _leaf$position5 = leaf.position(offset, i !== 0);\n\t\n\t\t var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\t\n\t\t node = _leaf$position6[0];\n\t\t offset = _leaf$position6[1];\n\t\n\t\t args.push(node, offset);\n\t\t });\n\t\t if (args.length < 2) {\n\t\t args = args.concat(args);\n\t\t }\n\t\t _this3.setNativeRange.apply(_this3, _toConsumableArray(args).concat([force]));\n\t\t })();\n\t\t } else {\n\t\t this.setNativeRange(null);\n\t\t }\n\t\t this.update(source);\n\t\t }\n\t\t }, {\n\t\t key: 'update',\n\t\t value: function update() {\n\t\t var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\t\n\t\t var oldRange = this.lastRange;\n\t\n\t\t var _getRange = this.getRange(),\n\t\t _getRange2 = _slicedToArray(_getRange, 2),\n\t\t lastRange = _getRange2[0],\n\t\t nativeRange = _getRange2[1];\n\t\n\t\t this.lastRange = lastRange;\n\t\t if (this.lastRange != null) {\n\t\t this.savedRange = this.lastRange;\n\t\t }\n\t\t if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n\t\t var _emitter;\n\t\n\t\t if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n\t\t this.cursor.restore();\n\t\t }\n\t\t var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n\t\t (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\t\t if (source !== _emitter4.default.sources.SILENT) {\n\t\t var _emitter2;\n\t\n\t\t (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n\t\t }\n\t\t }\n\t\t }\n\t\t }]);\n\t\n\t\t return Selection;\n\t\t}();\n\t\n\t\tfunction contains(parent, descendant) {\n\t\t try {\n\t\t // Firefox inserts inaccessible nodes around video elements\n\t\t descendant.parentNode;\n\t\t } catch (e) {\n\t\t return false;\n\t\t }\n\t\t // IE11 has bug with Text nodes\n\t\t // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n\t\t if (descendant instanceof Text) {\n\t\t descendant = descendant.parentNode;\n\t\t }\n\t\t return parent.contains(descendant);\n\t\t}\n\t\n\t\texports.Range = Range;\n\t\texports.default = Selection;\n\t\n\t/***/ },\n\t/* 41 */\n\t/***/ function(module, exports) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tvar Theme = function () {\n\t\t function Theme(quill, options) {\n\t\t _classCallCheck(this, Theme);\n\t\n\t\t this.quill = quill;\n\t\t this.options = options;\n\t\t this.modules = {};\n\t\t }\n\t\n\t\t _createClass(Theme, [{\n\t\t key: 'init',\n\t\t value: function init() {\n\t\t var _this = this;\n\t\n\t\t Object.keys(this.options.modules).forEach(function (name) {\n\t\t if (_this.modules[name] == null) {\n\t\t _this.addModule(name);\n\t\t }\n\t\t });\n\t\t }\n\t\t }, {\n\t\t key: 'addModule',\n\t\t value: function addModule(name) {\n\t\t var moduleClass = this.quill.constructor.import('modules/' + name);\n\t\t this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n\t\t return this.modules[name];\n\t\t }\n\t\t }]);\n\t\n\t\t return Theme;\n\t\t}();\n\t\n\t\tTheme.DEFAULTS = {\n\t\t modules: {}\n\t\t};\n\t\tTheme.themes = {\n\t\t 'default': Theme\n\t\t};\n\t\n\t\texports.default = Theme;\n\t\n\t/***/ },\n\t/* 42 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _block = __webpack_require__(29);\n\t\n\t\tvar _block2 = _interopRequireDefault(_block);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Container = function (_Parchment$Container) {\n\t\t _inherits(Container, _Parchment$Container);\n\t\n\t\t function Container() {\n\t\t _classCallCheck(this, Container);\n\t\n\t\t return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n\t\t }\n\t\n\t\t return Container;\n\t\t}(_parchment2.default.Container);\n\t\n\t\tContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\t\n\t\texports.default = Container;\n\t\n\t/***/ },\n\t/* 43 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _emitter = __webpack_require__(35);\n\t\n\t\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\t\tvar _block = __webpack_require__(29);\n\t\n\t\tvar _block2 = _interopRequireDefault(_block);\n\t\n\t\tvar _break = __webpack_require__(30);\n\t\n\t\tvar _break2 = _interopRequireDefault(_break);\n\t\n\t\tvar _container = __webpack_require__(42);\n\t\n\t\tvar _container2 = _interopRequireDefault(_container);\n\t\n\t\tvar _code = __webpack_require__(28);\n\t\n\t\tvar _code2 = _interopRequireDefault(_code);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tfunction isLine(blot) {\n\t\t return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n\t\t}\n\t\n\t\tvar Scroll = function (_Parchment$Scroll) {\n\t\t _inherits(Scroll, _Parchment$Scroll);\n\t\n\t\t function Scroll(domNode, config) {\n\t\t _classCallCheck(this, Scroll);\n\t\n\t\t var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\t\n\t\t _this.emitter = config.emitter;\n\t\t if (Array.isArray(config.whitelist)) {\n\t\t _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n\t\t whitelist[format] = true;\n\t\t return whitelist;\n\t\t }, {});\n\t\t }\n\t\t _this.optimize();\n\t\t _this.enable();\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(Scroll, [{\n\t\t key: 'deleteAt',\n\t\t value: function deleteAt(index, length) {\n\t\t var _line = this.line(index),\n\t\t _line2 = _slicedToArray(_line, 2),\n\t\t first = _line2[0],\n\t\t offset = _line2[1];\n\t\n\t\t var _line3 = this.line(index + length),\n\t\t _line4 = _slicedToArray(_line3, 1),\n\t\t last = _line4[0];\n\t\n\t\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n\t\t if (last != null && first !== last && offset > 0 && !(first instanceof _block.BlockEmbed) && !(last instanceof _block.BlockEmbed)) {\n\t\t if (last instanceof _code2.default) {\n\t\t last.deleteAt(last.length() - 1, 1);\n\t\t }\n\t\t var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n\t\t first.moveChildren(last, ref);\n\t\t first.remove();\n\t\t }\n\t\t this.optimize();\n\t\t }\n\t\t }, {\n\t\t key: 'enable',\n\t\t value: function enable() {\n\t\t var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t\n\t\t this.domNode.setAttribute('contenteditable', enabled);\n\t\t }\n\t\t }, {\n\t\t key: 'formatAt',\n\t\t value: function formatAt(index, length, format, value) {\n\t\t if (this.whitelist != null && !this.whitelist[format]) return;\n\t\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n\t\t this.optimize();\n\t\t }\n\t\t }, {\n\t\t key: 'insertAt',\n\t\t value: function insertAt(index, value, def) {\n\t\t if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n\t\t if (index >= this.length()) {\n\t\t if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n\t\t var blot = _parchment2.default.create(this.statics.defaultChild);\n\t\t this.appendChild(blot);\n\t\t if (def == null && value.endsWith('\\n')) {\n\t\t value = value.slice(0, -1);\n\t\t }\n\t\t blot.insertAt(0, value, def);\n\t\t } else {\n\t\t var embed = _parchment2.default.create(value, def);\n\t\t this.appendChild(embed);\n\t\t }\n\t\t } else {\n\t\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n\t\t }\n\t\t this.optimize();\n\t\t }\n\t\t }, {\n\t\t key: 'insertBefore',\n\t\t value: function insertBefore(blot, ref) {\n\t\t if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n\t\t var wrapper = _parchment2.default.create(this.statics.defaultChild);\n\t\t wrapper.appendChild(blot);\n\t\t blot = wrapper;\n\t\t }\n\t\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n\t\t }\n\t\t }, {\n\t\t key: 'leaf',\n\t\t value: function leaf(index) {\n\t\t return this.path(index).pop() || [null, -1];\n\t\t }\n\t\t }, {\n\t\t key: 'line',\n\t\t value: function line(index) {\n\t\t if (index === this.length()) {\n\t\t return this.line(index - 1);\n\t\t }\n\t\t return this.descendant(isLine, index);\n\t\t }\n\t\t }, {\n\t\t key: 'lines',\n\t\t value: function lines() {\n\t\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\t\n\t\t var getLines = function getLines(blot, index, length) {\n\t\t var lines = [],\n\t\t lengthLeft = length;\n\t\t blot.children.forEachAt(index, length, function (child, index, length) {\n\t\t if (isLine(child)) {\n\t\t lines.push(child);\n\t\t } else if (child instanceof _parchment2.default.Container) {\n\t\t lines = lines.concat(getLines(child, index, lengthLeft));\n\t\t }\n\t\t lengthLeft -= length;\n\t\t });\n\t\t return lines;\n\t\t };\n\t\t return getLines(this, index, length);\n\t\t }\n\t\t }, {\n\t\t key: 'optimize',\n\t\t value: function optimize() {\n\t\t var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\t\n\t\t if (this.batch === true) return;\n\t\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations);\n\t\t if (mutations.length > 0) {\n\t\t this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'path',\n\t\t value: function path(index) {\n\t\t return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n\t\t }\n\t\t }, {\n\t\t key: 'update',\n\t\t value: function update(mutations) {\n\t\t if (this.batch === true) return;\n\t\t var source = _emitter2.default.sources.USER;\n\t\t if (typeof mutations === 'string') {\n\t\t source = mutations;\n\t\t }\n\t\t if (!Array.isArray(mutations)) {\n\t\t mutations = this.observer.takeRecords();\n\t\t }\n\t\t if (mutations.length > 0) {\n\t\t this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n\t\t }\n\t\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n\t\t if (mutations.length > 0) {\n\t\t this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n\t\t }\n\t\t }\n\t\t }]);\n\t\n\t\t return Scroll;\n\t\t}(_parchment2.default.Scroll);\n\t\n\t\tScroll.blotName = 'scroll';\n\t\tScroll.className = 'ql-editor';\n\t\tScroll.tagName = 'DIV';\n\t\tScroll.defaultChild = 'block';\n\t\tScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\t\n\t\texports.default = Scroll;\n\t\n\t/***/ },\n\t/* 44 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _quillDelta = __webpack_require__(20);\n\t\n\t\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _quill = __webpack_require__(18);\n\t\n\t\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\t\tvar _logger = __webpack_require__(37);\n\t\n\t\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\t\tvar _module = __webpack_require__(39);\n\t\n\t\tvar _module2 = _interopRequireDefault(_module);\n\t\n\t\tvar _align = __webpack_require__(45);\n\t\n\t\tvar _background = __webpack_require__(46);\n\t\n\t\tvar _color = __webpack_require__(47);\n\t\n\t\tvar _direction = __webpack_require__(48);\n\t\n\t\tvar _font = __webpack_require__(49);\n\t\n\t\tvar _size = __webpack_require__(50);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _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; }\n\t\n\t\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar debug = (0, _logger2.default)('quill:clipboard');\n\t\n\t\tvar DOM_KEY = '__ql-matcher';\n\t\n\t\tvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\t\n\t\tvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n\t\t memo[attr.keyName] = attr;\n\t\t return memo;\n\t\t}, {});\n\t\n\t\tvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n\t\t memo[attr.keyName] = attr;\n\t\t return memo;\n\t\t}, {});\n\t\n\t\tvar Clipboard = function (_Module) {\n\t\t _inherits(Clipboard, _Module);\n\t\n\t\t function Clipboard(quill, options) {\n\t\t _classCallCheck(this, Clipboard);\n\t\n\t\t var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\t\n\t\t _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n\t\t _this.container = _this.quill.addContainer('ql-clipboard');\n\t\t _this.container.setAttribute('contenteditable', true);\n\t\t _this.container.setAttribute('tabindex', -1);\n\t\t _this.matchers = [];\n\t\t CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (pair) {\n\t\t _this.addMatcher.apply(_this, _toConsumableArray(pair));\n\t\t });\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(Clipboard, [{\n\t\t key: 'addMatcher',\n\t\t value: function addMatcher(selector, matcher) {\n\t\t this.matchers.push([selector, matcher]);\n\t\t }\n\t\t }, {\n\t\t key: 'convert',\n\t\t value: function convert(html) {\n\t\t if (typeof html === 'string') {\n\t\t this.container.innerHTML = html;\n\t\t }\n\t\n\t\t var _prepareMatching = this.prepareMatching(),\n\t\t _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n\t\t elementMatchers = _prepareMatching2[0],\n\t\t textMatchers = _prepareMatching2[1];\n\t\n\t\t var delta = traverse(this.container, elementMatchers, textMatchers);\n\t\t // Remove trailing newline\n\t\t if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n\t\t delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n\t\t }\n\t\t debug.log('convert', this.container.innerHTML, delta);\n\t\t this.container.innerHTML = '';\n\t\t return delta;\n\t\t }\n\t\t }, {\n\t\t key: 'dangerouslyPasteHTML',\n\t\t value: function dangerouslyPasteHTML(index, html) {\n\t\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\t\n\t\t if (typeof index === 'string') {\n\t\t return this.quill.setContents(this.convert(index), html);\n\t\t } else {\n\t\t var paste = this.convert(html);\n\t\t return this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'onPaste',\n\t\t value: function onPaste(e) {\n\t\t var _this2 = this;\n\t\n\t\t if (e.defaultPrevented || !this.quill.isEnabled()) return;\n\t\t var range = this.quill.getSelection();\n\t\t var delta = new _quillDelta2.default().retain(range.index);\n\t\t var scrollTop = this.quill.scrollingContainer.scrollTop;\n\t\t this.container.focus();\n\t\t setTimeout(function () {\n\t\t _this2.quill.selection.update(_quill2.default.sources.SILENT);\n\t\t delta = delta.concat(_this2.convert()).delete(range.length);\n\t\t _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n\t\t // range.length contributes to delta.length()\n\t\t _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n\t\t _this2.quill.scrollingContainer.scrollTop = scrollTop;\n\t\t _this2.quill.selection.scrollIntoView();\n\t\t }, 1);\n\t\t }\n\t\t }, {\n\t\t key: 'prepareMatching',\n\t\t value: function prepareMatching() {\n\t\t var _this3 = this;\n\t\n\t\t var elementMatchers = [],\n\t\t textMatchers = [];\n\t\t this.matchers.forEach(function (pair) {\n\t\t var _pair = _slicedToArray(pair, 2),\n\t\t selector = _pair[0],\n\t\t matcher = _pair[1];\n\t\n\t\t switch (selector) {\n\t\t case Node.TEXT_NODE:\n\t\t textMatchers.push(matcher);\n\t\t break;\n\t\t case Node.ELEMENT_NODE:\n\t\t elementMatchers.push(matcher);\n\t\t break;\n\t\t default:\n\t\t [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n\t\t // TODO use weakmap\n\t\t node[DOM_KEY] = node[DOM_KEY] || [];\n\t\t node[DOM_KEY].push(matcher);\n\t\t });\n\t\t break;\n\t\t }\n\t\t });\n\t\t return [elementMatchers, textMatchers];\n\t\t }\n\t\t }]);\n\t\n\t\t return Clipboard;\n\t\t}(_module2.default);\n\t\n\t\tClipboard.DEFAULTS = {\n\t\t matchers: []\n\t\t};\n\t\n\t\tfunction computeStyle(node) {\n\t\t if (node.nodeType !== Node.ELEMENT_NODE) return {};\n\t\t var DOM_KEY = '__ql-computed-style';\n\t\t return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n\t\t}\n\t\n\t\tfunction deltaEndsWith(delta, text) {\n\t\t var endText = \"\";\n\t\t for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n\t\t var op = delta.ops[i];\n\t\t if (typeof op.insert !== 'string') break;\n\t\t endText = op.insert + endText;\n\t\t }\n\t\t return endText.slice(-1 * text.length) === text;\n\t\t}\n\t\n\t\tfunction isLine(node) {\n\t\t if (node.childNodes.length === 0) return false; // Exclude embed blocks\n\t\t var style = computeStyle(node);\n\t\t return ['block', 'list-item'].indexOf(style.display) > -1;\n\t\t}\n\t\n\t\tfunction traverse(node, elementMatchers, textMatchers) {\n\t\t // Post-order\n\t\t if (node.nodeType === node.TEXT_NODE) {\n\t\t return textMatchers.reduce(function (delta, matcher) {\n\t\t return matcher(node, delta);\n\t\t }, new _quillDelta2.default());\n\t\t } else if (node.nodeType === node.ELEMENT_NODE) {\n\t\t return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n\t\t var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n\t\t if (childNode.nodeType === node.ELEMENT_NODE) {\n\t\t childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n\t\t return matcher(childNode, childrenDelta);\n\t\t }, childrenDelta);\n\t\t childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n\t\t return matcher(childNode, childrenDelta);\n\t\t }, childrenDelta);\n\t\t }\n\t\t return delta.concat(childrenDelta);\n\t\t }, new _quillDelta2.default());\n\t\t } else {\n\t\t return new _quillDelta2.default();\n\t\t }\n\t\t}\n\t\n\t\tfunction matchAlias(format, node, delta) {\n\t\t return delta.compose(new _quillDelta2.default().retain(delta.length(), _defineProperty({}, format, true)));\n\t\t}\n\t\n\t\tfunction matchAttributor(node, delta) {\n\t\t var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n\t\t var classes = _parchment2.default.Attributor.Class.keys(node);\n\t\t var styles = _parchment2.default.Attributor.Style.keys(node);\n\t\t var formats = {};\n\t\t attributes.concat(classes).concat(styles).forEach(function (name) {\n\t\t var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n\t\t if (attr != null) {\n\t\t formats[attr.attrName] = attr.value(node);\n\t\t if (formats[attr.attrName]) return;\n\t\t }\n\t\t if (ATTRIBUTE_ATTRIBUTORS[name] != null) {\n\t\t attr = ATTRIBUTE_ATTRIBUTORS[name];\n\t\t formats[attr.attrName] = attr.value(node) || undefined;\n\t\t }\n\t\t if (STYLE_ATTRIBUTORS[name] != null) {\n\t\t attr = STYLE_ATTRIBUTORS[name];\n\t\t formats[attr.attrName] = attr.value(node) || undefined;\n\t\t }\n\t\t });\n\t\t if (Object.keys(formats).length > 0) {\n\t\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t\t }\n\t\t return delta;\n\t\t}\n\t\n\t\tfunction matchBlot(node, delta) {\n\t\t var match = _parchment2.default.query(node);\n\t\t if (match == null) return delta;\n\t\t if (match.prototype instanceof _parchment2.default.Embed) {\n\t\t var embed = {};\n\t\t var value = match.value(node);\n\t\t if (value != null) {\n\t\t embed[match.blotName] = value;\n\t\t delta = new _quillDelta2.default().insert(embed, match.formats(node));\n\t\t }\n\t\t } else if (typeof match.formats === 'function') {\n\t\t var formats = _defineProperty({}, match.blotName, match.formats(node));\n\t\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t\t }\n\t\t return delta;\n\t\t}\n\t\n\t\tfunction matchBreak(node, delta) {\n\t\t if (!deltaEndsWith(delta, '\\n')) {\n\t\t delta.insert('\\n');\n\t\t }\n\t\t return delta;\n\t\t}\n\t\n\t\tfunction matchIgnore() {\n\t\t return new _quillDelta2.default();\n\t\t}\n\t\n\t\tfunction matchNewline(node, delta) {\n\t\t if (isLine(node) && !deltaEndsWith(delta, '\\n')) {\n\t\t delta.insert('\\n');\n\t\t }\n\t\t return delta;\n\t\t}\n\t\n\t\tfunction matchSpacing(node, delta) {\n\t\t if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n\t\t var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n\t\t if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n\t\t delta.insert('\\n');\n\t\t }\n\t\t }\n\t\t return delta;\n\t\t}\n\t\n\t\tfunction matchStyles(node, delta) {\n\t\t var formats = {};\n\t\t var style = node.style || {};\n\t\t if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n\t\t formats.italic = true;\n\t\t }\n\t\t if (style.fontWeight && computeStyle(node).fontWeight === 'bold') {\n\t\t formats.bold = true;\n\t\t }\n\t\t if (Object.keys(formats).length > 0) {\n\t\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t\t }\n\t\t if (parseFloat(style.textIndent || 0) > 0) {\n\t\t // Could be 0.5in\n\t\t delta = new _quillDelta2.default().insert('\\t').concat(delta);\n\t\t }\n\t\t return delta;\n\t\t}\n\t\n\t\tfunction matchText(node, delta) {\n\t\t var text = node.data;\n\t\t // Word represents empty line with \n\t\t if (node.parentNode.tagName === 'O:P') {\n\t\t return delta.insert(text.trim());\n\t\t }\n\t\t if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n\t\t // eslint-disable-next-line func-style\n\t\t var replacer = function replacer(collapse, match) {\n\t\t match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n\t\t return match.length < 1 && collapse ? ' ' : match;\n\t\t };\n\t\t text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n\t\t text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n\t\t if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n\t\t text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n\t\t }\n\t\t if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n\t\t text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n\t\t }\n\t\t }\n\t\t return delta.insert(text);\n\t\t}\n\t\n\t\texports.default = Clipboard;\n\t\texports.matchAttributor = matchAttributor;\n\t\texports.matchBlot = matchBlot;\n\t\texports.matchNewline = matchNewline;\n\t\texports.matchSpacing = matchSpacing;\n\t\texports.matchText = matchText;\n\t\n\t/***/ },\n\t/* 45 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tvar config = {\n\t\t scope: _parchment2.default.Scope.BLOCK,\n\t\t whitelist: ['right', 'center', 'justify']\n\t\t};\n\t\n\t\tvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\n\t\tvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\n\t\tvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\t\n\t\texports.AlignAttribute = AlignAttribute;\n\t\texports.AlignClass = AlignClass;\n\t\texports.AlignStyle = AlignStyle;\n\t\n\t/***/ },\n\t/* 46 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.BackgroundStyle = exports.BackgroundClass = undefined;\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _color = __webpack_require__(47);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n\t\t scope: _parchment2.default.Scope.INLINE\n\t\t});\n\t\tvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n\t\t scope: _parchment2.default.Scope.INLINE\n\t\t});\n\t\n\t\texports.BackgroundClass = BackgroundClass;\n\t\texports.BackgroundStyle = BackgroundStyle;\n\t\n\t/***/ },\n\t/* 47 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar ColorAttributor = function (_Parchment$Attributor) {\n\t\t _inherits(ColorAttributor, _Parchment$Attributor);\n\t\n\t\t function ColorAttributor() {\n\t\t _classCallCheck(this, ColorAttributor);\n\t\n\t\t return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(ColorAttributor, [{\n\t\t key: 'value',\n\t\t value: function value(domNode) {\n\t\t var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n\t\t if (!value.startsWith('rgb(')) return value;\n\t\t value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n\t\t return '#' + value.split(',').map(function (component) {\n\t\t return ('00' + parseInt(component).toString(16)).slice(-2);\n\t\t }).join('');\n\t\t }\n\t\t }]);\n\t\n\t\t return ColorAttributor;\n\t\t}(_parchment2.default.Attributor.Style);\n\t\n\t\tvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n\t\t scope: _parchment2.default.Scope.INLINE\n\t\t});\n\t\tvar ColorStyle = new ColorAttributor('color', 'color', {\n\t\t scope: _parchment2.default.Scope.INLINE\n\t\t});\n\t\n\t\texports.ColorAttributor = ColorAttributor;\n\t\texports.ColorClass = ColorClass;\n\t\texports.ColorStyle = ColorStyle;\n\t\n\t/***/ },\n\t/* 48 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tvar config = {\n\t\t scope: _parchment2.default.Scope.BLOCK,\n\t\t whitelist: ['rtl']\n\t\t};\n\t\n\t\tvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\n\t\tvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\n\t\tvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\t\n\t\texports.DirectionAttribute = DirectionAttribute;\n\t\texports.DirectionClass = DirectionClass;\n\t\texports.DirectionStyle = DirectionStyle;\n\t\n\t/***/ },\n\t/* 49 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.FontClass = exports.FontStyle = undefined;\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar config = {\n\t\t scope: _parchment2.default.Scope.INLINE,\n\t\t whitelist: ['serif', 'monospace']\n\t\t};\n\t\n\t\tvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\t\n\t\tvar FontStyleAttributor = function (_Parchment$Attributor) {\n\t\t _inherits(FontStyleAttributor, _Parchment$Attributor);\n\t\n\t\t function FontStyleAttributor() {\n\t\t _classCallCheck(this, FontStyleAttributor);\n\t\n\t\t return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(FontStyleAttributor, [{\n\t\t key: 'value',\n\t\t value: function value(node) {\n\t\t return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n\t\t }\n\t\t }]);\n\t\n\t\t return FontStyleAttributor;\n\t\t}(_parchment2.default.Attributor.Style);\n\t\n\t\tvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\t\n\t\texports.FontStyle = FontStyle;\n\t\texports.FontClass = FontClass;\n\t\n\t/***/ },\n\t/* 50 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.SizeStyle = exports.SizeClass = undefined;\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n\t\t scope: _parchment2.default.Scope.INLINE,\n\t\t whitelist: ['small', 'large', 'huge']\n\t\t});\n\t\tvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n\t\t scope: _parchment2.default.Scope.INLINE,\n\t\t whitelist: ['10px', '18px', '32px']\n\t\t});\n\t\n\t\texports.SizeClass = SizeClass;\n\t\texports.SizeStyle = SizeStyle;\n\t\n\t/***/ },\n\t/* 51 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.getLastChangeIndex = exports.default = undefined;\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _quill = __webpack_require__(18);\n\t\n\t\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\t\tvar _module = __webpack_require__(39);\n\t\n\t\tvar _module2 = _interopRequireDefault(_module);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar History = function (_Module) {\n\t\t _inherits(History, _Module);\n\t\n\t\t function History(quill, options) {\n\t\t _classCallCheck(this, History);\n\t\n\t\t var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\t\n\t\t _this.lastRecorded = 0;\n\t\t _this.ignoreChange = false;\n\t\t _this.clear();\n\t\t _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n\t\t if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n\t\t if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n\t\t _this.record(delta, oldDelta);\n\t\t } else {\n\t\t _this.transform(delta);\n\t\t }\n\t\t });\n\t\t _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n\t\t _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n\t\t if (/Win/i.test(navigator.platform)) {\n\t\t _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n\t\t }\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(History, [{\n\t\t key: 'change',\n\t\t value: function change(source, dest) {\n\t\t if (this.stack[source].length === 0) return;\n\t\t var delta = this.stack[source].pop();\n\t\t this.lastRecorded = 0;\n\t\t this.ignoreChange = true;\n\t\t this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n\t\t this.ignoreChange = false;\n\t\t var index = getLastChangeIndex(delta[source]);\n\t\t this.quill.setSelection(index);\n\t\t this.quill.selection.scrollIntoView();\n\t\t this.stack[dest].push(delta);\n\t\t }\n\t\t }, {\n\t\t key: 'clear',\n\t\t value: function clear() {\n\t\t this.stack = { undo: [], redo: [] };\n\t\t }\n\t\t }, {\n\t\t key: 'record',\n\t\t value: function record(changeDelta, oldDelta) {\n\t\t if (changeDelta.ops.length === 0) return;\n\t\t this.stack.redo = [];\n\t\t var undoDelta = this.quill.getContents().diff(oldDelta);\n\t\t var timestamp = Date.now();\n\t\t if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n\t\t var delta = this.stack.undo.pop();\n\t\t undoDelta = undoDelta.compose(delta.undo);\n\t\t changeDelta = delta.redo.compose(changeDelta);\n\t\t } else {\n\t\t this.lastRecorded = timestamp;\n\t\t }\n\t\t this.stack.undo.push({\n\t\t redo: changeDelta,\n\t\t undo: undoDelta\n\t\t });\n\t\t if (this.stack.undo.length > this.options.maxStack) {\n\t\t this.stack.undo.shift();\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'redo',\n\t\t value: function redo() {\n\t\t this.change('redo', 'undo');\n\t\t }\n\t\t }, {\n\t\t key: 'transform',\n\t\t value: function transform(delta) {\n\t\t this.stack.undo.forEach(function (change) {\n\t\t change.undo = delta.transform(change.undo, true);\n\t\t change.redo = delta.transform(change.redo, true);\n\t\t });\n\t\t this.stack.redo.forEach(function (change) {\n\t\t change.undo = delta.transform(change.undo, true);\n\t\t change.redo = delta.transform(change.redo, true);\n\t\t });\n\t\t }\n\t\t }, {\n\t\t key: 'undo',\n\t\t value: function undo() {\n\t\t this.change('undo', 'redo');\n\t\t }\n\t\t }]);\n\t\n\t\t return History;\n\t\t}(_module2.default);\n\t\n\t\tHistory.DEFAULTS = {\n\t\t delay: 1000,\n\t\t maxStack: 100,\n\t\t userOnly: false\n\t\t};\n\t\n\t\tfunction endsWithNewlineChange(delta) {\n\t\t var lastOp = delta.ops[delta.ops.length - 1];\n\t\t if (lastOp == null) return false;\n\t\t if (lastOp.insert != null) {\n\t\t return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n\t\t }\n\t\t if (lastOp.attributes != null) {\n\t\t return Object.keys(lastOp.attributes).some(function (attr) {\n\t\t return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n\t\t });\n\t\t }\n\t\t return false;\n\t\t}\n\t\n\t\tfunction getLastChangeIndex(delta) {\n\t\t var deleteLength = delta.reduce(function (length, op) {\n\t\t length += op.delete || 0;\n\t\t return length;\n\t\t }, 0);\n\t\t var changeIndex = delta.length() - deleteLength;\n\t\t if (endsWithNewlineChange(delta)) {\n\t\t changeIndex -= 1;\n\t\t }\n\t\t return changeIndex;\n\t\t}\n\t\n\t\texports.default = History;\n\t\texports.getLastChangeIndex = getLastChangeIndex;\n\t\n\t/***/ },\n\t/* 52 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _clone = __webpack_require__(38);\n\t\n\t\tvar _clone2 = _interopRequireDefault(_clone);\n\t\n\t\tvar _deepEqual = __webpack_require__(22);\n\t\n\t\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\t\n\t\tvar _extend = __webpack_require__(25);\n\t\n\t\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\t\tvar _op = __webpack_require__(26);\n\t\n\t\tvar _op2 = _interopRequireDefault(_op);\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _quill = __webpack_require__(18);\n\t\n\t\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\t\tvar _logger = __webpack_require__(37);\n\t\n\t\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\t\tvar _module = __webpack_require__(39);\n\t\n\t\tvar _module2 = _interopRequireDefault(_module);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar debug = (0, _logger2.default)('quill:keyboard');\n\t\n\t\tvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\t\n\t\tvar Keyboard = function (_Module) {\n\t\t _inherits(Keyboard, _Module);\n\t\n\t\t _createClass(Keyboard, null, [{\n\t\t key: 'match',\n\t\t value: function match(evt, binding) {\n\t\t binding = normalize(binding);\n\t\t if (!!binding.shortKey !== evt[SHORTKEY] && binding.shortKey !== null) return false;\n\t\t if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n\t\t return key != SHORTKEY && !!binding[key] !== evt[key] && binding[key] !== null;\n\t\t })) {\n\t\t return false;\n\t\t }\n\t\t return binding.key === (evt.which || evt.keyCode);\n\t\t }\n\t\t }]);\n\t\n\t\t function Keyboard(quill, options) {\n\t\t _classCallCheck(this, Keyboard);\n\t\n\t\t var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\t\n\t\t _this.bindings = {};\n\t\t Object.keys(_this.options.bindings).forEach(function (name) {\n\t\t if (_this.options.bindings[name]) {\n\t\t _this.addBinding(_this.options.bindings[name]);\n\t\t }\n\t\t });\n\t\t _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n\t\t _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n\t\t if (/Firefox/i.test(navigator.userAgent)) {\n\t\t // Need to handle delete and backspace for Firefox in the general case #1171\n\t\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n\t\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n\t\t } else {\n\t\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n\t\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n\t\t }\n\t\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n\t\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n\t\t _this.listen();\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(Keyboard, [{\n\t\t key: 'addBinding',\n\t\t value: function addBinding(key) {\n\t\t var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\t var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t\t var binding = normalize(key);\n\t\t if (binding == null || binding.key == null) {\n\t\t return debug.warn('Attempted to add invalid keyboard binding', binding);\n\t\t }\n\t\t if (typeof context === 'function') {\n\t\t context = { handler: context };\n\t\t }\n\t\t if (typeof handler === 'function') {\n\t\t handler = { handler: handler };\n\t\t }\n\t\t binding = (0, _extend2.default)(binding, context, handler);\n\t\t this.bindings[binding.key] = this.bindings[binding.key] || [];\n\t\t this.bindings[binding.key].push(binding);\n\t\t }\n\t\t }, {\n\t\t key: 'listen',\n\t\t value: function listen() {\n\t\t var _this2 = this;\n\t\n\t\t this.quill.root.addEventListener('keydown', function (evt) {\n\t\t if (evt.defaultPrevented) return;\n\t\t var which = evt.which || evt.keyCode;\n\t\t var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n\t\t return Keyboard.match(evt, binding);\n\t\t });\n\t\t if (bindings.length === 0) return;\n\t\t var range = _this2.quill.getSelection();\n\t\t if (range == null || !_this2.quill.hasFocus()) return;\n\t\n\t\t var _quill$getLine = _this2.quill.getLine(range.index),\n\t\t _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n\t\t line = _quill$getLine2[0],\n\t\t offset = _quill$getLine2[1];\n\t\n\t\t var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n\t\t _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n\t\t leafStart = _quill$getLeaf2[0],\n\t\t offsetStart = _quill$getLeaf2[1];\n\t\n\t\t var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n\t\t _ref2 = _slicedToArray(_ref, 2),\n\t\t leafEnd = _ref2[0],\n\t\t offsetEnd = _ref2[1];\n\t\n\t\t var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n\t\t var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n\t\t var curContext = {\n\t\t collapsed: range.length === 0,\n\t\t empty: range.length === 0 && line.length() <= 1,\n\t\t format: _this2.quill.getFormat(range),\n\t\t offset: offset,\n\t\t prefix: prefixText,\n\t\t suffix: suffixText\n\t\t };\n\t\t var prevented = bindings.some(function (binding) {\n\t\t if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n\t\t if (binding.empty != null && binding.empty !== curContext.empty) return false;\n\t\t if (binding.offset != null && binding.offset !== curContext.offset) return false;\n\t\t if (Array.isArray(binding.format)) {\n\t\t // any format is present\n\t\t if (binding.format.every(function (name) {\n\t\t return curContext.format[name] == null;\n\t\t })) {\n\t\t return false;\n\t\t }\n\t\t } else if (_typeof(binding.format) === 'object') {\n\t\t // all formats must match\n\t\t if (!Object.keys(binding.format).every(function (name) {\n\t\t if (binding.format[name] === true) return curContext.format[name] != null;\n\t\t if (binding.format[name] === false) return curContext.format[name] == null;\n\t\t return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n\t\t })) {\n\t\t return false;\n\t\t }\n\t\t }\n\t\t if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n\t\t if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n\t\t return binding.handler.call(_this2, range, curContext) !== true;\n\t\t });\n\t\t if (prevented) {\n\t\t evt.preventDefault();\n\t\t }\n\t\t });\n\t\t }\n\t\t }]);\n\t\n\t\t return Keyboard;\n\t\t}(_module2.default);\n\t\n\t\tKeyboard.keys = {\n\t\t BACKSPACE: 8,\n\t\t TAB: 9,\n\t\t ENTER: 13,\n\t\t ESCAPE: 27,\n\t\t LEFT: 37,\n\t\t UP: 38,\n\t\t RIGHT: 39,\n\t\t DOWN: 40,\n\t\t DELETE: 46\n\t\t};\n\t\n\t\tKeyboard.DEFAULTS = {\n\t\t bindings: {\n\t\t 'bold': makeFormatHandler('bold'),\n\t\t 'italic': makeFormatHandler('italic'),\n\t\t 'underline': makeFormatHandler('underline'),\n\t\t 'indent': {\n\t\t // highlight tab or tab at beginning of list, indent or blockquote\n\t\t key: Keyboard.keys.TAB,\n\t\t format: ['blockquote', 'indent', 'list'],\n\t\t handler: function handler(range, context) {\n\t\t if (context.collapsed && context.offset !== 0) return true;\n\t\t this.quill.format('indent', '+1', _quill2.default.sources.USER);\n\t\t }\n\t\t },\n\t\t 'outdent': {\n\t\t key: Keyboard.keys.TAB,\n\t\t shiftKey: true,\n\t\t format: ['blockquote', 'indent', 'list'],\n\t\t // highlight tab or tab at beginning of list, indent or blockquote\n\t\t handler: function handler(range, context) {\n\t\t if (context.collapsed && context.offset !== 0) return true;\n\t\t this.quill.format('indent', '-1', _quill2.default.sources.USER);\n\t\t }\n\t\t },\n\t\t 'outdent backspace': {\n\t\t key: Keyboard.keys.BACKSPACE,\n\t\t collapsed: true,\n\t\t format: ['blockquote', 'indent', 'list'],\n\t\t offset: 0,\n\t\t handler: function handler(range, context) {\n\t\t if (context.format.indent != null) {\n\t\t this.quill.format('indent', '-1', _quill2.default.sources.USER);\n\t\t } else if (context.format.blockquote != null) {\n\t\t this.quill.format('blockquote', false, _quill2.default.sources.USER);\n\t\t } else if (context.format.list != null) {\n\t\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t\t }\n\t\t }\n\t\t },\n\t\t 'indent code-block': makeCodeBlockHandler(true),\n\t\t 'outdent code-block': makeCodeBlockHandler(false),\n\t\t 'remove tab': {\n\t\t key: Keyboard.keys.TAB,\n\t\t shiftKey: true,\n\t\t collapsed: true,\n\t\t prefix: /\\t$/,\n\t\t handler: function handler(range) {\n\t\t this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n\t\t }\n\t\t },\n\t\t 'tab': {\n\t\t key: Keyboard.keys.TAB,\n\t\t handler: function handler(range, context) {\n\t\t if (!context.collapsed) {\n\t\t this.quill.scroll.deleteAt(range.index, range.length);\n\t\t }\n\t\t this.quill.insertText(range.index, '\\t', _quill2.default.sources.USER);\n\t\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t\t }\n\t\t },\n\t\t 'list empty enter': {\n\t\t key: Keyboard.keys.ENTER,\n\t\t collapsed: true,\n\t\t format: ['list'],\n\t\t empty: true,\n\t\t handler: function handler(range, context) {\n\t\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t\t if (context.format.indent) {\n\t\t this.quill.format('indent', false, _quill2.default.sources.USER);\n\t\t }\n\t\t }\n\t\t },\n\t\t 'checklist enter': {\n\t\t key: Keyboard.keys.ENTER,\n\t\t collapsed: true,\n\t\t format: { list: 'checked' },\n\t\t handler: function handler(range) {\n\t\t this.quill.scroll.insertAt(range.index, '\\n');\n\t\n\t\t var _quill$getLine3 = this.quill.getLine(range.index + 1),\n\t\t _quill$getLine4 = _slicedToArray(_quill$getLine3, 1),\n\t\t line = _quill$getLine4[0];\n\t\n\t\t line.format('list', 'unchecked');\n\t\t this.quill.update(_quill2.default.sources.USER);\n\t\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t\t this.quill.selection.scrollIntoView();\n\t\t }\n\t\t },\n\t\t 'header enter': {\n\t\t key: Keyboard.keys.ENTER,\n\t\t collapsed: true,\n\t\t format: ['header'],\n\t\t suffix: /^$/,\n\t\t handler: function handler(range) {\n\t\t this.quill.scroll.insertAt(range.index, '\\n');\n\t\t this.quill.formatText(range.index + 1, 1, 'header', false, _quill2.default.sources.USER);\n\t\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t\t this.quill.selection.scrollIntoView();\n\t\t }\n\t\t },\n\t\t 'list autofill': {\n\t\t key: ' ',\n\t\t collapsed: true,\n\t\t format: { list: false },\n\t\t prefix: /^(1\\.|-)$/,\n\t\t handler: function handler(range, context) {\n\t\t if (this.quill.scroll.whitelist != null && !this.quill.scroll.whitelist['list']) return true;\n\t\t var length = context.prefix.length;\n\t\t this.quill.scroll.deleteAt(range.index - length, length);\n\t\t this.quill.formatLine(range.index - length, 1, 'list', length === 1 ? 'bullet' : 'ordered', _quill2.default.sources.USER);\n\t\t this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n\t\t }\n\t\t },\n\t\t 'code exit': {\n\t\t key: Keyboard.keys.ENTER,\n\t\t collapsed: true,\n\t\t format: ['code-block'],\n\t\t prefix: /\\n\\n$/,\n\t\t suffix: /^\\s+$/,\n\t\t handler: function handler(range) {\n\t\t this.quill.format('code-block', false, _quill2.default.sources.USER);\n\t\t this.quill.deleteText(range.index - 2, 1, _quill2.default.sources.USER);\n\t\t }\n\t\t }\n\t\t }\n\t\t};\n\t\n\t\tfunction handleBackspace(range, context) {\n\t\t if (range.index === 0) return;\n\t\n\t\t var _quill$getLine5 = this.quill.getLine(range.index),\n\t\t _quill$getLine6 = _slicedToArray(_quill$getLine5, 1),\n\t\t line = _quill$getLine6[0];\n\t\n\t\t var formats = {};\n\t\t if (context.offset === 0) {\n\t\t var curFormats = line.formats();\n\t\t var prevFormats = this.quill.getFormat(range.index - 1, 1);\n\t\t formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n\t\t }\n\t\t // Check for astral symbols\n\t\t var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n\t\t this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n\t\t if (Object.keys(formats).length > 0) {\n\t\t this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n\t\t }\n\t\t this.quill.selection.scrollIntoView();\n\t\t}\n\t\n\t\tfunction handleDelete(range, context) {\n\t\t // Check for astral symbols\n\t\t var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n\t\t if (range.index >= this.quill.getLength() - length) return;\n\t\t this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n\t\t}\n\t\n\t\tfunction handleDeleteRange(range) {\n\t\t this.quill.deleteText(range, _quill2.default.sources.USER);\n\t\t this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n\t\t this.quill.selection.scrollIntoView();\n\t\t}\n\t\n\t\tfunction handleEnter(range, context) {\n\t\t var _this3 = this;\n\t\n\t\t if (range.length > 0) {\n\t\t this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n\t\t }\n\t\t var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n\t\t if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n\t\t lineFormats[format] = context.format[format];\n\t\t }\n\t\t return lineFormats;\n\t\t }, {});\n\t\t this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n\t\t // Earlier scroll.deleteAt might have messed up our selection,\n\t\t // so insertText's built in selection preservation is not reliable\n\t\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t\t this.quill.selection.scrollIntoView();\n\t\t Object.keys(context.format).forEach(function (name) {\n\t\t if (lineFormats[name] != null) return;\n\t\t if (Array.isArray(context.format[name])) return;\n\t\t if (name === 'link') return;\n\t\t _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n\t\t });\n\t\t}\n\t\n\t\tfunction makeCodeBlockHandler(indent) {\n\t\t return {\n\t\t key: Keyboard.keys.TAB,\n\t\t shiftKey: !indent,\n\t\t format: { 'code-block': true },\n\t\t handler: function handler(range) {\n\t\t var CodeBlock = _parchment2.default.query('code-block');\n\t\t var index = range.index,\n\t\t length = range.length;\n\t\n\t\t var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n\t\t _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n\t\t block = _quill$scroll$descend2[0],\n\t\t offset = _quill$scroll$descend2[1];\n\t\n\t\t if (block == null) return;\n\t\t var scrollIndex = this.quill.getIndex(block);\n\t\t var start = block.newlineIndex(offset, true) + 1;\n\t\t var end = block.newlineIndex(scrollIndex + offset + length);\n\t\t var lines = block.domNode.textContent.slice(start, end).split('\\n');\n\t\t offset = 0;\n\t\t lines.forEach(function (line, i) {\n\t\t if (indent) {\n\t\t block.insertAt(start + offset, CodeBlock.TAB);\n\t\t offset += CodeBlock.TAB.length;\n\t\t if (i === 0) {\n\t\t index += CodeBlock.TAB.length;\n\t\t } else {\n\t\t length += CodeBlock.TAB.length;\n\t\t }\n\t\t } else if (line.startsWith(CodeBlock.TAB)) {\n\t\t block.deleteAt(start + offset, CodeBlock.TAB.length);\n\t\t offset -= CodeBlock.TAB.length;\n\t\t if (i === 0) {\n\t\t index -= CodeBlock.TAB.length;\n\t\t } else {\n\t\t length -= CodeBlock.TAB.length;\n\t\t }\n\t\t }\n\t\t offset += line.length + 1;\n\t\t });\n\t\t this.quill.update(_quill2.default.sources.USER);\n\t\t this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n\t\t }\n\t\t };\n\t\t}\n\t\n\t\tfunction makeFormatHandler(format) {\n\t\t return {\n\t\t key: format[0].toUpperCase(),\n\t\t shortKey: true,\n\t\t handler: function handler(range, context) {\n\t\t this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n\t\t }\n\t\t };\n\t\t}\n\t\n\t\tfunction normalize(binding) {\n\t\t if (typeof binding === 'string' || typeof binding === 'number') {\n\t\t return normalize({ key: binding });\n\t\t }\n\t\t if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n\t\t binding = (0, _clone2.default)(binding, false);\n\t\t }\n\t\t if (typeof binding.key === 'string') {\n\t\t if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n\t\t binding.key = Keyboard.keys[binding.key.toUpperCase()];\n\t\t } else if (binding.key.length === 1) {\n\t\t binding.key = binding.key.toUpperCase().charCodeAt(0);\n\t\t } else {\n\t\t return null;\n\t\t }\n\t\t }\n\t\t return binding;\n\t\t}\n\t\n\t\texports.default = Keyboard;\n\t\n\t/***/ },\n\t/* 53 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tvar _core = __webpack_require__(1);\n\t\n\t\tvar _core2 = _interopRequireDefault(_core);\n\t\n\t\tvar _align = __webpack_require__(45);\n\t\n\t\tvar _direction = __webpack_require__(48);\n\t\n\t\tvar _indent = __webpack_require__(54);\n\t\n\t\tvar _blockquote = __webpack_require__(55);\n\t\n\t\tvar _blockquote2 = _interopRequireDefault(_blockquote);\n\t\n\t\tvar _header = __webpack_require__(56);\n\t\n\t\tvar _header2 = _interopRequireDefault(_header);\n\t\n\t\tvar _list = __webpack_require__(57);\n\t\n\t\tvar _list2 = _interopRequireDefault(_list);\n\t\n\t\tvar _background = __webpack_require__(46);\n\t\n\t\tvar _color = __webpack_require__(47);\n\t\n\t\tvar _font = __webpack_require__(49);\n\t\n\t\tvar _size = __webpack_require__(50);\n\t\n\t\tvar _bold = __webpack_require__(58);\n\t\n\t\tvar _bold2 = _interopRequireDefault(_bold);\n\t\n\t\tvar _italic = __webpack_require__(59);\n\t\n\t\tvar _italic2 = _interopRequireDefault(_italic);\n\t\n\t\tvar _link = __webpack_require__(60);\n\t\n\t\tvar _link2 = _interopRequireDefault(_link);\n\t\n\t\tvar _script = __webpack_require__(61);\n\t\n\t\tvar _script2 = _interopRequireDefault(_script);\n\t\n\t\tvar _strike = __webpack_require__(62);\n\t\n\t\tvar _strike2 = _interopRequireDefault(_strike);\n\t\n\t\tvar _underline = __webpack_require__(63);\n\t\n\t\tvar _underline2 = _interopRequireDefault(_underline);\n\t\n\t\tvar _image = __webpack_require__(64);\n\t\n\t\tvar _image2 = _interopRequireDefault(_image);\n\t\n\t\tvar _video = __webpack_require__(65);\n\t\n\t\tvar _video2 = _interopRequireDefault(_video);\n\t\n\t\tvar _code = __webpack_require__(28);\n\t\n\t\tvar _code2 = _interopRequireDefault(_code);\n\t\n\t\tvar _formula = __webpack_require__(66);\n\t\n\t\tvar _formula2 = _interopRequireDefault(_formula);\n\t\n\t\tvar _syntax = __webpack_require__(67);\n\t\n\t\tvar _syntax2 = _interopRequireDefault(_syntax);\n\t\n\t\tvar _toolbar = __webpack_require__(68);\n\t\n\t\tvar _toolbar2 = _interopRequireDefault(_toolbar);\n\t\n\t\tvar _icons = __webpack_require__(69);\n\t\n\t\tvar _icons2 = _interopRequireDefault(_icons);\n\t\n\t\tvar _picker = __webpack_require__(102);\n\t\n\t\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\t\tvar _colorPicker = __webpack_require__(104);\n\t\n\t\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\t\n\t\tvar _iconPicker = __webpack_require__(105);\n\t\n\t\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\t\n\t\tvar _tooltip = __webpack_require__(106);\n\t\n\t\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\t\n\t\tvar _bubble = __webpack_require__(107);\n\t\n\t\tvar _bubble2 = _interopRequireDefault(_bubble);\n\t\n\t\tvar _snow = __webpack_require__(109);\n\t\n\t\tvar _snow2 = _interopRequireDefault(_snow);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\t_core2.default.register({\n\t\t 'attributors/attribute/direction': _direction.DirectionAttribute,\n\t\n\t\t 'attributors/class/align': _align.AlignClass,\n\t\t 'attributors/class/background': _background.BackgroundClass,\n\t\t 'attributors/class/color': _color.ColorClass,\n\t\t 'attributors/class/direction': _direction.DirectionClass,\n\t\t 'attributors/class/font': _font.FontClass,\n\t\t 'attributors/class/size': _size.SizeClass,\n\t\n\t\t 'attributors/style/align': _align.AlignStyle,\n\t\t 'attributors/style/background': _background.BackgroundStyle,\n\t\t 'attributors/style/color': _color.ColorStyle,\n\t\t 'attributors/style/direction': _direction.DirectionStyle,\n\t\t 'attributors/style/font': _font.FontStyle,\n\t\t 'attributors/style/size': _size.SizeStyle\n\t\t}, true);\n\t\n\t\t_core2.default.register({\n\t\t 'formats/align': _align.AlignClass,\n\t\t 'formats/direction': _direction.DirectionClass,\n\t\t 'formats/indent': _indent.IndentClass,\n\t\n\t\t 'formats/background': _background.BackgroundStyle,\n\t\t 'formats/color': _color.ColorStyle,\n\t\t 'formats/font': _font.FontClass,\n\t\t 'formats/size': _size.SizeClass,\n\t\n\t\t 'formats/blockquote': _blockquote2.default,\n\t\t 'formats/code-block': _code2.default,\n\t\t 'formats/header': _header2.default,\n\t\t 'formats/list': _list2.default,\n\t\n\t\t 'formats/bold': _bold2.default,\n\t\t 'formats/code': _code.Code,\n\t\t 'formats/italic': _italic2.default,\n\t\t 'formats/link': _link2.default,\n\t\t 'formats/script': _script2.default,\n\t\t 'formats/strike': _strike2.default,\n\t\t 'formats/underline': _underline2.default,\n\t\n\t\t 'formats/image': _image2.default,\n\t\t 'formats/video': _video2.default,\n\t\n\t\t 'formats/list/item': _list.ListItem,\n\t\n\t\t 'modules/formula': _formula2.default,\n\t\t 'modules/syntax': _syntax2.default,\n\t\t 'modules/toolbar': _toolbar2.default,\n\t\n\t\t 'themes/bubble': _bubble2.default,\n\t\t 'themes/snow': _snow2.default,\n\t\n\t\t 'ui/icons': _icons2.default,\n\t\t 'ui/picker': _picker2.default,\n\t\t 'ui/icon-picker': _iconPicker2.default,\n\t\t 'ui/color-picker': _colorPicker2.default,\n\t\t 'ui/tooltip': _tooltip2.default\n\t\t}, true);\n\t\n\t\tmodule.exports = _core2.default;\n\t\n\t/***/ },\n\t/* 54 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.IndentClass = undefined;\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar IdentAttributor = function (_Parchment$Attributor) {\n\t\t _inherits(IdentAttributor, _Parchment$Attributor);\n\t\n\t\t function IdentAttributor() {\n\t\t _classCallCheck(this, IdentAttributor);\n\t\n\t\t return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(IdentAttributor, [{\n\t\t key: 'add',\n\t\t value: function add(node, value) {\n\t\t if (value === '+1' || value === '-1') {\n\t\t var indent = this.value(node) || 0;\n\t\t value = value === '+1' ? indent + 1 : indent - 1;\n\t\t }\n\t\t if (value === 0) {\n\t\t this.remove(node);\n\t\t return true;\n\t\t } else {\n\t\t return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'canAdd',\n\t\t value: function canAdd(node, value) {\n\t\t return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n\t\t }\n\t\t }, {\n\t\t key: 'value',\n\t\t value: function value(node) {\n\t\t return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n\t\t }\n\t\t }]);\n\t\n\t\t return IdentAttributor;\n\t\t}(_parchment2.default.Attributor.Class);\n\t\n\t\tvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n\t\t scope: _parchment2.default.Scope.BLOCK,\n\t\t whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n\t\t});\n\t\n\t\texports.IndentClass = IndentClass;\n\t\n\t/***/ },\n\t/* 55 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _block = __webpack_require__(29);\n\t\n\t\tvar _block2 = _interopRequireDefault(_block);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Blockquote = function (_Block) {\n\t\t _inherits(Blockquote, _Block);\n\t\n\t\t function Blockquote() {\n\t\t _classCallCheck(this, Blockquote);\n\t\n\t\t return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n\t\t }\n\t\n\t\t return Blockquote;\n\t\t}(_block2.default);\n\t\n\t\tBlockquote.blotName = 'blockquote';\n\t\tBlockquote.tagName = 'blockquote';\n\t\n\t\texports.default = Blockquote;\n\t\n\t/***/ },\n\t/* 56 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _block = __webpack_require__(29);\n\t\n\t\tvar _block2 = _interopRequireDefault(_block);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Header = function (_Block) {\n\t\t _inherits(Header, _Block);\n\t\n\t\t function Header() {\n\t\t _classCallCheck(this, Header);\n\t\n\t\t return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(Header, null, [{\n\t\t key: 'formats',\n\t\t value: function formats(domNode) {\n\t\t return this.tagName.indexOf(domNode.tagName) + 1;\n\t\t }\n\t\t }]);\n\t\n\t\t return Header;\n\t\t}(_block2.default);\n\t\n\t\tHeader.blotName = 'header';\n\t\tHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\t\n\t\texports.default = Header;\n\t\n\t/***/ },\n\t/* 57 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.default = exports.ListItem = undefined;\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _block = __webpack_require__(29);\n\t\n\t\tvar _block2 = _interopRequireDefault(_block);\n\t\n\t\tvar _container = __webpack_require__(42);\n\t\n\t\tvar _container2 = _interopRequireDefault(_container);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _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; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar ListItem = function (_Block) {\n\t\t _inherits(ListItem, _Block);\n\t\n\t\t function ListItem() {\n\t\t _classCallCheck(this, ListItem);\n\t\n\t\t return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(ListItem, [{\n\t\t key: 'format',\n\t\t value: function format(name, value) {\n\t\t if (name === List.blotName && !value) {\n\t\t this.replaceWith(_parchment2.default.create(this.statics.scope));\n\t\t } else {\n\t\t _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'remove',\n\t\t value: function remove() {\n\t\t if (this.prev == null && this.next == null) {\n\t\t this.parent.remove();\n\t\t } else {\n\t\t _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'replaceWith',\n\t\t value: function replaceWith(name, value) {\n\t\t this.parent.isolate(this.offset(this.parent), this.length());\n\t\t if (name === this.parent.statics.blotName) {\n\t\t this.parent.replaceWith(name, value);\n\t\t return this;\n\t\t } else {\n\t\t this.parent.unwrap();\n\t\t return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n\t\t }\n\t\t }\n\t\t }], [{\n\t\t key: 'formats',\n\t\t value: function formats(domNode) {\n\t\t return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n\t\t }\n\t\t }]);\n\t\n\t\t return ListItem;\n\t\t}(_block2.default);\n\t\n\t\tListItem.blotName = 'list-item';\n\t\tListItem.tagName = 'LI';\n\t\n\t\tvar List = function (_Container) {\n\t\t _inherits(List, _Container);\n\t\n\t\t _createClass(List, null, [{\n\t\t key: 'create',\n\t\t value: function create(value) {\n\t\t var tagName = value === 'ordered' ? 'OL' : 'UL';\n\t\t var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n\t\t if (value === 'checked' || value === 'unchecked') {\n\t\t node.setAttribute('data-checked', value === 'checked');\n\t\t }\n\t\t return node;\n\t\t }\n\t\t }, {\n\t\t key: 'formats',\n\t\t value: function formats(domNode) {\n\t\t if (domNode.tagName === 'OL') return 'ordered';\n\t\t if (domNode.tagName === 'UL') {\n\t\t if (domNode.hasAttribute('data-checked')) {\n\t\t return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n\t\t } else {\n\t\t return 'bullet';\n\t\t }\n\t\t }\n\t\t return undefined;\n\t\t }\n\t\t }]);\n\t\n\t\t function List(domNode) {\n\t\t _classCallCheck(this, List);\n\t\n\t\t var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\t\n\t\t domNode.addEventListener('click', function (e) {\n\t\t if (e.target.parentNode !== domNode) return;\n\t\t var format = _this2.statics.formats(domNode);\n\t\t var blot = _parchment2.default.find(e.target);\n\t\t if (format === 'checked') {\n\t\t blot.format('list', 'unchecked');\n\t\t } else if (format === 'unchecked') {\n\t\t blot.format('list', 'checked');\n\t\t }\n\t\t });\n\t\t return _this2;\n\t\t }\n\t\n\t\t _createClass(List, [{\n\t\t key: 'format',\n\t\t value: function format(name, value) {\n\t\t if (this.children.length > 0) {\n\t\t this.children.tail.format(name, value);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'formats',\n\t\t value: function formats() {\n\t\t // We don't inherit from FormatBlot\n\t\t return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n\t\t }\n\t\t }, {\n\t\t key: 'insertBefore',\n\t\t value: function insertBefore(blot, ref) {\n\t\t if (blot instanceof ListItem) {\n\t\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n\t\t } else {\n\t\t var index = ref == null ? this.length() : ref.offset(this);\n\t\t var after = this.split(index);\n\t\t after.parent.insertBefore(blot, after);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'optimize',\n\t\t value: function optimize() {\n\t\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this);\n\t\t var next = this.next;\n\t\t if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n\t\t next.moveChildren(this);\n\t\t next.remove();\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'replace',\n\t\t value: function replace(target) {\n\t\t if (target.statics.blotName !== this.statics.blotName) {\n\t\t var item = _parchment2.default.create(this.statics.defaultChild);\n\t\t target.moveChildren(item);\n\t\t this.appendChild(item);\n\t\t }\n\t\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n\t\t }\n\t\t }]);\n\t\n\t\t return List;\n\t\t}(_container2.default);\n\t\n\t\tList.blotName = 'list';\n\t\tList.scope = _parchment2.default.Scope.BLOCK_BLOT;\n\t\tList.tagName = ['OL', 'UL'];\n\t\tList.defaultChild = 'list-item';\n\t\tList.allowedChildren = [ListItem];\n\t\n\t\texports.ListItem = ListItem;\n\t\texports.default = List;\n\t\n\t/***/ },\n\t/* 58 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _inline = __webpack_require__(32);\n\t\n\t\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Bold = function (_Inline) {\n\t\t _inherits(Bold, _Inline);\n\t\n\t\t function Bold() {\n\t\t _classCallCheck(this, Bold);\n\t\n\t\t return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(Bold, [{\n\t\t key: 'optimize',\n\t\t value: function optimize() {\n\t\t _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this);\n\t\t if (this.domNode.tagName !== this.statics.tagName[0]) {\n\t\t this.replaceWith(this.statics.blotName);\n\t\t }\n\t\t }\n\t\t }], [{\n\t\t key: 'create',\n\t\t value: function create() {\n\t\t return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n\t\t }\n\t\t }, {\n\t\t key: 'formats',\n\t\t value: function formats() {\n\t\t return true;\n\t\t }\n\t\t }]);\n\t\n\t\t return Bold;\n\t\t}(_inline2.default);\n\t\n\t\tBold.blotName = 'bold';\n\t\tBold.tagName = ['STRONG', 'B'];\n\t\n\t\texports.default = Bold;\n\t\n\t/***/ },\n\t/* 59 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _bold = __webpack_require__(58);\n\t\n\t\tvar _bold2 = _interopRequireDefault(_bold);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Italic = function (_Bold) {\n\t\t _inherits(Italic, _Bold);\n\t\n\t\t function Italic() {\n\t\t _classCallCheck(this, Italic);\n\t\n\t\t return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n\t\t }\n\t\n\t\t return Italic;\n\t\t}(_bold2.default);\n\t\n\t\tItalic.blotName = 'italic';\n\t\tItalic.tagName = ['EM', 'I'];\n\t\n\t\texports.default = Italic;\n\t\n\t/***/ },\n\t/* 60 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.sanitize = exports.default = undefined;\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _inline = __webpack_require__(32);\n\t\n\t\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Link = function (_Inline) {\n\t\t _inherits(Link, _Inline);\n\t\n\t\t function Link() {\n\t\t _classCallCheck(this, Link);\n\t\n\t\t return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(Link, [{\n\t\t key: 'format',\n\t\t value: function format(name, value) {\n\t\t if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n\t\t value = this.constructor.sanitize(value);\n\t\t this.domNode.setAttribute('href', value);\n\t\t }\n\t\t }], [{\n\t\t key: 'create',\n\t\t value: function create(value) {\n\t\t var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n\t\t value = this.sanitize(value);\n\t\t node.setAttribute('href', value);\n\t\t node.setAttribute('target', '_blank');\n\t\t return node;\n\t\t }\n\t\t }, {\n\t\t key: 'formats',\n\t\t value: function formats(domNode) {\n\t\t return domNode.getAttribute('href');\n\t\t }\n\t\t }, {\n\t\t key: 'sanitize',\n\t\t value: function sanitize(url) {\n\t\t return _sanitize(url, ['http', 'https', 'mailto']) ? url : this.SANITIZED_URL;\n\t\t }\n\t\t }]);\n\t\n\t\t return Link;\n\t\t}(_inline2.default);\n\t\n\t\tLink.blotName = 'link';\n\t\tLink.tagName = 'A';\n\t\tLink.SANITIZED_URL = 'about:blank';\n\t\n\t\tfunction _sanitize(url, protocols) {\n\t\t var anchor = document.createElement('a');\n\t\t anchor.href = url;\n\t\t var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n\t\t return protocols.indexOf(protocol) > -1;\n\t\t}\n\t\n\t\texports.default = Link;\n\t\texports.sanitize = _sanitize;\n\t\n\t/***/ },\n\t/* 61 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _inline = __webpack_require__(32);\n\t\n\t\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Script = function (_Inline) {\n\t\t _inherits(Script, _Inline);\n\t\n\t\t function Script() {\n\t\t _classCallCheck(this, Script);\n\t\n\t\t return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(Script, null, [{\n\t\t key: 'create',\n\t\t value: function create(value) {\n\t\t if (value === 'super') {\n\t\t return document.createElement('sup');\n\t\t } else if (value === 'sub') {\n\t\t return document.createElement('sub');\n\t\t } else {\n\t\t return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'formats',\n\t\t value: function formats(domNode) {\n\t\t if (domNode.tagName === 'SUB') return 'sub';\n\t\t if (domNode.tagName === 'SUP') return 'super';\n\t\t return undefined;\n\t\t }\n\t\t }]);\n\t\n\t\t return Script;\n\t\t}(_inline2.default);\n\t\n\t\tScript.blotName = 'script';\n\t\tScript.tagName = ['SUB', 'SUP'];\n\t\n\t\texports.default = Script;\n\t\n\t/***/ },\n\t/* 62 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _inline = __webpack_require__(32);\n\t\n\t\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Strike = function (_Inline) {\n\t\t _inherits(Strike, _Inline);\n\t\n\t\t function Strike() {\n\t\t _classCallCheck(this, Strike);\n\t\n\t\t return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n\t\t }\n\t\n\t\t return Strike;\n\t\t}(_inline2.default);\n\t\n\t\tStrike.blotName = 'strike';\n\t\tStrike.tagName = 'S';\n\t\n\t\texports.default = Strike;\n\t\n\t/***/ },\n\t/* 63 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _inline = __webpack_require__(32);\n\t\n\t\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar Underline = function (_Inline) {\n\t\t _inherits(Underline, _Inline);\n\t\n\t\t function Underline() {\n\t\t _classCallCheck(this, Underline);\n\t\n\t\t return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n\t\t }\n\t\n\t\t return Underline;\n\t\t}(_inline2.default);\n\t\n\t\tUnderline.blotName = 'underline';\n\t\tUnderline.tagName = 'U';\n\t\n\t\texports.default = Underline;\n\t\n\t/***/ },\n\t/* 64 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _embed = __webpack_require__(31);\n\t\n\t\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\t\tvar _link = __webpack_require__(60);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar ATTRIBUTES = ['alt', 'height', 'width'];\n\t\n\t\tvar Image = function (_Embed) {\n\t\t _inherits(Image, _Embed);\n\t\n\t\t function Image() {\n\t\t _classCallCheck(this, Image);\n\t\n\t\t return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(Image, [{\n\t\t key: 'format',\n\t\t value: function format(name, value) {\n\t\t if (ATTRIBUTES.indexOf(name) > -1) {\n\t\t if (value) {\n\t\t this.domNode.setAttribute(name, value);\n\t\t } else {\n\t\t this.domNode.removeAttribute(name);\n\t\t }\n\t\t } else {\n\t\t _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n\t\t }\n\t\t }\n\t\t }], [{\n\t\t key: 'create',\n\t\t value: function create(value) {\n\t\t var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n\t\t if (typeof value === 'string') {\n\t\t node.setAttribute('src', this.sanitize(value));\n\t\t }\n\t\t return node;\n\t\t }\n\t\t }, {\n\t\t key: 'formats',\n\t\t value: function formats(domNode) {\n\t\t return ATTRIBUTES.reduce(function (formats, attribute) {\n\t\t if (domNode.hasAttribute(attribute)) {\n\t\t formats[attribute] = domNode.getAttribute(attribute);\n\t\t }\n\t\t return formats;\n\t\t }, {});\n\t\t }\n\t\t }, {\n\t\t key: 'match',\n\t\t value: function match(url) {\n\t\t return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n\t\t );\n\t\t }\n\t\t }, {\n\t\t key: 'sanitize',\n\t\t value: function sanitize(url) {\n\t\t return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n\t\t }\n\t\t }, {\n\t\t key: 'value',\n\t\t value: function value(domNode) {\n\t\t return domNode.getAttribute('src');\n\t\t }\n\t\t }]);\n\t\n\t\t return Image;\n\t\t}(_embed2.default);\n\t\n\t\tImage.blotName = 'image';\n\t\tImage.tagName = 'IMG';\n\t\n\t\texports.default = Image;\n\t\n\t/***/ },\n\t/* 65 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _block = __webpack_require__(29);\n\t\n\t\tvar _link = __webpack_require__(60);\n\t\n\t\tvar _link2 = _interopRequireDefault(_link);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar ATTRIBUTES = ['height', 'width'];\n\t\n\t\tvar Video = function (_BlockEmbed) {\n\t\t _inherits(Video, _BlockEmbed);\n\t\n\t\t function Video() {\n\t\t _classCallCheck(this, Video);\n\t\n\t\t return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(Video, [{\n\t\t key: 'format',\n\t\t value: function format(name, value) {\n\t\t if (ATTRIBUTES.indexOf(name) > -1) {\n\t\t if (value) {\n\t\t this.domNode.setAttribute(name, value);\n\t\t } else {\n\t\t this.domNode.removeAttribute(name);\n\t\t }\n\t\t } else {\n\t\t _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n\t\t }\n\t\t }\n\t\t }], [{\n\t\t key: 'create',\n\t\t value: function create(value) {\n\t\t var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n\t\t node.setAttribute('frameborder', '0');\n\t\t node.setAttribute('allowfullscreen', true);\n\t\t node.setAttribute('src', this.sanitize(value));\n\t\t return node;\n\t\t }\n\t\t }, {\n\t\t key: 'formats',\n\t\t value: function formats(domNode) {\n\t\t return ATTRIBUTES.reduce(function (formats, attribute) {\n\t\t if (domNode.hasAttribute(attribute)) {\n\t\t formats[attribute] = domNode.getAttribute(attribute);\n\t\t }\n\t\t return formats;\n\t\t }, {});\n\t\t }\n\t\t }, {\n\t\t key: 'sanitize',\n\t\t value: function sanitize(url) {\n\t\t return _link2.default.sanitize(url);\n\t\t }\n\t\t }, {\n\t\t key: 'value',\n\t\t value: function value(domNode) {\n\t\t return domNode.getAttribute('src');\n\t\t }\n\t\t }]);\n\t\n\t\t return Video;\n\t\t}(_block.BlockEmbed);\n\t\n\t\tVideo.blotName = 'video';\n\t\tVideo.className = 'ql-video';\n\t\tVideo.tagName = 'IFRAME';\n\t\n\t\texports.default = Video;\n\t\n\t/***/ },\n\t/* 66 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.default = exports.FormulaBlot = undefined;\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _embed = __webpack_require__(31);\n\t\n\t\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\t\tvar _quill = __webpack_require__(18);\n\t\n\t\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar FormulaBlot = function (_Embed) {\n\t\t _inherits(FormulaBlot, _Embed);\n\t\n\t\t function FormulaBlot() {\n\t\t _classCallCheck(this, FormulaBlot);\n\t\n\t\t return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(FormulaBlot, [{\n\t\t key: 'index',\n\t\t value: function index() {\n\t\t return 1;\n\t\t }\n\t\t }], [{\n\t\t key: 'create',\n\t\t value: function create(value) {\n\t\t var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n\t\t if (typeof value === 'string') {\n\t\t window.katex.render(value, node);\n\t\t node.setAttribute('data-value', value);\n\t\t }\n\t\t node.setAttribute('contenteditable', false);\n\t\t return node;\n\t\t }\n\t\t }, {\n\t\t key: 'value',\n\t\t value: function value(domNode) {\n\t\t return domNode.getAttribute('data-value');\n\t\t }\n\t\t }]);\n\t\n\t\t return FormulaBlot;\n\t\t}(_embed2.default);\n\t\n\t\tFormulaBlot.blotName = 'formula';\n\t\tFormulaBlot.className = 'ql-formula';\n\t\tFormulaBlot.tagName = 'SPAN';\n\t\n\t\tfunction Formula() {\n\t\t if (window.katex == null) {\n\t\t throw new Error('Formula module requires KaTeX.');\n\t\t }\n\t\t _quill2.default.register(FormulaBlot, true);\n\t\t}\n\t\n\t\texports.FormulaBlot = FormulaBlot;\n\t\texports.default = Formula;\n\t\n\t/***/ },\n\t/* 67 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _quill = __webpack_require__(18);\n\t\n\t\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\t\tvar _module = __webpack_require__(39);\n\t\n\t\tvar _module2 = _interopRequireDefault(_module);\n\t\n\t\tvar _code = __webpack_require__(28);\n\t\n\t\tvar _code2 = _interopRequireDefault(_code);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar SyntaxCodeBlock = function (_CodeBlock) {\n\t\t _inherits(SyntaxCodeBlock, _CodeBlock);\n\t\n\t\t function SyntaxCodeBlock() {\n\t\t _classCallCheck(this, SyntaxCodeBlock);\n\t\n\t\t return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n\t\t }\n\t\n\t\t _createClass(SyntaxCodeBlock, [{\n\t\t key: 'replaceWith',\n\t\t value: function replaceWith(block) {\n\t\t this.domNode.textContent = this.domNode.textContent;\n\t\t this.attach();\n\t\t _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n\t\t }\n\t\t }, {\n\t\t key: 'highlight',\n\t\t value: function highlight(_highlight) {\n\t\t if (this.cachedHTML !== this.domNode.innerHTML) {\n\t\t var text = this.domNode.textContent;\n\t\t if (text.trim().length > 0 || this.cachedHTML == null) {\n\t\t this.domNode.innerHTML = _highlight(text);\n\t\t this.attach();\n\t\t }\n\t\t this.cachedHTML = this.domNode.innerHTML;\n\t\t }\n\t\t }\n\t\t }]);\n\t\n\t\t return SyntaxCodeBlock;\n\t\t}(_code2.default);\n\t\n\t\tSyntaxCodeBlock.className = 'ql-syntax';\n\t\n\t\tvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n\t\t scope: _parchment2.default.Scope.INLINE\n\t\t});\n\t\n\t\tvar Syntax = function (_Module) {\n\t\t _inherits(Syntax, _Module);\n\t\n\t\t function Syntax(quill, options) {\n\t\t _classCallCheck(this, Syntax);\n\t\n\t\t var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\t\n\t\t if (typeof _this2.options.highlight !== 'function') {\n\t\t throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n\t\t }\n\t\t _quill2.default.register(CodeToken, true);\n\t\t _quill2.default.register(SyntaxCodeBlock, true);\n\t\t var timer = null;\n\t\t _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n\t\t if (timer != null) return;\n\t\t timer = setTimeout(function () {\n\t\t _this2.highlight();\n\t\t timer = null;\n\t\t }, 100);\n\t\t });\n\t\t _this2.highlight();\n\t\t return _this2;\n\t\t }\n\t\n\t\t _createClass(Syntax, [{\n\t\t key: 'highlight',\n\t\t value: function highlight() {\n\t\t var _this3 = this;\n\t\n\t\t if (this.quill.selection.composing) return;\n\t\t var range = this.quill.getSelection();\n\t\t this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n\t\t code.highlight(_this3.options.highlight);\n\t\t });\n\t\t this.quill.update(_quill2.default.sources.SILENT);\n\t\t if (range != null) {\n\t\t this.quill.setSelection(range, _quill2.default.sources.SILENT);\n\t\t }\n\t\t }\n\t\t }]);\n\t\n\t\t return Syntax;\n\t\t}(_module2.default);\n\t\n\t\tSyntax.DEFAULTS = {\n\t\t highlight: function () {\n\t\t if (window.hljs == null) return null;\n\t\t return function (text) {\n\t\t var result = window.hljs.highlightAuto(text);\n\t\t return result.value;\n\t\t };\n\t\t }()\n\t\t};\n\t\n\t\texports.CodeBlock = SyntaxCodeBlock;\n\t\texports.CodeToken = CodeToken;\n\t\texports.default = Syntax;\n\t\n\t/***/ },\n\t/* 68 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.addControls = exports.default = undefined;\n\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _quillDelta = __webpack_require__(20);\n\t\n\t\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\t\tvar _parchment = __webpack_require__(2);\n\t\n\t\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\t\tvar _quill = __webpack_require__(18);\n\t\n\t\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\t\tvar _logger = __webpack_require__(37);\n\t\n\t\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\t\tvar _module = __webpack_require__(39);\n\t\n\t\tvar _module2 = _interopRequireDefault(_module);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _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; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar debug = (0, _logger2.default)('quill:toolbar');\n\t\n\t\tvar Toolbar = function (_Module) {\n\t\t _inherits(Toolbar, _Module);\n\t\n\t\t function Toolbar(quill, options) {\n\t\t _classCallCheck(this, Toolbar);\n\t\n\t\t var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\t\n\t\t if (Array.isArray(_this.options.container)) {\n\t\t var container = document.createElement('div');\n\t\t addControls(container, _this.options.container);\n\t\t quill.container.parentNode.insertBefore(container, quill.container);\n\t\t _this.container = container;\n\t\t } else if (typeof _this.options.container === 'string') {\n\t\t _this.container = document.querySelector(_this.options.container);\n\t\t } else {\n\t\t _this.container = _this.options.container;\n\t\t }\n\t\t if (!(_this.container instanceof HTMLElement)) {\n\t\t var _ret;\n\t\n\t\t return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n\t\t }\n\t\t _this.container.classList.add('ql-toolbar');\n\t\t _this.controls = [];\n\t\t _this.handlers = {};\n\t\t Object.keys(_this.options.handlers).forEach(function (format) {\n\t\t _this.addHandler(format, _this.options.handlers[format]);\n\t\t });\n\t\t [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n\t\t _this.attach(input);\n\t\t });\n\t\t _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n\t\t if (type === _quill2.default.events.SELECTION_CHANGE) {\n\t\t _this.update(range);\n\t\t }\n\t\t });\n\t\t _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n\t\t var _this$quill$selection = _this.quill.selection.getRange(),\n\t\t _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n\t\t range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\t\n\t\n\t\t _this.update(range);\n\t\t });\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(Toolbar, [{\n\t\t key: 'addHandler',\n\t\t value: function addHandler(format, handler) {\n\t\t this.handlers[format] = handler;\n\t\t }\n\t\t }, {\n\t\t key: 'attach',\n\t\t value: function attach(input) {\n\t\t var _this2 = this;\n\t\n\t\t var format = [].find.call(input.classList, function (className) {\n\t\t return className.indexOf('ql-') === 0;\n\t\t });\n\t\t if (!format) return;\n\t\t format = format.slice('ql-'.length);\n\t\t if (input.tagName === 'BUTTON') {\n\t\t input.setAttribute('type', 'button');\n\t\t }\n\t\t if (this.handlers[format] == null) {\n\t\t if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n\t\t debug.warn('ignoring attaching to disabled format', format, input);\n\t\t return;\n\t\t }\n\t\t if (_parchment2.default.query(format) == null) {\n\t\t debug.warn('ignoring attaching to nonexistent format', format, input);\n\t\t return;\n\t\t }\n\t\t }\n\t\t var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n\t\t input.addEventListener(eventName, function (e) {\n\t\t var value = void 0;\n\t\t if (input.tagName === 'SELECT') {\n\t\t if (input.selectedIndex < 0) return;\n\t\t var selected = input.options[input.selectedIndex];\n\t\t if (selected.hasAttribute('selected')) {\n\t\t value = false;\n\t\t } else {\n\t\t value = selected.value || false;\n\t\t }\n\t\t } else {\n\t\t if (input.classList.contains('ql-active')) {\n\t\t value = false;\n\t\t } else {\n\t\t value = input.value || !input.hasAttribute('value');\n\t\t }\n\t\t e.preventDefault();\n\t\t }\n\t\t _this2.quill.focus();\n\t\n\t\t var _quill$selection$getR = _this2.quill.selection.getRange(),\n\t\t _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n\t\t range = _quill$selection$getR2[0];\n\t\n\t\t if (_this2.handlers[format] != null) {\n\t\t _this2.handlers[format].call(_this2, value);\n\t\t } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n\t\t value = prompt('Enter ' + format);\n\t\t if (!value) return;\n\t\t _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n\t\t } else {\n\t\t _this2.quill.format(format, value, _quill2.default.sources.USER);\n\t\t }\n\t\t _this2.update(range);\n\t\t });\n\t\t // TODO use weakmap\n\t\t this.controls.push([format, input]);\n\t\t }\n\t\t }, {\n\t\t key: 'update',\n\t\t value: function update(range) {\n\t\t var formats = range == null ? {} : this.quill.getFormat(range);\n\t\t this.controls.forEach(function (pair) {\n\t\t var _pair = _slicedToArray(pair, 2),\n\t\t format = _pair[0],\n\t\t input = _pair[1];\n\t\n\t\t if (input.tagName === 'SELECT') {\n\t\t var option = void 0;\n\t\t if (range == null) {\n\t\t option = null;\n\t\t } else if (formats[format] == null) {\n\t\t option = input.querySelector('option[selected]');\n\t\t } else if (!Array.isArray(formats[format])) {\n\t\t var value = formats[format];\n\t\t if (typeof value === 'string') {\n\t\t value = value.replace(/\\\"/g, '\\\\\"');\n\t\t }\n\t\t option = input.querySelector('option[value=\"' + value + '\"]');\n\t\t }\n\t\t if (option == null) {\n\t\t input.value = ''; // TODO make configurable?\n\t\t input.selectedIndex = -1;\n\t\t } else {\n\t\t option.selected = true;\n\t\t }\n\t\t } else {\n\t\t if (range == null) {\n\t\t input.classList.remove('ql-active');\n\t\t } else if (input.hasAttribute('value')) {\n\t\t // both being null should match (default values)\n\t\t // '1' should match with 1 (headers)\n\t\t var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n\t\t input.classList.toggle('ql-active', isActive);\n\t\t } else {\n\t\t input.classList.toggle('ql-active', formats[format] != null);\n\t\t }\n\t\t }\n\t\t });\n\t\t }\n\t\t }]);\n\t\n\t\t return Toolbar;\n\t\t}(_module2.default);\n\t\n\t\tToolbar.DEFAULTS = {};\n\t\n\t\tfunction addButton(container, format, value) {\n\t\t var input = document.createElement('button');\n\t\t input.setAttribute('type', 'button');\n\t\t input.classList.add('ql-' + format);\n\t\t if (value != null) {\n\t\t input.value = value;\n\t\t }\n\t\t container.appendChild(input);\n\t\t}\n\t\n\t\tfunction addControls(container, groups) {\n\t\t if (!Array.isArray(groups[0])) {\n\t\t groups = [groups];\n\t\t }\n\t\t groups.forEach(function (controls) {\n\t\t var group = document.createElement('span');\n\t\t group.classList.add('ql-formats');\n\t\t controls.forEach(function (control) {\n\t\t if (typeof control === 'string') {\n\t\t addButton(group, control);\n\t\t } else {\n\t\t var format = Object.keys(control)[0];\n\t\t var value = control[format];\n\t\t if (Array.isArray(value)) {\n\t\t addSelect(group, format, value);\n\t\t } else {\n\t\t addButton(group, format, value);\n\t\t }\n\t\t }\n\t\t });\n\t\t container.appendChild(group);\n\t\t });\n\t\t}\n\t\n\t\tfunction addSelect(container, format, values) {\n\t\t var input = document.createElement('select');\n\t\t input.classList.add('ql-' + format);\n\t\t values.forEach(function (value) {\n\t\t var option = document.createElement('option');\n\t\t if (value !== false) {\n\t\t option.setAttribute('value', value);\n\t\t } else {\n\t\t option.setAttribute('selected', 'selected');\n\t\t }\n\t\t input.appendChild(option);\n\t\t });\n\t\t container.appendChild(input);\n\t\t}\n\t\n\t\tToolbar.DEFAULTS = {\n\t\t container: null,\n\t\t handlers: {\n\t\t clean: function clean() {\n\t\t var _this3 = this;\n\t\n\t\t var range = this.quill.getSelection();\n\t\t if (range == null) return;\n\t\t if (range.length == 0) {\n\t\t var formats = this.quill.getFormat();\n\t\t Object.keys(formats).forEach(function (name) {\n\t\t // Clean functionality in existing apps only clean inline formats\n\t\t if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n\t\t _this3.quill.format(name, false);\n\t\t }\n\t\t });\n\t\t } else {\n\t\t this.quill.removeFormat(range, _quill2.default.sources.USER);\n\t\t }\n\t\t },\n\t\t direction: function direction(value) {\n\t\t var align = this.quill.getFormat()['align'];\n\t\t if (value === 'rtl' && align == null) {\n\t\t this.quill.format('align', 'right', _quill2.default.sources.USER);\n\t\t } else if (!value && align === 'right') {\n\t\t this.quill.format('align', false, _quill2.default.sources.USER);\n\t\t }\n\t\t this.quill.format('direction', value, _quill2.default.sources.USER);\n\t\t },\n\t\t indent: function indent(value) {\n\t\t var range = this.quill.getSelection();\n\t\t var formats = this.quill.getFormat(range);\n\t\t var indent = parseInt(formats.indent || 0);\n\t\t if (value === '+1' || value === '-1') {\n\t\t var modifier = value === '+1' ? 1 : -1;\n\t\t if (formats.direction === 'rtl') modifier *= -1;\n\t\t this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n\t\t }\n\t\t },\n\t\t link: function link(value) {\n\t\t if (value === true) {\n\t\t value = prompt('Enter link URL:');\n\t\t }\n\t\t this.quill.format('link', value, _quill2.default.sources.USER);\n\t\t },\n\t\t list: function list(value) {\n\t\t var range = this.quill.getSelection();\n\t\t var formats = this.quill.getFormat(range);\n\t\t if (value === 'check') {\n\t\t if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n\t\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t\t } else {\n\t\t this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n\t\t }\n\t\t } else {\n\t\t this.quill.format('list', value, _quill2.default.sources.USER);\n\t\t }\n\t\t }\n\t\t }\n\t\t};\n\t\n\t\texports.default = Toolbar;\n\t\texports.addControls = addControls;\n\t\n\t/***/ },\n\t/* 69 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tmodule.exports = {\n\t\t 'align': {\n\t\t '': __webpack_require__(70),\n\t\t 'center': __webpack_require__(71),\n\t\t 'right': __webpack_require__(72),\n\t\t 'justify': __webpack_require__(73)\n\t\t },\n\t\t 'background': __webpack_require__(74),\n\t\t 'blockquote': __webpack_require__(75),\n\t\t 'bold': __webpack_require__(76),\n\t\t 'clean': __webpack_require__(77),\n\t\t 'code': __webpack_require__(78),\n\t\t 'code-block': __webpack_require__(78),\n\t\t 'color': __webpack_require__(79),\n\t\t 'direction': {\n\t\t '': __webpack_require__(80),\n\t\t 'rtl': __webpack_require__(81)\n\t\t },\n\t\t 'float': {\n\t\t 'center': __webpack_require__(82),\n\t\t 'full': __webpack_require__(83),\n\t\t 'left': __webpack_require__(84),\n\t\t 'right': __webpack_require__(85)\n\t\t },\n\t\t 'formula': __webpack_require__(86),\n\t\t 'header': {\n\t\t '1': __webpack_require__(87),\n\t\t '2': __webpack_require__(88)\n\t\t },\n\t\t 'italic': __webpack_require__(89),\n\t\t 'image': __webpack_require__(90),\n\t\t 'indent': {\n\t\t '+1': __webpack_require__(91),\n\t\t '-1': __webpack_require__(92)\n\t\t },\n\t\t 'link': __webpack_require__(93),\n\t\t 'list': {\n\t\t 'ordered': __webpack_require__(94),\n\t\t 'bullet': __webpack_require__(95),\n\t\t 'check': __webpack_require__(96)\n\t\t },\n\t\t 'script': {\n\t\t 'sub': __webpack_require__(97),\n\t\t 'super': __webpack_require__(98)\n\t\t },\n\t\t 'strike': __webpack_require__(99),\n\t\t 'underline': __webpack_require__(100),\n\t\t 'video': __webpack_require__(101)\n\t\t};\n\t\n\t/***/ },\n\t/* 70 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 71 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 72 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 73 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 74 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 75 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 76 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 77 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 78 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 79 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 80 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 81 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 82 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 83 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 84 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 85 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 86 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 87 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 88 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 89 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 90 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 91 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 92 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 93 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 94 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 95 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 96 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 97 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 98 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 99 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 100 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 101 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 102 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _dropdown = __webpack_require__(103);\n\t\n\t\tvar _dropdown2 = _interopRequireDefault(_dropdown);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tvar Picker = function () {\n\t\t function Picker(select) {\n\t\t var _this = this;\n\t\n\t\t _classCallCheck(this, Picker);\n\t\n\t\t this.select = select;\n\t\t this.container = document.createElement('span');\n\t\t this.buildPicker();\n\t\t this.select.style.display = 'none';\n\t\t this.select.parentNode.insertBefore(this.container, this.select);\n\t\t this.label.addEventListener('mousedown', function () {\n\t\t _this.container.classList.toggle('ql-expanded');\n\t\t });\n\t\t this.select.addEventListener('change', this.update.bind(this));\n\t\t }\n\t\n\t\t _createClass(Picker, [{\n\t\t key: 'buildItem',\n\t\t value: function buildItem(option) {\n\t\t var _this2 = this;\n\t\n\t\t var item = document.createElement('span');\n\t\t item.classList.add('ql-picker-item');\n\t\t if (option.hasAttribute('value')) {\n\t\t item.setAttribute('data-value', option.getAttribute('value'));\n\t\t }\n\t\t if (option.textContent) {\n\t\t item.setAttribute('data-label', option.textContent);\n\t\t }\n\t\t item.addEventListener('click', function () {\n\t\t _this2.selectItem(item, true);\n\t\t });\n\t\t return item;\n\t\t }\n\t\t }, {\n\t\t key: 'buildLabel',\n\t\t value: function buildLabel() {\n\t\t var label = document.createElement('span');\n\t\t label.classList.add('ql-picker-label');\n\t\t label.innerHTML = _dropdown2.default;\n\t\t this.container.appendChild(label);\n\t\t return label;\n\t\t }\n\t\t }, {\n\t\t key: 'buildOptions',\n\t\t value: function buildOptions() {\n\t\t var _this3 = this;\n\t\n\t\t var options = document.createElement('span');\n\t\t options.classList.add('ql-picker-options');\n\t\t [].slice.call(this.select.options).forEach(function (option) {\n\t\t var item = _this3.buildItem(option);\n\t\t options.appendChild(item);\n\t\t if (option.hasAttribute('selected')) {\n\t\t _this3.selectItem(item);\n\t\t }\n\t\t });\n\t\t this.container.appendChild(options);\n\t\t }\n\t\t }, {\n\t\t key: 'buildPicker',\n\t\t value: function buildPicker() {\n\t\t var _this4 = this;\n\t\n\t\t [].slice.call(this.select.attributes).forEach(function (item) {\n\t\t _this4.container.setAttribute(item.name, item.value);\n\t\t });\n\t\t this.container.classList.add('ql-picker');\n\t\t this.label = this.buildLabel();\n\t\t this.buildOptions();\n\t\t }\n\t\t }, {\n\t\t key: 'close',\n\t\t value: function close() {\n\t\t this.container.classList.remove('ql-expanded');\n\t\t }\n\t\t }, {\n\t\t key: 'selectItem',\n\t\t value: function selectItem(item) {\n\t\t var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t\t var selected = this.container.querySelector('.ql-selected');\n\t\t if (item === selected) return;\n\t\t if (selected != null) {\n\t\t selected.classList.remove('ql-selected');\n\t\t }\n\t\t if (item == null) return;\n\t\t item.classList.add('ql-selected');\n\t\t this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n\t\t if (item.hasAttribute('data-value')) {\n\t\t this.label.setAttribute('data-value', item.getAttribute('data-value'));\n\t\t } else {\n\t\t this.label.removeAttribute('data-value');\n\t\t }\n\t\t if (item.hasAttribute('data-label')) {\n\t\t this.label.setAttribute('data-label', item.getAttribute('data-label'));\n\t\t } else {\n\t\t this.label.removeAttribute('data-label');\n\t\t }\n\t\t if (trigger) {\n\t\t if (typeof Event === 'function') {\n\t\t this.select.dispatchEvent(new Event('change'));\n\t\t } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n\t\t // IE11\n\t\t var event = document.createEvent('Event');\n\t\t event.initEvent('change', true, true);\n\t\t this.select.dispatchEvent(event);\n\t\t }\n\t\t this.close();\n\t\t }\n\t\t }\n\t\t }, {\n\t\t key: 'update',\n\t\t value: function update() {\n\t\t var option = void 0;\n\t\t if (this.select.selectedIndex > -1) {\n\t\t var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n\t\t option = this.select.options[this.select.selectedIndex];\n\t\t this.selectItem(item);\n\t\t } else {\n\t\t this.selectItem(null);\n\t\t }\n\t\t var isActive = option != null && option !== this.select.querySelector('option[selected]');\n\t\t this.label.classList.toggle('ql-active', isActive);\n\t\t }\n\t\t }]);\n\t\n\t\t return Picker;\n\t\t}();\n\t\n\t\texports.default = Picker;\n\t\n\t/***/ },\n\t/* 103 */\n\t/***/ function(module, exports) {\n\t\n\t\tmodule.exports = \"\";\n\t\n\t/***/ },\n\t/* 104 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _picker = __webpack_require__(102);\n\t\n\t\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar ColorPicker = function (_Picker) {\n\t\t _inherits(ColorPicker, _Picker);\n\t\n\t\t function ColorPicker(select, label) {\n\t\t _classCallCheck(this, ColorPicker);\n\t\n\t\t var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\t\n\t\t _this.label.innerHTML = label;\n\t\t _this.container.classList.add('ql-color-picker');\n\t\t [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n\t\t item.classList.add('ql-primary');\n\t\t });\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(ColorPicker, [{\n\t\t key: 'buildItem',\n\t\t value: function buildItem(option) {\n\t\t var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n\t\t item.style.backgroundColor = option.getAttribute('value') || '';\n\t\t return item;\n\t\t }\n\t\t }, {\n\t\t key: 'selectItem',\n\t\t value: function selectItem(item, trigger) {\n\t\t _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\t\t var colorLabel = this.label.querySelector('.ql-color-label');\n\t\t var value = item ? item.getAttribute('data-value') || '' : '';\n\t\t if (colorLabel) {\n\t\t if (colorLabel.tagName === 'line') {\n\t\t colorLabel.style.stroke = value;\n\t\t } else {\n\t\t colorLabel.style.fill = value;\n\t\t }\n\t\t }\n\t\t }\n\t\t }]);\n\t\n\t\t return ColorPicker;\n\t\t}(_picker2.default);\n\t\n\t\texports.default = ColorPicker;\n\t\n\t/***/ },\n\t/* 105 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _picker = __webpack_require__(102);\n\t\n\t\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar IconPicker = function (_Picker) {\n\t\t _inherits(IconPicker, _Picker);\n\t\n\t\t function IconPicker(select, icons) {\n\t\t _classCallCheck(this, IconPicker);\n\t\n\t\t var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\t\n\t\t _this.container.classList.add('ql-icon-picker');\n\t\t [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n\t\t item.innerHTML = icons[item.getAttribute('data-value') || ''];\n\t\t });\n\t\t _this.defaultItem = _this.container.querySelector('.ql-selected');\n\t\t _this.selectItem(_this.defaultItem);\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(IconPicker, [{\n\t\t key: 'selectItem',\n\t\t value: function selectItem(item, trigger) {\n\t\t _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\t\t item = item || this.defaultItem;\n\t\t this.label.innerHTML = item.innerHTML;\n\t\t }\n\t\t }]);\n\t\n\t\t return IconPicker;\n\t\t}(_picker2.default);\n\t\n\t\texports.default = IconPicker;\n\t\n\t/***/ },\n\t/* 106 */\n\t/***/ function(module, exports) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tvar Tooltip = function () {\n\t\t function Tooltip(quill, boundsContainer) {\n\t\t var _this = this;\n\t\n\t\t _classCallCheck(this, Tooltip);\n\t\n\t\t this.quill = quill;\n\t\t this.boundsContainer = boundsContainer || document.body;\n\t\t this.root = quill.addContainer('ql-tooltip');\n\t\t this.root.innerHTML = this.constructor.TEMPLATE;\n\t\t this.quill.root.addEventListener('scroll', function () {\n\t\t _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n\t\t });\n\t\t this.hide();\n\t\t }\n\t\n\t\t _createClass(Tooltip, [{\n\t\t key: 'hide',\n\t\t value: function hide() {\n\t\t this.root.classList.add('ql-hidden');\n\t\t }\n\t\t }, {\n\t\t key: 'position',\n\t\t value: function position(reference) {\n\t\t var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n\t\t var top = reference.bottom + this.quill.root.scrollTop;\n\t\t this.root.style.left = left + 'px';\n\t\t this.root.style.top = top + 'px';\n\t\t this.root.classList.remove('ql-flip');\n\t\t var containerBounds = this.boundsContainer.getBoundingClientRect();\n\t\t var rootBounds = this.root.getBoundingClientRect();\n\t\t var shift = 0;\n\t\t if (rootBounds.right > containerBounds.right) {\n\t\t shift = containerBounds.right - rootBounds.right;\n\t\t this.root.style.left = left + shift + 'px';\n\t\t }\n\t\t if (rootBounds.left < containerBounds.left) {\n\t\t shift = containerBounds.left - rootBounds.left;\n\t\t this.root.style.left = left + shift + 'px';\n\t\t }\n\t\t if (rootBounds.bottom > containerBounds.bottom) {\n\t\t var height = rootBounds.bottom - rootBounds.top;\n\t\t var verticalShift = containerBounds.bottom - rootBounds.bottom - height;\n\t\t this.root.style.top = top + verticalShift + 'px';\n\t\t this.root.classList.add('ql-flip');\n\t\t }\n\t\t return shift;\n\t\t }\n\t\t }, {\n\t\t key: 'show',\n\t\t value: function show() {\n\t\t this.root.classList.remove('ql-editing');\n\t\t this.root.classList.remove('ql-hidden');\n\t\t }\n\t\t }]);\n\t\n\t\t return Tooltip;\n\t\t}();\n\t\n\t\texports.default = Tooltip;\n\t\n\t/***/ },\n\t/* 107 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.default = exports.BubbleTooltip = undefined;\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _extend = __webpack_require__(25);\n\t\n\t\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\t\tvar _emitter = __webpack_require__(35);\n\t\n\t\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\t\tvar _base = __webpack_require__(108);\n\t\n\t\tvar _base2 = _interopRequireDefault(_base);\n\t\n\t\tvar _selection = __webpack_require__(40);\n\t\n\t\tvar _icons = __webpack_require__(69);\n\t\n\t\tvar _icons2 = _interopRequireDefault(_icons);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\t\n\t\tvar BubbleTheme = function (_BaseTheme) {\n\t\t _inherits(BubbleTheme, _BaseTheme);\n\t\n\t\t function BubbleTheme(quill, options) {\n\t\t _classCallCheck(this, BubbleTheme);\n\t\n\t\t if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n\t\t options.modules.toolbar.container = TOOLBAR_CONFIG;\n\t\t }\n\t\n\t\t var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\t\n\t\t _this.quill.container.classList.add('ql-bubble');\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(BubbleTheme, [{\n\t\t key: 'extendToolbar',\n\t\t value: function extendToolbar(toolbar) {\n\t\t this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n\t\t this.tooltip.root.appendChild(toolbar.container);\n\t\t this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n\t\t this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n\t\t }\n\t\t }]);\n\t\n\t\t return BubbleTheme;\n\t\t}(_base2.default);\n\t\n\t\tBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n\t\t modules: {\n\t\t toolbar: {\n\t\t handlers: {\n\t\t link: function link(value) {\n\t\t if (!value) {\n\t\t this.quill.format('link', false);\n\t\t } else {\n\t\t this.quill.theme.tooltip.edit();\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t});\n\t\n\t\tvar BubbleTooltip = function (_BaseTooltip) {\n\t\t _inherits(BubbleTooltip, _BaseTooltip);\n\t\n\t\t function BubbleTooltip(quill, bounds) {\n\t\t _classCallCheck(this, BubbleTooltip);\n\t\n\t\t var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\t\n\t\t _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n\t\t if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n\t\t if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n\t\t _this2.show();\n\t\t // Lock our width so we will expand beyond our offsetParent boundaries\n\t\t _this2.root.style.left = '0px';\n\t\t _this2.root.style.width = '';\n\t\t _this2.root.style.width = _this2.root.offsetWidth + 'px';\n\t\t var lines = _this2.quill.getLines(range.index, range.length);\n\t\t if (lines.length === 1) {\n\t\t _this2.position(_this2.quill.getBounds(range));\n\t\t } else {\n\t\t var lastLine = lines[lines.length - 1];\n\t\t var index = _this2.quill.getIndex(lastLine);\n\t\t var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n\t\t var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n\t\t _this2.position(_bounds);\n\t\t }\n\t\t } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n\t\t _this2.hide();\n\t\t }\n\t\t });\n\t\t return _this2;\n\t\t }\n\t\n\t\t _createClass(BubbleTooltip, [{\n\t\t key: 'listen',\n\t\t value: function listen() {\n\t\t var _this3 = this;\n\t\n\t\t _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n\t\t this.root.querySelector('.ql-close').addEventListener('click', function () {\n\t\t _this3.root.classList.remove('ql-editing');\n\t\t });\n\t\t this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t\t // Let selection be restored by toolbar handlers before repositioning\n\t\t setTimeout(function () {\n\t\t if (_this3.root.classList.contains('ql-hidden')) return;\n\t\t var range = _this3.quill.getSelection();\n\t\t if (range != null) {\n\t\t _this3.position(_this3.quill.getBounds(range));\n\t\t }\n\t\t }, 1);\n\t\t });\n\t\t }\n\t\t }, {\n\t\t key: 'cancel',\n\t\t value: function cancel() {\n\t\t this.show();\n\t\t }\n\t\t }, {\n\t\t key: 'position',\n\t\t value: function position(reference) {\n\t\t var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n\t\t var arrow = this.root.querySelector('.ql-tooltip-arrow');\n\t\t arrow.style.marginLeft = '';\n\t\t if (shift === 0) return shift;\n\t\t arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n\t\t }\n\t\t }]);\n\t\n\t\t return BubbleTooltip;\n\t\t}(_base.BaseTooltip);\n\t\n\t\tBubbleTooltip.TEMPLATE = ['', ''].join('');\n\t\n\t\texports.BubbleTooltip = BubbleTooltip;\n\t\texports.default = BubbleTheme;\n\t\n\t/***/ },\n\t/* 108 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\texports.default = exports.BaseTooltip = undefined;\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _extend = __webpack_require__(25);\n\t\n\t\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\t\tvar _quillDelta = __webpack_require__(20);\n\t\n\t\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\t\tvar _emitter = __webpack_require__(35);\n\t\n\t\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\t\tvar _keyboard = __webpack_require__(52);\n\t\n\t\tvar _keyboard2 = _interopRequireDefault(_keyboard);\n\t\n\t\tvar _theme = __webpack_require__(41);\n\t\n\t\tvar _theme2 = _interopRequireDefault(_theme);\n\t\n\t\tvar _colorPicker = __webpack_require__(104);\n\t\n\t\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\t\n\t\tvar _iconPicker = __webpack_require__(105);\n\t\n\t\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\t\n\t\tvar _picker = __webpack_require__(102);\n\t\n\t\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\t\tvar _tooltip = __webpack_require__(106);\n\t\n\t\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar ALIGNS = [false, 'center', 'right', 'justify'];\n\t\n\t\tvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\t\n\t\tvar FONTS = [false, 'serif', 'monospace'];\n\t\n\t\tvar HEADERS = ['1', '2', '3', false];\n\t\n\t\tvar SIZES = ['small', false, 'large', 'huge'];\n\t\n\t\tvar BaseTheme = function (_Theme) {\n\t\t _inherits(BaseTheme, _Theme);\n\t\n\t\t function BaseTheme(quill, options) {\n\t\t _classCallCheck(this, BaseTheme);\n\t\n\t\t var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\t\n\t\t var listener = function listener(e) {\n\t\t if (!document.body.contains(quill.root)) {\n\t\t return document.body.removeEventListener('click', listener);\n\t\t }\n\t\t if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n\t\t _this.tooltip.hide();\n\t\t }\n\t\t if (_this.pickers != null) {\n\t\t _this.pickers.forEach(function (picker) {\n\t\t if (!picker.container.contains(e.target)) {\n\t\t picker.close();\n\t\t }\n\t\t });\n\t\t }\n\t\t };\n\t\t document.body.addEventListener('click', listener);\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(BaseTheme, [{\n\t\t key: 'addModule',\n\t\t value: function addModule(name) {\n\t\t var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n\t\t if (name === 'toolbar') {\n\t\t this.extendToolbar(module);\n\t\t }\n\t\t return module;\n\t\t }\n\t\t }, {\n\t\t key: 'buildButtons',\n\t\t value: function buildButtons(buttons, icons) {\n\t\t buttons.forEach(function (button) {\n\t\t var className = button.getAttribute('class') || '';\n\t\t className.split(/\\s+/).forEach(function (name) {\n\t\t if (!name.startsWith('ql-')) return;\n\t\t name = name.slice('ql-'.length);\n\t\t if (icons[name] == null) return;\n\t\t if (name === 'direction') {\n\t\t button.innerHTML = icons[name][''] + icons[name]['rtl'];\n\t\t } else if (typeof icons[name] === 'string') {\n\t\t button.innerHTML = icons[name];\n\t\t } else {\n\t\t var value = button.value || '';\n\t\t if (value != null && icons[name][value]) {\n\t\t button.innerHTML = icons[name][value];\n\t\t }\n\t\t }\n\t\t });\n\t\t });\n\t\t }\n\t\t }, {\n\t\t key: 'buildPickers',\n\t\t value: function buildPickers(selects, icons) {\n\t\t var _this2 = this;\n\t\n\t\t this.pickers = selects.map(function (select) {\n\t\t if (select.classList.contains('ql-align')) {\n\t\t if (select.querySelector('option') == null) {\n\t\t fillSelect(select, ALIGNS);\n\t\t }\n\t\t return new _iconPicker2.default(select, icons.align);\n\t\t } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n\t\t var format = select.classList.contains('ql-background') ? 'background' : 'color';\n\t\t if (select.querySelector('option') == null) {\n\t\t fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n\t\t }\n\t\t return new _colorPicker2.default(select, icons[format]);\n\t\t } else {\n\t\t if (select.querySelector('option') == null) {\n\t\t if (select.classList.contains('ql-font')) {\n\t\t fillSelect(select, FONTS);\n\t\t } else if (select.classList.contains('ql-header')) {\n\t\t fillSelect(select, HEADERS);\n\t\t } else if (select.classList.contains('ql-size')) {\n\t\t fillSelect(select, SIZES);\n\t\t }\n\t\t }\n\t\t return new _picker2.default(select);\n\t\t }\n\t\t });\n\t\t var update = function update() {\n\t\t _this2.pickers.forEach(function (picker) {\n\t\t picker.update();\n\t\t });\n\t\t };\n\t\t this.quill.on(_emitter2.default.events.SELECTION_CHANGE, update).on(_emitter2.default.events.SCROLL_OPTIMIZE, update);\n\t\t }\n\t\t }]);\n\t\n\t\t return BaseTheme;\n\t\t}(_theme2.default);\n\t\n\t\tBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n\t\t modules: {\n\t\t toolbar: {\n\t\t handlers: {\n\t\t formula: function formula() {\n\t\t this.quill.theme.tooltip.edit('formula');\n\t\t },\n\t\t image: function image() {\n\t\t var _this3 = this;\n\t\n\t\t var fileInput = this.container.querySelector('input.ql-image[type=file]');\n\t\t if (fileInput == null) {\n\t\t fileInput = document.createElement('input');\n\t\t fileInput.setAttribute('type', 'file');\n\t\t fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon, image/svg+xml');\n\t\t fileInput.classList.add('ql-image');\n\t\t fileInput.addEventListener('change', function () {\n\t\t if (fileInput.files != null && fileInput.files[0] != null) {\n\t\t var reader = new FileReader();\n\t\t reader.onload = function (e) {\n\t\t var range = _this3.quill.getSelection(true);\n\t\t _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n\t\t fileInput.value = \"\";\n\t\t };\n\t\t reader.readAsDataURL(fileInput.files[0]);\n\t\t }\n\t\t });\n\t\t this.container.appendChild(fileInput);\n\t\t }\n\t\t fileInput.click();\n\t\t },\n\t\t video: function video() {\n\t\t this.quill.theme.tooltip.edit('video');\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t});\n\t\n\t\tvar BaseTooltip = function (_Tooltip) {\n\t\t _inherits(BaseTooltip, _Tooltip);\n\t\n\t\t function BaseTooltip(quill, boundsContainer) {\n\t\t _classCallCheck(this, BaseTooltip);\n\t\n\t\t var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\t\n\t\t _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n\t\t _this4.listen();\n\t\t return _this4;\n\t\t }\n\t\n\t\t _createClass(BaseTooltip, [{\n\t\t key: 'listen',\n\t\t value: function listen() {\n\t\t var _this5 = this;\n\t\n\t\t this.textbox.addEventListener('keydown', function (event) {\n\t\t if (_keyboard2.default.match(event, 'enter')) {\n\t\t _this5.save();\n\t\t event.preventDefault();\n\t\t } else if (_keyboard2.default.match(event, 'escape')) {\n\t\t _this5.cancel();\n\t\t event.preventDefault();\n\t\t }\n\t\t });\n\t\t }\n\t\t }, {\n\t\t key: 'cancel',\n\t\t value: function cancel() {\n\t\t this.hide();\n\t\t }\n\t\t }, {\n\t\t key: 'edit',\n\t\t value: function edit() {\n\t\t var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n\t\t var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t\n\t\t this.root.classList.remove('ql-hidden');\n\t\t this.root.classList.add('ql-editing');\n\t\t if (preview != null) {\n\t\t this.textbox.value = preview;\n\t\t } else if (mode !== this.root.getAttribute('data-mode')) {\n\t\t this.textbox.value = '';\n\t\t }\n\t\t this.position(this.quill.getBounds(this.quill.selection.savedRange));\n\t\t this.textbox.select();\n\t\t this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n\t\t this.root.setAttribute('data-mode', mode);\n\t\t }\n\t\t }, {\n\t\t key: 'restoreFocus',\n\t\t value: function restoreFocus() {\n\t\t var scrollTop = this.quill.root.scrollTop;\n\t\t this.quill.focus();\n\t\t this.quill.root.scrollTop = scrollTop;\n\t\t }\n\t\t }, {\n\t\t key: 'save',\n\t\t value: function save() {\n\t\t var value = this.textbox.value;\n\t\t switch (this.root.getAttribute('data-mode')) {\n\t\t case 'link':\n\t\t {\n\t\t var scrollTop = this.quill.root.scrollTop;\n\t\t if (this.linkRange) {\n\t\t this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n\t\t delete this.linkRange;\n\t\t } else {\n\t\t this.restoreFocus();\n\t\t this.quill.format('link', value, _emitter2.default.sources.USER);\n\t\t }\n\t\t this.quill.root.scrollTop = scrollTop;\n\t\t break;\n\t\t }\n\t\t case 'video':\n\t\t {\n\t\t var match = value.match(/^(https?):\\/\\/(www\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || value.match(/^(https?):\\/\\/(www\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n\t\t if (match) {\n\t\t value = match[1] + '://www.youtube.com/embed/' + match[3] + '?showinfo=0';\n\t\t } else if (match = value.match(/^(https?):\\/\\/(www\\.)?vimeo\\.com\\/(\\d+)/)) {\n\t\t // eslint-disable-line no-cond-assign\n\t\t value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';\n\t\t }\n\t\t } // eslint-disable-next-line no-fallthrough\n\t\t case 'formula':\n\t\t {\n\t\t var range = this.quill.getSelection(true);\n\t\t var index = range.index + range.length;\n\t\t if (range != null) {\n\t\t this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n\t\t if (this.root.getAttribute('data-mode') === 'formula') {\n\t\t this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n\t\t }\n\t\t this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n\t\t }\n\t\t break;\n\t\t }\n\t\t default:\n\t\t }\n\t\t this.textbox.value = '';\n\t\t this.hide();\n\t\t }\n\t\t }]);\n\t\n\t\t return BaseTooltip;\n\t\t}(_tooltip2.default);\n\t\n\t\tfunction fillSelect(select, values) {\n\t\t var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t\n\t\t values.forEach(function (value) {\n\t\t var option = document.createElement('option');\n\t\t if (value === defaultValue) {\n\t\t option.setAttribute('selected', 'selected');\n\t\t } else {\n\t\t option.setAttribute('value', value);\n\t\t }\n\t\t select.appendChild(option);\n\t\t });\n\t\t}\n\t\n\t\texports.BaseTooltip = BaseTooltip;\n\t\texports.default = BaseTheme;\n\t\n\t/***/ },\n\t/* 109 */\n\t/***/ function(module, exports, __webpack_require__) {\n\t\n\t\t'use strict';\n\t\n\t\tObject.defineProperty(exports, \"__esModule\", {\n\t\t value: true\n\t\t});\n\t\n\t\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\t\n\t\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\t\tvar _extend = __webpack_require__(25);\n\t\n\t\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\t\tvar _emitter = __webpack_require__(35);\n\t\n\t\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\t\tvar _base = __webpack_require__(108);\n\t\n\t\tvar _base2 = _interopRequireDefault(_base);\n\t\n\t\tvar _link = __webpack_require__(60);\n\t\n\t\tvar _link2 = _interopRequireDefault(_link);\n\t\n\t\tvar _selection = __webpack_require__(40);\n\t\n\t\tvar _icons = __webpack_require__(69);\n\t\n\t\tvar _icons2 = _interopRequireDefault(_icons);\n\t\n\t\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\t\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\t\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t\tvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\t\n\t\tvar SnowTheme = function (_BaseTheme) {\n\t\t _inherits(SnowTheme, _BaseTheme);\n\t\n\t\t function SnowTheme(quill, options) {\n\t\t _classCallCheck(this, SnowTheme);\n\t\n\t\t if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n\t\t options.modules.toolbar.container = TOOLBAR_CONFIG;\n\t\t }\n\t\n\t\t var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\t\n\t\t _this.quill.container.classList.add('ql-snow');\n\t\t return _this;\n\t\t }\n\t\n\t\t _createClass(SnowTheme, [{\n\t\t key: 'extendToolbar',\n\t\t value: function extendToolbar(toolbar) {\n\t\t toolbar.container.classList.add('ql-snow');\n\t\t this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n\t\t this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n\t\t this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n\t\t if (toolbar.container.querySelector('.ql-link')) {\n\t\t this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n\t\t toolbar.handlers['link'].call(toolbar, !context.format.link);\n\t\t });\n\t\t }\n\t\t }\n\t\t }]);\n\t\n\t\t return SnowTheme;\n\t\t}(_base2.default);\n\t\n\t\tSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n\t\t modules: {\n\t\t toolbar: {\n\t\t handlers: {\n\t\t link: function link(value) {\n\t\t if (value) {\n\t\t var range = this.quill.getSelection();\n\t\t if (range == null || range.length == 0) return;\n\t\t var preview = this.quill.getText(range);\n\t\t if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n\t\t preview = 'mailto:' + preview;\n\t\t }\n\t\t var tooltip = this.quill.theme.tooltip;\n\t\t tooltip.edit('link', preview);\n\t\t } else {\n\t\t this.quill.format('link', false);\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\t\t});\n\t\n\t\tvar SnowTooltip = function (_BaseTooltip) {\n\t\t _inherits(SnowTooltip, _BaseTooltip);\n\t\n\t\t function SnowTooltip(quill, bounds) {\n\t\t _classCallCheck(this, SnowTooltip);\n\t\n\t\t var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\t\n\t\t _this2.preview = _this2.root.querySelector('a.ql-preview');\n\t\t return _this2;\n\t\t }\n\t\n\t\t _createClass(SnowTooltip, [{\n\t\t key: 'listen',\n\t\t value: function listen() {\n\t\t var _this3 = this;\n\t\n\t\t _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n\t\t this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n\t\t if (_this3.root.classList.contains('ql-editing')) {\n\t\t _this3.save();\n\t\t } else {\n\t\t _this3.edit('link', _this3.preview.textContent);\n\t\t }\n\t\t event.preventDefault();\n\t\t });\n\t\t this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n\t\t if (_this3.linkRange != null) {\n\t\t _this3.restoreFocus();\n\t\t _this3.quill.formatText(_this3.linkRange, 'link', false, _emitter2.default.sources.USER);\n\t\t delete _this3.linkRange;\n\t\t }\n\t\t event.preventDefault();\n\t\t _this3.hide();\n\t\t });\n\t\t this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n\t\t if (range == null) return;\n\t\t if (range.length === 0 && source === _emitter2.default.sources.USER) {\n\t\t var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n\t\t _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n\t\t link = _quill$scroll$descend2[0],\n\t\t offset = _quill$scroll$descend2[1];\n\t\n\t\t if (link != null) {\n\t\t _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n\t\t var preview = _link2.default.formats(link.domNode);\n\t\t _this3.preview.textContent = preview;\n\t\t _this3.preview.setAttribute('href', preview);\n\t\t _this3.show();\n\t\t _this3.position(_this3.quill.getBounds(_this3.linkRange));\n\t\t return;\n\t\t }\n\t\t } else {\n\t\t delete _this3.linkRange;\n\t\t }\n\t\t _this3.hide();\n\t\t });\n\t\t }\n\t\t }, {\n\t\t key: 'show',\n\t\t value: function show() {\n\t\t _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n\t\t this.root.removeAttribute('data-mode');\n\t\t }\n\t\t }]);\n\t\n\t\t return SnowTooltip;\n\t\t}(_base.BaseTooltip);\n\t\n\t\tSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\t\n\t\texports.default = SnowTheme;\n\t\n\t/***/ }\n\t/******/ ])\n\t});\n\t;\n\n/***/ },\n/* 40 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(module) {\r\n\t\tif(!module.webpackPolyfill) {\r\n\t\t\tmodule.deprecate = function() {};\r\n\t\t\tmodule.paths = [];\r\n\t\t\t// module.parent = undefined by default\r\n\t\t\tmodule.children = [];\r\n\t\t\tmodule.webpackPolyfill = 1;\r\n\t\t}\r\n\t\treturn module;\r\n\t}\r\n\n\n/***/ },\n/* 41 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar Quill = __webpack_require__(39);\n\t\n\tvar QuillMixin = {\n\t\n\t\t/**\n\t\tCreates an editor on the given element. The editor will\n\t\tbe passed the configuration, have its events bound,\n\t\t*/\n\t\tcreateEditor: function($el, config) {\n\t\t\tvar editor = new Quill($el, config);\n\t\t\tthis.hookEditor(editor);\n\t\t\treturn editor;\n\t\t},\n\t\n\t\thookEditor: function(editor) {\n\t\t\t// Expose the editor on change events via a weaker,\n\t\t\t// unprivileged proxy object that does not allow\n\t\t\t// accidentally modifying editor state.\n\t\t\tvar unprivilegedEditor = this.makeUnprivilegedEditor(editor);\n\t\n\t\t\tthis.handleEditorChange = function(delta, oldDelta, source) {\n\t\t\t\tif (this.onEditorChange) {\n\t\t\t\t\tthis.onEditorChange(\n\t\t\t\t\t\teditor.root.innerHTML, delta, source,\n\t\t\t\t\t\tunprivilegedEditor\n\t\t\t\t\t);\n\t\t\t\t\tthis.onEditorChangeSelection(\n\t\t\t\t\t\teditor.getSelection(), source,\n\t\t\t\t\t\tunprivilegedEditor\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}.bind(this);\n\t\n\t\t\tthis.handleSelectionChange = function(range, oldRange, source) {\n\t\t\t\tif (this.onEditorChangeSelection) {\n\t\t\t\t\tthis.onEditorChangeSelection(\n\t\t\t\t\t\trange, source,\n\t\t\t\t\t\tunprivilegedEditor\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}.bind(this);\n\t\n\t\t\teditor.on('editor-change', this.handleEditorChange);\n\t\t\teditor.on('selection-change', this.handleSelectionChange);\n\t\t},\n\t\n\t\tunhookEditor: function(editor) {\n\t\t\teditor.off('selection-change');\n\t\t\teditor.off('editor-change');\n\t\t},\n\t\n\t\tsetEditorReadOnly: function(editor, value) {\n\t\t\tvalue? editor.disable()\n\t\t\t : editor.enable();\n\t\t},\n\t\n\t\t/*\n\t\tReplace the contents of the editor, but keep\n\t\tthe previous selection hanging around so that\n\t\tthe cursor won't move.\n\t\t*/\n\t\tsetEditorContents: function(editor, value) {\n\t\t\tvar sel = editor.getSelection();\n\t\t\teditor.pasteHTML(value || '');\n\t\t\tif (sel) this.setEditorSelection(editor, sel);\n\t\t},\n\t\n\t\tsetEditorSelection: function(editor, range) {\n\t\t\tif (range) {\n\t\t\t\t// Validate bounds before applying.\n\t\t\t\tvar length = editor.getLength();\n\t\t\t\trange.index = Math.max(0, Math.min(range.index, length-1));\n\t\t\t\trange.length = Math.max(0, Math.min(range.length, (length-1) - range.index));\n\t\t\t}\n\t\t\teditor.setSelection(range);\n\t\t},\n\t\n\t\t/*\n\t\tReturns an weaker, unprivileged proxy object that only\n\t\texposes read-only accessors found on the editor instance,\n\t\twithout any state-modificating methods.\n\t\t*/\n\t\tmakeUnprivilegedEditor: function(editor) {\n\t\t\tvar e = editor;\n\t\t\treturn {\n\t\t\t\tgetLength: function(){ return e.getLength.apply(e, arguments); },\n\t\t\t\tgetText: function(){ return e.getText.apply(e, arguments); },\n\t\t\t\tgetContents: function(){ return e.getContents.apply(e, arguments); },\n\t\t\t\tgetSelection: function(){ return e.getSelection.apply(e, arguments); },\n\t\t\t\tgetBounds: function(){ return e.getBounds.apply(e, arguments); },\n\t\t\t};\n\t\t}\n\t\n\t};\n\t\n\tmodule.exports = QuillMixin;\n\n\n/***/ },\n/* 42 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_42__;\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getNative = __webpack_require__(3),\n\t root = __webpack_require__(1);\n\t\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView');\n\t\n\tmodule.exports = DataView;\n\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar hashClear = __webpack_require__(88),\n\t hashDelete = __webpack_require__(89),\n\t hashGet = __webpack_require__(90),\n\t hashHas = __webpack_require__(91),\n\t hashSet = __webpack_require__(92);\n\t\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries == null ? 0 : entries.length;\n\t\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\t\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\t\n\tmodule.exports = Hash;\n\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getNative = __webpack_require__(3),\n\t root = __webpack_require__(1);\n\t\n\t/* Built-in method references that are verified to be native. */\n\tvar Promise = getNative(root, 'Promise');\n\t\n\tmodule.exports = Promise;\n\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getNative = __webpack_require__(3),\n\t root = __webpack_require__(1);\n\t\n\t/* Built-in method references that are verified to be native. */\n\tvar Set = getNative(root, 'Set');\n\t\n\tmodule.exports = Set;\n\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar MapCache = __webpack_require__(17),\n\t setCacheAdd = __webpack_require__(113),\n\t setCacheHas = __webpack_require__(114);\n\t\n\t/**\n\t *\n\t * Creates an array cache object to store unique values.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [values] The values to cache.\n\t */\n\tfunction SetCache(values) {\n\t var index = -1,\n\t length = values == null ? 0 : values.length;\n\t\n\t this.__data__ = new MapCache;\n\t while (++index < length) {\n\t this.add(values[index]);\n\t }\n\t}\n\t\n\t// Add methods to `SetCache`.\n\tSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n\tSetCache.prototype.has = setCacheHas;\n\t\n\tmodule.exports = SetCache;\n\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar root = __webpack_require__(1);\n\t\n\t/** Built-in value references. */\n\tvar Uint8Array = root.Uint8Array;\n\t\n\tmodule.exports = Uint8Array;\n\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getNative = __webpack_require__(3),\n\t root = __webpack_require__(1);\n\t\n\t/* Built-in method references that are verified to be native. */\n\tvar WeakMap = getNative(root, 'WeakMap');\n\t\n\tmodule.exports = WeakMap;\n\n\n/***/ },\n/* 50 */\n/***/ function(module, exports) {\n\n\t/**\n\t * A specialized version of `_.filter` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {Array} Returns the new filtered array.\n\t */\n\tfunction arrayFilter(array, predicate) {\n\t var index = -1,\n\t length = array == null ? 0 : array.length,\n\t resIndex = 0,\n\t result = [];\n\t\n\t while (++index < length) {\n\t var value = array[index];\n\t if (predicate(value, index, array)) {\n\t result[resIndex++] = value;\n\t }\n\t }\n\t return result;\n\t}\n\t\n\tmodule.exports = arrayFilter;\n\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseTimes = __webpack_require__(71),\n\t isArguments = __webpack_require__(34),\n\t isArray = __webpack_require__(2),\n\t isBuffer = __webpack_require__(35),\n\t isIndex = __webpack_require__(20),\n\t isTypedArray = __webpack_require__(38);\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t var isArr = isArray(value),\n\t isArg = !isArr && isArguments(value),\n\t isBuff = !isArr && !isArg && isBuffer(value),\n\t isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n\t skipIndexes = isArr || isArg || isBuff || isType,\n\t result = skipIndexes ? baseTimes(value.length, String) : [],\n\t length = result.length;\n\t\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (\n\t // Safari 9 has enumerable `arguments.length` in strict mode.\n\t key == 'length' ||\n\t // Node.js 0.10 has enumerable non-index properties on buffers.\n\t (isBuff && (key == 'offset' || key == 'parent')) ||\n\t // PhantomJS 2 has enumerable non-index properties on typed arrays.\n\t (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n\t // Skip index properties.\n\t isIndex(key, length)\n\t ))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\t\n\tmodule.exports = arrayLikeKeys;\n\n\n/***/ },\n/* 52 */\n/***/ function(module, exports) {\n\n\t/**\n\t * A specialized version of `_.map` for arrays without support for iteratee\n\t * shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the new mapped array.\n\t */\n\tfunction arrayMap(array, iteratee) {\n\t var index = -1,\n\t length = array == null ? 0 : array.length,\n\t result = Array(length);\n\t\n\t while (++index < length) {\n\t result[index] = iteratee(array[index], index, array);\n\t }\n\t return result;\n\t}\n\t\n\tmodule.exports = arrayMap;\n\n\n/***/ },\n/* 53 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\t\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t}\n\t\n\tmodule.exports = arrayPush;\n\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseForOwn = __webpack_require__(57),\n\t createBaseEach = __webpack_require__(76);\n\t\n\t/**\n\t * The base implementation of `_.forEach` without support for iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array|Object} collection The collection to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array|Object} Returns `collection`.\n\t */\n\tvar baseEach = createBaseEach(baseForOwn);\n\t\n\tmodule.exports = baseEach;\n\n\n/***/ },\n/* 55 */\n/***/ function(module, exports) {\n\n\t/**\n\t * The base implementation of `_.findIndex` and `_.findLastIndex` without\n\t * support for iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @param {number} fromIndex The index to search from.\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n\t var length = array.length,\n\t index = fromIndex + (fromRight ? 1 : -1);\n\t\n\t while ((fromRight ? index-- : ++index < length)) {\n\t if (predicate(array[index], index, array)) {\n\t return index;\n\t }\n\t }\n\t return -1;\n\t}\n\t\n\tmodule.exports = baseFindIndex;\n\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar createBaseFor = __webpack_require__(77);\n\t\n\t/**\n\t * The base implementation of `baseForOwn` which iterates over `object`\n\t * properties returned by `keysFunc` and invokes `iteratee` for each property.\n\t * Iteratee functions may exit iteration early by explicitly returning `false`.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @returns {Object} Returns `object`.\n\t */\n\tvar baseFor = createBaseFor();\n\t\n\tmodule.exports = baseFor;\n\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseFor = __webpack_require__(56),\n\t keys = __webpack_require__(15);\n\t\n\t/**\n\t * The base implementation of `_.forOwn` without support for iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Object} object The object to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseForOwn(object, iteratee) {\n\t return object && baseFor(object, iteratee, keys);\n\t}\n\t\n\tmodule.exports = baseForOwn;\n\n\n/***/ },\n/* 58 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar arrayPush = __webpack_require__(53),\n\t isArray = __webpack_require__(2);\n\t\n\t/**\n\t * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n\t * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n\t * symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @param {Function} symbolsFunc The function to get the symbols of `object`.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t var result = keysFunc(object);\n\t return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n\t}\n\t\n\tmodule.exports = baseGetAllKeys;\n\n\n/***/ },\n/* 59 */\n/***/ function(module, exports) {\n\n\t/**\n\t * The base implementation of `_.hasIn` without support for deep paths.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {Array|string} key The key to check.\n\t * @returns {boolean} Returns `true` if `key` exists, else `false`.\n\t */\n\tfunction baseHasIn(object, key) {\n\t return object != null && key in Object(object);\n\t}\n\t\n\tmodule.exports = baseHasIn;\n\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseGetTag = __webpack_require__(4),\n\t isObjectLike = __webpack_require__(6);\n\t\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]';\n\t\n\t/**\n\t * The base implementation of `_.isArguments`.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t */\n\tfunction baseIsArguments(value) {\n\t return isObjectLike(value) && baseGetTag(value) == argsTag;\n\t}\n\t\n\tmodule.exports = baseIsArguments;\n\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Stack = __webpack_require__(24),\n\t equalArrays = __webpack_require__(28),\n\t equalByTag = __webpack_require__(79),\n\t equalObjects = __webpack_require__(80),\n\t getTag = __webpack_require__(85),\n\t isArray = __webpack_require__(2),\n\t isBuffer = __webpack_require__(35),\n\t isTypedArray = __webpack_require__(38);\n\t\n\t/** Used to compose bitmasks for value comparisons. */\n\tvar COMPARE_PARTIAL_FLAG = 1;\n\t\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t objectTag = '[object Object]';\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * A specialized version of `baseIsEqual` for arrays and objects which performs\n\t * deep comparisons and tracks traversed objects enabling objects with circular\n\t * references to be compared.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n\t var objIsArr = isArray(object),\n\t othIsArr = isArray(other),\n\t objTag = objIsArr ? arrayTag : getTag(object),\n\t othTag = othIsArr ? arrayTag : getTag(other);\n\t\n\t objTag = objTag == argsTag ? objectTag : objTag;\n\t othTag = othTag == argsTag ? objectTag : othTag;\n\t\n\t var objIsObj = objTag == objectTag,\n\t othIsObj = othTag == objectTag,\n\t isSameTag = objTag == othTag;\n\t\n\t if (isSameTag && isBuffer(object)) {\n\t if (!isBuffer(other)) {\n\t return false;\n\t }\n\t objIsArr = true;\n\t objIsObj = false;\n\t }\n\t if (isSameTag && !objIsObj) {\n\t stack || (stack = new Stack);\n\t return (objIsArr || isTypedArray(object))\n\t ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n\t : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n\t }\n\t if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n\t var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n\t othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\t\n\t if (objIsWrapped || othIsWrapped) {\n\t var objUnwrapped = objIsWrapped ? object.value() : object,\n\t othUnwrapped = othIsWrapped ? other.value() : other;\n\t\n\t stack || (stack = new Stack);\n\t return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n\t }\n\t }\n\t if (!isSameTag) {\n\t return false;\n\t }\n\t stack || (stack = new Stack);\n\t return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n\t}\n\t\n\tmodule.exports = baseIsEqualDeep;\n\n\n/***/ },\n/* 62 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Stack = __webpack_require__(24),\n\t baseIsEqual = __webpack_require__(18);\n\t\n\t/** Used to compose bitmasks for value comparisons. */\n\tvar COMPARE_PARTIAL_FLAG = 1,\n\t COMPARE_UNORDERED_FLAG = 2;\n\t\n\t/**\n\t * The base implementation of `_.isMatch` without support for iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Object} object The object to inspect.\n\t * @param {Object} source The object of property values to match.\n\t * @param {Array} matchData The property names, values, and compare flags to match.\n\t * @param {Function} [customizer] The function to customize comparisons.\n\t * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n\t */\n\tfunction baseIsMatch(object, source, matchData, customizer) {\n\t var index = matchData.length,\n\t length = index,\n\t noCustomizer = !customizer;\n\t\n\t if (object == null) {\n\t return !length;\n\t }\n\t object = Object(object);\n\t while (index--) {\n\t var data = matchData[index];\n\t if ((noCustomizer && data[2])\n\t ? data[1] !== object[data[0]]\n\t : !(data[0] in object)\n\t ) {\n\t return false;\n\t }\n\t }\n\t while (++index < length) {\n\t data = matchData[index];\n\t var key = data[0],\n\t objValue = object[key],\n\t srcValue = data[1];\n\t\n\t if (noCustomizer && data[2]) {\n\t if (objValue === undefined && !(key in object)) {\n\t return false;\n\t }\n\t } else {\n\t var stack = new Stack;\n\t if (customizer) {\n\t var result = customizer(objValue, srcValue, key, object, source, stack);\n\t }\n\t if (!(result === undefined\n\t ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n\t : result\n\t )) {\n\t return false;\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tmodule.exports = baseIsMatch;\n\n\n/***/ },\n/* 63 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isFunction = __webpack_require__(37),\n\t isMasked = __webpack_require__(95),\n\t isObject = __webpack_require__(5),\n\t toSource = __webpack_require__(32);\n\t\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\t\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\t\n\t/** Used for built-in method references. */\n\tvar funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\t\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\t\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\t\n\tmodule.exports = baseIsNative;\n\n\n/***/ },\n/* 64 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseGetTag = __webpack_require__(4),\n\t isLength = __webpack_require__(23),\n\t isObjectLike = __webpack_require__(6);\n\t\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t weakMapTag = '[object WeakMap]';\n\t\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\t\n\t/** Used to identify `toStringTag` values of typed arrays. */\n\tvar typedArrayTags = {};\n\ttypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n\ttypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n\ttypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n\ttypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n\ttypedArrayTags[uint32Tag] = true;\n\ttypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n\ttypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n\ttypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n\ttypedArrayTags[errorTag] = typedArrayTags[funcTag] =\n\ttypedArrayTags[mapTag] = typedArrayTags[numberTag] =\n\ttypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n\ttypedArrayTags[setTag] = typedArrayTags[stringTag] =\n\ttypedArrayTags[weakMapTag] = false;\n\t\n\t/**\n\t * The base implementation of `_.isTypedArray` without Node.js optimizations.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n\t */\n\tfunction baseIsTypedArray(value) {\n\t return isObjectLike(value) &&\n\t isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n\t}\n\t\n\tmodule.exports = baseIsTypedArray;\n\n\n/***/ },\n/* 65 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isPrototype = __webpack_require__(96),\n\t nativeKeys = __webpack_require__(109);\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\t\n\tmodule.exports = baseKeys;\n\n\n/***/ },\n/* 66 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseIsMatch = __webpack_require__(62),\n\t getMatchData = __webpack_require__(82),\n\t matchesStrictComparable = __webpack_require__(31);\n\t\n\t/**\n\t * The base implementation of `_.matches` which doesn't clone `source`.\n\t *\n\t * @private\n\t * @param {Object} source The object of property values to match.\n\t * @returns {Function} Returns the new spec function.\n\t */\n\tfunction baseMatches(source) {\n\t var matchData = getMatchData(source);\n\t if (matchData.length == 1 && matchData[0][2]) {\n\t return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n\t }\n\t return function(object) {\n\t return object === source || baseIsMatch(object, source, matchData);\n\t };\n\t}\n\t\n\tmodule.exports = baseMatches;\n\n\n/***/ },\n/* 67 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseIsEqual = __webpack_require__(18),\n\t get = __webpack_require__(123),\n\t hasIn = __webpack_require__(124),\n\t isKey = __webpack_require__(21),\n\t isStrictComparable = __webpack_require__(30),\n\t matchesStrictComparable = __webpack_require__(31),\n\t toKey = __webpack_require__(12);\n\t\n\t/** Used to compose bitmasks for value comparisons. */\n\tvar COMPARE_PARTIAL_FLAG = 1,\n\t COMPARE_UNORDERED_FLAG = 2;\n\t\n\t/**\n\t * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n\t *\n\t * @private\n\t * @param {string} path The path of the property to get.\n\t * @param {*} srcValue The value to match.\n\t * @returns {Function} Returns the new spec function.\n\t */\n\tfunction baseMatchesProperty(path, srcValue) {\n\t if (isKey(path) && isStrictComparable(srcValue)) {\n\t return matchesStrictComparable(toKey(path), srcValue);\n\t }\n\t return function(object) {\n\t var objValue = get(object, path);\n\t return (objValue === undefined && objValue === srcValue)\n\t ? hasIn(object, path)\n\t : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n\t };\n\t}\n\t\n\tmodule.exports = baseMatchesProperty;\n\n\n/***/ },\n/* 68 */\n/***/ function(module, exports) {\n\n\t/**\n\t * The base implementation of `_.property` without support for deep paths.\n\t *\n\t * @private\n\t * @param {string} key The key of the property to get.\n\t * @returns {Function} Returns the new accessor function.\n\t */\n\tfunction baseProperty(key) {\n\t return function(object) {\n\t return object == null ? undefined : object[key];\n\t };\n\t}\n\t\n\tmodule.exports = baseProperty;\n\n\n/***/ },\n/* 69 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseGet = __webpack_require__(26);\n\t\n\t/**\n\t * A specialized version of `baseProperty` which supports deep paths.\n\t *\n\t * @private\n\t * @param {Array|string} path The path of the property to get.\n\t * @returns {Function} Returns the new accessor function.\n\t */\n\tfunction basePropertyDeep(path) {\n\t return function(object) {\n\t return baseGet(object, path);\n\t };\n\t}\n\t\n\tmodule.exports = basePropertyDeep;\n\n\n/***/ },\n/* 70 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseEach = __webpack_require__(54);\n\t\n\t/**\n\t * The base implementation of `_.some` without support for iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array|Object} collection The collection to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t */\n\tfunction baseSome(collection, predicate) {\n\t var result;\n\t\n\t baseEach(collection, function(value, index, collection) {\n\t result = predicate(value, index, collection);\n\t return !result;\n\t });\n\t return !!result;\n\t}\n\t\n\tmodule.exports = baseSome;\n\n\n/***/ },\n/* 71 */\n/***/ function(module, exports) {\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\t\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\t\n\tmodule.exports = baseTimes;\n\n\n/***/ },\n/* 72 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(8),\n\t arrayMap = __webpack_require__(52),\n\t isArray = __webpack_require__(2),\n\t isSymbol = __webpack_require__(14);\n\t\n\t/** Used as references for various `Number` constants. */\n\tvar INFINITY = 1 / 0;\n\t\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolToString = symbolProto ? symbolProto.toString : undefined;\n\t\n\t/**\n\t * The base implementation of `_.toString` which doesn't convert nullish\n\t * values to empty strings.\n\t *\n\t * @private\n\t * @param {*} value The value to process.\n\t * @returns {string} Returns the string.\n\t */\n\tfunction baseToString(value) {\n\t // Exit early for strings to avoid a performance hit in some environments.\n\t if (typeof value == 'string') {\n\t return value;\n\t }\n\t if (isArray(value)) {\n\t // Recursively convert values (susceptible to call stack limits).\n\t return arrayMap(value, baseToString) + '';\n\t }\n\t if (isSymbol(value)) {\n\t return symbolToString ? symbolToString.call(value) : '';\n\t }\n\t var result = (value + '');\n\t return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n\t}\n\t\n\tmodule.exports = baseToString;\n\n\n/***/ },\n/* 73 */\n/***/ function(module, exports) {\n\n\t/**\n\t * The base implementation of `_.unary` without support for storing metadata.\n\t *\n\t * @private\n\t * @param {Function} func The function to cap arguments for.\n\t * @returns {Function} Returns the new capped function.\n\t */\n\tfunction baseUnary(func) {\n\t return function(value) {\n\t return func(value);\n\t };\n\t}\n\t\n\tmodule.exports = baseUnary;\n\n\n/***/ },\n/* 74 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Checks if a `cache` value for `key` exists.\n\t *\n\t * @private\n\t * @param {Object} cache The cache to query.\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction cacheHas(cache, key) {\n\t return cache.has(key);\n\t}\n\t\n\tmodule.exports = cacheHas;\n\n\n/***/ },\n/* 75 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar root = __webpack_require__(1);\n\t\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\t\n\tmodule.exports = coreJsData;\n\n\n/***/ },\n/* 76 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isArrayLike = __webpack_require__(13);\n\t\n\t/**\n\t * Creates a `baseEach` or `baseEachRight` function.\n\t *\n\t * @private\n\t * @param {Function} eachFunc The function to iterate over a collection.\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {Function} Returns the new base function.\n\t */\n\tfunction createBaseEach(eachFunc, fromRight) {\n\t return function(collection, iteratee) {\n\t if (collection == null) {\n\t return collection;\n\t }\n\t if (!isArrayLike(collection)) {\n\t return eachFunc(collection, iteratee);\n\t }\n\t var length = collection.length,\n\t index = fromRight ? length : -1,\n\t iterable = Object(collection);\n\t\n\t while ((fromRight ? index-- : ++index < length)) {\n\t if (iteratee(iterable[index], index, iterable) === false) {\n\t break;\n\t }\n\t }\n\t return collection;\n\t };\n\t}\n\t\n\tmodule.exports = createBaseEach;\n\n\n/***/ },\n/* 77 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n\t *\n\t * @private\n\t * @param {boolean} [fromRight] Specify iterating from right to left.\n\t * @returns {Function} Returns the new base function.\n\t */\n\tfunction createBaseFor(fromRight) {\n\t return function(object, iteratee, keysFunc) {\n\t var index = -1,\n\t iterable = Object(object),\n\t props = keysFunc(object),\n\t length = props.length;\n\t\n\t while (length--) {\n\t var key = props[fromRight ? length : ++index];\n\t if (iteratee(iterable[key], key, iterable) === false) {\n\t break;\n\t }\n\t }\n\t return object;\n\t };\n\t}\n\t\n\tmodule.exports = createBaseFor;\n\n\n/***/ },\n/* 78 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseIteratee = __webpack_require__(19),\n\t isArrayLike = __webpack_require__(13),\n\t keys = __webpack_require__(15);\n\t\n\t/**\n\t * Creates a `_.find` or `_.findLast` function.\n\t *\n\t * @private\n\t * @param {Function} findIndexFunc The function to find the collection index.\n\t * @returns {Function} Returns the new find function.\n\t */\n\tfunction createFind(findIndexFunc) {\n\t return function(collection, predicate, fromIndex) {\n\t var iterable = Object(collection);\n\t if (!isArrayLike(collection)) {\n\t var iteratee = baseIteratee(predicate, 3);\n\t collection = keys(collection);\n\t predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n\t }\n\t var index = findIndexFunc(collection, predicate, fromIndex);\n\t return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n\t };\n\t}\n\t\n\tmodule.exports = createFind;\n\n\n/***/ },\n/* 79 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(8),\n\t Uint8Array = __webpack_require__(48),\n\t eq = __webpack_require__(22),\n\t equalArrays = __webpack_require__(28),\n\t mapToArray = __webpack_require__(107),\n\t setToArray = __webpack_require__(115);\n\t\n\t/** Used to compose bitmasks for value comparisons. */\n\tvar COMPARE_PARTIAL_FLAG = 1,\n\t COMPARE_UNORDERED_FLAG = 2;\n\t\n\t/** `Object#toString` result references. */\n\tvar boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]';\n\t\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]';\n\t\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\t\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for comparing objects of\n\t * the same `toStringTag`.\n\t *\n\t * **Note:** This function only supports comparing values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {string} tag The `toStringTag` of the objects to compare.\n\t * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Object} stack Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n\t switch (tag) {\n\t case dataViewTag:\n\t if ((object.byteLength != other.byteLength) ||\n\t (object.byteOffset != other.byteOffset)) {\n\t return false;\n\t }\n\t object = object.buffer;\n\t other = other.buffer;\n\t\n\t case arrayBufferTag:\n\t if ((object.byteLength != other.byteLength) ||\n\t !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n\t return false;\n\t }\n\t return true;\n\t\n\t case boolTag:\n\t case dateTag:\n\t case numberTag:\n\t // Coerce booleans to `1` or `0` and dates to milliseconds.\n\t // Invalid dates are coerced to `NaN`.\n\t return eq(+object, +other);\n\t\n\t case errorTag:\n\t return object.name == other.name && object.message == other.message;\n\t\n\t case regexpTag:\n\t case stringTag:\n\t // Coerce regexes to strings and treat strings, primitives and objects,\n\t // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n\t // for more details.\n\t return object == (other + '');\n\t\n\t case mapTag:\n\t var convert = mapToArray;\n\t\n\t case setTag:\n\t var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n\t convert || (convert = setToArray);\n\t\n\t if (object.size != other.size && !isPartial) {\n\t return false;\n\t }\n\t // Assume cyclic values are equal.\n\t var stacked = stack.get(object);\n\t if (stacked) {\n\t return stacked == other;\n\t }\n\t bitmask |= COMPARE_UNORDERED_FLAG;\n\t\n\t // Recursively compare objects (susceptible to call stack limits).\n\t stack.set(object, other);\n\t var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n\t stack['delete'](object);\n\t return result;\n\t\n\t case symbolTag:\n\t if (symbolValueOf) {\n\t return symbolValueOf.call(object) == symbolValueOf.call(other);\n\t }\n\t }\n\t return false;\n\t}\n\t\n\tmodule.exports = equalByTag;\n\n\n/***/ },\n/* 80 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getAllKeys = __webpack_require__(81);\n\t\n\t/** Used to compose bitmasks for value comparisons. */\n\tvar COMPARE_PARTIAL_FLAG = 1;\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for objects with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Object} stack Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n\t var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n\t objProps = getAllKeys(object),\n\t objLength = objProps.length,\n\t othProps = getAllKeys(other),\n\t othLength = othProps.length;\n\t\n\t if (objLength != othLength && !isPartial) {\n\t return false;\n\t }\n\t var index = objLength;\n\t while (index--) {\n\t var key = objProps[index];\n\t if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n\t return false;\n\t }\n\t }\n\t // Assume cyclic values are equal.\n\t var stacked = stack.get(object);\n\t if (stacked && stack.get(other)) {\n\t return stacked == other;\n\t }\n\t var result = true;\n\t stack.set(object, other);\n\t stack.set(other, object);\n\t\n\t var skipCtor = isPartial;\n\t while (++index < objLength) {\n\t key = objProps[index];\n\t var objValue = object[key],\n\t othValue = other[key];\n\t\n\t if (customizer) {\n\t var compared = isPartial\n\t ? customizer(othValue, objValue, key, other, object, stack)\n\t : customizer(objValue, othValue, key, object, other, stack);\n\t }\n\t // Recursively compare objects (susceptible to call stack limits).\n\t if (!(compared === undefined\n\t ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n\t : compared\n\t )) {\n\t result = false;\n\t break;\n\t }\n\t skipCtor || (skipCtor = key == 'constructor');\n\t }\n\t if (result && !skipCtor) {\n\t var objCtor = object.constructor,\n\t othCtor = other.constructor;\n\t\n\t // Non `Object` object instances with different constructors are not equal.\n\t if (objCtor != othCtor &&\n\t ('constructor' in object && 'constructor' in other) &&\n\t !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n\t typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n\t result = false;\n\t }\n\t }\n\t stack['delete'](object);\n\t stack['delete'](other);\n\t return result;\n\t}\n\t\n\tmodule.exports = equalObjects;\n\n\n/***/ },\n/* 81 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseGetAllKeys = __webpack_require__(58),\n\t getSymbols = __webpack_require__(84),\n\t keys = __webpack_require__(15);\n\t\n\t/**\n\t * Creates an array of own enumerable property names and symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction getAllKeys(object) {\n\t return baseGetAllKeys(object, keys, getSymbols);\n\t}\n\t\n\tmodule.exports = getAllKeys;\n\n\n/***/ },\n/* 82 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isStrictComparable = __webpack_require__(30),\n\t keys = __webpack_require__(15);\n\t\n\t/**\n\t * Gets the property names, values, and compare flags of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the match data of `object`.\n\t */\n\tfunction getMatchData(object) {\n\t var result = keys(object),\n\t length = result.length;\n\t\n\t while (length--) {\n\t var key = result[length],\n\t value = object[key];\n\t\n\t result[length] = [key, value, isStrictComparable(value)];\n\t }\n\t return result;\n\t}\n\t\n\tmodule.exports = getMatchData;\n\n\n/***/ },\n/* 83 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(8);\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar nativeObjectToString = objectProto.toString;\n\t\n\t/** Built-in value references. */\n\tvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\t\n\t/**\n\t * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the raw `toStringTag`.\n\t */\n\tfunction getRawTag(value) {\n\t var isOwn = hasOwnProperty.call(value, symToStringTag),\n\t tag = value[symToStringTag];\n\t\n\t try {\n\t value[symToStringTag] = undefined;\n\t var unmasked = true;\n\t } catch (e) {}\n\t\n\t var result = nativeObjectToString.call(value);\n\t if (unmasked) {\n\t if (isOwn) {\n\t value[symToStringTag] = tag;\n\t } else {\n\t delete value[symToStringTag];\n\t }\n\t }\n\t return result;\n\t}\n\t\n\tmodule.exports = getRawTag;\n\n\n/***/ },\n/* 84 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar arrayFilter = __webpack_require__(50),\n\t stubArray = __webpack_require__(129);\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Built-in value references. */\n\tvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\t\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\t\n\t/**\n\t * Creates an array of the own enumerable symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of symbols.\n\t */\n\tvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n\t if (object == null) {\n\t return [];\n\t }\n\t object = Object(object);\n\t return arrayFilter(nativeGetSymbols(object), function(symbol) {\n\t return propertyIsEnumerable.call(object, symbol);\n\t });\n\t};\n\t\n\tmodule.exports = getSymbols;\n\n\n/***/ },\n/* 85 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar DataView = __webpack_require__(43),\n\t Map = __webpack_require__(16),\n\t Promise = __webpack_require__(45),\n\t Set = __webpack_require__(46),\n\t WeakMap = __webpack_require__(49),\n\t baseGetTag = __webpack_require__(4),\n\t toSource = __webpack_require__(32);\n\t\n\t/** `Object#toString` result references. */\n\tvar mapTag = '[object Map]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t setTag = '[object Set]',\n\t weakMapTag = '[object WeakMap]';\n\t\n\tvar dataViewTag = '[object DataView]';\n\t\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\t\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\t\n\t// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = baseGetTag(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : '';\n\t\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\t\n\tmodule.exports = getTag;\n\n\n/***/ },\n/* 86 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\t\n\tmodule.exports = getValue;\n\n\n/***/ },\n/* 87 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar castPath = __webpack_require__(27),\n\t isArguments = __webpack_require__(34),\n\t isArray = __webpack_require__(2),\n\t isIndex = __webpack_require__(20),\n\t isLength = __webpack_require__(23),\n\t toKey = __webpack_require__(12);\n\t\n\t/**\n\t * Checks if `path` exists on `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path to check.\n\t * @param {Function} hasFunc The function to check properties.\n\t * @returns {boolean} Returns `true` if `path` exists, else `false`.\n\t */\n\tfunction hasPath(object, path, hasFunc) {\n\t path = castPath(path, object);\n\t\n\t var index = -1,\n\t length = path.length,\n\t result = false;\n\t\n\t while (++index < length) {\n\t var key = toKey(path[index]);\n\t if (!(result = object != null && hasFunc(object, key))) {\n\t break;\n\t }\n\t object = object[key];\n\t }\n\t if (result || ++index != length) {\n\t return result;\n\t }\n\t length = object == null ? 0 : object.length;\n\t return !!length && isLength(length) && isIndex(key, length) &&\n\t (isArray(object) || isArguments(object));\n\t}\n\t\n\tmodule.exports = hasPath;\n\n\n/***/ },\n/* 88 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar nativeCreate = __webpack_require__(11);\n\t\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t this.size = 0;\n\t}\n\t\n\tmodule.exports = hashClear;\n\n\n/***/ },\n/* 89 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t var result = this.has(key) && delete this.__data__[key];\n\t this.size -= result ? 1 : 0;\n\t return result;\n\t}\n\t\n\tmodule.exports = hashDelete;\n\n\n/***/ },\n/* 90 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar nativeCreate = __webpack_require__(11);\n\t\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\t\n\tmodule.exports = hashGet;\n\n\n/***/ },\n/* 91 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar nativeCreate = __webpack_require__(11);\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n\t}\n\t\n\tmodule.exports = hashHas;\n\n\n/***/ },\n/* 92 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar nativeCreate = __webpack_require__(11);\n\t\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\t\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t this.size += this.has(key) ? 0 : 1;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\t\n\tmodule.exports = hashSet;\n\n\n/***/ },\n/* 93 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar eq = __webpack_require__(22),\n\t isArrayLike = __webpack_require__(13),\n\t isIndex = __webpack_require__(20),\n\t isObject = __webpack_require__(5);\n\t\n\t/**\n\t * Checks if the given arguments are from an iteratee call.\n\t *\n\t * @private\n\t * @param {*} value The potential iteratee value argument.\n\t * @param {*} index The potential iteratee index or key argument.\n\t * @param {*} object The potential iteratee object argument.\n\t * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n\t * else `false`.\n\t */\n\tfunction isIterateeCall(value, index, object) {\n\t if (!isObject(object)) {\n\t return false;\n\t }\n\t var type = typeof index;\n\t if (type == 'number'\n\t ? (isArrayLike(object) && isIndex(index, object.length))\n\t : (type == 'string' && index in object)\n\t ) {\n\t return eq(object[index], value);\n\t }\n\t return false;\n\t}\n\t\n\tmodule.exports = isIterateeCall;\n\n\n/***/ },\n/* 94 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\t\n\tmodule.exports = isKeyable;\n\n\n/***/ },\n/* 95 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar coreJsData = __webpack_require__(75);\n\t\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\t\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\t\n\tmodule.exports = isMasked;\n\n\n/***/ },\n/* 96 */\n/***/ function(module, exports) {\n\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\t\n\t return value === proto;\n\t}\n\t\n\tmodule.exports = isPrototype;\n\n\n/***/ },\n/* 97 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t this.size = 0;\n\t}\n\t\n\tmodule.exports = listCacheClear;\n\n\n/***/ },\n/* 98 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar assocIndexOf = __webpack_require__(9);\n\t\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype;\n\t\n\t/** Built-in value references. */\n\tvar splice = arrayProto.splice;\n\t\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\t\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t --this.size;\n\t return true;\n\t}\n\t\n\tmodule.exports = listCacheDelete;\n\n\n/***/ },\n/* 99 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar assocIndexOf = __webpack_require__(9);\n\t\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\t\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\t\n\tmodule.exports = listCacheGet;\n\n\n/***/ },\n/* 100 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar assocIndexOf = __webpack_require__(9);\n\t\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\t\n\tmodule.exports = listCacheHas;\n\n\n/***/ },\n/* 101 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar assocIndexOf = __webpack_require__(9);\n\t\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\t\n\t if (index < 0) {\n\t ++this.size;\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\t\n\tmodule.exports = listCacheSet;\n\n\n/***/ },\n/* 102 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Hash = __webpack_require__(44),\n\t ListCache = __webpack_require__(7),\n\t Map = __webpack_require__(16);\n\t\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.size = 0;\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\t\n\tmodule.exports = mapCacheClear;\n\n\n/***/ },\n/* 103 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getMapData = __webpack_require__(10);\n\t\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t var result = getMapData(this, key)['delete'](key);\n\t this.size -= result ? 1 : 0;\n\t return result;\n\t}\n\t\n\tmodule.exports = mapCacheDelete;\n\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getMapData = __webpack_require__(10);\n\t\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\t\n\tmodule.exports = mapCacheGet;\n\n\n/***/ },\n/* 105 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getMapData = __webpack_require__(10);\n\t\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\t\n\tmodule.exports = mapCacheHas;\n\n\n/***/ },\n/* 106 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar getMapData = __webpack_require__(10);\n\t\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t var data = getMapData(this, key),\n\t size = data.size;\n\t\n\t data.set(key, value);\n\t this.size += data.size == size ? 0 : 1;\n\t return this;\n\t}\n\t\n\tmodule.exports = mapCacheSet;\n\n\n/***/ },\n/* 107 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\t\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\t\n\tmodule.exports = mapToArray;\n\n\n/***/ },\n/* 108 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar memoize = __webpack_require__(126);\n\t\n\t/** Used as the maximum memoize cache size. */\n\tvar MAX_MEMOIZE_SIZE = 500;\n\t\n\t/**\n\t * A specialized version of `_.memoize` which clears the memoized function's\n\t * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n\t *\n\t * @private\n\t * @param {Function} func The function to have its output memoized.\n\t * @returns {Function} Returns the new memoized function.\n\t */\n\tfunction memoizeCapped(func) {\n\t var result = memoize(func, function(key) {\n\t if (cache.size === MAX_MEMOIZE_SIZE) {\n\t cache.clear();\n\t }\n\t return key;\n\t });\n\t\n\t var cache = result.cache;\n\t return result;\n\t}\n\t\n\tmodule.exports = memoizeCapped;\n\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar overArg = __webpack_require__(112);\n\t\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeKeys = overArg(Object.keys, Object);\n\t\n\tmodule.exports = nativeKeys;\n\n\n/***/ },\n/* 110 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(29);\n\t\n\t/** Detect free variable `exports`. */\n\tvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\t\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\t\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\t\n\t/** Detect free variable `process` from Node.js. */\n\tvar freeProcess = moduleExports && freeGlobal.process;\n\t\n\t/** Used to access faster Node.js helpers. */\n\tvar nodeUtil = (function() {\n\t try {\n\t return freeProcess && freeProcess.binding && freeProcess.binding('util');\n\t } catch (e) {}\n\t}());\n\t\n\tmodule.exports = nodeUtil;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(40)(module)))\n\n/***/ },\n/* 111 */\n/***/ function(module, exports) {\n\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar nativeObjectToString = objectProto.toString;\n\t\n\t/**\n\t * Converts `value` to a string using `Object.prototype.toString`.\n\t *\n\t * @private\n\t * @param {*} value The value to convert.\n\t * @returns {string} Returns the converted string.\n\t */\n\tfunction objectToString(value) {\n\t return nativeObjectToString.call(value);\n\t}\n\t\n\tmodule.exports = objectToString;\n\n\n/***/ },\n/* 112 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\t\n\tmodule.exports = overArg;\n\n\n/***/ },\n/* 113 */\n/***/ function(module, exports) {\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\t\n\t/**\n\t * Adds `value` to the array cache.\n\t *\n\t * @private\n\t * @name add\n\t * @memberOf SetCache\n\t * @alias push\n\t * @param {*} value The value to cache.\n\t * @returns {Object} Returns the cache instance.\n\t */\n\tfunction setCacheAdd(value) {\n\t this.__data__.set(value, HASH_UNDEFINED);\n\t return this;\n\t}\n\t\n\tmodule.exports = setCacheAdd;\n\n\n/***/ },\n/* 114 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Checks if `value` is in the array cache.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf SetCache\n\t * @param {*} value The value to search for.\n\t * @returns {number} Returns `true` if `value` is found, else `false`.\n\t */\n\tfunction setCacheHas(value) {\n\t return this.__data__.has(value);\n\t}\n\t\n\tmodule.exports = setCacheHas;\n\n\n/***/ },\n/* 115 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\t\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\t\n\tmodule.exports = setToArray;\n\n\n/***/ },\n/* 116 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ListCache = __webpack_require__(7);\n\t\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t this.size = 0;\n\t}\n\t\n\tmodule.exports = stackClear;\n\n\n/***/ },\n/* 117 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t var data = this.__data__,\n\t result = data['delete'](key);\n\t\n\t this.size = data.size;\n\t return result;\n\t}\n\t\n\tmodule.exports = stackDelete;\n\n\n/***/ },\n/* 118 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\t\n\tmodule.exports = stackGet;\n\n\n/***/ },\n/* 119 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\t\n\tmodule.exports = stackHas;\n\n\n/***/ },\n/* 120 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar ListCache = __webpack_require__(7),\n\t Map = __webpack_require__(16),\n\t MapCache = __webpack_require__(17);\n\t\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\t\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var data = this.__data__;\n\t if (data instanceof ListCache) {\n\t var pairs = data.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t this.size = ++data.size;\n\t return this;\n\t }\n\t data = this.__data__ = new MapCache(pairs);\n\t }\n\t data.set(key, value);\n\t this.size = data.size;\n\t return this;\n\t}\n\t\n\tmodule.exports = stackSet;\n\n\n/***/ },\n/* 121 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar memoizeCapped = __webpack_require__(108);\n\t\n\t/** Used to match property names within property paths. */\n\tvar reLeadingDot = /^\\./,\n\t rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\t\n\t/** Used to match backslashes in property paths. */\n\tvar reEscapeChar = /\\\\(\\\\)?/g;\n\t\n\t/**\n\t * Converts `string` to a property path array.\n\t *\n\t * @private\n\t * @param {string} string The string to convert.\n\t * @returns {Array} Returns the property path array.\n\t */\n\tvar stringToPath = memoizeCapped(function(string) {\n\t var result = [];\n\t if (reLeadingDot.test(string)) {\n\t result.push('');\n\t }\n\t string.replace(rePropName, function(match, number, quote, string) {\n\t result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n\t });\n\t return result;\n\t});\n\t\n\tmodule.exports = stringToPath;\n\n\n/***/ },\n/* 122 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseFindIndex = __webpack_require__(55),\n\t baseIteratee = __webpack_require__(19),\n\t toInteger = __webpack_require__(132);\n\t\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeMax = Math.max;\n\t\n\t/**\n\t * This method is like `_.find` except that it returns the index of the first\n\t * element `predicate` returns truthy for instead of the element itself.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 1.1.0\n\t * @category Array\n\t * @param {Array} array The array to inspect.\n\t * @param {Function} [predicate=_.identity] The function invoked per iteration.\n\t * @param {number} [fromIndex=0] The index to search from.\n\t * @returns {number} Returns the index of the found element, else `-1`.\n\t * @example\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'active': false },\n\t * { 'user': 'fred', 'active': false },\n\t * { 'user': 'pebbles', 'active': true }\n\t * ];\n\t *\n\t * _.findIndex(users, function(o) { return o.user == 'barney'; });\n\t * // => 0\n\t *\n\t * // The `_.matches` iteratee shorthand.\n\t * _.findIndex(users, { 'user': 'fred', 'active': false });\n\t * // => 1\n\t *\n\t * // The `_.matchesProperty` iteratee shorthand.\n\t * _.findIndex(users, ['active', false]);\n\t * // => 0\n\t *\n\t * // The `_.property` iteratee shorthand.\n\t * _.findIndex(users, 'active');\n\t * // => 2\n\t */\n\tfunction findIndex(array, predicate, fromIndex) {\n\t var length = array == null ? 0 : array.length;\n\t if (!length) {\n\t return -1;\n\t }\n\t var index = fromIndex == null ? 0 : toInteger(fromIndex);\n\t if (index < 0) {\n\t index = nativeMax(length + index, 0);\n\t }\n\t return baseFindIndex(array, baseIteratee(predicate, 3), index);\n\t}\n\t\n\tmodule.exports = findIndex;\n\n\n/***/ },\n/* 123 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseGet = __webpack_require__(26);\n\t\n\t/**\n\t * Gets the value at `path` of `object`. If the resolved value is\n\t * `undefined`, the `defaultValue` is returned in its place.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.7.0\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path of the property to get.\n\t * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n\t * @returns {*} Returns the resolved value.\n\t * @example\n\t *\n\t * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n\t *\n\t * _.get(object, 'a[0].b.c');\n\t * // => 3\n\t *\n\t * _.get(object, ['a', '0', 'b', 'c']);\n\t * // => 3\n\t *\n\t * _.get(object, 'a.b.c', 'default');\n\t * // => 'default'\n\t */\n\tfunction get(object, path, defaultValue) {\n\t var result = object == null ? undefined : baseGet(object, path);\n\t return result === undefined ? defaultValue : result;\n\t}\n\t\n\tmodule.exports = get;\n\n\n/***/ },\n/* 124 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseHasIn = __webpack_require__(59),\n\t hasPath = __webpack_require__(87);\n\t\n\t/**\n\t * Checks if `path` is a direct or inherited property of `object`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @param {Array|string} path The path to check.\n\t * @returns {boolean} Returns `true` if `path` exists, else `false`.\n\t * @example\n\t *\n\t * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n\t *\n\t * _.hasIn(object, 'a');\n\t * // => true\n\t *\n\t * _.hasIn(object, 'a.b');\n\t * // => true\n\t *\n\t * _.hasIn(object, ['a', 'b']);\n\t * // => true\n\t *\n\t * _.hasIn(object, 'b');\n\t * // => false\n\t */\n\tfunction hasIn(object, path) {\n\t return object != null && hasPath(object, path, baseHasIn);\n\t}\n\t\n\tmodule.exports = hasIn;\n\n\n/***/ },\n/* 125 */\n/***/ function(module, exports) {\n\n\t/**\n\t * This method returns the first argument it receives.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Util\n\t * @param {*} value Any value.\n\t * @returns {*} Returns `value`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t *\n\t * console.log(_.identity(object) === object);\n\t * // => true\n\t */\n\tfunction identity(value) {\n\t return value;\n\t}\n\t\n\tmodule.exports = identity;\n\n\n/***/ },\n/* 126 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar MapCache = __webpack_require__(17);\n\t\n\t/** Error message constants. */\n\tvar FUNC_ERROR_TEXT = 'Expected a function';\n\t\n\t/**\n\t * Creates a function that memoizes the result of `func`. If `resolver` is\n\t * provided, it determines the cache key for storing the result based on the\n\t * arguments provided to the memoized function. By default, the first argument\n\t * provided to the memoized function is used as the map cache key. The `func`\n\t * is invoked with the `this` binding of the memoized function.\n\t *\n\t * **Note:** The cache is exposed as the `cache` property on the memoized\n\t * function. Its creation may be customized by replacing the `_.memoize.Cache`\n\t * constructor with one whose instances implement the\n\t * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n\t * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Function\n\t * @param {Function} func The function to have its output memoized.\n\t * @param {Function} [resolver] The function to resolve the cache key.\n\t * @returns {Function} Returns the new memoized function.\n\t * @example\n\t *\n\t * var object = { 'a': 1, 'b': 2 };\n\t * var other = { 'c': 3, 'd': 4 };\n\t *\n\t * var values = _.memoize(_.values);\n\t * values(object);\n\t * // => [1, 2]\n\t *\n\t * values(other);\n\t * // => [3, 4]\n\t *\n\t * object.a = 2;\n\t * values(object);\n\t * // => [1, 2]\n\t *\n\t * // Modify the result cache.\n\t * values.cache.set(object, ['a', 'b']);\n\t * values(object);\n\t * // => ['a', 'b']\n\t *\n\t * // Replace `_.memoize.Cache`.\n\t * _.memoize.Cache = WeakMap;\n\t */\n\tfunction memoize(func, resolver) {\n\t if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n\t throw new TypeError(FUNC_ERROR_TEXT);\n\t }\n\t var memoized = function() {\n\t var args = arguments,\n\t key = resolver ? resolver.apply(this, args) : args[0],\n\t cache = memoized.cache;\n\t\n\t if (cache.has(key)) {\n\t return cache.get(key);\n\t }\n\t var result = func.apply(this, args);\n\t memoized.cache = cache.set(key, result) || cache;\n\t return result;\n\t };\n\t memoized.cache = new (memoize.Cache || MapCache);\n\t return memoized;\n\t}\n\t\n\t// Expose `MapCache`.\n\tmemoize.Cache = MapCache;\n\t\n\tmodule.exports = memoize;\n\n\n/***/ },\n/* 127 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseProperty = __webpack_require__(68),\n\t basePropertyDeep = __webpack_require__(69),\n\t isKey = __webpack_require__(21),\n\t toKey = __webpack_require__(12);\n\t\n\t/**\n\t * Creates a function that returns the value at `path` of a given object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 2.4.0\n\t * @category Util\n\t * @param {Array|string} path The path of the property to get.\n\t * @returns {Function} Returns the new accessor function.\n\t * @example\n\t *\n\t * var objects = [\n\t * { 'a': { 'b': 2 } },\n\t * { 'a': { 'b': 1 } }\n\t * ];\n\t *\n\t * _.map(objects, _.property('a.b'));\n\t * // => [2, 1]\n\t *\n\t * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n\t * // => [1, 2]\n\t */\n\tfunction property(path) {\n\t return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n\t}\n\t\n\tmodule.exports = property;\n\n\n/***/ },\n/* 128 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar arraySome = __webpack_require__(25),\n\t baseIteratee = __webpack_require__(19),\n\t baseSome = __webpack_require__(70),\n\t isArray = __webpack_require__(2),\n\t isIterateeCall = __webpack_require__(93);\n\t\n\t/**\n\t * Checks if `predicate` returns truthy for **any** element of `collection`.\n\t * Iteration is stopped once `predicate` returns truthy. The predicate is\n\t * invoked with three arguments: (value, index|key, collection).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Collection\n\t * @param {Array|Object} collection The collection to iterate over.\n\t * @param {Function} [predicate=_.identity] The function invoked per iteration.\n\t * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.some([null, 0, 'yes', false], Boolean);\n\t * // => true\n\t *\n\t * var users = [\n\t * { 'user': 'barney', 'active': true },\n\t * { 'user': 'fred', 'active': false }\n\t * ];\n\t *\n\t * // The `_.matches` iteratee shorthand.\n\t * _.some(users, { 'user': 'barney', 'active': false });\n\t * // => false\n\t *\n\t * // The `_.matchesProperty` iteratee shorthand.\n\t * _.some(users, ['active', false]);\n\t * // => true\n\t *\n\t * // The `_.property` iteratee shorthand.\n\t * _.some(users, 'active');\n\t * // => true\n\t */\n\tfunction some(collection, predicate, guard) {\n\t var func = isArray(collection) ? arraySome : baseSome;\n\t if (guard && isIterateeCall(collection, predicate, guard)) {\n\t predicate = undefined;\n\t }\n\t return func(collection, baseIteratee(predicate, 3));\n\t}\n\t\n\tmodule.exports = some;\n\n\n/***/ },\n/* 129 */\n/***/ function(module, exports) {\n\n\t/**\n\t * This method returns a new empty array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {Array} Returns the new empty array.\n\t * @example\n\t *\n\t * var arrays = _.times(2, _.stubArray);\n\t *\n\t * console.log(arrays);\n\t * // => [[], []]\n\t *\n\t * console.log(arrays[0] === arrays[1]);\n\t * // => false\n\t */\n\tfunction stubArray() {\n\t return [];\n\t}\n\t\n\tmodule.exports = stubArray;\n\n\n/***/ },\n/* 130 */\n/***/ function(module, exports) {\n\n\t/**\n\t * This method returns `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {boolean} Returns `false`.\n\t * @example\n\t *\n\t * _.times(2, _.stubFalse);\n\t * // => [false, false]\n\t */\n\tfunction stubFalse() {\n\t return false;\n\t}\n\t\n\tmodule.exports = stubFalse;\n\n\n/***/ },\n/* 131 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar toNumber = __webpack_require__(133);\n\t\n\t/** Used as references for various `Number` constants. */\n\tvar INFINITY = 1 / 0,\n\t MAX_INTEGER = 1.7976931348623157e+308;\n\t\n\t/**\n\t * Converts `value` to a finite number.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.12.0\n\t * @category Lang\n\t * @param {*} value The value to convert.\n\t * @returns {number} Returns the converted number.\n\t * @example\n\t *\n\t * _.toFinite(3.2);\n\t * // => 3.2\n\t *\n\t * _.toFinite(Number.MIN_VALUE);\n\t * // => 5e-324\n\t *\n\t * _.toFinite(Infinity);\n\t * // => 1.7976931348623157e+308\n\t *\n\t * _.toFinite('3.2');\n\t * // => 3.2\n\t */\n\tfunction toFinite(value) {\n\t if (!value) {\n\t return value === 0 ? value : 0;\n\t }\n\t value = toNumber(value);\n\t if (value === INFINITY || value === -INFINITY) {\n\t var sign = (value < 0 ? -1 : 1);\n\t return sign * MAX_INTEGER;\n\t }\n\t return value === value ? value : 0;\n\t}\n\t\n\tmodule.exports = toFinite;\n\n\n/***/ },\n/* 132 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar toFinite = __webpack_require__(131);\n\t\n\t/**\n\t * Converts `value` to an integer.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to convert.\n\t * @returns {number} Returns the converted integer.\n\t * @example\n\t *\n\t * _.toInteger(3.2);\n\t * // => 3\n\t *\n\t * _.toInteger(Number.MIN_VALUE);\n\t * // => 0\n\t *\n\t * _.toInteger(Infinity);\n\t * // => 1.7976931348623157e+308\n\t *\n\t * _.toInteger('3.2');\n\t * // => 3\n\t */\n\tfunction toInteger(value) {\n\t var result = toFinite(value),\n\t remainder = result % 1;\n\t\n\t return result === result ? (remainder ? result - remainder : result) : 0;\n\t}\n\t\n\tmodule.exports = toInteger;\n\n\n/***/ },\n/* 133 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar isObject = __webpack_require__(5),\n\t isSymbol = __webpack_require__(14);\n\t\n\t/** Used as references for various `Number` constants. */\n\tvar NAN = 0 / 0;\n\t\n\t/** Used to match leading and trailing whitespace. */\n\tvar reTrim = /^\\s+|\\s+$/g;\n\t\n\t/** Used to detect bad signed hexadecimal string values. */\n\tvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\t\n\t/** Used to detect binary string values. */\n\tvar reIsBinary = /^0b[01]+$/i;\n\t\n\t/** Used to detect octal string values. */\n\tvar reIsOctal = /^0o[0-7]+$/i;\n\t\n\t/** Built-in method references without a dependency on `root`. */\n\tvar freeParseInt = parseInt;\n\t\n\t/**\n\t * Converts `value` to a number.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to process.\n\t * @returns {number} Returns the number.\n\t * @example\n\t *\n\t * _.toNumber(3.2);\n\t * // => 3.2\n\t *\n\t * _.toNumber(Number.MIN_VALUE);\n\t * // => 5e-324\n\t *\n\t * _.toNumber(Infinity);\n\t * // => Infinity\n\t *\n\t * _.toNumber('3.2');\n\t * // => 3.2\n\t */\n\tfunction toNumber(value) {\n\t if (typeof value == 'number') {\n\t return value;\n\t }\n\t if (isSymbol(value)) {\n\t return NAN;\n\t }\n\t if (isObject(value)) {\n\t var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n\t value = isObject(other) ? (other + '') : other;\n\t }\n\t if (typeof value != 'string') {\n\t return value === 0 ? value : +value;\n\t }\n\t value = value.replace(reTrim, '');\n\t var isBinary = reIsBinary.test(value);\n\t return (isBinary || reIsOctal.test(value))\n\t ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n\t : (reIsBadHex.test(value) ? NAN : +value);\n\t}\n\t\n\tmodule.exports = toNumber;\n\n\n/***/ },\n/* 134 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseToString = __webpack_require__(72);\n\t\n\t/**\n\t * Converts `value` to a string. An empty string is returned for `null`\n\t * and `undefined` values. The sign of `-0` is preserved.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to convert.\n\t * @returns {string} Returns the converted string.\n\t * @example\n\t *\n\t * _.toString(null);\n\t * // => ''\n\t *\n\t * _.toString(-0);\n\t * // => '-0'\n\t *\n\t * _.toString([1, 2, 3]);\n\t * // => '1,2,3'\n\t */\n\tfunction toString(value) {\n\t return value == null ? '' : baseToString(value);\n\t}\n\t\n\tmodule.exports = toString;\n\n\n/***/ },\n/* 135 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar React = __webpack_require__(42);\n\tvar ReactDOM = __webpack_require__(137);\n\tvar QuillMixin = __webpack_require__(41);\n\tvar find = __webpack_require__(33);\n\tvar some = __webpack_require__(128);\n\tvar isEqual = __webpack_require__(36);\n\tvar T = React.PropTypes;\n\t\n\tvar QuillComponent = React.createClass({\n\t\n\t\tdisplayName: 'Quill',\n\t\n\t\tmixins: [ QuillMixin ],\n\t\n\t\tpropTypes: {\n\t\t\tid: T.string,\n\t\t\tclassName: T.string,\n\t\t\ttheme: T.string,\n\t\t\tstyle: T.object,\n\t\t\treadOnly: T.bool,\n\t\t\tvalue: T.string,\n\t\t\tdefaultValue: T.string,\n\t\t\tplaceholder: T.string,\n\t\t\tbounds: T.oneOfType([T.string, T.element]),\n\t\t\tonKeyPress: T.func,\n\t\t\tonKeyDown: T.func,\n\t\t\tonKeyUp: T.func,\n\t\t\tonChange: T.func,\n\t\t\tonChangeSelection: T.func,\n\t\n\t\t\tmodules: function(props) {\n\t\t\t\tvar isNotObject = T.object.apply(this, arguments);\n\t\t\t\tif (isNotObject) return isNotObject;\n\t\n\t\t\t\tif (\n\t\t\t\t\tprops.modules && \n\t\t\t\t\tprops.modules.toolbar &&\n\t\t\t\t\tprops.modules.toolbar[0] &&\n\t\t\t\t\tprops.modules.toolbar[0].type\n\t\t\t\t) return new Error(\n\t\t\t\t\t'Since v1.0.0, React Quill will not create a custom toolbar for you ' +\n\t\t\t\t\t'anymore. Create a toolbar explictly, or let Quill create one. ' +\n\t\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t\t);\n\t\t\t},\n\t\n\t\t\ttoolbar: function(props) {\n\t\t\t\tif ('toolbar' in props) return new Error(\n\t\t\t\t\t'The `toolbar` prop has been deprecated. Use `modules.toolbar` instead. ' +\n\t\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t\t);\n\t\t\t},\n\t\n\t\t\tformats: function(props) {\n\t\t\t\tvar isNotArrayOfString = T.arrayOf(T.string).apply(this, arguments);\n\t\n\t\t\t\tif (isNotArrayOfString) return new Error(\n\t\t\t\t\t'You cannot specify custom `formats` anymore. Use Parchment instead. ' +\n\t\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t\t);\n\t\t\t},\n\t\n\t\t\tstyles: function(props) {\n\t\t\t\tif ('styles' in props) return new Error(\n\t\t\t\t\t'The `styles` prop has been deprecated. Use custom stylesheets instead. ' +\n\t\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t\t);\n\t\t\t},\n\t\n\t\t\tpollInterval: function(props) {\n\t\t\t\tif ('pollInterval' in props) return new Error(\n\t\t\t\t\t'The `pollInterval` property does not have any effect anymore. ' +\n\t\t\t\t\t'You can safely remove it from your props.' +\n\t\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t\t\n\t\t/*\n\t\tChanging one of these props should cause a re-render.\n\t\t*/\n\t\tdirtyProps: [\n\t\t\t'id',\n\t\t\t'className',\n\t\t\t'style',\n\t\t\t'modules',\n\t\t\t'formats',\n\t\t\t'bounds',\n\t\t\t'theme',\n\t\t],\n\t\n\t\tgetDefaultProps: function() {\n\t\t\treturn {\n\t\t\t\tclassName: '',\n\t\t\t\ttheme: 'snow',\n\t\t\t\tmodules: {},\n\t\t\t};\n\t\t},\n\t\n\t\t/*\n\t\tWe consider the component to be controlled if\n\t\twhenever `value` is being sent in props.\n\t\t*/\n\t\tisControlled: function() {\n\t\t\treturn 'value' in this.props;\n\t\t},\n\t\n\t\tgetInitialState: function() {\n\t\t\treturn {\n\t\t\t\tvalue: this.isControlled()\n\t\t\t\t\t? this.props.value\n\t\t\t\t\t: this.props.defaultValue\n\t\t\t};\n\t\t},\n\t\n\t\tcomponentWillReceiveProps: function(nextProps) {\n\t\t\tvar editor = this.state.editor;\n\t\t\t// If the component is unmounted and mounted too quickly\n\t\t\t// an error is thrown in setEditorContents since editor is\n\t\t\t// still undefined. Must check if editor is undefined\n\t\t\t// before performing this call.\n\t\t\tif (editor) {\n\t\t\t\t// Update only if we've been passed a new `value`.\n\t\t\t\t// This leaves components using `defaultValue` alone.\n\t\t\t\tif ('value' in nextProps) {\n\t\t\t\t\t// NOTE: Seeing that Quill is missing a way to prevent\n\t\t\t\t\t// edits, we have to settle for a hybrid between\n\t\t\t\t\t// controlled and uncontrolled mode. We can't prevent\n\t\t\t\t\t// the change, but we'll still override content\n\t\t\t\t\t// whenever `value` differs from current state.\n\t\t\t\t\tif (nextProps.value !== this.getEditorContents()) {\n\t\t\t\t\t\tthis.setEditorContents(editor, nextProps.value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// We can update readOnly state in-place.\n\t\t\t\tif ('readOnly' in nextProps) {\n\t\t\t\t\tif (nextProps.readOnly !== this.props.readOnly) {\n\t\t\t\t\t\tthis.setEditorReadOnly(editor, nextProps.readOnly);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\tcomponentDidMount: function() {\n\t\t\tvar editor = this.createEditor(\n\t\t\t\tthis.getEditorElement(),\n\t\t\t\tthis.getEditorConfig()\n\t\t\t);\n\t\t\tthis.setState({ editor:editor });\n\t\t},\n\t\n\t\tcomponentWillUnmount: function() {\n\t\t\t// NOTE: Don't set the state to null here\n\t\t\t// as it would generate a loop.\n\t\t\tvar e = this.getEditor();\n\t\t\tif (e) this.unhookEditor(e);\n\t\t},\n\t\n\t\tshouldComponentUpdate: function(nextProps, nextState) {\n\t\t\t// Rerender whenever a \"dirtyProp\" changes\n\t\t\tvar props = this.props;\n\t\t\treturn some(this.dirtyProps, function(prop) {\n\t\t\t\treturn !isEqual(nextProps[prop], props[prop]);\n\t\t\t});\n\t\t},\n\t\n\t\t/*\n\t\tIf for whatever reason we are rendering again,\n\t\twe should tear down the editor and bring it up\n\t\tagain.\n\t\t*/\n\t\tcomponentWillUpdate: function() {\n\t\t\tthis.componentWillUnmount();\n\t\t},\n\t\n\t\tcomponentDidUpdate: function() {\n\t\t\tthis.componentDidMount();\n\t\t},\n\t\n\t\tgetEditorConfig: function() {\n\t\t\treturn {\n\t\t\t\tbounds: this.props.bounds,\n\t\t\t\tformats: this.props.formats,\n\t\t\t\tmodules: this.props.modules,\n\t\t\t\tplaceholder: this.props.placeholder,\n\t\t\t\treadOnly: this.props.readOnly,\n\t\t\t\ttheme: this.props.theme,\n\t\t\t};\n\t\t},\n\t\n\t\tgetEditor: function() {\n\t\t\treturn this.state.editor;\n\t\t},\n\t\n\t\tgetEditorElement: function() {\n\t\t\treturn ReactDOM.findDOMNode(this.refs.editor);\n\t\t},\n\t\n\t\tgetEditorContents: function() {\n\t\t\treturn this.state.value;\n\t\t},\n\t\n\t\tgetEditorSelection: function() {\n\t\t\treturn this.state.selection;\n\t\t},\n\t\n\t\t/*\n\t\tRenders an editor element, unless it has been provided one to clone.\n\t\t*/\n\t\trenderContents: function() {\n\t\t\tvar contents = [];\n\t\t\tvar children = React.Children.map(\n\t\t\t\tthis.props.children,\n\t\t\t\tfunction(c) { return React.cloneElement(c, {ref: c.ref}); }\n\t\t\t);\n\t\n\t\t\tvar editor = find(children, function(child) {\n\t\t\t\treturn child.ref === 'editor';\n\t\t\t});\n\t\t\tcontents.push(editor || React.DOM.div({\n\t\t\t\tkey: 'editor-' + Math.random(),\n\t\t\t\tref: 'editor',\n\t\t\t\tclassName: 'quill-contents',\n\t\t\t\tdangerouslySetInnerHTML: { __html:this.getEditorContents() }\n\t\t\t}));\n\t\n\t\t\treturn contents;\n\t\t},\n\t\n\t\trender: function() {\n\t\t\treturn React.DOM.div({\n\t\t\t\tid: this.props.id,\n\t\t\t\tstyle: this.props.style,\n\t\t\t\tclassName: ['quill'].concat(this.props.className).join(' '),\n\t\t\t\tonKeyPress: this.props.onKeyPress,\n\t\t\t\tonKeyDown: this.props.onKeyDown,\n\t\t\t\tonKeyUp: this.props.onKeyUp },\n\t\t\t\tthis.renderContents()\n\t\t\t);\n\t\t},\n\t\n\t\tonEditorChange: function(value, delta, source, editor) {\n\t\t\tif (value !== this.getEditorContents()) {\n\t\t\t\tthis.setState({ value: value });\n\t\t\t\tif (this.props.onChange) {\n\t\t\t\t\tthis.props.onChange(value, delta, source, editor);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\tonEditorChangeSelection: function(range, source, editor) {\n\t\t\tvar s = this.getEditorSelection() || {};\n\t\t\tvar r = range || {};\n\t\t\tif (r.length !== s.length || r.index !== s.index) {\n\t\t\t\tthis.setState({ selection: range });\n\t\t\t\tif (this.props.onChangeSelection) {\n\t\t\t\t\tthis.props.onChangeSelection(range, source, editor);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\n\t\tfocus: function() {\n\t\t\tthis.state.editor.focus();\n\t\t},\n\t\n\t\tblur: function() {\n\t\t\tthis.setEditorSelection(this.state.editor, null);\n\t\t}\n\t\n\t});\n\t\n\tmodule.exports = QuillComponent;\n\n\n/***/ },\n/* 136 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/*\n\tQuillToolbar is deprecated. Consider switching to the official Quill\n\ttoolbar format, or providing your own toolbar instead. \n\tSee https://quilljs.com/docs/modules/toolbar\n\t*/\n\t\n\t'use strict';\n\t\n\tvar React = __webpack_require__(42);\n\tvar ReactDOMServer = __webpack_require__(138);\n\tvar find = __webpack_require__(33);\n\tvar isEqual = __webpack_require__(36);\n\tvar T = React.PropTypes;\n\t\n\tvar defaultColors = [\n\t\t'rgb( 0, 0, 0)', 'rgb(230, 0, 0)', 'rgb(255, 153, 0)',\n\t\t'rgb(255, 255, 0)', 'rgb( 0, 138, 0)', 'rgb( 0, 102, 204)',\n\t\t'rgb(153, 51, 255)', 'rgb(255, 255, 255)', 'rgb(250, 204, 204)',\n\t\t'rgb(255, 235, 204)', 'rgb(255, 255, 204)', 'rgb(204, 232, 204)',\n\t\t'rgb(204, 224, 245)', 'rgb(235, 214, 255)', 'rgb(187, 187, 187)',\n\t\t'rgb(240, 102, 102)', 'rgb(255, 194, 102)', 'rgb(255, 255, 102)',\n\t\t'rgb(102, 185, 102)', 'rgb(102, 163, 224)', 'rgb(194, 133, 255)',\n\t\t'rgb(136, 136, 136)', 'rgb(161, 0, 0)', 'rgb(178, 107, 0)',\n\t\t'rgb(178, 178, 0)', 'rgb( 0, 97, 0)', 'rgb( 0, 71, 178)',\n\t\t'rgb(107, 36, 178)', 'rgb( 68, 68, 68)', 'rgb( 92, 0, 0)',\n\t\t'rgb(102, 61, 0)', 'rgb(102, 102, 0)', 'rgb( 0, 55, 0)',\n\t\t'rgb( 0, 41, 102)', 'rgb( 61, 20, 10)',\n\t].map(function(color){ return { value: color } });\n\t\n\tvar defaultItems = [\n\t\n\t\t{ label:'Formats', type:'group', items: [\n\t\t\t{ label:'Font', type:'font', items: [\n\t\t\t\t{ label:'Sans Serif', value:'sans-serif', selected:true },\n\t\t\t\t{ label:'Serif', value:'serif' },\n\t\t\t\t{ label:'Monospace', value:'monospace' }\n\t\t\t]},\n\t\t\t{ label:'Size', type:'size', items: [\n\t\t\t\t{ label:'Small', value:'10px' },\n\t\t\t\t{ label:'Normal', value:'13px', selected:true },\n\t\t\t\t{ label:'Large', value:'18px' },\n\t\t\t\t{ label:'Huge', value:'32px' }\n\t\t\t]},\n\t\t\t{ label:'Alignment', type:'align', items: [\n\t\t\t\t{ label:'', value:'', selected:true },\n\t\t\t\t{ label:'', value:'center' },\n\t\t\t\t{ label:'', value:'right' },\n\t\t\t\t{ label:'', value:'justify' }\n\t\t\t]}\n\t\t]},\n\t\n\t\t{ label:'Text', type:'group', items: [\n\t\t\t{ type:'bold', label:'Bold' },\n\t\t\t{ type:'italic', label:'Italic' },\n\t\t\t{ type:'strike', label:'Strike' },\n\t\t\t{ type:'underline', label:'Underline' },\n\t\t\t{ type:'color', label:'Color', items:defaultColors },\n\t\t\t{ type:'background', label:'Background color', items:defaultColors },\n\t\t\t{ type:'link', label:'Link' }\n\t\t]},\n\t\n\t\t{ label:'Blocks', type:'group', items: [\n\t\t\t{ type:'list', value:'bullet' },\n\t\t\t{ type:'list', value:'ordered' }\n\t\t]},\n\t\n\t\t{ label:'Blocks', type:'group', items: [\n\t\t\t{ type:'image', label:'Image' }\n\t\t]}\n\t\n\t];\n\t\n\tvar QuillToolbar = React.createClass({\n\t\n\t\tdisplayName: 'Quill Toolbar',\n\t\n\t\tpropTypes: {\n\t\t\tid: T.string,\n\t\t\tclassName: T.string,\n\t\t\tstyle: T.object,\n\t\t\titems: T.array\n\t\t},\n\t\n\t\tgetDefaultProps: function() {\n\t\t\treturn {\n\t\t\t\titems: defaultItems\n\t\t\t};\n\t\t},\n\t\n\t\tcomponentDidMount: function() {\n\t\t\tconsole.warn(\n\t\t\t\t'QuillToolbar is deprecated. Consider switching to the official Quill ' +\n\t\t\t\t'toolbar format, or providing your own toolbar instead. ' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t},\n\t\n\t\tshouldComponentUpdate: function(nextProps, nextState) {\n\t\t\treturn !isEqual(nextProps, this.props);\n\t\t},\n\t\n\t\trenderGroup: function(item, key) {\n\t\t\treturn React.DOM.span({\n\t\t\t\tkey: item.label || key,\n\t\t\t\tclassName:'ql-formats' },\n\t\t\t\titem.items.map(this.renderItem)\n\t\t\t);\n\t\t},\n\t\n\t\trenderChoiceItem: function(item, key) {\n\t\t\treturn React.DOM.option({\n\t\t\t\tkey: item.label || item.value || key,\n\t\t\t\tvalue: item.value },\n\t\t\t\titem.label\n\t\t\t);\n\t\t},\n\t\n\t\trenderChoices: function(item, key) {\n\t\t\tvar choiceItems = item.items.map(this.renderChoiceItem);\n\t\t\tvar selectedItem = find(item.items, function(item){ return item.selected });\n\t\t\tvar attrs = {\n\t\t\t\tkey: item.label || key,\n\t\t\t\ttitle: item.label,\n\t\t\t\tclassName: 'ql-'+item.type,\n\t\t\t\tvalue: selectedItem.value,\n\t\t\t};\n\t\t\treturn React.DOM.select(attrs, choiceItems);\n\t\t},\n\t\n\t\trenderButton: function(item, key) {\n\t\t\treturn React.DOM.button({\n\t\t\t\ttype: 'button',\n\t\t\t\tkey: item.label || item.value || key,\n\t\t\t\tvalue: item.value,\n\t\t\t\tclassName: 'ql-'+item.type,\n\t\t\t\ttitle: item.label },\n\t\t\t\titem.children\n\t\t\t);\n\t\t},\n\t\n\t\trenderAction: function(item, key) {\n\t\t\treturn React.DOM.button({\n\t\t\t\tkey: item.label || item.value || key,\n\t\t\t\tclassName: 'ql-'+item.type,\n\t\t\t\ttitle: item.label },\n\t\t\t\titem.children\n\t\t\t);\n\t\t},\n\t\n\t\t/* jshint maxcomplexity: false */\n\t\trenderItem: function(item, key) {\n\t\t\tswitch (item.type) {\n\t\t\t\tcase 'group':\n\t\t\t\t\treturn this.renderGroup(item, key);\n\t\t\t\tcase 'font':\n\t\t\t\tcase 'header':\n\t\t\t\tcase 'align':\n\t\t\t\tcase 'size':\n\t\t\t\tcase 'color':\n\t\t\t\tcase 'background':\n\t\t\t\t\treturn this.renderChoices(item, key);\n\t\t\t\tcase 'bold':\n\t\t\t\tcase 'italic':\n\t\t\t\tcase 'underline':\n\t\t\t\tcase 'strike':\n\t\t\t\tcase 'link':\n\t\t\t\tcase 'list':\n\t\t\t\tcase 'bullet':\n\t\t\t\tcase 'ordered':\n\t\t\t\tcase 'indent':\n\t\t\t\tcase 'image':\n\t\t\t\tcase 'video':\n\t\t\t\t\treturn this.renderButton(item, key);\n\t\t\t\tdefault:\n\t\t\t\t\treturn this.renderAction(item, key);\n\t\t\t}\n\t\t},\n\t\n\t\tgetClassName: function() {\n\t\t\treturn 'quill-toolbar ' + (this.props.className||'');\n\t\t},\n\t\n\t\trender: function() {\n\t\t\tvar children = this.props.items.map(this.renderItem);\n\t\t\tvar html = children.map(ReactDOMServer.renderToStaticMarkup).join('');\n\t\t\treturn React.DOM.div({\n\t\t\t\tid: this.props.id,\n\t\t\t\tclassName: this.getClassName(),\n\t\t\t\tstyle: this.props.style,\n\t\t\t\tdangerouslySetInnerHTML: { __html:html }\n\t\t\t});\n\t\t},\n\t\n\t});\n\t\n\tmodule.exports = QuillToolbar;\n\tQuillToolbar.defaultItems = defaultItems;\n\tQuillToolbar.defaultColors = defaultColors;\n\n\n/***/ },\n/* 137 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_137__;\n\n/***/ },\n/* 138 */\n/***/ function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_138__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// dist/react-quill.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 7ff78504cb75f2d3bed7","/*\nReact-Quill v1.0.0\nhttps://github.com/zenoamaro/react-quill\n*/\nvar Quill = require('quill');\nvar Parchment = Quill.import('parchment');\nvar QuillStyle = Parchment.Attributor.Style;\nvar styleOptions = { scope: Parchment.Scope.INLINE };\nQuill.register(new QuillStyle('size', 'font-size', styleOptions), true);\nQuill.register(new QuillStyle('font', 'font-family', styleOptions), true);\n\nmodule.exports = require('./component');\nmodule.exports.Quill = Quill;\nmodule.exports.Mixin = require('./mixin');\nmodule.exports.Toolbar = require('./toolbar');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/index.js\n// module id = 0\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_root.js\n// module id = 1\n// module chunks = 0","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArray.js\n// module id = 2\n// module chunks = 0","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getNative.js\n// module id = 3\n// module chunks = 0","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseGetTag.js\n// module id = 4\n// module chunks = 0","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isObject.js\n// module id = 5\n// module chunks = 0","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isObjectLike.js\n// module id = 6\n// module chunks = 0","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_ListCache.js\n// module id = 7\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Symbol.js\n// module id = 8\n// module chunks = 0","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_assocIndexOf.js\n// module id = 9\n// module chunks = 0","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getMapData.js\n// module id = 10\n// module chunks = 0","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_nativeCreate.js\n// module id = 11\n// module chunks = 0","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_toKey.js\n// module id = 12\n// module chunks = 0","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArrayLike.js\n// module id = 13\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isSymbol.js\n// module id = 14\n// module chunks = 0","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/keys.js\n// module id = 15\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Map.js\n// module id = 16\n// module chunks = 0","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_MapCache.js\n// module id = 17\n// module chunks = 0","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsEqual.js\n// module id = 18\n// module chunks = 0","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIteratee.js\n// module id = 19\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isIndex.js\n// module id = 20\n// module chunks = 0","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isKey.js\n// module id = 21\n// module chunks = 0","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/eq.js\n// module id = 22\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isLength.js\n// module id = 23\n// module chunks = 0","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Stack.js\n// module id = 24\n// module chunks = 0","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arraySome.js\n// module id = 25\n// module chunks = 0","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseGet.js\n// module id = 26\n// module chunks = 0","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_castPath.js\n// module id = 27\n// module chunks = 0","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_equalArrays.js\n// module id = 28\n// module chunks = 0","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_freeGlobal.js\n// module id = 29\n// module chunks = 0","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isStrictComparable.js\n// module id = 30\n// module chunks = 0","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_matchesStrictComparable.js\n// module id = 31\n// module chunks = 0","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_toSource.js\n// module id = 32\n// module chunks = 0","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/find.js\n// module id = 33\n// module chunks = 0","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isArguments.js\n// module id = 34\n// module chunks = 0","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isBuffer.js\n// module id = 35\n// module chunks = 0","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isEqual.js\n// module id = 36\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isFunction.js\n// module id = 37\n// module chunks = 0","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isTypedArray.js\n// module id = 38\n// module chunks = 0","/*!\n * Quill Editor v1.2.0\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(53);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tvar _break = __webpack_require__(30);\n\n\tvar _break2 = _interopRequireDefault(_break);\n\n\tvar _container = __webpack_require__(42);\n\n\tvar _container2 = _interopRequireDefault(_container);\n\n\tvar _cursor = __webpack_require__(34);\n\n\tvar _cursor2 = _interopRequireDefault(_cursor);\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tvar _scroll = __webpack_require__(43);\n\n\tvar _scroll2 = _interopRequireDefault(_scroll);\n\n\tvar _text = __webpack_require__(33);\n\n\tvar _text2 = _interopRequireDefault(_text);\n\n\tvar _clipboard = __webpack_require__(44);\n\n\tvar _clipboard2 = _interopRequireDefault(_clipboard);\n\n\tvar _history = __webpack_require__(51);\n\n\tvar _history2 = _interopRequireDefault(_history);\n\n\tvar _keyboard = __webpack_require__(52);\n\n\tvar _keyboard2 = _interopRequireDefault(_keyboard);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\t_quill2.default.register({\n\t 'blots/block': _block2.default,\n\t 'blots/block/embed': _block.BlockEmbed,\n\t 'blots/break': _break2.default,\n\t 'blots/container': _container2.default,\n\t 'blots/cursor': _cursor2.default,\n\t 'blots/embed': _embed2.default,\n\t 'blots/inline': _inline2.default,\n\t 'blots/scroll': _scroll2.default,\n\t 'blots/text': _text2.default,\n\n\t 'modules/clipboard': _clipboard2.default,\n\t 'modules/history': _history2.default,\n\t 'modules/keyboard': _keyboard2.default\n\t});\n\n\t_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\n\tmodule.exports = _quill2.default;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar container_1 = __webpack_require__(3);\n\tvar format_1 = __webpack_require__(7);\n\tvar leaf_1 = __webpack_require__(12);\n\tvar scroll_1 = __webpack_require__(13);\n\tvar inline_1 = __webpack_require__(14);\n\tvar block_1 = __webpack_require__(15);\n\tvar embed_1 = __webpack_require__(16);\n\tvar text_1 = __webpack_require__(17);\n\tvar attributor_1 = __webpack_require__(8);\n\tvar class_1 = __webpack_require__(10);\n\tvar style_1 = __webpack_require__(11);\n\tvar store_1 = __webpack_require__(9);\n\tvar Registry = __webpack_require__(6);\n\tvar Parchment = {\n\t Scope: Registry.Scope,\n\t create: Registry.create,\n\t find: Registry.find,\n\t query: Registry.query,\n\t register: Registry.register,\n\t Container: container_1.default,\n\t Format: format_1.default,\n\t Leaf: leaf_1.default,\n\t Embed: embed_1.default,\n\t Scroll: scroll_1.default,\n\t Block: block_1.default,\n\t Inline: inline_1.default,\n\t Text: text_1.default,\n\t Attributor: {\n\t Attribute: attributor_1.default,\n\t Class: class_1.default,\n\t Style: style_1.default,\n\t Store: store_1.default\n\t }\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = Parchment;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar linked_list_1 = __webpack_require__(4);\n\tvar shadow_1 = __webpack_require__(5);\n\tvar Registry = __webpack_require__(6);\n\tvar ContainerBlot = (function (_super) {\n\t __extends(ContainerBlot, _super);\n\t function ContainerBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t ContainerBlot.prototype.appendChild = function (other) {\n\t this.insertBefore(other);\n\t };\n\t ContainerBlot.prototype.attach = function () {\n\t var _this = this;\n\t _super.prototype.attach.call(this);\n\t this.children = new linked_list_1.default();\n\t // Need to be reversed for if DOM nodes already in order\n\t [].slice.call(this.domNode.childNodes).reverse().forEach(function (node) {\n\t try {\n\t var child = makeBlot(node);\n\t _this.insertBefore(child, _this.children.head);\n\t }\n\t catch (err) {\n\t if (err instanceof Registry.ParchmentError)\n\t return;\n\t else\n\t throw err;\n\t }\n\t });\n\t };\n\t ContainerBlot.prototype.deleteAt = function (index, length) {\n\t if (index === 0 && length === this.length()) {\n\t return this.remove();\n\t }\n\t this.children.forEachAt(index, length, function (child, offset, length) {\n\t child.deleteAt(offset, length);\n\t });\n\t };\n\t ContainerBlot.prototype.descendant = function (criteria, index) {\n\t var _a = this.children.find(index), child = _a[0], offset = _a[1];\n\t if ((criteria.blotName == null && criteria(child)) ||\n\t (criteria.blotName != null && child instanceof criteria)) {\n\t return [child, offset];\n\t }\n\t else if (child instanceof ContainerBlot) {\n\t return child.descendant(criteria, offset);\n\t }\n\t else {\n\t return [null, -1];\n\t }\n\t };\n\t ContainerBlot.prototype.descendants = function (criteria, index, length) {\n\t if (index === void 0) { index = 0; }\n\t if (length === void 0) { length = Number.MAX_VALUE; }\n\t var descendants = [], lengthLeft = length;\n\t this.children.forEachAt(index, length, function (child, index, length) {\n\t if ((criteria.blotName == null && criteria(child)) ||\n\t (criteria.blotName != null && child instanceof criteria)) {\n\t descendants.push(child);\n\t }\n\t if (child instanceof ContainerBlot) {\n\t descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n\t }\n\t lengthLeft -= length;\n\t });\n\t return descendants;\n\t };\n\t ContainerBlot.prototype.detach = function () {\n\t this.children.forEach(function (child) {\n\t child.detach();\n\t });\n\t _super.prototype.detach.call(this);\n\t };\n\t ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n\t this.children.forEachAt(index, length, function (child, offset, length) {\n\t child.formatAt(offset, length, name, value);\n\t });\n\t };\n\t ContainerBlot.prototype.insertAt = function (index, value, def) {\n\t var _a = this.children.find(index), child = _a[0], offset = _a[1];\n\t if (child) {\n\t child.insertAt(offset, value, def);\n\t }\n\t else {\n\t var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n\t this.appendChild(blot);\n\t }\n\t };\n\t ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n\t if (this.statics.allowedChildren != null && !this.statics.allowedChildren.some(function (child) {\n\t return childBlot instanceof child;\n\t })) {\n\t throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n\t }\n\t childBlot.insertInto(this, refBlot);\n\t };\n\t ContainerBlot.prototype.length = function () {\n\t return this.children.reduce(function (memo, child) {\n\t return memo + child.length();\n\t }, 0);\n\t };\n\t ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n\t this.children.forEach(function (child) {\n\t targetParent.insertBefore(child, refNode);\n\t });\n\t };\n\t ContainerBlot.prototype.optimize = function () {\n\t _super.prototype.optimize.call(this);\n\t if (this.children.length === 0) {\n\t if (this.statics.defaultChild != null) {\n\t var child = Registry.create(this.statics.defaultChild);\n\t this.appendChild(child);\n\t child.optimize();\n\t }\n\t else {\n\t this.remove();\n\t }\n\t }\n\t };\n\t ContainerBlot.prototype.path = function (index, inclusive) {\n\t if (inclusive === void 0) { inclusive = false; }\n\t var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n\t var position = [[this, index]];\n\t if (child instanceof ContainerBlot) {\n\t return position.concat(child.path(offset, inclusive));\n\t }\n\t else if (child != null) {\n\t position.push([child, offset]);\n\t }\n\t return position;\n\t };\n\t ContainerBlot.prototype.removeChild = function (child) {\n\t this.children.remove(child);\n\t };\n\t ContainerBlot.prototype.replace = function (target) {\n\t if (target instanceof ContainerBlot) {\n\t target.moveChildren(this);\n\t }\n\t _super.prototype.replace.call(this, target);\n\t };\n\t ContainerBlot.prototype.split = function (index, force) {\n\t if (force === void 0) { force = false; }\n\t if (!force) {\n\t if (index === 0)\n\t return this;\n\t if (index === this.length())\n\t return this.next;\n\t }\n\t var after = this.clone();\n\t this.parent.insertBefore(after, this.next);\n\t this.children.forEachAt(index, this.length(), function (child, offset, length) {\n\t child = child.split(offset, force);\n\t after.appendChild(child);\n\t });\n\t return after;\n\t };\n\t ContainerBlot.prototype.unwrap = function () {\n\t this.moveChildren(this.parent, this.next);\n\t this.remove();\n\t };\n\t ContainerBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t var addedNodes = [], removedNodes = [];\n\t mutations.forEach(function (mutation) {\n\t if (mutation.target === _this.domNode && mutation.type === 'childList') {\n\t addedNodes.push.apply(addedNodes, mutation.addedNodes);\n\t removedNodes.push.apply(removedNodes, mutation.removedNodes);\n\t }\n\t });\n\t removedNodes.forEach(function (node) {\n\t // Check node has actually been removed\n\t // One exception is Chrome does not immediately remove IFRAMEs\n\t // from DOM but MutationRecord is correct in its reported removal\n\t if (node.parentNode != null && node.tagName !== 'IFRAME' &&\n\t (document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)) {\n\t return;\n\t }\n\t var blot = Registry.find(node);\n\t if (blot == null)\n\t return;\n\t if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n\t blot.detach();\n\t }\n\t });\n\t addedNodes.filter(function (node) {\n\t return node.parentNode == _this.domNode;\n\t }).sort(function (a, b) {\n\t if (a === b)\n\t return 0;\n\t if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n\t return 1;\n\t }\n\t return -1;\n\t }).forEach(function (node) {\n\t var refBlot = null;\n\t if (node.nextSibling != null) {\n\t refBlot = Registry.find(node.nextSibling);\n\t }\n\t var blot = makeBlot(node);\n\t if (blot.next != refBlot || blot.next == null) {\n\t if (blot.parent != null) {\n\t blot.parent.removeChild(_this);\n\t }\n\t _this.insertBefore(blot, refBlot);\n\t }\n\t });\n\t };\n\t return ContainerBlot;\n\t}(shadow_1.default));\n\tfunction makeBlot(node) {\n\t var blot = Registry.find(node);\n\t if (blot == null) {\n\t try {\n\t blot = Registry.create(node);\n\t }\n\t catch (e) {\n\t blot = Registry.create(Registry.Scope.INLINE);\n\t [].slice.call(node.childNodes).forEach(function (child) {\n\t blot.domNode.appendChild(child);\n\t });\n\t node.parentNode.replaceChild(blot.domNode, node);\n\t blot.attach();\n\t }\n\t }\n\t return blot;\n\t}\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ContainerBlot;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar LinkedList = (function () {\n\t function LinkedList() {\n\t this.head = this.tail = undefined;\n\t this.length = 0;\n\t }\n\t LinkedList.prototype.append = function () {\n\t var nodes = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t nodes[_i] = arguments[_i];\n\t }\n\t this.insertBefore(nodes[0], undefined);\n\t if (nodes.length > 1) {\n\t this.append.apply(this, nodes.slice(1));\n\t }\n\t };\n\t LinkedList.prototype.contains = function (node) {\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t if (cur === node)\n\t return true;\n\t }\n\t return false;\n\t };\n\t LinkedList.prototype.insertBefore = function (node, refNode) {\n\t node.next = refNode;\n\t if (refNode != null) {\n\t node.prev = refNode.prev;\n\t if (refNode.prev != null) {\n\t refNode.prev.next = node;\n\t }\n\t refNode.prev = node;\n\t if (refNode === this.head) {\n\t this.head = node;\n\t }\n\t }\n\t else if (this.tail != null) {\n\t this.tail.next = node;\n\t node.prev = this.tail;\n\t this.tail = node;\n\t }\n\t else {\n\t node.prev = undefined;\n\t this.head = this.tail = node;\n\t }\n\t this.length += 1;\n\t };\n\t LinkedList.prototype.offset = function (target) {\n\t var index = 0, cur = this.head;\n\t while (cur != null) {\n\t if (cur === target)\n\t return index;\n\t index += cur.length();\n\t cur = cur.next;\n\t }\n\t return -1;\n\t };\n\t LinkedList.prototype.remove = function (node) {\n\t if (!this.contains(node))\n\t return;\n\t if (node.prev != null)\n\t node.prev.next = node.next;\n\t if (node.next != null)\n\t node.next.prev = node.prev;\n\t if (node === this.head)\n\t this.head = node.next;\n\t if (node === this.tail)\n\t this.tail = node.prev;\n\t this.length -= 1;\n\t };\n\t LinkedList.prototype.iterator = function (curNode) {\n\t if (curNode === void 0) { curNode = this.head; }\n\t // TODO use yield when we can\n\t return function () {\n\t var ret = curNode;\n\t if (curNode != null)\n\t curNode = curNode.next;\n\t return ret;\n\t };\n\t };\n\t LinkedList.prototype.find = function (index, inclusive) {\n\t if (inclusive === void 0) { inclusive = false; }\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t var length_1 = cur.length();\n\t if (index < length_1 || (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {\n\t return [cur, index];\n\t }\n\t index -= length_1;\n\t }\n\t return [null, 0];\n\t };\n\t LinkedList.prototype.forEach = function (callback) {\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t callback(cur);\n\t }\n\t };\n\t LinkedList.prototype.forEachAt = function (index, length, callback) {\n\t if (length <= 0)\n\t return;\n\t var _a = this.find(index), startNode = _a[0], offset = _a[1];\n\t var cur, curIndex = index - offset, next = this.iterator(startNode);\n\t while ((cur = next()) && curIndex < index + length) {\n\t var curLength = cur.length();\n\t if (index > curIndex) {\n\t callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n\t }\n\t else {\n\t callback(cur, 0, Math.min(curLength, index + length - curIndex));\n\t }\n\t curIndex += curLength;\n\t }\n\t };\n\t LinkedList.prototype.map = function (callback) {\n\t return this.reduce(function (memo, cur) {\n\t memo.push(callback(cur));\n\t return memo;\n\t }, []);\n\t };\n\t LinkedList.prototype.reduce = function (callback, memo) {\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t memo = callback(memo, cur);\n\t }\n\t return memo;\n\t };\n\t return LinkedList;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = LinkedList;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Registry = __webpack_require__(6);\n\tvar ShadowBlot = (function () {\n\t function ShadowBlot(domNode) {\n\t this.domNode = domNode;\n\t this.attach();\n\t }\n\t Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n\t // Hack for accessing inherited static methods\n\t get: function () {\n\t return this.constructor;\n\t },\n\t enumerable: true,\n\t configurable: true\n\t });\n\t ShadowBlot.create = function (value) {\n\t if (this.tagName == null) {\n\t throw new Registry.ParchmentError('Blot definition missing tagName');\n\t }\n\t var node;\n\t if (Array.isArray(this.tagName)) {\n\t if (typeof value === 'string') {\n\t value = value.toUpperCase();\n\t if (parseInt(value).toString() === value) {\n\t value = parseInt(value);\n\t }\n\t }\n\t if (typeof value === 'number') {\n\t node = document.createElement(this.tagName[value - 1]);\n\t }\n\t else if (this.tagName.indexOf(value) > -1) {\n\t node = document.createElement(value);\n\t }\n\t else {\n\t node = document.createElement(this.tagName[0]);\n\t }\n\t }\n\t else {\n\t node = document.createElement(this.tagName);\n\t }\n\t if (this.className) {\n\t node.classList.add(this.className);\n\t }\n\t return node;\n\t };\n\t ShadowBlot.prototype.attach = function () {\n\t this.domNode[Registry.DATA_KEY] = { blot: this };\n\t };\n\t ShadowBlot.prototype.clone = function () {\n\t var domNode = this.domNode.cloneNode();\n\t return Registry.create(domNode);\n\t };\n\t ShadowBlot.prototype.detach = function () {\n\t if (this.parent != null)\n\t this.parent.removeChild(this);\n\t delete this.domNode[Registry.DATA_KEY];\n\t };\n\t ShadowBlot.prototype.deleteAt = function (index, length) {\n\t var blot = this.isolate(index, length);\n\t blot.remove();\n\t };\n\t ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n\t var blot = this.isolate(index, length);\n\t if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n\t blot.wrap(name, value);\n\t }\n\t else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n\t var parent_1 = Registry.create(this.statics.scope);\n\t blot.wrap(parent_1);\n\t parent_1.format(name, value);\n\t }\n\t };\n\t ShadowBlot.prototype.insertAt = function (index, value, def) {\n\t var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n\t var ref = this.split(index);\n\t this.parent.insertBefore(blot, ref);\n\t };\n\t ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n\t if (this.parent != null) {\n\t this.parent.children.remove(this);\n\t }\n\t parentBlot.children.insertBefore(this, refBlot);\n\t if (refBlot != null) {\n\t var refDomNode = refBlot.domNode;\n\t }\n\t if (this.next == null || this.domNode.nextSibling != refDomNode) {\n\t parentBlot.domNode.insertBefore(this.domNode, (typeof refDomNode !== 'undefined') ? refDomNode : null);\n\t }\n\t this.parent = parentBlot;\n\t };\n\t ShadowBlot.prototype.isolate = function (index, length) {\n\t var target = this.split(index);\n\t target.split(length);\n\t return target;\n\t };\n\t ShadowBlot.prototype.length = function () {\n\t return 1;\n\t };\n\t ;\n\t ShadowBlot.prototype.offset = function (root) {\n\t if (root === void 0) { root = this.parent; }\n\t if (this.parent == null || this == root)\n\t return 0;\n\t return this.parent.children.offset(this) + this.parent.offset(root);\n\t };\n\t ShadowBlot.prototype.optimize = function () {\n\t // TODO clean up once we use WeakMap\n\t if (this.domNode[Registry.DATA_KEY] != null) {\n\t delete this.domNode[Registry.DATA_KEY].mutations;\n\t }\n\t };\n\t ShadowBlot.prototype.remove = function () {\n\t if (this.domNode.parentNode != null) {\n\t this.domNode.parentNode.removeChild(this.domNode);\n\t }\n\t this.detach();\n\t };\n\t ShadowBlot.prototype.replace = function (target) {\n\t if (target.parent == null)\n\t return;\n\t target.parent.insertBefore(this, target.next);\n\t target.remove();\n\t };\n\t ShadowBlot.prototype.replaceWith = function (name, value) {\n\t var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n\t replacement.replace(this);\n\t return replacement;\n\t };\n\t ShadowBlot.prototype.split = function (index, force) {\n\t return index === 0 ? this : this.next;\n\t };\n\t ShadowBlot.prototype.update = function (mutations) {\n\t if (mutations === void 0) { mutations = []; }\n\t // Nothing to do by default\n\t };\n\t ShadowBlot.prototype.wrap = function (name, value) {\n\t var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n\t if (this.parent != null) {\n\t this.parent.insertBefore(wrapper, this.next);\n\t }\n\t wrapper.appendChild(this);\n\t return wrapper;\n\t };\n\t return ShadowBlot;\n\t}());\n\tShadowBlot.blotName = 'abstract';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ShadowBlot;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar ParchmentError = (function (_super) {\n\t __extends(ParchmentError, _super);\n\t function ParchmentError(message) {\n\t var _this = this;\n\t message = '[Parchment] ' + message;\n\t _this = _super.call(this, message) || this;\n\t _this.message = message;\n\t _this.name = _this.constructor.name;\n\t return _this;\n\t }\n\t return ParchmentError;\n\t}(Error));\n\texports.ParchmentError = ParchmentError;\n\tvar attributes = {};\n\tvar classes = {};\n\tvar tags = {};\n\tvar types = {};\n\texports.DATA_KEY = '__blot';\n\tvar Scope;\n\t(function (Scope) {\n\t Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n\t Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n\t Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n\t Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n\t Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n\t Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n\t Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n\t Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n\t Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n\t Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n\t Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n\t})(Scope = exports.Scope || (exports.Scope = {}));\n\t;\n\tfunction create(input, value) {\n\t var match = query(input);\n\t if (match == null) {\n\t throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n\t }\n\t var BlotClass = match;\n\t var node = input instanceof Node ? input : BlotClass.create(value);\n\t return new BlotClass(node, value);\n\t}\n\texports.create = create;\n\tfunction find(node, bubble) {\n\t if (bubble === void 0) { bubble = false; }\n\t if (node == null)\n\t return null;\n\t if (node[exports.DATA_KEY] != null)\n\t return node[exports.DATA_KEY].blot;\n\t if (bubble)\n\t return find(node.parentNode, bubble);\n\t return null;\n\t}\n\texports.find = find;\n\tfunction query(query, scope) {\n\t if (scope === void 0) { scope = Scope.ANY; }\n\t var match;\n\t if (typeof query === 'string') {\n\t match = types[query] || attributes[query];\n\t }\n\t else if (query instanceof Text) {\n\t match = types['text'];\n\t }\n\t else if (typeof query === 'number') {\n\t if (query & Scope.LEVEL & Scope.BLOCK) {\n\t match = types['block'];\n\t }\n\t else if (query & Scope.LEVEL & Scope.INLINE) {\n\t match = types['inline'];\n\t }\n\t }\n\t else if (query instanceof HTMLElement) {\n\t var names = (query.getAttribute('class') || '').split(/\\s+/);\n\t for (var i in names) {\n\t match = classes[names[i]];\n\t if (match)\n\t break;\n\t }\n\t match = match || tags[query.tagName];\n\t }\n\t if (match == null)\n\t return null;\n\t if ((scope & Scope.LEVEL & match.scope) && (scope & Scope.TYPE & match.scope))\n\t return match;\n\t return null;\n\t}\n\texports.query = query;\n\tfunction register() {\n\t var Definitions = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t Definitions[_i] = arguments[_i];\n\t }\n\t if (Definitions.length > 1) {\n\t return Definitions.map(function (d) {\n\t return register(d);\n\t });\n\t }\n\t var Definition = Definitions[0];\n\t if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n\t throw new ParchmentError('Invalid definition');\n\t }\n\t else if (Definition.blotName === 'abstract') {\n\t throw new ParchmentError('Cannot register abstract class');\n\t }\n\t types[Definition.blotName || Definition.attrName] = Definition;\n\t if (typeof Definition.keyName === 'string') {\n\t attributes[Definition.keyName] = Definition;\n\t }\n\t else {\n\t if (Definition.className != null) {\n\t classes[Definition.className] = Definition;\n\t }\n\t if (Definition.tagName != null) {\n\t if (Array.isArray(Definition.tagName)) {\n\t Definition.tagName = Definition.tagName.map(function (tagName) {\n\t return tagName.toUpperCase();\n\t });\n\t }\n\t else {\n\t Definition.tagName = Definition.tagName.toUpperCase();\n\t }\n\t var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n\t tagNames.forEach(function (tag) {\n\t if (tags[tag] == null || Definition.className == null) {\n\t tags[tag] = Definition;\n\t }\n\t });\n\t }\n\t }\n\t return Definition;\n\t}\n\texports.register = register;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tvar store_1 = __webpack_require__(9);\n\tvar container_1 = __webpack_require__(3);\n\tvar Registry = __webpack_require__(6);\n\tvar FormatBlot = (function (_super) {\n\t __extends(FormatBlot, _super);\n\t function FormatBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t FormatBlot.formats = function (domNode) {\n\t if (typeof this.tagName === 'string') {\n\t return true;\n\t }\n\t else if (Array.isArray(this.tagName)) {\n\t return domNode.tagName.toLowerCase();\n\t }\n\t return undefined;\n\t };\n\t FormatBlot.prototype.attach = function () {\n\t _super.prototype.attach.call(this);\n\t this.attributes = new store_1.default(this.domNode);\n\t };\n\t FormatBlot.prototype.format = function (name, value) {\n\t var format = Registry.query(name);\n\t if (format instanceof attributor_1.default) {\n\t this.attributes.attribute(format, value);\n\t }\n\t else if (value) {\n\t if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n\t this.replaceWith(name, value);\n\t }\n\t }\n\t };\n\t FormatBlot.prototype.formats = function () {\n\t var formats = this.attributes.values();\n\t var format = this.statics.formats(this.domNode);\n\t if (format != null) {\n\t formats[this.statics.blotName] = format;\n\t }\n\t return formats;\n\t };\n\t FormatBlot.prototype.replaceWith = function (name, value) {\n\t var replacement = _super.prototype.replaceWith.call(this, name, value);\n\t this.attributes.copy(replacement);\n\t return replacement;\n\t };\n\t FormatBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t _super.prototype.update.call(this, mutations);\n\t if (mutations.some(function (mutation) {\n\t return mutation.target === _this.domNode && mutation.type === 'attributes';\n\t })) {\n\t this.attributes.build();\n\t }\n\t };\n\t FormatBlot.prototype.wrap = function (name, value) {\n\t var wrapper = _super.prototype.wrap.call(this, name, value);\n\t if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n\t this.attributes.move(wrapper);\n\t }\n\t return wrapper;\n\t };\n\t return FormatBlot;\n\t}(container_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = FormatBlot;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Registry = __webpack_require__(6);\n\tvar Attributor = (function () {\n\t function Attributor(attrName, keyName, options) {\n\t if (options === void 0) { options = {}; }\n\t this.attrName = attrName;\n\t this.keyName = keyName;\n\t var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n\t if (options.scope != null) {\n\t // Ignore type bits, force attribute bit\n\t this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n\t }\n\t else {\n\t this.scope = Registry.Scope.ATTRIBUTE;\n\t }\n\t if (options.whitelist != null)\n\t this.whitelist = options.whitelist;\n\t }\n\t Attributor.keys = function (node) {\n\t return [].map.call(node.attributes, function (item) {\n\t return item.name;\n\t });\n\t };\n\t Attributor.prototype.add = function (node, value) {\n\t if (!this.canAdd(node, value))\n\t return false;\n\t node.setAttribute(this.keyName, value);\n\t return true;\n\t };\n\t Attributor.prototype.canAdd = function (node, value) {\n\t var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n\t if (match != null && (this.whitelist == null || this.whitelist.indexOf(value) > -1)) {\n\t return true;\n\t }\n\t return false;\n\t };\n\t Attributor.prototype.remove = function (node) {\n\t node.removeAttribute(this.keyName);\n\t };\n\t Attributor.prototype.value = function (node) {\n\t var value = node.getAttribute(this.keyName);\n\t return this.canAdd(node, value) ? value : '';\n\t };\n\t return Attributor;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = Attributor;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar attributor_1 = __webpack_require__(8);\n\tvar class_1 = __webpack_require__(10);\n\tvar style_1 = __webpack_require__(11);\n\tvar Registry = __webpack_require__(6);\n\tvar AttributorStore = (function () {\n\t function AttributorStore(domNode) {\n\t this.attributes = {};\n\t this.domNode = domNode;\n\t this.build();\n\t }\n\t AttributorStore.prototype.attribute = function (attribute, value) {\n\t if (value) {\n\t if (attribute.add(this.domNode, value)) {\n\t if (attribute.value(this.domNode) != null) {\n\t this.attributes[attribute.attrName] = attribute;\n\t }\n\t else {\n\t delete this.attributes[attribute.attrName];\n\t }\n\t }\n\t }\n\t else {\n\t attribute.remove(this.domNode);\n\t delete this.attributes[attribute.attrName];\n\t }\n\t };\n\t AttributorStore.prototype.build = function () {\n\t var _this = this;\n\t this.attributes = {};\n\t var attributes = attributor_1.default.keys(this.domNode);\n\t var classes = class_1.default.keys(this.domNode);\n\t var styles = style_1.default.keys(this.domNode);\n\t attributes.concat(classes).concat(styles).forEach(function (name) {\n\t var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n\t if (attr instanceof attributor_1.default) {\n\t _this.attributes[attr.attrName] = attr;\n\t }\n\t });\n\t };\n\t AttributorStore.prototype.copy = function (target) {\n\t var _this = this;\n\t Object.keys(this.attributes).forEach(function (key) {\n\t var value = _this.attributes[key].value(_this.domNode);\n\t target.format(key, value);\n\t });\n\t };\n\t AttributorStore.prototype.move = function (target) {\n\t var _this = this;\n\t this.copy(target);\n\t Object.keys(this.attributes).forEach(function (key) {\n\t _this.attributes[key].remove(_this.domNode);\n\t });\n\t this.attributes = {};\n\t };\n\t AttributorStore.prototype.values = function () {\n\t var _this = this;\n\t return Object.keys(this.attributes).reduce(function (attributes, name) {\n\t attributes[name] = _this.attributes[name].value(_this.domNode);\n\t return attributes;\n\t }, {});\n\t };\n\t return AttributorStore;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = AttributorStore;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tfunction match(node, prefix) {\n\t var className = node.getAttribute('class') || '';\n\t return className.split(/\\s+/).filter(function (name) {\n\t return name.indexOf(prefix + \"-\") === 0;\n\t });\n\t}\n\tvar ClassAttributor = (function (_super) {\n\t __extends(ClassAttributor, _super);\n\t function ClassAttributor() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t ClassAttributor.keys = function (node) {\n\t return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n\t return name.split('-').slice(0, -1).join('-');\n\t });\n\t };\n\t ClassAttributor.prototype.add = function (node, value) {\n\t if (!this.canAdd(node, value))\n\t return false;\n\t this.remove(node);\n\t node.classList.add(this.keyName + \"-\" + value);\n\t return true;\n\t };\n\t ClassAttributor.prototype.remove = function (node) {\n\t var matches = match(node, this.keyName);\n\t matches.forEach(function (name) {\n\t node.classList.remove(name);\n\t });\n\t if (node.classList.length === 0) {\n\t node.removeAttribute('class');\n\t }\n\t };\n\t ClassAttributor.prototype.value = function (node) {\n\t var result = match(node, this.keyName)[0] || '';\n\t var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n\t return this.canAdd(node, value) ? value : '';\n\t };\n\t return ClassAttributor;\n\t}(attributor_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ClassAttributor;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tfunction camelize(name) {\n\t var parts = name.split('-');\n\t var rest = parts.slice(1).map(function (part) {\n\t return part[0].toUpperCase() + part.slice(1);\n\t }).join('');\n\t return parts[0] + rest;\n\t}\n\tvar StyleAttributor = (function (_super) {\n\t __extends(StyleAttributor, _super);\n\t function StyleAttributor() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t StyleAttributor.keys = function (node) {\n\t return (node.getAttribute('style') || '').split(';').map(function (value) {\n\t var arr = value.split(':');\n\t return arr[0].trim();\n\t });\n\t };\n\t StyleAttributor.prototype.add = function (node, value) {\n\t if (!this.canAdd(node, value))\n\t return false;\n\t node.style[camelize(this.keyName)] = value;\n\t return true;\n\t };\n\t StyleAttributor.prototype.remove = function (node) {\n\t node.style[camelize(this.keyName)] = '';\n\t if (!node.getAttribute('style')) {\n\t node.removeAttribute('style');\n\t }\n\t };\n\t StyleAttributor.prototype.value = function (node) {\n\t var value = node.style[camelize(this.keyName)];\n\t return this.canAdd(node, value) ? value : '';\n\t };\n\t return StyleAttributor;\n\t}(attributor_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = StyleAttributor;\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar shadow_1 = __webpack_require__(5);\n\tvar Registry = __webpack_require__(6);\n\tvar LeafBlot = (function (_super) {\n\t __extends(LeafBlot, _super);\n\t function LeafBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t LeafBlot.value = function (domNode) {\n\t return true;\n\t };\n\t LeafBlot.prototype.index = function (node, offset) {\n\t if (node !== this.domNode)\n\t return -1;\n\t return Math.min(offset, 1);\n\t };\n\t LeafBlot.prototype.position = function (index, inclusive) {\n\t var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n\t if (index > 0)\n\t offset += 1;\n\t return [this.parent.domNode, offset];\n\t };\n\t LeafBlot.prototype.value = function () {\n\t return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n\t var _a;\n\t };\n\t return LeafBlot;\n\t}(shadow_1.default));\n\tLeafBlot.scope = Registry.Scope.INLINE_BLOT;\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = LeafBlot;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar container_1 = __webpack_require__(3);\n\tvar Registry = __webpack_require__(6);\n\tvar OBSERVER_CONFIG = {\n\t attributes: true,\n\t characterData: true,\n\t characterDataOldValue: true,\n\t childList: true,\n\t subtree: true\n\t};\n\tvar MAX_OPTIMIZE_ITERATIONS = 100;\n\tvar ScrollBlot = (function (_super) {\n\t __extends(ScrollBlot, _super);\n\t function ScrollBlot(node) {\n\t var _this = _super.call(this, node) || this;\n\t _this.parent = null;\n\t _this.observer = new MutationObserver(function (mutations) {\n\t _this.update(mutations);\n\t });\n\t _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n\t return _this;\n\t }\n\t ScrollBlot.prototype.detach = function () {\n\t _super.prototype.detach.call(this);\n\t this.observer.disconnect();\n\t };\n\t ScrollBlot.prototype.deleteAt = function (index, length) {\n\t this.update();\n\t if (index === 0 && length === this.length()) {\n\t this.children.forEach(function (child) {\n\t child.remove();\n\t });\n\t }\n\t else {\n\t _super.prototype.deleteAt.call(this, index, length);\n\t }\n\t };\n\t ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n\t this.update();\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t };\n\t ScrollBlot.prototype.insertAt = function (index, value, def) {\n\t this.update();\n\t _super.prototype.insertAt.call(this, index, value, def);\n\t };\n\t ScrollBlot.prototype.optimize = function (mutations) {\n\t var _this = this;\n\t if (mutations === void 0) { mutations = []; }\n\t _super.prototype.optimize.call(this);\n\t // We must modify mutations directly, cannot make copy and then modify\n\t var records = [].slice.call(this.observer.takeRecords());\n\t // Array.push currently seems to be implemented by a non-tail recursive function\n\t // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n\t while (records.length > 0)\n\t mutations.push(records.pop());\n\t // TODO use WeakMap\n\t var mark = function (blot, markParent) {\n\t if (markParent === void 0) { markParent = true; }\n\t if (blot == null || blot === _this)\n\t return;\n\t if (blot.domNode.parentNode == null)\n\t return;\n\t if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t blot.domNode[Registry.DATA_KEY].mutations = [];\n\t }\n\t if (markParent)\n\t mark(blot.parent);\n\t };\n\t var optimize = function (blot) {\n\t if (blot.domNode[Registry.DATA_KEY] == null || blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t return;\n\t }\n\t if (blot instanceof container_1.default) {\n\t blot.children.forEach(optimize);\n\t }\n\t blot.optimize();\n\t };\n\t var remaining = mutations;\n\t for (var i = 0; remaining.length > 0; i += 1) {\n\t if (i >= MAX_OPTIMIZE_ITERATIONS) {\n\t throw new Error('[Parchment] Maximum optimize iterations reached');\n\t }\n\t remaining.forEach(function (mutation) {\n\t var blot = Registry.find(mutation.target, true);\n\t if (blot == null)\n\t return;\n\t if (blot.domNode === mutation.target) {\n\t if (mutation.type === 'childList') {\n\t mark(Registry.find(mutation.previousSibling, false));\n\t [].forEach.call(mutation.addedNodes, function (node) {\n\t var child = Registry.find(node, false);\n\t mark(child, false);\n\t if (child instanceof container_1.default) {\n\t child.children.forEach(function (grandChild) {\n\t mark(grandChild, false);\n\t });\n\t }\n\t });\n\t }\n\t else if (mutation.type === 'attributes') {\n\t mark(blot.prev);\n\t }\n\t }\n\t mark(blot);\n\t });\n\t this.children.forEach(optimize);\n\t remaining = [].slice.call(this.observer.takeRecords());\n\t records = remaining.slice();\n\t while (records.length > 0)\n\t mutations.push(records.pop());\n\t }\n\t };\n\t ScrollBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t mutations = mutations || this.observer.takeRecords();\n\t // TODO use WeakMap\n\t mutations.map(function (mutation) {\n\t var blot = Registry.find(mutation.target, true);\n\t if (blot == null)\n\t return;\n\t if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n\t return blot;\n\t }\n\t else {\n\t blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n\t return null;\n\t }\n\t }).forEach(function (blot) {\n\t if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null)\n\t return;\n\t blot.update(blot.domNode[Registry.DATA_KEY].mutations || []);\n\t });\n\t if (this.domNode[Registry.DATA_KEY].mutations != null) {\n\t _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations);\n\t }\n\t this.optimize(mutations);\n\t };\n\t return ScrollBlot;\n\t}(container_1.default));\n\tScrollBlot.blotName = 'scroll';\n\tScrollBlot.defaultChild = 'block';\n\tScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n\tScrollBlot.tagName = 'DIV';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ScrollBlot;\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar format_1 = __webpack_require__(7);\n\tvar Registry = __webpack_require__(6);\n\t// Shallow object comparison\n\tfunction isEqual(obj1, obj2) {\n\t if (Object.keys(obj1).length !== Object.keys(obj2).length)\n\t return false;\n\t for (var prop in obj1) {\n\t if (obj1[prop] !== obj2[prop])\n\t return false;\n\t }\n\t return true;\n\t}\n\tvar InlineBlot = (function (_super) {\n\t __extends(InlineBlot, _super);\n\t function InlineBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t InlineBlot.formats = function (domNode) {\n\t if (domNode.tagName === InlineBlot.tagName)\n\t return undefined;\n\t return _super.formats.call(this, domNode);\n\t };\n\t InlineBlot.prototype.format = function (name, value) {\n\t var _this = this;\n\t if (name === this.statics.blotName && !value) {\n\t this.children.forEach(function (child) {\n\t if (!(child instanceof format_1.default)) {\n\t child = child.wrap(InlineBlot.blotName, true);\n\t }\n\t _this.attributes.copy(child);\n\t });\n\t this.unwrap();\n\t }\n\t else {\n\t _super.prototype.format.call(this, name, value);\n\t }\n\t };\n\t InlineBlot.prototype.formatAt = function (index, length, name, value) {\n\t if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n\t var blot = this.isolate(index, length);\n\t blot.format(name, value);\n\t }\n\t else {\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t }\n\t };\n\t InlineBlot.prototype.optimize = function () {\n\t _super.prototype.optimize.call(this);\n\t var formats = this.formats();\n\t if (Object.keys(formats).length === 0) {\n\t return this.unwrap(); // unformatted span\n\t }\n\t var next = this.next;\n\t if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n\t next.moveChildren(this);\n\t next.remove();\n\t }\n\t };\n\t return InlineBlot;\n\t}(format_1.default));\n\tInlineBlot.blotName = 'inline';\n\tInlineBlot.scope = Registry.Scope.INLINE_BLOT;\n\tInlineBlot.tagName = 'SPAN';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = InlineBlot;\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar format_1 = __webpack_require__(7);\n\tvar Registry = __webpack_require__(6);\n\tvar BlockBlot = (function (_super) {\n\t __extends(BlockBlot, _super);\n\t function BlockBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t BlockBlot.formats = function (domNode) {\n\t var tagName = Registry.query(BlockBlot.blotName).tagName;\n\t if (domNode.tagName === tagName)\n\t return undefined;\n\t return _super.formats.call(this, domNode);\n\t };\n\t BlockBlot.prototype.format = function (name, value) {\n\t if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n\t return;\n\t }\n\t else if (name === this.statics.blotName && !value) {\n\t this.replaceWith(BlockBlot.blotName);\n\t }\n\t else {\n\t _super.prototype.format.call(this, name, value);\n\t }\n\t };\n\t BlockBlot.prototype.formatAt = function (index, length, name, value) {\n\t if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n\t this.format(name, value);\n\t }\n\t else {\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t }\n\t };\n\t BlockBlot.prototype.insertAt = function (index, value, def) {\n\t if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n\t // Insert text or inline\n\t _super.prototype.insertAt.call(this, index, value, def);\n\t }\n\t else {\n\t var after = this.split(index);\n\t var blot = Registry.create(value, def);\n\t after.parent.insertBefore(blot, after);\n\t }\n\t };\n\t BlockBlot.prototype.update = function (mutations) {\n\t if (navigator.userAgent.match(/Trident/)) {\n\t this.attach();\n\t }\n\t else {\n\t _super.prototype.update.call(this, mutations);\n\t }\n\t };\n\t return BlockBlot;\n\t}(format_1.default));\n\tBlockBlot.blotName = 'block';\n\tBlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n\tBlockBlot.tagName = 'P';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = BlockBlot;\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar leaf_1 = __webpack_require__(12);\n\tvar EmbedBlot = (function (_super) {\n\t __extends(EmbedBlot, _super);\n\t function EmbedBlot() {\n\t return _super !== null && _super.apply(this, arguments) || this;\n\t }\n\t EmbedBlot.formats = function (domNode) {\n\t return undefined;\n\t };\n\t EmbedBlot.prototype.format = function (name, value) {\n\t // super.formatAt wraps, which is what we want in general,\n\t // but this allows subclasses to overwrite for formats\n\t // that just apply to particular embeds\n\t _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n\t };\n\t EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n\t if (index === 0 && length === this.length()) {\n\t this.format(name, value);\n\t }\n\t else {\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t }\n\t };\n\t EmbedBlot.prototype.formats = function () {\n\t return this.statics.formats(this.domNode);\n\t };\n\t return EmbedBlot;\n\t}(leaf_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = EmbedBlot;\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar leaf_1 = __webpack_require__(12);\n\tvar Registry = __webpack_require__(6);\n\tvar TextBlot = (function (_super) {\n\t __extends(TextBlot, _super);\n\t function TextBlot(node) {\n\t var _this = _super.call(this, node) || this;\n\t _this.text = _this.statics.value(_this.domNode);\n\t return _this;\n\t }\n\t TextBlot.create = function (value) {\n\t return document.createTextNode(value);\n\t };\n\t TextBlot.value = function (domNode) {\n\t return domNode.data;\n\t };\n\t TextBlot.prototype.deleteAt = function (index, length) {\n\t this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n\t };\n\t TextBlot.prototype.index = function (node, offset) {\n\t if (this.domNode === node) {\n\t return offset;\n\t }\n\t return -1;\n\t };\n\t TextBlot.prototype.insertAt = function (index, value, def) {\n\t if (def == null) {\n\t this.text = this.text.slice(0, index) + value + this.text.slice(index);\n\t this.domNode.data = this.text;\n\t }\n\t else {\n\t _super.prototype.insertAt.call(this, index, value, def);\n\t }\n\t };\n\t TextBlot.prototype.length = function () {\n\t return this.text.length;\n\t };\n\t TextBlot.prototype.optimize = function () {\n\t _super.prototype.optimize.call(this);\n\t this.text = this.statics.value(this.domNode);\n\t if (this.text.length === 0) {\n\t this.remove();\n\t }\n\t else if (this.next instanceof TextBlot && this.next.prev === this) {\n\t this.insertAt(this.length(), this.next.value());\n\t this.next.remove();\n\t }\n\t };\n\t TextBlot.prototype.position = function (index, inclusive) {\n\t if (inclusive === void 0) { inclusive = false; }\n\t return [this.domNode, index];\n\t };\n\t TextBlot.prototype.split = function (index, force) {\n\t if (force === void 0) { force = false; }\n\t if (!force) {\n\t if (index === 0)\n\t return this;\n\t if (index === this.length())\n\t return this.next;\n\t }\n\t var after = Registry.create(this.domNode.splitText(index));\n\t this.parent.insertBefore(after, this.next);\n\t this.text = this.statics.value(this.domNode);\n\t return after;\n\t };\n\t TextBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t if (mutations.some(function (mutation) {\n\t return mutation.type === 'characterData' && mutation.target === _this.domNode;\n\t })) {\n\t this.text = this.statics.value(this.domNode);\n\t }\n\t };\n\t TextBlot.prototype.value = function () {\n\t return this.text;\n\t };\n\t return TextBlot;\n\t}(leaf_1.default));\n\tTextBlot.blotName = 'text';\n\tTextBlot.scope = Registry.Scope.INLINE_BLOT;\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = TextBlot;\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.overload = exports.expandConfig = undefined;\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\t__webpack_require__(19);\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _editor = __webpack_require__(27);\n\n\tvar _editor2 = _interopRequireDefault(_editor);\n\n\tvar _emitter3 = __webpack_require__(35);\n\n\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _selection = __webpack_require__(40);\n\n\tvar _selection2 = _interopRequireDefault(_selection);\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tvar _theme = __webpack_require__(41);\n\n\tvar _theme2 = _interopRequireDefault(_theme);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _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; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar debug = (0, _logger2.default)('quill');\n\n\tvar Quill = function () {\n\t _createClass(Quill, null, [{\n\t key: 'debug',\n\t value: function debug(limit) {\n\t if (limit === true) {\n\t limit = 'log';\n\t }\n\t _logger2.default.level(limit);\n\t }\n\t }, {\n\t key: 'find',\n\t value: function find(node) {\n\t return node.__quill || _parchment2.default.find(node);\n\t }\n\t }, {\n\t key: 'import',\n\t value: function _import(name) {\n\t if (this.imports[name] == null) {\n\t debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n\t }\n\t return this.imports[name];\n\t }\n\t }, {\n\t key: 'register',\n\t value: function register(path, target) {\n\t var _this = this;\n\n\t var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t if (typeof path !== 'string') {\n\t var name = path.attrName || path.blotName;\n\t if (typeof name === 'string') {\n\t // register(Blot | Attributor, overwrite)\n\t this.register('formats/' + name, path, target);\n\t } else {\n\t Object.keys(path).forEach(function (key) {\n\t _this.register(key, path[key], target);\n\t });\n\t }\n\t } else {\n\t if (this.imports[path] != null && !overwrite) {\n\t debug.warn('Overwriting ' + path + ' with', target);\n\t }\n\t this.imports[path] = target;\n\t if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n\t _parchment2.default.register(target);\n\t }\n\t }\n\t }\n\t }]);\n\n\t function Quill(container) {\n\t var _this2 = this;\n\n\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t _classCallCheck(this, Quill);\n\n\t this.options = expandConfig(container, options);\n\t this.container = this.options.container;\n\t this.scrollingContainer = this.options.scrollingContainer || document.body;\n\t if (this.container == null) {\n\t return debug.error('Invalid Quill container', container);\n\t }\n\t if (this.options.debug) {\n\t Quill.debug(this.options.debug);\n\t }\n\t var html = this.container.innerHTML.trim();\n\t this.container.classList.add('ql-container');\n\t this.container.innerHTML = '';\n\t this.container.__quill = this;\n\t this.root = this.addContainer('ql-editor');\n\t this.root.classList.add('ql-blank');\n\t this.emitter = new _emitter4.default();\n\t this.scroll = _parchment2.default.create(this.root, {\n\t emitter: this.emitter,\n\t whitelist: this.options.formats\n\t });\n\t this.editor = new _editor2.default(this.scroll);\n\t this.selection = new _selection2.default(this.scroll, this.emitter);\n\t this.theme = new this.options.theme(this, this.options);\n\t this.keyboard = this.theme.addModule('keyboard');\n\t this.clipboard = this.theme.addModule('clipboard');\n\t this.history = this.theme.addModule('history');\n\t this.theme.init();\n\t this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n\t if (type === _emitter4.default.events.TEXT_CHANGE) {\n\t _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n\t }\n\t });\n\t this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n\t var range = _this2.selection.lastRange;\n\t var index = range && range.length === 0 ? range.index : undefined;\n\t modify.call(_this2, function () {\n\t return _this2.editor.update(null, mutations, index);\n\t }, source);\n\t });\n\t var contents = this.clipboard.convert('');\n\t this.setContents(contents);\n\t this.history.clear();\n\t if (this.options.placeholder) {\n\t this.root.setAttribute('data-placeholder', this.options.placeholder);\n\t }\n\t if (this.options.readOnly) {\n\t this.disable();\n\t }\n\t }\n\n\t _createClass(Quill, [{\n\t key: 'addContainer',\n\t value: function addContainer(container) {\n\t var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t if (typeof container === 'string') {\n\t var className = container;\n\t container = document.createElement('div');\n\t container.classList.add(className);\n\t }\n\t this.container.insertBefore(container, refNode);\n\t return container;\n\t }\n\t }, {\n\t key: 'blur',\n\t value: function blur() {\n\t this.selection.setRange(null);\n\t }\n\t }, {\n\t key: 'deleteText',\n\t value: function deleteText(index, length, source) {\n\t var _this3 = this;\n\n\t var _overload = overload(index, length, source);\n\n\t var _overload2 = _slicedToArray(_overload, 4);\n\n\t index = _overload2[0];\n\t length = _overload2[1];\n\t source = _overload2[3];\n\n\t return modify.call(this, function () {\n\t return _this3.editor.deleteText(index, length);\n\t }, source, index, -1 * length);\n\t }\n\t }, {\n\t key: 'disable',\n\t value: function disable() {\n\t this.enable(false);\n\t }\n\t }, {\n\t key: 'enable',\n\t value: function enable() {\n\t var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n\t this.scroll.enable(enabled);\n\t this.container.classList.toggle('ql-disabled', !enabled);\n\t if (!enabled) {\n\t this.blur();\n\t }\n\t }\n\t }, {\n\t key: 'focus',\n\t value: function focus() {\n\t var scrollTop = this.scrollingContainer.scrollTop;\n\t this.selection.focus();\n\t this.scrollingContainer.scrollTop = scrollTop;\n\t this.selection.scrollIntoView();\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t var _this4 = this;\n\n\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n\t return modify.call(this, function () {\n\t var range = _this4.getSelection(true);\n\t var change = new _quillDelta2.default();\n\t if (range == null) {\n\t return change;\n\t } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n\t } else if (range.length === 0) {\n\t _this4.selection.format(name, value);\n\t return change;\n\t } else {\n\t change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n\t }\n\t _this4.setSelection(range, _emitter4.default.sources.SILENT);\n\t return change;\n\t }, source);\n\t }\n\t }, {\n\t key: 'formatLine',\n\t value: function formatLine(index, length, name, value, source) {\n\t var _this5 = this;\n\n\t var formats = void 0;\n\n\t var _overload3 = overload(index, length, name, value, source);\n\n\t var _overload4 = _slicedToArray(_overload3, 4);\n\n\t index = _overload4[0];\n\t length = _overload4[1];\n\t formats = _overload4[2];\n\t source = _overload4[3];\n\n\t return modify.call(this, function () {\n\t return _this5.editor.formatLine(index, length, formats);\n\t }, source, index, 0);\n\t }\n\t }, {\n\t key: 'formatText',\n\t value: function formatText(index, length, name, value, source) {\n\t var _this6 = this;\n\n\t var formats = void 0;\n\n\t var _overload5 = overload(index, length, name, value, source);\n\n\t var _overload6 = _slicedToArray(_overload5, 4);\n\n\t index = _overload6[0];\n\t length = _overload6[1];\n\t formats = _overload6[2];\n\t source = _overload6[3];\n\n\t return modify.call(this, function () {\n\t return _this6.editor.formatText(index, length, formats);\n\t }, source, index, 0);\n\t }\n\t }, {\n\t key: 'getBounds',\n\t value: function getBounds(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t if (typeof index === 'number') {\n\t return this.selection.getBounds(index, length);\n\t } else {\n\t return this.selection.getBounds(index.index, index.length);\n\t }\n\t }\n\t }, {\n\t key: 'getContents',\n\t value: function getContents() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n\t var _overload7 = overload(index, length);\n\n\t var _overload8 = _slicedToArray(_overload7, 2);\n\n\t index = _overload8[0];\n\t length = _overload8[1];\n\n\t return this.editor.getContents(index, length);\n\t }\n\t }, {\n\t key: 'getFormat',\n\t value: function getFormat() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection();\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t if (typeof index === 'number') {\n\t return this.editor.getFormat(index, length);\n\t } else {\n\t return this.editor.getFormat(index.index, index.length);\n\t }\n\t }\n\t }, {\n\t key: 'getIndex',\n\t value: function getIndex(blot) {\n\t return blot.offset(this.scroll);\n\t }\n\t }, {\n\t key: 'getLength',\n\t value: function getLength() {\n\t return this.scroll.length();\n\t }\n\t }, {\n\t key: 'getLeaf',\n\t value: function getLeaf(index) {\n\t return this.scroll.leaf(index);\n\t }\n\t }, {\n\t key: 'getLine',\n\t value: function getLine(index) {\n\t return this.scroll.line(index);\n\t }\n\t }, {\n\t key: 'getLines',\n\t value: function getLines() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n\t if (typeof index !== 'number') {\n\t return this.scroll.lines(index.index, index.length);\n\t } else {\n\t return this.scroll.lines(index, length);\n\t }\n\t }\n\t }, {\n\t key: 'getModule',\n\t value: function getModule(name) {\n\t return this.theme.modules[name];\n\t }\n\t }, {\n\t key: 'getSelection',\n\t value: function getSelection() {\n\t var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n\t if (focus) this.focus();\n\t this.update(); // Make sure we access getRange with editor in consistent state\n\t return this.selection.getRange()[0];\n\t }\n\t }, {\n\t key: 'getText',\n\t value: function getText() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n\t var _overload9 = overload(index, length);\n\n\t var _overload10 = _slicedToArray(_overload9, 2);\n\n\t index = _overload10[0];\n\t length = _overload10[1];\n\n\t return this.editor.getText(index, length);\n\t }\n\t }, {\n\t key: 'hasFocus',\n\t value: function hasFocus() {\n\t return this.selection.hasFocus();\n\t }\n\t }, {\n\t key: 'insertEmbed',\n\t value: function insertEmbed(index, embed, value) {\n\t var _this7 = this;\n\n\t var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n\t return modify.call(this, function () {\n\t return _this7.editor.insertEmbed(index, embed, value);\n\t }, source, index);\n\t }\n\t }, {\n\t key: 'insertText',\n\t value: function insertText(index, text, name, value, source) {\n\t var _this8 = this;\n\n\t var formats = void 0;\n\n\t var _overload11 = overload(index, 0, name, value, source);\n\n\t var _overload12 = _slicedToArray(_overload11, 4);\n\n\t index = _overload12[0];\n\t formats = _overload12[2];\n\t source = _overload12[3];\n\n\t return modify.call(this, function () {\n\t return _this8.editor.insertText(index, text, formats);\n\t }, source, index, text.length);\n\t }\n\t }, {\n\t key: 'isEnabled',\n\t value: function isEnabled() {\n\t return !this.container.classList.contains('ql-disabled');\n\t }\n\t }, {\n\t key: 'off',\n\t value: function off() {\n\t return this.emitter.off.apply(this.emitter, arguments);\n\t }\n\t }, {\n\t key: 'on',\n\t value: function on() {\n\t return this.emitter.on.apply(this.emitter, arguments);\n\t }\n\t }, {\n\t key: 'once',\n\t value: function once() {\n\t return this.emitter.once.apply(this.emitter, arguments);\n\t }\n\t }, {\n\t key: 'pasteHTML',\n\t value: function pasteHTML(index, html, source) {\n\t this.clipboard.dangerouslyPasteHTML(index, html, source);\n\t }\n\t }, {\n\t key: 'removeFormat',\n\t value: function removeFormat(index, length, source) {\n\t var _this9 = this;\n\n\t var _overload13 = overload(index, length, source);\n\n\t var _overload14 = _slicedToArray(_overload13, 4);\n\n\t index = _overload14[0];\n\t length = _overload14[1];\n\t source = _overload14[3];\n\n\t return modify.call(this, function () {\n\t return _this9.editor.removeFormat(index, length);\n\t }, source, index);\n\t }\n\t }, {\n\t key: 'setContents',\n\t value: function setContents(delta) {\n\t var _this10 = this;\n\n\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n\t return modify.call(this, function () {\n\t delta = new _quillDelta2.default(delta);\n\t var length = _this10.getLength();\n\t var deleted = _this10.editor.deleteText(0, length);\n\t var applied = _this10.editor.applyDelta(delta);\n\t var lastOp = applied.ops[applied.ops.length - 1];\n\t if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n\t _this10.editor.deleteText(_this10.getLength() - 1, 1);\n\t applied.delete(1);\n\t }\n\t var ret = deleted.compose(applied);\n\t return ret;\n\t }, source);\n\t }\n\t }, {\n\t key: 'setSelection',\n\t value: function setSelection(index, length, source) {\n\t if (index == null) {\n\t this.selection.setRange(null, length || Quill.sources.API);\n\t } else {\n\t var _overload15 = overload(index, length, source);\n\n\t var _overload16 = _slicedToArray(_overload15, 4);\n\n\t index = _overload16[0];\n\t length = _overload16[1];\n\t source = _overload16[3];\n\n\t this.selection.setRange(new _selection.Range(index, length), source);\n\t }\n\t if (source !== _emitter4.default.sources.SILENT) {\n\t this.selection.scrollIntoView();\n\t }\n\t }\n\t }, {\n\t key: 'setText',\n\t value: function setText(text) {\n\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n\t var delta = new _quillDelta2.default().insert(text);\n\t return this.setContents(delta, source);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n\t var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n\t this.selection.update(source);\n\t return change;\n\t }\n\t }, {\n\t key: 'updateContents',\n\t value: function updateContents(delta) {\n\t var _this11 = this;\n\n\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n\t return modify.call(this, function () {\n\t delta = new _quillDelta2.default(delta);\n\t return _this11.editor.applyDelta(delta, source);\n\t }, source, true);\n\t }\n\t }]);\n\n\t return Quill;\n\t}();\n\n\tQuill.DEFAULTS = {\n\t bounds: null,\n\t formats: null,\n\t modules: {},\n\t placeholder: '',\n\t readOnly: false,\n\t scrollingContainer: null,\n\t strict: true,\n\t theme: 'default'\n\t};\n\tQuill.events = _emitter4.default.events;\n\tQuill.sources = _emitter4.default.sources;\n\t// eslint-disable-next-line no-undef\n\tQuill.version = false ? 'dev' : (\"1.2.0\");\n\n\tQuill.imports = {\n\t 'delta': _quillDelta2.default,\n\t 'parchment': _parchment2.default,\n\t 'core/module': _module2.default,\n\t 'core/theme': _theme2.default\n\t};\n\n\tfunction expandConfig(container, userConfig) {\n\t userConfig = (0, _extend2.default)(true, {\n\t container: container,\n\t modules: {\n\t clipboard: true,\n\t keyboard: true,\n\t history: true\n\t }\n\t }, userConfig);\n\t if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n\t userConfig.theme = _theme2.default;\n\t } else {\n\t userConfig.theme = Quill.import('themes/' + userConfig.theme);\n\t if (userConfig.theme == null) {\n\t throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n\t }\n\t }\n\t var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n\t [themeConfig, userConfig].forEach(function (config) {\n\t config.modules = config.modules || {};\n\t Object.keys(config.modules).forEach(function (module) {\n\t if (config.modules[module] === true) {\n\t config.modules[module] = {};\n\t }\n\t });\n\t });\n\t var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n\t var moduleConfig = moduleNames.reduce(function (config, name) {\n\t var moduleClass = Quill.import('modules/' + name);\n\t if (moduleClass == null) {\n\t debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n\t } else {\n\t config[name] = moduleClass.DEFAULTS || {};\n\t }\n\t return config;\n\t }, {});\n\t // Special case toolbar shorthand\n\t if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n\t userConfig.modules.toolbar = {\n\t container: userConfig.modules.toolbar\n\t };\n\t }\n\t userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n\t ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n\t if (typeof userConfig[key] === 'string') {\n\t userConfig[key] = document.querySelector(userConfig[key]);\n\t }\n\t });\n\t userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n\t if (userConfig.modules[name]) {\n\t config[name] = userConfig.modules[name];\n\t }\n\t return config;\n\t }, {});\n\t return userConfig;\n\t}\n\n\t// Handle selection preservation and TEXT_CHANGE emission\n\t// common to modification APIs\n\tfunction modify(modifier, source, index, shift) {\n\t if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n\t return new _quillDelta2.default();\n\t }\n\t var range = index == null ? null : this.getSelection();\n\t var oldDelta = this.editor.delta;\n\t var change = modifier();\n\t if (range != null) {\n\t if (index === true) index = range.index;\n\t if (shift == null) {\n\t range = shiftRange(range, change, source);\n\t } else if (shift !== 0) {\n\t range = shiftRange(range, index, shift, source);\n\t }\n\t this.setSelection(range, _emitter4.default.sources.SILENT);\n\t }\n\t if (change.length() > 0) {\n\t var _emitter;\n\n\t var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n\t (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\t if (source !== _emitter4.default.sources.SILENT) {\n\t var _emitter2;\n\n\t (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n\t }\n\t }\n\t return change;\n\t}\n\n\tfunction overload(index, length, name, value, source) {\n\t var formats = {};\n\t if (typeof index.index === 'number' && typeof index.length === 'number') {\n\t // Allow for throwaway end (used by insertText/insertEmbed)\n\t if (typeof length !== 'number') {\n\t source = value, value = name, name = length, length = index.length, index = index.index;\n\t } else {\n\t length = index.length, index = index.index;\n\t }\n\t } else if (typeof length !== 'number') {\n\t source = value, value = name, name = length, length = 0;\n\t }\n\t // Handle format being object, two format name/value strings or excluded\n\t if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n\t formats = name;\n\t source = value;\n\t } else if (typeof name === 'string') {\n\t if (value != null) {\n\t formats[name] = value;\n\t } else {\n\t source = name;\n\t }\n\t }\n\t // Handle optional source\n\t source = source || _emitter4.default.sources.API;\n\t return [index, length, formats, source];\n\t}\n\n\tfunction shiftRange(range, index, length, source) {\n\t if (range == null) return null;\n\t var start = void 0,\n\t end = void 0;\n\t if (index instanceof _quillDelta2.default) {\n\t var _map = [range.index, range.index + range.length].map(function (pos) {\n\t return index.transformPosition(pos, source === _emitter4.default.sources.USER);\n\t });\n\n\t var _map2 = _slicedToArray(_map, 2);\n\n\t start = _map2[0];\n\t end = _map2[1];\n\t } else {\n\t var _map3 = [range.index, range.index + range.length].map(function (pos) {\n\t if (pos < index || pos === index && source !== _emitter4.default.sources.USER) return pos;\n\t if (length >= 0) {\n\t return pos + length;\n\t } else {\n\t return Math.max(index, pos + length);\n\t }\n\t });\n\n\t var _map4 = _slicedToArray(_map3, 2);\n\n\t start = _map4[0];\n\t end = _map4[1];\n\t }\n\t return new _selection.Range(start, end - start);\n\t}\n\n\texports.expandConfig = expandConfig;\n\texports.overload = overload;\n\texports.default = Quill;\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tvar elem = document.createElement('div');\n\telem.classList.toggle('test-class', false);\n\tif (elem.classList.contains('test-class')) {\n\t (function () {\n\t var _toggle = DOMTokenList.prototype.toggle;\n\t DOMTokenList.prototype.toggle = function (token, force) {\n\t if (arguments.length > 1 && !this.contains(token) === !force) {\n\t return force;\n\t } else {\n\t return _toggle.call(this, token);\n\t }\n\t };\n\t })();\n\t}\n\n\tif (!String.prototype.startsWith) {\n\t String.prototype.startsWith = function (searchString, position) {\n\t position = position || 0;\n\t return this.substr(position, searchString.length) === searchString;\n\t };\n\t}\n\n\tif (!String.prototype.endsWith) {\n\t String.prototype.endsWith = function (searchString, position) {\n\t var subjectString = this.toString();\n\t if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n\t position = subjectString.length;\n\t }\n\t position -= searchString.length;\n\t var lastIndex = subjectString.indexOf(searchString, position);\n\t return lastIndex !== -1 && lastIndex === position;\n\t };\n\t}\n\n\tif (!Array.prototype.find) {\n\t Object.defineProperty(Array.prototype, \"find\", {\n\t value: function value(predicate) {\n\t if (this === null) {\n\t throw new TypeError('Array.prototype.find called on null or undefined');\n\t }\n\t if (typeof predicate !== 'function') {\n\t throw new TypeError('predicate must be a function');\n\t }\n\t var list = Object(this);\n\t var length = list.length >>> 0;\n\t var thisArg = arguments[1];\n\t var value;\n\n\t for (var i = 0; i < length; i++) {\n\t value = list[i];\n\t if (predicate.call(thisArg, value, i, list)) {\n\t return value;\n\t }\n\t }\n\t return undefined;\n\t }\n\t });\n\t}\n\n\t// Disable resizing in Firefox\n\tdocument.addEventListener(\"DOMContentLoaded\", function () {\n\t document.execCommand(\"enableObjectResizing\", false, false);\n\t});\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar diff = __webpack_require__(21);\n\tvar equal = __webpack_require__(22);\n\tvar extend = __webpack_require__(25);\n\tvar op = __webpack_require__(26);\n\n\n\tvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\n\tvar Delta = function (ops) {\n\t // Assume we are given a well formed ops\n\t if (Array.isArray(ops)) {\n\t this.ops = ops;\n\t } else if (ops != null && Array.isArray(ops.ops)) {\n\t this.ops = ops.ops;\n\t } else {\n\t this.ops = [];\n\t }\n\t};\n\n\n\tDelta.prototype.insert = function (text, attributes) {\n\t var newOp = {};\n\t if (text.length === 0) return this;\n\t newOp.insert = text;\n\t if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n\t newOp.attributes = attributes;\n\t }\n\t return this.push(newOp);\n\t};\n\n\tDelta.prototype['delete'] = function (length) {\n\t if (length <= 0) return this;\n\t return this.push({ 'delete': length });\n\t};\n\n\tDelta.prototype.retain = function (length, attributes) {\n\t if (length <= 0) return this;\n\t var newOp = { retain: length };\n\t if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n\t newOp.attributes = attributes;\n\t }\n\t return this.push(newOp);\n\t};\n\n\tDelta.prototype.push = function (newOp) {\n\t var index = this.ops.length;\n\t var lastOp = this.ops[index - 1];\n\t newOp = extend(true, {}, newOp);\n\t if (typeof lastOp === 'object') {\n\t if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n\t this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n\t return this;\n\t }\n\t // Since it does not matter if we insert before or after deleting at the same index,\n\t // always prefer to insert first\n\t if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n\t index -= 1;\n\t lastOp = this.ops[index - 1];\n\t if (typeof lastOp !== 'object') {\n\t this.ops.unshift(newOp);\n\t return this;\n\t }\n\t }\n\t if (equal(newOp.attributes, lastOp.attributes)) {\n\t if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n\t this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n\t if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n\t return this;\n\t } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n\t this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n\t if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n\t return this;\n\t }\n\t }\n\t }\n\t if (index === this.ops.length) {\n\t this.ops.push(newOp);\n\t } else {\n\t this.ops.splice(index, 0, newOp);\n\t }\n\t return this;\n\t};\n\n\tDelta.prototype.filter = function (predicate) {\n\t return this.ops.filter(predicate);\n\t};\n\n\tDelta.prototype.forEach = function (predicate) {\n\t this.ops.forEach(predicate);\n\t};\n\n\tDelta.prototype.map = function (predicate) {\n\t return this.ops.map(predicate);\n\t};\n\n\tDelta.prototype.partition = function (predicate) {\n\t var passed = [], failed = [];\n\t this.forEach(function(op) {\n\t var target = predicate(op) ? passed : failed;\n\t target.push(op);\n\t });\n\t return [passed, failed];\n\t};\n\n\tDelta.prototype.reduce = function (predicate, initial) {\n\t return this.ops.reduce(predicate, initial);\n\t};\n\n\tDelta.prototype.chop = function () {\n\t var lastOp = this.ops[this.ops.length - 1];\n\t if (lastOp && lastOp.retain && !lastOp.attributes) {\n\t this.ops.pop();\n\t }\n\t return this;\n\t};\n\n\tDelta.prototype.length = function () {\n\t return this.reduce(function (length, elem) {\n\t return length + op.length(elem);\n\t }, 0);\n\t};\n\n\tDelta.prototype.slice = function (start, end) {\n\t start = start || 0;\n\t if (typeof end !== 'number') end = Infinity;\n\t var ops = [];\n\t var iter = op.iterator(this.ops);\n\t var index = 0;\n\t while (index < end && iter.hasNext()) {\n\t var nextOp;\n\t if (index < start) {\n\t nextOp = iter.next(start - index);\n\t } else {\n\t nextOp = iter.next(end - index);\n\t ops.push(nextOp);\n\t }\n\t index += op.length(nextOp);\n\t }\n\t return new Delta(ops);\n\t};\n\n\n\tDelta.prototype.compose = function (other) {\n\t var thisIter = op.iterator(this.ops);\n\t var otherIter = op.iterator(other.ops);\n\t var delta = new Delta();\n\t while (thisIter.hasNext() || otherIter.hasNext()) {\n\t if (otherIter.peekType() === 'insert') {\n\t delta.push(otherIter.next());\n\t } else if (thisIter.peekType() === 'delete') {\n\t delta.push(thisIter.next());\n\t } else {\n\t var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n\t var thisOp = thisIter.next(length);\n\t var otherOp = otherIter.next(length);\n\t if (typeof otherOp.retain === 'number') {\n\t var newOp = {};\n\t if (typeof thisOp.retain === 'number') {\n\t newOp.retain = length;\n\t } else {\n\t newOp.insert = thisOp.insert;\n\t }\n\t // Preserve null when composing with a retain, otherwise remove it for inserts\n\t var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n\t if (attributes) newOp.attributes = attributes;\n\t delta.push(newOp);\n\t // Other op should be delete, we could be an insert or retain\n\t // Insert + delete cancels out\n\t } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n\t delta.push(otherOp);\n\t }\n\t }\n\t }\n\t return delta.chop();\n\t};\n\n\tDelta.prototype.concat = function (other) {\n\t var delta = new Delta(this.ops.slice());\n\t if (other.ops.length > 0) {\n\t delta.push(other.ops[0]);\n\t delta.ops = delta.ops.concat(other.ops.slice(1));\n\t }\n\t return delta;\n\t};\n\n\tDelta.prototype.diff = function (other, index) {\n\t if (this.ops === other.ops) {\n\t return new Delta();\n\t }\n\t var strings = [this, other].map(function (delta) {\n\t return delta.map(function (op) {\n\t if (op.insert != null) {\n\t return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n\t }\n\t var prep = (ops === other.ops) ? 'on' : 'with';\n\t throw new Error('diff() called ' + prep + ' non-document');\n\t }).join('');\n\t });\n\t var delta = new Delta();\n\t var diffResult = diff(strings[0], strings[1], index);\n\t var thisIter = op.iterator(this.ops);\n\t var otherIter = op.iterator(other.ops);\n\t diffResult.forEach(function (component) {\n\t var length = component[1].length;\n\t while (length > 0) {\n\t var opLength = 0;\n\t switch (component[0]) {\n\t case diff.INSERT:\n\t opLength = Math.min(otherIter.peekLength(), length);\n\t delta.push(otherIter.next(opLength));\n\t break;\n\t case diff.DELETE:\n\t opLength = Math.min(length, thisIter.peekLength());\n\t thisIter.next(opLength);\n\t delta['delete'](opLength);\n\t break;\n\t case diff.EQUAL:\n\t opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n\t var thisOp = thisIter.next(opLength);\n\t var otherOp = otherIter.next(opLength);\n\t if (equal(thisOp.insert, otherOp.insert)) {\n\t delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n\t } else {\n\t delta.push(otherOp)['delete'](opLength);\n\t }\n\t break;\n\t }\n\t length -= opLength;\n\t }\n\t });\n\t return delta.chop();\n\t};\n\n\tDelta.prototype.eachLine = function (predicate, newline) {\n\t newline = newline || '\\n';\n\t var iter = op.iterator(this.ops);\n\t var line = new Delta();\n\t while (iter.hasNext()) {\n\t if (iter.peekType() !== 'insert') return;\n\t var thisOp = iter.peek();\n\t var start = op.length(thisOp) - iter.peekLength();\n\t var index = typeof thisOp.insert === 'string' ?\n\t thisOp.insert.indexOf(newline, start) - start : -1;\n\t if (index < 0) {\n\t line.push(iter.next());\n\t } else if (index > 0) {\n\t line.push(iter.next(index));\n\t } else {\n\t predicate(line, iter.next(1).attributes || {});\n\t line = new Delta();\n\t }\n\t }\n\t if (line.length() > 0) {\n\t predicate(line, {});\n\t }\n\t};\n\n\tDelta.prototype.transform = function (other, priority) {\n\t priority = !!priority;\n\t if (typeof other === 'number') {\n\t return this.transformPosition(other, priority);\n\t }\n\t var thisIter = op.iterator(this.ops);\n\t var otherIter = op.iterator(other.ops);\n\t var delta = new Delta();\n\t while (thisIter.hasNext() || otherIter.hasNext()) {\n\t if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n\t delta.retain(op.length(thisIter.next()));\n\t } else if (otherIter.peekType() === 'insert') {\n\t delta.push(otherIter.next());\n\t } else {\n\t var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n\t var thisOp = thisIter.next(length);\n\t var otherOp = otherIter.next(length);\n\t if (thisOp['delete']) {\n\t // Our delete either makes their delete redundant or removes their retain\n\t continue;\n\t } else if (otherOp['delete']) {\n\t delta.push(otherOp);\n\t } else {\n\t // We retain either their retain or insert\n\t delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n\t }\n\t }\n\t }\n\t return delta.chop();\n\t};\n\n\tDelta.prototype.transformPosition = function (index, priority) {\n\t priority = !!priority;\n\t var thisIter = op.iterator(this.ops);\n\t var offset = 0;\n\t while (thisIter.hasNext() && offset <= index) {\n\t var length = thisIter.peekLength();\n\t var nextType = thisIter.peekType();\n\t thisIter.next();\n\t if (nextType === 'delete') {\n\t index -= Math.min(length, index - offset);\n\t continue;\n\t } else if (nextType === 'insert' && (offset < index || !priority)) {\n\t index += length;\n\t }\n\t offset += length;\n\t }\n\t return index;\n\t};\n\n\n\tmodule.exports = Delta;\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t/**\n\t * This library modifies the diff-patch-match library by Neil Fraser\n\t * by removing the patch and match functionality and certain advanced\n\t * options in the diff function. The original license is as follows:\n\t *\n\t * ===\n\t *\n\t * Diff Match and Patch\n\t *\n\t * Copyright 2006 Google Inc.\n\t * http://code.google.com/p/google-diff-match-patch/\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\n\n\t/**\n\t * The data structure representing a diff is an array of tuples:\n\t * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n\t * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n\t */\n\tvar DIFF_DELETE = -1;\n\tvar DIFF_INSERT = 1;\n\tvar DIFF_EQUAL = 0;\n\n\n\t/**\n\t * Find the differences between two texts. Simplifies the problem by stripping\n\t * any common prefix or suffix off the texts before diffing.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @param {Int} cursor_pos Expected edit position in text1 (optional)\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_main(text1, text2, cursor_pos) {\n\t // Check for equality (speedup).\n\t if (text1 == text2) {\n\t if (text1) {\n\t return [[DIFF_EQUAL, text1]];\n\t }\n\t return [];\n\t }\n\n\t // Check cursor_pos within bounds\n\t if (cursor_pos < 0 || text1.length < cursor_pos) {\n\t cursor_pos = null;\n\t }\n\n\t // Trim off common prefix (speedup).\n\t var commonlength = diff_commonPrefix(text1, text2);\n\t var commonprefix = text1.substring(0, commonlength);\n\t text1 = text1.substring(commonlength);\n\t text2 = text2.substring(commonlength);\n\n\t // Trim off common suffix (speedup).\n\t commonlength = diff_commonSuffix(text1, text2);\n\t var commonsuffix = text1.substring(text1.length - commonlength);\n\t text1 = text1.substring(0, text1.length - commonlength);\n\t text2 = text2.substring(0, text2.length - commonlength);\n\n\t // Compute the diff on the middle block.\n\t var diffs = diff_compute_(text1, text2);\n\n\t // Restore the prefix and suffix.\n\t if (commonprefix) {\n\t diffs.unshift([DIFF_EQUAL, commonprefix]);\n\t }\n\t if (commonsuffix) {\n\t diffs.push([DIFF_EQUAL, commonsuffix]);\n\t }\n\t diff_cleanupMerge(diffs);\n\t if (cursor_pos != null) {\n\t diffs = fix_cursor(diffs, cursor_pos);\n\t }\n\t return diffs;\n\t};\n\n\n\t/**\n\t * Find the differences between two texts. Assumes that the texts do not\n\t * have any common prefix or suffix.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_compute_(text1, text2) {\n\t var diffs;\n\n\t if (!text1) {\n\t // Just add some text (speedup).\n\t return [[DIFF_INSERT, text2]];\n\t }\n\n\t if (!text2) {\n\t // Just delete some text (speedup).\n\t return [[DIFF_DELETE, text1]];\n\t }\n\n\t var longtext = text1.length > text2.length ? text1 : text2;\n\t var shorttext = text1.length > text2.length ? text2 : text1;\n\t var i = longtext.indexOf(shorttext);\n\t if (i != -1) {\n\t // Shorter text is inside the longer text (speedup).\n\t diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n\t [DIFF_EQUAL, shorttext],\n\t [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n\t // Swap insertions for deletions if diff is reversed.\n\t if (text1.length > text2.length) {\n\t diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n\t }\n\t return diffs;\n\t }\n\n\t if (shorttext.length == 1) {\n\t // Single character string.\n\t // After the previous speedup, the character can't be an equality.\n\t return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n\t }\n\n\t // Check to see if the problem can be split in two.\n\t var hm = diff_halfMatch_(text1, text2);\n\t if (hm) {\n\t // A half-match was found, sort out the return data.\n\t var text1_a = hm[0];\n\t var text1_b = hm[1];\n\t var text2_a = hm[2];\n\t var text2_b = hm[3];\n\t var mid_common = hm[4];\n\t // Send both pairs off for separate processing.\n\t var diffs_a = diff_main(text1_a, text2_a);\n\t var diffs_b = diff_main(text1_b, text2_b);\n\t // Merge the results.\n\t return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n\t }\n\n\t return diff_bisect_(text1, text2);\n\t};\n\n\n\t/**\n\t * Find the 'middle snake' of a diff, split the problem in two\n\t * and return the recursively constructed diff.\n\t * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @return {Array} Array of diff tuples.\n\t * @private\n\t */\n\tfunction diff_bisect_(text1, text2) {\n\t // Cache the text lengths to prevent multiple calls.\n\t var text1_length = text1.length;\n\t var text2_length = text2.length;\n\t var max_d = Math.ceil((text1_length + text2_length) / 2);\n\t var v_offset = max_d;\n\t var v_length = 2 * max_d;\n\t var v1 = new Array(v_length);\n\t var v2 = new Array(v_length);\n\t // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n\t // integers and undefined.\n\t for (var x = 0; x < v_length; x++) {\n\t v1[x] = -1;\n\t v2[x] = -1;\n\t }\n\t v1[v_offset + 1] = 0;\n\t v2[v_offset + 1] = 0;\n\t var delta = text1_length - text2_length;\n\t // If the total number of characters is odd, then the front path will collide\n\t // with the reverse path.\n\t var front = (delta % 2 != 0);\n\t // Offsets for start and end of k loop.\n\t // Prevents mapping of space beyond the grid.\n\t var k1start = 0;\n\t var k1end = 0;\n\t var k2start = 0;\n\t var k2end = 0;\n\t for (var d = 0; d < max_d; d++) {\n\t // Walk the front path one step.\n\t for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n\t var k1_offset = v_offset + k1;\n\t var x1;\n\t if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n\t x1 = v1[k1_offset + 1];\n\t } else {\n\t x1 = v1[k1_offset - 1] + 1;\n\t }\n\t var y1 = x1 - k1;\n\t while (x1 < text1_length && y1 < text2_length &&\n\t text1.charAt(x1) == text2.charAt(y1)) {\n\t x1++;\n\t y1++;\n\t }\n\t v1[k1_offset] = x1;\n\t if (x1 > text1_length) {\n\t // Ran off the right of the graph.\n\t k1end += 2;\n\t } else if (y1 > text2_length) {\n\t // Ran off the bottom of the graph.\n\t k1start += 2;\n\t } else if (front) {\n\t var k2_offset = v_offset + delta - k1;\n\t if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n\t // Mirror x2 onto top-left coordinate system.\n\t var x2 = text1_length - v2[k2_offset];\n\t if (x1 >= x2) {\n\t // Overlap detected.\n\t return diff_bisectSplit_(text1, text2, x1, y1);\n\t }\n\t }\n\t }\n\t }\n\n\t // Walk the reverse path one step.\n\t for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n\t var k2_offset = v_offset + k2;\n\t var x2;\n\t if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n\t x2 = v2[k2_offset + 1];\n\t } else {\n\t x2 = v2[k2_offset - 1] + 1;\n\t }\n\t var y2 = x2 - k2;\n\t while (x2 < text1_length && y2 < text2_length &&\n\t text1.charAt(text1_length - x2 - 1) ==\n\t text2.charAt(text2_length - y2 - 1)) {\n\t x2++;\n\t y2++;\n\t }\n\t v2[k2_offset] = x2;\n\t if (x2 > text1_length) {\n\t // Ran off the left of the graph.\n\t k2end += 2;\n\t } else if (y2 > text2_length) {\n\t // Ran off the top of the graph.\n\t k2start += 2;\n\t } else if (!front) {\n\t var k1_offset = v_offset + delta - k2;\n\t if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n\t var x1 = v1[k1_offset];\n\t var y1 = v_offset + x1 - k1_offset;\n\t // Mirror x2 onto top-left coordinate system.\n\t x2 = text1_length - x2;\n\t if (x1 >= x2) {\n\t // Overlap detected.\n\t return diff_bisectSplit_(text1, text2, x1, y1);\n\t }\n\t }\n\t }\n\t }\n\t }\n\t // Diff took too long and hit the deadline or\n\t // number of diffs equals number of characters, no commonality at all.\n\t return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n\t};\n\n\n\t/**\n\t * Given the location of the 'middle snake', split the diff in two parts\n\t * and recurse.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @param {number} x Index of split point in text1.\n\t * @param {number} y Index of split point in text2.\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_bisectSplit_(text1, text2, x, y) {\n\t var text1a = text1.substring(0, x);\n\t var text2a = text2.substring(0, y);\n\t var text1b = text1.substring(x);\n\t var text2b = text2.substring(y);\n\n\t // Compute both diffs serially.\n\t var diffs = diff_main(text1a, text2a);\n\t var diffsb = diff_main(text1b, text2b);\n\n\t return diffs.concat(diffsb);\n\t};\n\n\n\t/**\n\t * Determine the common prefix of two strings.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {number} The number of characters common to the start of each\n\t * string.\n\t */\n\tfunction diff_commonPrefix(text1, text2) {\n\t // Quick check for common null cases.\n\t if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n\t return 0;\n\t }\n\t // Binary search.\n\t // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\t var pointermin = 0;\n\t var pointermax = Math.min(text1.length, text2.length);\n\t var pointermid = pointermax;\n\t var pointerstart = 0;\n\t while (pointermin < pointermid) {\n\t if (text1.substring(pointerstart, pointermid) ==\n\t text2.substring(pointerstart, pointermid)) {\n\t pointermin = pointermid;\n\t pointerstart = pointermin;\n\t } else {\n\t pointermax = pointermid;\n\t }\n\t pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n\t }\n\t return pointermid;\n\t};\n\n\n\t/**\n\t * Determine the common suffix of two strings.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {number} The number of characters common to the end of each string.\n\t */\n\tfunction diff_commonSuffix(text1, text2) {\n\t // Quick check for common null cases.\n\t if (!text1 || !text2 ||\n\t text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n\t return 0;\n\t }\n\t // Binary search.\n\t // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\t var pointermin = 0;\n\t var pointermax = Math.min(text1.length, text2.length);\n\t var pointermid = pointermax;\n\t var pointerend = 0;\n\t while (pointermin < pointermid) {\n\t if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n\t text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n\t pointermin = pointermid;\n\t pointerend = pointermin;\n\t } else {\n\t pointermax = pointermid;\n\t }\n\t pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n\t }\n\t return pointermid;\n\t};\n\n\n\t/**\n\t * Do the two texts share a substring which is at least half the length of the\n\t * longer text?\n\t * This speedup can produce non-minimal diffs.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {Array.} Five element Array, containing the prefix of\n\t * text1, the suffix of text1, the prefix of text2, the suffix of\n\t * text2 and the common middle. Or null if there was no match.\n\t */\n\tfunction diff_halfMatch_(text1, text2) {\n\t var longtext = text1.length > text2.length ? text1 : text2;\n\t var shorttext = text1.length > text2.length ? text2 : text1;\n\t if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n\t return null; // Pointless.\n\t }\n\n\t /**\n\t * Does a substring of shorttext exist within longtext such that the substring\n\t * is at least half the length of longtext?\n\t * Closure, but does not reference any external variables.\n\t * @param {string} longtext Longer string.\n\t * @param {string} shorttext Shorter string.\n\t * @param {number} i Start index of quarter length substring within longtext.\n\t * @return {Array.} Five element Array, containing the prefix of\n\t * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n\t * of shorttext and the common middle. Or null if there was no match.\n\t * @private\n\t */\n\t function diff_halfMatchI_(longtext, shorttext, i) {\n\t // Start with a 1/4 length substring at position i as a seed.\n\t var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n\t var j = -1;\n\t var best_common = '';\n\t var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n\t while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n\t var prefixLength = diff_commonPrefix(longtext.substring(i),\n\t shorttext.substring(j));\n\t var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n\t shorttext.substring(0, j));\n\t if (best_common.length < suffixLength + prefixLength) {\n\t best_common = shorttext.substring(j - suffixLength, j) +\n\t shorttext.substring(j, j + prefixLength);\n\t best_longtext_a = longtext.substring(0, i - suffixLength);\n\t best_longtext_b = longtext.substring(i + prefixLength);\n\t best_shorttext_a = shorttext.substring(0, j - suffixLength);\n\t best_shorttext_b = shorttext.substring(j + prefixLength);\n\t }\n\t }\n\t if (best_common.length * 2 >= longtext.length) {\n\t return [best_longtext_a, best_longtext_b,\n\t best_shorttext_a, best_shorttext_b, best_common];\n\t } else {\n\t return null;\n\t }\n\t }\n\n\t // First check if the second quarter is the seed for a half-match.\n\t var hm1 = diff_halfMatchI_(longtext, shorttext,\n\t Math.ceil(longtext.length / 4));\n\t // Check again based on the third quarter.\n\t var hm2 = diff_halfMatchI_(longtext, shorttext,\n\t Math.ceil(longtext.length / 2));\n\t var hm;\n\t if (!hm1 && !hm2) {\n\t return null;\n\t } else if (!hm2) {\n\t hm = hm1;\n\t } else if (!hm1) {\n\t hm = hm2;\n\t } else {\n\t // Both matched. Select the longest.\n\t hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n\t }\n\n\t // A half-match was found, sort out the return data.\n\t var text1_a, text1_b, text2_a, text2_b;\n\t if (text1.length > text2.length) {\n\t text1_a = hm[0];\n\t text1_b = hm[1];\n\t text2_a = hm[2];\n\t text2_b = hm[3];\n\t } else {\n\t text2_a = hm[0];\n\t text2_b = hm[1];\n\t text1_a = hm[2];\n\t text1_b = hm[3];\n\t }\n\t var mid_common = hm[4];\n\t return [text1_a, text1_b, text2_a, text2_b, mid_common];\n\t};\n\n\n\t/**\n\t * Reorder and merge like edit sections. Merge equalities.\n\t * Any edit section can move as long as it doesn't cross an equality.\n\t * @param {Array} diffs Array of diff tuples.\n\t */\n\tfunction diff_cleanupMerge(diffs) {\n\t diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n\t var pointer = 0;\n\t var count_delete = 0;\n\t var count_insert = 0;\n\t var text_delete = '';\n\t var text_insert = '';\n\t var commonlength;\n\t while (pointer < diffs.length) {\n\t switch (diffs[pointer][0]) {\n\t case DIFF_INSERT:\n\t count_insert++;\n\t text_insert += diffs[pointer][1];\n\t pointer++;\n\t break;\n\t case DIFF_DELETE:\n\t count_delete++;\n\t text_delete += diffs[pointer][1];\n\t pointer++;\n\t break;\n\t case DIFF_EQUAL:\n\t // Upon reaching an equality, check for prior redundancies.\n\t if (count_delete + count_insert > 1) {\n\t if (count_delete !== 0 && count_insert !== 0) {\n\t // Factor out any common prefixies.\n\t commonlength = diff_commonPrefix(text_insert, text_delete);\n\t if (commonlength !== 0) {\n\t if ((pointer - count_delete - count_insert) > 0 &&\n\t diffs[pointer - count_delete - count_insert - 1][0] ==\n\t DIFF_EQUAL) {\n\t diffs[pointer - count_delete - count_insert - 1][1] +=\n\t text_insert.substring(0, commonlength);\n\t } else {\n\t diffs.splice(0, 0, [DIFF_EQUAL,\n\t text_insert.substring(0, commonlength)]);\n\t pointer++;\n\t }\n\t text_insert = text_insert.substring(commonlength);\n\t text_delete = text_delete.substring(commonlength);\n\t }\n\t // Factor out any common suffixies.\n\t commonlength = diff_commonSuffix(text_insert, text_delete);\n\t if (commonlength !== 0) {\n\t diffs[pointer][1] = text_insert.substring(text_insert.length -\n\t commonlength) + diffs[pointer][1];\n\t text_insert = text_insert.substring(0, text_insert.length -\n\t commonlength);\n\t text_delete = text_delete.substring(0, text_delete.length -\n\t commonlength);\n\t }\n\t }\n\t // Delete the offending records and add the merged ones.\n\t if (count_delete === 0) {\n\t diffs.splice(pointer - count_insert,\n\t count_delete + count_insert, [DIFF_INSERT, text_insert]);\n\t } else if (count_insert === 0) {\n\t diffs.splice(pointer - count_delete,\n\t count_delete + count_insert, [DIFF_DELETE, text_delete]);\n\t } else {\n\t diffs.splice(pointer - count_delete - count_insert,\n\t count_delete + count_insert, [DIFF_DELETE, text_delete],\n\t [DIFF_INSERT, text_insert]);\n\t }\n\t pointer = pointer - count_delete - count_insert +\n\t (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n\t } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n\t // Merge this equality with the previous one.\n\t diffs[pointer - 1][1] += diffs[pointer][1];\n\t diffs.splice(pointer, 1);\n\t } else {\n\t pointer++;\n\t }\n\t count_insert = 0;\n\t count_delete = 0;\n\t text_delete = '';\n\t text_insert = '';\n\t break;\n\t }\n\t }\n\t if (diffs[diffs.length - 1][1] === '') {\n\t diffs.pop(); // Remove the dummy entry at the end.\n\t }\n\n\t // Second pass: look for single edits surrounded on both sides by equalities\n\t // which can be shifted sideways to eliminate an equality.\n\t // e.g: ABAC -> ABAC\n\t var changes = false;\n\t pointer = 1;\n\t // Intentionally ignore the first and last element (don't need checking).\n\t while (pointer < diffs.length - 1) {\n\t if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n\t diffs[pointer + 1][0] == DIFF_EQUAL) {\n\t // This is a single edit surrounded by equalities.\n\t if (diffs[pointer][1].substring(diffs[pointer][1].length -\n\t diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n\t // Shift the edit over the previous equality.\n\t diffs[pointer][1] = diffs[pointer - 1][1] +\n\t diffs[pointer][1].substring(0, diffs[pointer][1].length -\n\t diffs[pointer - 1][1].length);\n\t diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n\t diffs.splice(pointer - 1, 1);\n\t changes = true;\n\t } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n\t diffs[pointer + 1][1]) {\n\t // Shift the edit over the next equality.\n\t diffs[pointer - 1][1] += diffs[pointer + 1][1];\n\t diffs[pointer][1] =\n\t diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n\t diffs[pointer + 1][1];\n\t diffs.splice(pointer + 1, 1);\n\t changes = true;\n\t }\n\t }\n\t pointer++;\n\t }\n\t // If shifts were made, the diff needs reordering and another shift sweep.\n\t if (changes) {\n\t diff_cleanupMerge(diffs);\n\t }\n\t};\n\n\n\tvar diff = diff_main;\n\tdiff.INSERT = DIFF_INSERT;\n\tdiff.DELETE = DIFF_DELETE;\n\tdiff.EQUAL = DIFF_EQUAL;\n\n\tmodule.exports = diff;\n\n\t/*\n\t * Modify a diff such that the cursor position points to the start of a change:\n\t * E.g.\n\t * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n\t * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n\t * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n\t * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n\t *\n\t * @param {Array} diffs Array of diff tuples\n\t * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n\t * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n\t */\n\tfunction cursor_normalize_diff (diffs, cursor_pos) {\n\t if (cursor_pos === 0) {\n\t return [DIFF_EQUAL, diffs];\n\t }\n\t for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n\t var d = diffs[i];\n\t if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n\t var next_pos = current_pos + d[1].length;\n\t if (cursor_pos === next_pos) {\n\t return [i + 1, diffs];\n\t } else if (cursor_pos < next_pos) {\n\t // copy to prevent side effects\n\t diffs = diffs.slice();\n\t // split d into two diff changes\n\t var split_pos = cursor_pos - current_pos;\n\t var d_left = [d[0], d[1].slice(0, split_pos)];\n\t var d_right = [d[0], d[1].slice(split_pos)];\n\t diffs.splice(i, 1, d_left, d_right);\n\t return [i + 1, diffs];\n\t } else {\n\t current_pos = next_pos;\n\t }\n\t }\n\t }\n\t throw new Error('cursor_pos is out of bounds!')\n\t}\n\n\t/*\n\t * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n\t *\n\t * Case 1)\n\t * Check if a naive shift is possible:\n\t * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n\t * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n\t * Case 2)\n\t * Check if the following shifts are possible:\n\t * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n\t * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n\t * ^ ^\n\t * d d_next\n\t *\n\t * @param {Array} diffs Array of diff tuples\n\t * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n\t * @return {Array} Array of diff tuples\n\t */\n\tfunction fix_cursor (diffs, cursor_pos) {\n\t var norm = cursor_normalize_diff(diffs, cursor_pos);\n\t var ndiffs = norm[1];\n\t var cursor_pointer = norm[0];\n\t var d = ndiffs[cursor_pointer];\n\t var d_next = ndiffs[cursor_pointer + 1];\n\n\t if (d == null) {\n\t // Text was deleted from end of original string,\n\t // cursor is now out of bounds in new string\n\t return diffs;\n\t } else if (d[0] !== DIFF_EQUAL) {\n\t // A modification happened at the cursor location.\n\t // This is the expected outcome, so we can return the original diff.\n\t return diffs;\n\t } else {\n\t if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n\t // Case 1)\n\t // It is possible to perform a naive shift\n\t ndiffs.splice(cursor_pointer, 2, d_next, d)\n\t return merge_tuples(ndiffs, cursor_pointer, 2)\n\t } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n\t // Case 2)\n\t // d[1] is a prefix of d_next[1]\n\t // We can assume that d_next[0] !== 0, since d[0] === 0\n\t // Shift edit locations..\n\t ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n\t var suffix = d_next[1].slice(d[1].length);\n\t if (suffix.length > 0) {\n\t ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n\t }\n\t return merge_tuples(ndiffs, cursor_pointer, 3)\n\t } else {\n\t // Not possible to perform any modification\n\t return diffs;\n\t }\n\t }\n\n\t}\n\n\t/*\n\t * Try to merge tuples with their neigbors in a given range.\n\t * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n\t *\n\t * @param {Array} diffs Array of diff tuples.\n\t * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n\t * @param {Int} length Number of consecutive elements to check.\n\t * @return {Array} Array of merged diff tuples.\n\t */\n\tfunction merge_tuples (diffs, start, length) {\n\t // Check from (start-1) to (start+length).\n\t for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n\t if (i + 1 < diffs.length) {\n\t var left_d = diffs[i];\n\t var right_d = diffs[i+1];\n\t if (left_d[0] === right_d[1]) {\n\t diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n\t }\n\t }\n\t }\n\t return diffs;\n\t}\n\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar pSlice = Array.prototype.slice;\n\tvar objectKeys = __webpack_require__(23);\n\tvar isArguments = __webpack_require__(24);\n\n\tvar deepEqual = module.exports = function (actual, expected, opts) {\n\t if (!opts) opts = {};\n\t // 7.1. All identical values are equivalent, as determined by ===.\n\t if (actual === expected) {\n\t return true;\n\n\t } else if (actual instanceof Date && expected instanceof Date) {\n\t return actual.getTime() === expected.getTime();\n\n\t // 7.3. Other pairs that do not both pass typeof value == 'object',\n\t // equivalence is determined by ==.\n\t } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n\t return opts.strict ? actual === expected : actual == expected;\n\n\t // 7.4. For all other Object pairs, including Array objects, equivalence is\n\t // determined by having the same number of owned properties (as verified\n\t // with Object.prototype.hasOwnProperty.call), the same set of keys\n\t // (although not necessarily the same order), equivalent values for every\n\t // corresponding key, and an identical 'prototype' property. Note: this\n\t // accounts for both named and indexed properties on Arrays.\n\t } else {\n\t return objEquiv(actual, expected, opts);\n\t }\n\t}\n\n\tfunction isUndefinedOrNull(value) {\n\t return value === null || value === undefined;\n\t}\n\n\tfunction isBuffer (x) {\n\t if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n\t if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n\t return false;\n\t }\n\t if (x.length > 0 && typeof x[0] !== 'number') return false;\n\t return true;\n\t}\n\n\tfunction objEquiv(a, b, opts) {\n\t var i, key;\n\t if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n\t return false;\n\t // an identical 'prototype' property.\n\t if (a.prototype !== b.prototype) return false;\n\t //~~~I've managed to break Object.keys through screwy arguments passing.\n\t // Converting to array solves the problem.\n\t if (isArguments(a)) {\n\t if (!isArguments(b)) {\n\t return false;\n\t }\n\t a = pSlice.call(a);\n\t b = pSlice.call(b);\n\t return deepEqual(a, b, opts);\n\t }\n\t if (isBuffer(a)) {\n\t if (!isBuffer(b)) {\n\t return false;\n\t }\n\t if (a.length !== b.length) return false;\n\t for (i = 0; i < a.length; i++) {\n\t if (a[i] !== b[i]) return false;\n\t }\n\t return true;\n\t }\n\t try {\n\t var ka = objectKeys(a),\n\t kb = objectKeys(b);\n\t } catch (e) {//happens when one is a string literal and the other isn't\n\t return false;\n\t }\n\t // having the same number of owned properties (keys incorporates\n\t // hasOwnProperty)\n\t if (ka.length != kb.length)\n\t return false;\n\t //the same set of keys (although not necessarily the same order),\n\t ka.sort();\n\t kb.sort();\n\t //~~~cheap key test\n\t for (i = ka.length - 1; i >= 0; i--) {\n\t if (ka[i] != kb[i])\n\t return false;\n\t }\n\t //equivalent values for every corresponding key, and\n\t //~~~possibly expensive deep test\n\t for (i = ka.length - 1; i >= 0; i--) {\n\t key = ka[i];\n\t if (!deepEqual(a[key], b[key], opts)) return false;\n\t }\n\t return typeof a === typeof b;\n\t}\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\texports = module.exports = typeof Object.keys === 'function'\n\t ? Object.keys : shim;\n\n\texports.shim = shim;\n\tfunction shim (obj) {\n\t var keys = [];\n\t for (var key in obj) keys.push(key);\n\t return keys;\n\t}\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports) {\n\n\tvar supportsArgumentsClass = (function(){\n\t return Object.prototype.toString.call(arguments)\n\t})() == '[object Arguments]';\n\n\texports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\n\texports.supported = supported;\n\tfunction supported(object) {\n\t return Object.prototype.toString.call(object) == '[object Arguments]';\n\t};\n\n\texports.unsupported = unsupported;\n\tfunction unsupported(object){\n\t return object &&\n\t typeof object == 'object' &&\n\t typeof object.length == 'number' &&\n\t Object.prototype.hasOwnProperty.call(object, 'callee') &&\n\t !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n\t false;\n\t};\n\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tvar hasOwn = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\n\tvar isArray = function isArray(arr) {\n\t\tif (typeof Array.isArray === 'function') {\n\t\t\treturn Array.isArray(arr);\n\t\t}\n\n\t\treturn toStr.call(arr) === '[object Array]';\n\t};\n\n\tvar isPlainObject = function isPlainObject(obj) {\n\t\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\t\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t\t// Not own constructor property must be Object\n\t\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tvar key;\n\t\tfor (key in obj) {/**/}\n\n\t\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n\t};\n\n\tmodule.exports = function extend() {\n\t\tvar options, name, src, copy, copyIsArray, clone,\n\t\t\ttarget = arguments[0],\n\t\t\ti = 1,\n\t\t\tlength = arguments.length,\n\t\t\tdeep = false;\n\n\t\t// Handle a deep copy situation\n\t\tif (typeof target === 'boolean') {\n\t\t\tdeep = target;\n\t\t\ttarget = arguments[1] || {};\n\t\t\t// skip the boolean and the target\n\t\t\ti = 2;\n\t\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\t\ttarget = {};\n\t\t}\n\n\t\tfor (; i < length; ++i) {\n\t\t\toptions = arguments[i];\n\t\t\t// Only deal with non-null/undefined values\n\t\t\tif (options != null) {\n\t\t\t\t// Extend the base object\n\t\t\t\tfor (name in options) {\n\t\t\t\t\tsrc = target[name];\n\t\t\t\t\tcopy = options[name];\n\n\t\t\t\t\t// Prevent never-ending loop\n\t\t\t\t\tif (target !== copy) {\n\t\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Return the modified object\n\t\treturn target;\n\t};\n\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar equal = __webpack_require__(22);\n\tvar extend = __webpack_require__(25);\n\n\n\tvar lib = {\n\t attributes: {\n\t compose: function (a, b, keepNull) {\n\t if (typeof a !== 'object') a = {};\n\t if (typeof b !== 'object') b = {};\n\t var attributes = extend(true, {}, b);\n\t if (!keepNull) {\n\t attributes = Object.keys(attributes).reduce(function (copy, key) {\n\t if (attributes[key] != null) {\n\t copy[key] = attributes[key];\n\t }\n\t return copy;\n\t }, {});\n\t }\n\t for (var key in a) {\n\t if (a[key] !== undefined && b[key] === undefined) {\n\t attributes[key] = a[key];\n\t }\n\t }\n\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t },\n\n\t diff: function(a, b) {\n\t if (typeof a !== 'object') a = {};\n\t if (typeof b !== 'object') b = {};\n\t var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n\t if (!equal(a[key], b[key])) {\n\t attributes[key] = b[key] === undefined ? null : b[key];\n\t }\n\t return attributes;\n\t }, {});\n\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t },\n\n\t transform: function (a, b, priority) {\n\t if (typeof a !== 'object') return b;\n\t if (typeof b !== 'object') return undefined;\n\t if (!priority) return b; // b simply overwrites us without priority\n\t var attributes = Object.keys(b).reduce(function (attributes, key) {\n\t if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n\t return attributes;\n\t }, {});\n\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t }\n\t },\n\n\t iterator: function (ops) {\n\t return new Iterator(ops);\n\t },\n\n\t length: function (op) {\n\t if (typeof op['delete'] === 'number') {\n\t return op['delete'];\n\t } else if (typeof op.retain === 'number') {\n\t return op.retain;\n\t } else {\n\t return typeof op.insert === 'string' ? op.insert.length : 1;\n\t }\n\t }\n\t};\n\n\n\tfunction Iterator(ops) {\n\t this.ops = ops;\n\t this.index = 0;\n\t this.offset = 0;\n\t};\n\n\tIterator.prototype.hasNext = function () {\n\t return this.peekLength() < Infinity;\n\t};\n\n\tIterator.prototype.next = function (length) {\n\t if (!length) length = Infinity;\n\t var nextOp = this.ops[this.index];\n\t if (nextOp) {\n\t var offset = this.offset;\n\t var opLength = lib.length(nextOp)\n\t if (length >= opLength - offset) {\n\t length = opLength - offset;\n\t this.index += 1;\n\t this.offset = 0;\n\t } else {\n\t this.offset += length;\n\t }\n\t if (typeof nextOp['delete'] === 'number') {\n\t return { 'delete': length };\n\t } else {\n\t var retOp = {};\n\t if (nextOp.attributes) {\n\t retOp.attributes = nextOp.attributes;\n\t }\n\t if (typeof nextOp.retain === 'number') {\n\t retOp.retain = length;\n\t } else if (typeof nextOp.insert === 'string') {\n\t retOp.insert = nextOp.insert.substr(offset, length);\n\t } else {\n\t // offset should === 0, length should === 1\n\t retOp.insert = nextOp.insert;\n\t }\n\t return retOp;\n\t }\n\t } else {\n\t return { retain: Infinity };\n\t }\n\t};\n\n\tIterator.prototype.peek = function () {\n\t return this.ops[this.index];\n\t};\n\n\tIterator.prototype.peekLength = function () {\n\t if (this.ops[this.index]) {\n\t // Should never return 0 if our index is being managed correctly\n\t return lib.length(this.ops[this.index]) - this.offset;\n\t } else {\n\t return Infinity;\n\t }\n\t};\n\n\tIterator.prototype.peekType = function () {\n\t if (this.ops[this.index]) {\n\t if (typeof this.ops[this.index]['delete'] === 'number') {\n\t return 'delete';\n\t } else if (typeof this.ops[this.index].retain === 'number') {\n\t return 'retain';\n\t } else {\n\t return 'insert';\n\t }\n\t }\n\t return 'retain';\n\t};\n\n\n\tmodule.exports = lib;\n\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _op = __webpack_require__(26);\n\n\tvar _op2 = _interopRequireDefault(_op);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _code = __webpack_require__(28);\n\n\tvar _code2 = _interopRequireDefault(_code);\n\n\tvar _cursor = __webpack_require__(34);\n\n\tvar _cursor2 = _interopRequireDefault(_cursor);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tvar _clone = __webpack_require__(38);\n\n\tvar _clone2 = _interopRequireDefault(_clone);\n\n\tvar _deepEqual = __webpack_require__(22);\n\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _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; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Editor = function () {\n\t function Editor(scroll) {\n\t _classCallCheck(this, Editor);\n\n\t this.scroll = scroll;\n\t this.delta = this.getDelta();\n\t }\n\n\t _createClass(Editor, [{\n\t key: 'applyDelta',\n\t value: function applyDelta(delta) {\n\t var _this = this;\n\n\t var consumeNextNewline = false;\n\t this.scroll.update();\n\t var scrollLength = this.scroll.length();\n\t this.scroll.batch = true;\n\t delta = normalizeDelta(delta);\n\t delta.reduce(function (index, op) {\n\t var length = op.retain || op.delete || op.insert.length || 1;\n\t var attributes = op.attributes || {};\n\t if (op.insert != null) {\n\t if (typeof op.insert === 'string') {\n\t var text = op.insert;\n\t if (text.endsWith('\\n') && consumeNextNewline) {\n\t consumeNextNewline = false;\n\t text = text.slice(0, -1);\n\t }\n\t if (index >= scrollLength && !text.endsWith('\\n')) {\n\t consumeNextNewline = true;\n\t }\n\t _this.scroll.insertAt(index, text);\n\n\t var _scroll$line = _this.scroll.line(index),\n\t _scroll$line2 = _slicedToArray(_scroll$line, 2),\n\t line = _scroll$line2[0],\n\t offset = _scroll$line2[1];\n\n\t var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n\t if (line instanceof _block2.default) {\n\t var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n\t _line$descendant2 = _slicedToArray(_line$descendant, 1),\n\t leaf = _line$descendant2[0];\n\n\t formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n\t }\n\t attributes = _op2.default.attributes.diff(formats, attributes) || {};\n\t } else if (_typeof(op.insert) === 'object') {\n\t var key = Object.keys(op.insert)[0]; // There should only be one key\n\t if (key == null) return index;\n\t _this.scroll.insertAt(index, key, op.insert[key]);\n\t }\n\t scrollLength += length;\n\t }\n\t Object.keys(attributes).forEach(function (name) {\n\t _this.scroll.formatAt(index, length, name, attributes[name]);\n\t });\n\t return index + length;\n\t }, 0);\n\t delta.reduce(function (index, op) {\n\t if (typeof op.delete === 'number') {\n\t _this.scroll.deleteAt(index, op.delete);\n\t return index;\n\t }\n\t return index + (op.retain || op.insert.length || 1);\n\t }, 0);\n\t this.scroll.batch = false;\n\t this.scroll.optimize();\n\t return this.update(delta);\n\t }\n\t }, {\n\t key: 'deleteText',\n\t value: function deleteText(index, length) {\n\t this.scroll.deleteAt(index, length);\n\t return this.update(new _quillDelta2.default().retain(index).delete(length));\n\t }\n\t }, {\n\t key: 'formatLine',\n\t value: function formatLine(index, length) {\n\t var _this2 = this;\n\n\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\t this.scroll.update();\n\t Object.keys(formats).forEach(function (format) {\n\t if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n\t var lines = _this2.scroll.lines(index, Math.max(length, 1));\n\t var lengthRemaining = length;\n\t lines.forEach(function (line) {\n\t var lineLength = line.length();\n\t if (!(line instanceof _code2.default)) {\n\t line.format(format, formats[format]);\n\t } else {\n\t var codeIndex = index - line.offset(_this2.scroll);\n\t var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n\t line.formatAt(codeIndex, codeLength, format, formats[format]);\n\t }\n\t lengthRemaining -= lineLength;\n\t });\n\t });\n\t this.scroll.optimize();\n\t return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n\t }\n\t }, {\n\t key: 'formatText',\n\t value: function formatText(index, length) {\n\t var _this3 = this;\n\n\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\t Object.keys(formats).forEach(function (format) {\n\t _this3.scroll.formatAt(index, length, format, formats[format]);\n\t });\n\t return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n\t }\n\t }, {\n\t key: 'getContents',\n\t value: function getContents(index, length) {\n\t return this.delta.slice(index, index + length);\n\t }\n\t }, {\n\t key: 'getDelta',\n\t value: function getDelta() {\n\t return this.scroll.lines().reduce(function (delta, line) {\n\t return delta.concat(line.delta());\n\t }, new _quillDelta2.default());\n\t }\n\t }, {\n\t key: 'getFormat',\n\t value: function getFormat(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t var lines = [],\n\t leaves = [];\n\t if (length === 0) {\n\t this.scroll.path(index).forEach(function (path) {\n\t var _path = _slicedToArray(path, 1),\n\t blot = _path[0];\n\n\t if (blot instanceof _block2.default) {\n\t lines.push(blot);\n\t } else if (blot instanceof _parchment2.default.Leaf) {\n\t leaves.push(blot);\n\t }\n\t });\n\t } else {\n\t lines = this.scroll.lines(index, length);\n\t leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n\t }\n\t var formatsArr = [lines, leaves].map(function (blots) {\n\t if (blots.length === 0) return {};\n\t var formats = (0, _block.bubbleFormats)(blots.shift());\n\t while (Object.keys(formats).length > 0) {\n\t var blot = blots.shift();\n\t if (blot == null) return formats;\n\t formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n\t }\n\t return formats;\n\t });\n\t return _extend2.default.apply(_extend2.default, formatsArr);\n\t }\n\t }, {\n\t key: 'getText',\n\t value: function getText(index, length) {\n\t return this.getContents(index, length).filter(function (op) {\n\t return typeof op.insert === 'string';\n\t }).map(function (op) {\n\t return op.insert;\n\t }).join('');\n\t }\n\t }, {\n\t key: 'insertEmbed',\n\t value: function insertEmbed(index, embed, value) {\n\t this.scroll.insertAt(index, embed, value);\n\t return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n\t }\n\t }, {\n\t key: 'insertText',\n\t value: function insertText(index, text) {\n\t var _this4 = this;\n\n\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\t text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\t this.scroll.insertAt(index, text);\n\t Object.keys(formats).forEach(function (format) {\n\t _this4.scroll.formatAt(index, text.length, format, formats[format]);\n\t });\n\t return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n\t }\n\t }, {\n\t key: 'isBlank',\n\t value: function isBlank() {\n\t if (this.scroll.children.length == 0) return true;\n\t if (this.scroll.children.length > 1) return false;\n\t var child = this.scroll.children.head;\n\t return child.length() <= 1 && Object.keys(child.formats()).length == 0;\n\t }\n\t }, {\n\t key: 'removeFormat',\n\t value: function removeFormat(index, length) {\n\t var text = this.getText(index, length);\n\n\t var _scroll$line3 = this.scroll.line(index + length),\n\t _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n\t line = _scroll$line4[0],\n\t offset = _scroll$line4[1];\n\n\t var suffixLength = 0,\n\t suffix = new _quillDelta2.default();\n\t if (line != null) {\n\t if (!(line instanceof _code2.default)) {\n\t suffixLength = line.length() - offset;\n\t } else {\n\t suffixLength = line.newlineIndex(offset) - offset + 1;\n\t }\n\t suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n\t }\n\t var contents = this.getContents(index, length + suffixLength);\n\t var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n\t var delta = new _quillDelta2.default().retain(index).concat(diff);\n\t return this.applyDelta(delta);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(change) {\n\t var _this5 = this;\n\n\t var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\t var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n\t var oldDelta = this.delta;\n\t if (mutations.length === 1 && mutations[0].type === 'characterData' && _parchment2.default.find(mutations[0].target)) {\n\t (function () {\n\t // Optimization for character changes\n\t var textBlot = _parchment2.default.find(mutations[0].target);\n\t var formats = (0, _block.bubbleFormats)(textBlot);\n\t var index = textBlot.offset(_this5.scroll);\n\t var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n\t var oldText = new _quillDelta2.default().insert(oldValue);\n\t var newText = new _quillDelta2.default().insert(textBlot.value());\n\t var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n\t change = diffDelta.reduce(function (delta, op) {\n\t if (op.insert) {\n\t return delta.insert(op.insert, formats);\n\t } else {\n\t return delta.push(op);\n\t }\n\t }, new _quillDelta2.default());\n\t _this5.delta = oldDelta.compose(change);\n\t })();\n\t } else {\n\t this.delta = this.getDelta();\n\t if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n\t change = oldDelta.diff(this.delta, cursorIndex);\n\t }\n\t }\n\t return change;\n\t }\n\t }]);\n\n\t return Editor;\n\t}();\n\n\tfunction combineFormats(formats, combined) {\n\t return Object.keys(combined).reduce(function (merged, name) {\n\t if (formats[name] == null) return merged;\n\t if (combined[name] === formats[name]) {\n\t merged[name] = combined[name];\n\t } else if (Array.isArray(combined[name])) {\n\t if (combined[name].indexOf(formats[name]) < 0) {\n\t merged[name] = combined[name].concat([formats[name]]);\n\t }\n\t } else {\n\t merged[name] = [combined[name], formats[name]];\n\t }\n\t return merged;\n\t }, {});\n\t}\n\n\tfunction normalizeDelta(delta) {\n\t return delta.reduce(function (delta, op) {\n\t if (op.insert === 1) {\n\t var attributes = (0, _clone2.default)(op.attributes);\n\t delete attributes['image'];\n\t return delta.insert({ image: op.attributes.image }, attributes);\n\t }\n\t if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n\t op = (0, _clone2.default)(op);\n\t if (op.attributes.list) {\n\t op.attributes.list = 'ordered';\n\t } else {\n\t op.attributes.list = 'bullet';\n\t delete op.attributes.bullet;\n\t }\n\t }\n\t if (typeof op.insert === 'string') {\n\t var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\t return delta.insert(text, op.attributes);\n\t }\n\t return delta.push(op);\n\t }, new _quillDelta2.default());\n\t}\n\n\texports.default = Editor;\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.Code = undefined;\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tvar _text = __webpack_require__(33);\n\n\tvar _text2 = _interopRequireDefault(_text);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Code = function (_Inline) {\n\t _inherits(Code, _Inline);\n\n\t function Code() {\n\t _classCallCheck(this, Code);\n\n\t return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n\t }\n\n\t return Code;\n\t}(_inline2.default);\n\n\tCode.blotName = 'code';\n\tCode.tagName = 'CODE';\n\n\tvar CodeBlock = function (_Block) {\n\t _inherits(CodeBlock, _Block);\n\n\t function CodeBlock() {\n\t _classCallCheck(this, CodeBlock);\n\n\t return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n\t }\n\n\t _createClass(CodeBlock, [{\n\t key: 'delta',\n\t value: function delta() {\n\t var _this3 = this;\n\n\t var text = this.domNode.textContent;\n\t if (text.endsWith('\\n')) {\n\t // Should always be true\n\t text = text.slice(0, -1);\n\t }\n\t return text.split('\\n').reduce(function (delta, frag) {\n\t return delta.insert(frag).insert('\\n', _this3.formats());\n\t }, new _quillDelta2.default());\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (name === this.statics.blotName && value) return;\n\n\t var _descendant = this.descendant(_text2.default, this.length() - 1),\n\t _descendant2 = _slicedToArray(_descendant, 1),\n\t text = _descendant2[0];\n\n\t if (text != null) {\n\t text.deleteAt(text.length() - 1, 1);\n\t }\n\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t if (length === 0) return;\n\t if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n\t return;\n\t }\n\t var nextNewline = this.newlineIndex(index);\n\t if (nextNewline < 0 || nextNewline >= index + length) return;\n\t var prevNewline = this.newlineIndex(index, true) + 1;\n\t var isolateLength = nextNewline - prevNewline + 1;\n\t var blot = this.isolate(prevNewline, isolateLength);\n\t var next = blot.next;\n\t blot.format(name, value);\n\t if (next instanceof CodeBlock) {\n\t next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n\t }\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (def != null) return;\n\n\t var _descendant3 = this.descendant(_text2.default, index),\n\t _descendant4 = _slicedToArray(_descendant3, 2),\n\t text = _descendant4[0],\n\t offset = _descendant4[1];\n\n\t text.insertAt(offset, value);\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t var length = this.domNode.textContent.length;\n\t if (!this.domNode.textContent.endsWith('\\n')) {\n\t return length + 1;\n\t }\n\t return length;\n\t }\n\t }, {\n\t key: 'newlineIndex',\n\t value: function newlineIndex(searchIndex) {\n\t var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (!reverse) {\n\t var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n\t return offset > -1 ? searchIndex + offset : -1;\n\t } else {\n\t return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n\t }\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t if (!this.domNode.textContent.endsWith('\\n')) {\n\t this.appendChild(_parchment2.default.create('text', '\\n'));\n\t }\n\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this);\n\t var next = this.next;\n\t if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n\t next.optimize();\n\t next.moveChildren(this);\n\t next.remove();\n\t }\n\t }\n\t }, {\n\t key: 'replace',\n\t value: function replace(target) {\n\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n\t [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n\t var blot = _parchment2.default.find(node);\n\t if (blot == null) {\n\t node.parentNode.removeChild(node);\n\t } else if (blot instanceof _parchment2.default.Embed) {\n\t blot.remove();\n\t } else {\n\t blot.unwrap();\n\t }\n\t });\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n\t domNode.setAttribute('spellcheck', false);\n\t return domNode;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats() {\n\t return true;\n\t }\n\t }]);\n\n\t return CodeBlock;\n\t}(_block2.default);\n\n\tCodeBlock.blotName = 'code-block';\n\tCodeBlock.tagName = 'PRE';\n\tCodeBlock.TAB = ' ';\n\n\texports.Code = Code;\n\texports.default = CodeBlock;\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _break = __webpack_require__(30);\n\n\tvar _break2 = _interopRequireDefault(_break);\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tvar _text = __webpack_require__(33);\n\n\tvar _text2 = _interopRequireDefault(_text);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar NEWLINE_LENGTH = 1;\n\n\tvar BlockEmbed = function (_Embed) {\n\t _inherits(BlockEmbed, _Embed);\n\n\t function BlockEmbed() {\n\t _classCallCheck(this, BlockEmbed);\n\n\t return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n\t }\n\n\t _createClass(BlockEmbed, [{\n\t key: 'attach',\n\t value: function attach() {\n\t _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n\t this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n\t }\n\t }, {\n\t key: 'delta',\n\t value: function delta() {\n\t return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n\t if (attribute != null) {\n\t this.attributes.attribute(attribute, value);\n\t }\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t this.format(name, value);\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (typeof value === 'string' && value.endsWith('\\n')) {\n\t var block = _parchment2.default.create(Block.blotName);\n\t this.parent.insertBefore(block, index === 0 ? this : this.next);\n\t block.insertAt(0, value.slice(0, -1));\n\t } else {\n\t _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n\t }\n\t }\n\t }]);\n\n\t return BlockEmbed;\n\t}(_embed2.default);\n\n\tBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n\t// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\n\tvar Block = function (_Parchment$Block) {\n\t _inherits(Block, _Parchment$Block);\n\n\t function Block(domNode) {\n\t _classCallCheck(this, Block);\n\n\t var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n\t _this2.cache = {};\n\t return _this2;\n\t }\n\n\t _createClass(Block, [{\n\t key: 'delta',\n\t value: function delta() {\n\t if (this.cache.delta == null) {\n\t this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n\t if (leaf.length() === 0) {\n\t return delta;\n\t } else {\n\t return delta.insert(leaf.value(), bubbleFormats(leaf));\n\t }\n\t }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n\t }\n\t return this.cache.delta;\n\t }\n\t }, {\n\t key: 'deleteAt',\n\t value: function deleteAt(index, length) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t if (length <= 0) return;\n\t if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t if (index + length === this.length()) {\n\t this.format(name, value);\n\t }\n\t } else {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n\t }\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n\t if (value.length === 0) return;\n\t var lines = value.split('\\n');\n\t var text = lines.shift();\n\t if (text.length > 0) {\n\t if (index < this.length() - 1 || this.children.tail == null) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n\t } else {\n\t this.children.tail.insertAt(this.children.tail.length(), text);\n\t }\n\t this.cache = {};\n\t }\n\t var block = this;\n\t lines.reduce(function (index, line) {\n\t block = block.split(index, true);\n\t block.insertAt(0, line);\n\t return line.length;\n\t }, index + text.length);\n\t }\n\t }, {\n\t key: 'insertBefore',\n\t value: function insertBefore(blot, ref) {\n\t var head = this.children.head;\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n\t if (head instanceof _break2.default) {\n\t head.remove();\n\t }\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t if (this.cache.length == null) {\n\t this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n\t }\n\t return this.cache.length;\n\t }\n\t }, {\n\t key: 'moveChildren',\n\t value: function moveChildren(target, ref) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'path',\n\t value: function path(index) {\n\t return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n\t }\n\t }, {\n\t key: 'removeChild',\n\t value: function removeChild(child) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'split',\n\t value: function split(index) {\n\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n\t var clone = this.clone();\n\t if (index === 0) {\n\t this.parent.insertBefore(clone, this);\n\t return this;\n\t } else {\n\t this.parent.insertBefore(clone, this.next);\n\t return clone;\n\t }\n\t } else {\n\t var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n\t this.cache = {};\n\t return next;\n\t }\n\t }\n\t }]);\n\n\t return Block;\n\t}(_parchment2.default.Block);\n\n\tBlock.blotName = 'block';\n\tBlock.tagName = 'P';\n\tBlock.defaultChild = 'break';\n\tBlock.allowedChildren = [_inline2.default, _embed2.default, _text2.default];\n\n\tfunction bubbleFormats(blot) {\n\t var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t if (blot == null) return formats;\n\t if (typeof blot.formats === 'function') {\n\t formats = (0, _extend2.default)(formats, blot.formats());\n\t }\n\t if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n\t return formats;\n\t }\n\t return bubbleFormats(blot.parent, formats);\n\t}\n\n\texports.bubbleFormats = bubbleFormats;\n\texports.BlockEmbed = BlockEmbed;\n\texports.default = Block;\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Break = function (_Embed) {\n\t _inherits(Break, _Embed);\n\n\t function Break() {\n\t _classCallCheck(this, Break);\n\n\t return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n\t }\n\n\t _createClass(Break, [{\n\t key: 'insertInto',\n\t value: function insertInto(parent, ref) {\n\t if (parent.children.length === 0) {\n\t _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n\t } else {\n\t this.remove();\n\t }\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t return 0;\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value() {\n\t return '';\n\t }\n\t }], [{\n\t key: 'value',\n\t value: function value() {\n\t return undefined;\n\t }\n\t }]);\n\n\t return Break;\n\t}(_embed2.default);\n\n\tBreak.blotName = 'break';\n\tBreak.tagName = 'BR';\n\n\texports.default = Break;\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Embed = function (_Parchment$Embed) {\n\t _inherits(Embed, _Parchment$Embed);\n\n\t function Embed() {\n\t _classCallCheck(this, Embed);\n\n\t return _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).apply(this, arguments));\n\t }\n\n\t return Embed;\n\t}(_parchment2.default.Embed);\n\n\texports.default = Embed;\n\n/***/ },\n/* 32 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _text = __webpack_require__(33);\n\n\tvar _text2 = _interopRequireDefault(_text);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Inline = function (_Parchment$Inline) {\n\t _inherits(Inline, _Parchment$Inline);\n\n\t function Inline() {\n\t _classCallCheck(this, Inline);\n\n\t return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n\t }\n\n\t _createClass(Inline, [{\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n\t var blot = this.isolate(index, length);\n\t if (value) {\n\t blot.wrap(name, value);\n\t }\n\t } else {\n\t _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n\t }\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this);\n\t if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n\t var parent = this.parent.isolate(this.offset(), this.length());\n\t this.moveChildren(parent);\n\t parent.wrap(this);\n\t }\n\t }\n\t }], [{\n\t key: 'compare',\n\t value: function compare(self, other) {\n\t var selfIndex = Inline.order.indexOf(self);\n\t var otherIndex = Inline.order.indexOf(other);\n\t if (selfIndex >= 0 || otherIndex >= 0) {\n\t return selfIndex - otherIndex;\n\t } else if (self === other) {\n\t return 0;\n\t } else if (self < other) {\n\t return -1;\n\t } else {\n\t return 1;\n\t }\n\t }\n\t }]);\n\n\t return Inline;\n\t}(_parchment2.default.Inline);\n\n\tInline.allowedChildren = [Inline, _embed2.default, _text2.default];\n\t// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n\tInline.order = ['cursor', 'inline', // Must be lower\n\t'code', 'underline', 'strike', 'italic', 'bold', 'script', 'link' // Must be higher\n\t];\n\n\texports.default = Inline;\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar TextBlot = function (_Parchment$Text) {\n\t _inherits(TextBlot, _Parchment$Text);\n\n\t function TextBlot() {\n\t _classCallCheck(this, TextBlot);\n\n\t return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n\t }\n\n\t return TextBlot;\n\t}(_parchment2.default.Text);\n\n\texports.default = TextBlot;\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _text = __webpack_require__(33);\n\n\tvar _text2 = _interopRequireDefault(_text);\n\n\tvar _emitter = __webpack_require__(35);\n\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Cursor = function (_Embed) {\n\t _inherits(Cursor, _Embed);\n\n\t _createClass(Cursor, null, [{\n\t key: 'value',\n\t value: function value() {\n\t return undefined;\n\t }\n\t }]);\n\n\t function Cursor(domNode, selection) {\n\t _classCallCheck(this, Cursor);\n\n\t var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n\t _this.selection = selection;\n\t _this.textNode = document.createTextNode(Cursor.CONTENTS);\n\t _this.domNode.appendChild(_this.textNode);\n\t _this._length = 0;\n\t return _this;\n\t }\n\n\t _createClass(Cursor, [{\n\t key: 'detach',\n\t value: function detach() {\n\t // super.detach() will also clear domNode.__blot\n\t if (this.parent != null) this.parent.removeChild(this);\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (this._length !== 0) {\n\t return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n\t }\n\t var target = this,\n\t index = 0;\n\t while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n\t index += target.offset(target.parent);\n\t target = target.parent;\n\t }\n\t if (target != null) {\n\t this._length = Cursor.CONTENTS.length;\n\t target.optimize();\n\t target.formatAt(index, Cursor.CONTENTS.length, name, value);\n\t this._length = 0;\n\t }\n\t }\n\t }, {\n\t key: 'index',\n\t value: function index(node, offset) {\n\t if (node === this.textNode) return 0;\n\t return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t return this._length;\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position() {\n\t return [this.textNode, this.textNode.data.length];\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove() {\n\t _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n\t this.parent = null;\n\t }\n\t }, {\n\t key: 'restore',\n\t value: function restore() {\n\t var _this2 = this;\n\n\t if (this.selection.composing) return;\n\t if (this.parent == null) return;\n\t var textNode = this.textNode;\n\t var range = this.selection.getNativeRange();\n\t var restoreText = void 0,\n\t start = void 0,\n\t end = void 0;\n\t if (range != null && range.start.node === textNode && range.end.node === textNode) {\n\t var _ref = [textNode, range.start.offset, range.end.offset];\n\t restoreText = _ref[0];\n\t start = _ref[1];\n\t end = _ref[2];\n\t }\n\t // Link format will insert text outside of anchor tag\n\t while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n\t this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n\t }\n\t if (this.textNode.data !== Cursor.CONTENTS) {\n\t var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n\t if (this.next instanceof _text2.default) {\n\t restoreText = this.next.domNode;\n\t this.next.insertAt(0, text);\n\t this.textNode.data = Cursor.CONTENTS;\n\t } else {\n\t this.textNode.data = text;\n\t this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n\t this.textNode = document.createTextNode(Cursor.CONTENTS);\n\t this.domNode.appendChild(this.textNode);\n\t }\n\t }\n\t this.remove();\n\t if (start == null) return;\n\t this.selection.emitter.once(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t var _map = [start, end].map(function (offset) {\n\t return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n\t });\n\n\t var _map2 = _slicedToArray(_map, 2);\n\n\t start = _map2[0];\n\t end = _map2[1];\n\n\t _this2.selection.setNativeRange(restoreText, start, restoreText, end);\n\t });\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(mutations) {\n\t var _this3 = this;\n\n\t mutations.forEach(function (mutation) {\n\t if (mutation.type === 'characterData' && mutation.target === _this3.textNode) {\n\t _this3.restore();\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value() {\n\t return '';\n\t }\n\t }]);\n\n\t return Cursor;\n\t}(_embed2.default);\n\n\tCursor.blotName = 'cursor';\n\tCursor.className = 'ql-cursor';\n\tCursor.tagName = 'span';\n\tCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\n\texports.default = Cursor;\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _eventemitter = __webpack_require__(36);\n\n\tvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar debug = (0, _logger2.default)('quill:events');\n\n\tvar Emitter = function (_EventEmitter) {\n\t _inherits(Emitter, _EventEmitter);\n\n\t function Emitter() {\n\t _classCallCheck(this, Emitter);\n\n\t var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n\t _this.on('error', debug.error);\n\t return _this;\n\t }\n\n\t _createClass(Emitter, [{\n\t key: 'emit',\n\t value: function emit() {\n\t debug.log.apply(debug, arguments);\n\t _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n\t }\n\t }]);\n\n\t return Emitter;\n\t}(_eventemitter2.default);\n\n\tEmitter.events = {\n\t EDITOR_CHANGE: 'editor-change',\n\t SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n\t SCROLL_OPTIMIZE: 'scroll-optimize',\n\t SCROLL_UPDATE: 'scroll-update',\n\t SELECTION_CHANGE: 'selection-change',\n\t TEXT_CHANGE: 'text-change'\n\t};\n\tEmitter.sources = {\n\t API: 'api',\n\t SILENT: 'silent',\n\t USER: 'user'\n\t};\n\n\texports.default = Emitter;\n\n/***/ },\n/* 36 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tvar has = Object.prototype.hasOwnProperty\n\t , prefix = '~';\n\n\t/**\n\t * Constructor to create a storage for our `EE` objects.\n\t * An `Events` instance is a plain object whose properties are event names.\n\t *\n\t * @constructor\n\t * @api private\n\t */\n\tfunction Events() {}\n\n\t//\n\t// We try to not inherit from `Object.prototype`. In some engines creating an\n\t// instance in this way is faster than calling `Object.create(null)` directly.\n\t// If `Object.create(null)` is not supported we prefix the event names with a\n\t// character to make sure that the built-in object properties are not\n\t// overridden or used as an attack vector.\n\t//\n\tif (Object.create) {\n\t Events.prototype = Object.create(null);\n\n\t //\n\t // This hack is needed because the `__proto__` property is still inherited in\n\t // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n\t //\n\t if (!new Events().__proto__) prefix = false;\n\t}\n\n\t/**\n\t * Representation of a single event listener.\n\t *\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} context The context to invoke the listener with.\n\t * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n\t * @constructor\n\t * @api private\n\t */\n\tfunction EE(fn, context, once) {\n\t this.fn = fn;\n\t this.context = context;\n\t this.once = once || false;\n\t}\n\n\t/**\n\t * Minimal `EventEmitter` interface that is molded against the Node.js\n\t * `EventEmitter` interface.\n\t *\n\t * @constructor\n\t * @api public\n\t */\n\tfunction EventEmitter() {\n\t this._events = new Events();\n\t this._eventsCount = 0;\n\t}\n\n\t/**\n\t * Return an array listing the events for which the emitter has registered\n\t * listeners.\n\t *\n\t * @returns {Array}\n\t * @api public\n\t */\n\tEventEmitter.prototype.eventNames = function eventNames() {\n\t var names = []\n\t , events\n\t , name;\n\n\t if (this._eventsCount === 0) return names;\n\n\t for (name in (events = this._events)) {\n\t if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n\t }\n\n\t if (Object.getOwnPropertySymbols) {\n\t return names.concat(Object.getOwnPropertySymbols(events));\n\t }\n\n\t return names;\n\t};\n\n\t/**\n\t * Return the listeners registered for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Boolean} exists Only check if there are listeners.\n\t * @returns {Array|Boolean}\n\t * @api public\n\t */\n\tEventEmitter.prototype.listeners = function listeners(event, exists) {\n\t var evt = prefix ? prefix + event : event\n\t , available = this._events[evt];\n\n\t if (exists) return !!available;\n\t if (!available) return [];\n\t if (available.fn) return [available.fn];\n\n\t for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n\t ee[i] = available[i].fn;\n\t }\n\n\t return ee;\n\t};\n\n\t/**\n\t * Calls each of the listeners registered for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @returns {Boolean} `true` if the event had listeners, else `false`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n\t var evt = prefix ? prefix + event : event;\n\n\t if (!this._events[evt]) return false;\n\n\t var listeners = this._events[evt]\n\t , len = arguments.length\n\t , args\n\t , i;\n\n\t if (listeners.fn) {\n\t if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n\t switch (len) {\n\t case 1: return listeners.fn.call(listeners.context), true;\n\t case 2: return listeners.fn.call(listeners.context, a1), true;\n\t case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n\t case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n\t case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n\t case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n\t }\n\n\t for (i = 1, args = new Array(len -1); i < len; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\n\t listeners.fn.apply(listeners.context, args);\n\t } else {\n\t var length = listeners.length\n\t , j;\n\n\t for (i = 0; i < length; i++) {\n\t if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n\t switch (len) {\n\t case 1: listeners[i].fn.call(listeners[i].context); break;\n\t case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n\t case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n\t case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n\t default:\n\t if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n\t args[j - 1] = arguments[j];\n\t }\n\n\t listeners[i].fn.apply(listeners[i].context, args);\n\t }\n\t }\n\t }\n\n\t return true;\n\t};\n\n\t/**\n\t * Add a listener for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} [context=this] The context to invoke the listener with.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.on = function on(event, fn, context) {\n\t var listener = new EE(fn, context || this)\n\t , evt = prefix ? prefix + event : event;\n\n\t if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n\t else if (!this._events[evt].fn) this._events[evt].push(listener);\n\t else this._events[evt] = [this._events[evt], listener];\n\n\t return this;\n\t};\n\n\t/**\n\t * Add a one-time listener for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} [context=this] The context to invoke the listener with.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.once = function once(event, fn, context) {\n\t var listener = new EE(fn, context || this, true)\n\t , evt = prefix ? prefix + event : event;\n\n\t if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n\t else if (!this._events[evt].fn) this._events[evt].push(listener);\n\t else this._events[evt] = [this._events[evt], listener];\n\n\t return this;\n\t};\n\n\t/**\n\t * Remove the listeners of a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn Only remove the listeners that match this function.\n\t * @param {Mixed} context Only remove the listeners that have this context.\n\t * @param {Boolean} once Only remove one-time listeners.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n\t var evt = prefix ? prefix + event : event;\n\n\t if (!this._events[evt]) return this;\n\t if (!fn) {\n\t if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t return this;\n\t }\n\n\t var listeners = this._events[evt];\n\n\t if (listeners.fn) {\n\t if (\n\t listeners.fn === fn\n\t && (!once || listeners.once)\n\t && (!context || listeners.context === context)\n\t ) {\n\t if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t }\n\t } else {\n\t for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n\t if (\n\t listeners[i].fn !== fn\n\t || (once && !listeners[i].once)\n\t || (context && listeners[i].context !== context)\n\t ) {\n\t events.push(listeners[i]);\n\t }\n\t }\n\n\t //\n\t // Reset the array, or remove it completely if we have no more listeners.\n\t //\n\t if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n\t else if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t }\n\n\t return this;\n\t};\n\n\t/**\n\t * Remove all listeners, or those of the specified event.\n\t *\n\t * @param {String|Symbol} [event] The event name.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n\t var evt;\n\n\t if (event) {\n\t evt = prefix ? prefix + event : event;\n\t if (this._events[evt]) {\n\t if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t }\n\t } else {\n\t this._events = new Events();\n\t this._eventsCount = 0;\n\t }\n\n\t return this;\n\t};\n\n\t//\n\t// Alias methods names because people roll like that.\n\t//\n\tEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\tEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n\t//\n\t// This function doesn't apply anymore.\n\t//\n\tEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n\t return this;\n\t};\n\n\t//\n\t// Expose the prefix.\n\t//\n\tEventEmitter.prefixed = prefix;\n\n\t//\n\t// Allow `EventEmitter` to be imported as module namespace.\n\t//\n\tEventEmitter.EventEmitter = EventEmitter;\n\n\t//\n\t// Expose the module.\n\t//\n\tif ('undefined' !== typeof module) {\n\t module.exports = EventEmitter;\n\t}\n\n\n/***/ },\n/* 37 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar levels = ['error', 'warn', 'log', 'info'];\n\tvar level = 'warn';\n\n\tfunction debug(method) {\n\t if (levels.indexOf(method) <= levels.indexOf(level)) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t console[method].apply(console, args); // eslint-disable-line no-console\n\t }\n\t}\n\n\tfunction namespace(ns) {\n\t return levels.reduce(function (logger, method) {\n\t logger[method] = debug.bind(console, method, ns);\n\t return logger;\n\t }, {});\n\t}\n\n\tdebug.level = namespace.level = function (newLevel) {\n\t level = newLevel;\n\t};\n\n\texports.default = namespace;\n\n/***/ },\n/* 38 */\n/***/ function(module, exports) {\n\n\tvar clone = (function() {\n\t'use strict';\n\n\tvar nativeMap;\n\ttry {\n\t nativeMap = Map;\n\t} catch(_) {\n\t // maybe a reference error because no `Map`. Give it a dummy value that no\n\t // value will ever be an instanceof.\n\t nativeMap = function() {};\n\t}\n\n\tvar nativeSet;\n\ttry {\n\t nativeSet = Set;\n\t} catch(_) {\n\t nativeSet = function() {};\n\t}\n\n\tvar nativePromise;\n\ttry {\n\t nativePromise = Promise;\n\t} catch(_) {\n\t nativePromise = function() {};\n\t}\n\n\t/**\n\t * Clones (copies) an Object using deep copying.\n\t *\n\t * This function supports circular references by default, but if you are certain\n\t * there are no circular references in your object, you can save some CPU time\n\t * by calling clone(obj, false).\n\t *\n\t * Caution: if `circular` is false and `parent` contains circular references,\n\t * your program may enter an infinite loop and crash.\n\t *\n\t * @param `parent` - the object to be cloned\n\t * @param `circular` - set to true if the object to be cloned may contain\n\t * circular references. (optional - true by default)\n\t * @param `depth` - set to a number if the object is only to be cloned to\n\t * a particular depth. (optional - defaults to Infinity)\n\t * @param `prototype` - sets the prototype to be used when cloning an object.\n\t * (optional - defaults to parent prototype).\n\t * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n\t * should be cloned as well. Non-enumerable properties on the prototype\n\t * chain will be ignored. (optional - false by default)\n\t*/\n\tfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n\t if (typeof circular === 'object') {\n\t depth = circular.depth;\n\t prototype = circular.prototype;\n\t includeNonEnumerable = circular.includeNonEnumerable;\n\t circular = circular.circular;\n\t }\n\t // maintain two arrays for circular references, where corresponding parents\n\t // and children have the same index\n\t var allParents = [];\n\t var allChildren = [];\n\n\t var useBuffer = typeof Buffer != 'undefined';\n\n\t if (typeof circular == 'undefined')\n\t circular = true;\n\n\t if (typeof depth == 'undefined')\n\t depth = Infinity;\n\n\t // recurse this function so we don't reset allParents and allChildren\n\t function _clone(parent, depth) {\n\t // cloning null always returns null\n\t if (parent === null)\n\t return null;\n\n\t if (depth === 0)\n\t return parent;\n\n\t var child;\n\t var proto;\n\t if (typeof parent != 'object') {\n\t return parent;\n\t }\n\n\t if (parent instanceof nativeMap) {\n\t child = new nativeMap();\n\t } else if (parent instanceof nativeSet) {\n\t child = new nativeSet();\n\t } else if (parent instanceof nativePromise) {\n\t child = new nativePromise(function (resolve, reject) {\n\t parent.then(function(value) {\n\t resolve(_clone(value, depth - 1));\n\t }, function(err) {\n\t reject(_clone(err, depth - 1));\n\t });\n\t });\n\t } else if (clone.__isArray(parent)) {\n\t child = [];\n\t } else if (clone.__isRegExp(parent)) {\n\t child = new RegExp(parent.source, __getRegExpFlags(parent));\n\t if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n\t } else if (clone.__isDate(parent)) {\n\t child = new Date(parent.getTime());\n\t } else if (useBuffer && Buffer.isBuffer(parent)) {\n\t child = new Buffer(parent.length);\n\t parent.copy(child);\n\t return child;\n\t } else if (parent instanceof Error) {\n\t child = Object.create(parent);\n\t } else {\n\t if (typeof prototype == 'undefined') {\n\t proto = Object.getPrototypeOf(parent);\n\t child = Object.create(proto);\n\t }\n\t else {\n\t child = Object.create(prototype);\n\t proto = prototype;\n\t }\n\t }\n\n\t if (circular) {\n\t var index = allParents.indexOf(parent);\n\n\t if (index != -1) {\n\t return allChildren[index];\n\t }\n\t allParents.push(parent);\n\t allChildren.push(child);\n\t }\n\n\t if (parent instanceof nativeMap) {\n\t var keyIterator = parent.keys();\n\t while(true) {\n\t var next = keyIterator.next();\n\t if (next.done) {\n\t break;\n\t }\n\t var keyChild = _clone(next.value, depth - 1);\n\t var valueChild = _clone(parent.get(next.value), depth - 1);\n\t child.set(keyChild, valueChild);\n\t }\n\t }\n\t if (parent instanceof nativeSet) {\n\t var iterator = parent.keys();\n\t while(true) {\n\t var next = iterator.next();\n\t if (next.done) {\n\t break;\n\t }\n\t var entryChild = _clone(next.value, depth - 1);\n\t child.add(entryChild);\n\t }\n\t }\n\n\t for (var i in parent) {\n\t var attrs;\n\t if (proto) {\n\t attrs = Object.getOwnPropertyDescriptor(proto, i);\n\t }\n\n\t if (attrs && attrs.set == null) {\n\t continue;\n\t }\n\t child[i] = _clone(parent[i], depth - 1);\n\t }\n\n\t if (Object.getOwnPropertySymbols) {\n\t var symbols = Object.getOwnPropertySymbols(parent);\n\t for (var i = 0; i < symbols.length; i++) {\n\t // Don't need to worry about cloning a symbol because it is a primitive,\n\t // like a number or string.\n\t var symbol = symbols[i];\n\t var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n\t if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n\t continue;\n\t }\n\t child[symbol] = _clone(parent[symbol], depth - 1);\n\t if (!descriptor.enumerable) {\n\t Object.defineProperty(child, symbol, {\n\t enumerable: false\n\t });\n\t }\n\t }\n\t }\n\n\t if (includeNonEnumerable) {\n\t var allPropertyNames = Object.getOwnPropertyNames(parent);\n\t for (var i = 0; i < allPropertyNames.length; i++) {\n\t var propertyName = allPropertyNames[i];\n\t var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n\t if (descriptor && descriptor.enumerable) {\n\t continue;\n\t }\n\t child[propertyName] = _clone(parent[propertyName], depth - 1);\n\t Object.defineProperty(child, propertyName, {\n\t enumerable: false\n\t });\n\t }\n\t }\n\n\t return child;\n\t }\n\n\t return _clone(parent, depth);\n\t}\n\n\t/**\n\t * Simple flat clone using prototype, accepts only objects, usefull for property\n\t * override on FLAT configuration object (no nested props).\n\t *\n\t * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n\t * works.\n\t */\n\tclone.clonePrototype = function clonePrototype(parent) {\n\t if (parent === null)\n\t return null;\n\n\t var c = function () {};\n\t c.prototype = parent;\n\t return new c();\n\t};\n\n\t// private utility functions\n\n\tfunction __objToStr(o) {\n\t return Object.prototype.toString.call(o);\n\t}\n\tclone.__objToStr = __objToStr;\n\n\tfunction __isDate(o) {\n\t return typeof o === 'object' && __objToStr(o) === '[object Date]';\n\t}\n\tclone.__isDate = __isDate;\n\n\tfunction __isArray(o) {\n\t return typeof o === 'object' && __objToStr(o) === '[object Array]';\n\t}\n\tclone.__isArray = __isArray;\n\n\tfunction __isRegExp(o) {\n\t return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n\t}\n\tclone.__isRegExp = __isRegExp;\n\n\tfunction __getRegExpFlags(re) {\n\t var flags = '';\n\t if (re.global) flags += 'g';\n\t if (re.ignoreCase) flags += 'i';\n\t if (re.multiline) flags += 'm';\n\t return flags;\n\t}\n\tclone.__getRegExpFlags = __getRegExpFlags;\n\n\treturn clone;\n\t})();\n\n\tif (typeof module === 'object' && module.exports) {\n\t module.exports = clone;\n\t}\n\n\n/***/ },\n/* 39 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Module = function Module(quill) {\n\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t _classCallCheck(this, Module);\n\n\t this.quill = quill;\n\t this.options = options;\n\t};\n\n\tModule.DEFAULTS = {};\n\n\texports.default = Module;\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.Range = undefined;\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _clone = __webpack_require__(38);\n\n\tvar _clone2 = _interopRequireDefault(_clone);\n\n\tvar _deepEqual = __webpack_require__(22);\n\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n\tvar _emitter3 = __webpack_require__(35);\n\n\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar debug = (0, _logger2.default)('quill:selection');\n\n\tvar Range = function Range(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t _classCallCheck(this, Range);\n\n\t this.index = index;\n\t this.length = length;\n\t};\n\n\tvar Selection = function () {\n\t function Selection(scroll, emitter) {\n\t var _this = this;\n\n\t _classCallCheck(this, Selection);\n\n\t this.emitter = emitter;\n\t this.scroll = scroll;\n\t this.composing = false;\n\t this.root = this.scroll.domNode;\n\t this.root.addEventListener('compositionstart', function () {\n\t _this.composing = true;\n\t });\n\t this.root.addEventListener('compositionend', function () {\n\t _this.composing = false;\n\t });\n\t this.cursor = _parchment2.default.create('cursor', this);\n\t // savedRange is last non-null range\n\t this.lastRange = this.savedRange = new Range(0, 0);\n\t ['keyup', 'mouseup', 'mouseleave', 'touchend', 'touchleave', 'focus', 'blur'].forEach(function (eventName) {\n\t _this.root.addEventListener(eventName, function () {\n\t // When range used to be a selection and user click within the selection,\n\t // the range now being a cursor has not updated yet without setTimeout\n\t setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 100);\n\t });\n\t });\n\t this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n\t if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n\t _this.update(_emitter4.default.sources.SILENT);\n\t }\n\t });\n\t this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n\t var native = _this.getNativeRange();\n\t if (native == null) return;\n\t if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n\t // TODO unclear if this has negative side effects\n\t _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n\t try {\n\t _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n\t } catch (ignored) {}\n\t });\n\t });\n\t this.update(_emitter4.default.sources.SILENT);\n\t }\n\n\t _createClass(Selection, [{\n\t key: 'focus',\n\t value: function focus() {\n\t if (this.hasFocus()) return;\n\t this.root.focus();\n\t this.setRange(this.savedRange);\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(_format, value) {\n\t if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n\t this.scroll.update();\n\t var nativeRange = this.getNativeRange();\n\t if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n\t if (nativeRange.start.node !== this.cursor.textNode) {\n\t var blot = _parchment2.default.find(nativeRange.start.node, false);\n\t if (blot == null) return;\n\t // TODO Give blot ability to not split\n\t if (blot instanceof _parchment2.default.Leaf) {\n\t var after = blot.split(nativeRange.start.offset);\n\t blot.parent.insertBefore(this.cursor, after);\n\t } else {\n\t blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n\t }\n\t this.cursor.attach();\n\t }\n\t this.cursor.format(_format, value);\n\t this.scroll.optimize();\n\t this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n\t this.update();\n\t }\n\t }, {\n\t key: 'getBounds',\n\t value: function getBounds(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\t var scrollLength = this.scroll.length();\n\t index = Math.min(index, scrollLength - 1);\n\t length = Math.min(index + length, scrollLength - 1) - index;\n\t var bounds = void 0,\n\t node = void 0,\n\t _scroll$leaf = this.scroll.leaf(index),\n\t _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n\t leaf = _scroll$leaf2[0],\n\t offset = _scroll$leaf2[1];\n\t if (leaf == null) return null;\n\n\t var _leaf$position = leaf.position(offset, true);\n\n\t var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n\t node = _leaf$position2[0];\n\t offset = _leaf$position2[1];\n\n\t var range = document.createRange();\n\t if (length > 0) {\n\t range.setStart(node, offset);\n\n\t var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n\t var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n\t leaf = _scroll$leaf4[0];\n\t offset = _scroll$leaf4[1];\n\n\t if (leaf == null) return null;\n\n\t var _leaf$position3 = leaf.position(offset, true);\n\n\t var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n\t node = _leaf$position4[0];\n\t offset = _leaf$position4[1];\n\n\t range.setEnd(node, offset);\n\t bounds = range.getBoundingClientRect();\n\t } else {\n\t var side = 'left';\n\t var rect = void 0;\n\t if (node instanceof Text) {\n\t if (offset < node.data.length) {\n\t range.setStart(node, offset);\n\t range.setEnd(node, offset + 1);\n\t } else {\n\t range.setStart(node, offset - 1);\n\t range.setEnd(node, offset);\n\t side = 'right';\n\t }\n\t rect = range.getBoundingClientRect();\n\t } else {\n\t rect = leaf.domNode.getBoundingClientRect();\n\t if (offset > 0) side = 'right';\n\t }\n\t bounds = {\n\t height: rect.height,\n\t left: rect[side],\n\t width: 0,\n\t top: rect.top\n\t };\n\t }\n\t var containerBounds = this.root.parentNode.getBoundingClientRect();\n\t return {\n\t left: bounds.left - containerBounds.left,\n\t right: bounds.left + bounds.width - containerBounds.left,\n\t top: bounds.top - containerBounds.top,\n\t bottom: bounds.top + bounds.height - containerBounds.top,\n\t height: bounds.height,\n\t width: bounds.width\n\t };\n\t }\n\t }, {\n\t key: 'getNativeRange',\n\t value: function getNativeRange() {\n\t var selection = document.getSelection();\n\t if (selection == null || selection.rangeCount <= 0) return null;\n\t var nativeRange = selection.getRangeAt(0);\n\t if (nativeRange == null) return null;\n\t if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n\t return null;\n\t }\n\t var range = {\n\t start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n\t end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n\t native: nativeRange\n\t };\n\t [range.start, range.end].forEach(function (position) {\n\t var node = position.node,\n\t offset = position.offset;\n\t while (!(node instanceof Text) && node.childNodes.length > 0) {\n\t if (node.childNodes.length > offset) {\n\t node = node.childNodes[offset];\n\t offset = 0;\n\t } else if (node.childNodes.length === offset) {\n\t node = node.lastChild;\n\t offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n\t } else {\n\t break;\n\t }\n\t }\n\t position.node = node, position.offset = offset;\n\t });\n\t debug.info('getNativeRange', range);\n\t return range;\n\t }\n\t }, {\n\t key: 'getRange',\n\t value: function getRange() {\n\t var _this2 = this;\n\n\t var range = this.getNativeRange();\n\t if (range == null) return [null, null];\n\t var positions = [[range.start.node, range.start.offset]];\n\t if (!range.native.collapsed) {\n\t positions.push([range.end.node, range.end.offset]);\n\t }\n\t var indexes = positions.map(function (position) {\n\t var _position = _slicedToArray(position, 2),\n\t node = _position[0],\n\t offset = _position[1];\n\n\t var blot = _parchment2.default.find(node, true);\n\t var index = blot.offset(_this2.scroll);\n\t if (offset === 0) {\n\t return index;\n\t } else if (blot instanceof _parchment2.default.Container) {\n\t return index + blot.length();\n\t } else {\n\t return index + blot.index(node, offset);\n\t }\n\t });\n\t var start = Math.min.apply(Math, _toConsumableArray(indexes)),\n\t end = Math.max.apply(Math, _toConsumableArray(indexes));\n\t end = Math.min(end, this.scroll.length() - 1);\n\t return [new Range(start, end - start), range];\n\t }\n\t }, {\n\t key: 'hasFocus',\n\t value: function hasFocus() {\n\t return document.activeElement === this.root;\n\t }\n\t }, {\n\t key: 'scrollIntoView',\n\t value: function scrollIntoView() {\n\t var range = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastRange;\n\n\t if (range == null) return;\n\t var bounds = this.getBounds(range.index, range.length);\n\t if (bounds == null) return;\n\t if (this.root.offsetHeight < bounds.bottom) {\n\t var _scroll$line = this.scroll.line(Math.min(range.index + range.length, this.scroll.length() - 1)),\n\t _scroll$line2 = _slicedToArray(_scroll$line, 1),\n\t line = _scroll$line2[0];\n\n\t this.root.scrollTop = line.domNode.offsetTop + line.domNode.offsetHeight - this.root.offsetHeight;\n\t } else if (bounds.top < 0) {\n\t var _scroll$line3 = this.scroll.line(Math.min(range.index, this.scroll.length() - 1)),\n\t _scroll$line4 = _slicedToArray(_scroll$line3, 1),\n\t _line = _scroll$line4[0];\n\n\t this.root.scrollTop = _line.domNode.offsetTop;\n\t }\n\t }\n\t }, {\n\t key: 'setNativeRange',\n\t value: function setNativeRange(startNode, startOffset) {\n\t var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n\t var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n\t var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n\t debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n\t if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n\t return;\n\t }\n\t var selection = document.getSelection();\n\t if (selection == null) return;\n\t if (startNode != null) {\n\t if (!this.hasFocus()) this.root.focus();\n\t var native = (this.getNativeRange() || {}).native;\n\t if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n\t if (startNode.tagName == \"BR\") {\n\t startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n\t startNode = startNode.parentNode;\n\t }\n\t if (endNode.tagName == \"BR\") {\n\t endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n\t endNode = endNode.parentNode;\n\t }\n\t var range = document.createRange();\n\t range.setStart(startNode, startOffset);\n\t range.setEnd(endNode, endOffset);\n\t selection.removeAllRanges();\n\t selection.addRange(range);\n\t }\n\t } else {\n\t selection.removeAllRanges();\n\t this.root.blur();\n\t document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n\t }\n\t }\n\t }, {\n\t key: 'setRange',\n\t value: function setRange(range) {\n\t var _this3 = this;\n\n\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n\t if (typeof force === 'string') {\n\t source = force;\n\t force = false;\n\t }\n\t debug.info('setRange', range);\n\t if (range != null) {\n\t (function () {\n\t var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n\t var args = [];\n\t var scrollLength = _this3.scroll.length();\n\t indexes.forEach(function (index, i) {\n\t index = Math.min(scrollLength - 1, index);\n\t var node = void 0,\n\t _scroll$leaf5 = _this3.scroll.leaf(index),\n\t _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n\t leaf = _scroll$leaf6[0],\n\t offset = _scroll$leaf6[1];\n\t var _leaf$position5 = leaf.position(offset, i !== 0);\n\n\t var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n\t node = _leaf$position6[0];\n\t offset = _leaf$position6[1];\n\n\t args.push(node, offset);\n\t });\n\t if (args.length < 2) {\n\t args = args.concat(args);\n\t }\n\t _this3.setNativeRange.apply(_this3, _toConsumableArray(args).concat([force]));\n\t })();\n\t } else {\n\t this.setNativeRange(null);\n\t }\n\t this.update(source);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n\t var oldRange = this.lastRange;\n\n\t var _getRange = this.getRange(),\n\t _getRange2 = _slicedToArray(_getRange, 2),\n\t lastRange = _getRange2[0],\n\t nativeRange = _getRange2[1];\n\n\t this.lastRange = lastRange;\n\t if (this.lastRange != null) {\n\t this.savedRange = this.lastRange;\n\t }\n\t if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n\t var _emitter;\n\n\t if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n\t this.cursor.restore();\n\t }\n\t var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n\t (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\t if (source !== _emitter4.default.sources.SILENT) {\n\t var _emitter2;\n\n\t (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n\t }\n\t }\n\t }\n\t }]);\n\n\t return Selection;\n\t}();\n\n\tfunction contains(parent, descendant) {\n\t try {\n\t // Firefox inserts inaccessible nodes around video elements\n\t descendant.parentNode;\n\t } catch (e) {\n\t return false;\n\t }\n\t // IE11 has bug with Text nodes\n\t // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n\t if (descendant instanceof Text) {\n\t descendant = descendant.parentNode;\n\t }\n\t return parent.contains(descendant);\n\t}\n\n\texports.Range = Range;\n\texports.default = Selection;\n\n/***/ },\n/* 41 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Theme = function () {\n\t function Theme(quill, options) {\n\t _classCallCheck(this, Theme);\n\n\t this.quill = quill;\n\t this.options = options;\n\t this.modules = {};\n\t }\n\n\t _createClass(Theme, [{\n\t key: 'init',\n\t value: function init() {\n\t var _this = this;\n\n\t Object.keys(this.options.modules).forEach(function (name) {\n\t if (_this.modules[name] == null) {\n\t _this.addModule(name);\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'addModule',\n\t value: function addModule(name) {\n\t var moduleClass = this.quill.constructor.import('modules/' + name);\n\t this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n\t return this.modules[name];\n\t }\n\t }]);\n\n\t return Theme;\n\t}();\n\n\tTheme.DEFAULTS = {\n\t modules: {}\n\t};\n\tTheme.themes = {\n\t 'default': Theme\n\t};\n\n\texports.default = Theme;\n\n/***/ },\n/* 42 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Container = function (_Parchment$Container) {\n\t _inherits(Container, _Parchment$Container);\n\n\t function Container() {\n\t _classCallCheck(this, Container);\n\n\t return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n\t }\n\n\t return Container;\n\t}(_parchment2.default.Container);\n\n\tContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\n\texports.default = Container;\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _emitter = __webpack_require__(35);\n\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tvar _break = __webpack_require__(30);\n\n\tvar _break2 = _interopRequireDefault(_break);\n\n\tvar _container = __webpack_require__(42);\n\n\tvar _container2 = _interopRequireDefault(_container);\n\n\tvar _code = __webpack_require__(28);\n\n\tvar _code2 = _interopRequireDefault(_code);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tfunction isLine(blot) {\n\t return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n\t}\n\n\tvar Scroll = function (_Parchment$Scroll) {\n\t _inherits(Scroll, _Parchment$Scroll);\n\n\t function Scroll(domNode, config) {\n\t _classCallCheck(this, Scroll);\n\n\t var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n\t _this.emitter = config.emitter;\n\t if (Array.isArray(config.whitelist)) {\n\t _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n\t whitelist[format] = true;\n\t return whitelist;\n\t }, {});\n\t }\n\t _this.optimize();\n\t _this.enable();\n\t return _this;\n\t }\n\n\t _createClass(Scroll, [{\n\t key: 'deleteAt',\n\t value: function deleteAt(index, length) {\n\t var _line = this.line(index),\n\t _line2 = _slicedToArray(_line, 2),\n\t first = _line2[0],\n\t offset = _line2[1];\n\n\t var _line3 = this.line(index + length),\n\t _line4 = _slicedToArray(_line3, 1),\n\t last = _line4[0];\n\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n\t if (last != null && first !== last && offset > 0 && !(first instanceof _block.BlockEmbed) && !(last instanceof _block.BlockEmbed)) {\n\t if (last instanceof _code2.default) {\n\t last.deleteAt(last.length() - 1, 1);\n\t }\n\t var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n\t first.moveChildren(last, ref);\n\t first.remove();\n\t }\n\t this.optimize();\n\t }\n\t }, {\n\t key: 'enable',\n\t value: function enable() {\n\t var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n\t this.domNode.setAttribute('contenteditable', enabled);\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, format, value) {\n\t if (this.whitelist != null && !this.whitelist[format]) return;\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n\t this.optimize();\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n\t if (index >= this.length()) {\n\t if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n\t var blot = _parchment2.default.create(this.statics.defaultChild);\n\t this.appendChild(blot);\n\t if (def == null && value.endsWith('\\n')) {\n\t value = value.slice(0, -1);\n\t }\n\t blot.insertAt(0, value, def);\n\t } else {\n\t var embed = _parchment2.default.create(value, def);\n\t this.appendChild(embed);\n\t }\n\t } else {\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n\t }\n\t this.optimize();\n\t }\n\t }, {\n\t key: 'insertBefore',\n\t value: function insertBefore(blot, ref) {\n\t if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n\t var wrapper = _parchment2.default.create(this.statics.defaultChild);\n\t wrapper.appendChild(blot);\n\t blot = wrapper;\n\t }\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n\t }\n\t }, {\n\t key: 'leaf',\n\t value: function leaf(index) {\n\t return this.path(index).pop() || [null, -1];\n\t }\n\t }, {\n\t key: 'line',\n\t value: function line(index) {\n\t if (index === this.length()) {\n\t return this.line(index - 1);\n\t }\n\t return this.descendant(isLine, index);\n\t }\n\t }, {\n\t key: 'lines',\n\t value: function lines() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n\t var getLines = function getLines(blot, index, length) {\n\t var lines = [],\n\t lengthLeft = length;\n\t blot.children.forEachAt(index, length, function (child, index, length) {\n\t if (isLine(child)) {\n\t lines.push(child);\n\t } else if (child instanceof _parchment2.default.Container) {\n\t lines = lines.concat(getLines(child, index, lengthLeft));\n\t }\n\t lengthLeft -= length;\n\t });\n\t return lines;\n\t };\n\t return getLines(this, index, length);\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n\t if (this.batch === true) return;\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations);\n\t if (mutations.length > 0) {\n\t this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations);\n\t }\n\t }\n\t }, {\n\t key: 'path',\n\t value: function path(index) {\n\t return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(mutations) {\n\t if (this.batch === true) return;\n\t var source = _emitter2.default.sources.USER;\n\t if (typeof mutations === 'string') {\n\t source = mutations;\n\t }\n\t if (!Array.isArray(mutations)) {\n\t mutations = this.observer.takeRecords();\n\t }\n\t if (mutations.length > 0) {\n\t this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n\t }\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n\t if (mutations.length > 0) {\n\t this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n\t }\n\t }\n\t }]);\n\n\t return Scroll;\n\t}(_parchment2.default.Scroll);\n\n\tScroll.blotName = 'scroll';\n\tScroll.className = 'ql-editor';\n\tScroll.tagName = 'DIV';\n\tScroll.defaultChild = 'block';\n\tScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\n\texports.default = Scroll;\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tvar _align = __webpack_require__(45);\n\n\tvar _background = __webpack_require__(46);\n\n\tvar _color = __webpack_require__(47);\n\n\tvar _direction = __webpack_require__(48);\n\n\tvar _font = __webpack_require__(49);\n\n\tvar _size = __webpack_require__(50);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _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; }\n\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar debug = (0, _logger2.default)('quill:clipboard');\n\n\tvar DOM_KEY = '__ql-matcher';\n\n\tvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\n\tvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n\t memo[attr.keyName] = attr;\n\t return memo;\n\t}, {});\n\n\tvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n\t memo[attr.keyName] = attr;\n\t return memo;\n\t}, {});\n\n\tvar Clipboard = function (_Module) {\n\t _inherits(Clipboard, _Module);\n\n\t function Clipboard(quill, options) {\n\t _classCallCheck(this, Clipboard);\n\n\t var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n\t _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n\t _this.container = _this.quill.addContainer('ql-clipboard');\n\t _this.container.setAttribute('contenteditable', true);\n\t _this.container.setAttribute('tabindex', -1);\n\t _this.matchers = [];\n\t CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (pair) {\n\t _this.addMatcher.apply(_this, _toConsumableArray(pair));\n\t });\n\t return _this;\n\t }\n\n\t _createClass(Clipboard, [{\n\t key: 'addMatcher',\n\t value: function addMatcher(selector, matcher) {\n\t this.matchers.push([selector, matcher]);\n\t }\n\t }, {\n\t key: 'convert',\n\t value: function convert(html) {\n\t if (typeof html === 'string') {\n\t this.container.innerHTML = html;\n\t }\n\n\t var _prepareMatching = this.prepareMatching(),\n\t _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n\t elementMatchers = _prepareMatching2[0],\n\t textMatchers = _prepareMatching2[1];\n\n\t var delta = traverse(this.container, elementMatchers, textMatchers);\n\t // Remove trailing newline\n\t if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n\t }\n\t debug.log('convert', this.container.innerHTML, delta);\n\t this.container.innerHTML = '';\n\t return delta;\n\t }\n\t }, {\n\t key: 'dangerouslyPasteHTML',\n\t value: function dangerouslyPasteHTML(index, html) {\n\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n\t if (typeof index === 'string') {\n\t return this.quill.setContents(this.convert(index), html);\n\t } else {\n\t var paste = this.convert(html);\n\t return this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n\t }\n\t }\n\t }, {\n\t key: 'onPaste',\n\t value: function onPaste(e) {\n\t var _this2 = this;\n\n\t if (e.defaultPrevented || !this.quill.isEnabled()) return;\n\t var range = this.quill.getSelection();\n\t var delta = new _quillDelta2.default().retain(range.index);\n\t var scrollTop = this.quill.scrollingContainer.scrollTop;\n\t this.container.focus();\n\t setTimeout(function () {\n\t _this2.quill.selection.update(_quill2.default.sources.SILENT);\n\t delta = delta.concat(_this2.convert()).delete(range.length);\n\t _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n\t // range.length contributes to delta.length()\n\t _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n\t _this2.quill.scrollingContainer.scrollTop = scrollTop;\n\t _this2.quill.selection.scrollIntoView();\n\t }, 1);\n\t }\n\t }, {\n\t key: 'prepareMatching',\n\t value: function prepareMatching() {\n\t var _this3 = this;\n\n\t var elementMatchers = [],\n\t textMatchers = [];\n\t this.matchers.forEach(function (pair) {\n\t var _pair = _slicedToArray(pair, 2),\n\t selector = _pair[0],\n\t matcher = _pair[1];\n\n\t switch (selector) {\n\t case Node.TEXT_NODE:\n\t textMatchers.push(matcher);\n\t break;\n\t case Node.ELEMENT_NODE:\n\t elementMatchers.push(matcher);\n\t break;\n\t default:\n\t [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n\t // TODO use weakmap\n\t node[DOM_KEY] = node[DOM_KEY] || [];\n\t node[DOM_KEY].push(matcher);\n\t });\n\t break;\n\t }\n\t });\n\t return [elementMatchers, textMatchers];\n\t }\n\t }]);\n\n\t return Clipboard;\n\t}(_module2.default);\n\n\tClipboard.DEFAULTS = {\n\t matchers: []\n\t};\n\n\tfunction computeStyle(node) {\n\t if (node.nodeType !== Node.ELEMENT_NODE) return {};\n\t var DOM_KEY = '__ql-computed-style';\n\t return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n\t}\n\n\tfunction deltaEndsWith(delta, text) {\n\t var endText = \"\";\n\t for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n\t var op = delta.ops[i];\n\t if (typeof op.insert !== 'string') break;\n\t endText = op.insert + endText;\n\t }\n\t return endText.slice(-1 * text.length) === text;\n\t}\n\n\tfunction isLine(node) {\n\t if (node.childNodes.length === 0) return false; // Exclude embed blocks\n\t var style = computeStyle(node);\n\t return ['block', 'list-item'].indexOf(style.display) > -1;\n\t}\n\n\tfunction traverse(node, elementMatchers, textMatchers) {\n\t // Post-order\n\t if (node.nodeType === node.TEXT_NODE) {\n\t return textMatchers.reduce(function (delta, matcher) {\n\t return matcher(node, delta);\n\t }, new _quillDelta2.default());\n\t } else if (node.nodeType === node.ELEMENT_NODE) {\n\t return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n\t var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n\t if (childNode.nodeType === node.ELEMENT_NODE) {\n\t childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n\t return matcher(childNode, childrenDelta);\n\t }, childrenDelta);\n\t childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n\t return matcher(childNode, childrenDelta);\n\t }, childrenDelta);\n\t }\n\t return delta.concat(childrenDelta);\n\t }, new _quillDelta2.default());\n\t } else {\n\t return new _quillDelta2.default();\n\t }\n\t}\n\n\tfunction matchAlias(format, node, delta) {\n\t return delta.compose(new _quillDelta2.default().retain(delta.length(), _defineProperty({}, format, true)));\n\t}\n\n\tfunction matchAttributor(node, delta) {\n\t var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n\t var classes = _parchment2.default.Attributor.Class.keys(node);\n\t var styles = _parchment2.default.Attributor.Style.keys(node);\n\t var formats = {};\n\t attributes.concat(classes).concat(styles).forEach(function (name) {\n\t var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n\t if (attr != null) {\n\t formats[attr.attrName] = attr.value(node);\n\t if (formats[attr.attrName]) return;\n\t }\n\t if (ATTRIBUTE_ATTRIBUTORS[name] != null) {\n\t attr = ATTRIBUTE_ATTRIBUTORS[name];\n\t formats[attr.attrName] = attr.value(node) || undefined;\n\t }\n\t if (STYLE_ATTRIBUTORS[name] != null) {\n\t attr = STYLE_ATTRIBUTORS[name];\n\t formats[attr.attrName] = attr.value(node) || undefined;\n\t }\n\t });\n\t if (Object.keys(formats).length > 0) {\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t }\n\t return delta;\n\t}\n\n\tfunction matchBlot(node, delta) {\n\t var match = _parchment2.default.query(node);\n\t if (match == null) return delta;\n\t if (match.prototype instanceof _parchment2.default.Embed) {\n\t var embed = {};\n\t var value = match.value(node);\n\t if (value != null) {\n\t embed[match.blotName] = value;\n\t delta = new _quillDelta2.default().insert(embed, match.formats(node));\n\t }\n\t } else if (typeof match.formats === 'function') {\n\t var formats = _defineProperty({}, match.blotName, match.formats(node));\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t }\n\t return delta;\n\t}\n\n\tfunction matchBreak(node, delta) {\n\t if (!deltaEndsWith(delta, '\\n')) {\n\t delta.insert('\\n');\n\t }\n\t return delta;\n\t}\n\n\tfunction matchIgnore() {\n\t return new _quillDelta2.default();\n\t}\n\n\tfunction matchNewline(node, delta) {\n\t if (isLine(node) && !deltaEndsWith(delta, '\\n')) {\n\t delta.insert('\\n');\n\t }\n\t return delta;\n\t}\n\n\tfunction matchSpacing(node, delta) {\n\t if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n\t var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n\t if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n\t delta.insert('\\n');\n\t }\n\t }\n\t return delta;\n\t}\n\n\tfunction matchStyles(node, delta) {\n\t var formats = {};\n\t var style = node.style || {};\n\t if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n\t formats.italic = true;\n\t }\n\t if (style.fontWeight && computeStyle(node).fontWeight === 'bold') {\n\t formats.bold = true;\n\t }\n\t if (Object.keys(formats).length > 0) {\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t }\n\t if (parseFloat(style.textIndent || 0) > 0) {\n\t // Could be 0.5in\n\t delta = new _quillDelta2.default().insert('\\t').concat(delta);\n\t }\n\t return delta;\n\t}\n\n\tfunction matchText(node, delta) {\n\t var text = node.data;\n\t // Word represents empty line with \n\t if (node.parentNode.tagName === 'O:P') {\n\t return delta.insert(text.trim());\n\t }\n\t if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n\t // eslint-disable-next-line func-style\n\t var replacer = function replacer(collapse, match) {\n\t match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n\t return match.length < 1 && collapse ? ' ' : match;\n\t };\n\t text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n\t text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n\t if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n\t text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n\t }\n\t if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n\t text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n\t }\n\t }\n\t return delta.insert(text);\n\t}\n\n\texports.default = Clipboard;\n\texports.matchAttributor = matchAttributor;\n\texports.matchBlot = matchBlot;\n\texports.matchNewline = matchNewline;\n\texports.matchSpacing = matchSpacing;\n\texports.matchText = matchText;\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar config = {\n\t scope: _parchment2.default.Scope.BLOCK,\n\t whitelist: ['right', 'center', 'justify']\n\t};\n\n\tvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\n\tvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\n\tvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\n\texports.AlignAttribute = AlignAttribute;\n\texports.AlignClass = AlignClass;\n\texports.AlignStyle = AlignStyle;\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.BackgroundStyle = exports.BackgroundClass = undefined;\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _color = __webpack_require__(47);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\tvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\n\texports.BackgroundClass = BackgroundClass;\n\texports.BackgroundStyle = BackgroundStyle;\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ColorAttributor = function (_Parchment$Attributor) {\n\t _inherits(ColorAttributor, _Parchment$Attributor);\n\n\t function ColorAttributor() {\n\t _classCallCheck(this, ColorAttributor);\n\n\t return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n\t }\n\n\t _createClass(ColorAttributor, [{\n\t key: 'value',\n\t value: function value(domNode) {\n\t var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n\t if (!value.startsWith('rgb(')) return value;\n\t value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n\t return '#' + value.split(',').map(function (component) {\n\t return ('00' + parseInt(component).toString(16)).slice(-2);\n\t }).join('');\n\t }\n\t }]);\n\n\t return ColorAttributor;\n\t}(_parchment2.default.Attributor.Style);\n\n\tvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\tvar ColorStyle = new ColorAttributor('color', 'color', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\n\texports.ColorAttributor = ColorAttributor;\n\texports.ColorClass = ColorClass;\n\texports.ColorStyle = ColorStyle;\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar config = {\n\t scope: _parchment2.default.Scope.BLOCK,\n\t whitelist: ['rtl']\n\t};\n\n\tvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\n\tvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\n\tvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\n\texports.DirectionAttribute = DirectionAttribute;\n\texports.DirectionClass = DirectionClass;\n\texports.DirectionStyle = DirectionStyle;\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.FontClass = exports.FontStyle = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar config = {\n\t scope: _parchment2.default.Scope.INLINE,\n\t whitelist: ['serif', 'monospace']\n\t};\n\n\tvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\n\tvar FontStyleAttributor = function (_Parchment$Attributor) {\n\t _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n\t function FontStyleAttributor() {\n\t _classCallCheck(this, FontStyleAttributor);\n\n\t return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n\t }\n\n\t _createClass(FontStyleAttributor, [{\n\t key: 'value',\n\t value: function value(node) {\n\t return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n\t }\n\t }]);\n\n\t return FontStyleAttributor;\n\t}(_parchment2.default.Attributor.Style);\n\n\tvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\n\texports.FontStyle = FontStyle;\n\texports.FontClass = FontClass;\n\n/***/ },\n/* 50 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.SizeStyle = exports.SizeClass = undefined;\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n\t scope: _parchment2.default.Scope.INLINE,\n\t whitelist: ['small', 'large', 'huge']\n\t});\n\tvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n\t scope: _parchment2.default.Scope.INLINE,\n\t whitelist: ['10px', '18px', '32px']\n\t});\n\n\texports.SizeClass = SizeClass;\n\texports.SizeStyle = SizeStyle;\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.getLastChangeIndex = exports.default = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar History = function (_Module) {\n\t _inherits(History, _Module);\n\n\t function History(quill, options) {\n\t _classCallCheck(this, History);\n\n\t var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n\t _this.lastRecorded = 0;\n\t _this.ignoreChange = false;\n\t _this.clear();\n\t _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n\t if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n\t if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n\t _this.record(delta, oldDelta);\n\t } else {\n\t _this.transform(delta);\n\t }\n\t });\n\t _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n\t _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n\t if (/Win/i.test(navigator.platform)) {\n\t _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n\t }\n\t return _this;\n\t }\n\n\t _createClass(History, [{\n\t key: 'change',\n\t value: function change(source, dest) {\n\t if (this.stack[source].length === 0) return;\n\t var delta = this.stack[source].pop();\n\t this.lastRecorded = 0;\n\t this.ignoreChange = true;\n\t this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n\t this.ignoreChange = false;\n\t var index = getLastChangeIndex(delta[source]);\n\t this.quill.setSelection(index);\n\t this.quill.selection.scrollIntoView();\n\t this.stack[dest].push(delta);\n\t }\n\t }, {\n\t key: 'clear',\n\t value: function clear() {\n\t this.stack = { undo: [], redo: [] };\n\t }\n\t }, {\n\t key: 'record',\n\t value: function record(changeDelta, oldDelta) {\n\t if (changeDelta.ops.length === 0) return;\n\t this.stack.redo = [];\n\t var undoDelta = this.quill.getContents().diff(oldDelta);\n\t var timestamp = Date.now();\n\t if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n\t var delta = this.stack.undo.pop();\n\t undoDelta = undoDelta.compose(delta.undo);\n\t changeDelta = delta.redo.compose(changeDelta);\n\t } else {\n\t this.lastRecorded = timestamp;\n\t }\n\t this.stack.undo.push({\n\t redo: changeDelta,\n\t undo: undoDelta\n\t });\n\t if (this.stack.undo.length > this.options.maxStack) {\n\t this.stack.undo.shift();\n\t }\n\t }\n\t }, {\n\t key: 'redo',\n\t value: function redo() {\n\t this.change('redo', 'undo');\n\t }\n\t }, {\n\t key: 'transform',\n\t value: function transform(delta) {\n\t this.stack.undo.forEach(function (change) {\n\t change.undo = delta.transform(change.undo, true);\n\t change.redo = delta.transform(change.redo, true);\n\t });\n\t this.stack.redo.forEach(function (change) {\n\t change.undo = delta.transform(change.undo, true);\n\t change.redo = delta.transform(change.redo, true);\n\t });\n\t }\n\t }, {\n\t key: 'undo',\n\t value: function undo() {\n\t this.change('undo', 'redo');\n\t }\n\t }]);\n\n\t return History;\n\t}(_module2.default);\n\n\tHistory.DEFAULTS = {\n\t delay: 1000,\n\t maxStack: 100,\n\t userOnly: false\n\t};\n\n\tfunction endsWithNewlineChange(delta) {\n\t var lastOp = delta.ops[delta.ops.length - 1];\n\t if (lastOp == null) return false;\n\t if (lastOp.insert != null) {\n\t return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n\t }\n\t if (lastOp.attributes != null) {\n\t return Object.keys(lastOp.attributes).some(function (attr) {\n\t return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n\t });\n\t }\n\t return false;\n\t}\n\n\tfunction getLastChangeIndex(delta) {\n\t var deleteLength = delta.reduce(function (length, op) {\n\t length += op.delete || 0;\n\t return length;\n\t }, 0);\n\t var changeIndex = delta.length() - deleteLength;\n\t if (endsWithNewlineChange(delta)) {\n\t changeIndex -= 1;\n\t }\n\t return changeIndex;\n\t}\n\n\texports.default = History;\n\texports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _clone = __webpack_require__(38);\n\n\tvar _clone2 = _interopRequireDefault(_clone);\n\n\tvar _deepEqual = __webpack_require__(22);\n\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _op = __webpack_require__(26);\n\n\tvar _op2 = _interopRequireDefault(_op);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar debug = (0, _logger2.default)('quill:keyboard');\n\n\tvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n\tvar Keyboard = function (_Module) {\n\t _inherits(Keyboard, _Module);\n\n\t _createClass(Keyboard, null, [{\n\t key: 'match',\n\t value: function match(evt, binding) {\n\t binding = normalize(binding);\n\t if (!!binding.shortKey !== evt[SHORTKEY] && binding.shortKey !== null) return false;\n\t if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n\t return key != SHORTKEY && !!binding[key] !== evt[key] && binding[key] !== null;\n\t })) {\n\t return false;\n\t }\n\t return binding.key === (evt.which || evt.keyCode);\n\t }\n\t }]);\n\n\t function Keyboard(quill, options) {\n\t _classCallCheck(this, Keyboard);\n\n\t var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n\t _this.bindings = {};\n\t Object.keys(_this.options.bindings).forEach(function (name) {\n\t if (_this.options.bindings[name]) {\n\t _this.addBinding(_this.options.bindings[name]);\n\t }\n\t });\n\t _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n\t _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n\t if (/Firefox/i.test(navigator.userAgent)) {\n\t // Need to handle delete and backspace for Firefox in the general case #1171\n\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n\t } else {\n\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n\t }\n\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n\t _this.listen();\n\t return _this;\n\t }\n\n\t _createClass(Keyboard, [{\n\t key: 'addBinding',\n\t value: function addBinding(key) {\n\t var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\t var binding = normalize(key);\n\t if (binding == null || binding.key == null) {\n\t return debug.warn('Attempted to add invalid keyboard binding', binding);\n\t }\n\t if (typeof context === 'function') {\n\t context = { handler: context };\n\t }\n\t if (typeof handler === 'function') {\n\t handler = { handler: handler };\n\t }\n\t binding = (0, _extend2.default)(binding, context, handler);\n\t this.bindings[binding.key] = this.bindings[binding.key] || [];\n\t this.bindings[binding.key].push(binding);\n\t }\n\t }, {\n\t key: 'listen',\n\t value: function listen() {\n\t var _this2 = this;\n\n\t this.quill.root.addEventListener('keydown', function (evt) {\n\t if (evt.defaultPrevented) return;\n\t var which = evt.which || evt.keyCode;\n\t var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n\t return Keyboard.match(evt, binding);\n\t });\n\t if (bindings.length === 0) return;\n\t var range = _this2.quill.getSelection();\n\t if (range == null || !_this2.quill.hasFocus()) return;\n\n\t var _quill$getLine = _this2.quill.getLine(range.index),\n\t _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n\t line = _quill$getLine2[0],\n\t offset = _quill$getLine2[1];\n\n\t var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n\t _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n\t leafStart = _quill$getLeaf2[0],\n\t offsetStart = _quill$getLeaf2[1];\n\n\t var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n\t _ref2 = _slicedToArray(_ref, 2),\n\t leafEnd = _ref2[0],\n\t offsetEnd = _ref2[1];\n\n\t var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n\t var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n\t var curContext = {\n\t collapsed: range.length === 0,\n\t empty: range.length === 0 && line.length() <= 1,\n\t format: _this2.quill.getFormat(range),\n\t offset: offset,\n\t prefix: prefixText,\n\t suffix: suffixText\n\t };\n\t var prevented = bindings.some(function (binding) {\n\t if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n\t if (binding.empty != null && binding.empty !== curContext.empty) return false;\n\t if (binding.offset != null && binding.offset !== curContext.offset) return false;\n\t if (Array.isArray(binding.format)) {\n\t // any format is present\n\t if (binding.format.every(function (name) {\n\t return curContext.format[name] == null;\n\t })) {\n\t return false;\n\t }\n\t } else if (_typeof(binding.format) === 'object') {\n\t // all formats must match\n\t if (!Object.keys(binding.format).every(function (name) {\n\t if (binding.format[name] === true) return curContext.format[name] != null;\n\t if (binding.format[name] === false) return curContext.format[name] == null;\n\t return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n\t })) {\n\t return false;\n\t }\n\t }\n\t if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n\t if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n\t return binding.handler.call(_this2, range, curContext) !== true;\n\t });\n\t if (prevented) {\n\t evt.preventDefault();\n\t }\n\t });\n\t }\n\t }]);\n\n\t return Keyboard;\n\t}(_module2.default);\n\n\tKeyboard.keys = {\n\t BACKSPACE: 8,\n\t TAB: 9,\n\t ENTER: 13,\n\t ESCAPE: 27,\n\t LEFT: 37,\n\t UP: 38,\n\t RIGHT: 39,\n\t DOWN: 40,\n\t DELETE: 46\n\t};\n\n\tKeyboard.DEFAULTS = {\n\t bindings: {\n\t 'bold': makeFormatHandler('bold'),\n\t 'italic': makeFormatHandler('italic'),\n\t 'underline': makeFormatHandler('underline'),\n\t 'indent': {\n\t // highlight tab or tab at beginning of list, indent or blockquote\n\t key: Keyboard.keys.TAB,\n\t format: ['blockquote', 'indent', 'list'],\n\t handler: function handler(range, context) {\n\t if (context.collapsed && context.offset !== 0) return true;\n\t this.quill.format('indent', '+1', _quill2.default.sources.USER);\n\t }\n\t },\n\t 'outdent': {\n\t key: Keyboard.keys.TAB,\n\t shiftKey: true,\n\t format: ['blockquote', 'indent', 'list'],\n\t // highlight tab or tab at beginning of list, indent or blockquote\n\t handler: function handler(range, context) {\n\t if (context.collapsed && context.offset !== 0) return true;\n\t this.quill.format('indent', '-1', _quill2.default.sources.USER);\n\t }\n\t },\n\t 'outdent backspace': {\n\t key: Keyboard.keys.BACKSPACE,\n\t collapsed: true,\n\t format: ['blockquote', 'indent', 'list'],\n\t offset: 0,\n\t handler: function handler(range, context) {\n\t if (context.format.indent != null) {\n\t this.quill.format('indent', '-1', _quill2.default.sources.USER);\n\t } else if (context.format.blockquote != null) {\n\t this.quill.format('blockquote', false, _quill2.default.sources.USER);\n\t } else if (context.format.list != null) {\n\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t }\n\t }\n\t },\n\t 'indent code-block': makeCodeBlockHandler(true),\n\t 'outdent code-block': makeCodeBlockHandler(false),\n\t 'remove tab': {\n\t key: Keyboard.keys.TAB,\n\t shiftKey: true,\n\t collapsed: true,\n\t prefix: /\\t$/,\n\t handler: function handler(range) {\n\t this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n\t }\n\t },\n\t 'tab': {\n\t key: Keyboard.keys.TAB,\n\t handler: function handler(range, context) {\n\t if (!context.collapsed) {\n\t this.quill.scroll.deleteAt(range.index, range.length);\n\t }\n\t this.quill.insertText(range.index, '\\t', _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t }\n\t },\n\t 'list empty enter': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: ['list'],\n\t empty: true,\n\t handler: function handler(range, context) {\n\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t if (context.format.indent) {\n\t this.quill.format('indent', false, _quill2.default.sources.USER);\n\t }\n\t }\n\t },\n\t 'checklist enter': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: { list: 'checked' },\n\t handler: function handler(range) {\n\t this.quill.scroll.insertAt(range.index, '\\n');\n\n\t var _quill$getLine3 = this.quill.getLine(range.index + 1),\n\t _quill$getLine4 = _slicedToArray(_quill$getLine3, 1),\n\t line = _quill$getLine4[0];\n\n\t line.format('list', 'unchecked');\n\t this.quill.update(_quill2.default.sources.USER);\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t }\n\t },\n\t 'header enter': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: ['header'],\n\t suffix: /^$/,\n\t handler: function handler(range) {\n\t this.quill.scroll.insertAt(range.index, '\\n');\n\t this.quill.formatText(range.index + 1, 1, 'header', false, _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t }\n\t },\n\t 'list autofill': {\n\t key: ' ',\n\t collapsed: true,\n\t format: { list: false },\n\t prefix: /^(1\\.|-)$/,\n\t handler: function handler(range, context) {\n\t if (this.quill.scroll.whitelist != null && !this.quill.scroll.whitelist['list']) return true;\n\t var length = context.prefix.length;\n\t this.quill.scroll.deleteAt(range.index - length, length);\n\t this.quill.formatLine(range.index - length, 1, 'list', length === 1 ? 'bullet' : 'ordered', _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n\t }\n\t },\n\t 'code exit': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: ['code-block'],\n\t prefix: /\\n\\n$/,\n\t suffix: /^\\s+$/,\n\t handler: function handler(range) {\n\t this.quill.format('code-block', false, _quill2.default.sources.USER);\n\t this.quill.deleteText(range.index - 2, 1, _quill2.default.sources.USER);\n\t }\n\t }\n\t }\n\t};\n\n\tfunction handleBackspace(range, context) {\n\t if (range.index === 0) return;\n\n\t var _quill$getLine5 = this.quill.getLine(range.index),\n\t _quill$getLine6 = _slicedToArray(_quill$getLine5, 1),\n\t line = _quill$getLine6[0];\n\n\t var formats = {};\n\t if (context.offset === 0) {\n\t var curFormats = line.formats();\n\t var prevFormats = this.quill.getFormat(range.index - 1, 1);\n\t formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n\t }\n\t // Check for astral symbols\n\t var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n\t this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n\t if (Object.keys(formats).length > 0) {\n\t this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n\t }\n\t this.quill.selection.scrollIntoView();\n\t}\n\n\tfunction handleDelete(range, context) {\n\t // Check for astral symbols\n\t var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n\t if (range.index >= this.quill.getLength() - length) return;\n\t this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n\t}\n\n\tfunction handleDeleteRange(range) {\n\t this.quill.deleteText(range, _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t}\n\n\tfunction handleEnter(range, context) {\n\t var _this3 = this;\n\n\t if (range.length > 0) {\n\t this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n\t }\n\t var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n\t if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n\t lineFormats[format] = context.format[format];\n\t }\n\t return lineFormats;\n\t }, {});\n\t this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n\t // Earlier scroll.deleteAt might have messed up our selection,\n\t // so insertText's built in selection preservation is not reliable\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t Object.keys(context.format).forEach(function (name) {\n\t if (lineFormats[name] != null) return;\n\t if (Array.isArray(context.format[name])) return;\n\t if (name === 'link') return;\n\t _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n\t });\n\t}\n\n\tfunction makeCodeBlockHandler(indent) {\n\t return {\n\t key: Keyboard.keys.TAB,\n\t shiftKey: !indent,\n\t format: { 'code-block': true },\n\t handler: function handler(range) {\n\t var CodeBlock = _parchment2.default.query('code-block');\n\t var index = range.index,\n\t length = range.length;\n\n\t var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n\t _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n\t block = _quill$scroll$descend2[0],\n\t offset = _quill$scroll$descend2[1];\n\n\t if (block == null) return;\n\t var scrollIndex = this.quill.getIndex(block);\n\t var start = block.newlineIndex(offset, true) + 1;\n\t var end = block.newlineIndex(scrollIndex + offset + length);\n\t var lines = block.domNode.textContent.slice(start, end).split('\\n');\n\t offset = 0;\n\t lines.forEach(function (line, i) {\n\t if (indent) {\n\t block.insertAt(start + offset, CodeBlock.TAB);\n\t offset += CodeBlock.TAB.length;\n\t if (i === 0) {\n\t index += CodeBlock.TAB.length;\n\t } else {\n\t length += CodeBlock.TAB.length;\n\t }\n\t } else if (line.startsWith(CodeBlock.TAB)) {\n\t block.deleteAt(start + offset, CodeBlock.TAB.length);\n\t offset -= CodeBlock.TAB.length;\n\t if (i === 0) {\n\t index -= CodeBlock.TAB.length;\n\t } else {\n\t length -= CodeBlock.TAB.length;\n\t }\n\t }\n\t offset += line.length + 1;\n\t });\n\t this.quill.update(_quill2.default.sources.USER);\n\t this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n\t }\n\t };\n\t}\n\n\tfunction makeFormatHandler(format) {\n\t return {\n\t key: format[0].toUpperCase(),\n\t shortKey: true,\n\t handler: function handler(range, context) {\n\t this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n\t }\n\t };\n\t}\n\n\tfunction normalize(binding) {\n\t if (typeof binding === 'string' || typeof binding === 'number') {\n\t return normalize({ key: binding });\n\t }\n\t if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n\t binding = (0, _clone2.default)(binding, false);\n\t }\n\t if (typeof binding.key === 'string') {\n\t if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n\t binding.key = Keyboard.keys[binding.key.toUpperCase()];\n\t } else if (binding.key.length === 1) {\n\t binding.key = binding.key.toUpperCase().charCodeAt(0);\n\t } else {\n\t return null;\n\t }\n\t }\n\t return binding;\n\t}\n\n\texports.default = Keyboard;\n\n/***/ },\n/* 53 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _core = __webpack_require__(1);\n\n\tvar _core2 = _interopRequireDefault(_core);\n\n\tvar _align = __webpack_require__(45);\n\n\tvar _direction = __webpack_require__(48);\n\n\tvar _indent = __webpack_require__(54);\n\n\tvar _blockquote = __webpack_require__(55);\n\n\tvar _blockquote2 = _interopRequireDefault(_blockquote);\n\n\tvar _header = __webpack_require__(56);\n\n\tvar _header2 = _interopRequireDefault(_header);\n\n\tvar _list = __webpack_require__(57);\n\n\tvar _list2 = _interopRequireDefault(_list);\n\n\tvar _background = __webpack_require__(46);\n\n\tvar _color = __webpack_require__(47);\n\n\tvar _font = __webpack_require__(49);\n\n\tvar _size = __webpack_require__(50);\n\n\tvar _bold = __webpack_require__(58);\n\n\tvar _bold2 = _interopRequireDefault(_bold);\n\n\tvar _italic = __webpack_require__(59);\n\n\tvar _italic2 = _interopRequireDefault(_italic);\n\n\tvar _link = __webpack_require__(60);\n\n\tvar _link2 = _interopRequireDefault(_link);\n\n\tvar _script = __webpack_require__(61);\n\n\tvar _script2 = _interopRequireDefault(_script);\n\n\tvar _strike = __webpack_require__(62);\n\n\tvar _strike2 = _interopRequireDefault(_strike);\n\n\tvar _underline = __webpack_require__(63);\n\n\tvar _underline2 = _interopRequireDefault(_underline);\n\n\tvar _image = __webpack_require__(64);\n\n\tvar _image2 = _interopRequireDefault(_image);\n\n\tvar _video = __webpack_require__(65);\n\n\tvar _video2 = _interopRequireDefault(_video);\n\n\tvar _code = __webpack_require__(28);\n\n\tvar _code2 = _interopRequireDefault(_code);\n\n\tvar _formula = __webpack_require__(66);\n\n\tvar _formula2 = _interopRequireDefault(_formula);\n\n\tvar _syntax = __webpack_require__(67);\n\n\tvar _syntax2 = _interopRequireDefault(_syntax);\n\n\tvar _toolbar = __webpack_require__(68);\n\n\tvar _toolbar2 = _interopRequireDefault(_toolbar);\n\n\tvar _icons = __webpack_require__(69);\n\n\tvar _icons2 = _interopRequireDefault(_icons);\n\n\tvar _picker = __webpack_require__(102);\n\n\tvar _picker2 = _interopRequireDefault(_picker);\n\n\tvar _colorPicker = __webpack_require__(104);\n\n\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\n\tvar _iconPicker = __webpack_require__(105);\n\n\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\n\tvar _tooltip = __webpack_require__(106);\n\n\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\n\tvar _bubble = __webpack_require__(107);\n\n\tvar _bubble2 = _interopRequireDefault(_bubble);\n\n\tvar _snow = __webpack_require__(109);\n\n\tvar _snow2 = _interopRequireDefault(_snow);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\t_core2.default.register({\n\t 'attributors/attribute/direction': _direction.DirectionAttribute,\n\n\t 'attributors/class/align': _align.AlignClass,\n\t 'attributors/class/background': _background.BackgroundClass,\n\t 'attributors/class/color': _color.ColorClass,\n\t 'attributors/class/direction': _direction.DirectionClass,\n\t 'attributors/class/font': _font.FontClass,\n\t 'attributors/class/size': _size.SizeClass,\n\n\t 'attributors/style/align': _align.AlignStyle,\n\t 'attributors/style/background': _background.BackgroundStyle,\n\t 'attributors/style/color': _color.ColorStyle,\n\t 'attributors/style/direction': _direction.DirectionStyle,\n\t 'attributors/style/font': _font.FontStyle,\n\t 'attributors/style/size': _size.SizeStyle\n\t}, true);\n\n\t_core2.default.register({\n\t 'formats/align': _align.AlignClass,\n\t 'formats/direction': _direction.DirectionClass,\n\t 'formats/indent': _indent.IndentClass,\n\n\t 'formats/background': _background.BackgroundStyle,\n\t 'formats/color': _color.ColorStyle,\n\t 'formats/font': _font.FontClass,\n\t 'formats/size': _size.SizeClass,\n\n\t 'formats/blockquote': _blockquote2.default,\n\t 'formats/code-block': _code2.default,\n\t 'formats/header': _header2.default,\n\t 'formats/list': _list2.default,\n\n\t 'formats/bold': _bold2.default,\n\t 'formats/code': _code.Code,\n\t 'formats/italic': _italic2.default,\n\t 'formats/link': _link2.default,\n\t 'formats/script': _script2.default,\n\t 'formats/strike': _strike2.default,\n\t 'formats/underline': _underline2.default,\n\n\t 'formats/image': _image2.default,\n\t 'formats/video': _video2.default,\n\n\t 'formats/list/item': _list.ListItem,\n\n\t 'modules/formula': _formula2.default,\n\t 'modules/syntax': _syntax2.default,\n\t 'modules/toolbar': _toolbar2.default,\n\n\t 'themes/bubble': _bubble2.default,\n\t 'themes/snow': _snow2.default,\n\n\t 'ui/icons': _icons2.default,\n\t 'ui/picker': _picker2.default,\n\t 'ui/icon-picker': _iconPicker2.default,\n\t 'ui/color-picker': _colorPicker2.default,\n\t 'ui/tooltip': _tooltip2.default\n\t}, true);\n\n\tmodule.exports = _core2.default;\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.IndentClass = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar IdentAttributor = function (_Parchment$Attributor) {\n\t _inherits(IdentAttributor, _Parchment$Attributor);\n\n\t function IdentAttributor() {\n\t _classCallCheck(this, IdentAttributor);\n\n\t return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n\t }\n\n\t _createClass(IdentAttributor, [{\n\t key: 'add',\n\t value: function add(node, value) {\n\t if (value === '+1' || value === '-1') {\n\t var indent = this.value(node) || 0;\n\t value = value === '+1' ? indent + 1 : indent - 1;\n\t }\n\t if (value === 0) {\n\t this.remove(node);\n\t return true;\n\t } else {\n\t return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n\t }\n\t }\n\t }, {\n\t key: 'canAdd',\n\t value: function canAdd(node, value) {\n\t return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(node) {\n\t return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n\t }\n\t }]);\n\n\t return IdentAttributor;\n\t}(_parchment2.default.Attributor.Class);\n\n\tvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n\t scope: _parchment2.default.Scope.BLOCK,\n\t whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n\t});\n\n\texports.IndentClass = IndentClass;\n\n/***/ },\n/* 55 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Blockquote = function (_Block) {\n\t _inherits(Blockquote, _Block);\n\n\t function Blockquote() {\n\t _classCallCheck(this, Blockquote);\n\n\t return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n\t }\n\n\t return Blockquote;\n\t}(_block2.default);\n\n\tBlockquote.blotName = 'blockquote';\n\tBlockquote.tagName = 'blockquote';\n\n\texports.default = Blockquote;\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Header = function (_Block) {\n\t _inherits(Header, _Block);\n\n\t function Header() {\n\t _classCallCheck(this, Header);\n\n\t return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n\t }\n\n\t _createClass(Header, null, [{\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return this.tagName.indexOf(domNode.tagName) + 1;\n\t }\n\t }]);\n\n\t return Header;\n\t}(_block2.default);\n\n\tHeader.blotName = 'header';\n\tHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\n\texports.default = Header;\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.ListItem = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _block2 = _interopRequireDefault(_block);\n\n\tvar _container = __webpack_require__(42);\n\n\tvar _container2 = _interopRequireDefault(_container);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _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; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ListItem = function (_Block) {\n\t _inherits(ListItem, _Block);\n\n\t function ListItem() {\n\t _classCallCheck(this, ListItem);\n\n\t return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n\t }\n\n\t _createClass(ListItem, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (name === List.blotName && !value) {\n\t this.replaceWith(_parchment2.default.create(this.statics.scope));\n\t } else {\n\t _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n\t }\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove() {\n\t if (this.prev == null && this.next == null) {\n\t this.parent.remove();\n\t } else {\n\t _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n\t }\n\t }\n\t }, {\n\t key: 'replaceWith',\n\t value: function replaceWith(name, value) {\n\t this.parent.isolate(this.offset(this.parent), this.length());\n\t if (name === this.parent.statics.blotName) {\n\t this.parent.replaceWith(name, value);\n\t return this;\n\t } else {\n\t this.parent.unwrap();\n\t return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n\t }\n\t }\n\t }], [{\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n\t }\n\t }]);\n\n\t return ListItem;\n\t}(_block2.default);\n\n\tListItem.blotName = 'list-item';\n\tListItem.tagName = 'LI';\n\n\tvar List = function (_Container) {\n\t _inherits(List, _Container);\n\n\t _createClass(List, null, [{\n\t key: 'create',\n\t value: function create(value) {\n\t var tagName = value === 'ordered' ? 'OL' : 'UL';\n\t var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n\t if (value === 'checked' || value === 'unchecked') {\n\t node.setAttribute('data-checked', value === 'checked');\n\t }\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t if (domNode.tagName === 'OL') return 'ordered';\n\t if (domNode.tagName === 'UL') {\n\t if (domNode.hasAttribute('data-checked')) {\n\t return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n\t } else {\n\t return 'bullet';\n\t }\n\t }\n\t return undefined;\n\t }\n\t }]);\n\n\t function List(domNode) {\n\t _classCallCheck(this, List);\n\n\t var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n\t domNode.addEventListener('click', function (e) {\n\t if (e.target.parentNode !== domNode) return;\n\t var format = _this2.statics.formats(domNode);\n\t var blot = _parchment2.default.find(e.target);\n\t if (format === 'checked') {\n\t blot.format('list', 'unchecked');\n\t } else if (format === 'unchecked') {\n\t blot.format('list', 'checked');\n\t }\n\t });\n\t return _this2;\n\t }\n\n\t _createClass(List, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (this.children.length > 0) {\n\t this.children.tail.format(name, value);\n\t }\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats() {\n\t // We don't inherit from FormatBlot\n\t return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n\t }\n\t }, {\n\t key: 'insertBefore',\n\t value: function insertBefore(blot, ref) {\n\t if (blot instanceof ListItem) {\n\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n\t } else {\n\t var index = ref == null ? this.length() : ref.offset(this);\n\t var after = this.split(index);\n\t after.parent.insertBefore(blot, after);\n\t }\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this);\n\t var next = this.next;\n\t if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n\t next.moveChildren(this);\n\t next.remove();\n\t }\n\t }\n\t }, {\n\t key: 'replace',\n\t value: function replace(target) {\n\t if (target.statics.blotName !== this.statics.blotName) {\n\t var item = _parchment2.default.create(this.statics.defaultChild);\n\t target.moveChildren(item);\n\t this.appendChild(item);\n\t }\n\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n\t }\n\t }]);\n\n\t return List;\n\t}(_container2.default);\n\n\tList.blotName = 'list';\n\tList.scope = _parchment2.default.Scope.BLOCK_BLOT;\n\tList.tagName = ['OL', 'UL'];\n\tList.defaultChild = 'list-item';\n\tList.allowedChildren = [ListItem];\n\n\texports.ListItem = ListItem;\n\texports.default = List;\n\n/***/ },\n/* 58 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Bold = function (_Inline) {\n\t _inherits(Bold, _Inline);\n\n\t function Bold() {\n\t _classCallCheck(this, Bold);\n\n\t return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n\t }\n\n\t _createClass(Bold, [{\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this);\n\t if (this.domNode.tagName !== this.statics.tagName[0]) {\n\t this.replaceWith(this.statics.blotName);\n\t }\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create() {\n\t return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats() {\n\t return true;\n\t }\n\t }]);\n\n\t return Bold;\n\t}(_inline2.default);\n\n\tBold.blotName = 'bold';\n\tBold.tagName = ['STRONG', 'B'];\n\n\texports.default = Bold;\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _bold = __webpack_require__(58);\n\n\tvar _bold2 = _interopRequireDefault(_bold);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Italic = function (_Bold) {\n\t _inherits(Italic, _Bold);\n\n\t function Italic() {\n\t _classCallCheck(this, Italic);\n\n\t return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n\t }\n\n\t return Italic;\n\t}(_bold2.default);\n\n\tItalic.blotName = 'italic';\n\tItalic.tagName = ['EM', 'I'];\n\n\texports.default = Italic;\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.sanitize = exports.default = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Link = function (_Inline) {\n\t _inherits(Link, _Inline);\n\n\t function Link() {\n\t _classCallCheck(this, Link);\n\n\t return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n\t }\n\n\t _createClass(Link, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n\t value = this.constructor.sanitize(value);\n\t this.domNode.setAttribute('href', value);\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n\t value = this.sanitize(value);\n\t node.setAttribute('href', value);\n\t node.setAttribute('target', '_blank');\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return domNode.getAttribute('href');\n\t }\n\t }, {\n\t key: 'sanitize',\n\t value: function sanitize(url) {\n\t return _sanitize(url, ['http', 'https', 'mailto']) ? url : this.SANITIZED_URL;\n\t }\n\t }]);\n\n\t return Link;\n\t}(_inline2.default);\n\n\tLink.blotName = 'link';\n\tLink.tagName = 'A';\n\tLink.SANITIZED_URL = 'about:blank';\n\n\tfunction _sanitize(url, protocols) {\n\t var anchor = document.createElement('a');\n\t anchor.href = url;\n\t var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n\t return protocols.indexOf(protocol) > -1;\n\t}\n\n\texports.default = Link;\n\texports.sanitize = _sanitize;\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Script = function (_Inline) {\n\t _inherits(Script, _Inline);\n\n\t function Script() {\n\t _classCallCheck(this, Script);\n\n\t return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n\t }\n\n\t _createClass(Script, null, [{\n\t key: 'create',\n\t value: function create(value) {\n\t if (value === 'super') {\n\t return document.createElement('sup');\n\t } else if (value === 'sub') {\n\t return document.createElement('sub');\n\t } else {\n\t return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n\t }\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t if (domNode.tagName === 'SUB') return 'sub';\n\t if (domNode.tagName === 'SUP') return 'super';\n\t return undefined;\n\t }\n\t }]);\n\n\t return Script;\n\t}(_inline2.default);\n\n\tScript.blotName = 'script';\n\tScript.tagName = ['SUB', 'SUP'];\n\n\texports.default = Script;\n\n/***/ },\n/* 62 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Strike = function (_Inline) {\n\t _inherits(Strike, _Inline);\n\n\t function Strike() {\n\t _classCallCheck(this, Strike);\n\n\t return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n\t }\n\n\t return Strike;\n\t}(_inline2.default);\n\n\tStrike.blotName = 'strike';\n\tStrike.tagName = 'S';\n\n\texports.default = Strike;\n\n/***/ },\n/* 63 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _inline = __webpack_require__(32);\n\n\tvar _inline2 = _interopRequireDefault(_inline);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar Underline = function (_Inline) {\n\t _inherits(Underline, _Inline);\n\n\t function Underline() {\n\t _classCallCheck(this, Underline);\n\n\t return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n\t }\n\n\t return Underline;\n\t}(_inline2.default);\n\n\tUnderline.blotName = 'underline';\n\tUnderline.tagName = 'U';\n\n\texports.default = Underline;\n\n/***/ },\n/* 64 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _link = __webpack_require__(60);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ATTRIBUTES = ['alt', 'height', 'width'];\n\n\tvar Image = function (_Embed) {\n\t _inherits(Image, _Embed);\n\n\t function Image() {\n\t _classCallCheck(this, Image);\n\n\t return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n\t }\n\n\t _createClass(Image, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (ATTRIBUTES.indexOf(name) > -1) {\n\t if (value) {\n\t this.domNode.setAttribute(name, value);\n\t } else {\n\t this.domNode.removeAttribute(name);\n\t }\n\t } else {\n\t _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n\t }\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n\t if (typeof value === 'string') {\n\t node.setAttribute('src', this.sanitize(value));\n\t }\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return ATTRIBUTES.reduce(function (formats, attribute) {\n\t if (domNode.hasAttribute(attribute)) {\n\t formats[attribute] = domNode.getAttribute(attribute);\n\t }\n\t return formats;\n\t }, {});\n\t }\n\t }, {\n\t key: 'match',\n\t value: function match(url) {\n\t return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n\t );\n\t }\n\t }, {\n\t key: 'sanitize',\n\t value: function sanitize(url) {\n\t return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(domNode) {\n\t return domNode.getAttribute('src');\n\t }\n\t }]);\n\n\t return Image;\n\t}(_embed2.default);\n\n\tImage.blotName = 'image';\n\tImage.tagName = 'IMG';\n\n\texports.default = Image;\n\n/***/ },\n/* 65 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _block = __webpack_require__(29);\n\n\tvar _link = __webpack_require__(60);\n\n\tvar _link2 = _interopRequireDefault(_link);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ATTRIBUTES = ['height', 'width'];\n\n\tvar Video = function (_BlockEmbed) {\n\t _inherits(Video, _BlockEmbed);\n\n\t function Video() {\n\t _classCallCheck(this, Video);\n\n\t return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n\t }\n\n\t _createClass(Video, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (ATTRIBUTES.indexOf(name) > -1) {\n\t if (value) {\n\t this.domNode.setAttribute(name, value);\n\t } else {\n\t this.domNode.removeAttribute(name);\n\t }\n\t } else {\n\t _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n\t }\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n\t node.setAttribute('frameborder', '0');\n\t node.setAttribute('allowfullscreen', true);\n\t node.setAttribute('src', this.sanitize(value));\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return ATTRIBUTES.reduce(function (formats, attribute) {\n\t if (domNode.hasAttribute(attribute)) {\n\t formats[attribute] = domNode.getAttribute(attribute);\n\t }\n\t return formats;\n\t }, {});\n\t }\n\t }, {\n\t key: 'sanitize',\n\t value: function sanitize(url) {\n\t return _link2.default.sanitize(url);\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(domNode) {\n\t return domNode.getAttribute('src');\n\t }\n\t }]);\n\n\t return Video;\n\t}(_block.BlockEmbed);\n\n\tVideo.blotName = 'video';\n\tVideo.className = 'ql-video';\n\tVideo.tagName = 'IFRAME';\n\n\texports.default = Video;\n\n/***/ },\n/* 66 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.FormulaBlot = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _embed = __webpack_require__(31);\n\n\tvar _embed2 = _interopRequireDefault(_embed);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar FormulaBlot = function (_Embed) {\n\t _inherits(FormulaBlot, _Embed);\n\n\t function FormulaBlot() {\n\t _classCallCheck(this, FormulaBlot);\n\n\t return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n\t }\n\n\t _createClass(FormulaBlot, [{\n\t key: 'index',\n\t value: function index() {\n\t return 1;\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n\t if (typeof value === 'string') {\n\t window.katex.render(value, node);\n\t node.setAttribute('data-value', value);\n\t }\n\t node.setAttribute('contenteditable', false);\n\t return node;\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(domNode) {\n\t return domNode.getAttribute('data-value');\n\t }\n\t }]);\n\n\t return FormulaBlot;\n\t}(_embed2.default);\n\n\tFormulaBlot.blotName = 'formula';\n\tFormulaBlot.className = 'ql-formula';\n\tFormulaBlot.tagName = 'SPAN';\n\n\tfunction Formula() {\n\t if (window.katex == null) {\n\t throw new Error('Formula module requires KaTeX.');\n\t }\n\t _quill2.default.register(FormulaBlot, true);\n\t}\n\n\texports.FormulaBlot = FormulaBlot;\n\texports.default = Formula;\n\n/***/ },\n/* 67 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tvar _code = __webpack_require__(28);\n\n\tvar _code2 = _interopRequireDefault(_code);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar SyntaxCodeBlock = function (_CodeBlock) {\n\t _inherits(SyntaxCodeBlock, _CodeBlock);\n\n\t function SyntaxCodeBlock() {\n\t _classCallCheck(this, SyntaxCodeBlock);\n\n\t return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n\t }\n\n\t _createClass(SyntaxCodeBlock, [{\n\t key: 'replaceWith',\n\t value: function replaceWith(block) {\n\t this.domNode.textContent = this.domNode.textContent;\n\t this.attach();\n\t _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n\t }\n\t }, {\n\t key: 'highlight',\n\t value: function highlight(_highlight) {\n\t if (this.cachedHTML !== this.domNode.innerHTML) {\n\t var text = this.domNode.textContent;\n\t if (text.trim().length > 0 || this.cachedHTML == null) {\n\t this.domNode.innerHTML = _highlight(text);\n\t this.attach();\n\t }\n\t this.cachedHTML = this.domNode.innerHTML;\n\t }\n\t }\n\t }]);\n\n\t return SyntaxCodeBlock;\n\t}(_code2.default);\n\n\tSyntaxCodeBlock.className = 'ql-syntax';\n\n\tvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\n\tvar Syntax = function (_Module) {\n\t _inherits(Syntax, _Module);\n\n\t function Syntax(quill, options) {\n\t _classCallCheck(this, Syntax);\n\n\t var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n\t if (typeof _this2.options.highlight !== 'function') {\n\t throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n\t }\n\t _quill2.default.register(CodeToken, true);\n\t _quill2.default.register(SyntaxCodeBlock, true);\n\t var timer = null;\n\t _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n\t if (timer != null) return;\n\t timer = setTimeout(function () {\n\t _this2.highlight();\n\t timer = null;\n\t }, 100);\n\t });\n\t _this2.highlight();\n\t return _this2;\n\t }\n\n\t _createClass(Syntax, [{\n\t key: 'highlight',\n\t value: function highlight() {\n\t var _this3 = this;\n\n\t if (this.quill.selection.composing) return;\n\t var range = this.quill.getSelection();\n\t this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n\t code.highlight(_this3.options.highlight);\n\t });\n\t this.quill.update(_quill2.default.sources.SILENT);\n\t if (range != null) {\n\t this.quill.setSelection(range, _quill2.default.sources.SILENT);\n\t }\n\t }\n\t }]);\n\n\t return Syntax;\n\t}(_module2.default);\n\n\tSyntax.DEFAULTS = {\n\t highlight: function () {\n\t if (window.hljs == null) return null;\n\t return function (text) {\n\t var result = window.hljs.highlightAuto(text);\n\t return result.value;\n\t };\n\t }()\n\t};\n\n\texports.CodeBlock = SyntaxCodeBlock;\n\texports.CodeToken = CodeToken;\n\texports.default = Syntax;\n\n/***/ },\n/* 68 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.addControls = exports.default = undefined;\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _parchment = __webpack_require__(2);\n\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\n\tvar _quill = __webpack_require__(18);\n\n\tvar _quill2 = _interopRequireDefault(_quill);\n\n\tvar _logger = __webpack_require__(37);\n\n\tvar _logger2 = _interopRequireDefault(_logger);\n\n\tvar _module = __webpack_require__(39);\n\n\tvar _module2 = _interopRequireDefault(_module);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _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; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar debug = (0, _logger2.default)('quill:toolbar');\n\n\tvar Toolbar = function (_Module) {\n\t _inherits(Toolbar, _Module);\n\n\t function Toolbar(quill, options) {\n\t _classCallCheck(this, Toolbar);\n\n\t var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n\t if (Array.isArray(_this.options.container)) {\n\t var container = document.createElement('div');\n\t addControls(container, _this.options.container);\n\t quill.container.parentNode.insertBefore(container, quill.container);\n\t _this.container = container;\n\t } else if (typeof _this.options.container === 'string') {\n\t _this.container = document.querySelector(_this.options.container);\n\t } else {\n\t _this.container = _this.options.container;\n\t }\n\t if (!(_this.container instanceof HTMLElement)) {\n\t var _ret;\n\n\t return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n\t }\n\t _this.container.classList.add('ql-toolbar');\n\t _this.controls = [];\n\t _this.handlers = {};\n\t Object.keys(_this.options.handlers).forEach(function (format) {\n\t _this.addHandler(format, _this.options.handlers[format]);\n\t });\n\t [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n\t _this.attach(input);\n\t });\n\t _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n\t if (type === _quill2.default.events.SELECTION_CHANGE) {\n\t _this.update(range);\n\t }\n\t });\n\t _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n\t var _this$quill$selection = _this.quill.selection.getRange(),\n\t _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n\t range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n\t _this.update(range);\n\t });\n\t return _this;\n\t }\n\n\t _createClass(Toolbar, [{\n\t key: 'addHandler',\n\t value: function addHandler(format, handler) {\n\t this.handlers[format] = handler;\n\t }\n\t }, {\n\t key: 'attach',\n\t value: function attach(input) {\n\t var _this2 = this;\n\n\t var format = [].find.call(input.classList, function (className) {\n\t return className.indexOf('ql-') === 0;\n\t });\n\t if (!format) return;\n\t format = format.slice('ql-'.length);\n\t if (input.tagName === 'BUTTON') {\n\t input.setAttribute('type', 'button');\n\t }\n\t if (this.handlers[format] == null) {\n\t if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n\t debug.warn('ignoring attaching to disabled format', format, input);\n\t return;\n\t }\n\t if (_parchment2.default.query(format) == null) {\n\t debug.warn('ignoring attaching to nonexistent format', format, input);\n\t return;\n\t }\n\t }\n\t var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n\t input.addEventListener(eventName, function (e) {\n\t var value = void 0;\n\t if (input.tagName === 'SELECT') {\n\t if (input.selectedIndex < 0) return;\n\t var selected = input.options[input.selectedIndex];\n\t if (selected.hasAttribute('selected')) {\n\t value = false;\n\t } else {\n\t value = selected.value || false;\n\t }\n\t } else {\n\t if (input.classList.contains('ql-active')) {\n\t value = false;\n\t } else {\n\t value = input.value || !input.hasAttribute('value');\n\t }\n\t e.preventDefault();\n\t }\n\t _this2.quill.focus();\n\n\t var _quill$selection$getR = _this2.quill.selection.getRange(),\n\t _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n\t range = _quill$selection$getR2[0];\n\n\t if (_this2.handlers[format] != null) {\n\t _this2.handlers[format].call(_this2, value);\n\t } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n\t value = prompt('Enter ' + format);\n\t if (!value) return;\n\t _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n\t } else {\n\t _this2.quill.format(format, value, _quill2.default.sources.USER);\n\t }\n\t _this2.update(range);\n\t });\n\t // TODO use weakmap\n\t this.controls.push([format, input]);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(range) {\n\t var formats = range == null ? {} : this.quill.getFormat(range);\n\t this.controls.forEach(function (pair) {\n\t var _pair = _slicedToArray(pair, 2),\n\t format = _pair[0],\n\t input = _pair[1];\n\n\t if (input.tagName === 'SELECT') {\n\t var option = void 0;\n\t if (range == null) {\n\t option = null;\n\t } else if (formats[format] == null) {\n\t option = input.querySelector('option[selected]');\n\t } else if (!Array.isArray(formats[format])) {\n\t var value = formats[format];\n\t if (typeof value === 'string') {\n\t value = value.replace(/\\\"/g, '\\\\\"');\n\t }\n\t option = input.querySelector('option[value=\"' + value + '\"]');\n\t }\n\t if (option == null) {\n\t input.value = ''; // TODO make configurable?\n\t input.selectedIndex = -1;\n\t } else {\n\t option.selected = true;\n\t }\n\t } else {\n\t if (range == null) {\n\t input.classList.remove('ql-active');\n\t } else if (input.hasAttribute('value')) {\n\t // both being null should match (default values)\n\t // '1' should match with 1 (headers)\n\t var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n\t input.classList.toggle('ql-active', isActive);\n\t } else {\n\t input.classList.toggle('ql-active', formats[format] != null);\n\t }\n\t }\n\t });\n\t }\n\t }]);\n\n\t return Toolbar;\n\t}(_module2.default);\n\n\tToolbar.DEFAULTS = {};\n\n\tfunction addButton(container, format, value) {\n\t var input = document.createElement('button');\n\t input.setAttribute('type', 'button');\n\t input.classList.add('ql-' + format);\n\t if (value != null) {\n\t input.value = value;\n\t }\n\t container.appendChild(input);\n\t}\n\n\tfunction addControls(container, groups) {\n\t if (!Array.isArray(groups[0])) {\n\t groups = [groups];\n\t }\n\t groups.forEach(function (controls) {\n\t var group = document.createElement('span');\n\t group.classList.add('ql-formats');\n\t controls.forEach(function (control) {\n\t if (typeof control === 'string') {\n\t addButton(group, control);\n\t } else {\n\t var format = Object.keys(control)[0];\n\t var value = control[format];\n\t if (Array.isArray(value)) {\n\t addSelect(group, format, value);\n\t } else {\n\t addButton(group, format, value);\n\t }\n\t }\n\t });\n\t container.appendChild(group);\n\t });\n\t}\n\n\tfunction addSelect(container, format, values) {\n\t var input = document.createElement('select');\n\t input.classList.add('ql-' + format);\n\t values.forEach(function (value) {\n\t var option = document.createElement('option');\n\t if (value !== false) {\n\t option.setAttribute('value', value);\n\t } else {\n\t option.setAttribute('selected', 'selected');\n\t }\n\t input.appendChild(option);\n\t });\n\t container.appendChild(input);\n\t}\n\n\tToolbar.DEFAULTS = {\n\t container: null,\n\t handlers: {\n\t clean: function clean() {\n\t var _this3 = this;\n\n\t var range = this.quill.getSelection();\n\t if (range == null) return;\n\t if (range.length == 0) {\n\t var formats = this.quill.getFormat();\n\t Object.keys(formats).forEach(function (name) {\n\t // Clean functionality in existing apps only clean inline formats\n\t if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n\t _this3.quill.format(name, false);\n\t }\n\t });\n\t } else {\n\t this.quill.removeFormat(range, _quill2.default.sources.USER);\n\t }\n\t },\n\t direction: function direction(value) {\n\t var align = this.quill.getFormat()['align'];\n\t if (value === 'rtl' && align == null) {\n\t this.quill.format('align', 'right', _quill2.default.sources.USER);\n\t } else if (!value && align === 'right') {\n\t this.quill.format('align', false, _quill2.default.sources.USER);\n\t }\n\t this.quill.format('direction', value, _quill2.default.sources.USER);\n\t },\n\t indent: function indent(value) {\n\t var range = this.quill.getSelection();\n\t var formats = this.quill.getFormat(range);\n\t var indent = parseInt(formats.indent || 0);\n\t if (value === '+1' || value === '-1') {\n\t var modifier = value === '+1' ? 1 : -1;\n\t if (formats.direction === 'rtl') modifier *= -1;\n\t this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n\t }\n\t },\n\t link: function link(value) {\n\t if (value === true) {\n\t value = prompt('Enter link URL:');\n\t }\n\t this.quill.format('link', value, _quill2.default.sources.USER);\n\t },\n\t list: function list(value) {\n\t var range = this.quill.getSelection();\n\t var formats = this.quill.getFormat(range);\n\t if (value === 'check') {\n\t if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t } else {\n\t this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n\t }\n\t } else {\n\t this.quill.format('list', value, _quill2.default.sources.USER);\n\t }\n\t }\n\t }\n\t};\n\n\texports.default = Toolbar;\n\texports.addControls = addControls;\n\n/***/ },\n/* 69 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tmodule.exports = {\n\t 'align': {\n\t '': __webpack_require__(70),\n\t 'center': __webpack_require__(71),\n\t 'right': __webpack_require__(72),\n\t 'justify': __webpack_require__(73)\n\t },\n\t 'background': __webpack_require__(74),\n\t 'blockquote': __webpack_require__(75),\n\t 'bold': __webpack_require__(76),\n\t 'clean': __webpack_require__(77),\n\t 'code': __webpack_require__(78),\n\t 'code-block': __webpack_require__(78),\n\t 'color': __webpack_require__(79),\n\t 'direction': {\n\t '': __webpack_require__(80),\n\t 'rtl': __webpack_require__(81)\n\t },\n\t 'float': {\n\t 'center': __webpack_require__(82),\n\t 'full': __webpack_require__(83),\n\t 'left': __webpack_require__(84),\n\t 'right': __webpack_require__(85)\n\t },\n\t 'formula': __webpack_require__(86),\n\t 'header': {\n\t '1': __webpack_require__(87),\n\t '2': __webpack_require__(88)\n\t },\n\t 'italic': __webpack_require__(89),\n\t 'image': __webpack_require__(90),\n\t 'indent': {\n\t '+1': __webpack_require__(91),\n\t '-1': __webpack_require__(92)\n\t },\n\t 'link': __webpack_require__(93),\n\t 'list': {\n\t 'ordered': __webpack_require__(94),\n\t 'bullet': __webpack_require__(95),\n\t 'check': __webpack_require__(96)\n\t },\n\t 'script': {\n\t 'sub': __webpack_require__(97),\n\t 'super': __webpack_require__(98)\n\t },\n\t 'strike': __webpack_require__(99),\n\t 'underline': __webpack_require__(100),\n\t 'video': __webpack_require__(101)\n\t};\n\n/***/ },\n/* 70 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 71 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 72 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 73 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 74 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 75 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 76 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 77 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 78 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 79 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 80 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 81 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 82 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 83 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 84 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 85 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 86 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 87 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 88 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 89 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 90 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 91 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 92 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 93 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 94 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 95 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 96 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 97 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 98 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 99 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 100 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 101 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 102 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _dropdown = __webpack_require__(103);\n\n\tvar _dropdown2 = _interopRequireDefault(_dropdown);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Picker = function () {\n\t function Picker(select) {\n\t var _this = this;\n\n\t _classCallCheck(this, Picker);\n\n\t this.select = select;\n\t this.container = document.createElement('span');\n\t this.buildPicker();\n\t this.select.style.display = 'none';\n\t this.select.parentNode.insertBefore(this.container, this.select);\n\t this.label.addEventListener('mousedown', function () {\n\t _this.container.classList.toggle('ql-expanded');\n\t });\n\t this.select.addEventListener('change', this.update.bind(this));\n\t }\n\n\t _createClass(Picker, [{\n\t key: 'buildItem',\n\t value: function buildItem(option) {\n\t var _this2 = this;\n\n\t var item = document.createElement('span');\n\t item.classList.add('ql-picker-item');\n\t if (option.hasAttribute('value')) {\n\t item.setAttribute('data-value', option.getAttribute('value'));\n\t }\n\t if (option.textContent) {\n\t item.setAttribute('data-label', option.textContent);\n\t }\n\t item.addEventListener('click', function () {\n\t _this2.selectItem(item, true);\n\t });\n\t return item;\n\t }\n\t }, {\n\t key: 'buildLabel',\n\t value: function buildLabel() {\n\t var label = document.createElement('span');\n\t label.classList.add('ql-picker-label');\n\t label.innerHTML = _dropdown2.default;\n\t this.container.appendChild(label);\n\t return label;\n\t }\n\t }, {\n\t key: 'buildOptions',\n\t value: function buildOptions() {\n\t var _this3 = this;\n\n\t var options = document.createElement('span');\n\t options.classList.add('ql-picker-options');\n\t [].slice.call(this.select.options).forEach(function (option) {\n\t var item = _this3.buildItem(option);\n\t options.appendChild(item);\n\t if (option.hasAttribute('selected')) {\n\t _this3.selectItem(item);\n\t }\n\t });\n\t this.container.appendChild(options);\n\t }\n\t }, {\n\t key: 'buildPicker',\n\t value: function buildPicker() {\n\t var _this4 = this;\n\n\t [].slice.call(this.select.attributes).forEach(function (item) {\n\t _this4.container.setAttribute(item.name, item.value);\n\t });\n\t this.container.classList.add('ql-picker');\n\t this.label = this.buildLabel();\n\t this.buildOptions();\n\t }\n\t }, {\n\t key: 'close',\n\t value: function close() {\n\t this.container.classList.remove('ql-expanded');\n\t }\n\t }, {\n\t key: 'selectItem',\n\t value: function selectItem(item) {\n\t var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t var selected = this.container.querySelector('.ql-selected');\n\t if (item === selected) return;\n\t if (selected != null) {\n\t selected.classList.remove('ql-selected');\n\t }\n\t if (item == null) return;\n\t item.classList.add('ql-selected');\n\t this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n\t if (item.hasAttribute('data-value')) {\n\t this.label.setAttribute('data-value', item.getAttribute('data-value'));\n\t } else {\n\t this.label.removeAttribute('data-value');\n\t }\n\t if (item.hasAttribute('data-label')) {\n\t this.label.setAttribute('data-label', item.getAttribute('data-label'));\n\t } else {\n\t this.label.removeAttribute('data-label');\n\t }\n\t if (trigger) {\n\t if (typeof Event === 'function') {\n\t this.select.dispatchEvent(new Event('change'));\n\t } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n\t // IE11\n\t var event = document.createEvent('Event');\n\t event.initEvent('change', true, true);\n\t this.select.dispatchEvent(event);\n\t }\n\t this.close();\n\t }\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t var option = void 0;\n\t if (this.select.selectedIndex > -1) {\n\t var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n\t option = this.select.options[this.select.selectedIndex];\n\t this.selectItem(item);\n\t } else {\n\t this.selectItem(null);\n\t }\n\t var isActive = option != null && option !== this.select.querySelector('option[selected]');\n\t this.label.classList.toggle('ql-active', isActive);\n\t }\n\t }]);\n\n\t return Picker;\n\t}();\n\n\texports.default = Picker;\n\n/***/ },\n/* 103 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"\";\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _picker = __webpack_require__(102);\n\n\tvar _picker2 = _interopRequireDefault(_picker);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ColorPicker = function (_Picker) {\n\t _inherits(ColorPicker, _Picker);\n\n\t function ColorPicker(select, label) {\n\t _classCallCheck(this, ColorPicker);\n\n\t var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n\t _this.label.innerHTML = label;\n\t _this.container.classList.add('ql-color-picker');\n\t [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n\t item.classList.add('ql-primary');\n\t });\n\t return _this;\n\t }\n\n\t _createClass(ColorPicker, [{\n\t key: 'buildItem',\n\t value: function buildItem(option) {\n\t var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n\t item.style.backgroundColor = option.getAttribute('value') || '';\n\t return item;\n\t }\n\t }, {\n\t key: 'selectItem',\n\t value: function selectItem(item, trigger) {\n\t _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\t var colorLabel = this.label.querySelector('.ql-color-label');\n\t var value = item ? item.getAttribute('data-value') || '' : '';\n\t if (colorLabel) {\n\t if (colorLabel.tagName === 'line') {\n\t colorLabel.style.stroke = value;\n\t } else {\n\t colorLabel.style.fill = value;\n\t }\n\t }\n\t }\n\t }]);\n\n\t return ColorPicker;\n\t}(_picker2.default);\n\n\texports.default = ColorPicker;\n\n/***/ },\n/* 105 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _picker = __webpack_require__(102);\n\n\tvar _picker2 = _interopRequireDefault(_picker);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar IconPicker = function (_Picker) {\n\t _inherits(IconPicker, _Picker);\n\n\t function IconPicker(select, icons) {\n\t _classCallCheck(this, IconPicker);\n\n\t var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n\t _this.container.classList.add('ql-icon-picker');\n\t [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n\t item.innerHTML = icons[item.getAttribute('data-value') || ''];\n\t });\n\t _this.defaultItem = _this.container.querySelector('.ql-selected');\n\t _this.selectItem(_this.defaultItem);\n\t return _this;\n\t }\n\n\t _createClass(IconPicker, [{\n\t key: 'selectItem',\n\t value: function selectItem(item, trigger) {\n\t _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\t item = item || this.defaultItem;\n\t this.label.innerHTML = item.innerHTML;\n\t }\n\t }]);\n\n\t return IconPicker;\n\t}(_picker2.default);\n\n\texports.default = IconPicker;\n\n/***/ },\n/* 106 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar Tooltip = function () {\n\t function Tooltip(quill, boundsContainer) {\n\t var _this = this;\n\n\t _classCallCheck(this, Tooltip);\n\n\t this.quill = quill;\n\t this.boundsContainer = boundsContainer || document.body;\n\t this.root = quill.addContainer('ql-tooltip');\n\t this.root.innerHTML = this.constructor.TEMPLATE;\n\t this.quill.root.addEventListener('scroll', function () {\n\t _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n\t });\n\t this.hide();\n\t }\n\n\t _createClass(Tooltip, [{\n\t key: 'hide',\n\t value: function hide() {\n\t this.root.classList.add('ql-hidden');\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position(reference) {\n\t var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n\t var top = reference.bottom + this.quill.root.scrollTop;\n\t this.root.style.left = left + 'px';\n\t this.root.style.top = top + 'px';\n\t this.root.classList.remove('ql-flip');\n\t var containerBounds = this.boundsContainer.getBoundingClientRect();\n\t var rootBounds = this.root.getBoundingClientRect();\n\t var shift = 0;\n\t if (rootBounds.right > containerBounds.right) {\n\t shift = containerBounds.right - rootBounds.right;\n\t this.root.style.left = left + shift + 'px';\n\t }\n\t if (rootBounds.left < containerBounds.left) {\n\t shift = containerBounds.left - rootBounds.left;\n\t this.root.style.left = left + shift + 'px';\n\t }\n\t if (rootBounds.bottom > containerBounds.bottom) {\n\t var height = rootBounds.bottom - rootBounds.top;\n\t var verticalShift = containerBounds.bottom - rootBounds.bottom - height;\n\t this.root.style.top = top + verticalShift + 'px';\n\t this.root.classList.add('ql-flip');\n\t }\n\t return shift;\n\t }\n\t }, {\n\t key: 'show',\n\t value: function show() {\n\t this.root.classList.remove('ql-editing');\n\t this.root.classList.remove('ql-hidden');\n\t }\n\t }]);\n\n\t return Tooltip;\n\t}();\n\n\texports.default = Tooltip;\n\n/***/ },\n/* 107 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.BubbleTooltip = undefined;\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _emitter = __webpack_require__(35);\n\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\n\tvar _base = __webpack_require__(108);\n\n\tvar _base2 = _interopRequireDefault(_base);\n\n\tvar _selection = __webpack_require__(40);\n\n\tvar _icons = __webpack_require__(69);\n\n\tvar _icons2 = _interopRequireDefault(_icons);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\n\tvar BubbleTheme = function (_BaseTheme) {\n\t _inherits(BubbleTheme, _BaseTheme);\n\n\t function BubbleTheme(quill, options) {\n\t _classCallCheck(this, BubbleTheme);\n\n\t if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n\t options.modules.toolbar.container = TOOLBAR_CONFIG;\n\t }\n\n\t var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n\t _this.quill.container.classList.add('ql-bubble');\n\t return _this;\n\t }\n\n\t _createClass(BubbleTheme, [{\n\t key: 'extendToolbar',\n\t value: function extendToolbar(toolbar) {\n\t this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n\t this.tooltip.root.appendChild(toolbar.container);\n\t this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n\t this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n\t }\n\t }]);\n\n\t return BubbleTheme;\n\t}(_base2.default);\n\n\tBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n\t modules: {\n\t toolbar: {\n\t handlers: {\n\t link: function link(value) {\n\t if (!value) {\n\t this.quill.format('link', false);\n\t } else {\n\t this.quill.theme.tooltip.edit();\n\t }\n\t }\n\t }\n\t }\n\t }\n\t});\n\n\tvar BubbleTooltip = function (_BaseTooltip) {\n\t _inherits(BubbleTooltip, _BaseTooltip);\n\n\t function BubbleTooltip(quill, bounds) {\n\t _classCallCheck(this, BubbleTooltip);\n\n\t var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n\t _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n\t if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n\t if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n\t _this2.show();\n\t // Lock our width so we will expand beyond our offsetParent boundaries\n\t _this2.root.style.left = '0px';\n\t _this2.root.style.width = '';\n\t _this2.root.style.width = _this2.root.offsetWidth + 'px';\n\t var lines = _this2.quill.getLines(range.index, range.length);\n\t if (lines.length === 1) {\n\t _this2.position(_this2.quill.getBounds(range));\n\t } else {\n\t var lastLine = lines[lines.length - 1];\n\t var index = _this2.quill.getIndex(lastLine);\n\t var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n\t var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n\t _this2.position(_bounds);\n\t }\n\t } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n\t _this2.hide();\n\t }\n\t });\n\t return _this2;\n\t }\n\n\t _createClass(BubbleTooltip, [{\n\t key: 'listen',\n\t value: function listen() {\n\t var _this3 = this;\n\n\t _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n\t this.root.querySelector('.ql-close').addEventListener('click', function () {\n\t _this3.root.classList.remove('ql-editing');\n\t });\n\t this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t // Let selection be restored by toolbar handlers before repositioning\n\t setTimeout(function () {\n\t if (_this3.root.classList.contains('ql-hidden')) return;\n\t var range = _this3.quill.getSelection();\n\t if (range != null) {\n\t _this3.position(_this3.quill.getBounds(range));\n\t }\n\t }, 1);\n\t });\n\t }\n\t }, {\n\t key: 'cancel',\n\t value: function cancel() {\n\t this.show();\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position(reference) {\n\t var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n\t var arrow = this.root.querySelector('.ql-tooltip-arrow');\n\t arrow.style.marginLeft = '';\n\t if (shift === 0) return shift;\n\t arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n\t }\n\t }]);\n\n\t return BubbleTooltip;\n\t}(_base.BaseTooltip);\n\n\tBubbleTooltip.TEMPLATE = ['', ''].join('');\n\n\texports.BubbleTooltip = BubbleTooltip;\n\texports.default = BubbleTheme;\n\n/***/ },\n/* 108 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.BaseTooltip = undefined;\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _quillDelta = __webpack_require__(20);\n\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n\tvar _emitter = __webpack_require__(35);\n\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\n\tvar _keyboard = __webpack_require__(52);\n\n\tvar _keyboard2 = _interopRequireDefault(_keyboard);\n\n\tvar _theme = __webpack_require__(41);\n\n\tvar _theme2 = _interopRequireDefault(_theme);\n\n\tvar _colorPicker = __webpack_require__(104);\n\n\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\n\tvar _iconPicker = __webpack_require__(105);\n\n\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\n\tvar _picker = __webpack_require__(102);\n\n\tvar _picker2 = _interopRequireDefault(_picker);\n\n\tvar _tooltip = __webpack_require__(106);\n\n\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar ALIGNS = [false, 'center', 'right', 'justify'];\n\n\tvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\n\tvar FONTS = [false, 'serif', 'monospace'];\n\n\tvar HEADERS = ['1', '2', '3', false];\n\n\tvar SIZES = ['small', false, 'large', 'huge'];\n\n\tvar BaseTheme = function (_Theme) {\n\t _inherits(BaseTheme, _Theme);\n\n\t function BaseTheme(quill, options) {\n\t _classCallCheck(this, BaseTheme);\n\n\t var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n\t var listener = function listener(e) {\n\t if (!document.body.contains(quill.root)) {\n\t return document.body.removeEventListener('click', listener);\n\t }\n\t if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n\t _this.tooltip.hide();\n\t }\n\t if (_this.pickers != null) {\n\t _this.pickers.forEach(function (picker) {\n\t if (!picker.container.contains(e.target)) {\n\t picker.close();\n\t }\n\t });\n\t }\n\t };\n\t document.body.addEventListener('click', listener);\n\t return _this;\n\t }\n\n\t _createClass(BaseTheme, [{\n\t key: 'addModule',\n\t value: function addModule(name) {\n\t var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n\t if (name === 'toolbar') {\n\t this.extendToolbar(module);\n\t }\n\t return module;\n\t }\n\t }, {\n\t key: 'buildButtons',\n\t value: function buildButtons(buttons, icons) {\n\t buttons.forEach(function (button) {\n\t var className = button.getAttribute('class') || '';\n\t className.split(/\\s+/).forEach(function (name) {\n\t if (!name.startsWith('ql-')) return;\n\t name = name.slice('ql-'.length);\n\t if (icons[name] == null) return;\n\t if (name === 'direction') {\n\t button.innerHTML = icons[name][''] + icons[name]['rtl'];\n\t } else if (typeof icons[name] === 'string') {\n\t button.innerHTML = icons[name];\n\t } else {\n\t var value = button.value || '';\n\t if (value != null && icons[name][value]) {\n\t button.innerHTML = icons[name][value];\n\t }\n\t }\n\t });\n\t });\n\t }\n\t }, {\n\t key: 'buildPickers',\n\t value: function buildPickers(selects, icons) {\n\t var _this2 = this;\n\n\t this.pickers = selects.map(function (select) {\n\t if (select.classList.contains('ql-align')) {\n\t if (select.querySelector('option') == null) {\n\t fillSelect(select, ALIGNS);\n\t }\n\t return new _iconPicker2.default(select, icons.align);\n\t } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n\t var format = select.classList.contains('ql-background') ? 'background' : 'color';\n\t if (select.querySelector('option') == null) {\n\t fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n\t }\n\t return new _colorPicker2.default(select, icons[format]);\n\t } else {\n\t if (select.querySelector('option') == null) {\n\t if (select.classList.contains('ql-font')) {\n\t fillSelect(select, FONTS);\n\t } else if (select.classList.contains('ql-header')) {\n\t fillSelect(select, HEADERS);\n\t } else if (select.classList.contains('ql-size')) {\n\t fillSelect(select, SIZES);\n\t }\n\t }\n\t return new _picker2.default(select);\n\t }\n\t });\n\t var update = function update() {\n\t _this2.pickers.forEach(function (picker) {\n\t picker.update();\n\t });\n\t };\n\t this.quill.on(_emitter2.default.events.SELECTION_CHANGE, update).on(_emitter2.default.events.SCROLL_OPTIMIZE, update);\n\t }\n\t }]);\n\n\t return BaseTheme;\n\t}(_theme2.default);\n\n\tBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n\t modules: {\n\t toolbar: {\n\t handlers: {\n\t formula: function formula() {\n\t this.quill.theme.tooltip.edit('formula');\n\t },\n\t image: function image() {\n\t var _this3 = this;\n\n\t var fileInput = this.container.querySelector('input.ql-image[type=file]');\n\t if (fileInput == null) {\n\t fileInput = document.createElement('input');\n\t fileInput.setAttribute('type', 'file');\n\t fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon, image/svg+xml');\n\t fileInput.classList.add('ql-image');\n\t fileInput.addEventListener('change', function () {\n\t if (fileInput.files != null && fileInput.files[0] != null) {\n\t var reader = new FileReader();\n\t reader.onload = function (e) {\n\t var range = _this3.quill.getSelection(true);\n\t _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n\t fileInput.value = \"\";\n\t };\n\t reader.readAsDataURL(fileInput.files[0]);\n\t }\n\t });\n\t this.container.appendChild(fileInput);\n\t }\n\t fileInput.click();\n\t },\n\t video: function video() {\n\t this.quill.theme.tooltip.edit('video');\n\t }\n\t }\n\t }\n\t }\n\t});\n\n\tvar BaseTooltip = function (_Tooltip) {\n\t _inherits(BaseTooltip, _Tooltip);\n\n\t function BaseTooltip(quill, boundsContainer) {\n\t _classCallCheck(this, BaseTooltip);\n\n\t var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n\t _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n\t _this4.listen();\n\t return _this4;\n\t }\n\n\t _createClass(BaseTooltip, [{\n\t key: 'listen',\n\t value: function listen() {\n\t var _this5 = this;\n\n\t this.textbox.addEventListener('keydown', function (event) {\n\t if (_keyboard2.default.match(event, 'enter')) {\n\t _this5.save();\n\t event.preventDefault();\n\t } else if (_keyboard2.default.match(event, 'escape')) {\n\t _this5.cancel();\n\t event.preventDefault();\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'cancel',\n\t value: function cancel() {\n\t this.hide();\n\t }\n\t }, {\n\t key: 'edit',\n\t value: function edit() {\n\t var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n\t var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t this.root.classList.remove('ql-hidden');\n\t this.root.classList.add('ql-editing');\n\t if (preview != null) {\n\t this.textbox.value = preview;\n\t } else if (mode !== this.root.getAttribute('data-mode')) {\n\t this.textbox.value = '';\n\t }\n\t this.position(this.quill.getBounds(this.quill.selection.savedRange));\n\t this.textbox.select();\n\t this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n\t this.root.setAttribute('data-mode', mode);\n\t }\n\t }, {\n\t key: 'restoreFocus',\n\t value: function restoreFocus() {\n\t var scrollTop = this.quill.root.scrollTop;\n\t this.quill.focus();\n\t this.quill.root.scrollTop = scrollTop;\n\t }\n\t }, {\n\t key: 'save',\n\t value: function save() {\n\t var value = this.textbox.value;\n\t switch (this.root.getAttribute('data-mode')) {\n\t case 'link':\n\t {\n\t var scrollTop = this.quill.root.scrollTop;\n\t if (this.linkRange) {\n\t this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n\t delete this.linkRange;\n\t } else {\n\t this.restoreFocus();\n\t this.quill.format('link', value, _emitter2.default.sources.USER);\n\t }\n\t this.quill.root.scrollTop = scrollTop;\n\t break;\n\t }\n\t case 'video':\n\t {\n\t var match = value.match(/^(https?):\\/\\/(www\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || value.match(/^(https?):\\/\\/(www\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n\t if (match) {\n\t value = match[1] + '://www.youtube.com/embed/' + match[3] + '?showinfo=0';\n\t } else if (match = value.match(/^(https?):\\/\\/(www\\.)?vimeo\\.com\\/(\\d+)/)) {\n\t // eslint-disable-line no-cond-assign\n\t value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';\n\t }\n\t } // eslint-disable-next-line no-fallthrough\n\t case 'formula':\n\t {\n\t var range = this.quill.getSelection(true);\n\t var index = range.index + range.length;\n\t if (range != null) {\n\t this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n\t if (this.root.getAttribute('data-mode') === 'formula') {\n\t this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n\t }\n\t this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n\t }\n\t break;\n\t }\n\t default:\n\t }\n\t this.textbox.value = '';\n\t this.hide();\n\t }\n\t }]);\n\n\t return BaseTooltip;\n\t}(_tooltip2.default);\n\n\tfunction fillSelect(select, values) {\n\t var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t values.forEach(function (value) {\n\t var option = document.createElement('option');\n\t if (value === defaultValue) {\n\t option.setAttribute('selected', 'selected');\n\t } else {\n\t option.setAttribute('value', value);\n\t }\n\t select.appendChild(option);\n\t });\n\t}\n\n\texports.BaseTooltip = BaseTooltip;\n\texports.default = BaseTheme;\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\tvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\n\tvar _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tvar _extend = __webpack_require__(25);\n\n\tvar _extend2 = _interopRequireDefault(_extend);\n\n\tvar _emitter = __webpack_require__(35);\n\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\n\tvar _base = __webpack_require__(108);\n\n\tvar _base2 = _interopRequireDefault(_base);\n\n\tvar _link = __webpack_require__(60);\n\n\tvar _link2 = _interopRequireDefault(_link);\n\n\tvar _selection = __webpack_require__(40);\n\n\tvar _icons = __webpack_require__(69);\n\n\tvar _icons2 = _interopRequireDefault(_icons);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\tvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\n\tvar SnowTheme = function (_BaseTheme) {\n\t _inherits(SnowTheme, _BaseTheme);\n\n\t function SnowTheme(quill, options) {\n\t _classCallCheck(this, SnowTheme);\n\n\t if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n\t options.modules.toolbar.container = TOOLBAR_CONFIG;\n\t }\n\n\t var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n\t _this.quill.container.classList.add('ql-snow');\n\t return _this;\n\t }\n\n\t _createClass(SnowTheme, [{\n\t key: 'extendToolbar',\n\t value: function extendToolbar(toolbar) {\n\t toolbar.container.classList.add('ql-snow');\n\t this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n\t this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n\t this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n\t if (toolbar.container.querySelector('.ql-link')) {\n\t this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n\t toolbar.handlers['link'].call(toolbar, !context.format.link);\n\t });\n\t }\n\t }\n\t }]);\n\n\t return SnowTheme;\n\t}(_base2.default);\n\n\tSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n\t modules: {\n\t toolbar: {\n\t handlers: {\n\t link: function link(value) {\n\t if (value) {\n\t var range = this.quill.getSelection();\n\t if (range == null || range.length == 0) return;\n\t var preview = this.quill.getText(range);\n\t if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n\t preview = 'mailto:' + preview;\n\t }\n\t var tooltip = this.quill.theme.tooltip;\n\t tooltip.edit('link', preview);\n\t } else {\n\t this.quill.format('link', false);\n\t }\n\t }\n\t }\n\t }\n\t }\n\t});\n\n\tvar SnowTooltip = function (_BaseTooltip) {\n\t _inherits(SnowTooltip, _BaseTooltip);\n\n\t function SnowTooltip(quill, bounds) {\n\t _classCallCheck(this, SnowTooltip);\n\n\t var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n\t _this2.preview = _this2.root.querySelector('a.ql-preview');\n\t return _this2;\n\t }\n\n\t _createClass(SnowTooltip, [{\n\t key: 'listen',\n\t value: function listen() {\n\t var _this3 = this;\n\n\t _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n\t this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n\t if (_this3.root.classList.contains('ql-editing')) {\n\t _this3.save();\n\t } else {\n\t _this3.edit('link', _this3.preview.textContent);\n\t }\n\t event.preventDefault();\n\t });\n\t this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n\t if (_this3.linkRange != null) {\n\t _this3.restoreFocus();\n\t _this3.quill.formatText(_this3.linkRange, 'link', false, _emitter2.default.sources.USER);\n\t delete _this3.linkRange;\n\t }\n\t event.preventDefault();\n\t _this3.hide();\n\t });\n\t this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n\t if (range == null) return;\n\t if (range.length === 0 && source === _emitter2.default.sources.USER) {\n\t var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n\t _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n\t link = _quill$scroll$descend2[0],\n\t offset = _quill$scroll$descend2[1];\n\n\t if (link != null) {\n\t _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n\t var preview = _link2.default.formats(link.domNode);\n\t _this3.preview.textContent = preview;\n\t _this3.preview.setAttribute('href', preview);\n\t _this3.show();\n\t _this3.position(_this3.quill.getBounds(_this3.linkRange));\n\t return;\n\t }\n\t } else {\n\t delete _this3.linkRange;\n\t }\n\t _this3.hide();\n\t });\n\t }\n\t }, {\n\t key: 'show',\n\t value: function show() {\n\t _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n\t this.root.removeAttribute('data-mode');\n\t }\n\t }]);\n\n\t return SnowTooltip;\n\t}(_base.BaseTooltip);\n\n\tSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\n\texports.default = SnowTheme;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/quill/dist/quill.js\n// module id = 39\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 40\n// module chunks = 0","'use strict';\n\nvar Quill = require('quill');\n\nvar QuillMixin = {\n\n\t/**\n\tCreates an editor on the given element. The editor will\n\tbe passed the configuration, have its events bound,\n\t*/\n\tcreateEditor: function($el, config) {\n\t\tvar editor = new Quill($el, config);\n\t\tthis.hookEditor(editor);\n\t\treturn editor;\n\t},\n\n\thookEditor: function(editor) {\n\t\t// Expose the editor on change events via a weaker,\n\t\t// unprivileged proxy object that does not allow\n\t\t// accidentally modifying editor state.\n\t\tvar unprivilegedEditor = this.makeUnprivilegedEditor(editor);\n\n\t\tthis.handleEditorChange = function(delta, oldDelta, source) {\n\t\t\tif (this.onEditorChange) {\n\t\t\t\tthis.onEditorChange(\n\t\t\t\t\teditor.root.innerHTML, delta, source,\n\t\t\t\t\tunprivilegedEditor\n\t\t\t\t);\n\t\t\t\tthis.onEditorChangeSelection(\n\t\t\t\t\teditor.getSelection(), source,\n\t\t\t\t\tunprivilegedEditor\n\t\t\t\t);\n\t\t\t}\n\t\t}.bind(this);\n\n\t\tthis.handleSelectionChange = function(range, oldRange, source) {\n\t\t\tif (this.onEditorChangeSelection) {\n\t\t\t\tthis.onEditorChangeSelection(\n\t\t\t\t\trange, source,\n\t\t\t\t\tunprivilegedEditor\n\t\t\t\t);\n\t\t\t}\n\t\t}.bind(this);\n\n\t\teditor.on('editor-change', this.handleEditorChange);\n\t\teditor.on('selection-change', this.handleSelectionChange);\n\t},\n\n\tunhookEditor: function(editor) {\n\t\teditor.off('selection-change');\n\t\teditor.off('editor-change');\n\t},\n\n\tsetEditorReadOnly: function(editor, value) {\n\t\tvalue? editor.disable()\n\t\t : editor.enable();\n\t},\n\n\t/*\n\tReplace the contents of the editor, but keep\n\tthe previous selection hanging around so that\n\tthe cursor won't move.\n\t*/\n\tsetEditorContents: function(editor, value) {\n\t\tvar sel = editor.getSelection();\n\t\teditor.pasteHTML(value || '');\n\t\tif (sel) this.setEditorSelection(editor, sel);\n\t},\n\n\tsetEditorSelection: function(editor, range) {\n\t\tif (range) {\n\t\t\t// Validate bounds before applying.\n\t\t\tvar length = editor.getLength();\n\t\t\trange.index = Math.max(0, Math.min(range.index, length-1));\n\t\t\trange.length = Math.max(0, Math.min(range.length, (length-1) - range.index));\n\t\t}\n\t\teditor.setSelection(range);\n\t},\n\n\t/*\n\tReturns an weaker, unprivileged proxy object that only\n\texposes read-only accessors found on the editor instance,\n\twithout any state-modificating methods.\n\t*/\n\tmakeUnprivilegedEditor: function(editor) {\n\t\tvar e = editor;\n\t\treturn {\n\t\t\tgetLength: function(){ return e.getLength.apply(e, arguments); },\n\t\t\tgetText: function(){ return e.getText.apply(e, arguments); },\n\t\t\tgetContents: function(){ return e.getContents.apply(e, arguments); },\n\t\t\tgetSelection: function(){ return e.getSelection.apply(e, arguments); },\n\t\t\tgetBounds: function(){ return e.getBounds.apply(e, arguments); },\n\t\t};\n\t}\n\n};\n\nmodule.exports = QuillMixin;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/mixin.js\n// module id = 41\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_42__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 42\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_DataView.js\n// module id = 43\n// module chunks = 0","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Hash.js\n// module id = 44\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Promise.js\n// module id = 45\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Set.js\n// module id = 46\n// module chunks = 0","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_SetCache.js\n// module id = 47\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Uint8Array.js\n// module id = 48\n// module chunks = 0","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_WeakMap.js\n// module id = 49\n// module chunks = 0","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayFilter.js\n// module id = 50\n// module chunks = 0","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayLikeKeys.js\n// module id = 51\n// module chunks = 0","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayMap.js\n// module id = 52\n// module chunks = 0","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_arrayPush.js\n// module id = 53\n// module chunks = 0","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseEach.js\n// module id = 54\n// module chunks = 0","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseFindIndex.js\n// module id = 55\n// module chunks = 0","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseFor.js\n// module id = 56\n// module chunks = 0","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseForOwn.js\n// module id = 57\n// module chunks = 0","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseGetAllKeys.js\n// module id = 58\n// module chunks = 0","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseHasIn.js\n// module id = 59\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsArguments.js\n// module id = 60\n// module chunks = 0","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsEqualDeep.js\n// module id = 61\n// module chunks = 0","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsMatch.js\n// module id = 62\n// module chunks = 0","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsNative.js\n// module id = 63\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseIsTypedArray.js\n// module id = 64\n// module chunks = 0","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseKeys.js\n// module id = 65\n// module chunks = 0","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseMatches.js\n// module id = 66\n// module chunks = 0","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseMatchesProperty.js\n// module id = 67\n// module chunks = 0","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseProperty.js\n// module id = 68\n// module chunks = 0","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_basePropertyDeep.js\n// module id = 69\n// module chunks = 0","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseSome.js\n// module id = 70\n// module chunks = 0","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseTimes.js\n// module id = 71\n// module chunks = 0","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseToString.js\n// module id = 72\n// module chunks = 0","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseUnary.js\n// module id = 73\n// module chunks = 0","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_cacheHas.js\n// module id = 74\n// module chunks = 0","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_coreJsData.js\n// module id = 75\n// module chunks = 0","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_createBaseEach.js\n// module id = 76\n// module chunks = 0","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_createBaseFor.js\n// module id = 77\n// module chunks = 0","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_createFind.js\n// module id = 78\n// module chunks = 0","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_equalByTag.js\n// module id = 79\n// module chunks = 0","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_equalObjects.js\n// module id = 80\n// module chunks = 0","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getAllKeys.js\n// module id = 81\n// module chunks = 0","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getMatchData.js\n// module id = 82\n// module chunks = 0","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getRawTag.js\n// module id = 83\n// module chunks = 0","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getSymbols.js\n// module id = 84\n// module chunks = 0","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getTag.js\n// module id = 85\n// module chunks = 0","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getValue.js\n// module id = 86\n// module chunks = 0","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hasPath.js\n// module id = 87\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hashClear.js\n// module id = 88\n// module chunks = 0","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hashDelete.js\n// module id = 89\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hashGet.js\n// module id = 90\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hashHas.js\n// module id = 91\n// module chunks = 0","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_hashSet.js\n// module id = 92\n// module chunks = 0","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isIterateeCall.js\n// module id = 93\n// module chunks = 0","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isKeyable.js\n// module id = 94\n// module chunks = 0","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isMasked.js\n// module id = 95\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_isPrototype.js\n// module id = 96\n// module chunks = 0","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_listCacheClear.js\n// module id = 97\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_listCacheDelete.js\n// module id = 98\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_listCacheGet.js\n// module id = 99\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_listCacheHas.js\n// module id = 100\n// module chunks = 0","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_listCacheSet.js\n// module id = 101\n// module chunks = 0","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapCacheClear.js\n// module id = 102\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapCacheDelete.js\n// module id = 103\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapCacheGet.js\n// module id = 104\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapCacheHas.js\n// module id = 105\n// module chunks = 0","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapCacheSet.js\n// module id = 106\n// module chunks = 0","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_mapToArray.js\n// module id = 107\n// module chunks = 0","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_memoizeCapped.js\n// module id = 108\n// module chunks = 0","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_nativeKeys.js\n// module id = 109\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_nodeUtil.js\n// module id = 110\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_objectToString.js\n// module id = 111\n// module chunks = 0","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_overArg.js\n// module id = 112\n// module chunks = 0","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_setCacheAdd.js\n// module id = 113\n// module chunks = 0","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_setCacheHas.js\n// module id = 114\n// module chunks = 0","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_setToArray.js\n// module id = 115\n// module chunks = 0","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stackClear.js\n// module id = 116\n// module chunks = 0","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stackDelete.js\n// module id = 117\n// module chunks = 0","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stackGet.js\n// module id = 118\n// module chunks = 0","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stackHas.js\n// module id = 119\n// module chunks = 0","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stackSet.js\n// module id = 120\n// module chunks = 0","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_stringToPath.js\n// module id = 121\n// module chunks = 0","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/findIndex.js\n// module id = 122\n// module chunks = 0","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/get.js\n// module id = 123\n// module chunks = 0","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/hasIn.js\n// module id = 124\n// module chunks = 0","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/identity.js\n// module id = 125\n// module chunks = 0","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/memoize.js\n// module id = 126\n// module chunks = 0","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/property.js\n// module id = 127\n// module chunks = 0","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/some.js\n// module id = 128\n// module chunks = 0","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/stubArray.js\n// module id = 129\n// module chunks = 0","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/stubFalse.js\n// module id = 130\n// module chunks = 0","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/toFinite.js\n// module id = 131\n// module chunks = 0","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/toInteger.js\n// module id = 132\n// module chunks = 0","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/toNumber.js\n// module id = 133\n// module chunks = 0","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/toString.js\n// module id = 134\n// module chunks = 0","'use strict';\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar QuillMixin = require('./mixin');\nvar find = require('lodash/find');\nvar some = require('lodash/some');\nvar isEqual = require('lodash/isEqual');\nvar T = React.PropTypes;\n\nvar QuillComponent = React.createClass({\n\n\tdisplayName: 'Quill',\n\n\tmixins: [ QuillMixin ],\n\n\tpropTypes: {\n\t\tid: T.string,\n\t\tclassName: T.string,\n\t\ttheme: T.string,\n\t\tstyle: T.object,\n\t\treadOnly: T.bool,\n\t\tvalue: T.string,\n\t\tdefaultValue: T.string,\n\t\tplaceholder: T.string,\n\t\tbounds: T.oneOfType([T.string, T.element]),\n\t\tonKeyPress: T.func,\n\t\tonKeyDown: T.func,\n\t\tonKeyUp: T.func,\n\t\tonChange: T.func,\n\t\tonChangeSelection: T.func,\n\n\t\tmodules: function(props) {\n\t\t\tvar isNotObject = T.object.apply(this, arguments);\n\t\t\tif (isNotObject) return isNotObject;\n\n\t\t\tif (\n\t\t\t\tprops.modules && \n\t\t\t\tprops.modules.toolbar &&\n\t\t\t\tprops.modules.toolbar[0] &&\n\t\t\t\tprops.modules.toolbar[0].type\n\t\t\t) return new Error(\n\t\t\t\t'Since v1.0.0, React Quill will not create a custom toolbar for you ' +\n\t\t\t\t'anymore. Create a toolbar explictly, or let Quill create one. ' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t},\n\n\t\ttoolbar: function(props) {\n\t\t\tif ('toolbar' in props) return new Error(\n\t\t\t\t'The `toolbar` prop has been deprecated. Use `modules.toolbar` instead. ' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t},\n\n\t\tformats: function(props) {\n\t\t\tvar isNotArrayOfString = T.arrayOf(T.string).apply(this, arguments);\n\n\t\t\tif (isNotArrayOfString) return new Error(\n\t\t\t\t'You cannot specify custom `formats` anymore. Use Parchment instead. ' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t},\n\n\t\tstyles: function(props) {\n\t\t\tif ('styles' in props) return new Error(\n\t\t\t\t'The `styles` prop has been deprecated. Use custom stylesheets instead. ' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t},\n\n\t\tpollInterval: function(props) {\n\t\t\tif ('pollInterval' in props) return new Error(\n\t\t\t\t'The `pollInterval` property does not have any effect anymore. ' +\n\t\t\t\t'You can safely remove it from your props.' +\n\t\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t\t);\n\t\t}\n\t},\n\t\t\n\t/*\n\tChanging one of these props should cause a re-render.\n\t*/\n\tdirtyProps: [\n\t\t'id',\n\t\t'className',\n\t\t'style',\n\t\t'modules',\n\t\t'formats',\n\t\t'bounds',\n\t\t'theme',\n\t],\n\n\tgetDefaultProps: function() {\n\t\treturn {\n\t\t\tclassName: '',\n\t\t\ttheme: 'snow',\n\t\t\tmodules: {},\n\t\t};\n\t},\n\n\t/*\n\tWe consider the component to be controlled if\n\twhenever `value` is being sent in props.\n\t*/\n\tisControlled: function() {\n\t\treturn 'value' in this.props;\n\t},\n\n\tgetInitialState: function() {\n\t\treturn {\n\t\t\tvalue: this.isControlled()\n\t\t\t\t? this.props.value\n\t\t\t\t: this.props.defaultValue\n\t\t};\n\t},\n\n\tcomponentWillReceiveProps: function(nextProps) {\n\t\tvar editor = this.state.editor;\n\t\t// If the component is unmounted and mounted too quickly\n\t\t// an error is thrown in setEditorContents since editor is\n\t\t// still undefined. Must check if editor is undefined\n\t\t// before performing this call.\n\t\tif (editor) {\n\t\t\t// Update only if we've been passed a new `value`.\n\t\t\t// This leaves components using `defaultValue` alone.\n\t\t\tif ('value' in nextProps) {\n\t\t\t\t// NOTE: Seeing that Quill is missing a way to prevent\n\t\t\t\t// edits, we have to settle for a hybrid between\n\t\t\t\t// controlled and uncontrolled mode. We can't prevent\n\t\t\t\t// the change, but we'll still override content\n\t\t\t\t// whenever `value` differs from current state.\n\t\t\t\tif (nextProps.value !== this.getEditorContents()) {\n\t\t\t\t\tthis.setEditorContents(editor, nextProps.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// We can update readOnly state in-place.\n\t\t\tif ('readOnly' in nextProps) {\n\t\t\t\tif (nextProps.readOnly !== this.props.readOnly) {\n\t\t\t\t\tthis.setEditorReadOnly(editor, nextProps.readOnly);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tcomponentDidMount: function() {\n\t\tvar editor = this.createEditor(\n\t\t\tthis.getEditorElement(),\n\t\t\tthis.getEditorConfig()\n\t\t);\n\t\tthis.setState({ editor:editor });\n\t},\n\n\tcomponentWillUnmount: function() {\n\t\t// NOTE: Don't set the state to null here\n\t\t// as it would generate a loop.\n\t\tvar e = this.getEditor();\n\t\tif (e) this.unhookEditor(e);\n\t},\n\n\tshouldComponentUpdate: function(nextProps, nextState) {\n\t\t// Rerender whenever a \"dirtyProp\" changes\n\t\tvar props = this.props;\n\t\treturn some(this.dirtyProps, function(prop) {\n\t\t\treturn !isEqual(nextProps[prop], props[prop]);\n\t\t});\n\t},\n\n\t/*\n\tIf for whatever reason we are rendering again,\n\twe should tear down the editor and bring it up\n\tagain.\n\t*/\n\tcomponentWillUpdate: function() {\n\t\tthis.componentWillUnmount();\n\t},\n\n\tcomponentDidUpdate: function() {\n\t\tthis.componentDidMount();\n\t},\n\n\tgetEditorConfig: function() {\n\t\treturn {\n\t\t\tbounds: this.props.bounds,\n\t\t\tformats: this.props.formats,\n\t\t\tmodules: this.props.modules,\n\t\t\tplaceholder: this.props.placeholder,\n\t\t\treadOnly: this.props.readOnly,\n\t\t\ttheme: this.props.theme,\n\t\t};\n\t},\n\n\tgetEditor: function() {\n\t\treturn this.state.editor;\n\t},\n\n\tgetEditorElement: function() {\n\t\treturn ReactDOM.findDOMNode(this.refs.editor);\n\t},\n\n\tgetEditorContents: function() {\n\t\treturn this.state.value;\n\t},\n\n\tgetEditorSelection: function() {\n\t\treturn this.state.selection;\n\t},\n\n\t/*\n\tRenders an editor element, unless it has been provided one to clone.\n\t*/\n\trenderContents: function() {\n\t\tvar contents = [];\n\t\tvar children = React.Children.map(\n\t\t\tthis.props.children,\n\t\t\tfunction(c) { return React.cloneElement(c, {ref: c.ref}); }\n\t\t);\n\n\t\tvar editor = find(children, function(child) {\n\t\t\treturn child.ref === 'editor';\n\t\t});\n\t\tcontents.push(editor || React.DOM.div({\n\t\t\tkey: 'editor-' + Math.random(),\n\t\t\tref: 'editor',\n\t\t\tclassName: 'quill-contents',\n\t\t\tdangerouslySetInnerHTML: { __html:this.getEditorContents() }\n\t\t}));\n\n\t\treturn contents;\n\t},\n\n\trender: function() {\n\t\treturn React.DOM.div({\n\t\t\tid: this.props.id,\n\t\t\tstyle: this.props.style,\n\t\t\tclassName: ['quill'].concat(this.props.className).join(' '),\n\t\t\tonKeyPress: this.props.onKeyPress,\n\t\t\tonKeyDown: this.props.onKeyDown,\n\t\t\tonKeyUp: this.props.onKeyUp },\n\t\t\tthis.renderContents()\n\t\t);\n\t},\n\n\tonEditorChange: function(value, delta, source, editor) {\n\t\tif (value !== this.getEditorContents()) {\n\t\t\tthis.setState({ value: value });\n\t\t\tif (this.props.onChange) {\n\t\t\t\tthis.props.onChange(value, delta, source, editor);\n\t\t\t}\n\t\t}\n\t},\n\n\tonEditorChangeSelection: function(range, source, editor) {\n\t\tvar s = this.getEditorSelection() || {};\n\t\tvar r = range || {};\n\t\tif (r.length !== s.length || r.index !== s.index) {\n\t\t\tthis.setState({ selection: range });\n\t\t\tif (this.props.onChangeSelection) {\n\t\t\t\tthis.props.onChangeSelection(range, source, editor);\n\t\t\t}\n\t\t}\n\t},\n\n\tfocus: function() {\n\t\tthis.state.editor.focus();\n\t},\n\n\tblur: function() {\n\t\tthis.setEditorSelection(this.state.editor, null);\n\t}\n\n});\n\nmodule.exports = QuillComponent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component.js\n// module id = 135\n// module chunks = 0","/*\nQuillToolbar is deprecated. Consider switching to the official Quill\ntoolbar format, or providing your own toolbar instead. \nSee https://quilljs.com/docs/modules/toolbar\n*/\n\n'use strict';\n\nvar React = require('react');\nvar ReactDOMServer = require('react-dom/server');\nvar find = require('lodash/find');\nvar isEqual = require('lodash/isEqual');\nvar T = React.PropTypes;\n\nvar defaultColors = [\n\t'rgb( 0, 0, 0)', 'rgb(230, 0, 0)', 'rgb(255, 153, 0)',\n\t'rgb(255, 255, 0)', 'rgb( 0, 138, 0)', 'rgb( 0, 102, 204)',\n\t'rgb(153, 51, 255)', 'rgb(255, 255, 255)', 'rgb(250, 204, 204)',\n\t'rgb(255, 235, 204)', 'rgb(255, 255, 204)', 'rgb(204, 232, 204)',\n\t'rgb(204, 224, 245)', 'rgb(235, 214, 255)', 'rgb(187, 187, 187)',\n\t'rgb(240, 102, 102)', 'rgb(255, 194, 102)', 'rgb(255, 255, 102)',\n\t'rgb(102, 185, 102)', 'rgb(102, 163, 224)', 'rgb(194, 133, 255)',\n\t'rgb(136, 136, 136)', 'rgb(161, 0, 0)', 'rgb(178, 107, 0)',\n\t'rgb(178, 178, 0)', 'rgb( 0, 97, 0)', 'rgb( 0, 71, 178)',\n\t'rgb(107, 36, 178)', 'rgb( 68, 68, 68)', 'rgb( 92, 0, 0)',\n\t'rgb(102, 61, 0)', 'rgb(102, 102, 0)', 'rgb( 0, 55, 0)',\n\t'rgb( 0, 41, 102)', 'rgb( 61, 20, 10)',\n].map(function(color){ return { value: color } });\n\nvar defaultItems = [\n\n\t{ label:'Formats', type:'group', items: [\n\t\t{ label:'Font', type:'font', items: [\n\t\t\t{ label:'Sans Serif', value:'sans-serif', selected:true },\n\t\t\t{ label:'Serif', value:'serif' },\n\t\t\t{ label:'Monospace', value:'monospace' }\n\t\t]},\n\t\t{ label:'Size', type:'size', items: [\n\t\t\t{ label:'Small', value:'10px' },\n\t\t\t{ label:'Normal', value:'13px', selected:true },\n\t\t\t{ label:'Large', value:'18px' },\n\t\t\t{ label:'Huge', value:'32px' }\n\t\t]},\n\t\t{ label:'Alignment', type:'align', items: [\n\t\t\t{ label:'', value:'', selected:true },\n\t\t\t{ label:'', value:'center' },\n\t\t\t{ label:'', value:'right' },\n\t\t\t{ label:'', value:'justify' }\n\t\t]}\n\t]},\n\n\t{ label:'Text', type:'group', items: [\n\t\t{ type:'bold', label:'Bold' },\n\t\t{ type:'italic', label:'Italic' },\n\t\t{ type:'strike', label:'Strike' },\n\t\t{ type:'underline', label:'Underline' },\n\t\t{ type:'color', label:'Color', items:defaultColors },\n\t\t{ type:'background', label:'Background color', items:defaultColors },\n\t\t{ type:'link', label:'Link' }\n\t]},\n\n\t{ label:'Blocks', type:'group', items: [\n\t\t{ type:'list', value:'bullet' },\n\t\t{ type:'list', value:'ordered' }\n\t]},\n\n\t{ label:'Blocks', type:'group', items: [\n\t\t{ type:'image', label:'Image' }\n\t]}\n\n];\n\nvar QuillToolbar = React.createClass({\n\n\tdisplayName: 'Quill Toolbar',\n\n\tpropTypes: {\n\t\tid: T.string,\n\t\tclassName: T.string,\n\t\tstyle: T.object,\n\t\titems: T.array\n\t},\n\n\tgetDefaultProps: function() {\n\t\treturn {\n\t\t\titems: defaultItems\n\t\t};\n\t},\n\n\tcomponentDidMount: function() {\n\t\tconsole.warn(\n\t\t\t'QuillToolbar is deprecated. Consider switching to the official Quill ' +\n\t\t\t'toolbar format, or providing your own toolbar instead. ' +\n\t\t\t'See: https://github.com/zenoamaro/react-quill#upgrading-to-react-quill-v1-0-0'\n\t\t);\n\t},\n\n\tshouldComponentUpdate: function(nextProps, nextState) {\n\t\treturn !isEqual(nextProps, this.props);\n\t},\n\n\trenderGroup: function(item, key) {\n\t\treturn React.DOM.span({\n\t\t\tkey: item.label || key,\n\t\t\tclassName:'ql-formats' },\n\t\t\titem.items.map(this.renderItem)\n\t\t);\n\t},\n\n\trenderChoiceItem: function(item, key) {\n\t\treturn React.DOM.option({\n\t\t\tkey: item.label || item.value || key,\n\t\t\tvalue: item.value },\n\t\t\titem.label\n\t\t);\n\t},\n\n\trenderChoices: function(item, key) {\n\t\tvar choiceItems = item.items.map(this.renderChoiceItem);\n\t\tvar selectedItem = find(item.items, function(item){ return item.selected });\n\t\tvar attrs = {\n\t\t\tkey: item.label || key,\n\t\t\ttitle: item.label,\n\t\t\tclassName: 'ql-'+item.type,\n\t\t\tvalue: selectedItem.value,\n\t\t};\n\t\treturn React.DOM.select(attrs, choiceItems);\n\t},\n\n\trenderButton: function(item, key) {\n\t\treturn React.DOM.button({\n\t\t\ttype: 'button',\n\t\t\tkey: item.label || item.value || key,\n\t\t\tvalue: item.value,\n\t\t\tclassName: 'ql-'+item.type,\n\t\t\ttitle: item.label },\n\t\t\titem.children\n\t\t);\n\t},\n\n\trenderAction: function(item, key) {\n\t\treturn React.DOM.button({\n\t\t\tkey: item.label || item.value || key,\n\t\t\tclassName: 'ql-'+item.type,\n\t\t\ttitle: item.label },\n\t\t\titem.children\n\t\t);\n\t},\n\n\t/* jshint maxcomplexity: false */\n\trenderItem: function(item, key) {\n\t\tswitch (item.type) {\n\t\t\tcase 'group':\n\t\t\t\treturn this.renderGroup(item, key);\n\t\t\tcase 'font':\n\t\t\tcase 'header':\n\t\t\tcase 'align':\n\t\t\tcase 'size':\n\t\t\tcase 'color':\n\t\t\tcase 'background':\n\t\t\t\treturn this.renderChoices(item, key);\n\t\t\tcase 'bold':\n\t\t\tcase 'italic':\n\t\t\tcase 'underline':\n\t\t\tcase 'strike':\n\t\t\tcase 'link':\n\t\t\tcase 'list':\n\t\t\tcase 'bullet':\n\t\t\tcase 'ordered':\n\t\t\tcase 'indent':\n\t\t\tcase 'image':\n\t\t\tcase 'video':\n\t\t\t\treturn this.renderButton(item, key);\n\t\t\tdefault:\n\t\t\t\treturn this.renderAction(item, key);\n\t\t}\n\t},\n\n\tgetClassName: function() {\n\t\treturn 'quill-toolbar ' + (this.props.className||'');\n\t},\n\n\trender: function() {\n\t\tvar children = this.props.items.map(this.renderItem);\n\t\tvar html = children.map(ReactDOMServer.renderToStaticMarkup).join('');\n\t\treturn React.DOM.div({\n\t\t\tid: this.props.id,\n\t\t\tclassName: this.getClassName(),\n\t\t\tstyle: this.props.style,\n\t\t\tdangerouslySetInnerHTML: { __html:html }\n\t\t});\n\t},\n\n});\n\nmodule.exports = QuillToolbar;\nQuillToolbar.defaultItems = defaultItems;\nQuillToolbar.defaultColors = defaultColors;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/toolbar.js\n// module id = 136\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_137__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}\n// module id = 137\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_138__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom/server\",\"commonjs2\":\"react-dom/server\",\"amd\":\"react-dom/server\",\"root\":\"ReactDOMServer\"}\n// module id = 138\n// module chunks = 0"],"sourceRoot":""}
\ No newline at end of file
diff --git a/package.json b/package.json
index dcfdd3e0..eaef9909 100644
--- a/package.json
+++ b/package.json
@@ -27,10 +27,10 @@
"rich",
"text",
"rich-text",
- "textarea"
+ "textarea",
+ "quill"
],
"files": [
- "src/",
"dist/",
"README.md",
"CHANGELOG.md",